public function preparePage() { $this->addBreadcrumb($this->__('Home'), Mage::getBaseUrl(), $this->__('Go to Home Page'))->addBreadcrumb(Mage::getStoreConfig('kbase/general/title'), AW_Kbase_Helper_Url::getUrl(AW_Kbase_Helper_Url::URL_TYPE_MAIN), $this->__('Go to %s homepage', Mage::getStoreConfig('kbase/general/title'))); $category = $this->getCategory(); if ($category) { $this->addBreadcrumb($category->getCategoryName(), AW_Kbase_Helper_Url::getUrl(AW_Kbase_Helper_Url::URL_TYPE_CATEGORY, $category->getData())); } $article = $this->getArticle(); $this->addBreadcrumb($article->getArticleTitle(), false); $headBlock = $this->getLayout()->getBlock('head'); $breadcrumbs = $this->getChild('kbase_breadcrumbs'); if ($headBlock) { $title = $article->getMetaTitle(); if ($title) { $headBlock->setTitle($title); } elseif ($breadcrumbs) { $headBlock->setTitle($breadcrumbs->getPageTitle()); } $keywords = $article->getMetaKeywords(); if ($keywords) { $headBlock->setKeywords($keywords); } $description = $article->getMetaDescription(); if ($description) { $headBlock->setDescription($description); } } return $this; }
public function match(Zend_Controller_Request_Http $request) { if (!Mage::app()->isInstalled()) { Mage::app()->getFrontController()->getResponse()->setRedirect(Mage::getUrl('install'))->sendResponse(); exit; } return AW_Kbase_Helper_Url::matchUrl($request); }
public function saveAction() { $session = Mage::getSingleton('adminhtml/session'); if ($data = $this->getRequest()->getPost()) { try { $id = $this->getRequest()->getParam('id'); // checking store IDs if (!isset($data['category_store_ids'])) { $data['category_store_ids'] = Mage::getSingleton('core/store')->getGroup()->getStoreIds(); } if (!is_array($data['category_store_ids'])) { $data['category_store_ids'] = implode(',', $data['category_store_ids']); } if (in_array(0, $data['category_store_ids'])) { $data['category_store_ids'] = array_keys(Mage::app()->getStores(false)); } // checking URL key if (!isset($data['category_url_key']) || !$data['category_url_key']) { $data['category_url_key'] = $data['category_name']; } $data['category_url_key'] = AW_Kbase_Helper_Url::nameToUrlKey($data['category_url_key']); $model = Mage::getModel('kbase/category')->setData($data)->setId($id); if ($model->isUrlKeyUsed()) { $session->addError($this->__('URL key is not unique within category store views')); $session->setKBaseCategoryData($data); $this->_redirect('*/*/edit', array('id' => $id)); return; } $model->save(); $session->addSuccess($this->__('Category was successfully saved')); $session->setKBaseCategoryData(false); if ($this->getRequest()->getParam('back')) { $this->_redirect('*/*/edit', array('id' => $model->getId())); return; } $this->_redirect('*/*/'); return; } catch (Exception $e) { Mage::logException($e); $session->addError($e->getMessage()); $session->setKBaseCategoryData($data); $this->_redirect('*/*/edit', array('id' => $this->getRequest()->getParam('id'))); return; } } else { $session->addError($this->__('Unable to find an category to save')); $this->_redirect('*/*/'); } }
public static function getSorterUrl($params) { return AW_Kbase_Helper_Url::getUrlWithParams($params); }
public function searchAction() { $this->_checkRegistered(); $this->_checkFrontendEnabled(); if (!($query = ($key = AW_Kbase_Helper_Url::getParam(AW_Kbase_Helper_Url::URL_PARAM_NAME_QUERY)) ? $key : $this->getRequest()->getParam(AW_Kbase_Helper_Url::URL_PARAM_NAME_QUERY))) { $this->redirectHome(); return; } $this->loadLayout()->getLayout()->getBlock('kbase_search')->setQuery($query)->preparePage(); $this->renderLayout(); }
public function saveAction() { $session = Mage::getSingleton('adminhtml/session'); if ($data = $this->getRequest()->getPost()) { try { $data['article_tags'] = implode(', ', Mage::helper('kbase')->prepareTags($data['article_tags'])); $id = $this->getRequest()->getParam('id'); $_article = Mage::getModel('kbase/article')->load($id); $_oldSelectedCategories = $_article->getData('category_ids'); $_currentAllCategories = AW_Kbase_Model_Mysql4_Category::toOptionArray(); $_currentAllCategoriesFlat = array(); foreach ($_currentAllCategories as $k => $v) { if (isset($v['value'])) { $_currentAllCategoriesFlat[] = $v['value']; } } $data['category_ids'] = array_merge($data['category_ids'], array_values(array_diff($_oldSelectedCategories, $_currentAllCategoriesFlat))); unset($_article); $fileUploadNeeded = isset($_FILES['article_attachment']['name']) && $_FILES['article_attachment']['name']; // delete file if checkbox checked if (isset($data['article_attachment_delete']) && isset($data['article_attachment_old']) && $data['article_attachment_old']) { @unlink(AW_Kbase_Helper_Data::attachmentDirName($id) . DS . $data['article_attachment_old']); $data['article_attachment'] = ''; } // checking creation & updating date if (!isset($data['article_date_created']) || !$data['article_date_created']) { $data['article_date_created'] = now(); } $data['article_date_updated'] = now(); // end of time checking // checking rating $data['article_rating_votes'] = abs($data['article_rating_votes']); if (1 > $data['article_rating'] || 5 < $data['article_rating']) { $session->addError($this->__('Rating should be between 1 and 5')); $session->setKBaseArticleData($data); $this->_redirect('*/*/edit', array('id' => $id, 'tab' => 'rating')); return; } // checking URL key if (!isset($data['article_url_key']) || !$data['article_url_key']) { $data['article_url_key'] = $data['article_title']; } $data['article_url_key'] = AW_Kbase_Helper_Url::nameToUrlKey($data['article_url_key']); $model = Mage::getModel('kbase/article')->setData($data)->setId($id); //checking URL keys uniqueness $_origUrlKey = $data['article_url_key']; $_cnt = 1; $_categoryModel = Mage::getModel('kbase/category'); $_categoryModel->setCategoryStoreIds($model->getResource()->getCategorySetStoreIds($model->getCategoryIds()))->setCategoryUrlKey($data['article_url_key']); while ($model->isUrlKeyUsed() || $_categoryModel->isUrlKeyUsed()) { $model->setData('article_url_key', sprintf("%s-%d", $_origUrlKey, $_cnt)); $_categoryModel->setCategoryUrlKey(sprintf("%s-%d", $_origUrlKey, $_cnt++)); } if (!$id && $fileUploadNeeded) { $model->save(); $id = $model->getId(); } if ($fileUploadNeeded) { $uploader = new Varien_File_Uploader('article_attachment'); $uploader->setAllowedExtensions(null)->setAllowRenameFiles(false)->setAllowCreateFolders(true)->setFilesDispersion(false); $uploader->save(AW_Kbase_Helper_Data::attachmentDirName($id), $_FILES['article_attachment']['name']); $model->setArticleAttachment($uploader->getUploadedFileName()); } $model->save(); $session->addSuccess($this->__('Article was successfully saved')); $session->setKBaseArticleData(false); if ($this->getRequest()->getParam('back')) { $this->_redirect('*/*/edit', array('id' => $model->getId())); return; } $this->_redirect('*/*/'); return; } catch (Exception $e) { Mage::logException($e); $session->addError($e->getMessage()); $session->setKBaseArticleData($data); $this->_redirect('*/*/edit', array('id' => $id)); return; } } else { $session->addError($this->__('Unable to find an article to save')); $this->_redirect('*/*/'); } }
public static function matchUrl(Zend_Controller_Request_Http $request) { if (AW_Kbase_Helper_Data::isModuleOutputDisabled() || !AW_Kbase_Helper_Data::getFrontendEnabled()) { return false; } $urlKey = self::getModuleUrlKey(); $pathInfo = $request->getPathInfo(); $requestUri = $request->getRequestUri(); if ($request->getParam('___from_store')) { $_fromStore = Mage::app()->getSafeStore($request->getParam('___from_store')); if ($_fromStore->getData()) { $_oldUrlKey = self::getModuleUrlKeyFromConfig($_fromStore); if (strpos($pathInfo, '/' . $_oldUrlKey) === 0 && $_oldUrlKey != $urlKey) { $_newUrl = self::secureUrl(Mage::getBaseUrl() . $urlKey . '/'); $response = Mage::app()->getResponse(); $response->setRedirect($_newUrl); $response->sendHeaders(); $request->setDispatched(true); return true; } } } if (0 !== strpos($pathInfo, '/' . $urlKey . '/')) { // if path does not begin with /kbase/ return false; } $pathInfo = substr($pathInfo, strlen($urlKey) + 2); $request->setModuleName('kbase')->setControllerName('article'); if (!strlen($pathInfo)) { $request->setActionName('index'); return AW_Kbase_Helper_Data::getFrontendEnabled() && self::cacheRewrite($request->getPathInfo(), 'kbase/article/index'); } $urlKeySuffix = self::getUrlKeySuffix(); $isArticle = false; if (!$urlKeySuffix) { $_path = explode('/', $pathInfo); $_aUrl = false; if (count($_path) == 1) { $_aUrl = $_path[0]; } if (count($_path) == 2) { $_aUrl = $_path[1]; } if ($_aUrl) { $_aUrl = urldecode($_aUrl); $_aId = Mage::getModel('kbase/article')->getResource()->getIdByUrlKey($_aUrl); if (!$_aId) { $_aId = Mage::getModel('kbase/article')->getResource()->getIdByUrlKey($_aUrl, true); } if ($_aId) { $isArticle = true; } } } /** * Checking is customer comes from other store view * having various article suffix id in comparison * with current */ if ($request->getParam('___from_store') && !$isArticle) { if (!isset($_fromStore)) { $_fromStore = Mage::app()->getSafeStore($request->getParam('___from_store')); } if ($_fromStore->getData()) { $_oldUrlSuffix = self::getUrlKeySuffixFromConfig($_fromStore); if ($urlKeySuffix != $_oldUrlSuffix) { $_path = explode('/', $pathInfo); $_aUrl = false; if (count($_path) == 1) { $_aUrl = $_path[0]; } if (count($_path) == 2) { $_aUrl = $_path[1]; } if ($_aUrl) { $_articleUrlKey = substr($_aUrl, 0, strpos($_aUrl, $_oldUrlSuffix)); $_aId = Mage::getModel('kbase/article')->getResource()->getIdByUrlKey($_articleUrlKey); if (!$_aId) { $_aId = Mage::getModel('kbase/article')->getResource()->getIdByUrlKey($_articleUrlKey, true); } if ($_aId) { $_storeIds = Mage::getModel('kbase/article')->getResource()->getArticleStoreIds($_aId); if (in_array(Mage::app()->getStore()->getId(), $_storeIds)) { $_newUrl = self::secureUrl(Mage::getBaseUrl() . $urlKey . '/' . $_articleUrlKey . $urlKeySuffix); $response = Mage::app()->getResponse(); $response->setRedirect($_newUrl); $response->sendHeaders(); $request->setDispatched(true); return true; } } } } } } if ($urlKeySuffix && '/' != $urlKeySuffix && $urlKeySuffix == substr($pathInfo, -strlen($urlKeySuffix)) || $isArticle) { $pathInfo = substr($pathInfo, 0, strlen($pathInfo) - strlen($urlKeySuffix)); $path = explode('/', $pathInfo); if (count($path) == 1) { $request->setActionName('article'); self::$_queryParams[self::URL_PARAM_NAME_ARTICLE] = $path[0]; return self::cacheRewrite($request->getPathInfo(), 'kbase/article/article/' . self::URL_PARAM_NAME_ARTICLE . '/' . $path[0]); } elseif (count($path) == 2) { $request->setActionName('article'); self::$_queryParams[self::URL_PARAM_NAME_CATEGORY] = $path[0]; self::$_queryParams[self::URL_PARAM_NAME_ARTICLE] = $path[1]; return self::cacheRewrite($request->getPathInfo(), 'kbase/article/article/' . self::URL_PARAM_NAME_CATEGORY . '/' . $path[0] . '/' . self::URL_PARAM_NAME_ARTICLE . '/' . $path[1]); } return false; } // since further there will be listing pages only, we should check the condition here if (!Mage::getStoreConfig('kbase/general/frontent_enabled')) { return false; } // init parameters with optional ones self::$_queryParams = array(self::URL_PARAM_NAME_LIMIT => false, self::URL_PARAM_NAME_PAGE => false, self::URL_PARAM_NAME_SORT => false, self::URL_PARAM_NAME_SORT_DIR => false, self::URL_PARAM_NAME_QUERY => false); $pathInfo = substr($pathInfo, 0, strlen($pathInfo) - 1); $path = explode('/', $pathInfo); for ($i = count($path) - 1; $i > 0; $i -= 2) { $paramName = $path[$i - 1]; if (array_key_exists($paramName, self::$_queryParams)) { // for(; $path[$i] != $decoded = urldecode($path[$i]); $path[$i] = $decoded); // self::$_queryParams[$paramName] = $path[$i]; self::$_queryParams[$paramName] = urldecode($path[$i]); unset($path[$i]); unset($path[$i - 1]); } } foreach (self::$_queryParams as $paramName => $value) { if ($value = self::getQueryParam($requestUri, $paramName)) { self::$_queryParams[$paramName] = urldecode($value); $requestUri = self::unsetQueryParam($requestUri, $paramName); } } if (1 == count($path)) { if ('search' == $path[0]) { // if there were known parameters passed as query params if ($requestUri != $request->getRequestUri()) { foreach (self::$_queryParams as $name => $value) { if ($value) { self::$_queryParams[$name] = self::encodeSpecialChars($value); } } Mage::app()->getFrontController()->getResponse()->setRedirect(self::getUrl(self::URL_TYPE_SEARCH, self::$_queryParams))->sendResponse(); exit; } $request->setActionName('search'); return true; } $request->setActionName('category'); self::$_queryParams[self::URL_PARAM_NAME_CATEGORY] = $path[0]; return true; } elseif (2 == count($path) && 'tag' == $path[0] && $path[1]) { $request->setActionName('tag'); self::$_queryParams[self::URL_PARAM_NAME_TAG] = $path[1]; return true; } return false; }
public function getLimit() { if ($this->_limit !== null) { return $this->_limit; } $limits = $this->getAvailableLimit(); $session = Mage::getSingleton('core/session'); $saveToSession = false; if ($limit = (int) AW_Kbase_Helper_Url::getParam($this->getLimitVarName())) { $saveToSession = true; } elseif ($limit = $this->getRequest()->getParam($this->getLimitVarName())) { $saveToSession = true; } else { $limit = $session->getKbasePagerLimit(); } if ($limit && isset($limits[$limit])) { if ($saveToSession) { $session->setKbasePagerLimit($limit); } return $limit; } $limits = array_keys($limits); return $limits[0]; }
protected function _preparePage() { $this->addBreadcrumb($this->__('Home'), Mage::getBaseUrl(), $this->__('Go to Home Page'))->addBreadcrumb($this->__(Mage::getStoreConfig('kbase/general/title')), AW_Kbase_Helper_Url::getUrl(AW_Kbase_Helper_Url::URL_TYPE_MAIN), $this->__('Go to Knowledge Base Home Page')); return $this; }