Forum des Objets Communicants et Solutions pour les Libérer...
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.

Forum des Objets Communicants et Solutions pour les Libérer...


 
AccueilAccueil  GalerieGalerie  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  Connexion  
Le deal à ne pas rater :
Elden Ring Shadow Of The Erdtree édition Collector : où le ...
Voir le deal

 

 Script PHP de mise à jour des clins d'oeil

Aller en bas 
+3
lolly27
nabazland
quichedood
7 participants
AuteurMessage
quichedood
Nabz Junior
Nabz Junior
quichedood


Localisation : Val d'oise (95)
Nbr de messages : 99
Carottes : 6641

Script PHP de mise à jour des clins d'oeil Empty
MessageSujet: Script PHP de mise à jour des clins d'oeil   Script PHP de mise à jour des clins d'oeil Icon_minitimeSam 24 Fév 2007 - 18:05

Salut à tous,

Juste pour partager un petit bout de code que j'ai réalisé et qui pourrait servir à certains d'entre vous (à moins que vous l'ayez déjà fait :p)

Code:
$array_char_explode_1 = array('=','>','"');
$array_char_explode_2 = array('\',\'','(\'','\')');
$string_to_find_2 = 'onclick="selectItem(\'';
$array_lang = array(1, 2);
foreach($array_lang as $id_lang) {
   $idm_file_violet = 'http://my.nabaztag.com/vl/action/myMessagesClin.do?langClin='.$id_lang;
   $idm_file_violet_2 = 'http://my.nabaztag.com/vl/action/myMessagesClinChoice.do?langClin='.$id_lang.'&idClin=';
   $string_to_find_1 = 'myMessagesClinChoice.do?langClin='.$id_lang.'&idClin=';
   if ($handle = @fopen($idm_file_violet, 'r')) {
      while (!feof($handle)) {
         $string_1 = strstr(fgets($handle), $string_to_find_1);
         if($string_1 != FALSE) {
            $string_detail_1 = explode('|', str_replace($array_char_explode_1,'|', $string_1));
            $array_type_wink[] = array('id' => $string_detail_1[2], 'name' => $string_detail_1[7]);
         }
      }
      fclose($handle);
      foreach($array_type_wink as $wink_category) {
         if ($handle = @fopen($idm_file_violet_2.$wink_category['id'], 'r')) {
            while (!feof($handle)) {
               $string_2 = strstr(fgets($handle), $string_to_find_2);
               if($string_2 != FALSE) {
                  $string_detail_2 = explode('|', str_replace($array_char_explode_2,'|', $string_2));
                  $buffer[] = array('num' => $string_detail_2[2], 'aff' => utf8_decode(stripslashes($string_detail_2[1])));
               }
            }
            fclose($handle);
         }
      }
      unset($array_type_wink);
   }
}

La liste des clins d'oeil (id + nom) se retrouve dans le tableau "buffer"

Voilà c'est tout yellownabzwink
Revenir en haut Aller en bas
http://planmyrabbit.panik-po.com
nabazland
Karotzeur taquin
nabazland


Age : 57
Localisation : Rouen - France
Nabaztag : Caulfield (v2.1)
Nbr de messages : 9783
Carottes : 13096

Script PHP de mise à jour des clins d'oeil Empty
MessageSujet: Re: Script PHP de mise à jour des clins d'oeil   Script PHP de mise à jour des clins d'oeil Icon_minitimeSam 24 Fév 2007 - 19:05

Ben ca c'est une bonne idée !
Merchiiiiii !
Revenir en haut Aller en bas
http://www.nabzone.com
lolly27
Diamond Nabz
Diamond Nabz
lolly27


Age : 48
Localisation : France
Nabaztag : LOLLY (v2)
Nbr de messages : 2510
Carottes : 6310

Script PHP de mise à jour des clins d'oeil Empty
MessageSujet: Re: Script PHP de mise à jour des clins d'oeil   Script PHP de mise à jour des clins d'oeil Icon_minitimeSam 24 Fév 2007 - 19:46

Hi hi hi comme d'hab je sais pas comment smen servir ni où mettre ça ! big green
Revenir en haut Aller en bas
http://lollysflavours.com
quichedood
Nabz Junior
Nabz Junior
quichedood


Localisation : Val d'oise (95)
Nbr de messages : 99
Carottes : 6641

Script PHP de mise à jour des clins d'oeil Empty
MessageSujet: Re: Script PHP de mise à jour des clins d'oeil   Script PHP de mise à jour des clins d'oeil Icon_minitimeSam 24 Fév 2007 - 20:15

Ce script ce destine à ceux qui utilise l'API via un site en PHP.

Il faut rajouter des bricoles autour selon ce que vous voulez en faire. Tout seul il renvoie juste un tableau avec le nom des clins d'oeil et leurs id respectifs. (ensuite par exemple on peut rajouter quelques lignes pour mettre à jour une base de données ...)

Pour ceux et celles qui utilisent des scripts mis à disposition par d'autres membres du forum, passez votre chemin ça va vous donner mal à la tête plutôt qu'autre chose :p
Revenir en haut Aller en bas
http://planmyrabbit.panik-po.com
BigPanda
Kryptonite Nabz
Kryptonite Nabz
BigPanda


Age : 41
Localisation : Bruxelles
Nabaztag : RyoOhki (V1), Meroko (V2), Iori (V3)
Nbr de messages : 7127
Carottes : 13093

Script PHP de mise à jour des clins d'oeil Empty
MessageSujet: Re: Script PHP de mise à jour des clins d'oeil   Script PHP de mise à jour des clins d'oeil Icon_minitimeLun 26 Fév 2007 - 13:01

Oooooooh, c'est vrai qu'elle est bonne cette idée tiens yellownabzsmile
dés que je peux rebrancher RyoOhki, j'regarderai pour l'intégrer ,à mon site yellownabzwink Merciiiiiiiiiiiiiiiiii yellownabzsmile
Revenir en haut Aller en bas
http://www.tartesetbastons.be
quichedood
Nabz Junior
Nabz Junior
quichedood


Localisation : Val d'oise (95)
Nbr de messages : 99
Carottes : 6641

Script PHP de mise à jour des clins d'oeil Empty
MessageSujet: Re: Script PHP de mise à jour des clins d'oeil   Script PHP de mise à jour des clins d'oeil Icon_minitimeLun 26 Fév 2007 - 13:15

Au plaisir yellownabzsmile
Bon là ça sépare pas les catégories mais en rajoutant 1 ou 2 lignes au bon endroit ça devrait le faire yellownabzwink
Revenir en haut Aller en bas
http://planmyrabbit.panik-po.com
rebolon
Lapin nain
Lapin nain



Localisation : Lyon
Nbr de messages : 32
Carottes : 6272

Script PHP de mise à jour des clins d'oeil Empty
MessageSujet: Re: Script PHP de mise à jour des clins d'oeil   Script PHP de mise à jour des clins d'oeil Icon_minitimeVen 22 Juin 2007 - 15:46

Bon je me suis inspiré de ton code et voilà ce que j'en ai fait. Perso, je préfère la programation objet et la manipulation d'objet DOM.
Après je laisse libre court à votre imagination pour l'utiliser correctement

Code:

class violetClinDoeil
{
   public $aRubrique ;
   public $aLang ;
   public $sGetLangParamLabel ;
   public $sGetIdParamLabel ;
   public $sVioletActionURI ;
   public $sVioletUriRubrique ;
   public $sVioletUriSsRubrique ;
   
   function __construct( $iLang=null, $iRub=null )
   {
      $this->sGetLangParamLabel = 'langClin' ;
      $this->sGetIdParamLabel = 'idClin' ;
      $this->sVioletActionUri = __VIOLET_URI_ACTION__ ;
      $this->sVioletUriRubrique = 'myMessagesClin' ;
      $this->sVioletUriSsRubrique = $this->sVioletUriRubrique.__VIOLET_URI_SS_RUBRIQUE_LABEL__ ;
      $this->sVioletUriExt = '.do' ;
      try
      {
         $this->getLang() ;
         if( count( $this->aRubrique ) == 0 )
            $this->getItem( $iLang, $iRub ) ;
      }
      catch( Exception $oE )
      {
         echo $oE->getMessage() ;
      }
   }

   /*
   * récupère la liste des langues
   */
   private function getLang()
   {
      $sURI_rubrique = $this->sVioletActionUri.$this->sVioletUriRubrique.$this->sVioletUriExt ;
      
      $dom = new DOMDocument();
      $dom->loadHTMLFile( $sURI_rubrique );
      $oDomXpath = new DOMXPath($dom);
      $sMask = "//div/ul[@class='langSelect']/li" ; // on va parcourir les données html qui nous intéresse : les cellules du tableau ayant pour class: 'choixListItem' et qui est contenu dans une div qu ia pour class 'listItemContener'
      $oEntries = $oDomXpath->query( $sMask ) ;
      foreach( $oEntries as $oEntry )
      {   
         $oA = $oEntry->getElementsByTagName( 'a' ) ;
         for( $i=0; $i<$oA->length ; $i++ )
         {
            $sTextToFind = 'langClin=' ;
            $aRegExp = array();
            preg_match( '('.$sTextToFind.'[0-9]*)', $oA->item($i)->getAttribute( 'onclick' ), $aRegExp );
            $iLangId = trim( strtr( $aRegExp[0], array($sTextToFind=>'') ) ) ;
            $sLangName = utf8_decode(trim($oA->item($i)->nodeValue) ) ;
            $aLang[$iLangId] = array( 'id'=>$iLangId , 'name'=>utf8_decode($sLangName) );
         }
      }
      
      $this->aLang = $aLang ;   
   }
   
   /*
   * vérification de la cohérence de la langue
   */
   private function checkLang( $iLang )
   {
      // recherche si la langue existe
      $bLangFound = false ;
      foreach( $this->aLang as $aLang )
      {
         if( !isset( $aFirstLang ) )
            $aFirstLang = $aLang ;
         
         if( $aLang['id'] == $iLang )
            $bLangFound = true ;
            
         if( $bLangFound )
            break ;
      }
      
      // si pas de lang fournit ou si la langue n'existe pas on prend la première trouvée
      if( is_null($iLang) || !$bLangFound )
         return $aFirstLang ;
      else
         return $aLang ;
   }
   
   /*
   * vérification de la cohérence du rubrique ID
   */
   private function checkRubrique( $iLang, $iRub )
   {
      $bRubFound = false ;
      foreach( $this->aRubrique[$iLang]['rub'] as $aCurRub )
      {   
         if( !isset( $iFirstRub ) )
            $iFirstRub = $aCurRub['id'] ;
            
         if( $aCurRub['id'] == $iRub )
            $bRubFound = true ;
            
         if( $bRubFound )
            break ;
      }   
      
      // si pas de rubrique fournit ou si la rubrique n'existe pas on prend la première trouvée
      if( is_null($iRub) || !$bRubFound )
         return $iFirstRub ;
      else
         return $iRub ;
      
   }
   
   // récupère la liste des rubriques des clins d'oeil disponibles chez Violet
   // On ne récupère pas toute la liste des rubriques par langue car il y a trop de langue et du coup la requête est trop longue
   // return array( langID => array( array( id=>int, name=>string) ) ) ;
   /*
   * liste des rubriques (thèmes) disponibles pour une langue donnée
   */
   private function getRubrique( $iLang = null )
   {
      if( count($this->aLang) < 1 )
         throw new Exception ( __ERR_NO_LANG_RETREIVED__ ) ;
      
      // récupération de la langue à utiliser après vérification
      $aLang = $this->checkLang( $iLang ) ;
         
      $sURI_rubrique = $this->sVioletActionUri.$this->sVioletUriRubrique.$this->sVioletUriExt.'?'.$this->sGetLangParamLabel.'='.$aLang['id'];

      if( !is_array($this->aRubrique) || !array_key_exists($aLang['id'], $this->aRubrique ) )
      {
         $aRubrique['lang'] = $aLang ;
         
         $dom = new DOMDocument();
         $dom->loadHTMLFile( $sURI_rubrique );
         $oDiv = $dom->getElementsByTagName('div');
         for( $i=0; $i<$oDiv->length ; $i++)
         {
            $sClassName = 'specialBlock' ;
            if( $oDiv->item($i)->hasAttribute('class') && $oDiv->item($i)->getAttribute('class') == $sClassName )
            {
               $oUl = $oDiv->item($i)->getElementsByTagName('ul');
               if( $oUl->length == 1 )
               {
                  $oLi = $oUl->item(0)->getElementsByTagName('li');
                  for( $j=0; $j<$oLi->length ; $j++)
                  {
                     if( $oLi->item($j)->hasChildNodes () )
                     {
                        $sGetParam = 'idClin' ;
                        $sAttToFind = 'href' ;
                        $aUriQuery=array() ;
                        parse_str( parse_url($oLi->item($j)->firstChild->getAttribute( $sAttToFind ), PHP_URL_QUERY ), $aUriQuery ) ;
                        $iRubId = $aUriQuery[$sGetParam] ;
                        $sRubName = utf8_decode( strtr($oLi->item($j)->firstChild->nodeValue, array(chr(10)=>'') ) ) ;
                        if( !is_null($iRubId) ) // enlève le shuffle
                           $aRubrique['rub'][$iRubId] = array('id' =>$iRubId , 'name' =>$sRubName ) ;
                     }
                  }
               }
            }
         }
         
         $this->aRubrique[$aLang['id']] = $aRubrique ;
      }
      
      return $aLang ;

   }
   
   /*
   * getItem : liste des objets d'une section (et langue) donnée que l'on peut envoyer à quelqu'un
   */
   private function getItem( $iLang=null, $iRub=null )
   {
      $aLang = $this->getRubrique( $iLang ) ;
      
      $iRub = $this->checkRubrique( $aLang['id'], $iRub ) ;
      $aCurRub = & $this->aRubrique[$aLang['id']]['rub'][$iRub] ;
      
      if( !array_key_exists('item', $aCurRub ) )
      {   
         $sCurrURI = $this->sVioletActionUri.$this->sVioletUriSsRubrique.$this->sVioletUriExt.'?'.$this->sGetLangParamLabel.'='.$aLang['id'].'&'.$this->sGetIdParamLabel.'='.$aCurRub['id'] ; //on peut rajouter height et width pour avoir un affichage différent   

         $dom = new DOMDocument();
         $dom->loadHTMLFile( $sCurrURI );
         $sDivClassName = 'listItemContener' ; // la div qui nous intéresse a pour attribut class dont la valeur est spécifiée ici
         $sTableClassName = 'choixListItem' ; // le tableau qui nous intéresse a pour attribut class dont la valeur est spécifiée ici
         $oDomXpath = new DOMXPath($dom);
         $sMask = "//div[@class='".$sDivClassName."']/table[@class='".$sTableClassName."']/tr" ; // on va parcourir les données html qui nous intéresse : les cellules du tableau ayant pour class: 'choixListItem' et qui est contenu dans une div qu ia pour class 'listItemContener'
         $oEntries = $oDomXpath->query( $sMask ) ;
         foreach( $oEntries as $oEntry )
         {       
            $sAttIdToFind = 'title' ;
            $oA = $oEntry->getElementsByTagName( 'a' ) ;
            for( $i=0; $i<$oA->length ; $i++ )
            {
               if( $oA->item($i)->getAttribute( 'class' ) == 'name' )
               {
                  $sGetParam = 'id' ;
                  $aItemIdMask = array(' = '=>'=') ;
                  $aUriQuery=array() ;
                  parse_str( strtr($oA->item($i)->getAttribute( $sAttIdToFind ), $aItemIdMask ), $aUriQuery ) ;   
                  $iRubId = $aUriQuery[$sGetParam] ;
                  $sRubName = utf8_decode(trim($oA->item($i)->nodeValue) ) ;
                  $aCurRub['item'][$iRubId] = array('id' =>$iRubId , 'name' =>$sRubName ) ;
               }
            }
         }
      }
   }
   
   // Retourne la dernière rubrique récupérée
   public function getAllItem( $iLang = null )
   {
      return $this->aRubrique ;
   }
   
}

pour utiliser ajouter le code suivant :
Code:

// Retire les warnings / notices mais pas les fatals
ini_set('error_reporting', E_ERROR ) ;
// Définit les paramètres par défaut
$iLang = null ;
$iRub = null ;
// Génère l'arbre des données à utiliser
$oClinDoeil = new violetClinDoeil($iLang, $iRub) ;

// Trace de l'objet généré
echo '<pre>';
print_r( $oClinDoeil );
die;

A vous d'ajouter les méthodes qui vous permettront de travailler sur l'objet retourné afin d'afficher une liste de langue, la liste des rubriques, la liste des sons à envoyer à vos NabazTag

Faites en bon usage
Revenir en haut Aller en bas
nabazland
Karotzeur taquin
nabazland


Age : 57
Localisation : Rouen - France
Nabaztag : Caulfield (v2.1)
Nbr de messages : 9783
Carottes : 13096

Script PHP de mise à jour des clins d'oeil Empty
MessageSujet: Re: Script PHP de mise à jour des clins d'oeil   Script PHP de mise à jour des clins d'oeil Icon_minitimeVen 22 Juin 2007 - 16:00

Oh ben merci...
Faudrait que je mette à jour mes interfaces... !
Revenir en haut Aller en bas
http://www.nabzone.com
rebolon
Lapin nain
Lapin nain



Localisation : Lyon
Nbr de messages : 32
Carottes : 6272

Script PHP de mise à jour des clins d'oeil Empty
MessageSujet: Re: Script PHP de mise à jour des clins d'oeil   Script PHP de mise à jour des clins d'oeil Icon_minitimeVen 22 Juin 2007 - 16:32

Bon j'ai pas pu éditer mon précédent post à temps, alors voilà un cht'i correctif :
à savoir l'ajout des getRubriqueUri et getItemUri pour éviter de faire de erreurs bêtes dans la saisie des Uri.
j'avais oublié de mettre la constante pour accéder à Violet
et enfin, j'ai aussi mis une classe abstraite pour que vous puissiez développer les autres classes (bibliothèque et NabShare par exemple).
Pour les faignants, j'ai aussi les autres classes, donc contactez moi pour que je vous les envoies.


Code:

define( '__VIOLET_URI_ACTION__',                   'http://my.nabaztag.com/vl/action/' ) ;
define( '__VIOLET_URI_SS_RUBRIQUE_LABEL__',          'Choice' ) ;

abstract class violetAPI
{
   public $aRubrique ;
   public $aLang ;
   protected $sGetLangParamLabel ;
   protected $sGetIdParamLabel ;
   protected $sVioletActionURI ;
   protected $sVioletUriRubrique ;
   protected $sVioletUriSsRubrique ;
   
   abstract protected function getRubriqueUri() ;
   abstract protected function getSubRubriqueUri() ;
   abstract protected function getLang() ;
   abstract protected function checkLang( $iLangID ) ;
   abstract protected function checkRubrique( $iLangID, $iRubID ) ;
   abstract protected function getRubrique( $iLangID = null ) ;
   abstract protected function getItem( $iLangID = null, $iRubID = null ) ;
   abstract public function getAllItem( $iLangID = null ) ;
   
}

class violetClinDoeil extends violetAPI
{
   function __construct( $iLang=null, $iRub=null )
   {
      $this->sGetLangParamLabel = 'langClin' ;
      $this->sGetIdParamLabel = 'idClin' ;
      $this->sVioletActionUri = __VIOLET_URI_ACTION__ ;
      $this->sVioletUriRubrique = 'myMessagesClin' ;
      $this->sVioletUriSsRubrique = $this->sVioletUriRubrique.__VIOLET_URI_SS_RUBRIQUE_LABEL__ ;
      $this->sVioletUriExt = '.do' ;
      
      //Récupère les langues
      $this->getLang() ;
      
      // Traitement des données récupérées
      try
      {
         $this->getLang() ;
         if( count( $this->aRubrique ) == 0 )
            $this->getItem( $iLang, $iRub ) ;
      }
      catch( Exception $oE )
      {
         echo $oE->getMessage() ;
      }
   }
   
   /*
   * génère l'uri d'accès à violet : rubrique
   */
   protected function getRubriqueUri()
   {
      return $this->sVioletActionUri.$this->sVioletUriRubrique.$this->sVioletUriExt ;
   }
   
   /*
   * génère l'uri d'accès à violet : ss rubrique
   */
   protected function getSubRubriqueUri()
   {
      return $this->sVioletActionUri.$this->sVioletUriSsRubrique.$this->sVioletUriExt ;
   }

   /*
   * récupère la liste des langues, sans recharger la page une nouvelle ( on se sert de sVioletFirstPageContent )
   */
   protected function getLang()
   {
      $sURI_rubrique = $this->getRubriqueUri() ;
      
      $dom = new DOMDocument();
      $dom->loadHTMLFile( $sURI_rubrique );
      $oDomXpath = new DOMXPath($dom);
      $sMask = "//div/ul[@class='langSelect']/li" ; // on va parcourir les données html qui nous intéresse : les cellules du tableau ayant pour class: 'choixListItem' et qui est contenu dans une div qu ia pour class 'listItemContener'
      $oEntries = $oDomXpath->query( $sMask ) ;
      foreach( $oEntries as $oEntry )
      {   
         $oA = $oEntry->getElementsByTagName( 'a' ) ;
         for( $i=0; $i<$oA->length ; $i++ )
         {
            $sTextToFind = 'langClin=' ;
            $aRegExp = array();
            preg_match( '('.$sTextToFind.'[0-9]*)', $oA->item($i)->getAttribute( 'onclick' ), $aRegExp );
            $iLangId = trim( strtr( $aRegExp[0], array($sTextToFind=>'') ) ) ;
            $sLangName = utf8_decode(trim($oA->item($i)->nodeValue) ) ;
            $aLang[$iLangId] = array( 'id'=>$iLangId , 'name'=>utf8_decode($sLangName) );
         }
      }
      
      $this->aLang = $aLang ;      
   }
   
   /*
   * vérification de la cohérence de la langue
   */
   protected function checkLang( $iLang )
   {
      // recherche si la langue existe
      $bLangFound = false ;
      foreach( $this->aLang as $aLang )
      {
         if( !isset( $aFirstLang ) )
            $aFirstLang = $aLang ;
         
         if( $aLang['id'] == $iLang )
            $bLangFound = true ;
            
         if( $bLangFound )
            break ;
      }
      
      // si pas de lang fournit ou si la langue n'existe pas on prend la première trouvée
      if( is_null($iLang) || !$bLangFound )
         return $aFirstLang ;
      else
         return $aLang ;
   }
   
   /*
   * vérification de la cohérence du rubrique ID
   */
   protected function checkRubrique( $iLang, $iRub )
   {
      $bRubFound = false ;
      foreach( $this->aRubrique[$iLang]['rub'] as $aCurRub )
      {   
         if( !isset( $iFirstRub ) )
            $iFirstRub = $aCurRub['id'] ;
            
         if( $aCurRub['id'] == $iRub )
            $bRubFound = true ;
            
         if( $bRubFound )
            break ;
      }   
      
      // si pas de rubrique fournit ou si la rubrique n'existe pas on prend la première trouvée
      if( is_null($iRub) || !$bRubFound )
         return $iFirstRub ;
      else
         return $iRub ;
      
   }
   
   // récupère la liste des rubriques des clins d'oeil disponibles chez Violet
   // On ne récupère pas toute la liste des rubriques par langue car il y a trop de langue et du coup la requête est trop longue
   // return array( langID => array( array( id=>int, name=>string) ) ) ;
   /*
   * liste des rubriques (thèmes) disponibles pour une langue donnée
   */
   protected function getRubrique( $iLang = null )
   {
      if( count($this->aLang) < 1 )
         throw new Exception ( __ERR_NO_LANG_RETREIVED__ ) ;
      
      // récupération de la langue à utiliser après vérification
      $aLang = $this->checkLang( $iLang ) ;
         
      if( !is_array($this->aRubrique) || !array_key_exists($aLang['id'], $this->aRubrique ) )
      {
         $sURI_rubrique = $this->getRubriqueUri().'?'.$this->sGetLangParamLabel.'='.$aLang['id'];
         $aRubrique['lang'] = $aLang ;
         
         $dom = new DOMDocument();
         $dom->loadHTMLFile( $sURI_rubrique );
         $oDiv = $dom->getElementsByTagName('div');
         for( $i=0; $i<$oDiv->length ; $i++)
         {
            $sClassName = 'specialBlock' ;
            if( $oDiv->item($i)->hasAttribute('class') && $oDiv->item($i)->getAttribute('class') == $sClassName )
            {
               $oUl = $oDiv->item($i)->getElementsByTagName('ul');
               if( $oUl->length == 1 )
               {
                  $oLi = $oUl->item(0)->getElementsByTagName('li');
                  for( $j=0; $j<$oLi->length ; $j++)
                  {
                     if( $oLi->item($j)->hasChildNodes () )
                     {
                        $sGetParam = 'idClin' ;
                        $sAttToFind = 'href' ;
                        $aUriQuery=array() ;
                        parse_str( parse_url($oLi->item($j)->firstChild->getAttribute( $sAttToFind ), PHP_URL_QUERY ), $aUriQuery ) ;
                        $iRubId = $aUriQuery[$sGetParam] ;
                        $sRubName = utf8_decode( strtr($oLi->item($j)->firstChild->nodeValue, array(chr(10)=>'') ) ) ;
                        if( !is_null($iRubId) ) // enlève le shuffle
                           $aRubrique['rub'][$iRubId] = array('id' =>$iRubId , 'name' =>$sRubName ) ;
                     }
                  }
               }
            }
         }
         
         $this->aRubrique[$aLang['id']] = $aRubrique ;
      }
      
      return $aLang ;

   }
   
   /*
   * getItem : liste des objets d'une section (et langue) donnée que l'on peut envoyer à quelqu'un
   */
   protected function getItem( $iLang=null, $iRub=null )
   {
      $aLang = $this->getRubrique( $iLang ) ;
      
      $iRub = $this->checkRubrique( $aLang['id'], $iRub ) ;
      $aCurRub = & $this->aRubrique[$aLang['id']]['rub'][$iRub] ;
      
      if( !array_key_exists('item', $aCurRub ) )
      {   
         $sCurrURI = $this->getSubRubriqueUri().'?'.$this->sGetLangParamLabel.'='.$aLang['id'].'&'.$this->sGetIdParamLabel.'='.$aCurRub['id'] ; //on peut rajouter height et width pour avoir un affichage différent   

         $dom = new DOMDocument();
         $dom->loadHTMLFile( $sCurrURI );
         $sDivClassName = 'listItemContener' ; // la div qui nous intéresse a pour attribut class dont la valeur est spécifiée ici
         $sTableClassName = 'choixListItem' ; // le tableau qui nous intéresse a pour attribut class dont la valeur est spécifiée ici
         $oDomXpath = new DOMXPath($dom);
         $sMask = "//div[@class='".$sDivClassName."']/table[@class='".$sTableClassName."']/tr" ; // on va parcourir les données html qui nous intéresse : les cellules du tableau ayant pour class: 'choixListItem' et qui est contenu dans une div qu ia pour class 'listItemContener'
         $oEntries = $oDomXpath->query( $sMask ) ;
         foreach( $oEntries as $oEntry )
         {
            $sAttIdToFind = 'title' ;
            $oA = $oEntry->getElementsByTagName( 'a' ) ;
            for( $i=0; $i<$oA->length ; $i++ )
            {
               if( $oA->item($i)->getAttribute( 'class' ) == 'name' )
               {
                  $sGetParam = 'id' ;
                  $aItemIdMask = array(' = '=>'=') ;
                  $aUriQuery=array() ;
                  parse_str( strtr($oA->item($i)->getAttribute( $sAttIdToFind ), $aItemIdMask ), $aUriQuery ) ;   
                  $iRubId = $aUriQuery[$sGetParam] ;
                  $sRubName = utf8_decode(trim($oA->item($i)->nodeValue) ) ;
                  $aCurRub['item'][$iRubId] = array('id' =>$iRubId , 'name' =>$sRubName ) ;
               }
            }
         }
      }
   }
   
   // Retourne la dernière rubrique récupérée
   public function getAllItem( $iLang = null )
   {
      return $this->aRubrique ;
   }
   
}
Revenir en haut Aller en bas
nabazland
Karotzeur taquin
nabazland


Age : 57
Localisation : Rouen - France
Nabaztag : Caulfield (v2.1)
Nbr de messages : 9783
Carottes : 13096

Script PHP de mise à jour des clins d'oeil Empty
MessageSujet: Re: Script PHP de mise à jour des clins d'oeil   Script PHP de mise à jour des clins d'oeil Icon_minitimeVen 22 Juin 2007 - 18:43

Ben merci à tous les deux...
Interface NabzMessenger à jour !
Revenir en haut Aller en bas
http://www.nabzone.com
com
Bronze Nabz
Bronze Nabz
com


Age : 36
Localisation : lyon
Nabaztag : rabcom (V2)
Nbr de messages : 205
Carottes : 6295

Script PHP de mise à jour des clins d'oeil Empty
MessageSujet: Re: Script PHP de mise à jour des clins d'oeil   Script PHP de mise à jour des clins d'oeil Icon_minitimeLun 2 Juil 2007 - 21:46

perso je préfère utiliser les expressions régulières ce qui donne qqchose comme ceci :

Code:

error_reporting(E_ALL);

$array_lang = array(1, 2, 3, 4, 5, 6);
$i=0;


foreach($array_lang as $id_lang) {
   
      $idm_file_violet_1 = 'http://my.nabaztag.com/vl/action/myMessagesClin.do?langClin='.$id_lang;
      $icat = 0;
      if($handlecat = fopen($idm_file_violet_1, 'r')) {
         while(!feof($handlecat)) {
            $bufcat = fgets($handlecat);
            if(ereg('&idClin=([0-9]{2,})" class="item">([^</]*)</a>', $bufcat, $regscat)) {
               $tableaucat[$icat]['id'] = $regscat[1];
               $tableaucat[$icat++]['cat'] = $regscat[2];
            }
         }
      }
      fclose($handlecat);
      for($boucle = 0; $boucle != $icat; $boucle++) {
        $idm_file_violet_2 = 'http://my.nabaztag.com/vl/action/myMessagesClinChoice.do?langClin='.$id_lang.'&idClin='.$tableaucat[$boucle]['id'];
        if ($handle = fopen($idm_file_violet_2, 'r')) {
           while (!feof($handle)) {
             $buf = fgets($handle);
             $tableau_final[$i]['cat'] = $tableaucat[$boucle]['cat'];
             if(ereg("selectItem\('(.+)','([0-9]+)'\)", $buf, $regs)) {
               $tableau_final[$i]['name'] = $regs[1];
               $tableau_final[$i]['id'] = $regs[2];
             }
            
           }
           fclose($handle);
        }
       }
}

echo "<table>";

$final = 0;
while(isset($tableau_final[$final])) {
   echo "<tr><td>".$tableau_final[$final]["cat"]."</td><td>".$tableau_final[$final]["id"]."</td><td>".$tableau_final[$final]["name"]."</td></tr>";
   $final = $final + 1;
   
}

echo "</table>";



Voilà pour votre bonne utilisation, j'arrive un peu tard mais en fait j'en ai marre de tout me faire à la main alors ca sera pour les prochaines fois (ca et une macro excel et le tour est joué !)
Revenir en haut Aller en bas
http://www.nabzap.com
rebolon
Lapin nain
Lapin nain



Localisation : Lyon
Nbr de messages : 32
Carottes : 6272

Script PHP de mise à jour des clins d'oeil Empty
MessageSujet: Re: Script PHP de mise à jour des clins d'oeil   Script PHP de mise à jour des clins d'oeil Icon_minitimeJeu 5 Juil 2007 - 11:13

après c'est une question de gout, mais c'est purement des questions de développeurs yellownabzwink

moi j'aime bien les regExp, mais j'ai trouvé DOM tellement pratique que je l'ai préféré dans cas.

ByeBye
Revenir en haut Aller en bas
NaBoByZ
Nabazteur Courtois
Nabazteur Courtois
NaBoByZ


Localisation : Btx
Nabaztag : NaBoByZ
Nbr de messages : 4349
Carottes : 6389

Script PHP de mise à jour des clins d'oeil Empty
MessageSujet: Re: Script PHP de mise à jour des clins d'oeil   Script PHP de mise à jour des clins d'oeil Icon_minitimeJeu 5 Juil 2007 - 11:41

Pourquoi je suis largué en regardant toute ces lignes ? ah oui je sais je suis un Réseau pas un Dev yellownabzhappy
Revenir en haut Aller en bas
BigPanda
Kryptonite Nabz
Kryptonite Nabz
BigPanda


Age : 41
Localisation : Bruxelles
Nabaztag : RyoOhki (V1), Meroko (V2), Iori (V3)
Nbr de messages : 7127
Carottes : 13093

Script PHP de mise à jour des clins d'oeil Empty
MessageSujet: Re: Script PHP de mise à jour des clins d'oeil   Script PHP de mise à jour des clins d'oeil Icon_minitimeMer 31 Oct 2007 - 13:29

Salut,
j'ai depuis un certain temps un script basé sur ce principe qui tourne sur mon serveur... J'en ai récemment refait un pour updater les midis et un pour le nabshare...
Mon soucis avec le nabshare est que je ne trouve pas de paramètre à mettre pour indiquer la langue dans laquelle je les veux :

Pour les clins d'oeil, j'ai ça :

Avec XXX = 1 pour français, 2 pour anglais et YYY = id de la catégorie :

- Liste des catégories :
http://my.nabaztag.com/vl/action/myMessagesClin.do?langClin=XXX

- Liste des ids de la catégorie YYY:
http://my.nabaztag.com/vl/action/myMessagesClinChoice.do?langClin=XXX&idClin=YYY

Pour les midis :

- Liste des catégories :
http://my.nabaztag.com/vl/action/myMessagesBiblio.do?langBiblio=XXX

- Liste des ids de la catégorie YYY:
http://my.nabaztag.com/vl/action/myMessagesBiblioChoice.do?langBiblio=XXX&idBiblio=YYY


Pour le nabshare, tout ce que j'ai trouvé, c'est ça :

- Liste des catégories :
http://my.nabaztag.com/vl/action/myMessagesNabshare.do

- Liste des ids de la catégorie YYY:
http://my.nabaztag.com/vl/action/myMessagesNabshareChoice.do?idCateg=YYY

Mon soucis est que quand j'appelles ces url depuis le browser sur ma machine, j'ai tout en français... Si je les appelles depuis un script php (sur ma machine ou un autre serveur), j'ai tout en anglais (ce sont pas les mêmes catégories, ni les mêmes clins d'oeil --> c'est intéressant d'avoir les différentes langues...)

Visiblement l'info de la langue, pour le nabshare uniquement, est tirée du cookie... Est-ce que quelqu'un aurait trouvé un paramètre à passer pour pouvoir quand même spécifier, via URL, la langue dans laquelle on veut le nabshare ? :-/
Revenir en haut Aller en bas
http://www.tartesetbastons.be
BigPanda
Kryptonite Nabz
Kryptonite Nabz
BigPanda


Age : 41
Localisation : Bruxelles
Nabaztag : RyoOhki (V1), Meroko (V2), Iori (V3)
Nbr de messages : 7127
Carottes : 13093

Script PHP de mise à jour des clins d'oeil Empty
MessageSujet: Re: Script PHP de mise à jour des clins d'oeil   Script PHP de mise à jour des clins d'oeil Icon_minitimeJeu 8 Nov 2007 - 12:42

Personne n'a d'idée ? yellownabzsad
Revenir en haut Aller en bas
http://www.tartesetbastons.be
BigPanda
Kryptonite Nabz
Kryptonite Nabz
BigPanda


Age : 41
Localisation : Bruxelles
Nabaztag : RyoOhki (V1), Meroko (V2), Iori (V3)
Nbr de messages : 7127
Carottes : 13093

Script PHP de mise à jour des clins d'oeil Empty
MessageSujet: Re: Script PHP de mise à jour des clins d'oeil   Script PHP de mise à jour des clins d'oeil Icon_minitimeMar 13 Nov 2007 - 13:41

TOujours personne ? :npleure:
Revenir en haut Aller en bas
http://www.tartesetbastons.be
rebolon
Lapin nain
Lapin nain



Localisation : Lyon
Nbr de messages : 32
Carottes : 6272

Script PHP de mise à jour des clins d'oeil Empty
MessageSujet: Re: Script PHP de mise à jour des clins d'oeil   Script PHP de mise à jour des clins d'oeil Icon_minitimeLun 3 Déc 2007 - 14:14

En fait c'est tout bête :
Violet se sert des headers HTTP pour identifier la langue à utiliser lors de l'envoi de la réponse.
Il faut donc que tu modifies l'en-tête HTTP de ta requête pour y mettre la langue que tu veux.

Si tu veux plus de détail, contacte moi directement.
Revenir en haut Aller en bas
BigPanda
Kryptonite Nabz
Kryptonite Nabz
BigPanda


Age : 41
Localisation : Bruxelles
Nabaztag : RyoOhki (V1), Meroko (V2), Iori (V3)
Nbr de messages : 7127
Carottes : 13093

Script PHP de mise à jour des clins d'oeil Empty
MessageSujet: Re: Script PHP de mise à jour des clins d'oeil   Script PHP de mise à jour des clins d'oeil Icon_minitimeLun 3 Déc 2007 - 14:52

Haaaaaaaaaaaaaaa, enfin une réponse, j'y croyais plus yellownabzsmile
J'essaie d'essayer ça ce soir yellownabzsmile
Merci merci yellownabzsmile
Revenir en haut Aller en bas
http://www.tartesetbastons.be
rebolon
Lapin nain
Lapin nain



Localisation : Lyon
Nbr de messages : 32
Carottes : 6272

Script PHP de mise à jour des clins d'oeil Empty
MessageSujet: Re: Script PHP de mise à jour des clins d'oeil   Script PHP de mise à jour des clins d'oeil Icon_minitimeLun 3 Déc 2007 - 15:20

j'espère que ça résoudra ton problème

tu peux essayer sur mon site : ça marche
http://brichard.org/mynabzapi/

tu peux te logger avec guest/guest ou bien créer un compte et une fois que tu as l'interface, tu verras qu'en choisissant une langue et bien tu aura la liste correspondante dans la biblitothèque, les clins d'oeils, les nabshare...
et là, c'est vraiment sympa.

[EDIT]
Oups je metais trompé dans lelien, je viens de le corriger
[/EDIT]
Revenir en haut Aller en bas
BigPanda
Kryptonite Nabz
Kryptonite Nabz
BigPanda


Age : 41
Localisation : Bruxelles
Nabaztag : RyoOhki (V1), Meroko (V2), Iori (V3)
Nbr de messages : 7127
Carottes : 13093

Script PHP de mise à jour des clins d'oeil Empty
MessageSujet: Re: Script PHP de mise à jour des clins d'oeil   Script PHP de mise à jour des clins d'oeil Icon_minitimeJeu 6 Déc 2007 - 11:03

Salut,

Je voulais te dire un tout tout grand merci yellownabzsmile
J'ai enfin pu essayer ça hier soir et ça marche nickel yellownabzsmile

Merci merciiiiiiiii yellownabzsmile
Revenir en haut Aller en bas
http://www.tartesetbastons.be
rebolon
Lapin nain
Lapin nain



Localisation : Lyon
Nbr de messages : 32
Carottes : 6272

Script PHP de mise à jour des clins d'oeil Empty
MessageSujet: Re: Script PHP de mise à jour des clins d'oeil   Script PHP de mise à jour des clins d'oeil Icon_minitimeJeu 6 Déc 2007 - 18:11

de rien
c'est toujours bon de pouvoir trouver un peu d'aide !
Revenir en haut Aller en bas
Contenu sponsorisé





Script PHP de mise à jour des clins d'oeil Empty
MessageSujet: Re: Script PHP de mise à jour des clins d'oeil   Script PHP de mise à jour des clins d'oeil Icon_minitime

Revenir en haut Aller en bas
 
Script PHP de mise à jour des clins d'oeil
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Un nouveau site utilisant l'API
» mise à jour
» Votre lapin en 3D
» Bug ou mise à jour ?
» Karotz Php Class : mise à jour

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Forum des Objets Communicants et Solutions pour les Libérer... :: II. Nabaztag, Karotz, mir:ror, Dal:Dal (Violet Object Operating System) :: L'univers de Nabaztag :: Archives :: API-
Sauter vers: