/** * Check versions for all extensions and return the ones that need an update * * @param bool $check_disabled * @param bool $check_purged * @param bool $force_update * @return array extension names => version info(new, current) */ public function check_ext_versions($check_disabled = true, $check_purged = true, $force_update = false) { if ($check_disabled && $check_purged) { $extensions = $this->manager->all_available(); } else { if ($check_disabled) { $extensions = $this->manager->all_configured(); } else { if ($check_purged) { $extensions = array_diff($this->manager->all_available(), $this->manager->all_disabled()); } else { $extensions = $this->manager->all_enabled(); } } } $version_info = array(); foreach (array_keys($extensions) as $extname) { try { $md_manager = $this->manager->create_extension_metadata_manager($extname, $this->template); // We only need an update if the version check returns potential updates if ($new_versions = $this->version_check($md_manager, $force_update)) { $curr_version = $md_manager->get_metadata('version'); $version_info[$extname] = array('new' => $new_versions, 'current' => $curr_version); } } catch (\Exception $e) { // TODO: Should we store this information, if there is version check info available? continue; } } return $version_info; }
/** * Lists all the available extensions and dumps to the template * * @param $phpbb_extension_manager An instance of the extension manager * @return null */ public function list_available_exts(\phpbb\extension\manager $phpbb_extension_manager) { $uninstalled = array_diff_key($phpbb_extension_manager->all_available(), $phpbb_extension_manager->all_configured()); $available_extension_meta_data = array(); foreach ($uninstalled as $name => $location) { $md_manager = $phpbb_extension_manager->create_extension_metadata_manager($name, $this->template); try { $meta = $md_manager->get_metadata('all'); $available_extension_meta_data[$name] = array('META_DISPLAY_NAME' => $md_manager->get_metadata('display-name'), 'META_VERSION' => $meta['version']); $force_update = $this->request->variable('versioncheck_force', false); $updates = $this->version_check($md_manager, $force_update, !$force_update); $available_extension_meta_data[$name]['S_UP_TO_DATE'] = empty($updates); $available_extension_meta_data[$name]['S_VERSIONCHECK'] = true; $available_extension_meta_data[$name]['U_VERSIONCHECK_FORCE'] = $this->u_action . '&action=details&versioncheck_force=1&ext_name=' . urlencode($md_manager->get_metadata('name')); } catch (\phpbb\extension\exception $e) { $this->template->assign_block_vars('disabled', array('META_DISPLAY_NAME' => $this->user->lang('EXTENSION_INVALID_LIST', $name, $e), 'S_VERSIONCHECK' => false)); } catch (\RuntimeException $e) { $available_extension_meta_data[$name]['S_VERSIONCHECK'] = false; } } uasort($available_extension_meta_data, array($this, 'sort_extension_meta_data_table')); foreach ($available_extension_meta_data as $name => $block_vars) { $block_vars['U_DETAILS'] = $this->u_action . '&action=details&ext_name=' . urlencode($name); $this->template->assign_block_vars('disabled', $block_vars); $this->output_actions('disabled', array('ENABLE' => $this->u_action . '&action=enable_pre&ext_name=' . urlencode($name))); } }
/** * Lists all the available extensions and dumps to the template * * @param $phpbb_extension_manager An instance of the extension manager * @return null */ public static function list_available_exts(\phpbb\extension\manager $phpbb_extension_manager) { $uninstalled = array_diff_key($phpbb_extension_manager->all_available(), $phpbb_extension_manager->all_configured()); $available_extension_meta_data = array(); foreach ($uninstalled as $name => $location) { $md_manager = $phpbb_extension_manager->create_extension_metadata_manager($name, objects::$template); try { $display_ext_name = $md_manager->get_metadata('display-name'); $meta = $md_manager->get_metadata('all'); $available_extension_meta_data[$name] = array('IS_BROKEN' => false, 'META_DISPLAY_NAME' => $display_ext_name, 'META_NAME' => $name, 'META_VERSION' => $meta['version'], 'U_DELETE' => objects::$u_action . '&action=delete_ext&ext_name=' . urlencode($name), 'U_EXT_NAME' => $name); } catch (\phpbb\extension\exception $e) { $available_extension_meta_data[$name] = array('IS_BROKEN' => true, 'META_DISPLAY_NAME' => isset($display_ext_name) ? $display_ext_name : objects::$user->lang['EXTENSION_BROKEN'] . ' (' . $name . ')', 'META_NAME' => $name, 'META_VERSION' => isset($meta['version']) ? $meta['version'] : '0.0.0', 'U_DELETE' => objects::$u_action . '&action=delete_ext&ext_name=' . urlencode($name), 'U_EXT_NAME' => $name); } } uasort($available_extension_meta_data, array('self', 'sort_extension_meta_data_table')); foreach ($available_extension_meta_data as $name => $block_vars) { if (!$block_vars['IS_BROKEN']) { $block_vars['U_DETAILS'] = objects::$u_action . '&action=details&ext_name=' . urlencode($name); } objects::$template->assign_block_vars('disabled', $block_vars); self::output_actions('disabled', array('ENABLE' => objects::$u_action . '&action=enable_pre&ext_name=' . urlencode($name))); } }
/** * Lists all the available extensions and dumps to the template * * @param $phpbb_extension_manager An instance of the extension manager * @return null */ public function list_available_exts(\phpbb\extension\manager $phpbb_extension_manager) { global $template, $request, $user; $uninstalled = array_diff_key($phpbb_extension_manager->all_available(), $phpbb_extension_manager->all_configured()); $available_extension_meta_data = array(); foreach ($uninstalled as $name => $location) { $md_manager = $phpbb_extension_manager->create_extension_metadata_manager($name, $template); try { $display_ext_name = $md_manager->get_metadata('display-name'); $meta = $md_manager->get_metadata('all'); $available_extension_meta_data[$name] = array('META_DISPLAY_NAME' => $display_ext_name, 'META_VERSION' => $meta['version'], 'U_DELETE' => $this->main_link . '&action=delete&ext_name=' . urlencode($name)); } catch (\phpbb\extension\exception $e) { $available_extension_meta_data[$name] = array('META_DISPLAY_NAME' => isset($display_ext_name) ? $display_ext_name : 'Broken extension (' . $name . ')', 'META_VERSION' => isset($meta['version']) ? $meta['version'] : '0.0.0', 'U_DELETE' => $this->main_link . '&action=delete&ext_name=' . urlencode($name)); } } uasort($available_extension_meta_data, array($this, 'sort_extension_meta_data_table')); foreach ($available_extension_meta_data as $name => $block_vars) { $template->assign_block_vars('disabled', $block_vars); } }