[SPIP][PLUGINS] v3.0-->v3.2
[lhc/web/www.git] / www / ecrire / inc / actions.php
index 7e2cb76..7abfc1e 100644 (file)
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2014                                                *
+ *  Copyright (c) 2001-2017                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
  *  Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne.   *
 \***************************************************************************/
 
-if (!defined('_ECRIRE_INC_VERSION')) return;
+/**
+ * Gestion des actions sécurisées
+ *
+ * @package SPIP\Core\Actions
+ **/
+
+if (!defined('_ECRIRE_INC_VERSION')) {
+       return;
+}
 
 /**
- * retourne une URL ou un formulaire securises
+ * Retourne une URL ou un formulaire securisé
  *
- * http://doc.spip.org/@generer_action_auteur
+ * @uses inc_securiser_action_dist()
  *
  * @param string $action
+ *     Nom du fichier/action appelé (dans le répertoire action)
  * @param string $arg
+ *     Arguments pour l'action sécurisée
  * @param string $redirect
+ *     Adresse de redirection souhaitée à la fin du bon déroulement de l’action
  * @param bool|int|string $mode
- *   -1 : renvoyer action, arg et hash sous forme de array()
- *   true ou false : renvoyer une url, avec & (false) ou & (true)
- *   string : renvoyer un formulaire
+ *     - -1 : renvoyer action, arg et hash sous forme de array()
+ *     - true ou false : renvoyer une url, avec `&` (false) ou `&` (true)
+ *     - string : renvoyer un formulaire
  * @param string|int $att
- *   id_auteur pour lequel generer l'action en mode url ou array()
- *   atributs du formulaire en mode formulaire
+ *     - id_auteur pour lequel générer l'action en mode url ou array()
+ *     - attributs du formulaire en mode formulaire
  * @param bool $public
  * @return array|string
+ *     URL, code HTML du formulaire ou tableau (action, arg, hash)
  */
-function generer_action_auteur($action, $arg, $redirect = "", $mode = false, $att = '', $public = false){
+function generer_action_auteur($action, $arg, $redirect = '', $mode = false, $att = '', $public = false) {
        $securiser_action = charger_fonction('securiser_action', 'inc');
+
        return $securiser_action($action, $arg, $redirect, $mode, $att, $public);
 }
 
-// http://doc.spip.org/@redirige_action_auteur
+/**
+ * Génère une URL ou un formulaire dirigé vers un fichier action (action/xx.php)
+ *
+ * Le génère à condition que $mode="texte".
+ *
+ * @uses generer_action_auteur()
+ *
+ * @api
+ * @param string $action
+ *     Nom du fichier action/xx.php
+ * @param string $arg
+ *     Argument passé à l'action, qui sera récupéré par la fonction
+ *     `securiser_action()`
+ * @param string $ret
+ *     Nom du script exec sur lequel on revient après l'action (redirection),
+ *     que l'on peut récupérer dans une fonction d'action par `_request('redirect')`
+ * @param string $gra
+ *     Arguments transmis au script exec de retour `arg1=yy&arg2=zz`
+ * @param bool|string|int $mode
+ *     - -1 : renvoyer action, arg et hash sous forme de array()
+ *     - true ou false : renvoyer une url, avec `&` (false) ou `&` (true)
+ *     - string : renvoyer un formulaire
+ * @param string $atts ?
+ * @param bool $public
+ *     true produit une URL d'espace public
+ *     false (par défaut) produit une URL d'espace privé
+ * @return string
+ *     Code HTML du formulaire
+ */
 function redirige_action_auteur($action, $arg, $ret, $gra = '', $mode = false, $atts = '', $public = false) {
-
-       $r = ($public ? _DIR_RESTREINT_ABS : _DIR_RESTREINT) .generer_url_ecrire($ret, $gra, true, true);
+       $r = ($public ? _DIR_RESTREINT_ABS : _DIR_RESTREINT) . generer_url_ecrire($ret, $gra, true, true);
 
        return generer_action_auteur($action, $arg, $r, $mode, $atts, $public);
 }
 
-// http://doc.spip.org/@redirige_action_post
-function redirige_action_post($action, $arg, $ret, $gra, $corps, $att = ''){
-       $r = _DIR_RESTREINT.generer_url_ecrire($ret, $gra, false, true);
-       return generer_action_auteur($action, $arg, $r, $corps, $att." method='post'");
+/**
+ * Retourne une URL ou un formulaire sécurisé en méthode POST
+ *
+ * @param string $action
+ *     Nom du fichier/action appelé (dans le répertoire action)
+ * @param string $arg
+ *     Arguments pour l'action sécurisée
+ * @param string $ret
+ *     Adresse de redirection souhaitée à la fin du bon déroulement de l’action
+ * @param string $gra
+ *     Arguments à transmettre, tel que `arg1=yy&arg2=zz`
+ * @param bool|int|string $corps
+ *     - -1 : renvoyer action, arg et hash sous forme de array()
+ *     - true ou false : renvoyer une url, avec `&` (false) ou `&` (true)
+ *     - string : renvoyer un formulaire
+ * @param string|int $att
+ *     - id_auteur pour lequel générer l'action en mode url ou array()
+ *     - attributs du formulaire en mode formulaire
+ * @return array|string
+ *     URL, code HTML du formulaire ou tableau (action, arg, hash)
+ */
+function redirige_action_post($action, $arg, $ret, $gra, $corps, $att = '') {
+       $r = _DIR_RESTREINT . generer_url_ecrire($ret, $gra, false, true);
+
+       return generer_action_auteur($action, $arg, $r, $corps, $att . " method='post'");
 }
 
 
 /**
- * Fonction de formatage du contenu renvoye en ajax
- *
- * http://doc.spip.org/@ajax_retour
+ * Fonction de formatage du contenu renvoyé en ajax
  *
  * @param string $corps
  * @param string $content_type
@@ -62,35 +121,32 @@ function redirige_action_post($action, $arg, $ret, $gra, $corps, $att = ''){
  *   La valeur speciale false fournit text/html sans entete xml. Elle equivaut a
  *   passer "text/html" comme $content_type
  */
-function ajax_retour($corps, $content_type = null){
+function ajax_retour($corps, $content_type = null) {
        $xml = false;
-       if (is_null($content_type) OR $content_type===true){
+       if (is_null($content_type) or $content_type === true) {
                $xml = true;
                $content_type = 'text/html';
-       }
-       elseif (!$content_type OR !is_string($content_type) OR strpos($content_type,'/')===false) {
+       } elseif (!$content_type or !is_string($content_type) or strpos($content_type, '/') === false) {
                $content_type = 'text/html';
        }
-       
-       $e = "";
+
+       $e = '';
        if (isset($_COOKIE['spip_admin'])
-           AND ((_request('var_mode')=='debug') OR !empty($GLOBALS['tableau_des_temps'])))
+               and ((_request('var_mode') == 'debug') or !empty($GLOBALS['tableau_des_temps']))
+       ) {
                $e = erreur_squelette();
-       if (isset($GLOBALS['transformer_xml']) OR (isset($GLOBALS['exec']) AND $GLOBALS['exec']=='valider_xml')){
+       }
+       if (isset($GLOBALS['transformer_xml']) or (isset($GLOBALS['exec']) and $GLOBALS['exec'] == 'valider_xml')) {
                $debut = _DOCTYPE_ECRIRE
-                        ."<html><head><title>Debug Spip Ajax</title></head>"
-                        ."<body><div>\n\n"
-                        ."<!-- %%%%%%%%%%%%%%%%%%% Ajax %%%%%%%%%%%%%%%%%%% -->\n";
-
+                       . '<html><head><title>Debug Spip Ajax</title></head>'
+                       . "<body><div>\n\n"
+                       . "<!-- %%%%%%%%%%%%%%%%%%% Ajax %%%%%%%%%%%%%%%%%%% -->\n";
                $fin = '</div></body></html>';
-
        } else {
-               $c = $GLOBALS['meta']["charset"];
-               header('Content-Type: '.$content_type.'; charset='.$c);
-               $debut = (($xml AND strlen(trim($corps))) ? '<'."?xml version='1.0' encoding='".$c."'?".">\n" : '');
-               $fin = "";
+               $c = $GLOBALS['meta']['charset'];
+               header('Content-Type: ' . $content_type . '; charset=' . $c);
+               $debut = (($xml and strlen(trim($corps))) ? '<' . "?xml version='1.0' encoding='" . $c . "'?" . ">\n" : '');
+               $fin = '';
        }
        echo $debut, $corps, $fin, $e;
 }
-
-?>