Beispiel #1
0
 function make_urls()
 {
     if (core::in_editor()) {
         $this->append_urls('children', sprintf('?m=sat&c=menu&pid=%d', $this->id));
         $this->append_urls('self', sprintf('?m=sat&c=menu&pid=%d', $this->pid));
     }
 }
Beispiel #2
0
 /**
  * Build filter
  * @param IAbs_Collection object
  * @param string base url
  */
 function __construct(IAbs_Collection $collection, $base_url = false)
 {
     $this->set_collection($collection);
     if (false !== $base_url) {
         $this->base_url = $base_url;
     }
     if (core::in_editor()) {
         $this->url_template = "&start={page}";
     }
     $this->config = new collection_params($this->config ? $this->config : null);
     $this->configure();
 }
Beispiel #3
0
 function make_urls()
 {
     if (core::in_editor()) {
         $this->append_urls('parent', '?m=extrafs&c=group');
     }
 }
Beispiel #4
0
 /**
  * init0 
  */
 function init0()
 {
     core::dprint('[users] init0');
     // link
     // $this->auth = core::lib('auth');
     $return = parent::init0();
     $this->_cp_links = array();
     // lookup links array
     $this->_cp_links = $this->load_cp_links();
     // kick acls
     if (core::in_editor() && $this->with_acls()) {
         $this->get_acl_handle();
     }
     /**
      * Links for logged users
      */
     if ($this->auth->logged_in()) {
         $admin = 'admin' == $this->get_current_user()->get_level();
         if ($admin) {
             $this->_cp_links['admin'] = array('title' => $this->translate('cp_admin'), 'url' => '/editor/');
         }
         /*
         if ($this->get_current_user()->level >= 50)
             $this->_cp_links['mod'] =  array('title' => $this->translate('cp_mod')      , 'url' => '/users/cp/mod/');  
         */
         //    $this->_cp_links['pms'] =  array('title' => $this->translate('cp_pms')      , 'url' => '/users/cp/pms/');
     }
     return $return;
 }
Beispiel #5
0
 /**
  * Create or retrieve object bu class
  * 
  * module name prefixed with {@see loader::CLASS_PREFIX}
  * 
  * @param string  module_name
  * @param array   config ( order_sql , where_sql, limit_sql )
  *                tpl_table - template name block
  * @param boolean standalone (регистрировать в системе или нет)
  * 
  * @return object (&by ref)
  * 
  * @throws core_exception
  */
 function class_register($module, $config = array(), $standalone = false)
 {
     $tmp = false;
     /*   check modules path
               if yes, make namespace for it
          */
     $path_prefix = $this->root_dir;
     /* standalone class support
           without register in $core->classes db
           
           class naming:
           /classes/module/
                 +- collection (module_collection)
                 +- item (module_item)
        */
     $m_class = $module . '_collection';
     // chroot support
     // [tf]obsolete: auto chroot to module
     $f_class_path = $path_prefix . 'classes/' . $module . '/';
     $f_class = array($f_class_path . 'collection' . loader::DOT_PHP, $f_class_path . 'item' . loader::DOT_PHP);
     if (!class_exists($m_class)) {
         if (!fs::file_exists($f_class[0]) || !fs::file_exists($f_class[1])) {
             core::dprint("[color=red][ERROR CLASS_REGISTER] file not found; [/color] {$module} ({$f_class_path})");
             core::dprint($f_class);
             throw new core_exception("Class register failed : {$module} in " . $path_prefix, core::E_ERROR);
             return $tmp;
             // false;
         }
         require_once $f_class[0];
         require_once $f_class[1];
     }
     if (!$standalone && isset($this->classes[$module])) {
         return $this->classes[$module];
     }
     /*   use prefix
               render to {$tpl_table}
               sql from  {$table}
          */
     $table_ = $module;
     $config['prefix'] = core::get_instance()->get_cfg_var(array('database', 'prefix'));
     $table_ = $config['prefix'] . $table_;
     // if not passed, set to module tag
     if (!isset($config['tpl_table'])) {
         $config['tpl_table'] = $module;
     }
     // new one
     $config_ = array('load' => true, 'table' => $table_, 'root' => $f_class_path);
     if ($config !== false) {
         $config_ = array_merge($config_, $config);
     }
     // preload fix
     if (isset($config['no_preload'])) {
         unset($config_['load']);
     }
     // In editor, check for class with 'editor_' prefix
     if (core::in_editor()) {
         $editor_class = 'editor_' . $m_class;
         if (class_exists($editor_class)) {
             $m_class = $editor_class;
         }
         $config_['in_editor'] = true;
     }
     $tmp = new $m_class($config_);
     if ($standalone) {
         return $tmp;
     }
     $this->classes[$module] = $tmp;
     return $this->classes[$module];
 }
