public function column_default($poll, $col)
    {
        global $wpdb;
        $cache =& self::$cache;
        if (!isset($cache[$poll->id])) {
            $cache[$poll->id] = $wpdb->get_results("SELECT * FROM {$wpdb->democracy_a} WHERE qid = " . (int) $poll->id);
        }
        $answ =& $cache[$poll->id];
        $url = Dem::$i->admin_page_url();
        $date_format = get_option('date_format');
        // вывод
        if (0) {
        } elseif ($col == 'question') {
            $statuses = '<span class="statuses">' . ($poll->democratic ? '<span class="dashicons dashicons-megaphone" title="' . __('Пользователи могут добавить свои ответы (democracy).', 'dem') . '"></span>' : '') . ($poll->revote ? '<span class="dashicons dashicons-update" title="' . __('Пользователи могут изменить мнение (переголосование).', 'dem') . '"></span>' : '') . ($poll->forusers ? '<span class="dashicons dashicons-admin-users" title="' . __('Голосовать могут только зарегистрированные пользователи.', 'dem') . '"></span>' : '') . '</span>';
            return $statuses . $poll->question . '
			<div class="row-actions">
				<span class="edit"><a href="' . add_query_arg(array('edit_poll' => $poll->id), $url) . '">' . __('Редактировать', 'dem') . '</a> | </span>' . (Dem::$opt['keep_logs'] ? '<span class="edit"><a href="' . add_query_arg(array('subpage' => 'logs', 'poll' => $poll->id), $url) . '">' . __('Логи', 'dem') . '</a> | </span>' : '') . '<span class="delete"><a href="' . add_query_arg(array('delete_poll' => $poll->id), $url) . '" onclick="return confirm(\'' . __('Точно удалить?', 'dem') . '\');">' . __('Удалить', 'dem') . '</a> | </span>
				<span style="color:#999">[democracy id="' . $poll->id . '"]</span>
			</div>
			';
        } elseif ($col == 'votes') {
            return array_sum(wp_list_pluck((array) $answ, 'votes'));
        } elseif ($col == 'winner') {
            if (!$answ) {
                return 'Нет';
            }
            $winner = $answ[key($answ)];
            foreach ((array) $answ as $ans) {
                if ($ans->votes > $winner->votes) {
                    $winner = $ans;
                }
            }
            return $winner->answer;
        } elseif ($col == 'active') {
            return dem_activatation_buttons($poll);
        } elseif ($col == 'open') {
            return dem_opening_buttons($poll);
        } elseif ($col == 'added') {
            $date = date($date_format, $poll->added);
            $end = $poll->end ? date($date_format, $poll->end) : '';
            return "{$date}<br>{$end}";
        } else {
            return isset($poll->{$col}) ? $poll->{$col} : print_r($poll, true);
        }
    }
