Пример #1
0
 /**
  * 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;
     }
 }
Пример #2
0
 /**
  * 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);
     }
 }
Пример #3
0
 /**
  * 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;
     }
 }