| [ Index ] |
|
Code source de SPIP 1.9.2c |
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 ?>
titre
Description
Corps
titre
Description
Corps
titre
Description
Corps
titre
Corps
| Généré le : Wed Nov 21 10:20:27 2007 | par Balluche grâce à PHPXref 0.7 |
|