Вход Регистрация
Файл: root/functions.php
Строк: 559
<?php

/**
* @name        JMY CMS
* @link        http://jmy.su/
* @copyright   Copyright (C) 2012-2014 JMY LTD
* @license     LICENSE.txt (see attached file)
* @version     VERSION.txt (see attached file)
* @author      Komarov Ivan
*/

if (!defined('ACCESS')) {
    
header('Location: /');
    exit;
}


function 
adminError($err$back false)
{
global 
$adminTpl$core;
    
$adminTpl->admin_head('Ошибка');
    
$adminTpl->info($err . ($back '<a href="#" onclick="/'.ADMIN.'/' $back '/" >Вернуться.</a>' ''));
    
$adminTpl->admin_foot();
}
    
    
function 
_mName($mod)
{
global 
$core;
    return isset(
$core->tpl->modules[$mod]) ? $core->tpl->modules[$mod]['content'] : $mod;
}

function 
adminArea($name$val null$rows 10$class 'textarea'$onclick null$return false)
{
global 
$adminTpl$core;
    if(
$core->html_editor == 1)
    {
        
$adminTpl->headerIncludes['bb'] = '<script type="text/javascript" src="usr/js/bb_editor.js"></script><script type="text/javascript">var textareaName = ''.$name.'';</script>';
        
$adminTpl->headerIncludes['htmleditor'] = '<script type="text/javascript" src="/usr/plugins/htmleditor/tiny_mce.js"></script><script type="text/javascript">tinyMCE.init({mode : "textareas",    theme : "advanced",    skin : "o2k7",    plugins : "safari,style,layer,table,advhr,advimage,advlink,emotions,iespell,insertdatetime,media,searchreplace,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,inlinepopups,hideBB", theme_advanced_buttons1 : "newdocument,|,bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,styleselect,formatselect,fontselect,fontsizeselect", theme_advanced_buttons2 : "cut,copy,paste,pastetext,pasteword,|,search,replace,|,bullist,numlist,|,outdent,indent,blockquote,|,undo,redo,|,link,unlink,anchor,image,cleanup,code,|,insertdate,inserttime,preview,|,forecolor,backcolor",theme_advanced_buttons3 : "tablecontrols,|,hr,removeformat,visualaid,|,sub,sup,|,charmap,emotions,iespell,media,advhr,|,print,|,ltr,rtl,|,fullscreen",    theme_advanced_buttons4 : "insertlayer,moveforward,movebackward,absolute,|,styleprops,|,cite,abbr,acronym,del,ins,attribs,|,visualchars,nonbreaking,template,hideBB",theme_advanced_toolbar_location : "top",theme_advanced_toolbar_align : "left",    theme_advanced_statusbar_location : "bottom",theme_advanced_resizing : true,template_external_list_url : "lists/template_list.js",external_link_list_url : "lists/link_list.js",external_image_list_url : "lists/image_list.js",media_external_list_url : "lists/media_list.js",});</script>';
        
$editor '<textarea id="' $name '" name="' $name '" rows="' $rows '" cols="90" class="' $class '" onclick="mainArea('' . $name . '')">' $val '</textarea>';

        return 
$editor;
    }
    else
    {
        return 
bb_areaADM($name$val$rows$class$onclick$returntrue);
    }
}

function 
countPub()
{
//    return ' (+20)';
}

function 
checkAdmControl($mod 'index')
{
global 
$core;
    if(!empty(
$core->auth->user_info['control']))
    {
        
$access array_map('trim'unserialize($core->auth->user_info['control']));
        if(
in_array($mod$access))
        {
            return 
true;
        }
        else
        {
            return 
false;
        }
    }
    else
    {
        return 
true;
    }
}

function 
noadmAccess()
{
global 
$adminTpl;
    
$adminTpl->admin_head('Нет доступа!');
    
$adminTpl->info('Извините но вам закрыт доступ в данный раздел!');
    
$adminTpl->admin_foot();
}



function 
dirsize($dir$buf 2)
{
    static 
$buffer;
    if(isset(
$buffer[$dir]))
    {
        return 
$buffer[$dir];
    }
    
    if(
is_file($dir))
    {
        return 
filesize($dir);
    }
    
    if(
$dh=opendir($dir))
    {
        
$size=0;
        while((
$file=readdir($dh))!==false)
        {
            if(
$file=='.' || $file=='..')
            {
                continue;
            }
            
$size+=dirsize($dir.'/'.$file,$buf-1);
        }
        
closedir($dh);
        if(
$buf>0)
        {
            
$buffer[$dir]=$size;
        }
        return 
$size;
    }
    return 
false;
}

