Ух ты, как тема актуализировалась!
Может, кто сможет предложить вариант модификации файлов postings.php и topic.php так, чтобы можно простому пользователю было хотя бы так же на заданное время редактирования редактировать и удалять опросы в теме, а то пока что-то не выходит.
Так, postings.php
Спойлер (Отобразить)CODE:function poll_edit() {
global $fm;
$allforums = $fm->_Read(FM_ALLFORUMS);
if (( $topic_id = $fm->_Intval('topic') ) === 0 || ( $forum_id = $fm->_Intval('forum') ) === 0 || !isset( $allforums[$forum_id] )) {
$fm->_Message($fm->LANG['MainMsg'], $fm->LANG['CorrectPost']);
}
$fm->_GetModerators($forum_id, $allforums);
if ($fm->_Moderator === false ) {
$fm->_Message($fm->LANG['Poll'], $fm->LANG['EditNo']);
}
$forumname = $allforums[$forum_id]['name'];
$list = $fm->_Read2Write($fp_list, 'forum' . $forum_id . '/list.php');
if (!isset( $list[$topic_id] ) || !file_exists('forum' . $forum_id . '/' . $topic_id . '-poll.php')) {
$fm->_Message($fm->LANG['MainMsg'], $fm->LANG['CorrectPost']);
}
$topicname = ( isset( $list[$topic_id]['tnun'] ) ) ? $list[$topic_id]['name'] . ' - ' . $list[$topic_id]['tnun'] : $list[$topic_id]['name'];
$poll_data = $fm->_Read2Write($fp_poll, 'forum' . $forum_id . '/' . $topic_id . '-poll.php', false);
if ($fm->_Boolean($fm->input, 'savepoll') === true) {
if ($fm->_Boolean($fm->input, 'delpoll') === true) {
if ($fm->_Boolean($fm->input, 'request') === true && $fm->_POST === true) {
$fm->_Fclose($fp_poll);
unlink('forum' . $forum_id . '/' . $topic_id . '-poll.php');
$list[$topic_id]['poll'] = false;
$fm->_Write($fp_list, $list);
// Запишем в лог информацию об удалении опроса
$fm->_WriteLog(sprintf($fm->LANG['DeletePollLog'], $list[$topic_id]['name'], strip_tags($forumname)), 2);
$fm->_Message($fm->LANG['PollDel'], $fm->LANG['PollDeleteOk'], 'topic.php?forum=' . $forum_id . '&topic=' . $topic_id);
}
...
CODE:if ($fm->_Moderator === false && $fm->exbb['edit_time'] && $fm->_Nowtime - $post_id > $fm->exbb['edit_time'] * 60) {
$fm->_Message($fm->LANG['Poll'], $fm->LANG['EditNo']);
}
- не катит. Что-то еще там где-то не дает.
topic.php
Спойлер (Отобразить)CODE:function poll($forum_id, $topic_id) {
global $fm, $topic, $firstkey, $_icon;
$pollfile = 'forum' . $forum_id . '/' . $topic_id . '-poll.php';
if (!file_exists($pollfile)) {
return '';
}
$poll_data = $fm->_Read($pollfile, false);
if (!$poll_data['pollname']) {
$poll_data['pollname'] = $topic['name'];
}
$poll_title = $poll_data['pollname'];
$moderlinks = $pollch = $do = '';
if (isset( $poll_data['ids'][$fm->user['id']] ) || $topic['state'] == 'closed') {
foreach ($poll_data['choices'] as $choice) {
$pid = $choice[0];
$ptext = $choice[1];
$votes = $choice[2];
if (!$ptext) {
continue;
}
$percent = ( $votes == 0 ) ? 0 : $votes / $poll_data['votes'] * 100;
$percent = sprintf('%.2f', $percent) . '%';
$width = ( $percent > 0 ) ? (int)$percent * 2 : 0;
include( './templates/' . DEF_SKIN . '/poll_data.tpl' );
}
$do = '<b>' . $fm->LANG['VoteCount'] . $poll_data['votes'] . '</b>';
}
else {
foreach ($poll_data['choices'] as $choice) {
$pid = $choice[0];
$ptext = $choice[1];
if (!$ptext) {
continue;
}
include( './templates/' . DEF_SKIN . '/poll_view.tpl' );
}
$do = '<input type="submit" name="submit" value="' . $fm->LANG['Vote'] . '" class="button" />';
}
$edit = '<a href="postings.php?action=poll&forum=' . $forum_id . '&topic=' . $topic_id . '">' . $_icon['edit'] . '</a>' . $_icon['divider'];
$del = '<a href="postings.php?action=poll&delpoll=yes&savepoll=yes&forum=' . $forum_id . '&topic=' . $topic_id . '">' . $_icon['del'] . '</a>';
$moderlinks = ( $fm->_Moderator === true) ? $edit . ' ' . $del : null;
include( './templates/' . DEF_SKIN . '/poll.tpl' );
unset( $poll_data, $pollch );
return $poll_html;
}
Так, например, вот такая история
CODE:
$moderlinks = ( $fm->_Moderator === true || ( $fm->user['id'] === $member_id && $fm->user['id'] && $topic['state'] != 'closed' )) ? $edit . ' ' . $del : null;
не работает, - кнопки у простого пользователя все равно не появляются...
Примечание по вышеуказанному коду для topic.php: Сделал так, чтобы гости видели опрос и результаты голосования, но голосовать по-прежнему права не имеют (иначе там чехарда просто получится).