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
  • Mage_Adminhtml_Block_Html_Date
  • Mage_Adminhtml_Block_Html_Select
  • Mage_Api_Model_Wsdl_Config_Element
  • Mage_Captcha_Adminhtml_RefreshController
  • Mage_Captcha_RefreshController
  • Mage_Core_AjaxController
  • Mage_Core_Block_Abstract
  • Mage_Core_Block_Flush
  • Mage_Core_Block_Html_Calendar
  • Mage_Core_Block_Html_Date
  • Mage_Core_Block_Html_Link
  • Mage_Core_Block_Html_Select
  • Mage_Core_Block_Messages
  • Mage_Core_Block_Profiler
  • Mage_Core_Block_Store_Switcher
  • Mage_Core_Block_Template
  • Mage_Core_Block_Template_Facade
  • Mage_Core_Block_Template_Smarty
  • Mage_Core_Block_Template_Zend
  • Mage_Core_Block_Text
  • Mage_Core_Block_Text_List
  • Mage_Core_Block_Text_List_Item
  • Mage_Core_Block_Text_List_Link
  • Mage_Core_Block_Text_Tag
  • Mage_Core_Block_Text_Tag_Css
  • Mage_Core_Block_Text_Tag_Css_Admin
  • Mage_Core_Block_Text_Tag_Debug
  • Mage_Core_Block_Text_Tag_Js
  • Mage_Core_Block_Text_Tag_Meta
  • Mage_Core_Controller_Front_Action
  • Mage_Core_Controller_Front_Router
  • Mage_Core_Controller_Request_Http
  • Mage_Core_Controller_Response_Http
  • Mage_Core_Controller_Varien_Action
  • Mage_Core_Controller_Varien_Front
  • Mage_Core_Controller_Varien_Router_Abstract
  • Mage_Core_Controller_Varien_Router_Admin
  • Mage_Core_Controller_Varien_Router_Default
  • Mage_Core_Controller_Varien_Router_Standard
  • Mage_Core_Helper_Abstract
  • Mage_Core_Helper_Cookie
  • Mage_Core_Helper_Data
  • Mage_Core_Helper_File_Storage
  • Mage_Core_Helper_File_Storage_Database
  • Mage_Core_Helper_Hint
  • Mage_Core_Helper_Http
  • Mage_Core_Helper_Js
  • Mage_Core_Helper_String
  • Mage_Core_Helper_Translate
  • Mage_Core_Helper_Url
  • Mage_Core_Helper_Url_Rewrite
  • Mage_Core_IndexController
  • Mage_Core_Model_Abstract
  • Mage_Core_Model_App
  • Mage_Core_Model_App_Area
  • Mage_Core_Model_App_Emulation
  • Mage_Core_Model_Cache
  • Mage_Core_Model_Calculator
  • Mage_Core_Model_Config
  • Mage_Core_Model_Config_Base
  • Mage_Core_Model_Config_Data
  • Mage_Core_Model_Config_Element
  • Mage_Core_Model_Config_Options
  • Mage_Core_Model_Config_System
  • Mage_Core_Model_Cookie
  • Mage_Core_Model_Date
  • Mage_Core_Model_Design
  • Mage_Core_Model_Design_Package
  • Mage_Core_Model_Design_Source_Design
  • Mage_Core_Model_Email
  • Mage_Core_Model_Email_Info
  • Mage_Core_Model_Email_Template
  • Mage_Core_Model_Email_Template_Filter
  • Mage_Core_Model_Email_Template_Mailer
  • Mage_Core_Model_Email_Transport
  • Mage_Core_Model_Encryption
  • Mage_Core_Model_File_Storage
  • Mage_Core_Model_File_Storage_Abstract
  • Mage_Core_Model_File_Storage_Database
  • Mage_Core_Model_File_Storage_Database_Abstract
  • Mage_Core_Model_File_Storage_Directory_Database
  • Mage_Core_Model_File_Storage_File
  • Mage_Core_Model_File_Storage_Flag
  • Mage_Core_Model_File_Uploader
  • Mage_Core_Model_File_Validator_AvailablePath
  • Mage_Core_Model_File_Validator_NotProtectedExtension
  • Mage_Core_Model_Flag
  • Mage_Core_Model_Input_Filter
  • Mage_Core_Model_Input_Filter_MaliciousCode
  • Mage_Core_Model_Language
  • Mage_Core_Model_Layout
  • Mage_Core_Model_Layout_Data
  • Mage_Core_Model_Layout_Element
  • Mage_Core_Model_Layout_Update
  • Mage_Core_Model_Locale
  • Mage_Core_Model_Locale_Config
  • Mage_Core_Model_Log_Adapter
  • Mage_Core_Model_Magento_Api
  • Mage_Core_Model_Magento_Api_V2
  • Mage_Core_Model_Message
  • Mage_Core_Model_Message_Abstract
  • Mage_Core_Model_Message_Collection
  • Mage_Core_Model_Message_Error
  • Mage_Core_Model_Message_Notice
  • Mage_Core_Model_Message_Success
  • Mage_Core_Model_Message_Warning
  • Mage_Core_Model_Mysql4_Abstract
  • Mage_Core_Model_Mysql4_Cache
  • Mage_Core_Model_Mysql4_Collection_Abstract
  • Mage_Core_Model_Mysql4_Config
  • Mage_Core_Model_Mysql4_Config_Data
  • Mage_Core_Model_Mysql4_Config_Data_Collection
  • Mage_Core_Model_Mysql4_Design
  • Mage_Core_Model_Mysql4_Design_Collection
  • Mage_Core_Model_Mysql4_Design_Package_Collection
  • Mage_Core_Model_Mysql4_Design_Theme
  • Mage_Core_Model_Mysql4_Email_Template
  • Mage_Core_Model_Mysql4_Email_Template_Collection
  • Mage_Core_Model_Mysql4_File_Storage_Abstract
  • Mage_Core_Model_Mysql4_File_Storage_Database
  • Mage_Core_Model_Mysql4_File_Storage_Directory_Database
  • Mage_Core_Model_Mysql4_File_Storage_File
  • Mage_Core_Model_Mysql4_Flag
  • Mage_Core_Model_Mysql4_Language
  • Mage_Core_Model_Mysql4_Language_Collection
  • Mage_Core_Model_Mysql4_Layout
  • Mage_Core_Model_Mysql4_Resource
  • Mage_Core_Model_Mysql4_Session
  • Mage_Core_Model_Mysql4_Store
  • Mage_Core_Model_Mysql4_Store_Collection
  • Mage_Core_Model_Mysql4_Store_Group
  • Mage_Core_Model_Mysql4_Store_Group_Collection
  • Mage_Core_Model_Mysql4_Translate
  • Mage_Core_Model_Mysql4_Translate_String
  • Mage_Core_Model_Mysql4_Url_Rewrite
  • Mage_Core_Model_Mysql4_Url_Rewrite_Collection
  • Mage_Core_Model_Mysql4_Variable
  • Mage_Core_Model_Mysql4_Variable_Collection
  • Mage_Core_Model_Mysql4_Website
  • Mage_Core_Model_Mysql4_Website_Collection
  • Mage_Core_Model_Observer
  • Mage_Core_Model_Resource
  • Mage_Core_Model_Resource_Abstract
  • Mage_Core_Model_Resource_Cache
  • Mage_Core_Model_Resource_Config
  • Mage_Core_Model_Resource_Config_Data
  • Mage_Core_Model_Resource_Config_Data_Collection
  • Mage_Core_Model_Resource_Db_Abstract
  • Mage_Core_Model_Resource_Db_Collection_Abstract
  • Mage_Core_Model_Resource_Design
  • Mage_Core_Model_Resource_Design_Collection
  • Mage_Core_Model_Resource_Design_Package_Collection
  • Mage_Core_Model_Resource_Email_Template
  • Mage_Core_Model_Resource_Email_Template_Collection
  • Mage_Core_Model_Resource_Entity_Abstract
  • Mage_Core_Model_Resource_Entity_Table
  • Mage_Core_Model_Resource_File_Storage_Abstract
  • Mage_Core_Model_Resource_File_Storage_Database
  • Mage_Core_Model_Resource_File_Storage_Directory_Database
  • Mage_Core_Model_Resource_File_Storage_File
  • Mage_Core_Model_Resource_Flag
  • Mage_Core_Model_Resource_Helper_Abstract
  • Mage_Core_Model_Resource_Helper_Mysql4
  • Mage_Core_Model_Resource_Iterator
  • Mage_Core_Model_Resource_Language
  • Mage_Core_Model_Resource_Language_Collection
  • Mage_Core_Model_Resource_Layout
  • Mage_Core_Model_Resource_Resource
  • Mage_Core_Model_Resource_Session
  • Mage_Core_Model_Resource_Setup
  • Mage_Core_Model_Resource_Setup_Query_Modifier
  • Mage_Core_Model_Resource_Store
  • Mage_Core_Model_Resource_Store_Collection
  • Mage_Core_Model_Resource_Store_Group
  • Mage_Core_Model_Resource_Store_Group_Collection
  • Mage_Core_Model_Resource_Transaction
  • Mage_Core_Model_Resource_Translate
  • Mage_Core_Model_Resource_Translate_String
  • Mage_Core_Model_Resource_Type_Abstract
  • Mage_Core_Model_Resource_Type_Db
  • Mage_Core_Model_Resource_Type_Db_Mysqli
  • Mage_Core_Model_Resource_Type_Db_Mysqli_Setup
  • Mage_Core_Model_Resource_Type_Db_Pdo_Mysql
  • Mage_Core_Model_Resource_Url_Rewrite
  • Mage_Core_Model_Resource_Url_Rewrite_Collection
  • Mage_Core_Model_Resource_Variable
  • Mage_Core_Model_Resource_Variable_Collection
  • Mage_Core_Model_Resource_Website
  • Mage_Core_Model_Resource_Website_Collection
  • Mage_Core_Model_Session
  • Mage_Core_Model_Session_Abstract
  • Mage_Core_Model_Session_Abstract_Varien
  • Mage_Core_Model_Session_Abstract_Zend
  • Mage_Core_Model_Source_Email_Variables
  • Mage_Core_Model_Store
  • Mage_Core_Model_Store_Api
  • Mage_Core_Model_Store_Api_V2
  • Mage_Core_Model_Store_Group
  • Mage_Core_Model_Template
  • Mage_Core_Model_Translate
  • Mage_Core_Model_Translate_Expr
  • Mage_Core_Model_Translate_Inline
  • Mage_Core_Model_Translate_String
  • Mage_Core_Model_Url
  • Mage_Core_Model_Url_Rewrite
  • Mage_Core_Model_Url_Validator
  • Mage_Core_Model_Variable
  • Mage_Core_Model_Variable_Config
  • Mage_Core_Model_Variable_Observer
  • Mage_Core_Model_Website
  • Mage_Page_Block_Switch
  • Mage_Page_Block_Template_Container
  • Mage_Page_Block_Template_Links
  • Mage_Page_Block_Template_Links_Block
  • Mage_Sales_Model_Quote_Address_Total_Collector

