Ejemplo n.º 1
0
Archivo: View.php Proyecto: techart/tao
 protected function load_helperes_from_cache($helpers)
 {
     if (!CMS::is_lazy_components()) {
         return;
     }
     if ($this->is_cache_loaded) {
         return;
     }
     $this->is_cache_loaded = true;
     if ($classes = WS::env()->cache->get('cms:viwes:helpers_classes')) {
         foreach ($classes as $name => $class) {
             $helpers->append($class, $name);
         }
     } else {
         Events::add_once('cms.load_components', function () use($helpers) {
             WS::env()->cache->set('cms:viwes:helpers_classes', $helpers->classes, 0);
         });
         CMS::load_components();
     }
 }
Ejemplo n.º 2
0
Archivo: ORM.php Proyecto: techart/tao
 protected function load_cache()
 {
     if (!CMS::is_lazy_components()) {
         return;
     }
     if ($this->is_cache_loaded) {
         return;
     }
     $this->is_cache_loaded = true;
     if ($classes = $this->cache->get('cms:orm:classes')) {
         $this->mappers = array_replace_recursive($classes, $this->mappers, self::$classes);
     } else {
         $self = $this;
         $cache = $this->cache;
         Events::add_once('cms.load_components', function () use($self, $cache) {
             $mappers = array_replace_recursive(CMS_ORM_Root::$classes, $self->get_mappers());
             $cache->set('cms:orm:classes', $mappers, 0);
         });
         CMS::load_components();
     }
 }
Ejemplo n.º 3
0
 public function process_schema()
 {
     // process schema modules
     $modules = $this->schema_modules();
     if (!empty($modules)) {
         foreach ($modules as $name => $module) {
             CMS::cached_run($module);
         }
     }
     // get data from config
     $schema = $this->config('schema');
     $fields = $this->config('fields');
     $tmp1 = (array) $schema;
     $tmp2 = (array) $fields;
     if (empty($tmp1) && empty($tmp2)) {
         return;
     }
     if (empty($fields)) {
         $fields = Core::hash();
     }
     $schema = clone $schema;
     // some time we have fields without info in schema
     // fix it
     $schema_keys = array_keys((array) $schema);
     $fields_keys = array_keys((array) $fields);
     $diff = array_diff($fields_keys, $schema_keys);
     foreach ($diff as $name) {
         $schema->{$name} = array();
     }
     //fields to schema
     Core::load('DB.Schema');
     Core::load('CMS.Fields');
     foreach ($schema as $name => &$table) {
         if (!empty($fields->{$name})) {
             $table_fields = $fields->{$name};
             $table_name = $name;
             CMS_Fields::fields_to_schema($fields->{$name}, $name, $table);
             Events::add_once('db.schema.after_execute.' . $name, function ($tf_schema) use($table_fields, $table_name) {
                 foreach ($table_fields as $tf_name => $tf_data) {
                     $tf_type = CMS_Fields::type($tf_data);
                     $tf_type->process_schema($tf_name, $tf_data, $table_name, $table_fields);
                 }
             });
         }
     }
     // remove empty values
     foreach ($schema as $name => $ttable) {
         if (empty($ttable)) {
             unset($schema->{$name});
         }
     }
     // cache
     $cname = strtolower($this->get_name());
     if (!empty($cname)) {
         $cache_key = 'cms:component:' . $cname . ':schema:' . md5(serialize($schema));
         if ($this->cache->has($cache_key)) {
             return $this;
         }
         $this->cache->set($cache_key, 1, 0);
     }
     // run
     DB_Schema::process_cache($schema);
 }
Ejemplo n.º 4
0
Archivo: CMS.php Proyecto: techart/tao
 protected static function load_mappers_from_cache()
 {
     if (!self::is_lazy_components()) {
         return;
     }
     // include files where reouters defined
     if ($files = WS::env()->cache->get('cms:url_mappers:files')) {
         foreach ($files as $f) {
             include_once $f;
         }
     }
     // get & load routers classes
     if ($classes = WS::env()->cache->get('cms:url_mappers:classes')) {
         foreach ($classes as $name => $class) {
             if (!isset(self::$mappers[$name])) {
                 $reflection = new ReflectionClass($class);
                 self::$mappers[$name] = $reflection->newInstance();
             }
         }
     } else {
         // load components & save routers
         Events::add_once('cms.load_components', function () {
             $mappers = CMS::$mappers;
             $classes = array();
             foreach ($mappers as $name => $mapper) {
                 $classes[$name] = get_class($mapper);
             }
             WS::env()->cache->set('cms:url_mappers:classes', $classes, 0);
             $files = array();
             foreach ($mappers as $mapper) {
                 $reflection = new ReflectionClass($mapper);
                 $files[] = $reflection->getFileName();
             }
             WS::env()->cache->set('cms:url_mappers:files', $files, 0);
         });
         self::load_components();
     }
 }