Create New Item
×
Item Type
File
Folder
Item Name
×
Search file in folder and subfolders...
File Manager
/
wp-content
/
plugins
/
woocommerce
/
packages
/
action-scheduler
/
classes
/
schema
Advanced Search
Upload
New Item
Settings
Back
Back Up
Advanced Editor
Save
<?php class ActionScheduler_StoreSchema extends ActionScheduler_Abstract_Schema { const ACTIONS_TABLE = 'actionscheduler_actions'; const CLAIMS_TABLE = 'actionscheduler_claims'; const GROUPS_TABLE = 'actionscheduler_groups'; const DEFAULT_DATE = '0000-00-00 00:00:00'; protected $schema_version = 5; public function __construct() { $this->tables = [self::ACTIONS_TABLE, self::CLAIMS_TABLE, self::GROUPS_TABLE]; } public function init() { add_action('action_scheduler_before_schema_update', array($this, 'update_schema_5_0'), 10, 2); } protected function get_table_definition($table) { global $wpdb; $table_name = $wpdb->{$table}; $charset_collate = $wpdb->get_charset_collate(); $max_index_length = 191; $default_date = self::DEFAULT_DATE; switch ($table) { case self::ACTIONS_TABLE: return "CREATE TABLE {$table_name} (\n\t\t\t\t action_id bigint(20) unsigned NOT NULL auto_increment,\n\t\t\t\t hook varchar(191) NOT NULL,\n\t\t\t\t status varchar(20) NOT NULL,\n\t\t\t\t scheduled_date_gmt datetime NULL default '{$default_date}',\n\t\t\t\t scheduled_date_local datetime NULL default '{$default_date}',\n\t\t\t\t args varchar({$max_index_length}),\n\t\t\t\t schedule longtext,\n\t\t\t\t group_id bigint(20) unsigned NOT NULL default '0',\n\t\t\t\t attempts int(11) NOT NULL default '0',\n\t\t\t\t last_attempt_gmt datetime NULL default '{$default_date}',\n\t\t\t\t last_attempt_local datetime NULL default '{$default_date}',\n\t\t\t\t claim_id bigint(20) unsigned NOT NULL default '0',\n\t\t\t\t extended_args varchar(8000) DEFAULT NULL,\n\t\t\t\t PRIMARY KEY (action_id),\n\t\t\t\t KEY hook (hook({$max_index_length})),\n\t\t\t\t KEY status (status),\n\t\t\t\t KEY scheduled_date_gmt (scheduled_date_gmt),\n\t\t\t\t KEY args (args({$max_index_length})),\n\t\t\t\t KEY group_id (group_id),\n\t\t\t\t KEY last_attempt_gmt (last_attempt_gmt),\n\t\t\t\t KEY claim_id (claim_id),\n\t\t\t\t KEY `claim_id_status_scheduled_date_gmt` (`claim_id`, `status`, `scheduled_date_gmt`)\n\t\t\t\t ) {$charset_collate}"; case self::CLAIMS_TABLE: return "CREATE TABLE {$table_name} (\n\t\t\t\t claim_id bigint(20) unsigned NOT NULL auto_increment,\n\t\t\t\t date_created_gmt datetime NULL default '{$default_date}',\n\t\t\t\t PRIMARY KEY (claim_id),\n\t\t\t\t KEY date_created_gmt (date_created_gmt)\n\t\t\t\t ) {$charset_collate}"; case self::GROUPS_TABLE: return "CREATE TABLE {$table_name} (\n\t\t\t\t group_id bigint(20) unsigned NOT NULL auto_increment,\n\t\t\t\t slug varchar(255) NOT NULL,\n\t\t\t\t PRIMARY KEY (group_id),\n\t\t\t\t KEY slug (slug({$max_index_length}))\n\t\t\t\t ) {$charset_collate}"; default: return ''; } } public function update_schema_5_0($table, $db_version) { global $wpdb; if ('actionscheduler_actions' !== $table || version_compare($db_version, '5', '>=')) { return; } $table_name = $wpdb->prefix . 'actionscheduler_actions'; $table_list = $wpdb->get_col("SHOW TABLES LIKE '{$table_name}'"); $default_date = self::DEFAULT_DATE; if (!empty($table_list)) { $query = "\n\t\t\t\tALTER TABLE {$table_name}\n\t\t\t\tMODIFY COLUMN scheduled_date_gmt datetime NULL default '{$default_date}',\n\t\t\t\tMODIFY COLUMN scheduled_date_local datetime NULL default '{$default_date}',\n\t\t\t\tMODIFY COLUMN last_attempt_gmt datetime NULL default '{$default_date}',\n\t\t\t\tMODIFY COLUMN last_attempt_local datetime NULL default '{$default_date}'\n\t\t"; $wpdb->query($query); } } }