[Voter Visibility] - Лог голосования

Автор slavutskyi, 04 июля 2012, 13:18:10

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

slavutskyi

Столкнулся с задачей, сделать лог голосования. Чтоб отслеживать, кто за что проголосовал.
http://custom.simplemachines.org/mods/index.php?mod=3373

Но вот у меня с ним проблема, ошибки выдает в файле Display.php

Кто нибудь сталкивался с этим модом, ставил себе его ?
Версия форума: SMF 2.0.2

maestrosite.ru

Какой мод? Какие ошибки?
Ссылку, что вы привели, получается если на странице мода нажать кнопку просмотра инструкции по установке
Если задаются вопросы по вашей проблеме, значит это нужно вам!
---
Обновления форума, разрешение конфликтов, адаптация модов, исправление ошибок - ваши предложения о сотрудничестве направляйте по адресу smf@maestrosite.ru

slavutskyi

Когда заходишь в тему, где есть голосование, я в теме вижу только сообщение:
Unknown column 'p.vote_visibility' in 'field list'
Файл: C:\wamp\www\Sources\Display.php
Строка: 631

Вот что у меня в коде, 631 строка это последняя строка:
// Get the question and if it's locked.
$request = $smcFunc['db_query']('', '
SELECT
p.question, p.voting_locked, p.hide_results, p.expire_time, p.max_votes, p.change_vote,
p.vote_visibility, p.allow_comments,
p.guest_vote, p.id_member, IFNULL(mem.real_name, p.poster_name) AS poster_name, p.num_guest_voters, p.reset_poll
FROM {db_prefix}polls AS p
LEFT JOIN {db_prefix}members AS mem ON (mem.id_member = p.id_member)
WHERE p.id_poll = {int:id_poll}
LIMIT 1',
array(
'id_poll' => $topicinfo['id_poll'],
)
);
Версия форума: SMF 2.0.2

slavutskyi

С ошибкой в коде разобрался, теперь выплыла следующая проблема.
Уже отображается кнопка лога голосования, но при попытке проголосовать, высвечивается следующая ошибка: The database value you're trying to insert does not exist: id_poll
Подскажите, где искать дальше ?
Версия форума: SMF 2.0.2

maestrosite.ru

У вас по какой-то причине не внесены изменения в базу, файл database.php в архиве мода. Внесите руками, либо запустите этот файл на выполнение, немного изменив его начало. Добавить две строки: <?php

require dirname(__FILE__) . '/SSI.php';
db_extend('packages');
global 
$db_prefix$smcFunc;

// далее по тексту

Запустить из корня.
Если задаются вопросы по вашей проблеме, значит это нужно вам!
---
Обновления форума, разрешение конфликтов, адаптация модов, исправление ошибок - ваши предложения о сотрудничестве направляйте по адресу smf@maestrosite.ru

slavutskyi

Как мне запустить этот файл на выполнение ?
Добавил его в корень, изменил по Вашему коду.
Версия форума: SMF 2.0.2

maestrosite.ru

Если задаются вопросы по вашей проблеме, значит это нужно вам!
---
Обновления форума, разрешение конфликтов, адаптация модов, исправление ошибок - ваши предложения о сотрудничестве направляйте по адресу smf@maestrosite.ru

slavutskyi

Я думал может как-то по другому его надо запускать, но я так делал.
Выводит просто белый экран когда заходишь на http://localhost/database.php и после этого, я пытаюсь вновь проголосовать, высвечивается та же ошибка: The database value you're trying to insert does not exist: id_poll
Что еще может быть ?
Версия форума: SMF 2.0.2

maestrosite.ru

Белый экран - в этом случае это нормально. Вторая ошибка означает, что что-то не установилось. Возможно, конфликт с другим модом.
Если задаются вопросы по вашей проблеме, значит это нужно вам!
---
Обновления форума, разрешение конфликтов, адаптация модов, исправление ошибок - ваши предложения о сотрудничестве направляйте по адресу smf@maestrosite.ru

slavutskyi

Все лишние моды были удалены, но ошибка есть до сих пор.
Где искать проблему ?
Версия форума: SMF 2.0.2

maestrosite.ru

Предполагю, что в Post.php. Покажите ваш файл
Если задаются вопросы по вашей проблеме, значит это нужно вам!
---
Обновления форума, разрешение конфликтов, адаптация модов, исправление ошибок - ваши предложения о сотрудничестве направляйте по адресу smf@maestrosite.ru

slavutskyi

Версия форума: SMF 2.0.2

maestrosite.ru

