/**
  * 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;
 }
Esempio n. 2
0
 /**
  * Lists all the disabled extensions and dumps to the template
  *
  * @param  $phpbb_extension_manager     An instance of the extension manager
  * @return null
  */
 public static function list_disabled_exts(\phpbb\extension\manager $phpbb_extension_manager)
 {
     $disabled_extension_meta_data = array();
     foreach ($phpbb_extension_manager->all_disabled() as $name => $location) {
         $md_manager = $phpbb_extension_manager->create_extension_metadata_manager($name, objects::$template);
         try {
             $meta = $md_manager->get_metadata('all');
             $disabled_extension_meta_data[$name] = array('META_DISPLAY_NAME' => $md_manager->get_metadata('display-name'), 'META_NAME' => $name, 'META_VERSION' => $meta['version']);
             $force_update = objects::$request->variable('versioncheck_force', false);
             $updates = self::version_check($md_manager, $force_update, !$force_update);
             $disabled_extension_meta_data[$name]['S_UP_TO_DATE'] = empty($updates);
             $disabled_extension_meta_data[$name]['S_VERSIONCHECK'] = true;
             $disabled_extension_meta_data[$name]['U_VERSIONCHECK_FORCE'] = objects::$u_action . '&action=details&versioncheck_force=1&ext_name=' . urlencode($md_manager->get_metadata('name'));
         } catch (\phpbb\extension\exception $e) {
             objects::$template->assign_block_vars('disabled', array('META_DISPLAY_NAME' => objects::$user->lang('EXTENSION_INVALID_LIST', $name, $e), 'META_NAME' => $name, 'S_VERSIONCHECK' => false));
         } catch (\RuntimeException $e) {
             $disabled_extension_meta_data[$name]['S_VERSIONCHECK'] = false;
         }
     }
     uasort($disabled_extension_meta_data, array('self', 'sort_extension_meta_data_table'));
     foreach ($disabled_extension_meta_data as $name => $block_vars) {
         $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&ext_name=' . urlencode($name), 'DELETE_DATA' => objects::$u_action . '&action=delete_data&ext_name=' . urlencode($name)));
     }
 }
Esempio n. 3
0
 /**
  * Lists all the disabled extensions and dumps to the template
  *
  * @param  $phpbb_extension_manager     An instance of the extension manager
  * @return null
  */
 public function list_disabled_exts(\phpbb\extension\manager $phpbb_extension_manager)
 {
     $disabled_extension_meta_data = array();
     foreach ($phpbb_extension_manager->all_disabled() as $name => $location) {
         $md_manager = $phpbb_extension_manager->create_extension_metadata_manager($name, $this->template);
         try {
             $meta = $md_manager->get_metadata('all');
             $disabled_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);
             $disabled_extension_meta_data[$name]['S_UP_TO_DATE'] = empty($updates);
             $disabled_extension_meta_data[$name]['S_VERSIONCHECK'] = true;
             $disabled_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) {
             $message = call_user_func_array(array($this->user, 'lang'), array_merge(array($e->getMessage()), $e->get_parameters()));
             $this->template->assign_block_vars('disabled', array('META_DISPLAY_NAME' => $this->user->lang('EXTENSION_INVALID_LIST', $name, $message), 'S_VERSIONCHECK' => false));
         } catch (\RuntimeException $e) {
             $disabeld_extension_meta_data[$name]['S_VERSIONCHECK'] = false;
         }
     }
     uasort($disabled_extension_meta_data, array($this, 'sort_extension_meta_data_table'));
     foreach ($disabled_extension_meta_data as $name => $block_vars) {
         $block_vars['NAME'] = $name;
         $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), 'DELETE_DATA' => $this->u_action . '&action=delete_data_pre&ext_name=' . urlencode($name)));
     }
 }