File "latest.php"
Full path: /home/kosmetik/public_html/wp-content/plugins/redirection/database/schema/latest.php
File
size: 7.2 B
MIME-type: text/x-php
Charset: utf-8
Download Open Edit Advanced Editor Back
<?php
class Red_Latest_Database extends Red_Database_Upgrader
{
public function get_stages()
{
return ['create_tables' => __('Install Redirection tables', 'redirection'), 'create_groups' => __('Create basic data', 'redirection')];
}
public function install()
{
global $wpdb;
foreach ($this->get_stages() as $stage => $info) {
$result = $this->{$stage}($wpdb);
if (is_wp_error($result)) {
if ($wpdb->last_error) {
$result->add_data($wpdb->last_error);
}
return $result;
}
}
red_set_options(array('database' => REDIRECTION_DB_VERSION));
return true;
}
public function remove()
{
global $wpdb;
$wpdb->query("DROP TABLE IF EXISTS {$wpdb->prefix}redirection_items");
$wpdb->query("DROP TABLE IF EXISTS {$wpdb->prefix}redirection_logs");
$wpdb->query("DROP TABLE IF EXISTS {$wpdb->prefix}redirection_groups");
$wpdb->query("DROP TABLE IF EXISTS {$wpdb->prefix}redirection_modules");
$wpdb->query("DROP TABLE IF EXISTS {$wpdb->prefix}redirection_404");
delete_option('redirection_lookup');
delete_option('redirection_post');
delete_option('redirection_root');
delete_option('redirection_index');
delete_option('redirection_options');
delete_option(Red_Database_Status::OLD_DB_VERSION);
}
public function get_missing_tables()
{
global $wpdb;
$tables = array_keys($this->get_all_tables());
$missing = [];
foreach ($tables as $table) {
$result = $wpdb->query($wpdb->prepare('SHOW TABLES LIKE %s', $table));
if (intval($result, 10) !== 1) {
$missing[] = $table;
}
}
return $missing;
}
public function get_table_schema()
{
global $wpdb;
$tables = array_keys($this->get_all_tables());
$show = array();
foreach ($tables as $table) {
$row = $wpdb->get_row('SHOW CREATE TABLE ' . $table, ARRAY_N);
if ($row) {
$show = array_merge($show, explode("\n", $row[1]));
$show[] = '';
} else {
$show[] = sprintf(__('Table "%s" is missing', 'redirection'), $table);
}
}
return $show;
}
public function get_all_tables()
{
global $wpdb;
$charset_collate = $this->get_charset();
return array("{$wpdb->prefix}redirection_items" => $this->create_items_sql($wpdb->prefix, $charset_collate), "{$wpdb->prefix}redirection_groups" => $this->create_groups_sql($wpdb->prefix, $charset_collate), "{$wpdb->prefix}redirection_logs" => $this->create_log_sql($wpdb->prefix, $charset_collate), "{$wpdb->prefix}redirection_404" => $this->create_404_sql($wpdb->prefix, $charset_collate));
}
public function create_groups($wpdb, $is_live = true)
{
if (!$is_live) {
return true;
}
$defaults = [['name' => __('Redirections', 'redirection'), 'module_id' => 1, 'position' => 0], ['name' => __('Modified Posts', 'redirection'), 'module_id' => 1, 'position' => 1]];
$existing_groups = $wpdb->get_var("SELECT COUNT(*) FROM {$wpdb->prefix}redirection_groups");
if (intval($existing_groups, 10) === 0) {
$wpdb->insert($wpdb->prefix . 'redirection_groups', $defaults[0]);
$wpdb->insert($wpdb->prefix . 'redirection_groups', $defaults[1]);
}
$group = $wpdb->get_row("SELECT * FROM {$wpdb->prefix}redirection_groups LIMIT 1");
if ($group) {
red_set_options(array('last_group_id' => $group->id));
}
return true;
}
public function create_tables($wpdb)
{
global $wpdb;
foreach ($this->get_all_tables() as $table => $sql) {
$sql = preg_replace('/[ \\t]{2,}/', '', $sql);
$this->do_query($wpdb, $sql);
}
return true;
}
private function create_items_sql($prefix, $charset_collate)
{
return "CREATE TABLE IF NOT EXISTS `{$prefix}redirection_items` (\n\t\t\t`id` int(11) unsigned NOT NULL AUTO_INCREMENT,\n\t\t\t`url` mediumtext NOT NULL,\n\t\t\t`match_url` VARCHAR(2000) DEFAULT NULL,\n \t\t\t`match_data` TEXT,\n\t\t\t`regex` INT(11) unsigned NOT NULL DEFAULT '0',\n\t\t\t`position` INT(11) unsigned NOT NULL DEFAULT '0',\n\t\t\t`last_count` INT(10) unsigned NOT NULL DEFAULT '0',\n\t\t\t`last_access` datetime NOT NULL DEFAULT '1970-01-01 00:00:00',\n\t\t\t`group_id` INT(11) NOT NULL DEFAULT '0',\n\t\t\t`status` enum('enabled','disabled') NOT NULL DEFAULT 'enabled',\n\t\t\t`action_type` VARCHAR(20) NOT NULL,\n\t\t\t`action_code` INT(11) unsigned NOT NULL,\n\t\t\t`action_data` MEDIUMTEXT,\n\t\t\t`match_type` VARCHAR(20) NOT NULL,\n\t\t\t`title` TEXT,\n\t\t\tPRIMARY KEY (`id`),\n\t\t\tKEY `url` (`url`(191)),\n\t\t\tKEY `status` (`status`),\n\t\t\tKEY `regex` (`regex`),\n\t\t\tKEY `group_idpos` (`group_id`,`position`),\n\t\t\tKEY `group` (`group_id`),\n\t\t\tKEY `match_url` (`match_url`(191))\n\t ) {$charset_collate}";
}
private function create_groups_sql($prefix, $charset_collate)
{
return "CREATE TABLE IF NOT EXISTS `{$prefix}redirection_groups` (\n\t\t\t`id` int(11) unsigned NOT NULL AUTO_INCREMENT,\n\t\t\t`name` VARCHAR(50) NOT NULL,\n\t\t\t`tracking` INT(11) NOT NULL DEFAULT '1',\n\t\t\t`module_id` INT(11) unsigned NOT NULL DEFAULT '0',\n\t\t\t`status` enum('enabled','disabled') NOT NULL DEFAULT 'enabled',\n\t\t\t`position` INT(11) unsigned NOT NULL DEFAULT '0',\n\t\t\tPRIMARY KEY (`id`),\n\t\t\tKEY `module_id` (`module_id`),\n\t\t\tKEY `status` (`status`)\n\t\t) {$charset_collate}";
}
private function create_log_sql($prefix, $charset_collate)
{
return "CREATE TABLE IF NOT EXISTS `{$prefix}redirection_logs` (\n\t\t\t`id` int(11) unsigned NOT NULL AUTO_INCREMENT,\n\t\t\t`created` datetime NOT NULL,\n\t\t\t`url` MEDIUMTEXT NOT NULL,\n\t\t\t`domain` VARCHAR(255) DEFAULT NULL,\n\t\t\t`sent_to` MEDIUMTEXT,\n\t\t\t`agent` MEDIUMTEXT,\n\t\t\t`referrer` MEDIUMTEXT,\n\t\t\t`http_code` INT(11) unsigned NOT NULL DEFAULT '0',\n\t\t\t`request_method` VARCHAR(10) DEFAULT NULL,\n\t\t\t`request_data` MEDIUMTEXT,\n\t\t\t`redirect_by` VARCHAR(50) DEFAULT NULL,\n\t\t\t`redirection_id` INT(11) unsigned DEFAULT NULL,\n\t\t\t`ip` VARCHAR(45) DEFAULT NULL,\n\t\t\tPRIMARY KEY (`id`),\n\t\t\tKEY `created` (`created`),\n\t\t\tKEY `redirection_id` (`redirection_id`),\n\t\t\tKEY `ip` (`ip`)\n\t \t) {$charset_collate}";
}
private function create_404_sql($prefix, $charset_collate)
{
return "CREATE TABLE IF NOT EXISTS `{$prefix}redirection_404` (\n\t\t\t`id` int(11) unsigned NOT NULL AUTO_INCREMENT,\n\t\t\t`created` datetime NOT NULL,\n\t\t\t`url` MEDIUMTEXT NOT NULL,\n\t\t\t`domain` VARCHAR(255) DEFAULT NULL,\n\t\t\t`agent` VARCHAR(255) DEFAULT NULL,\n\t\t\t`referrer` VARCHAR(255) DEFAULT NULL,\n\t\t\t`http_code` INT(11) unsigned NOT NULL DEFAULT '0',\n\t\t\t`request_method` VARCHAR(10) DEFAULT NULL,\n\t\t\t`request_data` MEDIUMTEXT,\n\t\t\t`ip` VARCHAR(45) DEFAULT NULL,\n\t\t\tPRIMARY KEY (`id`),\n\t\t\tKEY `created` (`created`),\n\t\t\tKEY `referrer` (`referrer`(191)),\n\t\t\tKEY `ip` (`ip`)\n\t \t) {$charset_collate}";
}
}