Прошу прощения, файл Poll.php
Если задаются вопросы по вашей проблеме, значит это нужно вам!
---
Обновления форума, разрешение конфликтов, адаптация модов, исправление ошибок - ваши предложения о сотрудничестве направляйте по адресу smf@maestrosite.ru

slavutskyi

Решил не заморачиваться и поставил еще новый форум на локальную машину, установил мод.
Все корректно установилось, работает голосование.
Запускал database.php
Но когда нажимаешь на кнопку просмотреть лог голосования, выдает ошибку:
Table 'smf1.smf_log_polls' doesn't exist
Файл: C:\wamp\www\Sources\VoteLog.php
Строка: 116

Вот код этого блока:
// NOTE: Update if SMF redesigns the way they track the poll results to recall deleted members in old polls (e.g., if they start storing the name like they do for posts).
$request = $smcFunc['db_query']('', '
SELECT
p.timestamp, p.id_member, c.id_choice, c.label, p.comments,
IFNULL(m.real_name, "' . $txt['poll_vv_vlog_guest_or_unknown'] . '") AS voter_name
FROM
smf_log_polls AS p
INNER JOIN smf_poll_choices AS c ON (p.id_choice = c.id_choice AND p.id_poll = c.id_poll)
LEFT JOIN smf_members AS m ON (p.id_member = m.id_member)
WHERE
p.id_poll = {int:current_poll}
ORDER BY
c.id_choice',
array(
'current_poll' => $pollinfo['id_poll'],
)
);


Так же добавляю файл к предыдущему сообщению Poll.php
Версия форума: SMF 2.0.2

maestrosite.ru

#14
1. замените smf_log_polls на {db_prefix}log_polls
2. вы два раза установили мод.
Если задаются вопросы по вашей проблеме, значит это нужно вам!
---
Обновления форума, разрешение конфликтов, адаптация модов, исправление ошибок - ваши предложения о сотрудничестве направляйте по адресу smf@maestrosite.ru

slavutskyi

Ситуация изменилась в лучшую сторону, когда заменил это:
smf_log_polls AS p
INNER JOIN smf_poll_choices AS c ON (p.id_choice = c.id_choice AND p.id_poll = c.id_poll)
LEFT JOIN smf_members AS m ON (p.id_member = m.id_member)


На это:
{db_prefix}log_polls AS p
INNER JOIN {db_prefix}poll_choices AS c ON (p.id_choice = c.id_choice AND p.id_poll = c.id_poll)
LEFT JOIN {db_prefix}members AS m ON (p.id_member = m.id_member)


Спасибо, за помощь !
Версия форума: SMF 2.0.2

maestrosite.ru

добавил в предыдущее сообщение ваш поправленный файл
Если задаются вопросы по вашей проблеме, значит это нужно вам!
---
Обновления форума, разрешение конфликтов, адаптация модов, исправление ошибок - ваши предложения о сотрудничестве направляйте по адресу smf@maestrosite.ru

slavutskyi

Как можно сделать так, чтоб при голосовании за вариант, где нет обязательного требования указывать комментарий, этот коммент не выводился в логе голосования ?

Пример:
Вопрос - "Вы согласны с этим мнением?"
Вариант 1 - Да !
Вариант 2 - Нет ! (обязательно комментарий)
Версия форума: SMF 2.0.2

slavutskyi

Добрый день !
Вновь пришел к Вам за помощью.

Все тот же мод, но задача следующая.
Необходимо увеличить кол-во символов комментария, скажем до 1000.
Пробовал, ковырял, но ничего не получается.

Изменил строчку на длину 1000 символов <input id="voteComment" class="input_text" type="text" maxlength="1000" size="150" name="voteComment
Но ничего не изменилось.
Пытался ковыряться в базе с длинами строк, но ничего не помогает, выводит в логе голосования не более 200 символов.

Тип поля в базе вроде нормальный, TEXT
$smcFunc['db_add_column'](
'{db_prefix}log_polls',
array(
'name'     => 'timestamp',
'type'     => 'int',
'size'     => 11,
'null'     => 'true',
'unsigned' => 'true'
)
);

$smcFunc['db_add_column'](
'{db_prefix}log_polls',
array(
'name'     => 'comments',
'type'     => 'text',
'null'     => 'true'

)
);


Где еще капать, подскажите !?  :-\
Версия форума: SMF 2.0.2

GeorG

