get_module_infos() public method

Get available module information from module files
public get_module_infos ( string $module = '', boolean | string $module_class = false, boolean $use_all_available = false ) : array
$module string
$module_class boolean | string
$use_all_available boolean Use all available instead of just all enabled extensions
return array
Ejemplo n.º 1
0
	/**
	* Populate the module tables
	*/
	function add_modules($mode, $sub)
	{
		global $db, $lang, $phpbb_root_path, $phpEx;

		include_once($phpbb_root_path . 'includes/acp/acp_modules.' . $phpEx);

		$_module = new acp_modules();
		$module_classes = array('acp', 'mcp', 'ucp');

		// Add categories
		foreach ($module_classes as $module_class)
		{
			$categories = array();

			// Set the module class
			$_module->module_class = $module_class;

			foreach ($this->module_categories[$module_class] as $cat_name => $subs)
			{
				$module_data = array(
					'module_basename'	=> '',
					'module_enabled'	=> 1,
					'module_display'	=> 1,
					'parent_id'			=> 0,
					'module_class'		=> $module_class,
					'module_langname'	=> $cat_name,
					'module_mode'		=> '',
					'module_auth'		=> '',
				);

				// Add category
				$_module->update_module_data($module_data, true);

				// Check for last sql error happened
				if ($db->sql_error_triggered)
				{
					$error = $db->sql_error($db->sql_error_sql);
					$this->p_master->db_error($error['message'], $db->sql_error_sql, __LINE__, __FILE__);
				}

				$categories[$cat_name]['id'] = (int) $module_data['module_id'];
				$categories[$cat_name]['parent_id'] = 0;

				// Create sub-categories...
				if (is_array($subs))
				{
					foreach ($subs as $level2_name)
					{
						$module_data = array(
							'module_basename'	=> '',
							'module_enabled'	=> 1,
							'module_display'	=> 1,
							'parent_id'			=> (int) $categories[$cat_name]['id'],
							'module_class'		=> $module_class,
							'module_langname'	=> $level2_name,
							'module_mode'		=> '',
							'module_auth'		=> '',
						);

						$_module->update_module_data($module_data, true);

						// Check for last sql error happened
						if ($db->sql_error_triggered)
						{
							$error = $db->sql_error($db->sql_error_sql);
							$this->p_master->db_error($error['message'], $db->sql_error_sql, __LINE__, __FILE__);
						}

						$categories[$level2_name]['id'] = (int) $module_data['module_id'];
						$categories[$level2_name]['parent_id'] = (int) $categories[$cat_name]['id'];
					}
				}
			}

			// Get the modules we want to add... returned sorted by name
			$module_info = $_module->get_module_infos('', $module_class);

			foreach ($module_info as $module_basename => $fileinfo)
			{
				foreach ($fileinfo['modes'] as $module_mode => $row)
				{
					foreach ($row['cat'] as $cat_name)
					{
						if (!isset($categories[$cat_name]))
						{
							continue;
						}

						$module_data = array(
							'module_basename'	=> $module_basename,
							'module_enabled'	=> 1,
							'module_display'	=> (isset($row['display'])) ? (int) $row['display'] : 1,
							'parent_id'			=> (int) $categories[$cat_name]['id'],
							'module_class'		=> $module_class,
							'module_langname'	=> $row['title'],
							'module_mode'		=> $module_mode,
							'module_auth'		=> $row['auth'],
						);

						$_module->update_module_data($module_data, true);

						// Check for last sql error happened
						if ($db->sql_error_triggered)
						{
							$error = $db->sql_error($db->sql_error_sql);
							$this->p_master->db_error($error['message'], $db->sql_error_sql, __LINE__, __FILE__);
						}
					}
				}
			}

			// Move some of the modules around since the code above will put them in the wrong place
			if ($module_class == 'acp')
			{
				// Move main module 4 up...
				$sql = 'SELECT *
					FROM ' . MODULES_TABLE . "
					WHERE module_basename = 'main'
						AND module_class = 'acp'
						AND module_mode = 'main'";
				$result = $db->sql_query($sql);
				$row = $db->sql_fetchrow($result);
				$db->sql_freeresult($result);

				$_module->move_module_by($row, 'move_up', 4);

				// Move permissions intro screen module 4 up...
				$sql = 'SELECT *
					FROM ' . MODULES_TABLE . "
					WHERE module_basename = 'permissions'
						AND module_class = 'acp'
						AND module_mode = 'intro'";
				$result = $db->sql_query($sql);
				$row = $db->sql_fetchrow($result);
				$db->sql_freeresult($result);

				$_module->move_module_by($row, 'move_up', 4);

				// Move manage users screen module 5 up...
				$sql = 'SELECT *
					FROM ' . MODULES_TABLE . "
					WHERE module_basename = 'users'
						AND module_class = 'acp'
						AND module_mode = 'overview'";
				$result = $db->sql_query($sql);
				$row = $db->sql_fetchrow($result);
				$db->sql_freeresult($result);

				$_module->move_module_by($row, 'move_up', 5);
			}

			if ($module_class == 'ucp')
			{
				// Move attachment module 4 down...
				$sql = 'SELECT *
					FROM ' . MODULES_TABLE . "
					WHERE module_basename = 'attachments'
						AND module_class = 'ucp'
						AND module_mode = 'attachments'";
				$result = $db->sql_query($sql);
				$row = $db->sql_fetchrow($result);
				$db->sql_freeresult($result);

				$_module->move_module_by($row, 'move_down', 4);
			}

			// And now for the special ones
			// (these are modules which appear in multiple categories and thus get added manually to some for more control)
			if (isset($this->module_extras[$module_class]))
			{
				foreach ($this->module_extras[$module_class] as $cat_name => $mods)
				{
					$sql = 'SELECT module_id, left_id, right_id
						FROM ' . MODULES_TABLE . "
						WHERE module_langname = '" . $db->sql_escape($cat_name) . "'
							AND module_class = '" . $db->sql_escape($module_class) . "'";
					$result = $db->sql_query_limit($sql, 1);
					$row2 = $db->sql_fetchrow($result);
					$db->sql_freeresult($result);

					foreach ($mods as $mod_name)
					{
						$sql = 'SELECT *
							FROM ' . MODULES_TABLE . "
							WHERE module_langname = '" . $db->sql_escape($mod_name) . "'
								AND module_class = '" . $db->sql_escape($module_class) . "'
								AND module_basename <> ''";
						$result = $db->sql_query_limit($sql, 1);
						$row = $db->sql_fetchrow($result);
						$db->sql_freeresult($result);

						$module_data = array(
							'module_basename'	=> $row['module_basename'],
							'module_enabled'	=> (int) $row['module_enabled'],
							'module_display'	=> (int) $row['module_display'],
							'parent_id'			=> (int) $row2['module_id'],
							'module_class'		=> $row['module_class'],
							'module_langname'	=> $row['module_langname'],
							'module_mode'		=> $row['module_mode'],
							'module_auth'		=> $row['module_auth'],
						);

						$_module->update_module_data($module_data, true);

						// Check for last sql error happened
						if ($db->sql_error_triggered)
						{
							$error = $db->sql_error($db->sql_error_sql);
							$this->p_master->db_error($error['message'], $db->sql_error_sql, __LINE__, __FILE__);
						}
					}
				}
			}

			$_module->remove_cache_file();
		}
	}
