示例#1
0
 /**
  * Enable all extensions wich were disabled by the given extension.
  * 
  * @param mixed $extension_name The name of the extension.
  * @return void
  */
 public function enable_disabled_requiring_extensions($extension_name)
 {
     $extensions = isset($this->temporary_disabled_extensions[$extension_name]) ? $this->temporary_disabled_extensions[$extension_name] : array();
     $this->currently_enabling_extension = $extension_name;
     foreach ($extensions as $ext_name) {
         if ($this->manager->is_available($ext_name) && $this->manager->is_disabled($ext_name)) {
             $this->manager->enable($ext_name);
         }
     }
     unset($this->currently_enabling_extension);
     unset($this->temporary_disabled_extensions[$extension_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');
 }
示例#2
0
 /**
  * {@inheritdoc}
  */
 public function run()
 {
     $this->user->session_begin();
     $this->user->setup(array('common', 'acp/common', 'cli'));
     $install_extensions = $this->iohandler->get_input('install-extensions', array());
     $all_available_extensions = $this->extension_manager->all_available();
     $i = $this->install_config->get('install_extensions_index', 0);
     $available_extensions = array_slice($all_available_extensions, $i);
     // Install extensions
     foreach ($available_extensions as $ext_name => $ext_path) {
         if (!empty($install_extensions) && $install_extensions !== ['all'] && !in_array($ext_name, $install_extensions)) {
             continue;
         }
         try {
             $this->extension_manager->enable($ext_name);
             $extensions = $this->get_extensions();
             if (isset($extensions[$ext_name]) && $extensions[$ext_name]['ext_active']) {
                 // Create log
                 $this->log->add('admin', ANONYMOUS, '', 'LOG_EXT_ENABLE', time(), array($ext_name));
                 $this->iohandler->add_success_message(array('CLI_EXTENSION_ENABLE_SUCCESS', $ext_name));
             } else {
                 $this->iohandler->add_log_message(array('CLI_EXTENSION_ENABLE_FAILURE', $ext_name));
             }
         } catch (\Exception $e) {
             // Add fail log and continue
             $this->iohandler->add_log_message(array('CLI_EXTENSION_ENABLE_FAILURE', $ext_name));
         }
         $i++;
         // Stop execution if resource limit is reached
         if ($this->install_config->get_time_remaining() <= 0 || $this->install_config->get_memory_remaining() <= 0) {
             break;
         }
     }
     $this->install_config->set('install_extensions_index', $i);
     if ($i < sizeof($all_available_extensions)) {
         throw new resource_limit_reached_exception();
     }
 }
示例#3
0
 /**
  * {@inheritdoc}
  */
 public function run()
 {
     $this->user->session_begin();
     $this->user->setup(array('common', 'acp/common', 'cli'));
     $update_info = $this->install_config->get('update_info_unprocessed', []);
     $version_from = !empty($update_info) ? $update_info['version']['from'] : $this->config['version_update_from'];
     if (!empty($version_from)) {
         $update_extensions = $this->iohandler->get_input('update-extensions', []);
         // Create list of default extensions that need to be enabled in update
         $default_update_extensions = [];
         foreach (self::$default_extensions_update as $version => $extensions) {
             if ($this->update_helper->phpbb_version_compare($version_from, $version, '<=')) {
                 $default_update_extensions = array_merge($default_update_extensions, $extensions);
             }
         }
         $all_available_extensions = $this->extension_manager->all_available();
         $i = $this->install_config->get('update_extensions_index', 0);
         $available_extensions = array_slice($all_available_extensions, $i);
         // Update available extensions
         foreach ($available_extensions as $ext_name => $ext_path) {
             // Update extensions if:
             //	1) Extension is currently enabled
             //	2) Extension was implicitly defined as needing an update
             //	3) Extension was newly added as default phpBB extension in
             //		this update and should be enabled by default.
             if ($this->extension_manager->is_enabled($ext_name) || in_array($ext_name, $update_extensions) || in_array($ext_name, $default_update_extensions)) {
                 try {
                     $extension_enabled = $this->extension_manager->is_enabled($ext_name);
                     if ($extension_enabled) {
                         $this->extension_manager->disable($ext_name);
                     }
                     $this->extension_manager->enable($ext_name);
                     $extensions = $this->get_extensions();
                     if (isset($extensions[$ext_name]) && $extensions[$ext_name]['ext_active']) {
                         // Create log
                         $this->log->add('admin', ANONYMOUS, '', 'LOG_EXT_UPDATE', time(), array($ext_name));
                         $this->iohandler->add_success_message(array('CLI_EXTENSION_UPDATE_SUCCESS', $ext_name));
                     } else {
                         $this->iohandler->add_log_message('CLI_EXTENSION_UPDATE_FAILURE', array($ext_name));
                     }
                     // Disable extensions if it was disabled by the admin before
                     if (!$extension_enabled && !in_array($ext_name, $default_update_extensions)) {
                         $this->extension_manager->disable($ext_name);
                     }
                 } catch (\Exception $e) {
                     // Add fail log and continue
                     $this->iohandler->add_log_message('CLI_EXTENSION_UPDATE_FAILURE', array($ext_name));
                 }
             }
             $i++;
             // Stop execution if resource limit is reached
             if ($this->install_config->get_time_remaining() <= 0 || $this->install_config->get_memory_remaining() <= 0) {
                 break;
             }
         }
         $this->install_config->set('update_extensions_index', $i);
         if ($i < sizeof($all_available_extensions)) {
             throw new resource_limit_reached_exception();
         }
     }
     $this->config->delete('version_update_from');
     $this->cache->purge();
     $this->config->increment('assets_version', 1);
 }