public function majCompte($compte, $nip) { $dbMgr = DbManager::getInstance(); //Instancier le gestionnaire $db = $dbMgr->getConn('game'); //Demander la connexion existante if (empty($compte)) { //MAJ numero de compte et nip -> vider les informations. $query = 'UPDATE ' . DB_PREFIX . 'item_inv' . ' SET inv_nocompte="",' . ' inv_nobanque="",' . ' inv_nip=""' . ' WHERE inv_id=:id' . ' LIMIT 1;'; $prep = $db->prepare($query); $prep->bindValue(':id', $this->getInvId(), PDO::PARAM_INT); $prep->execute($db, __FILE__, __LINE__); $prep->closeCursor(); $prep = NULL; return true; } //Valider le découpage du numéro $occ = preg_match('/([0-9]{4})-([0-9]{4})-([0-9]{4})-([0-9]{4})/', $compte); if ($occ == 0) { throw new Exception('Le # de compte doit être au format XXXX-XXXX-XXXX-XXXX.'); return false; } $compte_exp = explode("-", $compte); $nobanque = $compte_exp[0]; $nocompte = $compte_exp[1] . '-' . $compte_exp[2] . '-' . $compte_exp[3]; //recup des info sur le compte du téléphone et sur le contenu de la partie compte du téléphone $query = 'SELECT *' . ' FROM ' . DB_PREFIX . 'banque_comptes' . ' LEFT JOIN ' . DB_PREFIX . 'banque ON (banque_no=compte_banque)' . ' WHERE compte_compte=:compte' . ' AND compte_banque=:banque' . ' LIMIT 1;'; $prep = $db->prepare($query); $prep->bindValue(':compte', $nocompte, PDO::PARAM_STR); $prep->bindValue(':banque', $nobanque, PDO::PARAM_STR); $prep->execute($db, __FILE__, __LINE__); $arrCompteTel = $prep->fetch(); $prep->closeCursor(); $prep = NULL; $compteTel = new Member_BanqueCompte($arrCompteTel); $banque = new Member_Banque($arrCompteTel); if ($banque->getSupportTelephone() != 1) { throw new Exception('Ce compte n\'est pas celui d\'une agence téléphonique.'); return false; } if (empty($nip) && $this->getNip() != NULL) { if ($compteTel->getNip() != $this->getNip()) { throw new Exception('Le nip précédemment sauvegardé ne correspond pas.'); return false; } $query = 'UPDATE ' . DB_PREFIX . 'item_inv' . ' SET inv_nocompte=:compte,' . ' inv_nobanque=:banque' . ' WHERE inv_id=:id' . ' LIMIT 1;'; $prep = $db->prepare($query); $prep->bindValue(':compte', $nocompte, PDO::PARAM_STR); $prep->bindValue(':banque', $nobanque, PDO::PARAM_STR); $prep->bindValue(':id', $this->getInvId(), PDO::PARAM_INT); $prep->execute($db, __FILE__, __LINE__); $prep->closeCursor(); $prep = NULL; } else { if (!is_numeric($nip)) { throw new Exception('Ce NIP n\'est pas numérique.'); return false; } if ($compteTel->getNip() != $nip) { throw new Exception('Le nip ne correspond pas.'); return false; } //MAJ numero de compte et nip $query = 'UPDATE ' . DB_PREFIX . 'item_inv' . ' SET inv_nocompte=:compte,' . ' inv_nobanque=:banque,' . ' inv_nip=:nip' . ' WHERE inv_id=:id' . ' LIMIT 1;'; $prep = $db->prepare($query); $prep->bindValue(':compte', $nocompte, PDO::PARAM_STR); $prep->bindValue(':banque', $nobanque, PDO::PARAM_STR); $prep->bindValue(':nip', $nip, PDO::PARAM_INT); $prep->bindValue(':id', $this->getInvId(), PDO::PARAM_INT); $prep->execute($db, __FILE__, __LINE__); $prep->closeCursor(); $prep = NULL; } return true; }