#19
В файле Poll.php увеличить значение если?
$voteComment = $smcFunc['truncate']($voteComment, 255);
Верстка тем по шаблону, их доработка/переработка, переделка тем с версии smf 1.1 на smf 2.0. Примеры работ - insidestyle.ru
Установка модов (заточка под ваш форум); Моды под заказ; Обновление форума; Правильный перенос; Удаление/лечение вирусов; Устранения ошибок.
Обращаться в ЛС
Мой форум
Модуль анти-спама CleanTalk, сам пользуюсь
Сервера которыми сам пользуюсь - cadedic.ru

slavutskyi

К сожалению это не помогает, вот что у меня в коде:
// trim and prepare the comment for the database
$_REQUEST['voteComment'] = censorText(trim($_REQUEST['voteComment']));
$_REQUEST['voteComment'] = $smcFunc['htmlspecialchars']($_REQUEST['voteComment']);
$_REQUEST['voteComment'] = $smcFunc['truncate']($_REQUEST['voteComment'], 1000);


Результат такой же, см. картинку.
Где еще надо, что-то исправить ?
Версия форума: SMF 2.0.2

GeorG

Цитата: slavutskyi от 10 ноября 2013, 23:43:23К сожалению это не помогает, вот что у меня в коде
Это не тот участок кода, про который я писал.
Верстка тем по шаблону, их доработка/переработка, переделка тем с версии smf 1.1 на smf 2.0. Примеры работ - insidestyle.ru
Установка модов (заточка под ваш форум); Моды под заказ; Обновление форума; Правильный перенос; Удаление/лечение вирусов; Устранения ошибок.
Обращаться в ЛС
Мой форум
Модуль анти-спама CleanTalk, сам пользуюсь
Сервера которыми сам пользуюсь - cadedic.ru

slavutskyi

Цитата: GeorG от 11 ноября 2013, 00:20:32
Это не тот участок кода, про который я писал.

Вот мой Poll.php
Я там такой строчки кода не вижу.
Версия форума: SMF 2.0.2

GeorG

У вас наверно старой версии мод, сейчас в новом нет этих строчек, там эти:
if (isset($_REQUEST['voteComment'])) {
$voteComment = trim($_REQUEST['voteComment']);
$voteComment = censorText($voteComment);
$voteComment = $smcFunc['htmlspecialchars']($voteComment);
$voteComment = $smcFunc['truncate']($voteComment, 255);
}

Верстка тем по шаблону, их доработка/переработка, переделка тем с версии smf 1.1 на smf 2.0. Примеры работ - insidestyle.ru
Установка модов (заточка под ваш форум); Моды под заказ; Обновление форума; Правильный перенос; Удаление/лечение вирусов; Устранения ошибок.
Обращаться в ЛС
Мой форум
Модуль анти-спама CleanTalk, сам пользуюсь
Сервера которыми сам пользуюсь - cadedic.ru

slavutskyi

Установил новый мод, поменял значение в строчке на 400, результат остался прежний
    // trim and prepare the comment for the database
    $voteComment = '';
    if (isset($_REQUEST['voteComment'])) {
        $voteComment = trim($_REQUEST['voteComment']);
        $voteComment = censorText($voteComment);
        $voteComment = $smcFunc['htmlspecialchars']($voteComment);
        $voteComment = $smcFunc['truncate']($voteComment, 400);


Ввожу текст (390 символов) : "Портфолио - образцы и примеры статей и текстов. Авторские и заказные публикации в интернете и периодических изданиях авторов, журналистов, копирайтеров и социологов SEOCONTENT.RU. Только опубликованные статьи и тексты для сайтов на различные темы, статьи в журналах и печатных изданиях, аналитика, обзоры, речи, приглашения, поздравления. Заказные работы для студентов – жанры журналистики."

Результат см. на картинке. (выводит 138 символов)
Версия форума: SMF 2.0.2

slavutskyi

Увеличил значение c string-255 до string-400
// Add their vote to the tally.
    $smcFunc['db_insert']('insert',
        '{db_prefix}log_polls',
        array('id_poll' => 'int', 'id_member' => 'int', 'id_choice' => 'int', 'timestamp' => 'int', 'comments' => 'string-400'),
        $inserts,
        array('id_poll', 'id_member', 'id_choice')
    );


Результат вывода увеличился до 223 символов.

Где еще рыть, подскажите ?
Версия форума: SMF 2.0.2

slavutskyi

Так же обратил внимание, когда ставишь значение (например) 430, то при вводе символов и нажатии кнопки голосовать, вылетает  ошибка в окне браузера: "Соединение было сброшено. Во время загрузки страницы соединение с сервером было сброшено.".
Версия форума: SMF 2.0.2