Beispiel #6
0
 /**
     кэш только для основного домена.
     на алиасах не работает! 
 */
 function init91()
 {
     if (core::in_editor() || loader::in_ajax() || loader::in_shell()) {
         return;
     }
     // @todo cancel on errors!
     if (tf_exception::get_last_exception()) {
         return;
     }
     // check current site
     if (!($tsite = $this->get_current_site()) || !$tsite->is_staticable()) {
         return;
     }
     /* save static cache!
           skip logged in users, debug mode
        */
     if ($this->get_core()->cfg('sat_use_static') && !core::lib('auth')->logged_in() && !core::is_debug()) {
         $file = $this->get_static_node_path($tnode = $this->get_router()->get_current_node());
         $pagination_filter = $this->get_router()->get_filter('pagination');
         if ($pagination_filter && ($page = $pagination_filter->get_start())) {
             $file = str_replace('/index.html', "/page/{$page}/index.html", $file);
         }
         core::dprint(array('generate staic : %s', $file), core::E_DEBUG4);
         if (!file_exists($file)) {
             $dir = dirname($file);
             if (!is_dir($dir)) {
                 mkdir($dir, 0777, true);
             }
             file_put_contents($file, core::lib('renderer')->get_buffer());
         }
     }
 }
Beispiel #7
0
 /**
  * Set root
  */
 static function set_template($template)
 {
     if (core::in_editor()) {
         self::$template_dir = loader::get_public() . loader::DIR_EDITOR . loader::DIR_TEMPLATES;
     } else {
         self::$template_dir = loader::get_public() . loader::DIR_TEMPLATES . $template;
     }
     self::$parser->template_dir = self::$template_dir;
     /*
      * If using template, compile directory must exists /cache/tpl/{template}
      */
     $c_postfix = core::in_editor() ? 'editor/' : $template . '/';
     self::$parser->compile_dir = loader::get_root(loader::DIR_TEMPLATES_C . $c_postfix);
     self::$parser->cache_dir = loader::get_root(loader::DIR_TEMPLATES_C . $c_postfix);
     if (!file_exists(self::$parser->compile_dir)) {
         mkdir(self::$parser->compile_dir, 0777, true);
         // chmod this right
     }
     /*
     if (!file_exists(self::$parser->cache_dir)) {            
         mkdir(self::$parser->cache_dir, 0777, true); // chmod this right
     }
     */
 }
