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  
 
 
        
       |