public function getData($widgetid) { // Определяем количество возвращаемых строк if (isset($this->_options["rowsperpage"]) && (int) $this->_options["rowsperpage"] > 0) { $this->_options["rowsperpage"] = (int) $this->_options["rowsperpage"]; } else { $this->_options["rowsperpage"] = $this->getPerPage(); } // Получаем список материалов $Resource = new Phorm_Resource(); $Resource->setModule($this->_params["module"]); $out = array(); $out["resources"] = $Resource->getResourcesList($this->_options + array("widgetid" => $widgetid, "getdepends" => true)); $out["paginator"] = $Resource->getPaginator(array("perpage" => $this->_options["rowsperpage"], "widgetid" => $widgetid)); return $out; }
/** * Matches a user submitted path with parts defined by a map. Assigns and * returns an array of variables on a successful match. * * @param string $path Path used to match against this routing map * @return array|false An array of assigned values or a false on a mismatch */ public function match($path, $partial = false) { $params = array(); $Mvc = new Phorm_Mvc(); // Проверяем существование идентификатора материала в пути // @todo Сделать возможность конфигурирования паттернов урлов материалов if (preg_match("#^(/.*?)(/([а-яa-z0-9_-]+)\\.html)?\$#iu", $path, $pathinfo)) { // Если мы получили идентификатор материала, то устанавливаем CategoriesController if (isset($pathinfo[3])) { $params["module"] = "default"; $params["controller"] = "categories"; $params["action"] = "index"; $params["resourceid"] = $pathinfo[3]; $params["categorypath"] = $pathinfo[1] == "/" ? "/" : $pathinfo[1] . "/"; $params["categorypath"] = $pathinfo[1] == "/" ? "/" : $pathinfo[1] . "/"; // Иначе получаем модуль, контроллер и действие из родительского math } else { $params = parent::match($path, $partial); // Проверяем существование MVC-ресурса в базе if ($params['mvcinfo'] = $Mvc->getMvcInfo($params)) { $params['WidgetSetId'] = $params['mvcinfo']['widgetssetid']; //print_r($params); return $params; // Если MVC-ресурс не найден, то устанавливаем CategoriesController } else { $params["module"] = "default"; $params["controller"] = "categories"; $params["action"] = "index"; $params["categorypath"] = preg_match("#/\$#", $pathinfo[1]) ? $pathinfo[1] : $pathinfo[1] . "/"; } } } // После всех экзекуций у нас должны остаться только ресурсы для CategoriesControllerа $Categories = new Phorm_Categories(); $Categories->setModule($params["module"]); // Проверяем существование раздела if ($CategoryInfo = $Categories->getCategoryInfoByPath($params["categorypath"])) { $params["categoryinfo"] = $CategoryInfo; $params["WidgetSetId"] = $CategoryInfo["widgetssetid"]; // Если мы на главной странице раздела и есть материал для замещения, то переопределяем идентификатор материала if (!isset($params["resourceid"]) && $CategoryInfo["mainresourceid"] > 0) { $params["resourceid"] = $CategoryInfo["mainresourceid"]; } // Проверяем существование материала в текущем разделе и модуле по его идентификатору if (isset($params["resourceid"])) { $Resource = new Phorm_Resource(); $Resource->setModule($params["module"]); $options = array("categoryid" => $CategoryInfo["categoryid"], "moduleid" => $CategoryInfo["moduleid"]); if ($ResourceInfo = $Resource->getResourceInfo($params["resourceid"], $options)) { $params["module"] = "default"; $params["controller"] = $CategoryInfo["modulecontroller"]; $params["action"] = "view"; $params["resourceinfo"] = $ResourceInfo; $params["mvcinfo"] = $Mvc->getMvcInfo($params); $params["WidgetSetId"] = $ResourceInfo["widgetssetid"]; //print_r($params); return $params; } } else { $params["mvcinfo"] = $Mvc->getMvcInfo($params); //print_r($params); return $params; } } // Все, что не смогло вернуться выше, попадает в ErrorController notfoundAction $params["module"] = "default"; $params["controller"] = "error"; $params["action"] = "notfound"; $params["mvcinfo"] = $Mvc->getMvcInfo($params); $params["WidgetSetId"] = $params["mvcinfo"]["widgetssetid"]; return $params; }