Example #1
0
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']);
     }
 }