phpDocumentor PHPShopClass
[ class tree: PHPShopClass ] [ all elements ]

Source for file modules.class.php

Documentation is available at modules.class.php

  1. <?php
  2. /**
  3.  * Подключение модулей
  4.  * @author PHPShop Software
  5.  * @version 1.4
  6.  * @package PHPShopClass
  7.  */
  8.  
  9. class PHPShopModules {
  10.     /**
  11.      * @var mixed массив системных настроек модулей
  12.      */
  13.     var $ModValue;
  14.     /**
  15.      * @var string Относительное размещение модулей
  16.      */
  17.     var $ModDir;
  18.     /**
  19.      * @var bool режим отладки
  20.      */
  21.     var $debug=false;
  22.     /**
  23.      * Конструктор
  24.      * @param string $ModDir  Относительное размещение модулей
  25.      */
  26.     function PHPShopModules($ModDir="phpshop/modules/"{
  27.         $this->ModDir=$ModDir;
  28.         $this->objBase=$GLOBALS['SysValue']['base']['table_name2'];
  29.  
  30.  
  31.  
  32.         if ($dh opendir($this->ModDir)) {
  33.             while (($file readdir($dh)) !== false{
  34.                 if($file != "." and $file != ".."{
  35.                     $this->getIni($dir.$file);
  36.                     //$fp = fopen($this->ModDir.$dir.$file.'/inc/config.ini', "r");
  37.                     //$fstat = fstat($fp);
  38.                     //$fread=fread($fp,$fstat['size']);
  39.                     //$Content=strip_tags($fread);
  40.                     //fclose($fp);
  41.                 }}}
  42.  
  43.         /*
  44.         $this->PHPShopOrm = &new PHPShopOrm($this->objBase);
  45.         $this->PHPShopOrm->debug=$this->debug;
  46.  
  47.         $data=$this->PHPShopOrm->select(array('*'),false,false,array('limit'=>100));
  48.         if(is_array($data))
  49.             foreach($data as $row) {
  50.                 $path=$row['path'];
  51.                 $this->getIni($path);
  52.             }
  53.          * */
  54.   
  55.     }
  56.  
  57.     /**
  58.      * Обработка паметров конфига модулей
  59.      * @param string $path путь до конфигурации модуля
  60.      */
  61.     function getIni($path{
  62.         $ini=$this->ModDir.$path."/inc/config.ini";
  63.         if(file_exists($ini)) {
  64.             $SysValue parse_ini_file($ini,1);
  65.  
  66.             if(is_array($SysValue['autoload']))
  67.                 foreach($SysValue['autoload'as $k=>$v$this->ModValue['autoload'][$k]=$v;
  68.  
  69.             if(is_array($SysValue['core']))
  70.                 foreach($SysValue['core'as $k=>$v$this->ModValue['core'][$k]=$v;
  71.  
  72.             if(is_array($SysValue['class']))
  73.                 foreach($SysValue['class'as $k=>$v$GLOBALS['SysValue']['class'][$k]=$v;
  74.  
  75.             if(is_array($SysValue['lang']))
  76.                 foreach($SysValue['lang'as $k=>$v$GLOBALS['SysValue']['lang'][$k]=$v;
  77.  
  78.             if(is_array($SysValue['system']))
  79.                 foreach($SysValue['system'as $k=>$v$this->ModValue['system'][$path][$k]=$v;
  80.  
  81.             if(is_array($SysValue['hook']))
  82.                 foreach($SysValue['hook'as $k=>$v$this->ModValue['hook'][][$k]=$v;
  83.  
  84.  
  85.             $this->ModValue['templates'][$path]=$SysValue['templates'];
  86.             $GLOBALS['SysValue']['templates'][$path]=$SysValue['templates'];
  87.             $this->ModValue['class'][$path]=$SysValue['class'];
  88.             $GLOBALS['SysValue']['system'][$path]=$this->ModValue['system'][$path];
  89.  
  90.         }
  91.     }
  92.  
  93.     /**
  94.      * Загрузка параметра автозагрузки модулей
  95.      */
  96.     function doLoad({
  97.         global $SysValue,$PHPShopSystem,$PHPShopNav;
  98.         if(is_array($this->ModValue['autoload']))
  99.             foreach($this->ModValue['autoload'as $k=>$v{
  100.                 if(file_exists($v)) require_once($v);
  101.                 else echo("Ошибка загрузки модуля ".$k."<br>Путь: ".$v);
  102.             }
  103.     }
  104.  
  105.     /**
  106.      * Загрузка ядра модулей
  107.      * @param string $path путь размещения core файла модуля
  108.      * @return <type>
  109.      */
  110.     function doLoadPath($path{
  111.         global $SysValue;
  112.         if(!empty($this->ModValue['core'][$path])) {
  113.             if(is_file($this->ModValue['core'][$path])) {
  114.                 require_once($this->ModValue['core'][$path]);
  115.                 $classname 'PHPShop'.ucfirst($SysValue['nav']['path']);
  116.  
  117.                 if(class_exists($classname)) {
  118.                     $PHPShopCore new $classname ();
  119.                     $PHPShopCore->loadActions();
  120.                     return true;
  121.                 else echo PHPShopCore::setError($classname,"не определен класс phpshop/modules/*/core/$classname.core.php");
  122.             }
  123.             else PHPShopCore::setError($path,"Ошибка загрузки модуля ".$path."<br>Путь: ".$this->ModValue['core'][$path]);
  124.         }else return false;
  125.     }
  126.     /**
  127.      * Выдача конфигурационных настроек модулей
  128.      * @param string имя параметра формы раздел.наименование [раздел.подраздел.наименование]
  129.      * @return <type>
  130.      */
  131.     function getParam($param{
  132.         $param=explode(".",$param);
  133.         if(count($param)>2return $this->ModValue[$param[0]][$param[1]][$param[2]];
  134.         return $this->ModValue[$param[0]][$param[1]];
  135.     }
  136.     /**
  137.      * Выдача конфигурационных настроек модулей
  138.      * @return array
  139.      */
  140.     function getModValue({
  141.         return $this->ModValue;
  142.     }
  143.  
  144.     /**
  145.      * Парсер с заменой данных на лету
  146.      * <code>
  147.      * // example:
  148.      * $PHPShopModules->Parser(array('page'=>'market'),'catalog_page_1');
  149.      * </code>
  150.      * @param array $preg массив заменяемых занчений
  151.      * @param string $TemplateName имя шаблона
  152.      * @return string
  153.      */
  154.     function Parser($preg,$TemplateName{
  155.         $file newGetFile($GLOBALS['SysValue']['dir']['templates'].chr(47).$_SESSION['skin'].chr(47).$TemplateName);
  156.  
  157.         // Замена
  158.         foreach($preg as $k=>$v)
  159.             $file str_replace($k$v$file);
  160.  
  161.         $dis newParser($file);
  162.         return @$dis;
  163.     }
  164.  
  165.     /**
  166.      * Перехват событий Hook
  167.      * @param string $class_name имя класса
  168.      * @param string $function_name имя функции
  169.      * @param mixed $obj объект
  170.      * @param mixed $data данные
  171.      */
  172.     function setHookHandler($class_name,$function_name,$obj=false,$data=false{
  173.         global $addHandler;
  174.  
  175.         if(is_array($this->ModValue['hook']))
  176.             foreach($this->ModValue['hook'as $hooks{
  177.  
  178.                 if ((phpversion()*1)>='5.0'$hook=$hooks[strtolower($class_name)];
  179.                 else $hook=$hooks[$class_name];
  180.  
  181.                 if($hook)
  182.                     if(is_file($hook)) {
  183.                         include_once($hook);
  184.  
  185.  
  186.                         if ((phpversion()*1)>='5.0'{
  187.                             if(!empty($addHandler[$function_name])) call_user_func($addHandler[$function_name],$obj,&$data);
  188.                         }
  189.                         else {
  190.                             // Обработка имен функций в нижний регистр
  191.                             foreach($addHandler as $v=>$k$handler[strtolower($v)$k;
  192.                             if(!empty($handler[$function_name])) call_user_func($handler[$function_name],$obj,&$data);
  193.                         }
  194.  
  195.                     }
  196.                     else echo("Ошибка размещения модуля ".$hook);
  197.             }
  198.     }
  199. }
  200.  
  201. ?>

Documentation generated on Mon, 25 Jun 2012 15:09:49 +0400 by phpDocumentor 1.4.3