Source for file class.sdi.php
Documentation is available at class.sdi.php 
 * @package linea21.modules  
 * @author linea21 <info@linea21.com>  
 * @license http://opensource.org/licenses/gpl-3.0.html  
 *  SDI (Sustainable Development Indicators) Management  
  // nom des tables utilisées dans l'objet.  
  // variables utilisées pour caractéristiques principales d'un IDD  
  // variables utilisées pour critères d'évaluation d'un ID  
  // variables utilisées pour organisme fournisseur d'un IDD  
  // variables utilisées pour réglementation d'un IDD  
  // variables utilisées pour valeur d'un IDD  
   * sdi::CheckDataIntegrity_value()  
   * Vérification d'une valeur d'un indicateur  
   * @param array $table contient les composants d'un indicateur  
   * @return boolean si vrai renvoie true sinon message d'erreurs (string)  
    $notvalue =  _t('dashboard','object_notvalue');  
    $notgoodvalue =  _t('dashboard','object_notgoodvalue');  
    if($result[0]['sdii_max_value'] <  $result[0]['sdii_min_value']) {  
      if ($table[0] >  $result[0]['sdii_min_value'] ||   $table[0] <  $result[0]['sdii_max_value']) return $notgoodvalue;  
      if($table[0] <  $result[0]['sdii_min_value'] ||  $table[0] >  $result[0]['sdii_max_value']) return $notgoodvalue;  
   * sdi::CheckDataIntegrity_info()  
   * Vérification des données générales d'un indicateur  
   * @param array $table contient les composants d'un indicateur  
   * @return boolean si vrai renvoie true sinon message d'erreurs (string)  
    $notname =  _t('sdi','object_notname');  
    $notdescription =  _t('sdi','object_notdescription');  
    $nottheme =  _t('sdi','object_nottheme');  
    //$notrange = _t('sdi','object_notrange');  
    $notunit =  _t('sdi','object_notunit');  
    $notmax_value =  _t('sdi','object_notmax_value');  
    $notmin_value =  _t('sdi','object_notmin_value');  
    $notthreshold_value =  _t('sdi','object_notthreshold_value');  
    $notfrequency =  _t('sdi','object_notfrequency');  
    if (strlen($table[0]) <  2) return $notname;  
    if (strlen($table[1]) <  2) return $notdescription;  
    if ($table[3] <=  0 ||  !is_numeric($table[3])) return $nottheme;  
    $table[7]= trim($table[7]);  
    if (empty($table[7])) return $notunit;  
    if (!is_numeric($table[10])) return $notthreshold_value;  
    if (!is_numeric($table[11])) return $notfrequency;  
   * sdi::CheckDataIntegrity_eval()  
   * Vérification des données d'évaluation d'un indicateur  
   * @param array $table contient les composants évaluation d'un indicateur  
   * @return boolean si vrai renvoie true sinon message d'erreurs (string)  
    $note_scale_compare =  _t('sdi','object_note_scale_compare');  
    $note_fiability =  _t('sdi','object_note_fiability');  
    $note_accessibility =  _t('sdi','object_note_accessibility');  
    $note_lisibility =  _t('sdi','object_note_lisibility');  
    $note_relevance =  _t('sdi','object_note_relevance');  
    $note_global_performance =  _t('sdi','object_note_global_performance');  
    if (!is_numeric($table[13])) return $note_scale_compare;  
    if (!is_numeric($table[14])) return $note_fiability;  
    if (!is_numeric($table[15])) return $note_accessibility;  
    if (!is_numeric($table[16])) return $note_lisibility;  
    if (!is_numeric($table[17])) return $note_relevance;  
    if (!is_numeric($table[18])) return $note_global_performance;  
   * sdi::CheckDataIntegrity_provider()  
   * Vérification des données d'un fournisseur d'un indicateur  
   * @param array $table contient les composants évaluation d'un indicateur  
   * @return boolean si vrai renvoie true sinon message d'erreurs (string)  
    $notp_name =  _t('sdi','object_notp_name');  
    $notp_address =  _t('sdi','object_notp_address');  
    $notp_phone =  _t('sdi','object_notp_phone');  
    $notp_fax =  _t('sdi','object_notp_fax');  
    $notp_mail =  _t('sdi','object_notp_mail');  
    if (strlen($table[19]) <  2) return $notp_name;  
    if (strlen($table[23]) <  2) return $notp_address;  
    if (trim($table[24]) !=  '' &&  !is_numeric($table[24])) return $notp_phone;  
    if (trim($table[25]) !=  '' &&  !is_numeric($table[25])) return $notp_fax;  
    $testmail =  $this->_checkEmailValidity($table[26]);  
    if ($testmail !=  1) return $notp_mail;  
   * sdi::_checkEmailValidity()  
   * @param string $email contient les composants d'un mail  
   * @return boolean si vrai renvoie true sinon message d'erreurs (string)  
  function _checkEmailValidity($email)  
    if (strlen($email) <  6 ||  !ereg("@", $email) ||  preg_match_all("/([^a-zA-Z0-9_\@\.\-])/i", $email, $trouve) ||  !preg_match("/^([a-z0-9_]|\\-|\\.)+@(([a-z0-9_]|\\-)+\\.)+[a-z]{2,4}\$/i", $email)) {  
   * sdi::CheckDataIntegrity_reglementation()  
   * Vérification des données de réglementation d'un indicateur  
   * @param array $table contient les composants réglementation d'un indicateur  
   * @return boolean si vrai renvoie true sinon message d'erreurs (string)  
    $notr_title =  _t('sdi','object_notr_title');  
    $notr_body =  _t('sdi','object_notr_body');  
    if (strlen($table[27]) <  2) return $notr_title;  
    if (strlen($table[28]) <  2) return $notr_body;  
    if(CHECK_LINK== true &&  !empty($table[29])) {  
   * resources::CheckOnlineFile()  
   * vérifie l'existence d'un fichier en ligne  
    $file_pt =  @fopen($path, 'r');  
    if (!$file_pt) return false;  
   * Ajout d'un nouveau fournisseur d'un IDD  
   * @param object $sql_object   
   * @return integer $last_id  
  function _AddProvider($sql_object)  
    $requete =  "INSERT INTO " .  $this->TDB_SDI_PROVIDER .  " (sdip_name, sdip_service, sdip_description, sdip_incharge, sdip_address, sdip_phone, sdip_fax, sdip_email, sdip_date_crea) VALUES ('','','', '', '', '', '', '',NOW());";  
    $last_id =  $sql_object->DBInsert ($requete, 1);  
   * Ajout de critères d'évaluation d'un IDD  
   * @param object $sql_object   
   * @return integer $last_id  
  function _AddEvaluation ($sql_object)  
    $requete =  "INSERT INTO " .  $this->TDB_SDI_EVAL .  " (sdie_scale_compare, sdie_fiability, sdie_accessibility, sdie_lisibility, sdie_relevance, sdie_global_performance, sdie_date_crea)VALUES (DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT,NOW());";  
    $last_id =  $sql_object->DBInsert ($requete, 1);  
   * Ajout d'une réglementation d'un IDD  
   * @param object $sql_object   
   * @return integer $last_id  
  function _AddRules($sql_object)  
    $requete =  "INSERT INTO " .  $this->TDB_SDI_RULES .  " (sdir_title, sdir_body, sdir_referer_uri, sdir_mask_uri, sdir_date_crea) VALUES ('', '', '', '', NOW());";  
    $last_id =  $sql_object->DBInsert ($requete, 1);  
   * @param array $table_sdi_info contient les infos detaillees d'un IDD  
   * @param object $sql_object   
   * @return integer $last_id  
  function AddSdi($table_sdi_info, $sql_object)  
    $table_sdi_info= $sql_object->DBescape($table_sdi_info);  
    $this->I_THEME =  $table_sdi_info[3];  
    $this->I_RANGE =  $table_sdi_info[4];  
    $this->I_PROVIDER =  $this->_AddProvider($sql_object);  
    $requete =  "INSERT INTO " .  $this->TDB_SDI_INFO .  " (sdii_name, sdii_description, sdii_comment, sdii_theme, sdii_range, sdii_goal,  
        sdii_consulting, sdii_unit, sdii_max_value, sdii_min_value, sdii_threshold_value, sdii_threshold_relative, sdii_frequency, sdii_provider, sdii_evaluation,  
        sdii_reglementation, sdii_statut, sdii_date_crea) VALUES ('" .  $this->I_NAME .  "', '" .  $this->I_DESCRIPTION .  "', '"  
        $result =  $sql_object->DBInsert ($requete, 1);  
   * @param array $table_sdi_value contient les composants d'une valeur d'un IDD  
   * @param object $sql_object   
   * @return integer $last_id  
  function AddValue($table_sdi_value, $sql_object)  
    $table_sdi_value= $sql_object->DBescape($table_sdi_value);  
    $this->V_VALUE =  $table_sdi_value[0];  
    $this->V_SCALE =  $table_sdi_value[2];  
    $requete =  "INSERT INTO " .  $this->TDB_SDI_VALUE .  " (sdiv_value, sdiv_sdi_info, sdiv_scale, sdiv_date_published, sdiv_statut, sdiv_date_crea)  
        $last_id =  $sql_object->DBInsert ($requete, 1);  
   * @param int $ID identifiant de l'IDD  
   * @param object $sql_object   
   * @param array $table_sdi_info contient les composants d'un IDD  
  function ModifySdi($ID, $table_sdi_info, $sql_object)  
    $table_sdi_info= $sql_object->DBescape($table_sdi_info);  
    $this->I_THEME =  $table_sdi_info[3];  
    $this->I_RANGE =  $table_sdi_info[4];  
    $requete =  "UPDATE " .  $this->TDB_SDI_INFO .  " SET sdii_name='" .  $this->I_NAME .  "', sdii_description='"  
    .  $this->I_STATUT .  "', sdii_last_modify= NOW() 
        WHERE sdii_id=" .  $this->I_ID .  ";";  
    $result =  $sql_object->DBQuery ($requete);  
   * récupération des clés d'un ID  
   * @param int $id_id identifiant de l'IDD  
   * @param object $sql_object   
   * @return array $table_key  
  function _GetKeysSdi($sdi_id, $sql_object)  
    $requete =  "SELECT sdii_provider, sdii_evaluation, sdii_reglementation  
        WHERE sdii_id=" .  $this->I_ID .  ";";  
    $result =  $sql_object->DBSelect($requete);  
   * modification des paramètres d'un IDD en fonction de son sdii_id  
   * @param int $ID identifiant de l'IDD  
   * @param array $tableparam contient les composants d'un IDD  
   * @param string $param paramètre passé :  
   * @param object $sql_object   
  function ModifyParam($ID, $tableparam, $param, $sql_object)  
        $data =  $this->_GetKeysSdi($ID, $sql_object);  
        $id_e =  $data[0]['sdii_evaluation'];  
        $result =  $this->_ModifyEvaluation($id_e, $tableparam, $sql_object);  
        $data =  $this->_GetKeysSdi($ID, $sql_object);  
        $id_p =  $data[0]['sdii_provider'];  
        $result =  $this->_ModifyProvider($id_p, $tableparam, $sql_object);  
        $data =  $this->_GetKeysSdi($ID, $sql_object);  
        $id_r =  $data[0]['sdii_reglementation'];  
        $result =  $this->_ModifyRules($id_r, $tableparam, $sql_object);  
   * @param int $id identifiant de l'IDD a supprimer  
   * @param object $sql_object   
    $result =  $this->StateSdi($ID, $state, $sql_object);  
    $requete =  "UPDATE " .  $this->TDB_SDI_VALUE .  " SET sdiv_statut='" .  $state .  "' WHERE sdiv_sdi_info=" .  $ID .  ";";  
    $result2 =  $sql_object->DBQuery ($requete);  
   * sdi::_ModifyEvaluation()  
   * modification d'une évaluation IDD  
   * @param int $ID identifiant de l'évaluation  
   * @param object $sql_object   
   * @param array $table_sdi_eval contient les composants d'un IDD  
  function _ModifyEvaluation($ID, $table_sdi_eval, $sql_object)  
    $table_sdi_eval= $sql_object->DBescape($table_sdi_eval);  
    $requete =  "UPDATE " .  $this->TDB_SDI_EVAL .  " SET sdie_scale_compare='" .  $this->E_SCALE .  "', sdie_fiability='"  
        WHERE sdie_id=" .  $this->E_ID .  ";";  
    $result =  $sql_object->DBQuery ($requete);  
   * modification d'un fournisseur IDD  
   * @param int $ID identifiant du fournisseur  
   * @param object $sql_object   
   * @param array $table_sdi_provider contient les composants d'un fournisseur  
  function _ModifyProvider ($ID, $table_sdi_provider, $sql_object)  
    $table_sdi_provider= $sql_object->DBescape($table_sdi_provider);  
    .  $this->P_PHONE .  "', sdip_fax='" .  $this->P_FAX .  "', sdip_email='" 
    .  $this->P_EMAIL .  "', sdip_last_modify = NOW() 
        WHERE sdip_id='" .  $this->P_ID .  "';";  
    $result =  $sql_object->DBQuery ($requete);  
   * modification d'une réglementation  
   * @param int $ID identifiant d'une réglementation  
   * @param object $sql_object   
   * @param array $table_sdi_rules contient les composants d'une réglementation  
  function _ModifyRules ($ID, $table_sdi_rules, $sql_object)  
    $table_sdi_rules= $sql_object->DBescape($table_sdi_rules);  
    $requete =  "UPDATE " .  $this->TDB_SDI_RULES .  " SET sdir_title= '" .  $this->R_TITLE .  "', sdir_body='"  
    .  $this->R_MASK_URI .  "',  sdir_last_modify = NOW() 
        WHERE sdir_id='" .  $this->R_ID .  "';";  
    $result =  $sql_object->DBQuery ($requete);  
   * modification d'une valeur  
   * @param int $ID identifiant d'une valeur  
   * @param object $sql_object   
   * @param array $table_sdi_value contient les composants d'une valeur  
  function ModifyValue ($ID, $table_sdi_value, $sql_object)  
    $table_sdi_value= $sql_object->DBescape($table_sdi_value);  
    $this->V_VALUE =  $table_sdi_value[0];  
    $this->V_SCALE =  $table_sdi_value[2];  
    $requete =  "UPDATE " .  $this->TDB_SDI_VALUE .  " SET sdiv_value=" .  $this->V_VALUE .  ", sdiv_sdi_info="  
        WHERE sdiv_id=" .  $this->V_ID .  ";";  
    $result =  $sql_object->DBQuery ($requete);  
   * modification simple du rang d'un IDD  
   * @param int $ID identifiant de l'IDD  
   * @param object $sql_object   
   * @param int $range contient la valeur du rang à modifier  
        WHERE sdii_id='" .  $this->I_ID .  "';";  
    $result =  $sql_object->DBQuery ($requete);  
   * modification simple du statut d'un IDD  
   * @param int $ID identifiant de l'IDD  
   * @param object $sql_object   
   * @param string $state contient la valeur du statut à modifier  
  function StateSdi ($ID, $state, $sql_object)  
    $requete =  "UPDATE " .  $this->TDB_SDI_INFO .  " SET sdii_statut='" .  $state .  "' WHERE sdii_id=" .  $this->ID .  ";";  
    $result =  $sql_object->DBQuery ($requete);  
   * modification simple du statut d'une valeur d'un IDD  
   * @param int $id identifiant de l'IDD  
   * @param object $sql_object   
   * @param string $state contient la valeur du statut à modifier  
    $requete =  "UPDATE " .  $this->TDB_SDI_VALUE .  " SET sdiv_statut='" .  $state .  "' WHERE sdiv_id=" .  $this->ID .  ";";  
    $result =  $sql_object->DBQuery ($requete);  
   * suppression  d'une valeur d'un IDD  
   * @param int $id identifiant de la valeur a supprimer  
   * @param object $sql_object   
    $result =  $this->StateValue($ID, $state, $sql_object);  
    if(SQL== 'mysql') $datefunction= "DATE_FORMAT";  
    if(SQL== 'pgsql') $datefunction= "to_char";  
    $requete =  "SELECT II.sdii_id, II.sdii_name, II.sdii_description, II.sdii_comment, T.theme_name, II.sdii_theme,  
        II.sdii_range, II.sdii_goal, II.sdii_consulting, II.sdii_unit, II.sdii_max_value, II.sdii_min_value,  
        II.sdii_threshold_value, II.sdii_threshold_relative, II.sdii_frequency, II.sdii_provider, IP.sdip_name, II.sdii_evaluation, II.sdii_reglementation,  
        " .  $datefunction .  "(II.sdii_date_crea, '" .  toStringSqlDate() .  "' ) AS date_c, II.sdii_statut              
        FROM " .  $this->TDB_SDI_INFO .  " AS II LEFT OUTER JOIN theme as T on II.sdii_theme=T.theme_id   
        LEFT OUTER JOIN sdi_provider as IP on II.sdii_provider=IP.sdip_id";  
    $requete .=  " WHERE II.sdii_id=" .  $id .  ";";  
    $result =  $sql_object->DBSelect ($requete);  
 
 
        
       |