aboutsummaryrefslogtreecommitdiffstats
path: root/phpBB/phpbb/install/module/requirements/abstract_requirements_module.php
diff options
context:
space:
mode:
authorTristan Darricau <tristan.darricau@sensiolabs.com>2015-10-19 14:43:48 +0200
committerTristan Darricau <tristan.darricau@sensiolabs.com>2015-10-19 14:43:48 +0200
commit5b3829aab45d4eb53207c1153fc7c71c72f0f83c (patch)
treeceb2251546de94d432fa6160e2e6c80a8a2b50fb /phpBB/phpbb/install/module/requirements/abstract_requirements_module.php
parent9ea44abf38f81c696163f45b074c87175c240b69 (diff)
parentd45f146814a1709a16fb8e4951374242d50b6aed (diff)
downloadforums-5b3829aab45d4eb53207c1153fc7c71c72f0f83c.tar
forums-5b3829aab45d4eb53207c1153fc7c71c72f0f83c.tar.gz
forums-5b3829aab45d4eb53207c1153fc7c71c72f0f83c.tar.bz2
forums-5b3829aab45d4eb53207c1153fc7c71c72f0f83c.tar.xz
forums-5b3829aab45d4eb53207c1153fc7c71c72f0f83c.zip
Merge pull request #3794 from CHItA/ticket/14039
[ticket/14039] Refactoring the updater * CHItA/ticket/14039: [ticket/14039] Use update helper to include files in container factory [ticket/14039] Fix inclusion logic in update helper [ticket/14039] Fix folder creation and deleted binary file issue [ticket/14039] Fix file check for deleted files [ticket/14039] Fix acp link [ticket/14039] Fix ACP link generation [ticket/14039] Fix constants for the updater [ticket/14039] Include phpBB constants on startup [ticket/14039] Fix migrator's language calls [ticket/14039] Fix misunderstandable comment in the archive file updater [ticket/14039] Use shared language service in the container factory [ticket/14039] Fix filesystem file updater's mkdir usage [ticket/14039] Only show log container when it has content [ticket/14039] Use compatibility globals from the update package [ticket/14039] Use http_exception instead of die() [ticket/14039] Fix T_TEMPLATE_PATH constant [ticket/14039] Fix language constants and comments [ticket/14039] Revamp updater
Diffstat (limited to 'phpBB/phpbb/install/module/requirements/abstract_requirements_module.php')
-rw-r--r--phpBB/phpbb/install/module/requirements/abstract_requirements_module.php106
1 files changed, 106 insertions, 0 deletions
diff --git a/phpBB/phpbb/install/module/requirements/abstract_requirements_module.php b/phpBB/phpbb/install/module/requirements/abstract_requirements_module.php
new file mode 100644
index 0000000000..26593e6777
--- /dev/null
+++ b/phpBB/phpbb/install/module/requirements/abstract_requirements_module.php
@@ -0,0 +1,106 @@
+<?php
+/**
+ *
+ * This file is part of the phpBB Forum Software package.
+ *
+ * @copyright (c) phpBB Limited <https://www.phpbb.com>
+ * @license GNU General Public License, version 2 (GPL-2.0)
+ *
+ * For full copyright and license information, please see
+ * the docs/CREDITS.txt file.
+ *
+ */
+
+namespace phpbb\install\module\requirements;
+
+use phpbb\install\exception\resource_limit_reached_exception;
+use phpbb\install\exception\user_interaction_required_exception;
+use phpbb\install\module_base;
+
+/**
+ * Base class for requirements installer module
+ */
+abstract class abstract_requirements_module extends module_base
+{
+ public function run()
+ {
+ $tests_passed = true;
+
+ // Recover install progress
+ $task_name = $this->recover_progress();
+ $task_found = false;
+
+ /**
+ * @var string $name ID of the service
+ * @var \phpbb\install\task_interface $task Task object
+ */
+ foreach ($this->task_collection as $name => $task)
+ {
+ // Run until there are available resources
+ if ($this->install_config->get_time_remaining() <= 0 || $this->install_config->get_memory_remaining() <= 0)
+ {
+ throw new resource_limit_reached_exception();
+ }
+
+ // Skip forward until the next task is reached
+ if (!$task_found)
+ {
+ if ($name === $task_name || empty($task_name))
+ {
+ $task_found = true;
+
+ if ($name === $task_name)
+ {
+ continue;
+ }
+ }
+ else
+ {
+ continue;
+ }
+ }
+
+ // Check if we can run the task
+ if (!$task->is_essential() && !$task->check_requirements())
+ {
+ continue;
+ }
+
+ if ($this->allow_progress_bar)
+ {
+ $this->install_config->increment_current_task_progress();
+ }
+
+ $test_result = $task->run();
+ $tests_passed = ($tests_passed) ? $test_result : false;
+ }
+
+ // Module finished, so clear task progress
+ $this->install_config->set_finished_task('');
+
+ // Check if tests have failed
+ if (!$tests_passed)
+ {
+ // If requirements are not met, exit form installer
+ // Set up UI for retesting
+ $this->iohandler->add_user_form_group('', array(
+ 'install' => array(
+ 'label' => 'RETEST_REQUIREMENTS',
+ 'type' => 'submit',
+ ),
+ ));
+
+ // Send the response and quit
+ $this->iohandler->send_response();
+ throw new user_interaction_required_exception();
+ }
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function get_step_count()
+ {
+ return 0;
+ }
+}