Overview

Packages

  • currencysymbol
  • MAbout
  • Mage
    • Admin
    • Adminhtml
    • AdminNotification
    • Api
    • Api2
    • Authorizenet
    • Backup
    • Bundle
    • Captcha
    • Catalog
    • CatalogIndex
    • CatalogInventory
    • CatalogRule
    • CatalogSearch
    • Centinel
    • Checkout
    • Cms
    • Compiler
    • Connect
    • Contacts
    • Core
    • Cron
    • CurrencySymbol
    • Customer
    • Dataflow
    • Directory
    • DirtectPost
    • Downloadable
    • Eav
    • GiftMessage
    • GoogleAnalytics
    • GoogleBase
    • GoogleCheckout
    • ImportExport
    • Index
    • Install
    • Log
    • Media
    • Newsletter
    • Oauth
    • Page
    • PageCache
    • Paygate
    • Payment
    • Paypal
    • PaypalUk
    • Persistent
    • Poll
    • ProductAlert
    • Rating
    • Reports
    • Review
    • Rss
    • Rule
    • Sales
    • SalesRule
    • Sedfriend
    • Sendfriend
    • Shipping
    • Sitemap
    • Tag
    • Tax
    • Usa
    • Weee
    • Widget
    • Wishlist
    • XmlConnect
  • None
  • Phoenix
    • Moneybookers
  • PHP
  • Zend
    • Date
    • Mime
    • XmlRpc

