/** * Extrait les membre des donnes de battlnet et et les transforme en objet utilisable de notre coté. * @param type $aDataGuildeBnet * @param \Core\Model\Guildes $oGuilde * @param array $aOptionFiltre lvlMin| * @return array de \Core\Model\Personnages * @throws Exception */ public static function extraitMembreDepuisBnetGuilde($aDataGuildeBnet, \Commun\Model\Guildes $oGuilde, array $aOptionFiltre) { if (!isset($aDataGuildeBnet)) { throw new Exception("Les datas pour l'extraction de membres issues de bnet ne peuvent être vide."); } $aPersonnage = array(); $lvlMin = 0; if (isset($aOptionFiltre)) { if (isset($aOptionFiltre['lvlMin'])) { $lvlMin = $aOptionFiltre['lvlMin']; } } if (isset($aDataGuildeBnet['members'])) { foreach ($aDataGuildeBnet['members'] as $aCharacter) { if ($aCharacter['character']['level'] >= $lvlMin) { // $oPersonnage = new \Commun\Model\Personnages(); // $oPersonnage->setNom($aCharacter['character']['name']); // $oPersonnage->setNiveau($aCharacter['character']['level']); // $oPersonnage->setIdGuildes($oGuilde->getIdGuildes()); // $oPersonnage->setIdClasses($aCharacter['character']['class']); // //$oPersonnage->setIdFaction($aCharacter['character']['faction']); // $oPersonnage->setIdFaction($oGuilde->getIdFaction()); // $oPersonnage->setIdRace($aCharacter['character']['race']); // $oPersonnage->setGenre($aCharacter['character']['gender']); // $oPersonnage->setRoyaume($aCharacter['character']['realm']); // $oPersonnage->setminiature($aCharacter['character']['thumbnail']); // $aPersonnage[] = $oPersonnage; $oPersonnage = \Core\Util\ParserWow::extraitPersonnageDepuisBnet($aCharacter['character']); $oPersonnage->setIdGuildes($oGuilde->getIdGuildes()); $oPersonnage->setIdFaction($oGuilde->getIdFaction()); $aPersonnage[] = $oPersonnage; } } return $aPersonnage; } }
/** * Sauvegarde les personnages du raid. * @param array $aMembre * @param \Commun\Model\Raids $oRaid * @param sring $sServeur * @param \Zend\Config\Config $oData * @param \Zend\Config\Writer\Json $oWriter * @return \Core\Model\Personnages */ private function savePersonnages($aMembre, $oRaid, $sServeur, \Zend\Config\Config $oData, \Zend\Config\Writer\Json $oWriter) { try { $aLstPersonnage = array(); foreach ($aMembre as $aPersonnage) { $sNom = $aPersonnage['name']; $sServeurPersonnage = $sServeur; // si le nom contient un '-' alors il est suivi du nom du serveur $pos = strrpos($sNom, "-"); if ($pos !== false) { $sServeurPersonnage = substr($sNom, $pos + 1); $sNom = substr($sNom, 0, $pos); } $sServeurPersonnage = preg_replace('/(\\w+)([A-Z])/U', '\\1 \\2', $sServeurPersonnage); // $sServeurPersonnage = str_replace('des', ' des', $sServeurPersonnage); //TODO Anta A revoir $sServeurPersonnage = str_replace('Croisadeécarlate', 'Croisade écarlate', $sServeurPersonnage); $sServeurPersonnage = str_replace("Pozzodell'Eternità", "Pozzo dell'Eternità", $sServeurPersonnage); $sServeurPersonnage = str_replace("Chantséternels", "Chants éternels", $sServeurPersonnage); $sServeurPersonnage = str_replace("Conseildes Ombres", "Conseil des Ombres", $sServeurPersonnage); //fin TODO Anta $aOptPersonnage = array('nom' => $sNom, 'serveur' => $sServeurPersonnage); // ne marche pas avec les membre sur sargeras et chez mystra (c'est le serveur sargeras qui du coup utiliser pour chercher la guilde mystra) // pas très grave // if (isset($aPersonnage['guild'])) { // $aOptGuilde = array( // 'guilde' => $aPersonnage['guild'], // 'serveur' => $sServeurPersonnage, // 'lvlMin' => 100, // 'imp-membre' => 'Non', // ); // $oGuildes = $this->getTableGuilde()->importGuilde($aOptGuilde); // } $aPersoBnet = $this->getTablePersonnage()->importPersonnage($aOptPersonnage); $oPersonnage = \Core\Util\ParserWow::extraitPersonnageDepuisBnet($aPersoBnet); $oPersonnage = $this->getTablePersonnage()->saveOrUpdatePersonnage($oPersonnage); // on cree le lien raid personnage $this->getTableRaidPersonnages()->saveOrUpdateRaid($oPersonnage, $oRaid); $aLstPersonnage[] = $oPersonnage; } return $aLstPersonnage; } catch (\Exception $ex) { throw new \Exception("Erreur lors de la sauvagarde des personnages", 0, $ex); } }
/** * Traitement de l'import Bnet. * * @return array */ public function importTraitementAction() { $aOptPersonnage = array('nom' => '', 'serveur' => ''); $this->layout('layout/ajax'); //$this->layout('backend/layout'); $oRequest = $this->getRequest(); if ($oRequest->isPost()) { $aPost = $oRequest->getPost(); $this->getTablePersonnage()->beginTransaction(); try { $aPersoBnet = $this->getTablePersonnage()->importPersonnage($aPost); $oPersonnage = \Core\Util\ParserWow::extraitPersonnageDepuisBnet($aPersoBnet); $this->getTablePersonnage()->saveOrUpdatePersonnage($oPersonnage); $this->getTablePersonnage()->commit(); $msg = $this->_getServTranslator()->translate("Le personnage a été importé avec succès."); $this->_getLogService()->log(LogService::INFO, $msg, LogService::USER, $aPost); } catch (\Exception $exc) { // on rollback en cas d'erreur $this->getTablePersonnage()->rollback(); $this->_getLogService()->log(LogService::ERR, $exc->getMessage(), LogService::USER, $aPost); $aAjaxEx = \Core\Util\ParseException::tranformeExceptionToArray($exc); $result = new JsonModel(array('error' => $aAjaxEx)); return $result; } } $result = new JsonModel(array('success' => array('msg' => $this->_getServTranslator()->translate('Personnage importé avec succès')))); return $result; }
/** * Action pour la majour des personnage du roster. * * @return array */ public function majAction() { $id = (int) $this->params()->fromRoute('id', 0); try { $oEntite = $this->getTableRoster()->findRow($id); if (!$oEntite) { $this->flashMessenger()->addMessage($this->_getServTranslator()->translate("Identifiant de roster inconnu."), 'error'); return $this->redirect()->toRoute('backend-roster-list'); } } catch (\Exception $ex) { $this->flashMessenger()->addMessage($this->_getServTranslator()->translate("Une erreur est survenue lors de la récupération du roster."), 'error'); return $this->redirect()->toRoute('backend-roster-list'); } $this->layout('layout/ajax'); $oRequest = $this->getRequest(); try { $oTabRosterHasPersonnage = $this->getTableRosterHasPersonnage()->select(array('idRoster' => $id)); if (isset($oTabRosterHasPersonnage)) { foreach ($oTabRosterHasPersonnage as $aCharacter) { $oPerso = $this->getTablePersonnage()->findRow($aCharacter['idPersonnage']); $aPersonnage = array('serveur' => $oPerso->getRoyaume(), 'nom' => $oPerso->getNom()); $aPersoBnet = $this->getTablePersonnage()->importPersonnage($aPersonnage); $oPersonnage = \Core\Util\ParserWow::extraitPersonnageDepuisBnet($aPersoBnet); $this->getTablePersonnage()->saveOrUpdatePersonnage($oPersonnage); } } return new JsonModel(array('success' => array('msg' => $this->_getServTranslator()->translate('Personnage mis à jour avec succès')))); } catch (\Exception $ex) { $aAjaxEx = \Core\Util\ParseException::tranformeExceptionToArray($ex); $result = new JsonModel(array('error' => $aAjaxEx)); return $result; } }