2008-07-25 10:26:05 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								< ? php 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								/* -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								/* 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# ***** BEGIN LICENSE BLOCK *****
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# This file is part of InDefero, an open source project management application.
 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-02 21:37:07 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# Copyright (C) 2008-2011 Céondo Ltd and contributors.
 
							 
						 
					
						
							
								
									
										
										
										
											2008-07-25 10:26:05 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								#
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# InDefero is free software; you can redistribute it and/or modify
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# it under the terms of the GNU General Public License as published by
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# the Free Software Foundation; either version 2 of the License, or
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# (at your option) any later version.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								#
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# InDefero is distributed in the hope that it will be useful,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# but WITHOUT ANY WARRANTY; without even the implied warranty of
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# GNU General Public License for more details.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								#
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# You should have received a copy of the GNU General Public License
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# along with this program; if not, write to the Free Software
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								#
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# ***** END LICENSE BLOCK ***** */
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								Pluf :: loadFunction ( 'Pluf_HTTP_URL_urlForView' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								Pluf :: loadFunction ( 'Pluf_Shortcuts_RenderToResponse' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								Pluf :: loadFunction ( 'Pluf_Shortcuts_GetObjectOr404' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								Pluf :: loadFunction ( 'Pluf_Shortcuts_GetFormForModel' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								/** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  Issues '  views . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								class  IDF_Views_Issue 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    /** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     *  View  list  of  issues  for  a  given  project . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     */ 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-07 15:35:03 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    public  $index_precond  =  array ( 'IDF_Precondition::accessIssues' ); 
							 
						 
					
						
							
								
									
										
										
										
											2008-11-21 20:33:39 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    public  function  index ( $request ,  $match ,  $api = false ) 
							 
						 
					
						
							
								
									
										
										
										
											2008-07-25 10:26:05 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								    { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $prj  =  $request -> project ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-08 20:34:40 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        $title  =  sprintf ( __ ( '%s Open Issues' ),  ( string )  $prj ); 
							 
						 
					
						
							
								
									
										
										
										
											2008-07-25 10:26:05 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								        // Get stats about the issues
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $open  =  $prj -> getIssueCountByStatus ( 'open' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $closed  =  $prj -> getIssueCountByStatus ( 'closed' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        // Paginator to paginate the issues
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $pag  =  new  Pluf_Paginator ( new  IDF_Issue ()); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $pag -> class  =  'recent-issues' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $pag -> item_extra_props  =  array ( 'project_m'  =>  $prj , 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-12 12:46:09 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                                       'shortname'  =>  $prj -> shortname , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                       'current_user'  =>  $request -> user ); 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-08 20:34:40 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        $pag -> summary  =  __ ( 'This table shows the open issues.' ); 
							 
						 
					
						
							
								
									
										
										
										
											2008-07-25 10:26:05 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								        $otags  =  $prj -> getTagIdsByStatus ( 'open' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        if  ( count ( $otags )  ==  0 )  $otags []  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $pag -> forced_where  =  new  Pluf_SQL ( 'project=%s AND status IN (' . implode ( ', ' ,  $otags ) . ')' ,  array ( $prj -> id )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $pag -> action  =  array ( 'IDF_Views_Issue::index' ,  array ( $prj -> shortname )); 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-14 09:33:33 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        $pag -> sort_order  =  array ( 'modif_dtime' ,  'ASC' );  // will be reverted
 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-11 21:10:02 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        $pag -> sort_reverse_order  =  array ( 'modif_dtime' ); 
							 
						 
					
						
							
								
									
										
										
										
											2009-07-08 14:23:01 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        $pag -> sort_link_title  =  true ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-01-02 14:06:50 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        $pag -> extra_classes  =  array ( 'a-c' ,  '' ,  'a-c' ,  '' ); 
							 
						 
					
						
							
								
									
										
										
										
											2008-07-25 10:26:05 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								        $list_display  =  array ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								             'id'  =>  __ ( 'Id' ), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								             array ( 'summary' ,  'IDF_Views_Issue_SummaryAndLabels' ,  __ ( 'Summary' )), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								             array ( 'status' ,  'IDF_Views_Issue_ShowStatus' ,  __ ( 'Status' )), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								             array ( 'modif_dtime' ,  'Pluf_Paginator_DateAgo' ,  __ ( 'Last Updated' )), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                              ); 
							 
						 
					
						
							
								
									
										
										
										
											2009-07-08 14:23:01 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        $pag -> configure ( $list_display ,  array (),  array ( 'id' ,  'status' ,  'modif_dtime' )); 
							 
						 
					
						
							
								
									
										
										
										
											2008-07-25 10:26:05 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								        $pag -> items_per_page  =  10 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $pag -> no_results_text  =  __ ( 'No issues were found.' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $pag -> setFromRequest ( $request ); 
							 
						 
					
						
							
								
									
										
										
										
											2008-11-21 20:33:39 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        $params  =  array ( 'project'  =>  $prj , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                        'page_title'  =>  $title , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                        'open'  =>  $open , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                        'closed'  =>  $closed , 
							 
						 
					
						
							
								
									
										
										
										
											2011-02-23 22:35:43 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                        'issues'  =>  $pag ); 
							 
						 
					
						
							
								
									
										
										
										
											2008-11-21 20:33:39 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        if  ( $api )  return  $params ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-11-18 09:15:02 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        return  Pluf_Shortcuts_RenderToResponse ( 'idf/issues/index.html' , 
							 
						 
					
						
							
								
									
										
										
										
											2008-11-21 20:33:39 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                                               $params ,  $request ); 
							 
						 
					
						
							
								
									
										
										
										
											2008-07-25 10:26:05 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-06-15 09:11:47 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    /** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     *  View  the  issue  summary . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     *  TODO  Add  thoses  data  in  cache ,  and  process  it  only  after  an  issue  update 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    public  $summary_precond  =  array ( 'IDF_Precondition::accessIssues' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    public  function  summary ( $request ,  $match ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    { 
							 
						 
					
						
							
								
									
										
										
										
											2011-06-15 11:18:41 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        $tagStatistics  =  array (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $ownerStatistics  =  array (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $status  =  array (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $isTrackerEmpty  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        
							 
						 
					
						
							
								
									
										
										
										
											2011-06-15 09:11:47 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        $prj  =  $request -> project ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $opened  =  $prj -> getIssueCountByStatus ( 'open' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $closed  =  $prj -> getIssueCountByStatus ( 'closed' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-06-15 11:18:41 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        // Check if the tracker is empty
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        if  ( $opened  ===  0  &&  $closed  ===  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $isTrackerEmpty  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            if  ( $opened  >  0  ||  $closed  >  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                // Issue status statistics
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                $status [ 'Open' ]  =  array ( $opened ,  ( int )( 100  *  $opened  /  ( $opened  +  $closed ))); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                $status [ 'Closed' ]  =  array ( $closed ,  ( int )( 100  *  $closed  /  ( $opened  +  $closed ))); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            if  ( $opened  >  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                // Issue owner statistics
 
							 
						 
					
						
							
								
									
										
										
										
											2011-06-15 17:30:23 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                $owners  =  $prj -> getIssueCountByOwner ( 'open' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                foreach  ( $owners  as  $user  =>  $nb )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    if  ( $user  ===  '' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                        $key  =  __ ( 'Not assigned' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                        $obj  =  Pluf :: factory ( 'Pluf_User' ) -> getOne ( array ( 'filter' => 'id=' . $user )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                        $key  =  $obj -> first_name  .  ' '  .  $obj -> last_name ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    $ownerStatistics [ $key ]  =  array ( $nb ,  ( int )( 100  *  $nb  /  $opened )); 
							 
						 
					
						
							
								
									
										
										
										
											2011-06-15 11:18:41 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                } 
							 
						 
					
						
							
								
									
										
										
										
											2011-06-15 09:11:47 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-06-15 11:18:41 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                // Issue class tag statistics
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                $tags  =  $prj -> getTagCloud (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                foreach  ( $tags  as  $t )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    $tagStatistics [ $t -> class ][ $t -> name ]  =  array ( $t -> nb_use ,  $t -> id ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                foreach ( $tagStatistics  as  $k  =>  $v )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    $nbIssueInClass  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    foreach  ( $v  as  $val )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                        $nbIssueInClass  +=  $val [ 0 ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    foreach  ( $v  as  $kk  =>  $vv )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                        $tagStatistics [ $k ][ $kk ]  =  array ( $vv [ 0 ],  ( int )( 100  *  $vv [ 0 ]  /  $nbIssueInClass ),  $vv [ 1 ]); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                // Sort
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                krsort ( $tagStatistics ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                arsort ( $ownerStatistics ); 
							 
						 
					
						
							
								
									
										
										
										
											2011-06-15 09:11:47 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $title  =  sprintf ( __ ( 'Summary of tracked issues in %s.' ),  ( string )  $prj ); 
							 
						 
					
						
							
								
									
										
										
										
											2011-06-15 11:18:41 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        
							 
						 
					
						
							
								
									
										
										
										
											2011-06-15 09:11:47 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        return  Pluf_Shortcuts_RenderToResponse ( 'idf/issues/summary.html' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                               array ( 'page_title'  =>  $title , 
							 
						 
					
						
							
								
									
										
										
										
											2011-06-15 11:18:41 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                                                     'trackerEmpty'  =>  $isTrackerEmpty , 
							 
						 
					
						
							
								
									
										
										
										
											2011-06-15 09:11:47 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                                                     'project'  =>  $prj , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                                     'tagStatistics'  =>  $tagStatistics , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                                     'ownerStatistics'  =>  $ownerStatistics , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                                     'status'  =>  $status , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                                     ), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                               $request ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    
							 
						 
					
						
							
								
									
										
										
										
											2011-01-05 17:02:06 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    /** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     *  View  the  issues  watch  list  of  a  given  user . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     *  Limited  to  a  specified  project 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    public  $watchList_precond  =  array ( 'IDF_Precondition::accessIssues' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                      'Pluf_Precondition::loginRequired' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    public  function  watchList ( $request ,  $match ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $prj  =  $request -> project ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $otags  =  $prj -> getTagIdsByStatus ( 'open' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $ctags  =  $prj -> getTagIdsByStatus ( 'closed' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        if  ( count ( $otags )  ==  0 )  $otags []  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        if  ( count ( $ctags )  ==  0 )  $ctags []  =  0 ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-09 13:52:09 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-01-08 21:34:51 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								         // Get the id list of issue in the user watch list (for all projects !)
 
							 
						 
					
						
							
								
									
										
										
										
											2011-01-05 17:02:06 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        $db  =&  Pluf :: db (); 
							 
						 
					
						
							
								
									
										
										
										
											2011-01-08 21:34:51 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        $sql_results  =  $db -> select ( 'SELECT idf_issue_id as id FROM ' . Pluf :: f ( 'db_table_prefix' ,  '' ) . 'idf_issue_pluf_user_assoc WHERE pluf_user_id=' . $request -> user -> id ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $issue_ids  =  array ( 0 ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        foreach  ( $sql_results  as  $id )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								           $issue_ids []  =  $id [ 'id' ]; 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-09 13:52:09 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2011-01-08 21:34:51 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        $issue_ids  =  implode  ( ',' ,  $issue_ids ); 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-09 13:52:09 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-01-05 17:02:06 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        // Count open and close issues
 
							 
						 
					
						
							
								
									
										
										
										
											2011-01-08 21:34:51 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        $sql  =  new  Pluf_SQL ( 'project=%s AND id IN (' . $issue_ids . ') AND status IN (' . implode ( ', ' ,  $otags ) . ')' ,  array ( $prj -> id )); 
							 
						 
					
						
							
								
									
										
										
										
											2011-01-05 17:02:06 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        $nb_open  =  Pluf :: factory ( 'IDF_Issue' ) -> getCount ( array ( 'filter' => $sql -> gen ())); 
							 
						 
					
						
							
								
									
										
										
										
											2011-01-08 21:34:51 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        $sql  =  new  Pluf_SQL ( 'project=%s AND id IN (' . $issue_ids . ') AND status IN (' . implode ( ', ' ,  $ctags ) . ')' ,  array ( $prj -> id )); 
							 
						 
					
						
							
								
									
										
										
										
											2011-01-05 17:02:06 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        $nb_closed  =  Pluf :: factory ( 'IDF_Issue' ) -> getCount ( array ( 'filter' => $sql -> gen ())); 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-09 13:52:09 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-01-05 17:02:06 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        // Generate a filter for the paginator
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        switch  ( $match [ 2 ])  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        case  'closed' : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $title  =  sprintf ( __ ( 'Watch List: Closed Issues for %s' ),  ( string )  $prj ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $summary  =  __ ( 'This table shows the closed issues in your watch list for %s project.' ,  ( string )  $prj ); 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-09 13:52:09 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            $f_sql  =  new  Pluf_SQL ( 'project=%s AND id IN (' . $issue_ids . ') AND status IN (' . implode ( ', ' ,  $ctags ) . ')' ,  array ( $prj -> id )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            break ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-01-05 17:02:06 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        case  'open' : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        default : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $title  =  sprintf ( __ ( 'Watch List: Open Issues for %s' ),  ( string )  $prj ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $summary  =  __ ( 'This table shows the open issues in your watch list for %s project.' ,  ( string )  $prj ); 
							 
						 
					
						
							
								
									
										
										
										
											2011-01-08 21:34:51 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            $f_sql  =  new  Pluf_SQL ( 'project=%s AND id IN (' . $issue_ids . ') AND status IN (' . implode ( ', ' ,  $otags ) . ')' ,  array ( $prj -> id )); 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-09 13:52:09 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            break ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-01-05 17:02:06 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-09 13:52:09 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-01-05 17:02:06 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        // Paginator to paginate the issues
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $pag  =  new  Pluf_Paginator ( new  IDF_Issue ()); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $pag -> class  =  'recent-issues' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $pag -> item_extra_props  =  array ( 'project_m'  =>  $prj , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                       'shortname'  =>  $prj -> shortname , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                       'current_user'  =>  $request -> user ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $pag -> summary  =  $summary ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $pag -> forced_where  =  $f_sql ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $pag -> action  =  array ( 'IDF_Views_Issue::watchList' ,  array ( $prj -> shortname ,  $match [ 1 ])); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $pag -> sort_order  =  array ( 'modif_dtime' ,  'ASC' );  // will be reverted
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $pag -> sort_reverse_order  =  array ( 'modif_dtime' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $pag -> sort_link_title  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $pag -> extra_classes  =  array ( 'a-c' ,  '' ,  'a-c' ,  '' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $list_display  =  array ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								             'id'  =>  __ ( 'Id' ), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								             array ( 'summary' ,  'IDF_Views_Issue_SummaryAndLabels' ,  __ ( 'Summary' )), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								             array ( 'status' ,  'IDF_Views_Issue_ShowStatus' ,  __ ( 'Status' )), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								             array ( 'modif_dtime' ,  'Pluf_Paginator_DateAgo' ,  __ ( 'Last Updated' )), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                              ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $pag -> configure ( $list_display ,  array (),  array ( 'id' ,  'status' ,  'modif_dtime' )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $pag -> items_per_page  =  10 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $pag -> no_results_text  =  __ ( 'No issues were found.' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $pag -> setFromRequest ( $request ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        return  Pluf_Shortcuts_RenderToResponse ( 'idf/issues/project-watchlist.html' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                               array ( 'project'  =>  $prj , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                                     'page_title'  =>  $title , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                                     'open'  =>  $nb_open , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                                     'closed'  =>  $nb_closed , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                                     'issues'  =>  $pag , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                                     ), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                               $request ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    /** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     *  View  the  issues  watch  list  of  a  given  user . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     *  For  all  projects 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    public  $forgeWatchList_precond  =  array ( 'Pluf_Precondition::loginRequired' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    public  function  forgeWatchList ( $request ,  $match ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $otags  =  array (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $ctags  =  array (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        // Note that this approach does not scale, we will need to add
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        // a table to cache the meaning of the tags for large forges.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        foreach  ( IDF_Views :: getProjects ( $request -> user )  as  $project )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $otags  =  array_merge ( $otags ,  $project -> getTagIdsByStatus ( 'open' )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        foreach  ( IDF_Views :: getProjects ( $request -> user )  as  $project )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $ctags  =  array_merge ( $ctags ,  $project -> getTagIdsByStatus ( 'closed' )); 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-09 13:52:09 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2011-01-05 17:02:06 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        if  ( count ( $otags )  ==  0 )  $otags []  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        if  ( count ( $ctags )  ==  0 )  $ctags []  =  0 ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-09 13:52:09 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-01-05 17:02:06 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								         // Get the id list of issue in the user watch list (for all projects !)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $db  =&  Pluf :: db (); 
							 
						 
					
						
							
								
									
										
										
										
											2011-01-06 10:26:29 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        $sql_results  =  $db -> select ( 'SELECT idf_issue_id as id FROM ' . Pluf :: f ( 'db_table_prefix' ,  '' ) . 'idf_issue_pluf_user_assoc WHERE pluf_user_id=' . $request -> user -> id ); 
							 
						 
					
						
							
								
									
										
										
										
											2011-01-08 21:34:51 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        $issue_ids  =  array ( 0 ); 
							 
						 
					
						
							
								
									
										
										
										
											2011-01-06 10:26:29 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        foreach  ( $sql_results  as  $id )  { 
							 
						 
					
						
							
								
									
										
										
										
											2011-01-08 21:34:51 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								           $issue_ids []  =  $id [ 'id' ]; 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-09 13:52:09 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2011-01-08 21:34:51 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        $issue_ids  =  implode  ( ',' ,  $issue_ids ); 
							 
						 
					
						
							
								
									
										
										
										
											2011-01-05 17:02:06 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        // Count open and close issues
 
							 
						 
					
						
							
								
									
										
										
										
											2011-01-08 21:34:51 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        $sql  =  new  Pluf_SQL ( 'id IN (' . $issue_ids . ') AND status IN (' . implode ( ', ' ,  $otags ) . ')' ,  array ()); 
							 
						 
					
						
							
								
									
										
										
										
											2011-01-05 17:02:06 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        $nb_open  =  Pluf :: factory ( 'IDF_Issue' ) -> getCount ( array ( 'filter' => $sql -> gen ())); 
							 
						 
					
						
							
								
									
										
										
										
											2011-01-08 21:34:51 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        $sql  =  new  Pluf_SQL ( 'id IN (' . $issue_ids . ') AND status IN (' . implode ( ', ' ,  $ctags ) . ')' ,  array ()); 
							 
						 
					
						
							
								
									
										
										
										
											2011-01-05 17:02:06 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        $nb_closed  =  Pluf :: factory ( 'IDF_Issue' ) -> getCount ( array ( 'filter' => $sql -> gen ())); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        // Generate a filter for the paginator
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        switch  ( $match [ 1 ])  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        case  'closed' : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $title  =  sprintf ( __ ( 'Watch List: Closed Issues' )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $summary  =  __ ( 'This table shows the closed issues in your watch list.' ); 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-09 13:52:09 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            $f_sql  =  new  Pluf_SQL ( 'id IN (' . $issue_ids . ') AND status IN (' . implode ( ', ' ,  $ctags ) . ')' ,  array ()); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            break ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-01-05 17:02:06 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        case  'open' : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        default : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $title  =  sprintf ( __ ( 'Watch List: Open Issues' )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $summary  =  __ ( 'This table shows the open issues in your watch list.' ); 
							 
						 
					
						
							
								
									
										
										
										
											2011-01-08 21:34:51 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            $f_sql  =  new  Pluf_SQL ( 'id IN (' . $issue_ids . ') AND status IN (' . implode ( ', ' ,  $otags ) . ')' ,  array ()); 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-09 13:52:09 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            break ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-01-05 17:02:06 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-09 13:52:09 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-01-05 17:02:06 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        // Paginator to paginate the issues
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $pag  =  new  Pluf_Paginator ( new  IDF_Issue ()); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $pag -> class  =  'recent-issues' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $pag -> item_extra_props  =  array ( 'current_user'  =>  $request -> user ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $pag -> summary  =  $summary ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $pag -> forced_where  =  $f_sql ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $pag -> action  =  array ( 'IDF_Views_Issue::forgeWatchList' ,  array ( $match [ 1 ])); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $pag -> sort_order  =  array ( 'modif_dtime' ,  'ASC' );  // will be reverted
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $pag -> sort_reverse_order  =  array ( 'modif_dtime' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $pag -> sort_link_title  =  true ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-01-05 17:51:34 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        $pag -> extra_classes  =  array ( 'a-c' ,  '' ,  'a-c' ,  'a-c' ,  'a-c' ); 
							 
						 
					
						
							
								
									
										
										
										
											2011-01-05 17:02:06 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        $list_display  =  array ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								             'id'  =>  __ ( 'Id' ), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								             array ( 'summary' ,  'IDF_Views_Issue_SummaryAndLabelsUnknownProject' ,  __ ( 'Summary' )), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								             array ( 'project' ,  'Pluf_Paginator_FkToString' ,  __ ( 'Project' )), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								             array ( 'status' ,  'IDF_Views_Issue_ShowStatus' ,  __ ( 'Status' )), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								             array ( 'modif_dtime' ,  'Pluf_Paginator_DateAgo' ,  __ ( 'Last Updated' )), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                              ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $pag -> configure ( $list_display ,  array (),  array ( 'id' ,  'project' ,  'status' ,  'modif_dtime' )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $pag -> items_per_page  =  10 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $pag -> no_results_text  =  __ ( 'No issues were found.' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $pag -> setFromRequest ( $request ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        return  Pluf_Shortcuts_RenderToResponse ( 'idf/issues/forge-watchlist.html' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                               array ( 'page_title'  =>  $title , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                                     'open'  =>  $nb_open , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                                     'closed'  =>  $nb_closed , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                                     'issues'  =>  $pag , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                                     ), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                               $request ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2008-07-25 10:26:05 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								    /** 
							 
						 
					
						
							
								
									
										
										
										
											2010-12-02 01:50:01 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								     *  View  the  issues  of  a  given  user . 
							 
						 
					
						
							
								
									
										
										
										
											2008-07-25 10:26:05 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								     * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     *  Only  open  issues  are  shown . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     */ 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-07 15:35:03 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    public  $myIssues_precond  =  array ( 'IDF_Precondition::accessIssues' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                     'Pluf_Precondition::loginRequired' ); 
							 
						 
					
						
							
								
									
										
										
										
											2008-07-25 10:26:05 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								    public  function  myIssues ( $request ,  $match ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $prj  =  $request -> project ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $otags  =  $prj -> getTagIdsByStatus ( 'open' ); 
							 
						 
					
						
							
								
									
										
										
										
											2009-02-27 15:08:56 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        $ctags  =  $prj -> getTagIdsByStatus ( 'closed' ); 
							 
						 
					
						
							
								
									
										
										
										
											2008-07-25 10:26:05 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								        if  ( count ( $otags )  ==  0 )  $otags []  =  0 ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-02-27 15:08:56 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        if  ( count ( $ctags )  ==  0 )  $ctags []  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        switch  ( $match [ 2 ])  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        case  'submit' : 
							 
						 
					
						
							
								
									
										
										
										
											2008-07-25 10:26:05 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								            $title  =  sprintf ( __ ( 'My Submitted %s Issues' ),  ( string )  $prj ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $f_sql  =  new  Pluf_SQL ( 'project=%s AND submitter=%s AND status IN (' . implode ( ', ' ,  $otags ) . ')' ,  array ( $prj -> id ,  $request -> user -> id )); 
							 
						 
					
						
							
								
									
										
										
										
											2009-02-27 15:08:56 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        case  'submitclosed' : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $title  =  sprintf ( __ ( 'My Closed Submitted %s Issues' ),  ( string )  $prj ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $f_sql  =  new  Pluf_SQL ( 'project=%s AND submitter=%s AND status IN (' . implode ( ', ' ,  $ctags ) . ')' ,  array ( $prj -> id ,  $request -> user -> id )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        case  'ownerclosed' : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $title  =  sprintf ( __ ( 'My Closed Working %s Issues' ),  ( string )  $prj ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $f_sql  =  new  Pluf_SQL ( 'project=%s AND owner=%s AND status IN (' . implode ( ', ' ,  $ctags ) . ')' ,  array ( $prj -> id ,  $request -> user -> id )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        default : 
							 
						 
					
						
							
								
									
										
										
										
											2008-07-25 10:26:05 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								            $title  =  sprintf ( __ ( 'My Working %s Issues' ),  ( string )  $prj ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $f_sql  =  new  Pluf_SQL ( 'project=%s AND owner=%s AND status IN (' . implode ( ', ' ,  $otags ) . ')' ,  array ( $prj -> id ,  $request -> user -> id )); 
							 
						 
					
						
							
								
									
										
										
										
											2009-02-27 15:08:56 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            break ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-07-25 10:26:05 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        // Get stats about the issues
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $sql  =  new  Pluf_SQL ( 'project=%s AND submitter=%s AND status IN (' . implode ( ', ' ,  $otags ) . ')' ,  array ( $prj -> id ,  $request -> user -> id )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $nb_submit  =  Pluf :: factory ( 'IDF_Issue' ) -> getCount ( array ( 'filter' => $sql -> gen ())); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $sql  =  new  Pluf_SQL ( 'project=%s AND owner=%s AND status IN (' . implode ( ', ' ,  $otags ) . ')' ,  array ( $prj -> id ,  $request -> user -> id )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $nb_owner  =  Pluf :: factory ( 'IDF_Issue' ) -> getCount ( array ( 'filter' => $sql -> gen ())); 
							 
						 
					
						
							
								
									
										
										
										
											2009-02-27 15:08:56 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        // Closed issues
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $sql  =  new  Pluf_SQL ( 'project=%s AND submitter=%s AND status IN (' . implode ( ', ' ,  $ctags ) . ')' ,  array ( $prj -> id ,  $request -> user -> id )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $nb_submit_closed  =  Pluf :: factory ( 'IDF_Issue' ) -> getCount ( array ( 'filter' => $sql -> gen ())); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $sql  =  new  Pluf_SQL ( 'project=%s AND owner=%s AND status IN (' . implode ( ', ' ,  $ctags ) . ')' ,  array ( $prj -> id ,  $request -> user -> id )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $nb_owner_closed  =  Pluf :: factory ( 'IDF_Issue' ) -> getCount ( array ( 'filter' => $sql -> gen ())); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2008-07-25 10:26:05 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								        // Paginator to paginate the issues
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $pag  =  new  Pluf_Paginator ( new  IDF_Issue ()); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $pag -> class  =  'recent-issues' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $pag -> item_extra_props  =  array ( 'project_m'  =>  $prj , 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-12 12:46:09 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                                       'shortname'  =>  $prj -> shortname , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                       'current_user'  =>  $request -> user ); 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-08 20:34:40 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        $pag -> summary  =  __ ( 'This table shows the open issues.' ); 
							 
						 
					
						
							
								
									
										
										
										
											2008-07-25 10:26:05 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								        $pag -> forced_where  =  $f_sql ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $pag -> action  =  array ( 'IDF_Views_Issue::myIssues' ,  array ( $prj -> shortname ,  $match [ 2 ])); 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-14 09:33:33 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        $pag -> sort_order  =  array ( 'modif_dtime' ,  'ASC' );  // will be reverted
 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-11 21:10:02 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        $pag -> sort_reverse_order  =  array ( 'modif_dtime' ); 
							 
						 
					
						
							
								
									
										
										
										
											2009-07-08 14:23:01 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        $pag -> sort_link_title  =  true ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-01-02 14:06:50 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        $pag -> extra_classes  =  array ( 'a-c' ,  '' ,  'a-c' ,  '' ); 
							 
						 
					
						
							
								
									
										
										
										
											2008-07-25 10:26:05 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								        $list_display  =  array ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								             'id'  =>  __ ( 'Id' ), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								             array ( 'summary' ,  'IDF_Views_Issue_SummaryAndLabels' ,  __ ( 'Summary' )), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								             array ( 'status' ,  'IDF_Views_Issue_ShowStatus' ,  __ ( 'Status' )), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								             array ( 'modif_dtime' ,  'Pluf_Paginator_DateAgo' ,  __ ( 'Last Updated' )), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                              ); 
							 
						 
					
						
							
								
									
										
										
										
											2009-07-08 14:23:01 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        $pag -> configure ( $list_display ,  array (),  array ( 'id' ,  'status' ,  'modif_dtime' )); 
							 
						 
					
						
							
								
									
										
										
										
											2008-07-25 10:26:05 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								        $pag -> items_per_page  =  10 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $pag -> no_results_text  =  __ ( 'No issues were found.' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $pag -> setFromRequest ( $request ); 
							 
						 
					
						
							
								
									
										
										
										
											2008-11-18 09:15:02 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        return  Pluf_Shortcuts_RenderToResponse ( 'idf/issues/my-issues.html' , 
							 
						 
					
						
							
								
									
										
										
										
											2008-07-25 10:26:05 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								                                               array ( 'project'  =>  $prj , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                                     'page_title'  =>  $title , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                                     'nb_submit'  =>  $nb_submit , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                                     'nb_owner'  =>  $nb_owner , 
							 
						 
					
						
							
								
									
										
										
										
											2009-02-27 15:08:56 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                                                     'nb_submit_closed'  =>  $nb_submit_closed , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                                     'nb_owner_closed'  =>  $nb_owner_closed , 
							 
						 
					
						
							
								
									
										
										
										
											2008-07-25 10:26:05 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								                                                     'issues'  =>  $pag , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                                     ), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                               $request ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2008-08-07 15:35:03 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    public  $create_precond  =  array ( 'IDF_Precondition::accessIssues' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                   'Pluf_Precondition::loginRequired' ); 
							 
						 
					
						
							
								
									
										
										
										
											2008-11-21 20:33:39 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    public  function  create ( $request ,  $match ,  $api = false ) 
							 
						 
					
						
							
								
									
										
										
										
											2008-07-25 10:26:05 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								    { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $prj  =  $request -> project ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $title  =  __ ( 'Submit a new issue' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $params  =  array ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                        'project'  =>  $prj , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                        'user'  =>  $request -> user ); 
							 
						 
					
						
							
								
									
										
										
										
											2009-02-27 14:21:09 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        $preview  =  ( isset ( $request -> POST [ 'preview' ]))  ? 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $request -> POST [ 'content' ]  :  false ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-07-25 10:26:05 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								        if  ( $request -> method  ==  'POST' )  { 
							 
						 
					
						
							
								
									
										
										
										
											2008-11-12 20:40:58 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            $form  =  new  IDF_Form_IssueCreate ( array_merge ( $request -> POST , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                                         $request -> FILES ), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                             $params ); 
							 
						 
					
						
							
								
									
										
										
										
											2009-02-27 14:21:09 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            if  ( ! isset ( $request -> POST [ 'preview' ])  and  $form -> isValid ())  { 
							 
						 
					
						
							
								
									
										
										
										
											2008-07-25 10:26:05 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								                $issue  =  $form -> save (); 
							 
						 
					
						
							
								
									
										
										
										
											2009-05-26 12:04:06 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                $url  =  Pluf_HTTP_URL_urlForView ( 'IDF_Views_Issue::view' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                                array ( $prj -> shortname ,  $issue -> id )); 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-08 11:23:33 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                $issue -> notify ( $request -> conf ); 
							 
						 
					
						
							
								
									
										
										
										
											2008-11-21 20:33:39 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                if  ( $api )  return  $issue ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-05-26 12:04:06 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                $request -> user -> setMessage ( sprintf ( __ ( '<a href="%s">Issue %d</a> has been created.' ),  $url ,  $issue -> id )); 
							 
						 
					
						
							
								
									
										
										
										
											2008-07-25 10:26:05 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								                return  new  Pluf_HTTP_Response_Redirect ( $url ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $form  =  new  IDF_Form_IssueCreate ( null ,  $params ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2008-11-21 20:33:39 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        $params  =  array_merge ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                              array ( 'project'  =>  $prj , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                    'form'  =>  $form , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                    'page_title'  =>  $title , 
							 
						 
					
						
							
								
									
										
										
										
											2009-02-27 14:21:09 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                                    'preview'  =>  $preview , 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-10 16:21:29 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                                    'issue'  =>  new  IDF_Issue (), 
							 
						 
					
						
							
								
									
										
										
										
											2008-11-21 20:33:39 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                                    ), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                              self :: autoCompleteArrays ( $prj ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                              ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        if  ( $api  ==  true )  return  $params ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-11-18 09:15:02 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        return  Pluf_Shortcuts_RenderToResponse ( 'idf/issues/create.html' , 
							 
						 
					
						
							
								
									
										
										
										
											2008-11-21 20:33:39 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                                               $params ,  $request ); 
							 
						 
					
						
							
								
									
										
										
										
											2008-07-25 10:26:05 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2008-08-13 18:26:36 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    public  $search_precond  =  array ( 'IDF_Precondition::accessIssues' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    public  function  search ( $request ,  $match ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    { 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-13 20:47:06 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        $prj  =  $request -> project ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-13 18:26:36 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        if  ( ! isset ( $request -> REQUEST [ 'q' ])  or  trim ( $request -> REQUEST [ 'q' ])  ==  '' )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-12-02 01:50:01 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            $url  =   Pluf_HTTP_URL_urlForView ( 'IDF_Views_Issue::index' , 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-13 20:47:06 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                                             array ( $prj -> shortname )); 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-13 18:26:36 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            return  new  Pluf_HTTP_Response_Redirect ( $url ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $q  =  $request -> REQUEST [ 'q' ]; 
							 
						 
					
						
							
								
									
										
										
										
											2008-11-25 20:32:33 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        $title  =  sprintf ( __ ( 'Search Issues - %s' ),  $q ); 
							 
						 
					
						
							
								
									
										
										
										
											2008-11-22 14:17:26 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        $issues  =  new  Pluf_Search_ResultSet ( IDF_Search :: mySearch ( $q ,  $prj ,  'IDF_Issue' )); 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-13 18:26:36 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        if  ( count ( $issues )  >  100 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            // no more than 100 results as we do not care
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $issues -> results  =  array_slice ( $issues -> results ,  0 ,  100 ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $pag  =  new  Pluf_Paginator (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $pag -> items  =  $issues ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $pag -> class  =  'recent-issues' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $pag -> item_extra_props  =  array ( 'project_m'  =>  $prj , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                       'shortname'  =>  $prj -> shortname , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                       'current_user'  =>  $request -> user ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $pag -> summary  =  __ ( 'This table shows the found issues.' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $pag -> action  =  array ( 'IDF_Views_Issue::search' ,  array ( $prj -> shortname ),  array ( 'q' =>  $q )); 
							 
						 
					
						
							
								
									
										
										
										
											2009-01-02 14:06:50 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        $pag -> extra_classes  =  array ( 'a-c' ,  '' ,  'a-c' ,  '' ); 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-13 18:26:36 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        $list_display  =  array ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                              'id'  =>  __ ( 'Id' ), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                              array ( 'summary' ,  'IDF_Views_Issue_SummaryAndLabels' ,  __ ( 'Summary' )), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                              array ( 'status' ,  'IDF_Views_Issue_ShowStatus' ,  __ ( 'Status' )), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                              array ( 'modif_dtime' ,  'Pluf_Paginator_DateAgo' ,  __ ( 'Last Updated' )), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                              ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $pag -> configure ( $list_display ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $pag -> items_per_page  =  100 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $pag -> no_results_text  =  __ ( 'No issues were found.' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $pag -> setFromRequest ( $request ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $params  =  array ( 'page_title'  =>  $title , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                        'issues'  =>  $pag , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                        'q'  =>  $q , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                        ); 
							 
						 
					
						
							
								
									
										
										
										
											2008-11-18 09:15:02 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        return  Pluf_Shortcuts_RenderToResponse ( 'idf/issues/search.html' ,  $params ,  $request ); 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-13 18:26:36 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2008-08-07 15:35:03 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    public  $view_precond  =  array ( 'IDF_Precondition::accessIssues' ); 
							 
						 
					
						
							
								
									
										
										
										
											2008-07-25 10:26:05 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								    public  function  view ( $request ,  $match ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $prj  =  $request -> project ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $issue  =  Pluf_Shortcuts_GetObjectOr404 ( 'IDF_Issue' ,  $match [ 2 ]); 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-05 19:58:21 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        $prj -> inOr404 ( $issue ); 
							 
						 
					
						
							
								
									
										
										
										
											2008-07-25 10:26:05 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								        $comments  =  $issue -> get_comments_list ( array ( 'order'  =>  'id ASC' )); 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-30 14:02:10 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        $related_issues  =  $issue -> getGroupedRelatedIssues ( array ( 'order'  =>  'other_issue ASC' )); 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-28 23:48:00 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2008-07-25 10:26:05 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								        $url  =  Pluf_HTTP_URL_urlForView ( 'IDF_Views_Issue::view' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                        array ( $prj -> shortname ,  $issue -> id )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $title  =  Pluf_Template :: markSafe ( sprintf ( __ ( 'Issue <a href="%s">%d</a>: %s' ),  $url ,  $issue -> id ,  $issue -> summary )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $form  =  false ;  // The form is available only if logged in.
 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-12 12:46:09 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        $starred  =  false ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-13 21:20:47 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        $closed  =  in_array ( $issue -> status ,  $prj -> getTagIdsByStatus ( 'closed' )); 
							 
						 
					
						
							
								
									
										
										
										
											2009-01-31 22:23:49 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        $interested  =  $issue -> get_interested_list (); 
							 
						 
					
						
							
								
									
										
										
										
											2009-02-27 14:21:09 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        $preview  =  ( isset ( $request -> POST [ 'preview' ]))  ? 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $request -> POST [ 'content' ]  :  false ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-07-25 10:26:05 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								        if  ( ! $request -> user -> isAnonymous ())  { 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-12 12:46:09 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            $starred  =  Pluf_Model_InArray ( $request -> user ,  $issue -> get_interested_list ()); 
							 
						 
					
						
							
								
									
										
										
										
											2008-07-25 10:26:05 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								            $params  =  array ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                            'project'  =>  $prj , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                            'user'  =>  $request -> user , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                            'issue'  =>  $issue , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                            ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            if  ( $request -> method  ==  'POST' )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-12-02 01:50:01 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                $form  =  new  IDF_Form_IssueUpdate ( array_merge ( $request -> POST , 
							 
						 
					
						
							
								
									
										
										
										
											2008-11-12 20:40:58 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                                                             $request -> FILES ), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                                 $params ); 
							 
						 
					
						
							
								
									
										
										
										
											2009-02-27 14:21:09 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                if  ( ! isset ( $request -> POST [ 'preview' ])  &&  $form -> isValid ())  { 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-08 11:23:33 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                    $issue  =  $form -> save ();  // Note, should return the
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                            // last comment
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    $issue -> notify ( $request -> conf ,  false ); 
							 
						 
					
						
							
								
									
										
										
										
											2009-05-26 12:04:06 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                    $comments  =  $issue -> get_comments_list ( array ( 'order'  =>  'id DESC' )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    $url  .=  '#ic'  .  $comments [ 0 ] -> id ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    $request -> user -> setMessage ( sprintf ( __ ( '<a href="%s">Issue %d</a> has been updated.' ),  $url ,  $issue -> id )); 
							 
						 
					
						
							
								
									
										
										
										
											2008-07-25 10:26:05 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								                    return  new  Pluf_HTTP_Response_Redirect ( $url ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                $form  =  new  IDF_Form_IssueUpdate ( null ,  $params ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2010-12-05 01:22:32 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-01-06 22:38:38 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        // Search previous and next issue id
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $octags  =  $prj -> getTagIdsByStatus (( $closed )  ?  'closed'  :  'open' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        if  ( count ( $octags )  ==  0 )  $octags []  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $sql_previous  =  new  Pluf_SQL ( 'project=%s AND status IN (' . implode ( ', ' ,  $octags ) . ') AND id<%s' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                     array ( $prj -> id ,  $match [ 2 ]) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                    ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $sql_next  =  new  Pluf_SQL ( 'project=%s AND status IN (' . implode ( ', ' ,  $octags ) . ') AND id>%s' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                     array ( $prj -> id ,  $match [ 2 ]) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $previous_issue  =  Pluf :: factory ( 'IDF_Issue' ) -> getList ( array ( 'filter'  =>  $sql_previous -> gen (), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                                                    'order'  =>  'id DESC' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                                                    'nb'  =>  1 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                                                   )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $next_issue  =  Pluf :: factory ( 'IDF_Issue' ) -> getList ( array ( 'filter'  =>  $sql_next -> gen (), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                                                'order'  =>  'id ASC' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                                                'nb'  =>  1 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-09 13:52:09 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                                                               )); 
							 
						 
					
						
							
								
									
										
										
										
											2011-01-06 22:38:38 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        $previous_issue_id  =  ( isset ( $previous_issue [ 0 ]))  ?  $previous_issue [ 0 ] -> id  :  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $next_issue_id  =  ( isset ( $next_issue [ 0 ]))  ?  $next_issue [ 0 ] -> id  :  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2008-07-25 10:26:05 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								        $arrays  =  self :: autoCompleteArrays ( $prj ); 
							 
						 
					
						
							
								
									
										
										
										
											2008-11-18 09:15:02 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        return  Pluf_Shortcuts_RenderToResponse ( 'idf/issues/view.html' , 
							 
						 
					
						
							
								
									
										
										
										
											2008-07-25 10:26:05 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								                                               array_merge ( 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-12 12:46:09 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                                               array ( 
							 
						 
					
						
							
								
									
										
										
										
											2008-07-25 10:26:05 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								                                                     'issue'  =>  $issue , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                                     'comments'  =>  $comments , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                                     'form'  =>  $form , 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-12 12:46:09 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                                                     'starred'  =>  $starred , 
							 
						 
					
						
							
								
									
										
										
										
											2008-07-25 10:26:05 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								                                                     'page_title'  =>  $title , 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-13 21:20:47 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                                                     'closed'  =>  $closed , 
							 
						 
					
						
							
								
									
										
										
										
											2009-02-27 14:21:09 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                                                     'preview'  =>  $preview , 
							 
						 
					
						
							
								
									
										
										
										
											2010-12-05 01:22:32 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                                                     'interested'  =>  $interested -> count (), 
							 
						 
					
						
							
								
									
										
										
										
											2011-01-06 22:38:38 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                                                     'previous_issue_id'  =>  $previous_issue_id , 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-28 23:48:00 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                                                     'next_issue_id'  =>  $next_issue_id , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                                     'related_issues'  =>  $related_issues , 
							 
						 
					
						
							
								
									
										
										
										
											2008-07-25 10:26:05 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								                                                     ), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                               $arrays ), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                               $request ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2008-11-12 20:40:58 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    /** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     *  Download  a  given  attachment . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    public  $getAttachment_precond  =  array ( 'IDF_Precondition::accessIssues' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    public  function  getAttachment ( $request ,  $match ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $prj  =  $request -> project ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $attach  =  Pluf_Shortcuts_GetObjectOr404 ( 'IDF_IssueFile' ,  $match [ 2 ]); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $prj -> inOr404 ( $attach -> get_comment () -> get_issue ()); 
							 
						 
					
						
							
								
									
										
										
										
											2010-12-02 01:50:01 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        $info  =  IDF_FileUtil :: getMimeType ( $attach -> filename ); 
							 
						 
					
						
							
								
									
										
										
										
											2008-12-30 18:00:59 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        $mime  =  'application/octet-stream' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        if  ( strpos ( $info [ 0 ],  'image/' )  ===  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $mime  =  $info [ 0 ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2008-11-12 20:40:58 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        $res  =  new  Pluf_HTTP_Response_File ( Pluf :: f ( 'upload_issue_path' ) . '/' . $attach -> attachment , 
							 
						 
					
						
							
								
									
										
										
										
											2008-12-30 18:00:59 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                                           $mime ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        if  ( $mime  ==  'application/octet-stream' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $res -> headers [ 'Content-Disposition' ]  =  'attachment; filename="' . $attach -> filename . '"' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2008-11-12 20:40:58 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        return  $res ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2008-12-30 18:00:59 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    /** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     *  View  a  given  attachment . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    public  $viewAttachment_precond  =  array ( 'IDF_Precondition::accessIssues' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    public  function  viewAttachment ( $request ,  $match ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $prj  =  $request -> project ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $attach  =  Pluf_Shortcuts_GetObjectOr404 ( 'IDF_IssueFile' ,  $match [ 2 ]); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $prj -> inOr404 ( $attach -> get_comment () -> get_issue ()); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        // If one cannot see the attachement, redirect to the
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        // getAttachment view.
 
							 
						 
					
						
							
								
									
										
										
										
											2010-12-02 01:50:01 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        $info  =  IDF_FileUtil :: getMimeType ( $attach -> filename ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        if  ( ! IDF_FileUtil :: isText ( $info ))  { 
							 
						 
					
						
							
								
									
										
										
										
											2008-12-30 18:00:59 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            return  $this -> getAttachment ( $request ,  $match ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        // Now we want to look at the file but with links back to the
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        // issue.
 
							 
						 
					
						
							
								
									
										
										
										
											2010-12-02 01:50:01 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        $file  =  IDF_FileUtil :: highLight ( $info , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                        file_get_contents ( Pluf :: f ( 'upload_issue_path' ) . '/' . $attach -> attachment )); 
							 
						 
					
						
							
								
									
										
										
										
											2008-12-30 18:00:59 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        $title  =  sprintf ( __ ( 'View %s' ),  $attach -> filename ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        return  Pluf_Shortcuts_RenderToResponse ( 'idf/issues/attachment.html' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                               array ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                                     'attachment'  =>  $attach , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                                     'page_title'  =>  $title , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                                     'comment'  =>  $attach -> get_comment (), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                                     'issue'  =>  $attach -> get_comment () -> get_issue (), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                                     'file'  =>  $file , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                                     ), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                               $request ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2008-07-25 10:26:05 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								    /** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     *  View  list  of  issues  for  a  given  project  with  a  given  status . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     */ 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-07 15:35:03 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    public  $listStatus_precond  =  array ( 'IDF_Precondition::accessIssues' ); 
							 
						 
					
						
							
								
									
										
										
										
											2008-07-25 10:26:05 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								    public  function  listStatus ( $request ,  $match ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $prj  =  $request -> project ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $status  =  $match [ 2 ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $title  =  sprintf ( __ ( '%s Closed Issues' ),  ( string )  $prj ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        // Get stats about the issues
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $open  =  $prj -> getIssueCountByStatus ( 'open' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $closed  =  $prj -> getIssueCountByStatus ( 'closed' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        // Paginator to paginate the issues
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $pag  =  new  Pluf_Paginator ( new  IDF_Issue ()); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $pag -> class  =  'recent-issues' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $pag -> item_extra_props  =  array ( 'project_m'  =>  $prj , 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-12 12:46:09 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                                       'shortname'  =>  $prj -> shortname , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                       'current_user'  =>  $request -> user ); 
							 
						 
					
						
							
								
									
										
										
										
											2008-07-25 10:26:05 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								        $pag -> summary  =  __ ( 'This table shows the closed issues.' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $otags  =  $prj -> getTagIdsByStatus ( 'closed' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        if  ( count ( $otags )  ==  0 )  $otags []  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $pag -> forced_where  =  new  Pluf_SQL ( 'project=%s AND status IN (' . implode ( ', ' ,  $otags ) . ')' ,  array ( $prj -> id )); 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-11 21:10:02 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        $pag -> action  =  array ( 'IDF_Views_Issue::listStatus' ,  array ( $prj -> shortname ,  $status )); 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-14 09:33:33 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        $pag -> sort_order  =  array ( 'modif_dtime' ,  'ASC' );  // will be reverted
 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-11 21:10:02 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        $pag -> sort_reverse_order  =  array ( 'modif_dtime' ); 
							 
						 
					
						
							
								
									
										
										
										
											2009-07-08 14:23:01 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        $pag -> sort_link_title  =  true ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-01-02 14:06:50 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        $pag -> extra_classes  =  array ( 'a-c' ,  '' ,  'a-c' ,  '' ); 
							 
						 
					
						
							
								
									
										
										
										
											2008-07-25 10:26:05 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								        $list_display  =  array ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								             'id'  =>  __ ( 'Id' ), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								             array ( 'summary' ,  'IDF_Views_Issue_SummaryAndLabels' ,  __ ( 'Summary' )), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								             array ( 'status' ,  'IDF_Views_Issue_ShowStatus' ,  __ ( 'Status' )), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								             array ( 'modif_dtime' ,  'Pluf_Paginator_DateAgo' ,  __ ( 'Last Updated' )), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                              ); 
							 
						 
					
						
							
								
									
										
										
										
											2009-07-08 14:23:01 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        $pag -> configure ( $list_display ,  array (),  array ( 'id' ,  'status' ,  'modif_dtime' )); 
							 
						 
					
						
							
								
									
										
										
										
											2008-07-25 10:26:05 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								        $pag -> items_per_page  =  10 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $pag -> no_results_text  =  __ ( 'No issues were found.' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $pag -> setFromRequest ( $request ); 
							 
						 
					
						
							
								
									
										
										
										
											2008-11-18 09:15:02 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        return  Pluf_Shortcuts_RenderToResponse ( 'idf/issues/index.html' , 
							 
						 
					
						
							
								
									
										
										
										
											2008-07-25 10:26:05 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								                                               array ( 'project'  =>  $prj , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                                     'page_title'  =>  $title , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                                     'open'  =>  $open , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                                     'closed'  =>  $closed , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                                     'issues'  =>  $pag , 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-08 20:34:40 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                                                     'cloud'  =>  'closed_issues' , 
							 
						 
					
						
							
								
									
										
										
										
											2008-07-25 10:26:05 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								                                                     ), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                               $request ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    /** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     *  View  list  of  issues  for  a  given  project  with  a  given  label . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     */ 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-07 15:35:03 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    public  $listLabel_precond  =  array ( 'IDF_Precondition::accessIssues' ); 
							 
						 
					
						
							
								
									
										
										
										
											2008-07-25 10:26:05 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								    public  function  listLabel ( $request ,  $match ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $prj  =  $request -> project ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $tag  =  Pluf_Shortcuts_GetObjectOr404 ( 'IDF_Tag' ,  $match [ 2 ]); 
							 
						 
					
						
							
								
									
										
										
										
											2010-12-02 01:50:01 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        $status  =  $match [ 3 ]; 
							 
						 
					
						
							
								
									
										
										
										
											2008-07-25 10:26:05 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								        if  ( $tag -> project  !=  $prj -> id  or  ! in_array ( $status ,  array ( 'open' ,  'closed' )))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            throw  new  Pluf_HTTP_Error404 (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        if  ( $status  ==  'open' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $title  =  sprintf ( __ ( '%1$s Issues with Label %2$s' ),  ( string )  $prj , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                             ( string )  $tag ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        }  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-12-02 01:50:01 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            $title  =  sprintf ( __ ( '%1$s Closed Issues with Label %2$s' ), 
							 
						 
					
						
							
								
									
										
										
										
											2008-07-25 10:26:05 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								                             ( string )  $prj ,  ( string )  $tag ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        // Get stats about the open/closed issues having this tag.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $open  =  $prj -> getIssueCountByStatus ( 'open' ,  $tag ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $closed  =  $prj -> getIssueCountByStatus ( 'closed' ,  $tag ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        // Paginator to paginate the issues
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $pag  =  new  Pluf_Paginator ( new  IDF_Issue ()); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $pag -> model_view  =  'join_tags' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $pag -> class  =  'recent-issues' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $pag -> item_extra_props  =  array ( 'project_m'  =>  $prj , 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-12 12:46:09 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                                       'shortname'  =>  $prj -> shortname , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                       'current_user'  =>  $request -> user ); 
							 
						 
					
						
							
								
									
										
										
										
											2008-07-25 10:26:05 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								        $pag -> summary  =  sprintf ( __ ( 'This table shows the issues with label %s.' ),  ( string )  $tag ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $otags  =  $prj -> getTagIdsByStatus ( $status ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        if  ( count ( $otags )  ==  0 )  $otags []  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $pag -> forced_where  =  new  Pluf_SQL ( 'project=%s AND idf_tag_id=%s AND status IN (' . implode ( ', ' ,  $otags ) . ')' ,  array ( $prj -> id ,  $tag -> id )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $pag -> action  =  array ( 'IDF_Views_Issue::listLabel' ,  array ( $prj -> shortname ,  $tag -> id ,  $status )); 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-14 09:33:33 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        $pag -> sort_order  =  array ( 'modif_dtime' ,  'ASC' );  // will be reverted
 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-11 21:10:02 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        $pag -> sort_reverse_order  =  array ( 'modif_dtime' ); 
							 
						 
					
						
							
								
									
										
										
										
											2009-07-08 14:23:01 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        $pag -> sort_link_title  =  true ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-01-02 14:06:50 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        $pag -> extra_classes  =  array ( 'a-c' ,  '' ,  'a-c' ,  '' ); 
							 
						 
					
						
							
								
									
										
										
										
											2008-07-25 10:26:05 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								        $list_display  =  array ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								             'id'  =>  __ ( 'Id' ), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								             array ( 'summary' ,  'IDF_Views_Issue_SummaryAndLabels' ,  __ ( 'Summary' )), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								             array ( 'status' ,  'IDF_Views_Issue_ShowStatus' ,  __ ( 'Status' )), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								             array ( 'modif_dtime' ,  'Pluf_Paginator_DateAgo' ,  __ ( 'Last Updated' )), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                              ); 
							 
						 
					
						
							
								
									
										
										
										
											2009-07-08 14:23:01 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        $pag -> configure ( $list_display ,  array (),  array ( 'id' ,  'status' ,  'modif_dtime' )); 
							 
						 
					
						
							
								
									
										
										
										
											2008-07-25 10:26:05 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								        $pag -> items_per_page  =  10 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $pag -> no_results_text  =  __ ( 'No issues were found.' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $pag -> setFromRequest ( $request ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        if  (( $open + $closed )  >  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $completion  =  sprintf ( '%01.0f%%' ,  ( 100 * $closed ) / (( float )  $open + $closed )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $completion  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2008-11-18 09:15:02 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        return  Pluf_Shortcuts_RenderToResponse ( 'idf/issues/by-label.html' , 
							 
						 
					
						
							
								
									
										
										
										
											2008-07-25 10:26:05 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								                                               array ( 'project'  =>  $prj , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                                     'completion'  =>  $completion , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                                     'page_title'  =>  $title , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                                     'open'  =>  $open , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                                     'label'  =>  $tag , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                                     'closed'  =>  $closed , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                                     'issues'  =>  $pag , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                                     ), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                               $request ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-05-09 13:52:09 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    /** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     *  Renders  a  JSON  string  containing  completed  issue  information 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     *  based  on  the  queried  /  partial  string 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    public  $autoCompleteIssueList_precond  =  array ( 'IDF_Precondition::accessIssues' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    public  function  autoCompleteIssueList ( $request ,  $match ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $prj  =  $request -> project ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-10 16:21:29 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        $issue_id  =  ! empty ( $match [ 2 ])  ?  intval ( $match [ 2 ])  :  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $query  =  trim ( $request -> REQUEST [ 'q' ]); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $limit  =  ! empty ( $request -> REQUEST [ 'limit' ])  ?  intval ( $request -> REQUEST [ 'limit' ])  :  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $limit  =  max ( 10 ,  $limit ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $issues  =  array (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        // empty search, return the most recently updated issues
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        if  ( empty ( $query ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                $sql  =  new  Pluf_SQL ( 'project=%s' ,  array ( $prj -> id )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                $tmp  =  Pluf :: factory ( 'IDF_Issue' ) -> getList ( array ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    'filter'  =>  $sql -> gen (), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    'order'  =>  'modif_dtime DESC' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                $issues  +=  $tmp -> getArrayCopy (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            // ID-based search
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            if  ( is_numeric ( $query ))  { 
							 
						 
					
						
							
								
									
										
										
										
											2011-06-30 00:25:29 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                $sql  =  new  Pluf_SQL ( 'project=%s AND CAST(id AS CHAR) LIKE %s' ,  array ( $prj -> id ,  $query . '%' )); 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-10 16:21:29 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                $tmp  =  Pluf :: factory ( 'IDF_Issue' ) -> getList ( array ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    'filter'  =>  $sql -> gen (), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    'order'  =>  'id ASC' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                $issues  +=  $tmp -> getArrayCopy (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            // text-based search
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $res  =  new  Pluf_Search_ResultSet ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                IDF_Search :: mySearch ( $query ,  $prj ,  'IDF_Issue' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            foreach  ( $res  as  $issue ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                $issues []  =  $issue ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-09 13:52:09 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        // Autocomplete from jQuery UI works with JSON, this old one still
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        // expects a parsable string; since we'd need to bump jQuery beyond
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        // 1.2.6 for this to use as well, we're trying to cope with the old format.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        // see http://www.learningjquery.com/2010/06/autocomplete-migration-guide
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $out  =  '' ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-10 16:21:29 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        $ids  =  array (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        foreach  ( $issues  as  $issue ) 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-09 13:52:09 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        { 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-10 16:21:29 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            if  ( $issue -> id  ==  $issue_id ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                continue ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            if  ( in_array ( $issue -> id ,  $ids )) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                continue ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            if  ( -- $limit  <  0 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $out  .=  str_replace ( '|' ,  '|' ,  $issue -> summary )  . '|' . $issue -> id . " \n " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $ids []  =  $issue -> id ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-09 13:52:09 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        return  new  Pluf_HTTP_Response ( $out ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2008-08-12 12:46:09 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    /** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     *  Star / Unstar  an  issue . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    public  $star_precond  =  array ( 'IDF_Precondition::accessIssues' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                 'Pluf_Precondition::loginRequired' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    public  function  star ( $request ,  $match ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $prj  =  $request -> project ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $issue  =  Pluf_Shortcuts_GetObjectOr404 ( 'IDF_Issue' ,  $match [ 2 ]); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $prj -> inOr404 ( $issue ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        if  ( $request -> method  ==  'POST' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $starred  =  Pluf_Model_InArray ( $request -> user ,  $issue -> get_interested_list ()); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            if  ( $starred )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                $issue -> delAssoc ( $request -> user ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                $request -> user -> setMessage ( __ ( 'The issue has been removed from your watch list.' )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                $issue -> setAssoc ( $request -> user ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                $request -> user -> setMessage ( __ ( 'The issue has been added to your watch list.' )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $url  =  Pluf_HTTP_URL_urlForView ( 'IDF_Views_Issue::view' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                        array ( $prj -> shortname ,  $issue -> id )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        return  new  Pluf_HTTP_Response_Redirect ( $url ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2008-07-25 10:26:05 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								    /** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     *  Create  the  autocomplete  arrays  for  the  little  AJAX  stuff . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    public  static  function  autoCompleteArrays ( $project ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $conf  =  new  IDF_Conf (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $conf -> setProject ( $project ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $auto  =  array ( 'auto_status'  =>  '' ,  'auto_labels'  =>  '' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $auto_raw  =  array ( 'auto_status'  =>  '' ,  'auto_labels'  =>  '' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $st  =  $conf -> getVal ( 'labels_issue_open' ,  IDF_Form_IssueTrackingConf :: init_open ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $st  .=  " \n " . $conf -> getVal ( 'labels_issue_closed' ,  IDF_Form_IssueTrackingConf :: init_closed ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $auto_raw [ 'auto_status' ]  =  $st ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $auto_raw [ 'auto_labels' ]  =  $conf -> getVal ( 'labels_issue_predefined' ,  IDF_Form_IssueTrackingConf :: init_predefined ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        foreach  ( $auto_raw  as  $key  =>  $st )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $st  =  preg_split ( " / \015 \012 | \015 | \012 / " ,  $st ,  - 1 ,  PREG_SPLIT_NO_EMPTY ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            foreach  ( $st  as  $s )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                $v  =  '' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                $d  =  '' ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-09-24 20:40:22 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                $_s  =  explode ( '=' ,  $s ,  2 ); 
							 
						 
					
						
							
								
									
										
										
										
											2008-07-25 10:26:05 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								                if  ( count ( $_s )  >  1 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    $v  =  trim ( $_s [ 0 ]); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    $d  =  trim ( $_s [ 1 ]); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    $v  =  trim ( $_s [ 0 ]); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                $auto [ $key ]  .=  sprintf ( '{ name: "%s", to: "%s" }, ' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                       Pluf_esc ( $d ), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                       Pluf_esc ( $v )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            } 
							 
						 
					
						
							
								
									
										
										
										
											2009-02-01 09:54:09 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            $auto [ $key ]  =  substr ( $auto [ $key ],  0 ,  - 2 ); 
							 
						 
					
						
							
								
									
										
										
										
											2008-07-25 10:26:05 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2008-07-25 14:15:58 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        // Get the members/owners
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $m  =  $project -> getMembershipData (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $auto [ '_auto_owner' ]  =  $m [ 'members' ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $auto [ 'auto_owner' ]  =  '' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        foreach  ( $m [ 'owners' ]  as  $owner )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            if  ( ! Pluf_Model_InArray ( $owner ,  $auto [ '_auto_owner' ]))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                $auto [ '_auto_owner' ][]  =  $owner ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        foreach  ( $auto [ '_auto_owner' ]  as  $owner )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $auto [ 'auto_owner' ]  .=  sprintf ( '{ name: "%s", to: "%s" }, ' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                           Pluf_esc ( $owner ), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                           Pluf_esc ( $owner -> login )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2009-02-01 09:54:09 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        $auto [ 'auto_owner' ]  =  substr ( $auto [ 'auto_owner' ],  0 ,  - 2 ); 
							 
						 
					
						
							
								
									
										
										
										
											2008-07-25 14:15:58 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        unset ( $auto [ '_auto_owner' ]); 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-09 13:52:09 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        // Get issue relations
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $r  =  $project -> getRelationsFromConfig (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $auto [ 'auto_relation_types' ]  =  '' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        foreach  ( $r  as  $rt )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $esc  =  Pluf_esc ( $rt ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $auto [ 'auto_relation_types' ]  .=  sprintf ( '{ name: "%s", to: "%s" }, ' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                                    $esc ,  $esc ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $auto [ 'auto_relation_types' ]  =  substr ( $auto [ 'auto_relation_types' ],  0 ,  - 2 ); 
							 
						 
					
						
							
								
									
										
										
										
											2008-07-25 10:26:05 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								        return  $auto ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-01-05 17:02:06 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								/** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  When  you  access  to  your  forge  watch  list ,  issue  don ' t  known 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  the  project  shortname . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								function  IDF_Views_Issue_SummaryAndLabelsUnknownProject ( $field ,  $issue ,  $extra = '' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $shortname  =  $issue -> get_project () -> shortname ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $issue -> __set ( 'shortname' ,  $shortname ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    return  IDF_Views_Issue_SummaryAndLabels  ( $field ,  $issue ,  $extra ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2008-07-25 10:26:05 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								/** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  Display  the  summary  of  an  issue ,  then  on  a  new  line ,  display  the 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  list  of  labels  with  a  link  to  a  view  " by label only " . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  The  summary  of  the  issue  is  linking  to  the  issue . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								function  IDF_Views_Issue_SummaryAndLabels ( $field ,  $issue ,  $extra = '' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								{ 
							 
						 
					
						
							
								
									
										
										
										
											2010-12-02 01:50:01 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    $edit  =  Pluf_HTTP_URL_urlForView ( 'IDF_Views_Issue::view' , 
							 
						 
					
						
							
								
									
										
										
										
											2008-07-25 10:26:05 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								                                     array ( $issue -> shortname ,  $issue -> id )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $tags  =  array (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    foreach  ( $issue -> get_tags_list ()  as  $tag )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-12-02 01:50:01 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        $url  =  Pluf_HTTP_URL_urlForView ( 'IDF_Views_Issue::listLabel' , 
							 
						 
					
						
							
								
									
										
										
										
											2008-07-25 10:26:05 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								                                        array ( $issue -> shortname ,  $tag -> id ,  'open' )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $tags []  =  sprintf ( '<a class="label" href="%s">%s</a>' ,  $url ,  Pluf_esc (( string )  $tag )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-12 12:46:09 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    $s  =  '' ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-12 12:48:24 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    if  ( ! $issue -> current_user -> isAnonymous ()  and 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        Pluf_Model_InArray ( $issue -> current_user ,  $issue -> get_interested_list ()))  { 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-12 12:49:59 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        $s  =  '<img style="vertical-align: text-bottom;" src="' . Pluf_Template_Tag_MediaUrl :: url ( '/idf/img/star.png' ) . '" alt="' . __ ( 'On your watch list.' ) . '" /> ' ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-12 12:46:09 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2008-07-25 10:26:05 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								    $out  =  '' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    if  ( count ( $tags ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $out  =  '<br /><span class="note">' . implode ( ', ' ,  $tags ) . '</span>' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-12 12:46:09 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    return  $s . sprintf ( '<a href="%s">%s</a>' ,  $edit ,  Pluf_esc ( $issue -> summary )) . $out ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-07-25 10:26:05 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								/** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  Display  the  status  in  the  issue  listings . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								function  IDF_Views_Issue_ShowStatus ( $field ,  $issue ,  $extra = '' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    return  Pluf_esc ( $issue -> get_status () -> name ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-12-02 01:50:01 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
									
										
										
										
											2011-01-05 17:02:06 +01:00