Diogo souza
New Member
- Joined
- Dec 11, 2018
- Messages
- 22
- Reaction score
- 1
Warning: Invalid argument supplied for foreach() in C:\xampp\htdocs\classes\website.php on line 222
HELP ME PLEASE!
HELP ME PLEASE!
HELP ME PLEASE!
=/
<?php
if(!defined('INITIALIZED'))
exit;
class Website extends WebsiteErrors
{
public static $serverConfig;
public static $websiteConfig;
public static $vocations;
public static $groups;
public static $SQL;
public static $passwordsEncryptions = array(
'plain' => 'plain',
'md5' => 'md5',
'sha1' => 'sha1',
'sha256' => 'sha256',
'sha512' => 'sha512',
'vahash' => 'vahash'
);
private static $passwordsEncryption;
public static function setDatabaseDriver($value)
{
self::$SQL = null;
switch($value)
{
case Database:B_MYSQL:
self::$SQL = new Database_MySQL();
break;
case Database:B_SQLITE:
self::$SQL = new Database_SQLite();
break;
}
}
public static function getDBHandle()
{
if(isset(self::$SQL))
return self::$SQL;
else
new Error_Critic('#C-9', 'ERROR: <b>#C-9</b> : Class::Website - getDBHandle(), database driver not set.');
}
public static function loadWebsiteConfig()
{
self::$websiteConfig = new ConfigPHP();
global $config;
self::$websiteConfig->setConfig($config['site']);
}
public static function getWebsiteConfig()
{
if(!isset(self::$websiteConfig))
self::loadWebsiteConfig();
return self::$websiteConfig;
}
public static function loadServerConfig()
{
self::$serverConfig = new ConfigPHP();
global $config;
self::$serverConfig->setConfig($config['server']);
}
public static function getServerConfig()
{
if(!isset(self::$serverConfig))
self::loadServerConfig();
return self::$serverConfig;
}
public static function getConfig($fileNameArray)
{
$fileName = implode('_', $fileNameArray);
if(Functions::isValidFolderName($fileName))
{
$_config = new ConfigPHP('./config/' . $fileName . '.php');
return $_config;
}
else
new Error_Critic('', METHOD . ' - invalid folder/file name <b>' . htmlspecialchars('./config/' . $fileName . '.php') . '</b>');
}
public static function getFileContents($path)
{
$file = file_get_contents($path);
if($file === false)
new Error_Critic('', METHOD . ' - Cannot read from file: <b>' . htmlspecialchars($path) . '</b>');
return $file;
}
public static function putFileContents($path, $data, $append = false)
{
if($append)
$status = file_put_contents($path, $data, FILE_APPEND);
else
$status = file_put_contents($path, $data);
if($status === false)
new Error_Critic('', METHOD . ' - Cannot write to: <b>' . htmlspecialchars($path) . '</b>');
return $status;
}
public static function deleteFile($path)
{
unlink($path);
}
public static function fileExists($path)
{
return file_exists($path);
}
public static function setPasswordsEncryption($encryption)
{
if(isset(self::$passwordsEncryptions[strtolower($encryption)]))
self::$passwordsEncryption = strtolower($encryption);
else
new Error_Critic('#C-12', 'Invalid passwords encryption ( ' . htmlspecialchars($encryption) . '). Must be one of these: ' . implode(', ', self::$passwordsEncryptions));
}
public static function getPasswordsEncryption()
{
return self::$passwordsEncryption;
}
public static function validatePasswordsEncryption($encryption)
{
if(isset(self::$passwordsEncryptions[strtolower($encryption)]))
return true;
else
return false;
}
public static function encryptPassword($password, $account = null)
{
// add SALT for 0.4
if(isset(self::$passwordsEncryption))
if(self::$passwordsEncryption == 'plain')
return $password;
else
return hash(self::$passwordsEncryption, $password);
else
new Error_Critic('#C-13', 'You cannot use Website::encryptPassword(\$password) when password encryption is not set.');
}
public static function loadVocations()
{
$path = self::getWebsiteConfig()->getValue('serverPath');
self::$vocations = new Vocations($path . 'data/XML/vocations.xml');
}
public static function getVocations()
{
if(!isset(self::$vocations))
self::loadVocations();
return self::$vocations;
}
public static function getVocationName($id, $promotion)
{
if(!isset(self::$vocations))
self::loadVocations();
return self::$vocations->getVocationName($id, $promotion);
}
public static function loadGroups()
{
$path = self::getWebsiteConfig()->getValue('serverPath');
self::$groups = new Groups($path . 'data/XML/groups.xml');
}
public static function getGroups()
{
if(!isset(self::$groups))
self::loadGroups();
return self::$groups;
}
public static function getGroupName($id)
{
if(!isset(self::$groups))
self::loadGroups();
return self::$groups->getGroupName($id);
}
public static function getCountryCode($IP)
{
$a = explode(".",$IP);
if($a[0] == 10) // IPs 10.0.0.0 - 10.255.255.255 = private network, so can't geolocate
return 'unknown';
if($a[0] == 127) // IPs 127.0.0.0 - 127.255.255.255 = local network, so can't geolocate
return 'unknown';
if($a[0] == 172 && ($a[1] >= 16 && $a[1] <= 31)) // IPs 172.16.0.0 - 172.31.255.255 = private network, so can't geolocate
return 'unknown';
if($a[0] == 192 && $a[1] == 168) // IPs 192.168.0.0 - 192.168.255.255 = private network, so can't geolocate
return 'unknown';
if($a[0] >= 224) // IPs over 224.0.0.0 are not assigned, so can't geolocate
return 'unknown';
$longIP = $a[0] * 256 * 256 * 256 + $a[1] * 256 * 256 + $a[2] * 256 + $a[3]; // we need unsigned value
if(!file_exists('cache/flags/flag' . $a[0]))
{
$flagData = @file_get_contents('http://country-flags.ots.me/flag' . $a[0]);
if($flagData === false)
return 'unknown';
if(@file_put_contents('cache/flags/flag' . $a[0], $flagData) === false)
return 'unknown';
}
$countries = unserialize(file_get_contents('cache/flags/flag' . $a[0])); // load file
$lastCountryCode = 'unknown';
foreach($countries as $fromLong => $countryCode)
{
if($fromLong > $longIP)
break;
$lastCountryCode = $countryCode;
}
return $lastCountryCode;
}
}
HELP ME PLEASE!
HELP ME PLEASE!
HELP ME PLEASE!
=/