[spip-dev] Protection de rubriques et d'articles par .htpasswd

Le 6/02/03 21:06, Fil (fil@rezo.net) a ecrit:
...

Puis j'ai protégé mes squelettes privés par .htaccess :
Et enfin j'ai modifié le "inc-urls-standard.php3" afin qu'il écrive les
liens en fonction des deux mots clés :

...

function generer_url_article($id_article) {
  $url = "article.php3?id_article=$id_article"; // par defaut
  if (! $id_article) $id_article = 0;
  $result = spip_query("SELECT id_mot FROM spip_mots_articles WHERE
id_article=$id_article");
  $row = spip_fetch_array($result);

...

  if ($id_mot == 2) $url = "article_prv.php3?id_article=$id_article";

Là ça n'est pas bon, car si jamais tu ajoutes d'autres mots-clés dans ton
système tu ne pourras pas garantir que le premier spip_fetch_array() te
rende bien le mot-clé numéro 2 (s'il est présent).

...

Après une longue recherche (je ne suis pas un as du php, loin de là),
j'ai réussi à faire ça :

// Creation de la fonction prep_grep car presente seulement a partir de
PHP4
function preg_grep($pattern, $array) {
  while(list($key, $val) = each($array)) {
    if (preg_match($pattern, $val)) return $val;
      }
}

function generer_url_article($id_article) {
  $url = "article.php3?id_article=$id_article"; // par defaut
  if (! $id_article) $id_article = 0;
  $result = spip_query("SELECT id_mot FROM spip_mots_articles WHERE
id_article=$id_article");
  
    $regexp = "/\b2\b/";
  while ($row = spip_fetch_array($result)) :
  if (preg_grep($regexp, $row)) {
  $url = "article_prv.php3?id_article=$id_article";
  }
  endwhile;
  
  if ($GLOBALS['recherche']) $url .=
"&var_recherche=".urlencode($GLOBALS['recherche']);
  
  return $url;
}

C'est mieux comme ça ?

Sacha

*{8€)