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: * Generate options for media database selection
29: */
30: class Mage_Adminhtml_Model_System_Config_Source_Storage_Media_Database
31: {
32: /**
33: * Store all detected connections
34: *
35: * @var array
36: */
37: protected $_connections = array();
38:
39: /**
40: * Recursively collect connection configuration
41: *
42: * @param string $connectionName
43: * @return array
44: */
45: protected function _collectConnectionConfig($connectionName)
46: {
47: $config = array();
48:
49: if (isset($this->_connections[$connectionName])) {
50: $connection = $this->_connections[$connectionName];
51: $connection = (array) $connection->descend('connection');
52:
53: if (isset($connection['use'])) {
54: $config = $this->_collectConnectionConfig((string) $connection['use']);
55: }
56:
57: $config = array_merge($config, $connection);
58: }
59:
60: return $config;
61: }
62:
63: /**
64: * Options getter
65: *
66: * @return array
67: */
68: public function toOptionArray()
69: {
70: $media_storages = array();
71:
72: $this->_connections = (array) Mage::app()->getConfig()->getNode('global/resources')->children();
73: foreach (array_keys($this->_connections) as $connectionName) {
74: $connection = $this->_collectConnectionConfig($connectionName);
75: if (!isset($connection['active']) || $connection['active'] != 1) {
76: continue;
77: }
78:
79: $media_storages[] = array('value' => $connectionName, 'label' => $connectionName);
80: }
81: sort($media_storages);
82: reset($media_storages);
83:
84: return $media_storages;
85: }
86:
87: }
88: