primo commit
This commit is contained in:
		
							
								
								
									
										101
									
								
								plugins/system/regularlabs/src/AdminMenu.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										101
									
								
								plugins/system/regularlabs/src/AdminMenu.php
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,101 @@ | ||||
| <?php | ||||
| /** | ||||
|  * @package         Regular Labs Library | ||||
|  * @version         24.11.1459 | ||||
|  *  | ||||
|  * @author          Peter van Westen <info@regularlabs.com> | ||||
|  * @link            https://regularlabs.com | ||||
|  * @copyright       Copyright © 2024 Regular Labs All Rights Reserved | ||||
|  * @license         GNU General Public License version 2 or later | ||||
|  */ | ||||
|  | ||||
| namespace RegularLabs\Plugin\System\RegularLabs; | ||||
|  | ||||
| defined('_JEXEC') or die; | ||||
|  | ||||
| use Joomla\CMS\Factory as JFactory; | ||||
| use RegularLabs\Library\RegEx as RL_RegEx; | ||||
|  | ||||
| class AdminMenu | ||||
| { | ||||
|     public static function combine(): void | ||||
|     { | ||||
|         $params = Params::get(); | ||||
|  | ||||
|         if ( ! $params->combine_admin_menu) | ||||
|         { | ||||
|             return; | ||||
|         } | ||||
|  | ||||
|         $html = JFactory::getApplication()->getBody(); | ||||
|  | ||||
|         if ($html == '') | ||||
|         { | ||||
|             return; | ||||
|         } | ||||
|  | ||||
|         if ( | ||||
|             ! str_contains($html, '<nav class="main-nav-container"') | ||||
|             || ! str_contains($html, '">Regular Labs - ') | ||||
|         ) | ||||
|         { | ||||
|             return; | ||||
|         } | ||||
|  | ||||
|         if ( ! RL_RegEx::matchAll( | ||||
|             '<li class="item item-level-2"><a class="no-dropdown"[^>]*"Regular Labs - .*?</a></li>', | ||||
|             $html, | ||||
|             $matches, | ||||
|             null, | ||||
|             PREG_PATTERN_ORDER | ||||
|         ) | ||||
|         ) | ||||
|         { | ||||
|             return; | ||||
|         } | ||||
|  | ||||
|         $menu_items = $matches[0]; | ||||
|  | ||||
|         if (count($menu_items) < 2) | ||||
|         { | ||||
|             return; | ||||
|         } | ||||
|  | ||||
|         $manager = null; | ||||
|  | ||||
|         foreach ($menu_items as $i => &$menu_item) | ||||
|         { | ||||
|             $menu_item = str_replace('item-level-2', 'item-level-3', $menu_item); | ||||
|             $menu_item = str_replace('Regular Labs - ', '', $menu_item); | ||||
|  | ||||
|             if (str_contains($menu_item, 'index.php?option=com_regularlabsmanager')) | ||||
|             { | ||||
|                 $manager = $menu_item; | ||||
|                 unset($menu_items[$i]); | ||||
|             } | ||||
|         } | ||||
|  | ||||
|         $main_link = '#'; | ||||
|  | ||||
|         if ( ! is_null($manager)) | ||||
|         { | ||||
|             array_unshift($menu_items, $manager); | ||||
|             $main_link = 'href="index.php?option=com_regularlabsmanager"'; | ||||
|         } | ||||
|  | ||||
|         $new_menu_item = | ||||
|             '<li class="item parent item-level-2">' | ||||
|             . '<a class="has-arrow" href=" ' . $main_link . '" aria-label="Regular Labs"><span class="sidebar-item-title">Regular Labs</span></a>' | ||||
|             . "\n" . '<ul id="menu-regularlabs" class="mm-collapse collapse-level-2">' | ||||
|             . "\n" . implode("\n", $menu_items) | ||||
|             . "\n" . '</ul>' | ||||
|             . '</li>'; | ||||
|  | ||||
|         $first = array_shift($matches[0]); | ||||
|  | ||||
|         $html = str_replace($first, $new_menu_item, $html); | ||||
|         $html = str_replace($matches[0], '', $html); | ||||
|  | ||||
|         JFactory::getApplication()->setBody($html); | ||||
|     } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user