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_Adminhtml
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: * Adminhtml grid item renderer
29: *
30: * @category Mage
31: * @package Mage_Adminhtml
32: * @author Magento Core Team <core@magentocommerce.com>
33: */
34: class Mage_Adminhtml_Block_Widget_Grid_Column_Renderer_Theme
35: extends Mage_Adminhtml_Block_Widget_Grid_Column_Renderer_Abstract
36: {
37: /**
38: * Renders grid column
39: *
40: * @param Varien_Object $row
41: * @return string
42: */
43: public function render(Varien_Object $row)
44: {
45: $options = $this->getOptions();
46: $value = $this->_getValue($row);
47: if ($value == '') {
48: $value = 'all';
49: }
50:
51: return $this->escapeHtml($this->_getValueLabel($options, $value));
52: }
53:
54: /**
55: * Retrieve options setted in column.
56: * Or load if options was not set.
57: *
58: * @return array
59: */
60: public function getOptions()
61: {
62: if ($this->getColumn()->getFilter()) {
63: $options = $this->getColumn()->getFilter()->getOptions();
64: } else {
65: $options = $this->getColumn()->getOptions();
66: }
67: if (empty($options) || !is_array($options)) {
68: $options = Mage::getModel('core/design_source_design')
69: ->setIsFullLabel(true)->getAllOptions(false);
70: }
71:
72: return $options;
73: }
74:
75: /**
76: * Retrieve value label from options array
77: *
78: * @param array $options
79: * @param string $value
80: * @return mixed
81: */
82: protected function _getValueLabel($options, $value)
83: {
84: if (empty($options) || !is_array($options)) {
85: return false;
86: }
87:
88: foreach ($options as $option) {
89: if (is_array($option['value'])) {
90: $label = $this->_getValueLabel($option['value'], $value);
91: if ($label) {
92: return $label;
93: }
94: } else {
95: if ($option['value'] == $value) {
96: return $option['label'];
97: }
98: }
99: }
100:
101: return false;
102: }
103: }
104: