Misafir Misafir
| Konu: Üyeler tarafından açılmış konuların tamamını liste halinde Paz Mart 02, 2008 3:44 pm | |
| profil bölümünden herkes görebilir.Üye profilinde 2 yerde çıkacak butonlar Sources/Profile.php yi aç bul - Kod:
-
// Show all posts by the current user function showPosts($memID) { Öncesine ekle - Kod:
-
// Show all topics by the current user <><><><><><><><><><><><><><><> function showTopics($memID) { global $txt, $user_info, $scripturl, $modSettings, $db_prefix; global $context, $user_profile, $ID_MEMBER, $sourcedir;
// If just deleting a message, do it and then redirect back. if (isset($_GET['delete'])) { checkSession('get');
// We can be lazy, since removeMessage() will check the permissions for us. require_once($sourcedir . '/RemoveTopic.php'); removeMessage((int) $_GET['delete']);
// Back to... where we are now ;). redirectexit('action=profile;u=' . $memID . ';sa=showTopics;start=' . $_GET['start']); }
// Is the load average too high to allow searching just now? if (!empty($context['load_average']) && !empty($modSettings['loadavg_show_posts']) && $context['load_average'] >= $modSettings['loadavg_show_posts']) fatal_lang_error('loadavg_show_posts_disabled', false);
// Default to 10. if (empty($_REQUEST['viewscount']) || !is_numeric($_REQUEST['viewscount'])) $_REQUEST['viewscount'] = '10';
// If this is a large forum, try a temporary table. if ($modSettings['totalMessages'] > 100000 && $user_profile[$memID]['posts'] > 100) { db_query(" DROP TABLE IF EXISTS {$db_prefix}topics_posted_in", false, false);
// Let's try to avoid as many locks as possible. $have_temp_table = db_query(" CREATE TEMPORARY TABLE {$db_prefix}topics_posted_in ( PRIMARY KEY (ID_TOPIC) ) SELECT ID_TOPIC, ID_BOARD FROM {$db_prefix}messages WHERE ID_MEMBER = $memID GROUP BY ID_TOPIC", false, false); }
// The join on topics here, although unnecessary, forces the use of the participation index. $request = db_query(" SELECT COUNT(m.ID_MSG) FROM ({$db_prefix}messages AS m, {$db_prefix}topics AS t, {$db_prefix}boards AS b) WHERE m.ID_MEMBER = $memID AND t.ID_TOPIC = m.ID_TOPIC AND b.ID_BOARD = t.ID_BOARD AND t.ID_FIRST_MSG = m.ID_MSG AND $user_info[query_see_board]", __FILE__, __LINE__); list ($msgCount) = mysql_fetch_row($request); mysql_free_result($request);
// View all the topics, or just a few? $maxIndex = isset($_REQUEST['view']) && $_REQUEST['view'] == 'all' ? $msgCount : $modSettings['defaultMaxMessages'];
// Make sure the starting place makes sense and construct our friend the page index. $context['page_index'] = constructPageIndex($scripturl . '?action=profile;u=' . $memID . ';sa=showTopics', $_REQUEST['start'], $msgCount, $maxIndex); $context['start'] = $_REQUEST['start']; $context['current_page'] = $context['start'] / $maxIndex; $context['current_member'] = $memID;
$context['page_title'] = $txt[4582] . ' ' . $user_profile[$memID]['realName'];
// Find this user's posts. The left join on categories somehow makes this faster, weird as it looks. // !!!SLOW This query uses a filesort. $request = db_query(" SELECT b.ID_BOARD, b.name AS bname, c.ID_CAT, c.name AS cname, m.ID_TOPIC, m.ID_MSG, t.ID_MEMBER_STARTED, t.ID_FIRST_MSG, t.ID_LAST_MSG, m.body, m.smileysEnabled, m.subject, m.posterTime FROM (" . (empty($have_temp_table) ? '' : "{$db_prefix}topics_posted_in AS pi, ") . "{$db_prefix}messages AS m, {$db_prefix}topics AS t, {$db_prefix}boards AS b) LEFT JOIN {$db_prefix}categories AS c ON (c.ID_CAT = b.ID_CAT) WHERE " . (empty($have_temp_table) ? '' : "t.ID_TOPIC = pi.ID_TOPIC AND ") . "m.ID_MEMBER = $memID AND m.ID_TOPIC = t.ID_TOPIC AND t.ID_BOARD = b.ID_BOARD AND $user_info[query_see_board] AND t.ID_FIRST_MSG = m.ID_MSG ORDER BY m.ID_MSG DESC LIMIT $_REQUEST[start], $maxIndex", __FILE__, __LINE__); // Start counting at the number of the first message displayed. $counter = $_REQUEST['start']; $context['posts'] = array(); $board_ids = array('own' => array(), 'any' => array()); while ($row = mysql_fetch_assoc($request)) { // Censor.... censorText($row['body']); censorText($row['subject']);
if ($row["ID_FIRST_MSG"] == $row["ID_MSG"]) {
// Do the code. $row['body'] = parse_bbc($row['body'], $row['smileysEnabled'], $row['ID_MSG']); // And the array... $context['posts'][++$counter] = array( 'body' => $row['body'], 'counter' => $counter, 'category' => array( 'name' => $row['cname'], 'id' => $row['ID_CAT'] ), 'board' => array( 'name' => $row['bname'], 'id' => $row['ID_BOARD'] ), 'topic' => $row['ID_TOPIC'], 'subject' => $row['subject'], 'start' => 'msg' . $row['ID_MSG'], 'time' => timeformat($row['posterTime']), 'timestamp' => forum_time(true, $row['posterTime']), 'id' => $row['ID_MSG'], 'can_reply' => false, 'can_mark_notify' => false, 'can_delete' => false, 'delete_possible' => ($row['ID_FIRST_MSG'] != $row['ID_MSG'] || $row['ID_LAST_MSG'] == $row['ID_MSG']) && (empty($modSettings['edit_disable_time']) || $row['posterTime'] + $modSettings['edit_disable_time'] * 60 >= time()), );
if ($ID_MEMBER == $row['ID_MEMBER_STARTED']) $board_ids['own'][$row['ID_BOARD']][] = $counter; $board_ids['any'][$row['ID_BOARD']][] = $counter; } } mysql_free_result($request);
// These are all the permissions that are different from board to board.. $permissions = array( 'own' => array( 'post_reply_own' => 'can_reply', 'delete_own' => 'can_delete', ), 'any' => array( 'post_reply_any' => 'can_reply', 'mark_any_notify' => 'can_mark_notify', 'delete_any' => 'can_delete', ) );
// For every permission in the own/any lists... foreach ($permissions as $type => $list) foreach ($list as $permission => $allowed) { // Get the boards they can do this on... $boards = boardsAllowedTo($permission);
// Hmm, they can do it on all boards, can they? if (!empty($boards) && $boards[0] == 0) $boards = array_keys($board_ids[$type]);
// Now go through each board they can do the permission on. foreach ($boards as $board_id) { // There aren't any posts displayed from this board. if (!isset($board_ids[$type][$board_id])) continue;
// Set the permission to true ;). foreach ($board_ids[$type][$board_id] as $counter) $context['posts'][$counter][$allowed] = true; } }
// Clean up after posts that cannot be deleted. foreach ($context['posts'] as $counter => $dummy) $context['posts'][$counter]['can_delete'] &= $context['posts'][$counter]['delete_possible']; }
// <><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><> bul - Kod:
-
'showPosts' => array(array('profile_view_any', 'profile_view_own'), array('profile_view_any')), Sonrasına ekle - Kod:
-
'showTopics' => array(array('profile_view_any', 'profile_view_own'), array('profile_view_any')), bul - Kod:
-
$context['profile_areas']['info']['areas']['showPosts'] = '<a href="' . $scripturl . '?action=profile;u=' . $memID . ';sa=showPosts">' . $txt['showPosts'] . '</a>'; Sonrasına ekle - Kod:
-
$context['profile_areas']['info']['areas']['showTopics'] = '<a href="' . $scripturl . '?action=profile;u=' . $memID . ';sa=showTopics">' . $txt['showTopics'] . '</a>'; languages/Profile.turkish.php yi aç bul - Kod:
-
$txt[461] = 'son mesajları göster'; Sonrasına ekle - Kod:
-
$txt[462] = 'son konuları göster'; bul - Kod:
-
$txt[458] = 'Son gönderdiği mesajlar: '; Sonrasına ekle - Kod:
-
$txt[4582] = 'Son Açtığı Konular: '; bul - Kod:
-
$txt['showPosts'] = 'Mesajları Göster'; Sonrasına ekle - Kod:
-
$txt['showTopics'] = 'Konuları Göster'; Profile.template.php yi aç Bul - Kod:
-
// Template for showing all the posts of the user, in chronological order. function template_showPosts() { Öncesine ekle - Kod:
-
// Template for showing all the posts of the user, in chronological order. <><><><><><><><><> function template_showTopics() { global $context, $settings, $options, $scripturl, $modSettings, $txt;
echo ' <table border="0" width="85%" cellspacing="1" cellpadding="4" class="bordercolor" align="center"> <tr class="titlebg"> <td colspan="3" height="26"> <img src="', $settings['images_url'], '/icons/profile_sm.gif" alt="" align="top" /> ', $txt['showTopics'], ' </td> </tr>';
// Only show posts if they have made some! if (!empty($context['posts'])) { // Page numbers. echo ' <tr class="catbg3"> <td colspan="3"> ', $txt[139], ': ', $context['page_index'], ' </td> </tr> </table>';
// Button shortcuts $quote_button = create_button('quote.gif', 145, 'smf240', 'align="middle"'); $reply_button = create_button('reply_sm.gif', 146, 146, 'align="middle"'); $remove_button = create_button('delete.gif', 121, 31, 'align="middle"'); $notify_button = create_button('notify_sm.gif', 131, 125, 'align="middle"');
// For every post to be displayed, give it its own subtable, and show the important details of the post. foreach ($context['posts'] as $post) { echo ' <table border="0" width="85%" cellspacing="1" cellpadding="0" class="bordercolor" align="center"> <tr> <td width="100%"> <table border="0" width="100%" cellspacing="0" cellpadding="4" class="bordercolor" align="center"> <tr class="titlebg2"> <td style="padding: 0 1ex;"> ', $post['counter'], ' </td> <td width="75%" class="middletext"> <a href="', $scripturl, '#', $post['category']['id'], '">', $post['category']['name'], '</a> / <a href="', $scripturl, '?board=', $post['board']['id'], '.0">', $post['board']['name'], '</a> / <a href="', $scripturl, '?topic=', $post['topic'], '.', $post['start'], '#msg', $post['id'], '">', $post['subject'], '</a> </td> <td class="middletext" align="right" style="padding: 0 1ex; white-space: nowrap;"> ', $txt[30], ': ', $post['time'], ' </td> </tr> <tr> <td width="100%" height="80" colspan="3" valign="top" class="windowbg2"> <div class="post">', $post['body'], '</div> </td> </tr> <tr> <td colspan="3" class="windowbg2" align="', !$context['right_to_left'] ? 'right' : 'left', '"><span class="middletext">';
if ($post['can_delete']) echo ' <a href="', $scripturl, '?action=profile;u=', $context['current_member'], ';sa=showPosts;start=', $context['start'], ';delete=', $post['id'], ';sesc=', $context['session_id'], '" onclick="return confirm(\'', $txt[154], '?\');">', $remove_button, '</a>'; if ($post['can_delete'] && ($post['can_mark_notify'] || $post['can_reply'])) echo ' ', $context['menu_separator']; if ($post['can_reply']) echo ' <a href="', $scripturl, '?action=post;topic=', $post['topic'], '.', $post['start'], '">', $reply_button, '</a>', $context['menu_separator'], ' <a href="', $scripturl, '?action=post;topic=', $post['topic'], '.', $post['start'], ';quote=', $post['id'], ';sesc=', $context['session_id'], '">', $quote_button, '</a>'; if ($post['can_reply'] && $post['can_mark_notify']) echo ' ', $context['menu_separator']; if ($post['can_mark_notify']) echo ' <a href="' . $scripturl . '?action=notify;topic=' . $post['topic'] . '.' . $post['start'] . '">' . $notify_button . '</a>';
echo ' </span></td> </tr> </table> </td> </tr> </table>'; }
// Show more page numbers. echo ' <table border="0" width="85%" cellspacing="1" cellpadding="4" class="bordercolor" align="center"> <tr> <td colspan="3" class="catbg3"> ', $txt[139], ': ', $context['page_index'], ' </td> </tr> </table>'; } // No posts? Just end the table with a informative message. else echo ' <tr class="windowbg2"> <td> ', $txt[170], ' </td> </tr> </table>'; }
// <><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><> bul - Kod:
-
<a href="', $scripturl, '?action=profile;u=', $context['member']['id'], ';sa=showPosts">', $txt[460], ' ', $txt[461], '.</a><br /> Sonrasına ekle - Kod:
-
<a href="', $scripturl, '?action=profile;u=', $context['member']['id'], ';sa=showTopics">', $txt[460], ' ', $txt[462], '.</a><br /> /////////////////////////////////////////
edit: şimdikide bu modifikasyona benim yaptığım son eklentim. üyenin mesaj yazdığı alanındaki profile açtığı konulara link vermek ve açtığı konu sayılarını göstermek için yukarıdaki işlemleri yaptıktan sonra index.turkish.php.de bul - Kod:
-
$txt[24] = '(Konu Yok)'; $txt[26] = 'Mesaj Sayýsý';
altına ekle - Kod:
-
$txt[266] = 'Açtığı Konular'; display . template.php de bul - Kod:
-
// Show how many posts they have made. echo ' ', $txt[26], ': ', $message['member']['posts'], '<br /> <br />';
altına ekle - Kod:
-
// uyenin actigi konular ivan_ echo ' <a href="', $scripturl, '?action=profile;u=', $message['member']['id'], ';sa=showTopics">', $txt[266], '</a>'; global $db_prefix; $request = db_query("SELECT t.ID_TOPIC FROM {$db_prefix}topics AS t WHERE t.ID_MEMBER_STARTED = " . $message['member']['id'] . " AND t.ID_BOARD != " . (int) $modSettings['recycle_board'], __FILE__, __LINE__); $topic_Count = db_affected_rows(); echo ':', $topic_Count; mysql_free_result($request);unset($request,$topic_Count); |
|