Ejemplo n.º 1
0
 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;
 }
Ejemplo n.º 2
0
 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;
 }
Ejemplo n.º 3
0
 /**
  * 
  * @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;
 }
Ejemplo n.º 4
0
 /**
  * Получение списка системных полей
  * 
  * @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;
 }
Ejemplo n.º 5
0
 /**
  * Удаление полей раздела
  * 
  * @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;
 }
Ejemplo n.º 6
0
 /**
  * Загрузка документов раздела в формате для индексации
  * 
  * В этом методе происходит загрукзка индексируемых полей документа 
  * + поля описания документа
  * 
  * @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;
 }
Ejemplo n.º 7
0
<?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>
Ejemplo n.º 8
0
 /**
  * 
  * @return boolean
  */
 public function is_indexed()
 {
     return DataSource_Hybrid_Field_Factory::is_index($this);
 }
Ejemplo n.º 9
0
 /**
  * 
  * @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;
 }
Ejemplo n.º 10
0
 /**
  * 
  * @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;
 }
Ejemplo n.º 11
0
 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;
 }
Ejemplo n.º 12
0
 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();
     }
 }