[evolvis-commits] r7061: Backup, almost finished, needs to be optimized and fine tuned.
papel at evolvis.org
papel at evolvis.org
Mon Nov 8 15:57:53 CET 2010
Author: papel
Date: 2010-11-08 15:57:53 +0100 (Mon, 08 Nov 2010)
New Revision: 7061
Modified:
branches/papel-reporting/common/pm/taskReportingController.class.php
branches/papel-reporting/common/pm/taskReportingError.class.php
branches/papel-reporting/common/pm/taskReportingInfo.class.php
branches/papel-reporting/common/pm/taskReportingModel.class.php
branches/papel-reporting/common/pm/taskReportingView.class.php
branches/papel-reporting/www/pm/reporting/taskCreatePdfTemplate.php
branches/papel-reporting/www/pm/reporting/taskCreateReportGui.php
Log:
Backup, almost finished, needs to be optimized and fine tuned.
Modified: branches/papel-reporting/common/pm/taskReportingController.class.php
===================================================================
--- branches/papel-reporting/common/pm/taskReportingController.class.php 2010-11-03 15:39:33 UTC (rev 7060)
+++ branches/papel-reporting/common/pm/taskReportingController.class.php 2010-11-08 14:57:53 UTC (rev 7061)
@@ -241,81 +241,6 @@
return $result;
}
- /**
- * loginToActivity() - Needed to log in to activity
- *
- * @param string protocol prefix - empty string or "ssl://" if ssl is used.
- * @param string host - Activity host
- * @param int port - Activity port
- * @param string username
- * @param string password
- *
- * @return string session id - needed in all HTTP Headers of post or get requests to get authorization and access
- */
- private function loginToActivity($protocolPrefix='', $host='', $port = 0, $username, $password) {
-
- $resultArray_ = array('','');
-
- $objReportingInfo = $this->getObjReportingInfo();
-
- $activityProtocolPrefix = $protocolPrefix;
-
- $fp = fsockopen($activityProtocolPrefix.$host, $port, $errno, $errstr, 0); // 0 = Seconds of connection timeout
-
- if($errno === 0 && !$objReportingInfo->isInsufficientConfigInfo()) { // 0 = No error Connection
- // 111 = Connection refused
-
- stream_set_blocking($fp, 1); // 1 = blocking mode
- // 0 = non blocking mode
-
- $data = "username=$username&password=$password&submit=Anmelden";
- fputs($fp, "GET /api/activities?evolvisTaskId=123 HTTP/1.1\n");
- fputs($fp, "Host: $host:$port\n");
- fputs($fp, "Content-length: ".strlen($data)."\n");
- fputs($fp, "Content-Type: application/x-www-form-urlencoded\n\n");
- fputs($fp, $data);
-
- $result = '';
- $i = 0;
- $flag = array(false, false);
-
- while(!feof($fp)) {
- $result .= fgetss($fp, 1);
-
- if(!$result || $result = '') {
- $objReportingInfo->setServiceUnavailableError('Hours done not available. Activity');
- break;
- }
-
- $flag = $objReportingInfo->catchHTTPStatusCodeInfo($result, _('An error on login on Activity occurred. Hours done not available.'));
-
- if($flag[1]) { break; } //An error occurred
-
- if(strpos($result, "JSESSIONID=")){ $flag[0] = true; }
- if(strpos($result, ";") && $flag[0] == true) {
- break;
- }
- $i++;
-
- if($i == 1000) {
- break;
- }
- }
-
- $resultArray = array();
-
- $resultArray = split("JSESSIONID=",$result);
- $resultArray_=split(";", $resultArray[1]);
-
- fclose($fp);
-
- } else {
- $objReportingInfo->setConnectionRefusedInfo(_('An error on login on Activity occurred. Hours done not available.'));
- }
-
- return $resultArray_[0]; //JSESSIONID
- }
-
public function getCurrentDateAsArray() {
$currentTimestamp = time();
$currentDay = date("j",$currentTimestamp);
@@ -405,19 +330,23 @@
}
public function display() {
-
+
+ $protocolPrefix = $this->getActivityProtocolPrefix();
+ $host = $this->getActivityHost();
+ $port = $this->getActivityPort();
$user = $this->getActivityUser();
$password = $this->getActivityUserPass();
- $port = $this->getActivityPort();
- $host = $this->getActivityHost();
- $protocolPrefix = $this->getActivityProtocolPrefix();
- $jsessionId = $this->loginToActivity($protocolPrefix, $host, $port, $user, $password);
-
+ $selectRequest = $this->getSelectRequest();
+
+ $evolvisProjectId = $selectRequest['group_id'];
+ #$evolvisProjectId = 69;
+
$objModel = new taskReportingModel();
+ $objModel->setObjReportingInfo($this->getObjReportingInfo());
+
$objView = new taskReportingView();
- $selectRequest = $this->getSelectRequest();
$whereRequest = $this->getWhereRequest();
$orderBy = $this->getOrderBy();
$groupBy = $this->getGroupBy();
@@ -432,13 +361,22 @@
$reportData = array();
$reportDataHeader = array();
- //The current report data
- $reportData_ = $objModel->getReportData($selectRequest, $whereRequest, $orderBy, $groupBy, $asc);
- $reportDataHeader_ = $objModel->getReportDataHeader(); //Has to be after getReportData())
+ if($selectRequest['hours_done'] || // No need to get the whole project information if only hours done is choosen.
+ $selectRequest['hours_done_max'] ||
+ $selectRequest['hours_done_min'] ||
+ $selectRequest['hours_done_avg'] ||
+ $selectRequest['hours_done_sum']) {
+ $projectInfo = $objModel->getActivityEvolvisProjectInfo($protocolPrefix, $host, $port, $user, $password, $evolvisProjectId);
+ } else {
+ $objModel->testConnectionToActivity($protocolPrefix, $host, $port, $user, $password);
+ }
+
+ $objModel->setProjectInfo($projectInfo);
- //The current report title
- //$reportTitle;
-
+ $reportData_ = $objModel->getReportData($selectRequest, $whereRequest, $orderBy, $groupBy, $asc);
+ $reportDataHeader_ = $objModel->getReportDataHeader(); //Has to be after getReportData())
+
+
$newArrReportDataHeader = array();
$newArrReportData = array();
$newArrReportTitle = array();
@@ -500,7 +438,9 @@
}
}
- }
+ } else {
+ $objModel->testConnectionToActivity($protocolPrefix, $host, $port, $user, $password);
+ }
$group_id = $selectRequest['group_id'];
Modified: branches/papel-reporting/common/pm/taskReportingError.class.php
===================================================================
--- branches/papel-reporting/common/pm/taskReportingError.class.php 2010-11-03 15:39:33 UTC (rev 7060)
+++ branches/papel-reporting/common/pm/taskReportingError.class.php 2010-11-08 14:57:53 UTC (rev 7061)
@@ -1,4 +1,10 @@
<?php
+/**
+* Part of Evolvis Reporting Tool
+* Copyright © 2010
+* Patrick Apel <p.apel at tarent.de>
+* All rights reserved.
+*/
global $gfcommon;
require_once $gfcommon.'include/Error.class.php';
Modified: branches/papel-reporting/common/pm/taskReportingInfo.class.php
===================================================================
--- branches/papel-reporting/common/pm/taskReportingInfo.class.php 2010-11-03 15:39:33 UTC (rev 7060)
+++ branches/papel-reporting/common/pm/taskReportingInfo.class.php 2010-11-08 14:57:53 UTC (rev 7061)
@@ -1,9 +1,11 @@
<?php
-/** Evolvis Hudson Plugin
- *
- * @author Patrick Apel, tarent GmbH
- *
- */
+/**
+* Part of Evolvis Reporting Tool
+* Copyright © 2010
+* Patrick Apel <p.apel at tarent.de>
+* All rights reserved.
+*/
+
global $gfcommon, $gfplugins;
require_once $gfcommon.'include/Error.class.php';
require_once $gfcommon.'pm/taskReportingError.class.php';
@@ -82,7 +84,7 @@
*
*/
public function getInfoMessage() {
- if ($this->info_state) {
+ if ($this->info_state) {
return $this->info_message;
} else {
return _('No information.');
@@ -171,7 +173,7 @@
* retrieves the localized string for project not available
*/
public function setProjectNotAvailable(){
- $this->setInfo(_('There is no hudson project available for this evolvis project.'), INFO__PROJECT_NO_AVAILABLE_INFO);
+ $this->setInfo(_('There is no project available for this evolvis project.'), INFO__PROJECT_NO_AVAILABLE_INFO);
}
/**
@@ -188,7 +190,7 @@
* retrieves the localized string for insufficient configuration info
*/
public function setInsufficientConfigInfo(){
- $this->setInfo(_('The hudson configuration proberties are wrong or not exact enough.'), INFO__INSUFFICIENT_INFO);
+ $this->setInfo(_('The configuration proberties are wrong or not exact enough.'), INFO__INSUFFICIENT_INFO);
}
/**
Modified: branches/papel-reporting/common/pm/taskReportingModel.class.php
===================================================================
--- branches/papel-reporting/common/pm/taskReportingModel.class.php 2010-11-03 15:39:33 UTC (rev 7060)
+++ branches/papel-reporting/common/pm/taskReportingModel.class.php 2010-11-08 14:57:53 UTC (rev 7061)
@@ -5,6 +5,12 @@
* Patrick Apel <p.apel at tarent.de>
* All rights reserved.
*/
+
+global $gfwww, $gfcommon;
+
+require_once $gfcommon.'pm/taskReportingError.class.php';
+require_once $gfcommon.'pm/taskReportingInfo.class.php';
+
class taskReportingModel {
private $boolError = false;
@@ -16,9 +22,19 @@
private $boolRow = true;
private $reportDataHeader;
+
+ private $objReportingInfo = object;
+
+ private $strProjectInfo = '';
+
+ public function setProjectInfo($projectInfo) {
+ $this->strProjectInfo = $projectInfo;
+ }
+
+ public function getProjectInfo() {
+ return $this->strProjectInfo;
+ }
- private $objReportInfo = object;
-
public function setError($boolError) {
$this->boolError = $boolError;
}
@@ -66,64 +82,193 @@
public function getReportDataHeader() {
return $this->reportDataHeader;
}
-
- public function getHoursDoneFromActivity($selectRequest,
- $whereRequest,
- $hours_done,
- $hours_done_max,
- $hours_done_min,
- $hours_done_avg,
- $hours_done_sum) {
-
- $resultArray_ = array('','');
+
+ public function testConnectionToActivity($protocolPrefix='ssl://', $host, $port, $username, $password) {
+
+ $objReportingInfo = $this->getObjReportingInfo();
+
+ $activityProtocolPrefix = $protocolPrefix;
+
+ $fp = fsockopen($activityProtocolPrefix.$host, $port, $errno, $errstr, 3);
+
+ if($errno === 0 && !$objReportingInfo->isInsufficientConfigInfo()) {
- $hudsonProtocolPrefix = $protocolPrefix;
+ } else {
+ $objReportingInfo->setConnectionRefusedInfo(_('An error on login on Activity occurred. Hours done not available.'));
+ }
+ }
+
+ /** getActivityEvolvisProjectInfo()
+ *
+ * @param string protocol prefix - empty string or "ssl://" if ssl is used.
+ * @param string host - Activity host
+ * @param int port - Activity port
+ * @param string username
+ * @param string password
+ *
+ * @return string session id - needed in all HTTP Headers of post or get requests to get authorization and access
+ */
+ public function getActivityEvolvisProjectInfo($protocolPrefix='ssl://', $host, $port, $username, $password, $evolvisProjectId) {
+
+ $resultArray_ = array('','');
+
+ $objReportingInfo = $this->getObjReportingInfo();
+
+ $activityProtocolPrefix = $protocolPrefix;
- $fp = fsockopen($hudsonProtocolPrefix.$host, $port, $errno, $errstr);
+ $fp = fsockopen($activityProtocolPrefix.$host, $port, $errno, $errstr, 3); // 3 = Seconds of connection timeout
-
- #if($errno === 0 && !$objRefHudsonInfo->isInsufficientConfigInfo()) { // 0 = Nor error Connection
- // 111 = Connection refused
+ if($errno === 0 && !$objReportingInfo->isInsufficientConfigInfo()) { // 0 = No error Connection
- stream_set_blocking($fp, 1); // 1 = blocking mode
- // 0 = non blocking mode
+ stream_set_blocking($fp, 1); // 1 = blocking mode
+ // 0 = non blocking mode
+ $identifier = base64_encode("$username:$password");
+
+ fputs($fp, "GET /api/activities?evolvisProjectId=$evolvisProjectId HTTP/1.1\n");
+ fputs($fp, "Authorization: Basic ".$identifier." \r\n");
+ fputs($fp, "Host: $host:$port\n");
+ fputs($fp, "Content-Type: application/x-www-form-urlencoded\n\n");
- $data = "j_username=$username&j_password=$password&submit=Anmelden";
+ $result = '';
+
+ while(!feof($fp)) {
- fputs($fp, "GET /api/activities?evolvisTaskId=123 HTTP/1.1\n");
- fputs($fp, "Host: $host:$port\n");
- fputs($fp, "Content-length: ".strlen($data)."\n");
- fputs($fp, "Content-Type: application/x-www-form-urlencoded\n\n");
- fputs($fp, $data);
-
- $result = '';
- $i = 0;
- #$flag = array(false, false);
- while(!feof($fp)) {
- $result .= fread($fp, 1);
+ $result .= fgets($fp);
- #$flag = $objRefHudsonInfo->catchHTTPStatusCodeInfo($result, _('An error on login occurred.'));
- #if($flag[1]) { break; } //An error occurred
-
- if(strpos($result, "JSESSIONID=")){ $flag[0] = true; }
- if(strpos($result, ";") && $flag[0] == true) {
- break;
- }
- #$i++;
- #if($i == 1000) {break;}
- }
+ $flag = $objReportingInfo->catchHTTPStatusCodeInfo($result, _('An error occurred.'));
+
+ if($flag[1]) {
+ break;
+ }
+
+ $pos = strpos($result,']');
+ if($pos != 0) {
+ break;
+ }
+ }
- $resultArray = array();
+ $result = substr($result,strpos($result,'['),$pos);
-
fclose($fp);
- /* } else {
- $objRefHudsonInfo->setConnectionRefusedError(_('An error on login occurred.'));
- } */
-
- #return $resultArray_[0]; //JSESSIONID
- }
+ } else {
+ $objReportingInfo->setConnectionRefusedInfo(_('An error on login on Activity occurred. Hours done not available.'));
+ }
+
+ return $result;
+ }
+
+ public function getProjectTaskIdsByString($offcutSqlQuery, $params) {
+
+ //SELECT Clause
+ $sqlSelectClause = 'SELECT project_task_id';
+
+ $offcutSqlQuery_ = $sqlSelectClause . $offcutSqlQuery;
+
+ $res = db_query_params($offcutSqlQuery_, $params);
+
+ if(!$res || db_numrows($res) === 0) {
+
+ $error = db_error();
+ if(trim($error)!='') {
+ $this->setError(true);
+ $this->setErrorString($error);
+ } else {
+ $this->setInfoString(_('No row was found.'));
+ $this->setRow(false);
+ }
+
+ return false;
+ }
+
+ $arrTaskIds = array();
+ while ($arr = db_fetch_array($res)) {
+ array_push($arrTaskIds, $arr[0]);
+ }
+
+ return $arrTaskIds;
+ }
+
+
+ public function getActivityProjectHours($projectTaskIds, $projectInfo) {
+
+ $projectTask = split('},{',$projectInfo);
+
+ $arrProjectTaskInfo = array(array());
+
+ $i = 0;
+ $hours = 0;
+ foreach($projectTask as $pt) {
+
+ $projectTaskPosition = split(',',$pt);
+
+ foreach($projectTaskPosition as $pts) {
+
+ $projectTaskAttrValue = split(':',$pts);
+
+ if(strpos($projectTaskAttrValue[0],'hours') !=0) {
+
+ $hours = $projectTaskAttrValue[1];
+
+ } elseif (strpos($projectTaskAttrValue[0],'evolvisTaskId') !=0) {
+
+ $evolvisTaskId = $projectTaskAttrValue[1];
+
+ foreach($projectTaskIds as $singleProjectTaskId) {
+
+ if($evolvisTaskId == $singleProjectTaskId) {
+
+ $arrProjectTaskInfo[$i][0] = $hours;
+ $arrProjectTaskInfo[$i][1] = $evolvisTaskId;
+
+ $i++;
+ }
+ }
+ }
+ }
+ }
+
+ /* Now we got the evolvis project_task_ids but we need to sort them in the right way like
+ * the estimate hours are sorted.
+ *
+ * Do not want to rewrite the loops, so I do it with another loops.
+ * */
+
+ $i = 0;
+ $arrProjectTaskInfo_ = array(array());
+ foreach($projectTaskIds as $singleProjectTaskId) { // 1
+ // :
+ foreach($arrProjectTaskInfo as $projectTaskInfo) { // n
+
+ if($singleProjectTaskId == $projectTaskInfo[1]) {
+
+ $arrProjectTaskInfo_[0][$i] += $projectTaskInfo[0];
+ $arrProjectTaskInfo_[1][$i] = $projectTaskInfo[1];
+ }
+
+ }
+ $i++;
+ }
+
+ return $arrProjectTaskInfo_;
+ }
+
+ public function getMaxActivityHours($projectHours) {
+ return max($projectHours);
+ }
+
+ public function getMinActivityHours($projectHours) {
+ return min($projectHours);
+ }
+
+ public function getAvgActivityHours($projectHours) {
+ $avgHours = array_sum($projectHours) / count($projectHours);
+ return round($avgHours, 2);
+ }
+
+ public function getSumActivityHours($projectHours) {
+ return array_sum($projectHours);
+ }
public function getReportData($selectRequest, $whereRequest, $orderBy='', $groupBy='', $asc=0) {
@@ -144,6 +289,12 @@
$endDateCountMin = -1;
$endDateCountAvg = -1;
+ $doneHoursPos = -1;
+ $maxHoursPos = -1;
+ $minHoursPos = -1;
+ $avgHoursPos = -1;
+ $sumHoursPos = -1;
+
$countFields = 0;
//SELECT CLAUSE
$selectAllFlag = true;
@@ -171,42 +322,28 @@
if($selectRequest['status_name']){ $select.=' project_task_vw.status_name,'; array_push($arrReportHeader,_('Status name')); array_push($arrGroupBy,'project_task_vw.status_name'); $selectAllFlag = false; $onlyAggFuncFlag = false; $countFields++; }
if($selectRequest['category_id']){ $select.=' project_task_vw.category_id,'; array_push($arrReportHeader,_('Category id')); array_push($arrGroupBy,'project_task_vw.category_id'); $selectAllFlag = false; $onlyAggFuncFlag = false; $countFields++; }
if($selectRequest['category_name']){ $select.=' project_task_vw.category_name,'; array_push($arrReportHeader,_('Category name')); array_push($arrGroupBy,'project_task_vw.category_name'); $selectAllFlag = false; $onlyAggFuncFlag = false; $countFields++; }
- if($selectRequest['created_by']){$select.=' project_task_vw.created_by,'; array_push($arrReportHeader,_('Created by')); array_push($arrGroupBy,'project_task_vw.created_by'); $selectAllFlag = false; $onlyAggFuncFlag = false; $countFields++; }
- if($selectRequest['user_name']){$select.=' project_task_vw.user_name,'; array_push($arrReportHeader,_('Username')); array_push($arrGroupBy,'project_task_vw.user_name'); $selectAllFlag = false; $onlyAggFuncFlag = false; $countFields++; }
- if($selectRequest['realname']){$select.=' project_task_vw.realname,'; array_push($arrReportHeader,_('Real name')); array_push($arrGroupBy,'project_task_vw.realname'); $selectAllFlag = false; $onlyAggFuncFlag = false; $countFields++; }
- if($selectRequest['start_date']){$select.=' project_task_vw.start_date,'; array_push($arrReportHeader,_('Start date')); array_push($arrGroupBy,'project_task_vw.start_date'); $selectAllFlag = false; $onlyAggFuncFlag = false; $countFields++; $startDateCount=$countFields; }
- if($selectRequest['start_date_max']){$select.=' MAX(project_task_vw.start_date),'; array_push($arrReportHeader,_('Maximal start date')); $selectAllFlag = false; $aggFuncFlag = true; $countFields++; $startDateCountMax=$countFields; }
- if($selectRequest['start_date_min']){$select.=' MIN(project_task_vw.start_date),'; array_push($arrReportHeader,_('Minimal start date')); $selectAllFlag = false; $aggFuncFlag = true; $countFields++; $startDateCountMin=$countFields; }
- if($selectRequest['start_date_avg']){$select.=' ROUND(AVG(project_task_vw.start_date)),'; array_push($arrReportHeader,_('Average start date')); $selectAllFlag = false; $aggFuncFlag = true; $countFields++; $startDateCountAvg=$countFields; }
- if($selectRequest['end_date']){$select.=' project_task_vw.end_date,'; array_push($arrReportHeader,_('End date')); array_push($arrGroupBy,'project_task_vw.end_date'); $selectAllFlag = false; $onlyAggFuncFlag = false; $countFields++; $endDateCount=$countFields; }
- if($selectRequest['end_date_max']){$select.=' MAX(project_task_vw.end_date),'; array_push($arrReportHeader,_('Maximal end date')); $selectAllFlag = false; $aggFuncFlag = true; $countFields++; $endDateCountMax=$countFields; }
- if($selectRequest['end_date_min']){$select.=' MIN(project_task_vw.end_date),'; array_push($arrReportHeader,_('Minimal end date')); $selectAllFlag = false; $aggFuncFlag = true; $countFields++; $endDateCountMin=$countFields;}
- if($selectRequest['end_date_avg']){$select.=' ROUND(AVG(project_task_vw.end_date)),'; array_push($arrReportHeader,_('Average end date')); $selectAllFlag = false; $aggFuncFlag = true; $countFields++; $endDateCountAvg=$countFields;}
+ if($selectRequest['created_by']){ $select.=' project_task_vw.created_by,'; array_push($arrReportHeader,_('Created by')); array_push($arrGroupBy,'project_task_vw.created_by'); $selectAllFlag = false; $onlyAggFuncFlag = false; $countFields++; }
+ if($selectRequest['user_name']){ $select.=' project_task_vw.user_name,'; array_push($arrReportHeader,_('Username')); array_push($arrGroupBy,'project_task_vw.user_name'); $selectAllFlag = false; $onlyAggFuncFlag = false; $countFields++; }
+ if($selectRequest['realname']){ $select.=' project_task_vw.realname,'; array_push($arrReportHeader,_('Real name')); array_push($arrGroupBy,'project_task_vw.realname'); $selectAllFlag = false; $onlyAggFuncFlag = false; $countFields++; }
+ if($selectRequest['start_date']){ $select.=' project_task_vw.start_date,'; array_push($arrReportHeader,_('Start date')); array_push($arrGroupBy,'project_task_vw.start_date'); $selectAllFlag = false; $onlyAggFuncFlag = false; $countFields++; $startDateCount=$countFields; }
+ if($selectRequest['start_date_max']){ $select.=' MAX(project_task_vw.start_date),'; array_push($arrReportHeader,_('Maximal start date')); $selectAllFlag = false; $aggFuncFlag = true; $countFields++; $startDateCountMax=$countFields; }
+ if($selectRequest['start_date_min']){ $select.=' MIN(project_task_vw.start_date),'; array_push($arrReportHeader,_('Minimal start date')); $selectAllFlag = false; $aggFuncFlag = true; $countFields++; $startDateCountMin=$countFields; }
+ if($selectRequest['start_date_avg']){ $select.=' ROUND(AVG(project_task_vw.start_date)),'; array_push($arrReportHeader,_('Average start date')); $selectAllFlag = false; $aggFuncFlag = true; $countFields++; $startDateCountAvg=$countFields; }
+ if($selectRequest['end_date']){ $select.=' project_task_vw.end_date,'; array_push($arrReportHeader,_('End date')); array_push($arrGroupBy,'project_task_vw.end_date'); $selectAllFlag = false; $onlyAggFuncFlag = false; $countFields++; $endDateCount=$countFields; }
+ if($selectRequest['end_date_max']){ $select.=' MAX(project_task_vw.end_date),'; array_push($arrReportHeader,_('Maximal end date')); $selectAllFlag = false; $aggFuncFlag = true; $countFields++; $endDateCountMax=$countFields; }
+ if($selectRequest['end_date_min']){ $select.=' MIN(project_task_vw.end_date),'; array_push($arrReportHeader,_('Minimal end date')); $selectAllFlag = false; $aggFuncFlag = true; $countFields++; $endDateCountMin=$countFields;}
+ if($selectRequest['end_date_avg']){ $select.=' ROUND(AVG(project_task_vw.end_date)),'; array_push($arrReportHeader,_('Average end date')); $selectAllFlag = false; $aggFuncFlag = true; $countFields++; $endDateCountAvg=$countFields;}
if($selectRequest['hours']){ $select.=' project_task_vw.hours,'; array_push($arrReportHeader,_('Hours')); array_push($arrGroupBy,'project_task_vw.hours'); $selectAllFlag = false; $onlyAggFuncFlag = false; $countFields++; }
if($selectRequest['hours_max']){ $select.=' MAX(project_task_vw.hours),'; array_push($arrReportHeader,_('Maximal hours')); $selectAllFlag = false; $aggFuncFlag = true; $countFields++; }
if($selectRequest['hours_min']){ $select.=' MIN(project_task_vw.hours),'; array_push($arrReportHeader,_('Minimal hours')); $selectAllFlag = false; $aggFuncFlag = true; $countFields++; }
if($selectRequest['hours_avg']){ $select.=' ROUND(AVG(project_task_vw.hours)),'; array_push($arrReportHeader,_('Average hours')); $selectAllFlag = false; $aggFuncFlag = true; $countFields++; }
if($selectRequest['hours_sum']){ $select.=' SUM(project_task_vw.hours),'; array_push($arrReportHeader,_('Summed hours')); $selectAllFlag = false; $aggFuncFlag = true; $countFields++; }
- /* Need to get the hours from activity instead from the gforge database */
- /* if($selectRequest['hours_done'] ||
- $selectRequest['hours_done_max'] ||
- $selectRequest['hours_done_min'] ||
- $selectRequest['hours_done_avg'] ||
- $selectRequest['hours_done_sum']) {
- $hours_done = $this->getHoursDoneFromActivity($selectRequest,
- $whereRequest,
- $selectRequest['hours_done'],
- $selectRequest['hours_done_max'],
- $selectRequest['hours_done_min'],
- $selectRequest['hours_done_avg'],
- $selectRequest['hours_done_sum']);
- array_push($arrGroupBy,'project_task_vw.project_task_id');
- $selectAllFlag = false;
- if(!$selectRequest['hours_done']) {
- $aggFuncFlag = true;
- }
- } */
+ if($selectRequest['hours_done']){ array_push($arrReportHeader,_('Hours done')); $selectAllFlag = false; $countFields++; $doneHoursPos = $countFields;}
+ if($selectRequest['hours_done_max']){ array_push($arrReportHeader,_('Maximum hours done')); $selectAllFlag = false; $countFields++; $maxHoursPos = $countFields;}
+ if($selectRequest['hours_done_min']){ array_push($arrReportHeader,_('Minimum hours done')); $selectAllFlag = false; $countFields++; $minHoursPos = $countFields;}
+ if($selectRequest['hours_done_avg']){ array_push($arrReportHeader,_('Average hours done')); $selectAllFlag = false; $countFields++; $avgHoursPos = $countFields;}
+ if($selectRequest['hours_done_sum']){ array_push($arrReportHeader,_('Summed hours done')); $selectAllFlag = false; $countFields++; $sumHoursPos = $countFields;}
if($selectRequest['priority']){ $select.=' project_task_vw.priority,'; array_push($arrReportHeader,_('Priority')); array_push($arrGroupBy,'project_task_vw.priority'); $selectAllFlag = false; $onlyAggFuncFlag = false; $countFields++; }
if($selectRequest['priority_max']){ $select.=' MAX(project_task_vw.priority),'; array_push($arrReportHeader,_('Maximal priority')); $selectAllFlag = false; $aggFuncFlag = true; $countFields++; }
@@ -299,10 +436,19 @@
#_('Average percent complete'));
#_('Summed percent complete'));
);
- $startDateCount = 8;
- $endDateCount = 9;
+ $startDateCount = 8;
+ $endDateCount = 9;
}
+
+ #if(($selectRequest['hours_done'] ||
+ # $selectRequest['hours_done_max'] ||
+ # $selectRequest['hours_done_min'] ||
+ # $selectRequest['hours_done_avg'] ||
+ # $selectRequest['hours_done_sum']) && count($selectRequest)==(6-1)) { //1 is $selectRequest['group_id']
+ # $select = 'project_task_id';
+ #}
+
// FROM CLAUSE
$from = ' FROM project_task_vw'. ' ' .
'INNER JOIN project_group_list_vw'. ' ' .
@@ -355,9 +501,9 @@
}
/* $countParams++;
$where.=' GROUP BY $'.$countParams;
- array_push($params, $prefix.$groupBy);
+ array_push($params, $prefix.$groupBy);
- t does not work with placeholders and array params.
+ It does not work with placeholders and array params.
So I used the security function enabled through the method
db_query_params() in here. */
if($groupBy === 'single_group_project_id') {
@@ -435,6 +581,9 @@
$sqlQuery = $select . $from . $where;
+ $offcutSqlQuery = $from . $where;
+ $offcutSqlQuery_ = preg_replace('/, FROM/', ' FROM',$offcutSqlQuery);
+
$sqlQuery = preg_replace('/, FROM/', ' FROM', $sqlQuery);
$res = db_query_params($sqlQuery, $params);
@@ -453,12 +602,41 @@
return false;
}
- $commaSeparatedReportHeader = implode(',', $arrReportHeader);
+ $commaSeparatedReportHeader = implode('#sepColumn#', $arrReportHeader);
$this->setReportDataHeader($commaSeparatedReportHeader);
$this->setInfoString(_('The PDF file is created.'));
+
+ $arrProjectTaskIds = $this->getProjectTaskIdsByString($offcutSqlQuery_, $params);
+
+ $projectInfo = $this->getProjectInfo();
+
+ if($selectRequest['hours_done'] ||
+ $selectRequest['hours_done_max'] ||
+ $selectRequest['hours_done_min'] ||
+ $selectRequest['hours_done_avg'] ||
+ $selectRequest['hours_done_sum']) {
+ $projectHours = $this->getActivityProjectHours($arrProjectTaskIds, $projectInfo);
+ }
+ if($selectRequest['hours_done_max']) {
+ $maxHours = $this->getMaxActivityHours($projectHours[0]);
+ }
+
+ if($selectRequest['hours_done_min']) {
+ $minHours = $this->getMinActivityHours($projectHours[0]);
+ }
+
+ if($selectRequest['hours_done_avg']) {
+ $avgHours = $this->getAvgActivityHours($projectHours[0]);
+ }
+
+ if($selectRequest['hours_done_sum']) {
+ $sumHours = $this->getSumActivityHours($projectHours[0]);
+ }
+
$result = '';
+ $k = 0;
while ($arr = db_fetch_array($res)) {
if($selectAllFlag) {
@@ -479,16 +657,31 @@
$date = date(_('Y-m-d H:i'), $arr[$j]);
$result .= $date;
+ } elseif($doneHoursPos-1 == $j) {
+
+ $result .= $projectHours[0][$k];
+
+ $k++;
+ } elseif($maxHoursPos-1 == $j) {
+ $result .= $maxHours;
+ } elseif($minHoursPos-1 == $j) {
+ $result .= $minHours;
+ } elseif($avgHoursPos-1 == $j) {
+ $result .= $avgHours;
+ } elseif($sumHoursPos-1 == $j) {
+ $result .= $sumHours;
} else {
$result .= $arr[$j];
}
- if($j+1<$countFields) { $result .= ','; }
- if($j+1==$countFields) { $result .= ';'; }
+
+ if($j+1<$countFields) { $result .= '#sepColumn#'; }
+ if($j+1==$countFields) { $result .= '#sepRow#'; }
}
+
}
- $result = substr($result, 0, strlen($result)-1);
-
+ $result = substr($result, 0, strlen($result)-8);
+
return $result;
}
@@ -513,7 +706,7 @@
$arr_[$i]['group_project_id'] = $arr[0];
$arr_[$i]['project_name'] = $arr[1];
- $i++;
+ $i++;
}
return $arr_;
Modified: branches/papel-reporting/common/pm/taskReportingView.class.php
===================================================================
--- branches/papel-reporting/common/pm/taskReportingView.class.php 2010-11-03 15:39:33 UTC (rev 7060)
+++ branches/papel-reporting/common/pm/taskReportingView.class.php 2010-11-08 14:57:53 UTC (rev 7061)
@@ -126,55 +126,55 @@
return $this->submitted;
}
- public function setPdfTemplate($pdfTemplate) {
- $this->pdfTemplate = $pdfTemplate;
- }
+ public function setPdfTemplate($pdfTemplate) {
+ $this->pdfTemplate = $pdfTemplate;
+ }
- public function getPdfTemplate() {
- return $this->pdfTemplate;
- }
+ public function getPdfTemplate() {
+ return $this->pdfTemplate;
+ }
- public function setGuiTemplate($guiTemplate) {
- $this->guiTemplate = $guiTemplate;
- }
+ public function setGuiTemplate($guiTemplate) {
+ $this->guiTemplate = $guiTemplate;
+ }
+
+ public function getGuiTemplate() {
+ return $this->guiTemplate;
+ }
- public function getGuiTemplate() {
- return $this->guiTemplate;
- }
-
- public function setSubProjects($arrSubProjects) {
+ public function setSubProjects($arrSubProjects) {
$this->arrSubProjects = $arrSubProjects;
- }
+ }
- public function getSubProjects() {
- return $this->arrSubProjects;
- }
+ public function getSubProjects() {
+ return $this->arrSubProjects;
+ }
- public function setMinMaxStartEndDate($arrMinMaxStartEndDate) {
- $this->arrMinMaxStartEndDate = $arrMinMaxStartEndDate;
- }
+ public function setMinMaxStartEndDate($arrMinMaxStartEndDate) {
+ $this->arrMinMaxStartEndDate = $arrMinMaxStartEndDate;
+ }
- public function getMinMaxStartEndDate() {
- return $this->arrMinMaxStartEndDate;
- }
+ public function getMinMaxStartEndDate() {
+ return $this->arrMinMaxStartEndDate;
+ }
- public function setSelectRequest($selectRequest) {
- $this->selectRequest = $selectRequest;
- }
+ public function setSelectRequest($selectRequest) {
+ $this->selectRequest = $selectRequest;
+ }
- public function getSelectRequest() {
- return $this->selectRequest;
- }
+ public function getSelectRequest() {
+ return $this->selectRequest;
+ }
- public function setWhereRequest($whereRequest) {
- $this->whereRequest = $whereRequest;
- }
+ public function setWhereRequest($whereRequest) {
+ $this->whereRequest = $whereRequest;
+ }
- public function getWhereRequest() {
- return $this->whereRequest;
- }
+ public function getWhereRequest() {
+ return $this->whereRequest;
+ }
- public function setGroupBy($groupBy) {
+ public function setGroupBy($groupBy) {
$this->groupBy = $groupBy;
}
Modified: branches/papel-reporting/www/pm/reporting/taskCreatePdfTemplate.php
===================================================================
--- branches/papel-reporting/www/pm/reporting/taskCreatePdfTemplate.php 2010-11-03 15:39:33 UTC (rev 7060)
+++ branches/papel-reporting/www/pm/reporting/taskCreatePdfTemplate.php 2010-11-08 14:57:53 UTC (rev 7061)
@@ -80,8 +80,8 @@
$reportPDF->Ln(5);
}
- $arrReportHeader = split(',', $rowReportDataHeader[$n]); //[{Project task id},{Summary}]
- $arrLenghtPerCell1 = split(',', $arrLenghtPerCell[$n]); //[{21},{91}]
+ $arrReportHeader = split('#sepColumn#', $rowReportDataHeader[$n]); //[{Project task id},{Summary}]
+ $arrLenghtPerCell1 = split('#sepColumn#', $arrLenghtPerCell[$n]); //[{21},{91}]
for($i; $i<=(count($arrReportHeader)-1); $i++) { //Goes through the first report header (2)
@@ -117,13 +117,13 @@
for($o; $o<=$m-1;$o++) { //Goes through the reports merged
- $arrReportRow = split(';', $rowReportData[$o]);
- $arrLenghtPerCell2 = split(',', $arrLenghtPerCell[$o]);
+ $arrReportRow = split('#sepRow#', $rowReportData[$o]);
+ $arrLenghtPerCell2 = split('#sepColumn#', $arrLenghtPerCell[$o]);
for($j=0; $j<=(count($arrReportRow)-1); $j++) { /* For example 111,abc
303,def
305,abf */
- $arrReportColumn = split(',', $arrReportRow[$j]);
+ $arrReportColumn = split('#sepColumn#', $arrReportRow[$j]);
$l=$k;
for ($l; $l<$i; $l++) { /* For example 111,303,305
@@ -164,12 +164,12 @@
$arrColumnSize = array();
foreach($arrReportDataHeader as $dataHeader) {
- $singleDataHeader = split(',',$dataHeader);
+ $singleDataHeader = split('#sepColumn#',$dataHeader);
$j=count($singleDataHeader);
$data = $arrReportData[$h];
- $singleReportData = split(';',$data);
+ $singleReportData = split('#sepRow#',$data);
$k=count($singleReportData);
$lenghtPerCell = '';
@@ -181,7 +181,7 @@
for($l=0; $l<$k; $l++) {
$singleReportDataRow = $singleReportData[$l];
- $arrReportDataColumn = split(',',$singleReportDataRow);
+ $arrReportDataColumn = split('#sepColumn#',$singleReportDataRow);
$lenghtColumn = strlen($arrReportDataColumn[$i]);
@@ -201,7 +201,7 @@
$maximalLettersPerCell = $lettersInCellFontSizeOne / $fontSize;
$letterSizeInCellQuotient = $lenghtTotal / $maximalLettersPerCell;
- $lenghtPerCell .= ceil(($lenghtHolder * $letterSizeInCellQuotient)). ',';
+ $lenghtPerCell .= ceil(($lenghtHolder * $letterSizeInCellQuotient)). '#sepColumn#';
}
if($i > 0) {
Modified: branches/papel-reporting/www/pm/reporting/taskCreateReportGui.php
===================================================================
--- branches/papel-reporting/www/pm/reporting/taskCreateReportGui.php 2010-11-03 15:39:33 UTC (rev 7060)
+++ branches/papel-reporting/www/pm/reporting/taskCreateReportGui.php 2010-11-08 14:57:53 UTC (rev 7061)
@@ -48,13 +48,13 @@
$h = 0;
foreach($reportDataHeader as $dataHeader) {
- $arrReportDataHeader = split(',',$dataHeader);
+ $arrReportDataHeader = split('#sepColumn#',$dataHeader);
$j=count($arrReportDataHeader);
$data = $reportData[$h];
- $arrReportData = split(';',$data);
- $k=count($arrReportData);
+ $arrReportData = split('#sepRow#',$data);
+ $k=count($arrReportData);
echo '<div class="reportGuiFieldsDivLeft reportGuiFieldsDivLeftColor" style="width:100%">';
echo '<div class="reportGuiTxtDivHeaderLeft" style="border:0px; width:100%">';
@@ -79,7 +79,7 @@
for($l=0; $l<$k; $l++) {
$singleRow = $arrReportData[$l];
- $arrReportDataColumn = split(',',$singleRow);
+ $arrReportDataColumn = split('#sepColumn#',$singleRow);
echo '<div class="reportGuiTxtView">';
echo '<div class="reportGuiViewHeader">';
echo $arrReportDataColumn[$i];
@@ -959,7 +959,7 @@
<option value="start_date" <?php if($orderBy === 'start_date') echo 'selected="selected"'; ?>><?php echo _('Start date')?></option>
<option value="end_date" <?php if($orderBy === 'end_date') echo 'selected="selected"'; ?>><?php echo _('End date')?></option>
<option value="hours" <?php if($orderBy === 'hours') echo 'selected="selected"'; ?>><?php echo _('Hours')?></option>
- <option value="hours_done" <?php if($orderBy === 'hours_done') echo 'selected="selected"'; ?>><?php echo _('Hours done')?></option>
+
<option value="priority" <?php if($orderBy === 'priority') echo 'selected="selected"'; ?>><?php echo _('Priority')?></option>
<option value="percent_complete" <?php if($orderBy === 'percent_complete') echo 'selected="selected"'; ?>><?php echo _('Percent complete')?></option>
<option value="group_id" <?php if($orderBy === 'group_id') echo 'selected="selected"'; ?>><?php echo _('Group id')?></option>
@@ -1002,7 +1002,7 @@
<option value="start_date" <?php if($groupBy === 'start_date') echo 'selected="selected"'; ?>><?php echo _('Start date')?></option>
<option value="end_date" <?php if($groupBy === 'end_date') echo 'selected="selected"'; ?>><?php echo _('End date')?></option>
<option value="hours" <?php if($groupBy === 'hours') echo 'selected="selected"'; ?>><?php echo _('Hours')?></option>
- <option value="hours_done" <?php if($groupBy === 'hours_done') echo 'selected="selected"'; ?>><?php echo _('Hours done')?></option>
+
<option value="priority" <?php if($groupBy === 'priority') echo 'selected="selected"'; ?>><?php echo _('Priority')?></option>
<option value="percent_complete" <?php if($groupBy === 'percent_complete') echo 'selected="selected"'; ?>><?php echo _('Percent complete')?></option>
<option value="group_id" <?php if($groupBy === 'group_id') echo 'selected="selected"'; ?>><?php echo _('Group id')?></option>
@@ -1165,7 +1165,7 @@
}
echo '<div class="reportGuiDivParts">';
echo '';
- echo $HTML->boxTop(_('PDF Downloads'));
+ echo $HTML->boxTop(_('PDF Download'));
echo $HTML->boxBottom();
echo '';
echo '<div class="reportGuiFieldsDiv">';
More information about the evolvis-commits
mailing list