123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405 |
- <?php
- /**
- * @file
- *
- * Installation file for Ultimate Cron
- */
- /**
- * Implements hook_schema().
- */
- function ultimate_cron_schema() {
- $schema = array();
- $schema['ultimate_cron'] = array(
- 'description' => 'Cron job function list',
- 'export' => array(
- 'key' => 'name',
- 'key name' => 'Function name',
- 'primary key' => 'fid',
- 'identifier' => 'name',
- 'default hook' => 'default_ultimate_cron_function',
- 'save callback' => 'ultimate_cron_crud_save',
- 'api' => array(
- 'owner' => 'ultimate_cron',
- 'api' => 'default_ultimate_cron_functions',
- 'minimum_version' => 1,
- 'current_version' => 1,
- ),
- ),
- 'fields' => array(
- 'fid' => array(
- 'description' => 'Function ID',
- 'type' => 'serial',
- 'size' => 'normal',
- 'not null' => TRUE,
- 'no export' => TRUE,
- ),
- 'name' => array(
- 'description' => 'Function name',
- 'type' => 'varchar',
- 'length' => 127,
- 'not null' => TRUE,
- 'default' => '',
- ),
- 'settings' => array(
- 'description' => 'Settings',
- 'type' => 'text',
- 'serialize' => TRUE,
- 'not null' => FALSE,
- ),
- ),
- 'primary key' => array('fid'),
- 'unique keys' => array(
- 'uniq_name' => array('name')
- ),
- );
- $schema['ultimate_cron_log'] = array(
- 'description' => 'Logs',
- 'fields' => array(
- 'lid' => array(
- 'description' => 'Log ID',
- 'type' => 'serial',
- 'size' => 'normal',
- 'not null' => TRUE,
- ),
- 'name' => array(
- 'description' => 'Function name',
- 'type' => 'varchar',
- 'length' => 127,
- 'not null' => TRUE,
- 'default' => '',
- ),
- 'start_stamp' => array(
- 'description' => 'Timstamp of execution start',
- 'type' => 'float',
- 'size' => 'big',
- 'not null' => TRUE,
- 'default' => 0,
- ),
- 'end_stamp' => array(
- 'description' => 'Timstamp of execution end',
- 'type' => 'float',
- 'size' => 'big',
- 'not null' => TRUE,
- 'default' => 0,
- ),
- 'service_host' => array(
- 'description' => 'Service host',
- 'type' => 'varchar',
- 'length' => 127,
- 'not null' => TRUE,
- 'default' => '',
- ),
- 'exec_status' => array(
- 'description' => 'Status of the execution',
- 'type' => 'int',
- 'size' => 'normal',
- 'not null' => FALSE,
- 'default' => NULL,
- ),
- 'severity' => array(
- 'description' => 'Log level severity',
- 'type' => 'int',
- 'size' => 'normal',
- 'not null' => TRUE,
- 'default' => -1,
- ),
- 'msg' => array(
- 'description' => 'Message',
- 'type' => 'text',
- 'not null' => FALSE,
- ),
- ),
- 'primary key' => array('lid'),
- 'indexes' => array(
- 'idx_last' => array('name', 'start_stamp'),
- 'idx_count' => array('name', 'end_stamp'),
- ),
- );
- return $schema;
- }
- /**
- * Implements hook_enable().
- */
- function ultimate_cron_enable() {
- // Disable built-in poor mans cron
- variable_set('cron_safe_threshold', 0);
- }
- /**
- * Implements hook_uninstall().
- */
- function ultimate_cron_uninstall() {
- variable_del('ultimate_cron_simultaneous_connections');
- variable_del('ultimate_cron_rule');
- variable_del('ultimate_cron_cleanup_log');
- variable_del('ultimate_cron_catch_up');
- variable_del('ultimate_cron_queue_polling_latency');
- variable_del('ultimate_cron_queue_lease_time');
- variable_del('ultimate_cron_poorman');
- variable_del('ultimate_cron_launch_window');
- variable_del('ultimate_cron_max_execution_time');
- }
- /**
- * Implements hook_requirements().
- */
- function ultimate_cron_requirements($phase) {
- $response = array();
- switch ($phase) {
- case 'install':
- return $response;
- case 'runtime':
- $t = get_t();
- $response['title'] = 'Ultimate Cron';
- $response['value'] = $t('OK');
- $response['severity'] = REQUIREMENT_OK;
- if ($modules = _ultimate_cron_incompatible_modules()) {
- $response['severity'] = REQUIREMENT_ERROR;
- $response['value'] = $t('Ultimate Cron is DISABLED!');
- $response['description'] = $t('%modules is installed on the system, but is incompatible with Ultimate Cron.<br/>Please disable the modules %modules.<br/>You might want to !url settings first.', array('%modules' => join(', ', $modules), '!url' => l(t('import'), 'admin/settings/cron/import')));
- }
- if (ini_get('safe_mode')) {
- $desc = $t('Safe mode enabled. Ultimate Cron is unable to control maximum execution time for cron jobs. This may cause cron jobs to end prematurely.');
- if ($response['severity'] < REQUIREMENT_WARNING) {
- $response['severity'] = REQUIREMENT_WARNING;
- $response['value'] = $t('Safe mode enabled');
- $response['description'] = $desc;
- }
- else {
- $response['description'] .= '<br/>' . $desc;
- }
- }
- $result = array();
- $result['ultimate_cron'] = $response;
- return $result;
- }
- }
- /**
- * Major version upgrade of Drupal
- */
- function ultimate_cron_update_7000(&$context) {
- $context['sandbox']['major_version_upgrade'] = array(
- 7101 => TRUE,
- 7102 => TRUE,
- 7103 => TRUE,
- 7104 => TRUE,
- 7105 => TRUE,
- 7106 => TRUE,
- 7107 => TRUE,
- 7108 => FALSE,
- );
- }
- /**
- * Move messages to log table.
- */
- function ultimate_cron_update_7101(&$context) {
- if (!empty($context['sandbox']['major_version_upgrade'][7101])) {
- // This udate is already part of latest 6.x
- return;
- }
- $schema_version = (int)(db_query("SELECT schema_version FROM {system} WHERE name = 'ultimate_cron'")->fetchField());
- if ($schema_version >= 7000) {
- // Old hook_update_N was 7000
- return;
- }
- db_add_field('ultimate_cron_log', 'msg', array(
- 'description' => 'Message',
- 'type' => 'text',
- 'not null' => FALSE,
- ));
- db_query("UPDATE {ultimate_cron_log} l JOIN {ultimate_cron_log_message} m ON l.lid = m.lid SET l.msg = m.msg");
- db_drop_table('ultimate_cron_log_message');
- }
- /**
- * Convert polling latenct from microseconds to miliseconds.
- */
- function ultimate_cron_update_7102(&$context) {
- if (!empty($context['sandbox']['major_version_upgrade'][7102])) {
- // This udate is already part of latest 6.x
- return;
- }
- $schema_version = (int)(db_query("SELECT schema_version FROM {system} WHERE name = 'ultimate_cron'")->fetchField());
- if ($schema_version >= 7001) {
- // Old hook_update_N was 7001
- return;
- }
- // Convert polling latency from microseconds to miliseconds.
- $polling_latency = variable_get('ultimate_cron_queue_polling_latency', NULL);
- if ($polling_latency) {
- $polling_latency /= 1000;
- variable_set('ultimate_cron_queue_polling_latency', $polling_latency);
- }
- }
- /**
- * Merge ultimate_cron_function and ultimate_cron_configuration into ultimate_cron
- */
- function ultimate_cron_update_7103(&$context) {
- if (!empty($context['sandbox']['major_version_upgrade'][7103])) {
- // This udate is already part of latest 6.x
- return;
- }
- $schema_version = (int)(db_query("SELECT schema_version FROM {system} WHERE name = 'ultimate_cron'")->fetchField());
- if ($schema_version >= 7002) {
- // Old hook_update_N was 7002
- return;
- }
- $schema = ultimate_cron_schema();
- db_create_table('ultimate_cron', $schema['ultimate_cron']);
- db_query("INSERT INTO {ultimate_cron} SELECT f.fid, f.function, c.configuration AS settings FROM ultimate_cron_function f LEFT JOIN {ultimate_cron_configuration} c ON f.fid = c.fid");
- db_drop_table('ultimate_cron_function');
- db_drop_table('ultimate_cron_configuration');
- }
- /**
- * Switch from fid to function name in ultimate_cron_log
- */
- function ultimate_cron_update_7104(&$context) {
- if (!empty($context['sandbox']['major_version_upgrade'][7104])) {
- // This udate is already part of latest 6.x
- return;
- }
- $schema_version = (int)(db_query("SELECT schema_version FROM {system} WHERE name = 'ultimate_cron'")->fetchField());
- if ($schema_version >= 7003) {
- // Old hook_update_N was 7003
- return;
- }
- db_add_field('ultimate_cron_log', 'function', array(
- 'description' => 'Function name',
- 'type' => 'varchar',
- 'length' => 127,
- 'not null' => TRUE,
- 'default' => '',
- 'initial' => 'function',
- ));
- $fids = db_select('ultimate_cron_log', 'u')->fields('u', array('fid'))->distinct()->execute();
- while ($fid = $fids->fetchObject()) {
- $function = db_select('ultimate_cron', 'u')->fields('u', array('function'))->condition('fid', $fid->fid, '=')->execute()->fetchObject();
- db_update('ultimate_cron_log')->fields(array('function' => $function->function))->condition('fid', $fid->fid, '=')->execute();
- }
- db_drop_field('ultimate_cron_log', 'fid');
- db_drop_index('ultimate_cron_log', 'idx_last');
- db_drop_index('ultimate_cron_log', 'idx_count');
- db_add_index('ultimate_cron_log', 'idx_last', array('function', 'start'));
- db_add_index('ultimate_cron_log', 'idx_count', array('function', 'end'));
- }
- /**
- * Add missing index to database
- */
- function ultimate_cron_update_7105(&$context) {
- if (!empty($context['sandbox']['major_version_upgrade'][7105])) {
- // This udate is already part of latest 6.x
- return;
- }
- $items = db_select('ultimate_cron')
- ->fields('ultimate_cron', array('fid', 'function'))
- ->orderBy('fid', 'ASC')
- ->execute()
- ->fetchAllAssoc('fid', PDO::FETCH_ASSOC);
- $fids = array();
- $keep = array();
- foreach ($items as $item) {
- if (isset($keep[$item['function']])) {
- $fids[] = $keep[$item['function']];
- }
- $keep[$item['function']] = $item['fid'];
- }
- if ($fids) {
- db_delete('ultimate_cron')
- ->condition('fid', $fids)
- ->execute();
- }
- db_add_unique_key('ultimate_cron', 'uniq_function', array('function'));
- }
- /**
- * Change schema to SQL 99 compliance
- */
- function ultimate_cron_update_7106(&$context) {
- if (!empty($context['sandbox']['major_version_upgrade'][7106])) {
- // This udate is already part of latest 6.x
- return;
- }
- db_drop_unique_key('ultimate_cron', 'idx_function');
- db_change_field('ultimate_cron', 'function', 'name', array(
- 'description' => 'Function name',
- 'type' => 'varchar',
- 'length' => 127,
- 'not null' => TRUE,
- 'default' => '',
- ));
- db_add_unique_key('ultimate_cron', 'idx_name', array('name'));
-
- db_change_field('ultimate_cron_log', 'function', 'name', array(
- 'description' => 'Function name',
- 'type' => 'varchar',
- 'length' => 127,
- 'not null' => TRUE,
- 'default' => '',
- ));
- db_change_field('ultimate_cron_log', 'start', 'start_stamp', array(
- 'description' => 'Timstamp of execution start',
- 'type' => 'float',
- 'size' => 'big',
- 'not null' => TRUE,
- 'default' => 0,
- ));
- db_change_field('ultimate_cron_log', 'end', 'end_stamp', array(
- 'description' => 'Timstamp of execution end',
- 'type' => 'float',
- 'size' => 'big',
- 'not null' => TRUE,
- 'default' => 0,
- ));
- db_change_field('ultimate_cron_log', 'status', 'exec_status', array(
- 'description' => 'Status of the execution',
- 'type' => 'int',
- 'size' => 'normal',
- 'not null' => FALSE,
- 'default' => NULL,
- ));
- }
- /**
- * Add service host to log.
- */
- function ultimate_cron_update_7107(&$context) {
- if (!empty($context['sandbox']['major_version_upgrade'][7107])) {
- // This udate is already part of latest 6.x
- return;
- }
- db_add_field('ultimate_cron_log', 'service_host', array(
- 'description' => 'Service host',
- 'type' => 'varchar',
- 'length' => 127,
- 'not null' => TRUE,
- 'default' => '',
- ));
- }
- /**
- * Add severity level to log.
- */
- function ultimate_cron_update_7108(&$context) {
- if (!empty($context['sandbox']['major_version_upgrade'][7108])) {
- // This udate is already part of latest 6.x
- return;
- }
- db_add_field('ultimate_cron_log', 'severity', array(
- 'description' => 'Log level severity',
- 'type' => 'int',
- 'size' => 'normal',
- 'not null' => TRUE,
- 'default' => -1,
- ));
- }
|