public static function generatePage(&$tpl, &$session, &$account, &$mj) { $dbMgr = DbManager::getInstance(); //Instancier le gestionnaire $db = $dbMgr->getConn('game'); //Demander la connexion existante //Trouver toutes les banques et le nombre de compte ainsi que le solde des comptes $query = 'SELECT b.*, COUNT(c.compte_id) as comptes, SUM(compte_cash) as capital' . ' FROM ' . DB_PREFIX . 'banque as b' . ' LEFT JOIN ' . DB_PREFIX . 'banque_comptes as c ON (c.compte_banque = b.banque_no)' . ' GROUP BY c.compte_banque;'; $prep = $db->prepare($query); $prep->execute($db, __FILE__, __LINE__); $arrAll = $prep->fetchAll(); $prep->closeCursor(); $prep = NULL; if (count($arrAll) > 0) { //Lister toutes les banques du jeu $arrBanque = array(); foreach ($arrAll as &$arr) { $arr['capital'] = fctCreditFormat($arr['capital'], true); $arrBanque[] = $arr; } $tpl->set('BANQUES', $arrBanque); } //Retourner le template complété/rempli return $tpl->fetch($account->getSkinRemotePhysicalPath() . 'html/Mj/Lieu/Banque.htm', __FILE__, __LINE__); }
public static function generatePage(&$tpl, &$session, &$account, &$mj) { $dbMgr = DbManager::getInstance(); //Instancier le gestionnaire $db = $dbMgr->getConn('game'); //Demander la connexion existante if (isset($_POST['save'])) { try { self::save($mj); } catch (Exception $e) { return fctErrorMSG($e->getMessage()); } header('location:?mj=index'); } //query pour avoir les infos de la personne $query = 'SELECT *' . ' FROM ' . DB_PREFIX . 'account' . ' WHERE id=:id' . ' LIMIT 1;'; $prep = $db->prepare($query); $prep->bindValue(':id', $_GET['id'], PDO::PARAM_INT); $prep->executePlus($db, __FILE__, __LINE__); $ACC = $prep->fetch(); $prep->closeCursor(); $prep = NULL; //envoie des infos à l'autre page (tpl) + developpement de la requête + transformation des timestamp if ($ACC !== false) { $ACC['date_inscr'] = date('d/m/Y H \\h i', $ACC['date_inscr']); //transformation du timstamp $ACC['last_conn'] = date('d/m/Y H \\h i', $ACC['last_conn']); //idem $tpl->set('ACC', $ACC); //envoie des infos général if ($ACC['mp'] != '0') { //transformation du temps pour l'expiration du membre plus $date_mp = array('jour' => date('d', $ACC['mp_expiration']), 'mois' => date('m', $ACC['mp_expiration']), 'annee' => date('Y', $ACC['mp_expiration'])); } else { $date_mp = array('jour' => date('d'), 'mois' => date('m'), 'annee' => date('Y')); } //envoie de l'array $tpl->set('date_mp', $date_mp); //transformation du temps pour l'heure de remise $remise_initiale = array('annee' => date('Y', $ACC['remise']), 'mois' => date('m', $ACC['remise']), 'jour' => date('d', $ACC['remise']), 'heure' => date('H', $ACC['remise']), 'minute' => date('i', $ACC['remise'])); //envoie de l'array $tpl->set('remise_initiale', $remise_initiale); } //affichage des persos du compte : $query = 'SELECT *' . ' FROM ' . DB_PREFIX . 'perso' . ' WHERE userId=:userId;'; $prep = $db->prepare($query); $prep->bindValue(':userId', $ACC['id'], PDO::PARAM_INT); $prep->executePlus($db, __FILE__, __LINE__); $info_pj = $prep->fetchAll(); $prep->closeCursor(); $prep = NULL; foreach ($info_pj as &$arr) { $arr['cash'] = fctCreditFormat($arr['cash'], true); } //envoie des infos à l'autre page (tpl) $tpl->set('PERSOS', $info_pj); $tpl->set('ACCESS_ADMIN', $mj->accessAdmin()); return $tpl->fetch($account->getSkinRemotePhysicalPath() . 'html/Mj/Compte/Modifier.htm'); }
public static function generatePage(&$tpl, &$session, &$account, &$perso) { $dbMgr = DbManager::getInstance(); //Instancier le gestionnaire $db = $dbMgr->getConn('game'); //Demander la connexion existante //BUT: Démarrer un template propre à cette page $errorUrl = '?popup=1&m=Action_Perso_Donnercash'; //Déclaration des variables pour cette action $pacost = 2; //PA par item //Vérifier l'état du perso if (!$perso->isConscient()) { return fctErrorMSG('Votre n\'êtes pas en état d\'effectuer cette action.', $errorUrl); } //Créer le template if ($perso->getPa() <= $pacost) { return fctErrorMSG('Vous n\'avez pas assez de PA.', $errorUrl); } //Cash spécifié ? if (!isset($_POST['cash'])) { return fctErrorMSG('Aucun montant.', $errorUrl); } //Vérifier la validité du montant if (!is_numeric($_POST['cash']) || $_POST['cash'] < 1) { return fctErrorMSG('Montant invalide', $errorUrl); } if ($_POST['cash'] > $perso->getCash()) { return fctErrorMSG('Vous ne pouvez pas transférer plus que vous possédez.', $errorUrl); } //Vérifier si un perso a bien été sélectionné if (!is_numeric($_POST['toPersoId'])) { return fctErrorMSG('Vous n\'avez pas sélectionné de destinataire.', $errorUrl); } //Vérifier si le perso à qui donner l'argent est présent dans le bon lieu $found = false; $i = 0; while ($toPerso = $perso->getLieu()->getPerso($perso, $i++)) { if ($toPerso->getId() == $_POST['toPersoId']) { $found = true; break; } } if (!$found) { return fctErrorMSG('Ce personnage n\'est pas dans le lieu ou vous vous trouvez actuellement.', $errorUrl); } //Tranférer l'item du perso actuel vers l'autre perso. $perso->changePa('-', $pacost); $perso->setPa(); $perso->changeCash('-', $_POST['cash']); $perso->setCash(); $toPerso->changeCash('+', $_POST['cash']); $toPerso->setCash(); Member_He::add($perso->getId(), $toPerso->getId(), 'donner', "Montant d'argent transféré: " . fctCreditFormat($_POST['cash'], true)); //Rafraichir le HE return $tpl->fetch($account->getSkinRemotePhysicalPath() . 'html/Member/herefresh.htm', __FILE__, __LINE__); }
public static function generatePage(&$tpl, &$session, &$account, &$perso) { $dbMgr = DbManager::getInstance(); //Instancier le gestionnaire $db = $dbMgr->getConn('game'); //Demander la connexion existante $errorUrl1 = '?popup=1&m=Action_Lieu_Guichet'; $errorUrl2 = '?popup=1&m=Action_Lieu_Guichet2'; //Vérifier l'état du perso if (!$perso->isAutonome()) { return fctErrorMSG('Vous n\'êtes pas en état d\'effectuer cette action.', $errorUrl1); } //Vérifier si une carte à été sélectionnée if (!isset($_POST['carteid'])) { return fctErrorMSG('Aucune carte sélectionnée.', $errorUrl1); } //Valider si le NIP a été saisi if (!isset($_POST['nip'])) { return fctErrorMSG('Aucun NIP spécifié.', $errorUrl2, array('carteid' => $_POST['carteid'])); } //Créer la carte + compte $query = 'SELECT *' . ' FROM `' . DB_PREFIX . 'banque_cartes`' . ' LEFT JOIN `' . DB_PREFIX . 'banque_comptes` ON (`compte_banque` = `carte_banque` AND `compte_compte` = `carte_compte`)' . ' WHERE `carte_id` = :carteId' . ' LIMIT 1;'; $prep = $db->prepare($query); $prep->bindValue(':carteId', $_POST['carteid'], PDO::PARAM_INT); $prep->executePlus($db, __FILE__, __LINE__); $arr = $prep->fetch(); $prep->closeCursor(); $prep = NULL; //Valider si la carte existe if ($arr === false) { return fctErrorMSG('Cette carte à été supprimée ou désactivée.', $errorUrl1); } //Créer le compte bancaire $compte = new Member_BanqueCompte($arr); //Créer la carte bancaire $carte = $compte->getCarte($_POST['carteid'], $arr); //Valider si la carte est active ou non if (!$carte->isValid()) { return fctErrorMSG('Cette carte est actuellement désactivée.', $errorUrl1); } //Passer les informations de connexion au template $tpl->set('CARD_ID', $_POST['carteid']); $tpl->set('NIP', $_POST['nip']); //Valider le NIP et afficher la bonne page selon s'il est valide ou non if ($carte->getNip() == $_POST['nip']) { //NIP valide, afficher la page $tpl->set('SOLDE', fctCreditFormat($compte->getCash(), true)); return $tpl->fetch($account->getSkinRemotePhysicalPath() . 'html/Member/Action/Lieu/Guichet3.htm', __FILE__, __LINE__); } else { //NIP invalide, afficher à nouveau le clavier $tpl->set('PAGE_WRONGACCESS', true); return $tpl->fetch($account->getSkinRemotePhysicalPath() . 'html/Member/Action/Lieu/Guichet2.htm', __FILE__, __LINE__); } }
public static function generatePage(&$tpl, &$session, &$account, &$mj) { $dbMgr = DbManager::getInstance(); //Instancier le gestionnaire $db = $dbMgr->getConn('game'); //Demander la connexion existante if (!isset($_GET['id'])) { return fctErrorMSG('Compte non spécifié.'); } //Vérifier quel est le nom de la banque $query = 'SELECT banque_no, banque_nom' . ' FROM ' . DB_PREFIX . 'banque' . ' WHERE banque_id=:banqueId' . ' LIMIT 1;'; $prep = $db->prepare($query); $prep->bindValue(':banqueId', $_GET['id'], PDO::PARAM_INT); $prep->executePlus($db, __FILE__, __LINE__); $arr = $prep->fetch(); $prep->closeCursor(); $prep = NULL; if ($arr === false) { return fctErrorMSG('Banque non-trouvée.'); } $tpl->set('BANK_NAME', $arr['banque_nom']); $tpl->set('BANK_ID', (int) $_GET['id']); //Charger la liste des comptes $query = 'SELECT c.*, p.nom as compte_perso' . ' FROM ' . DB_PREFIX . 'banque_comptes as c' . ' LEFT JOIN ' . DB_PREFIX . 'perso as p ON (p.id = c.compte_idperso)' . ' WHERE c.compte_banque=:banqueNo' . ' ORDER BY compte_cash DESC;'; $prep = $db->prepare($query); $prep->bindValue(':banqueNo', $arr['banque_no'], PDO::PARAM_INT); $prep->executePlus($db, __FILE__, __LINE__); $arrAll = $prep->fetchAll(); $prep->closeCursor(); $prep = NULL; if (count($arrAll) > 0) { //Lister toutes les banques du jeu $arrBanque = array(); foreach ($arrAll as &$arr) { if ($arr['compte_cash'] != -1) { $arr['compte_cash'] = fctCreditFormat($arr['compte_cash'], true); } else { $arr['compte_cash'] = "illimité"; } $arrBanque[] = $arr; } $tpl->set('COMPTES', $arrBanque); } //Retourner le template complété/rempli return $tpl->fetch($account->getSkinRemotePhysicalPath() . 'html/Mj/Lieu/BanqueCompte.htm', __FILE__, __LINE__); }
public static function generatePage(&$tpl, &$session, &$account, &$mj) { $dbMgr = DbManager::getInstance(); //Instancier le gestionnaire $db = $dbMgr->getConn('game'); //Demander la connexion existante $query = 'SELECT compte_banque, compte_compte' . ' FROM ' . DB_PREFIX . 'banque_comptes' . ' WHERE compte_id=:compteId' . ' LIMIT 1;'; $prep = $db->prepare($query); $prep->bindValue(':compteId', $_GET['id'], PDO::PARAM_INT); $prep->executePlus($db, __FILE__, __LINE__); $arr = $prep->fetch(); $prep->closeCursor(); $prep = NULL; $compte_no = $arr['compte_banque'] . '-' . $arr['compte_compte']; $tpl->set('COMPTE', $compte_no); //Lister toutes les transaction $query = 'SELECT *' . ' FROM ' . DB_PREFIX . 'banque_historique' . ' WHERE compte=:compteNo' . ' ORDER BY date ASC;'; $prep = $db->prepare($query); $prep->bindValue(':compteNo', $compte_no, PDO::PARAM_STR); $prep->executePlus($db, __FILE__, __LINE__); $arr = $prep->fetch(); $prep->closeCursor(); $prep = NULL; if ($arr !== false) { $i = 0; $HISTORIQUE = array(); while ($arr = mysql_fetch_assoc($result)) { $HISTORIQUE[$i]['id'] = $arr['id']; $HISTORIQUE[$i]['date'] = fctToGameTime($arr['date']); //A quelle heure à été envoyé le message ? $HISTORIQUE[$i]['code'] = $arr['code']; $HISTORIQUE[$i]['depot'] = $arr['depot'] == 0 ? '' : fctCreditFormat($arr['depot']); $HISTORIQUE[$i]['retrait'] = $arr['retrait'] == 0 ? '' : fctCreditFormat($arr['retrait']); $HISTORIQUE[$i]['solde'] = fctCreditFormat($arr['solde']); $HISTORIQUE[$i]['vers'] = $arr['compte2']; $i++; } $tpl->set('HISTORIQUE', $HISTORIQUE); } //Retourner le template complété/rempli return $tpl->fetch($account->getSkinRemotePhysicalPath() . 'html/Mj/Lieu/BanqueCompteHistorique.htm', __FILE__, __LINE__); }
public static function generatePage(&$tpl, &$session, &$account, &$perso) { $dbMgr = DbManager::getInstance(); //Instancier le gestionnaire $db = $dbMgr->getConn('game'); //Demander la connexion existante //BUT: Démarrer un template propre à cette page //Vérifier les paramêtres requis if (!isset($_POST['compte'])) { return fctErrorMSG('Ce compte est invalide (aucun compte).'); } //Valider le # du compte (TODO: REGEX !!!!) if (strlen($_POST['compte']) != 19) { return fctErrorMSG('Ce compte est invalide (no invalide).'); } //Séparer le # de banque $banque_no = substr($_POST['compte'], 0, 4); $compte_no = substr($_POST['compte'], 5, 14); //Passer le # de compte au template $tpl->set('COMPTE', $_POST['compte']); //Rechercher le compte afin d'y faire des opérations. $query = 'SELECT *' . ' FROM ' . DB_PREFIX . 'banque_comptes' . ' WHERE compte_banque=:banque' . ' AND compte_compte=:compte' . ' LIMIT 1;'; $prep = $db->prepare($query); $prep->bindValue(':compte', $compte_no, PDO::PARAM_STR); $prep->bindValue(':banque', $banque_no, PDO::PARAM_STR); $prep->execute($db, __FILE__, __LINE__); $arr = $prep->fetch(); $prep->closeCursor(); $prep = NULL; //Valider si le compte existe if ($arr === false) { return fctErrorMSG('Ce compte n\'existe pas (' . $_POST['compte'] . ')'); } //Instancier le compte $compte = new Member_BanqueCompte($arr); //Vérifier si le compte appartiend bien au perso if ($compte->getIdPerso() != $perso->getId()) { return fctErrorMSG('Ce compte ne vous appartiend pas.'); } //Lister toutes les transaction $query = 'SELECT *' . ' FROM ' . DB_PREFIX . 'banque_historique' . ' WHERE compte=:compte' . ' ORDER BY date ASC;'; $prep = $db->prepare($query); $prep->bindValue(':compte', $_POST['compte'], PDO::PARAM_STR); $prep->execute($db, __FILE__, __LINE__); $arrTrs = $prep->fetchAll(); $prep->closeCursor(); $prep = NULL; if (count($arrTrs) == 0) { $HISTORIQUE = array(); $i = 0; foreach ($arrTrs as &$arr) { $HISTORIQUE[$i]['id'] = $arr['id']; $HISTORIQUE[$i]['date'] = fctToGameTime($arr['date']); //A quelle heure à été envoyé le message ? $HISTORIQUE[$i]['code'] = $arr['code']; $HISTORIQUE[$i]['depot'] = $arr['depot'] == 0 ? '' : fctCreditFormat($arr['depot']); $HISTORIQUE[$i]['retrait'] = $arr['retrait'] == 0 ? '' : fctCreditFormat($arr['retrait']); $HISTORIQUE[$i]['solde'] = fctCreditFormat($arr['solde']); $i++; } $tpl->set('HISTORIQUE', $HISTORIQUE); } return $tpl->fetch($account->getSkinRemotePhysicalPath() . 'html/Member/Action/Lieu/Banque_historique.htm', __FILE__, __LINE__); }
public static function generatePage(&$tpl, &$session, &$account, &$perso) { $dbMgr = DbManager::getInstance(); //Instancier le gestionnaire $db = $dbMgr->getConn('game'); //Demander la connexion existante $errorUrl = '?popup=1&m=Action_Lieu_Recycler'; $coutPa = 5; //Cout de l'action if (isset($_POST['march'])) { $coutPa += 10; } //Cout du marchandage $remiseTotale = 0.6; // Pourcentage de retour sur la valeur de l'objet. 60% = 60$ pour un objet de 100$. if ($perso->getPa() <= $coutPa) { return fctErrorMSG('Vous n\'avez pas assez de PA pour effectuer cette action.', $errorUrl); } //Vérifier que le lieu dans lequel est le perso permet bien de recycler les items $query = 'SELECT *' . ' FROM ' . DB_PREFIX . 'lieu_menu`' . ' WHERE lieutech=:lieuTech' . ' AND url="Recycler"' . ' LIMIT 1;'; $prep = $db->prepare($query); $prep->bindValue(':lieuTech', $perso->getLieu()->getNomTech(), PDO::PARAM_STR); $prep->execute($db, __FILE__, __LINE__); $arr = $prep->fetch(); $prep->closeCursor(); $prep = NULL; if ($arr === false) { return fctErrorMSG('Vous n\'êtes pas dans un lieu permettant ce type d\'action.', $errorUrl); } $vendre = true; $vendu = 0; $totalProfit = 0; $message = ''; //Essayer de négocier le taux de remise if (isset($_POST['march'])) { $de = round(rand(1, 100)); $reussite = $perso->getChancesReussite("MRCH"); $message = "(négo) "; if ($de < $reussite) { //Calcul du nouveau % de remise $percReussite = $reussite / 100; $remiseTotale += 10 * $percReussite / 100; } else { Member_He::add(NULL, $perso->getId(), 'Recyclage', "La négociation a échoué.", HE_AUCUN, HE_UNIQUEMENT_MOI); $vendre = false; } } if ($vendre) { $message .= "Vous vendez:"; //On récupère dans l'inventaire, les objets que l'utilisateur a sélectionné $i = 0; $objets = array(); while ($item = $perso->getInventaire($i++)) { //Vérifier si l'item fait parti de ceux que l'on désire transférer if (isset($_POST[$item->getInvId() . '_qte'])) { $qte = $_POST[$item->getInvId() . '_qte']; if (is_numeric($qte) && $qte > 0) { //Valider si la quantité à tranférer ne dépasse pas la quantité possédée if ($item->getQte() < $qte) { return fctErrorMSG('Vous ne pouvez pas transférer plus que vous possèdez.', $errorUrl); } //Valider si l'item est non-équipée if ($item->isEquip()) { return fctErrorMSG('Un item (' . $item->getNom() . ') dans votre sac a dos apparait comme équipé. Veuillez contacter un MJ par PPA.', $errorUrl); } //Définir des variables simplifiées $prixOriginal = $item->getDbPrix(); $qteInv = $item->getQte(); $qteVente = $qte; //Calculer le profit sur cet item(s) $prixVente = round($prixOriginal * $remiseTotale * $qteVente); $perso->changeCash("+", $prixVente); $totalProfit += $prixVente; //Retirer définitivement les items de la circulation (du jeu) $qteRestante = $qteInv - $qteVente; if ($qteRestante == 0) { $query = 'DELETE FROM ' . DB_PREFIX . 'item_inv' . ' WHERE inv_id=:itemId' . ' LIMIT 1'; $prep = $db->prepare($query); $prep->bindValue(':itemId', $item->getInvId(), PDO::PARAM_INT); $prep->execute($db, __FILE__, __LINE__); $prep->closeCursor(); $prep = NULL; } else { $query = 'UPDATE ' . DB_PREFIX . 'item_inv' . ' SET inv_qte=:qte' . ' WHERE inv_id=:itemId' . ' LIMIT 1'; $prep = $db->prepare($query); $prep->bindValue(':qte', $qteRestante, PDO::PARAM_INT); $prep->bindValue(':itemId', $item->getInvId(), PDO::PARAM_INT); $prep->execute($db, __FILE__, __LINE__); $prep->closeCursor(); $prep = NULL; } //Ajouter un message $message .= "\n-" . $qteVente . "x" . $item->getNom() . ', pour : ' . fctCreditFormat($prixVente, true); $vendu++; } } } //Compiler les résultats $message .= "\nTotal : " . $vendu . ' item(s) pour ' . fctCreditFormat($totalProfit, true); Member_He::add(NULL, $perso->getId(), 'Système', $message, HE_AUCUN, HE_TOUS); $perso->setCash(); } //Soustraire les PA $perso->changePa('-', $coutPa); $perso->setPa(); //Retourner le template complété/rempli return $tpl->fetch($account->getSkinRemotePhysicalPath() . 'html/Member/herefresh.htm', __FILE__, __LINE__); }
public static function generatePage(&$tpl, &$session, &$account, &$perso) { //Valider si le personnage a été validé if (!$perso->isInscriptionValide()) { return fctErrorMSG('Votre personnage ' . $perso->getNom() . ' n\'a pas encore été validé par un MJ.', '?m=News', null, false); } //Valider si le personnage est non-bloqué if ($perso->isBloque()) { return fctErrorMSG('Votre personnage ' . $perso->getNom() . ' a été bloqué.', '?m=News', null, false); } //Préparer le tableau d'information try { $tpl->set('id', $perso->getId()); //Utile pour éviter de s'auto-renommer $tpl->set('nom', $perso->getNom()); $tpl->set('pa', $perso->getPa()); $tpl->set('paMax', $perso->getPaMax()); $tpl->set('pn', $perso->getPn()); $tpl->set('lieu', $perso->getLieu()->getNom()); //Peut lancer une exception $tpl->set('pv', $perso->getPv()); $tpl->set('pvMax', $perso->getPvMax()); $tpl->set('argent', fctCreditFormat($perso->getCash())); $tpl->set('pr', $perso->getPr()); $tpl->set('prmax', $perso->getPrMax()); $tpl->set('membre', $account->getMemberLevelTxt() . '<br />reste: ' . $account->getMemberRestant() . " jour(s)"); $tpl->set('MP_LVL', $account->getMemberLevel()); $tpl->set('actionImmediate', $perso->getCurrentAction()); if ($perso->isEnergetique()) { $tpl->set('PA_COLORCLASS', 'txtStyle_valeur'); } elseif ($perso->isFaible()) { $tpl->set('PA_COLORCLASS', 'txtStyle_risque'); } else { $tpl->set('PA_COLORCLASS', 'txtStyle_critique'); } if ($perso->isAutonome()) { $tpl->set('PV_COLORCLASS', 'txtStyle_valeur'); } elseif ($perso->isConscient()) { $tpl->set('PV_COLORCLASS', 'txtStyle_risque'); } else { $tpl->set('PV_COLORCLASS', 'txtStyle_critique'); } if ($perso->isRassasie()) { $tpl->set('PN_COLORCLASS', 'txtStyle_valeur'); } elseif ($perso->isFaim()) { $tpl->set('PN_COLORCLASS', 'txtStyle_critique'); } else { $tpl->set('PN_COLORCLASS', 'txtStyle_risque'); } if ($perso->isLege()) { $tpl->set('PR_COLORCLASS', 'txtStyle_valeur'); } else { $tpl->set('PR_COLORCLASS', 'txtStyle_risque'); } $tpl->set('PERSO', $perso); if ($account->getMemberLevel() != 3) { $tpl->set('SHOW_PUB', true); } } catch (Exception $e) { //throw $e; return fctErrorMSG('Votre personnage ' . $perso->getNom() . ' est dans un lieu qui semble ne pas exister (' . $e->getMessage() . '). Contactez un MJ via le forum.', '?m=News', null, false); } //Préparer le menu d'action $tpl->set('MENU_ITEMS', $perso->generateActionMenu()); $code = $tpl->fetch($account->getSkinRemotePhysicalPath() . '/html/Member/menu_actions.htm'); $tpl->set('PAGE_MENU_ACTIONS', $code); //Préparer le he [Entête] //$he = new Member_He($account, $perso); $from = isset($_GET['hepage']) ? $_GET['hepage'] : 1; $tpl->set('HE_PAGE', $from); $tpl->set('HE_SIZE', $perso->getHeMsgCount()); $tpl->set('HE_MAXSPACE', Member_He::spacePerMembership($account->getMemberLevel())); $tpl->set('MP', $account->getMemberLevel()); $tpl->set('HE_MSGPERPAGE', $account->getMsgPerPage()); $code = $tpl->fetch($account->getSkinRemotePhysicalPath() . '/html/Member/he_header.htm'); $tpl->set('PAGE_HE_HEADER', $code); //Préparer le he [Liste des messages] $mpp = $account->getMsgPerPage(); $heMsg = Member_He::listMessages($perso, ($from - 1) * $mpp, $mpp); $code = ''; $i = $account->getMsgPerPage() + 1; foreach ($heMsg as $msg) { $tpl->set('MSG', $msg); $tpl->set('ITEM_NO_ON_PAGE', --$i); $code .= $tpl->fetch($account->getSkinRemotePhysicalPath() . '/html/Member/he_item.htm'); } $tpl->set('PAGE_HE_MESSAGES', $code); //Changement de l'action immédiate if (isset($_POST['saveActionImmediate'])) { $perso->setCurrentAction($_POST['actionImmediate']); $tpl->set('actionImmediate', $_POST['actionImmediate']); } //Retourner le template complété/rempli return $tpl->fetch($account->getSkinRemotePhysicalPath() . 'html/Member/index.htm', __FILE__, __LINE__); }
/** Retourne le prix d'achat de l'item en inventaire dans la boutique * <br> (retourne NULL si l'item n'est pas dans une boutique) * @param bool $format Formater ou non le nombre (Défaut= non, true=avec devise, false=false devise) * @return float */ public function getBoutiquePrixAchat($format = false) { if ($format === false) { return $this->boutiquePrixAchat; } return fctCreditFormat($this->boutiquePrixAchat, $format); }
public static function generatePage(&$tpl, &$session, &$account, &$perso) { $dbMgr = DbManager::getInstance(); //Instancier le gestionnaire $db = $dbMgr->getConn('game'); //Demander la connexion existante $tarifs = array(0 => 0, 1 => array(6 => 2.0, 12 => 3.0), 2 => array(6 => 8.0, 12 => 12.0), 3 => array(6 => 16.0, 12 => 24.0)); if (!isset($_POST['userId'])) { return fctErrorMSG("Aucun utilisateur spéficié."); } $userId = (int) $_POST['userId']; //Trouver les informations concernant l'abonnement MP $query = 'SELECT id, user, mp, mp_expiration' . ' FROM ' . DB_PREFIX . 'account' . ' WHERE id=:userId' . ' LIMIT 1;'; $prep = $db->prepare($query); $prep->bindValue(':userId', $userId, PDO::PARAM_INT); $prep->executePlus($db, __FILE__, __LINE__); $arr = $prep->fetch(); $prep->closeCursor(); $prep = NULL; $expir = $arr['mp_expiration']; $lvl = $arr['mp']; $tpl->set('MP_LVL', $lvl); $tpl->set('MP_TXT', Account::convMemberLevelTxt($lvl)); $tpl->set('ACCOUNT_ID', $arr['id']); $tpl->set('ACCOUNT_USER', $arr['user']); //Créer le tableaux des possibilités d'abonnements $abo = array(); if ($lvl == 0) { $abo[count($abo)] = array('cat' => "Niveau I", 'txt' => "Nouvel abonnement MP-1, 6 mois", 'code' => 'abo11', 'prix' => fctCreditFormat(round($tarifs[1][6], 2))); $abo[count($abo)] = array('cat' => "Niveau I", 'txt' => "Nouvel abonnement MP-1, 12 mois", 'code' => 'abo12', 'prix' => fctCreditFormat(round($tarifs[1][12], 2))); $abo[count($abo)] = array('cat' => "Niveau II", 'txt' => "Nouvel abonnement MP-2, 6 mois", 'code' => 'abo21', 'prix' => fctCreditFormat(round($tarifs[2][6], 2))); $abo[count($abo)] = array('cat' => "Niveau II", 'txt' => "Nouvel abonnement MP-2, 12 mois", 'code' => 'abo22', 'prix' => fctCreditFormat(round($tarifs[2][12], 2))); $abo[count($abo)] = array('cat' => "Niveau III", 'txt' => "Nouvel abonnement MP-3, 6 mois", 'code' => 'abo31', 'prix' => fctCreditFormat(round($tarifs[3][6], 2))); $abo[count($abo)] = array('cat' => "Niveau III", 'txt' => "Nouvel abonnement MP-3, 12 mois", 'code' => 'abo32', 'prix' => fctCreditFormat(round($tarifs[3][12], 2))); } else { //Déterminer le temps restant à l'abonnement actuel $joursRestant = floor(($expir - time()) / (60 * 60 * 24)); //Calculer les mises à niveau if ($lvl == 1) { $abo[count($abo)] = array('cat' => "Mise à niveau II", 'txt' => "Mise à niveau du temps restant ({$joursRestant} jours) vers MP-2", 'code' => 'upg12', 'prix' => fctCreditFormat(round($joursRestant / 365 * ($tarifs[2][12] - $tarifs[1][12]) * 1.1, 2))); $abo[count($abo)] = array('cat' => "Mise à niveau III", 'txt' => "Mise à niveau du temps restant ({$joursRestant} jours) vers MP-3", 'code' => 'upg13', 'prix' => fctCreditFormat(round($joursRestant / 365 * ($tarifs[3][12] - $tarifs[1][12]) * 1.1, 2))); } if ($lvl == 2) { $abo[count($abo)] = array('cat' => "Mise à niveau III", 'txt' => "Mise à niveau du temps restant ({$joursRestant} jours) vers MP-3", 'code' => 'upg23', 'prix' => fctCreditFormat(round($joursRestant / 365 * ($tarifs[3][12] - $tarifs[2][12]) * 1.1, 2))); } //Calculer les extentions d'abonnement if ($lvl == 1) { $abo[count($abo)] = array('cat' => "Extension I", 'txt' => "Extension MP-1, 6 mois", 'code' => 'ext11', 'prix' => fctCreditFormat(round($tarifs[1][6], 2))); $abo[count($abo)] = array('cat' => "Extension I", 'txt' => "Extension MP-1, 12 mois", 'code' => 'ext12', 'prix' => fctCreditFormat(round($tarifs[1][12], 2))); } if ($lvl == 2) { $abo[count($abo)] = array('cat' => "Extension II", 'txt' => "Extension MP-2, 6 mois", 'code' => 'ext21', 'prix' => fctCreditFormat(round($tarifs[2][6], 2))); $abo[count($abo)] = array('cat' => "Extension II", 'txt' => "Extension MP-2, 12 mois", 'code' => 'ext22', 'prix' => fctCreditFormat(round($tarifs[2][12], 2))); } if ($lvl == 3) { $abo[count($abo)] = array('cat' => "Extension III", 'txt' => "Extension MP-3, 6 mois", 'code' => 'ext31', 'prix' => fctCreditFormat(round($tarifs[3][6], 2))); $abo[count($abo)] = array('cat' => "Extension III", 'txt' => "Extension MP-3, 12 mois", 'code' => 'ext32', 'prix' => fctCreditFormat(round($tarifs[3][12], 2))); } } $tpl->set('SITE_VIRTUAL_PATH', SITE_VIRTUAL_PATH); $tpl->set('ABO', $abo); //Retourner le template complété/rempli return $tpl->fetch($account->getSkinRemotePhysicalPath() . 'html/Member/Mp/abo2.htm', __FILE__, __LINE__); }
public static function generatePage(&$tpl, &$session, &$account, &$perso) { $dbMgr = DbManager::getInstance(); //Instancier le gestionnaire $db = $dbMgr->getConn('game'); //Demander la connexion existante //Vérifier l'état du perso if (!$perso->isAutonome()) { return fctErrorMSG('Votre n\'êtes pas en état d\'effectuer cette action.'); } //Vérifier les paramêtres requis if (!isset($_POST['compte'])) { return fctErrorMSG('Ce compte est invalide (aucun compte).'); } if (!isset($_POST['trsid'])) { return fctErrorMSG('Cette transaction est invalide (aucune transaction).'); } //Valider le # du compte (TODO: REGEX !!!!) if (strlen($_POST['compte']) != 19) { return fctErrorMSG('Ce compte est invalide (no invalide).'); } $banque_no = substr($_POST['compte'], 0, 4); $compte_no = substr($_POST['compte'], 5, 14); $tpl->set('COMPTE', $_POST['compte']); //Chercher le compte afin d'y faire des opérations. $query = 'SELECT *' . ' FROM ' . DB_PREFIX . 'banque_comptes' . ' WHERE compte_banque=:banque' . ' AND compte_compte=:compte' . ' LIMIT 1;'; $prep = $db->prepare($query); $prep->bindValue(':compte', $compte_no, PDO::PARAM_STR); $prep->bindValue(':banque', $banque_no, PDO::PARAM_STR); $prep->execute($db, __FILE__, __LINE__); $arr = $prep->fetch(); $prep->closeCursor(); $prep = NULL; //Valider si le compte existe if ($arr === false) { return fctErrorMSG('Ce compte n\'existe pas.'); } //Instancier le compte $compte = new Member_BanqueCompte($arr); //Vérifier si le compte appartiend bien au perso if ($compte->getIdPerso() != $perso->getId()) { return fctErrorMSG('Ce compte ne vous appartiend pas.'); } //Charger l'historique des transactions $fullCompte = $compte->getNoBanque() . '-' . $compte->getNoCompte(); $query = 'SELECT *' . ' FROM ' . DB_PREFIX . 'banque_historique' . ' WHERE compte=:fullCompte' . ' AND id=:id' . ' LIMIT 1;'; $prep = $db->prepare($query); $prep->bindValue(':fullCompte', $fullCompte, PDO::PARAM_STR); $prep->bindValue(':id', $_POST['trsid'], PDO::PARAM_INT); $prep->execute($db, __FILE__, __LINE__); $arr = $prep->fetch(); $prep->closeCursor(); $prep = NULL; //Valider si la transaction existe if ($arr === false) { return fctErrorMSG('Cette transaction est invalide (transaction innexistante).'); } //Formater les variables $arr['date'] = fctToGameTime($arr['date'], true); $arr['solde'] = fctCreditFormat($arr['solde'], true); //Afficher le template approprié selon le type de transaction switch ($arr['code']) { case 'RETR': $arr['montant'] = fctCreditFormat($arr['retrait']); $tpl->set('TRANSACTION', $arr); return $tpl->fetch($account->getSkinRemotePhysicalPath() . 'html/Member/Action/Lieu/Banque_historique_detailsdirect.htm', __FILE__, __LINE__); break; case 'DPOT': $arr['montant'] = fctCreditFormat($arr['depot']); $tpl->set('TRANSACTION', $arr); return $tpl->fetch($account->getSkinRemotePhysicalPath() . 'html/Member/Action/Lieu/Banque_historique_detailsdirect.htm', __FILE__, __LINE__); break; case 'RTRF': $arr['montant'] = fctCreditFormat($arr['depot']); $tpl->set('TRANSACTION', $arr); return $tpl->fetch($account->getSkinRemotePhysicalPath() . 'html/Member/Action/Lieu/Banque_historique_detailstransfert.htm', __FILE__, __LINE__); break; case 'STRF': $arr['montant'] = fctCreditFormat($arr['retrait']); $tpl->set('TRANSACTION', $arr); return $tpl->fetch($account->getSkinRemotePhysicalPath() . 'html/Member/Action/Lieu/Banque_historique_detailstransfert.htm', __FILE__, __LINE__); break; default: $tpl->set('TRANSACTION', $arr); return $tpl->fetch($account->getSkinRemotePhysicalPath() . 'html/Member/Action/Lieu/Banque_historique_detailsnodetails.htm', __FILE__, __LINE__); break; } }
public static function generatePage(&$tpl, &$session, &$account, &$perso) { $dbMgr = DbManager::getInstance(); //Instancier le gestionnaire $db = $dbMgr->getConn('game'); //Demander la connexion existante $errorUrl1 = '?popup=1&m=Action_Lieu_Guichet'; $errorUrl2 = '?popup=1&m=Action_Lieu_Guichet2'; $errorUrl3 = '?popup=1&m=Action_Lieu_Guichet3historique'; //Vérifier l'état du perso if (!$perso->isAutonome()) { return fctErrorMSG('Votre n\'êtes pas en état d\'effectuer cette action.', $errorUrl1); } //Vérifier si une carte à été sélectionnée if (!isset($_POST['carteid'])) { return fctErrorMSG('Aucune carte sélectionnée.', $errorUrl1); } //Valider si le NIP a été saisi if (!isset($_POST['nip'])) { return fctErrorMSG('Aucun NIP spécifiée.', $errorUrl2, array('carteid' => $_POST['carteid'])); } if (!isset($_POST['trsid'])) { return fctErrorMSG('Transaction invalide (1).', $errorUrl3, array('carteid' => $_POST['carteid'], 'nip' => $_POST['nip'])); } //Créer la carte + compte $query = 'SELECT *' . ' FROM `' . DB_PREFIX . 'banque_cartes`' . ' LEFT JOIN `' . DB_PREFIX . 'banque_comptes` ON (`compte_banque` = `carte_banque` AND `compte_compte` = `carte_compte`)' . ' WHERE `carte_id` = :carteId' . ' LIMIT 1;'; $prep = $db->prepare($query); $prep->bindValue(':carteId', $_POST['carteid'], PDO::PARAM_INT); $prep->execute($db, __FILE__, __LINE__); $arr = $prep->fetch(); $prep->closeCursor(); $prep = NULL; //Valider si la carte existe dans la base de données if ($arr === false) { fctBugReport('Cette carte n\'existe pas', array('perso' => $perso, 'query' => $query), __FILE__, __LINE__, __FUNCTION__, __CLASS__, __METHOD__); } //Créer le compte bancaire $compte = new Member_BanqueCompte($arr); //Créer la carte $carte = $compte->getCarte($_POST['carteid'], $arr); //Valider si la carte est active ou non if (!$carte->isValid()) { return fctErrorMSG('Cette carte à été désactivée.', $errorUrl1); } //Valider le NIP if ($carte->getNip() != $_POST['nip']) { return fctErrorMSG('NIP invalide.', $errorUrl2, array('carteid' => $_POST['carteid'])); } //Charger l'historique des transactions $noCompte = $compte->getNoBanque() . '-' . $compte->getNoCompte(); $query = 'SELECT * ' . ' FROM `' . DB_PREFIX . 'banque_historique`' . ' WHERE `compte`=:noCompte' . ' AND `id`=:id;'; $prep = $db->prepare($query); $prep->bindValue(':noCompte', $noCompte, PDO::PARAM_STR); $prep->bindValue(':id', $_POST['trsid'], PDO::PARAM_INT); $prep->execute($db, __FILE__, __LINE__); $arr = $prep->fetch(); $prep->closeCursor(); $prep = NULL; //Valider si la transaction existe dans la base de données if ($arr === false) { return fctErrorMSG('Transaction invalide (2).', $errorUrl3, array('carteid' => $_POST['carteid'], 'nip' => $_POST['nip'])); } //Récolter et formater les informations relative à la transaction $arr['date'] = fctToGameTime($arr['date'], false, true); $arr['solde'] = fctCreditFormat($arr['solde'], true); //Passer les informations au template $tpl->set('CARD_ID', $_POST['carteid']); $tpl->set('NIP', $_POST['nip']); $tpl->set('COMPTE', $compte->getNoBanque() . '-' . $compte->getNoCompte()); //Afficher la page adéquate selon le type de transaction switch ($arr['code']) { case "RETR": $arr['montant'] = fctCreditFormat($arr['retrait']); $tpl->set('TRANSACTION', $arr); return $tpl->fetch($account->getSkinRemotePhysicalPath() . 'html/Member/Action/Lieu/Banque_historique_detailsdirect.htm', __FILE__, __LINE__); break; case "DPOT": $arr['montant'] = fctCreditFormat($arr['depot']); $tpl->set('TRANSACTION', $arr); return $tpl->fetch($account->getSkinRemotePhysicalPath() . 'html/Member/Action/Lieu/Banque_historique_detailsdirect.htm', __FILE__, __LINE__); break; case "RTRF": $arr['montant'] = fctCreditFormat($arr['depot']); $tpl->set('TRANSACTION', $arr); return $tpl->fetch($account->getSkinRemotePhysicalPath() . 'html/Member/Action/Lieu/Banque_historique_detailstransfert.htm', __FILE__, __LINE__); break; case "STRF": $arr['montant'] = fctCreditFormat($arr['retrait']); $tpl->set('TRANSACTION', $arr); return $tpl->fetch($account->getSkinRemotePhysicalPath() . 'html/Member/Action/Lieu/Banque_historique_detailstransfert.htm', __FILE__, __LINE__); break; default: $tpl->set('TRANSACTION', $arr); return $tpl->fetch($account->getSkinRemotePhysicalPath() . 'html/Member/Action/Lieu/Banque_historique_detailsnodetails.htm', __FILE__, __LINE__); break; } }
public static function generatePage(&$tpl, &$session, &$account, &$perso) { $dbMgr = DbManager::getInstance(); //Instancier le gestionnaire $db = $dbMgr->getConn('game'); //Demander la connexion existante $errorUrl1 = '?popup=1&m=Action_Lieu_Guichet'; $errorUrl2 = '?popup=1&m=Action_Lieu_Guichet2'; $errorUrl3 = '?popup=1&m=Action_Lieu_Guichet3'; //Vérifier l'état du perso if (!$perso->isAutonome()) { return fctErrorMSG('Votre n\'êtes pas en état d\'effectuer cette action.', $errorUrl1); } //Vérifier si une carte à été sélectionnée if (!isset($_POST['carteid']) || !is_numeric($_POST['carteid'])) { return fctErrorMSG('Aucune carte sélectionnée.', $errorUrl1); } //Vérifier si un NIP a été saisie if (!isset($_POST['nip'])) { return fctErrorMSG('Aucun NIP spécifiée.', $errorUrl, array('carteid' => $_POST['carteid'])); } //Créer la carte + compte $query = 'SELECT *' . ' FROM `' . DB_PREFIX . 'banque_cartes`' . ' LEFT JOIN `' . DB_PREFIX . 'banque_comptes` ON (`compte_banque` = `carte_banque` AND `compte_compte` = `carte_compte`)' . ' WHERE `carte_id` = :carteId' . ' LIMIT 1;'; $prep = $db->prepare($query); $prep->bindValue(':carteId', $_POST['carteid'], PDO::PARAM_INT); $prep->execute($db, __FILE__, __LINE__); $arr = $prep->fetch(); $prep->closeCursor(); $prep = NULL; //Valider si la carte existe if ($arr === false) { fctBugReport('Cette carte n\'existe pas', array('perso' => $perso, 'query' => $query), __FILE__, __LINE__, __FUNCTION__, __CLASS__, __METHOD__); } //Créer le compte de banque $compte = new Member_BanqueCompte($arr); //Créer la carte bancaire $carte = $compte->getCarte($_POST['carteid'], $arr); //Valider si la carte est active ou non if (!$carte->isValid()) { return fctErrorMSG('Cette carte à été désactivée.', $errorUrl1); } //Placer les informations sur l'accès dans le template $tpl->set('CARD_ID', $_POST['carteid']); $tpl->set('NIP', $_POST['nip']); $tpl->set('COMPTE', $compte->getNoBanque() . '-' . $compte->getNoCompte()); //Valider le montant d'argent à retirer $montant = round($_POST['retrait'], 2); if (!is_numeric($montant) || $montant <= 0) { return fctErrorMSG('Montant invalide.', '?m=Action_Lieu_Guichet3', array('carteid' => $_POST['carteid'], 'nip' => $_POST['nip'])); } //Valider si le montant if ($compte->getCash() < $montant && $compte->getCash() != -1) { return fctErrorMSG('Tentative de retrait supérieur au montant maximal autorisé.', $errorUrl3, array('carteid' => $_POST['carteid'], 'nip' => $_POST['nip'])); } //Retirer l'argent du compte $compte->changeCash('-', $montant); $compte->setCash(); //Ajouter l'argent au perso $perso->changeCash('+', $montant); $perso->setCash(); //Retirer les PA au perso $perso->changePa('-', 1); $perso->setPa(); //Ajouter le message à l'historique bancaire Member_BanqueCompte::addHist($noCompte, '', 'RGUI', $montant, 0, $compte->getCash() - $montant); //Copier le message dans les HE Member_He::add('', $perso->getId(), 'parler', "Vous effectuez un retrait de " . fctCreditFormat($montant, true) . " au guichet automatique."); //Rafraichir le HE return $tpl->fetch($account->getSkinRemotePhysicalPath() . 'html/Member/herefresh.htm', __FILE__, __LINE__); }
public static function generatePage(&$tpl, &$session, &$account, &$perso) { $dbMgr = DbManager::getInstance(); //Instancier le gestionnaire $db = $dbMgr->getConn('game'); //Demander la connexion existante $errorUrl1 = '?popup=1&m=Action_Lieu_Guichet'; $errorUrl2 = '?popup=1&m=Action_Lieu_Guichet2'; //Vérifier l'état du perso if (!$perso->isAutonome()) { return fctErrorMSG('Votre n\'êtes pas en état d\'effectuer cette action.', $errorUrl1); } //Vérifier si une carte à été sélectionnée if (!isset($_POST['carteid'])) { return fctErrorMSG('Aucune carte sélectionnée.', $errorUrl1); } //Valider si le NIP a été saisi if (!isset($_POST['nip'])) { return fctErrorMSG('Aucun NIP spécifiée.', $errorUrl2, array('carteid' => $_POST['carteid'])); } //Créer la carte + compte $query = 'SELECT *' . ' FROM `' . DB_PREFIX . 'banque_cartes`' . ' LEFT JOIN `' . DB_PREFIX . 'banque_comptes` ON (`compte_banque` = `carte_banque` AND `compte_compte` = `carte_compte`)' . ' WHERE `carte_id` = :carteId' . ' LIMIT 1;'; $prep = $db->prepare($query); $prep->bindValue(':carteId', $_POST['carteid'], PDO::PARAM_INT); $prep->execute($db, __FILE__, __LINE__); $arr = $prep->fetch(); $prep->closeCursor(); $prep = NULL; //Valider si la carte existe if ($arr === false) { fctBugReport('Cette carte n\'existe pas', array('perso' => $perso, 'query' => $query), __FILE__, __LINE__, __FUNCTION__, __CLASS__, __METHOD__); } //Créer le compte bancaire $compte = new Member_BanqueCompte($arr); //Créer la carte $carte = $compte->getCarte($_POST['carteid'], $arr); //Valider si la carte est active ou non if (!$carte->isValid()) { return fctErrorMSG('Cette carte à été désactivée.', $errorUrl1); } //Valider le NIP if ($carte->getNip() != $_POST['nip']) { return fctErrorMSG('NIP invalide.', $errorUrl2, array('carteid' => $_POST['carteid'])); } //Charger l'historique des transactions $compteNo = $compte->getNoBanque() . '-' . $compte->getNoCompte(); $query = 'SELECT *' . ' FROM `' . DB_PREFIX . 'banque_historique`' . ' WHERE `compte`=:noCompte;'; $prep = $db->prepare($query); $prep->bindValue(':noCompte', $compteNo, PDO::PARAM_STR); $prep->execute($db, __FILE__, __LINE__); $arrAll = $prep->fetchAll(); $prep->closeCursor(); $prep = NULL; //Générer la liste de toutes les transactions et formater les données $historique = array(); foreach ($arrAll as &$arr) { $arr['date'] = fctToGameTime($arr['date']); $arr['retrait'] = fctCreditFormat($arr['retrait'], true); $arr['depot'] = fctCreditFormat($arr['depot'], true); $arr['solde'] = fctCreditFormat($arr['solde'], true); $historique[] = $arr; } //Passer les informations sur l'accès au template $tpl->set('COMPTE', $compte->getNoBanque() . '-' . $compte->getNoCompte()); $tpl->set('CARD_ID', $_POST['carteid']); $tpl->set('NIP', $_POST['nip']); $tpl->set('HISTORIQUE', $historique); return $tpl->fetch($account->getSkinRemotePhysicalPath() . 'html/Member/Action/Lieu/Banque_historique.htm', __FILE__, __LINE__); }