Source for file pdf.report.inc.php
Documentation is available at pdf.report.inc.php
* @author linea21 <info@linea21.com>
* @license http://opensource.org/licenses/gpl-3.0.html
* Define, compose and generate a SDI (Sustainable Development Indicators) PDF report
* Affiche un IDD + infos satellites
if ($report_settings['summary'] === true) $pdf->SetLink($pointer+ 1);
* Affiche les infos générales d'un IDD
* @param int $current_record
$pdf->SetColor('SDI_TITLE_COLOR');
if ($current_record['sdii_statut'] == 'D') {
$pdf->SetColor('DOC_ADVISE_COLOR');
$out_status = ' :: ' . strtolower($lang['statut']['draftpdf']);
$pdf->SetColor('DOC_COLOR');
$out_theme = formatText('> > ' . $lang['sdi']['theme'] . ' : ' . $current_record['theme_name'] . ' (' . $current_record['sdtheme_name'] . ')') . END_LINE;
$pdf->SetColor('SDI_TITLE_COLOR');
$pdf->SetColor('DOC_COLOR'); // ré-initialise la couleur de police
$pdf->Bookmark($lang['sdi']['description'], 1, - 1);
$pdf->Bookmark($out_goal_item, 2, - 1);
$pdf->FormatSdiItem($out_goal_item);
// conseil d'amélioration
$pdf->Bookmark($out_consulting_item, 2, - 1);
$pdf->FormatSdiItem($out_consulting_item);
// informations de mesure
$out_mesures_behavior = ($current_record['sdii_threshold_relative'] == 'Y' ? $lang['sdi']['threshold_relative_Y']: $lang['sdi']['threshold_relative_N']);
$out_mesures_unit = formatText($lang['sdi']['unit']) . ' : ' . $current_record['sdii_unit'] . END_LINE;
$pdf->Bookmark($out_mesures_item, 2, - 1);
$pdf->FormatSdiItem($out_mesures_item);
* Dessine le tableau des valeurs IDD
// initialisation 6 cellules
$pdf->Row(array($lang['sdi']['max_value'], $lang['sdi']['min_value'], $lang['sdi']['threshold_value'], $lang['sdi']['frequency']));
$pdf->Row(array($current_record['sdii_max_value'], $current_record['sdii_min_value'], $current_record['sdii_threshold_value'], $current_record['sdii_frequency']));
* Affiche les informations Fournisseurs d'un IDD
$out_name = formatText($current_record['sdip_name']);
if (!empty($current_record['sdip_service'])) $out_name .= ' - ' . formatText($current_record['sdip_service']);
if (!empty($current_record['sdip_incharge'])) $out_name .= ' - ' . formatText($current_record['sdip_incharge']) . ' (' . $lang['sdi']['p_incharge'] . ')';
$out_phone_fax = $lang['sdi']['p_phone'] . ' : ' . formatText(empty_nc($current_record['sdip_phone']));
$out_email_item = $lang['sdi']['p_email'] . ' : ';
$out_email = formatText($current_record['sdip_email']);
$out_provider_item = formatText($lang['sdi']['p_title']) ;
$pdf->Bookmark($out_provider_item, 1, - 1);
$pdf->FormatSdiInfo($out_provider_item);
$pdf->SetX($pdf->GetX() + $firstcell_width);
$pdf->SetX($pdf->GetX() + $firstcell_width);
$pdf->SetX($pdf->GetX() + $firstcell_width);
$pdf->SetX($pdf->GetX() + $firstcell_width);
$pdf->Cell($pdf->GetStringWidth($out_email_item), DOC_HEIGHT, $out_email_item);
else $pdf->Cell(0, DOC_HEIGHT, $out_email, 0, 0, '', 0, 'mailto:' . $out_email);
* DisplayReglementationInfo()
* Affiche la réglementation d'un IDD
$out_uri = formatText($current_record['sdir_mask_uri']);
$out_uri_href = $current_record['sdir_referer_uri'];
$out_name_item = $lang['sdi']['r_title'] . ' : ';
$out_body_item = $lang['sdi']['r_body'] . ' : ';
$out_uri_item = $lang['sdi']['r_referer_uri'] . ' : ';
$out_reglementation_item = formatText($lang['sdi']['add_step4']) ;
$pdf->Bookmark($out_reglementation_item, 1, - 1);
$pdf->FormatSdiInfo($out_reglementation_item);
// nom de l'organisme fournisseur
$pdf->Cell($firstcell_width, DOC_HEIGHT, $out_name_item, 0, 0, 'R');
$pdf->Cell($firstcell_width, DOC_HEIGHT, $out_body_item, 0, 0, 'R');
// lien internet reglementation
$pdf->Cell($firstcell_width, DOC_HEIGHT, $out_uri_item, 0, 0, 'R');
if (!empty($out_uri_href)) {
if (!empty($out_uri)) $pdf->Cell(0, DOC_HEIGHT, $out_uri, 0, 0, '', 0, $out_uri_href);
//if (!empty($out_uri)) $pdf->Cell(0, DOC_HEIGHT, ' (', 0, 0);
//$pdf->Cell(0, DOC_HEIGHT, $out_uri, 0, 0, '', 0, $out_uri_href);
//if (!empty($out_uri)) $pdf->Cell(0, DOC_HEIGHT, ')', 0, 0);
* DisplayEvaluationInfo()
* Affiche le tableau de critères d'évaluation
* @param int $current_record
$out_eval_item = formatText($lang['sdi']['e_title']) ;
$pdf->Bookmark($out_eval_item, 1, - 1);
$pdf->FormatSdiInfo($out_eval_item);
$cell_width = (integer) 190 / 6;
$pdf->Row(array($lang['sdi']['e_scale_compare'], $lang['sdi']['e_fiability'], $lang['sdi']['e_accessibility'], $lang['sdi']['e_lisibility'], $lang['sdi']['e_relevance'], $lang['sdi']['e_global_performance']));
$pdf->Row(array($current_record['sdie_scale_compare'], $current_record['sdie_fiability'], $current_record['sdie_accessibility'], $current_record['sdie_lisibility'], $current_record['sdie_relevance'], $current_record['sdie_global_performance']));
* Affiche les valeurs d'un IDD.
if ($report_settings['graphic_values'] === true && $report_settings['table_values'] === true) $mode = 'TWICE';
elseif ($report_settings['graphic_values'] === true || $report_settings['table_values'] === true) $mode = 'ONE';
$out_values_item = $lang['dashboard']['value'];
$pdf->Bookmark($out_values_item, 1, - 1);
$pdf->FormatSdiInfo($out_values_item);
$scale_no_values = array(); // recipient no values
$scale_insuffisant_values = array(); // recipient insuffisant values graph
for($i = 0; $i < count($scale_array); $i++ ) {
if ($report_settings['graphic_values'] === true) {
if ($report_settings['table_values'] === true) {
DisplayNoValuesFor($scale_insuffisant_values, $lang['dashboard']['rap_insuffisant_values'], $mode, $scale_no_values);
* Formattage du statut pour requête SQL
* @param string $current_status
switch ($current_status) {
* Affiche les échelles ne contenant pas de valeurs ou insuffisamment
* @param array $array_scale
global $scale_denomination_array;
// si mode TWICE et deuxi�me tableau fourni. On le soustriat au premier.
if (count($array_scale) == 0) return true;
for($i = 0; $i < count($array_scale); $i++ ) {
$content .= $sep . $scale_denomination_array[$array_scale[$i]];
if (empty($content)) return true;
$pdf->SetX($pdf->GetX() + $margin);
$pdf->SetColor('DOC_ADVISE_COLOR');
$pdf->SetX($pdf->GetX() + $margin);
$pdf->SetColor('DOC_COLOR');
* Gènère et affiche les valeurs sous forme graphique
* @param int $current_scale
global $scale_denomination_array;
$values = $sql_object->DBSelect(SQL_getAllValue($status, $current_scale, $sdi_id));
// renversement des valeurs pour affichage chronologique
if (count($values) < 3) return false;
// on checke si le graph tient sur la page sinon Saut de page
// Affichage du titre seulement si $values>= 3
$out_scale_item = $scale_denomination_array[$current_scale];
$pdf->Bookmark($out_scale_item, 2, - 1);
$pdf->FormatSdiItem($out_scale_item);
// stockage de l'ordonnée initiale
// positionnement en fonction du mode.
if ($mode == 'TWICE') $_x = 94;
require_once "../class/system/artichow/BarPlot.class.php";
require_once "../class/system/artichow/LinePlot.class.php";
$unit = $result_sdii[0]['sdii_unit'];
for ($i = 0; $i < count($values); $i++ ) {
$ydata[$i] = $values[$i]['sdiv_value'];
$ydata2[$i] = $result_sdii[0]['sdii_threshold_value'];
list ($day, $month, $year)= explode('-', $values[$i]['date_p']);
$months[$i] = $day . '-' . $month. '-'. substr($year, 2, 2);
$graph->setAntiAliasing(TRUE);
$graph->border->setColor(new Color(133, 133, 133, 50));
$group->setSpace(5, 5, 5, 0);
$group->setBackgroundColor(
$group->grid->hideVertical();
$group->grid->setColor(new Color(0, 0, 0, 80));
$group->setPadding(40, 15, 20, 50);
$bplot = new BarPlot($ydata);
//$bplot->setSpace(4, 4, 4, 0);
//$bplot->setPadding(15, 15, 5, 50);
new Color(207, 228, 252, 0),
new Color(146, 174, 206, 0),
$group->axis->left->title->set($unit);
$group->axis->left->title->setFont(new Tuffy(10));
$group->axis->left->title->move(- 4, 0);
$group->axis->left->setTitleAlignment(LABEL_TOP);
$bplot->label->border->setColor(new Color(20, 20, 20, 20));
$bplot->label->setPadding(3, 1, 1, 0);
$bplot->barBorder->setColor(new Color(161, 182, 206, 0));
$group->axis->bottom->setLabelText($months);
$group->axis->bottom->label->setAngle(55);
$group->axis->bottom->label->setFont(new Tuffy(7));
$plot->setFillColor(new Color(254, 148, 64, 50));
$plot->setColor(new Color(254, 148, 64, 0));
$plot->mark->setFill(new Color(246, 149, 55, 20));
$plot->mark->border->show();
$plot->mark->border->setColor(new Color(254, 148, 64, 0));
$graph->draw('tmp/'. $sdi_id. '_'. $current_scale. '.png');
// /////////////////////////////
$pdf->Image('tmp/'. $sdi_id. '_'. $current_scale. '.png', $_x, $_y, 0, 0);
// conversion px -> mm + replacement en ordonnée
if ($mode == 'TWICE') $pdf->SetY($_y);
else $pdf->SetY($_y + (GRAPH_HEIGHT * 0.36)); //$pdf->SetY($_y + (GRAPH_HEIGHT * 0.36) + DOC_INTERVAL);
* Affiche un tableau de valeurs a une échelle donnée
* @param int $current_scale
global $scale_denomination_array;
$sdi_values = $sql_object->DBSelect(SQL_getAllValue($status, $current_scale, $sdi_id));
if (count($sdi_values) <= 1 && $sdi_values[0] == false) return false;
if ($mode != 'TWICE' || (count($sdi_values) >= 1 && count($sdi_values) < 3)) {
// Affichage du titre seulement si affichage des valeurs en standalone
$out_scale_item = $scale_denomination_array[$current_scale];
$pdf->Bookmark($out_scale_item, 2, - 1);
$pdf->FormatSdiItem($out_scale_item);
if ($mode == 'TWICE') $_margin = 20;
$pdf->Row(array($lang['dashboard']['name_pluriel'], $lang['statut']['published_on']));
for($i = 0; $i < count($sdi_values); $i++ ) {
$current_value = formatText($sdi_values[$i]['sdiv_value']);
if ($sdi_values[$i]['sdiv_statut'] == 'D') $current_value .= ' *';
$current_date = formatText($sdi_values[$i]['date_p']);
$pdf->Row(array($current_value, $current_date));
// conversion px -> mm + replacement en ordonnées
|