Skip to content

Instantly share code, notes, and snippets.

@VIVEKLUCKY249
Created January 30, 2017 21:50
Show Gist options
  • Save VIVEKLUCKY249/dce460cee70ca295b3072fd11ac18ebe to your computer and use it in GitHub Desktop.
Save VIVEKLUCKY249/dce460cee70ca295b3072fd11ac18ebe to your computer and use it in GitHub Desktop.
Overrided Abstract.php for getting product's data by Sku
<?php
### Put this file inside [magentoroot_path]\app\code\local\Mage\Catalog\Model directory
/**
* 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@magento.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.magento.com for more information.
*
* @category Mage
* @package Mage_Catalog
* @copyright Copyright (c) 2006-2016 X.commerce, Inc. and affiliates (http://www.magento.com)
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
/**
* Abstract model for catalog entities
*
* @category Mage
* @package Mage_Catalog
* @author Magento Core Team <core@magentocommerce.com>
*/
abstract class Mage_Catalog_Model_Abstract extends Mage_Core_Model_Abstract
{
/**
* Identifuer of default store
* used for loading default data for entity
*/
const DEFAULT_STORE_ID = 0;
/**
* Attribute default values
*
* This array contain default values for attributes which was redefine
* value for store
*
* @var array
*/
protected $_defaultValues = array();
/**
* This array contains codes of attributes which have value in current store
*
* @var array
*/
protected $_storeValuesFlags = array();
/**
* Locked attributes
*
* @var array
*/
protected $_lockedAttributes = array();
/**
* Is model deleteable
*
* @var boolean
*/
protected $_isDeleteable = true;
/**
* Is model readonly
*
* @var boolean
*/
protected $_isReadonly = false;
/**
* Lock attribute
*
* @param string $attributeCode
* @return Mage_Catalog_Model_Abstract
*/
public function lockAttribute($attributeCode)
{
$this->_lockedAttributes[$attributeCode] = true;
return $this;
}
/**
* Unlock attribute
*
* @param string $attributeCode
* @return Mage_Catalog_Model_Abstract
*/
public function unlockAttribute($attributeCode)
{
if ($this->isLockedAttribute($attributeCode)) {
unset($this->_lockedAttributes[$attributeCode]);
}
return $this;
}
/**
* Unlock all attributes
*
* @return Mage_Catalog_Model_Abstract
*/
public function unlockAttributes()
{
$this->_lockedAttributes = array();
return $this;
}
/**
* Retrieve locked attributes
*
* @return array
*/
public function getLockedAttributes()
{
return array_keys($this->_lockedAttributes);
}
/**
* Checks that model have locked attributes
*
* @return boolean
*/
public function hasLockedAttributes()
{
return !empty($this->_lockedAttributes);
}
/**
* Retrieve locked attributes
*
* @return boolean
*/
public function isLockedAttribute($attributeCode)
{
return isset($this->_lockedAttributes[$attributeCode]);
}
/**
* Overwrite data in the object.
*
* $key can be string or array.
* If $key is string, the attribute value will be overwritten by $value
*
* If $key is an array, it will overwrite all the data in the object.
*
* $isChanged will specify if the object needs to be saved after an update.
*
* @param string|array $key
* @param mixed $value
* @param boolean $isChanged
* @return Varien_Object
*/
public function setData($key, $value = null)
{
if ($this->hasLockedAttributes()) {
if (is_array($key)) {
foreach ($this->getLockedAttributes() as $attribute) {
if (isset($key[$attribute])) {
unset($key[$attribute]);
}
}
} elseif ($this->isLockedAttribute($key)) {
return $this;
}
} elseif ($this->isReadonly()) {
return $this;
}
return parent::setData($key, $value);
}
/**
* Unset data from the object.
*
* $key can be a string only. Array will be ignored.
*
* $isChanged will specify if the object needs to be saved after an update.
*
* @param string $key
* @param boolean $isChanged
* @return Mage_Catalog_Model_Abstract
*/
public function unsetData($key = null)
{
if ((!is_null($key) && $this->isLockedAttribute($key)) ||
$this->isReadonly()) {
return $this;
}
return parent::unsetData($key);
}
/**
* Get collection instance
*
* @return Mage_Catalog_Model_Resource_Collection_Abstract
*/
public function getResourceCollection()
{
$collection = parent::getResourceCollection()
->setStoreId($this->getStoreId());
return $collection;
}
/**
* Load entity by attribute
*
* @param Mage_Eav_Model_Entity_Attribute_Interface|integer|string|array $attribute
* @param null|string|array $value
* @param string $additionalAttributes
* @return bool|Mage_Catalog_Model_Abstract
*/
public function loadByAttribute($attribute, $value, $additionalAttributes = '*')
{
$collection = $this->getResourceCollection()
->addAttributeToSelect($additionalAttributes)
->addAttributeToFilter($attribute, $value)
->setPage(1,1);
foreach ($collection as $object) {
return $object;
}
return false;
}
## Custom functions to get Product's data by Sku start 31-01-2017
public function loadBySku($prodSku) {
return ($this->loadByAttribute("sku", $prodSku)) ? $this->loadByAttribute("sku", $prodSku) : false;
}
public function getDataBySku($prodSku) {
return ($this->loadBySku($prodSku)) ? $this->loadBySku($prodSku)->getData() : false;
}
## Custom functions to get Product's data by Sku end 31-01-2017
/**
* Retrieve sore object
*
* @return Mage_Core_Model_Store
*/
public function getStore()
{
return Mage::app()->getStore($this->getStoreId());
}
/**
* Retrieve all store ids of object current website
*
* @return array
*/
public function getWebsiteStoreIds()
{
return $this->getStore()->getWebsite()->getStoreIds(true);
}
/**
* Adding attribute code and value to default value registry
*
* Default value existing is flag for using store value in data
*
* @param string $attributeCode
* @value mixed $value
* @return Mage_Catalog_Model_Abstract
*/
public function setAttributeDefaultValue($attributeCode, $value)
{
$this->_defaultValues[$attributeCode] = $value;
return $this;
}
/**
* Retrieve default value for attribute code
*
* @param string $attributeCode
* @return array|boolean
*/
public function getAttributeDefaultValue($attributeCode)
{
return array_key_exists($attributeCode, $this->_defaultValues) ? $this->_defaultValues[$attributeCode] : false;
}
/**
* Set attribute code flag if attribute has value in current store and does not use
* value of default store as value
*
* @param string $attributeCode
* @return Mage_Catalog_Model_Abstract
*/
public function setExistsStoreValueFlag($attributeCode)
{
$this->_storeValuesFlags[$attributeCode] = true;
return $this;
}
/**
* Check if object attribute has value in current store
*
* @param string $attributeCode
* @return bool
*/
public function getExistsStoreValueFlag($attributeCode)
{
return array_key_exists($attributeCode, $this->_storeValuesFlags);
}
/**
* Before save unlock attributes
*
* @return Mage_Catalog_Model_Abstract
*/
protected function _beforeSave()
{
$this->unlockAttributes();
return parent::_beforeSave();
}
/**
* Checks model is deletable
*
* @return boolean
*/
public function isDeleteable()
{
return $this->_isDeleteable;
}
/**
* Set is deletable flag
*
* @param boolean $value
* @return Mage_Catalog_Model_Abstract
*/
public function setIsDeleteable($value)
{
$this->_isDeleteable = (bool) $value;
return $this;
}
/**
* Checks model is deletable
*
* @return boolean
*/
public function isReadonly()
{
return $this->_isReadonly;
}
/**
* Set is deletable flag
*
* @param boolean $value
* @return Mage_Catalog_Model_Abstract
*/
public function setIsReadonly($value)
{
$this->_isReadonly = (bool)$value;
return $this;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment