pluxml 6.0 hook en double et const profil dans prepend.php

Bonjour,

Ce n'est peut-être pas le lieu, dites moi :)

Je commence à regarder du coté de pluxml 6.0 comment se présente les premières différences de la nouvelle mouture en testant un plugin que je viens à peine de stabilisé sur un 5.8.7.

Gestion des langues : tiptop ! (mais j'ai du ajouté un $LANG = "fr"; en début du fichier langue pour ne pas avoir de warning, j'ai peut-être fait ou laisser un doublé dans le code) .

Autre difference que je perçois est la constante des profils devenue intouchable, sans autres choix , je finis par faire un backup de prepend.php pour le modifié en dure et pouvoir ajouté un nouveau type de profil à l'activation du plugin ,à la désactivation, je restaure prepend.php et efface le prepend.php.bak . (tant qu'il n'y a qu'un plugin qui le fait, le risque est minime mais existe).
Pour passer en dessous du niveau 4 de rédacteur et spécifier un profil qui ne peut avoir accès à l'admin , mais qui est bien vu comme un profil logué, il faut lui alloué une valeur de profil négatif.
Je comprend le coté sécurité, mais il empêche dans ce cas de bénéficier des fonction de bases d'identification de pluxml pour un plugin au risque peut-être d'ouvrir d'autre brèche.

Bogue ? un hook en doublon dans prepend.php , le hook lignes 68/69

# Hook Plugins
eval($plxAdmin->plxPlugins->callHook('AdminPrepend'));

est doublé lignes 92/93 , j'imagine que ce sera 'AdminPrependEnd' .. ou pas ?

Le plugin que j'ai fait, écrit dans les fichiers XML via simpleXml et la class SimpleXMLExtended pour gérer simplement les champs nécessitant CDATA, class que l'on peut retrouver là : https://web.archive.org/web/20110223233311/http://coffeerings.posterous.com/php-simplexml-and-cdata

fichiers concernés: users.xml/statiques.xml/plugins.xml.

par exemple sur l'ajout d'utilisateurs avec un profil custom :

function updateFromCsv() {
    $plxMotor = plxMotor::getInstance();
    // on verfie que nos fichiers sont accessibles
    if ((file_exists(PLX_ROOT.PLX_CONFIG_PATH.'users.xml')) && (($open = fopen(PLX_PLUGINS.'/vip_zone/username.csv', 'r')) !== FALSE) && (!isset($_GET['upmsg']))) {

        // on commence avec le fichier csv  
        while (($data = fgetcsv($open, 1000, ";")) !== FALSE)     {        
          $array[] = $data; 
        }  
        fclose($open);

        // on recupere le fichier XML
        $xml = file_get_contents(PLX_ROOT.PLX_CONFIG_PATH.'users.xml', true);

        // on charge le fichier xml
        $doc = new SimpleXMLExtended($xml); 

        // on compte ses enregistrements
        $kids = $doc->children();
        $nbUser = count($kids);
        $nbRecords =0;

         // on boucle sur les lignes du fichiers CSV pour récuperer les données et les ajouter aux données existantes 
        foreach($array as $i => $line){ 
                if($i >0) { // on passe la premiere ligne ou sont  stockées les entêtes de colonnes.
                    $nbRecords++; // on compte les enregistrements qui sont ajouter.
                    $nbUser++;
                    //test si données extraites
                    if((!isset($line[0])) or (!isset($line[1])) or (!isset($line[2])) or (!isset($line[3]))) {
                    $nbRecords++; 
                    echo    '<p class="alert red "> '. L_ERROR_BATCH_RECORDS .': <b> '.$nbRecords  .'</b></p>';

                    $fileError ='1';

                    } 
                    else {

                    // on alimente les données visiteur V.I.P..
                    $element = $doc->addChild('user'); 
                    $element->addAttribute('number', str_pad($nbUser, 3,'0', STR_PAD_LEFT)  );
                    $element->addAttribute('active', '1' );
                    $element->addAttribute('profil', '-5' );// une valeur négative, sinon scotché comme rédacteur, et ce n'est pas ce que l'on veut
                    $element->addAttribute('delete', '0' );  

                    $login = $element->addChild('login'); 
                    $login->addCData($line[0]); 

                    $name = $element->addChild('name'); 
                    $name->addCData($line[1]); 

                    $infos = $element->addChild('infos',''); 

                    // grain de sel
                    $salt = plxUtils::charAleatoire(10);

                    //cryptage du mot de passe
                    $pwd=sha1($salt.md5($line[2]));         

                    $password = $element->addChild('password',$pwd); 


                    $salted = $element->addChild('salt',$salt); 

                    $email = $element->addChild('email'); // voir à utiliser fonctions verif mail native de pluxml + gestion message erreur
                    $email->addCData($line[3]); 

                    $lang = $element->addChild('lang','fr'); 

                    $password_token = $element->addChild('password_token',''); 

                    $password_token_expiry = $element->addChild('password_token_expiry','');    
                    }              
               }  
        }

        if (!isset($fileError)) {
            //On refait l'indentation du fichier  parce-que c'est plus joli
            $xmlDoc = new DOMDocument ();
            $xmlDoc->preserveWhiteSpace = false;
            $xmlDoc->formatOutput = true;
            $xmlDoc->loadXML ( $doc->asXML() );
            // on sauvegarde le fichier XML mis à jour.
            $xmlDoc->save(PLX_ROOT.PLX_CONFIG_PATH.'users.xml');
            echo '<p class="alert green ">'.L_SAVE_FILE_SUCCESSFULLY.' - '.L_CONFIG_USERS_NEW.' <b> '.$nbRecords  .'</b></p>';

            // on vide le fichier si tout s'est bien déroulé pour le prochain enregistrement.
            $open = fopen(PLX_PLUGINS."/vip_zone/username.csv", "w") ;
            $fileCsv="login;name;password;email\n";
            fwrite($open, $fileCsv);
            fclose($open);
        }

    }
    else {
    exit(L_SAVE_FILE_ERROR.' user.xml / username.csv.');
    }
}


je reformate les fichiers pour qu'ils puissent être indenté et lisible. Résultat, par exemple le tag <plugin name="" scope=""></plugin> se trouve réécrit en <plugin name="" scope=""/> sans perturber PluXml à priori.

Il m'avait sembler avoir lu que PluXml 6.0 allait se tourner vers simpleXML, du coup je reste sur ma faim et ma curiosité de l'approche des développeurs , si c'est d'actualités ou n’était qu'une simple évocation.

J'aurais probablement d'autres question en continuant à creuser.
Merci


Cordialement,
gcyrillus , simple membre du forum et utilisateur de pluxml

Mon site PluXml: https://re7net.com | Plugins: https://ressources.pluxopolis.net/banque-plugins/index.php?all_versions | demos sur free http://gcyrillus.free.fr/new | Thèmes: tester et télécharger @ https://pluxthemes.com
Indiquez [RESOLU] dans le titre de votre question une fois le soucis réglè, Merci

Mots clés:
Connectez-vous ou Inscrivez-vous pour répondre.