PageRenderTime 111ms CodeModel.GetById 19ms RepoModel.GetById 1ms app.codeStats 0ms

/www/wptmonitor/listResults.php

http://webpagetest.googlecode.com/
PHP | 198 lines | 167 code | 20 blank | 11 comment | 57 complexity | 29a6c65595839954e8f479681c5b6b80 MD5 | raw file
Possible License(s): AGPL-1.0, Apache-2.0, GPL-3.0, LGPL-3.0, MIT, BSD-3-Clause, ISC, LGPL-2.1
  1. <?php
  2. require( "login/login.php" );
  3. include 'monitor.inc';
  4. global $wptResultStatusCodes;
  5. date_default_timezone_set( $_SESSION[ 'ls_timezone' ] );
  6. //$_REQUEST['folderId'];
  7. $user_id = getCurrentUserId();
  8. // Defaults
  9. $resultsFilterField = "";
  10. $resultsFilterValue = "";
  11. // Handle resultsFilter settings
  12. // TODO: Refactor filter feature into common code. It's duplicated
  13. if ( isset( $_REQUEST[ 'clearFilter' ] ) ) {
  14. unset( $_SESSION[ 'resultsFilterField' ] );
  15. unset( $_SESSION[ 'resultsFilterValue' ] );
  16. unset( $_SESSION[ 'resultsFilterStartDateTime' ] );
  17. unset( $_SESSION[ 'resultsFilterEndDateTime' ] );
  18. } else {
  19. if ( isset( $_REQUEST[ 'filterField' ] ) && $resultsFilterField = $_REQUEST[ 'filterField' ] ) {
  20. $_SESSION[ 'resultsFilterField' ] = $resultsFilterField;
  21. }
  22. if ( isset( $_REQUEST[ 'filterValue' ] ) && $resultsFilterValue = $_REQUEST[ 'filterValue' ] ) {
  23. $_SESSION[ 'resultsFilterValue' ] = $resultsFilterValue;
  24. }
  25. }
  26. if ( isset( $_SESSION[ 'resultsFilterField' ] ) ) {
  27. $resultsFilterField = $_SESSION[ 'resultsFilterField' ];
  28. }
  29. if ( isset( $_SESSION[ 'resultsFilterValue' ] ) ) {
  30. $resultsFilterValue = $_SESSION[ 'resultsFilterValue' ];
  31. }
  32. if ( isset( $_REQUEST[ 'startDateTime' ] ) ) {
  33. $startDateTime = $_REQUEST[ 'startDateTime' ];
  34. } else {
  35. if ( isset( $_REQUEST[ 'startMonth' ] ) ) {
  36. $startDateTime = mktime( $_REQUEST[ 'startHour' ], $_REQUEST[ 'startMinute' ], 0, $_REQUEST[ 'startMonth' ], $_REQUEST[ 'startDay' ], $_REQUEST[ 'startYear' ] );
  37. } else if ( isset( $_SESSION[ 'resultsFilterStartDateTime' ] ) ) {
  38. $startDateTime = $_SESSION[ 'resultsFilterStartDateTime' ];
  39. }
  40. }
  41. if ( isset( $_REQUEST[ 'endDateTime' ] ) ) {
  42. $endDateTime = $_REQUEST[ 'endDateTime' ];
  43. } else {
  44. if ( isset( $_REQUEST[ 'endMonth' ] ) ) {
  45. $endDateTime = mktime( $_REQUEST[ 'endHour' ], $_REQUEST[ 'endMinute' ], 0, $_REQUEST[ 'endMonth' ], $_REQUEST[ 'endDay' ], $_REQUEST[ 'endYear' ] )+120;
  46. } else if ( isset( $_SESSION[ 'resultsFilterEndDateTime' ] ) ) {
  47. $endDateTime = $_SESSION[ 'resultsFilterEndDateTime' ];
  48. }
  49. }
  50. if ( !isset( $startDateTime ) && !isset( $_SESSION[ 'resultsFilterStartDateTime' ] ) ) {
  51. $startDateTime = time() - 86400;
  52. }
  53. if ( !isset( $endDateTime ) && !isset( $_SESSION[ 'resultsFilterEndDateTime' ] ) ) {
  54. $endDateTime = time();
  55. }
  56. $_SESSION[ 'resultsFilterStartDateTime' ] = $startDateTime;
  57. $_SESSION[ 'resultsFilterEndDateTime' ] = $endDateTime;
  58. $smarty->assign( 'startTime', $startDateTime );
  59. $smarty->assign( 'endTime', $endDateTime );
  60. if ( isset( $_REQUEST[ 'job_id' ] ) ) {
  61. $job_id = $_REQUEST[ 'job_id' ];
  62. $ownerId = getOwnerIdFor( $job_id, 'WPTJob' );
  63. } else {
  64. $ownerId = null;
  65. }
  66. // If a job_id is passed in, set the filter to show only results for that job_id
  67. if ( isset( $job_id ) ) {
  68. $_SESSION[ 'resultsFilterField' ] = "WPTJob.Id";
  69. $_SESSION[ 'resultsFilterValue' ] = $job_id[ 0 ];
  70. }
  71. if ( isset( $_REQUEST[ 'showResultsThumbs' ] ) && $showThumbs = $_REQUEST[ 'showResultsThumbs' ] ) {
  72. $_SESSION[ 'showResultsThumbs' ] = $showThumbs;
  73. } else if ( !isset( $_SESSION[ 'showResultsThumbs' ] ) ) {
  74. $_SESSION[ 'showResultsThumbs' ] = 'false';
  75. }
  76. $smarty->assign( 'showResultsThumbs', $_SESSION[ 'showResultsThumbs' ] );
  77. if ( isset( $_REQUEST[ 'showWaterfallThumbs' ] ) && $showWaterfallThumbs = $_REQUEST[ 'showWaterfallThumbs' ] ) {
  78. $_SESSION[ 'showWaterfallThumbs' ] = $showWaterfallThumbs;
  79. } else if ( !isset( $_SESSION[ 'showWaterfallThumbs' ] ) ) {
  80. $_SESSION[ 'showWaterfallThumbs' ] = 'false';
  81. }
  82. $smarty->assign( 'showWaterfallThumbs', $_SESSION[ 'showWaterfallThumbs' ] );
  83. // Handle pager settings
  84. if ( isset( $_REQUEST[ 'currentPage' ] ) ) {
  85. $_SESSION[ 'resultsCurrentPage' ] = $_REQUEST[ 'currentPage' ];
  86. }
  87. if ( !isset( $_SESSION[ 'resultsCurrentPage' ] ) ) {
  88. $_SESSION[ 'resultsCurrentPage' ] = 1;
  89. }
  90. $resultsCurrentPage = $_SESSION[ 'resultsCurrentPage' ];
  91. // Order by direction
  92. if ( isset( $_REQUEST[ 'orderByDir' ] ) && ( $orderByDir = $_REQUEST[ 'orderByDir' ] ) ) {
  93. $_SESSION[ 'orderResultsByDirection' ] = $orderByDir;
  94. } else {
  95. if ( !isset( $_SESSION[ 'orderResultsByDirection' ] ) ) {
  96. $_SESSION[ 'orderResultsByDirection' ] = "DESC";
  97. }
  98. }
  99. if ( $_SESSION[ 'orderResultsByDirection' ] == "ASC" ) {
  100. $orderByDirInv = "DESC";
  101. } else {
  102. $orderByDirInv = "ASC";
  103. }
  104. // Order by
  105. if ( !isset( $_REQUEST[ 'orderBy' ] ) ) {
  106. if ( !isset( $_SESSION[ 'orderResultsBy' ] ) ) {
  107. $orderBy = "Date";
  108. } else {
  109. $orderBy = $_SESSION[ 'orderResultsBy' ];
  110. }
  111. } else {
  112. $orderBy = $_REQUEST[ 'orderBy' ];
  113. }
  114. $_SESSION[ 'orderResultsBy' ] = $orderBy;
  115. $smarty->assign( 'orderResultsBy', $_SESSION[ 'orderResultsBy' ] );
  116. $smarty->assign( 'orderResultsByDirection', $_SESSION[ 'orderResultsByDirection' ] );
  117. $smarty->assign( 'orderResultsByDirectionInv', $orderByDirInv );
  118. $smarty->assign( 'resultsFilterField', $resultsFilterField );
  119. $smarty->assign( 'resultsFilterValue', $resultsFilterValue );
  120. $orderBy = 'r.' . $_SESSION[ 'orderResultsBy' ] . ' ' . $_SESSION[ 'orderResultsByDirection' ];
  121. // Get list of job folders that this user has at least read rights to
  122. $folderShares = getFolderShares( $user_id, 'WPTJob', $ownerId );
  123. $folderIds = array();
  124. foreach ( $folderShares as $key => $folderShare ) {
  125. foreach ( $folderShare as $k => $share ) {
  126. $folderIds[ ] = $k;
  127. }
  128. }
  129. try
  130. {
  131. $q = Doctrine_Query::create()->from( 'WPTResult r, r.WPTJob j' )->orderBy( $orderBy );
  132. if ( $folderIds ) {
  133. $q->whereIn( 'r.WPTJob.WPTJobFolderId', $folderIds );
  134. } else {
  135. // $q->andWhere('s.UserId = ?', $user_id);
  136. $q->andWhere( 'r.WPTJob.UserId = ?', $user_id );
  137. }
  138. if ( $resultsFilterField && $resultsFilterValue ) {
  139. if ( $resultsFilterField == "WPTJob.Id" ) {
  140. // 2012/01/21: Added sequence support
  141. if (($idx = strrpos($resultsFilterValue,":")) > 0){
  142. $sequenceNumber = substr($resultsFilterValue,$idx+1);
  143. $resultsFilterValue = substr($resultsFilterValue,0,$idx);
  144. $q->andWhere( 'r.SequenceNumber = ?', $sequenceNumber);
  145. }
  146. $q->andWhere( 'r.' . $resultsFilterField . '= ?', $resultsFilterValue )
  147. ->andWhere( 'r.Date < ?', $endDateTime )
  148. ->andWhere( 'r.Date > ?', $startDateTime );
  149. } else {
  150. $q->andWhere( 'r.' . $resultsFilterField . ' LIKE ?', '%' . $resultsFilterValue . '%' )
  151. ->andWhere( 'r.Date < ?', $endDateTime )
  152. ->andWhere( 'r.Date > ?', $startDateTime );
  153. }
  154. } else {
  155. $q->andWhere( 'r.Date < ?', $endDateTime )
  156. ->andWhere( 'r.Date > ?', $startDateTime );
  157. }
  158. $q->orderBy('r.WPTResultId');
  159. $pager = new Doctrine_Pager( $q, $resultsCurrentPage, $resultsPerPage );
  160. $result = $pager->execute();
  161. $smarty->assign( 'wptResultURL', $wptResult );
  162. $smarty->assign( 'currentPage', $resultsCurrentPage );
  163. $smarty->assign( 'maxpages', $pager->getLastPage() );
  164. $smarty->assign( 'result', $result );
  165. $smarty->assign( 'statusCodes', $wptResultStatusCodes );
  166. }
  167. catch ( Exception $e )
  168. {
  169. if ( !isset($wptResultId)){
  170. $wptResultId="NULL";
  171. }
  172. error_log( "[WPTMonitor] Failed while Listing jobs: " . $wptResultId . " message: " . $e->getMessage() );
  173. print 'Exception : ' . $e->getMessage();
  174. }
  175. unset( $pager );
  176. unset( $result );
  177. $smarty->display( 'job/listResults.tpl' );
  178. ?>