function eme_cleanup_page() { global $wpdb, $eme_timezone; $bookings_table = $wpdb->prefix . BOOKINGS_TBNAME; $events_table = $wpdb->prefix . EVENTS_TBNAME; $recurrence_table = $wpdb->prefix . RECURRENCE_TBNAME; $message = ""; if (current_user_can(get_option('eme_cap_cleanup'))) { // do the actions if required if (isset($_POST['eme_admin_action']) && $_POST['eme_admin_action'] == "eme_cleanup" && isset($_POST['eme_number']) && isset($_POST['eme_period'])) { $eme_number = intval($_POST['eme_number']); $eme_period = $_POST['eme_period']; $eme_date_obj = new ExpressiveDate(null, $eme_timezone); if (!in_array($eme_period, array('day', 'week', 'month'))) { $eme_period = "month"; } switch ($eme_period) { case 'day': $eme_date_obj->minusDays($eme_number); break; case 'week': $eme_date_obj->minusWeeks($eme_number); break; default: $eme_date_obj->minusMonths($eme_number); break; } $end_date = $eme_date_obj->getDate(); $wpdb->query("DELETE FROM {$bookings_table} where event_id in (SELECT event_id from {$events_table} where event_end_date<'{$end_date}')"); $wpdb->query("DELETE FROM {$events_table} where event_end_date<'{$end_date}'"); $wpdb->query("DELETE FROM {$recurrence_table} where recurence_freq <> 'specific' AND recurrence_end_date<'{$end_date}'"); $message = sprintf(__("Cleanup done: events (and corresponding booking data) older than %d %s(s) have been removed.", "eme"), $eme_number, $eme_period); } } eme_cleanup_form($message); }
function eme_create_events_table($charset, $collate) { global $wpdb, $eme_timezone; $db_version = get_option('eme_version'); $table_name = $wpdb->prefix . EVENTS_TBNAME; if ($wpdb->get_var("SHOW TABLES LIKE '{$table_name}'") != $table_name) { // Creating the events table $sql = "CREATE TABLE " . $table_name . " (\n event_id mediumint(9) NOT NULL AUTO_INCREMENT,\n event_status mediumint(9) DEFAULT 1,\n event_author mediumint(9) DEFAULT 0,\n event_name text NOT NULL,\n event_slug text default NULL,\n event_url text default NULL,\n event_start_time time NOT NULL,\n event_end_time time NOT NULL,\n event_start_date date NOT NULL,\n event_end_date date NULL, \n creation_date datetime NOT NULL DEFAULT '0000-00-00 00:00:00', \n creation_date_gmt datetime NOT NULL DEFAULT '0000-00-00 00:00:00', \n modif_date datetime NOT NULL DEFAULT '0000-00-00 00:00:00', \n modif_date_gmt datetime NOT NULL DEFAULT '0000-00-00 00:00:00', \n event_notes longtext DEFAULT NULL,\n event_rsvp bool DEFAULT 0,\n use_paypal bool DEFAULT 0,\n use_2co bool DEFAULT 0,\n use_webmoney bool DEFAULT 0,\n use_fdgg bool DEFAULT 0,\n use_mollie bool DEFAULT 0,\n use_sagepay bool DEFAULT 0,\n price text DEFAULT NULL,\n currency text DEFAULT NULL,\n rsvp_number_days tinyint unsigned DEFAULT 0,\n rsvp_number_hours tinyint unsigned DEFAULT 0,\n event_seats text DEFAULT NULL,\n event_contactperson_id mediumint(9) DEFAULT 0,\n location_id mediumint(9) DEFAULT 0,\n recurrence_id mediumint(9) DEFAULT 0,\n event_category_ids text default NULL,\n event_attributes text NULL, \n event_properties text NULL, \n event_page_title_format text NULL, \n event_single_event_format text NULL, \n event_contactperson_email_body text NULL, \n event_respondent_email_body text NULL, \n event_registration_recorded_ok_html text NULL, \n event_registration_pending_email_body text NULL, \n event_registration_updated_email_body text NULL, \n event_registration_cancelled_email_body text NULL, \n event_registration_denied_email_body text NULL, \n event_registration_form_format text NULL, \n event_cancel_form_format text NULL, \n registration_requires_approval bool DEFAULT 0,\n registration_wp_users_only bool DEFAULT 0,\n event_image_url text NULL,\n event_image_id mediumint(9) DEFAULT 0 NOT NULL,\n event_external_ref text NULL, \n UNIQUE KEY (event_id)\n ) {$charset} {$collate};"; maybe_create_table($table_name, $sql); // insert a few events in the new table // get the current timestamp into an array $eme_date_obj = new ExpressiveDate(null, $eme_timezone); $eme_date_obj->addDays(7); $in_one_week = $eme_date_obj->getDate(); $eme_date_obj->minusDays(7); $eme_date_obj->addWeeks(4); $in_four_weeks = $eme_date_obj->getDate(); $eme_date_obj->minusWeeks(4); $eme_date_obj->addOneYear(); $in_one_year = $eme_date_obj->getDate(); $wpdb->query("INSERT INTO " . $table_name . " (event_name, event_start_date, event_start_time, event_end_time, location_id)\n VALUES ('Orality in James Joyce Conference', '{$in_one_week}', '16:00:00', '18:00:00', 1)"); $wpdb->query("INSERT INTO " . $table_name . " (event_name, event_start_date, event_start_time, event_end_time, location_id)\n VALUES ('Traditional music session', '{$in_four_weeks}', '20:00:00', '22:00:00', 2)"); $wpdb->query("INSERT INTO " . $table_name . " (event_name, event_start_date, event_start_time, event_end_time, location_id)\n VALUES ('6 Nations, Italy VS Ireland', '{$in_one_year}','22:00:00', '24:00:00', 3)"); } else { // eventual maybe_add_column() for later versions maybe_add_column($table_name, 'event_status', "alter table {$table_name} add event_status mediumint(9) DEFAULT 1;"); maybe_add_column($table_name, 'event_start_date', "alter table {$table_name} add event_start_date date NOT NULL;"); maybe_add_column($table_name, 'event_end_date', "alter table {$table_name} add event_end_date date NULL;"); maybe_add_column($table_name, 'event_start_time', "alter table {$table_name} add event_start_time time NOT NULL;"); maybe_add_column($table_name, 'event_end_time', "alter table {$table_name} add event_end_time time NOT NULL;"); maybe_add_column($table_name, 'event_rsvp', "alter table {$table_name} add event_rsvp bool DEFAULT 0;"); maybe_add_column($table_name, 'use_paypal', "alter table {$table_name} add use_paypal bool DEFAULT 0;"); maybe_add_column($table_name, 'use_2co', "alter table {$table_name} add use_2co bool DEFAULT 0;"); maybe_add_column($table_name, 'use_webmoney', "alter table {$table_name} add use_webmoney bool DEFAULT 0;"); maybe_add_column($table_name, 'use_fdgg', "alter table {$table_name} add use_fdgg bool DEFAULT 0;"); maybe_add_column($table_name, 'use_mollie', "alter table {$table_name} add use_mollie bool DEFAULT 0;"); maybe_add_column($table_name, 'use_sagepay', "alter table {$table_name} add use_sagepay bool DEFAULT 0;"); maybe_add_column($table_name, 'rsvp_number_days', "alter table {$table_name} add rsvp_number_days tinyint DEFAULT 0;"); maybe_add_column($table_name, 'rsvp_number_hours', "alter table {$table_name} add rsvp_number_hours tinyint DEFAULT 0;"); maybe_add_column($table_name, 'price', "alter table {$table_name} add price text DEFAULT NULL;"); maybe_add_column($table_name, 'currency', "alter table {$table_name} add currency text DEFAULT NULL;"); maybe_add_column($table_name, 'event_seats', "alter table {$table_name} add event_seats text DEFAULT NULL;"); maybe_add_column($table_name, 'location_id', "alter table {$table_name} add location_id mediumint(9) DEFAULT 0;"); maybe_add_column($table_name, 'recurrence_id', "alter table {$table_name} add recurrence_id mediumint(9) DEFAULT 0;"); maybe_add_column($table_name, 'event_contactperson_id', "alter table {$table_name} add event_contactperson_id mediumint(9) DEFAULT 0;"); maybe_add_column($table_name, 'event_attributes', "alter table {$table_name} add event_attributes text NULL;"); maybe_add_column($table_name, 'event_properties', "alter table {$table_name} add event_properties text NULL;"); maybe_add_column($table_name, 'event_url', "alter table {$table_name} add event_url text DEFAULT NULL;"); maybe_add_column($table_name, 'event_slug', "alter table {$table_name} add event_slug text DEFAULT NULL;"); maybe_add_column($table_name, 'event_category_ids', "alter table {$table_name} add event_category_ids text DEFAULT NULL;"); maybe_add_column($table_name, 'event_page_title_format', "alter table {$table_name} add event_page_title_format text NULL;"); maybe_add_column($table_name, 'event_single_event_format', "alter table {$table_name} add event_single_event_format text NULL;"); maybe_add_column($table_name, 'event_contactperson_email_body', "alter table {$table_name} add event_contactperson_email_body text NULL;"); maybe_add_column($table_name, 'event_respondent_email_body', "alter table {$table_name} add event_respondent_email_body text NULL;"); maybe_add_column($table_name, 'event_registration_pending_email_body', "alter table {$table_name} add event_registration_pending_email_body text NULL;"); maybe_add_column($table_name, 'event_registration_updated_email_body', "alter table {$table_name} add event_registration_updated_email_body text NULL;"); maybe_add_column($table_name, 'event_registration_cancelled_email_body', "alter table {$table_name} add event_registration_cancelled_email_body text NULL;"); maybe_add_column($table_name, 'event_registration_denied_email_body', "alter table {$table_name} add event_registration_denied_email_body text NULL;"); maybe_add_column($table_name, 'event_registration_recorded_ok_html', "alter table {$table_name} add event_registration_recorded_ok_html text NULL;"); maybe_add_column($table_name, 'registration_requires_approval', "alter table {$table_name} add registration_requires_approval bool DEFAULT 0;"); $registration_wp_users_only = get_option('eme_rsvp_registered_users_only'); maybe_add_column($table_name, 'registration_wp_users_only', "alter table {$table_name} add registration_wp_users_only bool DEFAULT {$registration_wp_users_only};"); maybe_add_column($table_name, 'event_author', "alter table {$table_name} add event_author mediumint(9) DEFAULT 0;"); maybe_add_column($table_name, 'creation_date', "alter table {$table_name} add creation_date datetime NOT NULL DEFAULT '0000-00-00 00:00:00';"); maybe_add_column($table_name, 'creation_date_gmt', "alter table {$table_name} add creation_date_gmt datetime NOT NULL DEFAULT '0000-00-00 00:00:00';"); maybe_add_column($table_name, 'modif_date', "alter table {$table_name} add modif_date datetime NOT NULL DEFAULT '0000-00-00 00:00:00';"); maybe_add_column($table_name, 'modif_date_gmt', "alter table {$table_name} add modif_date_gmt datetime NOT NULL DEFAULT '0000-00-00 00:00:00';"); maybe_add_column($table_name, 'event_registration_form_format', "alter table {$table_name} add event_registration_form_format text NULL;"); maybe_add_column($table_name, 'event_cancel_form_format', "alter table {$table_name} add event_cancel_form_format text NULL;"); maybe_add_column($table_name, 'event_image_url', "alter table {$table_name} add event_image_url text NULL;"); maybe_add_column($table_name, 'event_image_id', "alter table {$table_name} add event_image_id mediumint(9) DEFAULT 0 NOT NULL;"); maybe_add_column($table_name, 'event_external_ref', "alter table {$table_name} add event_external_ref text NULL;"); if ($db_version < 3) { $wpdb->query("ALTER TABLE {$table_name} MODIFY event_name text;"); $wpdb->query("ALTER TABLE {$table_name} MODIFY event_notes longtext;"); } if ($db_version < 4) { $wpdb->query("ALTER TABLE {$table_name} CHANGE event_category_id event_category_ids text default NULL;"); $wpdb->query("ALTER TABLE {$table_name} MODIFY event_author mediumint(9) DEFAULT 0;"); $wpdb->query("ALTER TABLE {$table_name} MODIFY event_contactperson_id mediumint(9) DEFAULT 0;"); $wpdb->query("ALTER TABLE {$table_name} MODIFY event_seats mediumint(9) DEFAULT 0;"); $wpdb->query("ALTER TABLE {$table_name} MODIFY location_id mediumint(9) DEFAULT 0;"); $wpdb->query("ALTER TABLE {$table_name} MODIFY recurrence_id mediumint(9) DEFAULT 0;"); $wpdb->query("ALTER TABLE {$table_name} MODIFY event_rsvp bool DEFAULT 0;"); } if ($db_version < 5) { $wpdb->query("ALTER TABLE {$table_name} MODIFY event_rsvp bool DEFAULT 0;"); } if ($db_version < 11) { $wpdb->query("ALTER TABLE {$table_name} DROP COLUMN event_author;"); $wpdb->query("ALTER TABLE {$table_name} CHANGE event_creator_id event_author mediumint(9) DEFAULT 0;"); } if ($db_version < 29) { $wpdb->query("ALTER TABLE {$table_name} MODIFY price text default NULL;"); } if ($db_version < 33) { $post_table_name = $wpdb->prefix . "posts"; $wpdb->query("UPDATE {$table_name} SET event_image_id = (select ID from {$post_table_name} where post_type = 'attachment' AND guid = {$table_name}.event_image_url);"); } if ($db_version < 38) { $wpdb->query("ALTER TABLE {$table_name} MODIFY event_seats text default NULL;"); } if ($db_version < 68) { $wpdb->query("ALTER TABLE {$table_name} MODIFY rsvp_number_days tinyint DEFAULT 0;"); $wpdb->query("ALTER TABLE {$table_name} MODIFY rsvp_number_hours tinyint DEFAULT 0;"); } if ($db_version < 70) { $wpdb->query("ALTER TABLE {$table_name} DROP COLUMN use_google;"); } } }