Файл: WoWonder 1.2.1/Update Guide/v1.1/Script/assets/includes/general.php
Строк: 337
<?php
function Wo_LoadPage($page_url = '') {
global $wo;
$page = './themes/' . $wo['config']['theme'] . '/layout/' . $page_url . '.phtml';
$page_content = '';
ob_start();
require($page);
$page_content = ob_get_contents();
ob_end_clean();
return $page_content;
}
function url_slug($str, $options = array()) {
// Make sure string is in UTF-8 and strip invalid UTF-8 characters
$str = mb_convert_encoding((string) $str, 'UTF-8', mb_list_encodings());
$defaults = array(
'delimiter' => '-',
'limit' => null,
'lowercase' => true,
'replacements' => array(),
'transliterate' => false
);
// Merge options
$options = array_merge($defaults, $options);
$char_map = array(
// Latin
'À' => 'A', 'Á' => 'A', 'Â' => 'A', 'Ã' => 'A', 'Ä' => 'A', 'Å' => 'A', 'Æ' => 'AE', 'Ç' => 'C', 'È' => 'E', 'É' => 'E', 'Ê' => 'E', 'Ë' => 'E', 'Ì' => 'I', 'Í' => 'I', 'Î' => 'I', 'Ï' => 'I', 'Ð' => 'D', 'Ñ' => 'N', 'Ò' => 'O', 'Ó' => 'O', 'Ô' => 'O', 'Õ' => 'O', 'Ö' => 'O', 'Ő' => 'O', 'Ø' => 'O', 'Ù' => 'U', 'Ú' => 'U', 'Û' => 'U', 'Ü' => 'U', 'Ű' => 'U', 'Ý' => 'Y', 'Þ' => 'TH', 'ß' => 'ss', 'à' => 'a', 'á' => 'a', 'â' => 'a', 'ã' => 'a', 'ä' => 'a', 'å' => 'a', 'æ' => 'ae', 'ç' => 'c', 'è' => 'e', 'é' => 'e', 'ê' => 'e', 'ë' => 'e', 'ì' => 'i', 'í' => 'i', 'î' => 'i', 'ï' => 'i', 'ð' => 'd', 'ñ' => 'n', 'ò' => 'o', 'ó' => 'o', 'ô' => 'o', 'õ' => 'o', 'ö' => 'o', 'ő' => 'o', 'ø' => 'o', 'ù' => 'u', 'ú' => 'u', 'û' => 'u', 'ü' => 'u', 'ű' => 'u', 'ý' => 'y', 'þ' => 'th', 'ÿ' => 'y',
// Latin symbols
'©' => '(c)',
// Greek
'Α' => 'A', 'Β' => 'B', 'Γ' => 'G', 'Δ' => 'D', 'Ε' => 'E', 'Ζ' => 'Z', 'Η' => 'H', 'Θ' => '8', 'Ι' => 'I', 'Κ' => 'K', 'Λ' => 'L', 'Μ' => 'M', 'Ν' => 'N', 'Ξ' => '3', 'Ο' => 'O', 'Π' => 'P', 'Ρ' => 'R', 'Σ' => 'S', 'Τ' => 'T', 'Υ' => 'Y', 'Φ' => 'F', 'Χ' => 'X', 'Ψ' => 'PS', 'Ω' => 'W', 'Ά' => 'A', 'Έ' => 'E', 'Ί' => 'I', 'Ό' => 'O', 'Ύ' => 'Y', 'Ή' => 'H', 'Ώ' => 'W', 'Ϊ' => 'I', 'Ϋ' => 'Y', 'α' => 'a', 'β' => 'b', 'γ' => 'g', 'δ' => 'd', 'ε' => 'e', 'ζ' => 'z', 'η' => 'h', 'θ' => '8', 'ι' => 'i', 'κ' => 'k', 'λ' => 'l', 'μ' => 'm', 'ν' => 'n', 'ξ' => '3', 'ο' => 'o', 'π' => 'p', 'ρ' => 'r', 'σ' => 's', 'τ' => 't', 'υ' => 'y', 'φ' => 'f', 'χ' => 'x', 'ψ' => 'ps', 'ω' => 'w', 'ά' => 'a', 'έ' => 'e', 'ί' => 'i', 'ό' => 'o', 'ύ' => 'y', 'ή' => 'h', 'ώ' => 'w', 'ς' => 's', 'ϊ' => 'i', 'ΰ' => 'y', 'ϋ' => 'y', 'ΐ' => 'i',
// Turkish
'Ş' => 'S', 'İ' => 'I', 'Ç' => 'C', 'Ü' => 'U', 'Ö' => 'O', 'Ğ' => 'G', 'ş' => 's', 'ı' => 'i', 'ç' => 'c', 'ü' => 'u', 'ö' => 'o', 'ğ' => 'g',
// Russian
'А' => 'A', 'Б' => 'B', 'В' => 'V', 'Г' => 'G', 'Д' => 'D', 'Е' => 'E', 'Ё' => 'Yo', 'Ж' => 'Zh', 'З' => 'Z', 'И' => 'I', 'Й' => 'J', 'К' => 'K', 'Л' => 'L', 'М' => 'M', 'Н' => 'N', 'О' => 'O', 'П' => 'P', 'Р' => 'R', 'С' => 'S', 'Т' => 'T', 'У' => 'U', 'Ф' => 'F', 'Х' => 'H', 'Ц' => 'C', 'Ч' => 'Ch', 'Ш' => 'Sh', 'Щ' => 'Sh', 'Ъ' => '', 'Ы' => 'Y', 'Ь' => '', 'Э' => 'E', 'Ю' => 'Yu', 'Я' => 'Ya', 'а' => 'a', 'б' => 'b', 'в' => 'v', 'г' => 'g', 'д' => 'd', 'е' => 'e', 'ё' => 'yo', 'ж' => 'zh', 'з' => 'z', 'и' => 'i', 'й' => 'j', 'к' => 'k', 'л' => 'l', 'м' => 'm', 'н' => 'n', 'о' => 'o', 'п' => 'p', 'р' => 'r', 'с' => 's', 'т' => 't', 'у' => 'u', 'ф' => 'f', 'х' => 'h', 'ц' => 'c', 'ч' => 'ch', 'ш' => 'sh', 'щ' => 'sh', 'ъ' => '', 'ы' => 'y', 'ь' => '', 'э' => 'e', 'ю' => 'yu', 'я' => 'ya',
// Ukrainian
'Є' => 'Ye', 'І' => 'I', 'Ї' => 'Yi', 'Ґ' => 'G', 'є' => 'ye', 'і' => 'i', 'ї' => 'yi', 'ґ' => 'g',
// Czech
'Č' => 'C', 'Ď' => 'D', 'Ě' => 'E', 'Ň' => 'N', 'Ř' => 'R', 'Š' => 'S', 'Ť' => 'T', 'Ů' => 'U', 'Ž' => 'Z', 'č' => 'c', 'ď' => 'd', 'ě' => 'e', 'ň' => 'n', 'ř' => 'r', 'š' => 's', 'ť' => 't', 'ů' => 'u', 'ž' => 'z',
// Polish
'Ą' => 'A', 'Ć' => 'C', 'Ę' => 'e', 'Ł' => 'L', 'Ń' => 'N', 'Ó' => 'o', 'Ś' => 'S', 'Ź' => 'Z', 'Ż' => 'Z', 'ą' => 'a', 'ć' => 'c', 'ę' => 'e', 'ł' => 'l', 'ń' => 'n', 'ó' => 'o', 'ś' => 's', 'ź' => 'z', 'ż' => 'z',
// Latvian
'Ā' => 'A', 'Č' => 'C', 'Ē' => 'E', 'Ģ' => 'G', 'Ī' => 'i', 'Ķ' => 'k', 'Ļ' => 'L', 'Ņ' => 'N', 'Š' => 'S', 'Ū' => 'u', 'Ž' => 'Z', 'ā' => 'a', 'č' => 'c', 'ē' => 'e', 'ģ' => 'g', 'ī' => 'i', 'ķ' => 'k', 'ļ' => 'l', 'ņ' => 'n', 'š' => 's', 'ū' => 'u', 'ž' => 'z');
// Make custom replacements
$str = preg_replace(array_keys($options['replacements']), $options['replacements'], $str);
// Transliterate characters to ASCII
if($options['transliterate']) {
$str = str_replace(array_keys($char_map), $char_map, $str);
}
// Replace non-alphanumeric characters with our delimiter
$str = preg_replace('/[^p{L}p{Nd}]+/u', $options['delimiter'], $str);
// Remove duplicate delimiters
$str = preg_replace('/(' . preg_quote($options['delimiter'], '/') . '){2,}/', '$1', $str);
// Truncate slug to max. characters
$str = mb_substr($str, 0, ($options['limit'] ? $options['limit'] : mb_strlen($str, 'UTF-8')), 'UTF-8');
// Remove delimiter from ends
$str = trim($str, $options['delimiter']);
return $options['lowercase'] ? mb_strtolower($str, 'UTF-8') : $str;
}
function Wo_SeoLink($query = '') {
global $wo, $config;
if ($wo['config']['seoLink'] == 1) {
$query = preg_replace(array(
'/^index.php?tab1=welcome&tab2=password_reset&user_id=([A-Za-z0-9_]+)$/i',
'/^index.php?tab1=([^/]+)&query=$/i',
'/^index.php?tab1=post&id=([A-Za-z0-9_]+)$/i',
'/^index.php?tab1=terms&page=contact-us$/i',
'/^index.php?tab1=([^/]+)&u=([A-Za-z0-9_]+)$/i',
'/^index.php?tab1=timeline&u=([A-Za-z0-9_]+)&type=([A-Za-z0-9_]+)$/i',
'/^index.php?tab1=messages&user=([A-Za-z0-9_]+)$/i',
'/^index.php?tab1=setting&user=([A-Za-z0-9_]+)$/i',
'/^index.php?tab1=([^/]+)&app_id=([A-Za-z0-9_]+)$/i',
'/^index.php?tab1=([^/]+)&hash=([^/]+)$/i',
'/^index.php?tab1=([^/]+)&tab2=([^/]+)$/i',
'/^index.php?tab1=([^/]+)&type=([^/]+)$/i',
'/^index.php?tab1=([^/]+)&p=([^/]+)$/i',
'/^index.php?tab1=page-setting&page=([^/]+)$/i',
'/^index.php?tab1=([^/]+)$/i'
), array(
$config['site_url'] . '/password-reset/$1',
$config['site_url'] . '/search/$2',
$config['site_url'] . '/post/$1',
$config['site_url'] . '/terms/contact-us',
$config['site_url'] . '/@$2',
$config['site_url'] . '/@$1/$2',
$config['site_url'] . '/messages/$1',
$config['site_url'] . '/setting/$1',
$config['site_url'] . '/$1/$2',
$config['site_url'] . '/$1/$2',
$config['site_url'] . '/$1/$2',
$config['site_url'] . '/$1/$2',
$config['site_url'] . '/p/$2',
$config['site_url'] . '/page-setting/$1',
$config['site_url'] . '/$1'
), $query);
} else {
$query = $config['site_url'] . '/' . $query;
}
return $query;
}
function Wo_IsLogged() {
if (isset($_SESSION['user_id']) || isset($_COOKIE['user_id'])) {
return true;
} else {
return false;
}
}
function Wo_Redirect($url) {
return header("Location: {$url}");
}
function Wo_Link($string) {
global $site_url;
return $site_url . '/' . $string;
}
function Wo_Sql_Result($res, $row = 0, $col = 0) {
$numrows = mysqli_num_rows($res);
if ($numrows && $row <= ($numrows - 1) && $row >= 0) {
mysqli_data_seek($res, $row);
$resrow = (is_numeric($col)) ? mysqli_fetch_row($res) : mysqli_fetch_assoc($res);
if (isset($resrow[$col])) {
return $resrow[$col];
}
}
return false;
}
function Wo_Secure($string, $censored_words = 1) {
global $sqlConnect;
$string = trim($string);
$string = mysqli_real_escape_string($sqlConnect, $string);
$string = htmlspecialchars($string, ENT_QUOTES);
$string = str_replace('\r\n', '<br>', $string);
$string = str_replace('\r', '<br>', $string);
$string = str_replace('\n\n', '<br>', $string);
$string = str_replace('\n', '<br>', $string);
$string = str_replace('\n', '<br>', $string);
$string = stripslashes($string);
$string = str_replace('&#', '&#', $string);
if ($censored_words == 1) {
global $config;
$censored_words = @explode(",", $config['censored_words']);
foreach ($censored_words as $censored_word) {
$censored_word = trim($censored_word);
$string = str_replace($censored_word, '****', $string);
}
}
return $string;
}
function Wo_Decode($string) {
return htmlspecialchars_decode($string);
}
function Wo_GenerateKey($minlength = 20, $maxlength = 20, $uselower = true, $useupper = true, $usenumbers = true, $usespecial = false) {
$charset = '';
if ($uselower) {
$charset .= "abcdefghijklmnopqrstuvwxyz";
}
if ($useupper) {
$charset .= "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
}
if ($usenumbers) {
$charset .= "123456789";
}
if ($usespecial) {
$charset .= "~@#$%^*()_+-={}|][";
}
if ($minlength > $maxlength) {
$length = mt_rand($maxlength, $minlength);
} else {
$length = mt_rand($minlength, $maxlength);
}
$key = '';
for ($i = 0; $i < $length; $i++) {
$key .= $charset[(mt_rand(0, strlen($charset) - 1))];
}
return $key;
}
function Wo_Resize_Crop_Image($max_width, $max_height, $source_file, $dst_dir, $quality = 80) {
$imgsize = @getimagesize($source_file);
$width = $imgsize[0];
$height = $imgsize[1];
$mime = $imgsize['mime'];
switch ($mime) {
case 'image/gif':
$image_create = "imagecreatefromgif";
$image = "imagegif";
break;
case 'image/png':
$image_create = "imagecreatefrompng";
$image = "imagepng";
$quality = 7;
break;
case 'image/jpeg':
$image_create = "imagecreatefromjpeg";
$image = "imagejpeg";
$quality = 80;
break;
default:
return false;
break;
}
$dst_img = @imagecreatetruecolor($max_width, $max_height);
$src_img = $image_create($source_file);
$width_new = $height * $max_width / $max_height;
$height_new = $width * $max_height / $max_width;
if ($width_new > $width) {
$h_point = (($height - $height_new) / 2);
@imagecopyresampled($dst_img, $src_img, 0, 0, 0, $h_point, $max_width, $max_height, $width, $height_new);
} else {
$w_point = (($width - $width_new) / 2);
@imagecopyresampled($dst_img, $src_img, 0, 0, $w_point, 0, $max_width, $max_height, $width_new, $height);
}
$image($dst_img, $dst_dir, $quality);
if ($dst_img)
@imagedestroy($dst_img);
if ($src_img)
@imagedestroy($src_img);
}
function Wo_Time_Elapsed_String($ptime) {
global $wo;
$etime = time() - $ptime;
if ($etime < 1) {
return '0 seconds';
}
$a = array(
365 * 24 * 60 * 60 => $wo['lang']['year'],
30 * 24 * 60 * 60 => $wo['lang']['month'],
24 * 60 * 60 => $wo['lang']['day'],
60 * 60 => $wo['lang']['hour'],
60 => $wo['lang']['minute'],
1 => $wo['lang']['second']
);
$a_plural = array(
$wo['lang']['year'] => $wo['lang']['years'],
$wo['lang']['month'] => $wo['lang']['months'],
$wo['lang']['day'] => $wo['lang']['days'],
$wo['lang']['hour'] => $wo['lang']['hours'],
$wo['lang']['minute'] => $wo['lang']['minutes'],
$wo['lang']['second'] => $wo['lang']['seconds']
);
foreach ($a as $secs => $str) {
$d = $etime / $secs;
if ($d >= 1) {
$r = round($d);
if ($wo['language_type'] == 'rtl') {
$time_ago = $wo['lang']['time_ago'] . ' ' . $r . ' ' . ($r > 1 ? $a_plural[$str] : $str);
} else {
$time_ago = $r . ' ' . ($r > 1 ? $a_plural[$str] : $str) . ' ' . $wo['lang']['time_ago'];
}
return $time_ago;
}
}
}
function Wo_FolderSize($dir) {
$count_size = 0;
$count = 0;
$dir_array = scandir($dir);
foreach ($dir_array as $key => $filename) {
if ($filename != ".." && $filename != "." && $filename != ".htaccess") {
if (is_dir($dir . "/" . $filename)) {
$new_foldersize = Wo_FolderSize($dir . "/" . $filename);
$count_size = $count_size + $new_foldersize;
} else if (is_file($dir . "/" . $filename)) {
$count_size = $count_size + filesize($dir . "/" . $filename);
$count++;
}
}
}
return $count_size;
}
function Wo_SizeFormat($bytes) {
$kb = 1024;
$mb = $kb * 1024;
$gb = $mb * 1024;
$tb = $gb * 1024;
if (($bytes >= 0) && ($bytes < $kb)) {
return $bytes . ' B';
} elseif (($bytes >= $kb) && ($bytes < $mb)) {
return ceil($bytes / $kb) . ' KB';
} elseif (($bytes >= $mb) && ($bytes < $gb)) {
return ceil($bytes / $mb) . ' MB';
} elseif (($bytes >= $gb) && ($bytes < $tb)) {
return ceil($bytes / $gb) . ' GB';
} elseif ($bytes >= $tb) {
return ceil($bytes / $tb) . ' TB';
} else {
return $bytes . ' B';
}
}
function Wo_ClearCache() {
$path = 'cache';
if ($handle = opendir($path)) {
while (false !== ($file = readdir($handle))) {
if (strripos($file, '.tmp') !== false) {
@unlink($path . '/' . $file);
}
}
}
}
function Wo_GetThemes() {
global $wo;
$themes = glob('themes/*', GLOB_ONLYDIR);
return $themes;
}
function Wo_ReturnBytes($val) {
$val = trim($val);
$last = strtolower($val[strlen($val) - 1]);
switch ($last) {
case 'g':
$val *= 1024;
case 'm':
$val *= 1024;
case 'k':
$val *= 1024;
}
return $val;
}
function Wo_MaxFileUpload() {
//select maximum upload size
$max_upload = Wo_ReturnBytes(ini_get('upload_max_filesize'));
//select post limit
$max_post = Wo_ReturnBytes(ini_get('post_max_size'));
//select memory limit
$memory_limit = Wo_ReturnBytes(ini_get('memory_limit'));
// return the smallest of them, this defines the real limit
return min($max_upload, $max_post, $memory_limit);
}
function Wo_CompressImage($source_url, $destination_url, $quality) {
$info = getimagesize($source_url);
if ($info['mime'] == 'image/jpeg')
$image = @imagecreatefromjpeg($source_url);
elseif ($info['mime'] == 'image/gif')
$image = @imagecreatefromgif($source_url);
elseif ($info['mime'] == 'image/png')
$image = @imagecreatefrompng($source_url);
//save file
@imagejpeg($image, $destination_url, $quality);
}
?>