| Server IP : 213.186.33.4 / Your IP : 216.73.216.193 Web Server : Apache System : Linux webm006.cluster103.gra.hosting.ovh.net 5.15.206-ovh-vps-grsec-zfs-classid #1 SMP Fri May 15 02:41:25 UTC 2026 x86_64 User : awebpaca ( 35430) PHP Version : 8.5.0 Disable Function : _dyuweyrj4,_dyuweyrj4r,dl MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /home/awebpaca/boutiques/app/code/core/Mage/Eav/Model/Entity/Attribute/ |
Upload 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_Eav
* @copyright Copyright (c) 2010 Magento Inc. (http://www.magentocommerce.com)
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
/**
* Entity/Attribute/Model - attribute abstract
*
* @category Mage
* @package Mage_Eav
* @author Magento Core Team <core@magentocommerce.com>
*/
abstract class Mage_Eav_Model_Entity_Attribute_Abstract extends Mage_Core_Model_Abstract
implements Mage_Eav_Model_Entity_Attribute_Interface
{
const TYPE_STATIC = 'static';
/**
* Attribute name
*
* @var string
*/
protected $_name;
/**
* Entity instance
*
* @var Mage_Eav_Model_Entity_Abstract
*/
protected $_entity;
/**
* Backend instance
*
* @var Mage_Eav_Model_Entity_Attribute_Backend_Abstract
*/
protected $_backend;
/**
* Frontend instance
*
* @var Mage_Eav_Model_Entity_Attribute_Frontend_Abstract
*/
protected $_frontend;
/**
* Source instance
*
* @var Mage_Eav_Model_Entity_Attribute_Source_Abstract
*/
protected $_source;
/**
* Attribute id cache
*
* @var array
*/
protected $_attributeIdCache = array();
/**
* Attribute data table name
*
* @var string
*/
protected $_dataTable = null;
/**
* Initialize resource model
*/
protected function _construct()
{
$this->_init('eav/entity_attribute');
}
/**
* Load attribute data by code
*
* @param mixed $entityType
* @param string $code
* @return Mage_Eav_Model_Entity_Attribute_Abstract
*/
public function loadByCode($entityType, $code)
{
Varien_Profiler::start('_LOAD_ATTRIBUTE_BY_CODE__');
if (is_numeric($entityType)) {
$entityTypeId = $entityType;
} elseif (is_string($entityType)) {
$entityType = Mage::getModel('eav/entity_type')->loadByCode($entityType);
}
if ($entityType instanceof Mage_Eav_Model_Entity_Type) {
$entityTypeId = $entityType->getId();
}
if (empty($entityTypeId)) {
throw Mage::exception('Mage_Eav', Mage::helper('eav')->__('Invalid entity supplied.'));
}
$this->_getResource()->loadByCode($this, $entityTypeId, $code);
$this->_afterLoad();
Varien_Profiler::stop('_LOAD_ATTRIBUTE_BY_CODE__');
return $this;
}
/**
* Retrieve attribute configuration (deprecated)
*
* @return Mage_Eav_Model_Entity_Attribute_Abstract
*/
public function getConfig()
{
return $this;
}
/**
* Get attribute name
*
* @return string
*/
public function getName()
{
return $this->_getData('attribute_code');
}
/**
* Specify attribute identifier
*
* @param int $data
* @return Mage_Eav_Model_Entity_Attribute_Abstract
*/
public function setAttributeId($data)
{
$this->_data['attribute_id'] = $data;
return $this;
}
/**
* Get attribute identifuer
*
* @return int | null
*/
public function getAttributeId()
{
return $this->_getData('attribute_id');
}
public function setAttributeCode($data)
{
return $this->setData('attribute_code', $data);
}
public function getAttributeCode()
{
return $this->_getData('attribute_code');
}
public function setAttributeModel($data)
{
return $this->setData('attribute_model', $data);
}
public function getAttributeModel()
{
return $this->_getData('attribute_model');
}
public function setBackendType($data)
{
return $this->setData('backend_type', $data);
}
public function getBackendType()
{
return $this->_getData('backend_type');
}
public function setBackendModel($data)
{
return $this->setData('backend_model', $data);
}
public function getBackendModel()
{
return $this->_getData('backend_model');
}
public function setBackendTable($data)
{
return $this->setData('backend_table', $data);
}
public function getIsVisibleOnFront()
{
return $this->_getData('is_visible_on_front');
}
public function getDefaultValue()
{
return $this->_getData('default_value');
}
public function getAttributeSetId()
{
return $this->_getData('attribute_set_id');
}
public function setAttributeSetId($id)
{
$this->_data['attribute_set_id'] = $id;
return $this;
}
public function getEntityTypeId()
{
return $this->_getData('entity_type_id');
}
public function setEntityTypeId($id)
{
$this->_data['entity_type_id'] = $id;
return $this;
}
public function setEntityType($type)
{
$this->setData('entity_type', $type);
return $this;
}
/**
* Return is attribute global
*
* @deprecated moved to catalog attribute model
* @return integer
*/
public function getIsGlobal()
{
return $this->_getData('is_global');
}
/**
* Get attribute alias as "entity_type/attribute_code"
*
* @param Mage_Eav_Model_Entity_Abstract $entity exclude this entity
* @return string
*/
public function getAlias($entity=null)
{
$alias = '';
if (is_null($entity) || ($entity->getType() !== $this->getEntity()->getType())) {
$alias .= $this->getEntity()->getType() . '/';
}
$alias .= $this->getAttributeCode();
return $alias;
}
/**
* Set attribute name
*
* @param string $name
* @return Mage_Eav_Model_Entity_Attribute_Abstract
*/
public function setName($name)
{
return $this->setData('attribute_code', $name);
}
public function getEntityType()
{
/*if ($this->hasData('entity_type')) {
return $this->_getData('entity_type');
}*/
return Mage::getSingleton('eav/config')->getEntityType($this->getEntityTypeId());
}
/**
* Set attribute entity instance
*
* @param Mage_Eav_Model_Entity_Abstract $entity
* @return Mage_Eav_Model_Entity_Attribute_Abstract
*/
public function setEntity($entity)
{
$this->_entity = $entity;
return $this;
}
/**
* Retrieve entity instance
*
* @return Mage_Eav_Model_Entity_Abstract
*/
public function getEntity()
{
if (!$this->_entity) {
$this->_entity = $this->getEntityType();
}
return $this->_entity;
}
public function getEntityIdField()
{
return $this->getEntity()->getValueEntityIdField();
}
/**
* Retrieve backend instance
*
* @return Mage_Eav_Model_Entity_Attribute_Backend_Abstract
*/
public function getBackend()
{
if (empty($this->_backend)) {
if (!$this->getBackendModel()) {
$this->setBackendModel($this->_getDefaultBackendModel());
}
$backend = Mage::getModel($this->getBackendModel());
if (!$backend) {
throw Mage::exception('Mage_Eav', 'Invalid backend model specified: '.$this->getBackendModel());
}
$this->_backend = $backend->setAttribute($this);
}
return $this->_backend;
}
/**
* Retrieve frontend instance
*
* @return Mage_Eav_Model_Entity_Attribute_Frontend_Abstract
*/
public function getFrontend()
{
if (empty($this->_frontend)) {
if (!$this->getFrontendModel()) {
$this->setFrontendModel($this->_getDefaultFrontendModel());
}
$this->_frontend = Mage::getModel($this->getFrontendModel())
->setAttribute($this);
}
return $this->_frontend;
}
/**
* Retrieve source instance
*
* @return Mage_Eav_Model_Entity_Attribute_Source_Abstract
*/
public function getSource()
{
if (empty($this->_source)) {
if (!$this->getSourceModel()) {
$this->setSourceModel($this->_getDefaultSourceModel());
}
$this->_source = Mage::getModel($this->getSourceModel())
->setAttribute($this);
}
return $this->_source;
}
public function usesSource()
{
return $this->getFrontendInput()==='select' || $this->getFrontendInput()==='multiselect';
}
protected function _getDefaultBackendModel()
{
return Mage_Eav_Model_Entity::DEFAULT_BACKEND_MODEL;
}
protected function _getDefaultFrontendModel()
{
return Mage_Eav_Model_Entity::DEFAULT_FRONTEND_MODEL;
}
protected function _getDefaultSourceModel()
{
return $this->getEntity()->getDefaultAttributeSourceModel();
}
public function isValueEmpty($value)
{
$attrType = $this->getBackend()->getType();
$isEmpty = is_array($value)
|| is_null($value)
|| $value===false && $attrType!='int'
|| $value==='' && ($attrType=='int' || $attrType=='decimal' || $attrType=='datetime');
return $isEmpty;
}
/**
* Check if attribute in specified set
*
* @param int|array $setId
* @return boolean
*/
public function isInSet($setId)
{
if (!$this->hasAttributeSetInfo()) {
return true;
}
if (is_array($setId)
&& count(array_intersect($setId, array_keys($this->getAttributeSetInfo())))) {
return true;
}
if (!is_array($setId)
&& array_key_exists($setId, $this->getAttributeSetInfo())) {
return true;
}
return false;
}
/**
* Check if attribute in specified group
*
* @param int $setId
* @param int $groupId
* @return boolean
*/
public function isInGroup($setId, $groupId)
{
if ($this->isInSet($setId) && $this->getData('attribute_set_info/' . $setId . '/group_id') == $groupId) {
return true;
}
return false;
}
/**
* Return attribute id
*
* @param string $entityType
* @param string $code
* @return int
*/
public function getIdByCode($entityType, $code)
{
$k = "{$entityType}|{$code}";
if (!isset($this->_attributeIdCache[$k])) {
$this->_attributeIdCache[$k] = $this->getResource()->getIdByCode($entityType, $code);
}
return $this->_attributeIdCache[$k];
}
/**
* Check if attribute is static
*
* @return bool
*/
public function isStatic()
{
return $this->getBackendType() == self::TYPE_STATIC || $this->getBackendType() == '';
}
/**
* Get attribute backend table name
*
* @return string
*/
public function getBackendTable()
{
if ($this->_dataTable === null) {
if ($this->isStatic()) {
$this->_dataTable = $this->getEntityType()->getValueTablePrefix();
} elseif ($backendTable = trim($this->_getData('backend_table'))) {
$this->_dataTable = $backendTable;
} else {
$this->_dataTable = $this->getEntity()->getValueTablePrefix().'_'.$this->getBackendType();
}
}
return $this->_dataTable;
}
/**
* Retrieve Flat Column(s)
*
* @return array
*/
public function getFlatColumns() {
if ($this->usesSource() && $this->getBackendType() != 'static') {
return $this->getSource()->getFlatColums();
}
$columns = array();
switch ($this->getBackendType()) {
case 'static':
$describe = $this->_getResource()
->describeTable($this->getBackend()->getTable());
if (!isset($describe[$this->getAttributeCode()])) {
break;
}
$prop = $describe[$this->getAttributeCode()];
$columns[$this->getAttributeCode()] = array(
'type' => $prop['DATA_TYPE'] . ($prop['LENGTH'] ? "({$prop['LENGTH']})" : ""),
'unsigned' => $prop['UNSIGNED'] ? true: false,
'is_null' => $prop['NULLABLE'],
'default' => $prop['DEFAULT'],
'extra' => null
);
break;
case 'datetime':
$columns[$this->getAttributeCode()] = array(
'type' => 'datetime',
'unsigned' => false,
'is_null' => true,
'default' => null,
'extra' => null
);
break;
case 'decimal':
$columns[$this->getAttributeCode()] = array(
'type' => 'decimal(12,4)',
'unsigned' => false,
'is_null' => true,
'default' => null,
'extra' => null
);
break;
case 'int':
$columns[$this->getAttributeCode()] = array(
'type' => 'int',
'unsigned' => false,
'is_null' => true,
'default' => null,
'extra' => null
);
break;
case 'text':
$columns[$this->getAttributeCode()] = array(
'type' => 'text',
'unsigned' => false,
'is_null' => true,
'default' => null,
'extra' => null
);
break;
case 'varchar':
$columns[$this->getAttributeCode()] = array(
'type' => 'varchar(255)',
'unsigned' => false,
'is_null' => true,
'default' => null,
'extra' => null
);
break;
}
return $columns;
}
/**
* Retrieve index data for Flat table
*
* @return array
*/
public function getFlatIndexes()
{
$condition = $this->getUsedForSortBy();
if ($this->getFlatAddFilterableAttributes()) {
$condition = $condition || $this->getIsFilterable();
}
if ($condition) {
if ($this->usesSource() && $this->getBackendType() != 'static') {
return $this->getSource()->getFlatIndexes();
}
$indexes = array();
switch ($this->getBackendType()) {
case 'static':
$describe = $this->_getResource()
->describeTable($this->getBackend()->getTable());
if (!isset($describe[$this->getAttributeCode()])) {
break;
}
$indexDataTypes = array(
'varchar',
'varbinary',
'char',
'date',
'datetime',
'timestamp',
'time',
'year',
'enum',
'set',
'bit',
'bool',
'tinyint',
'smallint',
'mediumint',
'int',
'bigint',
'float',
'double',
'decimal',
);
$prop = $describe[$this->getAttributeCode()];
if (in_array($prop['DATA_TYPE'], $indexDataTypes)) {
$indexName = 'IDX_' . strtoupper($this->getAttributeCode());
$indexes[$indexName] = array(
'type' => 'index',
'fields' => array($this->getAttributeCode())
);
}
break;
case 'datetime':
case 'decimal':
case 'int':
case 'varchar':
$indexName = 'IDX_' . strtoupper($this->getAttributeCode());
$indexes[$indexName] = array(
'type' => 'index',
'fields' => array($this->getAttributeCode())
);
break;
}
return $indexes;
}
return array();
}
/**
* Retrieve Select For Flat Attribute update
*
* @param int $store
* @return Varien_Db_Select
*/
public function getFlatUpdateSelect($store = null) {
if (is_null($store)) {
foreach (Mage::app()->getStores() as $store) {
$this->getFlatUpdateSelect($store->getId());
}
return $this;
}
if ($this->getBackendType() == 'static') {
return null;
}
if ($this->usesSource()) {
return $this->getSource()->getFlatUpdateSelect($store);
}
return $this->_getResource()->getFlatUpdateSelect($this, $store);
}
}