/** * Return an instance of the specified module * * @param string $module_name Module name * @return Module */ public static function getInstanceByName($module_name) { if (!Validate::isModuleName($module_name)) { if (_PS_MODE_DEV_) { die(Tools::displayError(Tools::safeOutput($module_name) . ' is not a valid module name.')); } return false; } if (!isset(self::$_INSTANCE[$module_name])) { if (Tools::file_exists_no_cache(_PS_MODULE_DIR_ . $module_name . '/' . $module_name . '.php')) { include_once _PS_MODULE_DIR_ . $module_name . '/' . $module_name . '.php'; if (Tools::file_exists_no_cache(_PS_OVERRIDE_DIR_ . 'modules/' . $module_name . '/' . $module_name . '.php')) { include_once _PS_OVERRIDE_DIR_ . 'modules/' . $module_name . '/' . $module_name . '.php'; $override = $module_name . 'Override'; if (class_exists($override, false)) { return self::$_INSTANCE[$module_name] = new $override(); } } if (class_exists($module_name, false)) { return self::$_INSTANCE[$module_name] = new $module_name(); } } return false; } return self::$_INSTANCE[$module_name]; }
/** * Copy a remote or local file to the local campaign storage * @param string $url * @param string $filename The name of the resulting file * @return mixed Null if fail or a string containing the path of the resulting image. */ private function copyFileToStorage($url, $filename = null) { $dest = $this->module->getPreviewFolder(); $dest .= $this->campaign_id . DIRECTORY_SEPARATOR; if (!Tools::file_exists_no_cache($dest)) { mkdir($dest, 0777, true); Tools::copy(_PS_MODULE_DIR_ . 'expressmailing/index.php', $dest . 'index.php'); } if ($filename) { $dest .= (string) $filename; } else { $dest .= basename((string) $url); } $dest = urldecode($dest); $dest = str_replace(' ', '_', $dest); $dest = EMTools::removeAccents($dest); if (($pos = strpos($dest, '?')) !== false) { $dest = Tools::substr($dest, 0, $pos); } if (function_exists('curl_version')) { $user_agent = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : 'Mozilla/5.0'; $ch = curl_init((string) $url); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_USERAGENT, $user_agent); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1); curl_setopt($ch, CURLOPT_CRLF, 1); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); $raw = curl_exec($ch); curl_close($ch); if (file_exists($dest)) { unlink($dest); } $fp = fopen($dest, 'x'); fwrite($fp, $raw); fclose($fp); if (file_exists($dest)) { return $dest; } } else { if (Tools::copy((string) $url, $dest)) { return $dest; } } return null; }
protected static function coreLoadModule($module_name) { // Define if we will log modules performances for this session if (Module::$_log_modules_perfs === null) { $modulo = _PS_DEBUG_PROFILING_ ? 1 : Configuration::get('PS_log_modules_perfs_MODULO'); Module::$_log_modules_perfs = $modulo && mt_rand(0, $modulo - 1) == 0; if (Module::$_log_modules_perfs) { Module::$_log_modules_perfs_session = mt_rand(); } } // Store time and memory before and after hook call and save the result in the database if (Module::$_log_modules_perfs) { $time_start = microtime(true); $memory_start = memory_get_usage(true); } include_once _PS_MODULE_DIR_ . $module_name . '/' . $module_name . '.php'; $r = false; if (Tools::file_exists_no_cache(_PS_OVERRIDE_DIR_ . 'modules/' . $module_name . '/' . $module_name . '.php')) { include_once _PS_OVERRIDE_DIR_ . 'modules/' . $module_name . '/' . $module_name . '.php'; $override = $module_name . 'Override'; if (class_exists($override, false)) { $r = self::$_INSTANCE[$module_name] = new $override(); } } if (!$r && class_exists($module_name, false)) { $r = self::$_INSTANCE[$module_name] = Adapter_ServiceLocator::get($module_name); } if (Module::$_log_modules_perfs) { $time_end = microtime(true); $memory_end = memory_get_usage(true); Db::getInstance()->execute(' INSERT INTO ' . _DB_PREFIX_ . 'modules_perfs (session, module, method, time_start, time_end, memory_start, memory_end) VALUES (' . (int) Module::$_log_modules_perfs_session . ', "' . pSQL($module_name) . '", "__construct", "' . pSQL($time_start) . '", "' . pSQL($time_end) . '", ' . (int) $memory_start . ', ' . (int) $memory_end . ')'); } return $r; }
protected static function coreLoadModule($module_name) { include_once _PS_MODULE_DIR_ . $module_name . '/' . $module_name . '.php'; $r = false; if (Tools::file_exists_no_cache(_PS_OVERRIDE_DIR_ . 'modules/' . $module_name . '/' . $module_name . '.php')) { include_once _PS_OVERRIDE_DIR_ . 'modules/' . $module_name . '/' . $module_name . '.php'; $override = $module_name . 'Override'; if (class_exists($override, false)) { $r = self::$_INSTANCE[$module_name] = \PrestaShop\PrestaShop\Adapter\ServiceLocator::get($override); } } if (!$r && class_exists($module_name, false)) { $r = self::$_INSTANCE[$module_name] = \PrestaShop\PrestaShop\Adapter\ServiceLocator::get($module_name); } return $r; }