[ Index ]
 

Code source de SPIP 1.9.2c

Accédez au Source d'autres logiciels libres

title

Body

[fermer]

/ecrire/inc/ -> actions.php (source)

   1  <?php
   2  
   3  /***************************************************************************\
   4   *  SPIP, Systeme de publication pour l'internet                           *
   5   *                                                                         *
   6   *  Copyright (c) 2001-2007                                                *
   7   *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
   8   *                                                                         *
   9   *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
  10   *  Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne.   *
  11  \***************************************************************************/
  12  
  13  if (!defined("_ECRIRE_INC_VERSION")) return;
  14  
  15  include_spip('inc/meta');
  16  
  17  // http://doc.spip.org/@generer_action_auteur
  18  function generer_action_auteur($action, $arg, $redirect="", $mode=false, $att='')
  19  {
  20      $securiser_action = charger_fonction('securiser_action', 'inc');
  21      return $securiser_action($action, $arg, $redirect, $mode, $att);
  22  }
  23  
  24  // http://doc.spip.org/@redirige_action_auteur
  25  function redirige_action_auteur($action, $arg, $ret, $gra='', $mode=false, $atts='') {
  26  
  27      $r = generer_url_ecrire($ret, $gra, true, _DIR_RESTREINT_ABS);
  28  
  29      return generer_action_auteur($action, $arg, $r, $mode, $atts);
  30  }
  31  
  32  // Retourne un formulaire d'execution de $action sur $id,
  33  // revenant a l'envoyeur $script d'arguments $args.
  34  // Utilise Ajax si dispo, en ecrivant le resultat dans le innerHTML du noeud
  35  // d'attribut  id = $action-$id (cf. AjaxSqueeze dans layer.js)
  36  // Precise le charset de l'envoyeur avec la variable d'url var_ajaxcharset
  37  // qui sert aussi a index.php de savoir que la requete est en Ajax.
  38  // Attention, la redirection doit propager cette variable, 
  39  // i.e. la mettre dans la 2e URL, et avant l'ancre de celle ci.
  40  
  41  // http://doc.spip.org/@ajax_action_auteur
  42  function ajax_action_auteur($action, $id, $script, $args='', $corps=false, $args_ajax='', $fct_ajax='')
  43  {
  44      if (strpos($args,"#")===FALSE)
  45          $ancre = "$action-" . intval($id);
  46      else {
  47          $ancre = explode("#",$args);
  48          $args = $ancre[0];
  49          $ancre = $ancre[1];
  50      }
  51  
  52      // Formulaire (POST)
  53      // methodes traditionnelle et ajax a unifier...
  54      if (is_string($corps)) {
  55  
  56          // Methode traditionnelle
  57          if (_SPIP_AJAX !== 1) {
  58              return redirige_action_auteur($action,
  59                  $id,
  60                  $script,
  61                  "$args#$ancre",
  62                  $corps,
  63                  "\nmethod='post'");
  64          }
  65  
  66          // Methode Ajax
  67          else {
  68              if ($args AND !$args_ajax) $args_ajax = "&$args";
  69              return redirige_action_auteur($action,
  70                  $id,
  71                  $action,
  72                  "var_ajaxcharset=utf-8&script=$script$args_ajax",
  73                  $corps,
  74                  (" method='post'\nonsubmit="
  75                   . ajax_action_declencheur('this', $ancre, $fct_ajax)));
  76                   
  77          }
  78      }
  79  
  80      // Lien (GET)
  81      else {
  82          $href = redirige_action_auteur($action,
  83              $id,
  84              $script,
  85              "$args#$ancre",
  86              false);
  87  
  88          if ($args AND !$args_ajax) $args_ajax = "&$args";
  89  
  90          $ajax = redirige_action_auteur($action,
  91              $id,
  92              $action,
  93              "var_ajaxcharset=utf-8&script=$script$args_ajax");
  94  
  95          $cli = array_shift($corps);
  96          return "<a href='$href'\nonclick="
  97          .  ajax_action_declencheur($ajax, $ancre, $fct_ajax)
  98          . ">"
  99          . (!$corps ?  $cli : ("\n<span" . $corps[0] . ">$cli</span>"))
 100          . "</a>";
 101      }
 102  }
 103  
 104  
 105  // http://doc.spip.org/@ajax_action_post
 106  function ajax_action_post($action, $arg, $retour, $gra, $corps, $clic, $atts_bouton, $atts_span = "", $args_ajax='')
 107  {
 108      if (strpos($gra,"#")===FALSE)
 109          $ancre = "$action-" . intval($arg);
 110      else {
 111          $ancre = explode("#",$gra);
 112          $args = $ancre[0];
 113          $ancre = $ancre[1];
 114      }
 115  
 116      if (_SPIP_AJAX !== 1) {
 117        return redirige_action_auteur($action, $arg, $retour,
 118                      ($gra . '#' . $ancre),
 119                        ("<div>"
 120                         . $corps 
 121                         . "<span"
 122                         . $atts_span
 123                         . "><input type='submit' class='fondo' value='"
 124                         . $clic
 125                         ."' $atts_bouton/></span></div>"),
 126                        "\nmethod='post'");
 127    } else { 
 128  
 129      if ($gra AND !$args_ajax) $args_ajax = "&$gra";
 130      $corps = "<div>"
 131        . $corps 
 132        . "<span"
 133        . $atts_span
 134        . "><input type='submit' value='"
 135        . $clic
 136        . "' onclick=" 
 137        . ajax_action_declencheur('this.form', $ancre)
 138        . " $atts_bouton/></span></div>";
 139  
 140      return redirige_action_auteur($action,
 141                        $arg,
 142                        $action,
 143                  "var_ajaxcharset=utf-8&script=$retour$args_ajax",
 144                        $corps ,
 145                        " method='post'");
 146      }
 147  
 148  }
 149  
 150  //
 151  // Attention pour que Safari puisse manipuler cet evenement
 152  // il faut onsubmit="return AjaxSqueeze(x,'truc',...)"
 153  // et non pas onsubmit='return AjaxSqueeze(x,"truc",...)'
 154  //
 155  // http://doc.spip.org/@ajax_action_declencheur
 156  function ajax_action_declencheur($request, $noeud, $fct_ajax='') {
 157      if (strpos($request, 'this') !== 0) 
 158          $request = "'".$request."'";
 159  
 160      return '"return AjaxSqueeze('
 161      . $request
 162      . ",'"
 163      . $noeud
 164      . "',"
 165        . ($fct_ajax ? $fct_ajax : "''")
 166      . ',event)"';
 167  }
 168  
 169  // http://doc.spip.org/@ajax_action_greffe
 170  function ajax_action_greffe($idom, $corps)
 171  {
 172      return _request('var_ajaxcharset')
 173      ? $corps
 174      : "\n<div id='$idom'>$corps\n</div>\n";
 175  }
 176  
 177  // http://doc.spip.org/@ajax_retour
 178  function ajax_retour($corps,$xml = true)
 179  {
 180      if (isset($GLOBALS['transformer_xml'])) {
 181           echo _DOCTYPE_ECRIRE
 182          . "<html><head><title>Debug Spip Ajax</title></head>"
 183          .  "<body>\n\n"
 184          . "<!-- %%%%%%%%%%%%%%%%%%% Ajax %%%%%%%%%%%%%%%%%%% -->\n"
 185          . $corps
 186          . '</body></html>';
 187          return;
 188      }
 189  
 190      $c = $GLOBALS['meta']["charset"];
 191      header('Content-Type: text/html; charset='. $c);
 192      $c = $xml?'<' . "?xml version='1.0' encoding='" . $c . "'?" . ">\n":'';
 193      echo $c, $corps;
 194      exit;
 195  }
 196  
 197  /* specifique FF+FB
 198  // http://doc.spip.org/@ajax_debug_retour
 199  function ajax_debug_retour($corps, $c)
 200  {
 201      $sax = charger_fonction('sax', 'inc');
 202      $corps = $sax($corps);
 203      if ($GLOBALS['xhtml_error']) {
 204        spip_log("ajax_retour " .  $GLOBALS['REQUEST_URI'] . $GLOBALS['xhtml_error']);
 205        $debut = "<script type='text/javascript'>console.log('";
 206        $fin = "')</script>\n";
 207        echo $GLOBALS['xhtml_error']
 208        . $debut
 209        . join("$fin$debut", split("\n", addslashes($corps)))
 210        . $fin;
 211        exit;
 212      }
 213  }
 214  */
 215  
 216  // http://doc.spip.org/@determine_upload
 217  function determine_upload()
 218  {
 219      global $connect_toutes_rubriques, $connect_login, $connect_statut ;
 220  
 221      if (!$connect_statut) {
 222          $auth = charger_fonction('auth', 'inc');
 223          $auth = $auth();
 224      }
 225      if ($connect_statut != '0minirezo') return false;
 226      $repertoire = _DIR_TRANSFERT;
 227      if(!@file_exists($repertoire)) {
 228          $repertoire = preg_replace(','._DIR_TMP.',', '', $repertoire);
 229          $repertoire = sous_repertoire(_DIR_TMP, $repertoire);
 230      }
 231      if($connect_toutes_rubriques) return $repertoire;
 232  
 233      $sous_rep = $repertoire . $connect_login ;
 234      if(!@file_exists($sous_rep)) {
 235          $sous_rep = sous_repertoire($repertoire, $connect_login);
 236      }
 237  
 238      return $sous_rep . '/';
 239  }
 240  
 241  //
 242  // retourne le statut d'un utilisateur authentifie en php_auth, false sinon
 243  //
 244  // http://doc.spip.org/@verifier_php_auth
 245  function verifier_php_auth() {
 246      if (@$_SERVER['PHP_AUTH_USER'] && $_SERVER['PHP_AUTH_PW']
 247      && !@$GLOBALS['ignore_auth_http']) {
 248          $result = spip_query("SELECT * FROM spip_auteurs WHERE login=" . _q($_SERVER['PHP_AUTH_USER']));
 249  
 250          $row = @spip_fetch_array($result);
 251          if ($row AND $row['source'] != 'ldap') {
 252            if ($row['pass'] == md5($row['alea_actuel'] . $_SERVER['PHP_AUTH_PW'])) {
 253              $GLOBALS['auteur_session'] = $row;
 254              return $row['statut'];
 255            } else return false;
 256          } else {
 257            if (!$row AND !$GLOBALS['ldap_present'])
 258              return false;
 259            else {
 260              $auth_ldap = charger_fonction('auth_ldap', 'inc', true);
 261              if ($auth_ldap) {
 262                $GLOBALS['auteur_session'] =  $auth_ldap($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW']);
 263                return $GLOBALS['auteur_session']['statut'];
 264              }
 265            }
 266          }
 267      } 
 268      return false;
 269  }
 270  
 271  //
 272  // entete php_auth (est-encore utilise ?)
 273  //
 274  // http://doc.spip.org/@ask_php_auth
 275  function ask_php_auth($pb, $raison, $retour, $url='', $re='', $lien='') {
 276      @Header("WWW-Authenticate: Basic realm=\"espace prive\"");
 277      @Header("HTTP/1.0 401 Unauthorized");
 278      echo "<b>$pb</b><p>$raison</p>[<a href='./'>$retour</a>] ";
 279      if ($url) {
 280          echo "[<a href='", generer_url_public('spip_cookie',"essai_auth_http=oui&$url"), "'>$re</a>]";
 281      }
 282      
 283      if ($lien)
 284          echo " [<a href='" . _DIR_RESTREINT_ABS . "'>"._T('login_espace_prive')."</a>]";
 285      exit;
 286  }
 287  
 288  
 289  ?>


Généré le : Wed Nov 21 10:20:27 2007 par Balluche grâce à PHPXref 0.7
  Clicky Web Analytics