public function can_migrate_from_version($version_array) { $core_version_string = $version_array['Core']; $calendar_version_string = isset($version_array['Calendar']) ? $version_array['Calendar'] : '0.0.0'; //find if the ee3 table for calendar data exists or not if (!EEH_Activation::table_exists("events_category_detail")) { //ee3 category tables don't exist still $an_ee3_table_exists = false; } else { $an_ee3_table_exists = true; } if (get_option('ee_data_migration_script_Core.4.1.0')) { $core_4_1_0_migrations_ran = true; } else { $core_4_1_0_migrations_ran = false; } if ($core_version_string >= '4.1.0' && $calendar_version_string < '3.0.0' && $an_ee3_table_exists && $core_4_1_0_migrations_ran) { return true; } else { //migration doesnt' apply. //eg they installed ee4.1.0 and then activated calendar, but no previous version of ee3 //or they installed ee3, then ee4.1, but deleted their ee3 tables, then activated teh calendar return false; } }
protected function _migrate_old_row($old_row) { //foreach ticket row we add the id for the current logged in user. global $wpdb; $user_id = EEH_Activation::get_default_creator_id(); $updated = $wpdb->update($this->_old_table, array('PRC_wp_user' => $user_id), array('PRC_ID' => $old_row['PRC_ID']), array('%d'), array('%d')); if (FALSE === $updated) { $this->add_error(sprintf(__("Error in updating table {$this->_old_table} setting PRC_wp_user = %d where PRC_ID = %d", 'event_espresso'), $user_id, $old_row['PRC_ID'])); } }
/** * OK's the creation of the esp_new_addon table, because this hooks in AFTER EE_UNitTestCase's callback on this same hook * @global type $wpdb * @param array $whitelisted_tables * @return array */ public function dont_short_circuit_new_addon_table($short_circuit = FALSE, $table_name = '', $create_sql = '') { if (in_array($table_name, array('esp_new_addon_thing', 'esp_new_addon_attendee_meta')) && !EEH_Activation::table_exists($table_name)) { // echo "\r\n\r\nDONT shortcircuit $sql"; //it's not altering. it's ok to allow this return FALSE; } else { // echo "3\r\n\r\nshort circuit:$sql"; return $short_circuit; } }
/** * @param array $version_array * @return bool */ public function can_migrate_from_version($version_array) { $version_string = $version_array['Core']; if ($version_string <= '4.7.0' && $version_string >= '4.6.0' || $version_string >= '4.7.0' && !EEH_Activation::table_exists('esp_registration_payment') && EEH_Activation::table_exists('esp_registration')) { return true; } elseif (!$version_string) { //no version string provided... this must be pre 4.3 return false; //changed mind. dont want people thinking they should migrate yet because they cant } else { return false; } }
/** * Checks that there is at least one active gateway. If not, add a notice */ public function check_payment_gateway_setup() { //ONLY do this check if models can query //and avoid a bug where when we nuke EE4's data that this causes a fatal error //because the tables are deleted just before this request runs. see https://events.codebasehq.com/projects/event-espresso/tickets/7539 if (!EE_Maintenance_Mode::instance()->models_can_query() || !EEH_Activation::table_exists(EEM_Payment_Method::instance()->table())) { return; } // ensure Payment_Method model is loaded EE_Registry::instance()->load_model('Payment_Method'); $actives = EEM_Payment_Method::instance()->count_active(EEM_Payment_Method::scope_cart); if ($actives < 1) { $url = EE_Admin_Page::add_query_args_and_nonce(array(), EE_PAYMENTS_ADMIN_URL); echo '<div class="error"> <p>' . sprintf(__("There are no Active Payment Methods setup for Event Espresso. Please %s activate at least one.%s", "event_espresso"), "<a href='{$url}'>", "</a>") . '</p> </div>'; } }
/** * Upon brand-new activation, if this is a new activation of CAF, we want to add * some global prices that will show off EE4's capabilities. However, if they're upgrading * from 3.1, or simply EE4.x decaf, we assume they don't want us to suddenly introduce these extra prices. * This action should only be called when EE 4.x.0.P is initially activated. * Right now the only CAF content are these global prices. If there's more in the future, then * we should probably create a caf file to contain it all instead just a function like this. * Right now, we ASSUME the only price types in the system are default ones * @global type $wpdb */ function initialize_caf_db_content() { // echo "initialize caf db content!"; global $wpdb; //use same method of getting creator id as the version introducing the change $default_creator_id = apply_filters('FHEE__EE_DMS_Core_4_5_0__get_default_creator_id', get_current_user_id()); $price_type_table = $wpdb->prefix . "esp_price_type"; $price_table = $wpdb->prefix . "esp_price"; if (EEH_Activation::table_exists($price_type_table)) { $SQL = 'SELECT COUNT(PRT_ID) FROM ' . $price_type_table . ' WHERE PBT_ID=4'; //include trashed price types $tax_price_type_count = $wpdb->get_var($SQL); if ($tax_price_type_count <= 1) { $result = $wpdb->insert($price_type_table, array('PRT_name' => __("Regional Tax", "event_espresso"), 'PBT_ID' => 4, 'PRT_is_percent' => true, 'PRT_order' => 60, 'PRT_deleted' => false, 'PRT_wp_user' => $default_creator_id), array('%s', '%d', '%d', '%d', '%d', '%d')); //federal tax $result = $wpdb->insert($price_type_table, array('PRT_name' => __("Federal Tax", "event_espresso"), 'PBT_ID' => 4, 'PRT_is_percent' => true, 'PRT_order' => 70, 'PRT_deleted' => false, 'PRT_wp_user' => $default_creator_id), array('%s', '%d', '%d', '%d', '%d', '%d')); if ($result) { $wpdb->insert($price_table, array('PRT_ID' => $wpdb->insert_id, 'PRC_amount' => 15.0, 'PRC_name' => __("Sales Tax", "event_espresso"), 'PRC_desc' => '', 'PRC_is_default' => true, 'PRC_overrides' => NULL, 'PRC_deleted' => false, 'PRC_order' => 50, 'PRC_parent' => null, 'PRC_wp_user' => $default_creator_id), array('%d', '%f', '%s', '%s', '%d', '%d', '%d', '%d', '%d', '%d')); } } } }
public function schema_changes_before_migration() { //relies on 4.1's EEH_Activation::create_table require_once EE_HELPERS . 'EEH_Activation.helper.php'; $table_name = 'esp_answer'; $sql = " ANS_ID INT UNSIGNED NOT NULL AUTO_INCREMENT,\n\t\t\t\t\tREG_ID INT UNSIGNED NOT NULL,\n\t\t\t\t\tQST_ID INT UNSIGNED NOT NULL,\n\t\t\t\t\tANS_value TEXT NOT NULL,\n\t\t\t\t\tPRIMARY KEY (ANS_ID)"; $this->_table_should_exist_previously($table_name, $sql, 'ENGINE=InnoDB'); $table_name = 'esp_attendee_meta'; $sql = "ATTM_ID INT(10) UNSIGNED NOT\tNULL AUTO_INCREMENT,\n\t\t\t\t\t\tATT_ID BIGINT(20) UNSIGNED NOT NULL,\n\t\t\t\t\t\tATT_fname VARCHAR(45) NOT NULL,\n\t\t\t\t\t\tATT_lname VARCHAR(45) NOT\tNULL,\n\t\t\t\t\t\tATT_address VARCHAR(255) DEFAULT\tNULL,\n\t\t\t\t\t\tATT_address2 VARCHAR(255) DEFAULT\tNULL,\n\t\t\t\t\t\tATT_city VARCHAR(45) DEFAULT\tNULL,\n\t\t\t\t\t\tSTA_ID INT(10) DEFAULT\tNULL,\n\t\t\t\t\t\tCNT_ISO VARCHAR(45) DEFAULT\tNULL,\n\t\t\t\t\t\tATT_zip VARCHAR(12) DEFAULT\tNULL,\n\t\t\t\t\t\tATT_email VARCHAR(255) NOT NULL,\n\t\t\t\t\t\tATT_phone VARCHAR(45) DEFAULT NULL,\n\t\t\t\t\t\t\tPRIMARY KEY (ATTM_ID),\n\t\t\t\t\t\t\t\tKEY ATT_fname (ATT_fname),\n\t\t\t\t\t\t\t\tKEY ATT_lname (ATT_lname),\n\t\t\t\t\t\t\t\tKEY ATT_email (ATT_email)"; $this->_table_should_exist_previously($table_name, $sql, 'ENGINE=InnoDB '); $table_name = 'esp_country'; $sql = "CNT_ISO VARCHAR(2) COLLATE utf8_bin NOT NULL,\n\t\t\t\t\t CNT_ISO3 VARCHAR(3) COLLATE utf8_bin NOT NULL,\n\t\t\t\t\t RGN_ID TINYINT(3) UNSIGNED DEFAULT NULL,\n\t\t\t\t\t CNT_name VARCHAR(45) COLLATE utf8_bin NOT NULL,\n\t\t\t\t\t CNT_cur_code VARCHAR(6) COLLATE utf8_bin DEFAULT 'USD',\n\t\t\t\t\t CNT_cur_single VARCHAR(45) COLLATE utf8_bin DEFAULT 'dollar',\n\t\t\t\t\t CNT_cur_plural VARCHAR(45) COLLATE utf8_bin DEFAULT 'dollars',\n\t\t\t\t\t CNT_cur_sign VARCHAR(45) COLLATE utf8_bin DEFAULT '\$',\n\t\t\t\t\t CNT_cur_sign_b4 TINYINT(1) DEFAULT '1',\n\t\t\t\t\t CNT_cur_dec_plc TINYINT(3) UNSIGNED NOT NULL DEFAULT '2',\n\t\t\t\t\t CNT_cur_dec_mrk VARCHAR(1) COLLATE utf8_bin NOT NULL DEFAULT '.',\n\t\t\t\t\t CNT_cur_thsnds VARCHAR(1) COLLATE utf8_bin NOT NULL DEFAULT ',',\n\t\t\t\t\t CNT_tel_code VARCHAR(12) COLLATE utf8_bin DEFAULT NULL,\n\t\t\t\t\t CNT_is_EU TINYINT(1) DEFAULT '0',\n\t\t\t\t\t CNT_active TINYINT(1) DEFAULT '0',\n\t\t\t\t\t PRIMARY KEY (CNT_ISO)"; $this->_table_should_exist_previously($table_name, $sql, 'ENGINE=InnoDB'); $table_name = 'esp_datetime'; $sql = "DTT_ID INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,\n\t\t\t\t EVT_ID BIGINT(20) UNSIGNED NOT NULL,\n\t\t\t\t DTT_name VARCHAR(255) NOT NULL DEFAULT '',\n\t\t\t\t DTT_description TEXT NOT NULL,\n\t\t\t\t DTT_EVT_start DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',\n\t\t\t\t DTT_EVT_end DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',\n\t\t\t\t DTT_reg_limit MEDIUMINT(8) DEFAULT -1,\n\t\t\t\t DTT_sold MEDIUMINT(8) UNSIGNED DEFAULT 0,\n\t\t\t\t DTT_is_primary TINYINT(1) UNSIGNED NOT NULL DEFAULT 0,\n\t\t\t\t DTT_order MEDIUMINT(3) UNSIGNED DEFAULT 0,\n\t\t\t\t DTT_parent INT(10) UNSIGNED DEFAULT 0,\n\t\t\t\t DTT_deleted TINYINT(1) UNSIGNED NOT NULL DEFAULT 0,\n\t\t\t\t\t\tPRIMARY KEY (DTT_ID),\n\t\t\t\t\t\tKEY EVT_ID (EVT_ID),\n\t\t\t\t\t\tKEY DTT_is_primary (DTT_is_primary)"; $this->_table_should_exist_previously($table_name, $sql, 'ENGINE=InnoDB'); $table_name = 'esp_event_meta'; $sql = "\n\t\t\tEVTM_ID INT NOT NULL AUTO_INCREMENT,\n\t\t\tEVT_ID BIGINT(20) UNSIGNED NOT NULL,\n\t\t\tEVT_display_desc TINYINT(1) UNSIGNED NOT NULL DEFAULT 1,\n\t\t\tEVT_display_ticket_selector TINYINT(1) UNSIGNED NOT NULL DEFAULT 1,\n\t\t\tEVT_visible_on DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',\n\t\t\tEVT_default_registration_status VARCHAR(3),\n\t\t\tEVT_phone VARCHAR(45) DEFAULT NULL,\n\t\t\tEVT_additional_limit TINYINT UNSIGNED NULL,\n\t\t\tEVT_member_only TINYINT(1) UNSIGNED NOT NULL DEFAULT 0,\n\t\t\tEVT_allow_overflow TINYINT(1) UNSIGNED NOT NULL DEFAULT 0,\n\t\t\tEVT_timezone_string VARCHAR(45) NULL,\n\t\t\tEVT_external_URL VARCHAR(200) NULL,\n\t\t\tEVT_donations TINYINT(1) NULL,\n\t\t\tPRIMARY KEY (EVTM_ID)"; $this->_table_should_exist_previously($table_name, $sql, 'ENGINE=InnoDB'); $table_name = 'esp_event_question_group'; $sql = "EQG_ID INT UNSIGNED NOT NULL AUTO_INCREMENT,\n\t\t\t\t\tEVT_ID BIGINT(20) UNSIGNED NOT NULL,\n\t\t\t\t\tQSG_ID INT UNSIGNED NOT NULL,\n\t\t\t\t\tEQG_primary TINYINT(1) UNSIGNED NOT NULL DEFAULT 0,\n\t\t\t\t\tPRIMARY KEY (EQG_ID)"; $this->_table_should_exist_previously($table_name, $sql, 'ENGINE=InnoDB'); $table_name = 'esp_event_venue'; $sql = "EVV_ID INT(11) NOT NULL AUTO_INCREMENT,\n\t\t\t\tEVT_ID BIGINT(20) UNSIGNED NOT NULL,\n\t\t\t\tVNU_ID BIGINT(20) UNSIGNED NOT NULL,\n\t\t\t\tEVV_primary TINYINT(1) UNSIGNED NOT NULL DEFAULT 0,\n\t\t\t\tPRIMARY KEY (EVV_ID)"; $this->_table_should_exist_previously($table_name, $sql, 'ENGINE=InnoDB'); $table_name = 'esp_extra_meta'; $sql = "EXM_ID INT(11) NOT NULL AUTO_INCREMENT,\n\t\t\t\tOBJ_ID INT(11) DEFAULT NULL,\n\t\t\t\tEXM_type VARCHAR(45) DEFAULT NULL,\n\t\t\t\tEXM_key VARCHAR(45) DEFAULT NULL,\n\t\t\t\tEXM_value TEXT,\n\t\t\t\tPRIMARY KEY (EXM_ID)"; $this->_table_should_exist_previously($table_name, $sql, 'ENGINE=InnoDB'); $table_name = 'esp_line_item'; $sql = "LIN_ID INT(11) NOT NULL AUTO_INCREMENT,\n\t\t\t\tLIN_code VARCHAR(245) NOT NULL DEFAULT '',\n\t\t\t\tTXN_ID INT(11) DEFAULT NULL,\n\t\t\t\tLIN_name VARCHAR(245) NOT NULL DEFAULT '',\n\t\t\t\tLIN_desc VARCHAR(245) DEFAULT NULL,\n\t\t\t\tLIN_unit_price DECIMAL(10,3) DEFAULT NULL,\n\t\t\t\tLIN_percent DECIMAL(10,3) DEFAULT NULL,\n\t\t\t\tLIN_is_taxable TINYINT(1) DEFAULT 0,\n\t\t\t\tLIN_order int DEFAULT 0,\n\t\t\t\tLIN_parent int DEFAULT 0,\n\t\t\t\tLIN_type VARCHAR(25) NOT NULL,\n\t\t\t\tLIN_total DECIMAL(10,3) DEFAULT NULL,\n\t\t\t\tLIN_quantity INT(10) DEFAULT NULL,\n\t\t\t\tOBJ_ID INT(11) DEFAULT NULL,\n\t\t\t\tOBJ_type VARCHAR(45)DEFAULT NULL,\n\t\t\t\tPRIMARY KEY (LIN_ID)"; $this->_table_should_exist_previously($table_name, $sql, 'ENGINE=InnoDB'); $table_name = 'esp_message_template'; $sql = "MTP_ID INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,\n\t\t\t\t\tGRP_ID INT(10) UNSIGNED NOT NULL,\n\t\t\t\t\tMTP_context VARCHAR(50) NOT NULL,\n\t\t\t\t\tMTP_template_field VARCHAR(30) NOT NULL,\n\t\t\t\t\tMTP_content TEXT NOT NULL,\n\t\t\t\t\tPRIMARY KEY (MTP_ID),\n\t\t\t\t\tKEY GRP_ID (GRP_ID)"; $this->_table_should_exist_previously($table_name, $sql, 'ENGINE=InnoDB'); $table_name = 'esp_message_template_group'; $sql = "GRP_ID INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,\n\t\t\t\t\tEVT_ID BIGINT(20) UNSIGNED DEFAULT NULL,\n\t\t\t\t\tMTP_user_id INT(10) NOT NULL DEFAULT '1',\n\t\t\t\t\tMTP_messenger VARCHAR(30) NOT NULL,\n\t\t\t\t\tMTP_message_type VARCHAR(50) NOT NULL,\n\t\t\t\t\tMTP_is_global TINYINT(1) NOT NULL DEFAULT '0',\n\t\t\t\t\tMTP_is_override TINYINT(1) NOT NULL DEFAULT '0',\n\t\t\t\t\tMTP_deleted TINYINT(1) NOT NULL DEFAULT '0',\n\t\t\t\t\tMTP_is_active TINYINT(1) NOT NULL DEFAULT '1',\n\t\t\t\t\tPRIMARY KEY (GRP_ID),\n\t\t\t\t\tKEY EVT_ID (EVT_ID),\n\t\t\t\t\tKEY MTP_user_id (MTP_user_id)"; $this->_table_should_exist_previously($table_name, $sql, 'ENGINE=InnoDB'); $table_name = 'esp_payment'; $sql = "PAY_ID INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,\n\t\t\t\t\tTXN_ID INT(10) UNSIGNED DEFAULT NULL,\n\t\t\t\t\tSTS_ID VARCHAR(3) COLLATE utf8_bin DEFAULT NULL,\n\t\t\t\t\tPAY_timestamp DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',\n\t\t\t\t\tPAY_method VARCHAR(45) COLLATE utf8_bin DEFAULT NULL,\n\t\t\t\t\tPAY_amount DECIMAL(10,3) DEFAULT NULL,\n\t\t\t\t\tPAY_gateway VARCHAR(32) COLLATE utf8_bin DEFAULT NULL,\n\t\t\t\t\tPAY_gateway_response TEXT COLLATE utf8_bin,\n\t\t\t\t\tPAY_txn_id_chq_nmbr VARCHAR(32) COLLATE utf8_bin DEFAULT NULL,\n\t\t\t\t\tPAY_po_number VARCHAR(32) COLLATE utf8_bin DEFAULT NULL,\n\t\t\t\t\tPAY_extra_accntng VARCHAR(45) COLLATE utf8_bin DEFAULT NULL,\n\t\t\t\t\tPAY_via_admin TINYINT(1) NOT NULL DEFAULT '0',\n\t\t\t\t\tPAY_details TEXT COLLATE utf8_bin,\n\t\t\t\t\tPRIMARY KEY (PAY_ID),\n\t\t\t\t\tKEY TXN_ID (TXN_ID),\n\t\t\t\t\tKEY PAY_timestamp (PAY_timestamp)"; $this->_table_should_exist_previously($table_name, $sql, 'ENGINE=InnoDB '); $table_name = "esp_ticket"; $sql = "TKT_ID INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,\n\t\t\t\t\t TTM_ID INT(10) UNSIGNED NOT NULL,\n\t\t\t\t\t TKT_name VARCHAR(245) NOT NULL DEFAULT '',\n\t\t\t\t\t TKT_description TEXT NOT NULL,\n\t\t\t\t\t TKT_qty MEDIUMINT(8) DEFAULT NULL,\n\t\t\t\t\t TKT_sold MEDIUMINT(8) NOT NULL DEFAULT 0,\n\t\t\t\t\t TKT_uses TINYINT NOT NULL DEFAULT '-1',\n\t\t\t\t\t TKT_min TINYINT UNSIGNED NOT NULL DEFAULT '0',\n\t\t\t\t\t TKT_max TINYINT NOT NULL DEFAULT '-1',\n\t\t\t\t\t TKT_price DECIMAL(10,3) NOT NULL DEFAULT '0.00',\n\t\t\t\t\t TKT_start_date DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',\n\t\t\t\t\t TKT_end_date DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',\n\t\t\t\t\t TKT_taxable TINYINT(1) UNSIGNED NOT NULL DEFAULT '0',\n\t\t\t\t\t TKT_order TINYINT(3) UNSIGNED NOT NULL DEFAULT '0',\n\t\t\t\t\t TKT_row TINYINT(3) UNSIGNED NOT NULL DEFAULT '0',\n\t\t\t\t\t TKT_is_default TINYINT(1) UNSIGNED NOT NULL DEFAULT '0',\n\t\t\t\t\t TKT_parent INT(10) UNSIGNED DEFAULT '0',\n\t\t\t\t\t TKT_deleted TINYINT(1) NOT NULL DEFAULT '0',\n\t\t\t\t\t PRIMARY KEY (TKT_ID)"; $this->_table_should_exist_previously($table_name, $sql, 'ENGINE=InnoDB'); $table_name = "esp_ticket_price"; $sql = "TKP_ID INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,\n\t\t\t\t\t TKT_ID INT(10) UNSIGNED NOT NULL,\n\t\t\t\t\t PRC_ID INT(10) UNSIGNED NOT NULL,\n\t\t\t\t\t PRIMARY KEY (TKP_ID)"; $this->_table_should_exist_previously($table_name, $sql, 'ENGINE=InnoDB'); $table_name = "esp_datetime_ticket"; $sql = "DTK_ID INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,\n\t\t\t\t\t DTT_ID INT(10) UNSIGNED NOT NULL,\n\t\t\t\t\t TKT_ID INT(10) UNSIGNED NOT NULL,\n\t\t\t\t\t PRIMARY KEY (DTK_ID)"; $this->_table_should_exist_previously($table_name, $sql, 'ENGINE=InnoDB'); $table_name = "esp_ticket_template"; $sql = "TTM_ID INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,\n\t\t\t\t\t TTM_name VARCHAR(45) NOT NULL,\n\t\t\t\t\t TTM_description TEXT,\n\t\t\t\t\t TTM_file VARCHAR(45),\n\t\t\t\t\t PRIMARY KEY (TTM_ID)"; $this->_table_should_exist_previously($table_name, $sql, 'ENGINE=InnoDB'); $table_name = "esp_price"; $sql = "PRC_ID INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,\n\t\t\t\t\t PRT_ID TINYINT(3) UNSIGNED NOT NULL,\n\t\t\t\t\t PRC_amount DECIMAL(10,3) NOT NULL DEFAULT '0.00',\n\t\t\t\t\t PRC_name VARCHAR(245) NOT NULL,\n\t\t\t\t\t PRC_desc TEXT,\n\t\t\t\t\t PRC_is_default TINYINT(1) UNSIGNED NOT NULL DEFAULT '1',\n\t\t\t\t\t PRC_overrides INT(10) UNSIGNED DEFAULT NULL,\n\t\t\t\t\t PRC_deleted TINYINT(1) UNSIGNED NOT NULL DEFAULT '0',\n\t\t\t\t\t PRC_order TINYINT(3) UNSIGNED NOT NULL DEFAULT '0',\n\t\t\t\t\t PRC_parent INT(10) UNSIGNED DEFAULT 0,\n\t\t\t\t\t PRIMARY KEY (PRC_ID)"; $this->_table_should_exist_previously($table_name, $sql, 'ENGINE=InnoDB'); $table_name = "esp_price_type"; $sql = "PRT_ID TINYINT(3) UNSIGNED NOT NULL AUTO_INCREMENT,\n\t\t\t\t PRT_name VARCHAR(45) NOT NULL,\n\t\t\t\t PBT_ID TINYINT(3) UNSIGNED NOT NULL DEFAULT '1',\n\t\t\t\t PRT_is_percent TINYINT(1) NOT NULL DEFAULT '0',\n\t\t\t\t PRT_order TINYINT UNSIGNED NULL,\n\t\t\t\t PRT_deleted TINYINT(1) NOT NULL DEFAULT '0',\n\t\t\t\t UNIQUE KEY PRT_name_UNIQUE (PRT_name),\n\t\t\t\t PRIMARY KEY (PRT_ID)"; $this->_table_should_exist_previously($table_name, $sql, 'ENGINE=InnoDB'); $table_name = 'esp_question'; $sql = 'QST_ID INT UNSIGNED NOT NULL AUTO_INCREMENT, QST_display_text TEXT NOT NULL, QST_admin_label VARCHAR(255) NOT NULL, QST_system VARCHAR(25) DEFAULT NULL, QST_type VARCHAR(25) NOT NULL DEFAULT "TEXT", QST_required TINYINT(1) UNSIGNED NOT NULL DEFAULT 0, QST_required_text VARCHAR(100) NULL, QST_order TINYINT UNSIGNED NOT NULL DEFAULT 0, QST_admin_only TINYINT(1) NOT NULL DEFAULT 0, QST_wp_user BIGINT UNSIGNED NULL, QST_deleted TINYINT UNSIGNED NOT NULL DEFAULT 0, PRIMARY KEY (QST_ID)'; $this->_table_should_exist_previously($table_name, $sql, 'ENGINE=InnoDB'); EEH_Activation::drop_index('esp_question_group', 'QSG_identifier_UNIQUE'); $table_name = 'esp_question_group'; $sql = 'QSG_ID INT UNSIGNED NOT NULL AUTO_INCREMENT, QSG_name VARCHAR(255) NOT NULL, QSG_identifier VARCHAR(100) NOT NULL, QSG_desc TEXT NULL, QSG_order TINYINT UNSIGNED NOT NULL DEFAULT 0, QSG_show_group_name TINYINT(1) NOT NULL, QSG_show_group_desc TINYINT(1) NOT NULL, QSG_system TINYINT NULL, QSG_deleted TINYINT(1) UNSIGNED NOT NULL DEFAULT 0, PRIMARY KEY (QSG_ID), UNIQUE KEY QSG_identifier_UNIQUE (QSG_identifier ASC)'; $this->_table_should_exist_previously($table_name, $sql, 'ENGINE=InnoDB'); $table_name = 'esp_question_group_question'; $sql = "QGQ_ID INT UNSIGNED NOT NULL AUTO_INCREMENT,\n\t\t\t\t\tQSG_ID INT UNSIGNED NOT NULL,\n\t\t\t\t\tQST_ID INT UNSIGNED NOT NULL,\n\t\t\t\t\tQGQ_order INT UNSIGNED NOT NULL DEFAULT 0,\n\t\t\t\t\tPRIMARY KEY (QGQ_ID) "; $this->_table_should_exist_previously($table_name, $sql, 'ENGINE=InnoDB'); $table_name = 'esp_question_option'; $sql = "QSO_ID INT UNSIGNED NOT NULL AUTO_INCREMENT,\n\t\t\t\t\tQSO_value VARCHAR(255) NOT NULL,\n\t\t\t\t\tQSO_desc TEXT NOT NULL,\n\t\t\t\t\tQST_ID INT UNSIGNED NOT NULL,\n\t\t\t\t\tQSO_deleted TINYINT(1) UNSIGNED NOT NULL DEFAULT 0,\n\t\t\t\t\tPRIMARY KEY (QSO_ID)"; $this->_table_should_exist_previously($table_name, $sql, 'ENGINE=InnoDB'); $table_name = 'esp_registration'; $sql = "REG_ID INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,\n\t\t\t\t\t EVT_ID BIGINT(20) UNSIGNED NOT NULL,\n\t\t\t\t\t ATT_ID BIGINT(20) UNSIGNED NOT NULL,\n\t\t\t\t\t TXN_ID INT(10) UNSIGNED NOT NULL,\n\t\t\t\t\t TKT_ID INT(10) UNSIGNED NOT NULL,\n\t\t\t\t\t STS_ID VARCHAR(3) COLLATE utf8_bin NOT NULL DEFAULT 'RPP',\n\t\t\t\t\t REG_date DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',\n\t\t\t\t\t REG_final_price DECIMAL(10,3) NOT NULL DEFAULT '0.00',\n\t\t\t\t\t REG_session VARCHAR(45) COLLATE utf8_bin NOT NULL,\n\t\t\t\t\t REG_code VARCHAR(45) COLLATE utf8_bin DEFAULT NULL,\n\t\t\t\t\t REG_url_link VARCHAR(64) COLLATE utf8_bin DEFAULT NULL,\n\t\t\t\t\t REG_count TINYINT(4) DEFAULT '1',\n\t\t\t\t\t REG_group_size TINYINT(4) DEFAULT '1',\n\t\t\t\t\t REG_att_is_going TINYINT(1) DEFAULT '0',\n\t\t\t\t\t REG_deleted TINYINT(1) DEFAULT '0',\n\t\t\t\t\t PRIMARY KEY (REG_ID),\n\t\t\t\t\t KEY EVT_ID (EVT_ID),\n\t\t\t\t\t KEY ATT_ID (ATT_ID),\n\t\t\t\t\t KEY TXN_ID (TXN_ID),\n\t\t\t\t\t KEY TKT_ID (TKT_ID),\n\t\t\t\t\t KEY STS_ID (STS_ID),\n\t\t\t\t\t KEY REG_url_link (REG_url_link),\n\t\t\t\t\t KEY REG_code (REG_code)"; $this->_table_should_exist_previously($table_name, $sql, 'ENGINE=InnoDB '); $table_name = 'esp_checkin'; $sql = "CHK_ID INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,\n\t\t\t\t\tREG_ID INT(10) UNSIGNED NOT NULL,\n\t\t\t\t\tDTT_ID INT(10) UNSIGNED NOT NULL,\n\t\t\t\t\tCHK_in TINYINT(1) UNSIGNED NOT NULL DEFAULT 1,\n\t\t\t\t\tCHK_timestamp DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',\n\t\t\t\t\tPRIMARY KEY (CHK_ID)"; $this->_table_should_exist_previously($table_name, $sql, 'ENGINE=InnoDB'); $table_name = 'esp_state'; $sql = "STA_ID smallint(5) UNSIGNED NOT NULL AUTO_INCREMENT,\n\t\t\t\t\t CNT_ISO VARCHAR(2) COLLATE utf8_bin NOT NULL,\n\t\t\t\t\t STA_abbrev VARCHAR(6) COLLATE utf8_bin NOT NULL,\n\t\t\t\t\t STA_name VARCHAR(100) COLLATE utf8_bin NOT NULL,\n\t\t\t\t\t STA_active TINYINT(1) DEFAULT '1',\n\t\t\t\t\t PRIMARY KEY (STA_ID)"; $this->_table_should_exist_previously($table_name, $sql, 'ENGINE=InnoDB'); $table_name = 'esp_status'; $sql = "STS_ID VARCHAR(3) COLLATE utf8_bin NOT NULL,\n\t\t\t\t\t STS_code VARCHAR(45) COLLATE utf8_bin NOT NULL,\n\t\t\t\t\t STS_type set('event','registration','transaction','payment','email') COLLATE utf8_bin NOT NULL,\n\t\t\t\t\t STS_can_edit TINYINT(1) NOT NULL DEFAULT 0,\n\t\t\t\t\t STS_desc TINYTEXT COLLATE utf8_bin,\n\t\t\t\t\t STS_open TINYINT(1) NOT NULL DEFAULT 1,\n\t\t\t\t\t UNIQUE KEY STS_ID_UNIQUE (STS_ID),\n\t\t\t\t\t KEY STS_type (STS_type)"; $this->_table_should_exist_previously($table_name, $sql, 'ENGINE=InnoDB'); $table_name = 'esp_transaction'; $sql = "TXN_ID INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,\n\t\t\t\t\t TXN_timestamp DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',\n\t\t\t\t\t TXN_total DECIMAL(10,3) DEFAULT '0.00',\n\t\t\t\t\t TXN_paid DECIMAL(10,3) NOT NULL DEFAULT '0.00',\n\t\t\t\t\t STS_ID VARCHAR(3) NOT NULL DEFAULT 'TOP',\n\t\t\t\t\t TXN_session_data TEXT COLLATE utf8_bin,\n\t\t\t\t\t TXN_hash_salt VARCHAR(250) COLLATE utf8_bin DEFAULT NULL,\n\t\t\t\t\t PRIMARY KEY (TXN_ID),\n\t\t\t\t\t KEY TXN_timestamp (TXN_timestamp),\n\t\t\t\t\t KEY STS_ID (STS_ID)"; $this->_table_should_exist_previously($table_name, $sql, 'ENGINE=InnoDB'); $table_name = 'esp_venue_meta'; $sql = "VNUM_ID INT(11) NOT NULL AUTO_INCREMENT,\n\t\t\tVNU_ID BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,\n\t\t\tVNU_address VARCHAR(255) DEFAULT NULL,\n\t\t\tVNU_address2 VARCHAR(255) DEFAULT NULL,\n\t\t\tVNU_city VARCHAR(100) DEFAULT NULL,\n\t\t\tSTA_ID INT(11) DEFAULT NULL,\n\t\t\tCNT_ISO VARCHAR(2) DEFAULT NULL,\n\t\t\tVNU_zip VARCHAR(45) DEFAULT NULL,\n\t\t\tVNU_phone VARCHAR(45) DEFAULT NULL,\n\t\t\tVNU_capacity INT(11) DEFAULT NULL,\n\t\t\tVNU_url VARCHAR(255) DEFAULT NULL,\n\t\t\tVNU_virtual_phone VARCHAR(45) DEFAULT NULL,\n\t\t\tVNU_virtual_url VARCHAR(255) DEFAULT NULL,\n\t\t\tVNU_enable_for_gmap TINYINT(1) DEFAULT '0',\n\t\t\tVNU_google_map_link VARCHAR(255) DEFAULT NULL,\n\t\t\tPRIMARY KEY (VNUM_ID),\n\t\t\tKEY STA_ID (STA_ID),\n\t\t\tKEY CNT_ISO (CNT_ISO)"; $this->_table_should_exist_previously($table_name, $sql, 'ENGINE=InnoDB'); $script_with_defaults = EE_Registry::instance()->load_dms('Core_4_1_0'); //setting up the DEFAULT stats and countries is also essential for the data migrations to run //(because many need to convert old string states to foreign keys into the states table) $script_with_defaults->insert_default_states(); $script_with_defaults->insert_default_countries(); //setting up DEFAULT prices, price types, and tickets is also essential for the price migrations $script_with_defaults->insert_default_price_types(); $script_with_defaults->insert_default_prices(); $script_with_defaults->insert_default_tickets(); //setting up the config wp option pretty well counts as a 'schema change', or at least should happen ehre EE_Config::instance()->update_espresso_config(false, true); return true; }
public function schema_changes_before_migration() { //relies on 4.1's EEH_Activation::create_table require_once EE_HELPERS . 'EEH_Activation.helper.php'; $table_name = 'esp_answer'; $sql = " ANS_ID INT UNSIGNED NOT NULL AUTO_INCREMENT ,\n\t\t\t\t\tREG_ID INT UNSIGNED NOT NULL ,\n\t\t\t\t\tQST_ID INT UNSIGNED NOT NULL ,\n\t\t\t\t\tANS_value TEXT NOT NULL ,\n\t\t\t\t\tPRIMARY KEY (ANS_ID)"; $this->_table_is_new_in_this_version($table_name, $sql, 'ENGINE=InnoDB'); $table_name = 'esp_attendee_meta'; $sql = "ATTM_ID int(10) unsigned NOT\tNULL AUTO_INCREMENT,\n\t\t\t\t\t\tATT_ID int(10) unsigned NOT NULL,\n\t\t\t\t\t\tATT_fname varchar(45) NOT NULL,\n\t\t\t\t\t\tATT_lname varchar(45) NOT\tNULL,\n\t\t\t\t\t\tATT_address varchar(45) DEFAULT\tNULL,\n\t\t\t\t\t\tATT_address2 varchar(45) DEFAULT\tNULL,\n\t\t\t\t\t\tATT_city varchar(45) DEFAULT\tNULL,\n\t\t\t\t\t\tSTA_ID int(10) DEFAULT\tNULL,\n\t\t\t\t\t\tCNT_ISO varchar(45) DEFAULT\tNULL,\n\t\t\t\t\t\tATT_zip varchar(12) DEFAULT\tNULL,\n\t\t\t\t\t\tATT_email varchar(100) NOT NULL,\n\t\t\t\t\t\tATT_phone varchar(45) DEFAULT NULL,\n\t\t\t\t\t\t\tPRIMARY KEY (ATTM_ID),\n\t\t\t\t\t\t\t\tKEY ATT_fname (ATT_fname),\n\t\t\t\t\t\t\t\tKEY ATT_lname (ATT_lname),\n\t\t\t\t\t\t\t\tKEY ATT_email (ATT_email)"; $this->_table_is_new_in_this_version($table_name, $sql, 'ENGINE=InnoDB '); $table_name = 'esp_country'; $sql = "CNT_ISO varchar(2) COLLATE utf8_bin NOT NULL,\n\t\t\t\t\t CNT_ISO3 varchar(3) COLLATE utf8_bin NOT NULL,\n\t\t\t\t\t RGN_ID tinyint(3) unsigned DEFAULT NULL,\n\t\t\t\t\t CNT_name varchar(45) COLLATE utf8_bin NOT NULL,\n\t\t\t\t\t CNT_cur_code varchar(6) COLLATE utf8_bin DEFAULT 'USD',\n\t\t\t\t\t CNT_cur_single varchar(45) COLLATE utf8_bin DEFAULT 'dollar',\n\t\t\t\t\t CNT_cur_plural varchar(45) COLLATE utf8_bin DEFAULT 'dollars',\n\t\t\t\t\t CNT_cur_sign varchar(45) COLLATE utf8_bin DEFAULT '\$',\n\t\t\t\t\t CNT_cur_sign_b4 tinyint(1) DEFAULT '1',\n\t\t\t\t\t CNT_cur_dec_plc tinyint(3) unsigned NOT NULL DEFAULT '2',\n\t\t\t\t\t CNT_cur_dec_mrk varchar(1) COLLATE utf8_bin NOT NULL DEFAULT '.',\n\t\t\t\t\t CNT_cur_thsnds varchar(1) COLLATE utf8_bin NOT NULL DEFAULT ',',\n\t\t\t\t\t CNT_tel_code varchar(12) COLLATE utf8_bin DEFAULT NULL,\n\t\t\t\t\t CNT_is_EU tinyint(1) DEFAULT '0',\n\t\t\t\t\t CNT_active tinyint(1) DEFAULT '0',\n\t\t\t\t\t PRIMARY KEY (CNT_ISO)"; $this->_table_is_new_in_this_version($table_name, $sql, 'ENGINE=InnoDB'); $table_name = 'esp_datetime'; $sql = "DTT_ID int(10) unsigned NOT NULL AUTO_INCREMENT,\n\t\t\t\t EVT_ID INT UNSIGNED NOT NULL ,\n\t\t\t\t DTT_EVT_start datetime NOT NULL default '0000-00-00 00:00:00',\n\t\t\t\t DTT_EVT_end datetime NOT NULL default '0000-00-00 00:00:00',\n\t\t\t\t DTT_reg_limit mediumint(8) DEFAULT -1,\n\t\t\t\t DTT_sold mediumint(8) unsigned DEFAULT 0,\n\t\t\t\t DTT_is_primary tinyint(1) UNSIGNED NOT NULL DEFAULT 0,\n\t\t\t\t DTT_order mediumint(3) unsigned DEFAULT 0,\n\t\t\t\t DTT_parent int(10) unsigned DEFAULT 0,\n\t\t\t\t DTT_deleted tinyint(1) UNSIGNED NOT NULL DEFAULT 0,\n\t\t\t\t\t\tPRIMARY KEY (DTT_ID),\n\t\t\t\t\t\tKEY EVT_ID (EVT_ID),\n\t\t\t\t\t\tKEY DTT_is_primary (DTT_is_primary)"; $this->_table_is_new_in_this_version($table_name, $sql, 'ENGINE=InnoDB'); $table_name = 'esp_event_meta'; $sql = "\n\t\t\tEVTM_ID INT NOT NULL AUTO_INCREMENT,\n\t\t\tEVT_ID int(11) unsigned NOT NULL,\n\t\t\tEVT_display_desc TINYINT(1) UNSIGNED NOT NULL DEFAULT 1 ,\n\t\t\tEVT_display_ticket_selector TINYINT(1) UNSIGNED NOT NULL DEFAULT 1 ,\n\t\t\tEVT_visible_on datetime NOT NULL default '0000-00-00 00:00:00',\n\t\t\tEVT_default_registration_status VARCHAR(3),\n\t\t\tEVT_phone varchar(45) DEFAULT NULL,\n\t\t\tEVT_additional_limit TINYINT UNSIGNED NULL ,\n\t\t\tEVT_member_only TINYINT(1) UNSIGNED NOT NULL DEFAULT 0 ,\n\t\t\tEVT_allow_overflow TINYINT(1) UNSIGNED NOT NULL DEFAULT 0 ,\n\t\t\tEVT_timezone_string VARCHAR(45) NULL ,\n\t\t\tEVT_external_URL VARCHAR(200) NULL ,\n\t\t\tEVT_donations TINYINT(1) NULL,\n\t\t\tPRIMARY KEY (EVTM_ID)"; $this->_table_is_new_in_this_version($table_name, $sql, 'ENGINE=InnoDB'); $table_name = 'esp_event_question_group'; $sql = "EQG_ID INT UNSIGNED NOT NULL AUTO_INCREMENT ,\n\t\t\t\t\tEVT_ID INT UNSIGNED NOT NULL ,\n\t\t\t\t\tQSG_ID INT UNSIGNED NOT NULL ,\n\t\t\t\t\tEQG_primary TINYINT(1) UNSIGNED NOT NULL DEFAULT 0,\n\t\t\t\t\tPRIMARY KEY (EQG_ID)"; $this->_table_is_new_in_this_version($table_name, $sql, 'ENGINE=InnoDB'); $table_name = 'esp_event_venue'; $sql = "EVV_ID INT(11) NOT NULL AUTO_INCREMENT ,\n\t\t\t\tEVT_ID INT(11) NOT NULL ,\n\t\t\t\tVNU_ID INT(11) NOT NULL ,\n\t\t\t\tEVV_primary TINYINT(1) UNSIGNED NOT NULL DEFAULT 0,\n\t\t\t\tPRIMARY KEY (EVV_ID)"; $this->_table_is_new_in_this_version($table_name, $sql, 'ENGINE=InnoDB'); $table_name = 'esp_extra_meta'; $sql = "EXM_ID int(11) NOT NULL AUTO_INCREMENT,\n\t\t\t\tOBJ_ID int(11) DEFAULT NULL,\n\t\t\t\tEXM_type varchar(45) DEFAULT NULL,\n\t\t\t\tEXM_key varchar(45) DEFAULT NULL,\n\t\t\t\tEXM_value text,\n\t\t\t\tPRIMARY KEY (EXM_ID)"; $this->_table_is_new_in_this_version($table_name, $sql, 'ENGINE=InnoDB'); $table_name = 'esp_line_item'; $sql = "LIN_ID int(11) NOT NULL AUTO_INCREMENT,\n\t\t\t\tLIN_code varchar(245) NOT NULL DEFAULT '',\n\t\t\t\tTXN_ID int(11) DEFAULT NULL,\n\t\t\t\tLIN_name varchar(245) NOT NULL DEFAULT '',\n\t\t\t\tLIN_desc varchar(245) DEFAULT NULL,\n\t\t\t\tLIN_unit_price decimal(10,3) DEFAULT NULL,\n\t\t\t\tLIN_percent decimal(10,3) DEFAULT NULL,\n\t\t\t\tLIN_is_taxable tinyint(1) DEFAULT 0,\n\t\t\t\tLIN_order int DEFAULT 0,\n\t\t\t\tLIN_parent int DEFAULT 0,\n\t\t\t\tLIN_type varchar(25) NOT NULL,\n\t\t\t\tLIN_total decimal(10,3) DEFAULT NULL,\n\t\t\t\tLIN_quantity int(10) DEFAULT NULL,\n\t\t\t\tOBJ_ID int(11) DEFAULT NULL,\n\t\t\t\tOBJ_type varchar(45)DEFAULT NULL,\n\t\t\t\tPRIMARY KEY (LIN_ID)"; $this->_table_is_new_in_this_version($table_name, $sql, 'ENGINE=InnoDB'); $table_name = 'esp_message_template'; $sql = "MTP_ID int(10) unsigned NOT NULL AUTO_INCREMENT,\n\t\t\t\t\tGRP_ID int(10) unsigned NOT NULL,\n\t\t\t\t\tMTP_context varchar(50) NOT NULL,\n\t\t\t\t\tMTP_template_field varchar(30) NOT NULL,\n\t\t\t\t\tMTP_content text NOT NULL,\n\t\t\t\t\tPRIMARY KEY (MTP_ID),\n\t\t\t\t\tKEY GRP_ID (GRP_ID)"; $this->_table_is_new_in_this_version($table_name, $sql, 'ENGINE=InnoDB'); $table_name = 'esp_message_template_group'; $sql = "GRP_ID int(10) unsigned NOT NULL AUTO_INCREMENT,\n\t\t\t\t\tEVT_ID int(10) unsigned DEFAULT NULL,\n\t\t\t\t\tMTP_user_id int(10) NOT NULL DEFAULT '1',\n\t\t\t\t\tMTP_messenger varchar(30) NOT NULL,\n\t\t\t\t\tMTP_message_type varchar(50) NOT NULL,\n\t\t\t\t\tMTP_is_global tinyint(1) NOT NULL DEFAULT '0',\n\t\t\t\t\tMTP_is_override tinyint(1) NOT NULL DEFAULT '0',\n\t\t\t\t\tMTP_deleted tinyint(1) NOT NULL DEFAULT '0',\n\t\t\t\t\tMTP_is_active tinyint(1) NOT NULL DEFAULT '1',\n\t\t\t\t\tPRIMARY KEY (GRP_ID),\n\t\t\t\t\tKEY EVT_ID (EVT_ID),\n\t\t\t\t\tKEY MTP_user_id (MTP_user_id)"; $this->_table_is_new_in_this_version($table_name, $sql, 'ENGINE=InnoDB'); $table_name = 'esp_payment'; $sql = "PAY_ID int(10) unsigned NOT NULL AUTO_INCREMENT,\n\t\t\t\t\tTXN_ID int(10) unsigned DEFAULT NULL,\n\t\t\t\t\tSTS_ID varchar(3) COLLATE utf8_bin DEFAULT NULL,\n\t\t\t\t\tPAY_timestamp datetime NOT NULL default '0000-00-00 00:00:00',\n\t\t\t\t\tPAY_method varchar(45) COLLATE utf8_bin DEFAULT NULL,\n\t\t\t\t\tPAY_amount decimal(10,3) DEFAULT NULL,\n\t\t\t\t\tPAY_gateway varchar(32) COLLATE utf8_bin DEFAULT NULL,\n\t\t\t\t\tPAY_gateway_response text COLLATE utf8_bin,\n\t\t\t\t\tPAY_txn_id_chq_nmbr varchar(32) COLLATE utf8_bin DEFAULT NULL,\n\t\t\t\t\tPAY_po_number varchar(32) COLLATE utf8_bin DEFAULT NULL,\n\t\t\t\t\tPAY_extra_accntng varchar(45) COLLATE utf8_bin DEFAULT NULL,\n\t\t\t\t\tPAY_via_admin tinyint(1) NOT NULL DEFAULT '0',\n\t\t\t\t\tPAY_details text COLLATE utf8_bin,\n\t\t\t\t\tPRIMARY KEY (PAY_ID),\n\t\t\t\t\tKEY TXN_ID (TXN_ID),\n\t\t\t\t\tKEY PAY_timestamp (PAY_timestamp)"; $this->_table_is_new_in_this_version($table_name, $sql, 'ENGINE=InnoDB '); $table_name = 'esp_promotion'; $sql = "PRO_ID INT UNSIGNED NOT NULL AUTO_INCREMENT ,\n\t\t\t\t\tPRC_ID INT UNSIGNED NOT NULL ,\n\t\t\t\t\tPRO_scope VARCHAR(16) NOT NULL DEFAULT 'event' ,\n\t\t\t\t\tPRO_start DATETIME NULL DEFAULT NULL ,\n\t\t\t\t\tPRO_end DATETIME NULL DEFAULT NULL ,\n\t\t\t\t\tPRO_code VARCHAR(45) NULL DEFAULT NULL ,\n\t\t\t\t\tPRO_uses SMALLINT UNSIGNED NULL DEFAULT NULL ,\n\t\t\t\t\tPRO_global TINYINT(1) NOT NULL DEFAULT 0 ,\n\t\t\t\t\tPRO_global_uses SMALLINT UNSIGNED NOT NULL DEFAULT 0 ,\n\t\t\t\t\tPRO_exclusive TINYINT(1) NOT NULL DEFAULT 0 ,\n\t\t\t\t\tPRO_accept_msg TINYTEXT NULL DEFAULT NULL ,\n\t\t\t\t\tPRO_decline_msg TINYTEXT NULL DEFAULT NULL ,\n\t\t\t\t\tPRO_default TINYINT(1) NOT NULL DEFAULT 0 ,\n\t\t\t\t\tPRO_order TINYINT UNSIGNED NOT NULL DEFAULT 40 ,\n\t\t\t\t\tPRIMARY KEY (PRO_ID) ,\n\t\t\t\t\tKEY PRC_ID (PRC_ID)"; $this->_table_is_new_in_this_version($table_name, $sql, 'ENGINE=InnoDB '); $table_name = 'esp_promotion_object'; $sql = "POB_ID INT UNSIGNED NOT NULL AUTO_INCREMENT,\n\t\t\tPRO_ID INT UNSIGNED NOT NULL,\n\t\t\tOBJ_ID INT UNSIGNED NOT NULL,\n\t\t\tPOB_type VARCHAR(45) NULL,\n\t\t\tPOB_used INT NULL,\n\t\t\tPRIMARY KEY (POB_ID),\n\t\t\tKEY OBJ_ID (OBJ_ID),\n\t\t\tKEY PRO_ID (PRO_ID)"; $this->_table_is_new_in_this_version($table_name, $sql, 'ENGINE=InnoDB '); $table_name = 'esp_promotion_applied'; $sql = "PRA_ID INT UNSIGNED NOT NULL AUTO_INCREMENT,\n\t\t\tPRO_ID INT UNSIGNED NOT NULL,\n\t\t\tOBJ_ID INT UNSIGNED NOT NULL,\n\t\t\tPOB_type VARCHAR(45) NULL,\n\t\t\tPRIMARY KEY (PRA_ID),\n\t\t\tKEY OBJ_ID (OBJ_ID),\n\t\t\tKEY PRO_ID (PRO_ID)"; $this->_table_is_new_in_this_version($table_name, $sql, 'ENGINE=InnoDB '); $table_name = 'esp_promotion_rule'; $sql = "PRR_ID INT UNSIGNED NOT NULL AUTO_INCREMENT ,\n\t\t\t\t\tPRO_ID INT UNSIGNED NOT NULL ,\n\t\t\t\t\tRUL_ID INT UNSIGNED NOT NULL ,\n\t\t\t\t\tPRR_order TINYINT UNSIGNED NOT NULL DEFAULT 1,\n\t\t\t\t\tPRR_add_rule_comparison ENUM('AND','OR') NULL DEFAULT 'AND',\n\t\t\t\t\tPRIMARY KEY (PRR_ID) ,\n\t\t\t\t\tKEY PRO_ID (PRO_ID),\n\t\t\t\t\tKEY RUL_ID (RUL_ID) "; $this->_table_is_new_in_this_version($table_name, $sql, 'ENGINE=InnoDB '); $table_name = 'esp_rule'; $sql = "RUL_ID INT UNSIGNED NOT NULL AUTO_INCREMENT ,\n\t\t\t\t\tRUL_name VARCHAR(45) NOT NULL ,\n\t\t\t\t\tRUL_desc TEXT NULL ,\n\t\t\t\t\tRUL_trigger VARCHAR(45) NOT NULL ,\n\t\t\t\t\tRUL_trigger_type VARCHAR(45) NULL DEFAULT NULL ,\n\t\t\t\t\tRUL_comparison ENUM('=','!=','<','>') NOT NULL DEFAULT '=' ,\n\t\t\t\t\tRUL_value VARCHAR(45) NOT NULL ,\n\t\t\t\t\tRUL_value_type VARCHAR(45) NULL DEFAULT NULL ,\n\t\t\t\t\tRUL_is_active TINYINT(1) NOT NULL DEFAULT 1 ,\n\t\t\t\t\tRUL_archived TINYINT(1) NOT NULL DEFAULT 0 ,\n\t\t\t\t\tPRIMARY KEY (RUL_ID)"; $this->_table_is_new_in_this_version($table_name, $sql, 'ENGINE=InnoDB '); $table_name = "esp_ticket"; $sql = "TKT_ID int(10) unsigned NOT NULL AUTO_INCREMENT,\n\t\t\t\t\t TTM_ID int(10) unsigned NOT NULL,\n\t\t\t\t\t TKT_name varchar(100) NOT NULL DEFAULT '',\n\t\t\t\t\t TKT_description TEXT NOT NULL DEFAULT '',\n\t\t\t\t\t TKT_qty mediumint(8) DEFAULT NULL,\n\t\t\t\t\t TKT_sold mediumint(8) NOT NULL DEFAULT 0,\n\t\t\t\t\t TKT_uses tinyint NOT NULL DEFAULT '-1',\n\t\t\t\t\t TKT_min tinyint unsigned NOT NULL DEFAULT '0',\n\t\t\t\t\t TKT_max tinyint NOT NULL DEFAULT '-1',\n\t\t\t\t\t TKT_price decimal(10,3) NOT NULL DEFAULT '0.00',\n\t\t\t\t\t TKT_start_date datetime NOT NULL default '0000-00-00 00:00:00',\n\t\t\t\t\t TKT_end_date datetime NOT NULL default '0000-00-00 00:00:00',\n\t\t\t\t\t TKT_taxable tinyint(1) unsigned NOT NULL DEFAULT '0',\n\t\t\t\t\t TKT_order tinyint(3) unsigned NOT NULL DEFAULT '0',\n\t\t\t\t\t TKT_row tinyint(3) unsigned NOT NULL DEFAULT '0',\n\t\t\t\t\t TKT_is_default tinyint(1) unsigned NOT NULL DEFAULT '0',\n\t\t\t\t\t TKT_parent int(10) unsigned DEFAULT '0',\n\t\t\t\t\t TKT_deleted tinyint(1) NOT NULL DEFAULT '0',\n\t\t\t\t\t PRIMARY KEY (TKT_ID)"; $this->_table_is_new_in_this_version($table_name, $sql, 'ENGINE=InnoDB'); $table_name = "esp_ticket_price"; $sql = "TKP_ID int(10) unsigned NOT NULL AUTO_INCREMENT,\n\t\t\t\t\t TKT_ID int(10) unsigned NOT NULL,\n\t\t\t\t\t PRC_ID int(10) unsigned NOT NULL,\n\t\t\t\t\t PRIMARY KEY (TKP_ID)"; $this->_table_is_new_in_this_version($table_name, $sql, 'ENGINE=InnoDB'); $table_name = "esp_datetime_ticket"; $sql = "DTK_ID int(10) unsigned NOT NULL AUTO_INCREMENT,\n\t\t\t\t\t DTT_ID int(10) unsigned NOT NULL,\n\t\t\t\t\t TKT_ID int(10) unsigned NOT NULL,\n\t\t\t\t\t PRIMARY KEY (DTK_ID)"; $this->_table_is_new_in_this_version($table_name, $sql, 'ENGINE=InnoDB'); $table_name = "esp_ticket_template"; $sql = "TTM_ID int(10) unsigned NOT NULL AUTO_INCREMENT,\n\t\t\t\t\t TTM_name varchar(45) NOT NULL,\n\t\t\t\t\t TTM_description text,\n\t\t\t\t\t TTM_file varchar(45),\n\t\t\t\t\t PRIMARY KEY (TTM_ID)"; $this->_table_is_new_in_this_version($table_name, $sql, 'ENGINE=InnoDB'); $table_name = "esp_price"; $sql = "PRC_ID int(10) unsigned NOT NULL AUTO_INCREMENT,\n\t\t\t\t\t PRT_ID tinyint(3) unsigned NOT NULL,\n\t\t\t\t\t PRC_amount decimal(10,3) NOT NULL DEFAULT '0.00',\n\t\t\t\t\t PRC_name varchar(45) NOT NULL,\n\t\t\t\t\t PRC_desc text,\n\t\t\t\t\t PRC_is_default tinyint(1) unsigned NOT NULL DEFAULT '1',\n\t\t\t\t\t PRC_overrides int(10) unsigned DEFAULT NULL,\n\t\t\t\t\t PRC_deleted tinyint(1) unsigned NOT NULL DEFAULT '0',\n\t\t\t\t\t PRC_order tinyint(3) unsigned NOT NULL DEFAULT '0',\n\t\t\t\t\t PRC_parent int(10) unsigned DEFAULT 0,\n\t\t\t\t\t PRIMARY KEY (PRC_ID)"; $this->_table_is_new_in_this_version($table_name, $sql, 'ENGINE=InnoDB'); $table_name = "esp_price_type"; $sql = "PRT_ID tinyint(3) unsigned NOT NULL AUTO_INCREMENT,\n\t\t\t\t PRT_name VARCHAR(45) NOT NULL ,\n\t\t\t\t PBT_ID tinyint(3) unsigned NOT NULL DEFAULT '1',\n\t\t\t\t PRT_is_percent tinyint(1) NOT NULL DEFAULT '0',\n\t\t\t\t PRT_order tinyint UNSIGNED NULL,\n\t\t\t\t PRT_deleted tinyint(1) NOT NULL DEFAULT '0',\n\t\t\t\t UNIQUE KEY PRT_name_UNIQUE (PRT_name),\n\t\t\t\t PRIMARY KEY (PRT_ID)"; $this->_table_is_new_in_this_version($table_name, $sql, 'ENGINE=InnoDB'); $table_name = 'esp_question'; $sql = 'QST_ID INT UNSIGNED NOT NULL AUTO_INCREMENT, QST_display_text TEXT NOT NULL, QST_admin_label VARCHAR(255) NOT NULL, QST_system varchar(25) DEFAULT NULL, QST_type VARCHAR(25) NOT NULL DEFAULT "TEXT", QST_required TINYINT(1) UNSIGNED NOT NULL DEFAULT 0, QST_required_text VARCHAR(100) NULL, QST_order TINYINT UNSIGNED NOT NULL DEFAULT 0, QST_admin_only TINYINT(1) NOT NULL DEFAULT 0, QST_wp_user BIGINT UNSIGNED NULL, QST_deleted TINYINT UNSIGNED NOT NULL DEFAULT 0, PRIMARY KEY (QST_ID)'; $this->_table_is_new_in_this_version($table_name, $sql, 'ENGINE=InnoDB'); EEH_Activation::drop_index('esp_question_group', 'QSG_identifier_UNIQUE'); $table_name = 'esp_question_group'; $sql = 'QSG_ID INT UNSIGNED NOT NULL AUTO_INCREMENT, QSG_name VARCHAR(255) NOT NULL, QSG_identifier VARCHAR(100) NOT NULL, QSG_desc TEXT NULL, QSG_order TINYINT UNSIGNED NOT NULL DEFAULT 0, QSG_show_group_name TINYINT(1) NOT NULL, QSG_show_group_desc TINYINT(1) NOT NULL, QSG_system TINYINT NULL, QSG_deleted TINYINT(1) UNSIGNED NOT NULL DEFAULT 0, PRIMARY KEY (QSG_ID), UNIQUE KEY QSG_identifier_UNIQUE (QSG_identifier ASC)'; $this->_table_is_new_in_this_version($table_name, $sql, 'ENGINE=InnoDB'); $table_name = 'esp_question_group_question'; $sql = "QGQ_ID INT UNSIGNED NOT NULL AUTO_INCREMENT ,\n\t\t\t\t\tQSG_ID INT UNSIGNED NOT NULL ,\n\t\t\t\t\tQST_ID INT UNSIGNED NOT NULL ,\n\t\t\t\t\tPRIMARY KEY (QGQ_ID) "; $this->_table_is_new_in_this_version($table_name, $sql, 'ENGINE=InnoDB'); $table_name = 'esp_question_option'; $sql = "QSO_ID INT UNSIGNED NOT NULL AUTO_INCREMENT ,\n\t\t\t\t\tQSO_value VARCHAR(255) NOT NULL ,\n\t\t\t\t\tQSO_desc TEXT NOT NULL ,\n\t\t\t\t\tQST_ID INT UNSIGNED NOT NULL ,\n\t\t\t\t\tQSO_deleted TINYINT(1) UNSIGNED NOT NULL DEFAULT 0 ,\n\t\t\t\t\tPRIMARY KEY (QSO_ID)"; $this->_table_is_new_in_this_version($table_name, $sql, 'ENGINE=InnoDB'); $table_name = 'esp_registration'; $sql = "REG_ID int(10) unsigned NOT NULL AUTO_INCREMENT,\n\t\t\t\t\t EVT_ID int(10) unsigned NOT NULL,\n\t\t\t\t\t ATT_ID int(10) unsigned NOT NULL,\n\t\t\t\t\t TXN_ID int(10) unsigned NOT NULL,\n\t\t\t\t\t TKT_ID int(10) unsigned NOT NULL,\n\t\t\t\t\t STS_ID varchar(3) COLLATE utf8_bin NOT NULL DEFAULT 'RPP',\n\t\t\t\t\t REG_date datetime NOT NULL default '0000-00-00 00:00:00',\n\t\t\t\t\t REG_final_price decimal(10,3) NOT NULL DEFAULT '0.00',\n\t\t\t\t\t REG_session varchar(45) COLLATE utf8_bin NOT NULL,\n\t\t\t\t\t REG_code varchar(45) COLLATE utf8_bin DEFAULT NULL,\n\t\t\t\t\t REG_url_link varchar(64) COLLATE utf8_bin DEFAULT NULL,\n\t\t\t\t\t REG_count tinyint(4) DEFAULT '1',\n\t\t\t\t\t REG_group_size tinyint(4) DEFAULT '1',\n\t\t\t\t\t REG_att_is_going tinyint(1) DEFAULT '0',\n\t\t\t\t\t REG_deleted tinyint(1) DEFAULT '0',\n\t\t\t\t\t PRIMARY KEY (REG_ID),\n\t\t\t\t\t KEY EVT_ID (EVT_ID),\n\t\t\t\t\t KEY ATT_ID (ATT_ID),\n\t\t\t\t\t KEY TXN_ID (TXN_ID),\n\t\t\t\t\t KEY TKT_ID (TKT_ID),\n\t\t\t\t\t KEY STS_ID (STS_ID),\n\t\t\t\t\t KEY REG_url_link (REG_url_link),\n\t\t\t\t\t KEY REG_code (REG_code)"; $this->_table_is_new_in_this_version($table_name, $sql, 'ENGINE=InnoDB '); $table_name = 'esp_checkin'; $sql = "CHK_ID INT(10) UNSIGNED NOT NULL AUTO_INCREMENT ,\n\t\t\t\t\tREG_ID INT(10) unsigned NOT NULL ,\n\t\t\t\t\tDTT_ID INT(10) unsigned NOT NULL ,\n\t\t\t\t\tCHK_in TINYINT(1) UNSIGNED NOT NULL DEFAULT 1 ,\n\t\t\t\t\tCHK_timestamp datetime NOT NULL default '0000-00-00 00:00:00' ,\n\t\t\t\t\tPRIMARY KEY (CHK_ID)"; $this->_table_is_new_in_this_version($table_name, $sql, 'ENGINE=InnoDB'); $table_name = 'esp_state'; $sql = "STA_ID smallint(5) unsigned NOT NULL AUTO_INCREMENT,\n\t\t\t\t\t CNT_ISO varchar(2) COLLATE utf8_bin NOT NULL,\n\t\t\t\t\t STA_abbrev varchar(6) COLLATE utf8_bin NOT NULL,\n\t\t\t\t\t STA_name varchar(100) COLLATE utf8_bin NOT NULL,\n\t\t\t\t\t STA_active tinyint(1) DEFAULT '1',\n\t\t\t\t\t PRIMARY KEY (STA_ID)"; $this->_table_is_new_in_this_version($table_name, $sql, 'ENGINE=InnoDB'); $table_name = 'esp_status'; $sql = "STS_ID varchar(3) COLLATE utf8_bin NOT NULL,\n\t\t\t\t\t STS_code varchar(45) COLLATE utf8_bin NOT NULL,\n\t\t\t\t\t STS_type set('event','registration','transaction','payment','email') COLLATE utf8_bin NOT NULL,\n\t\t\t\t\t STS_can_edit tinyint(1) NOT NULL DEFAULT 0,\n\t\t\t\t\t STS_desc tinytext COLLATE utf8_bin,\n\t\t\t\t\t STS_open tinyint(1) NOT NULL DEFAULT 1,\n\t\t\t\t\t UNIQUE KEY STS_ID_UNIQUE (STS_ID),\n\t\t\t\t\t KEY STS_type (STS_type)"; $this->_table_is_new_in_this_version($table_name, $sql, 'ENGINE=InnoDB'); $table_name = 'esp_transaction'; $sql = "TXN_ID int(10) unsigned NOT NULL AUTO_INCREMENT,\n\t\t\t\t\t TXN_timestamp datetime NOT NULL default '0000-00-00 00:00:00',\n\t\t\t\t\t TXN_total decimal(10,3) DEFAULT '0.00',\n\t\t\t\t\t TXN_paid decimal(10,3) NOT NULL DEFAULT '0.00',\n\t\t\t\t\t STS_ID varchar(3) NOT NULL DEFAULT 'TOP',\n\t\t\t\t\t TXN_session_data text COLLATE utf8_bin,\n\t\t\t\t\t TXN_hash_salt varchar(250) COLLATE utf8_bin DEFAULT NULL,\n\t\t\t\t\t PRIMARY KEY (TXN_ID),\n\t\t\t\t\t KEY TXN_timestamp (TXN_timestamp),\n\t\t\t\t\t KEY STS_ID (STS_ID)"; $this->_table_is_new_in_this_version($table_name, $sql, 'ENGINE=InnoDB'); $table_name = 'esp_venue_meta'; $sql = "VNUM_ID int(11) NOT NULL AUTO_INCREMENT,\n\t\t\tVNU_ID int(11) DEFAULT NULL,\n\t\t\tVNU_address varchar(100) DEFAULT NULL,\n\t\t\tVNU_address2 varchar(100) DEFAULT NULL,\n\t\t\tVNU_city varchar(100) DEFAULT NULL,\n\t\t\tSTA_ID int(11) DEFAULT NULL,\n\t\t\tCNT_ISO varchar(2) DEFAULT NULL,\n\t\t\tVNU_zip varchar(45) DEFAULT NULL,\n\t\t\tVNU_phone varchar(45) DEFAULT NULL,\n\t\t\tVNU_capacity int(11) DEFAULT NULL,\n\t\t\tVNU_url varchar(255) DEFAULT NULL,\n\t\t\tVNU_virtual_phone varchar(45) DEFAULT NULL,\n\t\t\tVNU_virtual_url varchar(255) DEFAULT NULL,\n\t\t\tVNU_enable_for_gmap tinyint(1) DEFAULT '0',\n\t\t\tVNU_google_map_link varchar(255) DEFAULT NULL,\n\t\t\tPRIMARY KEY (VNUM_ID),\n\t\t\tKEY STA_ID (STA_ID),\n\t\t\tKEY CNT_ISO (CNT_ISO)"; $this->_table_is_new_in_this_version($table_name, $sql, 'ENGINE=InnoDB'); //setting up the default stats and countries is also essential for the data migrations to run //(because many need to convert old string states to foreign keys into the states table) $this->insert_default_states(); $this->insert_default_countries(); //setting up default prices, price types, and tickets is also essential for the price migrations $this->insert_default_price_types(); $this->insert_default_prices(); $this->insert_default_tickets(); //setting up the config wp option pretty well counts as a 'schema change', or at least should happen ehre EE_Config::instance()->update_espresso_config(false, true); return true; }
/** * Handles creating new default templates. * * @param string $template_pack This corresponds to a template pack class reference * which will contain information about where to obtain the templates. * @return mixed (array|bool) success array or false. */ protected function _create_new_templates($template_pack) { $this->_set_templates($template_pack); //necessary properties are set, let's save the default templates if (empty($this->_GRP_ID)) { $main_template_data = array('MTP_messenger' => $this->_messenger->name, 'MTP_message_type' => $this->_message_type->name, 'MTP_is_override' => 0, 'MTP_deleted' => 0, 'MTP_is_global' => 1, 'MTP_user_id' => EEH_Activation::get_default_creator_id(), 'MTP_is_active' => 1); //let's insert the above and get our GRP_ID, then reset the template data array to just include the GRP_ID $grp_id = $this->_message_template_group_model->insert($main_template_data); if (empty($grp_id)) { return $grp_id; } $this->_GRP_ID = $grp_id; } $template_data = array('GRP_ID' => $this->_GRP_ID); foreach ($this->_contexts as $context => $details) { foreach ($this->_fields as $field => $field_type) { if ($field != 'extra') { $template_data['MTP_context'] = $context; $template_data['MTP_template_field'] = $field; $template_data['MTP_content'] = $this->_templates[$context][$field]; $MTP = $this->_message_template_model->insert($template_data); if (!$MTP) { EE_Error::add_error(sprintf(__('There was an error in saving new template data for %1$s messenger, %2$s message type, %3$s context and %4$s template field.', 'event_espresso'), $this->_messenger->name, $this->_message_type->name, $context, $field), __FILE__, __FUNCTION__, __LINE__); return false; } } } } return array('GRP_ID' => $this->_GRP_ID, 'MTP_context' => key($this->_contexts)); }
/** * perform_activations_upgrades_and_migrations * * @access public * @return void */ public function perform_activations_upgrades_and_migrations() { //first check if we had previously attempted to setup EE's directories but failed if (EEH_Activation::upload_directories_incomplete()) { EEH_Activation::create_upload_directories(); } do_action('AHEE__EE_System__perform_activations_upgrades_and_migrations'); }
/** * espresso_plugin_deactivation */ function espresso_plugin_deactivation() { espresso_load_required('EEH_Activation', EE_HELPERS . 'EEH_Activation.helper.php'); EEH_Activation::plugin_deactivation(); }
/** * Asserts the table (even temporary one) does not exist * We really should implement this function in the proper PHPunit style * @see http://php-and-symfony.matthiasnoback.nl/2012/02/phpunit-writing-a-custom-assertion/ * @global WPDB $wpdb * @param string $table_name with or without $wpdb->prefix * @param string $model_name the model's name (only used for error reporting) */ function assertTableDoesNotExist($table_name, $model_name = 'Unknown') { if (EEH_Activation::table_exists($table_name)) { $this->fail(sprintf(__('Table like %1$s SHOULD NOT exist. It was apparently defined on the model "%2$s"', 'event_espresso'), $table_name, $model_name)); } }
/** * verifies each of the new currencies exists that somehow we missed in 4.6 */ public function verify_new_currencies() { //a list of countries (and specifically some which were missed in another list):https://gist.github.com/adhipg/1600028 //how many decimal places? https://en.wikipedia.org/wiki/ISO_4217 //currency symbols: http://www.xe.com/symbols.php // CUR_code, CUR_single, CUR_plural, CUR_sign, CUR_dec_plc, CUR_active //( 'EUR', 'Euro', 'Euros', '€', 2,1), $newer_currencies = array(array('RSD', 'Dinar', 'Dinars', '', 3, 1)); global $wpdb; $currency_table = $wpdb->prefix . "esp_currency"; $currency_format = array("CUR_code" => '%s', "CUR_single" => '%s', "CUR_plural" => '%s', "CUR_sign" => '%s', "CUR_dec_plc" => '%d', "CUR_active" => '%d'); if (EEH_Activation::table_exists($currency_table)) { foreach ($newer_currencies as $currency) { $SQL = "SELECT COUNT('CUR_code') FROM {$currency_table} WHERE CUR_code='{$currency[0]}' LIMIT 1"; $countries = $wpdb->get_var($SQL); if (!$countries) { $wpdb->insert($currency_table, array_combine(array_keys($currency_format), $currency), $currency_format); } } } }
/** * Resets the registry. * * The criteria for what gets reset is based on what can be shared between sites on the same request when switch_to_blog * is used in a multisite install. Here is a list of things that are NOT reset. * * - $_dependency_map * - $_class_abbreviations * - $NET_CFG (EE_Network_Config): The config is shared network wide so no need to reset. * - $REQ: Still on the same request so no need to change. * - $CAP: There is no site specific state in the EE_Capability class. * - $SSN: Although ideally, the session should not be shared between site switches, we can't reset it because only one Session * can be active in a single request. Resetting could resolve in "headers already sent" errors. * - $addons: In multisite, the state of the addons is something controlled via hooks etc in a normal request. So * for now, we won't reset the addons because it could break calls to an add-ons class/methods in the * switch or on the restore. * - $modules * - $shortcodes * - $widgets * * @param boolean $hard whether to reset data in the database too, or just refresh * the Registry to its state at the beginning of the request * @param boolean $reinstantiate whether to create new instances of EE_Registry's singletons too, * or just reset without re-instantiating (handy to set to FALSE if you're not sure if you CAN * currently reinstantiate the singletons at the moment) * @param bool $reset_models Defaults to true. When false, then the models are not reset. This is so client * code instead can just change the model context to a different blog id if necessary * * @return EE_Registry */ public static function reset($hard = false, $reinstantiate = true, $reset_models = true) { $instance = self::instance(); EEH_Activation::reset(); //properties that get reset $instance->_cache_on = true; $instance->CFG = EE_Config::reset($hard, $reinstantiate); $instance->CART = null; $instance->MRM = null; $instance->LIB = new stdClass(); //messages reset EED_Messages::reset(); if ($reset_models) { foreach (array_keys($instance->non_abstract_db_models) as $model_name) { $instance->reset_model($model_name); } } return $instance; }
/** * Ensure getting default creator works as expected * @since 4.6.0 */ public function test_get_default_creator_id() { //clear out any previous users that may be lurking in teh system foreach (get_users() as $wp_user) { wp_delete_user($wp_user->ID); } //set some users; and just make it interesting by having the first user NOT be an admin $non_admin_users = $this->factory->user->create_many(2); $users = $this->factory->user->create_many(2); //make users administrators. foreach ($users as $user_id) { $user = $this->factory->user->get_object_by_id($user_id); //verify $this->assertInstanceOf('WP_User', $user); //add role $user->add_role('administrator'); } //get all users so we know who is the first one that we should be expecting. $expected_id = reset($users); $this->assertEquals(EEH_Activation::get_default_creator_id(), $expected_id); /** * ok now let's verify EEH_Activation::reset() properly clears the cache * on EEH_Activation. This is important for subsequent unit tests (because * EEH_Activation::reset() is called beween unit tests), but also when an admin * resets their EE database, or when anyone wants to reset that cache) * clear out any previous users that may be lurking in teh system */ EEH_Activation::reset(); foreach (get_users() as $wp_user) { wp_delete_user($wp_user->ID); } //set some users; and just make it interesting by having the first user NOT be an admin $this->factory->user->create_many(2); $users_created_after_reset = $this->factory->user->create_many(2); //make users administrators. foreach ($users_created_after_reset as $user_id) { $user = $this->factory->user->get_object_by_id($user_id); //verify $this->assertInstanceOf('WP_User', $user); //add role $user->add_role('administrator'); } //get all users so we know who is the first one that we should be expecting. $new_expected_id = reset($users_created_after_reset); $this->assertEquals(EEH_Activation::get_default_creator_id(), $new_expected_id); }
/** * class constructor * * @access public * @param string $CNT_ISO * @return \EE_Currency_Config */ public function __construct($CNT_ISO = '') { // get country code from organization settings or use default $ORG_CNT = isset(EE_Registry::instance()->CFG->organization) && EE_Registry::instance()->CFG->organization instanceof EE_Organization_Config ? EE_Registry::instance()->CFG->organization->CNT_ISO : ''; // but override if requested $CNT_ISO = !empty($CNT_ISO) ? $CNT_ISO : $ORG_CNT; // so if that all went well, and we are not in M-Mode (cuz you can't query the db in M-Mode) and double-check the countries table exists if (!empty($CNT_ISO) && EE_Maintenance_Mode::instance()->models_can_query() && EEH_Activation::table_exists(EE_Registry::instance()->load_model('Country')->table())) { // retrieve the country settings from the db, just in case they have been customized $country = EE_Registry::instance()->load_model('Country')->get_one_by_ID($CNT_ISO); if ($country instanceof EE_Country) { $this->code = $country->currency_code(); // currency code: USD, CAD, EUR $this->name = $country->currency_name_single(); // Dollar $this->plural = $country->currency_name_plural(); // Dollars $this->sign = $country->currency_sign(); // currency sign: $ $this->sign_b4 = $country->currency_sign_before(); // currency sign before or after: $TRUE or FALSE$ $this->dec_plc = $country->currency_decimal_places(); // decimal places: 2 = 0.00 3 = 0.000 $this->dec_mrk = $country->currency_decimal_mark(); // decimal mark: (comma) ',' = 0,01 or (decimal) '.' = 0.01 $this->thsnds = $country->currency_thousands_separator(); // thousands separator: (comma) ',' = 1,000 or (decimal) '.' = 1.000 } } // fallback to hardcoded defaults, in case the above failed if (empty($this->code)) { // set default currency settings $this->code = 'USD'; // currency code: USD, CAD, EUR $this->name = __('Dollar', 'event_espresso'); // Dollar $this->plural = __('Dollars', 'event_espresso'); // Dollars $this->sign = '$'; // currency sign: $ $this->sign_b4 = true; // currency sign before or after: $TRUE or FALSE$ $this->dec_plc = 2; // decimal places: 2 = 0.00 3 = 0.000 $this->dec_mrk = '.'; // decimal mark: (comma) ',' = 0,01 or (decimal) '.' = 0.01 $this->thsnds = ','; // thousands separator: (comma) ',' = 1,000 or (decimal) '.' = 1.000 } }
/** * Please see description of _table_is_new_in_this_version. This function will only set * EEH_Activation::create_table's $drop_pre_existing_tables to TRUE if it's a brand * new activation. Otherwise, we'll always set $drop_pre_existing_tables to FALSE * because the table should have existed. Note, if the table is being MODIFIED in this * version being activated or migrated to, then this is the right option (because * you wouldn't want to nuke ALL the table's old info just because you're adding a column, right?) * @param string $table_name * @param string $table_definition_sql * @param string $engine_string */ protected function _table_should_exist_previously($table_name, $table_definition_sql, $engine_string = 'ENGINE=MyISAM') { if (in_array($this->_get_req_type_for_plugin_corresponding_to_this_dms(), array(EE_System::req_type_new_activation))) { $drop_pre_existing_tables = true; } else { $drop_pre_existing_tables = false; } EE_Registry::instance()->load_helper('Activation'); EEH_Activation::create_table($table_name, $table_definition_sql, $engine_string, $drop_pre_existing_tables); }
/** * tests that we're correctly detecting activation or upgrades in registered * addons. * @group agg */ function test_detect_activations_or_upgrades__new_install_on_core_and_addon_simultaneously() { ob_start(); error_log('message taht shouldnt be outputte dbut is'); ob_end_clean(); global $wp_actions, $wpdb; //pretend core was just activated delete_option('espresso_db_update'); update_option('ee_espresso_activation', TRUE); delete_option('ee_pers_admin_notices'); //its activation history wp option shouldn't exist $this->assertWPOptionDoesNotExist($this->_addon->get_activation_history_option_name()); //and it also shouldn't be in the current db state $current_db_state = get_option(EE_Data_Migration_Manager::current_database_state); //just for assurance, make sure New Addon is the only existing addon $this->assertArrayNotHasKey($this->_addon_name, $current_db_state); $times_addon_new_install_hook_fired = isset($wp_actions["AHEE__{$this->_addon_classname}__new_install"]) ? $wp_actions["AHEE__{$this->_addon_classname}__new_install"] : 0; $times_core_new_install_hook_fired = isset($wp_actions['AHEE__EE_System__detect_if_activation_or_upgrade__new_activation']) ? $wp_actions['AHEE__EE_System__detect_if_activation_or_upgrade__new_activation'] : 0; //set the activator option update_option($this->_addon->get_activation_indicator_option_name(), TRUE); $this->assertWPOptionExists($this->_addon->get_activation_indicator_option_name()); $this->assertTableDoesNotExist('esp_new_addon_thing'); EE_System::reset(); $this->assertEquals(EE_System::req_type_new_activation, EE_System::instance()->detect_req_type()); $this->assertEquals(EE_System::req_type_new_activation, $this->_addon->detect_req_type()); $this->assertEquals($times_addon_new_install_hook_fired + 1, $wp_actions["AHEE__{$this->_addon_classname}__new_install"]); $this->assertEquals($times_core_new_install_hook_fired + 1, $wp_actions['AHEE__EE_System__detect_if_activation_or_upgrade__new_activation']); $this->assertWPOptionDoesNotExist($this->_addon->get_activation_indicator_option_name()); $this->assertWPOptionDoesNotExist('ee_espresso_activation'); $this->assertTableExists('esp_new_addon_thing'); //verify we haven't remarked that there we tried adding a duplicate table $notices = get_option('ee_pers_admin_notices', array()); $this->assertArrayNotHasKey('bad_table_' . $wpdb->prefix . 'esp_new_addon_thing_detected', $notices); //double-check that when we intentionally try to add a table we just asserted exists //that the warning gets sent out global $track_it; $track_it = TRUE; try { EEH_Activation::create_table('esp_new_addon_thing', 'BORKED SQL', 'ENGINE=MyISAM ', TRUE); $this->fail('Borked SQL didnt\'t cause EEH_Activation::create_table to throw an EE_Error. It should have'); } catch (EE_Error $e) { $this->assertTrue(TRUE); } }
/** * get list of registration statuses * @access private * @param array $exclude * @return array */ private function _get_registration_status_array($exclude = array()) { //in the very rare circumstance that we are deleting a model's table's data //and the table hasn't actually been created, this could have an error /** @type WPDB $wpdb */ global $wpdb; EE_Registry::instance()->load_helper('Activation'); if (EEH_Activation::table_exists($wpdb->prefix . 'esp_status')) { $SQL = 'SELECT STS_ID, STS_code FROM ' . $wpdb->prefix . 'esp_status WHERE STS_type = "registration"'; $results = $wpdb->get_results($SQL); self::$_reg_status = array(); foreach ($results as $status) { if (!in_array($status->STS_ID, $exclude)) { self::$_reg_status[$status->STS_ID] = $status->STS_code; } } } }
/** * insert DEFAULT ticket * Almost identical to EE_DMS_Core_4_1_0::insert_default_tickets, except is aware of the TKT_required field * * @access public * @static * @return void */ public function insert_default_tickets() { global $wpdb; $ticket_table = $wpdb->prefix . "esp_ticket"; if (EEH_Activation::table_exists($ticket_table)) { $SQL = 'SELECT COUNT(TKT_ID) FROM ' . $ticket_table; $tickets_exist = $wpdb->get_var($SQL); if (!$tickets_exist) { $SQL = "INSERT INTO {$ticket_table}\n\t\t\t\t\t( TKT_ID, TTM_ID, TKT_name, TKT_description, TKT_qty, TKT_sold, TKT_uses, TKT_required, TKT_min, TKT_max, TKT_price, TKT_start_date, TKT_end_date, TKT_taxable, TKT_order, TKT_row, TKT_is_default, TKT_parent, TKT_deleted ) VALUES\n\t\t\t\t\t( 1, 0, '" . __("Free Ticket", "event_espresso") . "', '', 100, 0, -1, 0, 0, -1, 0.00, '0000-00-00 00:00:00', '0000-00-00 00:00:00', 0, 0, 1, 1, 0, 0);"; $SQL = apply_filters('FHEE__EE_DMS_4_1_0__insert_default_tickets__SQL', $SQL); $wpdb->query($SQL); } } $ticket_price_table = $wpdb->prefix . "esp_ticket_price"; if (EEH_Activation::table_exists($ticket_price_table)) { $SQL = 'SELECT COUNT(TKP_ID) FROM ' . $ticket_price_table; $ticket_prc_exist = $wpdb->get_var($SQL); if (!$ticket_prc_exist) { $SQL = "INSERT INTO {$ticket_price_table}\n\t\t\t\t( TKP_ID, TKT_ID, PRC_ID ) VALUES\n\t\t\t\t( 1, 1, 1 )\n\t\t\t\t"; $SQL = apply_filters('FHEE__EE_DMS_4_1_0__insert_default_tickets__SQL__ticket_price', $SQL); $wpdb->query($SQL); } } }
function test_get_cron_tasks__all() { add_filter('FHEE__EEH_Activation__get_cron_tasks', array($this, 'change_cron_tasks')); $old_cron_tasks = EEH_Activation::get_cron_tasks('all'); $this->assertArrayHasKey(self::expired_cron_task_name, $old_cron_tasks); $this->assertArrayHasKey(self::current_cron_task_name, $old_cron_tasks); }
/** * Resets the registry and everything in it (eventually, getting it to properly * reset absolutely everything will probably be tricky. right now it just resets * the config, data migration manager, and the models) * @param boolean $hard whether to reset data in the database too, or just refresh * the Registry to its state at the bginning of the request * @param boolean $reinstantiate whether to create new instances of EE_REgistry's singletons too, * or just reset without reinstantiating (handy to set to FALSE if you're not sure if you CAN * currently reinstantiate the singletons at the moment) * @return EE_Registry */ public static function reset($hard = FALSE, $reinstantiate = TRUE) { $instance = self::instance(); $instance->load_helper('Activation'); EEH_Activation::reset(); $instance->CFG = EE_Config::reset($hard, $reinstantiate); $instance->LIB->EE_Data_Migration_Manager = EE_Data_Migration_Manager::reset(); $instance->LIB = new stdClass(); foreach (array_keys($instance->non_abstract_db_models) as $model_name) { $instance->reset_model($model_name); } return $instance; }
public function add_default_admin_only_payments() { global $wpdb; $table_name = $wpdb->prefix . "esp_payment_method"; $user_id = EEH_Activation::get_default_creator_id(); if ($wpdb->get_var("SHOW TABLES LIKE '" . $table_name . "'") == $table_name) { $SQL = "SELECT COUNT( * ) FROM {$table_name}"; $existing_payment_methods = $wpdb->get_var($SQL); $default_admin_only_payment_methods = apply_filters('FHEE__EEH_Activation__add_default_admin_only_payments__default_admin_only_payment_methods', array(__("Bank", 'event_espresso') => __("Bank Draft", 'event_espresso'), __("Cash", 'event_espresso') => __("Cash Delivered Physically", 'event_espresso'), __("Check", 'event_espresso') => __("Paper Check", 'event_espresso'), __("Credit Card", 'event_espresso') => __("Offline Credit Card Payment", 'event_espresso'), __("Debit Card", 'event_espresso') => __("Offline Debit Payment", 'event_espresso'), __("Invoice", 'event_espresso') => __("Invoice received with monies included", 'event_espresso'), __("Money Order", 'event_espresso') => '', __("Paypal", 'event_espresso') => __("Paypal eCheck, Invoice, etc", 'event_espresso'), __('Other', 'event_espresso') => __('Other method of payment', 'event_espresso'))); //make sure we hae payment method records for the following //so admins can record payments for them from the admin page foreach ($default_admin_only_payment_methods as $nicename => $description) { $slug = sanitize_key($nicename); //check that such a payment method exists $exists = $wpdb->get_var($wpdb->prepare("SELECT count(*) FROM {$table_name} WHERE PMD_slug = %s", $slug)); if (!$exists) { $values = array('PMD_type' => 'Admin_Only', 'PMD_name' => $nicename, 'PMD_admin_name' => $nicename, 'PMD_admin_desc' => $description, 'PMD_slug' => $slug, 'PMD_wp_user' => $user_id, 'PMD_scope' => serialize(array('ADMIN'))); $success = $wpdb->insert($table_name, $values, array('%s', '%s', '%s', '%s', '%s', '%d', '%s')); if (!$success) { $this->add_error(sprintf(__("Could not insert new admin-only payment method with values %s during migration", "event_espresso"), $this->_json_encode($values))); } } } } }
/** * Takes care of double-checking that we're not in maintenance mode, and then * initializing this addon's necessary initial data. This is called by default on new activations * and reactivations * @param boolean $verify_schema whether to verify the database's schema for this addon, or just its data. * This is a resource-intensive job so we prefer to only do it when necessary * @return void */ public function initialize_db_if_no_migrations_required($verify_schema = true) { if ($verify_schema === '') { //wp core bug imo: if no args are passed to `do_action('some_hook_name')` besides the hook's name //(ie, no 2nd or 3rd arguments), instead of calling the registered callbacks with no arguments, it //calls them with an argument of an empty string (ie ""), which evaluates to false //so we need to treat the empty string as if nothing had been passed, and should instead use the default $verify_schema = true; } if (EE_Maintenance_Mode::instance()->level() != EE_Maintenance_Mode::level_2_complete_maintenance) { if ($verify_schema) { $this->initialize_db(); } $this->initialize_default_data(); //@todo: this will probably need to be adjusted in 4.4 as the array changed formats I believe EE_Data_Migration_Manager::instance()->update_current_database_state_to(array('slug' => $this->name(), 'version' => $this->version())); /* make sure core's data is a-ok * (at the time of writing, we especially want to verify all the caps are present * because payment method type capabilities are added dynamically, and it's * possible this addon added a payment method. But it's also possible * other data needs to be verified) */ EEH_Activation::initialize_db_content(); update_option('ee_flush_rewrite_rules', TRUE); //in case there are lots of addons being activated at once, let's force garbage collection //to help avoid memory limit errors //EEH_Debug_Tools::instance()->measure_memory( 'db content initialized for ' . get_class( $this), true ); gc_collect_cycles(); } else { //ask the data migration manager to init this addon's data //when migrations are finished because we can't do it now EE_Data_Migration_Manager::instance()->enqueue_db_initialization_for($this->name()); } }
/** * Does the traditional work of setting up the plugin's database and adding default data. * If migration script/process did not exist, this is what would happen on every activation/reactivation/upgrade. * NOTE: if we're in maintenance mode (which would be the case if we detect there are data * migration scripts that need to be run and a version change happens), enqueues core for database initialization, * so that it will be done when migrations are finished * @param boolean $initialize_addons_too if true, we double-check addons' database tables etc too; * however, * @param boolean $verify_db_schema if true will re-check the database tables have the correct schema. This is a resource-intensive job * so we prefer to only do it when necessary * @return void */ public function initialize_db_if_no_migrations_required($initialize_addons_too = FALSE, $verify_schema = true) { $request_type = $this->detect_req_type(); //only initialize system if we're not in maintenance mode. if (EE_Maintenance_Mode::instance()->level() != EE_Maintenance_Mode::level_2_complete_maintenance) { update_option('ee_flush_rewrite_rules', TRUE); EEH_Activation::system_initialization(); if ($verify_schema) { EEH_Activation::initialize_db_and_folders(); } EEH_Activation::initialize_db_content(); if ($initialize_addons_too) { //foreach registered addon, make sure its db is up-to-date too foreach (EE_Registry::instance()->addons as $addon) { $addon->initialize_db_if_no_migrations_required(); } } } else { EE_Data_Migration_Manager::instance()->enqueue_db_initialization_for('Core'); } if ($request_type == EE_System::req_type_new_activation || $request_type == EE_System::req_type_reactivation || $request_type == EE_System::req_type_upgrade) { add_action('AHEE__EE_System__load_CPTs_and_session__start', array($this, 'redirect_to_about_ee'), 9); } }
/** * @return bool */ public function schema_changes_before_migration() { $now_in_mysql = current_time('mysql', true); $table_name = 'esp_answer'; $sql = " ANS_ID INT UNSIGNED NOT NULL AUTO_INCREMENT,\n\t\t\t\t\tREG_ID INT UNSIGNED NOT NULL,\n\t\t\t\t\tQST_ID INT UNSIGNED NOT NULL,\n\t\t\t\t\tANS_value TEXT NOT NULL,\n\t\t\t\t\tPRIMARY KEY (ANS_ID)"; $this->_table_has_not_changed_since_previous($table_name, $sql, 'ENGINE=InnoDB'); $table_name = 'esp_attendee_meta'; $sql = "ATTM_ID INT(10) UNSIGNED NOT\tNULL AUTO_INCREMENT,\n\t\t\t\t\t\tATT_ID BIGINT(20) UNSIGNED NOT NULL,\n\t\t\t\t\t\tATT_fname VARCHAR(45) NOT NULL,\n\t\t\t\t\t\tATT_lname VARCHAR(45) NOT\tNULL,\n\t\t\t\t\t\tATT_address VARCHAR(255) DEFAULT\tNULL,\n\t\t\t\t\t\tATT_address2 VARCHAR(255) DEFAULT\tNULL,\n\t\t\t\t\t\tATT_city VARCHAR(45) DEFAULT\tNULL,\n\t\t\t\t\t\tSTA_ID INT(10) DEFAULT\tNULL,\n\t\t\t\t\t\tCNT_ISO VARCHAR(45) DEFAULT\tNULL,\n\t\t\t\t\t\tATT_zip VARCHAR(12) DEFAULT\tNULL,\n\t\t\t\t\t\tATT_email VARCHAR(255) NOT NULL,\n\t\t\t\t\t\tATT_phone VARCHAR(45) DEFAULT NULL,\n\t\t\t\t\t\t\tPRIMARY KEY (ATTM_ID),\n\t\t\t\t\t\t\t\tKEY ATT_fname (ATT_fname),\n\t\t\t\t\t\t\t\tKEY ATT_lname (ATT_lname),\n\t\t\t\t\t\t\t\tKEY ATT_email (ATT_email)"; $this->_table_has_not_changed_since_previous($table_name, $sql, 'ENGINE=InnoDB '); $table_name = 'esp_country'; $sql = "CNT_ISO VARCHAR(2) COLLATE utf8_bin NOT NULL,\n\t\t\t\t\t CNT_ISO3 VARCHAR(3) COLLATE utf8_bin NOT NULL,\n\t\t\t\t\t RGN_ID TINYINT(3) UNSIGNED DEFAULT NULL,\n\t\t\t\t\t CNT_name VARCHAR(45) COLLATE utf8_bin NOT NULL,\n\t\t\t\t\t CNT_cur_code VARCHAR(6) COLLATE utf8_bin DEFAULT 'USD',\n\t\t\t\t\t CNT_cur_single VARCHAR(45) COLLATE utf8_bin DEFAULT 'dollar',\n\t\t\t\t\t CNT_cur_plural VARCHAR(45) COLLATE utf8_bin DEFAULT 'dollars',\n\t\t\t\t\t CNT_cur_sign VARCHAR(45) COLLATE utf8_bin DEFAULT '\$',\n\t\t\t\t\t CNT_cur_sign_b4 TINYINT(1) DEFAULT '1',\n\t\t\t\t\t CNT_cur_dec_plc TINYINT(3) UNSIGNED NOT NULL DEFAULT '2',\n\t\t\t\t\t CNT_cur_dec_mrk VARCHAR(1) COLLATE utf8_bin NOT NULL DEFAULT '.',\n\t\t\t\t\t CNT_cur_thsnds VARCHAR(1) COLLATE utf8_bin NOT NULL DEFAULT ',',\n\t\t\t\t\t CNT_tel_code VARCHAR(12) COLLATE utf8_bin DEFAULT NULL,\n\t\t\t\t\t CNT_is_EU TINYINT(1) DEFAULT '0',\n\t\t\t\t\t CNT_active TINYINT(1) DEFAULT '0',\n\t\t\t\t\t PRIMARY KEY (CNT_ISO)"; $this->_table_has_not_changed_since_previous($table_name, $sql, 'ENGINE=InnoDB'); $table_name = 'esp_currency'; $sql = "CUR_code VARCHAR(6) COLLATE utf8_bin NOT NULL,\n\t\t\t\tCUR_single VARCHAR(45) COLLATE utf8_bin DEFAULT 'dollar',\n\t\t\t\tCUR_plural VARCHAR(45) COLLATE utf8_bin DEFAULT 'dollars',\n\t\t\t\tCUR_sign VARCHAR(45) COLLATE utf8_bin DEFAULT '\$',\n\t\t\t\tCUR_dec_plc VARCHAR(1) COLLATE utf8_bin NOT NULL DEFAULT '2',\n\t\t\t\tCUR_active TINYINT(1) DEFAULT '0',\n\t\t\t\tPRIMARY KEY (CUR_code)"; $this->_table_has_not_changed_since_previous($table_name, $sql, 'ENGINE=InnoDB'); $table_name = 'esp_currency_payment_method'; $sql = "CPM_ID INT(11) NOT NULL AUTO_INCREMENT,\n\t\t\t\tCUR_code VARCHAR(6) COLLATE utf8_bin NOT NULL,\n\t\t\t\tPMD_ID INT(11) NOT NULL,\n\t\t\t\tPRIMARY KEY (CPM_ID)"; $this->_table_has_not_changed_since_previous($table_name, $sql, 'ENGINE=InnoDB '); $table_name = 'esp_datetime'; $sql = "DTT_ID INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,\n\t\t\t\t EVT_ID BIGINT(20) UNSIGNED NOT NULL,\n\t\t\t\t DTT_name VARCHAR(255) NOT NULL DEFAULT '',\n\t\t\t\t DTT_description TEXT NOT NULL,\n\t\t\t\t DTT_EVT_start DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',\n\t\t\t\t DTT_EVT_end DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',\n\t\t\t\t DTT_reg_limit MEDIUMINT(8) DEFAULT -1,\n\t\t\t\t DTT_sold MEDIUMINT(8) UNSIGNED DEFAULT 0,\n\t\t\t\t DTT_is_primary TINYINT(1) UNSIGNED NOT NULL DEFAULT 0,\n\t\t\t\t DTT_order MEDIUMINT(3) UNSIGNED DEFAULT 0,\n\t\t\t\t DTT_parent INT(10) UNSIGNED DEFAULT 0,\n\t\t\t\t DTT_deleted TINYINT(1) UNSIGNED NOT NULL DEFAULT 0,\n\t\t\t\t\t\tPRIMARY KEY (DTT_ID),\n\t\t\t\t\t\tKEY EVT_ID (EVT_ID),\n\t\t\t\t\t\tKEY DTT_is_primary (DTT_is_primary)"; $this->_table_has_not_changed_since_previous($table_name, $sql, 'ENGINE=InnoDB'); $table_name = 'esp_event_meta'; $sql = "\n\t\t\tEVTM_ID INT NOT NULL AUTO_INCREMENT,\n\t\t\tEVT_ID BIGINT(20) UNSIGNED NOT NULL,\n\t\t\tEVT_display_desc TINYINT(1) UNSIGNED NOT NULL DEFAULT 1,\n\t\t\tEVT_display_ticket_selector TINYINT(1) UNSIGNED NOT NULL DEFAULT 1,\n\t\t\tEVT_visible_on DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',\n\t\t\tEVT_default_registration_status VARCHAR(3),\n\t\t\tEVT_phone VARCHAR(45) DEFAULT NULL,\n\t\t\tEVT_additional_limit TINYINT UNSIGNED NULL,\n\t\t\tEVT_member_only TINYINT(1) UNSIGNED NOT NULL DEFAULT 0,\n\t\t\tEVT_allow_overflow TINYINT(1) UNSIGNED NOT NULL DEFAULT 0,\n\t\t\tEVT_timezone_string VARCHAR(45) NULL,\n\t\t\tEVT_external_URL VARCHAR(200) NULL,\n\t\t\tEVT_donations TINYINT(1) NULL,\n\t\t\tPRIMARY KEY (EVTM_ID)"; $this->_table_has_not_changed_since_previous($table_name, $sql, 'ENGINE=InnoDB'); $table_name = 'esp_event_question_group'; $sql = "EQG_ID INT UNSIGNED NOT NULL AUTO_INCREMENT,\n\t\t\t\t\tEVT_ID BIGINT(20) UNSIGNED NOT NULL,\n\t\t\t\t\tQSG_ID INT UNSIGNED NOT NULL,\n\t\t\t\t\tEQG_primary TINYINT(1) UNSIGNED NOT NULL DEFAULT 0,\n\t\t\t\t\tPRIMARY KEY (EQG_ID)"; $this->_table_has_not_changed_since_previous($table_name, $sql, 'ENGINE=InnoDB'); $table_name = 'esp_event_venue'; $sql = "EVV_ID INT(11) NOT NULL AUTO_INCREMENT,\n\t\t\t\tEVT_ID BIGINT(20) UNSIGNED NOT NULL,\n\t\t\t\tVNU_ID BIGINT(20) UNSIGNED NOT NULL,\n\t\t\t\tEVV_primary TINYINT(1) UNSIGNED NOT NULL DEFAULT 0,\n\t\t\t\tPRIMARY KEY (EVV_ID)"; $this->_table_has_not_changed_since_previous($table_name, $sql, 'ENGINE=InnoDB'); $table_name = 'esp_extra_meta'; $sql = "EXM_ID INT(11) NOT NULL AUTO_INCREMENT,\n\t\t\t\tOBJ_ID INT(11) DEFAULT NULL,\n\t\t\t\tEXM_type VARCHAR(45) DEFAULT NULL,\n\t\t\t\tEXM_key VARCHAR(45) DEFAULT NULL,\n\t\t\t\tEXM_value TEXT,\n\t\t\t\tPRIMARY KEY (EXM_ID)"; $this->_table_has_not_changed_since_previous($table_name, $sql, 'ENGINE=InnoDB'); $table_name = 'esp_line_item'; $sql = "LIN_ID INT(11) NOT NULL AUTO_INCREMENT,\n\t\t\t\tLIN_code VARCHAR(245) NOT NULL DEFAULT '',\n\t\t\t\tTXN_ID INT(11) DEFAULT NULL,\n\t\t\t\tLIN_name VARCHAR(245) NOT NULL DEFAULT '',\n\t\t\t\tLIN_desc TEXT DEFAULT NULL,\n\t\t\t\tLIN_unit_price DECIMAL(10,3) DEFAULT NULL,\n\t\t\t\tLIN_percent DECIMAL(10,3) DEFAULT NULL,\n\t\t\t\tLIN_is_taxable TINYINT(1) DEFAULT 0,\n\t\t\t\tLIN_order int DEFAULT 0,\n\t\t\t\tLIN_parent int DEFAULT 0,\n\t\t\t\tLIN_type VARCHAR(25) NOT NULL,\n\t\t\t\tLIN_total DECIMAL(10,3) DEFAULT NULL,\n\t\t\t\tLIN_quantity INT(10) DEFAULT NULL,\n\t\t\t\tOBJ_ID INT(11) DEFAULT NULL,\n\t\t\t\tOBJ_type VARCHAR(45)DEFAULT NULL,\n\t\t\t\tLIN_timestamp DATETIME NOT NULL DEFAULT '{$now_in_mysql}',\n\t\t\t\tPRIMARY KEY (LIN_ID)"; $this->_table_is_changed_in_this_version($table_name, $sql, 'ENGINE=InnoDB'); $table_name = 'esp_log'; $sql = "LOG_ID INT(11) NOT NULL AUTO_INCREMENT,\n\t\t\t\tLOG_time DATETIME DEFAULT NULL,\n\t\t\t\tOBJ_ID VARCHAR(45) DEFAULT NULL,\n\t\t\t\tOBJ_type VARCHAR(45) DEFAULT NULL,\n\t\t\t\tLOG_type VARCHAR(45) DEFAULT NULL,\n\t\t\t\tLOG_message TEXT,\n\t\t\t\tLOG_wp_user INT(11) DEFAULT NULL,\n\t\t\t\tPRIMARY KEY (LOG_ID)"; $this->_table_has_not_changed_since_previous($table_name, $sql, 'ENGINE=InnoDB'); $table_name = 'esp_message_template'; $sql = "MTP_ID INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,\n\t\t\t\t\tGRP_ID INT(10) UNSIGNED NOT NULL,\n\t\t\t\t\tMTP_context VARCHAR(50) NOT NULL,\n\t\t\t\t\tMTP_template_field VARCHAR(30) NOT NULL,\n\t\t\t\t\tMTP_content TEXT NOT NULL,\n\t\t\t\t\tPRIMARY KEY (MTP_ID),\n\t\t\t\t\tKEY GRP_ID (GRP_ID)"; $this->_table_has_not_changed_since_previous($table_name, $sql, 'ENGINE=InnoDB'); EEH_Activation::drop_index('esp_message_template_group', 'EVT_ID'); $table_name = 'esp_message_template_group'; $sql = "GRP_ID INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,\n\t\t\t\t\tMTP_user_id INT(10) NOT NULL DEFAULT '1',\n\t\t\t\t\tMTP_name VARCHAR(245) NOT NULL DEFAULT '',\n\t\t\t\t\tMTP_description VARCHAR(245) NOT NULL DEFAULT '',\n\t\t\t\t\tMTP_messenger VARCHAR(30) NOT NULL,\n\t\t\t\t\tMTP_message_type VARCHAR(50) NOT NULL,\n\t\t\t\t\tMTP_is_global TINYINT(1) NOT NULL DEFAULT '0',\n\t\t\t\t\tMTP_is_override TINYINT(1) NOT NULL DEFAULT '0',\n\t\t\t\t\tMTP_deleted TINYINT(1) NOT NULL DEFAULT '0',\n\t\t\t\t\tMTP_is_active TINYINT(1) NOT NULL DEFAULT '1',\n\t\t\t\t\tPRIMARY KEY (GRP_ID),\n\t\t\t\t\tKEY MTP_user_id (MTP_user_id)"; $this->_table_has_not_changed_since_previous($table_name, $sql, 'ENGINE=InnoDB'); $table_name = 'esp_event_message_template'; $sql = "EMT_ID BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,\n\t\t\t\t\tEVT_ID BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,\n\t\t\t\t\tGRP_ID INT(10) UNSIGNED NOT NULL DEFAULT 0,\n\t\t\t\t\tPRIMARY KEY (EMT_ID),\n\t\t\t\t\tKEY EVT_ID (EVT_ID),\n\t\t\t\t\tKEY GRP_ID (GRP_ID)"; $this->_table_has_not_changed_since_previous($table_name, $sql, 'ENGINE=InnoDB'); $table_name = 'esp_payment'; $sql = "PAY_ID INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,\n\t\t\t\t\tTXN_ID INT(10) UNSIGNED DEFAULT NULL,\n\t\t\t\t\tSTS_ID VARCHAR(3) COLLATE utf8_bin DEFAULT NULL,\n\t\t\t\t\tPAY_timestamp DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',\n\t\t\t\t\tPAY_source VARCHAR(45) COLLATE utf8_bin DEFAULT NULL,\n\t\t\t\t\tPAY_amount DECIMAL(10,3) DEFAULT NULL,\n\t\t\t\t\tPMD_ID INT(11) DEFAULT NULL,\n\t\t\t\t\tPAY_gateway_response TEXT COLLATE utf8_bin,\n\t\t\t\t\tPAY_txn_id_chq_nmbr VARCHAR(32) COLLATE utf8_bin DEFAULT NULL,\n\t\t\t\t\tPAY_po_number VARCHAR(32) COLLATE utf8_bin DEFAULT NULL,\n\t\t\t\t\tPAY_extra_accntng VARCHAR(45) COLLATE utf8_bin DEFAULT NULL,\n\t\t\t\t\tPAY_details TEXT COLLATE utf8_bin,\n\t\t\t\t\tPAY_redirect_url VARCHAR(300),\n\t\t\t\t\tPAY_redirect_args TEXT,\n\t\t\t\t\tPRIMARY KEY (PAY_ID),\n\t\t\t\t\tKEY TXN_ID (TXN_ID),\n\t\t\t\t\tKEY PAY_timestamp (PAY_timestamp)"; $this->_table_has_not_changed_since_previous($table_name, $sql, 'ENGINE=InnoDB '); $table_name = 'esp_payment_method'; $sql = "PMD_ID INT(11) NOT NULL AUTO_INCREMENT,\n\t\t\t\tPMD_type VARCHAR(124) DEFAULT NULL,\n\t\t\t\tPMD_name VARCHAR(255) DEFAULT NULL,\n\t\t\t\tPMD_desc TEXT,\n\t\t\t\tPMD_admin_name VARCHAR(255) DEFAULT NULL,\n\t\t\t\tPMD_admin_desc TEXT,\n\t\t\t\tPMD_slug VARCHAR(124) DEFAULT NULL,\n\t\t\t\tPMD_order INT(11) DEFAULT NULL,\n\t\t\t\tPMD_debug_mode TINYINT(1) NOT NULL DEFAULT '0',\n\t\t\t\tPMD_wp_user INT(11) NOT NULL DEFAULT '0',\n\t\t\t\tPMD_open_by_default TINYINT(1) NOT NULL DEFAULT '0',\n\t\t\t\tPMD_button_url VARCHAR(1012) DEFAULT NULL,\n\t\t\t\tPMD_scope VARCHAR(255) NULL DEFAULT 'frontend',\n\t\t\t\tPRIMARY KEY (PMD_ID),\n\t\t\t\tUNIQUE KEY PMD_slug_UNIQUE (PMD_slug)"; $this->_table_has_not_changed_since_previous($table_name, $sql, 'ENGINE=InnoDB '); $table_name = "esp_ticket_price"; $sql = "TKP_ID INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,\n\t\t\t\t\t TKT_ID INT(10) UNSIGNED NOT NULL,\n\t\t\t\t\t PRC_ID INT(10) UNSIGNED NOT NULL,\n\t\t\t\t\t PRIMARY KEY (TKP_ID)"; $this->_table_has_not_changed_since_previous($table_name, $sql, 'ENGINE=InnoDB'); $table_name = "esp_datetime_ticket"; $sql = "DTK_ID INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,\n\t\t\t\t\t DTT_ID INT(10) UNSIGNED NOT NULL,\n\t\t\t\t\t TKT_ID INT(10) UNSIGNED NOT NULL,\n\t\t\t\t\t PRIMARY KEY (DTK_ID)"; $this->_table_has_not_changed_since_previous($table_name, $sql, 'ENGINE=InnoDB'); $table_name = "esp_ticket_template"; $sql = "TTM_ID INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,\n\t\t\t\t\t TTM_name VARCHAR(45) NOT NULL,\n\t\t\t\t\t TTM_description TEXT,\n\t\t\t\t\t TTM_file VARCHAR(45),\n\t\t\t\t\t PRIMARY KEY (TTM_ID)"; $this->_table_has_not_changed_since_previous($table_name, $sql, 'ENGINE=InnoDB'); $table_name = 'esp_question'; $sql = 'QST_ID INT UNSIGNED NOT NULL AUTO_INCREMENT, QST_display_text TEXT NOT NULL, QST_admin_label VARCHAR(255) NOT NULL, QST_system VARCHAR(25) DEFAULT NULL, QST_type VARCHAR(25) NOT NULL DEFAULT "TEXT", QST_required TINYINT(1) UNSIGNED NOT NULL DEFAULT 0, QST_required_text VARCHAR(100) NULL, QST_order TINYINT UNSIGNED NOT NULL DEFAULT 0, QST_admin_only TINYINT(1) NOT NULL DEFAULT 0, QST_wp_user BIGINT UNSIGNED NULL, QST_deleted TINYINT UNSIGNED NOT NULL DEFAULT 0, PRIMARY KEY (QST_ID)'; $this->_table_has_not_changed_since_previous($table_name, $sql, 'ENGINE=InnoDB'); $table_name = 'esp_question_group_question'; $sql = "QGQ_ID INT UNSIGNED NOT NULL AUTO_INCREMENT,\n\t\t\t\t\tQSG_ID INT UNSIGNED NOT NULL,\n\t\t\t\t\tQST_ID INT UNSIGNED NOT NULL,\n\t\t\t\t\tQGQ_order INT UNSIGNED NOT NULL DEFAULT 0,\n\t\t\t\t\tPRIMARY KEY (QGQ_ID) "; $this->_table_has_not_changed_since_previous($table_name, $sql, 'ENGINE=InnoDB'); $table_name = 'esp_question_option'; $sql = "QSO_ID INT UNSIGNED NOT NULL AUTO_INCREMENT,\n\t\t\t\t\tQSO_value VARCHAR(255) NOT NULL,\n\t\t\t\t\tQSO_desc TEXT NOT NULL,\n\t\t\t\t\tQST_ID INT UNSIGNED NOT NULL,\n\t\t\t\t\tQSO_order INT UNSIGNED NOT NULL DEFAULT 0,\n\t\t\t\t\tQSO_deleted TINYINT(1) UNSIGNED NOT NULL DEFAULT 0,\n\t\t\t\t\tPRIMARY KEY (QSO_ID)"; $this->_table_has_not_changed_since_previous($table_name, $sql, 'ENGINE=InnoDB'); $table_name = 'esp_registration'; $sql = "REG_ID INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,\n\t\t\t\t\t EVT_ID BIGINT(20) UNSIGNED NOT NULL,\n\t\t\t\t\t ATT_ID BIGINT(20) UNSIGNED NOT NULL,\n\t\t\t\t\t TXN_ID INT(10) UNSIGNED NOT NULL,\n\t\t\t\t\t TKT_ID INT(10) UNSIGNED NOT NULL,\n\t\t\t\t\t STS_ID VARCHAR(3) COLLATE utf8_bin NOT NULL DEFAULT 'RPP',\n\t\t\t\t\t REG_date DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',\n\t\t\t\t\t REG_final_price DECIMAL(10,3) NOT NULL DEFAULT '0.00',\n\t\t\t\t\t REG_paid DECIMAL(10,3) NOT NULL DEFAULT '0.00',\n\t\t\t\t\t REG_session VARCHAR(45) COLLATE utf8_bin NOT NULL,\n\t\t\t\t\t REG_code VARCHAR(45) COLLATE utf8_bin DEFAULT NULL,\n\t\t\t\t\t REG_url_link VARCHAR(64) COLLATE utf8_bin DEFAULT NULL,\n\t\t\t\t\t REG_count TINYINT UNSIGNED DEFAULT '1',\n\t\t\t\t\t REG_group_size TINYINT UNSIGNED DEFAULT '1',\n\t\t\t\t\t REG_att_is_going TINYINT(1) DEFAULT '0',\n\t\t\t\t\t REG_deleted TINYINT(1) DEFAULT '0',\n\t\t\t\t\t PRIMARY KEY (REG_ID),\n\t\t\t\t\t KEY EVT_ID (EVT_ID),\n\t\t\t\t\t KEY ATT_ID (ATT_ID),\n\t\t\t\t\t KEY TXN_ID (TXN_ID),\n\t\t\t\t\t KEY TKT_ID (TKT_ID),\n\t\t\t\t\t KEY STS_ID (STS_ID),\n\t\t\t\t\t KEY REG_url_link (REG_url_link),\n\t\t\t\t\t KEY REG_code (REG_code)"; $this->_table_has_not_changed_since_previous($table_name, $sql, 'ENGINE=InnoDB '); $table_name = 'esp_registration_payment'; $sql = "RPY_ID INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,\n\t\t\t\t\t REG_ID INT(10) UNSIGNED NOT NULL,\n\t\t\t\t\t PAY_ID INT(10) UNSIGNED NULL,\n\t\t\t\t\t RPY_amount DECIMAL(10,3) NOT NULL DEFAULT '0.00',\n\t\t\t\t\t PRIMARY KEY (RPY_ID),\n\t\t\t\t\t KEY REG_ID (REG_ID),\n\t\t\t\t\t KEY PAY_ID (PAY_ID)"; $this->_table_has_not_changed_since_previous($table_name, $sql, 'ENGINE=InnoDB '); $table_name = 'esp_checkin'; $sql = "CHK_ID INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,\n\t\t\t\t\tREG_ID INT(10) UNSIGNED NOT NULL,\n\t\t\t\t\tDTT_ID INT(10) UNSIGNED NOT NULL,\n\t\t\t\t\tCHK_in TINYINT(1) UNSIGNED NOT NULL DEFAULT 1,\n\t\t\t\t\tCHK_timestamp DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',\n\t\t\t\t\tPRIMARY KEY (CHK_ID)"; $this->_table_has_not_changed_since_previous($table_name, $sql, 'ENGINE=InnoDB'); $table_name = 'esp_state'; $sql = "STA_ID smallint(5) UNSIGNED NOT NULL AUTO_INCREMENT,\n\t\t\t\t\t CNT_ISO VARCHAR(2) COLLATE utf8_bin NOT NULL,\n\t\t\t\t\t STA_abbrev VARCHAR(24) COLLATE utf8_bin NOT NULL,\n\t\t\t\t\t STA_name VARCHAR(100) COLLATE utf8_bin NOT NULL,\n\t\t\t\t\t STA_active TINYINT(1) DEFAULT '1',\n\t\t\t\t\t PRIMARY KEY (STA_ID)"; $this->_table_has_not_changed_since_previous($table_name, $sql, 'ENGINE=InnoDB'); $table_name = 'esp_status'; $sql = "STS_ID VARCHAR(3) COLLATE utf8_bin NOT NULL,\n\t\t\t\t\t STS_code VARCHAR(45) COLLATE utf8_bin NOT NULL,\n\t\t\t\t\t STS_type set('event','registration','transaction','payment','email') COLLATE utf8_bin NOT NULL,\n\t\t\t\t\t STS_can_edit TINYINT(1) NOT NULL DEFAULT 0,\n\t\t\t\t\t STS_desc TINYTEXT COLLATE utf8_bin,\n\t\t\t\t\t STS_open TINYINT(1) NOT NULL DEFAULT 1,\n\t\t\t\t\t UNIQUE KEY STS_ID_UNIQUE (STS_ID),\n\t\t\t\t\t KEY STS_type (STS_type)"; $this->_table_has_not_changed_since_previous($table_name, $sql, 'ENGINE=InnoDB'); $table_name = 'esp_transaction'; $sql = "TXN_ID INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,\n\t\t\t\t\t TXN_timestamp DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',\n\t\t\t\t\t TXN_total DECIMAL(10,3) DEFAULT '0.00',\n\t\t\t\t\t TXN_paid DECIMAL(10,3) NOT NULL DEFAULT '0.00',\n\t\t\t\t\t STS_ID VARCHAR(3) NOT NULL DEFAULT 'TOP',\n\t\t\t\t\t TXN_session_data TEXT COLLATE utf8_bin,\n\t\t\t\t\t TXN_hash_salt VARCHAR(250) COLLATE utf8_bin DEFAULT NULL,\n\t\t\t\t\t PMD_ID INT(11) DEFAULT NULL,\n\t\t\t\t\t TXN_reg_steps TEXT,\n\t\t\t\t\t PRIMARY KEY (TXN_ID),\n\t\t\t\t\t KEY TXN_timestamp (TXN_timestamp),\n\t\t\t\t\t KEY STS_ID (STS_ID)"; $this->_table_has_not_changed_since_previous($table_name, $sql, 'ENGINE=InnoDB'); $table_name = 'esp_venue_meta'; $sql = "VNUM_ID INT(11) NOT NULL AUTO_INCREMENT,\n\t\t\tVNU_ID BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,\n\t\t\tVNU_address VARCHAR(255) DEFAULT NULL,\n\t\t\tVNU_address2 VARCHAR(255) DEFAULT NULL,\n\t\t\tVNU_city VARCHAR(100) DEFAULT NULL,\n\t\t\tSTA_ID INT(11) DEFAULT NULL,\n\t\t\tCNT_ISO VARCHAR(2) DEFAULT NULL,\n\t\t\tVNU_zip VARCHAR(45) DEFAULT NULL,\n\t\t\tVNU_phone VARCHAR(45) DEFAULT NULL,\n\t\t\tVNU_capacity INT(11) DEFAULT NULL,\n\t\t\tVNU_url VARCHAR(255) DEFAULT NULL,\n\t\t\tVNU_virtual_phone VARCHAR(45) DEFAULT NULL,\n\t\t\tVNU_virtual_url VARCHAR(255) DEFAULT NULL,\n\t\t\tVNU_enable_for_gmap TINYINT(1) DEFAULT '0',\n\t\t\tVNU_google_map_link VARCHAR(255) DEFAULT NULL,\n\t\t\tPRIMARY KEY (VNUM_ID),\n\t\t\tKEY STA_ID (STA_ID),\n\t\t\tKEY CNT_ISO (CNT_ISO)"; $this->_table_has_not_changed_since_previous($table_name, $sql, 'ENGINE=InnoDB'); //modified tables $table_name = "esp_price"; $sql = "PRC_ID INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,\n\t\t\t\t\t PRT_ID TINYINT(3) UNSIGNED NOT NULL,\n\t\t\t\t\t PRC_amount DECIMAL(10,3) NOT NULL DEFAULT '0.00',\n\t\t\t\t\t PRC_name VARCHAR(245) NOT NULL,\n\t\t\t\t\t PRC_desc TEXT,\n\t\t\t\t\t PRC_is_default TINYINT(1) UNSIGNED NOT NULL DEFAULT '1',\n\t\t\t\t\t PRC_overrides INT(10) UNSIGNED DEFAULT NULL,\n\t\t\t\t\t PRC_deleted TINYINT(1) UNSIGNED NOT NULL DEFAULT '0',\n\t\t\t\t\t PRC_order TINYINT(3) UNSIGNED NOT NULL DEFAULT '0',\n\t\t\t\t\t PRC_wp_user BIGINT UNSIGNED NULL,\n\t\t\t\t\t PRC_parent INT(10) UNSIGNED DEFAULT 0,\n\t\t\t\t\t PRIMARY KEY (PRC_ID)"; $this->_table_has_not_changed_since_previous($table_name, $sql, 'ENGINE=InnoDB'); $table_name = "esp_price_type"; $sql = "PRT_ID TINYINT(3) UNSIGNED NOT NULL AUTO_INCREMENT,\n\t\t\t\t PRT_name VARCHAR(45) NOT NULL,\n\t\t\t\t PBT_ID TINYINT(3) UNSIGNED NOT NULL DEFAULT '1',\n\t\t\t\t PRT_is_percent TINYINT(1) NOT NULL DEFAULT '0',\n\t\t\t\t PRT_order TINYINT UNSIGNED NULL,\n\t\t\t\t PRT_wp_user BIGINT UNSIGNED NULL,\n\t\t\t\t PRT_deleted TINYINT(1) NOT NULL DEFAULT '0',\n\t\t\t\t UNIQUE KEY PRT_name_UNIQUE (PRT_name),\n\t\t\t\t PRIMARY KEY (PRT_ID)"; $this->_table_has_not_changed_since_previous($table_name, $sql, 'ENGINE=InnoDB '); $table_name = "esp_ticket"; $sql = "TKT_ID INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,\n\t\t\t\t\t TTM_ID INT(10) UNSIGNED NOT NULL,\n\t\t\t\t\t TKT_name VARCHAR(245) NOT NULL DEFAULT '',\n\t\t\t\t\t TKT_description TEXT NOT NULL,\n\t\t\t\t\t TKT_qty MEDIUMINT(8) DEFAULT NULL,\n\t\t\t\t\t TKT_sold MEDIUMINT(8) NOT NULL DEFAULT 0,\n\t\t\t\t\t TKT_uses TINYINT NOT NULL DEFAULT '-1',\n\t\t\t\t\t TKT_required TINYINT UNSIGNED NOT NULL DEFAULT '0',\n\t\t\t\t\t TKT_min TINYINT UNSIGNED NOT NULL DEFAULT '0',\n\t\t\t\t\t TKT_max TINYINT NOT NULL DEFAULT '-1',\n\t\t\t\t\t TKT_price DECIMAL(10,3) NOT NULL DEFAULT '0.00',\n\t\t\t\t\t TKT_start_date DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',\n\t\t\t\t\t TKT_end_date DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',\n\t\t\t\t\t TKT_taxable TINYINT(1) UNSIGNED NOT NULL DEFAULT '0',\n\t\t\t\t\t TKT_order TINYINT(3) UNSIGNED NOT NULL DEFAULT '0',\n\t\t\t\t\t TKT_row TINYINT(3) UNSIGNED NOT NULL DEFAULT '0',\n\t\t\t\t\t TKT_is_default TINYINT(1) UNSIGNED NOT NULL DEFAULT '0',\n\t\t\t\t\t TKT_wp_user BIGINT UNSIGNED NULL,\n\t\t\t\t\t TKT_parent INT(10) UNSIGNED DEFAULT '0',\n\t\t\t\t\t TKT_deleted TINYINT(1) NOT NULL DEFAULT '0',\n\t\t\t\t\t PRIMARY KEY (TKT_ID)"; $this->_table_has_not_changed_since_previous($table_name, $sql, 'ENGINE=InnoDB'); EEH_Activation::drop_index('esp_question_group', 'QSG_identifier_UNIQUE'); $table_name = 'esp_question_group'; $sql = 'QSG_ID INT UNSIGNED NOT NULL AUTO_INCREMENT, QSG_name VARCHAR(255) NOT NULL, QSG_identifier VARCHAR(100) NOT NULL, QSG_desc TEXT NULL, QSG_order TINYINT UNSIGNED NOT NULL DEFAULT 0, QSG_show_group_name TINYINT(1) NOT NULL, QSG_show_group_desc TINYINT(1) NOT NULL, QSG_system TINYINT NULL, QSG_deleted TINYINT(1) UNSIGNED NOT NULL DEFAULT 0, QSG_wp_user BIGINT UNSIGNED NULL, PRIMARY KEY (QSG_ID), UNIQUE KEY QSG_identifier_UNIQUE (QSG_identifier ASC)'; $this->_table_has_not_changed_since_previous($table_name, $sql, 'ENGINE=InnoDB'); /** @var EE_DMS_Core_4_1_0 $script_4_1_defaults */ $script_4_1_defaults = EE_Registry::instance()->load_dms('Core_4_1_0'); //(because many need to convert old string states to foreign keys into the states table) $script_4_1_defaults->insert_default_states(); $script_4_1_defaults->insert_default_countries(); /** @var EE_DMS_Core_4_5_0 $script_4_5_defaults */ $script_4_5_defaults = EE_Registry::instance()->load_dms('Core_4_5_0'); $script_4_5_defaults->insert_default_price_types(); $script_4_5_defaults->insert_default_prices(); $script_4_5_defaults->insert_default_tickets(); /** @var EE_DMS_Core_4_6_0 $script_4_6_defaults */ $script_4_6_defaults = EE_Registry::instance()->load_dms('Core_4_6_0'); $script_4_6_defaults->add_default_admin_only_payments(); $script_4_6_defaults->insert_default_currencies(); $this->verify_new_countries(); $this->verify_new_currencies(); return true; }
/** * Resets the cache on EEH_Activation */ public static function reset() { self::$_default_creator_id = NULL; self::$_initialized_db_content_already_in_this_request = false; }
/** * Just wraps EEH_Activation::create_table, but catches any errors it may throw and adds them as errors on the DMS * @param string $table_name * @param string $table_definition_sql * @param string $engine_string * @param boolean $drop_pre_existing_tables */ private function _create_table_and_catch_errors($table_name, $table_definition_sql, $engine_string = 'ENGINE=MyISAM', $drop_pre_existing_tables = FALSE) { EE_Registry::instance()->load_helper('Activation'); try { EEH_Activation::create_table($table_name, $table_definition_sql, $engine_string, $drop_pre_existing_tables); } catch (EE_Error $e) { $message = $e->getMessage() . '<br>Stack Trace:' . $e->getTraceAsString(); $this->add_error($message); $this->_feedback_message .= $message; } }
protected function _espresso_page_settings() { // Check to make sure all of the main pages are setup properly, // if not create the default pages and display an admin notice EEH_Activation::verify_default_pages_exist(); $this->_transient_garbage_collection(); $this->_template_args['values'] = $this->_yes_no_values; $this->_template_args['reg_page_id'] = isset(EE_Registry::instance()->CFG->core->reg_page_id) ? EE_Registry::instance()->CFG->core->reg_page_id : NULL; $this->_template_args['reg_page_obj'] = isset(EE_Registry::instance()->CFG->core->reg_page_id) ? get_page(EE_Registry::instance()->CFG->core->reg_page_id) : FALSE; $this->_template_args['txn_page_id'] = isset(EE_Registry::instance()->CFG->core->txn_page_id) ? EE_Registry::instance()->CFG->core->txn_page_id : NULL; $this->_template_args['txn_page_obj'] = isset(EE_Registry::instance()->CFG->core->txn_page_id) ? get_page(EE_Registry::instance()->CFG->core->txn_page_id) : FALSE; $this->_template_args['thank_you_page_id'] = isset(EE_Registry::instance()->CFG->core->thank_you_page_id) ? EE_Registry::instance()->CFG->core->thank_you_page_id : NULL; $this->_template_args['thank_you_page_obj'] = isset(EE_Registry::instance()->CFG->core->thank_you_page_id) ? get_page(EE_Registry::instance()->CFG->core->thank_you_page_id) : FALSE; $this->_template_args['cancel_page_id'] = isset(EE_Registry::instance()->CFG->core->cancel_page_id) ? EE_Registry::instance()->CFG->core->cancel_page_id : NULL; $this->_template_args['cancel_page_obj'] = isset(EE_Registry::instance()->CFG->core->cancel_page_id) ? get_page(EE_Registry::instance()->CFG->core->cancel_page_id) : FALSE; $this->_set_add_edit_form_tags('update_espresso_page_settings'); $this->_set_publish_post_box_vars(NULL, FALSE, FALSE, NULL, FALSE); $this->_template_args['admin_page_content'] = EEH_Template::display_template(GEN_SET_TEMPLATE_PATH . 'espresso_page_settings.template.php', $this->_template_args, TRUE); $this->display_admin_page_with_sidebar(); }
/** * sets up EE4 to rerun the migrations from ee3 to ee4 */ public function _rerun_migration_from_ee3() { EE_Registry::instance()->load_helper('Activation'); EE_Maintenance_Mode::instance()->set_maintenance_level(EE_Maintenance_Mode::level_0_not_in_maintenance); EEH_Activation::delete_all_espresso_cpt_data(); EEH_Activation::delete_all_espresso_tables_and_data(false); //set the db state to something that will require migrations update_option(EE_Data_Migration_Manager::current_database_state, '3.1.36.0'); EE_Maintenance_Mode::instance()->set_maintenance_level(EE_Maintenance_Mode::level_2_complete_maintenance); $this->_redirect_after_action(true, __("Database", 'event_espresso'), __("reset", 'event_espresso')); }