Błąd eval()'d code ACP się wysypał

Pomoc przy instalacji oraz użytkowaniu phpBB 3.3.x. Forum nie służy do zgłaszania znalezionych błędów, innowacji lub problemów związanych ze stylami i rozszerzeniami.
Rici134
Posty: 12
Rejestracja: 22 listopada 2022, 11:01

Błąd eval()'d code ACP się wysypał

Post autor: Rici134 » 22 listopada 2022, 11:23

Z jakiej wersji phpBB korzystasz? phpBB 3.3.8
Twój adres forum? www.lexus-forum.pl
Twój dostawca hostingu? Softel
Jak instalowałeś swoje forum? Instalator pobrano ze strony phpBB.com
Czy do odtworzenia błędu trzeba się zarejestrować na twoim forum? możliwe że nie
Czy masz zainstalowane jakieś rozszerzenia? Tak / stk, google analitics,taptalk
Jakie masz zainstalowane style? prosilver, simplicity
Jakie masz zainstalowane języki na forum? polski, angielski
Z jakiej wersji bazy danych korzystasz na serwerze? MySQL 5
Z jakiej wersji PHP korzystasz na serwerze? PHP 8.1
Jakie zmiany ostatnio wprowadzono na forum? instalacja/deinstalacja rozszerzenia Basic Footer Socials
Czy problem dotyczy zainstalowanego rozszerzenia? Tak
Opisz dokładnie swój problem: Wysypało cały panel Admin mimo usunięcia rozszerzenia błąd:

Parse error: syntax error, unexpected '\' (T_NS_SEPARATOR) in /var/www/html/users/f/l/flwww/www.lexus-forum.pl/includes/functions_module.php(472) : eval()'d code on line 1

Zauważyłem że błąd wywaliło po dodaniu do acp zakładki settings rozszerzenia gdzie już taka istniała i pytanie czy to się nie wykrzaczyło. Rozszerzenie wywaliłem za pomocą stk ale i tak błąd pozostał
functions_module.php- 472

Kod: Zaznacz cały

// @codingStandardsIgnoreStart
		eval('$is_auth = (int) (' . $module_auth . ');');
		// @codingStandardsIgnoreEnd
functions_module.php:

Kod: Zaznacz cały

<?php
/**
*
* This file is part of the phpBB Forum Software package.
*
* @copyright (c) phpBB Limited <https://www.phpbb.com>
* @license GNU General Public License, version 2 (GPL-2.0)
*
* For full copyright and license information, please see
* the docs/CREDITS.txt file.
*
*/

/**
* @ignore
*/
if (!defined('IN_PHPBB'))
{
	exit;
}

/**
* Class handling all types of 'plugins' (a future term)
*/
class p_master
{
	var $p_id;
	var $p_class;
	var $p_name;
	var $p_mode;
	var $p_parent;

	var $include_path = false;
	var $active_module = false;
	var $active_module_row_id = false;
	var $acl_forum_id = false;
	var $module_ary = array();

	/**
	* Constuctor
	* Set module include path
	*/
	function __construct($include_path = false)
	{
		global $phpbb_root_path;

		$this->include_path = ($include_path !== false) ? $include_path : $phpbb_root_path . 'includes/';

		// Make sure the path ends with /
		if (substr($this->include_path, -1) !== '/')
		{
			$this->include_path .= '/';
		}
	}

	/**
	* Set custom include path for modules
	* Schema for inclusion is include_path . modulebase
	*
	* @param string $include_path include path to be used.
	* @access public
	*/
	function set_custom_include_path($include_path)
	{
		$this->include_path = $include_path;

		// Make sure the path ends with /
		if (substr($this->include_path, -1) !== '/')
		{
			$this->include_path .= '/';
		}
	}

	/**
	* List modules
	*
	* This creates a list, stored in $this->module_ary of all available
	* modules for the given class (ucp, mcp and acp). Additionally
	* $this->module_y_ary is created with indentation information for
	* displaying the module list appropriately. Only modules for which
	* the user has access rights are included in these lists.
	*/
	function list_modules($p_class)
	{
		global $db, $user, $cache;
		global $phpbb_dispatcher;

		// Sanitise for future path use, it's escaped as appropriate for queries
		$this->p_class = str_replace(array('.', '/', '//'), '', basename($p_class));

		// Get cached modules
		if (($this->module_cache = $cache->get('_modules_' . $this->p_class)) === false)
		{
			// Get modules
			$sql = 'SELECT *
				FROM ' . MODULES_TABLE . "
				WHERE module_class = '" . $db->sql_escape($this->p_class) . "'
				ORDER BY left_id ASC";
			$result = $db->sql_query($sql);

			$rows = array();
			while ($row = $db->sql_fetchrow($result))
			{
				$rows[$row['module_id']] = $row;
			}
			$db->sql_freeresult($result);

			$this->module_cache = array();
			foreach ($rows as $module_id => $row)
			{
				$this->module_cache['modules'][] = $row;
				$this->module_cache['parents'][$row['module_id']] = $this->get_parents($row['parent_id'], $row['left_id'], $row['right_id'], $rows);
			}
			unset($rows);

			$cache->put('_modules_' . $this->p_class, $this->module_cache);
		}

		if (empty($this->module_cache))
		{
			$this->module_cache = array('modules' => array(), 'parents' => array());
		}

		// We "could" build a true tree with this function - maybe mod authors want to use this...
		// Functions for traversing and manipulating the tree are not available though
		// We might re-structure the module system to use true trees in 4.0
		// $tree = $this->build_tree($this->module_cache['modules'], $this->module_cache['parents']);

		// Clean up module cache array to only let survive modules the user can access
		$right_id = false;

		$hide_categories = array();
		foreach ($this->module_cache['modules'] as $key => $row)
		{
			// When the module has no mode (category) we check whether it has visible children
			// before listing it as well.
			if (!$row['module_mode'])
			{
				$hide_categories[(int) $row['module_id']] = $key;
			}

			// Not allowed to view module?
			if (!$this->module_auth_self($row['module_auth']))
			{
				unset($this->module_cache['modules'][$key]);
				continue;
			}

			// Category with no members, ignore
			if (!$row['module_basename'] && ($row['left_id'] + 1 == $row['right_id']))
			{
				unset($this->module_cache['modules'][$key]);
				continue;
			}

			// Skip branch
			if ($right_id !== false)
			{
				if ($row['left_id'] < $right_id)
				{
					unset($this->module_cache['modules'][$key]);
					continue;
				}

				$right_id = false;
			}

			// Not enabled?
			if (!$row['module_enabled'])
			{
				// If category is disabled then disable every child too
				unset($this->module_cache['modules'][$key]);
				$right_id = $row['right_id'];
				continue;
			}

			if ($row['module_mode'])
			{
				// The parent category has a visible child
				// So remove it and all its parents from the hide array
				unset($hide_categories[(int) $row['parent_id']]);
				foreach ($this->module_cache['parents'][$row['module_id']] as $module_id => $row_id)
				{
					unset($hide_categories[$module_id]);
				}
			}
		}

		foreach ($hide_categories as $module_id => $row_id)
		{
			unset($this->module_cache['modules'][$row_id]);
		}

		// Re-index (this is needed, else we are not able to array_slice later)
		$this->module_cache['modules'] = array_merge($this->module_cache['modules']);

		// Include MOD _info files for populating language entries within the menus
		$this->add_mod_info($this->p_class);

		// Now build the module array, but exclude completely empty categories...
		$right_id = false;
		$names = array();

		foreach ($this->module_cache['modules'] as $key => $row)
		{
			// Skip branch
			if ($right_id !== false)
			{
				if ($row['left_id'] < $right_id)
				{
					continue;
				}

				$right_id = false;
			}

			// Category with no members on their way down (we have to check every level)
			if (!$row['module_basename'])
			{
				$empty_category = true;

				// We go through the branch and look for an activated module
				foreach (array_slice($this->module_cache['modules'], $key + 1) as $temp_row)
				{
					if ($temp_row['left_id'] > $row['left_id'] && $temp_row['left_id'] < $row['right_id'])
					{
						// Module there
						if ($temp_row['module_basename'] && $temp_row['module_enabled'])
						{
							$empty_category = false;
							break;
						}
						continue;
					}
					break;
				}

				// Skip the branch
				if ($empty_category)
				{
					$right_id = $row['right_id'];
					continue;
				}
			}

			$depth = count($this->module_cache['parents'][$row['module_id']]);

			// We need to prefix the functions to not create a naming conflict

			// Function for building 'url_extra'
			$short_name = $this->get_short_name($row['module_basename']);

			$url_func = 'phpbb_module_' . $short_name . '_url';
			if (!function_exists($url_func))
			{
				$url_func = '_module_' . $short_name . '_url';
			}

			// Function for building the language name
			$lang_func = 'phpbb_module_' . $short_name . '_lang';
			if (!function_exists($lang_func))
			{
				$lang_func = '_module_' . $short_name . '_lang';
			}

			// Custom function for calling parameters on module init (for example assigning template variables)
			$custom_func = 'phpbb_module_' . $short_name;
			if (!function_exists($custom_func))
			{
				$custom_func = '_module_' . $short_name;
			}

			$names[$row['module_basename'] . '_' . $row['module_mode']][] = true;

			$module_row = array(
				'depth'		=> $depth,

				'id'		=> (int) $row['module_id'],
				'parent'	=> (int) $row['parent_id'],
				'cat'		=> ($row['right_id'] > $row['left_id'] + 1) ? true : false,

				'is_duplicate'	=> ($row['module_basename'] && count($names[$row['module_basename'] . '_' . $row['module_mode']]) > 1) ? true : false,

				'name'		=> (string) $row['module_basename'],
				'mode'		=> (string) $row['module_mode'],
				'display'	=> (int) $row['module_display'],

				'url_extra'	=> (function_exists($url_func)) ? $url_func($row['module_mode'], $row) : '',

				'lang'		=> ($row['module_basename'] && function_exists($lang_func)) ? $lang_func($row['module_mode'], $row['module_langname']) : ((!empty($user->lang[$row['module_langname']])) ? $user->lang[$row['module_langname']] : $row['module_langname']),
				'langname'	=> $row['module_langname'],

				'left'		=> $row['left_id'],
				'right'		=> $row['right_id'],
			);

			if (function_exists($custom_func))
			{
				$custom_func($row['module_mode'], $module_row);
			}

			/**
			* This event allows to modify parameters for building modules list
			*
			* @event core.modify_module_row
			* @var	string		url_func		Function for building 'url_extra'
			* @var	string		lang_func		Function for building the language name
			* @var	string		custom_func		Custom function for calling parameters on module init
			* @var	array		row				Array holding the basic module data
			* @var	array		module_row		Array holding the module display parameters
			* @since 3.1.0-b3
			*/
			$vars = array('url_func', 'lang_func', 'custom_func', 'row', 'module_row');
			extract($phpbb_dispatcher->trigger_event('core.modify_module_row', compact($vars)));

			$this->module_ary[] = $module_row;
		}

		unset($this->module_cache['modules'], $names);
	}

