/**
  * 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;
 }
Exemplo n.º 2
0
Arquivo: ext.php Projeto: Galixte/core
 public function __construct(ContainerInterface $container, \phpbb\finder $extension_finder, \phpbb\db\migrator $migrator, $extension_name, $extension_path)
 {
     parent::__construct($container, $extension_finder, $migrator, $extension_name, $extension_path);
     $this->manager = $this->container->get('ext.manager');
     $this->metadata_manager = $this->manager->create_extension_metadata_manager($this->extension_name, $this->container->get('template'));
     // We are maybe not enabled, so we need to create the object ourself
     if ($this->container->has('wolfsblvt.core.requirements_helper')) {
         $this->requirements_helper = $this->container->get('wolfsblvt.core.requirements_helper');
     } else {
         $core = new \wolfsblvt\core\core\core($this->manager, $this->container->get('config'), $this->container->get('dbal.conn'), $this->container->get('request'), $this->container->get('template'), $this->container->get('user'), $this->container->getParameter('core.root_path'), $this->container->getParameter('core.php_ext'));
         $this->requirements_helper = new \wolfsblvt\core\core\requirements_helper($core, $this->manager, $this->container->get('config'), $this->container->get('dbal.conn'), $this->container->get('template'), $this->container->get('user'));
         $this->container->set('wolfsblvt.core.requirements_helper', $this->requirements_helper);
         $this->container->set('wolfsblvt.core.core', $core);
     }
 }
 /**
  * Event: core.acp_manage_forums_display_form
  *
  * @param Event $event
  */
 public function acp_manage_forums_display_form($event)
 {
     $this->user->add_lang_ext('kasimi/movetopicswhenlocked', 'acp_forum_settings');
     $is_edit = $event['action'] == 'edit';
     $forum_data = $event['forum_data'];
     $template_vars = array('MOVE_TOPICS_WHEN_LOCKED_VERSION' => $this->config['kasimi.movetopicswhenlocked.version'], 'S_MOVE_TOPICS' => $is_edit ? $forum_data['move_topics_when_locked'] : false, 'S_MOVE_TOPICS_TO_OPTIONS' => make_forum_select($is_edit ? $forum_data['move_topics_when_locked_to'] : false, false, false, true));
     $topic_solved_extension = $this->user->lang('MOVE_TOPICS_SOLVED_EXTENSION');
     if ($this->extension_manager->is_enabled(self::EXT_TOPIC_SOLVED_NAME)) {
         $metadata = $this->extension_manager->create_extension_metadata_manager(self::EXT_TOPIC_SOLVED_NAME, $this->template)->get_metadata();
         $is_valid_version = phpbb_version_compare($metadata['version'], self::EXT_TOPIC_SOLVED_MIN_VERSION, '>=');
         $template_vars = array_merge($template_vars, array('S_MOVE_TOPICS_SOLVED' => $is_edit ? $forum_data['move_topics_when_locked_solved'] : false, 'MOVE_TOPICS_SOLVED_ENABLED' => $is_valid_version ? $this->user->lang('MOVE_TOPICS_SOLVED_ENABLED', $topic_solved_extension) : false, 'MOVE_TOPICS_SOLVED_VERSION' => $is_valid_version ? false : $this->user->lang('MOVE_TOPICS_SOLVED_VERSION', self::EXT_TOPIC_SOLVED_MIN_VERSION, $topic_solved_extension)));
     } else {
         $template_vars['MOVE_TOPICS_SOLVED_DISABLED'] = $this->user->lang('EXTENSION_DISABLED', $topic_solved_extension);
     }
     $this->template->assign_vars($template_vars);
 }
Exemplo n.º 4
0
 /**
  * Disable all extensions wich are required by the given extension.
  * 
  * @param mixed $extension_name The name of the extension.
  * @return void
  */
 public function disable_requiring_extensions($extension_name)
 {
     $extensions = $this->manager->all_enabled();
     $this->temporary_disabled_extensions[$extension_name] = array();
     foreach ($extensions as $ext_name => $ext_path) {
         if ($this->manager->is_disabled($ext_name)) {
             continue;
         }
         $meta_data = $this->manager->create_extension_metadata_manager($ext_name, $this->template)->get_metadata();
         if (isset($meta_data['require'][$extension_name])) {
             // Save that this extension is disabled
             $this->temporary_disabled_extensions[$extension_name][] = $ext_name;
             $this->manager->disable($ext_name);
         }
     }
     $this->config->set('wolfsblvt.core.temporary_disabled_extensions', json_encode($this->temporary_disabled_extensions));
     // Overwrite success message
     $this->user->add_lang_ext('wolfsblvt/core', 'extensions_override');
 }
Exemplo n.º 5
0
 /**
  * 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)));
     }
 }
Exemplo n.º 6
0
 /**
  * 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)));
     }
 }
Exemplo n.º 7
0
 /**
  * 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);
     }
 }
Exemplo n.º 8
0
 /**
  * Lists all the enabled extensions and dumps to the template
  *
  * @param  $phpbb_extension_manager     An instance of the extension manager
  * @param  $ext_name                    Name of the reenabled extension
  * @return null
  */
 public function list_enabled_exts(\phpbb\extension\manager $phpbb_extension_manager, $ext_name)
 {
     $enabled_extension_meta_data = array();
     foreach ($phpbb_extension_manager->all_enabled() as $name => $location) {
         $md_manager = $phpbb_extension_manager->create_extension_metadata_manager($name, $this->template);
         try {
             $meta = $md_manager->get_metadata('all');
             $enabled_extension_meta_data[$name] = array('META_DISPLAY_NAME' => $md_manager->get_metadata('display-name'), 'META_VERSION' => $meta['version']);
             if ($name == $ext_name) {
                 $enabled_extension_meta_data[$name]['REENABLED'] = true;
             }
             $force_update = $this->request->variable('versioncheck_force', false);
             $updates = $this->version_check($md_manager, $force_update, !$force_update);
             $enabled_extension_meta_data[$name]['S_UP_TO_DATE'] = empty($updates);
             $enabled_extension_meta_data[$name]['S_VERSIONCHECK'] = true;
         } 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) {
             $enabled_extension_meta_data[$name]['S_VERSIONCHECK'] = false;
         }
     }
     uasort($enabled_extension_meta_data, array($this, 'sort_extension_meta_data_table'));
     foreach ($enabled_extension_meta_data as $name => $block_vars) {
         $this->template->assign_block_vars('enabled', $block_vars);
         $this->output_actions('enabled', array('REENABLE' => $this->u_action . '&action=reenable&ext_name=' . urlencode($name), 'REINSTALL' => $this->u_action . '&action=reinstall&ext_name=' . urlencode($name)));
     }
 }