Example #1
0
File: odt.php Project: fg-ok/codev
/**
 *
 * @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>";
}