Ejemplo n.º 2
0
 /**
  * Wrapper for \acp_modules::get_module_infos()
  *
  * @param string $class Module Class
  * @param string $basename Module Basename
  * @return array Module Information
  * @throws \src\db\migration\exception
  */
 protected function get_module_info($class, $basename)
 {
     if (!class_exists('acp_modules')) {
         include $this->src_root_path . 'includes/acp/acp_modules.' . $this->php_ext;
         $this->user->add_lang('acp/modules');
     }
     $acp_modules = new \acp_modules();
     $module = $acp_modules->get_module_infos($basename, $class, true);
     if (empty($module)) {
         throw new \src\db\migration\exception('MODULE_INFO_FILE_NOT_EXIST', $class, $basename);
     }
     return array_pop($module);
 }
Ejemplo n.º 3
0
    /**
     * Populate the module tables
     */
    function add_modules($mode, $sub)
    {
        global $db, $lang, $phpbb_root_path, $phpEx, $phpbb_extension_manager, $config, $phpbb_container;
        // modules require an extension manager
        if (empty($phpbb_extension_manager)) {
            $phpbb_extension_manager = $phpbb_container->get('ext.manager');
        }
        include_once $phpbb_root_path . 'includes/acp/acp_modules.' . $phpEx;
        $_module = new acp_modules();
        $module_classes = array('acp', 'mcp', 'ucp');
        // Add categories
        foreach ($module_classes as $module_class) {
            $categories = array();
            // Set the module class
            $_module->module_class = $module_class;
            foreach ($this->module_categories[$module_class] as $cat_name => $subs) {
                $basename = '';
                // Check if this sub-category has a basename. If it has, use it.
                if (isset($this->module_categories_basenames[$cat_name])) {
                    $basename = $this->module_categories_basenames[$cat_name];
                }
                $module_data = array('module_basename' => $basename, 'module_enabled' => 1, 'module_display' => 1, 'parent_id' => 0, 'module_class' => $module_class, 'module_langname' => $cat_name, 'module_mode' => '', 'module_auth' => '');
                // Add category
                $_module->update_module_data($module_data, true);
                // Check for last sql error happened
                if ($db->get_sql_error_triggered()) {
                    $error = $db->sql_error($db->get_sql_error_sql());
                    $this->p_master->db_error($error['message'], $db->get_sql_error_sql(), __LINE__, __FILE__);
                }
                $categories[$cat_name]['id'] = (int) $module_data['module_id'];
                $categories[$cat_name]['parent_id'] = 0;
                // Create sub-categories...
                if (is_array($subs)) {
                    foreach ($subs as $level2_name) {
                        $basename = '';
                        // Check if this sub-category has a basename. If it has, use it.
                        if (isset($this->module_categories_basenames[$level2_name])) {
                            $basename = $this->module_categories_basenames[$level2_name];
                        }
                        $module_data = array('module_basename' => $basename, 'module_enabled' => 1, 'module_display' => 1, 'parent_id' => (int) $categories[$cat_name]['id'], 'module_class' => $module_class, 'module_langname' => $level2_name, 'module_mode' => '', 'module_auth' => '');
                        $_module->update_module_data($module_data, true);
                        // Check for last sql error happened
                        if ($db->get_sql_error_triggered()) {
                            $error = $db->sql_error($db->get_sql_error_sql());
                            $this->p_master->db_error($error['message'], $db->get_sql_error_sql(), __LINE__, __FILE__);
                        }
                        $categories[$level2_name]['id'] = (int) $module_data['module_id'];
                        $categories[$level2_name]['parent_id'] = (int) $categories[$cat_name]['id'];
                    }
                }
            }
            // Get the modules we want to add... returned sorted by name
            $module_info = $_module->get_module_infos('', $module_class);
            foreach ($module_info as $module_basename => $fileinfo) {
                foreach ($fileinfo['modes'] as $module_mode => $row) {
                    foreach ($row['cat'] as $cat_name) {
                        if (!isset($categories[$cat_name])) {
                            continue;
                        }
                        $module_data = array('module_basename' => $module_basename, 'module_enabled' => 1, 'module_display' => isset($row['display']) ? (int) $row['display'] : 1, 'parent_id' => (int) $categories[$cat_name]['id'], 'module_class' => $module_class, 'module_langname' => $row['title'], 'module_mode' => $module_mode, 'module_auth' => $row['auth']);
                        $_module->update_module_data($module_data, true);
                        // Check for last sql error happened
                        if ($db->get_sql_error_triggered()) {
                            $error = $db->sql_error($db->get_sql_error_sql());
                            $this->p_master->db_error($error['message'], $db->get_sql_error_sql(), __LINE__, __FILE__);
                        }
                    }
                }
            }
            // Move some of the modules around since the code above will put them in the wrong place
            if ($module_class == 'acp') {
                // Move main module 4 up...
                $sql = 'SELECT *
					FROM ' . MODULES_TABLE . "\n\t\t\t\t\tWHERE module_basename = 'acp_main'\n\t\t\t\t\t\tAND module_class = 'acp'\n\t\t\t\t\t\tAND module_mode = 'main'";
                $result = $db->sql_query($sql);
                $row = $db->sql_fetchrow($result);
                $db->sql_freeresult($result);
                $_module->move_module_by($row, 'move_up', 4);
                // Move permissions intro screen module 4 up...
                $sql = 'SELECT *
					FROM ' . MODULES_TABLE . "\n\t\t\t\t\tWHERE module_basename = 'acp_permissions'\n\t\t\t\t\t\tAND module_class = 'acp'\n\t\t\t\t\t\tAND module_mode = 'intro'";
                $result = $db->sql_query($sql);
                $row = $db->sql_fetchrow($result);
                $db->sql_freeresult($result);
                $_module->move_module_by($row, 'move_up', 4);
                // Move manage users screen module 5 up...
                $sql = 'SELECT *
					FROM ' . MODULES_TABLE . "\n\t\t\t\t\tWHERE module_basename = 'acp_users'\n\t\t\t\t\t\tAND module_class = 'acp'\n\t\t\t\t\t\tAND module_mode = 'overview'";
                $result = $db->sql_query($sql);
                $row = $db->sql_fetchrow($result);
                $db->sql_freeresult($result);
                $_module->move_module_by($row, 'move_up', 5);
                // Move extension management module 1 up...
                $sql = 'SELECT *
					FROM ' . MODULES_TABLE . "\n\t\t\t\t\tWHERE module_langname = 'ACP_EXTENSION_MANAGEMENT'\n\t\t\t\t\t\tAND module_class = 'acp'\n\t\t\t\t\t\tAND module_mode = ''\n\t\t\t\t\t\tAND module_basename = ''";
                $result = $db->sql_query($sql);
                $row = $db->sql_fetchrow($result);
                $db->sql_freeresult($result);
                $_module->move_module_by($row, 'move_up', 1);
            }
            if ($module_class == 'mcp') {
                // Move pm report details module 3 down...
                $sql = 'SELECT *
					FROM ' . MODULES_TABLE . "\n\t\t\t\t\tWHERE module_basename = 'mcp_pm_reports'\n\t\t\t\t\t\tAND module_class = 'mcp'\n\t\t\t\t\t\tAND module_mode = 'pm_report_details'";
                $result = $db->sql_query($sql);
                $row = $db->sql_fetchrow($result);
                $db->sql_freeresult($result);
                $_module->move_module_by($row, 'move_down', 3);
                // Move closed pm reports module 3 down...
                $sql = 'SELECT *
					FROM ' . MODULES_TABLE . "\n\t\t\t\t\tWHERE module_basename = 'mcp_pm_reports'\n\t\t\t\t\t\tAND module_class = 'mcp'\n\t\t\t\t\t\tAND module_mode = 'pm_reports_closed'";
                $result = $db->sql_query($sql);
                $row = $db->sql_fetchrow($result);
                $db->sql_freeresult($result);
                $_module->move_module_by($row, 'move_down', 3);
                // Move open pm reports module 3 down...
                $sql = 'SELECT *
					FROM ' . MODULES_TABLE . "\n\t\t\t\t\tWHERE module_basename = 'mcp_pm_reports'\n\t\t\t\t\t\tAND module_class = 'mcp'\n\t\t\t\t\t\tAND module_mode = 'pm_reports'";
                $result = $db->sql_query($sql);
                $row = $db->sql_fetchrow($result);
                $db->sql_freeresult($result);
                $_module->move_module_by($row, 'move_down', 3);
            }
            if ($module_class == 'ucp') {
                // Move attachment module 4 down...
                $sql = 'SELECT *
					FROM ' . MODULES_TABLE . "\n\t\t\t\t\tWHERE module_basename = 'ucp_attachments'\n\t\t\t\t\t\tAND module_class = 'ucp'\n\t\t\t\t\t\tAND module_mode = 'attachments'";
                $result = $db->sql_query($sql);
                $row = $db->sql_fetchrow($result);
                $db->sql_freeresult($result);
                $_module->move_module_by($row, 'move_down', 4);
                // Move notification options module 4 down...
                $sql = 'SELECT *
					FROM ' . MODULES_TABLE . "\n\t\t\t\t\tWHERE module_basename = 'ucp_notifications'\n\t\t\t\t\t\tAND module_class = 'ucp'\n\t\t\t\t\t\tAND module_mode = 'notification_options'";
                $result = $db->sql_query($sql);
                $row = $db->sql_fetchrow($result);
                $db->sql_freeresult($result);
                $_module->move_module_by($row, 'move_down', 4);
                // Move OAuth module 5 down...
                $sql = 'SELECT *
					FROM ' . MODULES_TABLE . "\n\t\t\t\t\tWHERE module_basename = 'ucp_auth_link'\n\t\t\t\t\t\tAND module_class = 'ucp'\n\t\t\t\t\t\tAND module_mode = 'auth_link'";
                $result = $db->sql_query($sql);
                $row = $db->sql_fetchrow($result);
                $db->sql_freeresult($result);
                $_module->move_module_by($row, 'move_down', 5);
            }
            // And now for the special ones
            // (these are modules which appear in multiple categories and thus get added manually to some for more control)
            if (isset($this->module_extras[$module_class])) {
                foreach ($this->module_extras[$module_class] as $cat_name => $mods) {
                    $sql = 'SELECT module_id, left_id, right_id
						FROM ' . MODULES_TABLE . "\n\t\t\t\t\t\tWHERE module_langname = '" . $db->sql_escape($cat_name) . "'\n\t\t\t\t\t\t\tAND module_class = '" . $db->sql_escape($module_class) . "'";
                    $result = $db->sql_query_limit($sql, 1);
                    $row2 = $db->sql_fetchrow($result);
                    $db->sql_freeresult($result);
                    foreach ($mods as $mod_name) {
                        $sql = 'SELECT *
							FROM ' . MODULES_TABLE . "\n\t\t\t\t\t\t\tWHERE module_langname = '" . $db->sql_escape($mod_name) . "'\n\t\t\t\t\t\t\t\tAND module_class = '" . $db->sql_escape($module_class) . "'\n\t\t\t\t\t\t\t\tAND module_basename <> ''";
                        $result = $db->sql_query_limit($sql, 1);
                        $row = $db->sql_fetchrow($result);
                        $db->sql_freeresult($result);
                        $module_data = array('module_basename' => $row['module_basename'], 'module_enabled' => (int) $row['module_enabled'], 'module_display' => (int) $row['module_display'], 'parent_id' => (int) $row2['module_id'], 'module_class' => $row['module_class'], 'module_langname' => $row['module_langname'], 'module_mode' => $row['module_mode'], 'module_auth' => $row['module_auth']);
                        $_module->update_module_data($module_data, true);
                        // Check for last sql error happened
                        if ($db->get_sql_error_triggered()) {
                            $error = $db->sql_error($db->get_sql_error_sql());
                            $this->p_master->db_error($error['message'], $db->get_sql_error_sql(), __LINE__, __FILE__);
                        }
                    }
                }
            }
            $_module->remove_cache_file();
        }
    }
