primo commit
This commit is contained in:
		
							
								
								
									
										152
									
								
								administrator/components/com_config/src/Helper/ConfigHelper.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										152
									
								
								administrator/components/com_config/src/Helper/ConfigHelper.php
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,152 @@ | ||||
| <?php | ||||
|  | ||||
| /** | ||||
|  * @package     Joomla.Administrator | ||||
|  * @subpackage  com_config | ||||
|  * | ||||
|  * @copyright   (C) 2012 Open Source Matters, Inc. <https://www.joomla.org> | ||||
|  * @license     GNU General Public License version 2 or later; see LICENSE.txt | ||||
|  */ | ||||
|  | ||||
| namespace Joomla\Component\Config\Administrator\Helper; | ||||
|  | ||||
| use Joomla\CMS\Application\ApplicationHelper; | ||||
| use Joomla\CMS\Factory; | ||||
| use Joomla\CMS\Helper\ContentHelper; | ||||
| use Joomla\CMS\Language\Text; | ||||
|  | ||||
| // phpcs:disable PSR1.Files.SideEffects | ||||
| \defined('_JEXEC') or die; | ||||
| // phpcs:enable PSR1.Files.SideEffects | ||||
|  | ||||
| /** | ||||
|  * Components helper for com_config | ||||
|  * | ||||
|  * @since  3.0 | ||||
|  */ | ||||
| class ConfigHelper extends ContentHelper | ||||
| { | ||||
|     /** | ||||
|      * Get an array of all enabled components. | ||||
|      * | ||||
|      * @return  array | ||||
|      * | ||||
|      * @since   3.0 | ||||
|      */ | ||||
|     public static function getAllComponents() | ||||
|     { | ||||
|         $db    = Factory::getDbo(); | ||||
|         $query = $db->getQuery(true) | ||||
|             ->select('element') | ||||
|             ->from('#__extensions') | ||||
|             ->where('type = ' . $db->quote('component')) | ||||
|             ->where('enabled = 1'); | ||||
|         $db->setQuery($query); | ||||
|         $result = $db->loadColumn(); | ||||
|  | ||||
|         return $result; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Returns true if the component has configuration options. | ||||
|      * | ||||
|      * @param   string  $component  Component name | ||||
|      * | ||||
|      * @return  boolean | ||||
|      * | ||||
|      * @since   3.0 | ||||
|      */ | ||||
|     public static function hasComponentConfig($component) | ||||
|     { | ||||
|         return is_file(JPATH_ADMINISTRATOR . '/components/' . $component . '/config.xml'); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Returns true if the current user has permission to access and change configuration options. | ||||
|      * | ||||
|      * @param   string  $component  Component name | ||||
|      * | ||||
|      * @return  boolean | ||||
|      * | ||||
|      * @since   4.2.9 | ||||
|      */ | ||||
|     public static function canChangeComponentConfig(string $component) | ||||
|     { | ||||
|         $user = Factory::getApplication()->getIdentity(); | ||||
|  | ||||
|         if (!\in_array(strtolower($component), ['com_joomlaupdate', 'com_privacy'], true)) { | ||||
|             return $user->authorise('core.admin', $component) || $user->authorise('core.options', $component); | ||||
|         } | ||||
|  | ||||
|         return $user->authorise('core.admin'); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Returns an array of all components with configuration options. | ||||
|      * Optionally return only those components for which the current user has 'core.manage' rights. | ||||
|      * | ||||
|      * @param   boolean  $authCheck  True to restrict to components where current user has 'core.manage' rights. | ||||
|      * | ||||
|      * @return  array | ||||
|      * | ||||
|      * @since   3.0 | ||||
|      */ | ||||
|     public static function getComponentsWithConfig($authCheck = true) | ||||
|     { | ||||
|         $result     = []; | ||||
|         $components = self::getAllComponents(); | ||||
|  | ||||
|         // Remove com_config from the array as that may have weird side effects | ||||
|         $components = array_diff($components, ['com_config']); | ||||
|  | ||||
|         foreach ($components as $component) { | ||||
|             if (self::hasComponentConfig($component) && (!$authCheck || self::canChangeComponentConfig($component))) { | ||||
|                 self::loadLanguageForComponent($component); | ||||
|                 $result[$component] = ApplicationHelper::stringURLSafe(Text::_($component)) . '_' . $component; | ||||
|             } | ||||
|         } | ||||
|  | ||||
|         asort($result); | ||||
|  | ||||
|         return array_keys($result); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Load the sys language for the given component. | ||||
|      * | ||||
|      * @param   array  $components  Array of component names. | ||||
|      * | ||||
|      * @return  void | ||||
|      * | ||||
|      * @since   3.0 | ||||
|      */ | ||||
|     public static function loadLanguageForComponents($components) | ||||
|     { | ||||
|         foreach ($components as $component) { | ||||
|             self::loadLanguageForComponent($component); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Load the sys language for the given component. | ||||
|      * | ||||
|      * @param   string  $component  component name. | ||||
|      * | ||||
|      * @return  void | ||||
|      * | ||||
|      * @since   3.5 | ||||
|      */ | ||||
|     public static function loadLanguageForComponent($component) | ||||
|     { | ||||
|         if (empty($component)) { | ||||
|             return; | ||||
|         } | ||||
|  | ||||
|         $lang = Factory::getLanguage(); | ||||
|  | ||||
|         // Load the core file then | ||||
|         // Load extension-local file. | ||||
|         $lang->load($component . '.sys', JPATH_BASE) | ||||
|         || $lang->load($component . '.sys', JPATH_ADMINISTRATOR . '/components/' . $component); | ||||
|     } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user