示例#1
0
文件: meta.php 项目: ZerGabriel/cms-1
 /**
  * 
  * @param string $key
  * @param mixed $value
  * @param integer $user_id
  * @return boolean
  */
 public static function set($key, $value, $user_id = NULL)
 {
     if ($user_id === NULL) {
         $user_id = Auth::get_id();
     }
     self::_load($user_id);
     $value = Kohana::serialize($value);
     if (isset(self::$_cache[$user_id][$key])) {
         $status = (bool) DB::update('user_meta')->value('value', $value)->where('key', '=', $key)->where('user_id', '=', $user_id === 0 ? NULL : $user_id)->execute();
     } else {
         $status = (bool) DB::insert('user_meta')->columns(array('key', 'value', 'user_id'))->values(array($key, $value, $user_id === 0 ? NULL : $user_id))->execute();
     }
     self::_clear_cache($user_id);
     return $status;
 }
示例#2
0
 /**
  * Writes the passed config for $group
  *
  * Returns chainable instance on success or throws 
  * Kohana_Config_Exception on failure
  *
  * @param string      $group  The config group
  * @param string      $key    The config key to write to
  * @param array       $config The configuration to write
  * @return boolean
  */
 public function write($group, $key, $config)
 {
     $config = Kohana::serialize($config);
     // Check to see if we've loaded the config from the table already
     if (isset($this->_loaded_keys[$group][$key])) {
         $this->_update($group, $key, $config);
     } else {
         // Attempt to run an insert query
         // This may fail if the config key already exists in the table
         // and we don't know about it
         try {
             $this->_insert($group, $key, $config);
         } catch (Database_Exception $e) {
             // Attempt to run an update instead
             $this->_update($group, $key, $config);
         }
     }
     return TRUE;
 }
示例#3
0
 /**
  * Обновление виджета
  * При обновлении виджета происходит вызов метода clear_cache() 
  * для очистки кеша у виджета
  * 
  * @param Widget_Decorator $widget
  * @return integer
  * @throws HTTP_Exception_404
  */
 public static function update(Model_Widget_Decorator $widget)
 {
     $orm_widget = ORM::factory('widget', $widget->id)->values(array('type' => $widget->type(), 'name' => $widget->name, 'template' => $widget->template, 'description' => $widget->description, 'code' => Kohana::serialize($widget)))->update();
     $widget->clear_cache();
     return $orm_widget->id;
 }
示例#4
0
文件: user.php 项目: ZerGabriel/cms-1
 /**
  *  
  * @return string
  */
 public function serialize()
 {
     $parameters = array('_primary_key_value', '_object', '_changed', '_loaded', '_saved', '_sorting');
     // Store only information about the object
     foreach ($parameters as $var) {
         $data[$var] = $this->{$var};
     }
     return Kohana::serialize($data);
 }
示例#5
0
 /**
  * Обновление данных поля в БД
  * 
  * Данные которые можно обновить:
  * 
  * * Название {@see header}
  * * Ключ {@see name}
  * * Параметры {@see _props}
  * * Позиция {@see position}
  * 
  * @see DataSource_Hybrid_Field_Factory::update_field()
  * 
  * @return array DB::update
  */
 public function update()
 {
     if (!$this->has_access_edit()) {
         throw new DataSource_Hybrid_Exception_Field('You do not have permission to update field');
     }
     $this->validate();
     return DB::update($this->table)->set(array('header' => $this->header, 'props' => Kohana::serialize($this->_props), 'position' => (int) $this->position, 'name' => $this->name, 'from_ds' => (int) $this->from_ds))->where('id', '=', $this->id)->execute();
 }
示例#6
0
 /**
  * Сохранение параметров плагина в БД в сериализованном виде
  * 
  * @return \Plugin_Decorator
  */
 public function save_settings()
 {
     $status = (bool) DB::update(Plugin::TABLE_NAME)->set(array('settings' => Kohana::serialize($this->settings())))->where('id', '=', $this->id())->execute();
     return $this->_clear_cache();
 }