Exemplo n.º 2
0
function poll_edit_form($poll_id = false)
{
    global $wpdb;
    if (!$poll_id && isset($_GET['edit_poll'])) {
        $poll_id = (int) $_GET['edit_poll'];
    }
    $edit = !!$poll_id;
    $answers = false;
    $title = '';
    if ($edit) {
        $title = __('Редактировать опрос', 'dem') . " (ID {$poll_id})";
        $action = preg_replace('@\\?.*@', '', esc_url($_SERVER['REQUEST_URI'])) . "?page=" . $_GET['page'] . "";
        $poll = $wpdb->get_row("SELECT * FROM {$wpdb->democracy_q} WHERE id = {$poll_id} LIMIT 1");
        $answers = $wpdb->get_results("SELECT * FROM {$wpdb->democracy_a} WHERE qid = {$poll_id}");
        $hidden_inputs = "<input type='hidden' name='dmc_update_poll' value='{$poll_id}'>";
    } else {
        //$title = __('Добавить новый опрос','dem');
        $hidden_inputs = "<input type='hidden' name='dmc_create_poll' value='1'>";
    }
    $poll = wp_unslash($poll);
    echo demenu() . ($title ? "<h2>{$title}</h2>" : '') . '<form action="" method="POST" class="dem-new-poll">
			<input type="hidden" name="dmc_qid" value="' . $poll_id . '">
			' . wp_nonce_field('dem_insert_poll', '_demnonce', $referer = 0, $echo = 0) . '
			
			<label>
				' . __('Вопрос:', 'dem') . '
				<input type="text" id="the-question" name="dmc_question" value="' . esc_attr(@$poll->question) . '">
			</label>
			
			' . __('Варианты ответов:', 'dem') . '
		';
    ?>
		
		<ol class="new-poll-answers">
			<?php 
    if ($answers) {
        foreach ($answers as $answer) {
            $by_user = $answer->added_by ? '<i>*</i>' : '';
            echo '
					<li class="answ">
						<input class="answ-text" type="text" name="dmc_old_answers[' . $answer->aid . '][answer]" value="' . esc_attr($answer->answer) . '">
						<input type="text" name="dmc_old_answers[' . $answer->aid . '][votes]" value="' . $answer->votes . '" style="width:50px;min-width:50px;">
						' . $by_user . '
					</li>';
        }
    } else {
        for ($i = 0; $i < 2; $i++) {
            echo '<li class="answ"><input type="text" name="dmc_new_answers[]" value=""></li>';
        }
    }
    ?>
			
			<?php 
    if (!Dem::$opt['democracy_off']) {
        ?>
			<li>
				<label>
					<input type="hidden" name='dmc_democratic' value=''>
					<input type="checkbox" name="dmc_democratic" value="1" <?php 
        checked(!isset($poll->democratic) || $poll->democratic, 1);
        ?>
 > 
					<?php 
        _e('Разрешить пользователям добавлять свои ответы (democracy).', 'dem');
        ?>
				</label>
			</li>
			<?php 
    }
    ?>
		</ol>
		
		<ol class="poll-options">				
			<li>
				<label>
					<input type="hidden" name='dmc_active' value=''>
					<input type="checkbox" name='dmc_active' value='1' <?php 
    $edit ? checked(@$poll->active, 1) : 'checked="true"';
    ?>
 > 
					<?php 
    _e('Сделать этот опрос активным.', 'dem');
    ?>
				</label>
			</li>
			
			<li>
				<label>
					<?php 
    $ml = (int) @$poll->multiple;
    ?>
					<input type="hidden" name='dmc_multiple' value=''>
					<input type="checkbox" name="dmc_multiple" value="<?php 
    echo $ml;
    ?>
" <?php 
    echo $ml ? 'checked="checked"' : '';
    ?>
 >
					<input type="number" min=0 value="<?php 
    echo $ml == 1 || $ml == 0 ? '' : $ml;
    ?>
" style="width:50px; <?php 
    echo !$ml ? 'display:none;' : '';
    ?>
">
					<?php 
    _e('Разрешить выбирать несколько ответов (множественный).', 'dem');
    ?>
				</label>
			</li>
			
			<li>
				<label>
					<input type="text" name="dmc_end" value="<?php 
    echo @$poll->end ? date('d-m-Y', $poll->end) : '';
    ?>
" style="width:120px;min-width:120px;" > 
					<?php 
    _e('Дата, когда опрос был/будет закрыт. Формат: dd-mm-yyyy.', 'dem');
    ?>
				</label>
			</li>
			
			<?php 
    if (!Dem::$opt['revote_off']) {
        ?>
			<li>
				<label>
					<input type="hidden" name='dmc_revote' value=''>
					<input type="checkbox" name="dmc_revote" value="1" <?php 
        checked(!isset($poll->revote) || $poll->revote, 1);
        ?>
 > 
					<?php 
        _e('Разрешить изменять мнение (переголосование).', 'dem');
        ?>
				</label>
			</li>
			<?php 
    }
    ?>
			<?php 
    if (!Dem::$opt['only_for_users']) {
        ?>
			<li>
				<label>
					<input type="hidden" name='dmc_forusers' value=''>
					<input type="checkbox" name="dmc_forusers" value="1" <?php 
        checked(@$poll->forusers, 1);
        ?>
 > 
					<?php 
        _e('Голосовать могут только зарегистрированные пользователи.', 'dem');
        ?>
				</label>
			</li>
			<?php 
    }
    ?>
			
			<li><label> <?php 
    _e('Заметка: текст будет добавлен под опросом.', 'dem');
    ?>
<br>
					<textarea name="dmc_note" style="height:3.5em;" ><?php 
    echo esc_textarea(@$poll->note);
    ?>
</textarea>
				</label>
			</li>
		</ol>

		<?php 
    echo $hidden_inputs;
    ?>
		<input type="submit" class="button-primary" value="<?php 
    echo $edit ? __('Внести изменения', 'dem') : __('Добавить опрос', 'dem');
    ?>
">
		
		<?php 
    // если редактируем
    if ($edit) {
        // открыть
        echo dem_opening_buttons($poll);
        // активировать
        echo dem_activatation_buttons($poll);
        echo '<a href="' . add_query_arg(array('delete_poll' => $poll->id), Dem::$i->admin_page_url()) . '" class="button" onclick="return confirm(\'' . __('Точно удалить?', 'dem') . '\');" title="' . __('Удалить', 'dem') . '"><span class="dashicons dashicons-trash"></span></a>';
    }
    ?>
	</form>
	<?php 
}