File Manager

Current Directory: /home/astoriaah/www/old15/administrator/components/com_sh404sef/classes
Viewing File: /home/astoriaah/www/old15/administrator/components/com_sh404sef/classes/baseeditcontroller.php
<?php /** * sh404SEF - SEO extension for Joomla! * * @author Yannick Gaultier * @copyright (c) Yannick Gaultier 2014 * @package sh404SEF * @license http://www.gnu.org/copyleft/gpl.html GNU/GPL * @version 4.4.4.1791 * @date 2014-07-01 */ // Security check to ensure this file is being included by a parent file. if (!defined('_JEXEC')) die('Direct Access to this location is not allowed.'); class Sh404sefClassBaseEditController extends Sh404sefClassBasecontroller { protected $_context = 'com_sh404sef.edit'; protected $_editController = ''; protected $_editTask = 'edit'; protected $_editLayout = ''; protected $_returnController = ''; protected $_returnTask = ''; protected $_returnView = 'default'; protected $_returnLayout = 'default'; /** * Id of the currently edited item * @var integer */ protected $_id = null; /** * POST data saved in case of need to edit again * same data (if error detected) * @var mixed */ protected $_editData = null; /** * Display the view */ public function display($cachable = false, $urlparams = false) { // Set the default view name in case it's missing $viewName = JRequest::getWord('view'); if (empty( $viewName)) { JRequest::setVar( 'view', $this->_defaultView); } $document =JFactory::getDocument(); $viewType = $document->getType(); $viewName = JRequest::getCmd( 'view'); $this->_editView = $viewName; $viewLayout = JRequest::getCmd( 'layout', $this->_defaultLayout ); $view = $this->getView( $viewName, $viewType, '', array( 'base_path'=>$this->basePath)); // Get/Create the model if ($model = $this->getModel($viewName)) { // store initial context in model $model->setContext( $this->_context); // if we have some stored data from a previous attempt at editing // that failed because of validation, then push saved data into // the model, to redisplay it for user to fix or cancel if (!is_null($this->_editData)) { $model->setData( $this->_editData); } // Push the model into the view (as default) $view->setModel($model, true); // and push also the default redirect $view->defaultRedirectUrl = $this->_getDefaultRedirect(); } // Set the layout $view->setLayout($viewLayout); // push controller errors in the view $error = $this->getError(); if (!empty( $error)) { $view->setError( $error); } // Display the view $view->display(); } public function edit() { // hide the main menu JRequest::setVar('hidemainmenu', 1); // find and store edited item id $cid = JRequest::getVar('cid', array(0), 'default', 'array'); $this->_id = $cid[0]; // let the base controller do the rest $this->display(); } public function save() { // Check for request forgeries JRequest::checkToken() or jexit( 'Invalid Token' ); // save incoming data $this->_editData = JRequest::get('post'); // find and store edited item id $this->_id = JRequest::getInt('id'); // perform saving of incoming data $savedId = $this->_doSave( $this->_editData); // error ? if (empty( $savedId)) { // edit again with same data $errorMsg = $this->getError(); $errorMsg = empty( $errorMsg) ? $this->_getMessage( 'failure') : $errorMsg; $this->setError( $errorMsg); JRequest::setVar( 'c', $this->_editController); JRequest::setVar( 'task', $this->_editTask); JRequest::setVar( 'cid', array($this->_id)); // in case of error, if this is an ajax call, // we simply return the error to the caller $isAjax = JRequest::getInt( 'shajax') == 1; if(!$isAjax) { // if not ajax, we edit again the same page $this->edit(); return false; } } // saved, no need to keep them $this->_editData = null; // display response $this->display(); } public function apply() { // Check for request forgeries JRequest::checkToken() or jexit( 'Invalid Token' ); // just an alias for save $this->save(); } public function cancel() { // Check for request forgeries JRequest::checkToken() or jexit( 'Invalid Token' ); $this->setRedirect( $this->_getDefaultRedirect(), $this->_getMessage( 'cancel')); } protected function setId( $id) { $this->_id = $id; } protected function _getMessage( $type) { switch ($type) { case 'success': $msg = JText::_('COM_SH404SEF_ELEMENT_SAVED'); break; case 'failure': $msg = JText::_('COM_SH404SEF_ELEMENT_NOT_SAVED'); break; case 'cancel': $msg = JText::_('COM_SH404SEF_CANCELLED'); break; default: $msg = ''; break; } return $msg; } protected function _doSave( $dataArray, $urlType = sh404SEF_URLTYPE_CUSTOM) { // get model $model = $this->getModel( $this->_defaultView); // perform save operation $savedId = $model->save( $dataArray, $urlType); // store error message if (empty( $savedId)) { $this->setError( $model->getError()); } // return result return $savedId; } }