/xampp/htdocs/magento/app/code/core/Mage/Core/Model/Abstract.php
https://github.com/edmondscommerce/XAMPP-Magento-Demo-Site · PHP · 380 lines · 179 code · 32 blank · 169 comment · 17 complexity · f7b9d0557c0eb971101dd71d11229ae9 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_Core
- * @copyright Copyright (c) 2008 Irubin Consulting Inc. DBA Varien (http://www.varien.com)
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
- */
- /**
- * Abstract model class
- *
- * @category Mage
- * @package Mage_Core
- * @author Magento Core Team <core@magentocommerce.com>
- */
- abstract class Mage_Core_Model_Abstract extends Varien_Object
- {
- /**
- * Prefix of model events names
- *
- * @var string
- */
- protected $_eventPrefix = 'core_abstract';
- /**
- * Parameter name in event
- *
- * In observe method you can use $observer->getEvent()->getObject() in this case
- *
- * @var string
- */
- protected $_eventObject = 'object';
- /**
- * Name of the resource model
- *
- * @var string
- */
- protected $_resourceName;
- /**
- * Resource model instance
- *
- * @var Mage_Core_Model_Mysql4_Abstract
- */
- protected $_resource;
- /**
- * Name of the resource collection model
- *
- * @var string
- */
- protected $_resourceCollectionName;
- /**
- * Model cache tag for clear cache in after save and after delete
- *
- * When you use true - all cache will be clean
- *
- * @var string || true
- */
- protected $_cacheTag = false;
- /**
- * Flag which can stop data saving after before save
- * Can be used for next sequence: we check data in _beforeSave, if data are
- * not valid - we can set this flag to false value and save process will be stopped
- *
- * @var bool
- */
- protected $_dataSaveAllowed = true;
- /**
- * Standard model initialization
- *
- * @param string $resourceModel
- * @param string $idFieldName
- * @return Mage_Core_Model_Abstract
- */
- protected function _init($resourceModel)
- {
- $this->_setResourceModel($resourceModel);
- }
- /**
- * Set resource names
- *
- * If collection name is ommited, resource name will be used with _collection appended
- *
- * @param string $resourceName
- * @param string|null $resourceCollectionName
- */
- protected function _setResourceModel($resourceName, $resourceCollectionName=null)
- {
- $this->_resourceName = $resourceName;
- if (is_null($resourceCollectionName)) {
- $resourceCollectionName = $resourceName.'_collection';
- }
- $this->_resourceCollectionName = $resourceCollectionName;
- }
- /**
- * Get resource instance
- *
- * @return Mage_Core_Model_Mysql4_Abstract
- */
- protected function _getResource()
- {
- if (empty($this->_resourceName)) {
- Mage::throwException(Mage::helper('core')->__('Resource is not set'));
- }
- return Mage::getResourceSingleton($this->_resourceName);
- }
- /**
- * Retrieve identifier field name for model
- *
- * @return string
- */
- public function getIdFieldName()
- {
- if (!($fieldName = parent::getIdFieldName())) {
- $fieldName = $this->_getResource()->getIdFieldName();
- $this->setIdFieldName($fieldName);
- }
- return $fieldName;
- }
- /**
- * Retrieve model object identifier
- *
- * @return mixed
- */
- public function getId()
- {
- if ($fieldName = $this->getIdFieldName()) {
- return $this->_getData($fieldName);
- } else {
- return $this->_getData('id');
- }
- }
- /**
- * Declare model object identifier value
- *
- * @param mixed $id
- * @return Mage_Core_Model_Abstract
- */
- public function setId($id)
- {
- if ($this->getIdFieldName()) {
- $this->setData($this->getIdFieldName(), $id);
- } else {
- $this->setData('id', $id);
- }
- return $this;
- }
- /**
- * Retrieve model resource name
- *
- * @return string
- */
- public function getResourceName()
- {
- return $this->_resourceName;
- }
- /**
- * Get collection instance
- *
- * @return object
- */
- public function getResourceCollection()
- {
- if (empty($this->_resourceCollectionName)) {
- Mage::throwException(Mage::helper('core')->__('Model collection resource name is not defined'));
- }
- return Mage::getResourceModel($this->_resourceCollectionName, $this->_getResource());
- }
- public function getCollection()
- {
- return $this->getResourceCollection();
- }
- /**
- * Load object data
- *
- * @param integer $id
- * @return Mage_Core_Model_Abstract
- */
- public function load($id, $field=null)
- {
- $this->_getResource()->load($this, $id, $field);
- $this->_afterLoad();
- $this->setOrigData();
- return $this;
- }
- /**
- * Processing object after load data
- *
- * @return Mage_Core_Model_Abstract
- */
- protected function _afterLoad()
- {
- Mage::dispatchEvent('model_load_after', array('object'=>$this));
- Mage::dispatchEvent($this->_eventPrefix.'_load_after', array($this->_eventObject=>$this));
- return $this;
- }
- public function afterLoad()
- {
- $this->getResource()->afterLoad($this);
- $this->_afterLoad();
- }
- /**
- * Save object data
- *
- * @return Mage_Core_Model_Abstract
- */
- public function save()
- {
- $this->_getResource()->beginTransaction();
- try {
- $this->_beforeSave();
- if ($this->_dataSaveAllowed) {
- $this->_getResource()->save($this);
- $this->_afterSave();
- }
- $this->_getResource()->commit();
- }
- catch (Exception $e){
- $this->_getResource()->rollBack();
- throw $e;
- }
- return $this;
- }
- /**
- * Processing object before save data
- *
- * @return Mage_Core_Model_Abstract
- */
- protected function _beforeSave()
- {
- Mage::dispatchEvent('model_save_before', array('object'=>$this));
- Mage::dispatchEvent($this->_eventPrefix.'_save_before', array($this->_eventObject=>$this));
- return $this;
- }
- /**
- * Processing object after save data
- *
- * @return Mage_Core_Model_Abstract
- */
- protected function _afterSave()
- {
- if ($this->_cacheTag) {
- if ($this->_cacheTag === true) {
- $tags = array();
- }
- else {
- $tags = array($this->_cacheTag);
- }
- Mage::app()->cleanCache($tags);
- }
- Mage::dispatchEvent('model_save_after', array('object'=>$this));
- Mage::dispatchEvent($this->_eventPrefix.'_save_after', array($this->_eventObject=>$this));
- return $this;
- }
- /**
- * Delete object from database
- *
- * @return Mage_Core_Model_Abstract
- */
- public function delete()
- {
- $this->_getResource()->beginTransaction();
- try {
- $this->_beforeDelete();
- $this->_getResource()->delete($this);
- $this->_afterDelete();
- $this->_getResource()->commit();
- }
- catch (Exception $e){
- $this->_getResource()->rollBack();
- throw $e;
- }
- return $this;
- }
- /**
- * Processing object before delete data
- *
- * @return Mage_Core_Model_Abstract
- */
- protected function _beforeDelete()
- {
- Mage::dispatchEvent('model_delete_before', array('object'=>$this));
- Mage::dispatchEvent($this->_eventPrefix.'_delete_before', array($this->_eventObject=>$this));
- return $this;
- }
- /**
- * Safeguard func that will check, if we are in admin area
- *
- * @throws Mage_Core_Exception
- */
- protected function _protectFromNonAdmin()
- {
- if (Mage::registry('isSecureArea')) {
- return;
- }
- if (!Mage::app()->getStore()->isAdmin()) {
- Mage::throwException(Mage::helper('core')->__('Cannot complete this operation from non-admin area.'));
- }
- }
- /**
- * Processing object after delete data
- *
- * @return Mage_Core_Model_Abstract
- */
- protected function _afterDelete()
- {
- if ($this->_cacheTag) {
- if ($this->_cacheTag === true) {
- $tags = array();
- }
- else {
- $tags = array($this->_cacheTag);
- }
- Mage::app()->cleanCache($tags);
- }
- Mage::dispatchEvent('model_delete_after', array('object'=>$this));
- Mage::dispatchEvent($this->_eventPrefix.'_delete_after', array($this->_eventObject=>$this));
- return $this;
- }
- /**
- * Retrieve model resource
- *
- * @return Mage_Core_Model_Mysql4_Abstract
- */
- public function getResource()
- {
- return $this->_getResource();
- }
- public function getEntityId()
- {
- return $this->_getData('entity_id');
- }
- }