/** * * @global type $logger * @param Project $project * @param type $odtTemplate * @param type $userid * @param type $session_userid */ function genProjectODT(Project $project, $odtTemplate, $session_userid, $userid = 0) { global $logger; $logger->debug("genProjectODT(): project " . $project->getName() . " template {$odtTemplate} user {$userid}"); $odf = new odf($odtTemplate); try { $odf->setVars('today', date('Y-m-d')); } catch (Exception $e) { } try { $odf->setVars('selectionName', $project->getName()); } catch (Exception $e) { } try { $session_user = UserCache::getInstance()->getUser($session_userid); $odf->setVars('sessionUser', $session_user->getRealname()); } catch (Exception $e) { } $isHideResolved = true; $issueList = $project->getIssues($userid, $isHideResolved); if ($logger->isDebugEnabled()) { $logger->debug("nb issues = " . count($issueList)); } $q_id = 0; $issueSegment = $odf->setSegment('issueSelection'); if ($logger->isDebugEnabled()) { $logger->debug('XML=' . $issueSegment->getXml()); } foreach ($issueList as $issue) { $q_id += 1; if (0 == $issue->getHandlerId()) { $userName = T_('unknown'); } else { $user = UserCache::getInstance()->getUser($issue->getHandlerId()); $userName = utf8_decode($user->getRealname()); if (empty($userName)) { $userName = "******" . $issue->getHandlerId(); } } if ($logger->isDebugEnabled()) { $logger->debug("issue " . $issue->getId() . ": handlerName = " . $userName); } if (0 == $issue->getReporterId()) { $reporterName = T_('unknown'); } else { $reporter = UserCache::getInstance()->getUser($issue->getReporterId()); $reporterName = utf8_decode($reporter->getRealname()); if (empty($reporterName)) { $reporterName = "user_" . $issue->getReporterId(); } } if ($logger->isDebugEnabled()) { $logger->debug("issue " . $issue->getId() . ": reporterName = " . $reporterName); } // add issue try { $issueSegment->setVars('q_id', $q_id); } catch (Exception $e) { $logger->error("EXCEPTION " . $e->getMessage()); $logger->error("EXCEPTION stack-trace:\n" . $e->getTraceAsString()); } try { $issueSegment->setVars('bugId', $issue->getId()); } catch (Exception $e) { $logger->error("EXCEPTION " . $e->getMessage()); $logger->error("EXCEPTION stack-trace:\n" . $e->getTraceAsString()); } try { $issueSegment->setVars('summary', utf8_decode($issue->getSummary())); } catch (Exception $e) { $logger->error("EXCEPTION " . $e->getMessage()); $logger->error("EXCEPTION stack-trace:\n" . $e->getTraceAsString()); } try { $issueSegment->setVars('dateSubmission', date('d/m/Y', $issue->getDateSubmission())); } catch (Exception $e) { $logger->error("EXCEPTION " . $e->getMessage()); $logger->error("EXCEPTION stack-trace:\n" . $e->getTraceAsString()); } try { $timestamp = $issue->getDeadLine(); $deadline = 0 == $timestamp ? '' : date('d/m/Y', $issue->getDeadLine()); $issueSegment->setVars('deadline', $deadline); } catch (Exception $e) { $logger->error("EXCEPTION " . $e->getMessage()); $logger->error("EXCEPTION stack-trace:\n" . $e->getTraceAsString()); } try { $issueSegment->setVars('currentStatus', Constants::$statusNames[$issue->getCurrentStatus()]); } catch (Exception $e) { $logger->error("EXCEPTION " . $e->getMessage()); $logger->error("EXCEPTION stack-trace:\n" . $e->getTraceAsString()); } try { $issueSegment->setVars('handlerId', $userName); } catch (Exception $e) { $logger->error("EXCEPTION " . $e->getMessage()); $logger->error("EXCEPTION stack-trace:\n" . $e->getTraceAsString()); } try { $issueSegment->setVars('reporterId', $reporterName); } catch (Exception $e) { $logger->error("EXCEPTION " . $e->getMessage()); $logger->error("EXCEPTION stack-trace:\n" . $e->getTraceAsString()); } try { $issueSegment->setVars('reporterName', $reporterName); } catch (Exception $e) { $logger->error("EXCEPTION " . $e->getMessage()); $logger->error("EXCEPTION stack-trace:\n" . $e->getTraceAsString()); } try { $issueSegment->setVars('description', utf8_decode($issue->getDescription())); } catch (Exception $e) { $logger->error("EXCEPTION " . $e->getMessage()); $logger->error("EXCEPTION stack-trace:\n" . $e->getTraceAsString()); } try { $issueSegment->setVars('category', $issue->getCategoryName()); } catch (Exception $e) { $logger->error("EXCEPTION " . $e->getMessage()); $logger->error("EXCEPTION stack-trace:\n" . $e->getTraceAsString()); } try { $issueSegment->setVars('severity', $issue->getSeverityName()); } catch (Exception $e) { $logger->error("EXCEPTION " . $e->getMessage()); $logger->error("EXCEPTION stack-trace:\n" . $e->getTraceAsString()); } try { $issueSegment->setVars('status', Constants::$statusNames[$issue->getStatus()]); } catch (Exception $e) { $logger->error("EXCEPTION " . $e->getMessage()); $logger->error("EXCEPTION stack-trace:\n" . $e->getTraceAsString()); } try { $issueSegment->setVars('extId', $issue->getTcId()); } catch (Exception $e) { $logger->error("EXCEPTION " . $e->getMessage()); $logger->error("EXCEPTION stack-trace:\n" . $e->getTraceAsString()); } // add issueNotes $issueNotes = $issue->getIssueNoteList(); $noteId = 0; foreach ($issueNotes as $id => $issueNote) { $noteId += 1; if ($logger->isDebugEnabled()) { $logger->debug("issue " . $issue->getId() . ": note {$id} = {$issueNote->note}"); } $noteReporter = UserCache::getInstance()->getUser($issueNote->reporter_id); try { $noteReporterName = utf8_decode($noteReporter->getRealname()); } catch (Exception $e) { } try { $issueSegment->bugnotes->noteId($noteId); } catch (Exception $e) { } try { $issueSegment->bugnotes->noteReporter($noteReporterName); } catch (Exception $e) { } try { $issueSegment->bugnotes->noteDateSubmission(date('d/m/Y', $issueNote->date_submitted)); } catch (Exception $e) { } try { $issueSegment->bugnotes->note(utf8_decode($issueNote->note)); } catch (Exception $e) { } try { $issueSegment->bugnotes->merge(); } catch (Exception $e) { } } $issueSegment->merge(); } $odf->mergeSegment($issueSegment); // INFO: the following line is MANDATORY and fixes the following error: // "wrong .odt file encoding" //ob_end_clean(); //$odf->exportAsAttachedFile(); $myFile = Constants::$codevOutputDir . '/reports/odtphp_test_' . time() . '.odt'; if ($logger->isDebugEnabled()) { $logger->debug("save odt file " . $myFile); } $odf->saveToDisk($myFile); echo "<br>"; echo "<br>"; echo "<span style='padding-left: 3em'><a tatget='blank' href='../include/download.php?f=" . basename($myFile) . "'>" . basename($myFile) . "</a></span>"; }