123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122 |
- <?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;
- }
|