function democracy_activate() { global $wpdb; Dem::init()->load_textdomain(); // create tables require_once ABSPATH . 'wp-admin/includes/upgrade.php'; $collate = !empty($wpdb->charset) && !empty($wpdb->collate) ? "DEFAULT CHARSET={$wpdb->charset} COLLATE {$wpdb->collate}" : "DEFAULT CHARSET=utf8 COLLATE utf8_unicode_ci"; if (!$wpdb->get_var("SHOW TABLES LIKE '{$wpdb->democracy_q}'")) { dbDelta("\n\t\tCREATE TABLE {$wpdb->democracy_q} (\n\t\t\tid int(10) UNSIGNED NOT NULL auto_increment,\n\t\t\tquestion text NOT NULL default '',\n\t\t\tadded int(10) UNSIGNED NOT NULL default 0,\n\t\t\tadded_user bigint(20) UNSIGNED NOT NULL default 0,\n\t\t\tend int(10) UNSIGNED NOT NULL default 0,\n\t\t\tdemocratic tinyint(1) UNSIGNED NOT NULL default 0,\n\t\t\tactive tinyint(1) UNSIGNED NOT NULL default 0,\n\t\t\topen tinyint(1) UNSIGNED NOT NULL default 0,\n\t\t\tmultiple tinyint(5) UNSIGNED NOT NULL default 0,\n\t\t\tforusers tinyint(1) UNSIGNED NOT NULL default 0,\n\t\t\trevote tinyint(1) UNSIGNED NOT NULL default 0,\n\t\t\tshow_results tinyint(1) UNSIGNED NOT NULL default 0,\n\t\t\tnote text NOT NULL default '',\n\n\t\t\tPRIMARY KEY (id),\n\t\t\tKEY active (active)\n\t\t) {$collate}; \n\t\t"); } if (!$wpdb->get_var("SHOW TABLES LIKE '{$wpdb->democracy_a}'")) { dbDelta("\n\t\tCREATE TABLE {$wpdb->democracy_a} (\n\t\t\taid int(10) UNSIGNED NOT NULL auto_increment,\n\t\t\tqid int(10) UNSIGNED NOT NULL default 0,\n\t\t\tanswer text NOT NULL default '',\n\t\t\tvotes int(10) UNSIGNED NOT NULL default 0,\n\t\t\tadded_by varchar(100) NOT NULL default '',\n\n\t\t\tPRIMARY KEY (aid),\n\t\t\tKEY qid (qid)\n\t\t) {$collate};\n\t\t"); } if (!$wpdb->get_var("SHOW TABLES LIKE '{$wpdb->democracy_log}'")) { dbDelta("\n\t\tCREATE TABLE {$wpdb->democracy_log} (\n\t\t\tip int(11) UNSIGNED NOT NULL default 0,\n\t\t\tqid int(10) UNSIGNED NOT NULL default 0,\n\t\t\taids text NOT NULL default '',\n\t\t\tuserid bigint(20) UNSIGNED NOT NULL default 0,\n\t\t\tdate DATETIME NOT NULL default '0000-00-00 00:00:00',\n\t\t\texpire bigint(20) UNSIGNED NOT NULL default 0,\n\n\t\t\tKEY ip (ip,qid),\n\t\t\tKEY qid (qid),\n\t\t\tKEY userid (userid)\n\t\t) {$collate};\n\t\t"); } // Poll example if (!$wpdb->get_row("SELECT * FROM {$wpdb->democracy_q} LIMIT 1")) { $wpdb->insert($wpdb->democracy_q, array('question' => __('Что для вас деньги?', 'dem'), 'added' => current_time('timestamp'), 'added_user' => get_current_user_id(), 'democratic' => 1, 'active' => 1, 'open' => 1, 'revote' => 1)); $qid = $wpdb->insert_id; $answers = array(__('Деньги - это универсальный продукт для обмена.', 'dem'), __('Деньги - это бумага... Не в деньгах счастье...', 'dem'), __('Средство достижения цели.', 'dem'), __('Кусочки дьявола :)', 'dem'), __('Это власть, - это "Сила", - это счастье...', 'dem')); // create votes foreach ($answers as $answr) { $wpdb->insert($wpdb->democracy_a, array('votes' => rand(0, 100), 'qid' => $qid, 'answer' => $answr)); } } // add options, if needed if (!get_option(Dem::OPT_NAME)) { Dem::init()->update_options('default'); } // upgrade dem_last_version_up(); }
function admin_page_load() { // обновляем опции и БД плагина если нужно if (isset($_POST['dem_forse_upgrade'])) { delete_option('democracy_version'); } // для принудителльного обновления dem_last_version_up(); // datepicker wp_enqueue_script('jquery-ui-datepicker'); wp_enqueue_style('jquery-ui'); wp_enqueue_style('jquery-style', 'http://ajax.googleapis.com/ajax/libs/jqueryui/1.11.2/themes/smoothness/jquery-ui.css'); // Iris Color Picker wp_enqueue_script('wp-color-picker'); wp_enqueue_style('wp-color-picker'); // others wp_enqueue_script('ace', DEMOC_URL . 'admin/ace/src-min-noconflict/ace.js', array(), DEM_VER, true); wp_enqueue_script('democracy-scripts', DEMOC_URL . 'admin/admin.js', array('jquery', 'ace'), DEM_VER, true); wp_enqueue_style('democracy-styles', DEMOC_URL . 'admin/style.css', array(), DEM_VER); ## handlers $up = false; // обновляем произвольную локализацию if (isset($_POST['dem_save_l10n'])) { $up = $this->update_l10n(); } // сбрасываем произвольную локализацию if (isset($_POST['dem_reset_l10n'])) { $up = update_option('democracy_l10n', array()); } // обновляем основные опции if (isset($_POST['dem_save_main_options'])) { $up = $this->update_options('main'); } // сбрасываем основные опции if (isset($_POST['dem_reset_main_options'])) { $up = $this->update_options('main_default'); } // обновляем опции дизайна if (isset($_POST['dem_save_design_options'])) { $up = $this->update_options('design'); } // сбрасываем опции дизайна if (isset($_POST['dem_reset_design_options'])) { $up = $this->update_options('design_default'); } if ($up) { // костыль, чтобы сразу применялся результат при отключении/включении тулбара self::$opt['toolbar_menu'] ? add_action('admin_bar_menu', array($this, 'toolbar'), 99) : remove_action('admin_bar_menu', array($this, 'toolbar'), 99); } // запрос на создание страницы архива if (isset($_GET['dem_create_archive_page'])) { $this->dem_create_archive_page(); } // запрос на создание страницы архива if (isset($_GET['dem_clear_log'])) { $this->clear_log(); } // Add/update a poll if (isset($_POST['dmc_create_poll']) || isset($_POST['dmc_update_poll'])) { if (wp_verify_nonce($_POST['_demnonce'], 'dem_insert_poll')) { $this->insert_poll_handler(); } } // delete a poll if (isset($_GET['delete_poll'])) { $this->delete_poll($_GET['delete_poll']); } // activates a poll if (isset($_GET['dmc_activate_poll'])) { $this->poll_activation($_GET['dmc_activate_poll'], true); } // deactivates a poll if (isset($_GET['dmc_deactivate_poll'])) { $this->poll_activation($_GET['dmc_deactivate_poll'], false); } // close voting a poll if (isset($_GET['dmc_close_poll'])) { $this->poll_opening($_GET['dmc_close_poll'], 0); } // open voting a poll if (isset($_GET['dmc_open_poll'])) { $this->poll_opening($_GET['dmc_open_poll'], 1); } // LOGS ---- if (isset($_GET['del_poll_logs']) && wp_verify_nonce($_GET['del_poll_logs'], 'del_poll_logs')) { $this->del_poll_logs($_GET['poll']); } }