Пример #1
0
 /**
  * Опубликовать или снять с публикации документы раздела по ID
  * 
  * @param array $ids
  * @param boolean $value
  * @return \DataSource_Hybrid_Factory
  */
 public function set_published(array $ids, $value)
 {
     if (empty($ids)) {
         return $this;
     }
     $res = DB::select('dsh.id', 'dsh.ds_id')->from(array('dshybrid', 'dsh'))->join(array('datasources', 'dss'), 'left')->on('dsh.ds_id', '=', 'dss.id')->where('dsh.id', 'in', $ids)->execute();
     $docs = array();
     foreach ($res as $row) {
         $docs[$row['ds_id']][] = $row['id'];
     }
     if (!empty($docs)) {
         $ds_ids = array_keys($docs);
         foreach ($ds_ids as $ds_id) {
             $ds = Datasource_Data_Manager::load($ds_id);
             $ids = $docs[$ds_id];
             if ($value === TRUE) {
                 $ds->add_to_index($ids);
             } else {
                 $ds->remove_from_index($ids);
             }
             DB::update('dshybrid')->set(array('published' => (int) $value, 'updated_on' => date('Y-m-d H:i:s')))->where('ds_id', '=', $ds_id)->where('id', 'in', $ids)->execute();
             unset($ds, $ids, $docs);
             Datasource_Data_Manager::clear_cache($ds_id, self::$widget_types);
         }
     }
     return $this;
 }
Пример #2
0
 /**
  * Очистка кеша виджетов раздела
  * 
  * @return \Datasource_Section
  */
 public function clear_cache()
 {
     Datasource_Data_Manager::clear_cache($this->id(), $this->_widget_types);
     return $this;
 }