summaryrefslogtreecommitdiff
path: root/includes/install.inc
diff options
context:
space:
mode:
Diffstat (limited to 'includes/install.inc')
-rw-r--r--includes/install.inc81
1 files changed, 75 insertions, 6 deletions
diff --git a/includes/install.inc b/includes/install.inc
index 9b19cf665..1c0608a63 100644
--- a/includes/install.inc
+++ b/includes/install.inc
@@ -4,11 +4,9 @@
define('SCHEMA_UNINSTALLED', -1);
define('SCHEMA_INSTALLED', 0);
-define('DRUPAL_MINIMUM_PHP', '4.3.3');
-define('DRUPAL_MINIMUM_MEMORY', '8M');
-define('DRUPAL_MINIMUM_MYSQL', '3.23.17'); // If using MySQL
-define('DRUPAL_MINIMUM_PGSQL', '7.3'); // If using PostgreSQL
-define('DRUPAL_MINIMUM_APACHE', '1.3'); // If using Apache
+define('REQUIREMENT_OK', 0);
+define('REQUIREMENT_WARNING', 1);
+define('REQUIREMENT_ERROR', 2);
define('FILE_EXIST', 1);
define('FILE_READABLE', 2);
@@ -128,7 +126,7 @@ function drupal_detect_baseurl($file = 'install.php') {
$proto = $_SERVER['HTTPS'] ? 'https://' : 'http://';
$host = $_SERVER['SERVER_NAME'];
$port = ($_SERVER['SERVER_PORT'] == 80 ? '' : ':'. $_SERVER['SERVER_PORT']);
- $uri = str_replace("?profile=$profile", '', $_SERVER['REQUEST_URI']);
+ $uri = preg_replace("/\?.*/", '', $_SERVER['REQUEST_URI']);
$dir = str_replace("/$file", '', $uri);
return "$proto$host$port$dir";
@@ -602,3 +600,74 @@ function _st(&$value, $key) {
case '!':
}
}
+
+
+/**
+ * Check a profile's requirements.
+ *
+ * @param profile
+ * Name of profile to check.
+ */
+function drupal_check_profile($profile) {
+ include_once './includes/file.inc';
+
+ $profile_file = "./profiles/$profile/$profile.profile";
+
+ if (!isset($profile) || !file_exists($profile_file)) {
+ install_no_profile_error();
+ }
+
+ require_once($profile_file);
+
+ // Get a list of modules required by this profile.
+ $function = $profile .'_profile_modules';
+ $module_list = array_unique(array_merge(array('system'), $function()));
+
+ // Get a list of all .install files.
+ $installs = drupal_get_install_files($module_list);
+
+ // Collect requirement testing results
+ $requirements = array();
+ foreach ($installs as $install) {
+ require_once $install->filename;
+ $requirements = array_merge($requirements, module_invoke($install->name, 'requirements', 'install'));
+ }
+ return $requirements;
+}
+
+/**
+ * Extract highest severity from requirements array.
+ */
+function drupal_requirements_severity(&$requirements) {
+ $severity = REQUIREMENT_OK;
+ foreach ($requirements as $requirement) {
+ if (isset($requirement['severity'])) {
+ $severity = max($severity, $requirement['severity']);
+ }
+ }
+ return $severity;
+}
+
+/**
+ * Check a module's requirements.
+ */
+function drupal_check_module($module) {
+ // Include install file
+ $install = drupal_get_install_files(array($module));
+ if (isset($install[$module])) {
+ require_once $install[$module]->filename;
+
+ // Check requirements
+ $requirements = module_invoke($module, 'requirements', 'install');
+ if (is_array($requirements) && drupal_requirements_severity($requirements) == REQUIREMENT_ERROR) {
+ // Print any error messages
+ foreach ($requirements as $requirement) {
+ if (isset($requirement['severity']) && $requirement['severity'] == REQUIREMENT_ERROR) {
+ drupal_set_message($requirement['description'] .' ('. t('Currently using !item !version', array('!item' => $requirement['title'], '!version' => $requirement['value'])) .')', 'error');
+ }
+ }
+ return FALSE;
+ }
+ }
+ return TRUE;
+}