[Phpbbproject-svn] SF.net SVN: phpbbproject: [274] trunk
phpBB download manager, mainly aimed at MOD authors
Status: Planning
Brought to you by:
lord_le_brand
From: <lor...@us...> - 2008-04-28 12:25:06
|
Revision: 274 http://phpbbproject.svn.sourceforge.net/phpbbproject/?rev=274&view=rev Author: lord_le_brand Date: 2008-04-28 05:25:11 -0700 (Mon, 28 Apr 2008) Log Message: ----------- Added tracker view_ticket mode Added table for commenting on tickets Extra permissions to be added... Modified Paths: -------------- trunk/develop/create_schema_files_phpbb3.php trunk/develop/permissions.txt trunk/phpbb3/root/includes/project/project_trackers.php Modified: trunk/develop/create_schema_files_phpbb3.php =================================================================== --- trunk/develop/create_schema_files_phpbb3.php 2008-04-27 21:53:02 UTC (rev 273) +++ trunk/develop/create_schema_files_phpbb3.php 2008-04-28 12:25:11 UTC (rev 274) @@ -1014,6 +1014,23 @@ ) ); + // Ticket comments + $schema_data['phpbb_project_tracker_comments'] = array( + 'COLUMNS' => array( + 'comment_id' => array('UINT:11', NULL, 'auto_increment'), + 'ticket_id' => array('UINT:11', '0'), + 'comment_title' => array('XSTEXT_UNI', ''), + 'comment_text' => array('TEXT_UNI', ''), + 'comment_author' => array('UINT', '0'), + 'comment_time' => array('TIMESTAMP', '0') + ), + 'PRIMARY_KEY' => 'comment_id', + 'KEYS' => array( + 'ticket_id' => array('INDEX', 'ticket_id'), + 'comment_time' => array('INDEX', 'comment_time'), + ) + ); + //------------------------------------------ // Modified: trunk/develop/permissions.txt =================================================================== --- trunk/develop/permissions.txt 2008-04-27 21:53:02 UTC (rev 273) +++ trunk/develop/permissions.txt 2008-04-28 12:25:11 UTC (rev 274) @@ -12,22 +12,25 @@ Extend or modify most others (when I understand them all some more...) -Assigned by authors (All per project): +Assigned by authors: [?] -- View the mod -- Edit mod -- Delete the mod -- Download the mod -- Add authors -- Remove authors -- Manage project roles and permissions -- View docs -- Manage docs +- View the project (per project) +- Edit project (per project) +- Delete the project (per project) +- Download the project (per project) +- Add authors to project (per project) +- Remove authors from project (per project) +- Manage project roles and permissions (per project) +- View docs (per project [per doc?]) +- Manage docs (per project) +- Add tickets in tracker (per tracker) +- Comment in tickets (per tracker) +- Manage tickets (per tracker) [maybe split up in edit, delete, set status, etc] -Assigned by admin: +Assigned by admin: [?] - Create a mod (global) -- View category (per category) // How (<< What's this about??) +- View category (per category) // How [<- What's this about???] - Add MODs to category (per category) - Manage categories (global) - Manage roles/permissions (global) Modified: trunk/phpbb3/root/includes/project/project_trackers.php =================================================================== --- trunk/phpbb3/root/includes/project/project_trackers.php 2008-04-27 21:53:02 UTC (rev 273) +++ trunk/phpbb3/root/includes/project/project_trackers.php 2008-04-28 12:25:11 UTC (rev 274) @@ -21,7 +21,7 @@ * * @package phpbbproject */ -class project_tracker +class project_trackers { public $u_action; public $tpl_name; @@ -42,6 +42,7 @@ $tracker_id = request_var('tid', 0); $tracker_category = request_var('tcat', 0); $ticket_id = request_var('ticket', 0); + $start = request_var('start', 0); switch ($mode) { @@ -104,6 +105,16 @@ )); } + $sql = 'SELECT COUNT(t.*) AS num_tickets + FROM ' . PROJECT_TRACKER_TICKETS_TABLE . ' t, ' . PROJECT_TRACKER_CATEGORIES_TABLE . " c + WHERE t.tracker_id = $tracker_id + " . (($tracker_category) ? "AND t.tracker_category = $tracker_category" : '') . ' + AND c.category_id = t.tracker_category + ' . ((!$is_author) ? 'AND c.is_private = 0' : ''); + $result = $db->sql_query($sql, 604800); + $num_tickets = $db->sql_fetchfield('num_tickets', false, $result); + $db->sql_freeresult($result); + $sql = 'SELECT t.*, c.*, s.* FROM ' . PROJECT_TRACKER_TICKETS_TABLE . ' t, ' . PROJECT_TRACKER_CATEGORIES_TABLE . ' c, ' . PROJECT_TRACKER_STATUS_TABLE . " s WHERE t.tracker_id = $tracker_id @@ -112,7 +123,7 @@ AND s.tracker_status_id = t.ticket_status ' . ((!$is_author) ? 'AND c.is_private = 0' : '') . ' ORDER BY ticket.ticket_time DESC'; - $result = $db->sql_query($sql, 604800); + $result = $db->sql_query_limit($sql, $config['project_tracker_tickets_per_page'], $start, 604800); $tickets = $db->sql_fetchrowset($result); $db->sql_freeresult($result); @@ -129,7 +140,91 @@ )); } + $pagination = generate_pagination(append_sid(PROJECT_BASE_URL, "i=trackers&mode=tickets" . _module_trackers_url('tickets', array())), $num_tickets, $config['project_tracker_tickets_per_page'], $start); + break; + + case 'view_ticket': + + if (!$ticket_id) + { + if ($tracker_id) + { + redirect(append_sid(PROJECT_BASE_URL, 'i=trackers&mode=tickets' . _module_trackers_url('tickets', array()))); + } + else + { + redirect(append_sid(PROJECT_BASE_URL, 'i=trackers&mode=overview')); + } + } + + // Display: Full ticket, category title, tracker (type) title, ticket status, author + // OMFG! See the size of this baby O_O; + $sql = 'SELECT t.*, c.category_title, c.is_private, type.tracker_type_title, tracker.tracker_id, s.*, u.username, u.user_colour + FROM ' . PROJECT_TRACKER_TICKETS_TABLE . ' t, ' . PROJECT_TRACKER_CATEGORIES_TABLE . ' c, ' . PROJECT_TRACKERS_TABLE . ' tracker, ' . PROJECT_TRACKER_TYPES_TABLE . ' tt, ' . PROJECT_TRACKER_STATUS_TABLE . ' s, ' . USERS_TABLE . " u + WHERE t.ticket_id = $ticket_id + AND c.category_id = t.tracker_category + AND type.tracker_type_id = tracker.tracker_type + AND tracker_tracker_id = t.tracker_id + AND s.status_id = t.ticket_status + AND u.user_id = t.ticket_author"; + $result = $db->sql_query($sql, 604800); + $ticket_info = $db->sql_fetchrow($result); + $db->sql_freeresult($result); + + if ($ticket_info['is_private'] && !$is_author) + { + // @todo Die, you hacker! + } + + $sql = 'SELECT COUNT(*) AS num_comments + FROM ' . PROJECT_TRACKER_COMMENTS_TABLE . " + WHERE ticket_id = $ticket_id"; + $result = $db->sql_query($sql, 604800); + $num_comments = $db->sql_fetchfield('num_comments', false, $result); + $db->sql_freeresult($result); + + $sql = 'SELECT c.*, u.username, u.user_colour + FROM ' . PROJECT_TRACKER_COMMENTS_TABLE . ' c, ' . USERS_TABLE . " u + WHERE c.ticket_id = $ticket_id + ORDER BY c.comment_time ASC"; + $result = $db->sql_query_limit($sql, $config['project_tracker_comments_per_page'], $start, 86400); + $comments = $db->sql_fetchrowset($result); + $db->sql_freeresult($result); + + for ($i = 0, $size = sizeof($comments); $i < $size; $i++) + { + $template->assign_block_vars('comment_row', array( + 'COMMENT_TITLE' => $comments[$i]['comment_title'], + 'COMMENT_TEXT' => $comments[$i]['comment_text'], + 'COMMENT_DATE' => $user->format_date($comments[$i]['comment_time']), + 'COMMENT_AUTHOR' => get_username_string('full', $comments[$i]['comment_author'], $comments[$i]['username'], $comments[$i]['user_colour']), + )); + } + + $template->assign_vars(array( + 'TRACKER_TITLE' => $ticket_info['tracker_title'], + 'CATEGORY_TITLE' => $ticket_info['category_title'], + + 'TICKET_TITLE' => $ticket_info['ticket_title'], + 'TICKET_DESCRIPTION' => $ticket_info['ticket_description'], + 'TICKET_DATE' => $user->format_date($ticket_info['ticket_time']), + 'TICKET_AUTHOR' => get_username_string('full', $ticket_info['ticket_author'], $ticket_info['username'], $ticket_info['user_colour']), + 'TICKET_STATUS' => $ticket_info['status_title'], + + 'PAGINATION' => $pagination, + )); + + // @todo Commenting stuff + + break; + + /** + * @todo Add modes: + * - add ticket + * - manage tickets + * - more... + */ } } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |