X-Git-Url: http://git.cyclocoop.org/?p=velocampus%2Fweb%2Fwww.git;a=blobdiff_plain;f=www%2Fecrire%2Fbalise%2Furl_.php;fp=www%2Fecrire%2Fbalise%2Furl_.php;h=b83912b9f4fd4e6aaefa644e8cf76ec98f99307f;hp=0000000000000000000000000000000000000000;hb=80b4d3e85f78d402ed2e73f8f5d1bf4c19962eed;hpb=aaf970bf4cdaf76689ecc10609048e18d073820c diff --git a/www/ecrire/balise/url_.php b/www/ecrire/balise/url_.php new file mode 100644 index 0000000..b83912b --- /dev/null +++ b/www/ecrire/balise/url_.php @@ -0,0 +1,220 @@ +id_boucle; + + if ($s !== '' AND $s = $p->boucles[$s]->sql_serveur) { + +// si une fonction de generation des url a ete definie pour ce connect l'utiliser + if (function_exists($f = 'generer_generer_url_'.$s)){ + return $f($type, $_id, $s); + } + if (!$GLOBALS['connexions'][strtolower($s)]['spip_connect_version']) { + return NULL; + } + $s = _q($s); + if ($type == 'document') { + return + "quete_meta('adresse_site', $s) . '/' .\n\t" . + "quete_meta('dir_img', $s) . \n\t" . + "quete_fichier($_id,$s)"; + } + $s = ", '', '', $s, quete_meta('type_urls', $s)"; + } + else + $s = ", '', '', true"; + return "urlencode_1738(generer_url_entite($_id, '$type'$s))"; +} + + +// http://doc.spip.org/@balise_URL__dist +function balise_URL__dist($p) { + + $nom = $p->nom_champ; + if ($nom === 'URL_') { + $msg = array('zbug_balise_sans_argument', array('balise' => ' URL_')); + erreur_squelette($msg, $p); + $p->interdire_scripts = false; + return $p; + } elseif ($f = charger_fonction($nom, 'balise', true)) { + return $f($p); + }else { + $code = champ_sql($nom, $p); + if (strpos($code, '@$Pile[0]') !== false) { + $nom = strtolower(substr($nom,4)); + $code = generer_generer_url($nom, $p); + if ($code === NULL) return NULL; + } + if (!$p->etoile) + $p->code = "vider_url($code)"; + $p->interdire_scripts = false; + return $p; + } +} + +// http://doc.spip.org/@balise_URL_ARTICLE_dist +function balise_URL_ARTICLE_dist($p) { + + // Cas particulier des boucles (SYNDIC_ARTICLES) + if ($p->type_requete == 'syndic_articles') { + $code = champ_sql('url', $p); + } else $code = generer_generer_url('article', $p); + + $p->code = "vider_url($code)"; + $p->interdire_scripts = false; + return $p; +} + +// http://doc.spip.org/@balise_URL_SITE_dist +function balise_URL_SITE_dist($p) +{ + $code = champ_sql('url_site', $p); + if (strpos($code, '@$Pile[0]') !== false) { + $code = generer_generer_url('site', $p); + if ($code === NULL) return NULL; + } else { + if (!$p->etoile) + $code = "calculer_url($code,'','url', \$connect)"; + } + $p->code = $code; + $p->interdire_scripts = false; + return $p; +} + +// Autres balises URL_*, qui ne concernent pas une table +// (historique) + +// http://doc.spip.org/@balise_URL_SITE_SPIP_dist +function balise_URL_SITE_SPIP_dist($p) { + $p->code = "sinon(\$GLOBALS['meta']['adresse_site'],'.')"; + $p->code = "htmlspecialchars(".$p->code.")"; + $p->interdire_scripts = false; + return $p; +} + +// +// #URL_PAGE{backend} -> backend.php3 ou ?page=backend selon les cas +// Pour les pages qui commencent par "spip_", il faut eventuellement +// aller chercher spip_action.php?action=xxxx +// Sans argument, #URL_PAGE retourne l'URL courante. +// #URL_PAGE* retourne l'URL sans convertir les & en & +// http://doc.spip.org/@balise_URL_PAGE_dist +function balise_URL_PAGE_dist($p) { + + $code = interprete_argument_balise(1,$p); + $args = interprete_argument_balise(2,$p); + + $s = !$p->id_boucle ? '' : $p->boucles[$p->id_boucle]->sql_serveur; + + if ($s) { + if (!$GLOBALS['connexions'][strtolower($s)]['spip_connect_version']) { + $code = "404"; + } else { + // si une fonction de generation des url a ete definie pour ce connect l'utiliser + // elle devra aussi traiter le cas derogatoire type=page + if (function_exists($f = 'generer_generer_url_'.$s)){ + if ($args) $code .= ", $args"; + $code = $f('page', $code, $s); + return $p; + } + $s = 'connect=' . addslashes($s); + $args = $args ? "$args . '&$s'" : "'$s'"; + } + } + if (!$code) { + $noentities = $p->etoile ? "'&'" : ''; + $code = "url_de_base() . preg_replace(',^./,', '', self($noentities))"; + } else{ + if (!$args) $args = "''"; + $noentities = $p->etoile ? ", true" : ''; + $code = "generer_url_public($code, $args$noentities)"; + } + $p->code = $code; + #$p->interdire_scripts = true; + return $p; +} + +// +// #URL_ECRIRE{naviguer} -> ecrire/?exec=naviguer +// +// http://doc.spip.org/@balise_URL_ECRIRE_dist +function balise_URL_ECRIRE_dist($p) { + + $code = interprete_argument_balise(1,$p); + if (!$code) + $fonc = "''"; + else{ + if (preg_match("/^'[^']*'$/", $code)) + $fonc = $code; + else {$code = "(\$f = $code)"; $fonc = '$f';} + $args = interprete_argument_balise(2,$p); + if ($args != "''" && $args!==NULL) + $fonc .= ',' . $args; + } + $p->code = 'generer_url_ecrire(' . $fonc .')'; + if ($code) + $p->code = "(tester_url_ecrire($code) ?" . $p->code .' : "")'; + #$p->interdire_scripts = true; + return $p; +} + +// +// #URL_ACTION_AUTEUR{converser,arg,redirect} -> ecrire/?action=converser&arg=arg&hash=xxx&redirect=redirect +// +// http://doc.spip.org/@balise_URL_ACTION_AUTEUR_dist +function balise_URL_ACTION_AUTEUR_dist($p) { + $p->descr['session'] = true; + + if ($p->boucles[$p->id_boucle]->sql_serveur) { + $p->code = 'generer_url_public("404")'; + return $p; + } + + $p->code = interprete_argument_balise(1,$p); + $args = interprete_argument_balise(2,$p); + if ($args != "''" && $args!==NULL) + $p->code .= ",".$args; + $redirect = interprete_argument_balise(3,$p); + if ($redirect != "''" && $redirect!==NULL) + $p->code .= ",".$redirect; + + $p->code = "generer_action_auteur(" . $p->code . ")"; + $p->interdire_scripts = false; + return $p; +} +?>