Example #1
0
 /**
  * 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;
 }
Example #3
0
    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;
    }
Example #4
0
 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;
 }