read()) {
if ($entry != "." && $entry != "..") {
if (is_dir($source.'/'.$entry)) {
// recursion
self::copyDir($source.'/'.$entry, $dest.'/'.$entry);
} else {
@copy($source.'/'.$entry, $dest.'/'.$entry);
// echo $source.'/'.$entry." => ".$dest.'/'.$entry."
";
}
}
}
return true;
}
/**
* Simple SQL injection protection
*
* @param string $string
* @return string
*/
public static function convertString($string) {
return addslashes(trim($string));
}
/**
* Get the value of key in an array if index exist
*
* @param string $key
* @param array $array
* @return object
*/
public static function getValue($key, $array) {
if (array_key_exists($key, $array)) {
return $array[$key];
}
return false;
}
/**
* Cut and resize to get avatar from skin, HD support by
*
* @author https://github.com/jamiebicknell/Minecraft-Avatar/blob/master/face.php
* @param string $resource, img path or base64
* @param int $size
* @param string $view, default for 'f'
* @param bool $base64, if given $resource is encoded in base64
* @return resource
*/
public static function generateAvatarFromSkin($resource, $size, $view='f', $base64 = false) {
$src = $base64 ? imagecreatefromstring(base64_decode($resource)) : imagecreatefrompng($resource);
$dest = imagecreatetruecolor($size, $size);
$ratio = imagesx($src) / 64; // width/64
// f => front, l => left, r => right, b => back
$x = array('f' => 8, 'l' => 16, 'r' => 0, 'b' => 24);
imagecopyresized($dest, $src, 0, 0, $x[$view] * $ratio, 8 * $ratio, $size, $size, 8 * $ratio, 8 * $ratio); // Face
imagecolortransparent($src, imagecolorat($src, 63 * $ratio, 0)); // Black Hat Issue
imagecopyresized($dest, $src, 0, 0, ($x[$view] + 32) * $ratio, 8 * $ratio, $size, $size, 8 * $ratio, 8 * $ratio); // Accessories
imagedestroy($src);
return $dest;
}
/**
* Check if given texture is occupied
*
* @param string $hash
* @return bool
*/
public static function checkTextureOccupied($hash) {
$db = new Database\Database('users');
if ($db->getNumRows('hash_steve', $hash) > 1) {
return true;
} elseif ($db->getNumRows('hash_alex', $hash) > 1) {
return true;
} elseif ($db->getNumRows('hash_cape', $hash) > 1) {
return true;
}
// finally if given texture is not used by anyone else
return false;
}
/**
* Generate random string
*
* @param int $length
* @return string
*/
public static function generateRndString($length) {
$chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()-_ []{}<>~`+=,.;:/?|';
$rnd_string = '';
for ($i = 0; $i < $length; $i++) {
$rnd_string .= $chars[mt_rand(0, strlen($chars) - 1)];
}
return $rnd_string;
}
/**
* HTTP redirect
*
* @param string $url
* @return null
*/
public static function redirect($url, $use_js = false) {
if ($use_js)
echo "";
else
header('Location: '.$url);
}
}