* @copyright: Copyright (c) 2010, Bunzia Alexander
* @version: 1.0
* @license: http://www.gnu.org/copyleft/gpl.html GNU/GPL
* @package HiLo CMS
*/
/*function sys_ajax_window($title,$msg){
echo '';
exit();
}
function sys_ajax_result($msg){
echo '';
exit();
}
function sys_ajax_debug($msg){
sys_error(ERROR_501,$msg);
}
function sys_ajax_msg($msg){
echo '';
exit();
}*/
//1315398910
//1315355710
//2011.09.07 04:35:10
function sys_timestamp_convert($format,$date){
switch($format){
default:
return false;
break;
case('d.m.Y H:i:s'):
case('d.m.y H:i:s'):
case('d.m.Y'):
case('d.m.y'):
if ( !preg_match('#([0-9]{2,2})\.([0-9]{2,2})\.([0-9]{2,4})?#',$date,$res) ){
return false;
}
return mktime(0,0,0,$res[2],$res[1],$res[3]);
case('Y.m.d H:i:s'):
if ( !preg_match('#([0-9]{2,4})\.([0-9]{2,2})\.([0-9]{2,2})\s?([0-9]{2,2})?:?([0-9]{2,2})?:([0-9]{2,2})?#',$date,$res) ){
return false;
}
//m.d.Y
// echo mktime($res[4],$res[5],$res[6],$res[2],$res[3],$res[1]);
// echo date($format,mktime($res[4],$res[5],$res[6],$res[2],$res[3],$res[1]));
//exit();
break;
}
}
/**
* Добавляем новый формат отображения даты.
* Теперь можно выводить русские названия месяцев указав "м" в строке формата.
* Это аналог "m" для английского языка
*
* @subpackage ПоРемонту.ру
* @var str $format форма вывода времени
* @var int $t timestamp
*/
function sys_date($format,$timestamp){
if ( empty($format) ){
sys_error(ERROR_500);
}
$date = date($format,$timestamp);
$m = date('n',$timestamp);
$en = constant('F_MONTH_SP_'.$m);
return str_replace( 'м',$en,$date);
}
/**
* Добавляем новый формат отображения даты.
* Теперь можно выводить русские названия месяцев указав "м" в строке формата.
* Это аналог "m" для английского языка
*
* @subpackage ПоРемонту.ру
* @var str $format форма вывода времени
* @var int $t timestamp
*/
function sys_str_to_date($format='d.m.Y',$data){
if ( empty($format) ){
sys_error(ERROR_500);
}
if ( empty($data) ){
return false;
}
//preg_match()
$date = explode('.',$format,$timestamp);
$m = date('n',$timestamp);
$en = constant('F_MONTH_SP_'.$m);
return str_replace( 'м',$en,$date);
}
function sys_include($file){
global $MAIN_MCACHE;
die($file);
/*if ( MAIN_CACHE_MODE==1 ){
return $MAIN_MCACHE->get( $file );
}
$txt = file_get_contents($file);
if ( !$txt ){
sys_error('500','file not found');
}
return $txt;*/
}
// контроль времени
function sys_timer($end=0){
$end = !empty($end) ? $end : MAIN_TIME_BEGIN;
$time_start = explode(' ', $end);
$time_end = explode(' ', microtime());
return $parse_time = number_format(($time_end[1] + $time_end[0] - ($time_start[1] + $time_start[0])), 3);
}
// удаляем все последствия экранирования в массиве $value
function sys_clear_slashes($value){
return (is_array($value) ? array_map('sys_clear_slashes', $value) : stripslashes($value));
}
// приводит значение $a к числовому типу, испольузется в купе с array_map для очистки массивов
function sys_intval($a){
return intval($a);
}
function sys_error($type,$msg='',$file='',$line=''){
global $MAIN_ERROR,$MAIN_USER;
switch($type){
// для IE6 путь закрыт
case(ERROR_IE6):
//header('HTTP/1.1 301 Moved Permanently');
if ( MAIN_ADMIN==0 ){
$t = new PHPTAL( MAIN_SOURCE_PATH.'/tmpl/default/files/ie6/ie6.html' );
echo $t -> execute();
exit();
}
break;
// ошибка доступа
case(ERROR_403):
case('403'):
header('HTTP/1.1 403 Access Error');
if ( MAIN_DEBUG_MODE ){
$info = debug_backtrace();
$size = sizeof($info);
$result = '';
for($i=($size-1);$i>=0;$i--){
$result.='- '.$info[$i]['file'].'('.$info[$i]['line'].')
';
}
$result .= '
';
echo $result;
echo F_ACCESS_CLOSE;
}else{
$t = new PHPTAL( MAIN_SOURCE_PATH.'/tmpl/files/access_error.html' );
echo $t -> execute();
}
exit();
break;
// критическая ошибка при обработке ajax запроса
case(ERROR_501):
$msg = !empty($msg) ? $msg : E_500_MSG;
if ( false!==MAIN_FATAL_LOG){
$info = debug_backtrace();
$txt = str_replace('{debug_dump}',var_export($info,true), $txt);
sys_log(MAIN_FATAL_LOG, $txt);
}
echo '';
exit();
break;
// критические ошибки
case(ERROR_500):
case('500'):
$msg = !empty($msg) ? $msg : E_500_MSG;
if ( MAIN_DEBUG_MODE ){
var_dump($_REQUEST);
$info = debug_backtrace();
$size = sizeof($info);
$result = '';
for($i=($size-1);$i>=0;$i--){
$result.='- '.$info[$i]['file'].'('.$info[$i]['line'].')
';
}
$result .= '
';
header('HTTP/1.1 500 Internal Error '.$msg.$result);
echo "$msg $result";
}else{
// формируем отчёт о фатальной ошибке
if ( false!==MAIN_FATAL_LOG){
$txt = str_replace('{time}',date('h:i',MAIN_TIME), TMPL_FATAL_ERROR_LOG);
$txt = str_replace('{msg}',$msg, $txt);
//$txt = str_replace('{request_dump}',var_export($_REQUEST,true), $txt);
$txt = str_replace('{cookie_dump}',var_export($_SERVER,true), $txt);
}
$t = new PHPTAL( MAIN_SOURCE_PATH.'/tmpl/files/critical_error.html' );
echo $t -> execute();
}
exit();
break;
// просто ошибки программирования
case(ERROR_MESSAGE):
if ( MAIN_DEBUG_MODE ){
echo "$msg ($file: $line )
";
}
if ( false!==MAIN_ERROR_LOG){
$txt = str_replace('{time}',date('h:i',MAIN_TIME), TMPL_ERROR_LOG);
$txt = str_replace('{msg}',"$msg ($file: $line )", $txt);
$txt = str_replace('{request}',$_SERVER['REQUEST_URI'], $txt);
sys_log(MAIN_ERROR_LOG, $txt);
}
//$MAIN_ERROR['error'] = array('msg' =>$msg,'file'=>$file,'line'=>$line );
break;
// закрытый сайт
case(CLOSE_SITE_MSG):
if ( MAIN_DEBUG_MODE){
return FALSE;
}else{
$t = new PHPTAL( MAIN_SOURCE_PATH.'/tmpl/files/maintenance.html' );
echo $t -> execute();
exit();
}
break;
// несуществующа страничка
case(ERROR_404):
case('404'):
HL::triggerEvents('on_error', array('type'=>ERROR_404,'msg'=>$msg,'file'=>$file,'line'=> $line) );
if ( MAIN_DEBUG_MODE ){
$info = debug_backtrace();
$size = sizeof($info);
$result = '';
for($i=($size-1);$i>=0;$i--){
$result.='- '.$info[$i]['file'].'('.$info[$i]['line'].')
';
}
$result .= '
';
echo (!empty($msg) ? $msg :F_NOT_FOUND);
echo $result;
}else{
//include_once( MAIN_SOURCE_PATH.'/modules/poremontu/events/poremontu_event_redirect.php');
//poremontu_event_redirect();
//header('HTTP/1.1 404 Not Found');
//sys_log(MAIN_NOTFOUND_LOG, (F_NOT_FOUND.':'.$_SERVER['REQUEST_URI'].':'.$file.':'.$line."\n\r") ) ;
//$t = new PHPTAL( MAIN_SOURCE_PATH.'/tmpl/default/msg/404.html' );
//echo $t -> execute();
}
exit();
break;
// лог сообщений дебага
case(TIME_MSG):
$MAIN_ERROR[TIME_MSG][]= array($msg['time'],$msg['text'],$file."[ $line ]" );
break;
// лог sql запросов
case(SQL_MSG):
$MAIN_ERROR[SQL_MSG][]= array($msg['time'],$msg['sql'],$file."[ $line ]" );
break;
// знает что
default:
$RC_ERROR[$error_type][]= ''.$msg.'';
break;
}
}
// логируем
function sys_log( $file,$msg){
if (!$handle = fopen($file, 'a')) {
return FALSE;
// die('Файл "'.$file.'" не доступен для записи' );
}
if ( fwrite($handle, $msg) === FALSE) {
return FALSE;
}
fclose($handle);
}
// логирование данных
function sys_data_log(){
if ( false===MAIN_DATA_LOG){
return false;
}
$txt = str_replace('{time}',date('h:i',MAIN_TIME), TMPL_DATA_LOG);
$txt = str_replace('{request_dump}',var_export($_REQUEST,true), $txt);
$txt = str_replace('{cookie_dump}',var_export($_COOKIE,true), $txt);
$txt = str_replace('{files_dump}',var_export($_FILES,true), $txt);
sys_log(MAIN_DATA_LOG,$txt);
return true;
}
// логирование данных
function sys_access_log(){
if ( false===MAIN_ACCESS_LOG){
return false;
}
$txt = str_replace('{time}',date('h:i',MAIN_TIME), TMPL_ACCESS_LOG);
$txt = str_replace('{ip}',MAIN_USER_IP, $txt);
$txt = str_replace('{client}',$_SERVER['HTTP_USER_AGENT'], $txt);
$txt = str_replace('{request}',$_SERVER['REQUEST_URI'], $txt);
sys_log(MAIN_ACCESS_LOG,$txt);
return true;
}
function sys_control_error($errno, $errstr, $errfile, $errline){
$exseptions = array(2048,8);
// не подключился файл
if ( $errno ==2 ){
// sys_error(500,$errstr);
}elseif( in_array($errno,$exseptions) ){
return false;
}else{
sys_error(ERROR_MESSAGE,$errno.':'.$errstr, $errfile,$errline);
}
}
// получаем ip
function sys_get_ip(){
if ( getenv('HTTP_X_FORWARDED_FOR') && strcasecmp(getenv('HTTP_X_FORWARDED_FOR'), 'unknown') ){
$ip = getenv('HTTP_X_FORWARDED_FOR');
$ip = preg_replace('/,.*/', '', $ip);
}elseif (getenv('HTTP_CLIENT_IP') && strcasecmp(getenv('HTTP_CLIENT_IP'), 'unknown')){
$ip = getenv('HTTP_CLIENT_IP');
}elseif (getenv('REMOTE_ADDR') && strcasecmp(getenv('REMOTE_ADDR'), 'unknown')){
$ip = getenv('REMOTE_ADDR');
}elseif (isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], 'unknown')){
$ip = $_SERVER['REMOTE_ADDR'];
}else{
sys_error(ERROR_403);
}
return $ip;
}
/**
* Правиряем правильность e-Mail адреса
* Authors : Andy Prevost (codeworxtech) codeworxtech@users.sourceforge.net |
* : Marcus Bointon (coolbru) coolbru@users.sourceforge.net
*
*/
function sys_is_mail($email) {
if ( function_exists('filter_var') ) {
if(filter_var($email, FILTER_VALIDATE_EMAIL) === FALSE) {
return false;
} else {
return true;
}
}
return preg_match('/^(?:[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+\.)*[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+@(?:(?:(?:[a-zA-Z0-9_](?:[a-zA-Z0-9_\-](?!\.)){0,61}[a-zA-Z0-9_-]?\.)+[a-zA-Z0-9_](?:[a-zA-Z0-9_\-](?!$)){0,61}[a-zA-Z0-9_]?)|(?:\[(?:(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\.){3}(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\]))$/', $email);
/*if ( !preg_match("/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+([\.][a-z0-9-]+)+$/i", $email) ) {
return false;
}
return true;*/
}
function check_img_name($text) {
die('устаревшая функция check_img_name в functions.php');
if ( empty($text) ){
return false;
}
if ( !preg_match('#[0-9]*\.(jpg|jpeg|gif|png)#i',$text)){
return false;
}
return true;
}
// проверяем имя модуля
function sys_check_module_name($text) {
if ( empty($text) ){
return false;
}
$text= preg_replace('#[^a-z0-9_]#i','',$text);
return $text;
}
// проверяем название функции генерирующей страницу
function sys_check_func_name($text) {
die('устаревшая функция sys_check_func_name в functions.php');
return system_check_page_name($text);
}
//функция записи в файл
function system_write_file($file,$data){
die('устаревшая функция system_write_file в functions.php');
}
/**
* Генерируем произвольную строку
*
* @project cms
* @name sys_str_rand
* @param int count Длинна генерируемой строки
* @return strung Произвольная строка
*/
// генерируем случайную строку
function sys_str_rand($count) {
$consonents = "123456789bcdfghjklmnpqrstvwxyz";
$makepass='';
for ($i=0; $i<$count; $i++) {
$makepass .= substr($consonents, mt_rand(0, strlen($consonents)-1), 1);
}
return $makepass;
}
/**
* Генерируем случайное имя файла с расширением $ext для директории $d
*
* @param: string dir Директрия
* @param: string ext Расширение файла
* @param: string rand Случайная последовательность
* @return: strung Имя файла с расширением ext уникальное для директории d
*/
function sys_filename_rand($dir, $ext,$rand='1'){
$name = $rand.'_'.MAIN_TIME.'.'.$ext;
return (file_exists($dir.'/'.$name) ) ? sys_filename_rand($dir, $ext, sys_str_rand(4) ) : $name;
}
// отключаем генерацию блоков на странице
function sys_block_disable(){
define('SYS_BLOCKS_GENERATE_OK',true);
}
function sys_blocks_disable(){
define('SYS_BLOCKS_GENERATE_OK',true);
}
function sys_blocks_enable(){
global $MAIN_PAGE;
$MAIN_PAGE -> blocks();
}
/**
* Убираем html
*
* @var str $v текст для обработки
* @return str текст с испорченным html
*/
function sys_in_html($v){
return htmlspecialchars($v,ENT_QUOTES);
}
/**
* Экранируем спец-символы для использованием строки в sql-запросе
*
* @var str $v текст для обработки
* @return str текст с экранированными спец-символами
*/
function sys_in_sql($v){
return mysql_real_escape_string($v);
}
// проверяем название page-страницы
function sys_is_page($p_name){
if ( preg_match('#[^a-z0-9-_]#iU',$p_name) ){
return FALSE;
}
return TRUE;
}
// определяем IE6 или нет перед нами
function sys_is_ie6(){
if ( stristr($_SERVER['HTTP_USER_AGENT'], 'MSIE 6.0') ){
return TRUE;
}else{
return FALSE;
}
}
// генерируем url
function sys_url(){
$ListArg = func_get_args();
$url = $ListArg[0];
unset( $ListArg[0] );
if ( empty($url) ){
sys_error(ERROR_500,"URL template not found");
}
return vsprintf($url,$ListArg);
}
/**
* мультиязыная версия
*
*/
function sys_ml_url($key,$array,$lang='ru'){
/*$ListArg = func_get_args();
$url = $ListArg[0];
unset( $ListArg[0] );*/
if ( empty($key) ){
sys_error(ERROR_500,"URL template not found");
}
if ( $lang!='ru' ){
$url = MAIN_URL.'/'.$lang;
}else{
$url=MAIN_URL;
}
return $url.vsprintf($key,$array);
}
// 301 рекдирект на $url
function sys_redirect($url){
Header( "HTTP/1.1 301 Moved Permanently" );
Header( "Location: $url" );
exit();
}
// записываем файл
function sys_write_file($file,$data){
//chmod($file,'0777');
if( !file_put_contents($file,$data) ){
sys_error('500', sprintf(F_WRITE_ERROR,$file) );
return FALSE;
}
///chmod($file,'0777');
return TRUE;
}
// переводим массив в объект ( нужно для шаблонизатора)
function arr_to_obj($array){
$s = new stdClass;
foreach( $array AS $k=>$v ){
$s -> $k = $v;
}
return $s;
}
// прячем внешние ссылки за редирек, кроме ссылок-исключений
function sys_url_to_redirect($text){
return preg_replace_callback ('#href\s*=\s*(\'|")http://(.*)(\'|")#iUs','inc_url_to_redirect_callback',$text);
}
// очищаем текст от ссылок через редирект
function sys_redirect_to_url($text){
return preg_replace('#'.MAIN_URL.'/redirect\.php\?url=#i','http://',$text);
}
// вспомогательная функция обратного вызова
function inc_url_to_redirect_callback($url){
global $MAIN_PAGE;
if ( preg_match('#'.str_replace(',','|',$MAIN_PAGE -> config("sys_url_list") ).'#iUs',$url[2]) ){
return 'href="http://'.$url[2].'"';
}else{
return 'href="'.MAIN_URL.'/redirect.php?url='.$url[2].'"';
}
}
/**
* Обрезать текст до заданной длины
*
* @var: str $text обрезаемый текст
* @var: int $size Ограничения на максимальную длинну результируещей строки
* @var: int $min_size Ограничения на минимальную длинну результируещей строки
* @return: str
*/
function sys_short_text($text,$size=600,$min_size=30){
$text = preg_replace('# #Us','',$text);
$text = trim(strip_tags($text));
if ( preg_match('#^.{'.$size.','.($size+250).'} #iUs',$text,$txt) ){
$text = $txt[0];
}
return $text;
}
// формируем из $v текст эффективный для морфологического поиска
function sys_clear_text($v){
if ( is_numeric($v) ){
return $v;
}
include_once(MAIN_SOURCE_PATH.'/inc/class.morf.php');
$stemmer = new Lingua_Stem_Ru();
$v = preg_replace("/[^\w\x7F-\xFF\s]/"," ",strip_tags($v));
$v = explode(' ',$v);
foreach ($v as $word)
{
if ( mb_strlen($word,'UTF-8')<=2 ){
continue;
}
$min_word=$stemmer->stem_word($word);
if ( mb_strlen($min_word,'UTF-8')<3 ){
$min_word.='00';
}elseif ( mb_strlen($min_word,'UTF-8')<4 ){
$min_word.='0';
}
$word_array[]=$min_word;
}
return trim(implode(' ',$word_array));
}
// проверяет, может ли быть $v алиасом
function sys_is_alias($v){
if ( empty($v) ){
return false;
}
if ( preg_match("#[^0-9.a-z_-]#i", $v) ) {
return false;
}
return true;
}
function sys_check_safe_dir($v){
if ( preg_match('#[^a-z-0-9/_]#',$v) ){
return false;
}
return true;
}
// переводим utf строку в транслит
function sys_translit($string){
$string = mb_strtolower($string, "utf-8");
$string = preg_replace('#[^0-9a-zйцукенгшщзхъэждлорпавыфячсмитьбюё]#iu',' ',$string);
$string = trim($string);
$string = preg_replace('#\s{1,}#isu','-',$string);
$tr = array(
"а"=>"a","б"=>"b",
"в"=>"v","г"=>"g","д"=>"d","е"=>"e","ё"=>"e","ж"=>"zh",
"з"=>"z","и"=>"i","й"=>"y","к"=>"k","л"=>"l",
"м"=>"m","н"=>"n","о"=>"o","п"=>"p","р"=>"r",
"с"=>"s","т"=>"t","у"=>"u","ф"=>"f","х"=>"h",
"ц"=>"ts","ч"=>"ch","ш"=>"sh","щ"=>"sch","ъ"=>"",
"ы"=>"yi","ь"=>"","ю"=>"e","э"=>"e","ю"=>"yu","я"=>"ya"
);
return strtr($string,$tr);
}
// проверяет, может ли быть $v названием файла
function sys_is_file($v){
if ( preg_match('#[^a-z0-9_.]#i',$v) ){
return false;
}
return true;
}
// собираем по всему сайту сообщения
function build_rss(){
/*global $MAIN_DB,$MAIN_PAGE;
$modules = array(
'news_sql_rss' => MAIN_SOURCE_PATH.'/modules/news/inc/class.news.php',
);
$sql = array();
foreach( $modules as $f => $url ){
include_once( $url );
if ( !function_exists($f) ){
sys_error('500');
}
$sql[]= $f() ;
}
$sql = implode(" UNION ALL ",$sql);
$sql .=' ORDER BY time_add DESC LIMIT 0,20';
$res = $MAIN_DB -> query($sql);
$search = array();
while( $row = $MAIN_DB -> fetch_array($res) ){
$row['time_add'] = date("r", $row['time_add']);
$row['url'] = MAIN_URL.$row['url'];
$search[]=arr_to_obj($row);
}
$t = new PHPTAL( false );
$t -> setOutputMode(PHPTAL::XML);
$t -> setSource(TMPL_RSS_MAIN);
$t -> rows = $search;
$t -> site_name = $MAIN_PAGE -> config('sys_site_name');
$t -> time_pub = date("r", MAIN_TIME );
$t -> rss_url = RSS_URL;
$t -> site_url = MAIN_URL;
$t -> site_desc = $MAIN_PAGE -> config('sys_site_desc');
sys_write_file( RSS_PATH, $t -> execute() );
return true;*/
}
function build_map(){
$modules = array(
'news',
);
foreach( $modules as $m ){
$file = MAIN_PATH.'/tmp/map/'.$m.'.xml';
if ( !file_exists($file) ){
continue;
}
$search[]=array('url'=>MAIN_URL.'/tmp/map/'.$m.'.xml', 'date'=>date('Y-m-d',filectime($file) ) );
}
$t = new PHPTAL( MAIN_SOURCE_PATH.'/tmpl/default/xml/main_map.xml' );
$t -> setOutputMode(PHPTAL::XML);
$t -> rows = $search;
sys_write_file( SITEMAP_XML_PATH, $t -> execute() );
return true;
}
function ping($url,$title){
/*$pings = array('http://ping.blogs.yandex.ru/RPC2','http://blogsearch.google.com/ping/RPC2');
if ( empty($url) || empty($title) ){
sys_error( ERROR_500 );
}
$t = new PHPTAL( MAIN_SOURCE_PATH.'/tmpl/default/xml/ping.xml' );
$t -> setOutputMode(PHPTAL::XML);
$t -> url = $url;
$t -> title = $title;
$data = $t -> execute();
$len = strlen($data);
foreach( $pings as $p ){
$parse = parse_url($p);
$host = $parse['host'];
$port = isset($parse['port'])?$parse['port']:80;
$uri = isset($parse['path'])?$parse['path']:'/';
$fp=fsockopen($host,$port,$errno,$errstr);
if(!$fp){
continue;
}
$out = "POST $uri HTTP/1.0\r\n";
$out .= "User-Agent: BlogPing/1.0\r\n";
$out .= "Host: $host\r\n";
$out .= "Content-Type: text/xml\r\n";
$out .= "Content-length: $len\r\n\r\n";
$out .= $data;
fwrite($fp, $out);
// если отладка выключена, то анализ делать не нужно
if ( MAIN_DEBUG_MODE!==true ){
continue;
}
$response = '';
while(!feof($fp) ){
$response.=fgets($fp, 128);
}
fclose($fp);
if( !strstr($response,"Thanks for the ping") ){
continue;
}
}*/
return true;
}
// пересчитываем байты в подходящие единицы
function byte_to_str($v){
if( $v < 1000 ){
return sprintf(F_BYTE,$v);
}elseif( $v>=1000 && $v< 1000000 ){
return sprintf(F_KB_BYTE,(round($v/1000)) );
}elseif( $v>=1000000 ){
return sprintf(F_MB_BYTE,(round($v/1000000)) );
}
return false;
}
/**
* конверт переносов строки в
*
*
*/
function sys_convert_br($text) {
$find[] = "/(\015\012)|(\015)|(\012)/";
$replace[] = "
";
$text = preg_replace($find, $replace, $text);
return $text;
}
function sys_check_lang($text) {
if ( preg_match('#^[a-z]{2,5}$#i',$text) ){
return true;
}
return false;
}
/**
* Добавляем тег в систему
*
*/
function sys_tag_add($tag,$key,$module_id=0) {
global $MAIN_DB;
$tag = trim($tag);
if ( empty($tag) ){
return false;
}
$key= intval($key);
if ( empty($key) ){
return false;
}
$module_id = intval($module_id);
if ( empty($module_id) ){
include_once(MAIN_SOURCE_PATH.'/modules/admin/inc/class.modules.php');
$m = modules::load_path(MAIN_MODULE);
$module_id = $m -> id();
}
$sql = "
INSERT INTO ".$MAIN_DB -> prefix("system_tags_link")."
SET
tag='".sys_in_sql($tag)."',
module_id='".$module_id."',
key='".$key."'";
$MAIN_DB -> query($sql);
return true;
}
/**
* Удаляем тег
*
*/
function sys_tag_del($module_id=0,$key=0,$tag='') {
global $MAIN_DB;
$module_id = intval($module_id);
if ( empty($module_id) ){
include_once(MAIN_SOURCE_PATH.'/modules/admin/inc/class.modules.php');
$m = modules::load_path(MAIN_MODULE);
$module_id = $m -> id();
}
$where_key = !empty($key) ? " AND id='".sys_in_sql($key)."'" : "";
$where_tag = !empty($tag) ? " AND tag='".sys_in_sql($tag)."'" : "";
$sql = "DELETE FROM ".$MAIN_DB -> prefix("system_tags_link")." WHERE module_id='$module_id' ".$where_key.$where_tag;
$MAIN_DB -> query($sql);
return true;
}
/**
* загружаем выбранный плагин
*
*/
function sys_plugin($name) {
include_once(MAIN_SOURCE_PATH.'/modules/admin/inc/class.plugins.php');
return plugins::load_name($name);
}
/****************
* Шаблоны для парсера
***************/
// пинг файл для яндекса
define("TMPL_PING_XML",
<<
Название сайта
http://www.goupstate.com/
Описание
ru-ru
Tue, 10 Jun 2003 04:00:00 GMT
http://blogs.law.harvard.edu/tech/rss
10
Название сайта
http://site.ru/source/tmpl/img/logo.png
Ссылка на сайт
295
102
Последние материалы проекта ПоРемонту.ru
-
Название материала
Ссылка на материал
Ссылка на материал
Дата публикации
Модуль
TMPL_RSS_MAIN
);
// шаблон для генерации sitemap для модулей
define("TMPL_MAP_XML",
<<
EOF
);*/
define("TMPL_FATAL_ERROR_LOG",
<<