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);
$pdf->SetTextColorArray(getColor('SDI_ITEM_COLOR'));
$pdf->SetTextColorArray(getColor('DOC_COLOR'));
$pdf->SetFillColorArray(getColor('BCKG_INFO'));
$pdf->SetTextColorArray(getColor('SDI_INFO_COLOR'));
$pdf->MultiCell(0,DOC_HEIGHT+ 2,' '. $libelle,0,'L',1, 1, '', '', true, 0, false, true, DOC_HEIGHT+ 2, 'M');
$pdf->SetTextColorArray(getColor('DOC_COLOR'));
$pdf->SetTextColorArray(getColor('DOC_COLOR'));
* Affiche les infos générales d'un IDD
* @param int $current_record
$out_title = formatText($current_record['sdii_name']);
$pdf->SetTextColorArray(getColor('SDI_TITLE_COLOR'));
if ($current_record['sdii_statut'] == 'D') {
$pdf->SetTextColorArray(getColor('DOC_ADVISE_COLOR'));
$out_status = ' / ' . strtolower($lang['statut']['draftpdf']);
$pdf->SetTextColorArray(getColor('DOC_COLOR'));
// si non attaché au tableau de bord
if ($current_record['sdii_to_dashboard'] == 'N') {
$pdf->SetTextColorArray(getColor('DOC_ADVISE_COLOR'));
$out_attached_to_dashboard = ' (' . strtolower($lang['sdi']['not_attached_to_dashboard']. ')');
$pdf->Write(DOC_HEIGHT, $out_attached_to_dashboard);
$pdf->SetTextColorArray(getColor('DOC_COLOR'));
$out_theme = formatText('» ' . $lang['sdi']['theme'] . ' : ' . $current_record['theme_name'] . ' (' . $current_record['sdtheme_name'] . ')') . END_LINE;
$pdf->SetTextColorArray(getColor('SDI_TITLE_COLOR'));
$pdf->SetTextColorArray(getColor('DOC_COLOR'));
$pdf->Bookmark(mb_ucfirst($lang['sdi']['description']), 1, - 1);
$pdf->MultiCell(0, DOC_HEIGHT, $out_desc, 0, 'L');
$pdf->Bookmark($out_goal_item, 1, - 1);
$pdf->MultiCell(0, DOC_HEIGHT, $out_goal, 0, 'L');
// conseil d'amélioration
$pdf->Bookmark($out_consulting_item, 1, - 1);
$pdf->MultiCell(0, DOC_HEIGHT, $out_consulting, 0, 'L');
// 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, 1, - 1);
* Dessine le tableau des valeurs IDD
<table cellspacing="0" cellpadding="5" border="1" nobr="true">
<td>'. mb_ucfirst($lang['sdi']['max_value']). '</td>
<td>'. mb_ucfirst($lang['sdi']['min_value']). '</td>
<td>'. mb_ucfirst($lang['sdi']['initial_threshold_value']). '</td>
<td>'. mb_ucfirst($lang['sdi']['frequency']). '</td>
<td>'. empty_nc($current_record['sdii_max_value']). '</td>
<td>'. empty_nc($current_record['sdii_min_value']). '</td>
<td>'. empty_nc($current_record['sdii_threshold_value']). '</td>
<td>'. $current_record['sdii_frequency']. '</td>
$pdf->writeHTML($tbl, true, false, false, false, '');
* 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']);
$pdf->Bookmark($out_provider_item, 1, - 1);
$pdf->SetX($pdf->GetX() + $firstcell_width);
$pdf->MultiCell(0, DOC_HEIGHT, $out_name, 0, 'L');
$pdf->SetX($pdf->GetX() + $firstcell_width);
$pdf->MultiCell(0, DOC_HEIGHT, $out_adress, 0, 'L');
$pdf->SetX($pdf->GetX() + $firstcell_width);
$pdf->MultiCell(0, DOC_HEIGHT, $out_phone_fax, 0, 'L');
$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, 'L', 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 = mb_ucfirst($lang['sdi']['r_title']) . ' : ';
$out_body_item = mb_ucfirst($lang['sdi']['r_body']) . ' : ';
$out_uri_item = mb_ucfirst($lang['sdi']['r_referer_uri']) . ' : ';
$pdf->Bookmark($out_reglementation_item, 1, - 1);
// nom de l'organisme fournisseur
$pdf->Cell($firstcell_width, DOC_HEIGHT, $out_name_item, 0, 0, 'R');
$pdf->MultiCell(0, DOC_HEIGHT, $out_name, 0, 'L');
$pdf->Cell($firstcell_width, DOC_HEIGHT, $out_body_item, 0, 0, 'R');
$pdf->MultiCell(0, DOC_HEIGHT, $out_body, 0, 'L');
// 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
$pdf->Bookmark($out_eval_item, 1, - 1);
<table cellspacing="0" cellpadding="5" border="1" nobr="true">
<td>'. mb_ucfirst($lang['sdi']['e_scale_compare']). '</td>
<td>'. mb_ucfirst($lang['sdi']['e_fiability']). '</td>
<td>'. mb_ucfirst($lang['sdi']['e_accessibility']). '</td>
<td>'. mb_ucfirst($lang['sdi']['e_lisibility']). '</td>
<td>'. mb_ucfirst($lang['sdi']['e_relevance']). '</td>
<td>'. mb_ucfirst($lang['sdi']['e_global_performance']). '</td>
<td>'. $current_record['sdie_scale_compare']. '</td>
<td>'. $current_record['sdie_fiability']. '</td>
<td>'. $current_record['sdie_accessibility']. '</td>
<td>'. $current_record['sdie_lisibility']. '</td>
<td>'. $current_record['sdie_relevance']. '</td>
<td>'. $current_record['sdie_global_performance']. '</td>
$pdf->writeHTML($tbl, true, false, false, false, '');
* Affiche les valeurs d'un IDD.
global $scale_denomination_array;
if(count($scale_array) == 0) return true;
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 = mb_ucfirst($lang['dashboard']['value']);
$pdf->Bookmark($out_values_item, 1, - 1);
$scale_no_values = array(); // recipient no values
$scale_insuffisant_values = array(); // recipient insuffisant values graph
for($i = 0; $i < count($scale_array); $i++ ) {
// we print chart if asked
if ($report_settings['graphic_values'] === true) {
// we print values if asked
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 soustrait 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->SetTextColorArray(getColor('DOC_ADVISE_COLOR'));
$pdf->SetX($pdf->GetX() + $margin);
$pdf->SetTextColorArray(getColor('DOC_COLOR'));
* Gènère et affiche les valeurs sous forme graphique
* @param int $current_scale
global $scale_denomination_array;
include_once(override('../dashboard/graph.php'));
$values = $sql_object->DBSelect(SQL_getAllValue($status, $current_scale, $sdi_id));
// // renversement des valeurs pour affichage chronologique
// if(is_array($values)) $values = @array_reverse ($values, false);
// $result_sdii = $sql_object->DBSelect(SQL_getInfoSdi($sdi_id));
if (count($values) < 3) return false;
generateGraphic($sdi_id, $current_scale, $status, 'auto', false, '../tmp/report');
// /////////////////////////////
// définition du positionnement
$out_scale_item = $scale_denomination_array[$current_scale];
//$pdf->Bookmark($out_scale_item, 2, -1);
$pdf->Image('../tmp/report/'. $sdi_id. '_'. $current_scale. '.png', $_x, $_y, GRAPH_WIDTH * 0.30, GRAPH_HEIGHT * 0.30);
// on place le curseur en bas du graphique
* Affiche un tableau de valeurs a une échelle donnée
* @param int $current_scale
global $scale_denomination_array;
// setting $default_threshold value
// By default initial value
$default_threshold = $result_sdii[0]['sdii_threshold_value'];
$sdi_values = $sql_object->DBSelect(SQL_getAllValue($status, $current_scale, $sdi_id));
if (count($sdi_values) <= 1 && $sdi_values[0] == false) return false;
// we prepare values for displaying
for($i = 0; $i < count($sdi_values); $i++ ) {
$current_value = formatText($sdi_values[$i]['sdiv_value']);
// if set, we get it from the table
if(!is_null($sdi_values[$i]['sdiv_threshold'])) {
$threshold = $sdi_values[$i]['sdiv_threshold'];
$threshold = $default_threshold;
if ($sdi_values[$i]['sdiv_statut'] == 'D') $current_value .= ' *';
if (!empty($sdi_values[$i]['sdiv_comment'])) {
if($sdi_values[$i]['sdiv_comment_display']== 'Y') {
$comment_status = _t('dashboard', 'public');
$comment_status = _t('dashboard', 'private');
$comments = formatText(strip_tags($sdi_values[$i]['sdiv_comment'])) . ' ('. $comment_status. ')<br />';
$current_date = formatText($sdi_values[$i]['date_p']);
<td class="center">'. $current_value. '</td>
<td class="center">'. $threshold. '</td>
<td class="center">'. $current_date. '</td>
<td class="comment">'. $comments. '</td>
border-bottom:1px solid #000;
<table cellspacing="0" cellpadding="5">
<td>'. mb_ucfirst($lang['dashboard']['name_pluriel']). '</td>
<td>'. mb_ucfirst($lang['dashboard']['threshold_value']). '</td>
<td>'. mb_ucfirst($lang['statut']['published_on']). '</td>
<td class="comment">'. mb_ucfirst($lang['sdi']['comment']). '</td>
// Affichage du titre seulement si affichage des valeurs en standalone
// ou si la génération des graphiques est infaisables car moins de 3 valeurs
if ($mode != 'TWICE' || (count($sdi_values) >= 1 && count($sdi_values) < 3)) {
$out_scale_item = $scale_denomination_array[$current_scale];
//$pdf->Bookmark($out_scale_item, 2, -1);
$pdf->writeHTML($tbl, true, false, false, false, '');
// Affichage de l'astérisque - avertissement
|