diff options
Diffstat (limited to 'sites/all/modules/plupload/plupload.install')
-rw-r--r-- | sites/all/modules/plupload/plupload.install | 122 |
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; +} |