1
0
Fork 0
mirror of https://github.com/Oreolek/ifhub.club.git synced 2024-07-01 14:05:07 +03:00
ifhub.club/engine/include/function.php

458 lines
10 KiB
PHP
Raw Normal View History

<?php
2008-09-21 09:36:57 +03:00
/*-------------------------------------------------------
*
* LiveStreet Engine Social Networking
* Copyright © 2008 Mzhelskiy Maxim
*
*--------------------------------------------------------
*
* Official site: www.livestreet.ru
* Contact e-mail: rus.engine@gmail.com
*
* GNU General Public License, version 2:
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
*
---------------------------------------------------------
*/
/**
* Если не стоит расширения mb
*
* @param unknown_type $s
* @return unknown
*/
if (!function_exists('mb_strlen')) {
function mb_strlen($s,$sEncode="UTF-8") {
$length = strlen(iconv($sEncode, 'Windows-1251', $s));
return (int)$length;
2008-09-21 09:36:57 +03:00
}
}
/**
* Если не стоит расширения mb
*/
if (!function_exists('mb_strtolower')) {
function mb_strtolower($s,$sEncode="UTF-8") {
$s=iconv($sEncode,"Windows-1251",$s);
$s=strtolower($s);
$s=iconv("Windows-1251",$sEncode,$s);
return $s;
}
}
2008-09-21 09:36:57 +03:00
/**
* функция вывода отладочных сообщений через "хакерскую" консоль Дмитрия Котерова
*/
2009-04-19 08:41:24 +03:00
if (defined('SYS_HACKER_CONSOLE')) {
if (SYS_HACKER_CONSOLE) {
require_once Config::Get('path.root.server')."/engine/lib/external/HackerConsole/Main.php";
2009-04-19 08:41:24 +03:00
new Debug_HackerConsole_Main(true);
}
2008-09-21 09:36:57 +03:00
}
function dump($msg) {
if (SYS_HACKER_CONSOLE) {
call_user_func(array('Debug_HackerConsole_Main', 'out'), $msg);
} else {
//var_dump($msg);
}
}
/**
* функция доступа к GET POST параметрам
*
* @param string $sName
* @param mixed $default
* @param string $sType
* @return mixed
2008-09-21 09:36:57 +03:00
*/
function getRequest($sName,$default=null,$sType=null) {
/**
* Выбираем в каком из суперглобальных искать указанный ключ
*/
switch (strtolower($sType)) {
default:
case null:
$aStorage = $_REQUEST;
break;
case 'get':
$aStorage = $_GET;
break;
case 'post':
$aStorage = $_POST;
break;
}
if (isset($aStorage[$sName])) {
if (is_string($aStorage[$sName])) {
return trim($aStorage[$sName]);
2008-09-21 09:36:57 +03:00
} else {
return $aStorage[$sName];
2008-09-21 09:36:57 +03:00
}
}
return $default;
}
/**
* Определяет был ли передан указанный параметр методом POST
*
* @param string $sName
* @return bool
*/
function isPost($sName) {
return (getRequest($sName,null,'post')!==null);
}
2008-09-21 09:36:57 +03:00
/**
* генерирует случайную последовательность символов
*
* @param unknown_type $iLength
* @return unknown
*/
function func_generator($iLength=10) {
if ($iLength>32) {
$iLength=32;
}
2009-09-06 10:07:53 +03:00
return substr(md5(uniqid(mt_rand(),true)),0,$iLength);
2008-09-21 09:36:57 +03:00
}
/**
* htmlspecialchars умеющая обрабатывать массивы
*
* @param unknown_type $data
*/
function func_htmlspecialchars(&$data) {
if (is_array($data)) {
foreach ($data as $sKey => $value) {
if (is_array($value)) {
func_htmlspecialchars($data[$sKey]);
} else {
$data[$sKey]=htmlspecialchars($value);
}
}
} else {
$data=htmlspecialchars($data);
}
}
/**
* stripslashes умеющая обрабатывать массивы
*
* @param unknown_type $data
*/
function func_stripslashes(&$data) {
if (is_array($data)) {
foreach ($data as $sKey => $value) {
if (is_array($value)) {
func_stripslashes($data[$sKey]);
} else {
$data[$sKey]=stripslashes($value);
}
}
} else {
$data=stripslashes($data);
}
}
/**
* Проверяет на корректность значение соглавно правилу
*
* @param unknown_type $sValue
* @param unknown_type $sParam
* @param unknown_type $iMin
* @param unknown_type $iMax
* @return unknown
*/
function func_check($sValue,$sParam,$iMin=1,$iMax=100) {
2010-03-06 18:11:27 +02:00
if (is_array($sValue)) {
return false;
}
2008-09-21 09:36:57 +03:00
switch($sParam)
{
case 'id': if (preg_match("/^\d{".$iMin.','.$iMax."}$/",$sValue)){ return true; } break;
case 'float': if (preg_match("/^[\-]?\d+[\.]?\d*$/",$sValue)){ return true; } break;
2010-02-06 19:04:29 +02:00
case 'mail': if (preg_match("/^[\da-z\_\-\.\+]+@[\da-z_\-\.]+\.[a-z]{2,5}$/i",$sValue)){ return true; } break;
2008-09-21 09:36:57 +03:00
case 'login': if (preg_match("/^[\da-z\_\-]{".$iMin.','.$iMax."}$/i",$sValue)){ return true; } break;
case 'md5': if (preg_match("/^[\da-z]{32}$/i",$sValue)){ return true; } break;
case 'password': if (mb_strlen($sValue,'UTF-8')>=$iMin){ return true; } break;
case 'text': if (mb_strlen($sValue,'UTF-8')>=$iMin and mb_strlen($sValue,'UTF-8')<=$iMax){ return true; } break;
default:
return false;
}
return false;
}
/**
* Шифрование
*
* @param unknown_type $sData
* @return unknown
*/
function func_encrypt($sData) {
return md5($sData);
}
/**
* Определяет IP адрес
*
* @return unknown
*/
2009-03-14 19:36:50 +02:00
function func_getIp() {
return $_SERVER['REMOTE_ADDR'];
}
2008-09-21 09:36:57 +03:00
/**
* Заменяет стандартную header('Location: *');
*
* @param unknown_type $sLocation
*/
2010-01-06 22:53:38 +02:00
function func_header_location($sLocation) {
header("HTTP/1.1 301 Moved Permanently");
2008-09-21 09:36:57 +03:00
header('Location: '.$sLocation);
exit();
}
/**
* Создаёт каталог по полному пути
*
* @param unknown_type $sBasePath
* @param unknown_type $sNewDir
*/
function func_mkdir($sBasePath,$sNewDir) {
$sBasePath=rtrim($sBasePath,'/');
$sBasePath.='/';
$sTempPath=$sBasePath;
$aNewDir=explode('/',$sNewDir);
foreach ($aNewDir as $sDir) {
if ($sDir!='.' and $sDir!='') {
if (!file_exists($sTempPath.$sDir.'/')) {
@mkdir($sTempPath.$sDir.'/');
@chmod($sTempPath.$sDir.'/',0755);
}
$sTempPath=$sTempPath.$sDir.'/';
}
}
2008-09-21 09:36:57 +03:00
}
/**
* Рекурсивное удаление директории (со всем содержимым)
*
* @param string $sPath
* @return bool
*/
function func_rmdir($sPath) {
if(!is_dir($sPath)) return true;
$sPath = rtrim($sPath,'/').'/';
2010-04-17 18:12:10 +03:00
if ($aFiles = glob($sPath.'*', GLOB_MARK)) {
foreach($aFiles as $sFile ) {
2010-05-02 11:45:46 +03:00
if (is_dir($sFile)) {
2010-04-17 18:12:10 +03:00
func_rmdir($sFile);
} else {
@unlink($sFile);
}
}
}
if(is_dir($sPath)) @rmdir($sPath);
}
/**
* Возвращает обрезанный текст по заданное число слов
*
* @param unknown_type $sText
* @param unknown_type $iCountWords
*/
function func_text_words($sText,$iCountWords) {
$sText=str_replace("\r\n",'[<rn>]',$sText);
$sText=str_replace("\n",'[<n>]',$sText);
$iCount=0;
$aWordsResult=array();
$aWords=preg_split("/\s+/",$sText);
for($i=0;$i<count($aWords);$i++) {
if ($iCount>=$iCountWords) {
break;
}
if ($aWords[$i]!='[<rn>]' and $aWords[$i]!='[<n>]') {
$aWordsResult[]=$aWords[$i];
$iCount++;
}
}
$sText=join(' ',$aWordsResult);
$sText=str_replace('[<rn>]'," ",$sText);
$sText=str_replace('[<n>]'," ",$sText);
return $sText;
}
2009-05-23 14:05:41 +03:00
/**
* Изменяет элементы массива
*
* @param unknown_type $array
* @param unknown_type $sBefore
* @param unknown_type $sAfter
* @return array
*/
function func_array_change_value($array,$sBefore='',$sAfter='') {
foreach ($array as $key => $value) {
if (is_array($value)) {
$array[$key]=func_change_array_value($value,$sBefore,$sAfter);
} elseif (!is_object($value)) {
$array[$key]=$sBefore.$array[$key].$sAfter;
}
}
return $array;
}
/**
* Меняет числовые ключи массива на их значения
*
* @param unknown_type $arr
* @param unknown_type $sDefValue
*/
function func_array_simpleflip(&$arr,$sDefValue=1) {
foreach ($arr as $key => $value) {
if (is_int($key) and is_string($value)) {
unset($arr[$key]);
$arr[$value]=$sDefValue;
}
}
}
2009-06-02 22:29:05 +03:00
function func_build_cache_keys($array,$sBefore='',$sAfter='') {
$aRes=array();
foreach ($array as $key => $value) {
$aRes[$value]=$sBefore.$value.$sAfter;
}
return $aRes;
}
2009-06-23 20:06:19 +03:00
function func_array_sort_by_keys($array,$aKeys) {
$aResult=array();
foreach ($aKeys as $iKey) {
if (isset($array[$iKey])) {
$aResult[$iKey]=$array[$iKey];
}
}
return $aResult;
}
2009-07-26 16:43:16 +03:00
/**
* Сливает два ассоциативных массива
*
* @param unknown_type $aArr1
* @param unknown_type $aArr2
* @return unknown
*/
function func_array_merge_assoc($aArr1,$aArr2) {
$aRes=$aArr1;
foreach ($aArr2 as $k2 => $v2) {
$bIsKeyInt=false;
if (is_array($v2)) {
foreach ($v2 as $k => $v) {
if (is_int($k)) {
$bIsKeyInt=true;
break;
}
}
}
if (is_array($v2) and !$bIsKeyInt and isset($aArr1[$k2])) {
$aRes[$k2]=func_array_merge_assoc($aArr1[$k2],$v2);
} else {
$aRes[$k2]=$v2;
}
}
return $aRes;
}
if (!function_exists('array_fill_keys')) {
function array_fill_keys($aArr, $values) {
if (!is_array($aArr)) {
$aArr=array($aArr);
}
$aArrOut=array();
foreach($aArr as $key => $value) {
$aArrOut[$value] = $values;
}
return $aArrOut;
}
}
if (!function_exists('array_intersect_key')) {
function array_intersect_key($isec, $keys) {
$argc = func_num_args();
if ($argc > 2) {
for ($i = 1; !empty($isec) && $i < $argc; $i++) {
$arr = func_get_arg($i);
foreach (array_keys($isec) as $key) {
if (!isset($arr[$key])) {
unset($isec[$key]);
}
}
}
return $isec;
} else {
$res = array();
foreach (array_keys($isec) as $key) {
if (isset($keys[$key])) {
$res[$key] = $isec[$key];
}
}
return $res;
}
}
}
if (!function_exists('class_alias')) {
function class_alias($original, $alias) {
eval('abstract class ' . $alias . ' extends ' . $original . ' {}');
}
}
2010-08-13 09:12:19 +03:00
function func_underscore($sStr) {
return strtolower(preg_replace('/([^A-Z])([A-Z])/',"$1_$2",$sStr));
}
function func_camelize($sStr) {
$aParts = explode('_',$sStr);
$sCamelized = '';
foreach($aParts as $sPart) {
$sCamelized .= ucfirst($sPart);
}
return $sCamelized;
}
2010-08-19 12:02:15 +03:00
function func_list_plugins($bAll = false){
$sPluginsDir = Config::Get('path.root.server').'/plugins';
$sPluginsListFile = $sPluginsDir.'/'.Config::Get('sys.plugins.activation_file');
2010-08-19 12:02:15 +03:00
$aPlugin = array();
if($bAll){
$aPluginRaw = array();
$aPaths = glob("$aPluginRaw/*", GLOB_ONLYDIR);
if($aPaths)
foreach($aPaths as $sPath){
$aPluginRaw[] = basename($sPath);
}
}else{
2010-09-15 18:52:58 +03:00
if ($aPluginRaw = @file($sPluginsListFile)) {
$aPluginRaw = array_map('trim',$aPluginRaw);
$aPluginRaw = array_unique($aPluginRaw);
}
2010-08-19 12:02:15 +03:00
}
if($aPluginRaw)
foreach($aPluginRaw as $sPlugin){
$sPluginXML = "$sPluginsDir/$sPlugin/plugin.xml";
if(is_file($sPluginXML)){
$aPlugin[] = $sPlugin;
}
}
return $aPlugin;
}
2008-09-21 09:36:57 +03:00
?>