| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 | <?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];  }  return NULL;}
 |