summaryrefslogtreecommitdiff
path: root/sites/all/modules/plupload/plupload.install
diff options
context:
space:
mode:
Diffstat (limited to 'sites/all/modules/plupload/plupload.install')
-rw-r--r--sites/all/modules/plupload/plupload.install122
1 files changed, 122 insertions, 0 deletions
diff --git a/sites/all/modules/plupload/plupload.install b/sites/all/modules/plupload/plupload.install
new file mode 100644
index 000000000..85cddda6a
--- /dev/null
+++ b/sites/all/modules/plupload/plupload.install
@@ -0,0 +1,122 @@
+<?php
+
+/**
+ * @file
+ * Install, update and uninstall functions for the Plupload module.
+ */
+
+/**
+ * Implements hook_requirements().
+ */
+function plupload_requirements($phase) {
+ $requirements = array();
+ $t = get_t();
+
+ if ($phase == 'runtime') {
+ $requirements['plupload'] = array(
+ 'title' => $t('Plupload library'),
+ 'value' => $t('Unknown'),
+ );
+ $requirements['plupload']['severity'] = REQUIREMENT_OK;
+ $libraries = plupload_library();
+ $library = $libraries['plupload'];
+
+ // Check if Plupload library exists. Try to determine it's version
+ // if it does.
+ if (!_plupload_requirements_installed()) {
+ $message = 'The <a href="@url">@title</a> library (version @version or higher) is not installed.';
+ $args = array(
+ '@title' => $library['title'],
+ '@url' => url($library['website']),
+ '@version' => $library['version'],
+ );
+
+ $requirements['plupload']['description'] = $t($message, $args);
+ $requirements['plupload']['severity'] = REQUIREMENT_ERROR;
+ }
+ elseif (($installed_version = _plupload_requirements_version()) === NULL) {
+ $requirements['plupload']['description'] = $t('Plupload version could not be determined.');
+ $requirements['plupload']['severity'] = REQUIREMENT_INFO;
+ }
+ elseif (!version_compare($library['version'], $installed_version, '<=')) {
+ $requirements['plupload']['description'] = $t('Plupload @version or higher is required.', array('@version' => $library['version']));
+ $requirements['plupload']['severity'] = REQUIREMENT_INFO;
+ }
+
+ $requirements['plupload']['value'] = empty($installed_version) ? $t('Not found') : $installed_version;
+
+ if (file_exists(_plupload_library_path() . '/examples/upload.php')) {
+ $requirements['plupload_examples'] = array(
+ 'title' => $t('Plupload example folder'),
+ 'value' => $t('Example folder found'),
+ 'description' => $t('Plupload library contains example files, these could constitute a security risk to your site as per <a href="!url">PSA-2011-02</a>. Please remove the !path folder immediately.', array(
+ '!url' => 'http://drupal.org/node/1189632',
+ '!path' => _plupload_library_path() . '/examples'
+ )),
+ 'severity' => REQUIREMENT_ERROR
+ );
+ }
+ }
+
+ return $requirements;
+}
+
+/**
+ * Checks wether Plupload library exists or not.
+ *
+ * @return boolean
+ * TRUE if plupload library installed, FALSE otherwise.
+ */
+function _plupload_requirements_installed() {
+ $libraries = plupload_library();
+ $library = $libraries['plupload'];
+
+ // We grab the first file and check if it exists.
+ $testfile = key($library['js']);
+ if (!file_exists($testfile)) {
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+/**
+ * Returns the version of the installed plupload library.
+ *
+ * @return string
+ * The version of installed Plupload or NULL if unable to detect version.
+ */
+function _plupload_requirements_version() {
+ $library_path = _plupload_library_path();
+ $jspath = $library_path . '/js/plupload.js';
+
+ // Read contents of Plupload's javascript file.
+ $configcontents = @file_get_contents($jspath);
+ if (!$configcontents) {
+ return NULL;
+ }
+
+ // Search for version string using a regular expression.
+ $matches = array();
+ if (preg_match('#VERSION:\"(\d+[\.\d+]*)\"#', $configcontents, $matches)) {
+ return $matches[1];
+ }
+
+ // After 1.5.8 Plupload stopped adding version string to .js file. Let's check
+ // first line of changelog.txt.
+ $library_path = _plupload_library_path();
+ $clpath = $library_path . '/changelog.txt';
+
+ $configcontents = @file_get_contents($clpath);
+ if (!$configcontents) {
+ return NULL;
+ }
+
+ $lines = explode("\n", $configcontents);
+
+ if (preg_match('#^Version (\d+[\.\d+]*)#', $lines[0], $matches)) {
+ return $matches[1];
+ }
+
+ return NULL;
+}