Newer
Older
<?php
function imagecache_render_cron()
{
// Load the view
$view = \Drupal\views\Views::getView('people_directory');
if ($view) {
// Select /people view
$view->setDisplay('page_1');
// Clear the view's cache
$view->storage->invalidateCaches();
// Execute the view and build the render
$view->execute();
$view_build = $view->buildRenderable('page_1', []);
// Render the output
\Drupal::service('renderer')->renderPlain($view_build);
}
}
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
/**
* Add custom image refresh logic.
*
* Use this hook to add extra validation(s) whether to refresh images.
*
* @param $needs_refresh
* Whether to refresh or not
* @param $filepath
* The path is being checked.
*/
function imagecache_render_imagecache_external_needs_refresh_alter(&$needs_refresh, $filepath)
{
// Check if OPIC is live
$domain = "opic.osu.edu";
$port = 80;
$timeout = 5;
$connection = @fsockopen($domain, $port, $errno, $errstr, $timeout);
if (!$connection) {
\Drupal::logger('imagecache_external')->notice('Connection to @domain failed: @error. @filepath will not be refreshed.', [
'@domain' => $domain,
'@error' => $errstr,
'@filepath' => $filepath,
]);
fclose($connection);
return;
}
// Check if the file exists.
// If images are flushed manually, this will force a refresh to prevent broken cached images.
if (!file_exists($filepath)) {
\Drupal::logger('imagecache_external')->notice('Image file @filepath does not exist. Refreshing.', [
'@filepath' => $filepath,
]);
$needs_refresh = TRUE;
return;
}
// Only allow refresh on non-broken images between 3:00 AM and 5:00 AM Eastern
// Helps avoid refreshing a bunch of images when a user access the page (we run a cronjob at 4:00 AM to do this)
date_default_timezone_set('America/New_York');
$current_hour = (int) date('G');
if ($current_hour >= 3 && $current_hour < 5) {
if (filemtime($filepath) < \Drupal::time()->getRequestTime() - 60 * 60 * 24 - (30 * 60)) {
\Drupal::logger('imagecache_external')->notice('@filepath older than 24 hours, refreshing', [
'@filepath' => $filepath,
]);
$needs_refresh = TRUE;
}
}
}