00001 <?php 00002 /** 00003 * Magento 00004 * 00005 * NOTICE OF LICENSE 00006 * 00007 * This source file is subject to the Open Software License (OSL 3.0) 00008 * that is bundled with this package in the file LICENSE.txt. 00009 * It is also available through the world-wide-web at this URL: 00010 * http://opensource.org/licenses/osl-3.0.php 00011 * If you did not receive a copy of the license and are unable to 00012 * obtain it through the world-wide-web, please send an email 00013 * to license@magentocommerce.com so we can send you a copy immediately. 00014 * 00015 * DISCLAIMER 00016 * 00017 * Do not edit or add to this file if you wish to upgrade Magento to newer 00018 * versions in the future. If you wish to customize Magento for your 00019 * needs please refer to http://www.magentocommerce.com for more information. 00020 * 00021 * @category Varien 00022 * @package Varien_Convert 00023 * @copyright Copyright (c) 2008 Irubin Consulting Inc. DBA Varien (http://www.varien.com) 00024 * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) 00025 */ 00026 00027 00028 /** 00029 * Convert profile 00030 * 00031 * @category Varien 00032 * @package Varien_Convert 00033 * @author Magento Core Team <core@magentocommerce.com> 00034 */ 00035 abstract class Varien_Convert_Profile_Abstract 00036 { 00037 protected $_actions; 00038 protected $_containers; 00039 protected $_exceptions = array(); 00040 protected $_dryRun; 00041 00042 protected $_actionDefaultClass = 'Varien_Convert_Action'; 00043 protected $_containerCollectionDefaultClass = 'Varien_Convert_Container_Collection'; 00044 00045 public function addAction(Varien_Convert_Action_Interface $action=null) 00046 { 00047 if (is_null($action)) { 00048 $action = new $this->_actionDefaultClass(); 00049 } 00050 $this->_actions[] = $action; 00051 $action->setProfile($this); 00052 return $action; 00053 } 00054 00055 public function setContainers(Varien_Convert_Container_Collection $containers) 00056 { 00057 $this->_containers = $containers; 00058 return $this; 00059 } 00060 00061 public function getContainers() 00062 { 00063 if (!$this->_containers) { 00064 $this->_containers = new $this->_containerCollectionDefaultClass(); 00065 } 00066 return $this->_containers; 00067 } 00068 00069 public function getContainer($name=null) 00070 { 00071 if (is_null($name)) { 00072 $name = '_default'; 00073 } 00074 return $this->getContainers()->getItem($name); 00075 } 00076 00077 public function addContainer($name, Varien_Convert_Container_Interface $container) 00078 { 00079 $container = $this->getContainers()->addItem($name, $container); 00080 $container->setProfile($this); 00081 return $container; 00082 } 00083 00084 public function getExceptions() 00085 { 00086 return $this->_exceptions; 00087 } 00088 00089 public function getDryRun() 00090 { 00091 return $this->_dryRun; 00092 } 00093 00094 public function setDryRun($flag) 00095 { 00096 $this->_dryRun = $flag; 00097 return $this; 00098 } 00099 00100 public function addException(Varien_Convert_Exception $e) 00101 { 00102 $this->_exceptions[] = $e; 00103 return $this; 00104 } 00105 00106 public function run() 00107 { 00108 if (!$this->_actions) { 00109 $e = new Varien_Convert_Exception("Could not find any actions for this profile"); 00110 $e->setLevel(Varien_Convert_Exception::FATAL); 00111 $this->addException($e); 00112 return; 00113 } 00114 00115 foreach ($this->_actions as $action) { 00116 $action->run(); 00117 } 00118 return $this; 00119 } 00120 }