示例#7
0
 /**
  * Обновление раздела.
  * 
  * При сохранении раздела в БД происходит его сериализация и сохарение данных
  * в поле "code". Список полей, которые не должын попадать в БД указывается в 
  * методе {@see _serialize()}
  * 
  * @param array $values
  * @throws DataSource_Exception_Section
  * @return boolean
  */
 public function update()
 {
     if (!$this->has_access_edit()) {
         throw new DataSource_Exception_Section('You do not have permission to update section');
     }
     if (!$this->loaded()) {
         return FALSE;
     }
     DB::update('datasources')->set(array('indexed' => $this->_is_indexable, 'name' => $this->name, 'description' => $this->description, 'updated_on' => date('Y-m-d H:i:s'), 'created_by_id' => $this->_created_by_id, 'folder_id' => $this->_folder_id, 'code' => Kohana::serialize($this)))->where('id', '=', $this->_id)->execute();
     $this->update_size();
     Observer::notify('datasource_after_save', $this->_id);
     return TRUE;
 }
示例#8
0
 public function update($module, $id, $title, $content = '', $annotation = '', $params = array())
 {
     $id = (int) $id;
     list($header, $content) = $this->_prepare_data($title, $content);
     return (bool) DB::update('search_index')->set(array('title' => $title, 'header' => $header, 'content' => $content, 'annotation' => $annotation, 'updated_on' => date('Y-m-d H:i:s'), 'params' => Kohana::serialize($params)))->where('module', '=', $module)->where('id', '=', $id)->execute();
 }
示例#9
0
 /**
  * Запись в БД данных в таблицу config
  * Значения по умолчанию устанавливаются в конфиг файле `installer`
  * 
  * @param array $post
  */
 protected function _create_site_config(array $post)
 {
     $config_values = $this->_config->get('default_config', array());
     $config_values['site']['title'] = Arr::get($post, 'site_name');
     $config_values['site']['date_format'] = Arr::get($post, 'date_format');
     $config_values['site']['default_locale'] = Arr::get($post, 'locale');
     $config_values['email']['default'] = Arr::get($post, 'email');
     $insert = DB::insert('config', array('group_name', 'config_key', 'config_value'));
     foreach ($config_values as $group => $data) {
         foreach ($data as $key => $config) {
             $insert->values(array($group, $key, Kohana::serialize($config)));
         }
     }
     $insert->execute($this->_db_instance);
 }
示例#10
0
 /**
  * Активация плагина
  * 
  * При инсталляции плагина происходит добавление плагина в `Kohana::modules()`,
  * запуск SQL из файла `plugin_path/install/schema.sql` и запуск файла
  * `plugin_path/install.php`
  * 
  * @observer plugin_install
  * @return \Plugin_Decorator
  */
 public function activate()
 {
     if (!$this->is_installable()) {
         throw new Plugin_Exception('Plugin can not be installed. The required version of the CMS: :required_version. Version of your CMS is: :current_version.', array(':required_version' => $this->required_cms_version(), ':current_version' => CMS_VERSION));
     }
     $data = array('id' => $this->id(), 'title' => $this->title(), 'settings' => Kohana::serialize($this->settings()));
     $result = DB::insert(self::TABLE_NAME)->columns(array_keys($data))->values($data)->execute();
     Kohana::modules(Kohana::modules() + array('plugin_' . $this->id() => PLUGPATH . $this->id()));
     $this->_clear_cache();
     $schema_file = $this->path() . 'install' . DIRECTORY_SEPARATOR . 'schema.sql';
     if (file_exists($schema_file)) {
         Database_Helper::insert_sql(file_get_contents($schema_file));
     }
     $install_file = $this->path() . 'install' . EXT;
     if (file_exists($install_file)) {
         Kohana::load($install_file);
     }
     Observer::notify('plugin_install', $this->id());
     $this->_on_activate();
     Plugins::activate($this);
 }