Version 5.0.13

This commit is contained in:
Neo committed 2025-12-19 19:04:57 -08:00
1 parent b89858b2ff
commit 5efe744c5f
1407 files changed
+69690 -30177

No files matched your search

+65 -44
View File
@@ -278,6 +278,11 @@ class Admin extends Standard
{
foreach ( Db::i()->select( '*', 'core_acp_search_index' ) as $word )
{
if( !empty( $word['callback'] ) and !eval( $word['callback'] ) )
{
continue;
}
$this->searchKeywords[ $word['url'] ]['lang_key'] = $word['lang_key'];
$this->searchKeywords[ $word['url'] ]['restriction'] = $word['restriction'];
$this->searchKeywords[ $word['url'] ]['keywords'][] = $word['keyword'];
@@ -422,10 +427,11 @@ class Admin extends Standard
public function buildMenu(bool $rebuild=FALSE ): ?array
{
$acpTabOrder = $this->_getAcpTabOrder();
$alwaysFirst = [];
if ( $this->menu === NULL or $rebuild === TRUE )
if ( $this->menu === null or $rebuild === true )
{
$this->menu = array( 'tabs' => array(), 'defaults' => array(), 'badges' );
$this->menu = ['tabs' => [], 'defaults' => [], 'badges'];
foreach ( Application::applications() as $app )
{
@@ -433,11 +439,15 @@ class Admin extends Standard
{
$appMenu = $app->acpMenu();
if ( $acpTabOrder !== NULL and isset( $acpTabOrder[ $app->directory ] ) and $app->directory == 'nexus' )
if ( $appItemsFirst = $app->acpMenuItemsAlwayFirst() and count( $appItemsFirst ) )
{
uksort( $appMenu, function( $a, $b ) use ( $acpTabOrder, $app )
{
return array_search( "{$app->directory}_{$a}", $acpTabOrder[ $app->directory ] ) - array_search( "{$app->directory}_{$b}", $acpTabOrder[ $app->directory ] );
$alwaysFirst = array_merge( $alwaysFirst, $appItemsFirst );
}
if ( $acpTabOrder !== null and isset( $acpTabOrder[$app->directory] ) and $app->directory == 'nexus' )
{
uksort( $appMenu, function ( $a, $b ) use ( $acpTabOrder, $app ) {
return array_search( "{$app->directory}_{$a}", $acpTabOrder[$app->directory] ) - array_search( "{$app->directory}_{$b}", $acpTabOrder[$app->directory] );
} );
}
@@ -455,34 +465,34 @@ class Admin extends Standard
if ( Member::loggedIn()->hasAcpRestriction( $app, $moduleToCheck ) )
{
if( !$item['restriction'] )
if ( !$item['restriction'] )
{
$canAccess = TRUE;
$canAccess = true;
}
else
{
if( mb_strpos( $item['restriction'], ',' ) )
if ( mb_strpos( $item['restriction'], ',' ) )
{
$restrictions = explode( ',', $item['restriction'] );
}
else
{
$restrictions = array( $item['restriction'] );
$restrictions = [$item['restriction']];
}
$canAccess = FALSE;
$canAccess = false;
foreach( $restrictions as $restrictionKey )
foreach ( $restrictions as $restrictionKey )
{
if( Member::loggedIn()->hasAcpRestriction( $app, $moduleToCheck, $restrictionKey ) )
if ( Member::loggedIn()->hasAcpRestriction( $app, $moduleToCheck, $restrictionKey ) )
{
$canAccess = TRUE;
$canAccess = true;
break;
}
}
}
if( isset( $item['activemenuitem'] ) and $item['activemenuitem'] )
if ( isset( $item['activemenuitem'] ) and $item['activemenuitem'] )
{
$groupKey = substr( $item['activemenuitem'], 0, strrpos( $item['activemenuitem'], '_' ) );
$itemKey = substr( $item['activemenuitem'], strrpos( $item['activemenuitem'], '_' ) + 1 );
@@ -494,13 +504,13 @@ class Admin extends Standard
if ( $canAccess )
{
$this->menu['tabs'][ $item['tab'] ][ "{$groupKey}" ][ $itemKey ] = "app={$app->directory}&module={$moduleUrl}&controller={$item['controller']}" . ( $item['do'] ? "&do={$item['do']}" : '' );
$this->menu['tabs'][$item['tab']]["{$groupKey}"][$itemKey] = "app={$app->directory}&module={$moduleUrl}&controller={$item['controller']}" . ( $item['do'] ? "&do={$item['do']}" : '' );
}
/* Custom badge */
if( isset( $item['badge'] ) and $item['badge'] )
if ( isset( $item['badge'] ) and $item['badge'] )
{
$this->menu['badges'][ "{$groupKey}_{$itemKey}" ] = $item['badge'];
$this->menu['badges']["{$groupKey}_{$itemKey}"] = $item['badge'];
}
}
}
@@ -510,53 +520,51 @@ class Admin extends Standard
}
/* Developer Center */
if( \IPS\IN_DEV )
if ( \IPS\IN_DEV )
{
$currentApp = Request::i()->appKey ?? 'core';
foreach( $this->menu['tabs']['developer'] as $module => $controllers )
foreach ( $this->menu['tabs']['developer'] as $module => $controllers )
{
foreach( $controllers as $key => $url )
foreach ( $controllers as $key => $url )
{
parse_str( $url, $params );
$params['module'] = 'developer';
$params['appKey'] = $currentApp;
$this->menu['tabs']['developer'][ $module ][ $key ] = http_build_query( $params );
$this->menu['tabs']['developer'][$module][$key] = http_build_query( $params );
}
}
}
if ( $acpTabOrder !== NULL )
if ( $acpTabOrder !== null )
{
$_apps = array_keys( $acpTabOrder );
uksort( $this->menu['tabs'], function($a, $b) use ( $_apps )
{
if( !in_array( $a, $_apps ) )
$_apps = array_keys( $acpTabOrder );
uksort( $this->menu['tabs'], function ( $a, $b ) use ( $_apps ) {
if ( !in_array( $a, $_apps ) )
{
return 1;
}
if( !in_array( $b, $_apps ) )
if ( !in_array( $b, $_apps ) )
{
return -1;
}
return array_search( $a, $_apps ) - array_search( $b, $_apps );
} );
foreach( $acpTabOrder as $app => $submenu )
foreach ( $acpTabOrder as $app => $submenu )
{
if ( !empty( $submenu ) )
{
if( isset( $this->menu['tabs'][ $app ] ) )
if ( isset( $this->menu['tabs'][$app] ) )
{
uksort( $this->menu['tabs'][ $app ], function($a, $b) use ( $submenu )
{
if( !in_array( $a, $submenu ) )
uksort( $this->menu['tabs'][$app], function ( $a, $b ) use ( $submenu ) {
if ( !in_array( $a, $submenu ) )
{
return 1;
}
if( !in_array( $b, $submenu ) )
if ( !in_array( $b, $submenu ) )
{
return -1;
}
@@ -564,11 +572,10 @@ class Admin extends Standard
return array_search( $a, $submenu ) - array_search( $b, $submenu );
} );
}
if ( isset( $this->menu['defaults'] ) )
{
uksort( $this->menu['defaults'], function($a, $b) use ( $acpTabOrder )
{
uksort( $this->menu['defaults'], function ( $a, $b ) use ( $acpTabOrder ) {
return array_search( $a, $acpTabOrder );
} );
}
@@ -577,15 +584,29 @@ class Admin extends Standard
}
/* Now set the tab defaults */
foreach( $this->menu['tabs'] as $tab => $menu )
foreach ( $this->menu['tabs'] as $tab => $menu )
{
if ( !isset( $this->menu['defaults'][ $tab ] ) )
if ( !isset( $this->menu['defaults'][$tab] ) )
{
foreach( $menu as $group => $submenu )
foreach ( $menu as $group => $submenu )
{
$this->menu['defaults'][ $tab ] = array_values($submenu)[0];
$this->menu['defaults'][$tab] = array_values( $submenu )[0];
break;
}
}
}
}
/* Set any items to be first */
foreach ( $alwaysFirst as $entry )
{
foreach ( $entry as $key => $menuItem )
{
if ( isset( $this->menu['tabs'][$key] ) and isset( $this->menu['tabs'][$key][$menuItem] ) )
{
$first = $this->menu['tabs'][$key][$menuItem];
unset( $this->menu['tabs'][$key][$menuItem] );
$this->menu['tabs'][$key] = array_merge( [$menuItem => $first], $this->menu['tabs'][$key] );
}
}
}