* @copyright 2007-2011 PrestaShop SA
* @version Release: $Revision: 6594 $
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
* International Registered Trademark & Property of PrestaShop SA
*/
class AdminModulesPositions extends AdminTab
{
private $displayKey = 0;
public function postProcess()
{
global $currentIndex;
// Getting key value for display
if (Tools::getValue('show_modules') AND strval(Tools::getValue('show_modules')) != 'all')
$this->displayKey = (int)(Tools::getValue('show_modules'));
// Change position in hook
if (array_key_exists('changePosition', $_GET))
{
if ($this->tabAccess['edit'] === '1')
{
$id_module = (int)(Tools::getValue('id_module'));
$id_hook = (int)(Tools::getValue('id_hook'));
$module = Module::getInstanceById($id_module);
if (Validate::isLoadedObject($module))
{
$module->updatePosition($id_hook, (int)(Tools::getValue('direction')));
Tools::redirectAdmin($currentIndex.($this->displayKey ? '&show_modules='.$this->displayKey : '').'&token='.$this->token);
}
else
$this->_errors[] = Tools::displayError('module cannot be loaded');
}
else
$this->_errors[] = Tools::displayError('You do not have permission to edit here.');
}
// Add new module in hook
elseif (Tools::isSubmit('submitAddToHook'))
{
if ($this->tabAccess['add'] === '1')
{
// Getting vars...
$id_module = (int)(Tools::getValue('id_module'));
$module = Module::getInstanceById($id_module);
$id_hook = (int)(Tools::getValue('id_hook'));
$hook = new Hook($id_hook);
$excepts = explode(',', str_replace(' ', '', Tools::getValue('exceptions')));
// Checking vars...
foreach ($excepts AS $except)
if (!Validate::isFileName($except))
$this->_errors[] = Tools::displayError('No valid value for field exceptions');
if (!$id_module OR !Validate::isLoadedObject($module))
$this->_errors[] = Tools::displayError('module cannot be loaded');
elseif (!$id_hook OR !Validate::isLoadedObject($hook))
$this->_errors[] = Tools::displayError('Hook cannot be loaded.');
elseif (Hook::getModuleFromHook($id_hook, $id_module))
$this->_errors[] = Tools::displayError('This module is already transplanted to this hook.');
elseif (!$module->isHookableOn($hook->name))
$this->_errors[] = Tools::displayError('This module can\'t be transplanted to this hook.');
// Adding vars...
elseif (!$module->registerHook($hook->name))
$this->_errors[] = Tools::displayError('An error occurred while transplanting module to hook.');
elseif (!$module->registerExceptions($id_hook, $excepts))
$this->_errors[] = Tools::displayError('An error occurred while transplanting module to hook.');
else
Tools::redirectAdmin($currentIndex.'&conf=16'.($this->displayKey ? '&show_modules='.$this->displayKey : '').'&token='.$this->token);
}
else
$this->_errors[] = Tools::displayError('You do not have permission to add here.');
}
// Edit module from hook
elseif (Tools::isSubmit('submitEditGraft'))
{
if ($this->tabAccess['add'] === '1')
{
// Getting vars...
$id_module = (int)(Tools::getValue('id_module'));
$module = Module::getInstanceById($id_module);
$id_hook = (int)(Tools::getValue('id_hook'));
$hook = new Hook($id_hook);
$excepts = explode(',', str_replace(' ', '', Tools::getValue('exceptions')));
// Checking vars...
foreach ($excepts AS $except)
if (!Validate::isFileName($except))
$this->_errors[] = Tools::displayError('No valid value for field exceptions');
if (!$id_module OR !Validate::isLoadedObject($module))
$this->_errors[] = Tools::displayError('module cannot be loaded');
elseif (!$id_hook OR !Validate::isLoadedObject($hook))
$this->_errors[] = Tools::displayError('Hook cannot be loaded.');
// Adding vars...
if (!$module->editExceptions($id_hook, $excepts))
$this->_errors[] = Tools::displayError('An error occurred while transplanting module to hook.');
else
Tools::redirectAdmin($currentIndex.'&conf=16'.($this->displayKey ? '&show_modules='.$this->displayKey : '').'&token='.$this->token);
}
else
$this->_errors[] = Tools::displayError('You do not have permission to add here.');
}
// Delete module from hook
elseif (array_key_exists('deleteGraft', $_GET))
{
if ($this->tabAccess['delete'] === '1')
{
$id_module = (int)(Tools::getValue('id_module'));
$module = Module::getInstanceById($id_module);
$id_hook = (int)(Tools::getValue('id_hook'));
$hook = new Hook($id_hook);
if (!Validate::isLoadedObject($module))
$this->_errors[] = Tools::displayError('module cannot be loaded');
elseif (!$id_hook OR !Validate::isLoadedObject($hook))
$this->_errors[] = Tools::displayError('Hook cannot be loaded.');
else
{
$position = Db::getInstance()->getValue('SELECT `position` FROM `'._DB_PREFIX_.'hook_module` hm WHERE hm.`id_hook` = '.$id_hook.' AND hm.`id_module` = '.$id_module);
if (!$module->unregisterHook($id_hook) OR !$module->unregisterExceptions($id_hook))
$this->_errors[] = Tools::displayError('An error occurred while deleting module from hook.');
else
{
$this->placeCorrectlyOtherModules($id_hook, $position);
Tools::redirectAdmin($currentIndex.'&conf=17'.($this->displayKey ? '&show_modules='.$this->displayKey : '').'&token='.$this->token);
}
}
}
else
$this->_errors[] = Tools::displayError('You do not have permission to delete here.');
}
elseif (Tools::isSubmit('unhookform'))
{
if (!($unhooks = Tools::getValue('unhooks')) OR !is_array($unhooks))
$this->_errors[] = Tools::displayError('Select a module to unhook.');
else
{
foreach ($unhooks as $unhook)
{
$explode = explode('_', $unhook);
$id_hook = $explode[0];
$id_module = $explode[1];
$module = Module::getInstanceById((int)($id_module));
$hook = new Hook((int)($id_hook));
if (!Validate::isLoadedObject($module))
$this->_errors[] = Tools::displayError('module cannot be loaded');
elseif (!$id_hook OR !Validate::isLoadedObject($hook))
$this->_errors[] = Tools::displayError('Hook cannot be loaded.');
else
{
$position = Db::getInstance()->getValue('SELECT `position` FROM `'._DB_PREFIX_.'hook_module` hm WHERE hm.`id_hook` = '.(int)($id_hook).' AND hm.`id_module` = '.(int)($id_module));
if (!$module->unregisterHook((int)($id_hook)) OR !$module->unregisterExceptions((int)($id_hook)))
$this->_errors[] = Tools::displayError('An error occurred while deleting module from hook.');
else
$this->placeCorrectlyOtherModules((int)($id_hook), (int)($position));
}
}
if (!sizeof($this->_errors))
Tools::redirectAdmin($currentIndex.'&conf=17'.($this->displayKey ? '&show_modules='.$this->displayKey : '').'&token='.$this->token);
}
}
}
public function display()
{
if (array_key_exists('addToHook', $_GET) OR array_key_exists('editGraft', $_GET) OR (Tools::isSubmit('submitAddToHook') AND $this->_errors))
$this->displayForm();
else
$this->displayList();
}
public function displayList()
{
global $currentIndex;
$link = new Link();
$admin_dir = dirname($_SERVER['PHP_SELF']);
$admin_dir = substr($admin_dir, strrpos($admin_dir,'/') + 1);
echo '
';
echo ' '.$this->l('Transplant a module').'
';
// Print select list
echo '