public function redirectsAction() { $redirectForm = new Application_Form_Redirect(); $pageMapper = Application_Model_Mappers_PageMapper::getInstance(); $redirectMapper = Application_Model_Mappers_RedirectMapper::getInstance(); $redirectForm->setToasterPages($pageMapper->fetchIdUrlPairs()); $redirectForm->setDefault('fromUrl', 'http://'); if (!$this->getRequest()->isPost()) { $this->view->redirects = $redirectMapper->fetchRedirectMap(); } else { if ($redirectForm->isValid($this->getRequest()->getParams())) { $data = $redirectForm->getValues(); $redirect = new Application_Model_Models_Redirect(); $fromUrlPath = Tools_System_Tools::getUrlPath($data['fromUrl']); $inDbValidator = new Zend_Validate_Db_NoRecordExists(array('table' => 'redirect', 'field' => 'from_url')); if (!$inDbValidator->isValid($fromUrlPath)) { $this->_helper->response->fail(implode('<br />', $inDbValidator->getMessages())); exit; } $redirect->setFromUrl(Tools_System_Tools::getUrlPath($data['fromUrl'])); $redirect->setDomainFrom(Tools_System_Tools::getUrlScheme($data['fromUrl']) . '://' . Tools_System_Tools::getUrlHost($data['fromUrl']) . '/'); if (intval($data['toUrl'])) { $page = $pageMapper->find($data['toUrl']); $redirect->setDomainTo($this->_helper->website->getUrl()); $redirect->setToUrl($page->getUrl()); $redirect->setPageId($page->getId()); } else { $urlValidator = new Validators_UrlRegex(); if (!$urlValidator->isValid($data['toUrl'])) { $this->_helper->response->fail('External url <br />' . implode('<br />', $urlValidator->getMessages())); exit; } $redirect->setDomainTo(Tools_System_Tools::getUrlScheme($data['toUrl']) . '://' . Tools_System_Tools::getUrlHost($data['toUrl']) . '/'); $redirect->setToUrl(Tools_System_Tools::getUrlPath($data['toUrl'])); $redirect->setPageId(null); } $redirectMapper->save($redirect); $this->_helper->cache->clean('toaster_301redirects', '301redirects'); $this->_helper->response->success('Redirect saved'); } else { $this->_helper->response->fail(Tools_Content_Tools::proccessFormMessagesIntoHtml($redirectForm->getMessages(), get_class($redirectForm))); exit; } } $this->view->helpSection = '301s'; $this->view->form = $redirectForm; }
public function delete(Application_Model_Models_Redirect $redirect) { $where = $this->getDbTable()->getAdapter()->quoteInto('id = ?', $redirect->getId()); $deleteResult = $this->getDbTable()->delete($where); $redirect->notifyObservers(); }
private function _update301Redirects() { $mapper = Application_Model_Mappers_RedirectMapper::getInstance(); $sessionHelper = Zend_Controller_Action_HelperBroker::getStaticHelper('Session'); $cacheHelper = Zend_Controller_Action_HelperBroker::getStaticHelper('Cache'); $websiteHelper = Zend_Controller_Action_HelperBroker::getStaticHelper('Website'); if (!isset($sessionHelper->oldPageUrl) || !$sessionHelper->oldPageUrl) { return null; } if ($sessionHelper->oldPageUrl == $this->_object->getUrl()) { return null; } $mapper->deleteByRedirect($this->_object->getUrl(), $sessionHelper->oldPageUrl); $redirect = new Application_Model_Models_Redirect(); $redirect->setFromUrl($sessionHelper->oldPageUrl); $redirect->setToUrl($this->_object->getUrl()); $redirect->setPageId($this->_object->getId()); $redirect->setDomainFrom($websiteHelper->getUrl()); $redirect->setDomainTo($websiteHelper->getUrl()); $mapper->save($redirect); $cacheHelper->clean('toaster_301redirects', '301redirects'); }