44 lines
1.4 KiB
Plaintext
44 lines
1.4 KiB
Plaintext
<?php
|
|
|
|
/**
|
|
* @file
|
|
* Installation for Echo module.
|
|
*/
|
|
|
|
/**
|
|
* Implements hook_requirements().
|
|
*
|
|
* Since the Echo module relies on a working cache implementation, check whether
|
|
* a cache_set() followed immediately by a cache_get() retrieves what it stored.
|
|
*/
|
|
function echo_requirements($phase) {
|
|
$title = 'Echo test';
|
|
$uniqid = uniqid();
|
|
$content = "<div id='$uniqid'>Hello, world!</div>";
|
|
$theme = 'bartik';
|
|
if ($phase == 'runtime') {
|
|
// The echo_themed_page() function should be available at this point.
|
|
$document = new DomDocument();
|
|
$document->loadHTML(echo_themed_page($title, $content, $theme));
|
|
$xpath = new DOMXpath($document);
|
|
$pass = $xpath->query("//div[@id='$uniqid']");
|
|
}
|
|
else {
|
|
$key = sha1($title . $content . $theme);
|
|
// Thirty seconds ought to be enough for anyone.
|
|
$expiration = REQUEST_TIME + max(ini_get('max_execution_time'), 30);
|
|
cache_set($key, $key, 'cache', $expiration);
|
|
sleep(1);
|
|
$cached = cache_get($key);
|
|
$pass = ($cached->data === $key);
|
|
}
|
|
return array(
|
|
'echo' => array(
|
|
'title' => t('Cache system'),
|
|
'description' => t('The <a href="!echo">%echo</a> module requires a working cache system.', array('!echo' => 'http://drupal.org/project/echo', '%echo' => 'Echo')),
|
|
'value' => $pass ? t('Working') : t('Not working'),
|
|
'severity' => $pass ? REQUIREMENT_OK : REQUIREMENT_ERROR,
|
|
),
|
|
);
|
|
}
|