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_Eav
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: * Entity/Attribute/Model - attribute selection source from configuration
30: *
31: * this class should be abstract, but kept usual for legacy purposes
32: *
33: * @category Mage
34: * @package Mage_Eav
35: * @author Magento Core Team <core@magentocommerce.com>
36: */
37: class Mage_Eav_Model_Entity_Attribute_Source_Config extends Mage_Eav_Model_Entity_Attribute_Source_Abstract
38: {
39: /**
40: * Config Node Path
41: *
42: * @var Mage_Core_Model_Config_Element
43: */
44: protected $_configNodePath;
45:
46: /**
47: * Retrieve all options for the source from configuration
48: *
49: * @throws Mage_Eav_Exception
50: * @return array
51: */
52: public function getAllOptions()
53: {
54: if ($this->_options === null) {
55: $this->_options = array();
56: $rootNode = null;
57: if ($this->_configNodePath) {
58: $rootNode = Mage::getConfig()->getNode($this->_configNodePath);
59: }
60: if (!$rootNode) {
61: throw Mage::exception('Mage_Eav', Mage::helper('eav')->__('Failed to load node %s from config', $this->_configNodePath));
62: }
63: $options = $rootNode->children();
64: if (empty($options)) {
65: throw Mage::exception('Mage_Eav', Mage::helper('eav')->__('No options found in config node %s', $this->_configNodePath));
66: }
67: foreach ($options as $option) {
68: $this->_options[] = array(
69: 'value' => (string)$option->value,
70: 'label' => Mage::helper('eav')->__((string)$option->label)
71: );
72: }
73: }
74:
75: return $this->_options;
76: }
77: }
78: