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 //Valider si le joueur à accès à Internet if (Member_Action_Item_Navigateur::checkAccess($perso) === false) { return fctErrorMSG('Vous n\'avez pas accès à Internet.'); } //Vérifier l'état du perso if (!$perso->isConscient()) { die('01|' . rawurlencode('Votre n\'êtes pas en état d\'effectuer cette action.')); } if (!preg_match('/^[A-Za-z0-9.-_]*$/', $_POST['url'], $matches)) { return fctErrorMsg('L\'URL du site est invalide.'); } //Vérifier si l'URL existe $site = Member_Siteweb::loadSite($_POST['url']); if (!$site) { die('10|' . rawurlencode('Cette URL n\'existe pas.')); } //Vérifier si l'accès est valide $acces = $site->checkAcces($_POST['user'], $_POST['pass']); if ($acces === false) { die('11|' . rawurlencode('Vous ne possèdez pas les autorisations nécésaires (1).')); } if (!$acces->isAdmin()) { die('12|' . rawurlencode('Vous ne possèdez pas les autorisations nécésaires (2).')); } //Tout est ok, modifier le site !!!!! //Valider si la page d'accueil demandée appartiend au site $query = 'SELECT id' . ' FROM ' . DB_PREFIX . 'sitesweb_pages' . ' WHERE site_id = :site_id' . ' AND id = :id;'; $prep = $db->prepare($query); $prep->bindValue(':site_id', $site->getId(), PDO::PARAM_INT); $prep->bindValue(':id', $_POST['accueil'], PDO::PARAM_INT); $prep->execute($db, __FILE__, __LINE__); $arr = $prep->fetch(); $prep->closeCursor(); $prep = NULL; if ($arr === false) { $_POST['accueil'] = 0; } $query = 'UPDATE ' . DB_PREFIX . 'sitesweb' . ' SET `url` =:urlNew,' . ' `titre` =:titre,' . ' `acces` =:acces,' . ' `first_page`=:firstPage' . ' WHERE url=:urlOld;'; $prep = $db->prepare($query); $prep->bindValue(':urlNew', $_POST['new_url'], PDO::PARAM_STR); $prep->bindValue(':titre', $_POST['titre'], PDO::PARAM_STR); $prep->bindValue(':acces', $_POST['acces'], PDO::PARAM_STR); $prep->bindValue(':firstPage', $_POST['accueil'], PDO::PARAM_INT); $prep->bindValue(':urlOld', $_POST['url'], PDO::PARAM_STR); $prep->execute($db, __FILE__, __LINE__); $prep->closeCursor(); $prep = NULL; die('OK|' . $perso->getPa() . '|' . $_POST['new_url']); //Tout est OK }
public static function generatePage(&$tpl, &$session, &$account, &$perso) { $errorUrl = '?popup=1&m=Action_Item_Media'; $paCost = 0; if (!$perso->isConscient()) { return fctErrorMSG('Vous n\'êtes pas en état d\'effectuer cette action.', $errorUrl); } //Pas assez de PA if ($perso->getPa() <= $paCost) { return fctErrorMSG('Vous n\'avez pas assez de PA pour effectuer cette action.', $errorUrl); } //Vérifications du post if (!isset($_POST['mediaSelected'])) { return fctErrorMSG('Vous n\'avez pas sélectionné d\'objet.', $errorUrl); } if (empty($_POST[$_POST['mediaSelected'] . '_channelSelected'])) { return fctErrorMSG('Vous n\'avez pas choisi de canal.', $errorUrl); } //Récupérer les informations sur l'item media $item = Member_ItemFactory::createFromInvId($_POST['mediaSelected']); if ($item == false) { return fctErrorMsg('Erreur : l\'item selectionné n\'est pas supporté.', $errorUrl); } if ($item->getMediaType() != 'tous') { if ($item->getMediaType() != $_POST[$_POST['mediaSelected'] . '_typeSelected']) { return fctErrorMsg('Le type de média selectionné n\'est pas accessible par cet objet.', $errorUrl); } } $mediaMsg = $item->getMediaContenu($_POST[$_POST['mediaSelected'] . '_typeSelected'], $_POST[$_POST['mediaSelected'] . '_channelSelected']); $mediaReception = $item->isRecepteur(); $mediaEmission = $item->isEmetteur(); //Si on veut regarder les média : retirer les PA if ($item->isRecepteur()) { $perso->changePa('-', $paCost); $perso->setPa(); } $tpl->set('MEDIA_RECEPTION', $mediaReception); $tpl->set('MEDIA_EMISSION', $mediaEmission); $tpl->set('MEDIA_MESSAGE', $mediaMsg); $tpl->set('PERSO', $perso); $tpl->set('CANAL', $_POST[$_POST['mediaSelected'] . '_channelSelected']); $tpl->set('ITEM', $item); if ($_POST[$_POST['mediaSelected'] . '_typeSelected'] = 'tele') { $typeAffichable = 'télé'; } else { $typeAffichable = 'radio'; } $tpl->set('MEDIA', $typeAffichable); $tpl->set('MEDIA_TYPE', $_POST[$_POST['mediaSelected'] . '_typeSelected']); //Retourner le template complété/rempli return $tpl->fetch($account->getSkinRemotePhysicalPath() . 'html/Member/Action/Item/Media2.htm', __FILE__, __LINE__); }
public static function generatePage(&$tpl, &$session, &$account, &$perso) { $errorUrl = '?popup=1&m=Action_Lieu_MediaListe'; $paCost = 0; if (!$perso->isConscient()) { return fctErrorMSG('Vous n\'êtes pas en état d\'effectuer cette action.', $errorUrl); } //Pas assez de PA if ($perso->getPa() <= $paCost) { return fctErrorMSG('Vous n\'avez pas assez de PA pour effectuer cette action.', $errorUrl); } //Vérifications du post if (!isset($_POST['mediaSelected'])) { return fctErrorMSG('Vous n\'avez pas sélectionné d\'objet.', $errorUrl); } //Récupérer les informations sur l'accès média $i = 0; $mediaAcces = false; while ($media = $perso->getLieu()->getMediaAcces($i++)) { if ($media->getId() == $_POST['mediaSelected']) { $mediaAcces = $media; break; } } if ($mediaAcces == false) { return fctErrorMsg('Erreur : l\'item selectionné n\'existe pas.', $errorUrl); } $mediaMsg = $mediaAcces->getMediaContenu(); $mediaReception = $mediaAcces->isRecepteur(); $mediaEmission = $mediaAcces->isEmetteur(); //Si on veut regarder les média : retirer les PA if ($mediaReception) { $perso->changePa('-', $paCost); $perso->setPa(); } $tpl->set('MEDIA_RECEPTION', $mediaReception); $tpl->set('MEDIA_EMISSION', $mediaEmission); $tpl->set('MEDIA_MESSAGE', $mediaMsg); $tpl->set('PERSO', $perso); $tpl->set('MEDIA_ACCES', $mediaAcces); //Retourner le template complété/rempli return $tpl->fetch($account->getSkinRemotePhysicalPath() . 'html/Member/Action/Lieu/MediaAcces.htm', __FILE__, __LINE__); }
public static function generatePage(&$tpl, &$session, &$account, &$perso) { $errorUrl = '?popup=1&m=Action_Lieu_MediaListe'; $paCost = 0; if (!$perso->isConscient()) { return fctErrorMSG('Vous n\'êtes pas en état d\'effectuer cette action.', $errorUrl); } //Pas assez de PA if ($perso->getPa() <= $paCost) { return fctErrorMSG('Vous n\'avez pas assez de PA pour effectuer cette action.', $errorUrl); } //Vérifications du post if (!isset($_POST['title'])) { return fctErrorMSG('Vous n\'avez pas sélectionné d\'émission.', $errorUrl); } if (empty($_POST['message'])) { return fctErrorMSG('Vous devez écrire un message.', $errorUrl); } if ($_POST['title'] == 'new' && empty($_POST['new_title'])) { return fctErrorMSG('Vous devez entrer un nom d\'émission.', $errorUrl); } //Récupérer les informations sur l'accès media du lieu $i = 0; $mediaAcces = false; while ($media = $perso->getLieu()->getMediaAcces($i++)) { if ($media->getId() == $_POST['media']) { $mediaAcces = $media; break; } } if ($mediaAcces == false) { return fctErrorMsg('Erreur : l\'item selectionné n\'existe pas.', $errorUrl); } $mediaAcces->writeInMedia($_POST[$_POST['title'] . '_title'], $_POST['message']); $perso->changePa('-', $paCost); $perso->setPa(); //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 //BUT: Démarrer un template propre à cette page preg_match('/^([^\\/]+)(?:[\\/]([a-z0-9]+))?(?:[?](.+))?/', $_POST['url'], $matches); if (count($matches) < 3) { return fctErrorMsg('L\'URL du site est invalide (2).'); } $site_url = $matches[1]; $mod_site_url = $matches[3]; //Vérifier si l'URL existe $site = Member_Siteweb::loadSite($mod_site_url); if (!$site) { return fctErrorMsg('Cette URL n\'existe pas.'); } //Vérifier si l'accès est valide $acces = $site->checkAcces($_POST['user'], $_POST['pass']); if (!$acces) { return fctErrorMsg('Vous ne possèdez pas les autorisations nécésaires (1).'); } if (!$acces->isAdmin()) { return fctErrorMsg('Vous ne possèdez pas les autorisations nécésaires (2).'); } //Trouver les pages du site $PAGES = array(); $i = 0; while ($page = $site->getPage($i++)) { if ($page->isPublic()) { $PAGES[] = $page; } } $tpl->set('PAGES', $PAGES); //Retourner le template complété/rempli $tpl->set('SITE', $site); return $tpl->fetch($account->getSkinRemotePhysicalPath() . 'html/Member/Action/Item/NavigateurDomnetModsite.htm', __FILE__, __LINE__); }
public static function generatePage(&$tpl, &$session, &$account, &$perso) { $errorUrl = '?popup=1&m=Action_Item_Media'; $paCost = 0; if (!$perso->isConscient()) { return fctErrorMSG('Vous n\'êtes pas en état d\'effectuer cette action.', $errorUrl); } //Pas assez de PA if ($perso->getPa() <= $paCost) { return fctErrorMSG('Vous n\'avez pas assez de PA pour effectuer cette action.', $errorUrl); } //Vérifications du post if (!isset($_POST['title'])) { return fctErrorMSG('Vous n\'avez pas sélectionné d\'émission.', $errorUrl); } if (empty($_POST['message'])) { return fctErrorMSG('Vous devez écrire un message.', $errorUrl); } if ($_POST['title'] == 'new' && empty($_POST['new_title'])) { return fctErrorMSG('Vous devez entrer un nom d\'émission.', $errorUrl); } //Récupérer les informations sur l'item media $item = Member_ItemFactory::createFromInvId($_POST['item']); if ($item == false) { return fctErrorMsg('Erreur : l\'item selectionné n\'est pas supporté.', $errorUrl); } if ($item->getMediaType() != 'tous') { if ($item->getMediaType() != $_POST['mediaType']) { return fctErrorMsg('Le type de média selectionné n\'est pas accessible par cet objet.', $errorUrl); } } $item->writeInMedia($_POST['mediaType'], $_POST['channel'], $_POST[$_POST['title'] . '_title'], $_POST['message']); $perso->changePa('-', $paCost); $perso->setPa(); //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 //Vérifier l'état du perso if (!$perso->isConscient()) { return fctErrorMsg('Votre n\'êtes pas en état d\'effectuer cette action.'); } //Valider si le joueur à accès à Internet if (self::checkAccess($perso) === false) { return fctErrorMSG('Vous n\'avez pas accès à Internet.'); } //## AFFICHER L'ENTÊTE DU NAVIGATEUR if (!isset($_POST['url']) || empty($_POST['url'])) { $_POST['url'] = "dom.net"; } $tpl->set('URL', $_POST['url']); $tpl->set('USER', isset($_POST['user']) ? $_POST['user'] : ''); $tpl->set('PASS', isset($_POST['pass']) ? $_POST['pass'] : ''); //## AFFICHER LE CONTENU DE LA PAGE //Séparer le site de la page (dans l'URL) preg_match('/^([^\\/]+)(?:[\\/]([a-z0-9]+))?(?:[?](.+))?/', $_POST['url'], $matches); //$tmp = explode('/',$_POST['url']); $url_site = null; $url_page = null; $url_param = null; if (count($matches) > 1) { $url_site = $matches[1]; } if (count($matches) > 2) { $url_page = $matches[2]; } if (count($matches) > 3) { $url_param = $matches[3]; } //Charger le site $site = Member_Siteweb::loadSite($url_site); $tpl->set('url_param', !empty($url_param) ? $url_param : ''); //Charger l'entête (le menu de navigation) $header = $tpl->fetch($account->getSkinRemotePhysicalPath() . 'html/Member/Action/Item/NavigateurHeader.htm', __FILE__, __LINE__); $tpl->set('HEADER', $header); //Vérifier les droits d'accès au site $acces = false; if ($site && isset($_POST['user']) && isset($_POST['pass'])) { $acces = $site->checkAcces($_POST['user'], $_POST['pass']); } if ($site === false) { $page_source = $tpl->fetch($account->getSkinRemotePhysicalPath() . 'html/Member/Action/Item/NavigateurNotFound.htm', __FILE__, __LINE__); } elseif ($site && !$site->isPublic() && !$acces) { $page_source = $tpl->fetch($account->getSkinRemotePhysicalPath() . 'html/Member/Action/Item/NavigateurAccessDenied.htm', __FILE__, __LINE__); } elseif (is_numeric($url_page) || empty($url_page)) { //Il s'agit d'une page régulière $page_source = self::loadPageSource($account, $site, $url_page, isset($_POST['user']) ? $_POST['user'] : '', isset($_POST['pass']) ? $_POST['pass'] : '', $acces); } else { //Il s'agit d'une page système switch ($url_page) { case 'addsite': $page_source = Member_Action_Item_NavigateurAddsite::generatePage($tpl, $session, $account, $perso); break; case 'addpage': $page_source = Member_Action_Item_NavigateurAddpage::generatePage($tpl, $session, $account, $perso); break; case 'modpage': $page_source = Member_Action_Item_NavigateurModpage::generatePage($tpl, $session, $account, $perso); break; case 'modsite': $page_source = Member_Action_Item_NavigateurModsite::generatePage($tpl, $session, $account, $perso); break; case 'modacces': $page_source = Member_Action_Item_NavigateurModacces::generatePage($tpl, $session, $account, $perso); break; case 'modpageacces': $page_source = Member_Action_Item_NavigateurModpageacces::generatePage($tpl, $session, $account, $perso); break; default: $page_source = $tpl->fetch($account->getSkinRemotePhysicalPath() . 'html/Member/Action/Item/navigateurNotFound.htm', __FILE__, __LINE__); } } //Vérifier si la source -- du site retourné -- comprend un titre ou seulement la source if (count($page_source) == 2) { $tpl->set('TITRE', $page_source[0]); $tpl->set('PAGE', $page_source[1]); } else { $tpl->set('PAGE', $page_source); } //Charger l'index if ($site && ($site->isPublic() || $acces)) { $tpl->set('site', $site); $i = 0; $e = 0; $arrPages = array(); while ($page = $site->getPage($i++)) { if ($page->getShowIndex()) { $arrPages[$e++] = $page; } } $tpl->set('arrPages', $arrPages); //Valider les accès if ($acces && ($acces->canPoste() || $acces->isAdmin())) { $tpl->set('canPost', true); } if ($acces && $acces->isAdmin()) { $tpl->set('admin', true); } $page_source = $tpl->fetch($account->getSkinRemotePhysicalPath() . 'html/Member/Action/Item/NavigateurIndex.htm', __FILE__, __LINE__); $tpl->set('INDEX', $page_source); } //Retourner le template complété/rempli return $tpl->fetch($account->getSkinRemotePhysicalPath() . 'html/Member/Action/Item/Navigateur.htm', __FILE__, __LINE__); }
/** Transfère un item d'un inventaire vers un autre item (ex.:sac). * * @param object &$persoTo Instance de l'item de destination. * @param int $qte Quantité d'item(s) à transférer. */ public function transfererVersItem(&$itemTo, $qte) { if ($qte > $this->getQte()) { die(fctErrorMsg('Vous ne pouvez pas transférer plus que l\'ensemble de départ contient.')); } if ($this->getInvId() == $itemTo->getInvId()) { die(fctErrorMsg('Vous ne pouvez pas transférer un item dans lui-même.')); } //SANS gestion des quantités donc transfert de la totalité et non groupable : tranfert simple if (!$this->canRegroupe() && $this->getQte() == $qte) { $dbMgr = DbManager::getInstance(); //Instancier le gestionnaire $db = $dbMgr->getConn('game'); //Demander la connexion existante $query = 'UPDATE ' . DB_PREFIX . 'item_inv' . ' SET `inv_persoid` = NULL,' . ' `inv_lieutech` = NULL,' . ' `inv_boutiquelieutech` = NULL,' . ' `inv_idcasier` = NULL,' . ' `inv_equip` = NULL,' . ' `inv_itemid` = :itemId' . ' WHERE `inv_id`=:id' . ' LIMIT 1;'; $prep = $db->prepare($query); $prep->bindValue(':itemId', $itemTo->getInvId(), PDO::PARAM_INT); $prep->bindValue(':id', $this->getInvId(), PDO::PARAM_INT); $prep->execute($db, __FILE__, __LINE__); $prep->closeCursor(); $prep = NULL; return; } //AVEC gestion des quantités //Rechercher si un item identique est déjà présent dans l'inventaire du lieu d'arrivé $itemFound = self::itemIsInItem($this, $itemTo); if ($itemFound === false) { //Il s'agit d'un nouvel item //Dupliquer l'item de l'inventaire de l'inventaire du donneur self::duplicateItem($this->getInvId(), $qte, null, null, null, null, $itemTo->getInvId()); } else { //L'item est déjà présent dans l'inventaire du perso, augmenter sa quantité $itemFound->setQte($itemFound->getQte() + $qte); } //Retirer les items à transférer de l'inventaire de départ $this->setQte($this->getQte() - $qte); }
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 preg_match('/^([^\\/]+)(?:[\\/]([a-z0-9]+))?(?:[?](.+))?/', $_POST['url'], $matches); if (count($matches) < 3) { return fctErrorMsg('L\'URL du site est invalide (2).'); } $site_url = $matches[1]; $mod_site_url = $matches[3]; //Vérifier si l'URL existe $site = Member_Siteweb::loadSite($mod_site_url); if (!$site) { return fctErrorMsg('Cette URL n\'existe pas.'); } //Vérifier si l'accès est valide $acces = $site->checkAcces($_POST['user'], $_POST['pass']); if (!$acces) { return fctErrorMsg('Vous ne possèdez pas les autorisations nécésaires (1).'); } if (!$acces->isAdmin()) { return fctErrorMsg('Vous ne possèdez pas les autorisations nécésaires (2).'); } if (isset($_POST['action'])) { //En cas d'ajout, effectuer l'ajout du champ bidon AVANT if ($_POST['action'] == 'add') { $query = 'INSERT INTO ' . DB_PREFIX . 'sitesweb_acces' . ' (`site_id`)' . ' VALUES' . ' (:id);'; $prep = $db->prepare($query); $prep->bindValue(':id', $site->getId(), PDO::PARAM_INT); $prep->executePlus($db, __FILE__, __LINE__); $prep->closeCursor(); $prep = NULL; $site->clearAcces(); } if ($_POST['action'] == 'mod') { $i = 0; while ($ax = $site->getAcces($i++)) { if (isset($_POST['ax_' . $ax->getId() . '_del'])) { if ($acces->getId() == $ax->getId()) { echo fctErrorMSG('Vous ne pouvez pas vous auto-supprimer.'); } else { $query = 'DELETE FROM ' . DB_PREFIX . 'sitesweb_acces' . ' WHERE id=:id' . ' AND site_id=:siteId' . ' LIMIT 1;'; $prep = $db->prepare($query); $prep->bindValue(':siteId', $site->getId(), PDO::PARAM_INT); $prep->bindValue(':id', $ax->getId(), PDO::PARAM_INT); $prep->executePlus($db, __FILE__, __LINE__); $prep->closeCursor(); $prep = NULL; $query = 'DELETE FROM ' . DB_PREFIX . 'sitesweb_pages_acces' . ' WHERE user_id=:userId;'; $prep = $db->prepare($query); $prep->bindValue(':userId', $ax->getId(), PDO::PARAM_INT); $prep->executePlus($db, __FILE__, __LINE__); $prep->closeCursor(); $prep = NULL; } } else { if (isset($_POST['ax_' . $ax->getId() . '_user'])) { $query = 'UPDATE ' . DB_PREFIX . 'sitesweb_acces' . ' SET `user` =:user,' . ' `pass` =:pass,' . ' `accede` =:accede,' . ' `poste` =:poste,' . ' `modifier` =:modifier,' . ' `admin` =:admin' . ' WHERE id=:id' . ' AND site_id=:siteId' . ' LIMIT 1;'; $prep = $db->prepare($query); $prep->bindValue(':user', $_POST['ax_' . $ax->getId() . '_user'], PDO::PARAM_STR); $prep->bindValue(':pass', $_POST['ax_' . $ax->getId() . '_pass'], PDO::PARAM_STR); $prep->bindValue(':accede', isset($_POST['ax_' . $ax->getId() . '_accede']) ? '1' : '0', PDO::PARAM_STR); $prep->bindValue(':poste', isset($_POST['ax_' . $ax->getId() . '_poste']) ? '1' : '0', PDO::PARAM_STR); $prep->bindValue(':modifier', isset($_POST['ax_' . $ax->getId() . '_modifier']) ? '1' : '0', PDO::PARAM_STR); $prep->bindValue(':admin', isset($_POST['ax_' . $ax->getId() . '_admin']) ? '1' : '0', PDO::PARAM_STR); $prep->bindValue(':siteId', $site->getId(), PDO::PARAM_INT); $prep->bindValue(':id', $ax->getId(), PDO::PARAM_INT); $prep->executePlus($db, __FILE__, __LINE__); $prep->closeCursor(); $prep = NULL; } } } $site->clearAcces(); } } //Trouver le accès déjà existants $i = 0; $arrAcces = array(); while ($ax = $site->getAcces($i++)) { $arrAcces[] = $ax; } $tpl->set('ACCES', $arrAcces); //Retourner le template complété/rempli $tpl->set('SITE', $site); return $tpl->fetch($account->getSkinRemotePhysicalPath() . 'html/Member/Action/Item/NavigateurDomnetAcces.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 //Valider si l'URL est spécifiée. if (!isset($_POST['url'])) { return fctErrorMSG('url innexistante'); } //Séparer le site de la page (dans l'URL) preg_match('/^([^\\/]+)(?:[\\/]([a-z0-9]+))?(?:[?](.+))?/', $_POST['url'], $matches); if (count($matches) <= 3) { return fctErrorMSG('url invalide'); } $url_site = $matches[1]; $url_page = $matches[2]; $url_param = $matches[3]; //Id de la page a modifier //Trouver le site qui contient la page $query = 'SELECT s.url' . ' FROM ' . DB_PREFIX . 'sitesweb_pages as p' . ' LEFT JOIN ' . DB_PREFIX . 'sitesweb as s ON (s.id=p.site_id)' . ' WHERE p.id=:id' . ' LIMIT 1;'; $prep = $db->prepare($query); $prep->bindValue(':id', $url_param, PDO::PARAM_INT); $prep->executePlus($db, __FILE__, __LINE__); $arr = $prep->fetch(); $prep->closeCursor(); $prep = NULL; if ($arr === false) { return fctErrorMSG('Page innexistante'); } //Vérifier si l'URL existe $site = Member_Siteweb::loadSite($arr['url']); if (!$site) { return fctErrorMsg('Cette URL n\'existe pas.'); } //Vérifier si l'accès est valide $acces = $site->checkAcces($_POST['user'], $_POST['pass']); if (!$acces) { return fctErrorMsg('Vous ne possèdez pas les autorisations nécésaires (1).'); } if (!$acces->isAdmin()) { return fctErrorMsg('Vous ne possèdez pas les autorisations nécésaires (2).'); } //Charger les accès à la page $query = 'SELECT id, user_id' . ' FROM ' . DB_PREFIX . 'sitesweb_pages_acces' . ' WHERE page_id=:id;'; $prep = $db->prepare($query); $prep->bindValue(':id', $url_param, PDO::PARAM_INT); $prep->executePlus($db, __FILE__, __LINE__); $arrPageAx = $prep->fetchAll(); $prep->closeCursor(); $prep = NULL; $i = 0; $arrAcces = array(); while ($ax = $site->getAcces($i++)) { $tmp = array(); $tmp['obj'] = $ax; $tmp['ax'] = false; foreach ($arrPageAx as $pax) { if ($pax !== false && $pax['user_id'] == $ax->getId()) { $tmp['ax'] = true; break; } } $arrAcces[] = $tmp; } $tpl->set('ACCES', $arrAcces); //Trouver la page $query = 'SELECT *' . ' FROM ' . DB_PREFIX . 'sitesweb_pages' . ' WHERE `id` = :id' . ' LIMIT 1;'; $prep = $db->prepare($query); $prep->bindValue(':id', $url_param, PDO::PARAM_INT); $prep->executePlus($db, __FILE__, __LINE__); $arr = $prep->fetch(); $prep->closeCursor(); $prep = NULL; if ($arr === false) { return fctErrorMSG('page invalide (1)'); } $page = new Member_SitewebPage($arr); $tpl->set('PAGE', $page); //Retourner le template complété/rempli return $tpl->fetch($account->getSkinRemotePhysicalPath() . 'html/Member/Action/Item/NavigateurDomnetModpageacces.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 $actionPa = 3; $cout_ouverture = 7500; if ($perso->getPa() <= $actionPa) { return fctErrorMsg('Vous n\'avez pas assez de PA pour effectuer cette action.'); } if (!isset($_POST['url'])) { return fctErrorMsg('Paramètre requis manquant.'); } //Valider si le joueur à accès à Internet if (Member_Action_Item_Navigateur::checkAccess($perso) === false) { return fctErrorMSG('Vous n\'avez pas accès à Internet.'); } //Vérifier l'état du perso if (!$perso->isConscient()) { die('01|' . 'Votre n\'êtes pas en état d\'effectuer cette action.'); } if ($perso->getPa() < $actionPa) { die('02|' . 'Vous n\'avez pas assez de PA pour effectuer cette action.'); } if (!preg_match('/^[A-Za-z0-9\\.-_]+$/', $_POST['url'], $matches)) { die('03|' . 'L\'URL dU site est invalide.'); } if (!preg_match('/^([0-9]{4})-([0-9]{4}-[0-9]{4}-[0-9]{4})-([0-9]+)$/', $_POST['no'], $matches)) { die('04|' . 'Le # de la carte est invalide.'); } $carte_banque = $matches[1]; $carte_compte = $matches[2]; $carte_id = $matches[3]; $query = 'SELECT *' . ' FROM ' . DB_PREFIX . 'banque_cartes' . ' WHERE carte_banque=:carteBanque' . ' AND carte_compte=:carteCompte' . ' AND carte_id =:carteId' . ' LIMIT 1;'; $prep = $db->prepare($query); $prep->bindValue(':carteBanque', $carte_banque, PDO::PARAM_STR); $prep->bindValue(':carteCompte', $carte_compte, PDO::PARAM_STR); $prep->bindValue(':carteId', $carte_id, PDO::PARAM_INT); $prep->executePlus($db, __FILE__, __LINE__); $carte = $prep->fetch(); $prep->closeCursor(); $prep = NULL; if ($carte === false) { die('05|' . 'Cette carte est innexistante.'); } if ($carte['carte_valid'] == 0) { die('06|' . 'Cette carte a été désactivée.'); } if ($carte['carte_nip'] != $_POST['nip']) { die('07|' . 'NIP erroné.'); } //Valider le montant du compte associé à la carte $query = 'SELECT *' . ' FROM ' . DB_PREFIX . 'banque_comptes' . ' WHERE compte_banque=:carteBanque' . ' AND compte_compte=:carteCompte;'; $prep = $db->prepare($query); $prep->bindValue(':carteBanque', $carte_banque, PDO::PARAM_STR); $prep->bindValue(':carteCompte', $carte_compte, PDO::PARAM_STR); $prep->executePlus($db, __FILE__, __LINE__); $arr = $prep->fetch(); $prep->closeCursor(); $prep = NULL; if ($arr === false) { die('08|' . 'Le compte associé à la carte a été fermé.'); } $compte = new Member_BanqueCompte($arr); if ($compte->getCash() < $cout_ouverture) { die('09|' . 'Compte sans fond.'); } //Vérifier si l'URL existe déjà $query = 'SELECT id' . ' FROM ' . DB_PREFIX . 'sitesweb' . ' WHERE url=:url;'; $prep = $db->prepare($query); $prep->bindValue(':url', $_POST['url'], PDO::PARAM_STR); $prep->executePlus($db, __FILE__, __LINE__); $arr = $prep->fetch(); $prep->closeCursor(); $prep = NULL; if ($arr !== false) { die('10|' . 'Cette URL existe déjà, veuillez en choisir une autre.'); } //Tout est ok, Créer le site !!!!! $perso->changePa('-', $actionPa); $perso->setPa(); $compte->changeCash('-', $cout_ouverture); $compte->setCash(); $compte->add_bq_hist('', 'WWWA', $cout_ouverture); $query = 'INSERT INTO ' . DB_PREFIX . 'sitesweb' . ' (`url`, `titre`, `acces`)' . ' VALUES' . ' (:url, :titre, "pub");'; $prep = $db->prepare($query); $prep->bindValue(':url', $_POST['url'], PDO::PARAM_STR); $prep->bindValue(':titre', $_POST['titre'], PDO::PARAM_STR); $prep->executePlus($db, __FILE__, __LINE__); $prep->closeCursor(); $prep = NULL; $siteid = $db->lastInsertId(); //Créer l'accès admin au site $query = 'INSERT INTO ' . DB_PREFIX . 'sitesweb_acces' . ' (`site_id`, `user`, `pass`, `accede`, `poste`, `modifier`, `admin`)' . ' VALUES' . ' (:siteId, :user, :pass, "1", "1", "1", "1");'; $prep = $db->prepare($query); $prep->bindValue(':siteId', $siteid, PDO::PARAM_INT); $prep->bindValue(':user', $_POST['user'], PDO::PARAM_STR); $prep->bindValue(':pass', $_POST['pass'], PDO::PARAM_STR); $prep->executePlus($db, __FILE__, __LINE__); $prep->closeCursor(); $prep = NULL; die('OK|' . $perso->getPa() . '|' . $_POST['url']); //Tout est OK }