[Résolu]Vérifier qu'1 plugin est activé,ds constructeur d'1 autre plug

Jerry WhamJerry Wham Member
septembre 2013 modifié dans Entraide
Comment peut-on faire? Si j'appelle une instance de plxAdmin, j'ai une erreur fatale : "Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 11027 bytes)"

Réponses

  • Stephane si tu passes dans le coin 8.(
  • Bon, je m'auto-réponds vu que ça n'a pas l'air d'intéresser grand monde !
    J'ai trouvé une méthode mais je la trouve un peu lourde.
    J'ai détourné la méthode de la classe plxPlugins qui charge les plugins (loadPlugins) pour qu'elle me retourne un tableau des plugins actifs. Je n'ai ensuite qu'à tester dans mon constructeur si le nom du plugin que je cherche est dans ce tableau ou pas. Ce qui donne :
    /**
    	 * Méthode qui charge le fichier plugins.xml
    	 *
    	 * @return	null
    	 * @author	Stephane F
    	 **/
    	public function pluginsLoaded() {
    		$activePlugins = array();
    		if(!is_file(path('XMLFILE_PLUGINS'))) return;
    		# Mise en place du parseur XML
    		$data = implode('',file(path('XMLFILE_PLUGINS')));
    		$parser = xml_parser_create(PLX_CHARSET);
    		xml_parser_set_option($parser,XML_OPTION_CASE_FOLDING,0);
    		xml_parser_set_option($parser,XML_OPTION_SKIP_WHITE,0);
    		xml_parse_into_struct($parser,$data,$values,$iTags);
    		xml_parser_free($parser);
    		# On verifie qu'il existe des tags "plugin"
    		if(isset($iTags['plugin'])) {
    			# On compte le nombre de tags "plugin"
    			$nb = sizeof($iTags['plugin']);
    			# On boucle sur $nb
    			for($i = 0; $i < $nb; $i++) {
    				$activePlugins[] = $values[$iTags['plugin'][$i] ]['attributes']['name'];
    			}
    		}
    		return $activePlugins;
    	}
    
    Et dans le constructeur :
    if (in_array('monPlug',$this->pluginsLoaded())) { 
         // ici le code à exécuter
    }
    
  • Il y avait déja eu un post sur le sujet non ? je cherche.
  • Pour vérifier depuis le contrôleur ? Je n'ai pas trouvé...
  • je-evrardje-evrard Member
    septembre 2013 modifié
    Perso j'ai fait ça : plxZoombox est à remplacer par le nom de ton plug bien sur
    [== PHP ==]
    $plxm = plxMotor::getInstance();				
    $a = $plxm->plxPlugins->aPlugins['plxZoombox'];
    print_r($a);
    

    si le tableau est vide ton plugin est désactivé. Je ne sais pas si c'est la bonne méthode mais c'est simple.
  • En effet, ça fonctionne mais j'ai un comportement bizarre.
    Si je fais :
    $plxMotor = plxMotor::getInstance();
    $this->isMyPlugActivated = $plxMotor->plxPlugins->aPlugins['myplug'];
    if (is_object($this->isMyPlugActivated)) {
       $this->isMyPlugActivated = true;
    }
    var_dump($this->isMyPlugActivated);
    
    J'obtiens :
    NULL
    bool(true)
    

    D'où sort ce NULL ?
Connectez-vous ou Inscrivez-vous pour répondre.