$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 @title 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 PSA-2011-02. 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]; } return NULL; }