Beispiel #8
0
 function make_urls()
 {
     if (core::in_editor()) {
         ///extrafs/field/
         $this->append_urls('fields', sprintf('?m=extrafs&c=field&gid=%d', $this->id));
     }
 }
 /**
  * Apply a sets Filter 
  * 
  * Remember: in editor data auto rendered thru render2edt()!
  * 
  * @throws collection_filter_exception
  * 
  * @return object {pagination, filters, data}
  */
 function apply()
 {
     // prepend config
     // make shure no "limit sql" in it!
     $config = $this->config;
     // where sql prepare
     if (isset($config['where_sql'])) {
         $where_sql_ = $this->collection->get_cfg_var('where_sql');
         if (!empty($where_sql_)) {
             $config['where_sql'] = $where_sql_ . ' AND ' . $config['where_sql'];
         }
     }
     // map filter config to collection
     foreach ($config as $k => $v) {
         $this->collection->set_cfg_var($k, $v);
     }
     // apply user filters
     $this->collection_filters();
     $this->count = $this->collection->count_sql();
     core::dprint('[FILTER] Apply for ' . $this->collection->get_domain() . ' x ' . $this->count);
     if ($this->pagination_limit * $this->pagination_start > $this->count + $this->pagination_limit) {
         throw new collection_filter_exception('Invalid range ' . $this->pagination_limit * $this->pagination_start . ' > ' . $this->count);
     }
     // real page 0=1, 2...
     $real_page = $this->pagination_start > 1 ? $this->pagination_start - 1 : 0;
     $this->collection->set_limit($this->pagination_limit, $real_page * $this->pagination_limit);
     $this->collection->load();
     // generate_pagination
     $this->pagination = $this->paginate($this->base_url, $this->count, $this->pagination_limit, $this->pagination_start);
     return core::in_editor() ? $this->render2edt() : $this->render();
 }
Beispiel #10
0
 /**
  * Final output     
  * called from @see core::shutdown
  */
 public function output()
 {
     /** give up if in crontab */
     if (loader::in_shell()) {
         return false;
     }
     $core = core::get_instance();
     if (!empty($this->_content_type) && !headers_sent()) {
         header('Content-Type: ' . $this->_content_type . '; charset=' . $core->get_cfg_var('charset'));
     }
     // disabled
     if ($this->_disable_output) {
         return false;
     }
     $cfg_data = array();
     // initial
     $this->output_begin();
     if (core::in_editor()) {
         $this->output_editor($tpl);
     } else {
         $tpl = $this->page_template;
     }
     // check message
     if ($msg = $core->get_message()) {
         if ($temp_tpl = $this->render_message($msg)) {
             $tpl = $temp_tpl;
         }
     }
     // no template
     if (empty($tpl)) {
         core::dprint('render with empty page template assigned');
         //throw new renderer_exception('render with empty page template assigned');
     }
     /*
         Throwing exception here 
         Will result in 
         Fatal error: Exception thrown without a stack frame in Unknown on line 0
     */
     if (false == $this->get_main_template()) {
         core::dprint('render with empty main template assigned');
         // throw new renderer_exception('render with empty main template assigned');
     }
     // append
     $tpl .= loader::DOT_TPL;
     $this->output_end($tpl);
 }
Beispiel #11
0
 /**
  * Final output     
  * called from @see core::shutdown
  */
 public function output()
 {
     if (loader::in_ajax()) {
         return $this->output_ajax();
     }
     /** give up if in crontab */
     if (loader::in_shell()) {
         return false;
     }
     $core = core::get_instance();
     core::dprint('renderer::ouput', core::E_DEBUG0);
     $this->content_type_header();
     // disabled
     if ($this->_disable_output) {
         return false;
     }
     $cfg_data = array();
     // initial
     $this->output_begin();
     if (core::in_editor()) {
         $this->output_editor();
     }
     $tpl = $this->page_template;
     // check message
     if ($msg = $core->get_message()) {
         $this->render_message($msg, $core->get_message_data());
     } elseif (!empty($this->_message)) {
         $this->render_message($this->_message['message'], @$this->_message['data']);
     }
     // no template
     if (empty($tpl)) {
         core::dprint('render with empty page template assigned');
         //throw new renderer_exception('render with empty page template assigned');
     }
     /*
         Throwing exception here 
         Will result in 
         Fatal error: Exception thrown without a stack frame in Unknown on line 0
     */
     if (false == $this->get_main_template()) {
         core::dprint('render with empty main template assigned');
         // throw new renderer_exception('render with empty main template assigned');
     }
     $this->output_end($tpl);
 }