Classes

  • Mage_ImportExport_Adminhtml_ExportController
  • Mage_ImportExport_Adminhtml_ImportController
  • Mage_ImportExport_Block_Adminhtml_Export_Edit
  • Mage_ImportExport_Block_Adminhtml_Export_Edit_Form
  • Mage_ImportExport_Block_Adminhtml_Export_Filter
  • Mage_ImportExport_Block_Adminhtml_Import_Edit
  • Mage_ImportExport_Block_Adminhtml_Import_Edit_Form
  • Mage_ImportExport_Block_Adminhtml_Import_Frame_Result
  • Mage_ImportExport_Helper_Data
  • Mage_ImportExport_Model_Abstract
  • Mage_ImportExport_Model_Config
  • Mage_ImportExport_Model_Export
  • Mage_ImportExport_Model_Export_Adapter_Abstract
  • Mage_ImportExport_Model_Export_Adapter_Csv
  • Mage_ImportExport_Model_Export_Entity_Abstract
  • Mage_ImportExport_Model_Export_Entity_Customer
  • Mage_ImportExport_Model_Export_Entity_Product
  • Mage_ImportExport_Model_Export_Entity_Product_Type_Abstract
  • Mage_ImportExport_Model_Export_Entity_Product_Type_Configurable
  • Mage_ImportExport_Model_Export_Entity_Product_Type_Grouped
  • Mage_ImportExport_Model_Export_Entity_Product_Type_Simple
  • Mage_ImportExport_Model_Import
  • Mage_ImportExport_Model_Import_Adapter
  • Mage_ImportExport_Model_Import_Adapter_Abstract
  • Mage_ImportExport_Model_Import_Adapter_Csv
  • Mage_ImportExport_Model_Import_Entity_Abstract
  • Mage_ImportExport_Model_Import_Entity_Customer
  • Mage_ImportExport_Model_Import_Entity_Customer_Address
  • Mage_ImportExport_Model_Import_Entity_Product
  • Mage_ImportExport_Model_Import_Entity_Product_Type_Abstract
  • Mage_ImportExport_Model_Import_Entity_Product_Type_Configurable
  • Mage_ImportExport_Model_Import_Entity_Product_Type_Grouped
  • Mage_ImportExport_Model_Import_Entity_Product_Type_Simple
  • Mage_ImportExport_Model_Import_Proxy_Product
  • Mage_ImportExport_Model_Import_Proxy_Product_Resource
  • Mage_ImportExport_Model_Import_Uploader
  • Mage_ImportExport_Model_Mysql4_Import_Data
  • Mage_ImportExport_Model_Mysql4_Setup
  • Mage_ImportExport_Model_Resource_Import_Data
  • Mage_ImportExport_Model_Resource_Setup
  • Mage_ImportExport_Model_Source_Export_Entity
  • Mage_ImportExport_Model_Source_Export_Format
  • Mage_ImportExport_Model_Source_Import_Behavior
  • Mage_ImportExport_Model_Source_Import_Entity
  • Overview
  • Package
  • Class
  • Tree
  1: <?php
  2: /**
  3:  * Magento
  4:  *
  5:  * NOTICE OF LICENSE
  6:  *
  7:  * This source file is subject to the Open Software License (OSL 3.0)
  8:  * that is bundled with this package in the file LICENSE.txt.
  9:  * It is also available through the world-wide-web at this URL:
 10:  * http://opensource.org/licenses/osl-3.0.php
 11:  * If you did not receive a copy of the license and are unable to
 12:  * obtain it through the world-wide-web, please send an email
 13:  * to license@magentocommerce.com so we can send you a copy immediately.
 14:  *
 15:  * DISCLAIMER
 16:  *
 17:  * Do not edit or add to this file if you wish to upgrade Magento to newer
 18:  * versions in the future. If you wish to customize Magento for your
 19:  * needs please refer to http://www.magentocommerce.com for more information.
 20:  *
 21:  * @category    Mage
 22:  * @package     Mage_ImportExport
 23:  * @copyright   Copyright (c) 2012 Magento Inc. (http://www.magentocommerce.com)
 24:  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
 25:  */
 26: 
 27: /**
 28:  * Export entity customer model
 29:  *
 30:  * @category    Mage
 31:  * @package     Mage_ImportExport
 32:  * @author      Magento Core Team <core@magentocommerce.com>
 33:  */
 34: class Mage_ImportExport_Model_Export_Entity_Customer extends Mage_ImportExport_Model_Export_Entity_Abstract
 35: {
 36:     /**
 37:      * Permanent column names.
 38:      *
 39:      * Names that begins with underscore is not an attribute. This name convention is for
 40:      * to avoid interference with same attribute name.
 41:      */
 42:     const COL_EMAIL   = 'email';
 43:     const COL_WEBSITE = '_website';
 44:     const COL_STORE   = '_store';
 45: 
 46:     /**
 47:      * Overriden attributes parameters.
 48:      *
 49:      * @var array
 50:      */
 51:     protected $_attributeOverrides = array(
 52:         'created_at'                  => array('backend_type' => 'datetime'),
 53:         'reward_update_notification'  => array('source_model' => 'eav/entity_attribute_source_boolean'),
 54:         'reward_warning_notification' => array('source_model' => 'eav/entity_attribute_source_boolean')
 55:     );
 56: 
 57:     /**
 58:      * Array of attributes codes which are disabled for export.
 59:      *
 60:      * @var array
 61:      */
 62:     protected $_disabledAttrs = array('default_billing', 'default_shipping');
 63: 
 64:     /**
 65:      * Attributes with index (not label) value.
 66:      *
 67:      * @var array
 68:      */
 69:     protected $_indexValueAttributes = array('group_id', 'website_id', 'store_id');
 70: 
 71:     /**
 72:      * Permanent entity columns.
 73:      *
 74:      * @var array
 75:      */
 76:     protected $_permanentAttributes = array(self::COL_EMAIL, self::COL_WEBSITE, self::COL_STORE);
 77: 
 78:     /**
 79:      * Array of pairs store ID to its code.
 80:      *
 81:      * @var array
 82:      */
 83:     protected $_storeIdToCode = array();
 84: 
 85:     /**
 86:      * Website ID-to-code.
 87:      *
 88:      * @var array
 89:      */
 90:     protected $_websiteIdToCode = array();
 91: 
 92:     /**
 93:      * Constructor.
 94:      *
 95:      * @return void
 96:      */
 97:     public function __construct()
 98:     {
 99:         parent::__construct();
100: 
101:         $this->_initAttrValues()
102:                 ->_initStores()
103:                 ->_initWebsites();
104:     }
105: 
106:     /**
107:      * Initialize website values.
108:      *
109:      * @return Mage_ImportExport_Model_Export_Entity_Customer
110:      */
111:     protected function _initWebsites()
112:     {
113:         /** @var $website Mage_Core_Model_Website */
114:         foreach (Mage::app()->getWebsites(true) as $website) {
115:             $this->_websiteIdToCode[$website->getId()] = $website->getCode();
116:         }
117:         return $this;
118:     }
119: 
120:     /**
121:      * Apply filter to collection and add not skipped attributes to select.
122:      *
123:      * @param Mage_Eav_Model_Entity_Collection_Abstract $collection
124:      * @return Mage_Eav_Model_Entity_Collection_Abstract
125:      */
126:     protected function _prepareEntityCollection(Mage_Eav_Model_Entity_Collection_Abstract $collection)
127:     {
128:         // forced addition default billing and shipping addresses attributes
129:         return parent::_prepareEntityCollection($collection)->addAttributeToSelect(
130:             Mage_ImportExport_Model_Import_Entity_Customer_Address::getDefaultAddressAttrMapping()
131:         );
132:     }
133: 
134:     /**
135:      * Export process.
136:      *
137:      * @return string
138:      */
139:     public function export()
140:     {
141:         $collection     = $this->_prepareEntityCollection(Mage::getResourceModel('customer/customer_collection'));
142:         $validAttrCodes = $this->_getExportAttrCodes();
143:         $writer         = $this->getWriter();
144:         $defaultAddrMap = Mage_ImportExport_Model_Import_Entity_Customer_Address::getDefaultAddressAttrMapping();
145: 
146:         // prepare address data
147:         $addrAttributes = array();
148:         $addrColNames   = array();
149:         $customerAddrs  = array();
150: 
151:         foreach (Mage::getResourceModel('customer/address_attribute_collection')
152:                     ->addSystemHiddenFilter()
153:                     ->addExcludeHiddenFrontendFilter() as $attribute) {
154:             $options  = array();
155:             $attrCode = $attribute->getAttributeCode();
156: 
157:             if ($attribute->usesSource() && 'country_id' != $attrCode) {
158:                 foreach ($attribute->getSource()->getAllOptions(false) as $option) {
159:                     foreach (is_array($option['value']) ? $option['value'] : array($option) as $innerOption) {
160:                         if (strlen($innerOption['value'])) { // skip ' -- Please Select -- ' option
161:                             $options[$innerOption['value']] = $innerOption['label'];
162:                         }
163:                     }
164:                 }
165:             }
166:             $addrAttributes[$attrCode] = $options;
167:             $addrColNames[] = Mage_ImportExport_Model_Import_Entity_Customer_Address::getColNameForAttrCode($attrCode);
168:         }
169:         foreach (Mage::getResourceModel('customer/address_collection')->addAttributeToSelect('*') as $address) {
170:             $addrRow = array();
171: 
172:             foreach ($addrAttributes as $attrCode => $attrValues) {
173:                 if (null !== $address->getData($attrCode)) {
174:                     $value = $address->getData($attrCode);
175: 
176:                     if ($attrValues) {
177:                         $value = $attrValues[$value];
178:                     }
179:                     $column = Mage_ImportExport_Model_Import_Entity_Customer_Address::getColNameForAttrCode($attrCode);
180:                     $addrRow[$column] = $value;
181:                 }
182:             }
183:             $customerAddrs[$address['parent_id']][$address->getId()] = $addrRow;
184:         }
185: 
186:         // create export file
187:         $writer->setHeaderCols(array_merge(
188:             $this->_permanentAttributes, $validAttrCodes,
189:             array('password'), $addrColNames,
190:             array_keys($defaultAddrMap)
191:         ));
192:         foreach ($collection as $itemId => $item) { // go through all customers
193:             $row = array();
194: 
195:             // go through all valid attribute codes
196:             foreach ($validAttrCodes as $attrCode) {
197:                 $attrValue = $item->getData($attrCode);
198: 
199:                 if (isset($this->_attributeValues[$attrCode])
200:                     && isset($this->_attributeValues[$attrCode][$attrValue])
201:                 ) {
202:                     $attrValue = $this->_attributeValues[$attrCode][$attrValue];
203:                 }
204:                 if (null !== $attrValue) {
205:                     $row[$attrCode] = $attrValue;
206:                 }
207:             }
208:             $row[self::COL_WEBSITE] = $this->_websiteIdToCode[$item['website_id']];
209:             $row[self::COL_STORE]   = $this->_storeIdToCode[$item['store_id']];
210: 
211:             // addresses injection
212:             $defaultAddrs = array();
213: 
214:             foreach ($defaultAddrMap as $colName => $addrAttrCode) {
215:                 if (!empty($item[$addrAttrCode])) {
216:                     $defaultAddrs[$item[$addrAttrCode]][] = $colName;
217:                 }
218:             }
219:             if (isset($customerAddrs[$itemId])) {
220:                 while (($addrRow = each($customerAddrs[$itemId]))) {
221:                     if (isset($defaultAddrs[$addrRow['key']])) {
222:                         foreach ($defaultAddrs[$addrRow['key']] as $colName) {
223:                             $row[$colName] = 1;
224:                         }
225:                     }
226:                     $writer->writeRow(array_merge($row, $addrRow['value']));
227: 
228:                     $row = array();
229:                 }
230:             } else {
231:                 $writer->writeRow($row);
232:             }
233:         }
234:         return $writer->getContents();
235:     }
236: 
237:     /**
238:      * Clean up already loaded attribute collection.
239:      *
240:      * @param Mage_Eav_Model_Resource_Entity_Attribute_Collection $collection
241:      * @return Mage_Eav_Model_Resource_Entity_Attribute_Collection
242:      */
243:     public function filterAttributeCollection(Mage_Eav_Model_Resource_Entity_Attribute_Collection $collection)
244:     {
245:         foreach (parent::filterAttributeCollection($collection) as $attribute) {
246:             if (!empty($this->_attributeOverrides[$attribute->getAttributeCode()])) {
247:                 $data = $this->_attributeOverrides[$attribute->getAttributeCode()];
248: 
249:                 if (isset($data['options_method']) && method_exists($this, $data['options_method'])) {
250:                     $data['filter_options'] = $this->$data['options_method']();
251:                 }
252:                 $attribute->addData($data);
253:             }
254:         }
255:         return $collection;
256:     }
257: 
258:     /**
259:      * Entity attributes collection getter.
260:      *
261:      * @return Mage_Customer_Model_Entity_Attribute_Collection
262:      */
263:     public function getAttributeCollection()
264:     {
265:         return Mage::getResourceModel('customer/attribute_collection');
266:     }
267: 
268:     /**
269:      * EAV entity type code getter.
270:      *
271:      * @return string
272:      */
273:     public function getEntityTypeCode()
274:     {
275:         return 'customer';
276:     }
277: }
278: 
Magento 1.7.0.2 API documentation generated by ApiGen 2.8.0