Ejemplo n.º 4
0
 /**
  * Populate the module tables
  */
 function add_modules($mode, $sub)
 {
     global $db, $user, $phpbb_root_path, $phpEx;
     if (!class_exists('acp_modules')) {
         require $phpbb_root_path . 'includes/acp/acp_modules.' . $phpEx;
     }
     $_module = new acp_modules();
     if ($this->get_module_id('ACP_GYM_SITEMAPS') > 0) {
         $url_mod = !empty($sub) ? '?mode=' . $mode : '';
         $this->p_master->error(sprintf($user->lang['SEO_ERROR_INSTALLED'], $user->lang['ACP_CAT_PHPBB_SEO']) . '<br /><br />' . sprintf($user->lang['RETURN_PAGE'], '<a href="' . $this->p_master->module_url . $url_mod . '">', '</a>'), '', '', false, $user->lang['SEO_ERROR_INFO']);
     }
     $module_classes = array('acp');
     // Add categories
     foreach ($module_classes as $module_class) {
         $categories = array();
         // Set the module class
         $_module->module_class = $module_class;
         foreach ($this->module_categories[$module_class] as $cat_name => $subs) {
             $module_data = array('module_basename' => '', 'module_enabled' => 1, 'module_display' => 1, 'parent_id' => 0, 'module_class' => $module_class, 'module_langname' => $cat_name, 'module_mode' => '', 'module_auth' => '');
             if ($this->get_module_id('ACP_CAT_PHPBB_SEO') < 1) {
                 // Add category
                 $_module->update_module_data($module_data, true);
             } else {
                 $module_data['module_id'] = $this->check_module_id('ACP_CAT_PHPBB_SEO');
             }
             // Check for last sql error happened
             if ($db->sql_error_triggered) {
                 $error = $db->sql_error($db->sql_error_sql);
                 $this->p_master->db_error($error['message'], $db->sql_error_sql, __LINE__, __FILE__);
             }
             $categories[$cat_name]['id'] = (int) $module_data['module_id'];
             $categories[$cat_name]['parent_id'] = 0;
             // Create sub-categories...
             if (is_array($subs)) {
                 foreach ($subs as $level2_name) {
                     $module_data = array('module_basename' => '', 'module_enabled' => 1, 'module_display' => 1, 'parent_id' => (int) $categories[$cat_name]['id'], 'module_class' => $module_class, 'module_langname' => $level2_name, 'module_mode' => '', 'module_auth' => '');
                     $_module->update_module_data($module_data, true);
                     // Check for last sql error happened
                     if ($db->sql_error_triggered) {
                         $error = $db->sql_error($db->sql_error_sql);
                         $this->p_master->db_error($error['message'], $db->sql_error_sql, __LINE__, __FILE__);
                     }
                     $categories[$level2_name]['id'] = (int) $module_data['module_id'];
                     $categories[$level2_name]['parent_id'] = (int) $categories[$cat_name]['id'];
                 }
             }
         }
         // Get the modules we want to add... returned sorted by name
         $module_info = $_module->get_module_infos('gym_sitemaps', $module_class);
         foreach ($module_info as $module_basename => $fileinfo) {
             foreach ($fileinfo['modes'] as $module_mode => $row) {
                 foreach ($row['cat'] as $cat_name) {
                     if (!isset($categories[$cat_name])) {
                         continue;
                     }
                     $module_data = array('module_basename' => $module_basename, 'module_enabled' => 1, 'module_display' => isset($row['display']) ? (int) $row['display'] : 1, 'parent_id' => (int) $categories[$cat_name]['id'], 'module_class' => $module_class, 'module_langname' => $row['title'], 'module_mode' => $module_mode, 'module_auth' => $row['auth']);
                     $_module->update_module_data($module_data, true);
                     // Check for last sql error happened
                     if ($db->sql_error_triggered) {
                         $error = $db->sql_error($db->sql_error_sql);
                         $this->p_master->db_error($error['message'], $db->sql_error_sql, __LINE__, __FILE__);
                     }
                 }
             }
         }
     }
 }
Ejemplo n.º 5
0
 function add_acp_module(&$module_data)
 {
     global $cache;
     $acp_modules = new acp_modules();
     $acp_modules->module_class = $module_data['module_class'];
     $mod_id = $this->module_exists($module_data['module_langname'], $module_data['parent_id']);
     if (!empty($mod_id)) {
         $module_data['module_id'] = $mod_id;
     }
     // Adjust auth row if not category
     if ($module_data['module_basename'] && $module_data['module_mode']) {
         $fileinfo = $acp_modules->get_module_infos($module_data['module_basename']);
         $module_data['module_auth'] = $fileinfo[$module_data['module_basename']]['modes'][$module_data['module_mode']]['auth'];
     }
     $errors = $acp_modules->update_module_data($module_data, TRUE);
     if (!sizeof($errors)) {
         $acp_modules->remove_cache_file();
     } else {
         trigger_error('Could not add module!<br />' . implode('<br />', $errors));
     }
     $cache->destroy('_modules_');
     $cache->destroy('_sql_', MODULES_TABLE);
     return $module_data['module_id'];
 }