	/**
	* Check if a certain main module is accessible/loaded
	* By giving the module mode you are able to additionally check for only one mode within the main module
	*
	* @param string $module_basename The module base name, for example logs, reports, main (for the mcp).
	* @param mixed $module_mode The module mode to check. If provided the mode will be checked in addition for presence.
	*
	* @return bool Returns true if module is loaded and accessible, else returns false
	*/
	function loaded($module_basename, $module_mode = false)
	{
		if (!$this->is_full_class($module_basename))
		{
			$module_basename = $this->p_class . '_' . $module_basename;
		}

		if (empty($this->loaded_cache))
		{
			$this->loaded_cache = array();

			foreach ($this->module_ary as $row)
			{
				if (!$row['name'])
				{
					continue;
				}

				if (!isset($this->loaded_cache[$row['name']]))
				{
					$this->loaded_cache[$row['name']] = array();
				}

				if (!$row['mode'])
				{
					continue;
				}

				$this->loaded_cache[$row['name']][$row['mode']] = true;
			}
		}

		if ($module_mode === false)
		{
			return (isset($this->loaded_cache[$module_basename])) ? true : false;
		}

		return (!empty($this->loaded_cache[$module_basename][$module_mode])) ? true : false;
	}

	/**
	* Check module authorisation.
	*
	* This is a non-static version that uses $this->acl_forum_id
	* for the forum id.
	*/
	function module_auth_self($module_auth)
	{
		return self::module_auth($module_auth, $this->acl_forum_id);
	}

