diff --git a/classes/Module.php b/classes/Module.php index 5de186ec2..667cd1d12 100644 --- a/classes/Module.php +++ b/classes/Module.php @@ -44,7 +44,7 @@ abstract class ModuleCore /** @var string author of the module */ public $author; - + /** @var int need_instance */ public $need_instance = 1; @@ -79,13 +79,13 @@ abstract class ModuleCore protected static $modulesCache; protected static $_hookModulesCache; - + protected static $_INSTANCE = array(); - + protected static $_generateConfigXmlMode = false; - + protected static $l_cache = array(); - + protected static $cache_permissions = array(); /** @@ -158,14 +158,14 @@ abstract class ModuleCore WHERE `name` = \''.pSQL($this->name).'\''); if ($result) return false; - + $result = Db::getInstance()->AutoExecute(_DB_PREFIX_.$this->table, array('name' => $this->name, 'active' => 1), 'INSERT'); if (!$result) return false; $this->id = Db::getInstance()->Insert_ID(); - + $this->enable(true); - + // Permissions management Db::getInstance()->Execute(' INSERT INTO `'._DB_PREFIX_.'module_access` (`id_profile`, `id_module`, `view`, `configure`) ( @@ -208,7 +208,7 @@ abstract class ModuleCore $this->cleanPositions($row['id_hook']); } $this->disable(true); - + Db::getInstance()->Execute('DELETE FROM `'._DB_PREFIX_.'module_access` WHERE `id_module` = '.(int)$this->id); return Db::getInstance()->Execute(' @@ -217,14 +217,14 @@ abstract class ModuleCore } /** - * This function enable module $name. If an $name is an array, + * This function enable module $name. If an $name is an array, * this will enable all of them - * - * @param array|string $name + * + * @param array|string $name * @return true if succeed * @since 1.4.1 */ - public static function enableByName($name) + public static function enableByName($name) { if (!is_array($name)) $name = array($name); @@ -235,7 +235,7 @@ abstract class ModuleCore /** * Activate current module. - * + * * @param bool $forceAll If true, enable module for all shop */ public function enable($forceAll = false) @@ -256,37 +256,37 @@ abstract class ModuleCore 'id_module' => $this->id, 'id_shop' => $id, ), 'INSERT'); - + return true; } /** - * This function disable module $name. If an $name is an array, + * This function disable module $name. If an $name is an array, * this will disable all of them - * - * @param array|string $name + * + * @param array|string $name * @return true if succeed * @since 1.4.1 */ - public static function disableByName($name) + public static function disableByName($name) { if (!is_array($name)) $name = array($name); foreach ($name as $k => $v) Module::getInstanceByName($name)->disable(); - + return true; } /** * Desactivate current module. - * + * * @param bool $forceAll If true, disable module for all shop */ - public function disable($forceAll = false) + public function disable($forceAll = false) { - $sql = 'DELETE FROM '._DB_PREFIX_.'module_shop + $sql = 'DELETE FROM '._DB_PREFIX_.'module_shop WHERE id_module = '.$this->id.' '.((!$forceAll) ? ' AND id_shop IN('.implode(', ', $this->context->shop->getListOfID()).')' : ''); Db::getInstance()->execute($sql); @@ -341,7 +341,7 @@ abstract class ModuleCore $hookID = Db::getInstance()->getValue($sql); if (!$hookID) return false; - + if (is_null($shopList)) $shopList = Shop::getShops(true, null, true); @@ -357,7 +357,7 @@ abstract class ModuleCore AND id_shop = '.$shopID; if (Db::getInstance()->getRow($sql)) continue; - + // Get module position in hook $sql = 'SELECT MAX(`position`) AS position FROM `'._DB_PREFIX_.'hook_module` @@ -365,7 +365,7 @@ abstract class ModuleCore .' AND id_shop = '.$shopID; if (!$position = Db::getInstance()->getValue($sql)) $position = 0; - + // Register module in hook $result = Db::getInstance()->autoExecute(_DB_PREFIX_.'hook_module', array( 'id_module' => $this->id, @@ -376,7 +376,7 @@ abstract class ModuleCore if (!$result) $return &= false; } - + $this->cleanPositions($hookID, $shopList); return $return; } @@ -446,7 +446,7 @@ abstract class ModuleCore { if (!$except) continue; - + $result = Db::getInstance()->autoExecute(_DB_PREFIX_.'hook_module_exceptions', array( 'id_module' => $this->id, 'id_hook' => (int)$id_hook, @@ -468,17 +468,17 @@ abstract class ModuleCore /** - * This function is used to determine the module name + * This function is used to determine the module name * of an AdminTab which belongs to a module, in order to keep translation * related to a module in its directory (instead of $_LANGADM) - * - * @param mixed $currentClass the + * + * @param mixed $currentClass the * @return boolean|string if the class belongs to a module, will return the module name. Otherwise, return false. */ public static function getModuleNameFromClass($currentClass) { global $cookie; - + // Module can now define AdminTab keeping the module translations method, // i.e. in modules/[module name]/[iso_code].php if (!isset(self::$classInModule[$currentClass])) @@ -495,7 +495,7 @@ abstract class ModuleCore if (Tools::file_exists_cache($file) AND include_once($file)) $_MODULES = !empty($_MODULES) ? array_merge($_MODULES, $_MODULE) : $_MODULE; } - else + else self::$classInModule[$currentClass] = false; } // return name of the module, or false @@ -530,7 +530,7 @@ abstract class ModuleCore static public function getInstanceById($moduleID) { static $id2name = null; - + if (is_null($id2name)) { $id2name = array(); @@ -540,7 +540,7 @@ abstract class ModuleCore foreach ($results as $row) $id2name[$row['id_module']] = $row['name']; } - + if (isset($id2name[$moduleID])) return Module::getInstanceByName($id2name[$moduleID]); return false; @@ -636,7 +636,7 @@ abstract class ModuleCore // Get modules information from database if (!empty($moduleNameList)) { - $list = Context::getContext()->shop->getListOfID(); + $list = Context::getContext()->shop->getListOfID(); $sql = 'SELECT m.id_module, m.name, ( SELECT COUNT(*) FROM '._DB_PREFIX_.'module_shop ms WHERE m.id_module = ms.id_module AND ms.id_shop IN ('.implode(',', $list).') @@ -761,7 +761,7 @@ abstract class ModuleCore ORDER BY hm.`position`'; $result = $db->ExecuteS($sql, false); self::$_hookModulesCache = array(); - + if ($result) while ($row = $db->nextRow()) { @@ -799,7 +799,7 @@ abstract class ModuleCore { $live_edit = true; $output .= ' -
' .$moduleInstance->displayName.' @@ -832,7 +832,7 @@ abstract class ModuleCore $output .= call_user_func(array($moduleInstance, 'hookpayment'), $hookArgs); return $output; } - + public static function getPaymentModules() { $context = Context::getContext(); @@ -856,14 +856,14 @@ abstract class ModuleCore GROUP BY hm.id_hook, hm.id_module ORDER BY hm.`position`, m.`name` DESC'; $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS($sql); - + return $result; } /** * find translation from $_MODULES and put it in self::$l_cache if not already exist * and return it. - * + * * @param string $name name of the module * @param string $string term to find * @param string $source additional param for building translation key @@ -872,9 +872,9 @@ abstract class ModuleCore public static function findTranslation($name, $string, $source) { global $_MODULES; - + $cache_key = $name . '|' . $string . '|' . $source; - + if (!isset(self::$l_cache[$cache_key])) { if (!is_array($_MODULES)) @@ -883,7 +883,7 @@ abstract class ModuleCore $_MODULES = array_change_key_case($_MODULES); $currentKey = '<{'.strtolower($name).'}'.strtolower(_THEME_NAME_).'>'.strtolower($source).'_'.md5($string); $defaultKey = '<{'.strtolower($name).'}prestashop>'.strtolower($source).'_'.md5($string); - + if (isset($_MODULES[$currentKey])) $ret = stripslashes($_MODULES[$currentKey]); elseif (isset($_MODULES[Tools::strtolower($currentKey)])) @@ -894,16 +894,16 @@ abstract class ModuleCore $ret = stripslashes($_MODULES[Tools::strtolower($defaultKey)]); else $ret = stripslashes($string); - + self::$l_cache[$cache_key] = str_replace('"', '"', $ret); - } + } return self::$l_cache[$cache_key]; } /** * Get translation for a given module text * * Note: $specific parameter is mandatory for library files. - * Otherwise, translation key will not match for Module library + * Otherwise, translation key will not match for Module library * when module is loaded with eval() Module::getModulesOnDisk() * * @param string $string String to translate @@ -914,7 +914,7 @@ abstract class ModuleCore { if (self::$_generateConfigXmlMode) return $string; - + global $_MODULES, $_MODULE; if ($id_lang == null) @@ -923,7 +923,7 @@ abstract class ModuleCore if (Tools::file_exists_cache($file) AND include_once($file)) $_MODULES = !empty($_MODULES) ? array_merge($_MODULES, $_MODULE) : $_MODULE; - + $source = $specific ? $specific : $this->name; $string = str_replace('\'', '\\\'', $string); $ret = $this->findTranslation($this->name, $string, $source); @@ -959,10 +959,10 @@ abstract class ModuleCore return false; $from = $res[$k]; $to = $res[$k + 1]; - + if (isset($position) and !empty($position)) $to['position'] = (int)($position); - + $sql = 'UPDATE `'._DB_PREFIX_.'hook_module` SET `position`= position '.($way ? '-1' : '+1').' WHERE position between '.(int)(min(array($from['position'], $to['position']))) .' AND '.(int)(max(array($from['position'], $to['position']))).' @@ -970,7 +970,7 @@ abstract class ModuleCore AND id_shop = '.$shopID; if (!Db::getInstance()->Execute($sql)) return false; - + $sql = 'UPDATE `'._DB_PREFIX_.'hook_module` SET `position`='.(int)($to['position']).' WHERE `'.pSQL($this->identifier).'` = '.(int)($from[$this->identifier]).' @@ -1000,7 +1000,7 @@ abstract class ModuleCore { if (!isset($position[$row['id_shop']])) $position[$row['id_shop']] = 1; - + $sql = 'UPDATE '._DB_PREFIX_.'hook_module SET position = '.$position[$row['id_shop']].' WHERE id_hook = '.(int)$id_hook.' @@ -1060,7 +1060,7 @@ abstract class ModuleCore self::$exceptionsCache[$key][$row['id_shop']][] = $row['file_name']; } } - + $key = $hookID.'-'.$this->id; if (!$dispatch) { @@ -1161,7 +1161,7 @@ abstract class ModuleCore { Tools::clearCache(Context::getContext()->smarty); } - + protected function _generateConfigXml() { $xml = ' @@ -1178,7 +1178,7 @@ abstract class ModuleCore if (is_writable(_PS_MODULE_DIR_.$this->name.'/')) file_put_contents(_PS_MODULE_DIR_.$this->name.'/config.xml', $xml); } - + /** * @param string $hook_name * @return bool if module can be transplanted on hook @@ -1187,18 +1187,18 @@ abstract class ModuleCore { return is_callable(array($this, 'hook'.ucfirst($hook_name))); } - + public function getPermission($variable, $employee = null) { return self::getPermissionStatic($this->id, $variable, $employee); } - - public function getPermissionStatic($id_module, $variable, $employee = null) + + public static function getPermissionStatic($id_module, $variable, $employee = null) { if (!in_array($variable, array('view', 'configure'))) return false; if (!$employee) - $employee = $this->context->employee; + $employee = Context::getContext()->employee; if (!isset($cache_permissions[$employee->id_profile])) { $cache_permissions[$employee->id_profile] = array();