/** * Constructor - requires following vars: * * @param string $filename image path * * These are additional vars: * * @param int $newxsize new maximum image width * @param int $newysize new maximum image height * @param string $fileout output image path * @param int $thumbMaxSize whether thumbnail should have background fill to make it exactly $newxsize x $newysize * @param int $bgred 0-255 - red color variable for background filler * @param int $bggreen 0-255 - green color variable for background filler * @param int $bgblue 0-255 - blue color variable for background filler * */ function Img2Thumb($filename, $newxsize = 60, $newysize = 60, $fileout = '', $thumbMaxSize = 0, $bgred = 0, $bggreen = 0, $bgblue = 0) { //Some big pictures need that tsmConfig::ensureMemoryLimit(128); // New modification - checks color int to be sure within range if ($thumbMaxSize) { $this->maxSize = true; } else { $this->maxSize = false; } if ($bgred >= 0 || $bgred <= 255) { $this->bg_red = $bgred; } else { $this->bg_red = 0; } if ($bggreen >= 0 || $bggreen <= 255) { $this->bg_green = $bggreen; } else { $this->bg_green = 0; } if ($bgblue >= 0 || $bgblue <= 255) { $this->bg_blue = $bgblue; } else { $this->bg_blue = 0; } $this->NewImgCreate($filename, $newxsize, $newysize, $fileout); }
public function __construct() { $this->_app = JFactory::getApplication(); $this->_db = JFactory::getDBO(); $this->_oldToNew = new stdClass(); $this->starttime = microtime(true); $max_execution_time = tsmConfig::getExecutionTime(); $jrmax_execution_time = vRequest::getInt('max_execution_time'); if (!empty($jrmax_execution_time)) { // vmdebug('$jrmax_execution_time',$jrmax_execution_time); if ($max_execution_time != $jrmax_execution_time) { @ini_set('max_execution_time', $jrmax_execution_time); } } else { if ($max_execution_time < 60) { @ini_set('max_execution_time', 60); } } $this->maxScriptTime = tsmConfig::getExecutionTime() * 0.95 - 3; //Lets use 3 seconds of the execution time as reserve to store the progress $jrmemory_limit = vRequest::getInt('memory_limit'); if (!empty($jrmemory_limit)) { @ini_set('memory_limit', $jrmemory_limit . 'M'); } else { tsmConfig::ensureMemoryLimit(128); } $this->maxMemoryLimit = $this->return_bytes(ini_get('memory_limit')) - 14 * 1024 * 1024; //Lets use 11MB for joomla // vmdebug('$this->maxMemoryLimit',$this->maxMemoryLimit); //134217728 //$this->maxMemoryLimit = $this -> return_bytes('20M'); // ini_set('memory_limit','35M'); $q = 'SELECT `id` FROM `#__tsmart_migration_oldtonew_ids` '; $this->_db->setQuery($q); $res = $this->_db->loadResult(); if (empty($res)) { $q = 'INSERT INTO `#__tsmart_migration_oldtonew_ids` (`id`) VALUES ("1")'; $this->_db->setQuery($q); $this->_db->execute(); $this->_app->enqueueMessage('Start with a new migration process and setup log maxScriptTime ' . $this->maxScriptTime . ' maxMemoryLimit ' . $this->maxMemoryLimit / (1024 * 1024)); } else { $this->_app->enqueueMessage('Found prior migration process, resume migration maxScriptTime ' . $this->maxScriptTime . ' maxMemoryLimit ' . $this->maxMemoryLimit / (1024 * 1024)); } $this->_keepOldProductIds = tsmConfig::get('keepOldProductIds', FALSE); }
public function __construct() { $this->_app = JFactory::getApplication(); $this->_db = JFactory::getDBO(); // $this->_oldToNew = new stdClass(); $this->starttime = microtime(true); $max_execution_time = tsmConfig::getExecutionTime(); $jrmax_execution_time = vRequest::getInt('max_execution_time', 300); if (!empty($jrmax_execution_time)) { // vmdebug('$jrmax_execution_time',$jrmax_execution_time); if ($max_execution_time !== $jrmax_execution_time) { @ini_set('max_execution_time', $jrmax_execution_time); } } $this->maxScriptTime = tsmConfig::getExecutionTime() * 0.9 - 1; //Lets use 10% of the execution time as reserve to store the progress tsmConfig::ensureMemoryLimit(128); $this->maxMemoryLimit = $this->return_bytes(ini_get('memory_limit')) * 0.85; $config = JFactory::getConfig(); $this->_prefix = $config->get('dbprefix'); $this->reCreaPri = tsmConfig::get('reCreaPri', 0); $this->reCreaKey = tsmConfig::get('reCreaKey', 1); }
/** * Override of display to prevent caching * * @return JController A JController object to support chaining. */ public function display($cachable = false, $urlparams = false) { $format = vRequest::getCmd('format', 'html'); $layout = vRequest::getCmd('layout', 'invoice'); if ($format != 'pdf') { $viewName = 'invoice'; $view = $this->getView($viewName, $format); $view->headFooter = true; $view->display(); } else { //PDF needs more RAM than usual tsmConfig::ensureMemoryLimit(96); //PDF needs xhtml links $this->useXHTML = true; $app = JFactory::getApplication(); // Create the invoice PDF file on disk and send that back $orderDetails = $this->getOrderDetails(); if (!$orderDetails) { $app->redirect(JRoute::_('/index.php?option=com_virtuemart')); } $fileLocation = $this->getInvoicePDF($orderDetails, 'invoice', $layout); if (!$fileLocation) { $app->redirect(JRoute::_('/index.php?option=com_virtuemart'), 'Invoice not created'); } $fileName = basename($fileLocation); if (file_exists($fileLocation)) { $maxSpeed = 200; $range = 0; $size = filesize($fileLocation); $contentType = 'application/pdf'; header("Cache-Control: public"); header("Content-Transfer-Encoding: binary\n"); header('Content-Type: application/pdf'); $contentDisposition = 'attachment'; $agent = strtolower($_SERVER['HTTP_USER_AGENT']); if (strpos($agent, 'msie') !== FALSE) { $fileName = preg_replace('/\\./', '%2e', $fileName, substr_count($fileName, '.') - 1); } header("Content-Disposition: {$contentDisposition}; filename=\"{$fileName}\""); header("Accept-Ranges: bytes"); if (isset($_SERVER['HTTP_RANGE'])) { list($a, $range) = explode("=", $_SERVER['HTTP_RANGE']); str_replace($range, "-", $range); $size2 = $size - 1; $new_length = $size - $range; header("HTTP/1.1 206 Partial Content"); header("Content-Length: {$new_length}"); header("Content-Range: bytes {$range}{$size2}/{$size}"); } else { $size2 = $size - 1; header("Content-Range: bytes 0-{$size2}/{$size}"); header("Content-Length: " . $size); } if ($size == 0) { die('Zero byte file! Aborting download'); } // set_magic_quotes_runtime(0); $fp = fopen("{$fileLocation}", "rb"); fseek($fp, $range); while (!feof($fp) and connection_status() == 0) { set_time_limit(0); print fread($fp, 1024 * $maxSpeed); flush(); ob_flush(); sleep(1); } fclose($fp); $app->close(); } else { // TODO: Error message // vmError("File $fileName not found!"); } } }
/** * With this function you can use a view to sent it by email. * Just use a task in a controller * * @param string $view for example user, cart * @param string $recipient shopper@whatever.com * @param bool $vendor true for notifying vendor of user action (e.g. registration) */ private static function sendVmMail(&$view, $recipient, $noVendorMail = FALSE) { tsmConfig::ensureMemoryLimit(96); tsmConfig::loadJLang('com_virtuemart', true); if ($noVendorMail and !empty($view->orderDetails) and !empty($view->orderDetails['details']['BT']->order_language)) { tsmConfig::loadJLang('com_virtuemart', true, $view->orderDetails['details']['BT']->order_language); tsmConfig::loadJLang('com_virtuemart_shoppers', TRUE, $view->orderDetails['details']['BT']->order_language); tsmConfig::loadJLang('com_virtuemart_orders', TRUE, $view->orderDetails['details']['BT']->order_language); } else { tsmConfig::loadJLang('com_virtuemart_shoppers', TRUE); tsmConfig::loadJLang('com_virtuemart_orders', TRUE); } ob_start(); $view->renderMailLayout($noVendorMail, $recipient); $body = ob_get_contents(); ob_end_clean(); $subject = isset($view->subject) ? $view->subject : tsmText::_('COM_VIRTUEMART_DEFAULT_MESSAGE_SUBJECT'); $mailer = JFactory::getMailer(); $mailer->addRecipient($recipient); $mailer->setSubject(html_entity_decode($subject, ENT_QUOTES, 'UTF-8')); $mailer->isHTML(tsmConfig::get('order_mail_html', TRUE)); $mailer->setBody($body); if (!$noVendorMail) { $replyTo[0] = $view->vendorEmail; $replyTo[1] = $view->vendor->vendor_name; $mailer->addReplyTo($replyTo); } else { if (isset($view->orderDetails['details']) and isset($view->orderDetails['details']['BT'])) { $replyTo[0] = $view->orderDetails['details']['BT']->email; $replyTo[1] = $view->orderDetails['details']['BT']->first_name . ' ' . $view->orderDetails['details']['BT']->last_name; } else { if (isset($view->user->email) and $view->user->name) { $replyTo[0] = $view->user->email; $replyTo[1] = $view->user->name; } else { $replyTo[0] = $view->user['email']; $replyTo[1] = $view->user['name']; } } $mailer->addReplyTo($replyTo); } if (isset($view->mediaToSend)) { foreach ((array) $view->mediaToSend as $media) { $mailer->addAttachment($media); } } // set proper sender $sender = array(); if (!empty($view->vendorEmail) and tsmConfig::get('useVendorEmail', 0)) { $sender[0] = $view->vendorEmail; $sender[1] = $view->vendor->vendor_name; } else { // use default joomla's mail sender $app = JFactory::getApplication(); $sender[0] = $app->getCfg('mailfrom'); $sender[1] = $app->getCfg('fromname'); if (empty($sender[0])) { $config = JFactory::getConfig(); $sender = array($config->get('mailfrom'), $config->get('fromname')); } } $mailer->setSender($sender); return $mailer->Send(); }