[ Index ] |
PHP Cross Reference of Unnamed Project |
[Summary view] [Print] [Text view]
1 <?php 2 /*************************************************************************** 3 * functions_admin.php 4 * ------------------- 5 * begin : Saturday, Feb 13, 2001 6 * copyright : (C) 2001 The phpBB Group 7 * email : support@phpbb.com 8 * 9 * $Id: functions_admin.php 6981 2007-02-10 12:14:24Z acydburn $ 10 * 11 * 12 ***************************************************************************/ 13 14 /*************************************************************************** 15 * 16 * This program is free software; you can redistribute it and/or modify 17 * it under the terms of the GNU General Public License as published by 18 * the Free Software Foundation; either version 2 of the License, or 19 * (at your option) any later version. 20 * 21 * 22 ***************************************************************************/ 23 24 // 25 // Simple version of jumpbox, just lists authed forums 26 // 27 function make_forum_select($box_name, $ignore_forum = false, $select_forum = '') 28 { 29 global $db, $userdata, $lang; 30 31 $is_auth_ary = auth(AUTH_READ, AUTH_LIST_ALL, $userdata); 32 33 $sql = 'SELECT f.forum_id, f.forum_name 34 FROM ' . CATEGORIES_TABLE . ' c, ' . FORUMS_TABLE . ' f 35 WHERE f.cat_id = c.cat_id 36 ORDER BY c.cat_order, f.forum_order'; 37 if ( !($result = $db->sql_query($sql)) ) 38 { 39 message_die(GENERAL_ERROR, 'Couldn not obtain forums information', '', __LINE__, __FILE__, $sql); 40 } 41 42 $forum_list = ''; 43 while( $row = $db->sql_fetchrow($result) ) 44 { 45 if ( $is_auth_ary[$row['forum_id']]['auth_read'] && $ignore_forum != $row['forum_id'] ) 46 { 47 $selected = ( $select_forum == $row['forum_id'] ) ? ' selected="selected"' : ''; 48 $forum_list .= '<option value="' . $row['forum_id'] . '"' . $selected .'>' . $row['forum_name'] . '</option>'; 49 } 50 } 51 52 $forum_list = ( $forum_list == '' ) ? $lang['No_forums'] : '<select name="' . $box_name . '">' . $forum_list . '</select>'; 53 54 return $forum_list; 55 } 56 57 // 58 // Synchronise functions for forums/topics 59 // 60 function sync($type, $id = false) 61 { 62 global $db; 63 64 switch($type) 65 { 66 case 'all forums': 67 $sql = "SELECT forum_id 68 FROM " . FORUMS_TABLE; 69 if ( !($result = $db->sql_query($sql)) ) 70 { 71 message_die(GENERAL_ERROR, 'Could not get forum IDs', '', __LINE__, __FILE__, $sql); 72 } 73 74 while( $row = $db->sql_fetchrow($result) ) 75 { 76 sync('forum', $row['forum_id']); 77 } 78 break; 79 80 case 'all topics': 81 $sql = "SELECT topic_id 82 FROM " . TOPICS_TABLE; 83 if ( !($result = $db->sql_query($sql)) ) 84 { 85 message_die(GENERAL_ERROR, 'Could not get topic ID', '', __LINE__, __FILE__, $sql); 86 } 87 88 while( $row = $db->sql_fetchrow($result) ) 89 { 90 sync('topic', $row['topic_id']); 91 } 92 break; 93 94 case 'forum': 95 $sql = "SELECT MAX(post_id) AS last_post, COUNT(post_id) AS total 96 FROM " . POSTS_TABLE . " 97 WHERE forum_id = $id"; 98 if ( !($result = $db->sql_query($sql)) ) 99 { 100 message_die(GENERAL_ERROR, 'Could not get post ID', '', __LINE__, __FILE__, $sql); 101 } 102 103 if ( $row = $db->sql_fetchrow($result) ) 104 { 105 $last_post = ( $row['last_post'] ) ? $row['last_post'] : 0; 106 $total_posts = ($row['total']) ? $row['total'] : 0; 107 } 108 else 109 { 110 $last_post = 0; 111 $total_posts = 0; 112 } 113 114 $sql = "SELECT COUNT(topic_id) AS total 115 FROM " . TOPICS_TABLE . " 116 WHERE forum_id = $id"; 117 if ( !($result = $db->sql_query($sql)) ) 118 { 119 message_die(GENERAL_ERROR, 'Could not get topic count', '', __LINE__, __FILE__, $sql); 120 } 121 122 $total_topics = ( $row = $db->sql_fetchrow($result) ) ? ( ( $row['total'] ) ? $row['total'] : 0 ) : 0; 123 124 $sql = "UPDATE " . FORUMS_TABLE . " 125 SET forum_last_post_id = $last_post, forum_posts = $total_posts, forum_topics = $total_topics 126 WHERE forum_id = $id"; 127 if ( !$db->sql_query($sql) ) 128 { 129 message_die(GENERAL_ERROR, 'Could not update forum', '', __LINE__, __FILE__, $sql); 130 } 131 break; 132 133 case 'topic': 134 $sql = "SELECT MAX(post_id) AS last_post, MIN(post_id) AS first_post, COUNT(post_id) AS total_posts 135 FROM " . POSTS_TABLE . " 136 WHERE topic_id = $id"; 137 if ( !($result = $db->sql_query($sql)) ) 138 { 139 message_die(GENERAL_ERROR, 'Could not get post ID', '', __LINE__, __FILE__, $sql); 140 } 141 142 if ( $row = $db->sql_fetchrow($result) ) 143 { 144 if ($row['total_posts']) 145 { 146 // Correct the details of this topic 147 $sql = 'UPDATE ' . TOPICS_TABLE . ' 148 SET topic_replies = ' . ($row['total_posts'] - 1) . ', topic_first_post_id = ' . $row['first_post'] . ', topic_last_post_id = ' . $row['last_post'] . " 149 WHERE topic_id = $id"; 150 151 if (!$db->sql_query($sql)) 152 { 153 message_die(GENERAL_ERROR, 'Could not update topic', '', __LINE__, __FILE__, $sql); 154 } 155 } 156 else 157 { 158 // There are no replies to this topic 159 // Check if it is a move stub 160 $sql = 'SELECT topic_moved_id 161 FROM ' . TOPICS_TABLE . " 162 WHERE topic_id = $id"; 163 164 if (!($result = $db->sql_query($sql))) 165 { 166 message_die(GENERAL_ERROR, 'Could not get topic ID', '', __LINE__, __FILE__, $sql); 167 } 168 169 if ($row = $db->sql_fetchrow($result)) 170 { 171 if (!$row['topic_moved_id']) 172 { 173 $sql = 'DELETE FROM ' . TOPICS_TABLE . " WHERE topic_id = $id"; 174 175 if (!$db->sql_query($sql)) 176 { 177 message_die(GENERAL_ERROR, 'Could not remove topic', '', __LINE__, __FILE__, $sql); 178 } 179 } 180 } 181 182 $db->sql_freeresult($result); 183 } 184 } 185 break; 186 } 187 188 return true; 189 } 190 191 ?>
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Mon Jan 14 19:21:40 2013 | Cross-referenced by PHPXref 0.7.1 |