/app/code/core/Mage/Adminhtml/controllers/System/Convert/ProfileController.php
https://bitbucket.org/acidel/buykoala · PHP · 317 lines · 203 code · 42 blank · 72 comment · 20 complexity · 67edf2691fe427f1f190b03972935d2a MD5 · raw file
- <?php
- /**
- * Magento
- *
- * NOTICE OF LICENSE
- *
- * This source file is subject to the Open Software License (OSL 3.0)
- * that is bundled with this package in the file LICENSE.txt.
- * It is also available through the world-wide-web at this URL:
- * http://opensource.org/licenses/osl-3.0.php
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@magentocommerce.com so we can send you a copy immediately.
- *
- * DISCLAIMER
- *
- * Do not edit or add to this file if you wish to upgrade Magento to newer
- * versions in the future. If you wish to customize Magento for your
- * needs please refer to http://www.magentocommerce.com for more information.
- *
- * @category Mage
- * @package Mage_Adminhtml
- * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
- */
-
- /**
- * Convert Advanced admin controller
- *
- * @category Mage
- * @package Mage_Adminhtml
- * @author Magento Core Team <core@magentocommerce.com>
- */
- class Mage_Adminhtml_System_Convert_ProfileController extends Mage_Adminhtml_Controller_Action
- {
- protected function _initProfile($idFieldName = 'id')
- {
- $this->_title($this->__('System'))
- ->_title($this->__('Import and Export'))
- ->_title($this->__('Profiles'));
-
- $profileId = (int) $this->getRequest()->getParam($idFieldName);
- $profile = Mage::getModel('dataflow/profile');
-
- if ($profileId) {
- $profile->load($profileId);
- if (!$profile->getId()) {
- Mage::getSingleton('adminhtml/session')->addError(
- $this->__('The profile you are trying to save no longer exists'));
- $this->_redirect('*/*');
- return false;
- }
- }
-
- Mage::register('current_convert_profile', $profile);
-
- return $this;
- }
-
- /**
- * Profiles list action
- */
- public function indexAction()
- {
- $this->_title($this->__('System'))
- ->_title($this->__('Import and Export'))
- ->_title($this->__('Advanced Profiles'));
-
- if ($this->getRequest()->getQuery('ajax')) {
- $this->_forward('grid');
- return;
- }
- $this->loadLayout();
-
- /**
- * Set active menu item
- */
- $this->_setActiveMenu('system/convert');
-
- /**
- * Append profiles block to content
- */
- $this->_addContent(
- $this->getLayout()->createBlock('adminhtml/system_convert_profile', 'convert_profile')
- );
-
- /**
- * Add breadcrumb item
- */
- $this->_addBreadcrumb(
- Mage::helper('adminhtml')->__('Import/Export'),
- Mage::helper('adminhtml')->__('Import/Export Advanced'));
- $this->_addBreadcrumb(
- Mage::helper('adminhtml')->__('Advanced Profiles'),
- Mage::helper('adminhtml')->__('Advanced Profiles'));
-
- $this->renderLayout();
- }
-
- public function gridAction()
- {
- $this->getResponse()->setBody(
- $this->getLayout()->createBlock('adminhtml/system_convert_profile_grid')->toHtml()
- );
- }
-
- /**
- * Profile edit action
- */
- public function editAction()
- {
- $this->_initProfile();
- $this->loadLayout();
-
- $profile = Mage::registry('current_convert_profile');
-
- // set entered data if was error when we do save
- $data = Mage::getSingleton('adminhtml/session')->getConvertProfileData(true);
-
- if (!empty($data)) {
- $profile->addData($data);
- }
-
- $this->_title($profile->getId() ? $profile->getName() : $this->__('New Profile'));
-
- $this->_setActiveMenu('system/convert');
-
- $this->_addContent(
- $this->getLayout()->createBlock('adminhtml/system_convert_profile_edit')
- );
-
- /**
- * Append edit tabs to left block
- */
- $this->_addLeft($this->getLayout()->createBlock('adminhtml/system_convert_profile_edit_tabs'));
-
- $this->renderLayout();
- }
-
- /**
- * Create new profile action
- */
- public function newAction()
- {
- $this->_forward('edit');
- }
-
- /**
- * Delete profile action
- */
- public function deleteAction()
- {
- $this->_initProfile();
- $profile = Mage::registry('current_convert_profile');
- if ($profile->getId()) {
- try {
- $profile->delete();
- Mage::getSingleton('adminhtml/session')->addSuccess(
- Mage::helper('adminhtml')->__('The profile has been deleted.'));
- } catch (Exception $e){
- Mage::getSingleton('adminhtml/session')->addError($e->getMessage());
- }
- }
- $this->_redirect('*/*');
- }
-
- /**
- * Save profile action
- */
- public function saveAction()
- {
- if ($data = $this->getRequest()->getPost()) {
- if (!$this->_initProfile('profile_id')) {
- return;
- }
- $profile = Mage::registry('current_convert_profile');
-
- // Prepare profile saving data
- if (isset($data)) {
- $profile->addData($data);
- }
-
- try {
- $profile->save();
-
- Mage::getSingleton('adminhtml/session')->addSuccess(
- Mage::helper('adminhtml')->__('The profile has been saved.'));
- } catch (Exception $e){
- Mage::getSingleton('adminhtml/session')->addError($e->getMessage());
- Mage::getSingleton('adminhtml/session')->setConvertProfileData($data);
- $this->getResponse()->setRedirect($this->getUrl('*/*/edit', array('id' => $profile->getId())));
- return;
- }
- if ($this->getRequest()->getParam('continue')) {
- $this->_redirect('*/*/edit', array('id' => $profile->getId()));
- } else {
- $this->_redirect('*/*');
- }
- } else {
- Mage::getSingleton('adminhtml/session')->addError(
- $this->__('Invalid POST data (please check post_max_size and upload_max_filesize settings in your php.ini file).')
- );
- $this->_redirect('*/*');
- }
- }
-
- public function runAction()
- {
- $this->_initProfile();
- $this->loadLayout();
- $this->renderLayout();
- }
-
- public function batchRunAction()
- {
- if ($this->getRequest()->isPost()) {
- $batchId = $this->getRequest()->getPost('batch_id', 0);
- $rowIds = $this->getRequest()->getPost('rows');
-
- /* @var $batchModel Mage_Dataflow_Model_Batch */
- $batchModel = Mage::getModel('dataflow/batch')->load($batchId);
-
- if (!$batchModel->getId()) {
- return;
- }
- if (!is_array($rowIds) || count($rowIds) < 1) {
- return;
- }
- if (!$batchModel->getAdapter()) {
- return;
- }
-
- $batchImportModel = $batchModel->getBatchImportModel();
- $importIds = $batchImportModel->getIdCollection();
-
- $adapter = Mage::getModel($batchModel->getAdapter());
- $adapter->setBatchParams($batchModel->getParams());
-
- $errors = array();
- $saved = 0;
- foreach ($rowIds as $importId) {
- $batchImportModel->load($importId);
- if (!$batchImportModel->getId()) {
- $errors[] = Mage::helper('dataflow')->__('Skip undefined row.');
- continue;
- }
-
- try {
- $importData = $batchImportModel->getBatchData();
- $adapter->saveRow($importData);
- } catch (Exception $e) {
- $errors[] = $e->getMessage();
- continue;
- }
- $saved ++;
- }
-
- if (method_exists($adapter, 'getEventPrefix')) {
- /**
- * Event for process rules relations after products import
- */
- Mage::dispatchEvent($adapter->getEventPrefix() . '_finish_before', array(
- 'adapter' => $adapter
- ));
-
- /**
- * Clear affected ids for adapter possible reuse
- */
- $adapter->clearAffectedEntityIds();
- }
-
- $result = array(
- 'savedRows' => $saved,
- 'errors' => $errors
- );
- $this->getResponse()->setBody(Mage::helper('core')->jsonEncode($result));
- }
- }
-
- public function batchFinishAction()
- {
- $batchId = $this->getRequest()->getParam('id');
- if ($batchId) {
- $batchModel = Mage::getModel('dataflow/batch')->load($batchId);
- /* @var $batchModel Mage_Dataflow_Model_Batch */
-
- if ($batchModel->getId()) {
- $result = array();
- try {
- $batchModel->beforeFinish();
- } catch (Mage_Core_Exception $e) {
- $result['error'] = $e->getMessage();
- } catch (Exception $e) {
- $result['error'] = Mage::helper('adminhtml')->__('An error occurred while finishing process. Please refresh the cache');
- }
- $batchModel->delete();
- $this->getResponse()->setBody(Mage::helper('core')->jsonEncode($result));
- }
- }
- }
-
- /**
- * Customer orders grid
- *
- */
- public function historyAction() {
- $this->_initProfile();
- $this->getResponse()->setBody(
- $this->getLayout()->createBlock('adminhtml/system_convert_profile_edit_tab_history')->toHtml()
- );
- }
-
- protected function _isAllowed()
- {
- return Mage::getSingleton('admin/session')->isAllowed('admin/system/convert/profiles');
- }
- }