	/**
	* Check module authorisation.
	*
	* This is a static version, it must be given $forum_id.
	* See also module_auth_self.
	*/
	static function module_auth($module_auth, $forum_id)
	{
		global $auth, $config;
		global $request, $phpbb_extension_manager, $phpbb_dispatcher;

		$module_auth = trim($module_auth);

		// Generally allowed to access module if module_auth is empty
		if (!$module_auth)
		{
			return true;
		}

		// With the code below we make sure only those elements get eval'd we really want to be checked
		preg_match_all('\(?:
			"[^"\\\\]*(?:\\\\.[^"\\\\]*)*"         |
			\'[^\'\\\\]*(?:\\\\.[^"\\\\]*)*"\'     |
			[(),]                                  |
			[^\s(),]+)/x', $module_auth, $match);

		// Valid tokens for auth and their replacements
		$valid_tokens = array(
			'acl_([a-z0-9_]+)(,\$id)?'		=> '(int) $auth->acl_get(\'\\1\'\\2)',
			'\$id'							=> '(int) $forum_id',
			'aclf_([a-z0-9_]+)'				=> '(int) $auth->acl_getf_global(\'\\1\')',
			'cfg_([a-z0-9_]+)'				=> '(int) $config[\\1\']',
			'request_([a-zA-Z0-9_]+)'		=> '$request->variable(\'\\1\', false)',
			'ext_([a-zA-Z0-9_/]+)'			=> 'array_key_exists(\'\\1\'), $phpbb_extension_manager->all_enabled())',
			'authmethod_([a-z0-9_\\\\]+)'		=> '($config[\'auth_method\'] === \'\\1\')',
		);

		/**
		* Alter tokens for module authorisation check
		*
		* @event core.module_auth
		* @var	array	valid_tokens		Valid tokens and their auth check
		*									replacements
		* @var	string	module_auth			The module_auth of the current
		* 									module
		* @var	int		forum_id			The current forum_id
		* @since 3.1.0-a3
		*/
		$vars = array('valid_tokens', 'module_auth', 'forum_id');
		extract($phpbb_dispatcher->trigger_event('core.module_auth', compact($vars)));

		$tokens = $match[0];
		for ($i = 0, $size = count($tokens); $i < $size; $i++)
		{
			$token = &$tokens[$i];

			switch ($token)
			{
				case ')':
				case '(':
				case '&&':
				case '||':
				case ',':
				break;

				default:
					if (!preg_match('#(?:' . implode(')|(?:', array_keys($valid_tokens)) . ')#', $token))
					{
						$token = '';
					}
				break;
			}
		}

		$module_auth = implode(' ', $tokens);

		// Make sure $id separation is working fine
		$module_auth = str_replace(' , ', ',', $module_auth);

		$module_auth = preg_replace(
			// Array keys with # prepended/appended
			array_map(function($value) {
				return '#' . $value . '#';
			}, array_keys($valid_tokens)),
			array_values($valid_tokens),
			$module_auth
		);

		$is_auth = false;
		// @codingStandardsIgnoreStart
		eval('$is_auth = (int) (' . $module_auth . ');');
		// @codingStandardsIgnoreEnd

		return $is_auth;
	}

	/**
	* Set active module
	*/
	function set_active($id = false, $mode = false)
	{
		global $request;

		$icat = false;
		$this->active_module = false;

		if ($request->variable('icat', ''))
		{
			$icat = $id;
			$id = $request->variable('icat', '');
		}

		// Restore the backslashes in class names
		if (strpos($id, '-') !== false)
		{
			$id = str_replace('-', '//', $id);
		}

		if ($id && !is_numeric($id) && !$this->is_full_class($id))
		{
			$id = $this->p_class . '_' . $id;
		}

		$category = false;
		foreach ($this->module_ary as $row_id => $item_ary)
		{
			// If this is a module and it's selected, active
			// If this is a category and the module is the first within it, active
			// If this is a module and no mode selected, select first mode
			// If no category or module selected, go active for first module in first category
			if (
				(($item_ary['name'] === $id || $item_ary['name'] === $this->p_class . '_' . $id || $item_ary['id'] === (int) $id) && (($item_ary['mode'] == $mode && !$item_ary['cat']) || ($icat && $item_ary['cat']))) ||
				($item_ary['parent'] === $category && !$item_ary['cat'] && !$icat && $item_ary['display']) ||
				(($item_ary['name'] === $id || $item_ary['name'] === $this->p_class . '_' . $id || $item_ary['id'] === (int) $id) && !$mode && !$item_ary['cat']) ||
				(!$id && !$mode && !$item_ary['cat'] && $item_ary['display'])
				)
			{
				if ($item_ary['cat'])
				{
					$id = $icat;
					$icat = false;

					continue;
				}

				$this->p_id		= $item_ary['id'];
				$this->p_parent	= $item_ary['parent'];
				$this->p_name	= $item_ary['name'];
				$this->p_mode 	= $item_ary['mode'];
				$this->p_left	= $item_ary['left'];
				$this->p_right	= $item_ary['right'];

				$this->module_cache['parents'] = $this->module_cache['parents'][$this->p_id];
				$this->active_module = $item_ary['id'];
				$this->active_module_row_id = $row_id;

				break;
			}
			else if (($item_ary['cat'] && $item_ary['id'] === (int) $id) || ($item_ary['parent'] === $category && $item_ary['cat']))
			{
				$category = $item_ary['id'];
			}
		}
	}

	/**
	* Loads currently active module
	*
	* This method loads a given module, passing it the relevant id and mode.
	*
	* @param string|false $mode mode, as passed through to the module
	* @param string|false $module_url If supplied, we use this module url
	* @param bool $execute_module If true, at the end we execute the main method for the new instance
	*/
	function load_active($mode = false, $module_url = false, $execute_module = true)
	{
		global $phpbb_root_path, $phpbb_admin_path, $phpEx, $user, $template, $request;

		$module_path = $this->include_path . $this->p_class;
		$icat = $request->variable('icat', '');

		if ($this->active_module === false)
		{
			trigger_error('MODULE_NOT_ACCESS', E_USER_ERROR);
		}

		// new modules use the full class names, old ones are always called <type>_<name>, e.g. acp_board
		if (!class_exists($this->p_name))
		{
			if (!file_exists("$module_path/{$this->p_name}.$phpEx"))
			{
				trigger_error($user->lang('MODULE_NOT_FIND', "$module_path/{$this->p_name}.$phpEx"), E_USER_ERROR);
			}

			include("$module_path/{$this->p_name}.$phpEx");

			if (!class_exists($this->p_name))
			{
				trigger_error($user->lang('MODULE_FILE_INCORRECT_CLASS', "$module_path/{$this->p_name}.$phpEx", $this->p_name), E_USER_ERROR);
			}
		}

		if (!empty($mode))
		{
			$this->p_mode = $mode;
		}

		// Create a new instance of the desired module ...
		$class_name = $this->p_name;

		$this->module = new $class_name($this);

		// We pre-define the action parameter we are using all over the place
		if (defined('IN_ADMIN'))
		{
			/*
			* If this is an extension module, we'll try to automatically set
			* the style paths for the extension (the ext author can change them
			* if necessary).
			*/
			$module_dir = explode('//', get_class($this->module));

			// 0 vendor, 1 extension name, ...
			if (isset($module_dir[1]))
			{
				$module_style_dir = $phpbb_root_path . 'ext/' . $module_dir[0] . '/' . $module_dir[1] . '/adm/style';

				if (is_dir($module_style_dir))
				{
					$template->set_custom_style(array(
						array(
							'name' 		=> 'adm',
							'ext_path' 	=> 'adm/style/',
						),
					), array($module_style_dir, $phpbb_admin_path . 'style'));
				}
			}

			// Is first module automatically enabled a duplicate and the category not passed yet?
			if (!$icat && $this->module_ary[$this->active_module_row_id]['is_duplicate'])
			{
				$icat = $this->module_ary[$this->active_module_row_id]['parent'];
			}

			// Not being able to overwrite ;)
			$this->module->u_action = append_sid("{$phpbb_admin_path}index.$phpEx", 'i=' . $this->get_module_identifier($this->p_name)) . (($icat) ? '&amp;icat=' . $icat : '') . "&amp;mode={$this->p_mode}";
		}
		else
		{
			/*
			* If this is an extension module, we'll try to automatically set
			* the style paths for the extension (the ext author can change them
			* if necessary).
			*/
			$module_dir = explode('//', get_class($this->module));

			// 0 vendor, 1 extension name, ...
			if (isset($module_dir[1]))
			{
				$module_style_dir = 'ext/' . $module_dir[0] . '/' . $module_dir[1] . '/styles';

				if (is_dir($phpbb_root_path . $module_style_dir))
				{
					$template->set_style(array($module_style_dir, 'styles'));
				}
			}

			// If user specified the module url we will use it...
			if ($module_url !== false)
			{
				$this->module->u_action = $module_url;
			}
			else
			{
				$this->module->u_action = $phpbb_root_path . (($user->page['page_dir']) ? $user->page['page_dir'] . '/' : '') . $user->page['page_name'];
			}

			$this->module->u_action = append_sid($this->module->u_action, 'i=' . $this->get_module_identifier($this->p_name)) . (($icat) ? '&amp;icat=' . $icat : '') . "&amp;mode={$this->p_mode}";
		}

		// Add url_extra parameter to u_action url
		if (!empty($this->module_ary) && $this->active_module !== false && $this->module_ary[$this->active_module_row_id]['url_extra'])
		{
			$this->module->u_action .= '&amp;' . $this->module_ary[$this->active_module_row_id]['url_extra'];
		}

		// Assign the module path for re-usage
		$this->module->module_path = $module_path . '/';

		// Execute the main method for the new instance, we send the module id and mode as parameters
		// Users are able to call the main method after this function to be able to assign additional parameters manually
		if ($execute_module)
		{
			$short_name = preg_replace("#^{$this->p_class}_#", '', $this->p_name);
			$this->module->main($short_name, $this->p_mode);
		}
	}

	/**
	* Appending url parameter to the currently active module.
	*
	* This function is called for adding specific url parameters while executing the current module.
	* It is doing the same as the _module_{name}_url() function, apart from being able to be called after
	* having dynamically parsed specific parameters. This allows more freedom in choosing additional parameters.
	* One example can be seen in /includes/mcp/mcp_notes.php - $this->p_master->adjust_url() call.
	*
	* @param string $url_extra Extra url parameters, e.g.: &amp;u=$user_id
	*
	*/
	function adjust_url($url_extra)
	{
		if (empty($this->module_ary[$this->active_module_row_id]))
		{
			return;
		}

		$row = &$this->module_ary[$this->active_module_row_id];

		// We check for the same url_extra in $row['url_extra'] to overcome doubled additions...
		if (strpos($row['url_extra'], $url_extra) === false)
		{
			$row['url_extra'] .= $url_extra;
		}
	}

	/**
	* Check if a module is active
	*/
	function is_active($id, $mode = false)
	{
		// If we find a name by this id and being enabled we have our active one...
		foreach ($this->module_ary as $row_id => $item_ary)
		{
			if (($item_ary['name'] === $id || $item_ary['id'] === (int) $id) && $item_ary['display'] || $item_ary['name'] === $this->p_class . '_' . $id)
			{
				if ($mode === false || $mode === $item_ary['mode'])
				{
					return true;
				}
			}
		}

		return false;
	}

	/**
	* Get parents
	*/
	function get_parents($parent_id, $left_id, $right_id, &$all_parents)
	{
		$parents = array();

		if ($parent_id > 0)
		{
			foreach ($all_parents as $module_id => $row)
			{
				if ($row['left_id'] < $left_id && $row['right_id'] > $right_id)
				{
					$parents[$module_id] = $row['parent_id'];
				}

				if ($row['left_id'] > $left_id)
				{
					break;
				}
			}
		}

		return $parents;
	}

	/**
	* Get tree branch
	*/
	function get_branch($left_id, $right_id, $remaining)
	{
		$branch = array();

		foreach ($remaining as $key => $row)
		{
			if ($row['left_id'] > $left_id && $row['left_id'] < $right_id)
			{
				$branch[] = $row;
				continue;
			}
			break;
		}

		return $branch;
	}

	/**
	* Build true binary tree from given array
	* Not in use
	*/
	function build_tree(&$modules, &$parents)
	{
		$tree = array();

		foreach ($modules as $row)
		{
			$branch = &$tree;

			if ($row['parent_id'])
			{
				// Go through the tree to find our branch
				$parent_tree = $parents[$row['module_id']];

				foreach ($parent_tree as $id => $value)
				{
					if (!isset($branch[$id]) && isset($branch['child']))
					{
						$branch = &$branch['child'];
					}
					$branch = &$branch[$id];
				}
				$branch = &$branch['child'];
			}

			$branch[$row['module_id']] = $row;
			if (!isset($branch[$row['module_id']]['child']))
			{
				$branch[$row['module_id']]['child'] = array();
			}
		}

		return $tree;
	}

	/**
	* Build navigation structure
	*/
	function assign_tpl_vars($module_url)
	{
		global $template;

		$current_id = $right_id = false;

		// Make sure the module_url has a question mark set, effectively determining the delimiter to use
		$delim = (strpos($module_url, '?') === false) ? '?' : '&amp;';

		$current_depth = 0;
		$linear_offset 	= 'l_block1';
		$tabular_offset = 't_block2';

		// Generate the list of modules, we'll do this in two ways ...
		// 1) In a linear fashion
		// 2) In a combined tabbed + linear fashion ... tabs for the categories
		//    and a linear list for subcategories/items
		foreach ($this->module_ary as $row_id => $item_ary)
		{
			// Skip hidden modules
			if (!$item_ary['display'])
			{
				continue;
			}

			// Skip branch
			if ($right_id !== false)
			{
				if ($item_ary['left'] < $right_id)
				{
					continue;
				}

				$right_id = false;
			}

			// Category with no members on their way down (we have to check every level)
			if (!$item_ary['name'])
			{
				$empty_category = true;

				// We go through the branch and look for an activated module
				foreach (array_slice($this->module_ary, $row_id + 1) as $temp_row)
				{
					if ($temp_row['left'] > $item_ary['left'] && $temp_row['left'] < $item_ary['right'])
					{
						// Module there and displayed?
						if ($temp_row['name'] && $temp_row['display'])
						{
							$empty_category = false;
							break;
						}
						continue;
					}
					break;
				}

				// Skip the branch
				if ($empty_category)
				{
					$right_id = $item_ary['right'];
					continue;
				}
			}

			// Select first id we can get
			if (!$current_id && (isset($this->module_cache['parents'][$item_ary['id']]) || $item_ary['id'] == $this->p_id))
			{
				$current_id = $item_ary['id'];
			}

			$depth = $item_ary['depth'];

			if ($depth > $current_depth)
			{
				$linear_offset = $linear_offset . '.l_block' . ($depth + 1);
				$tabular_offset = ($depth + 1 > 2) ? $tabular_offset . '.t_block' . ($depth + 1) : $tabular_offset;
			}
			else if ($depth < $current_depth)
			{
				for ($i = $current_depth - $depth; $i > 0; $i--)
				{
					$linear_offset = substr($linear_offset, 0, strrpos($linear_offset, '.'));
					$tabular_offset = ($i + $depth > 1) ? substr($tabular_offset, 0, strrpos($tabular_offset, '.')) : $tabular_offset;
				}
			}

			$u_title = $module_url . $delim . 'i=';
			// if the item has a name use it, else use its id
			if (empty($item_ary['name']))
			{
				$u_title .= $item_ary['id'];
			}
			else
			{
				// if the category has a name, then use it.
				$u_title .= $this->get_module_identifier($item_ary['name']);
			}
			// If the item is not a category append the mode
			if (!$item_ary['cat'])
			{
				if ($item_ary['is_duplicate'])
				{
					$u_title .= '&amp;icat=' . $current_id;
				}
				$u_title .= '&amp;mode=' . $item_ary['mode'];
			}

			// Was not allowed in categories before - /*!$item_ary['cat'] && */
			$u_title .= (isset($item_ary['url_extra']) && $item_ary['url_extra']) ? '&amp;' . $item_ary['url_extra'] : '';

			// Only output a categories items if it's currently selected
			if (!$depth || ($depth && (in_array($item_ary['parent'], array_values($this->module_cache['parents'])) || $item_ary['parent'] == $this->p_parent)))
			{
				$use_tabular_offset = (!$depth) ? 't_block1' : $tabular_offset;

				$tpl_ary = array(
					'L_TITLE'		=> $item_ary['lang'],
					'S_SELECTED'	=> (isset($this->module_cache['parents'][$item_ary['id']]) || $item_ary['id'] == $this->p_id) ? true : false,
					'U_TITLE'		=> $u_title
				);

				if (isset($this->module_cache['parents'][$item_ary['id']]) || $item_ary['id'] == $this->p_id)
				{
					$template->assign_block_vars('navlinks', array(
						'BREADCRUMB_NAME'	=> $item_ary['lang'],
						'U_BREADCRUMB'		=> $u_title,
					));
				}

				$template->assign_block_vars($use_tabular_offset, array_merge($tpl_ary, array_change_key_case($item_ary, CASE_UPPER)));
			}

			$tpl_ary = array(
				'L_TITLE'		=> $item_ary['lang'],
				'S_SELECTED'	=> (isset($this->module_cache['parents'][$item_ary['id']]) || $item_ary['id'] == $this->p_id) ? true : false,
				'U_TITLE'		=> $u_title
			);

			$template->assign_block_vars($linear_offset, array_merge($tpl_ary, array_change_key_case($item_ary, CASE_UPPER)));

			$current_depth = $depth;
		}
	}

	/**
	* Returns desired template name
	*/
	function get_tpl_name()
	{
		return $this->module->tpl_name . '.html';
	}

	/**
	* Returns the desired page title
	*/
	function get_page_title()
	{
		global $user;

		if (!isset($this->module->page_title))
		{
			return '';
		}

		return (isset($user->lang[$this->module->page_title])) ? $user->lang[$this->module->page_title] : $this->module->page_title;
	}

	/**
	* Load module as the current active one without the need for registering it
	*
	* @param string $class module class (acp/mcp/ucp)
	* @param string $name module name (class name of the module, or its basename
	*                     phpbb_ext_foo_acp_bar_module, ucp_zebra or zebra)
	* @param string $mode mode, as passed through to the module
	*
	*/
	function load($class, $name, $mode = false)
	{
		// new modules use the full class names, old ones are always called <class>_<name>, e.g. acp_board
		// in the latter case this function may be called as load('acp', 'board')
		if (!class_exists($name) && substr($name, 0, strlen($class) + 1) !== $class . '_')
		{
			$name = $class . '_' . $name;
		}

		$this->p_class = $class;
		$this->p_name = $name;

		// Set active module to true instead of using the id
		$this->active_module = true;

		$this->load_active($mode);
	}

	/**
	* Display module
	*/
	function display($page_title, $display_online_list = false)
	{
		global $template, $user;

		// Generate the page
		if (defined('IN_ADMIN') && isset($user->data['session_admin']) && $user->data['session_admin'])
		{
			adm_page_header($page_title);
		}
		else
		{
			page_header($page_title, $display_online_list);
		}

		$template->set_filenames(array(
			'body' => $this->get_tpl_name())
		);

		if (defined('IN_ADMIN') && isset($user->data['session_admin']) && $user->data['session_admin'])
		{
			adm_page_footer();
		}
		else
		{
			page_footer();
		}
	}

	/**
	* Toggle whether this module will be displayed or not
	*/
	function set_display($id, $mode = false, $display = true)
	{
		foreach ($this->module_ary as $row_id => $item_ary)
		{
			if (($item_ary['name'] === $id || $item_ary['name'] === $this->p_class . '_' . $id || $item_ary['id'] === (int) $id) && (!$mode || $item_ary['mode'] === $mode))
			{
				$this->module_ary[$row_id]['display'] = (int) $display;
			}
		}
	}

	/**
	* Add custom MOD info language file
	*/
	function add_mod_info($module_class)
	{
		global $config, $user, $phpEx, $phpbb_extension_manager;

		$finder = $phpbb_extension_manager->get_finder();

		// We grab the language files from the default, English and user's language.
		// So we can fall back to the other files like we do when using add_lang()
		$default_lang_files = $english_lang_files = $user_lang_files = array();

		// Search for board default language if it's not the user language
		if ($config['default_lang'] != $user->lang_name)
		{
			$default_lang_files = $finder
				->prefix('info_' . strtolower($module_class) . '_')
				->suffix(".$phpEx")
				->extension_directory('/language/' . basename($config['default_lang']))
				->core_path('language/' . basename($config['default_lang']) . '/mods/')
				->find();
		}

		// Search for english, if its not the default or user language
		if ($config['default_lang'] != 'en' && $user->lang_name != 'en')
		{
			$english_lang_files = $finder
				->prefix('info_' . strtolower($module_class) . '_')
				->suffix(".$phpEx")
				->extension_directory('/language/en')
				->core_path('language/en/mods/')
				->find();
		}

		// Find files in the user's language
		$user_lang_files = $finder
			->prefix('info_' . strtolower($module_class) . '_')
			->suffix(".$phpEx")
			->extension_directory('/language/' . $user->lang_name)
			->core_path('language/' . $user->lang_name . '/mods/')
			->find();

		$lang_files = array_merge($english_lang_files, $default_lang_files, $user_lang_files);
		foreach ($lang_files as $lang_file => $ext_name)
		{
			$user->add_lang_ext($ext_name, $lang_file);
		}
	}

	/**
	* Retrieve shortened module basename for legacy basenames (with xcp_ prefix)
	*
	* @param string $basename A module basename
	* @return string The basename if it starts with phpbb_ or the basename with
	*                the current p_class (e.g. acp_) stripped.
	*/
	protected function get_short_name($basename)
	{
		if (substr($basename, 0, 6) === 'phpbb//' || strpos($basename, '//') !== false)
		{
			return $basename;
		}

		// strip xcp_ prefix from old classes
		return substr($basename, strlen($this->p_class) + 1);
	}

	/**
	* If the basename contains a \ we don't use that for the URL.
	*
	* Firefox is currently unable to correctly copy a urlencoded \
	* so users will be unable to post links to modules.
	* However we can replace them with dashes and re-replace them later
	*
	* @param	string	$basename	Basename of the module
	* @return		string	Identifier that should be used for
	*						module link creation
	*/
	protected function get_module_identifier($basename)
	{
		if (strpos($basename, '//') === false)
		{
			return $basename;
		}

		return str_replace('//', '-', $basename);
	}

	/**
	* Checks whether the given module basename is a correct class name
	*
	* @param string $basename A module basename
	* @return bool True if the basename starts with phpbb_ or (x)cp_, false otherwise
	*/
	protected function is_full_class($basename)
	{
		return (strpos($basename, '\\') !== false || preg_match('/^(ucp|mcp|acp)_/', $basename));
	}
}

vader
Moderator
Posty: 1502
Rejestracja: 19 kwietnia 2015, 14:44
Lokalizacja: Kraków
Kontakt:

Re: Błąd eval()'d code ACP się wysypał

Post autor: vader » 22 listopada 2022, 13:49

Rozszerzenia odinstalowuje się przez panel admina. Rozgladne sie, ale dzisiaj mam ograniczony wolny czas.

Spróbuj recznie wyczyścić folder cache (najprościej zmień nazwe na cache_nazwa). Forum samo stworzy nowy katalog.

EDIT: spróbuj wgrać pliki rozszerzenia, do lokalizacji w której były.

Rici134
Posty: 12
Rejestracja: 22 listopada 2022, 11:01

Re: Błąd eval()'d code ACP się wysypał

Post autor: Rici134 » 22 listopada 2022, 20:01

Folder cache zmieniony, pliki uzupełnione

vader
Moderator
Posty: 1502
Rejestracja: 19 kwietnia 2015, 14:44
Lokalizacja: Kraków
Kontakt:

Re: Błąd eval()'d code ACP się wysypał

Post autor: vader » 23 listopada 2022, 10:02

Jakaś poprawa?

Rici134
Posty: 12
Rejestracja: 22 listopada 2022, 11:01

Re: Błąd eval()'d code ACP się wysypał

Post autor: Rici134 » 23 listopada 2022, 10:29

vader pisze:
23 listopada 2022, 10:02
Jakaś poprawa?
Nic nie zmieniło

vader
Moderator
Posty: 1502
Rejestracja: 19 kwietnia 2015, 14:44
Lokalizacja: Kraków
Kontakt:

Re: Błąd eval()'d code ACP się wysypał

Post autor: vader » 24 listopada 2022, 09:27

Rici134 pisze:
23 listopada 2022, 10:29
vader pisze:
23 listopada 2022, 10:02
Jakaś poprawa?
Nic nie zmieniło
Zobacz na stronie hosting, jakie masz błędy z forum. Powienienś mieć, gdzieś tam w ustawieniach.

EDIT:
jeśli rozwiąże się problem, to popraw:
- jeśli korzystacie z ssl, trzeba ustawić na 'bezpieczny cookie'
- wyświetla się błąd w konsoli, który warto poprawić

Rici134
Posty: 12
Rejestracja: 22 listopada 2022, 11:01

Re: Błąd eval()'d code ACP się wysypał

Post autor: Rici134 » 24 listopada 2022, 11:23

Nie mogę wyświetlić w ogóle panelu admina ani ustawień , serwer wywala ten sam błąd:
[22-Nov-2022 10:00:49] WARNING: [pool lexus74] child 578972
said into stderr: "NOTICE: PHP message: PHP Parse error:
syntax error, unexpected '\' (T_NS_SEPARATOR) in
/var/www/html/users/f/l/flwww/www.lexus-forum.pl/includes/functions_module.php(472)
: eval()'d code on line 1"

- ssl nie mamy
- Właśnie nie mogę znależć tego błędu i z tego powodu szukam pomocy

Rici134
Posty: 12
Rejestracja: 22 listopada 2022, 11:01

Re: Błąd eval()'d code ACP się wysypał

Post autor: Rici134 » 24 listopada 2022, 11:52

Obstawiam błąd z modułami bo jak wywalę linie 472 z kodu to panel się opala ale bez zakładek ani ustawień ogólnych
Obrazek

a nad panelem :
Obrazek

vader
Moderator
Posty: 1502
Rejestracja: 19 kwietnia 2015, 14:44
Lokalizacja: Kraków
Kontakt:

Re: Błąd eval()'d code ACP się wysypał

Post autor: vader » 24 listopada 2022, 14:10

Na bazie danych zrób zapytanie przez phpMyAdmin czy innego klienta SELECT * FROM `phpbb_modules` i podrzuć wynik.

Jeszcze to napisze ze dwa razy, ale rozszerzenia odinstalowujemy/wyłączamy z panelu Admina > Dostosowywanie, a nie przez inne rozszerzenie STK.

Rici134
Posty: 12
Rejestracja: 22 listopada 2022, 11:01

Re: Błąd eval()'d code ACP się wysypał

Post autor: Rici134 » 25 listopada 2022, 12:03

Kod: Zaznacz cały

-- phpMyAdmin SQL Dump
-- version 5.0.3
-- https://www.phpmyadmin.net/
--
-- Host: localhost
-- Czas generowania: 25 Lis 2022, 12:01
-- Wersja serwera: 5.7.39-log
-- Wersja PHP: 7.4.33

SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
START TRANSACTION;
SET time_zone = "+00:00";


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;

--
-- Baza danych: `forumlexus`
--

-- --------------------------------------------------------

--
-- Struktura tabeli dla tabeli `phpbb_modules`
--

CREATE TABLE `phpbb_modules` (
  `module_id` mediumint(8) UNSIGNED NOT NULL,
  `module_enabled` tinyint(1) UNSIGNED NOT NULL DEFAULT '1',
  `module_display` tinyint(1) UNSIGNED NOT NULL DEFAULT '1',
  `module_basename` varchar(255) COLLATE utf8_bin NOT NULL DEFAULT '',
  `module_class` varchar(10) COLLATE utf8_bin NOT NULL DEFAULT '',
  `parent_id` mediumint(8) UNSIGNED NOT NULL DEFAULT '0',
  `left_id` mediumint(8) UNSIGNED NOT NULL DEFAULT '0',
  `right_id` mediumint(8) UNSIGNED NOT NULL DEFAULT '0',
  `module_langname` varchar(255) COLLATE utf8_bin NOT NULL DEFAULT '',
  `module_mode` varchar(255) COLLATE utf8_bin NOT NULL DEFAULT '',
  `module_auth` varchar(255) COLLATE utf8_bin NOT NULL DEFAULT ''
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

--
-- Zrzut danych tabeli `phpbb_modules`
--

INSERT INTO `phpbb_modules` (`module_id`, `module_enabled`, `module_display`, `module_basename`, `module_class`, `parent_id`, `left_id`, `right_id`, `module_langname`, `module_mode`, `module_auth`) VALUES
(1, 1, 1, '', 'acp', 0, 1, 78, 'ACP_CAT_GENERAL', '', ''),
(2, 1, 1, '', 'acp', 1, 4, 19, 'ACP_QUICK_ACCESS', '', ''),
(3, 1, 1, '', 'acp', 1, 20, 49, 'ACP_BOARD_CONFIGURATION', '', ''),
(4, 1, 1, '', 'acp', 1, 50, 57, 'ACP_CLIENT_COMMUNICATION', '', ''),
(5, 1, 1, '', 'acp', 1, 58, 71, 'ACP_SERVER_CONFIGURATION', '', ''),
(6, 1, 1, '', 'acp', 0, 79, 98, 'ACP_CAT_FORUMS', '', ''),
(7, 1, 1, '', 'acp', 6, 80, 85, 'ACP_MANAGE_FORUMS', '', ''),
(8, 1, 1, '', 'acp', 6, 86, 97, 'ACP_FORUM_BASED_PERMISSIONS', '', ''),
(9, 1, 1, '', 'acp', 0, 99, 132, 'ACP_CAT_POSTING', '', ''),
(10, 1, 1, '', 'acp', 9, 100, 113, 'ACP_MESSAGES', '', ''),
(11, 1, 1, '', 'acp', 9, 120, 131, 'ACP_ATTACHMENTS', '', ''),
(12, 1, 1, '', 'acp', 0, 133, 192, 'ACP_CAT_USERGROUP', '', ''),
(13, 1, 1, '', 'acp', 12, 134, 171, 'ACP_CAT_USERS', '', ''),
(14, 1, 1, '', 'acp', 12, 172, 181, 'ACP_GROUPS', '', ''),
(15, 1, 1, '', 'acp', 12, 182, 191, 'ACP_USER_SECURITY', '', ''),
(16, 1, 1, '', 'acp', 0, 193, 242, 'ACP_CAT_PERMISSIONS', '', ''),
(17, 1, 1, '', 'acp', 16, 196, 205, 'ACP_GLOBAL_PERMISSIONS', '', ''),
(18, 1, 1, '', 'acp', 16, 206, 217, 'ACP_FORUM_BASED_PERMISSIONS', '', ''),
(19, 1, 1, '', 'acp', 16, 218, 227, 'ACP_PERMISSION_ROLES', '', ''),
(20, 1, 1, '', 'acp', 16, 228, 241, 'ACP_PERMISSION_MASKS', '', ''),
(21, 1, 1, '', 'acp', 0, 243, 258, 'ACP_CAT_CUSTOMISE', '', ''),
(22, 1, 1, '', 'acp', 21, 244, 249, 'ACP_STYLE_MANAGEMENT', '', ''),
(289, 1, 1, 'ucp_auth_link', 'ucp', 172, 12, 13, 'UCP_AUTH_LINK_MANAGE', 'auth_link', 'authmethod_oauth'),
(24, 1, 1, '', 'acp', 0, 259, 278, 'ACP_CAT_MAINTENANCE', '', ''),
(25, 1, 1, '', 'acp', 24, 260, 269, 'ACP_FORUM_LOGS', '', ''),
(26, 1, 1, '', 'acp', 24, 270, 277, 'ACP_CAT_DATABASE', '', ''),
(27, 1, 1, '', 'acp', 0, 279, 316, 'ACP_CAT_SYSTEM', '', ''),
(28, 1, 1, '', 'acp', 27, 280, 283, 'ACP_AUTOMATION', '', ''),
(29, 1, 1, '', 'acp', 27, 284, 295, 'ACP_GENERAL_TASKS', '', ''),
(30, 1, 1, '', 'acp', 27, 296, 309, 'ACP_MODULE_MANAGEMENT', '', ''),
(209, 1, 1, 'acp_mods', 'acp', 208, 319, 320, 'ACP_AUTOMOD', 'frontend', 'acl_a_mods'),
(32, 1, 1, 'acp_attachments', 'acp', 3, 21, 22, 'ACP_ATTACHMENT_SETTINGS', 'attach', 'acl_a_attach'),
(33, 1, 1, 'acp_attachments', 'acp', 11, 121, 122, 'ACP_ATTACHMENT_SETTINGS', 'attach', 'acl_a_attach'),
(34, 1, 1, 'acp_attachments', 'acp', 11, 123, 124, 'ACP_MANAGE_EXTENSIONS', 'extensions', 'acl_a_attach'),
(35, 1, 1, 'acp_attachments', 'acp', 11, 125, 126, 'ACP_EXTENSION_GROUPS', 'ext_groups', 'acl_a_attach'),
(36, 1, 1, 'acp_attachments', 'acp', 11, 127, 128, 'ACP_ORPHAN_ATTACHMENTS', 'orphan', 'acl_a_attach'),
(37, 1, 1, 'acp_ban', 'acp', 15, 183, 184, 'ACP_BAN_EMAILS', 'email', 'acl_a_ban'),
(38, 1, 1, 'acp_ban', 'acp', 15, 185, 186, 'ACP_BAN_IPS', 'ip', 'acl_a_ban'),
(39, 1, 1, 'acp_ban', 'acp', 15, 187, 188, 'ACP_BAN_USERNAMES', 'user', 'acl_a_ban'),
(40, 1, 1, 'acp_bbcodes', 'acp', 10, 101, 102, 'ACP_BBCODES', 'bbcodes', 'acl_a_bbcode'),
(41, 1, 1, 'acp_board', 'acp', 3, 23, 24, 'ACP_BOARD_SETTINGS', 'settings', 'acl_a_board'),
(42, 1, 1, 'acp_board', 'acp', 3, 25, 26, 'ACP_BOARD_FEATURES', 'features', 'acl_a_board'),
(43, 1, 1, 'acp_board', 'acp', 3, 27, 28, 'ACP_AVATAR_SETTINGS', 'avatar', 'acl_a_board'),
(44, 1, 1, 'acp_board', 'acp', 3, 29, 30, 'ACP_MESSAGE_SETTINGS', 'message', 'acl_a_board'),
(45, 1, 1, 'acp_board', 'acp', 10, 103, 104, 'ACP_MESSAGE_SETTINGS', 'message', 'acl_a_board'),
(46, 1, 1, 'acp_board', 'acp', 3, 31, 32, 'ACP_POST_SETTINGS', 'post', 'acl_a_board'),
(47, 1, 1, 'acp_board', 'acp', 3, 33, 34, 'ACP_SIGNATURE_SETTINGS', 'signature', 'acl_a_board'),
(48, 1, 1, 'acp_board', 'acp', 3, 35, 36, 'ACP_FEED_SETTINGS', 'feed', 'acl_a_board'),
(49, 1, 1, 'acp_board', 'acp', 3, 37, 38, 'ACP_REGISTER_SETTINGS', 'registration', 'acl_a_board'),
(50, 1, 1, 'acp_board', 'acp', 4, 51, 52, 'ACP_AUTH_SETTINGS', 'auth', 'acl_a_server'),
(51, 1, 1, 'acp_board', 'acp', 4, 53, 54, 'ACP_EMAIL_SETTINGS', 'email', 'acl_a_server'),
(52, 1, 1, 'acp_board', 'acp', 5, 59, 60, 'ACP_COOKIE_SETTINGS', 'cookie', 'acl_a_server'),
(53, 1, 1, 'acp_board', 'acp', 5, 61, 62, 'ACP_SERVER_SETTINGS', 'server', 'acl_a_server'),
(54, 1, 1, 'acp_board', 'acp', 5, 63, 64, 'ACP_SECURITY_SETTINGS', 'security', 'acl_a_server'),
(55, 1, 1, 'acp_board', 'acp', 5, 65, 66, 'ACP_LOAD_SETTINGS', 'load', 'acl_a_server'),
(56, 1, 1, 'acp_bots', 'acp', 29, 285, 286, 'ACP_BOTS', 'bots', 'acl_a_bots'),
(57, 1, 1, 'acp_captcha', 'acp', 3, 39, 40, 'ACP_VC_SETTINGS', 'visual', 'acl_a_board'),
(58, 1, 0, 'acp_captcha', 'acp', 3, 41, 42, 'ACP_VC_CAPTCHA_DISPLAY', 'img', 'acl_a_board'),
(59, 1, 1, 'acp_database', 'acp', 26, 271, 272, 'ACP_BACKUP', 'backup', 'acl_a_backup'),
(60, 1, 1, 'acp_database', 'acp', 26, 273, 274, 'ACP_RESTORE', 'restore', 'acl_a_backup'),
(61, 1, 1, 'acp_disallow', 'acp', 15, 189, 190, 'ACP_DISALLOW_USERNAMES', 'usernames', 'acl_a_names'),
(62, 1, 1, 'acp_email', 'acp', 29, 287, 288, 'ACP_MASS_EMAIL', 'email', 'acl_a_email && cfg_email_enable'),
(63, 1, 1, 'acp_forums', 'acp', 7, 81, 82, 'ACP_MANAGE_FORUMS', 'manage', 'acl_a_forum'),
(64, 1, 1, 'acp_groups', 'acp', 14, 173, 174, 'ACP_GROUPS_MANAGE', 'manage', 'acl_a_group'),
(65, 1, 1, 'acp_icons', 'acp', 10, 107, 108, 'ACP_ICONS', 'icons', 'acl_a_icons'),
(66, 1, 1, 'acp_icons', 'acp', 10, 109, 110, 'ACP_SMILIES', 'smilies', 'acl_a_icons'),
(67, 1, 1, 'acp_inactive', 'acp', 13, 137, 138, 'ACP_INACTIVE_USERS', 'list', 'acl_a_user'),
(68, 1, 1, 'acp_jabber', 'acp', 4, 55, 56, 'ACP_JABBER_SETTINGS', 'settings', 'acl_a_jabber'),
(69, 1, 1, 'acp_language', 'acp', 29, 255, 256, 'ACP_LANGUAGE_PACKS', 'lang_packs', 'acl_a_language'),
(70, 1, 1, 'acp_logs', 'acp', 25, 261, 262, 'ACP_ADMIN_LOGS', 'admin', 'acl_a_viewlogs'),
(71, 1, 1, 'acp_logs', 'acp', 25, 263, 264, 'ACP_MOD_LOGS', 'mod', 'acl_a_viewlogs'),
(72, 1, 1, 'acp_logs', 'acp', 25, 265, 266, 'ACP_USERS_LOGS', 'users', 'acl_a_viewlogs'),
(73, 1, 1, 'acp_logs', 'acp', 25, 267, 268, 'ACP_CRITICAL_LOGS', 'critical', 'acl_a_viewlogs'),
(74, 1, 1, 'acp_main', 'acp', 1, 2, 3, 'ACP_INDEX', 'main', ''),
(206, 1, 1, 'acp_modules', 'acp', 30, 305, 306, 'ACP', 'acp', 'acl_a_modules'),
(76, 1, 1, 'acp_modules', 'acp', 30, 297, 298, 'UCP', 'ucp', 'acl_a_modules'),
(77, 1, 1, 'acp_modules', 'acp', 30, 299, 300, 'MCP', 'mcp', 'acl_a_modules'),
(78, 1, 1, 'acp_permission_roles', 'acp', 19, 219, 220, 'ACP_ADMIN_ROLES', 'admin_roles', 'acl_a_roles && acl_a_aauth'),
(79, 1, 1, 'acp_permission_roles', 'acp', 19, 221, 222, 'ACP_USER_ROLES', 'user_roles', 'acl_a_roles && acl_a_uauth'),
(80, 1, 1, 'acp_permission_roles', 'acp', 19, 223, 224, 'ACP_MOD_ROLES', 'mod_roles', 'acl_a_roles && acl_a_mauth'),
(81, 1, 1, 'acp_permission_roles', 'acp', 19, 225, 226, 'ACP_FORUM_ROLES', 'forum_roles', 'acl_a_roles && acl_a_fauth'),
(82, 1, 1, 'acp_permissions', 'acp', 16, 194, 195, 'ACP_PERMISSIONS', 'intro', 'acl_a_authusers || acl_a_authgroups || acl_a_viewauth'),
(83, 1, 0, 'acp_permissions', 'acp', 20, 229, 230, 'ACP_PERMISSION_TRACE', 'trace', 'acl_a_viewauth'),
(84, 1, 1, 'acp_permissions', 'acp', 18, 207, 208, 'ACP_FORUM_PERMISSIONS', 'setting_forum_local', 'acl_a_fauth && (acl_a_authusers || acl_a_authgroups)'),
(85, 1, 1, 'acp_permissions', 'acp', 18, 209, 210, 'ACP_FORUM_PERMISSIONS_COPY', 'setting_forum_copy', 'acl_a_fauth && acl_a_authusers && acl_a_authgroups && acl_a_mauth'),
(86, 1, 1, 'acp_permissions', 'acp', 18, 211, 212, 'ACP_FORUM_MODERATORS', 'setting_mod_local', 'acl_a_mauth && (acl_a_authusers || acl_a_authgroups)'),
(87, 1, 1, 'acp_permissions', 'acp', 17, 197, 198, 'ACP_USERS_PERMISSIONS', 'setting_user_global', 'acl_a_authusers && (acl_a_aauth || acl_a_mauth || acl_a_uauth)'),
(88, 1, 1, 'acp_permissions', 'acp', 13, 139, 140, 'ACP_USERS_PERMISSIONS', 'setting_user_global', 'acl_a_authusers && (acl_a_aauth || acl_a_mauth || acl_a_uauth)'),
(89, 1, 1, 'acp_permissions', 'acp', 18, 213, 214, 'ACP_USERS_FORUM_PERMISSIONS', 'setting_user_local', 'acl_a_authusers && (acl_a_mauth || acl_a_fauth)'),
(90, 1, 1, 'acp_permissions', 'acp', 13, 141, 142, 'ACP_USERS_FORUM_PERMISSIONS', 'setting_user_local', 'acl_a_authusers && (acl_a_mauth || acl_a_fauth)'),
(91, 1, 1, 'acp_permissions', 'acp', 17, 199, 200, 'ACP_GROUPS_PERMISSIONS', 'setting_group_global', 'acl_a_authgroups && (acl_a_aauth || acl_a_mauth || acl_a_uauth)'),
(92, 1, 1, 'acp_permissions', 'acp', 14, 175, 176, 'ACP_GROUPS_PERMISSIONS', 'setting_group_global', 'acl_a_authgroups && (acl_a_aauth || acl_a_mauth || acl_a_uauth)'),
(93, 1, 1, 'acp_permissions', 'acp', 18, 215, 216, 'ACP_GROUPS_FORUM_PERMISSIONS', 'setting_group_local', 'acl_a_authgroups && (acl_a_mauth || acl_a_fauth)'),
(94, 1, 1, 'acp_permissions', 'acp', 14, 177, 178, 'ACP_GROUPS_FORUM_PERMISSIONS', 'setting_group_local', 'acl_a_authgroups && (acl_a_mauth || acl_a_fauth)'),
(95, 1, 1, 'acp_permissions', 'acp', 17, 201, 202, 'ACP_ADMINISTRATORS', 'setting_admin_global', 'acl_a_aauth && (acl_a_authusers || acl_a_authgroups)'),
(96, 1, 1, 'acp_permissions', 'acp', 17, 203, 204, 'ACP_GLOBAL_MODERATORS', 'setting_mod_global', 'acl_a_mauth && (acl_a_authusers || acl_a_authgroups)'),
(97, 1, 1, 'acp_permissions', 'acp', 20, 231, 232, 'ACP_VIEW_ADMIN_PERMISSIONS', 'view_admin_global', 'acl_a_viewauth'),
(98, 1, 1, 'acp_permissions', 'acp', 20, 233, 234, 'ACP_VIEW_USER_PERMISSIONS', 'view_user_global', 'acl_a_viewauth'),
(99, 1, 1, 'acp_permissions', 'acp', 20, 235, 236, 'ACP_VIEW_GLOBAL_MOD_PERMISSIONS', 'view_mod_global', 'acl_a_viewauth'),
(100, 1, 1, 'acp_permissions', 'acp', 20, 237, 238, 'ACP_VIEW_FORUM_MOD_PERMISSIONS', 'view_mod_local', 'acl_a_viewauth'),
(101, 1, 1, 'acp_permissions', 'acp', 20, 239, 240, 'ACP_VIEW_FORUM_PERMISSIONS', 'view_forum_local', 'acl_a_viewauth'),
(102, 1, 1, 'acp_php_info', 'acp', 29, 289, 290, 'ACP_PHP_INFO', 'info', 'acl_a_phpinfo'),
(103, 1, 1, 'acp_profile', 'acp', 13, 143, 144, 'ACP_CUSTOM_PROFILE_FIELDS', 'profile', 'acl_a_profile'),
(104, 1, 1, 'acp_prune', 'acp', 7, 83, 84, 'ACP_PRUNE_FORUMS', 'forums', 'acl_a_prune'),
(105, 1, 1, 'acp_prune', 'acp', 15, 169, 170, 'ACP_PRUNE_USERS', 'users', 'acl_a_userdel'),
(106, 1, 1, 'acp_ranks', 'acp', 13, 145, 146, 'ACP_MANAGE_RANKS', 'ranks', 'acl_a_ranks'),
(107, 1, 1, 'acp_reasons', 'acp', 29, 291, 292, 'ACP_MANAGE_REASONS', 'main', 'acl_a_reasons'),
(108, 1, 1, 'acp_search', 'acp', 5, 67, 68, 'ACP_SEARCH_SETTINGS', 'settings', 'acl_a_search'),
(109, 1, 1, 'acp_search', 'acp', 26, 275, 276, 'ACP_SEARCH_INDEX', 'index', 'acl_a_search'),
(111, 1, 1, 'acp_styles', 'acp', 22, 245, 246, 'ACP_STYLES', 'style', 'acl_a_styles'),
(115, 1, 1, 'acp_update', 'acp', 28, 281, 282, 'ACP_VERSION_CHECK', 'version_check', 'acl_a_board'),
(116, 1, 1, 'acp_users', 'acp', 13, 135, 136, 'ACP_MANAGE_USERS', 'overview', 'acl_a_user'),
(117, 1, 0, 'acp_users', 'acp', 13, 147, 148, 'ACP_USER_FEEDBACK', 'feedback', 'acl_a_user'),
(118, 1, 0, 'acp_users', 'acp', 13, 149, 150, 'ACP_USER_WARNINGS', 'warnings', 'acl_a_user'),
(119, 1, 0, 'acp_users', 'acp', 13, 151, 152, 'ACP_USER_PROFILE', 'profile', 'acl_a_user'),
(120, 1, 0, 'acp_users', 'acp', 13, 153, 154, 'ACP_USER_PREFS', 'prefs', 'acl_a_user'),
(121, 1, 0, 'acp_users', 'acp', 13, 155, 156, 'ACP_USER_AVATAR', 'avatar', 'acl_a_user'),
(122, 1, 0, 'acp_users', 'acp', 13, 157, 158, 'ACP_USER_RANK', 'rank', 'acl_a_user'),
(123, 1, 0, 'acp_users', 'acp', 13, 159, 160, 'ACP_USER_SIG', 'sig', 'acl_a_user'),
(124, 1, 0, 'acp_users', 'acp', 13, 161, 162, 'ACP_USER_GROUPS', 'groups', 'acl_a_user && acl_a_group'),
(125, 1, 0, 'acp_users', 'acp', 13, 163, 164, 'ACP_USER_PERM', 'perm', 'acl_a_user && acl_a_viewauth'),
(126, 1, 0, 'acp_users', 'acp', 13, 165, 166, 'ACP_USER_ATTACH', 'attach', 'acl_a_user'),
(127, 1, 1, 'acp_words', 'acp', 10, 111, 112, 'ACP_WORDS', 'words', 'acl_a_words'),
(128, 1, 1, 'acp_users', 'acp', 2, 5, 6, 'ACP_MANAGE_USERS', 'overview', 'acl_a_user'),
(129, 1, 1, 'acp_groups', 'acp', 2, 7, 8, 'ACP_GROUPS_MANAGE', 'manage', 'acl_a_group'),
(130, 1, 1, 'acp_forums', 'acp', 2, 9, 10, 'ACP_MANAGE_FORUMS', 'manage', 'acl_a_forum'),
(131, 1, 1, 'acp_logs', 'acp', 2, 11, 12, 'ACP_MOD_LOGS', 'mod', 'acl_a_viewlogs'),
(132, 1, 1, 'acp_bots', 'acp', 2, 13, 14, 'ACP_BOTS', 'bots', 'acl_a_bots'),
(133, 1, 1, 'acp_php_info', 'acp', 2, 15, 16, 'ACP_PHP_INFO', 'info', 'acl_a_phpinfo'),
(134, 1, 1, 'acp_permissions', 'acp', 8, 87, 88, 'ACP_FORUM_PERMISSIONS', 'setting_forum_local', 'acl_a_fauth && (acl_a_authusers || acl_a_authgroups)'),
(135, 1, 1, 'acp_permissions', 'acp', 8, 89, 90, 'ACP_FORUM_PERMISSIONS_COPY', 'setting_forum_copy', 'acl_a_fauth && acl_a_authusers && acl_a_authgroups && acl_a_mauth'),
(136, 1, 1, 'acp_permissions', 'acp', 8, 91, 92, 'ACP_FORUM_MODERATORS', 'setting_mod_local', 'acl_a_mauth && (acl_a_authusers || acl_a_authgroups)'),
(137, 1, 1, 'acp_permissions', 'acp', 8, 93, 94, 'ACP_USERS_FORUM_PERMISSIONS', 'setting_user_local', 'acl_a_authusers && (acl_a_mauth || acl_a_fauth)'),
(138, 1, 1, 'acp_permissions', 'acp', 8, 95, 96, 'ACP_GROUPS_FORUM_PERMISSIONS', 'setting_group_local', 'acl_a_authgroups && (acl_a_mauth || acl_a_fauth)'),
(139, 1, 1, '', 'mcp', 0, 1, 10, 'MCP_MAIN', '', ''),
(140, 1, 1, '', 'mcp', 0, 11, 22, 'MCP_QUEUE', '', ''),
(141, 1, 1, '', 'mcp', 0, 23, 36, 'MCP_REPORTS', '', ''),
(142, 1, 1, '', 'mcp', 0, 37, 42, 'MCP_NOTES', '', ''),
(143, 1, 1, '', 'mcp', 0, 43, 52, 'MCP_WARN', '', ''),
(144, 1, 1, '', 'mcp', 0, 53, 60, 'MCP_LOGS', '', ''),
(145, 1, 1, '', 'mcp', 0, 61, 68, 'MCP_BAN', '', ''),
(146, 1, 1, 'mcp_ban', 'mcp', 145, 62, 63, 'MCP_BAN_USERNAMES', 'user', 'acl_m_ban'),
(147, 1, 1, 'mcp_ban', 'mcp', 145, 64, 65, 'MCP_BAN_IPS', 'ip', 'acl_m_ban'),
(148, 1, 1, 'mcp_ban', 'mcp', 145, 66, 67, 'MCP_BAN_EMAILS', 'email', 'acl_m_ban'),
(149, 1, 1, 'mcp_logs', 'mcp', 144, 54, 55, 'MCP_LOGS_FRONT', 'front', 'acl_m_ || aclf_m_'),
(150, 1, 1, 'mcp_logs', 'mcp', 144, 56, 57, 'MCP_LOGS_FORUM_VIEW', 'forum_logs', 'acl_m_,$id'),
(151, 1, 1, 'mcp_logs', 'mcp', 144, 58, 59, 'MCP_LOGS_TOPIC_VIEW', 'topic_logs', 'acl_m_,$id'),
(152, 1, 1, 'mcp_main', 'mcp', 139, 2, 3, 'MCP_MAIN_FRONT', 'front', ''),
(153, 1, 1, 'mcp_main', 'mcp', 139, 4, 5, 'MCP_MAIN_FORUM_VIEW', 'forum_view', 'acl_m_,$id'),
(154, 1, 1, 'mcp_main', 'mcp', 139, 6, 7, 'MCP_MAIN_TOPIC_VIEW', 'topic_view', 'acl_m_,$id'),
(155, 1, 1, 'mcp_main', 'mcp', 139, 8, 9, 'MCP_MAIN_POST_DETAILS', 'post_details', 'acl_m_,$id || (!$id && aclf_m_)'),
(156, 1, 1, 'mcp_notes', 'mcp', 142, 38, 39, 'MCP_NOTES_FRONT', 'front', ''),
(157, 1, 1, 'mcp_notes', 'mcp', 142, 40, 41, 'MCP_NOTES_USER', 'user_notes', ''),
(158, 1, 1, 'mcp_pm_reports', 'mcp', 141, 24, 25, 'MCP_PM_REPORTS_OPEN', 'pm_reports', 'acl_m_pm_report'),
(159, 1, 1, 'mcp_pm_reports', 'mcp', 141, 26, 27, 'MCP_PM_REPORTS_CLOSED', 'pm_reports_closed', 'acl_m_pm_report'),
(160, 1, 1, 'mcp_pm_reports', 'mcp', 141, 28, 29, 'MCP_PM_REPORT_DETAILS', 'pm_report_details', 'acl_m_pm_report'),
(161, 1, 1, 'mcp_queue', 'mcp', 140, 12, 13, 'MCP_QUEUE_UNAPPROVED_TOPICS', 'unapproved_topics', 'aclf_m_approve'),
(162, 1, 1, 'mcp_queue', 'mcp', 140, 14, 15, 'MCP_QUEUE_UNAPPROVED_POSTS', 'unapproved_posts', 'aclf_m_approve'),
(163, 1, 1, 'mcp_queue', 'mcp', 140, 16, 17, 'MCP_QUEUE_APPROVE_DETAILS', 'approve_details', 'acl_m_approve,$id || (!$id && aclf_m_approve)'),
(164, 1, 1, 'mcp_reports', 'mcp', 141, 30, 31, 'MCP_REPORTS_OPEN', 'reports', 'aclf_m_report'),
(165, 1, 1, 'mcp_reports', 'mcp', 141, 32, 33, 'MCP_REPORTS_CLOSED', 'reports_closed', 'aclf_m_report'),
(166, 1, 1, 'mcp_reports', 'mcp', 141, 34, 35, 'MCP_REPORT_DETAILS', 'report_details', 'acl_m_report,$id || (!$id && aclf_m_report)'),
(167, 1, 1, 'mcp_warn', 'mcp', 143, 44, 45, 'MCP_WARN_FRONT', 'front', 'aclf_m_warn'),
(168, 1, 1, 'mcp_warn', 'mcp', 143, 46, 47, 'MCP_WARN_LIST', 'list', 'aclf_m_warn'),
(169, 1, 1, 'mcp_warn', 'mcp', 143, 48, 49, 'MCP_WARN_USER', 'warn_user', 'aclf_m_warn'),
(170, 1, 1, 'mcp_warn', 'mcp', 143, 50, 51, 'MCP_WARN_POST', 'warn_post', 'acl_m_warn && acl_f_read,$id'),
(171, 1, 1, '', 'ucp', 0, 25, 38, 'UCP_MAIN', '', ''),
(172, 1, 1, '', 'ucp', 0, 1, 14, 'UCP_PROFILE', '', ''),
(173, 1, 1, '', 'ucp', 0, 39, 48, 'UCP_PREFS', '', ''),
(174, 1, 1, 'ucp_pm', 'ucp', 0, 15, 24, 'UCP_PM', '', ''),
(175, 1, 1, '', 'ucp', 0, 49, 54, 'UCP_USERGROUPS', '', ''),
(176, 1, 1, '', 'ucp', 0, 55, 60, 'UCP_ZEBRA', '', ''),
(177, 1, 1, 'ucp_attachments', 'ucp', 171, 34, 35, 'UCP_MAIN_ATTACHMENTS', 'attachments', 'acl_u_attach'),
(178, 1, 1, 'ucp_groups', 'ucp', 175, 50, 51, 'UCP_USERGROUPS_MEMBER', 'membership', ''),
(179, 1, 1, 'ucp_groups', 'ucp', 175, 52, 53, 'UCP_USERGROUPS_MANAGE', 'manage', ''),
(180, 1, 1, 'ucp_main', 'ucp', 171, 26, 27, 'UCP_MAIN_FRONT', 'front', ''),
(181, 1, 1, 'ucp_main', 'ucp', 171, 28, 29, 'UCP_MAIN_SUBSCRIBED', 'subscribed', ''),
(182, 1, 1, 'ucp_main', 'ucp', 171, 30, 31, 'UCP_MAIN_BOOKMARKS', 'bookmarks', 'cfg_allow_bookmarks'),
(183, 1, 1, 'ucp_main', 'ucp', 171, 32, 33, 'UCP_MAIN_DRAFTS', 'drafts', ''),
(184, 1, 0, 'ucp_pm', 'ucp', 174, 16, 17, 'UCP_PM_VIEW', 'view', 'cfg_allow_privmsg'),
(185, 1, 1, 'ucp_pm', 'ucp', 174, 18, 19, 'UCP_PM_COMPOSE', 'compose', 'cfg_allow_privmsg'),
(186, 1, 1, 'ucp_pm', 'ucp', 174, 20, 21, 'UCP_PM_DRAFTS', 'drafts', 'cfg_allow_privmsg'),
(187, 1, 1, 'ucp_pm', 'ucp', 174, 22, 23, 'UCP_PM_OPTIONS', 'options', 'cfg_allow_privmsg'),
(189, 1, 1, 'ucp_prefs', 'ucp', 173, 40, 41, 'UCP_PREFS_PERSONAL', 'personal', ''),
(190, 1, 1, 'ucp_prefs', 'ucp', 173, 42, 43, 'UCP_PREFS_POST', 'post', ''),
(191, 1, 1, 'ucp_prefs', 'ucp', 173, 44, 45, 'UCP_PREFS_VIEW', 'view', ''),
(192, 1, 1, 'ucp_profile', 'ucp', 172, 2, 3, 'UCP_PROFILE_PROFILE_INFO', 'profile_info', 'acl_u_chgprofileinfo'),
(193, 1, 1, 'ucp_profile', 'ucp', 172, 4, 5, 'UCP_PROFILE_SIGNATURE', 'signature', 'acl_u_sig'),
(194, 1, 1, 'ucp_profile', 'ucp', 172, 6, 7, 'UCP_PROFILE_AVATAR', 'avatar', 'cfg_allow_avatar'),
(195, 1, 1, 'ucp_profile', 'ucp', 172, 8, 9, 'UCP_PROFILE_REG_DETAILS', 'reg_details', ''),
(196, 1, 1, 'ucp_zebra', 'ucp', 176, 56, 57, 'UCP_ZEBRA_FRIENDS', 'friends', ''),
(197, 1, 1, 'ucp_zebra', 'ucp', 176, 58, 59, 'UCP_ZEBRA_FOES', 'foes', ''),
(207, 0, 1, '', 'acp', 0, 317, 324, 'ACP_CAT_MODS', '', 'acl_a_mods'),
(208, 1, 1, '', 'acp', 207, 318, 323, 'ACP_MODS', '', 'acl_a_mods'),
(199, 1, 1, 'acp_mods', 'acp', 2, 17, 18, 'ACP_AUTOMOD_CONFIG', 'config', 'acl_a_mods'),
(201, 1, 1, 'acp_mods', 'acp', 30, 301, 302, 'ACP_AUTOMOD', 'config', 'acl_a_mods'),
(203, 1, 1, 'acp_mods', 'acp', 30, 303, 304, 'ACP_AUTOMOD_CONFIG', 'config', 'acl_a_mods'),
(213, 1, 1, 'acp_mchat', 'acp', 30, 307, 308, 'ACP_MCHAT_CONFIG', 'configuration', 'acl_a_mchat'),
(210, 1, 1, 'acp_mods', 'acp', 208, 321, 322, 'ACP_AUTOMOD_CONFIG', 'config', 'acl_a_mods'),
(212, 1, 1, 'acp_mchat', 'acp', 29, 293, 294, 'ACP_MCHAT_CONFIG', 'configuration', 'acl_a_mchat'),
(214, 0, 1, 'acp_jabber', 'acp', 0, 325, 326, 'ACP_JABBER_SETTINGS', 'settings', 'acl_a_jabber'),
(231, 0, 1, '', 'acp', 0, 327, 390, 'ACP_CAT_DOT_MODS', '', ''),
(232, 1, 1, '', 'acp', 231, 328, 363, 'ACP_PORTAL_INFO', '', ''),
(233, 1, 1, 'acp_portal', 'acp', 232, 329, 330, 'ACP_PORTAL_GENERAL_INFO', 'general', 'acl_a_portal_manage'),
(234, 1, 1, 'acp_portal', 'acp', 232, 331, 332, 'ACP_PORTAL_NEWS_INFO', 'news', 'acl_a_portal_manage'),
(235, 1, 1, 'acp_portal', 'acp', 232, 333, 334, 'ACP_PORTAL_ANNOUNCEMENTS_INFO', 'announcements', 'acl_a_portal_manage'),
(236, 1, 1, 'acp_portal', 'acp', 232, 335, 336, 'ACP_PORTAL_WELCOME_INFO', 'welcome', 'acl_a_portal_manage'),
(237, 1, 1, 'acp_portal', 'acp', 232, 337, 338, 'ACP_PORTAL_RECENT_INFO', 'recent', 'acl_a_portal_manage'),
(242, 1, 1, 'acp_portal', 'acp', 232, 347, 348, 'ACP_PORTAL_POLLS_INFO', 'polls', 'acl_a_portal_manage'),
(241, 1, 1, 'acp_portal', 'acp', 232, 345, 346, 'ACP_PORTAL_MEMBERS_INFO', 'members', 'acl_a_portal_manage'),
(240, 1, 1, 'acp_portal', 'acp', 232, 343, 344, 'ACP_PORTAL_ATTACHMENTS_INFO', 'attachments', 'acl_a_portal_manage'),
(239, 1, 1, 'acp_portal', 'acp', 232, 341, 342, 'ACP_PORTAL_PAYPAL_INFO', 'paypal', 'acl_a_portal_manage'),
(238, 1, 1, 'acp_portal', 'acp', 232, 339, 340, 'ACP_PORTAL_WORDGRAPH_INFO', 'wordgraph', 'acl_a_portal_manage'),
(243, 1, 1, 'acp_portal', 'acp', 232, 349, 350, 'ACP_PORTAL_BOTS_INFO', 'bots', 'acl_a_portal_manage'),
(244, 1, 1, 'acp_portal', 'acp', 232, 351, 352, 'ACP_PORTAL_POSTER_INFO', 'poster', 'acl_a_portal_manage'),
(245, 1, 1, 'acp_portal', 'acp', 232, 353, 354, 'ACP_PORTAL_MINICALENDAR_INFO', 'minicalendar', 'acl_a_portal_manage'),
(246, 1, 1, 'acp_portal', 'acp', 232, 355, 356, 'ACP_PORTAL_CUSTOMBLOCK_INFO', 'customblock', 'acl_a_portal_manage'),
(247, 1, 1, 'acp_portal', 'acp', 232, 357, 358, 'ACP_PORTAL_LINKS_INFO', 'links', 'acl_a_portal_manage'),
(248, 1, 1, 'acp_portal', 'acp', 232, 359, 360, 'ACP_PORTAL_FRIENDS_INFO', 'friends', 'acl_a_portal_manage'),
(249, 1, 1, 'acp_portal', 'acp', 232, 361, 362, 'ACP_PORTAL_BIRTHDAYS_INFO', 'birthdays', 'acl_a_portal_manage'),
(254, 1, 1, '', 'acp', 231, 364, 367, 'WWH_TITLE', '', ''),
(255, 1, 1, 'acp_wwh', 'acp', 254, 365, 366, 'WWH_CONFIG', 'overview', 'acl_a_board'),
(256, 1, 1, '', 'acp', 231, 368, 371, 'ACP_CAT_TAGCLOUD_MOD', '', ''),
(257, 1, 1, 'acp_cloud', 'acp', 256, 369, 370, 'ACP_CLOUD_INDEX_TITLE', 'index', 'acl_a_board'),
(258, 0, 1, 'acp_mchat', 'acp', 1, 72, 73, 'ACP_MCHAT_CONFIG', 'configuration', 'acl_a_mchat'),
(259, 1, 1, '', 'acp', 27, 310, 315, 'ACP_MASS_EMAIL_HTML', '', ''),
(260, 1, 1, 'acp_email_html', 'acp', 259, 311, 312, 'ACP_MASS_EMAIL_HTML_DO', 'email', 'acl_a_email'),
(261, 1, 1, 'acp_email_html', 'acp', 259, 313, 314, 'ACP_MASS_EMAIL_HTML_VIEW', 'view', 'acl_a_email'),
(262, 1, 1, 'acp_mchat', 'acp', 1, 74, 75, 'ACP_MCHAT_CONFIG', 'configuration', 'acl_a_mchat'),
(263, 0, 1, 'acp_thanks', 'acp', 1, 76, 77, 'ACP_THANKS_SETTINGS', 'thanks', 'acl_a_board'),
(264, 1, 1, 'acp_ads', 'acp', 3, 43, 44, 'ACP_ADVERTISEMENT_MANAGEMENT', 'default', 'acl_a_ads'),
(275, 1, 1, '', 'acp', 231, 372, 375, 'ACP_CAT_MCHAT', '', ''),
(276, 1, 1, 'acp_mchat', 'acp', 275, 373, 374, 'ACP_MCHAT_CONFIG', 'configuration', 'acl_a_mchat'),
(277, 1, 0, 'acp_users', 'acp', 13, 167, 168, 'ACP_USER_MCHAT', 'mchat', 'acl_a_user'),
(278, 1, 1, '', 'ucp', 0, 61, 64, 'UCP_CAT_MCHAT', '', ''),
(279, 1, 1, 'ucp_mchat', 'ucp', 278, 62, 63, 'UCP_MCHAT_CONFIG', 'configuration', 'acl_u_mchat_use'),
(280, 1, 1, 'acp_board', 'acp', 10, 105, 106, 'ACP_POST_SETTINGS', 'post', 'acl_a_board'),
(281, 1, 1, '', 'acp', 21, 250, 253, 'ACP_EXTENSION_MANAGEMENT', '', ''),
(282, 1, 1, 'acp_extensions', 'acp', 281, 251, 252, 'ACP_EXTENSIONS', 'main', 'acl_a_extensions'),
(283, 1, 1, 'acp_groups', 'acp', 14, 179, 180, 'ACP_GROUPS_POSITION', 'position', 'acl_a_group'),
(284, 1, 1, 'acp_attachments', 'acp', 11, 129, 130, 'ACP_MANAGE_ATTACHMENTS', 'manage', 'acl_a_attach'),
(285, 1, 1, 'acp_styles', 'acp', 22, 247, 248, 'ACP_STYLES_INSTALL', 'install', 'acl_a_styles'),
(296, 1, 1, '\\phpbb\\viglink\\acp\\viglink_module', 'acp', 3, 47, 48, 'ACP_VIGLINK_SETTINGS', 'settings', 'ext_phpbb/viglink && acl_a_board'),
(287, 1, 1, 'ucp_profile', 'ucp', 172, 10, 11, 'UCP_PROFILE_AUTOLOGIN_KEYS', 'autologin_keys', ''),
(288, 1, 1, '', 'acp', 21, 254, 257, 'ACP_LANGUAGE', '', ''),
(295, 1, 1, 'acp_help_phpbb', 'acp', 5, 69, 70, 'ACP_HELP_PHPBB', 'help_phpbb', 'acl_a_server'),
(294, 1, 1, 'acp_contact', 'acp', 3, 45, 46, 'ACP_CONTACT_SETTINGS', 'contact', 'acl_a_board'),
(290, 1, 1, 'ucp_notifications', 'ucp', 171, 36, 37, 'UCP_NOTIFICATION_LIST', 'notification_list', 'cfg_allow_board_notifications'),
(291, 1, 1, 'ucp_notifications', 'ucp', 173, 46, 47, 'UCP_NOTIFICATION_OPTIONS', 'notification_options', ''),
(292, 1, 1, 'mcp_queue', 'mcp', 140, 18, 19, 'MCP_QUEUE_DELETED_TOPICS', 'deleted_topics', 'aclf_m_approve'),
(293, 1, 1, 'mcp_queue', 'mcp', 140, 20, 21, 'MCP_QUEUE_DELETED_POSTS', 'deleted_posts', 'aclf_m_approve'),
(297, 1, 1, '\\phpbb\\viglink\\acp\\viglink_module', 'acp', 0, 391, 392, 'ACP_VIGLINK_SETTINGS', 'settings', 'ext_phpbb/viglink && acl_a_board'),
(298, 1, 1, 'acp_prune', 'acp', 0, 393, 394, 'ACP_PRUNE_FORUMS', 'forums', 'acl_a_prune'),
(299, 1, 1, '', 'acp', 9, 114, 119, 'ACP_PHPBB_MEDIA_EMBED', '', ''),
(300, 1, 1, '\\phpbb\\mediaembed\\acp\\main_module', 'acp', 299, 115, 116, 'ACP_PHPBB_MEDIA_EMBED_SETTINGS', 'settings', 'ext_phpbb/mediaembed && acl_a_bbcode'),
(301, 1, 1, '\\phpbb\\mediaembed\\acp\\main_module', 'acp', 299, 117, 118, 'ACP_PHPBB_MEDIA_EMBED_MANAGE', 'manage', 'ext_phpbb/mediaembed && acl_a_bbcode'),
(302, 1, 1, '', 'acp', 231, 376, 379, 'ACP_MOBIQUO_TITLE', '', ''),
(303, 1, 1, '\\tapatalk\\tapatalk\\acp\\main_module', 'acp', 302, 377, 378, 'ACP_MOBIQUO_SETTINGS', 'mobiquo', 'ext_tapatalk/tapatalk && acl_a_board'),
(312, 1, 1, '', 'acp', 231, 380, 385, 'ACP_PHPBB_ADS_TITLE', '', ''),
(313, 1, 1, '\\phpbb\\ads\\acp\\main_module', 'acp', 312, 381, 382, 'ACP_MANAGE_ADS_TITLE', 'manage', 'ext_phpbb/ads && acl_a_phpbb_ads_m'),
(314, 1, 1, '\\phpbb\\ads\\acp\\main_module', 'acp', 312, 383, 384, 'ACP_ADS_SETTINGS_TITLE', 'settings', 'ext_phpbb/ads && acl_a_phpbb_ads_s'),
(315, 1, 1, '', 'ucp', 0, 65, 68, 'UCP_PHPBB_ADS_TITLE', '', ''),
(316, 1, 1, '\\phpbb\\ads\\ucp\\main_module', 'ucp', 315, 66, 67, 'UCP_PHPBB_ADS_STATS', 'stats', 'ext_phpbb/ads && acl_u_phpbb_ads'),
(309, 1, 1, '\\phpbb\\ads\\acp\\main_module', 'acp', 0, 395, 396, 'ACP_MANAGE_ADS_TITLE', 'manage', 'ext_phpbb/ads && acl_a_phpbb_ads_m'),
(310, 1, 1, '\\phpbb\\ads\\acp\\main_module', 'acp', 0, 397, 398, 'ACP_ADS_SETTINGS_TITLE', 'settings', 'ext_phpbb/ads && acl_a_phpbb_ads_s'),
(311, 1, 1, '\\tapatalk\\tapatalk\\acp\\main_module', 'acp', 0, 399, 400, 'ACP_MOBIQUO_SETTINGS', 'mobiquo', 'ext_tapatalk/tapatalk && acl_a_board'),
(317, 1, 1, '', 'acp', 231, 386, 389, 'ACP_BSCFTRSCLS', '', ''),
(318, 1, 1, '\\forumflair\\bscftrscls\\acp\\main_module', 'acp', 317, 387, 388, 'ACP_BSCFTRSCLS_SETTINGS', 'overview', 'ext_forumflair/bscftrscls && acl_a_board'),
(319, 0, 1, '\\forumflair\\bscftrscls\\acp\\main_module', 'acp', 0, 401, 402, 'ACP_BSCFTRSCLS_SETTINGS', 'settings', 'ext_forumflair\\bscftrscls && acl_a_board');

--
-- Indeksy dla zrzutów tabel
--

--
-- Indeksy dla tabeli `phpbb_modules`
--
ALTER TABLE `phpbb_modules`
  ADD PRIMARY KEY (`module_id`),
  ADD KEY `left_right_id` (`left_id`,`right_id`),
  ADD KEY `module_enabled` (`module_enabled`),
  ADD KEY `class_left_id` (`module_class`,`left_id`);

--
-- AUTO_INCREMENT dla zrzuconych tabel
--

--
-- AUTO_INCREMENT dla tabeli `phpbb_modules`
--
ALTER TABLE `phpbb_modules`
  MODIFY `module_id` mediumint(8) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=320;
COMMIT;

/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
Rozumiem ale jak wysypało panel admina i nie ma do niego dostępu to liczyłem że usunięcie z poziomu stk rozwiąże problem ale widać był to błąd.

vader
Moderator
Posty: 1502
Rejestracja: 19 kwietnia 2015, 14:44
Lokalizacja: Kraków
Kontakt:

Re: Błąd eval()'d code ACP się wysypał

Post autor: vader » 25 listopada 2022, 12:30

Ale czekaj, panel się wysypał po odinstalowaniu rozszerzenia z acp? Jeśli tak, ja bym to zgłosił do autora rozszerzenia.

Na samym dole masz trzy moduły

Kod: Zaznacz cały

(317, 1, 1, '', 'acp', 231, 386, 389, 'ACP_BSCFTRSCLS', '', ''),
(318, 1, 1, '\\forumflair\\bscftrscls\\acp\\main_module', 'acp', 317, 387, 388, 'ACP_BSCFTRSCLS_SETTINGS', 'overview', 'ext_forumflair/bscftrscls && acl_a_board'),
(319, 0, 1, '\\forumflair\\bscftrscls\\acp\\main_module', 'acp', 0, 401, 402, 'ACP_BSCFTRSCLS_SETTINGS', 'settings', 'ext_forumflair\\bscftrscls && acl_a_board');
Trzeba zmienić dla tego z id 317 i 318 analogicznie: (317, 1, 1, [...]) na (317, 0, 1, [...]) oraz (318, 1, 1, [...]) na (318, 0, 1, [...]). Można przez phpMyAdmin kliknąć komórkę, zmienić wartość i zapisać.

Zapisać zmianę, wyczyścić bufor/cache forum i zobaczymy.

Rici134
Posty: 12
Rejestracja: 22 listopada 2022, 11:01

Re: Błąd eval()'d code ACP się wysypał

Post autor: Rici134 » 25 listopada 2022, 14:34

po zainstalowaniu

Rici134
Posty: 12
Rejestracja: 22 listopada 2022, 11:01

Re: Błąd eval()'d code ACP się wysypał

Post autor: Rici134 » 25 listopada 2022, 15:53

Bez zmian.

Opiszę jeszcze raz co po kolei robiłem:
- zainstalowałem moda (wcześniej forum chodziło bez problemów)
- włączyłem moda w acp (nadal było ok bo włączałem w acp)
- Zobaczyłem że nie ma zakładki więc dodałem do acp zakładkę settings i się wysypało od tej pory wchodząc w acp widzę błąd. Później pomyślałem że taka zakładka już była od taptalka albo od ADS( nie pamiętam dokładnie)i może to się pogryzło że dwie zakładki o tej samej nazwie.
310, 1, 1, '\\phpbb\\ads\\acp\\main_module', 'acp', 0, 397, 398, 'ACP_ADS_SETTINGS_TITLE', 'settings', 'ext_phpbb/ads && acl_a_phpbb_ads_s'),
(311, 1, 1, '\\tapatalk\\tapatalk\\acp\\main_module', 'acp', 0, 399, 400, 'ACP_MOBIQUO_SETTINGS', 'mobiquo', 'ext_tapatalk/tapatalk && acl_a_board'),
(317, 0, 1, '', 'acp', 231, 386, 389, 'ACP_BSCFTRSCLS', '', ''),
(318, 0, 1, '\\forumflair\\bscftrscls\\acp\\main_module', 'acp', 317, 387, 388, 'ACP_BSCFTRSCLS_SETTINGS', 'overview', 'ext_forumflair/bscftrscls && acl_a_board'),
(319, 1, 1, '\\forumflair\\bscftrscls\\acp\\main_module', 'acp', 0, 401, 402, 'ACP_BSCFTRSCLS_SETTINGS', 'settings', 'ext_forumflair\\bscftrscls && acl_a_board');

vader
Moderator
Posty: 1502
Rejestracja: 19 kwietnia 2015, 14:44
Lokalizacja: Kraków
Kontakt:

Re: Błąd eval()'d code ACP się wysypał

Post autor: vader » 25 listopada 2022, 16:20

Ok, teraz rozumiem. Zrób dwie rzeczy, przywróć w bazie danych te zmienione zakładki z 317 i 318 -> 0 na 1. Tą ekstra wyłącz, czyli zmień (310, 1, 1, [...]) na (310, 0, 1, [...]).

Tak się nie robi, dodawanie modułów może rozsypać bazę (jak widać). Nawet jeśli chcesz robić coś takiego, to najlepiej wyłączyć forum i zrobić backup bazy. Wtedy w razie problemów można przywrócić kopię.

Jeśli są jakieś dodatkowe ustawienia dla wtyczki, to one są zazwyczaj w nowej zakładce Rozszerzenia. Nawet na screenach wtyczki, widać że takie ustawienia są właśnie we wspomnianej zakładce (obrazki na dole) https://www.phpbb.com/customise/db/exte ... scftrscls/

Rici134
Posty: 12
Rejestracja: 22 listopada 2022, 11:01

Re: Błąd eval()'d code ACP się wysypał

Post autor: Rici134 » 25 listopada 2022, 16:32

Nie ma zmian,

nie było ustawień moda w panelu.W ACP jest możliwość włączania i wyłączania zakładek więc włączyłem ale nie myślałem że się wysypie

Zakładka rozszerzenie zniknęła po aktualizacji bazy do 3.3.8

ODPOWIEDZ

Wróć do „Użytkowanie”