public function __get($column) { if (in_array($column, $this->_i18n_fields)) { $column .= '_' . I18n::lang(); } return parent::__get($column); }
private function _is_jsoncol($col) { if ( array_key_exists($col, $this->_jsoncol) ) return TRUE; if ( array_key_exists($col, $this->_jsoncols) ) { $this->_jsoncol[$col] = (object) array_merge( (array) $this->_jsoncols[$col], (array) json_decode(parent::__get($col) ) ); return TRUE; } return FALSE; }
/** * Handles retrieval of all model values, relationships, and metadata. * * @param string $column Column name * @return mixed */ public function __get($column) { if (array_key_exists($column, $this->_aliased)) { $column = $this->_aliased[$column]; } // Подгрузка options if (isset($this->_foreign_fields[$column]) and !array_key_exists($column, $this->_related)) { $query = DB::query(Database::SELECT, 'SELECT `options`.`value`, `ot`.`label` FROM `options_types` `ot` LEFT JOIN `type_values` `tv` ON (`tv`.`id` = `ot`.`type_id`) LEFT JOIN ( SELECT `option_id`, `value` FROM `pages_string_options` WHERE `page_id` = :page_id UNION ALL SELECT `option_id`, `value` FROM `pages_int_options` WHERE `page_id` = :page_id UNION ALL SELECT `option_id`, `value` FROM `pages_text_options` WHERE `page_id` = :page_id UNION ALL SELECT `option_id`, `value` FROM `pages_float_options` WHERE `page_id` = :page_id ) AS `options` ON (`ot`.`id` = `options`.`option_id`) WHERE `ot`.`table_name` = :table_name AND `ot`.`label` IN :labels'); if (isset($this->id) and $this->id !== NULL) { $query->parameters(array(':page_id' => $this->id, ':table_name' => $this->_table_name, ':labels' => array_keys($this->_foreign_fields))); $data = $query->execute(); foreach ($data as $item) { $this->_related[$item['label']] = $item['value']; } } } if (array_key_exists($column, $this->_related)) { return $this->_related[$column]; } return parent::__get($column); }