{"id":955,"date":"2009-11-24T19:30:20","date_gmt":"2009-11-24T18:30:20","guid":{"rendered":"http:\/\/blogs.wittwer.fr\/whiler\/?p=955"},"modified":"2023-03-12T15:05:23","modified_gmt":"2023-03-12T14:05:23","slug":"random-number-generator","status":"publish","type":"post","link":"https:\/\/blogs.wittwer.fr\/whiler\/2009\/11\/24\/random-number-generator\/","title":{"rendered":"Random Number Generator 1.0"},"content":{"rendered":"<p>J&rsquo;ai effectu\u00e9 quelques modifications pour \u00e9toffer l&rsquo;exemple afin que la balise supporte des attributs, mais \u00e9galement pour corriger quelques bugs d\u00e9couverts suites au premier d\u00e9ploiement dans de r\u00e9elles conditions.<\/p>\n<p>On peut maintenant ainsi utiliser la balise&nbsp;:<\/p>\n<div class=\"codecolorer-container text dawn\" style=\"overflow:auto;white-space:nowrap;width:480px;\"><div class=\"text codecolorer\">[random-number]<br \/>\n[random-number\/]<br \/>\n[random-number from='\u03b1']<br \/>\n[random-number to='\u03b2'\/]<br \/>\n[random-number from='\u03b1' to='\u03b2' format='\u03c6']<br \/>\n[random-number]\u03c6[\/random-number]<br \/>\n[random-number from='\u03b1' to='\u03b2']\u03c6[\/random-number]<\/div><\/div>\n<ul>\n<li>\u03b1&nbsp;: correspond \u00e0 la valeur enti\u00e8re minimale incluse souhait\u00e9e<\/li>\n<li>\u03b2&nbsp;: correspond \u00e0 la valeur enti\u00e8re maximale incluse souhait\u00e9e\n<ul>\n<li>donc \u03b1 &lt; \u03b2<\/li>\n<\/ul>\n<\/li>\n<li>\u03c6&nbsp;: format \u00e0 utiliser. \u03c6 ne doit contenir qu&rsquo;un seul champ de sp\u00e9cification. Actuellement, si vous en mettez plusieurs, une erreur sera g\u00e9n\u00e9r\u00e9e. Nous verrons dans un prochain article comment la g\u00e9rer.<\/li>\n<li>\u03b1, \u03b2 &amp; \u03c6 sont optionnels. Leurs valeurs sauvegard\u00e9es dans les r\u00e9glages seront utilis\u00e9es si elles sont omises.<\/li>\n<\/ul>\n<p>Pour cela, j&rsquo;ai essentiellement modifi\u00e9 la fonction <code class=\"codecolorer php dawn\"><span class=\"php\">random_number_generator_shortcode_handler<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><\/span><\/code>&nbsp;:<\/p>\n<div class=\"codecolorer-container php dawn\" style=\"overflow:auto;white-space:nowrap;width:480px;height:300px;\"><table cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"line-numbers\"><div>1<br \/>2<br \/>3<br \/>4<br \/>5<br \/>6<br \/>7<br \/>8<br \/>9<br \/>10<br \/>11<br \/>12<br \/>13<br \/>14<br \/>15<br \/>16<br \/>17<br \/>18<br \/>19<br \/>20<br \/>21<br \/>22<br \/>23<br \/>24<br \/>25<br \/>26<br \/>27<br \/>28<br \/>29<br \/>30<br \/>31<br \/>32<br \/><\/div><\/td><td><div class=\"php codecolorer\"><span class=\"co4\">\/**<br \/>\n&nbsp;* Fonction renvoyant un chiffre al\u00e9atoire<br \/>\n&nbsp;* @param string $atts Attributs \u00e9ventuellement pass\u00e9s dans le tag<br \/>\n&nbsp;* @param string $content Format \u00e0 utiliser si encapsul\u00e9 par le tag<br \/>\n&nbsp;* @return HTML<br \/>\n&nbsp;*\/<\/span><br \/>\n<span class=\"kw2\">function<\/span> random_number_generator_shortcode_handler<span class=\"br0\">&#40;<\/span><span class=\"re0\">$atts<\/span><span class=\"sy0\">,<\/span> <span class=\"re0\">$content<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; <span class=\"co1\">\/\/ [random-number from=&quot;2&quot; to=&quot;72&quot; format=&quot;%b&quot;]%d minutes[\/random-number]<\/span><br \/>\n&nbsp; <span class=\"co1\">\/\/ output: &nbsp; an integer value between 2 &amp; 72 followed by the word 'minutes'<\/span><br \/>\n&nbsp; <span class=\"co1\">\/\/ affiche : une valeur enti\u00e8re entre 2 &amp; 72 suivie du mot 'minutes'<\/span><br \/>\n<br \/>\n&nbsp; <span class=\"co1\">\/\/ R\u00e9cup\u00e9ration des param\u00e8tres depuis les options de WP<\/span><br \/>\n&nbsp; <span class=\"re0\">$random_number_generator_from<\/span> &nbsp; <span class=\"sy0\">=<\/span> get_option<span class=\"br0\">&#40;<\/span><span class=\"st_h\">'random_number_generator_from'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; <span class=\"re0\">$random_number_generator_to<\/span> &nbsp; &nbsp; <span class=\"sy0\">=<\/span> get_option<span class=\"br0\">&#40;<\/span><span class=\"st_h\">'random_number_generator_to'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; <span class=\"re0\">$random_number_generator_format<\/span> <span class=\"sy0\">=<\/span> get_option<span class=\"br0\">&#40;<\/span><span class=\"st_h\">'random_number_generator_format'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\n&nbsp; <span class=\"co1\">\/\/ R\u00e9cup\u00e9ration des param\u00e8tres \u00e9ventuels avec les options sauvegard\u00e9es comme valeur par d\u00e9faut<\/span><br \/>\n&nbsp; <a href=\"http:\/\/www.php.net\/extract\"><span class=\"kw3\">extract<\/span><\/a><span class=\"br0\">&#40;<\/span>shortcode_atts<span class=\"br0\">&#40;<\/span><a href=\"http:\/\/www.php.net\/array\"><span class=\"kw3\">array<\/span><\/a><span class=\"br0\">&#40;<\/span><span class=\"st_h\">'from'<\/span> <span class=\"sy0\">=&gt;<\/span> <span class=\"re0\">$random_number_generator_from<\/span><span class=\"sy0\">,<\/span> <span class=\"st_h\">'to'<\/span> <span class=\"sy0\">=&gt;<\/span> <span class=\"re0\">$random_number_generator_to<\/span><span class=\"sy0\">,<\/span> <span class=\"st_h\">'format'<\/span> <span class=\"sy0\">=&gt;<\/span> <span class=\"re0\">$random_number_generator_format<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">,<\/span> <span class=\"re0\">$atts<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\n&nbsp; <span class=\"co1\">\/\/ Si on a entour\u00e9 du texte avec la balise, c'est que ce texte est LE format \u00e0 utiliser<\/span><br \/>\n&nbsp; <span class=\"co1\">\/\/ Il devrait contenir un champ de sp\u00e9cification pour afficher le nombre al\u00e9atoire<\/span><br \/>\n&nbsp; <span class=\"kw1\">if<\/span> <span class=\"br0\">&#40;<\/span><span class=\"re0\">$content<\/span> <span class=\"sy0\">!=<\/span> <span class=\"st0\">&quot;&quot;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"re0\">$format<\/span> <span class=\"sy0\">=<\/span> <span class=\"re0\">$content<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; <span class=\"br0\">&#125;<\/span><br \/>\n<br \/>\n&nbsp; <span class=\"co1\">\/\/ Valide les diff\u00e9rentes options<\/span><br \/>\n&nbsp; validate_data<span class=\"br0\">&#40;<\/span><span class=\"re0\">$from<\/span><span class=\"sy0\">,<\/span> <span class=\"re0\">$to<\/span><span class=\"sy0\">,<\/span> <span class=\"re0\">$format<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; <span class=\"co1\">\/\/ G\u00e9n\u00e9ration al\u00e9atoire<\/span><br \/>\n&nbsp; <a href=\"http:\/\/www.php.net\/mt_srand\"><span class=\"kw3\">mt_srand<\/span><\/a><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; <span class=\"co1\">\/\/ Renvoie un nombre al\u00e9atoire<\/span><br \/>\n&nbsp; <span class=\"kw1\">return<\/span> <a href=\"http:\/\/www.php.net\/sprintf\"><span class=\"kw3\">sprintf<\/span><\/a><span class=\"br0\">&#40;<\/span><span class=\"re0\">$format<\/span><span class=\"sy0\">,<\/span> <a href=\"http:\/\/www.php.net\/mt_rand\"><span class=\"kw3\">mt_rand<\/span><\/a><span class=\"br0\">&#40;<\/span><span class=\"re0\">$from<\/span><span class=\"sy0\">,<\/span> <span class=\"re0\">$to<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n<span class=\"br0\">&#125;<\/span><\/div><\/td><\/tr><\/tbody><\/table><\/div>\n<p>Les bugs corrig\u00e9s sont&nbsp;:<\/p>\n<ul>\n<li>Chemins cod\u00e9s en dur&#8230; j&rsquo;avais mis le r\u00e9pertoire avec des \u00ab\u00a0_\u00a0\u00bb et WordPress l&rsquo;a publi\u00e9 avec des \u00ab\u00a0-\u00ab\u00a0&#8230; Le code utilise maintenant un chemin totalement dynamique.<\/li>\n<li>Le format de mon fichier php n&rsquo;\u00e9tait pas en UTF-8&#8230; pour \u00eatre certain d&rsquo;avoir le bon format, j&rsquo;ai mis \u00e0 jour mes sources via l&rsquo;interface d&rsquo;administration de WordPress, puis j&rsquo;ai t\u00e9l\u00e9charg\u00e9 le fichier modifi\u00e9 via FTP depuis mon h\u00e9bergeur pour ensuite le publier via SVN<\/li>\n<\/ul>\n<p>L&rsquo;ensemble du code source est disponible sur la page suivante&#8230;<br \/>\n<!--nextpage--><\/p>\n<h3>Source de la version 1.0.1 du fichier <code class=\"codecolorer text dawn\"><span class=\"text\">random_number_generator.php<\/span><\/code><\/h3>\n<div class=\"codecolorer-container php dawn\" style=\"overflow:auto;white-space:nowrap;width:480px;height:300px;\"><table cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"line-numbers\"><div>1<br \/>2<br \/>3<br \/>4<br \/>5<br \/>6<br \/>7<br \/>8<br \/>9<br \/>10<br \/>11<br \/>12<br \/>13<br \/>14<br \/>15<br \/>16<br \/>17<br \/>18<br \/>19<br \/>20<br \/>21<br \/>22<br \/>23<br \/>24<br \/>25<br \/>26<br \/>27<br \/>28<br \/>29<br \/>30<br \/>31<br \/>32<br \/>33<br \/>34<br \/>35<br \/>36<br \/>37<br \/>38<br \/>39<br \/>40<br \/>41<br \/>42<br \/>43<br \/>44<br \/>45<br \/>46<br \/>47<br \/>48<br \/>49<br \/>50<br \/>51<br \/>52<br \/>53<br \/>54<br \/>55<br \/>56<br \/>57<br \/>58<br \/>59<br \/>60<br \/>61<br \/>62<br \/>63<br \/>64<br \/>65<br \/>66<br \/>67<br \/>68<br \/>69<br \/>70<br \/>71<br \/>72<br \/>73<br \/>74<br \/>75<br \/>76<br \/>77<br \/>78<br \/>79<br \/>80<br \/>81<br \/>82<br \/>83<br \/>84<br \/>85<br \/>86<br \/>87<br \/>88<br \/>89<br \/>90<br \/>91<br \/>92<br \/>93<br \/>94<br \/>95<br \/>96<br \/>97<br \/>98<br \/>99<br \/>100<br \/>101<br \/>102<br \/>103<br \/>104<br \/>105<br \/>106<br \/>107<br \/>108<br \/>109<br \/>110<br \/>111<br \/>112<br \/>113<br \/>114<br \/>115<br \/>116<br \/>117<br \/>118<br \/>119<br \/>120<br \/>121<br \/>122<br \/>123<br \/>124<br \/>125<br \/>126<br \/>127<br \/>128<br \/>129<br \/>130<br \/>131<br \/>132<br \/>133<br \/>134<br \/>135<br \/>136<br \/>137<br \/>138<br \/>139<br \/>140<br \/>141<br \/>142<br \/>143<br \/>144<br \/>145<br \/>146<br \/>147<br \/>148<br \/>149<br \/>150<br \/>151<br \/>152<br \/>153<br \/>154<br \/>155<br \/>156<br \/>157<br \/>158<br \/>159<br \/>160<br \/>161<br \/>162<br \/>163<br \/>164<br \/>165<br \/>166<br \/>167<br \/>168<br \/>169<br \/>170<br \/>171<br \/>172<br \/>173<br \/>174<br \/>175<br \/>176<br \/>177<br \/>178<br \/>179<br \/>180<br \/>181<br \/>182<br \/>183<br \/>184<br \/>185<br \/>186<br \/>187<br \/>188<br \/>189<br \/>190<br \/>191<br \/>192<br \/>193<br \/>194<br \/>195<br \/>196<br \/>197<br \/>198<br \/>199<br \/>200<br \/>201<br \/>202<br \/>203<br \/>204<br \/>205<br \/>206<br \/>207<br \/>208<br \/>209<br \/>210<br \/>211<br \/>212<br \/>213<br \/>214<br \/>215<br \/>216<br \/>217<br \/>218<br \/><\/div><\/td><td><div class=\"php codecolorer\"><span class=\"kw2\">&lt;?php<\/span><br \/>\n<span class=\"coMULTI\">\/*<br \/>\nPlugin Name: Random Number Generator<br \/>\nPlugin URI: https:\/\/blogs.wittwer.fr\/whiler\/2009\/11\/24\/random-number-generator\/<br \/>\nDescription: Generates a random number (for instance, useful to avoid browsers links cache)<br \/>\nVersion: 1.0.1<br \/>\nAuthor: Whiler<br \/>\nAuthor URI: https:\/\/william.wittwer.fr\/<br \/>\n*\/<\/span><br \/>\n<br \/>\n<span class=\"co1\">\/\/ Interdit les appels directs \u00e0 la page<\/span><br \/>\n<span class=\"kw1\">if<\/span> <span class=\"br0\">&#40;<\/span><span class=\"sy0\">!<\/span><a href=\"http:\/\/www.php.net\/function_exists\"><span class=\"kw3\">function_exists<\/span><\/a><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;get_option&quot;<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; <span class=\"kw1\">echo<\/span> <span class=\"st_h\">'SIG'<\/span><span class=\"sy0\">;<\/span> <span class=\"co1\">\/\/ Silence is golden<\/span><br \/>\n&nbsp; <a href=\"http:\/\/www.php.net\/die\"><span class=\"kw3\">die<\/span><\/a><span class=\"sy0\">;<\/span><br \/>\n<span class=\"br0\">&#125;<\/span><br \/>\n<br \/>\n<span class=\"co1\">\/\/ Cl\u00e9 utilis\u00e9e pour le tag \u00e0 d\u00e9tecter dans les articles\/pages\/commentaires [random-number] (not a constant... users can maybe update it in a future release)<\/span><br \/>\n<span class=\"re0\">$random_number_generator_key<\/span> <span class=\"sy0\">=<\/span> <span class=\"st_h\">'random-number'<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\n<span class=\"co1\">\/\/ Charge le fichier de traduction s'il existe<\/span><br \/>\nload_plugin_textdomain<span class=\"br0\">&#40;<\/span><span class=\"st_h\">'random_number_generator'<\/span><span class=\"sy0\">,<\/span> <span class=\"st_h\">''<\/span><span class=\"sy0\">,<\/span> plugin_basename<span class=\"br0\">&#40;<\/span><a href=\"http:\/\/www.php.net\/dirname\"><span class=\"kw3\">dirname<\/span><\/a><span class=\"br0\">&#40;<\/span><span class=\"kw4\">__FILE__<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">.<\/span><span class=\"st_h\">'\/languages'<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\n<span class=\"co4\">\/**<br \/>\n&nbsp;* Fonction qui valide les param\u00e8tres avant de les renvoyer par r\u00e9f\u00e9rence<br \/>\n&nbsp;* @param integer &amp;$random_number_generator_from &nbsp; Valeur minimale<br \/>\n&nbsp;* @param integer &amp;$random_number_generator_to &nbsp; &nbsp; Valeur maximale<br \/>\n&nbsp;* @param string &nbsp;&amp;$random_number_generator_format Format utilis\u00e9 pour l'affichage<br \/>\n&nbsp;*\/<\/span><br \/>\n<span class=\"kw2\">function<\/span> validate_data<span class=\"br0\">&#40;<\/span><span class=\"sy0\">&amp;<\/span><span class=\"re0\">$random_number_generator_from<\/span><span class=\"sy0\">,<\/span> <span class=\"sy0\">&amp;<\/span><span class=\"re0\">$random_number_generator_to<\/span><span class=\"sy0\">,<\/span> <span class=\"sy0\">&amp;<\/span><span class=\"re0\">$random_number_generator_format<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; <span class=\"co1\">\/\/ Validation de la coh\u00e9rence des valeurs<\/span><br \/>\n&nbsp; <span class=\"kw1\">if<\/span> <span class=\"br0\">&#40;<\/span><span class=\"br0\">&#40;<\/span><span class=\"re0\">$random_number_generator_from<\/span> <span class=\"sy0\">==<\/span> <span class=\"re0\">$random_number_generator_to<\/span><span class=\"br0\">&#41;<\/span> <span class=\"sy0\">||<\/span> <span class=\"br0\">&#40;<\/span><span class=\"re0\">$random_number_generator_from<\/span> <span class=\"sy0\">&gt;<\/span> <span class=\"re0\">$random_number_generator_to<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"re0\">$random_number_generator_from<\/span> <span class=\"sy0\">=<\/span> <span class=\"nu0\">0<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"re0\">$random_number_generator_to<\/span> &nbsp; <span class=\"sy0\">=<\/span> <a href=\"http:\/\/www.php.net\/mt_getrandmax\"><span class=\"kw3\">mt_getrandmax<\/span><\/a><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; <span class=\"br0\">&#125;<\/span><br \/>\n&nbsp; <span class=\"kw1\">if<\/span> <span class=\"br0\">&#40;<\/span><span class=\"br0\">&#40;<\/span><span class=\"re0\">$random_number_generator_format<\/span> <span class=\"sy0\">==<\/span> <span class=\"kw4\">null<\/span><span class=\"br0\">&#41;<\/span> <span class=\"sy0\">||<\/span> <span class=\"br0\">&#40;<\/span><a href=\"http:\/\/www.php.net\/trim\"><span class=\"kw3\">trim<\/span><\/a><span class=\"br0\">&#40;<\/span><span class=\"re0\">$random_number_generator_format<\/span><span class=\"br0\">&#41;<\/span> <span class=\"sy0\">==<\/span> <span class=\"st_h\">''<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"re0\">$random_number_generator_format<\/span> <span class=\"sy0\">=<\/span> <span class=\"st0\">&quot;<span class=\"es6\">%x<\/span>&quot;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; <span class=\"br0\">&#125;<\/span><br \/>\n<span class=\"br0\">&#125;<\/span><br \/>\n<br \/>\n<span class=\"co4\">\/**<br \/>\n&nbsp;* Fonction appel\u00e9e \u00e0 l'activation de l'extension<br \/>\n&nbsp;*\/<\/span><br \/>\n<span class=\"kw2\">function<\/span> random_number_generator_install<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; <span class=\"co1\">\/\/ Ajout des valeurs par d\u00e9faut<\/span><br \/>\n&nbsp; add_option<span class=\"br0\">&#40;<\/span><span class=\"st_h\">'random_number_generator_from'<\/span><span class=\"sy0\">,<\/span> <span class=\"nu0\">0<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; add_option<span class=\"br0\">&#40;<\/span><span class=\"st_h\">'random_number_generator_to'<\/span><span class=\"sy0\">,<\/span> <a href=\"http:\/\/www.php.net\/mt_getrandmax\"><span class=\"kw3\">mt_getrandmax<\/span><\/a><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; add_option<span class=\"br0\">&#40;<\/span><span class=\"st_h\">'random_number_generator_format'<\/span><span class=\"sy0\">,<\/span> <span class=\"st0\">&quot;<span class=\"es6\">%x<\/span>&quot;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n<span class=\"br0\">&#125;<\/span><br \/>\n<br \/>\n<span class=\"co4\">\/**<br \/>\n&nbsp;* Fonction affichant la page de r\u00e9glage des options<br \/>\n&nbsp;*\/<\/span><br \/>\n<span class=\"kw2\">function<\/span> random_number_generator_optionsPage<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; <span class=\"co1\">\/\/ R\u00e9cup\u00e9ration des param\u00e8tres depuis les options de WP<\/span><br \/>\n&nbsp; <span class=\"re0\">$random_number_generator_from<\/span> &nbsp; <span class=\"sy0\">=<\/span> get_option<span class=\"br0\">&#40;<\/span><span class=\"st_h\">'random_number_generator_from'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; <span class=\"re0\">$random_number_generator_to<\/span> &nbsp; &nbsp; <span class=\"sy0\">=<\/span> get_option<span class=\"br0\">&#40;<\/span><span class=\"st_h\">'random_number_generator_to'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; <span class=\"re0\">$random_number_generator_format<\/span> <span class=\"sy0\">=<\/span> get_option<span class=\"br0\">&#40;<\/span><span class=\"st_h\">'random_number_generator_format'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; validate_data<span class=\"br0\">&#40;<\/span><span class=\"re0\">$random_number_generator_from<\/span><span class=\"sy0\">,<\/span> <span class=\"re0\">$random_number_generator_to<\/span><span class=\"sy0\">,<\/span> <span class=\"re0\">$random_number_generator_format<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n<span class=\"sy1\">?&gt;<\/span><br \/>\n&lt;div class=&quot;wrap&quot;&gt;<br \/>\n&nbsp; &lt;h2&gt;<span class=\"kw2\">&lt;?php<\/span> <span class=\"coMULTI\">\/*Tr.: Settings page title \/ %s: Plugin name*\/<\/span> <a href=\"http:\/\/www.php.net\/printf\"><span class=\"kw3\">printf<\/span><\/a><span class=\"br0\">&#40;<\/span><a href=\"http:\/\/www.php.net\/str_replace\"><span class=\"kw3\">str_replace<\/span><\/a><span class=\"br0\">&#40;<\/span><span class=\"st_h\">'%s'<\/span><span class=\"sy0\">,<\/span> <span class=\"st_h\">'&lt;strong&gt;%s&lt;\/strong&gt;'<\/span><span class=\"sy0\">,<\/span> __<span class=\"br0\">&#40;<\/span><span class=\"st_h\">'%s Options'<\/span><span class=\"sy0\">,<\/span> <span class=\"st_h\">'random_number_generator'<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">,<\/span> <span class=\"st_h\">'Random Number Generator'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span> <span class=\"sy1\">?&gt;<\/span>&lt;\/h2&gt;<br \/>\n&nbsp; &lt;form method=&quot;post&quot; action=&quot;options.php&quot;&gt;<br \/>\n&nbsp; &nbsp; <span class=\"kw2\">&lt;?php<\/span> wp_nonce_field<span class=\"br0\">&#40;<\/span><span class=\"st_h\">'update-options'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span> <span class=\"sy1\">?&gt;<\/span><br \/>\n&nbsp; &nbsp; &lt;table class=&quot;form-table&quot;&gt;<br \/>\n&nbsp; &nbsp; &nbsp; &lt;tr valign=&quot;top&quot;&gt;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &lt;th &nbsp;colspan=&quot;2&quot; scope=&quot;row&quot;&gt;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw2\">&lt;?php<\/span> <span class=\"kw2\">global<\/span> <span class=\"re0\">$random_number_generator_key<\/span><span class=\"sy0\">;<\/span> <a href=\"http:\/\/www.php.net\/printf\"><span class=\"kw3\">printf<\/span><\/a><span class=\"br0\">&#40;<\/span>__<span class=\"br0\">&#40;<\/span><span class=\"st_h\">'Simply replace the tag %s by a random number.'<\/span><span class=\"sy0\">,<\/span> <span class=\"st_h\">'random_number_generator'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">,<\/span> <span class=\"st0\">&quot;&lt;code&gt;[<span class=\"es4\">$random_number_generator_key<\/span>]&lt;\/code&gt;&quot;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span> <span class=\"sy1\">?&gt;<\/span>&lt;br\/&gt;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;span class=&quot;description&quot;&gt;<span class=\"kw2\">&lt;?php<\/span> <a href=\"http:\/\/www.php.net\/printf\"><span class=\"kw3\">printf<\/span><\/a><span class=\"br0\">&#40;<\/span>__<span class=\"br0\">&#40;<\/span><span class=\"st_h\">'Used to avoid browsers cache by inserting a random number. For instance, %1$s generates %2$s.'<\/span><span class=\"sy0\">,<\/span> <span class=\"st_h\">'random_number_generator'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">,<\/span> <span class=\"st0\">&quot;&lt;code&gt;&amp;lt;a href=&quot;<\/span>https<span class=\"sy0\">:<\/span><span class=\"co1\">\/\/&quot;.__('my_url', 'random_number_generator').&quot;?[$random_number_generator_key]&quot;&amp;gt;&lt;\/code&gt;&quot;, &quot;&lt;code&gt;&amp;lt;a href=&quot;https:\/\/&quot;.__('my_url', 'random_number_generator').&quot;?&lt;span style=&quot;color:black;font-size:medium;font-weight:bold;&quot;&gt;&quot;.do_shortcode(&quot;[$random_number_generator_key]&quot;).&quot;&lt;\/span&gt;&quot;&amp;gt;&lt;\/code&gt;&quot;); ?&gt;&lt;\/span&gt;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"sy0\">&lt;\/<\/span>th<span class=\"sy0\">&gt;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"sy0\">&lt;\/<\/span>tr<span class=\"sy0\">&gt;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"sy0\">&lt;<\/span>tr valign<span class=\"sy0\">=<\/span><span class=\"st0\">&quot;top&quot;<\/span><span class=\"sy0\">&gt;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"sy0\">&lt;<\/span>th scope<span class=\"sy0\">=<\/span><span class=\"st0\">&quot;row&quot;<\/span> style<span class=\"sy0\">=<\/span><span class=\"st0\">&quot;text-align: right;&quot;<\/span><span class=\"sy0\">&gt;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw2\">&lt;?php<\/span> _e<span class=\"br0\">&#40;<\/span><span class=\"st_h\">'From:'<\/span><span class=\"sy0\">,<\/span> <span class=\"st_h\">'random_number_generator'<\/span><span class=\"br0\">&#41;<\/span> <span class=\"sy1\">?&gt;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &lt;\/th&gt;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &lt;td&gt;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;input type=&quot;text&quot; name=&quot;random_number_generator_from&quot; value=&quot;<span class=\"kw2\">&lt;?php<\/span> <span class=\"kw1\">echo<\/span> <span class=\"re0\">$random_number_generator_from<\/span><span class=\"sy0\">;<\/span> <span class=\"sy1\">?&gt;<\/span>&quot; \/&gt; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;a class=&quot;button&quot; title=&quot;<span class=\"kw2\">&lt;?php<\/span> _e<span class=\"br0\">&#40;<\/span><span class=\"st_h\">'Dispay more details'<\/span><span class=\"sy0\">,<\/span> <span class=\"st_h\">'random_number_generator'<\/span><span class=\"br0\">&#41;<\/span> <span class=\"sy1\">?&gt;<\/span>&quot; onclick=&quot;javascript:switchVisibility('random_number_generator_from_help');&quot;&gt;<span class=\"kw2\">&lt;?php<\/span> <span class=\"coMULTI\">\/*Tr.: Button caption for help*\/<\/span> _e<span class=\"br0\">&#40;<\/span><span class=\"st_h\">'?'<\/span><span class=\"sy0\">,<\/span> <span class=\"st_h\">'random_number_generator'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span> <span class=\"sy1\">?&gt;<\/span>&lt;\/a&gt; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;span id=&quot;random_number_generator_from_help&quot; style=&quot;text-align: left; display: none;&quot;&gt; <span class=\"kw2\">&lt;?php<\/span> <a href=\"http:\/\/www.php.net\/printf\"><span class=\"kw3\">printf<\/span><\/a><span class=\"br0\">&#40;<\/span>__<span class=\"br0\">&#40;<\/span><span class=\"st_h\">'Lowest integer value to be returned (default: &lt;code&gt;%d&lt;\/code&gt;).'<\/span><span class=\"sy0\">,<\/span> <span class=\"st_h\">'random_number_generator'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">,<\/span> <span class=\"nu0\">0<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span> <span class=\"sy1\">?&gt;<\/span>&lt;\/span&gt;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &lt;\/td&gt;<br \/>\n&nbsp; &nbsp; &nbsp; &lt;\/tr&gt;<br \/>\n&nbsp; &nbsp; &nbsp; &lt;tr valign=&quot;top&quot;&gt;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &lt;th scope=&quot;row&quot; style=&quot;text-align: right;&quot;&gt;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw2\">&lt;?php<\/span> _e<span class=\"br0\">&#40;<\/span><span class=\"st_h\">'To:'<\/span><span class=\"sy0\">,<\/span> <span class=\"st_h\">'random_number_generator'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span> <span class=\"sy1\">?&gt;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &lt;\/th&gt;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &lt;td&gt;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;input type=&quot;text&quot; name=&quot;random_number_generator_to&quot; value=&quot;<span class=\"kw2\">&lt;?php<\/span> <span class=\"kw1\">echo<\/span> <span class=\"re0\">$random_number_generator_to<\/span><span class=\"sy0\">;<\/span> <span class=\"sy1\">?&gt;<\/span>&quot; \/&gt; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;a class=&quot;button&quot; title=&quot;<span class=\"kw2\">&lt;?php<\/span> _e<span class=\"br0\">&#40;<\/span><span class=\"st_h\">'Dispay more details'<\/span><span class=\"sy0\">,<\/span> <span class=\"st_h\">'random_number_generator'<\/span><span class=\"br0\">&#41;<\/span> <span class=\"sy1\">?&gt;<\/span>&quot; onclick=&quot;javascript:switchVisibility('random_number_generator_to_help');&quot;&gt;<span class=\"kw2\">&lt;?php<\/span> _e<span class=\"br0\">&#40;<\/span><span class=\"st_h\">'?'<\/span><span class=\"sy0\">,<\/span> <span class=\"st_h\">'random_number_generator'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span> <span class=\"sy1\">?&gt;<\/span>&lt;\/a&gt; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;span id=&quot;random_number_generator_to_help&quot; style=&quot;text-align: left; display: none;&quot;&gt; <span class=\"kw2\">&lt;?php<\/span> <a href=\"http:\/\/www.php.net\/printf\"><span class=\"kw3\">printf<\/span><\/a><span class=\"br0\">&#40;<\/span>__<span class=\"br0\">&#40;<\/span><span class=\"st_h\">'Highest integer value to be returned (default: &lt;code&gt;%d&lt;\/code&gt;).'<\/span><span class=\"sy0\">,<\/span> <span class=\"st_h\">'random_number_generator'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">,<\/span> <a href=\"http:\/\/www.php.net\/mt_getrandmax\"><span class=\"kw3\">mt_getrandmax<\/span><\/a><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span> <span class=\"sy1\">?&gt;<\/span>&lt;\/span&gt;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &lt;\/td&gt;<br \/>\n&nbsp; &nbsp; &nbsp; &lt;\/tr&gt;<br \/>\n&nbsp; &nbsp; &nbsp; &lt;tr valign=&quot;top&quot;&gt;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &lt;th scope=&quot;row&quot; style=&quot;text-align: right;&quot;&gt;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw2\">&lt;?php<\/span> _e<span class=\"br0\">&#40;<\/span><span class=\"st_h\">'Format:'<\/span><span class=\"sy0\">,<\/span> <span class=\"st_h\">'random_number_generator'<\/span><span class=\"br0\">&#41;<\/span> <span class=\"sy1\">?&gt;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &lt;\/th&gt;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &lt;td&gt;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;input type=&quot;text&quot; name=&quot;random_number_generator_format&quot; value=&quot;<span class=\"kw2\">&lt;?php<\/span> <span class=\"kw1\">echo<\/span> <span class=\"re0\">$random_number_generator_format<\/span><span class=\"sy0\">;<\/span> <span class=\"sy1\">?&gt;<\/span>&quot; \/&gt; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;a class=&quot;button&quot; title=&quot;<span class=\"kw2\">&lt;?php<\/span> _e<span class=\"br0\">&#40;<\/span><span class=\"st_h\">'Dispay more details'<\/span><span class=\"sy0\">,<\/span> <span class=\"st_h\">'random_number_generator'<\/span><span class=\"br0\">&#41;<\/span> <span class=\"sy1\">?&gt;<\/span>&quot; onclick=&quot;javascript:switchVisibility('random_number_generator_format_help');&quot;&gt;<span class=\"kw2\">&lt;?php<\/span> _e<span class=\"br0\">&#40;<\/span><span class=\"st_h\">'?'<\/span><span class=\"sy0\">,<\/span> <span class=\"st_h\">'random_number_generator'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span> <span class=\"sy1\">?&gt;<\/span>&lt;\/a&gt; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;span id=&quot;random_number_generator_format_help&quot; style=&quot;text-align: left; display: none;&quot;&gt; <span class=\"kw2\">&lt;?php<\/span> <a href=\"http:\/\/www.php.net\/printf\"><span class=\"kw3\">printf<\/span><\/a><span class=\"br0\">&#40;<\/span>__<span class=\"br0\">&#40;<\/span><span class=\"st_h\">'Random number produced according to the formatting string above (default: &lt;code&gt;%s&lt;\/code&gt;).'<\/span><span class=\"sy0\">,<\/span> <span class=\"st_h\">'random_number_generator'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">,<\/span> <span class=\"st_h\">'%x'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span> <span class=\"sy1\">?&gt;<\/span>&lt;br\/&gt;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw2\">&lt;?php<\/span> <a href=\"http:\/\/www.php.net\/printf\"><span class=\"kw3\">printf<\/span><\/a><span class=\"br0\">&#40;<\/span>__<span class=\"br0\">&#40;<\/span><span class=\"st_h\">'See %s documentation for a description of format.'<\/span><span class=\"sy0\">,<\/span> <span class=\"st_h\">'random_number_generator'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">,<\/span> <span class=\"st_h\">'&lt;a href=&quot;'<\/span><span class=\"sy0\">.<\/span>__<span class=\"br0\">&#40;<\/span><span class=\"st_h\">'https:\/\/www.php.net\/manual\/en\/function.sprintf.php'<\/span><span class=\"sy0\">,<\/span> <span class=\"st_h\">'random_number_generator'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">.<\/span><span class=\"st_h\">'&quot; target&quot;_blank&quot; title=&quot;'<\/span><span class=\"sy0\">.<\/span>__<span class=\"br0\">&#40;<\/span><span class=\"st_h\">'Visit PHP: sprintf - Manual page'<\/span><span class=\"sy0\">,<\/span> <span class=\"st_h\">'random_number_generator'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">.<\/span><span class=\"st_h\">'&quot;&gt;sprintf()&lt;\/a&gt;'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span> <span class=\"sy1\">?&gt;<\/span>&lt;\/span&gt;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &lt;\/td&gt;<br \/>\n&nbsp; &nbsp; &nbsp; &lt;\/tr&gt;<br \/>\n&nbsp; &nbsp; &lt;\/table&gt;<br \/>\n&nbsp; &nbsp; &lt;input type=&quot;hidden&quot; name=&quot;action&quot; value=&quot;update&quot; \/&gt;<br \/>\n&nbsp; &nbsp; &lt;input type=&quot;hidden&quot; name=&quot;page_options&quot; value=&quot;random_number_generator_from,random_number_generator_to,random_number_generator_format&quot; \/&gt;<br \/>\n&nbsp; &nbsp; <span class=\"kw2\">&lt;?php<\/span> settings_fields<span class=\"br0\">&#40;<\/span> <span class=\"st_h\">'random_number_generator'<\/span> <span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span> <span class=\"sy1\">?&gt;<\/span><br \/>\n&nbsp; &nbsp; &lt;p class=&quot;submit&quot;&gt;<br \/>\n&nbsp; &nbsp; &nbsp; &lt;input type=&quot;submit&quot; class=&quot;button-primary&quot; value=&quot;<span class=\"kw2\">&lt;?php<\/span> _e<span class=\"br0\">&#40;<\/span><span class=\"st_h\">'Save Changes'<\/span><span class=\"sy0\">,<\/span> <span class=\"st_h\">'random_number_generator'<\/span><span class=\"br0\">&#41;<\/span> <span class=\"sy1\">?&gt;<\/span>&quot; \/&gt;<br \/>\n&nbsp; &nbsp; &lt;\/p&gt;<br \/>\n&nbsp; &lt;\/form&gt;<br \/>\n&lt;\/div&gt;<br \/>\n<span class=\"kw2\">&lt;?php<\/span><br \/>\n<span class=\"br0\">&#125;<\/span><br \/>\n<br \/>\n<span class=\"co4\">\/**<br \/>\n&nbsp;* Fonction ajoutant un lien pour la page des options dans la liste des extensions<br \/>\n&nbsp;* @param string $links Lien en cours<br \/>\n&nbsp;* @param string $file Extension en cours<br \/>\n&nbsp;* @return HTML<br \/>\n&nbsp;*\/<\/span><br \/>\n<span class=\"kw2\">function<\/span> random_number_generator_plugin_action_links<span class=\"br0\">&#40;<\/span><span class=\"re0\">$links<\/span><span class=\"sy0\">,<\/span> <span class=\"re0\">$file<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; <span class=\"kw1\">if<\/span> <span class=\"br0\">&#40;<\/span><span class=\"re0\">$file<\/span> <span class=\"sy0\">==<\/span> plugin_basename<span class=\"br0\">&#40;<\/span><a href=\"http:\/\/www.php.net\/dirname\"><span class=\"kw3\">dirname<\/span><\/a><span class=\"br0\">&#40;<\/span><span class=\"kw4\">__FILE__<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">.<\/span><span class=\"st_h\">'\/random_number_generator.php'<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"co1\">\/\/Le commentaire ci-dessous est extrait par Poedit pour \u00eatre mis dans les commentaires afin d'aider \u00e0 la traduction<\/span><br \/>\n&nbsp; &nbsp; <span class=\"co1\">\/\/Tr.: Below the plugin name, in the plugin page<\/span><br \/>\n&nbsp; &nbsp; <span class=\"re0\">$settings_link<\/span> <span class=\"sy0\">=<\/span> <span class=\"st0\">&quot;&lt;a href='options-general.php?page=&quot;<\/span><span class=\"sy0\">.<\/span>plugin_basename<span class=\"br0\">&#40;<\/span><a href=\"http:\/\/www.php.net\/dirname\"><span class=\"kw3\">dirname<\/span><\/a><span class=\"br0\">&#40;<\/span><span class=\"kw4\">__FILE__<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">.<\/span><span class=\"st_h\">'\/random_number_generator.php'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">.<\/span><span class=\"st0\">&quot;'&gt;&quot;<\/span><span class=\"sy0\">.<\/span>__<span class=\"br0\">&#40;<\/span><span class=\"st_h\">'Settings'<\/span><span class=\"sy0\">,<\/span><span class=\"st_h\">'random_number_generator'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">.<\/span><span class=\"st0\">&quot;&lt;\/a&gt;&quot;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; <a href=\"http:\/\/www.php.net\/array_unshift\"><span class=\"kw3\">array_unshift<\/span><\/a><span class=\"br0\">&#40;<\/span> <span class=\"re0\">$links<\/span><span class=\"sy0\">,<\/span> <span class=\"re0\">$settings_link<\/span> <span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; <span class=\"br0\">&#125;<\/span><br \/>\n&nbsp; <span class=\"kw1\">return<\/span> <span class=\"re0\">$links<\/span><span class=\"sy0\">;<\/span><br \/>\n<span class=\"br0\">&#125;<\/span><br \/>\n<br \/>\n<span class=\"co4\">\/**<br \/>\n&nbsp;* Fonction ajoutant les scripts n\u00e9cessaires dans les r\u00e9glages de l'extension<br \/>\n&nbsp;*\/<\/span><br \/>\n<span class=\"kw2\">function<\/span> random_number_generator_scripts<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; wp_enqueue_script<span class=\"br0\">&#40;<\/span><span class=\"st_h\">'random_number_generator_script1'<\/span><span class=\"sy0\">,<\/span> WP_PLUGIN_URL<span class=\"sy0\">.<\/span><span class=\"st_h\">'\/'<\/span><span class=\"sy0\">.<\/span><a href=\"http:\/\/www.php.net\/str_replace\"><span class=\"kw3\">str_replace<\/span><\/a><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;.php&quot;<\/span><span class=\"sy0\">,<\/span><span class=\"st0\">&quot;.js&quot;<\/span><span class=\"sy0\">,<\/span>plugin_basename<span class=\"br0\">&#40;<\/span><span class=\"kw4\">__FILE__<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n<span class=\"co1\">\/\/ &nbsp;wp_enqueue_script('random_number_generator_script2', 'my2ndScript', array('jquery', 'jquery-ui-tabs'));<\/span><br \/>\n<span class=\"br0\">&#125;<\/span><br \/>\n<br \/>\n<span class=\"co4\">\/**<br \/>\n&nbsp;* Fonction ajoutant un lien dans le menu R\u00e9glages pour la page des options de l'extension<br \/>\n&nbsp;*\/<\/span><br \/>\n<span class=\"kw2\">function<\/span> random_number_generator_settings_menu<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; <span class=\"kw1\">if<\/span> <span class=\"br0\">&#40;<\/span><a href=\"http:\/\/www.php.net\/function_exists\"><span class=\"kw3\">function_exists<\/span><\/a><span class=\"br0\">&#40;<\/span><span class=\"st_h\">'add_submenu_page'<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"co1\">\/\/Tr.: Settings menu plugin caption<\/span><br \/>\n&nbsp; &nbsp; <span class=\"re0\">$random_number_generator_settings_page<\/span> <span class=\"sy0\">=<\/span> add_submenu_page<span class=\"br0\">&#40;<\/span><span class=\"st_h\">'options-general.php'<\/span><span class=\"sy0\">,<\/span>__<span class=\"br0\">&#40;<\/span><span class=\"st_h\">'Rand#Gen.'<\/span><span class=\"sy0\">,<\/span><span class=\"st_h\">'random_number_generator'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">,<\/span> __<span class=\"br0\">&#40;<\/span><span class=\"st_h\">'Rand#Gen.'<\/span><span class=\"sy0\">,<\/span><span class=\"st_h\">'random_number_generator'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">,<\/span> <span class=\"st0\">&quot;install_plugins&quot;<\/span><span class=\"sy0\">,<\/span> <span class=\"kw4\">__FILE__<\/span><span class=\"sy0\">,<\/span> <span class=\"st_h\">'random_number_generator_optionsPage'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"co1\">\/\/ Ajoute les scripts JavaScript utilis\u00e9s par les pages d'administration de l'extension<\/span><br \/>\n&nbsp; &nbsp; add_action<span class=\"br0\">&#40;<\/span> <span class=\"st0\">&quot;admin_print_scripts-<span class=\"es4\">$random_number_generator_settings_page<\/span>&quot;<\/span><span class=\"sy0\">,<\/span> <span class=\"st_h\">'random_number_generator_scripts'<\/span> <span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; <span class=\"br0\">&#125;<\/span><br \/>\n<span class=\"br0\">&#125;<\/span><br \/>\n<br \/>\n<span class=\"co4\">\/**<br \/>\n&nbsp;* Fonction qui r\u00e9pertorie les param\u00e8tres de l'extension et les m\u00e9thodes de callback(validation)<br \/>\n&nbsp;*\/<\/span><br \/>\n<span class=\"kw2\">function<\/span> register_random_number_generator_settings<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span> <span class=\"co1\">\/\/ whitelist options<\/span><br \/>\n&nbsp; register_setting<span class=\"br0\">&#40;<\/span> <span class=\"st_h\">'random_number_generator'<\/span><span class=\"sy0\">,<\/span> <span class=\"st_h\">'random_number_generator_from'<\/span><span class=\"sy0\">,<\/span> <span class=\"st_h\">'intval'<\/span> <span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span> <span class=\"co1\">\/\/ Valeur enti\u00e8re uniquement<\/span><br \/>\n&nbsp; register_setting<span class=\"br0\">&#40;<\/span> <span class=\"st_h\">'random_number_generator'<\/span><span class=\"sy0\">,<\/span> <span class=\"st_h\">'random_number_generator_to'<\/span><span class=\"sy0\">,<\/span> <span class=\"st_h\">'intval'<\/span> <span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; register_setting<span class=\"br0\">&#40;<\/span> <span class=\"st_h\">'random_number_generator'<\/span><span class=\"sy0\">,<\/span> <span class=\"st_h\">'random_number_generator_format'<\/span><span class=\"sy0\">,<\/span> <span class=\"st_h\">'wp_filter_nohtml_kses'<\/span> <span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span> <span class=\"co1\">\/\/ HTML interdit<\/span><br \/>\n<span class=\"br0\">&#125;<\/span><br \/>\n<br \/>\n<br \/>\n<span class=\"co4\">\/**<br \/>\n&nbsp;* Fonction renvoyant un chiffre al\u00e9atoire<br \/>\n&nbsp;* @param string $atts Attributs \u00e9ventuellement pass\u00e9s dans le tag<br \/>\n&nbsp;* @param string $content Format \u00e0 utiliser si encapsul\u00e9 par le tag<br \/>\n&nbsp;* @return HTML<br \/>\n&nbsp;*\/<\/span><br \/>\n<span class=\"kw2\">function<\/span> random_number_generator_shortcode_handler<span class=\"br0\">&#40;<\/span><span class=\"re0\">$atts<\/span><span class=\"sy0\">,<\/span> <span class=\"re0\">$content<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; <span class=\"co1\">\/\/ $atts &nbsp; &nbsp;::= array of attributes<\/span><br \/>\n&nbsp; <span class=\"co1\">\/\/ $content ::= text within enclosing form of shortcode element<\/span><br \/>\n&nbsp; <span class=\"co1\">\/\/ $code &nbsp; &nbsp;::= the shortcode found, when == callback name<\/span><br \/>\n&nbsp; <span class=\"co1\">\/\/ examples: [my-shortcode]<\/span><br \/>\n&nbsp; <span class=\"co1\">\/\/ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [my-shortcode\/]<\/span><br \/>\n&nbsp; <span class=\"co1\">\/\/ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [my-shortcode foo='bar']<\/span><br \/>\n&nbsp; <span class=\"co1\">\/\/ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [my-shortcode foo='bar'\/]<\/span><br \/>\n&nbsp; <span class=\"co1\">\/\/ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [my-shortcode]content[\/my-shortcode]<\/span><br \/>\n&nbsp; <span class=\"co1\">\/\/ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [my-shortcode foo='bar']content[\/my-shortcode]<\/span><br \/>\n&nbsp; <br \/>\n&nbsp; <span class=\"co1\">\/\/ [random-number from=&quot;2&quot; to=&quot;72&quot; format=&quot;%b&quot;]%d minutes[\/random-number]<\/span><br \/>\n&nbsp; <span class=\"co1\">\/\/ output: &nbsp; an integer value between 2 &amp; 72 followed by the word 'minutes'<\/span><br \/>\n&nbsp; <span class=\"co1\">\/\/ affiche : une valeur enti\u00e8re entre 2 &amp; 72 suivie du mot 'minutes'<\/span><br \/>\n<br \/>\n&nbsp; <span class=\"co1\">\/\/ R\u00e9cup\u00e9ration des param\u00e8tres depuis les options de WP<\/span><br \/>\n&nbsp; <span class=\"re0\">$random_number_generator_from<\/span> &nbsp; <span class=\"sy0\">=<\/span> get_option<span class=\"br0\">&#40;<\/span><span class=\"st_h\">'random_number_generator_from'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; <span class=\"re0\">$random_number_generator_to<\/span> &nbsp; &nbsp; <span class=\"sy0\">=<\/span> get_option<span class=\"br0\">&#40;<\/span><span class=\"st_h\">'random_number_generator_to'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; <span class=\"re0\">$random_number_generator_format<\/span> <span class=\"sy0\">=<\/span> get_option<span class=\"br0\">&#40;<\/span><span class=\"st_h\">'random_number_generator_format'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\n&nbsp; <span class=\"co1\">\/\/ R\u00e9cup\u00e9ration des param\u00e8tres \u00e9ventuels avec les options sauvegard\u00e9es comme valeur par d\u00e9faut<\/span><br \/>\n&nbsp; <a href=\"http:\/\/www.php.net\/extract\"><span class=\"kw3\">extract<\/span><\/a><span class=\"br0\">&#40;<\/span>shortcode_atts<span class=\"br0\">&#40;<\/span><a href=\"http:\/\/www.php.net\/array\"><span class=\"kw3\">array<\/span><\/a><span class=\"br0\">&#40;<\/span><span class=\"st_h\">'from'<\/span> <span class=\"sy0\">=&gt;<\/span> <span class=\"re0\">$random_number_generator_from<\/span><span class=\"sy0\">,<\/span> <span class=\"st_h\">'to'<\/span> <span class=\"sy0\">=&gt;<\/span> <span class=\"re0\">$random_number_generator_to<\/span><span class=\"sy0\">,<\/span> <span class=\"st_h\">'format'<\/span> <span class=\"sy0\">=&gt;<\/span> <span class=\"re0\">$random_number_generator_format<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">,<\/span> <span class=\"re0\">$atts<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\n&nbsp; <span class=\"co1\">\/\/ Si on a entour\u00e9 du texte avec la balise, c'est que ce texte est LE format \u00e0 utiliser<\/span><br \/>\n&nbsp; <span class=\"co1\">\/\/ Il devrait contenir un champ de sp\u00e9cification pour afficher le nombre al\u00e9atoire<\/span><br \/>\n&nbsp; <span class=\"kw1\">if<\/span> <span class=\"br0\">&#40;<\/span><span class=\"re0\">$content<\/span> <span class=\"sy0\">!=<\/span> <span class=\"st0\">&quot;&quot;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"re0\">$format<\/span> <span class=\"sy0\">=<\/span> <span class=\"re0\">$content<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; <span class=\"br0\">&#125;<\/span><br \/>\n<br \/>\n&nbsp; <span class=\"co1\">\/\/ Valide les diff\u00e9rentes options<\/span><br \/>\n&nbsp; validate_data<span class=\"br0\">&#40;<\/span><span class=\"re0\">$from<\/span><span class=\"sy0\">,<\/span> <span class=\"re0\">$to<\/span><span class=\"sy0\">,<\/span> <span class=\"re0\">$format<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; <span class=\"co1\">\/\/ G\u00e9n\u00e9ration al\u00e9atoire<\/span><br \/>\n&nbsp; <a href=\"http:\/\/www.php.net\/mt_srand\"><span class=\"kw3\">mt_srand<\/span><\/a><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; <span class=\"co1\">\/\/ Renvoie un nombre al\u00e9atoire<\/span><br \/>\n&nbsp; <span class=\"kw1\">return<\/span> <a href=\"http:\/\/www.php.net\/sprintf\"><span class=\"kw3\">sprintf<\/span><\/a><span class=\"br0\">&#40;<\/span><span class=\"re0\">$format<\/span><span class=\"sy0\">,<\/span> <a href=\"http:\/\/www.php.net\/mt_rand\"><span class=\"kw3\">mt_rand<\/span><\/a><span class=\"br0\">&#40;<\/span><span class=\"re0\">$from<\/span><span class=\"sy0\">,<\/span> <span class=\"re0\">$to<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n<span class=\"br0\">&#125;<\/span><br \/>\n<br \/>\n<span class=\"co1\">\/\/ Ajout du hook pour d\u00e9tecter\/remplacer le mot-cl\u00e9 lorsqu'il est utilis\u00e9<\/span><br \/>\nadd_shortcode<span class=\"br0\">&#40;<\/span><span class=\"re0\">$random_number_generator_key<\/span><span class=\"sy0\">,<\/span> <span class=\"st_h\">'random_number_generator_shortcode_handler'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\n<span class=\"co1\">\/\/ Si on est administrateur<\/span><br \/>\n<span class=\"kw1\">if<\/span> <span class=\"br0\">&#40;<\/span>is_admin<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; <span class=\"co1\">\/\/ M\u00e9thode \u00e0 appeler lors de l'activation de l'extension<\/span><br \/>\n&nbsp; register_activation_hook<span class=\"br0\">&#40;<\/span><span class=\"kw4\">__FILE__<\/span><span class=\"sy0\">,<\/span> <span class=\"st0\">&quot;random_number_generator_install&quot;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; <span class=\"co1\">\/\/ M\u00e9thode \u00e0 appeler lors de la g\u00e9n\u00e9ration du menu d'admin<\/span><br \/>\n&nbsp; add_action<span class=\"br0\">&#40;<\/span><span class=\"st_h\">'admin_menu'<\/span><span class=\"sy0\">,<\/span> <span class=\"st_h\">'random_number_generator_settings_menu'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; <span class=\"co1\">\/\/ M\u00e9thode \u00e0 appeler lors de l'acc\u00e8s \u00e0 l'administration<\/span><br \/>\n&nbsp; add_action<span class=\"br0\">&#40;<\/span><span class=\"st_h\">'admin_init'<\/span><span class=\"sy0\">,<\/span> <span class=\"st_h\">'register_random_number_generator_settings'<\/span> <span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; <span class=\"co1\">\/\/ M\u00e9thode \u00e0 appeler lors de l'affichage des liens d'action sur la page des extensions install\u00e9es<\/span><br \/>\n&nbsp; add_filter<span class=\"br0\">&#40;<\/span><span class=\"st_h\">'plugin_action_links'<\/span><span class=\"sy0\">,<\/span> <span class=\"st_h\">'random_number_generator_plugin_action_links'<\/span><span class=\"sy0\">,<\/span> <span class=\"nu0\">10<\/span><span class=\"sy0\">,<\/span> <span class=\"nu0\">2<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n<span class=\"br0\">&#125;<\/span><br \/>\n<br \/>\n<span class=\"sy1\">?&gt;<\/span><\/div><\/td><\/tr><\/tbody><\/table><\/div>\n<p>On remarquera que je fais \u00e9galement appel \u00e0 la fonction <code class=\"codecolorer php dawn\"><span class=\"php\">do_shortcode<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><\/span><\/code> pour afficher un exemple avec les valeurs choisies dans la page de r\u00e9glages des options. <img src=\"https:\/\/blogs.wittwer.fr\/whiler\/wp-includes\/images\/smilies\/skype\/\/dull.gif\" alt=\"|-(\" class=\"wp-smiley\" style=\"height: 1em; max-height: 1em;\" \/> <\/p>\n<p>Le code source est disponible sur les <a target=\"_blank\" href=\"https:\/\/plugins.svn.wordpress.org\/random-number-generator\/\" rel=\"noopener\">serveurs SVN de WordPress<\/a> ou sur la page des <a target=\"_blank\" href=\"https:\/\/wordpress.org\/extend\/plugins\/random-number-generator\/\" rel=\"noopener\">extensions<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>J\u2019ai effectu\u00e9 quelques modifications pour que la balise supporte des attributs. <\/p>\n<p>On peut ainsi utiliser la balise ansi :<br \/>\n[random-number],<br \/>\n[random-number\/],<br \/>\n[random-number from='\u03b1'],<br \/>\n[random-number to='\u03b2'\/],<br \/>\n[random-number from='\u03b1' to='\u03b2' format='\u03c6'],<br \/>\n[random-number]\u03c6[\/random-number],<br \/>\n[random-number from='\u03b1' to='\u03b2']\u03c6[\/random-number]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_links_to":"","_links_to_target":""},"categories":[9,11],"tags":[99,15,106,27,100,111,26,128,108,107],"class_list":["post-955","post","type-post","status-publish","format-standard","hentry","category-php","category-web","tag-addons","tag-api","tag-blog","tag-coloration-syntaxique","tag-extensions","tag-html","tag-plugin","tag-rng","tag-script","tag-wordpress"],"_links":{"self":[{"href":"https:\/\/blogs.wittwer.fr\/whiler\/wp-json\/wp\/v2\/posts\/955","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogs.wittwer.fr\/whiler\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.wittwer.fr\/whiler\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.wittwer.fr\/whiler\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.wittwer.fr\/whiler\/wp-json\/wp\/v2\/comments?post=955"}],"version-history":[{"count":1,"href":"https:\/\/blogs.wittwer.fr\/whiler\/wp-json\/wp\/v2\/posts\/955\/revisions"}],"predecessor-version":[{"id":6397,"href":"https:\/\/blogs.wittwer.fr\/whiler\/wp-json\/wp\/v2\/posts\/955\/revisions\/6397"}],"wp:attachment":[{"href":"https:\/\/blogs.wittwer.fr\/whiler\/wp-json\/wp\/v2\/media?parent=955"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.wittwer.fr\/whiler\/wp-json\/wp\/v2\/categories?post=955"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.wittwer.fr\/whiler\/wp-json\/wp\/v2\/tags?post=955"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}