На время проведения реконструкции сайт переведён в режим "ТОЛЬКО ЧТЕНИЕ" (Read only). Приносим свои извинения!
MaxHub
Полезности по Maxsite CMS

Где хранятся параметры getinfo?

Вопросы-ответы / 9 июля 2014

Появилась необходимость заменить пути и урлы выводимые через function getinfo($info = '') на свои. Где они хранятся в уже установленном CMS и как их заменить при новой установке?

RomanS 3 4033
Комментариев: 3
  1. Функция getinfo описана в файле \application\maxsite\common\common.php. Из её описания видно, что нужные вам значения берутся из глобальной переменной $MSO.

    Поэтому, чтобы вы могли изменить желаемые пути и урлы надо:

    1. убедиться, что в текущей области видимости доступна переменная $MSO. Если она не доступна, то вставить код:
    2. global $MSO;
    3. В отладочном режиме вывести содержимое переменной $MSO:
    4. pr($MSO);
    5. Найти нужное значение массива. Например, вам нужен путь до папки шаблона. За хранение этого пути отвечает переменная $MSO->config['templates_dir']. Названия переменных вполне «говорящие». Так что найти нужную не составит труда. После того, как нашли нужный элемент массива, можно закомментировать отладочный вывод.
    6. Присвоить новое значение выбранной переменной. Здесь всё просто, но рекомендую делать это очень осторожно, ибо некоторые изменения могут повлечь непредсказуемые отрицательные последствия в стабильности работы сайта.
  2. Не совсем то, мне нужен именно тот файл или поле в базе - где храняться эти переменные!

  3. А с чего вы взяли, что они хранятся в базе данных? Рассмотрим, например, как формируется каталог шаблона, который хранится в $MSO->config['templates_dir']. Если поискать по файлам движка, то сперва наткнёмся на \application\libraries\maxsite_lib.php, в котором нас интересует конструктор класса Maxsite_lib:

    public function __construct()
     {
      $CI =& get_instance();
      
      $this->config['site_url'] = $CI->config->config['base_url'];
      $this->config['application_url'] = $this->config['site_url'] . APPPATH;
      $this->config['base_url'] = $this->config['site_url'] . APPPATH . 'maxsite/';
      $this->config['common_url'] = $this->config['base_url'] . 'common/';
      $this->config['templates_url'] = $this->config['base_url'] . 'templates/';
      $this->config['plugins_url'] = $this->config['base_url'] . 'plugins/';
      $this->config['admin_plugins_url'] = $this->config['base_url'] . 'admin/plugins/';
      $this->config['uploads_url'] = $this->config['site_url'] . 'uploads/';
      $this->config['admin_url'] = $this->config['base_url'] . 'admin/';
      $this->config['site_admin_url'] = $this->config['site_url'] . 'admin/';
      
      $this->config['base_dir'] = FCPATH . APPPATH . 'maxsite/';
      $this->config['application_dir'] = FCPATH . APPPATH;
      $this->config['uploads_dir'] = FCPATH . 'uploads/';
      
      $this->config['cache_dir'] = $CI->config->config['cache_path'];
      if (!$this->config['cache_dir'])
       $this->config['cache_dir'] = FCPATH . 'application/cache/';  
      
      $this->config['common_dir'] = $this->config['base_dir'] . 'common/';
      $this->config['templates_dir'] = $this->config['base_dir'] . 'templates/';
      $this->config['plugins_dir'] = $this->config['base_dir'] . 'plugins/';
      $this->config['admin_plugins_dir'] = $this->config['base_dir'] . 'admin/plugins/';
      $this->config['admin_dir'] = $this->config['base_dir'] . 'admin/';
      $this->config['config_file'] = $this->config['base_dir'] . 'mso_config.php';
      
      $this->config['cache_time'] = 86400; // в секундах = 24 часа
      $this->config['template'] = 'default';
      
      $this->config['secret_key'] = $this->config['site_url'];
      $this->config['remote_key'] = '0'; // ключ удаленного постинга
      
      # контроль. не использовать в проектах!
      # константы определяет CodeIgniter
      # меняются от версии
      $this->config['FCPATH'] = FCPATH; 
      $this->config['EXT'] = EXT; 
      $this->config['SELF'] = SELF; 
      $this->config['BASEPATH'] = BASEPATH; 
      $this->config['APPPATH'] = APPPATH; 
       
     }

    Там же в файл есть код:

    if ( !isset($MSO) ) $MSO = new Maxsite_lib();

    Из кода видно, что глобальная переменная $MSO формируется указанным выше конструктором, а значит нужная переменная $MSO->config['templates_dir'] формируется кодом:

    $this->config['base_dir'] . 'templates/';

    Т.е. берётся не из базы данных, а вычисляется на основе переменой $this->config['base_dir']. Если проследить дальше, где и как формируется эта переменная, то видим код:

    $this->config['base_dir'] = FCPATH . APPPATH . 'maxsite/';

    Следовательно дальше нам нужно найти код формирования констант FCPATH и APPPATH. Их первое упоминание находим в корневом файле index.php. В частности для FCPATH:

    // Path to the front controller (this file)
     define('FCPATH', str_replace(SELF, '', __FILE__));

    Закончить поиск источника вы можете сами в том же файле. Думаю, что вы и сами увидите, что путь сформирован строковыми вычислениями на основе глобальных PHP констант типа __FILE__.

    Так как вы не предоставили списка конкретных нужных путей, то на этом я остановлю свои изыскания. Буду рад, если мой ответ вам помог.