/** * Опубликовать или снять с публикации документы раздела по 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; }
/** * Очистка кеша виджетов раздела * * @return \Datasource_Section */ public function clear_cache() { Datasource_Data_Manager::clear_cache($this->id(), $this->_widget_types); return $this; }