private function _printList($cards, $path) { try { $io = new Varien_Io_File(); $fullPath = Mage::getBaseDir() . $path; $parts = pathinfo($fullPath); if (!isset($parts['extension']) || strtolower($parts['extension']) != 'csv') { Mage::throwException('Error in file extension. Only *.csv files are supported'); } $delimiter = ';'; $enclosure = '"'; $io->open(array('path' => $parts['dirname'])); $io->streamOpen($fullPath, 'w+'); $io->streamLock(true); $header = array('card_id' => 'Gift Card Code', 'amount' => 'Card Amount'); $io->streamWriteCsv($header, $delimiter, $enclosure); $content = array(); foreach ($cards as $card) { $content['card_id'] = $card['code']; $content['amount'] = $card['amount']; $io->streamWriteCsv($content, $delimiter, $enclosure); } $io->streamUnlock(); $io->streamClose(); $list = Mage::getModel('giftcards/cardslist')->load($fullPath, 'file_path'); $list->setFilePath($fullPath)->save(); } catch (Mage_Core_Exception $e) { Mage::getSingleton('adminhtml/session')->addError($e->getMessage()); } catch (Exception $e) { Mage::getSingleton('adminhtml/session')->addError(Mage::helper('giftcards')->__('An error occurred while save cards list.')); } }
protected function _generateStoreCss($design, $storeCode) { if (!Mage::app()->getStore($storeCode)->getIsActive()) { return; } $prefix = '_' . $storeCode; if ($design == 'layout') { $filename = $design . $prefix . '.css'; } else { $filename = $design . $prefix . '.less'; } $filedefault = Mage::helper('dgtyaris/cssgen')->getGeneratedCssDir() . $filename; $path = 'dgtthemes/dgtyaris/css/' . $design . '.phtml'; Mage::register('cssgen_store', $storeCode); try { $block = Mage::app()->getLayout()->createBlock("core/template")->setData('area', 'frontend')->setTemplate($path)->toHtml(); if (empty($block)) { throw new Exception(Mage::helper('dgtyaris')->__("Template file is empty or doesn't exist: %s", $path)); } $file = new Varien_Io_File(); $file->setAllowCreateFolders(true); $file->open(array('path' => Mage::helper('dgtyaris/cssgen')->getGeneratedCssDir())); $file->streamOpen($filedefault, 'w+'); $file->streamLock(true); $file->streamWrite($block); $file->streamUnlock(); $file->streamClose(); } catch (Exception $gener) { Mage::getSingleton('adminhtml/session')->addError(Mage::helper('dgtyaris')->__('Failed generating CSS file: %s in %s', $filename, Mage::helper('dgtyaris/cssgen')->getGeneratedCssDir()) . '<br/>Message: ' . $gener->getMessage()); Mage::logException($gener); } Mage::unregister('cssgen_store'); }
protected function _generateStoreCss($x0b, $x0d) { if (!Mage::app()->getStore($x0d)->getIsActive()) { return; } $x11 = '_' . $x0d; $x12 = $x0b . $x11 . '.css'; $x13 = Mage::helper('ultimo/cssgen')->getGeneratedCssDir() . $x12; $x14 = Mage::helper('ultimo/cssgen')->getTemplatePath() . $x0b . '.phtml'; Mage::register('cssgen_store', $x0d); try { $x15 = Mage::app()->getLayout()->createBlock("core/template")->setData('area', 'frontend')->setTemplate($x14)->toHtml(); if (empty($x15)) { throw new Exception(Mage::helper('ultimo')->__("Template file is empty or doesn't exist: %s", $x14)); } $x16 = new Varien_Io_File(); $x16->setAllowCreateFolders(true); $x16->open(array('path' => Mage::helper('ultimo/cssgen')->getGeneratedCssDir())); $x16->streamOpen($x13, 'w+', 0777); $x16->streamLock(true); $x16->streamWrite($x15); $x16->streamUnlock(); $x16->streamClose(); } catch (Exception $x17) { Mage::getSingleton('adminhtml/session')->addError(Mage::helper('ultimo')->__('Failed generating CSS file: %s in %s', $x12, Mage::helper('ultimo/cssgen')->getGeneratedCssDir()) . '<br/>Message: ' . $x17->getMessage()); Mage::logException($x17); } Mage::unregister('cssgen_store'); }
/** * Generates CSV file with product's list according to the collection in the $this->_list * @return array */ public function generateCollectionList($filename) { if (!is_null($this->_list)) { $items = $this->_list->getItems(); if (count($items) > 0) { $io = new Varien_Io_File(); $path = Mage::getBaseDir('var') . DS . 'export' . DS . 'specialsubscription'; $name = $filename; // $name=md5(microtime()); $file = $path . DS . $name . '.csv'; $io->setAllowCreateFolders(true); $io->open(array('path' => $path)); $io->streamOpen($file, 'w+'); $io->streamLock(true); $io->streamWriteCsv($this->_getCsvHeaders($items)); foreach ($items as $item) { $io->streamWriteCsv($item->getData()); } /* return array( 'type' => 'filename', 'value' => $file, 'rm' => false // can delete file after use );*/ return $file; } } }
public function getCsvFileEnhanced() { $collectionData = $this->getCollection()->getData(); $this->_isExport = true; $io = new Varien_Io_File(); $path = Mage::getBaseDir('var') . DS . 'export' . DS; $name = md5(microtime()); $file = $path . DS . $name . '.csv'; while (file_exists($file)) { sleep(1); $name = md5(microtime()); $file = $path . DS . $name . '.csv'; } $io->setAllowCreateFolders(true); $io->open(array('path' => $path)); $io->streamOpen($file, 'w+'); $io->streamLock(true); if ($this->_columns) { $io->streamWriteCsv($this->_columns); } foreach ($collectionData as $item) { if ($this->_removeIndexes && is_array($this->_removeIndexes)) { foreach ($this->_removeIndexes as $index) { unset($item[$index]); } } $io->streamWriteCsv($item); } $io->streamUnlock(); $io->streamClose(); return array('type' => 'filename', 'value' => $file, 'rm' => true); }
/** * @$forceCreation true overwrites existing entities with the new values */ public function import($forceCreation = false) { if (is_null($this->_entity)) { throw Mage::exception('Please specify a valid entity.'); } if (!file_exists($this->_importFile)) { throw Mage::exception('Please specify a valid csv file.'); } if (is_null($this->_storeId)) { throw Mage::exception('Please specify a valid store.'); } $io = new Varien_Io_File(); $io->streamOpen($this->_importFile, 'r'); $io->streamLock(true); $firstLine = true; while (false !== ($line = $io->streamReadCsv())) { if ($firstLine) { $firstLine = false; $this->_headerColumns = $line; continue; } $data = array(); foreach ($this->_headerColumns as $key => $val) { $data[$val] = $line[$key]; } $this->_importEntity($data, $forceCreation); } }
public function getFile($downloadName) { Varien_Profiler::start('cdn_download_file_' . $downloadName); $adapter = $this->getAdapter(); if ($adapter) { $fileName = Mage::helper('mycdn')->getRelativeFile($downloadName); $image = $adapter->downloadFile($fileName); if ($image) { $bn = new Zend_Filter_BaseName(); $image_name = $bn->filter($downloadName); $dn = new Zend_Filter_Dir(); $image_path = $dn->filter($downloadName); $file = new Varien_Io_File(); $file->setAllowCreateFolders(true); $file->open(['path' => $image_path]); $file->streamOpen($image_name); $file->streamLock(true); $file->streamWrite($image); $file->streamUnlock(); $file->streamClose(); Mage::helper('mycdn')->addLog('[DOWNLOADED] File downloaded to ' . $downloadName); Varien_Profiler::stop('cdn_download_file_' . $downloadName); //saving to cache Mage::helper('mycdn')->savePathInCache($fileName, $this->getUrl($fileName)); return true; } else { Mage::helper('mycdn')->addLog('[NOT DOWNLOADED] File not downloaded to ' . $downloadName); } } Varien_Profiler::stop('cdn_download_file_' . $downloadName); return false; }
public function importAction() { try { $productId = $this->getRequest()->getParam('id'); $fileName = $this->getRequest()->getParam('Filename'); $path = Mage::getBaseDir('var') . DS . 'import' . DS; $uploader = new Mage_Core_Model_File_Uploader('file'); $uploader->setAllowedExtensions(array('csv')); $uploader->setAllowRenameFiles(false); $uploader->setFilesDispersion(false); $result = $uploader->save($path, $fileName); $io = new Varien_Io_File(); $io->open(array('path' => $path)); $io->streamOpen($path . $fileName, 'r'); $io->streamLock(true); while ($data = $io->streamReadCsv(';', '"')) { if ($data[0]) { $model = Mage::getModel('giftcards/pregenerated')->load($data[0], 'card_code'); if ($model->getId()) { continue; } $model->setCardCode($data[0]); $model->setCardStatus(1); $model->setProductId($productId); $model->save(); } else { continue; } } } catch (Exception $e) { $result = array('error' => $e->getMessage(), 'errorcode' => $e->getCode()); } $this->getResponse()->setBody(Mage::helper('core')->jsonEncode($result)); }
/** * Generates CSV file with product's list according to the collection in the $this->_list * @return array */ public function getVendorCommision() { if (!is_null($this->_list)) { $items = $this->_list->getItems(); if (count($items) > 0) { $io = new Varien_Io_File(); $path = Mage::getBaseDir('var') . DS . 'export' . DS; $name = md5(microtime()); $file = $path . DS . $name . '.csv'; $io->setAllowCreateFolders(true); $io->open(array('path' => $path)); $io->streamOpen($file, 'w+'); $io->streamLock(true); $headers = $this->_getCsvHeaders($items); $io->streamWriteCsv($headers); foreach ($items as $payment) { $data = array(); $data = $payment->getData(); $datafinal = array(); foreach ($data as $key => $datavalue) { $val = strip_tags($datavalue); $datafinal[$key] = $val; } $io->streamWriteCsv($datafinal); } return array('type' => 'filename', 'value' => $file, 'rm' => true); } } }
protected function _generateStoreCss($type, $storeCode) { if (!Mage::app()->getStore($storeCode)->getIsActive()) { return false; } $fileName = $type . '_' . $storeCode . '.css'; $file = Mage::helper('legenda/config')->getGeneratedCssDir() . $fileName; $templateFile = 'smartwave/legenda/css/' . $type . '.phtml'; Mage::register('legenda_css_generate_store', $storeCode); try { $tempalte = Mage::app()->getLayout()->createBlock("core/template")->setData('area', 'frontend')->setTemplate($templateFile)->toHtml(); if (empty($tempalte)) { throw new Exception(Mage::helper('legenda')->__("Template file is empty or doesn't exist: %s", $templateFile)); return false; } $io = new Varien_Io_File(); $io->setAllowCreateFolders(true); $io->open(array('path' => Mage::helper('legenda/config')->getGeneratedCssDir())); $io->streamOpen($file, 'w+'); $io->streamLock(true); $io->streamWrite($tempalte); $io->streamUnlock(); $io->streamClose(); } catch (Exception $exception) { Mage::getSingleton('adminhtml/session')->addError(Mage::helper('legenda')->__('Failed generating CSS file: %s in %s', $fileName, Mage::helper('legenda/config')->getGeneratedCssDir()) . '<br/>Message: ' . $exception->getMessage()); Mage::logException($exception); return false; } Mage::unregister('legenda_css_generate_store'); return true; }
/** * Generates CSV file with product's list according to the collection in the $this->_list * @return array */ public function getCsvData() { if (!is_null($this->_list)) { $items = $this->_list->getItems(); if (count($items) > 0) { $io = new Varien_Io_File(); $path = Mage::getBaseDir('var') . DS . 'export' . DS; $name = md5(microtime()); $file = $path . DS . $name . '.csv'; $io->setAllowCreateFolders(true); $io->open(array('path' => $path)); $io->streamOpen($file, 'w+'); $io->streamLock(true); $headers = $this->_getCsvHeaders($items); $notAllowedValues = array("currency", "base_grand_total", "base_total_paid", "grand_total", "total_paid"); foreach ($headers as $key => $value) { if (in_array($value, $notAllowedValues)) { unset($headers[$key]); } } $io->streamWriteCsv($headers); foreach ($items as $payment) { $data = $payment->getData(); unset($data['currency']); unset($data['base_grand_total']); unset($data['grand_total']); unset($data['total_paid']); unset($data['base_total_paid']); $io->streamWriteCsv($data); } return array('type' => 'filename', 'value' => $file, 'rm' => true); } } }
protected function generateStoreCss($type, $storeCode) { if (!Mage::app()->getStore($storeCode)->getIsActive()) { return; } $str1 = '_' . $storeCode; $str2 = $type . $str1 . '.css'; $str3 = Mage::helper('mango/cssconfig')->getCssConfigDir() . $str2; $str4 = 'mango/css/' . $type . '.phtml'; Mage::register('cssgen_store', $storeCode); try { $block = Mage::app()->getLayout()->createBlock("core/template")->setData('area', 'frontend')->setTemplate($str4)->toHtml(); if (empty($block)) { throw new Exception(Mage::helper('mango')->__("Template file is empty or doesn't exist: %s", $str4)); } $file = new Varien_Io_File(); $file->setAllowCreateFolders(true); $file->open(array('path' => Mage::helper('mango/cssconfig')->getCssConfigDir())); $file->streamOpen($str3, 'w+'); $file->streamLock(true); $file->streamWrite($block); $file->streamUnlock(); $file->streamClose(); } catch (Exception $e) { Mage::getSingleton('adminhtml/session')->addError(Mage::helper('mango')->__('Failed generating CSS file: %s in %s', $str2, Mage::helper('mango/cssconfig')->getCssConfigDir()) . '<br/>Message: ' . $e->getMessage()); Mage::logException($e); } Mage::unregister('cssgen_store'); }
public function generateStoreCss($x0c, $x0e = '') { $x12 = $x0e ? '_' . $x0e : ''; $x13 = '_' . $x0c . $x12 . '.css'; $x14 = $this->_cssDirPath . $x13; $x15 = 'infortis/ultimo/css/' . $x0c . '.phtml'; Mage::register('cssgen_store', $x0e); try { $x16 = Mage::app()->getLayout()->createBlock("core/template")->setData('area', 'frontend')->setTemplate($x15)->toHtml(); if (empty($x16)) { throw new Exception(Mage::helper('ultimo')->__("Template file is empty or doesn't exist: %s", $x15)); } $x17 = new Varien_Io_File(); $x17->setAllowCreateFolders(true); $x17->open(array('path' => $this->_cssDirPath)); $x17->streamOpen($x14, 'w+'); $x17->streamLock(true); $x17->streamWrite($x16); $x17->streamUnlock(); $x17->streamClose(); Mage::getSingleton('adminhtml/session')->addSuccess(Mage::helper('ultimo')->__('CSS file %s has been refreshed', $x13)); } catch (Exception $x18) { Mage::getSingleton('adminhtml/session')->addError(Mage::helper('ultimo')->__('Failed refreshing css file %s in %s', $x13, Mage::helper('ultimo')->getGeneratedCssPath()) . '<br/>Message: ' . $x18->getMessage()); Mage::logException($x18); } Mage::unregister('cssgen_store'); }
public function massConfigGenAction() { $configArray = array(); try { $ids = $this->getRequest()->getPost('ids', array()); foreach ($ids as $id) { $model = Mage::getModel("configgen/config")->load($id); $configArray[] = $model->getData(); } $output = $this->getLayout()->createBlock('core/template')->setTemplate('proxiblue_configgen.phtml')->setConfigItems($configArray); $io = new Varien_Io_File(); $path = Mage::getBaseDir('var') . DS . 'export' . DS; $name = md5(microtime()); $file = $path . DS . $name . '.php'; $io->setAllowCreateFolders(true); $io->open(array('path' => $path)); $io->streamOpen($file, 'w+'); $io->streamLock(true); $io->streamWrite($output->toHtml()); $io->streamUnlock(); $io->streamClose(); $this->_prepareDownloadResponse('proxiblue_generated_config.php', array('type' => 'filename', 'value' => $file, 'rm' => true)); Mage::getSingleton("adminhtml/session")->addSuccess(Mage::helper("adminhtml")->__("Config was generated")); } catch (Exception $e) { Mage::getSingleton("adminhtml/session")->addError($e->getMessage()); } $this->_redirect('*/*/'); }
/** * After any system config is saved */ public function cssgenerate() { $section = Mage::app()->getRequest()->getParam('section'); if ($section == 'themeoptions') { $store_ids = array(); if (Mage::app()->getRequest()->getParam('store') && Mage::app()->getRequest()->getParam('website')) { $store_ids[] = Mage::getModel("core/store")->load(Mage::app()->getRequest()->getParam('store'))->getStore_id(); } elseif (Mage::app()->getRequest()->getParam('website')) { $store_ids = Mage::getModel('core/website')->load(Mage::app()->getRequest()->getParam('website'))->getstoreIds(); } else { foreach (Mage::app()->getWebsites() as $website) { foreach ($website->getGroups() as $group) { $stores = $group->getStores(); foreach ($stores as $store) { $store_ids[] = $store->getId(); } } } } foreach ($store_ids as $store_id) { $this->setLocation($store_id); if (!$this->getConfig('reset_css', $store_id)) { $css = 'h1,h2,h3,h4,h5,h6{'; if ($this->getConfig('font_main', $store_id)) { $css .= 'font-family:' . str_replace("+", " ", $this->getConfig('font', $store_id)) . ';font-weight:' . $this->getConfig('font_weight', $store_id) . ';'; } $css .= 'color:' . $this->getConfig('title_color', $store_id) . '}'; $image_bg = Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_SKIN) . 'frontend/' . $this->dir_store . '/images/pattern/' . $this->getConfig('bg_pattern', $store_id) . '.png'; $css .= 'body{'; if ($this->getConfig('font_content_main', $store_id)) { $css .= 'font-family:' . str_replace("+", " ", $this->getConfig('font_content', $store_id)) . ';font-weight:' . $this->getConfig('font_contentweight', $store_id) . ';background-color:' . $this->getConfig('bg_color', $store_id) . ';'; } $css .= 'color:' . $this->getConfig('text_color', $store_id) . ';'; if ($this->getConfig('bg_pattern', $store_id)) { $css .= 'background-image:url("' . $image_bg . '")'; } $css .= '}'; $css .= 'a{color:' . $this->getConfig('link_color', $store_id) . '}'; $css .= 'a:hover{color:' . $this->getConfig('link_hover_color', $store_id) . '}'; } else { $css = ''; } try { $fh = new Varien_Io_File(); $fh->setAllowCreateFolders(true); $fh->open(array('path' => $this->dirPath)); $fh->streamOpen($this->filePath, 'w+'); $fh->streamLock(true); $fh->streamWrite($css); $fh->streamUnlock(); $fh->streamClose(); } catch (Exception $e) { Mage::getSingleton('adminhtml/session')->addError(Mage::helper('themeoptions')->__('Failed creation custom css rules. ' . $e->getMessage())); } } } }
private function _generateCss($store) { $io = new Varien_Io_File(); $path = Mage::getBaseDir("skin") . DS . 'frontend' . DS . 'base' . DS . 'default' . DS . 'css' . DS . 'weltpixel' . DS; $name = 'color_' . $store->getCode() . '.css'; $file = $path . DS . $name; $io->setAllowCreateFolders(true); $io->open(array('path' => $path)); $io->streamOpen($file, 'w+'); $io->streamLock(true); $cssContent = Mage::helper('selector')->getDynamicCssContent($store->getId()); $io->streamWrite($cssContent); $io->close(); }
protected function _debugWriteToFile($str) { if (!$this->_debugIoAdapter) { $this->_debugIoAdapter = new Varien_Io_File(); $dir = $this->_debugIoAdapter->dirname($this->_debugFile); $this->_debugIoAdapter->checkAndCreateFolder($dir); $this->_debugIoAdapter->open(array('path' => $dir)); $this->_debugFile = basename($this->_debugFile); } $this->_debugIoAdapter->streamOpen($this->_debugFile, 'a'); $this->_debugIoAdapter->streamLock(); $this->_debugIoAdapter->streamWrite($str); $this->_debugIoAdapter->streamUnlock(); $this->_debugIoAdapter->streamClose(); }
/** * Generates CSV file with product's list according to the collection in the $this->_list * @return array */ public function generateMlnList($type) { $io = new Varien_Io_File(); $path = Mage::getBaseDir('var') . DS . 'export' . DS; $name = md5(microtime()); $file = $path . DS . $name . '.csv'; $io->setAllowCreateFolders(true); $io->open(array('path' => $path)); $io->streamOpen($file, 'w+'); $io->streamLock(true); $io->streamWriteCsv($this->_getCsvHeaders($items)); foreach ($this->_getEmail($type) as $data) { $io->streamWriteCsv(array($data['email'], $data['field_name'])); } return array('type' => 'filename', 'value' => $file, 'rm' => true); }
public function cronImportAction() { $request = $this->getRequest(); $path = $request->getParam('path', false); $delimiter = $request->getParam('delimiter', ';'); $enclosure = $request->getParam('enclosure', '"'); try { $io = new Varien_Io_File(); $io->streamOpen(Mage::getBaseDir() . $path, 'r'); $io->streamLock(true); $map = $io->streamReadCsv($delimiter, $enclosure); $prodModel = Mage::getSingleton('catalog/product'); $db = Mage::getSingleton('core/resource')->getConnection('core_write'); $db->query('set foreign_key_checks = 0'); $db->query("delete from {$db->getTableName('customerprices_prices')}"); $errors = array(); while ($data = $io->streamReadCsv($delimiter, $enclosure)) { $prod = $prodModel->loadByAttribute('sku', $data[1]); if (!$prod || !$prod->getId()) { continue; } $customer = Mage::getModel('customer/customer')->setWebsiteId(1)->loadByEmail($data[0]); if (!$customer->getId()) { Mage::log('Customer not exist - ' . $data[0], null, 'Customerprices_import.log'); $errors[] = $data[0]; continue; } $prices = Mage::getModel('customerprices/prices'); $prices->setProductId($prod->getId()); $prices->setCustomerEmail($data[0]); $prices->setCustomerId($customer->getId()); $prices->setQty($data[2]); $prices->setPrice($data[3]); $prices->setSpecialPrice($data[4]); $prices->save(); } echo 'FINISHED' . "\n"; if (count($errors)) { echo "Check Customerprices_import.log for errors"; } } catch (Mage_Core_Exception $e) { echo $e->getMessage(); } catch (Exception $e) { echo $e->getMessage(); } }
/** * Create temp csv file and write export * * @return mixed */ protected function _createFile() { $dir = $this->_getTmpDir(); $fileName = Mage::getStoreConfig(self::XML_PATH_SETTINGS_FINDFEED_FILENAME); if (!$dir || !$fileName) { return false; } if (!($attributes = $this->_getImportAttributes()) || count($attributes) <= 0) { return false; } $headers = array_keys($attributes); $file = new Varien_Io_File(); $file->checkAndCreateFolder($dir); $file->cd($dir); $file->streamOpen($fileName, 'w+'); $file->streamLock(); $file->streamWriteCsv($headers, self::SEPARATOR, self::ENCLOSURE); $productCollectionPrototype = Mage::getResourceModel('catalog/product_collection'); $productCollectionPrototype->setPageSize(self::COLLECTION_PAGE_SIZE); $pageNumbers = $productCollectionPrototype->getLastPageNumber(); unset($productCollectionPrototype); for ($i = 1; $i <= $pageNumbers; $i++) { $productCollection = Mage::getResourceModel('catalog/product_collection'); $productCollection->addAttributeToSelect($attributes); $productCollection->addAttributeToFilter('is_imported', 1); $productCollection->setPageSize(self::COLLECTION_PAGE_SIZE); $productCollection->setCurPage($i)->load(); foreach ($productCollection as $product) { $attributesRow = array(); foreach ($attributes as $key => $value) { $attributesRow[$key] = $product->getData($value); } $file->streamWriteCsv($attributesRow, self::SEPARATOR, self::ENCLOSURE); } unset($productCollection); } $file->streamUnlock(); $file->streamClose(); if ($file->fileExists($fileName)) { return $fileName; } return false; }
public function getCsvFileEnhanced() { $this->_isExport = true; $this->_prepareGrid(); $io = new Varien_Io_File(); $path = Mage::getBaseDir('var') . DS . 'export' . DS; //best would be to add exported path through config $name = md5(microtime()); $file = $path . DS . $name . '.csv'; /** * It is possible that you have name collision (summer/winter time +1/-1) * Try to create unique name for exported .csv file */ while (file_exists($file)) { sleep(1); $name = md5(microtime()); $file = $path . DS . $name . '.csv'; } $io->setAllowCreateFolders(true); $io->open(array('path' => $path)); $io->streamOpen($file, 'w+'); $io->streamLock(true); $io->streamWriteCsv($this->_getExportHeaders()); //$this->_exportPageSize = load data from config $this->_exportIterateCollectionEnhanced('_exportCsvItem', array($io)); if ($this->getCountTotals()) { $io->streamWriteCsv($this->_getExportTotals()); } $io->streamUnlock(); $io->streamClose(); return array( 'type' => 'filename', 'value' => $file, 'rm' => false // can delete file after use ); }
/** * Check file in database storage if needed and place it on file system * * @param string $filePath * @return bool */ protected function _processDatabaseFile($filePath) { if (!Mage::helper('core/file_storage_database')->checkDbUsage()) { return false; } $relativePath = Mage::helper('core/file_storage_database')->getMediaRelativePath($filePath); $file = Mage::getModel('core/file_storage_database')->loadByFilename($relativePath); if (!$file->getId()) { return false; } $directory = dirname($filePath); @mkdir($directory, 0777, true); $io = new Varien_Io_File(); $io->cd($directory); $io->streamOpen($filePath); $io->streamLock(true); $io->streamWrite($file->getContent()); $io->streamUnlock(); $io->streamClose(); return true; }
/** * Retrieve a file container array by grid data as CSV * * Return array with keys type and value * * @return array */ public function getCsvFile($delimiter = ';', $enclosure = '"') { $this->_isExport = true; $this->_prepareGrid(); $io = new Varien_Io_File(); $path = Mage::getBaseDir('var') . DS . 'export' . DS; $name = md5(microtime()); $file = $path . DS . $name . '.csv'; $io->setAllowCreateFolders(true); $io->open(array('path' => $path)); $io->streamOpen($file, 'w+'); $io->streamLock(true); $io->streamWriteCsv($this->_getExportHeaders(), $delimiter, $enclosure); $this->_exportIterateCollection('_exportCsvItem', array($io, $delimiter, $enclosure)); if ($this->getCountTotals()) { $io->streamWriteCsv($this->_getExportTotals(), $delimiter, $enclosure); } $io->streamUnlock(); $io->streamClose(); return array('type' => 'filename', 'value' => $file, 'rm' => true); }
/** * Generates CSV file with items's list according to the collection in the $this->_list * @return array */ public function generateQuestList() { if (!is_null($this->_list)) { $items = $this->_list->getItems(); if (count($items) > 0) { $io = new Varien_Io_File(); $path = Mage::getBaseDir('var') . DS . 'export' . DS; $name = md5(microtime()); $file = $path . DS . $name . '.csv'; $io->setAllowCreateFolders(true); $io->open(array('path' => $path)); $io->streamOpen($file, 'w+'); $io->streamLock(true); $io->streamWriteCsv($this->_getCsvHeaders($items)); foreach ($items as $question) { $io->streamWriteCsv($question->getData()); } return array('type' => 'filename', 'value' => $file, 'rm' => true); } } }
public function saveAction() { $request = $this->getRequest(); $path = ''; $delimiter = $request->getParam('delimiter', false); $enclosure = $request->getParam('enclosure', false); try { $file = $_FILES['file']['name']; $path = Mage::getBaseDir('var') . DS . 'import' . DS; $uploader = new Varien_File_Uploader('file'); $uploader->setAllowRenameFiles(false); $uploader->setFilesDispersion(false); $uploader->save($path, $file); $io = new Varien_Io_File(); $io->open(array('path' => $path)); $io->streamOpen($path . $file, 'r'); $io->streamLock(true); $map = $io->streamReadCsv($delimiter, $enclosure); while ($data = $io->streamReadCsv($delimiter, $enclosure)) { if ($data[0]) { $model = Mage::getModel('giftcards/giftcards'); $model->setCardAmount($data[1]); $model->setCardCode($data[0]); $model->setCardStatus(1); $model->save(); } else { continue; } } Mage::getSingleton('adminhtml/session')->addSuccess(Mage::helper('giftcards')->__('Gift Cards where succesfully imported ')); } catch (Mage_Core_Exception $e) { Mage::getSingleton('adminhtml/session')->addError($e->getMessage()); } catch (Exception $e) { Mage::getSingleton('adminhtml/session')->addError(Mage::helper('giftcards')->__($e->getMessage() . 'An error occurred while importing Gift Cards.')); } $this->getResponse()->setRedirect($this->getUrl("*/*/index")); }
/** * Debug write to file process * * @param string $str */ protected function _debugWriteToFile($str) { $str = '## ' . date('Y-m-d H:i:s') . "\r\n" . $str; if (!$this->_debugIoAdapter) { $this->_debugIoAdapter = new Varien_Io_File(); $dir = Mage::getBaseDir() . DS . $this->_debugIoAdapter->dirname($this->_debugFile); $this->_debugIoAdapter->checkAndCreateFolder($dir); $this->_debugIoAdapter->open(array('path' => $dir)); $this->_debugFile = basename($this->_debugFile); } $this->_debugIoAdapter->streamOpen($this->_debugFile, 'a'); $this->_debugIoAdapter->streamLock(); $this->_debugIoAdapter->streamWrite($str); $this->_debugIoAdapter->streamUnlock(); $this->_debugIoAdapter->streamClose(); }
/** * Directory structure initializing */ protected function _initFilesystem() { $this->_createWriteableDir($this->getTargetDir()); $this->_createWriteableDir($this->getQuoteTargetDir()); $this->_createWriteableDir($this->getOrderTargetDir()); // Directory listing and hotlink secure $io = new Varien_Io_File(); $io->cd($this->getTargetDir()); if (!$io->fileExists($this->getTargetDir() . DS . '.htaccess')) { $io->streamOpen($this->getTargetDir() . DS . '.htaccess'); $io->streamLock(true); $io->streamWrite("Order deny,allow\nDeny from all"); $io->streamUnlock(); $io->streamClose(); } }
public function exportMenuData() { try { //get all menu group data $groups = Mage::getModel('jmmegamenu/jmmegamenugroup')->getCollection()->load()->getItems(); $items = Mage::getModel('jmmegamenu/jmmegamenu')->getCollection()->load()->getItems(); $i = $j = 0; if ($groups && $items) { $content = "<root>"; //Make menu groups nodes $content .= "<groups>"; foreach ($groups as $group) { $content .= "<group>"; $data = $group->getData(); foreach ($data as $key => $value) { if (in_array($key, array('title', 'description'))) { $value = "<![CDATA[{$value}]]>"; } $content .= "<{$key}>" . $value . "</{$key}>"; } $content .= "</group>"; $i++; } $content .= "</groups>"; //Make menu items nodes $content .= "<items>"; foreach ($items as $item) { $content .= "<item>"; if ($item->getData('menutype') == '0') { // is category menu link $item->setData('link', '#'); $item->setData('url', '#'); $item->setData('catid', null); $item->setData('category', null); } $data = $item->getData(); foreach ($data as $key => $value) { if (in_array($key, array('title', 'link', 'url', 'mega_colxw', 'desc', 'image', 'description', 'contentxml', 'mega_class'))) { $value = "<![CDATA[{$value}]]>"; } $content .= "<{$key}>" . $value . "</{$key}>"; } $content .= "</item>"; $j++; } $content .= "</items>"; $content .= "</root>"; //write to file $file = new Varien_Io_File(); $file->setAllowCreateFolders(true); $file->open(array('path' => $this->_importSrc)); $file->streamOpen($this->_importSrc . 'menus.xml', 'w+'); $file->streamLock(true); $file->streamWrite($content); $file->streamUnlock(); $file->streamClose(); if ($i) { Mage::getSingleton('adminhtml/session')->addSuccess(Mage::helper('jmbasetheme')->__("%s Menu Group(s) were exported successfully.", $i)); if ($j) { Mage::getSingleton('adminhtml/session')->addSuccess(Mage::helper('jmbasetheme')->__("%s Menu Item(s) were exported successfully.", $j)); } } else { Mage::getSingleton('adminhtml/session')->addNotice(Mage::helper('jmbasetheme')->__('No items were imported')); } } } catch (Exception $e) { Mage::getSingleton('adminhtml/session')->addError($e->getMessage()); Mage::logException($e); } }
/** * Retrieve a file container array by grid data as MS Excel 2003 XML Document * * Return array with keys type and value * * @return string */ public function getExcelFile($sheetName = '') { $this->_isExport = true; $this->_prepareGrid(); $parser = new Varien_Convert_Parser_Xml_Excel(); $io = new Varien_Io_File(); $path = Mage::getBaseDir('var') . DS . 'export' . DS; $name = md5(microtime()); $file = $path . DS . $name . '.xml'; $io->setAllowCreateFolders(true); $io->open(array('path' => $path)); $io->streamOpen($file, 'w+'); $io->streamLock(true); $io->streamWrite($parser->getHeaderXml($sheetName)); $io->streamWrite($parser->getRowXml($this->_getExportHeaders())); $this->_exportIterateCollection('_exportExcelItem', array($io, $parser)); if ($this->getCountTotals()) { $io->streamWrite($parser->getRowXml($this->_getExportTotals())); } $io->streamWrite($parser->getFooterXml()); $io->streamUnlock(); $io->streamClose(); return array('type' => 'filename', 'value' => $file, 'rm' => true); }
/** * Generate products feed for ChannelEngine */ public function generateFeed() { $start_memory = memory_get_usage(); /** * Prepare categories array */ $categoryArray = array(); $parent = Mage::app()->getWebsite(true)->getDefaultStore()->getRootCategoryId(); $category = Mage::getModel('catalog/category'); if ($category->checkId($parent)) { $storeCategories = $category->getCategories($parent, 0, true, true, true); foreach ($storeCategories as $_category) { $categoryArray[$_category->getId()] = $_category->getData(); } } /** * Prepare products relation */ // $productsRelation = array(); // $_resource = Mage::getSingleton('core/resource'); // $_connection = $_resource->getConnection('core_read'); // $relations = $_connection->fetchAll("SELECT * FROM " . $_resource->getTableName('catalog/product_relation')); // foreach($relations as $relation) { // $productsRelation[$relation['child_id']] = $relation['parent_id']; // } /** * Export products from each store. * Note: products with undefined website id will not be export. */ foreach (Mage::app()->getStores() as $_store) { Mage::app()->setCurrentStore($_store); $path = Mage::getBaseDir('media') . DS . 'channelengine' . DS; $storeConfig = $this->_helper->getConfig($_store->getId()); $name = $storeConfig['general']['tenant'] . '_products.xml'; $file = $path . DS . $name; $io = new Varien_Io_File(); $io->setAllowCreateFolders(true); $io->open(array('path' => $path)); $io->streamOpen($file, 'w+'); $io->streamLock(true); $io->streamWrite('<?xml version="1.0" encoding="UTF-8"?>' . "\n"); $io->streamWrite('<Products xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">' . "\n"); /** * Prepare custom options array */ $storeId = $_store->getId(); $optionsArray = array(); $_options = Mage::getModel('catalog/product_option')->getCollection()->addTitleToResult($storeId)->addPriceToResult($storeId)->addValuesToResult($storeId)->setOrder('sort_order', 'asc'); foreach ($_options as $_option) { $productId = $_option->getProductId(); $optionId = $_option->getOptionId(); $optionsArray[$productId][$optionId] = $_option->getData(); if ($_option->getType() == Mage_Catalog_Model_Product_Option::OPTION_TYPE_DROP_DOWN) { $optionsArray[$productId][$optionId]['values'] = $_option->getValues(); } } /** * Retrieve product collection with all visible attributes */ if (Mage::helper('catalog/product_flat')->isEnabled($storeId)) { Mage::getResourceSingleton('catalog/product_flat')->setStoreId($storeId); } $collection = Mage::getModel('catalog/product')->getCollection(); if (Mage::helper('catalog/product_flat')->isEnabled($storeId)) { $collection->getEntity()->setStoreId($storeId); } $systemAttributes = $attributesToSelect = array('name', 'description', 'image', 'url_key', 'price', 'cost', 'special_price', 'special_from_date', 'special_to_date', 'visibility', 'msrp'); $visibleAttributes = array(); $attributes = Mage::getSingleton('eav/config')->getEntityType(Mage_Catalog_Model_Product::ENTITY)->getAttributeCollection(); foreach ($attributes as $attribute) { if ($attribute->getIsVisible() && $attribute->getIsVisibleOnFront() || in_array($attribute->getAttributeCode(), $systemAttributes)) { $code = $attribute->getAttributeCode(); $visibleAttributes[$code]['label'] = $attribute->getFrontendLabel(); foreach ($attribute->getSource()->getAllOptions(false) as $option) { $visibleAttributes[$code]['values'][$option['value']] = $option['label']; } if (!in_array($code, $attributesToSelect)) { $attributesToSelect[] = $code; } } } if (!empty($this->_config[$storeId]['feed']['gtin'])) { $attributesToSelect[] = $this->_config[$storeId]['feed']['gtin']; } if (count($attributesToSelect) > self::ATTRIBUTES_LIMIT && !$collection->isEnabledFlat()) { $error = $this->_helper->__('Too many visible attributes. Please enable catalog product flat mode.'); Mage::getSingleton('adminhtml/session')->addError($error); echo 'redirect'; return false; } $collection->addAttributeToSelect($attributesToSelect, 'left')->addFieldToFilter('type_id', array('in' => array('simple')))->addStoreFilter($_store)->addAttributeToFilter('status', 1)->addAttributeToFilter('visibility', array('in' => array(Mage_Catalog_Model_Product_Visibility::VISIBILITY_IN_CATALOG, Mage_Catalog_Model_Product_Visibility::VISIBILITY_IN_SEARCH, Mage_Catalog_Model_Product_Visibility::VISIBILITY_BOTH)))->addAttributeToSort('entity_id', 'DESC'); // Add qty and category fields to select $collection->getSelect()->joinLeft(array('csi' => Mage::getSingleton('core/resource')->getTableName('cataloginventory/stock_item')), '`e`.`entity_id` = `csi`.`product_id`', array('qty' => 'COALESCE(`qty`, 0)'))->joinLeft(array('ccp' => Mage::getSingleton('core/resource')->getTableName('catalog/category_product')), '`e`.`entity_id` = `ccp`.`product_id`', array('category_id' => 'MAX(`ccp`.`category_id`)'))->group('e.entity_id'); Mage::getSingleton('core/resource_iterator')->walk($collection->getSelect(), array(array($this, 'callbackGenerateFeed')), array('io' => $io, 'categories' => $categoryArray, 'attributes' => $visibleAttributes, 'systemAttributes' => $systemAttributes, 'options' => $optionsArray, 'store' => $_store, 'startMemory' => $start_memory)); $collection->clear()->getSelect()->reset('where'); $collection->addFieldToFilter('type_id', array('in' => array('configurable')))->addStoreFilter($_store)->addAttributeToFilter('status', 1)->addAttributeToSort('entity_id', 'DESC'); foreach ($collection as $_product) { $productAttributeOptions = $_product->getTypeInstance(true)->getConfigurableAttributesAsArray($_product); $superAttributes = array(); foreach ($productAttributeOptions as $superAttribute) { foreach ($superAttribute['values'] as $value) { $superAttributes[$superAttribute['attribute_code']][$value['value_index']] = $value; } } $parentData = $_product->getData(); $parentData['id'] = $parentData['entity_id']; $productModel = Mage::getModel('catalog/product'); $productModel->setData('entity_id', $parentData['entity_id']); $productModel->setData('url_key', $parentData['url_key']); $productModel->setData('store_id', $parentData['store_id']); $parentData['url'] = $productModel->getProductUrl(); $specialPrice = $parentData['special_price']; $specialFrom = $parentData['special_from_date']; $specialTo = $parentData['special_to_date']; $parentData['price'] = Mage::getModel('catalog/product_type_price')->calculateSpecialPrice($parentData['price'], $specialPrice, $specialFrom, $specialTo, $storeId); $xml = $this->_getProductXml($parentData, $categoryArray, array('systemAttributes' => $systemAttributes, 'attributes' => $visibleAttributes)); $_childProducts = Mage::getModel('catalog/product_type_configurable')->getUsedProductCollection($_product)->addAttributeToSelect($attributesToSelect); //->getUsedProducts(null, $_product); foreach ($_childProducts as $_child) { $childData = $_child->getData(); $childData['id'] = $childData['entity_id']; $childData['parent_id'] = $parentData['id']; $childData['price'] = $parentData['price']; $childData['url'] = $parentData['url']; $childData['description'] = $parentData['description']; if (isset($childData['stock_item']) && $childData['stockItem'] !== null) { $stock = $childData['stock_item']->getData(); $childData['qty'] = $stock['qty']; } if (!isset($childData['image']) || $childData['image'] == 'no_slection') { $childData['image'] = $parentData['image']; } foreach ($superAttributes as $code => $superAttribute) { if (isset($childData[$code])) { $priceValue = $superAttribute[$childData[$code]]['pricing_value']; if ($superAttribute[$childData[$code]]['is_percent']) { $newPrice = $childData['price'] + $childData['price'] * $priceValue / 100; } else { $newPrice = $childData['price'] + $priceValue; } $childData['price'] = $newPrice; } } $xml .= $this->_getProductXml($childData, $categoryArray, array('systemAttributes' => $systemAttributes, 'attributes' => $visibleAttributes)); } $io->streamWrite($xml); } $io->streamWrite('</Products>'); $io->streamUnlock(); $io->streamClose(); Mage::log("Product feed {$name} was generated successfully"); } return true; }