NPDS

logo

Gestion de contenu
et de communauté

4 visiteur(s) et 0 membre(s) en ligne.
logo

Au delà de la gestion de contenu 'classique', NPDS met en oeuvre un ensemble de fonctions spécifiquement dédiées à la gestion de Communauté et de groupes de travail collaboratif.

logo

Il s'agit d'un Content & Community Management System (CCMS) robuste, sécurisé, complet, performant et parlant vraiment français.

logo

Gérez votre Communauté d'utilisateurs, vos groupes de travail collaboratif, publiez, gérez et organisez votre contenu dynamique !

Index du forum »»  Le coin des codeurs »» [Résolu] - gestion des block

[Résolu] - gestion des block#26739

3Contributeur(s)
nicolas2Jireckjpb
3 Modérateur(s)
developpeurjpbJireck
nicolas2 nicolas2icon_post
pour info : limite actuel a 8 arguments sur l'appel d'une function

               
// En fonction du nombre de params de la fonction : limite actuelle : 8
                if (function_exists($contentII)) 
                {
                    switch(count($prm)) 
                    {
                        case 1:
                            $contentII($prm[0]); break;
                        case 2:
                            $contentII($prm[0],$prm[1]); break;
                        case 3:
                            $contentII($prm[0],$prm[1],$prm[2]); break;
                        case 4:
                            $contentII($prm[0],$prm[1],$prm[2],$prm[3]); break;
                        case 5:
                            $contentII($prm[0],$prm[1],$prm[2],$prm[3],$prm[4]); break;
                        case 6:
                            $contentII($prm[0],$prm[1],$prm[2],$prm[3],$prm[4],$prm[5]); break;
                        case 7:
                            $contentII($prm[0],$prm[1],$prm[2],$prm[3],$prm[4],$prm[5],$prm[6]); break;
                        case 8:
                            $contentII($prm[0],$prm[1],$prm[2],$prm[3],$prm[4],$prm[5],$prm[6],$prm[7]); break;
                    }
                    return (true);
                } 
                else 
                {
                    return (false);
                }



a remplacer par




                // En fonction du nombre de params de la fonction : plus de limite d'arguments
                if (function_exists($contentII)) 
                {
                    call_user_func_array($contentII,$prm);
                    return (true);
                } 
                else 
                {
                    return (false);
                }


plus de limite d'argument! function block_fonction($title, $contentX) dans le mainfile.php
idem pour


if (function_exists($contentY)) 
                {
                    $contentY();
                    return (true);
                } 
                else 
                {
                    return (false);
                }


par


if (function_exists($contentY)) 
                {
                    call_user_func($contentY);
                    return (true);
                } 
                else 
                {
                    return (false);
                }


Message édité par : nicolas2 / 19-11-2020 12:48

nicolas2 nicolas2icon_post
le remplacement des br, BR

    $contentX = str_replace('<br />', '', $contentX);
    $contentX = str_replace('<BR />', '', $contentX);
    $contentX = str_replace('<BR>', '', $contentX);

par

    $contentX = preg_replace('/(<br|<BR\ ?\/?>)+/', "\n", $contentX);

ce qui remplace tout les

<br> <br /> <BR>< BR /> par \n

Message édité par : nicolas2 / 19-11-2020 13:28

Jireck Jireckicon_post
Bravo et gain
preg_replace: 0.0252 seconds.
str_replace: 0.0541 seconds.
en version php7 bien sur
en PHP5.6
preg_replace: 0.0346 seconds
str_replace: 0.0201 seconds
jpb jpbicon_post
Citation : nicolas2 

