public static function dispatch_ajax() { $id = joosRequest::int('id', 0); $page = joosRequest::int('page', false, $_GET); $page = $page ? $page : 0; $id = $id ? $id : $page; $task = joosRequest::param('task', 'index'); $option = joosRequest::param('option'); $class = 'actionsAjaxAdmin' . ucfirst($option); JDEBUG ? joosDebug::add($class . '::' . $task) : null; // в контроллере можно прописать общие действия необходимые при любых действиях контроллера - они будут вызваны первыми, например подклбчение можделей, скриптов и т.д. method_exists($class, 'action_before') ? call_user_func_array($class . '::action_before', array()) : null; $events_name = sprintf('ajax.controller.admin.*'); joosEvents::has_events($events_name) ? joosEvents::fire_events($events_name, $class, $task) : null; $events_name = sprintf('ajax.controller.admin.%s.*', $class); joosEvents::has_events($events_name) ? joosEvents::fire_events($events_name, $task) : null; $events_name = sprintf('ajax.controller.admin.%s.%s', $class, $task); joosEvents::has_events($events_name) ? joosEvents::fire_events($events_name) : null; if (method_exists($class, $task)) { $result = call_user_func_array($class . '::' . $task, array($option, $id, $page, $task)); } else { $result = call_user_func_array($class . '::index', array($option, $id, $page, $task)); } // контроллер может содержать метод вызываемый после окончания работы основного контроллера, но тоже вызовется method_exists($class, 'action_after') ? call_user_func_array($class . '::action_after', array($task, $result)) : null; if (is_array($result)) { echo json_encode($result); } elseif (is_string($result)) { echo $result; } }
/** * Загрузка данных в модель непосредственно из БД по значению ключевого поля * В случае успешного выполнения заполняет поля модели значениями из БД выбранными по ключевому полю * * @param integer $oid значение уникального ключевого поля, по которому необходимо делать выборку в БД * * @return boolean результат заполнения свойств модели */ public function load($oid) { // сброс установок для обнуления назначенных ранее свойств объекта ( проблема с isset($obj->id) ) $this->reset(); $query = 'SELECT * FROM ' . $this->_tbl . ' WHERE ' . $this->_tbl_key . ' = ' . $this->_db->get_quoted($oid); $result = $this->_db->set_query($query)->load_object($this); $events_name = 'model.on_load.' . $this->get_class_name(); joosEvents::has_events($events_name) ? joosEvents::fire_events($events_name, $result, $this) : null; return $result; }