Esempio n. 1
0
 function update_empr($empr_cb = '', $empr_id = 0, $fields)
 {
     global $dbh, $lang;
     global $msg;
     global $charset;
     global $pmb_num_carte_auto, $deflt2docs_location, $pmb_gestion_abonnement, $pmb_gestion_financiere;
     object_to_array($fields);
     $empr_cb = $this->clean_field((string) $empr_cb);
     $empr_id += 0;
     if (!$empr_id && $empr_cb == '') {
         return $this->build_error("idempr et empr_cb vide.");
     }
     if ($empr_id) {
         $where = " id_empr = {$empr_id} ";
     } else {
         $where = " empr_cb = '" . addslashes($empr_cb) . "' ";
     }
     $sql = "SELECT id_empr, empr_cb FROM empr WHERE {$where}";
     $res = pmb_mysql_query($sql);
     if (!$res || !pmb_mysql_num_rows($res)) {
         return $this->build_error("Lecteur inconnu: 'empr_cb' = {$empr_cb} ou id_empr = {$empr_id} .");
     }
     $empr_res = pmb_mysql_fetch_object($res);
     $empr_id = $empr_res->id_empr;
     // clean des entrées
     $fields = $this->clean_fields($fields);
     /*
     		$fields['nom']=$this->clean_field($fields['nom']);
     		$fields['prenom']=$this->clean_field($fields['prenom']);
     		$fields['adr1']=$this->clean_field($fields['adr1']);
     		$fields['adr2']=$this->clean_field($fields['adr2']);
     		$fields['cp']=$this->clean_field($fields['cp']);
     		$fields['ville']=$this->clean_field($fields['ville']);
     		$fields['pays']=$this->clean_field($fields['pays']);
     		$fields['mail']=$this->clean_field($fields['mail']);
     		$fields['tel1']=$this->clean_field($fields['tel1']);
     		$fields['sms']=$this->clean_field($fields['sms'])+0;
     		$fields['tel2']=$this->clean_field($fields['tel2']);
     		$fields['prof']=$this->clean_field($fields['prof']);
     		$fields['birth']=$this->clean_field($fields['birth']);
     		$fields['sexe']=$this->clean_field($fields['sexe'])+0;
     		$fields['login']=$this->clean_field($fields['login']);
     		$fields['pwd']=$this->clean_field($fields['pwd']);
     		$fields['msg']=$this->clean_field($fields['msg']);
     		$fields['lang']=$this->clean_field($fields['lang']);
     		$fields['location']=$this->clean_field($fields['location']+0);
     		$fields['date_adhesion']=$this->clean_field($fields['date_adhesion']);
     		$fields['date_expiration']=$this->clean_field($fields['date_expiration']);
     		$fields['categ']=$this->clean_field($fields['categ'])+0;
     		$fields['statut']=$this->clean_field($fields['statut']+0);
     		$fields['lang']=$this->clean_field($fields['lang']);
     		$fields['cstat']=$this->clean_field($fields['cstat'])+0;
     		$fields['type_abt']=$this->clean_field($fields['type_abt']+0);
     		$fields['ldap']=$this->clean_field($fields['ldap'])+0;*/
     $fields['sexe'] += 0;
     $fields['location'] += 0;
     $fields['categ'] += 0;
     $fields['statut'] += 0;
     $fields['lang'] += 0;
     $fields['cstat'] += 0;
     $fields['type_abt'] += 0;
     $fields['ldap'] += 0;
     // vérification des champs obligatoires
     if (!$fields['nom']) {
         return $this->build_error("Le champ 'nom' n'est pas renseigne.");
     }
     if (!$fields['categ']) {
         return $this->build_error("Le champ 'categ' n'est pas renseigne.");
     }
     if (!$fields['statut']) {
         return $this->build_error("Le champ 'statut' n'est pas renseigne.");
     }
     if (!$fields['cstat']) {
         return $this->build_error("Le champ 'cstat' n'est pas renseigne.");
     }
     // vérification des relations
     $q = "select idstatut from empr_statut where idstatut='" . $fields['statut'] . "' limit 1";
     $r = pmb_mysql_query($q, $dbh);
     if (!pmb_mysql_num_rows($r)) {
         return $this->build_error("Le champ 'statut' = " . $fields['statut'] . " n'est pas un Id present dans la base de donnee.");
     }
     $q = "select idcode from empr_codestat where idcode='" . $fields['cstat'] . "' limit 1";
     $r = pmb_mysql_query($q, $dbh);
     if (!pmb_mysql_num_rows($r)) {
         return $this->build_error("Le champ 'cstat' = " . $fields['cstat'] . " n'est pas un Id present dans la base de donnee.");
     }
     $q = "select id_categ_empr from empr_categ where id_categ_empr='" . $fields['categ'] . "' limit 1";
     $r = pmb_mysql_query($q, $dbh);
     if (!pmb_mysql_num_rows($r)) {
         return $this->build_error("Le champ 'categ' = " . $fields['categ'] . " n'est pas un Id present dans la base de donnee.");
     }
     if ($fields['location']) {
         $q = "select idlocation from docs_location where idlocation='" . $fields['location'] . "' limit 1";
         $r = pmb_mysql_query($q, $dbh);
         if (!pmb_mysql_num_rows($r)) {
             $fields['location'] = 0;
         }
     }
     if (!$fields['location']) {
         $loca = pmb_mysql_query("select min(idlocation) as idlocation from docs_location", $dbh);
         $locaid = pmb_mysql_fetch_object($loca);
         $fields['location'] = $locaid->idlocation;
     }
     if ($fields['mail']) {
         if (!filter_var($fields['mail'], FILTER_VALIDATE_EMAIL)) {
             return $this->build_error("Le champ 'mail' = " . $fields['mail'] . " n'est pas un mail valide.");
         }
     }
     if (!$fields['sexe']) {
         $fields['sexe'] = 0;
     }
     if (!$fields['lang']) {
         $fields['lang'] = $lang;
     }
     $requete = "UPDATE empr SET ";
     $requete .= "empr_nom='" . addslashes($fields['nom']) . "', ";
     $requete .= "empr_prenom='" . addslashes($fields['prenom']) . "', ";
     $requete .= "empr_adr1='" . addslashes($fields['adr1']) . "', ";
     $requete .= "empr_adr2='" . addslashes($fields['adr2']) . "', ";
     $requete .= "empr_cp='" . addslashes($fields['cp']) . "', ";
     $requete .= "empr_ville='" . addslashes($fields['ville']) . "', ";
     $requete .= "empr_pays='" . addslashes($fields['pays']) . "', ";
     $requete .= "empr_mail='" . addslashes($fields['mail']) . "', ";
     $requete .= "empr_tel1='" . addslashes($fields['tel1']) . "', ";
     $requete .= "empr_sms='" . addslashes($fields['sms']) . "', ";
     $requete .= "empr_tel2='" . addslashes($fields['tel2']) . "', ";
     $requete .= "empr_prof='" . addslashes($fields['prof']) . "', ";
     $requete .= "empr_year='" . addslashes($fields['birth']) . "', ";
     $requete .= "empr_categ='" . $fields['categ'] . "', ";
     $requete .= "empr_statut='" . $fields['statut'] . "', ";
     $requete .= "empr_lang='" . addslashes($fields['lang']) . "', ";
     if ($fields['date_adhesion'] == "") {
         $requete .= "empr_date_adhesion=CURRENT_DATE(), ";
     } else {
         $requete .= "empr_date_adhesion='" . addslashes($fields['date_adhesion']) . "', ";
     }
     if ($fields['date_expiration'] == "" or $fields['date_expiration'] == $fields['date_adhesion']) {
         /* AJOUTER ICI LE CALCUL EN FONCTION DE LA CATEGORIE */
         $rqt_empr_categ = "select duree_adhesion from empr_categ where id_categ_empr = " . $fields['categ'] . " ";
         $res_empr_categ = pmb_mysql_query($rqt_empr_categ, $dbh);
         $empr_categ = pmb_mysql_fetch_object($res_empr_categ);
         if ($fields['date_adhesion']) {
             $rqt_date = "select date_add('" . addslashes($fields['date_adhesion']) . "', INTERVAL " . $empr_categ->duree_adhesion . " DAY) as date_expiration ";
         } else {
             $rqt_date = "select date_add(CURRENT_DATE(), INTERVAL " . $empr_categ->duree_adhesion . " DAY) as date_expiration ";
         }
         $resultatdate = pmb_mysql_query($rqt_date);
         $resdate = pmb_mysql_fetch_object($resultatdate);
         $requete .= "empr_date_expiration='" . $resdate->date_expiration . "', ";
     } else {
         $requete .= "empr_date_expiration='" . $fields['date_expiration'] . "', ";
     }
     $requete .= "empr_codestat=" . $fields['cstat'] . ", ";
     $requete .= "empr_modif=CURRENT_DATE(), ";
     $requete .= "empr_sexe='" . $fields['sexe'] . "', ";
     $requete .= "empr_msg='" . addslashes($fields['msg']) . "', ";
     $requete .= "empr_login='******'login']) . "', ";
     $requete .= "empr_location='" . $fields['location'] . "', ";
     // ldap - MaxMan
     if ($fields['ldap']) {
         $requete .= "empr_ldap='1', ";
         $fields['pwd'] = "";
     } else {
         $requete .= "empr_ldap='0', ";
     }
     //Gestion financière
     if ($pmb_gestion_abonnement == 2 && $pmb_gestion_financiere) {
         $requete .= "type_abt='" . $fields['type_abt'] . "', ";
     } else {
         $requete .= "type_abt=0, ";
     }
     if ($fields['pwd'] != "") {
         $requete .= "empr_password='******'pwd']) . "' ";
     } else {
         $requete .= "empr_password='******'birth']) . "' ";
     }
     $requete .= " WHERE id_empr=" . $empr_id . " limit 1";
     $res = pmb_mysql_query($requete, $dbh);
     if (!$res) {
         return $this->build_error("Impossible de modifier le lecteur: {$requete}");
     }
     if ($fields['pwd'] != "") {
         emprunteur::update_digest($fields['login'], $fields['pwd']);
         emprunteur::hash_password($fields['login'], $fields['pwd']);
     } else {
         emprunteur::update_digest($fields['login'], $fields['birth']);
         emprunteur::hash_password($fields['login'], $fields['birth']);
     }
     if (is_array($fields['pperso_list'])) {
         $p_perso = new parametres_perso("empr");
         foreach ($fields['pperso_list'] as $pp) {
             $name = $pp["name"];
             global ${$name};
             ${$name} = $pp["value_list"];
         }
         $p_perso->rec_fields_perso($empr_id);
     }
     if (is_array($fields['groupe_list'])) {
         emprunteur::rec_groupe_empr($empr_id, $fields['groupe_list']);
     }
     emprunteur::ins_lect_categ_dsi($empr_id, $fields['categ'], 0);
     if ($pmb_gestion_financiere && $pmb_gestion_abonnement) {
         emprunteur::rec_abonnement($empr_id, $type_abt, $fields['categ']);
     }
     return $this->build_ok();
 }