/*
* Получаем категории из массива ЭКСПЕРЕМЕНТАЛЬНАЯ ФУНКЦИЯ :D
* $fp - файл
* $content - то что запишем
*/
function save_conf($fp$content
{
    
$file_name basename($fp);
    if(!
file_exists($fp))
    {
        
file_put_contents($fp,'');
        @
chmod(ROOT $fp0666 );
    }
    if (
file_exists($fp) && $content
    {
        
$fp fopen($fp"wb");
        
$content "<?php
if (!defined('ACCESS')) 
{
    header('Location: /');
    exit;
}
nn"
.$content."n";
        
fwrite($fp$content);
        
fclose($fp);
    }
}




/*
* Выводим чекбоксы :D
* $name - имя инпута чеки
* $val - тру ор фалсе
*/
function checkbox($name$val
{
    
$checked = !empty($val) ? 'checked ' false;
    return 
"<label class="checkbox checkbox-custom"><input name="" . $name . "" type="checkbox" " $checked "><i class="checkbox"></i></label>";
}


/*
* Выводим радио выбор Да Нет
* $name - имя инпута радио
* $val - тру ор фалсе
*/
function radio($name$val
{
    
$but_1 = ($val) ? "checked" "";
    
$but_2 = (!$val) ? "checked" "";
    return 
'
    <table>
    <tr>
    <td valign="top">
                <label class="radio radio-custom ' 
$but_1 '"><input type="radio" ' $but_1 ' value="1" name="' $name '" id="' $name '"><i class="radio ' $but_1 '"></i>'._YES.'</label>
            </td>
            <td>&nbsp&nbsp</td>
            <td valign="top">
                <label class="radio radio-custom ' 
$but_2 '"><input type="radio" ' $but_2 ' value="0" name="' $name '" id="' $name '"><i class="radio ' $but_2 '"></i>'._NO.'</label>
                </td>
                
    </tr>
    </table>
                
            '
;
}

/*
* Функция рекурсивного сканирования дерикторий шаба
* $rootDir - директория
*/
function scanDirectories($rootDir$allData=array()) 
{
    
$invisibleFileNames = array("."".."".htaccess"".htpasswd");
    
$dirContent scandir($rootDir);
    foreach(
$dirContent as $key => $content
    {
        
$path $rootDir.'/'.$content;
        if(!
in_array($content$invisibleFileNames)) 
        {
            if(
is_file($path) && is_readable($path) && eregStrt('.tpl'$content)) 
            {
                
$allData[] = $path;
            }
            elseif(
is_dir($path) && is_readable($path)) 
            {
                
$allData scanDirectories($path$allData);
            }
        }
    }
    return 
$allData;
}

function 
dircopy($srcdir$dstdir$offset$verbose false) {
if(!isset(
$offset)) $offset=0;
  
$num 0;
  
$fail 0;
  
$sizetotal 0;
  
$fifail '';
  if(!
is_dir($dstdir)) {mkdir($dstdir0777); @chmod_R($dstdir0777);}
  if(
$curdir opendir($srcdir)) {
    while(
$file readdir($curdir)) {
      if(
$file != '.' && $file != '..') {
        
$srcfile $srcdir '\' . $file;
        $dstfile = $dstdir . '
\' . $file;
        if(is_file($srcfile)) {
          if(is_file($dstfile)) $ow = filemtime($srcfile) - filemtime($dstfile); else $ow = 1;
          if($ow > 0) {
            if($verbose) echo "Copying '
$srcfile' to '$dstfile'...";
            if(copy($srcfile, $dstfile)) {
              touch($dstfile, filemtime($srcfile)); $num++;
              $sizetotal = ($sizetotal + filesize($dstfile));
              if($verbose) echo "OKn";
            }
            else {
                 echo "Error: File '
$srcfile' could not be copied!n";
                 $fail++;
                 $fifail = $fifail.$srcfile."|";
            }
          }                   
        }
        else if(is_dir($srcfile)) {
          $res = explode(",",$ret);
          $ret = dircopy($srcfile, $dstfile, $verbose);
          $mod = explode(",",$ret);
          $imp = array($res[0] + $mod[0],$mod[1] + $res[1],$mod[2] + $res[2],$mod[3].$res[3]);
          $ret = implode(",",$imp);
        }
      }
    }
    closedir($curdir);
  }
  $red = explode(",",$ret);
  $ret = ($num + $red[0]).",".(($fail-$offset) + $red[1]).",".($sizetotal + $red[2]).",".$fifail.$red[3];
  return $ret;
}


function rmdir_rf($dirname) 
{
    if ($dirHandle = opendir($dirname)) {
        chdir($dirname);
        while ($file = readdir($dirHandle)) {
            if ($file == '
.' || $file == '..') continue;
            if (is_dir($file)) rmdir_rf($file);
            else unlink($file);
        }
        chdir('
..');
        rmdir($dirname);
        closedir($dirHandle);
    }
}

function jsCalendar($id, $format = '
d.m.Y')
{
    if(is_array($id))
    {
        $i = 0;
        foreach($id as $k => $subId)
        {
            $i++;
            $subJs = "
              <script type="text/javascript">
                window.addEvent('
domready', function() { 
                    myCal".$i." = new Calendar({ ".$subId.": '".
$format."' }, { classes: ['dashboard'], direction: 0 });
                });
              </script>
            ";
        }
    }
    else
    {
        $subJs = "
          <script type="text/javascript">
            window.addEvent('
domready', function() { 
                myCal2 = new Calendar({ ".$id.": '".
$format."' }, { classes: ['dashboard'], direction: 0 });
            });
          </script>
        ";
    }

    return '
<script type="text/javascript" src="usr/plugins/calendar/mootools.js"></script><script type="text/javascript" src="usr/plugins/calendar/calendar.js"></script>' . $subJs . '<link rel="stylesheet" type="text/css" href="usr/plugins/calendar/dashboard.css" media="screen" />';

}


function deleteComments($mod, $id)
{
global $adminTpl, $db;
    $db->query("DELETE FROM `" . DB_PREFIX . "_comments` WHERE `post_id` = " . $id . " AND `module` = '" . 
$mod . "' LIMIT 1");
}


/*
* the part of this by zhilinsky (zhilinsky.ru) [sps] :D
*/

function nooverflow($a) { 
    while ($a<-2147483648) $a+=2147483648+2147483648; 
    while ($a>2147483647) $a-=2147483648+2147483648; 
    return $a; 
}

function zeroFill ($x, $bits) { 
   if ($bits==0) return $x; 
   if ($bits==32) return 0; 
   $y = ($x & 0x7FFFFFFF) >> $bits; 
   if (0x80000000 & $x) { 
       $y |= (1<<(31-$bits)); 
   } 
   return $y; 
}

function mix($a,$b,$c) {
    $a=(int)$a; $b=(int)$b; $c=(int)$c; 
    $a -= $b; $a -= $c; $a=nooverflow($a); $a ^= (zeroFill($c,13)); 
    $b -= $c; $b -= $a; $b=nooverflow($b); $b ^= ($a<<8); 
    $c -= $a; $c -= $b; $c=nooverflow($c); $c ^= (zeroFill($b,13)); 
    $a -= $b; $a -= $c; $a=nooverflow($a); $a ^= (zeroFill($c,12)); 
    $b -= $c; $b -= $a; $b=nooverflow($b); $b ^= ($a<<16); 
    $c -= $a; $c -= $b; $c=nooverflow($c); $c ^= (zeroFill($b,5)); 
    $a -= $b; $a -= $c; $a=nooverflow($a); $a ^= (zeroFill($c,3)); 
    $b -= $c; $b -= $a; $b=nooverflow($b); $b ^= ($a<<10); 
    $c -= $a; $c -= $b; $c=nooverflow($c); $c ^= (zeroFill($b,15)); 
    return array($a,$b,$c); 
}

function GCH($url, $length = null, $init = 0xE6359A60) {
    if(is_null($length)) { 
        $length = sizeof($url); 
    } 
    $a = $b = 0x9E3779B9; 
    $c = $init; 
    $k = 0; 
    $len = $length; 
    while($len >= 12) { 
        $a += ($url[$k+0] +($url[$k+1]<<8) +($url[$k+2]<<16) +($url[$k+3]<<24)); 
        $b += ($url[$k+4] +($url[$k+5]<<8) +($url[$k+6]<<16) +($url[$k+7]<<24)); 
        $c += ($url[$k+8] +($url[$k+9]<<8) +($url[$k+10]<<16)+($url[$k+11]<<24)); 
        $mix = mix($a,$b,$c); 
        $a = $mix[0]; $b = $mix[1]; $c = $mix[2]; 
        $k += 12; 
        $len -= 12; 
    } 
    $c += $length; 
    switch($len) { 
        case 11: $c+=($url[$k+10]<<24); 
        case 10: $c+=($url[$k+9]<<16); 
        case 9 : $c+=($url[$k+8]<<8); 
        case 8 : $b+=($url[$k+7]<<24); 
        case 7 : $b+=($url[$k+6]<<16); 
        case 6 : $b+=($url[$k+5]<<8); 
        case 5 : $b+=($url[$k+4]); 
        case 4 : $a+=($url[$k+3]<<24); 
        case 3 : $a+=($url[$k+2]<<16); 
        case 2 : $a+=($url[$k+1]<<8); 
        case 1 : $a+=($url[$k+0]); 
    } 
    $mix = mix($a,$b,$c); 
    return $mix[2]; 
}

function strord($string) { 
    for($i=0;$i<mb_strlen($string);$i++) { 
        $result[$i] = ord($string{$i}); 
    } 
    return $result; 


/*
* Определение pr сайта по урл
* $aUrl - урл сайта которого определяем
*/
function getPageRank($aUrl) {
    if($_SERVER['
SERVER_ADDR'] == '127.0.0.1') {
        return '
Local PR 0';
    } else {
        $url = '
info:'.$aUrl; 
        $ch = GCH(strord($url)); 
        $url = '
info:'.urlencode($aUrl); 
        $pr = @file("http://www.google.com/search?client=navclient-auto&ch=6$ch&ie=UTF-8&oe=UTF-8&features=Rank&q=http://digits.ru/"); 
        $pr_str = @implode("", $pr); 
        $pr = mb_substr($pr_str,strrpos($pr_str, ":")+1); 
        if($pr > 1) {
            return $pr;
        } else {
            return 0;
        }
    }
}

/*
* Определение тиц сайта по урл
* $url - урл сайта которого определяем
*/
function yandex_tic($url){
    if($_SERVER['
SERVER_ADDR'] == '127.0.0.1') {
        return '
Local ТИЦ 0';
    } 
    else 
    {
        $ci_url = "http://bar-navig.yandex.ru/u?ver=2&show=32&url=http://".$url."/"; 
        $ci_data = implode("", file("$ci_url"));
        preg_match("/value="(.d*)"/", $ci_data, $ci); 
        if ($ci[1] == "") 
            $str = 0;
        else 
            $str = $ci[1];    
        return trim($str);
    }
}

function commentLink($mod, $id)
{
    $linked = array('
profile' => 'profile/{id}', 'news' => 'news/view/{id}', 'blog' => 'blog/read/{id}', 'gallery' => 'gallery/photo/{id}');
    if(isset($linked[$mod]))
    {
        return '
<a target="_blank" href="' . str_replace('{id}', $id$linked[$mod]) . '">' . _mName($mod) . '</a>';
    }
    else
    {
        return _mName($mod);
    }
}

//настроки в модулях
function generateConfig($configBox, $type, $link, $ok = false)
{
global $adminTpl, $url, $core;
    require (ROOT.'
etc/'.$type.'.config.php');
    $parseConf = $configBox[$type];
    $varName = $configBox[$type]['
varName'];
    $confArr = $$varName;
    $adminTpl->admin_head(_BASE_CONFIG .' 
' . $parseConf['title']);
    if($ok)
    {
        $adminTpl->info(_SUCCESS_SAVE);
        $adminTpl->admin_foot();
        $file = '
etc/'.$_POST['conf_file'].'.config.php';
        $conf_arr_name = $_POST['
conf_arr_name'];
        $content = "global $$conf_arr_name;n";
        $content .= "$$conf_arr_name = array();n";
        foreach($_POST as $k => $val) {
            if($k != '
conf_arr_name' && $k != 'conf_file') {
                if(!is_array($val)) {
                    if($k != '
illFormat')
                    {
                        $content .= "$".$conf_arr_name."['".
$k."'] = "".htmlspecialchars(str_replace('"', '"', stripslashes($val)), ENT_QUOTES)."";n";
                    }
                    else
                    {
                        $content .= "$".$conf_arr_name."['".
$k."'] = "".str_replace('"', '"', stripslashes($val))."";n";
                    }
                } else {
                    foreach($val as $karr => $varr) {
                        $content .= "$".$conf_arr_name."['".
$k."']['".$karr."'] = "".htmlspecialchars(stripslashes($varr), ENT_QUOTES)."";n";
                    }
                }
            }
        }
        save_conf($file, $content);

        echo '
<br />';
        
        require (ROOT.'
etc/'.$type.'.config.php');
        $confArr = $$varName;
    }
    else
    {
    $adminTpl->open();
    echo '
<div class="row">
            <
div class="col-lg-12">
                <
section class="panel">
                    <
div class="panel-heading no-border">
                        <
b>'. $parseConf['title'] .'</b>
                    </
div>
                <
div class="panel-body">
                <
div class="switcher-content">
                    <
form action="' . $link . '"  method="post"  role="form" class="form-horizontal parsley-form" data-parsley-validate>';    
    foreach($parseConf['
groups'] as $group)
    {
      foreach($group['
vars'] as $var => $varArr)
      {
        echo '
<div class="form-group">
                    <
label class="col-sm-3 control-label">'. $varArr['title'] .':</label>
                    <
div class="col-sm-4">
                        
' . (isset($confArr[$var]) ? str_replace(array('{varName}', '{var}'), array($var, $confArr[$var]), $varArr['content']) : $varArr['content']) . '
                        
<class="help-block">'. $varArr['description'] .'</p>
                    </
div>
                </
div>';
        
    
      }
    }
    
    echo '
<input type="hidden" size="20" name="conf_file" class="textinput" value="' . $type . '" maxlength="100" maxsize="100" />
    <
input type="hidden" size="20" name="conf_arr_name" class="textinput" value="' . $varName . '" maxlength="100" maxsize="100" />
    <
div align="right" style="padding-bottom:5px;"><input type="submit" class="btn btn-success" value="' . _SAVE . '" /></div>
    </
form>';
    $adminTpl->close();
    $adminTpl->admin_foot();
    }
}

function generateConfigBLOCK($configBox, $type, $link, $ok = false)
{
global $adminTpl, $url, $core;
    require (ROOT.'
etc/blocks/'.$type.'.config.php');
    $parseConf = $configBox[$type];
    $varName = $configBox[$type]['
varName'];
    $confArr = $$varName;    
    if($ok)
    {
        $adminTpl->info(_SUCCESS_SAVE);        
        $file = '
etc/blocks/'.$type.'.config.php';
        $conf_arr_name = $_POST['
conf_arr_name'];
        $content = "global $$conf_arr_name;n";
        $content .= "$$conf_arr_name = array();n";
        foreach($_POST as $k => $val) {
            if($k != '
conf_arr_name' && $k != 'conf_file') {
                if(!is_array($val)) {
                    if($k != '
illFormat')
                    {
                        $content .= "$".$conf_arr_name."['".
$k."'] = "".htmlspecialchars(str_replace('"', '"', stripslashes($val)), ENT_QUOTES)."";n";
                    }
                    else
                    {
                        $content .= "$".$conf_arr_name."['".
$k."'] = "".str_replace('"', '"', stripslashes($val))."";n";
                    }
                } else {
                    foreach($val as $karr => $varr) {
                        $content .= "$".$conf_arr_name."['".
$k."']['".$karr."'] = "".htmlspecialchars(stripslashes($varr), ENT_QUOTES)."";n";
                    }
                }
            }
        }
        save_conf($file, $content);

        echo '
<br />';
        
        require (ROOT.'
etc/blocks/'.$type.'.config.php');
        $confArr = $$varName;
    }
    else
    {
    echo '
<div class="row">
            <
div class="col-lg-12">
                <
section class="panel">
                    <
div class="panel-heading no-border">
                        <
b>'. $parseConf['title'] .'</b>
                    </
div>
                <
div class="panel-body">
                <
div class="switcher-content">
                    <
form action="' . $link . '"  method="post"  role="form" class="form-horizontal parsley-form" data-parsley-validate>';    
    foreach($parseConf['
groups'] as $group)
    {
      foreach($group['
vars'] as $var => $varArr)
      {
        echo '
<div class="form-group">
                    <
label class="col-sm-3 control-label">'. $varArr['title'] .':</label>
                    <
div class="col-sm-4">
                        
' . (isset($confArr[$var]) ? str_replace(array('{varName}', '{var}'), array($var, $confArr[$var]), $varArr['content']) : $varArr['content']) . '
                        
<class="help-block">'. $varArr['description'] .'</p>
                    </
div>
                </
div>';
        
    
      }
    }
    
    echo '
<input type="hidden" size="20" name="conf_file" class="textinput" value="' . $type . '" maxlength="100" maxsize="100" />
    <
input type="hidden" size="20" name="conf_arr_name" class="textinput" value="' . $varName . '" maxlength="100" maxsize="100" />
    <
div align="right" style="padding-bottom:5px;"><input type="submit" class="btn btn-success" value="' . _SAVE . '" /></div>
    </
form>';
    }
}
Онлайн: 0
Реклама