pour info : limite actuel a 8 arguments sur l'appel d'une function

               
// En fonction du nombre de params de la fonction : limite actuelle : 8
                if (function_exists($contentII)) 
                {
                    switch(count($prm)) 
                    {
                        case 1:
                            $contentII($prm[0]); break;
                        case 2:
                            $contentII($prm[0],$prm[1]); break;
                        case 3:
                            $contentII($prm[0],$prm[1],$prm[2]); break;
                        case 4:
                            $contentII($prm[0],$prm[1],$prm[2],$prm[3]); break;
                        case 5:
                            $contentII($prm[0],$prm[1],$prm[2],$prm[3],$prm[4]); break;
                        case 6:
                            $contentII($prm[0],$prm[1],$prm[2],$prm[3],$prm[4],$prm[5]); break;
                        case 7:
                            $contentII($prm[0],$prm[1],$prm[2],$prm[3],$prm[4],$prm[5],$prm[6]); break;
                        case 8:
                            $contentII($prm[0],$prm[1],$prm[2],$prm[3],$prm[4],$prm[5],$prm[6],$prm[7]); break;
                    }
                    return (true);
                } 
                else 
                {
                    return (false);
                }



a remplacer par




                // En fonction du nombre de params de la fonction : plus de limite d'arguments
                if (function_exists($contentII)) 
                {
                    call_user_func_array($contentII,$prm);
                    return (true);
                } 
                else 
                {
                    return (false);
                }


plus de limite d'argument! function block_fonction($title, $contentX) dans le mainfile.php
idem pour


if (function_exists($contentY)) 
                {
                    $contentY();
                    return (true);
                } 
                else 
                {
                    return (false);
                }


par


if (function_exists($contentY)) 
                {
                    call_user_func($contentY);
                    return (true);
                } 
                else 
                {
                    return (false);
                }


Message édité par : nicolas2 / 19-11-2020 12:48

 


Pour cette modif il faut vraiment la tester !
Est on sur que le moteur metalang suit ? Faudrait que dev regarde ça ! ...
jpb jpbicon_post
Citation : nicolas2 

le remplacement des br, BR

    $contentX = str_replace('', '', $contentX);
    $contentX = str_replace('', '', $contentX);
    $contentX = str_replace('
', '', $contentX);

par

    $contentX = preg_replace('/(
ce qui remplace tout les


  
< BR /> par \n

Message édité par : nicolas2 / 19-11-2020 13:28

 


==> je vais tester ça sur le labo un flag i raccourcirai un peu plus l'expression régulière ???
nicolas2 nicolas2icon_post
n'impacte pas metalang puisque cela reste juste un appel de fonction avec arguments.

call_user_func_array — Appelle une fonction de rappel avec les paramètres rassemblés en tableau

call_user_func_array le premiere argument retour le nom de la function a appeler ($contentII) et ($prm) le tableau d'arguments.

contentII => nom de la function
$prm => array() tableau d'argument de la function.

call_user_func — Appelle une fonction de rappel fournie par le premier argument

call_user_func le seul argument quil contient est($contentY) qui retourne le nom de la funtion a appeler.

$contenty() => nom de la function

marche très bien sur mais 3 version de dev.

le metalang c'est bien mais un peut trop l'usine a gaz pour moi, metalang devrais servir pour de petite tache comme les images smillie ou autre afin de facilite l'affichage et nom intégrer des tonne de functions. je trouve lourd a gerer pour la maintenance. sur mais version cela se passe comme cela. juste mon opignion

Message édité par : nicolas2 / 20-11-2020 08:22

jpb jpbicon_post
oui je suis tout à fait d'accord metalang est très fastidieux à maintenir ! ....

ce que je voulais dire c'est que je ne sais pas si la limite d'arguments à 8 est intentionelle (pour des raisons que j'ignore...) ou pas ?....tu as une idée ?

dev ????????
Jireck Jireckicon_post
Je donne mon avis.

Je pense que, et c'est vrai pour moi, j'ai rarement voir jamais créer de fonction qui utilise plus de 8 arguments.

c'est plus une limite qu'on se donne
nicolas2 nicolas2icon_post
effectivement c'est plus une limite qui et fixer a 8, dans le core de npds il n'y a pas de function a plus de 8 arguments.

juste proposer cette option qui ne donne plus de l'imite sur des arguments, après a prendre ou a virer !