function VoteTopic($topic_id, $user_id, $mod, $vote) { global $session; session_start(); $objResponse = new xajaxResponse(); if (!get_uid(false)) { return $objResponse; } if (get_uid(false) != $user_id) { return $objResponse; } if (!commune_carma::isAllowedVote()) { return $objResponse; } // !!! Вообще, везде бы, где ajax, проверку такую делать. $topic = commune::GetTopMessageByAnyOther($topic_id, $user_id, $mod); $uStatus = commune::GetUserCommuneRel($topic['commune_id'], $user_id); if ((!$uStatus || !$uStatus['is_accepted']) && (!$uStatus['is_author'] && $topic['user_id'] != $user_id) || $uStatus['is_deleted'] || $uStatus['is_banned'] || is_banned($user_id)) { $objResponse->script("lockRating{$topic_id}=0;"); return $objResponse; } else { if ($topic && !$topic['is_blocked']) { $v = commune::TopicVote($topic_id, $user_id, intval($vote)); // $rating = intval($prev_rating) + $v; //$rating = commune::GetTopicRating($topic_id); $html = __commPrntTopicRating(commune::GetTopMessageByAnyOther($topic_id, $user_id, commune::MOD_COMM_MODERATOR), $mod, $user_id); $objResponse->assign('topicRate_' . $topic_id, 'innerHTML', $html); $objResponse->script("if(window.lockRating{$topic_id}) lockRating{$topic_id}=0;"); } } return $objResponse; }
function Lenta_Show($page = 1) { global $DB; session_start(); require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/portfolio.php"; require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/professions.php"; require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/commune.php"; require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/links.php"; require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/lenta.php"; require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/users.php"; require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/blogs.php"; /*require_once( $_SERVER['DOCUMENT_ROOT'] . '/classes/stop_words.php' ); $stop_words = new stop_words( false );*/ $yt_replace_id = array(); $yt_replace_data = array(); $uid = get_uid(false); $objResponse = new xajaxResponse(); ob_start(); if (!($groups = professions::GetAllGroupsLite())) { return; } if (!($lenta = lenta::GetUserLenta($uid))) { } $sort = $_COOKIE['lenta_fav_order'] != "" ? $_COOKIE['lenta_fav_order'] : "date"; $favs = lenta::GetFavorites($uid, $sort); if (!($myComms = commune::GetCommunes(NULL, $uid, NULL, commune::OM_CM_MY))) { $myComms = array(); } if (!($joinedComms = commune::GetCommunes(NULL, NULL, $uid, commune::OM_CM_JOINED))) { $joinedComms = array(); } // Все сообщества, доступные пользователю. $communes = array(); foreach ($myComms as $comm) { $communes[] = $comm; } foreach ($joinedComms as $comm) { $communes[] = $comm; } // Блоги if (!($blog_grs = blogs::GetThemes($error, 1))) { $blog_grs = array(); } $blg = NULL; if ($lenta && $lenta['blog_grs'] && !empty($lenta['blog_grs'])) { $blg = implode(',', $lenta['blog_grs']); } $pgs = NULL; if ($lenta['all_profs_checked'] == 'f') { if ($lenta && $lenta['prof_groups'] && !empty($lenta['prof_groups'])) { $pgs = implode(',', $lenta['prof_groups']); } } $allThemesCount = 0; $cms = NULL; $user_comm_mods = array(); // Отбираем среди выбранных ранее сообществ в ленте, те которые до сих пор остаются // доступными ему для просмотра в ленте (его могли удалить или забанить). А также заполняем массив user_mod-ов на каждое из сообществ. if ($lenta && $lenta['communes'] && !empty($lenta['communes'])) { $i = 0; $cms = ''; foreach ($lenta['communes'] as $cm_id) { if ($uStatus = commune::GetUserCommuneRel($cm_id, $uid)) { $ucm = $user_mod; $ucm |= commune::MOD_COMM_MODERATOR * $uStatus['is_moderator']; $ucm |= commune::MOD_COMM_MANAGER * $uStatus['is_manager']; $ucm |= commune::MOD_COMM_ADMIN * ($uStatus['is_admin'] || $uStatus['is_moderator'] || $uStatus['is_manager']); $ucm |= commune::MOD_COMM_AUTHOR * $uStatus['is_author']; $ucm |= commune::MOD_COMM_ASKED * $uStatus['is_asked']; $ucm |= commune::MOD_COMM_ACCEPTED * ($uStatus['is_accepted'] || $ucm & commune::MOD_COMM_ADMIN); $ucm |= commune::MOD_COMM_BANNED * $uStatus['is_banned']; $ucm |= commune::MOD_COMM_DELETED * $uStatus['is_deleted']; $user_comm_mods[$cm_id] = $ucm; if (!$uStatus['is_deleted'] && !$uStatus['is_banned'] && $uStatus['is_blocked_commune'] == 0 && ($uStatus['is_accepted'] || $uStatus['is_author'])) { $cms .= (!$i++ ? '' : ',') . $cm_id; } } } } //if($cms) // $allThemesCount -= commune::GetMyThemesCount($cms, $uid); if ($lenta && $lenta['all_profs_checked'] == 't' || $cms || $pgs || $blg) { $items = lenta::GetLentaItems($uid, $lenta && $lenta['my_team_checked'] == 't', $lenta && $lenta['all_profs_checked'] == 't', $pgs, $cms, ($page - 1) * lenta::MAX_ON_PAGE, lenta::MAX_ON_PAGE, $allWorkCount, $blg); } if (!$items) { $items = array(); } // var_dump($favs); $stars = array(0 => 'bsg.png', 1 => 'bsgr.png', 2 => 'bsy.png', 3 => 'bsr.png'); $i = 0; foreach ($items as $item) { switch ($item['item_type']) { case '2': // Сообщества $top = $item; $user_mod = $user_comm_mods[$top['commune_id']]; if ($top['member_is_banned'] && !($user_mod & (commune::MOD_ADMIN | commune::MOD_COMM_AUTHOR | commune::MOD_COMM_MANAGER)) || $top['is_private'] == 't' && $top['user_id'] != $uid && !($user_mod & (commune::MOD_ADMIN | commune::MOD_COMM_AUTHOR | commune::MOD_COMM_MANAGER)) || $top['is_blocked'] && $top['commune_author_id'] != $uid) { continue; } $aThemeId = is_array($top['theme_id']) ? $top['theme_id'] : array($top['theme_id']); $top['answers'] = $DB->rows("SELECT * FROM commune_poll_answers WHERE theme_id IN (?l) ORDER BY id", array($top['theme_id'])); $GLOBALS[LINK_INSTANCE_NAME] = new links('commune'); $user_id = $uid; $mod = $user_mod; $is_member = $mod & (commune::MOD_ADMIN | commune::MOD_COMM_ACCEPTED | commune::MOD_COMM_AUTHOR); $is_moder = $mod & (commune::MOD_ADMIN | commune::MOD_MODER | commune::MOD_COMM_MODERATOR | commune::MOD_COMM_AUTHOR); $commune_info = commune::getCommuneInfoByMsgID($top['id']); ?> <style> .lo-m .lo-i-my-d .ac-pro, .lo-m .lo-i-my-d .ac-epro { margin-right: 0px; } .lo .utxt .b-layout__txt .b-icon__lprofi{ vertical-align:baseline !important; top:2px !important;} .lo .utxt>.b-pic{ margin-right:10px !important;} </style> <div class="lo lo-m" id='idTop_<?php echo $top['id']; ?> ' style='margin-bottom:0px !important;'> <ul class="lo-p"> <li class="lo-s"> <div class="b-layout_bordrad_3"> <a href="/commune" class="lnk-dot-666">Сообщества</a> </div> </li> <li class="post-f-fav"> <?php $msg_id = $top['id']; ?> <?php if ($favs['CM' . $msg_id]) { ?> <img src="/images/bookmarks/<?php echo $stars[$favs['CM' . $msg_id]['priority']]; ?> " alt="" on="<?php echo $is_fav ? 1 : 0; ?> " id="favstar<?php echo 'CM' . $msg_id; ?> " <?php if ($uid) { ?> onclick="ShowFavFloatLenta(<?php echo $msg_id; ?> , <?php echo $uid; ?> , 'CM')" ><?php } ?> <?php } else { ?> <img src="/images/bookmarks/bsw.png" alt="" on="<?php echo $is_fav ? 1 : 0; ?> " id="favstar<?php echo 'CM' . $msg_id; ?> " <?php if ($uid) { ?> onclick="ShowFavFloatLenta(<?php echo $msg_id; ?> , <?php echo $uid; ?> , 'CM')" ><?php } ?> <?php } ?> <ul class="post-f-fav-sel" style="display:none;" id="FavFloat<?php echo $msg_id; ?> "></ul> </li> </ul> <div class="utxt"> <?php print __LentaPrntUsrInfo($top, 'user_', '', '', false, true); ?> <h3> <?php if ($top['is_private'] == 't') { ?> <img src="/images/icons/eye-hidden.png" alt="Скрытый пост" title="Скрытый пост"> <?php } //if ?> <?php $sTitle = $top['title']; ?> <?php $sMessage = $top['msgtext']; ?> <a href="<?php echo getFriendlyURL('commune', $top['id']); ?> ?om=<?php echo commune::OM_TH_NEW; ?> "><?php echo reformat2($sTitle, 30, 0, 1); ?> </a> </h3> <p><?php echo reformat2($sMessage, 46, 1, 0, 1); ?> </p> <!-- Questions --> <?php if ($top['question'] != '') { ?> <div id="poll-<?php echo $top['theme_id']; ?> " class="commune-poll"> <div class="commune-poll-theme"><?php echo reformat($top['question'], 43, 0, 1); ?> </div> <div id="poll-answers-<?php echo $top['theme_id']; ?> "> <?php if ($top['poll_closed'] == 't') { ?> <table class="b-layout__table b-layout__table_width_full"><?php } ?> <?php // если надо вывести только количество ответов $showAnswers = $top['poll_votes'] || !$user_id || $top['commune_blocked'] == 't' || $top['user_is_banned'] || $top['member_is_banned'] || !$is_member; if ($showAnswers) { ?> <table class="poll-variants"><?php } ?> <?php $i = 0; $max = 0; if ($top['poll_closed'] == 't') { foreach ($top['answers'] as $answer) { $max = max($max, $answer['votes']); } } foreach ($top['answers'] as $answer) { ?> <?php if ($top['poll_closed'] == 't') { ?> <tr class="b-layout__tr"> <td class="b-layout__left b-layout__left_width_50"><label class="b-layout__txt" for="poll_<?php echo $i; ?> "><?php echo reformat($answer['answer'], 30, 0, 1); ?> </label></td> <td class="b-layout__middle b-layout__middle_width_30 b-layout__middle_center"><?php echo $answer['votes']; ?> </td> <td class=" b-layout__right "><div class=" res-line rl1" style="width: <?php echo $max ? round(100 * $answer['votes'] / $max * 3) : 0; ?> px;"></div></td> </tr> <?php } else { ?> <?php if ($showAnswers) { ?> <tr> <td class="bp-gres"><?php echo $answer['votes']; ?> </td> <td> <label><?php echo $answer['answer']; ?> </label> </td> </tr> <?php } else { ?> <?php if ($top['poll_multiple'] == 't') { ?> <div class="b-check b-check_padbot_10"> <input id="poll-<?php echo $top['theme_id']; ?> _<?php echo $i; ?> " class="b-check__input" type="checkbox" name="poll_vote[]" value="<?php echo $answer['id']; ?> " /> <label class="b-check__label b-check__label_fontsize_13" for="poll-<?php echo $top['theme_id']; ?> _<?php echo $i++; ?> "><?php echo reformat($answer['answer'], 30, 0, 1); ?> </label> </div> <?php } else { ?> <div class="b-radio__item b-radio__item_padbot_5"> <table class="b-layout__table b-layout__table_width_full" cellpadding="0" cellspacing="0" border="0"> <tr class="b-layout__tr"> <td class="b-layout__left b-layout__left_width_15"><input id="poll-<?php echo $top['theme_id']; ?> _<?php echo $i; ?> " class="b-radio__input b-radio__input_top_-3" type="radio" name="poll_vote" value="<?php echo $answer['id']; ?> " /></td> <td class="b-layout__right"><label class="b-radio__label b-radio__label_fontsize_13" for="poll-<?php echo $top['theme_id']; ?> _<?php echo $i++; ?> "><?php echo reformat($answer['answer'], 30, 0, 1); ?> </label></td> </tr> </table> </div> <?php } ?> <?php } ?> <?php } ?> <?php } ?> <?php if ($showAnswers) { ?> </table><?php } ?> <?php if ($top['poll_closed'] == 't') { ?> </table><?php } ?> </div> <?php if (!$top['poll_votes'] && $user_id && $top['poll_closed'] != 't' && $top['commune_blocked'] != 't' && !$top['user_is_banned'] && !$top['member_is_banned'] && $is_member) { ?> <div class="b-buttons b-buttons_inline-block"> <span id="poll-btn-vote-<?php echo $top['theme_id']; ?> "> <a class="b-button b-button_flat b-button_flat_grey" href="javascript: return false;" onclick="poll.vote('Commune', <?php echo $top['theme_id']; ?> ); return false;">Ответить</a> </span> <span id="poll-btn-result-<?php echo $top['theme_id']; ?> " ><a class="b-buttons__link b-buttons__link_dot_0f71c8" href="javascript: return false;" onclick="poll.showResult('Commune', <?php echo $top['theme_id']; ?> ); return false;">Посмотреть результаты</a></span> </div> <?php } else { ?> <span id="poll-btn-vote-<?php echo $top['theme_id']; ?> "></span> <span id="poll-btn-result-<?php echo $top['theme_id']; ?> "></span> <?php } ?> </div> <br /> <?php } ?> <!-- /Questions --> <!-- Youtube --> <?php if ($top['yt_link']) { $tmp_yt_id = $top['id'] . 'ytlink' . mt_rand(1, 1000000); $tmp_yt_data = show_video($top['id'], $top['yt_link']); array_push($yt_replace_id, '/' . $tmp_yt_id . '/'); array_push($yt_replace_data, $tmp_yt_data); echo "<div style='padding-top: 20px'>" . $tmp_yt_id . "</div><br/>"; } ?> <?php // (($top['youtube_link'])? ("<div style='padding-top: 20px'>".show_video($top['id'], $top['youtube_link'])."</div><br/>"):"") ?> <!-- /Youtube --> <!-- Attach --> <?php if ($top['attach']) { $attach = $top['attach'][0]; if ($attach['fname']) { $att_ext = strtolower(CFile::getext($attach['fname'])); if ($att_ext == "swf") { print "<br/>" . viewattachExternal($top['user_login'], $attach['fname'], "upload", "/blogs/view_attach.php?user="******"&attach=" . $attach['fname']) . "<br/>"; } elseif ($att_ext == 'flv') { print "<br/>" . viewattachLeft($top['user_login'], $attach['fname'], "upload", $file, 1000, 470, 307200, true, $attach['small'] == 't' ? 1 : 0) . "<br/>"; } else { print "<br/>" . viewattachLeft($top['user_login'], $attach['fname'], "upload", $file, 1000, 470, 307200, !($attach['small'] == 't'), $attach['small'] == 't' ? 1 : 0) . "<br/>"; } } echo '<br/>'; if (sizeof($top['attach']) > 1) { echo "<a href=\"" . getFriendlyURL('commune', $top['id']) . "\"><b>" . blogs::ShowMoreAttaches(sizeof($top['attach'])) . "</b></a><br/><br/>"; } } ?> <!-- /Attach --> </div> <ul class="lo-i"> <?php $post_year = dateFormat('Y', $top['post_time']); ?> <li class="lo-i-cm"> <a href="<?php echo getFriendlyURL('commune', $top['id']); ?> " <?php echo $top['current_count'] == NULL && intval($top['count_comments']) != 0 ? 'style="font-weight:bold;"' : ''; ?> ><?php echo $top['closed_comments'] == 't' ? "Комментирование закрыто" : "Комментарии (" . intval($top['count_comments']) . ")"; ?> </a> <?php if ($top['closed_comments'] == 'f') { $top['current_count'] = $top['current_count'] == '' ? $top['a_count'] - 1 : $top['current_count']; if ($top['a_count'] > 1) { $unread = $top['a_count'] - 1 - $top['current_count']; } if ($unread > 0) { ?> <a href="<?php echo getFriendlyURL('commune', $top['id']); ?> #unread" style="color:#6BA813; font-weight:bold;">(<?php echo $unread; ?> <?php echo $unread == 1 ? "новый" : "новых"; ?> )</a> <?php } $unread = 0; } ?> </li> <li class="lo-i-c"><a href="/commune/?id=<?php echo $top['commune_id']; ?> "><?php echo $top['commune_name']; ?> </a>, <a href="/commune/?gr=<?php echo $top['commune_group_id']; ?> "><?php echo $top['commune_group_name']; ?> </a></li> <li><?php echo $post_year > 2000 ? dateFormat("d.m.Y H:i", $top['post_time']) : ''; ?> </li> </ul> </div> <br> <?php break; case '1': // Портфолио $work = $item; if ($work['work_is_blocked']) { continue; } $is_fav = isset($favs['PF' . $work['portfolio_id']]) ? 1 : 0; $msg_id = $work['portfolio_id']; ?> <div class="lo lo-m" style='margin-bottom:0px !important;'> <ul class="lo-p"> <li class="lo-s"> <div class="b-layout_bordrad_3"> <a href="/portfolio" class="lnk-dot-666">Работы</a> </div> </li> <li class="post-f-fav"> <?php if ($favs['PF' . $msg_id]) { ?> <img src="/images/bookmarks/<?php echo $stars[$favs['PF' . $msg_id]['priority']]; ?> " alt="" on="<?php echo $is_fav ? 1 : 0; ?> " id="favstar<?php echo 'PF' . $msg_id; ?> " <?php if ($uid) { ?> onclick="ShowFavFloatLenta(<?php echo $msg_id; ?> , <?php echo $uid; ?> , 'PF')" ><?php } ?> <?php } else { ?> <img src="/images/bookmarks/bsw.png" alt="" on="<?php echo $is_fav ? 1 : 0; ?> " id="favstar<?php echo 'PF' . $msg_id; ?> " <?php if ($uid) { ?> onclick="ShowFavFloatLenta(<?php echo $msg_id; ?> , <?php echo $uid; ?> , 'PF')" ><?php } ?> <?php } ?> <ul class="post-f-fav-sel" style="display:none;" id="FavFloat<?php echo $msg_id; ?> "></ul> </li> </ul> <div class="utxt"> <?php print __LentaPrntUsrInfo($work, 'user_', '', '', false, true); ?> <?php $sTitle = $work['name']; ?> <h3><a href="/users/<?php echo $work['user_login']; ?> /viewproj.php?prjid=<?php echo $work['portfolio_id']; ?> "><?php echo reformat2($sTitle, 40, 0, 1); ?> </a> </h3> <?php $is_preview = $work['pict'] || $work['prev_pict']; if ($is_preview && $work['prev_type'] != 1) { echo view_preview($work['user_login'], $work['prev_pict'], "upload", $align, true, true, '', 200) . "<br/><br/>"; } close_tags($work['descr'], array('b', 'i')); $sDescr = $work['descr']; ?> <p><?php echo reformat($sDescr, 80, 0, 0, 1); ?> </p> </div> <ul class="lo-i"> <?php $post_year = dateFormat('Y', $work['post_time']); ?> <li class="lo-i-c"><a href="/freelancers/?prof=<?php echo $work['prof_id']; ?> "><?php echo $work['prof_name']; ?> </a></li> <li><?php echo $post_year > 2000 ? dateFormat("d.m.Y H:i", $work['post_time']) : ''; ?> </li> </ul> </div> <br> <?php break; case '4': // Блоги $item['thread_id'] = $item['theme_id']; $item['answers'] = $DB->rows("SELECT * FROM blogs_poll_answers WHERE thread_id IN (?l) ORDER BY id", array($item['thread_id'])); $GLOBALS[LINK_INSTANCE_NAME] = new links('blogs'); $user_id = $uid; ?> <div class="lo lo-m" id='idBlog_<?php echo $item['thread_id']; ?> ' style='margin-bottom:0px !important;'> <ul class="lo-p"> <li class="lo-s"> <div class="b-layout_bordrad_3"> <a href="/blogs" class="lnk-dot-666">Блоги</a> </div> </li> <li class="post-f-fav"> <?php $msg_id = $item['theme_id']; ?> <?php if ($favs['BL' . $msg_id]) { ?> <img src="/images/bookmarks/<?php echo $stars[$favs['BL' . $msg_id]['priority']]; ?> " alt="" on="<?php echo $is_fav ? 1 : 0; ?> " id="favstar<?php echo 'BL' . $msg_id; ?> " <?php if ($uid) { ?> onclick="ShowFavFloatLenta(<?php echo $msg_id; ?> , <?php echo $uid; ?> , 'BL')" ><?php } ?> <?php } else { ?> <img src="/images/bookmarks/bsw.png" alt="" on="<?php echo $is_fav ? 1 : 0; ?> " id="favstar<?php echo 'BL' . $msg_id; ?> " <?php if ($uid) { ?> onclick="ShowFavFloatLenta(<?php echo $msg_id; ?> , <?php echo $uid; ?> , 'BL')" ><?php } ?> <?php } ?> <ul class="post-f-fav-sel" style="display:none;" id="FavFloat<?php echo $msg_id; ?> "></ul> </li> </ul> <div class="utxt"> <?php print __LentaPrntUsrInfo($item, 'user_', '', '', false, true); ?> <?php $sTitle = $item['title']; ?> <?php $sMessage = $item['msgtext']; ?> <h3><a href="<?php echo getFriendlyURL("blog", $item['theme_id']); ?> "><?php echo reformat2($sTitle, 30, 0, 1); ?> </a> </h3> <p><?php echo reformat($sMessage, 46, 1, -($item['is_chuck'] == 't'), 1); ?> </p> <!-- Questions --> <?php if ($item['question'] != '') { ?> <div id="poll-<?php echo $item['thread_id']; ?> " class="poll"> <div class="commune-poll-theme"><?php echo reformat($item['question'], 43, 0, 1); ?> </div> <div id="poll-answers-<?php echo $item['thread_id']; ?> "> <?php if ($item['poll_multiple'] != 't') { ?> <div class="b-radio b-radio_layout_vertical"><?php } ?> <?php if ($item['poll_closed'] == 't') { ?> <table class="b-layout__table b-layout__table_width_full"><?php } ?> <?php $i = 0; $max = 0; if ($item['poll_closed'] == 't') { foreach ($item['answers'] as $answer) { $max = max($max, $answer['votes']); } } foreach ($item['answers'] as $answer) { ?> <?php if ($item['poll_closed'] == 't') { ?> <tr class="b-layout__tr"> <td class="b-layout__left b-layout__left_width_50"><label class="b-layout__txt" for="poll_<?php echo $i; ?> "><?php echo reformat($answer['answer'], 30, 0, 1); ?> </label></td> <td class="b-layout__middle b-layout__middle_width_30 b-layout__middle_center"><?php echo $answer['votes']; ?> </td> <td class=" b-layout__right "><div class=" res-line rl1" style="width: <?php echo $max ? round(100 * $answer['votes'] / $max * 3) : 0; ?> px;"></div></td> </tr> <?php } else { ?> <?php if ($item['poll_votes'] || !$user_id) { ?> <div class="bp-gres"><?php echo $answer['votes']; ?> </div> <?php } else { ?> <?php if ($item['poll_multiple'] == 't') { ?> <div class="b-check b-check_padbot_10"> <input id="poll-<?php echo $item['thread_id']; ?> _<?php echo $i; ?> " class="b-check__input" type="checkbox" name="poll_vote[]" value="<?php echo $answer['id']; ?> " /> <label class="b-check__label b-check__label_fontsize_13" for="poll-<?php echo $item['thread_id']; ?> _<?php echo $i++; ?> "><?php echo reformat($answer['answer'], 30, 0, 1); ?> </label> </div> <?php } else { ?> <div class="b-radio__item b-radio__item_padbot_5"> <table class="b-layout__table b-layout__table_width_full" cellpadding="0" cellspacing="0" border="0"> <tr class="b-layout__tr"> <td class="b-layout__left b-layout__left_width_15"><input id="poll-<?php echo $item['thread_id']; ?> _<?php echo $i; ?> " class="b-radio__input b-radio__input_top_-3" type="radio" name="poll_vote" value="<?php echo $answer['id']; ?> " /></td> <td class="b-layout__right"><label class="b-radio__label b-radio__label_fontsize_13" for="poll-<?php echo $item['thread_id']; ?> _<?php echo $i++; ?> "><?php echo reformat($answer['answer'], 30, 0, 1); ?> </label></td> </tr> </table> </div> <?php } ?> <?php } ?> <?php } ?> <?php } ?> <?php if ($item['poll_closed'] == 't') { ?> </table><?php } ?> <?php if ($item['poll_multiple'] != 't') { ?> </div><?php } ?> </div> <?php if (!$item['poll_votes'] && $user_id && $item['poll_closed'] != 't') { ?> <div class="b-buttons b-buttons_inline-block"> <span id="poll-btn-vote-<?php echo $item['thread_id']; ?> "> <a class="b-button b-button_flat b-button_flat_grey" href="javascript: return false;" onclick="poll.vote('Blogs', <?php echo $item['thread_id']; ?> ); return false;">Ответить</a> </span> <span id="poll-btn-result-<?php echo $item['thread_id']; ?> "><a class="b-buttons__link b-buttons__link_dot_0f71c8" href="javascript: return false;" onclick="poll.showResult('Blogs', <?php echo $item['thread_id']; ?> ); return false;">Посмотреть результаты</a> </span> </div> <?php } else { ?> <span id="poll-btn-vote-<?php echo $item['thread_id']; ?> "></span> <span id="poll-btn-result-<?php echo $item['thread_id']; ?> "></span> <?php } ?> </div> <br/> <?php } ?> <!-- /Questions --> <!-- Youtube --> <?php if ($item['yt_link']) { $tmp_yt_id = $item['id'] . 'ytlink' . rand(1, 1000000); $tmp_yt_data = show_video($item['id'], $item['yt_link']); array_push($yt_replace_id, '/' . $tmp_yt_id . '/'); array_push($yt_replace_data, $tmp_yt_data); echo "<div style='padding-top: 20px'>" . $tmp_yt_id . "</div><br/>"; } // =(($item['yt_link'])? ("<div style='padding-top: 20px'>".show_video($item['id'], $item['yt_link'])."</div>"):"") ?> <!-- /Youtube --> <!-- Attach --> <?php if ($item['attach']) { $attach = $item['attach'][0]; if ($attach['fname']) { $att_ext = strtolower(CFile::getext($attach['fname'])); if ($att_ext == "swf") { print "<br/>" . viewattachExternal($item['user_login'], $attach['fname'], "upload", "/blogs/view_attach.php?user="******"&attach=" . $attach['fname']) . "<br/>"; } elseif ($att_ext == 'flv') { print "<br/>" . viewattachLeft($item['user_login'], $attach['fname'], "upload", $file, 1000, 470, 307200, true, $attach['small'] == 2 ? 1 : 0) . "<br/>"; } else { print "<br/>" . viewattachLeft($item['user_login'], $attach['fname'], "upload", $file, 1000, 470, 307200, !$attach['small'], $attach['small'] == 2 ? 1 : 0) . "<br/>"; } } echo '<br/>'; if (sizeof($item['attach']) > 1) { echo "<a href=\"" . getFriendlyURL("blog", $item['theme_id']) . "\"><b>" . blogs::ShowMoreAttaches(sizeof($item['attach'])) . "</b></a><br/><br/>"; } } ?> <!-- /Attach --> </div> <ul class="lo-i"> <?php $post_year = dateFormat('Y', $item['post_time']); ?> <li class="lo-i-cm"> <a href="<?php echo getFriendlyURL("blog", $item['theme_id']); ?> " <?php echo $item['current_count'] == NULL && intval($item['count_comments']) != 0 ? 'style="font-weight:bold;"' : ''; ?> ><?php echo $item['closed_comments'] == 't' ? "Комментирование закрыто" : "Комментарии (" . intval($item['count_comments']) . ")"; ?> </a> <?php if (isset($item['status_comments']) && $item['count_comments'] > 0 && $item['status_comments'] < $item['count_comments'] && $item['status_comments'] != -100 && $item['closed_comments'] == 'f') { $new_comments_num = $item['count_comments'] - $item['status_comments']; ?> <a href="<?php echo getFriendlyURL("blog", $item['theme_id']); ?> #unread" style="color:#6BA813; font-weight:bold;">(<?php echo $new_comments_num; ?> <?php echo $new_comments_num == 1 ? "новый" : "новых"; ?> )</a> <?php } else { if (isset($item['status_comments']) && $item['count_comments'] > 0 && $item['status_comments'] < $item['count_comments'] && $item['status_comments'] == -100 && $item['closed_comments'] == 'f') { $new_comments_num = $item['count_comments']; ?> <a href="<?php echo getFriendlyURL("blog", $item['theme_id']); ?> #unread" style="color:#6BA813; font-weight:bold;">(<?php echo $new_comments_num; ?> <?php echo $new_comments_num == 1 ? "новый" : "новых"; ?> )</a> <?php } } ?> </li> <li class="lo-i-c"><a href="<?php echo getFriendlyURL("blog_group", $item['commune_group_id']); ?> "><?php echo $item['commune_group_name']; ?> </a></li> <li><?php echo $post_year > 2000 ? dateFormat("d.m.Y H:i", $item['post_time']) : ''; ?> </li> </ul> </div> <br> <?php break; } $i++; } ?> <?php // $allThemesCount = lenta::GetLentaThemesCount($cms); ?> <br/> <?php // Страницы $count = 4; $pages = ceil(($allWorkCount + $allThemesCount) / lenta::MAX_ON_PAGE); $html = '<div class="b-pager" >'; if (is_array($count)) { list($scount, $ecount) = $count; } else { $scount = $ecount = $count; } if ($pages > 1) { $start = $page - $scount; if ($start < 1) { $start = 1; } $end = $page + $ecount; if ($end > $pages) { $end = $pages; } $html .= '<ul class="b-pager__back-next">'; if ($page < $pages) { $html .= "<input type=\"hidden\" id=\"next_navigation_link1\" value=\"" . ($page + 1) . "\">"; $html .= '<li class="b-pager__next" id="nav_next_not_active1"><a class="b-pager__link" href="javascript:void(0)" onClick="document.location.href=\'#lentatop\'; spiner.show(); xajax_Lenta_Show(' . ($page + 1) . '); return false;" id="PrevLink"></a> </li>'; } if ($page > 1) { $html .= "<input type=\"hidden\" id=\"pre_navigation_link1\" value=\"" . ($page - 1) . "\">"; $html .= '<li class="b-pager__back"> <a id="NextLink" class="b-pager__link" href="javascript:void(0)" onClick="document.location.href=\'#lentatop\'; spiner.show(); xajax_Lenta_Show(' . ($page - 1) . '); return false;"></a></li>'; } $html .= '</ul>'; $html .= '<ul class="b-pager__list">'; for ($i = $start; $i <= $end; $i++) { if ($i == $start && $start > 1) { $html .= '<li class="b-pager__item"><a class="b-pager__link" href="javascript:void(0)" onClick="document.location.href=\'#lentatop\'; spiner.show(); xajax_Lenta_Show(1); return false;">1</a></li>'; if ($i == 3) { $html .= '<li class="b-pager__item"><a class="b-pager__link" href="javascript:void(0)" onClick="document.location.href=\'#lentatop\'; spiner.show(); xajax_Lenta_Show(2); return false;">2</a></li>'; } elseif ($i != 2) { $html .= "<li class='b-pager__item'>…</li>"; } } $html .= $page == $i ? '<li class="b-pager__item b-pager__item_active"><span class="b-pager__b1"><span class="b-pager__b2">' . $i . '</span></span></li>' : '<li class="b-pager__item"><a class="b-pager__link" href="javascript:void(0)" onClick="document.location.href=\'#lentatop\'; spiner.show(); xajax_Lenta_Show(' . $i . '); return false;">' . $i . '</a></li>'; if ($i == $end && $pages - 1 > $end) { $html .= '<li class="b-pager__item">…</li>'; } } $html .= '</ul>'; } echo $html . '</div>'; // Страницы закончились ?> <?php $content = ob_get_contents(); ob_end_clean(); $content_js = ''; if ($yt_replace_data) { foreach ($yt_replace_data as $key => $value) { $yt_replace_data[$key] = preg_replace("/^(.*)<script.*\$/sm", "\$1", $value); $content_js .= preg_replace("/^(.*<script type='text\\/javascript'>)(.*)(<\\/script>)\$/sm", "\$2", $value); } $content = preg_replace($yt_replace_id, $yt_replace_data, $content); $objResponse->script($content_js); } $objResponse->assign('lenta-cnt', 'innerHTML', $content); $objResponse->script($content_js); $objResponse->script('spiner.hide();'); $objResponse->script('$$("#lenta_cats_checkboxes input[type=checkbox]").each(function(el) { el.set("disabled", false); });'); $objResponse->script('fix_banner();'); return $objResponse; }
/** * Сообщение автору комментария в сообществе об изменении комментария. * * @param type $w_msg */ public function sendCommuneCommentEditedWarn($comment) { require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/users.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/commune.php'; $user_data = commune::GetUserCommuneRel($comment['resource_id'], get_uid(0)); $f_user = new users(); $f_user->GetUserByUID($comment['author']); if ($user_data['is_author']) { $deleter = 'создателем сообщества'; } elseif ($user_data['is_moderator']) { $deleter = 'модератором сообщества'; } else { $deleter = 'модератором сайта'; } if (!$user_data['is_author'] && !$user_data['is_moderator']) { $attention = 'Мы призываем вас впредь не нарушать правила портала, иначе модераторы лишат ваш аккаунт доступа к сайту. '; } $message = "\nЗдравствуйте, {$f_user->uname} {$f_user->usurname}\n\nВаш комментарий {$comment['link']} от " . date('d.m.Y', strtotime($comment['created_time'])) . " был отредактирован {$deleter}.\n \n" . $attention . 'Это сообщение было выслано автоматически, и ответ на него не будет рассматриваться. Команда Free-lance.ru.'; self::Add(users::GetUid($err, 'admin'), $f_user->login, $message, '', 1); }
$question = $draft_data['poll_question']; $multiple = $draft_data['poll_type'] == 0 ? 'f' : 't'; $draft_answers = $draft_data['poll_answers']; if (empty($draft_answers)) { $draft_answers = array(''); } $edit_msg['poll'] = array(); if ($draft_answers) { foreach ($draft_answers as $draft_answer) { array_push($edit_msg['poll'], array('answer' => htmlspecialchars($draft_answer))); } } $answers = $edit_msg['poll']; } if (!isset($user_mod)) { if ($uStatus = commune::GetUserCommuneRel($id, get_uid())) { $user_mod |= commune::MOD_COMM_MODERATOR * $uStatus['is_moderator']; $user_mod |= commune::MOD_COMM_MANAGER * $uStatus['is_manager']; $user_mod |= commune::MOD_COMM_ADMIN * ($uStatus['is_admin'] || $uStatus['is_moderator'] || $uStatus['is_manager']); $user_mod |= commune::MOD_COMM_AUTHOR * $uStatus['is_author']; $user_mod |= commune::MOD_COMM_ASKED * $uStatus['is_asked']; $user_mod |= commune::MOD_COMM_ACCEPTED * ($uStatus['is_accepted'] || $user_mod & commune::MOD_COMM_ADMIN); $user_mod |= commune::MOD_COMM_BANNED * $uStatus['is_banned']; } $mod = $user_mod; } $is_comm_admin = $user_mod & (commune::MOD_COMM_ADMIN | commune::MOD_COMM_MODERATOR); $is_author = $user_mod & commune::MOD_COMM_AUTHOR; ?> <form <?php
/** * Пользовательский иммунитет у команды, топики нельзя заблокировать. * * @staticvar array $is_immunity * * @param int $uid Ид Пользователя * @param array $data Данные пользователя если имеются * @param int $msg_id ID сообщения * * @return bool */ public static function isImmunity($uid, $data = array(), $msg_id = null) { static $is_immunity; if (isset($is_immunity[$uid])) { return $is_immunity[$uid]; } $commune_id = commune::getCommuneIDByMessageID($msg_id); $status = commune::GetUserCommuneRel($commune_id, $uid); if (empty($data)) { require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/users.php'; $user = new users(); $user->GetUserByUID($uid); $is_immunity[$uid] = $user->is_team == 't' || strtolower($user->login) == 'admin' || $status['is_moderator'] == 1 || $status['is_admin'] == 1 || $status['is_author'] == 1; } else { $is_immunity[$uid] = $data['is_team'] == 't' || strtolower($data['login']) == 'admin' || $status['is_moderator'] == 1 || $status['is_admin'] == 1 || $status['is_author'] == 1; } return $is_immunity[$uid]; }
} if ($mod & commune::MOD_MODER) { $alt .= ' ( ' . $top['modified_login'] . ' : ' . $top['modified_usurname'] . ' ' . $top['modified_uname'] . ' ) '; } $alt .= dateFormat("[d.m.Y | H:i]", $top['modified_time']); ?> <img src="/images/ico-e-<?php echo $img_suf; ?> .png" alt="" title="<?php echo $alt; ?> " style="vertical-align:top; position:relative; top:2px;"/> <?php } $user_data = commune::GetUserCommuneRel($top['commune_id'], $top['user_id']); if ($is_moder) { if ($top['member_is_banned'] || $top['user_is_banned'] || $user_data['is_banned']) { ?> <p><strong style="background: #F2A5A5; paddong: 4px">Пользователь забанен<?php echo $user_data['is_banned'] ? ' в сообществе' : ''; ?> </strong></p> <?php } } ?> <span class="b-layout__txt b-layout__txt_fontsize_11 b-layout__txt_weight_normal b-layout__txt_lowercase b-layout__txt_padright_10">на сайте <?php echo ElapsedMnths(strtotime($top['reg_date'])); ?> </span>
if ($lenta['all_profs_checked'] == 'f') { if ($lenta && $lenta['prof_groups'] && !empty($lenta['prof_groups'])) { $pgs = implode(',', $lenta['prof_groups']); } } $allThemesCount = 0; $cms = NULL; $user_comm_mods = array(); $DB = new DB('master'); // Отбираем среди выбранных ранее сообществ в ленте, те которые до сих пор остаются // доступными ему для просмотра в ленте (его могли удалить или забанить). А также заполняем массив user_mod-ов на каждое из сообществ. if ($lenta && $lenta['communes'] && !empty($lenta['communes'])) { $i = 0; $cms = ''; foreach ($lenta['communes'] as $cm_id) { if ($uStatus = commune::GetUserCommuneRel($cm_id, $uid)) { $ucm = $user_mod; $ucm |= commune::MOD_COMM_MODERATOR * $uStatus['is_moderator']; $ucm |= commune::MOD_COMM_MANAGER * $uStatus['is_manager']; $ucm |= commune::MOD_COMM_ADMIN * ($uStatus['is_admin'] || $uStatus['is_moderator'] || $uStatus['is_manager']); $ucm |= commune::MOD_COMM_AUTHOR * $uStatus['is_author']; $ucm |= commune::MOD_COMM_ASKED * $uStatus['is_asked']; $ucm |= commune::MOD_COMM_ACCEPTED * ($uStatus['is_accepted'] || $ucm & commune::MOD_COMM_ADMIN); $ucm |= commune::MOD_COMM_BANNED * $uStatus['is_banned']; $ucm |= commune::MOD_COMM_DELETED * $uStatus['is_deleted']; $user_comm_mods[$cm_id] = $ucm; if (!$uStatus['is_deleted'] && !$uStatus['is_banned'] && ($uStatus['is_accepted'] || $uStatus['is_author'])) { $cms .= (!$i++ ? '' : ',') . $cm_id; } } }
$msgtext = __paramValue('ckedit', antispam($_POST['msgtext'])); //antispam(__paramInit('wysiwyg_tidy', NULL, 'msgtext', '')); //$msgtext = stripslashes($msgtext); } else { $msgtext = antispam(__paramInit('wysiwyg_tidy', NULL, 'msgtext', '')); } $youtube_link = __paramInit('html', NULL, 'youtube_link', ''); //$attach = __paramInit('string', NULL, 'prev_attach'); //$youtube_link = str_replace('watch?v=', 'v/', $youtube_link); $question = antispam(trim(__paramInit('string', NULL, 'question'))); $answers = is_array($_POST['answers']) ? $_POST['answers'] : array(); $answers_exists = is_array($_POST['answers_exists']) ? $_POST['answers_exists'] : array(); $multiple = __paramInit('int', NULL, 'multiple', '0'); $close_comments = __paramInit('int', NULL, 'close_comments'); $is_private = __paramInit('int', NULL, 'is_private'); $user_data = commune::GetUserCommuneRel($id, $uid); if ((!$user_data['is_accepted'] || $user_data['is_deleted'] || $user_data['is_banned']) && (!hasPermissions('communes') && !$user_data['is_author'])) { header("Location: /commune/?id={$id}&om={$om}" . ($rating ? '&rating=' . $rating : '')); exit; } if ($_POST['delattach']) { $deleted_file = $_POST['delattach']; $file = new CFile(); $file->table = 'file_commune'; foreach ($deleted_file as $i => $id_del) { $file->Delete($id_del); } } // $file = isset($_FILES['file']) ? new CFile($_FILES['file']) : ''; if (!($user_mod & (commune::MOD_COMM_AUTHOR | commune::MOD_COMM_ADMIN)) && !hasGroupPermissions('administrator')) { $pos = false;
/** * Удаление сообщение. * * @param integer $message_id Ид сообщения * @param integer $user_id Кто удаляет * @param integer $user_mod Права удаляющего * @param string &$deleted_time Время удаления комментария * @return integer 1 если удаление прошл успешно, иначе 0 */ function DeleteMessage($message_id, $user_id, $user_mod = 0, &$deleted_time) { global $DB; $message = commune::GetTopMessageByAnyOther($message_id, $_SESSION['uid'], $user_mod); if (get_uid(false)) { $comm = commune::getCommuneIDByMessageID($message_id); $status = commune::GetUserCommuneRel($comm, get_uid(false)); } if ($message['user_id'] != get_uid(false) && !hasPermissions('communes') && !($status['is_moderator'] == 1 || $status['is_admin'] == 1 || $status['is_author'] == 1)) { return 0; // Чужой топик удалять нельзя если ты не админ сайта } if (!$message['parent_id']) { $uid = get_uid(false); $deleted_time = date('Y-m-d H:i:s'); //modified_id обновляю исключительно ради получения имени удалившего модератора, т к в запросе итак предостаточно джоинов. Если спама об редактировании не начнет приходить, то думаю можно оставить $sql = "UPDATE commune_messages SET deleted_id = {$uid}, modified_id = {$uid}, deleted_time = '{$deleted_time}' WHERE id = ?i RETURNING theme_id, parent_id"; if ($res = $DB->query($sql, $message_id)) { if (pg_affected_rows($res)) { // Пересчитать позиции list($theme_id, $parent_id) = pg_fetch_row($res); if (!$parent_id && $theme_id) { $sql = "SELECT re_pos_commune_themes(?i, (SELECT pos FROM commune_themes WHERE id = ?i), NULL);"; $DB->query($sql, $message['commune_id'], $theme_id); } // уведомление об удалении, если удаляет админ if ($message['user_id'] != $user_id) { require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/messages.php'; $commune = self::GetCommune($message['commune_id'], get_uid(0)); $member = self::getMember($message['commune_id'], get_uid(0), self::MEMBER_ADMIN | self::MEMBER_MODERATOR); if ($commune['author_uid'] == get_uid(0)) { $deleter = 'admin'; } elseif ($member) { $deleter = 'moder'; } else { $deleter = 'site-moder'; } messages::SendDeletedCommuneTheme($message, $deleter); } require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/user_content.php'; $DB->query('DELETE FROM moderation WHERE rec_id = ?i AND rec_type = ?i', $message_id, user_content::MODER_COMMUNITY); return 1; } else { } // Не удалилось. Значит будем делать UPDATE. } else { return 0; } } $sql = "UPDATE commune_messages\n SET deleted_time = LOCALTIMESTAMP,\n deleted_id = ?i,\n modified_id = ?i\n WHERE id = ?i RETURNING *"; if ($res = $DB->query($sql, $user_id, $user_id, $message['id'])) { return -1; } return 0; }