public function get_date_fields() { $fields = DataSource_Hybrid_Field_Factory::get_section_fields($this->ds_id, array('primitive_date', 'primitive_datetime')); $return = array('created_on' => __('Created on')); foreach ($fields as $field) { $return[$field->name] = $field->header; } return $return; }
public function get_doc_ids() { $data = array('ID'); $fields = DataSource_Hybrid_Field_Factory::get_section_fields($this->ds_id); foreach ($fields as $field) { if ($field->use_as_document_id()) { $data[$field->id] = $field->header; } } return $data; }
/** * * @return array */ public function active_fields() { $section_fields = DataSource_Hybrid_Field_Factory::get_section_fields($this->_section->id()); $fields = array(); foreach ($section_fields as $key => $field) { if ((bool) $field->in_headline === FALSE) { continue; } $fields[$field->id] = $field; } return $fields; }
/** * Получение списка системных полей * * @return array array([id] => [DataSource_Hybrid_Field]) */ public function get_system_fields() { if ($this->_sys_fields === NULL) { $this->_sys_fields = array('id' => DataSource_Hybrid_Field_Factory::get_field_from_array(array('ds_id' => $this->ds_id, 'type' => 'primitive_integer', 'name' => 'ds.id', 'header' => 'ID', 'system' => TRUE)), 'header' => DataSource_Hybrid_Field_Factory::get_field_from_array(array('ds_id' => $this->ds_id, 'type' => 'primitive_string', 'name' => 'd.header', 'header' => __('Header'), 'system' => TRUE)), 'created_on' => DataSource_Hybrid_Field_Factory::get_field_from_array(array('ds_id' => $this->ds_id, 'type' => 'primitive_datetime', 'name' => 'd.created_on', 'header' => __('Date created'), 'system' => TRUE)), 'published' => DataSource_Hybrid_Field_Factory::get_field_from_array(array('ds_id' => $this->ds_id, 'type' => 'primitive_boolean', 'name' => 'd.published', 'header' => __('Published'), 'system' => TRUE))); } return $this->_sys_fields; }
/** * Удаление полей раздела * * @see DataSource_Section_Hybrid::remove() * * @return \DataSource_Hybrid_Record */ public function destroy() { DataSource_Hybrid_Field_Factory::remove_fields_by_key($this, array_keys($this->fields())); return $this; }
/** * Загрузка документов раздела в формате для индексации * * В этом методе происходит загрукзка индексируемых полей документа * + поля описания документа * * @param array $id * @return array array([ID] => array('id', 'header', 'content', 'intro', ....), ...) */ public function get_indexable_documents(array $id = NULL) { $result = array(); if (!empty($this->search_intro_field)) { $this->search_index_fields[] = $this->search_intro_field; } $this->search_index_fields = array_unique($this->search_index_fields); $fields = $this->search_index_fields; if (!empty($this->search_index_doc_id_fields)) { foreach ($this->search_index_doc_id_fields as $field) { $fields[] = $field; } } $agent = DataSource_Hybrid_Agent::instance($this->id(), $this->id()); $query = $agent->get_query_props(array_unique($fields)); if (is_array($id) and !empty($id)) { $query->where('d.id', 'in', $id); } else { if (!empty($id)) { $query->where('d.id', '=', (int) $id); } } $rows = $query->execute()->as_array(); foreach ($rows as $row) { $doc_id = $row['id']; $result[$doc_id] = array('id' => $row['id'], 'intro' => Arr::get($row, $this->search_intro_field), 'header' => $row['header']); $content = ''; $params = array(); foreach ($this->search_index_fields as $field) { $content .= ' ' . (string) Arr::get($row, $field); } foreach ($this->search_index_doc_id_fields as $field) { $field_name = DataSource_Hybrid_Field_Factory::get_field_key($field); if (empty($field_name)) { continue; } $params[$field_name] = Arr::get($row, $field); } $result[$doc_id]['content'] = $content; $result[$doc_id]['params'] = $params; } return $result; }
<?php $fields = DataSource_Hybrid_Field_Factory::get_section_fields($widget->ds_id); $header = empty($header) ? __('Fetched document fields') : $header; $fetch_widgets = !empty($fetch_widgets) ? (bool) $fetch_widgets : TRUE; ?> <div class="panel-heading"> <span class="panel-title"><?php echo UI::icon('th-list'); ?> <?php echo $header; ?> </span> </div> <table id="section-fields" class="table table-striped"> <colgroup> <col width="30px" /> <col width="100px" /> <col width="200px" /> <col /> </colgroup> <tbody> <tr> <td class="f"> <?php echo Form::checkbox('field[]', 'id', TRUE, array('disabled' => 'disabled')); ?> </td> <td class="sys">ID</td> <td>ID</td>
/** * * @return boolean */ public function is_indexed() { return DataSource_Hybrid_Field_Factory::is_index($this); }
/** * * @return array */ public function get_similar_fields() { $fields = DataSource_Hybrid_Field_Factory::get_section_fields($this->ds_id, array('file_image')); unset($fields[$this->id]); $options = array(); foreach ($fields as $field) { $options[$field->id] = $field->name; } return $options; }
/** * * @return array */ protected function _fetch_fields() { $fields = array('csrf', 'id', 'header', 'published', 'meta_title', 'meta_keywords', 'meta_description'); $ds_fields = DataSource_Hybrid_Field_Factory::get_section_fields($this->ds_id); foreach ($ds_fields as $field) { $fields[] = $field->name; } $data = array(); foreach ($fields as $field) { $data[$field] = $this->_get_field_value($field); } if (empty($data['meta_title'])) { $data['meta_title'] = ''; } if (empty($data['meta_keywords'])) { $data['meta_keywords'] = ''; } if (empty($data['meta_description'])) { $data['meta_description'] = ''; } return $data; }
protected function _get_field() { $field_id = $this->param('id', NULL, TRUE); $field = DataSource_Hybrid_Field_Factory::get_field($field_id); if ($field === NULL) { throw HTTP_API_Exception::factory(API::ERROR_UNKNOWN, 'Field not found!'); } return $field; }
private function _edit($field) { try { $field->set($this->request->post()); DataSource_Hybrid_Field_Factory::update_field(clone $field, $field); } catch (Validation_Exception $e) { Session::instance()->set('post_data', $this->request->post()); Messages::errors($e->errors('validation')); $this->go_back(); } catch (Kohana_Exception $e) { Messages::errors($e->getMessage()); $this->go_back(); } Session::instance()->delete('post_data'); // save and quit or save and continue editing? if ($this->request->post('commit') !== NULL) { $this->go(Route::get('datasources')->uri(array('directory' => 'datasources', 'controller' => 'section', 'action' => 'edit', 'id' => $field->ds_id))); } else { $this->go_back(); } }