lisiycat пишет:Подскажите, пожалуйста, может кто сталкивался с такой ситуацией когда нужно создать опрос в уже существующей теме? Как его решить?
P.S. Искал в поиске нужную тему, но не нашел. Только вопрос без ответа, ктр. задавал defenderyk
defenderyk пишет:не нашел, потому, что нельзя в этом форуме этого сделать.
Сделать можно всё. Почти всё
Вобщем набросал по-быстрому добавление опроса к существующей теме. Добавить опрос в тему может только автор темы, ну и конечно же администраторы и модераторы
Для того чтобы эта возможность стала реальностью на Вашем форуме открываем файл topic.php и находим строку:
CODE:unset($users,$firstkey);
И заменяем её строкой:
Далее в этом же файле находим строку:
И прямо под ней добавляем строки:
CODE:if ((!file_exists('forum'.$forum_id.'/'.$topic_id.'-poll.php')) && ($threads[$firstkey]['state'] != 'closed') && ((($fm->user['id']) && ($threads[$firstkey]['p_id'] == $fm->user['id'])) || ($fm->_Moderator === TRUE)))
$options[] = '<a href="post.php?action=addpoll&forum='.$forum_id.'&topic='.$topic_id.'">'.$fm->LANG['AddPoll'].'</a>';
Теперь открываем файл post.php и находим строку:
CODE:switch ($fm->input['action']) {
И прямо под ней вставляем строки:
CODE: case 'addpoll' : addpoll();
break;
Далее в этом же файле находим строку:
CODE:include('page_tail.php');
И прямо под ней вставляем функцию:
CODE:function addpoll() {
global $fm;
if (!$fm->user['id'])
$fm->_Message($fm->LANG['AdditionPoll'], $fm->LANG['PollGuest']);
$forum_id = $fm->_Intval('forum');
$topic_id = $fm->_Intval('topic');
$topic_file = 'forum'.$forum_id.'/'.$topic_id.'-thd.php';
$poll_file = 'forum'.$forum_id.'/'.$topic_id.'-poll.php';
if (!file_exists($topic_file))
$fm->_Message($fm->LANG['AdditionPoll'], $fm->LANG['TopicMiss']);
if (file_exists($poll_file))
$fm->_Message($fm->LANG['AdditionPoll'], $fm->LANG['PollAlreadyExists']);
$allforums = $fm->_Read(FM_ALLFORUMS, 0);
$fm->_GetModerators($forum_id, $allforums);
$threads = $fm->_Read($topic_file, 0);
$firstkey = reset(array_keys($threads));
if ($threads[$firstkey]['state'] == 'closed')
$fm->_Message($fm->LANG['AdditionPoll'], $fm->LANG['PollTopicClosed']);
if (($threads[$firstkey]['p_id'] != $fm->user['id']) && ($fm->_Moderator !== TRUE))
$fm->_Message($fm->LANG['AdditionPoll'], $fm->LANG['PermsAddPoll']);
$forumname = $allforums[$forum_id]['name'];
$topicname = $threads[$firstkey]['name'];
$pollname = $fm->_String('pollname');
$pollansw = $fm->_String('pollansw');
$error = array();
if (!$fm->_POST) {
$fm->_Title = ' :: '.sprintf($fm->LANG['AdditionPollTopic'], $topicname);
include('templates/'.DEF_SKIN.'/all_header.tpl');
include('templates/'.DEF_SKIN.'/logos.tpl');
include('templates/'.DEF_SKIN.'/addpoll.tpl');
include('templates/'.DEF_SKIN.'/footer.tpl');
}
else {
if (!$pollname) $error[] = $fm->LANG['PollNameEmpty'];
$pollansw = explode("\n", $pollansw);
if ((!$pollansw[0]) || (count($pollansw) > 10)) $error[] = $fm->LANG['PollError'];
if ($error) {
$fm->_Title = ' :: '.sprintf($fm->LANG['AdditionPollTopic'], $topicname);
include('templates/'.DEF_SKIN.'/all_header.tpl');
include('templates/'.DEF_SKIN.'/logos.tpl');
include('templates/'.DEF_SKIN.'/addpoll.tpl');
include('templates/'.DEF_SKIN.'/footer.tpl');
}
else {
foreach ($pollansw as $offset => $answ)
$choices[$offset] = array($offset, $answ, 0);
$fm->_Read2Write($fp_poll, $poll_file, TRUE);
$poll = array(
'pollname' => $pollname,
'started' => $fm->_Nowtime,
'start_id' => $fm->user['id'],
'choices' => $choices,
'votes' => 0,
'ids' => array()
);
$fm->_Write($fp_poll, $poll);
$fm->_Message($fm->LANG['AdditionPoll'], $fm->LANG['PollAdded'], 'topic.php?forum='.$forum_id.'&topic='.$topic_id);
}
}
}
Продолжение в следующем сообщении, в один пост всё не влезло |