X-Git-Url: http://git.cyclocoop.org/?p=velocampus%2Fweb%2Fwww.git;a=blobdiff_plain;f=www%2Fecrire%2Faction%2Fredirect.php;h=4684f7e001242198f5d28e1745e61d345c0392a2;hp=021ec5d4d51137492049f2a57d25f11657653c16;hb=e99f0878011913365e49b30d90e496c24c301393;hpb=80b4d3e85f78d402ed2e73f8f5d1bf4c19962eed diff --git a/www/ecrire/action/redirect.php b/www/ecrire/action/redirect.php index 021ec5d..4684f7e 100644 --- a/www/ecrire/action/redirect.php +++ b/www/ecrire/action/redirect.php @@ -3,7 +3,7 @@ /***************************************************************************\ * SPIP, Systeme de publication pour l'internet * * * - * Copyright (c) 2001-2011 * + * Copyright (c) 2001-2014 * * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James * * * * Ce programme est un logiciel libre distribue sous licence GNU/GPL. * @@ -17,12 +17,34 @@ if (!defined('_ECRIRE_INC_VERSION')) return; function action_redirect_dist() { $type = _request('type'); - if (!preg_match('/^\w+$/', $type)) return; + $id = intval(_request('id')); + if ($m = _request('var_mode')) { $GLOBALS['var_urls'] = true; // forcer la mise a jour de l'url de cet objet ! - $m = 'var_mode='.urlencode($m); } - $h = generer_url_entite_absolue(intval(_request('id')), $type, $m, '', true); + + if (preg_match('/^\w+$/', $type)) { + $h = generer_url_entite_absolue($id, $type, '', '', true); + } + else if ($page = _request('page') + AND preg_match('/^\w+$/', $page)) { + $h = generer_url_public($page, '', true); + } + else return; + + if ($m > '') + $h = parametre_url($h, 'var_mode', $m); + + if ($m == 'preview' + AND defined('_PREVIEW_TOKEN') + AND _PREVIEW_TOKEN + AND autoriser('previsualiser') + AND $aut = $GLOBALS['visiteur_session']['id_auteur'] ) { + include_spip('inc/securiser_action'); + $token = _action_auteur('previsualiser', $aut, null, 'alea_ephemere'); + $h = parametre_url($h, 'var_previewtoken', "$aut*$token"); + } + $status = '302'; if (_request('status') AND _request('status')=='301') $status = '301';