- $v = preg_replace(",\W,","",$v);
- if ($filtre=="auteur"
- AND isset($GLOBALS['visiteur_session']['id_auteur'])
- AND intval($GLOBALS['visiteur_session']['id_auteur'])
- AND (strpos($mstatut,".")!==false)
- AND $objet = explode(".",$mstatut)
- AND $id_table = reset($objet)
- AND $objet = objet_type($id_table)){
- $primary = id_table_objet($objet);
- $where[] = "($mstatut<>".sql_quote($v)." OR $id_table.$primary IN (".sql_get_select("ssss.id_objet","spip_auteurs_liens AS ssss","ssss.objet=".sql_quote($objet)." AND ssss.id_auteur=".intval($GLOBALS['visiteur_session']['id_auteur']),'','','','',$serveur)."))";
+ $v = preg_replace(',\W,', '', $v);
+ if ($filtre == 'auteur'
+ and (strpos($mstatut, '.') !== false)
+ and $objet = explode('.', $mstatut)
+ and $id_table = reset($objet)
+ and $objet = objet_type($id_table)
+ ) {
+ $w = "$mstatut<>" . sql_quote($v);
+
+ // retrouver l’id_auteur qui a filé un lien de prévisu éventuellement,
+ // sinon l’auteur en session
+ include_spip('inc/securiser_action');
+ if ($desc = decrire_token_previsu()) {
+ $id_auteur = $desc['id_auteur'];
+ } elseif (isset($GLOBALS['visiteur_session']['id_auteur'])) {
+ $id_auteur = intval($GLOBALS['visiteur_session']['id_auteur']);
+ } else {
+ $id_auteur = null;
+ }
+
+ // dans ce cas (admin en general), pas de filtrage sur ce statut
+ if (!autoriser('previsualiser' . $v, $objet, '', $id_auteur)) {
+ // si pas d'auteur identifie pas de sous-requete car pas d'article qui matche
+ if (!$id_auteur) {
+ $where[] = $w;
+ } else {
+ $primary = id_table_objet($objet);
+ $where[] = "($w OR $id_table.$primary IN (" . sql_get_select(
+ 'ssss.id_objet',
+ 'spip_auteurs_liens AS ssss',
+ 'ssss.objet=' . sql_quote($objet) . ' AND ssss.id_auteur=' . intval($id_auteur),
+ '',
+ '',
+ '',
+ '',
+ $serveur
+ ) . '))';
+ }
+ }
+ } // ignorer ce statut si on ne sait pas comment le filtrer
+ else {
+ $v = '';