Exceptions

  • Mage_Core_Controller_Varien_Exception
  • Mage_Core_Exception
  • Mage_Core_Model_Session_Exception
  • Mage_Core_Model_Store_Exception

Functions

  • destruct
  • is_dir_writeable
  • is_empty_date
  • mageCoreErrorHandler
  • mageDebugBacktrace
  • mageDelTree
  • mageFindClassFile
  • mageParseCsv
  • mageSendErrorFooter
  • mageSendErrorHeader
  • mageUndoMagicQuotes
  • now
  • sys_get_temp_dir
  • uc_words
  • 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_Core
 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: /**
 29:  * Abstract Core Resource Collection
 30:  *
 31:  * @category    Mage
 32:  * @package     Mage_Core
 33:  * @author      Magento Core Team <core@magentocommerce.com>
 34:  */
 35: abstract class Mage_Core_Model_Resource_Db_Collection_Abstract extends Varien_Data_Collection_Db
 36: {
 37:     const CACHE_TAG = 'COLLECTION_DATA';
 38: 
 39:     /**
 40:      * Model name
 41:      *
 42:      * @var string
 43:      */
 44:     protected $_model;
 45: 
 46:     /**
 47:      * Resource model name
 48:      *
 49:      * @var string
 50:      */
 51:     protected $_resourceModel;
 52: 
 53:     /**
 54:      * Resource instance
 55:      *
 56:      * @var Mage_Core_Model_Resource_Db_Abstract
 57:      */
 58:     protected $_resource;
 59: 
 60:     /**
 61:      * Fields to select in query
 62:      *
 63:      * @var array|null
 64:      */
 65:     protected $_fieldsToSelect         = null;
 66: 
 67:     /**
 68:      * Fields initial fields to select like id_field
 69:      *
 70:      * @var array|null
 71:      */
 72:     protected $_initialFieldsToSelect  = null;
 73: 
 74:     /**
 75:      * Fields to select changed flag
 76:      *
 77:      * @var booleam
 78:      */
 79:     protected $_fieldsToSelectChanged  = false;
 80: 
 81:     /**
 82:      * Store joined tables here
 83:      *
 84:      * @var array
 85:      */
 86:     protected $_joinedTables           = array();
 87: 
 88:     /**
 89:      * Collection main table
 90:      *
 91:      * @var string
 92:      */
 93:     protected $_mainTable              = null;
 94: 
 95:     /**
 96:      * Reset items data changed flag
 97:      *
 98:      * @var boolean
 99:      */
100:     protected $_resetItemsDataChanged   = false;
101: 
102:     /**
103:      * Name prefix of events that are dispatched by model
104:      *
105:      * @var string
106:      */
107:     protected $_eventPrefix = '';
108: 
109:     /**
110:      * Name of event parameter
111:      *
112:      * @var string
113:      */
114:     protected $_eventObject = '';
115: 
116:     /**
117:      * Use analytic function flag
118:      * If true - allows to prepare final select with analytic function
119:      *
120:      * @var bool
121:      */
122:     protected $_useAnalyticFunction         = false;
123: 
124:     /**
125:      * Collection constructor
126:      *
127:      * @param Mage_Core_Model_Resource_Db_Abstract $resource
128:      */
129:     public function __construct($resource = null)
130:     {
131:         parent::__construct();
132:         $this->_construct();
133:         $this->_resource = $resource;
134:         $this->setConnection($this->getResource()->getReadConnection());
135:         $this->_initSelect();
136:     }
137: 
138:     /**
139:      * Initialization here
140:      *
141:      */
142:     protected function _construct()
143:     {
144: 
145:     }
146: 
147:     /**
148:      * Retrieve main table
149:      *
150:      * @return string
151:      */
152:     public function getMainTable()
153:     {
154:         if ($this->_mainTable === null) {
155:             $this->setMainTable($this->getResource()->getMainTable());
156:         }
157: 
158:         return $this->_mainTable;
159:     }
160: 
161:     /**
162:      * Set main collection table
163:      *
164:      * @param string $table
165:      * @return Mage_Core_Model_Resource_Db_Collection_Abstract
166:      */
167:     public function setMainTable($table)
168:     {
169:         if (strpos($table, '/') !== false) {
170:             $table = $this->getTable($table);
171:         }
172: 
173:         if ($this->_mainTable !== null && $table !== $this->_mainTable && $this->getSelect() !== null) {
174:             $from = $this->getSelect()->getPart(Zend_Db_Select::FROM);
175:             if (isset($from['main_table'])) {
176:                 $from['main_table']['tableName'] = $table;
177:             }
178:             $this->getSelect()->setPart(Zend_Db_Select::FROM, $from);
179:         }
180: 
181:         $this->_mainTable = $table;
182:         return $this;
183:     }
184: 
185:     /**
186:      * Init collection select
187:      *
188:      * @return Mage_Core_Model_Resource_Db_Collection_Abstract
189:      */
190:     protected function _initSelect()
191:     {
192:         $this->getSelect()->from(array('main_table' => $this->getMainTable()));
193:         return $this;
194:     }
195: 
196:     /**
197:      * Get Zend_Db_Select instance and applies fields to select if needed
198:      *
199:      * @return Varien_Db_Select
200:      */
201:     public function getSelect()
202:     {
203:         if ($this->_select && $this->_fieldsToSelectChanged) {
204:             $this->_fieldsToSelectChanged = false;
205:             $this->_initSelectFields();
206:         }
207:         return parent::getSelect();
208:     }
209: 
210:     /**
211:      * Init fields for select
212:      *
213:      * @return Mage_Core_Model_Resource_Db_Collection_Abstract
214:      */
215:     protected function _initSelectFields()
216:     {
217:         $columns = $this->_select->getPart(Zend_Db_Select::COLUMNS);
218:         $columnsToSelect = array();
219:         foreach ($columns as $columnEntry) {
220:             list($correlationName, $column, $alias) = $columnEntry;
221:             if ($correlationName !== 'main_table') { // Add joined fields to select
222:                 if ($column instanceof Zend_Db_Expr) {
223:                     $column = $column->__toString();
224:                 }
225:                 $key = ($alias !== null ? $alias : $column);
226:                 $columnsToSelect[$key] = $columnEntry;
227:             }
228:         }
229: 
230:         $columns = $columnsToSelect;
231: 
232:         $columnsToSelect = array_keys($columnsToSelect);
233: 
234:         if ($this->_fieldsToSelect !== null) {
235:             $insertIndex = 0;
236:             foreach ($this->_fieldsToSelect as $alias => $field) {
237:                 if (!is_string($alias)) {
238:                     $alias = null;
239:                 }
240: 
241:                 if ($field instanceof Zend_Db_Expr) {
242:                     $column = $field->__toString();
243:                 } else {
244:                     $column = $field;
245:                 }
246: 
247:                 if (($alias !== null && in_array($alias, $columnsToSelect)) ||
248:                     // If field already joined from another table
249:                     ($alias === null && isset($alias, $columnsToSelect))) {
250:                     continue;
251:                 }
252: 
253:                 $columnEntry = array('main_table', $field, $alias);
254:                 array_splice($columns, $insertIndex, 0, array($columnEntry)); // Insert column
255:                 $insertIndex ++;
256: 
257:             }
258:         } else {
259:             array_unshift($columns, array('main_table', '*', null));
260:         }
261: 
262:         $this->_select->setPart(Zend_Db_Select::COLUMNS, $columns);
263: 
264:         return $this;
265:     }
266: 
267:     /**
268:      * Retrieve initial fields to select like id field
269:      *
270:      * @return array
271:      */
272:     protected function _getInitialFieldsToSelect()
273:     {
274:         if ($this->_initialFieldsToSelect === null) {
275:             $this->_initialFieldsToSelect = array();
276:             $this->_initInitialFieldsToSelect();
277:         }
278: 
279:         return $this->_initialFieldsToSelect;
280:     }
281: 
282:     /**
283:      * Initialize initial fields to select like id field
284:      *
285:      * @return Mage_Core_Model_Resource_Db_Collection_Abstract
286:      */
287:     protected function _initInitialFieldsToSelect()
288:     {
289:         $idFieldName = $this->getResource()->getIdFieldName();
290:         if ($idFieldName) {
291:             $this->_initialFieldsToSelect[] = $idFieldName;
292:         }
293:         return $this;
294:     }
295: 
296:     /**
297:      * Add field to select
298:      *
299:      * @param string|array $field
300:      * @param string|null $alias
301:      * @return Mage_Core_Model_Resource_Db_Collection_Abstract
302:      */
303:     public function addFieldToSelect($field, $alias = null)
304:     {
305:         if ($field === '*') { // If we will select all fields
306:             $this->_fieldsToSelect = null;
307:             $this->_fieldsToSelectChanged = true;
308:             return $this;
309:         }
310: 
311:         if (is_array($field)) {
312:             if ($this->_fieldsToSelect === null) {
313:                 $this->_fieldsToSelect = $this->_getInitialFieldsToSelect();
314:             }
315: 
316:             foreach ($field as $key => $value) {
317:                 $this->addFieldToSelect(
318:                     $value,
319:                     (is_string($key) ? $key : null),
320:                     false
321:                 );
322:             }
323: 
324:             $this->_fieldsToSelectChanged = true;
325:             return $this;
326:         }
327: 
328:         if ($alias === null) {
329:             $this->_fieldsToSelect[] = $field;
330:         } else {
331:             $this->_fieldsToSelect[$alias] = $field;
332:         }
333: 
334:         $this->_fieldsToSelectChanged = true;
335:         return $this;
336:     }
337: 
338:     /**
339:      * Add attribute expression (SUM, COUNT, etc)
340:      * Example: ('sub_total', 'SUM({{attribute}})', 'revenue')
341:      * Example: ('sub_total', 'SUM({{revenue}})', 'revenue')
342:      * For some functions like SUM use groupByAttribute.
343:      *
344:      * @param string $alias
345:      * @param string $expression
346:      * @param array $fields
347:      * @return Mage_Core_Model_Resource_Db_Collection_Abstract
348:      */
349:     public function addExpressionFieldToSelect($alias, $expression, $fields)
350:     {
351:         // validate alias
352:         if (!is_array($fields)) {
353:             $fields = array($fields=>$fields);
354:         }
355: 
356:         $fullExpression = $expression;
357:         foreach ($fields as $fieldKey=>$fieldItem) {
358:             $fullExpression = str_replace('{{' . $fieldKey . '}}', $fieldItem, $fullExpression);
359:         }
360: 
361:         $this->getSelect()->columns(array($alias=>$fullExpression));
362: 
363:         return $this;
364:     }
365: 
366:     /**
367:      * Removes field from select
368:      *
369:      * @param string|null $field
370:      * @param boolean $isAlias Alias identifier
371:      * @return Mage_Core_Model_Resource_Db_Collection_Abstract
372:      */
373:     public function removeFieldFromSelect($field, $isAlias = false)
374:     {
375:         if ($isAlias) {
376:             if (isset($this->_fieldsToSelect[$field])) {
377:                 unset($this->_fieldsToSelect[$field]);
378:             }
379:         } else {
380:             foreach ($this->_fieldsToSelect as $key => $value) {
381:                 if ($value === $field) {
382:                     unset($this->_fieldsToSelect[$key]);
383:                     break;
384:                 }
385:             }
386:         }
387: 
388:         $this->_fieldsToSelectChanged = true;
389:         return $this;
390:     }
391: 
392:     /**
393:      * Removes all fields from select
394:      *
395:      * @return Mage_Core_Model_Resource_Db_Collection_Abstract
396:      */
397:     public function removeAllFieldsFromSelect()
398:     {
399:         $this->_fieldsToSelect = $this->_getInitialFieldsToSelect();
400:         $this->_fieldsToSelectChanged = true;
401:         return $this;
402:     }
403: 
404:     /**
405:      * Standard resource collection initialization
406:      *
407:      * @param string $model
408:      * @param Mage_Core_Model_Resource_Db_Abstract $resourceModel
409:      * @return Mage_Core_Model_Resource_Db_Collection_Abstract
410:      */
411:     protected function _init($model, $resourceModel = null)
412:     {
413:         $this->setModel($model);
414:         if (is_null($resourceModel)) {
415:             $resourceModel = $model;
416:         }
417:         $this->setResourceModel($resourceModel);
418:         return $this;
419:     }
420: 
421:     /**
422:      * Set model name for collection items
423:      *
424:      * @param string $model
425:      * @return Mage_Core_Model_Resource_Db_Collection_Abstract
426:      */
427:     public function setModel($model)
428:     {
429:         if (is_string($model)) {
430:             $this->_model = $model;
431:             $this->setItemObjectClass(Mage::getConfig()->getModelClassName($model));
432:         }
433:         return $this;
434:     }
435: 
436:     /**
437:      * Get model instance
438:      *
439:      * @param array $args
440:      * @return Varien_Object
441:      */
442:     public function getModelName($args = array())
443:     {
444:         return $this->_model;
445:     }
446: 
447:     /**
448:      *  Set resource model name for collection items
449:      *
450:      * @param string $model
451:      */
452:     public function setResourceModel($model)
453:     {
454:         $this->_resourceModel = $model;
455:     }
456: 
457:     /**
458:      *  Retrieve resource model name
459:      *
460:      * @return string
461:      */
462:     public function getResourceModelName()
463:     {
464:         return $this->_resourceModel;
465:     }
466: 
467:     /**
468:      * Get resource instance
469:      *
470:      * @return Mage_Core_Model_Resource_Db_Abstract
471:      */
472:     public function getResource()
473:     {
474:         if (empty($this->_resource)) {
475:             $this->_resource = Mage::getResourceModel($this->getResourceModelName());
476:         }
477:         return $this->_resource;
478:     }
479: 
480:     /**
481:      * Retrieve table name
482:      *
483:      * @param string $table
484:      * @return string
485:      */
486:     public function getTable($table)
487:     {
488:         return $this->getResource()->getTable($table);
489:     }
490: 
491:     /**
492:      * Retrieve all ids for collection
493:      *
494:      * @return array
495:      */
496:     public function getAllIds()
497:     {
498:         $idsSelect = clone $this->getSelect();
499:         $idsSelect->reset(Zend_Db_Select::ORDER);
500:         $idsSelect->reset(Zend_Db_Select::LIMIT_COUNT);
501:         $idsSelect->reset(Zend_Db_Select::LIMIT_OFFSET);
502:         $idsSelect->reset(Zend_Db_Select::COLUMNS);
503: 
504:         $idsSelect->columns($this->getResource()->getIdFieldName(), 'main_table');
505:         return $this->getConnection()->fetchCol($idsSelect);
506:     }
507: 
508:     public function getData()
509:     {
510:         if ($this->_data === null) {
511: 
512: 
513:             $this->_renderFilters()
514:                  ->_renderOrders()
515:                  ->_renderLimit();
516:             /**
517:              * Prepare select for execute
518:              * @var string $query
519:              */
520:             $query       = $this->_prepareSelect($this->getSelect());
521:             $this->_data = $this->_fetchAll($query, $this->_bindParams);
522:             $this->_afterLoadData();
523:         }
524:         return $this->_data;
525:     }
526: 
527:     /**
528:      * Prepare select for load
529:      *
530:      * @return string
531:      */
532:     protected function _prepareSelect(Varien_Db_Select $select)
533:     {
534:         $helper = Mage::getResourceHelper('core');
535: 
536:         $unionParts = $select->getPart(Zend_Db_Select::UNION);
537:         if (!empty($unionParts)) {
538:             $select = $helper->limitUnion($select);
539:         }
540: 
541:         if ($this->_useAnalyticFunction) {
542:             return $helper->getQueryUsingAnalyticFunction($select);
543:         }
544: 
545:         return (string)$select;
546:     }
547:     /**
548:      * Join table to collection select
549:      *
550:      * @param string $table
551:      * @param string $cond
552:      * @param string $cols
553:      * @return Mage_Core_Model_Resource_Db_Collection_Abstract
554:      */
555:     public function join($table, $cond, $cols = '*')
556:     {
557:         if (is_array($table)) {
558:             foreach ($table as $k => $v) {
559:                 $alias = $k;
560:                 $table = $v;
561:                 break;
562:             }
563:         } else {
564:             $alias = $table;
565:         }
566: 
567:         if (!isset($this->_joinedTables[$table])) {
568:             $this->getSelect()->join(
569:                 array($alias => $this->getTable($table)),
570:                 $cond,
571:                 $cols
572:             );
573:             $this->_joinedTables[$alias] = true;
574:         }
575:         return $this;
576:     }
577: 
578:     /**
579:      * Redeclare before load method for adding event
580:      *
581:      * @return Mage_Core_Model_Resource_Db_Collection_Abstract
582:      */
583:     protected function _beforeLoad()
584:     {
585:         parent::_beforeLoad();
586:         Mage::dispatchEvent('core_collection_abstract_load_before', array('collection' => $this));
587:         if ($this->_eventPrefix && $this->_eventObject) {
588:             Mage::dispatchEvent($this->_eventPrefix.'_load_before', array(
589:                 $this->_eventObject => $this
590:             ));
591:         }
592:         return $this;
593:     }
594: 
595:     /**
596:      * Set reset items data changed flag
597:      *
598:      * @param boolean $flag
599:      * @return Mage_Core_Model_Resource_Db_Collection_Abstract
600:      */
601:     public function setResetItemsDataChanged($flag)
602:     {
603:         $this->_resetItemsDataChanged = (bool)$flag;
604:         return $this;
605:     }
606: 
607:     /**
608:      * Set flag data has changed to all collection items
609:      *
610:      * @return Mage_Core_Model_Mysql4_Collection_Abstract
611:      */
612:     public function resetItemsDataChanged()
613:     {
614:         foreach ($this->_items as $item) {
615:             $item->setDataChanges(false);
616:         }
617: 
618:         return $this;
619:     }
620: 
621:     /**
622:      * Redeclare after load method for specifying collection items original data
623:      *
624:      * @return Mage_Core_Model_Resource_Db_Collection_Abstract
625:      */
626:     protected function _afterLoad()
627:     {
628:         parent::_afterLoad();
629:         foreach ($this->_items as $item) {
630:             $item->setOrigData();
631:             if ($this->_resetItemsDataChanged) {
632:                 $item->setDataChanges(false);
633:             }
634:         }
635:         Mage::dispatchEvent('core_collection_abstract_load_after', array('collection' => $this));
636:         if ($this->_eventPrefix && $this->_eventObject) {
637:             Mage::dispatchEvent($this->_eventPrefix.'_load_after', array(
638:                 $this->_eventObject => $this
639:             ));
640:         }
641:         return $this;
642:     }
643: 
644:     /**
645:      * Save all the entities in the collection
646:      *
647:      * @return Mage_Core_Model_Resource_Db_Collection_Abstract
648:      */
649:     public function save()
650:     {
651:         foreach ($this->getItems() as $item) {
652:             $item->save();
653:         }
654:         return $this;
655:     }
656: 
657:     /**
658:      * Check if cache can be used for collection
659:      *
660:      * @return bool
661:      */
662:     protected function _canUseCache()
663:     {
664:         return Mage::app()->useCache('collections') && !empty($this->_cacheConf);
665:     }
666: 
667:     /**
668:      * Load cached data for select
669:      *
670:      * @param Zend_Db_Select $select
671:      * @return string | false
672:      */
673:     protected function _loadCache($select)
674:     {
675:         $data = Mage::app()->loadCache($this->_getSelectCacheId($select));
676:         return $data;
677:     }
678: 
679:     /**
680:      * Save collection data to cache
681:      *
682:      * @param array $data
683:      * @param Zend_Db_Select $select
684:      * @return Mage_Core_Model_Resource_Db_Collection_Abstract
685:      */
686:     protected function _saveCache($data, $select)
687:     {
688:         Mage::app()->saveCache(serialize($data), $this->_getSelectCacheId($select), $this->_getCacheTags());
689:         return $this;
690:     }
691: 
692:     /**
693:      * Redeclared for processing cache tags throw application object
694:      *
695:      * @return array
696:      */
697:     protected function _getCacheTags()
698:     {
699:         $tags = parent::_getCacheTags();
700:         $tags[] = Mage_Core_Model_App::CACHE_TAG;
701:         $tags[] = self::CACHE_TAG;
702:         return $tags;
703:     }
704: 
705:     /**
706:      * Format Date to internal database date format
707:      *
708:      * @param int|string|Zend_Date $date
709:      * @param boolean $includeTime
710:      * @return string
711:      */
712:     public function formatDate($date, $includeTime = true)
713:     {
714:         return Varien_Date::formatDate($date, $includeTime);
715:     }
716: 
717: 
718: 
719: }
720: 
Magento 1.7.0.2 API documentation generated by ApiGen 2.8.0