PHP Classes

File: web/SSO/modules/metarefresh/hooks/hook_cron.php

Recommend this page to a friend!
  Classes of william amed   Raptor 2   web/SSO/modules/metarefresh/hooks/hook_cron.php   Download  
File: web/SSO/modules/metarefresh/hooks/hook_cron.php
Role: Example script
Content type: text/plain
Description: Example script
Class: Raptor 2
Framework that takes routes from annotations
Author: By
Last change:
Date: 8 years ago
Size: 3,164 bytes
 

Contents

Class file image Download
<?php
/**
 * Hook to run a cron job.
 *
 * @param array &$croninfo Output
 */
function metarefresh_hook_cron(&$croninfo) {
   
assert('is_array($croninfo)');
   
assert('array_key_exists("summary", $croninfo)');
   
assert('array_key_exists("tag", $croninfo)');

   
SimpleSAML_Logger::info('cron [metarefresh]: Running cron in cron tag [' . $croninfo['tag'] . '] ');

    try {
       
$config = SimpleSAML_Configuration::getInstance();
       
$mconfig = SimpleSAML_Configuration::getOptionalConfig('config-metarefresh.php');

       
$sets = $mconfig->getConfigList('sets', array());
       
$stateFile = $config->getPathValue('datadir', 'data/') . 'metarefresh-state.php';

        foreach (
$sets AS $setkey => $set) {
           
// Only process sets where cron matches the current cron tag.
           
$cronTags = $set->getArray('cron');
            if (!
in_array($croninfo['tag'], $cronTags)) continue;

           
SimpleSAML_Logger::info('cron [metarefresh]: Executing set [' . $setkey . ']');

           
$expireAfter = $set->getInteger('expireAfter', NULL);
            if (
$expireAfter !== NULL) {
               
$expire = time() + $expireAfter;
            } else {
               
$expire = NULL;
            }

           
$outputDir = $set->getString('outputDir');
           
$outputDir = $config->resolvePath($outputDir);
           
$outputFormat = $set->getValueValidate('outputFormat', array('flatfile', 'serialize'), 'flatfile');

           
$oldMetadataSrc = SimpleSAML_Metadata_MetaDataStorageSource::getSource(array(
               
'type' => $outputFormat,
               
'directory' => $outputDir,
            ));

           
$metaloader = new sspmod_metarefresh_MetaLoader($expire, $stateFile, $oldMetadataSrc);

           
# Get global blacklist, whitelist and caching info
           
$blacklist = $mconfig->getArray('blacklist', array());
           
$whitelist = $mconfig->getArray('whitelist', array());
           
$conditionalGET = $mconfig->getBoolean('conditionalGET', FALSE);

            foreach(
$set->getArray('sources') AS $source) {

               
# Merge global and src specific blacklists
               
if(isset($source['blacklist'])) {
                   
$source['blacklist'] = array_unique(array_merge($source['blacklist'], $blacklist));
                } else {
                   
$source['blacklist'] = $blacklist;
                }

               
# Merge global and src specific whitelists
               
if(isset($source['whitelist'])) {
                   
$source['whitelist'] = array_unique(array_merge($source['whitelist'], $whitelist));
                } else {
                   
$source['whitelist'] = $whitelist;
                }

               
# Let src specific conditionalGET override global one
               
if(!isset($source['conditionalGET'])) {
                   
$source['conditionalGET'] = $conditionalGET;
                }

               
SimpleSAML_Logger::debug('cron [metarefresh]: In set [' . $setkey . '] loading source [' . $source['src'] . ']');
               
$metaloader->loadSource($source);
            }

           
// Write state information back to disk
           
$metaloader->writeState();

            switch (
$outputFormat) {
                case
'flatfile':
                   
$metaloader->writeMetadataFiles($outputDir);
                    break;
                case
'serialize':
                   
$metaloader->writeMetadataSerialize($outputDir);
                    break;
            }

            if (
$set->hasValue('arp')) {
               
$arpconfig = SimpleSAML_Configuration::loadFromArray($set->getValue('arp'));
               
$metaloader->writeARPfile($arpconfig);
            }
        }

    } catch (
Exception $e) {
       
$croninfo['summary'][] = 'Error during metarefresh: ' . $e->getMessage();
    }
}
?>