Compare commits
No commits in common. 'master' and 'spip-3.2' have entirely different histories.
59 changed files with 3911 additions and 2902 deletions
@ -0,0 +1,117 @@
|
||||
* text=auto !eol |
||||
action/configuration.php -text |
||||
base/convert_sql_utf8.php -text |
||||
base/convert_utf8.php -text |
||||
exec/base_convert_sql_utf8.php -text |
||||
exec/base_convert_utf8.php -text |
||||
exec/configuration.php -text |
||||
exec/informer_auteur.php -text |
||||
exec/memoriser.php -text |
||||
exec/rechercher_auteur.php -text |
||||
exec/selectionner_auteur.php -text |
||||
/grenier-32.png -text |
||||
/grenier_fonctions.php -text |
||||
inc/actions.php -text |
||||
inc/afficher_objets.php -text |
||||
inc/date.php -text |
||||
inc/dater.php -text |
||||
inc/editer_auteurs.php -text |
||||
inc/editer_mots.php -text |
||||
inc/filtres_images.php -text |
||||
inc/filtres_images_compat.php -text |
||||
inc/formater_article.php -text |
||||
inc/formater_auteur.php -text |
||||
inc/informer_auteur.php -text |
||||
inc/meme_rubrique.php -text |
||||
inc/php3.php -text |
||||
inc/presentation.php -text |
||||
inc/presenter_liste.php -text |
||||
inc/ressembler.php -text |
||||
inc/selectionner_auteur.php -text |
||||
inc/vieilles_defs.php -text |
||||
lang/grenier.xml -text |
||||
lang/grenier_an.php -text |
||||
lang/grenier_ar.php -text |
||||
lang/grenier_ast.php -text |
||||
lang/grenier_ay.php -text |
||||
lang/grenier_bg.php -text |
||||
lang/grenier_bn.php -text |
||||
lang/grenier_bo.php -text |
||||
lang/grenier_br.php -text |
||||
lang/grenier_bs.php -text |
||||
lang/grenier_ca.php -text |
||||
lang/grenier_co.php -text |
||||
lang/grenier_cpf.php -text |
||||
lang/grenier_cpf_hat.php -text |
||||
lang/grenier_cs.php -text |
||||
lang/grenier_da.php -text |
||||
lang/grenier_de.php -text |
||||
lang/grenier_en.php -text |
||||
lang/grenier_en_hx.php -text |
||||
lang/grenier_eo.php -text |
||||
lang/grenier_es.php -text |
||||
lang/grenier_es_mx_pop.php -text |
||||
lang/grenier_eu.php -text |
||||
lang/grenier_fa.php -text |
||||
lang/grenier_fi.php -text |
||||
lang/grenier_fon.php -text |
||||
lang/grenier_fr.php -text |
||||
lang/grenier_fr_sc.php -text |
||||
lang/grenier_fr_tu.php -text |
||||
lang/grenier_gl.php -text |
||||
lang/grenier_hac.php -text |
||||
lang/grenier_he.php -text |
||||
lang/grenier_hu.php -text |
||||
lang/grenier_id.php -text |
||||
lang/grenier_is.php -text |
||||
lang/grenier_it.php -text |
||||
lang/grenier_it_fem.php -text |
||||
lang/grenier_iu.php -text |
||||
lang/grenier_ja.php -text |
||||
lang/grenier_km.php -text |
||||
lang/grenier_lb.php -text |
||||
lang/grenier_mg.php -text |
||||
lang/grenier_mk.php -text |
||||
lang/grenier_my.php -text |
||||
lang/grenier_nb.php -text |
||||
lang/grenier_nl.php -text |
||||
lang/grenier_no.php -text |
||||
lang/grenier_oc_auv.php -text |
||||
lang/grenier_oc_gsc.php -text |
||||
lang/grenier_oc_lms.php -text |
||||
lang/grenier_oc_lnc.php -text |
||||
lang/grenier_oc_ni.php -text |
||||
lang/grenier_oc_ni_la.php -text |
||||
lang/grenier_oc_pro.php -text |
||||
lang/grenier_oc_prv.php -text |
||||
lang/grenier_oc_va.php -text |
||||
lang/grenier_pl.php -text |
||||
lang/grenier_pt.php -text |
||||
lang/grenier_pt_br.php -text |
||||
lang/grenier_qu.php -text |
||||
lang/grenier_ro.php -text |
||||
lang/grenier_ru.php -text |
||||
lang/grenier_scn.php -text |
||||
lang/grenier_sk.php -text |
||||
lang/grenier_src.php -text |
||||
lang/grenier_sro.php -text |
||||
lang/grenier_sv.php -text |
||||
lang/grenier_sw.php -text |
||||
lang/grenier_ta.php -text |
||||
lang/grenier_tr.php -text |
||||
lang/grenier_ty.php -text |
||||
lang/grenier_ur.php -text |
||||
lang/grenier_vi.php -text |
||||
lang/grenier_zh.php -text |
||||
lang/paquet-grenier.xml -text |
||||
lang/paquet-grenier_ar.php -text |
||||
lang/paquet-grenier_en.php -text |
||||
lang/paquet-grenier_fa.php -text |
||||
lang/paquet-grenier_fr_tu.php -text |
||||
lang/paquet-grenier_it.php -text |
||||
lang/paquet-grenier_nl.php -text |
||||
lang/paquet-grenier_pt_br.php -text |
||||
lang/paquet-grenier_ru.php -text |
||||
lang/paquet-grenier_sk.php -text |
||||
prive/javascript/layer_old.js -text |
||||
prive/objets/editer/dater.html -text |
@ -1,7 +0,0 @@
|
||||
/vendor/ |
||||
/composer.phar |
||||
/composer.lock |
||||
/phpcs.xml |
||||
/phpstan.neon |
||||
/.php_cs.cache |
||||
/.php_cs.txt |
@ -1,32 +0,0 @@
|
||||
# Plugin Grenier |
||||
|
||||
Le plugin Grenier reçoit des fonctions ou fichiers supprimés de SPIP ou des plugins-dist de la distribution. |
||||
|
||||
## Objectifs |
||||
|
||||
Dans la mesure du possible, permettre aux sites ou plugins de **temporairement** utiliser ce plugin pour |
||||
maintenir un fonctionnement avec une version de SPIP plus récente que leur compatibilité réelle, |
||||
laissant un peu de temps pour les mainteneurs du site ou du plugin de mettre à jour le code. |
||||
|
||||
## Fonctionnement |
||||
|
||||
Ce plugin reçoit des fichiers et/ou fonctions issues de SPIP qui sont supprimées dans une certaine version. |
||||
Les éléments sont conservés dans ce plugin pour 1 version majeure de SPIP. |
||||
|
||||
Le plugin n'a pas vocation à être un support complet de retro-compatibilité. |
||||
|
||||
### Exemple |
||||
|
||||
- SPIP 3.1 rend déprécié une fonction A() (un tag `@deprecated 3.1` est indiqué généralement). |
||||
- SPIP 4.0 supprime la fonction A. |
||||
- Le Grenier reçoit la fonction A (un tag `@removed from SPIP 4.0` est ajouté dessus) |
||||
|
||||
Le Grenier conserve la fonction A() pendant 1 version majeure de SPIP, ici jusqu'à SPIP 5.0. |
||||
## Utilisation |
||||
|
||||
Dans votre code PHP, ajouter `include_spip('inc/vieilles_defs');` pour charger toutes ces vieilles fonctions. |
||||
|
||||
## Note sur SPIP < 4 |
||||
|
||||
La version majeure précédent SPIP 4.0 est SPIP 3.2 |
||||
Dans la branche SPIP 4.0 de ce plugin, on conserve à partir de `@deprecated 3.2`, non pas `3.0`) |
@ -0,0 +1,50 @@
|
||||
<?php |
||||
|
||||
/***************************************************************************\ |
||||
* SPIP, Systeme de publication pour l'internet * |
||||
* * |
||||
* Copyright (c) 2001-2020 * |
||||
* Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James * |
||||
* * |
||||
* Ce programme est un logiciel libre distribue sous licence GNU/GPL. * |
||||
* Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * |
||||
\***************************************************************************/ |
||||
|
||||
if (!defined('_ECRIRE_INC_VERSION')) return; |
||||
|
||||
// Mise a jour de l'option de configuration $arg |
||||
// il faudrait limiter a arg plutot que d'executer tout modif_config |
||||
// on traite a part seulement le cas du proxy car c'est indispensable |
||||
// (message d'erreur eventuel a afficher) |
||||
|
||||
include_spip('inc/config'); |
||||
|
||||
// https://code.spip.net/@action_configurer_dist |
||||
function action_configuration_dist() { |
||||
|
||||
$securiser_action = charger_fonction('securiser_action', 'inc'); |
||||
$arg = $securiser_action(); |
||||
|
||||
# ceinture & bretelles, a priori le test dans exec_configurer |
||||
# suffit a empecher d'obtenir un hash qui passe le test ci-dessus |
||||
if(!autoriser('configurer', '_'._request('configuration'))) { |
||||
include_spip('inc/minipres'); |
||||
echo minipres(_T('info_acces_interdit')); |
||||
exit; |
||||
} |
||||
|
||||
$r = rawurldecode(_request('redirect')); |
||||
$r = parametre_url($r, 'configuration', $arg, "&"); |
||||
appliquer_modifs_config(); |
||||
|
||||
// Cette globale est fixee par appliquer_modifs_config(); |
||||
// c'est un message a afficher dans l'exec de retour (relayeur si comme ici on est en ajax) |
||||
if ($arg == 'relayeur') |
||||
$r = parametre_url($r, 'retour_proxy', $GLOBALS['retour_proxy'], "&"); |
||||
elseif ($arg == 'langue') { |
||||
include_spip('inc/rubriques'); |
||||
calculer_langues_rubriques(); |
||||
} |
||||
if (_request('envoi_now')) cron(0, array('mail' => -1)); |
||||
redirige_par_entete($r); |
||||
} |
@ -0,0 +1,128 @@
|
||||
<?php |
||||
|
||||
/***************************************************************************\ |
||||
* SPIP, Systeme de publication pour l'internet * |
||||
* * |
||||
* Copyright (c) 2001-2020 * |
||||
* Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James * |
||||
* * |
||||
* Ce programme est un logiciel libre distribue sous licence GNU/GPL. * |
||||
* Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * |
||||
\***************************************************************************/ |
||||
|
||||
if (!defined('_ECRIRE_INC_VERSION')) return; |
||||
|
||||
|
||||
// https://code.spip.net/@base_convert_sql_utf8_dist |
||||
function base_convert_sql_utf8_dist($titre = '', $reprise = false) |
||||
{ |
||||
if (!$titre) return; // anti-testeur automatique |
||||
ecrire_meta('convert_sql_utf8', 'oui', 'non'); |
||||
echo install_debut_html($titre); |
||||
|
||||
echo "<p>", _T('grenier:utf8_convert_timeout'), "</p><hr />\n"; |
||||
|
||||
convert_sql_utf8($titre); |
||||
|
||||
echo "<p><b>"._T('grenier:utf8_convert_termine')."</b></p>"; |
||||
effacer_meta('convert_sql_utf8'); |
||||
|
||||
// bouton "retour au site" + redirige_par_entete |
||||
echo "<p style='text-align: right'>", |
||||
"<a href='", generer_url_ecrire("configurer_langue"), "'> >> ", |
||||
_T('icone_retour'),"</a></p>", |
||||
install_fin_html(); |
||||
} |
||||
|
||||
// https://code.spip.net/@convert_sql_utf8 |
||||
function convert_sql_utf8($titre) { |
||||
|
||||
define('_DEBUG_CONVERT', false); |
||||
$charset_spip = $GLOBALS['meta']['charset']; |
||||
$charset_supporte = false; |
||||
$utf8_supporte = false; |
||||
// verifier que mysql gere le charset courant pour effectuer les conversions |
||||
if ($c = sql_get_charset($charset_spip)){ |
||||
$sql_charset = $c['charset']; |
||||
$sql_collation = $c['collation']; |
||||
$charset_supporte = true; |
||||
} |
||||
if (!$charset_supporte){ |
||||
$res = spip_query("SHOW CHARACTER SET"); |
||||
while ($row = sql_fetch($res)){ |
||||
if ($row['Charset'] == 'utf8') $utf8_supporte = true; |
||||
} |
||||
echo install_debut_html($titre); |
||||
echo _L("Le charset SPIP actuel $charset_spip n'est pas supporte par votre serveur MySQL<br/>"); # non traduit car complexe & obsolete |
||||
if ($utf8_supporte) |
||||
echo _L("Votre serveur supporte utf-8, vous devriez convertir votre site en utf-8 avant de recommencer cette operation"); |
||||
echo install_fin_html(); |
||||
} else { |
||||
echo _L("Charset Actuel du site SPIP : $charset_spip<br/>"); |
||||
echo _L("Conversion des champs des tables spip de type latin1 vers <b>$sql_charset</b> (collation $sql_collation) <br/>"); |
||||
// lister les collations et leur charset correspondant |
||||
$res = spip_query("SHOW COLLATION"); |
||||
$charset2collations = array(); |
||||
while ($row = sql_fetch($res)){ |
||||
$charset2collations[$row['Collation']] = $row['Charset']; |
||||
} |
||||
|
||||
$count = 0; |
||||
// lister les tables spip |
||||
include_spip('base/serial'); |
||||
include_spip('base/auxiliaires'); |
||||
|
||||
$res = spip_query("SHOW TABLES"); |
||||
while (($row = sql_fetch($res)) /*&& ($count<1)*/){ |
||||
$nom = array_shift($row); |
||||
if (preg_match(',^'.$GLOBALS['table_prefix'].'_(.*)$,', $nom, $regs)){ |
||||
$count++; |
||||
$nom = $regs[1]; |
||||
echo "<hr /><h2>$nom</h2>"; |
||||
// lister les champs de la table |
||||
$res2 = spip_query("SHOW FULL COLUMNS FROM spip_$nom"); |
||||
while ($row2 = sql_fetch($res2)){ |
||||
$collation = $row2['Collation']; |
||||
$champ = $row2['Field']; |
||||
if ($collation != "NULL" |
||||
&& isset($charset2collations[$collation]) |
||||
&& $charset2collations[$collation] == 'latin1'){ |
||||
echo "Conversion de '$champ' depuis $collation (".$charset2collations[$collation]."):"; |
||||
// conversion de latin1 vers le charset reel du contenu |
||||
$type_texte = $row2['Type']; |
||||
$type_blob = "blob"; |
||||
if (strpos($type_texte, "text") !== false) |
||||
$type_blob = str_replace("text", "blob", $type_texte); |
||||
|
||||
// sauf si blob expressement demande dans la description ! |
||||
if (( |
||||
$a = $GLOBALS['tables_principales']['spip_'.$nom]['field'][$champ] |
||||
or $a = $GLOBALS['tables_auxiliaires']['spip_'.$nom]['field'][$champ] |
||||
) and preg_match(',blob,i', $a)) { |
||||
echo "On ignore le champ blob $nom.$champ <hr />\n"; |
||||
} else { |
||||
|
||||
$default = $row2['Default']?(" DEFAULT ".sql_quote($row2['Default'])):""; |
||||
$notnull = ($row2['Null'] == 'YES')?"":" NOT NULL"; |
||||
$q = "ALTER TABLE spip_$nom CHANGE $champ $champ $type_blob $default $notnull"; |
||||
if (!_DEBUG_CONVERT) |
||||
$b = spip_query($q); |
||||
echo "<pre>$q</pre>$b\n"; |
||||
$q = "ALTER TABLE spip_$nom CHANGE $champ $champ $type_texte CHARACTER SET $sql_charset COLLATE $sql_collation $default $notnull"; |
||||
if (!_DEBUG_CONVERT) |
||||
$b = spip_query($q); |
||||
echo "<pre>$q</pre>\n"; |
||||
} |
||||
} |
||||
} |
||||
// on ne change le charset par defaut de la table que quand tous ses champs sont convertis |
||||
$q = "ALTER TABLE spip_$nom DEFAULT CHARACTER SET $sql_charset COLLATE $sql_collation"; |
||||
if (!_DEBUG_CONVERT) |
||||
$b = spip_query($q); |
||||
echo "<pre>$q</pre>$b\n"; |
||||
} |
||||
} |
||||
ecrire_meta('charset_sql_base', $sql_charset, 'non'); |
||||
ecrire_meta('charset_sql_connexion', $sql_charset, 'non'); |
||||
} |
||||
} |
@ -0,0 +1,158 @@
|
||||
<?php |
||||
|
||||
/***************************************************************************\ |
||||
* SPIP, Systeme de publication pour l'internet * |
||||
* * |
||||
* Copyright (c) 2001-2020 * |
||||
* Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James * |
||||
* * |
||||
* Ce programme est un logiciel libre distribue sous licence GNU/GPL. * |
||||
* Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * |
||||
\***************************************************************************/ |
||||
|
||||
if (!defined('_ECRIRE_INC_VERSION')) return; |
||||
|
||||
// https://code.spip.net/@convert_utf8_init |
||||
function convert_utf8_init($tables_a_convertir) |
||||
{ |
||||
// noter dans les meta qu'on veut convertir, et quoi |
||||
$charset_source = $GLOBALS['meta']['charset']; |
||||
ecrire_meta('charset', 'utf-8'); |
||||
foreach ($tables_a_convertir as $table => $champ) { |
||||
spip_log("demande update charset table $table ($champ)", _LOG_INFO_IMPORTANTE); |
||||
spip_query("UPDATE $table SET $champ = CONCAT('<CONVERT ".$charset_source.">', $champ) WHERE $champ NOT LIKE '<CONVERT %'"); |
||||
} |
||||
|
||||
spip_unlink(_DIR_TMP.'convert_utf8_backup.sql'); |
||||
|
||||
// convertir spip_meta |
||||
|
||||
foreach ($GLOBALS['meta'] as $c => $v) { |
||||
$v2 = unicode_to_utf_8(charset2unicode($v, $charset_source)); |
||||
if ($v2 != $v) ecrire_meta($c, $v2); |
||||
} |
||||
} |
||||
|
||||
// https://code.spip.net/@base_convert_utf8_dist |
||||
function base_convert_utf8_dist($titre = '', $reprise = false) |
||||
{ |
||||
if (!$titre) return; // anti-testeur automatique |
||||
// une liste des tables a convertir, avec le champ dans lequel on |
||||
// indique '<CONVERT charset>' ; on commence par les rubriques sinon |
||||
// ca fait desordre dans l'interface privee |
||||
$tables_a_convertir = array( |
||||
'spip_rubriques' => 'titre', |
||||
'spip_auteurs' => 'nom', |
||||
'spip_articles' => 'titre', |
||||
'spip_breves' => 'titre', |
||||
'spip_documents' => 'titre', |
||||
'spip_forum' => 'titre', |
||||
'spip_mots' => 'titre', |
||||
'spip_groupes_mots' => 'titre', |
||||
'spip_petitions' => 'texte', |
||||
'spip_signatures' => 'nom_email', |
||||
'spip_syndic' => 'nom_site', |
||||
'spip_syndic_articles' => 'titre', |
||||
'spip_messages' => 'titre' |
||||
); |
||||
|
||||
if (!$reprise) convert_utf8_init($tables_a_convertir); |
||||
|
||||
echo install_debut_html($titre); |
||||
|
||||
echo "<p>", _T('grenier:utf8_convert_timeout'), "</p><hr />\n"; |
||||
|
||||
// preparer un fichier de sauvegarde au cas ou |
||||
// on met 'a' car ca peut demander plusieurs rechargements |
||||
$f = @fopen(_DIR_TMP.'convert_utf8_backup.sql', 'a'); |
||||
|
||||
foreach ($tables_a_convertir as $table => $champ) { |
||||
convert_table_utf8($f, $table, $champ); |
||||
} |
||||
|
||||
if ($f) fclose($f); |
||||
|
||||
echo "<p><b>"._T('grenier:utf8_convert_termine')."</b></p>"; |
||||
echo "<p>,"._T('grenier:utf8_convert_verifier', array('rep' => joli_repertoire(_DIR_TMP))), '</p>'; |
||||
|
||||
// bouton "retour au site" + redirige_par_entete |
||||
echo "<p style='text-align: right'>", |
||||
"<a href='", generer_url_ecrire("configurer_langue"), "'> >> ", |
||||
_T('icone_retour'),"</a></p>", |
||||
install_fin_html(); |
||||
} |
||||
|
||||
|
||||
// https://code.spip.net/@convert_table_utf8 |
||||
function convert_table_utf8($f, $table, $champ) |
||||
{ |
||||
echo "<br /><b>$table</b> "; |
||||
$s = spip_query("SELECT * FROM $table WHERE $champ LIKE '<CONVERT %'"); |
||||
|
||||
// recuperer 'id_article' (encore un truc a faire dans table_objet) |
||||
preg_match(',^spip_(.*?)s?$,', $table, $r); |
||||
$id_champ = 'id_'.$r[1]; |
||||
if ($table == 'spip_petitions') $id_champ = 'id_article'; |
||||
if ($table == 'spip_groupes_mots') $id_champ = 'id_groupe'; |
||||
|
||||
// lire les donnees dans un array |
||||
while ($t = sql_fetch($s)) { |
||||
$query = array(); |
||||
$query_no_convert = ''; |
||||
$query_extra = ''; |
||||
$charset_source = 'AUTO'; |
||||
foreach ($t as $c => $v) { |
||||
if ($c == $champ) { |
||||
preg_match(',^<CONVERT (.*?)>,', $v, $reg); |
||||
$v = substr($v, strlen($reg[0])); |
||||
$charset_source = $reg[1]; |
||||
$query[] = "$c=" . sql_quote($v); |
||||
} else { |
||||
if (!is_numeric($v) |
||||
and !is_ascii($v)) { |
||||
// traitement special car donnees serializees |
||||
if ($c == 'extra') { |
||||
$query_no_convert .= ", $c=".sql_quote($v); |
||||
$query_extra = convert_extra($v, $charset_source); |
||||
} else |
||||
$query[] = "$c=" . sql_quote($v); |
||||
} else |
||||
# pour le backup |
||||
$query_no_convert .= ", $c=".sql_quote($v); |
||||
} |
||||
} |
||||
|
||||
$set = join(', ', $query); |
||||
$where = "$id_champ = ".$t[$id_champ]; |
||||
|
||||
// On l'enregistre telle quelle sur le fichier de sauvegarde |
||||
if ($f) fwrite($f, |
||||
"UPDATE $table SET $set$query_no_convert" |
||||
." WHERE $where;\n" |
||||
); |
||||
|
||||
// Mais on la transcode |
||||
// en evitant une double conversion |
||||
if ($charset_source != 'utf-8') { |
||||
$query = "UPDATE $table SET " |
||||
. unicode_to_utf_8(charset2unicode($set, $charset_source)) |
||||
. $query_extra |
||||
. " WHERE $where AND $champ LIKE '<CONVERT %'"; |
||||
#echo $query; |
||||
spip_query($query); |
||||
echo '. '; flush(); |
||||
} |
||||
} |
||||
sql_free($s); |
||||
} |
||||
|
||||
// stocker le nouvel extra |
||||
// https://code.spip.net/@convert_extra |
||||
function convert_extra($v, $charset_source) { |
||||
if ($extra = @unserialize($v)) { |
||||
foreach ($extra as $key => $val) |
||||
$extra[$key] = unicode_to_utf_8( |
||||
charset2unicode($val, $charset_source)); |
||||
return ", extra=".sql_quote(serialize($extra)); |
||||
} |
||||
} |
@ -1,18 +0,0 @@
|
||||
{ |
||||
"require": { |
||||
"php": "^7.4 || ^8.0" |
||||
}, |
||||
"require-dev": { |
||||
"dealerdirect/phpcodesniffer-composer-installer": "^0.7.1", |
||||
"phpstan/phpstan": "^1.4", |
||||
"spip/coding-standards": "^1.2" |
||||
}, |
||||
"config": { |
||||
"allow-plugins": { |
||||
"dealerdirect/phpcodesniffer-composer-installer": true |
||||
}, |
||||
"platform": { |
||||
"php": "7.4.27" |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,64 @@
|
||||
<?php |
||||
|
||||
/***************************************************************************\ |
||||
* SPIP, Systeme de publication pour l'internet * |
||||
* * |
||||
* Copyright (c) 2001-2020 * |
||||
* Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James * |
||||
* * |
||||
* Ce programme est un logiciel libre distribue sous licence GNU/GPL. * |
||||
* Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * |
||||
\***************************************************************************/ |
||||
|
||||
if (!defined('_ECRIRE_INC_VERSION')) return; |
||||
|
||||
// En cas d'erreur, une page admin normale avec bouton de retour |
||||
|
||||
|
||||
// https://code.spip.net/@exec_convert_sql_utf8_dist |
||||
function exec_base_convert_sql_utf8_dist() { |
||||
include_spip('inc/minipres'); |
||||
include_spip('inc/charsets'); |
||||
$charset_spip = $GLOBALS['meta']['charset']; |
||||
|
||||
// Definir le titre de la page (et le nom du fichier admin) |
||||
//$action = _T('grenier:utf8_convertir_votre_site'); |
||||
$action = _L("Conversion de la base en $charset_spip"); #volontairement non traduit (obsolete) |
||||
|
||||
// si meta deja la, c'est une reprise apres timeout. |
||||
if ($GLOBALS['meta']['convert_sql_utf8']) { |
||||
$base = charger_fonction('convert_sql_utf8', 'base'); |
||||
$base($action, true); |
||||
} else { |
||||
$charset_supporte = false; |
||||
$utf8_supporte = false; |
||||
// verifier que mysql gere le charset courant pour effectuer les conversions |
||||
include_spip('base/abstract_sql'); |
||||
if ($c = sql_get_charset($charset_spip)){ |
||||
$sql_charset = $c['charset']; |
||||
$sql_collation = $c['collation']; |
||||
$charset_supporte = true; |
||||
} |
||||
if (!$charset_supporte) { |
||||
$utf8_supporte = sql_get_charset('utf8'); |
||||
$res = _L("Le charset SPIP actuel $charset_spip n'est pas supporte par votre serveur MySQL<br/>"); |
||||
if ($utf8_supporte) |
||||
$res .= _L("Votre serveur supporte utf-8, vous devriez convertir votre site en utf-8 avant de recommencer cette operation"); |
||||
echo minipres($action, $res); |
||||
} else { |
||||
|
||||
$commentaire = ""; |
||||
//$commentaire = _T('grenier:utf8_convert_avertissement', |
||||
// array('orig' => $charset_orig,'charset' => 'utf-8')); |
||||
$commentaire .= "<small>" |
||||
. http_img_pack("warning-48.png", _T('info_avertissement'), " float: right;margin: 10px;'"); |
||||
$commentaire .= _T('grenier:utf8_convert_backup', array('charset' => 'utf-8')) |
||||
."</small>"; |
||||
$commentaire .= '<br />'._T('grenier:utf8_convert_timeout'); |
||||
$commentaire .= "<hr />\n"; |
||||
|
||||
$admin = charger_fonction('admin', 'inc'); |
||||
echo $admin('convert_sql_utf8', $action, $commentaire); |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,65 @@
|
||||
<?php |
||||
|
||||
/***************************************************************************\ |
||||
* SPIP, Systeme de publication pour l'internet * |
||||
* * |
||||
* Copyright (c) 2001-2020 * |
||||
* Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James * |
||||
* * |
||||
* Ce programme est un logiciel libre distribue sous licence GNU/GPL. * |
||||
* Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * |
||||
\***************************************************************************/ |
||||
|
||||
if (!defined('_ECRIRE_INC_VERSION')) return; |
||||
|
||||
// En cas d'erreur, une page admin normale avec bouton de retour |
||||
|
||||
// https://code.spip.net/@convert_utf8_non |
||||
function convert_utf8_non($action, $message) { |
||||
|
||||
echo minipres($action, ('<p>'.$message. "</p>\n<p style='text-align: right'><a href='" . generer_url_ecrire("configurer_langue"). "'> >> "._T('icone_retour')."</a></p>")); |
||||
} |
||||
|
||||
// https://code.spip.net/@exec_convert_utf8_dist |
||||
function exec_base_convert_utf8_dist() { |
||||
include_spip('inc/minipres'); |
||||
include_spip('inc/charsets'); |
||||
|
||||
// Definir le titre de la page (et le nom du fichier admin) |
||||
$action = _T('grenier:utf8_convertir_votre_site'); |
||||
|
||||
// si meta deja la, c'est une reprise apres timeout. |
||||
if ($GLOBALS['meta']['convert_utf8'] and $GLOBALS['meta']['admin']) { |
||||
$admin = charger_fonction('admin', 'inc'); |
||||
echo $admin('convert_utf8', $action, '', true); |
||||
} else { |
||||
$charset_orig = $GLOBALS['meta']['charset']; |
||||
// tester si le charset d'origine est connu de spip |
||||
if (!load_charset($charset_orig)) |
||||
convert_utf8_non($action, |
||||
_T('utf8_convert_erreur_orig', array('charset' => "<b>".$charset_orig."</b>"))); |
||||
|
||||
// ne pas convertir si deja utf8 |
||||
// ou si l'interface du serveur ne comprend rien |
||||
elseif (($charset_orig == 'utf-8')) |
||||
convert_utf8_non($action, |
||||
_T('grenier:utf8_convert_erreur_deja', |
||||
array('charset' => $charset_orig))); |
||||
elseif(!sql_get_charset('utf-8')) |
||||
convert_utf8_non($action, |
||||
_L('Votre version du serveur SQL ne gere pas les charset')); |
||||
else { |
||||
$commentaire = _T('grenier:utf8_convert_avertissement', |
||||
array('orig' => $charset_orig, 'charset' => 'utf-8')); |
||||
$commentaire .= "<small>" |
||||
. http_img_pack("warning-48.png", _T('info_avertissement'), "style='float: right;margin: 10px;'"); |
||||
$commentaire .= _T('grenier:utf8_convert_backup', array('charset' => 'utf-8')) |
||||
."</small>"; |
||||
$commentaire .= '<br />'._T('grenier:utf8_convert_timeout'); |
||||
$commentaire .= "<hr />\n"; |
||||
|
||||
$admin = charger_fonction('admin', 'inc'); |
||||
echo $admin('convert_utf8', $action, $commentaire); |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,30 @@
|
||||
<?php |
||||
|
||||
/***************************************************************************\ |
||||
* SPIP, Systeme de publication pour l'internet * |
||||
* * |
||||
* Copyright (c) 2001-2020 * |
||||
* Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James * |
||||
* * |
||||
* Ce programme est un logiciel libre distribue sous licence GNU/GPL. * |
||||
* Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * |
||||
\***************************************************************************/ |
||||
|
||||
if (!defined('_ECRIRE_INC_VERSION')) return; |
||||
|
||||
// reaffichage du formulaire d'une option de configuration |
||||
// apres sa modification par appel du script action/configurer |
||||
// redirigeant ici. |
||||
|
||||
// https://code.spip.net/@exec_configurer_dist |
||||
function exec_configuration_dist() |
||||
{ |
||||
if(!autoriser('configurer', '_'._request('configuration'))) { |
||||
include_spip('inc/minipres'); |
||||
echo minipres(_T('info_acces_interdit')); |
||||
exit; |
||||
} |
||||
include_spip('inc/actions'); |
||||
$configuration = charger_fonction(_request('configuration'), 'configuration', true); |
||||
ajax_retour($configuration ? $configuration() : 'configure quoi?'); |
||||
} |
@ -0,0 +1,26 @@
|
||||
<?php |
||||
|
||||
/***************************************************************************\ |
||||
* SPIP, Systeme de publication pour l'internet * |
||||
* * |
||||
* Copyright (c) 2001-2020 * |
||||
* Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James * |
||||
* * |
||||
* Ce programme est un logiciel libre distribue sous licence GNU/GPL. * |
||||
* Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * |
||||
\***************************************************************************/ |
||||
|
||||
if (!defined('_ECRIRE_INC_VERSION')) return; |
||||
|
||||
include_spip('inc/actions'); |
||||
|
||||
# Les informations d'une rubrique selectionnee dans le mini navigateur |
||||
|
||||
// https://code.spip.net/@exec_informer_auteur_dist |
||||
function exec_informer_auteur_dist() |
||||
{ |
||||
$id = intval(_request('id')); |
||||
|
||||
$informer_auteur = charger_fonction('informer_auteur', 'inc'); |
||||
ajax_retour($informer_auteur($id)); |
||||
} |
@ -0,0 +1,42 @@
|
||||
<?php |
||||
|
||||
/***************************************************************************\ |
||||
* SPIP, Systeme de publication pour l'internet * |
||||
* * |
||||
* Copyright (c) 2001-2020 * |
||||
* Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James * |
||||
* * |
||||
* Ce programme est un logiciel libre distribue sous licence GNU/GPL. * |
||||
* Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * |
||||
\***************************************************************************/ |
||||
|
||||
if (!defined('_ECRIRE_INC_VERSION')) return; |
||||
|
||||
|
||||
// Recupere et affiche (en ajax) une fonction memorisee dans inc/presentation |
||||
// obsolete : utilise uniquement par afficher_objets |
||||
// https://code.spip.net/@exec_memoriser_dist |
||||
function exec_memoriser_dist() |
||||
{ |
||||
$hash = _request('hash'); |
||||
$order = _request('order'); |
||||
$by = _request('by'); |
||||
$trad = _request('trad'); |
||||
lire_fichier(_DIR_SESSIONS.'ajax_fonctions.txt', $ajax_fonctions); |
||||
$ajax_fonctions = @unserialize($ajax_fonctions); |
||||
|
||||
if ($res = $ajax_fonctions[$hash]) { |
||||
include_spip('inc/afficher_objets'); |
||||
list(, $t, $r, $f) = $res; |
||||
if (preg_match('/^[a-z0-9+.,]+$/', $by) |
||||
and preg_match('/^\w*$/', $order)) { |
||||
$r['ORDER BY'] = str_replace(',', " $order, ", $by) . " $order"; |
||||
sauver_requete($t, $r, $f); |
||||
} |
||||
$cpt = sql_countsel($r['FROM'], $r['WHERE'], $r['GROUP BY']); |
||||
include_spip('inc/presentation'); |
||||
$res = afficher_articles_trad($t, $r, $f, $hash, $cpt, $trad); |
||||
} else spip_log("memoriser $q vide"); |
||||
include_spip('inc/actions'); |
||||
ajax_retour($res); |
||||
} |
@ -0,0 +1,41 @@
|
||||
<?php |
||||
|
||||
/***************************************************************************\ |
||||
* SPIP, Systeme de publication pour l'internet * |
||||
* * |
||||
* Copyright (c) 2001-2020 * |
||||
* Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James * |
||||
* * |
||||
* Ce programme est un logiciel libre distribue sous licence GNU/GPL. * |
||||
* Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * |
||||
\***************************************************************************/ |
||||
|
||||
if (!defined('_ECRIRE_INC_VERSION')) return; |
||||
|
||||
# gerer un charset minimaliste en convertissant tout en unicode &#xxx; |
||||
|
||||
// https://code.spip.net/@exec_rechercher_auteur_dist |
||||
function exec_rechercher_auteur_dist() |
||||
{ |
||||
exec_rechercher_auteur_args(_request('idom')); |
||||
} |
||||
|
||||
// https://code.spip.net/@exec_rechercher_auteur_args |
||||
function exec_rechercher_auteur_args($idom) |
||||
{ |
||||
if (!preg_match('/\w+/', $idom)) |
||||
{ |
||||
include_spip('inc/minipres'); |
||||
echo minipres(); |
||||
} else { |
||||
include_spip('inc/actions'); |
||||
$where = preg_split(",\s+,", _request('nom')); |
||||
if ($where) { |
||||
foreach ($where as $k => $v) |
||||
$where[$k] = "'%" . substr(str_replace("%", "\%", sql_quote($v)), 1, -1) . "%'"; |
||||
$where = ("(nom LIKE " . join(" AND nom LIKE ", $where) . ")"); |
||||
} |
||||
include_spip('inc/selectionner_auteur'); |
||||
ajax_retour(selectionner_auteur_boucle($where, $idom)); |
||||
} |
||||
} |
@ -0,0 +1,26 @@
|
||||
<?php |
||||
|
||||
/***************************************************************************\ |
||||
* SPIP, Systeme de publication pour l'internet * |
||||
* * |
||||
* Copyright (c) 2001-2020 * |
||||
* Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James * |
||||
* * |
||||
* Ce programme est un logiciel libre distribue sous licence GNU/GPL. * |
||||
* Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * |
||||
\***************************************************************************/ |
||||
|
||||
if (!defined('_ECRIRE_INC_VERSION')) return; |
||||
|
||||
# afficher un mini-navigateur de rubriques |
||||
|
||||
// https://code.spip.net/@exec_selectionner_auteur_dist |
||||
function exec_selectionner_auteur_dist() |
||||
{ |
||||
$id = intval(_request('id_article')); |
||||
$type = _request('type'); |
||||
if (!preg_match(',^[a-z_]+$,', $type)) $type = 'article'; |
||||
$selectionner_auteur = charger_fonction('selectionner_auteur', 'inc'); |
||||
include_spip('inc/actions'); |
||||
ajax_retour($selectionner_auteur($id, $type)); |
||||
} |
@ -1,130 +0,0 @@
|
||||
<?php |
||||
|
||||
include_spip('inc/presentation'); |
||||
|
||||
/** |
||||
* Filtres d'images |
||||
* Nommages maintenus pour compatibilite. |
||||
*/ |
||||
if (!function_exists('extraire_image_couleur')) { |
||||
/** |
||||
* Extraire une couleur d'une image |
||||
* |
||||
* @removed from SPIP 3.2 (Filtres Images) |
||||
* @param string $img |
||||
* @param int $x |
||||
* @param int $y |
||||
* @return string |
||||
*/ |
||||
function extraire_image_couleur($img, $x = 10, $y = 6) { |
||||
include_spip('filtres/images_lib'); |
||||
return _image_couleur_extraire($img, $x, $y); |
||||
} |
||||
} |
||||
|
||||
/** |
||||
* Vieilles fonctions d'affichage |
||||
*/ |
||||
if (!function_exists('afficher_plus')) { |
||||
/** |
||||
* Afficher un petit "i" pour lien vers autre page |
||||
* |
||||
* @removed from SPIP 3.2 |
||||
* @deprecated utiliser `afficher_plus_info()` |
||||
* @uses afficher_plus_info() |
||||
* @param string $lien |
||||
* URL du lien desire |
||||
* |
||||
* @return string |
||||
*/ |
||||
function afficher_plus($lien) { |
||||
include_spip('inc/filtres_ecrire'); |
||||
afficher_plus_info($lien); |
||||
} |
||||
} |
||||
|
||||
|
||||
if (!function_exists('debut_cadre_couleur_foncee')) { |
||||
/** |
||||
* Ouvre un cadre foncé |
||||
* |
||||
* @removed from SPIP 3.2 |
||||
* @deprecated utiliser boite_ouvrir() |
||||
*/ |
||||
function debut_cadre_couleur_foncee($icone = '', $dummy = '', $fonction = '', $titre = '', $id = '', $class = '') { |
||||
include_spip('inc/presentation'); |
||||
return debut_cadre_grenier('couleur-foncee', $icone, $fonction, $titre, $id, $class); |
||||
} |
||||
} |
||||
|
||||
if (!function_exists('fin_cadre_couleur_foncee')) { |
||||
/** |
||||
* Ferme un cadre foncé |
||||
* |
||||
* @removed from SPIP 3.2 |
||||
* @deprecated utiliser boite_fermer() |
||||
*/ |
||||
function fin_cadre_couleur_foncee() { |
||||
return fin_cadre_grenier(); |
||||
} |
||||
} |
||||
|
||||
|
||||
|
||||
/** |
||||
* Ouvre un cadre. |
||||
* Copie de debut_cadre() pour historique |
||||
* |
||||
* @removed from SPIP 3.2 |
||||
*/ |
||||
function debut_cadre_grenier($style, $icone = '', $fonction = '', $titre = '', $id = '', $class = '', $padding = true) { |
||||
$fond = null; |
||||
$style_mapping = [ |
||||
'r' => 'simple', |
||||
'e' => 'raccourcis', |
||||
'couleur' => 'basic highlight', |
||||
'couleur-foncee' => 'basic highlight', |
||||
'trait-couleur' => 'important', |
||||
'alerte' => 'notice', |
||||
'info' => 'info', |
||||
'sous_rub' => 'simple sous-rub' |
||||
]; |
||||
$style_titre_mapping = ['couleur' => 'topper', 'trait-couleur' => 'section']; |
||||
$c = $style_mapping[$style] ?? 'simple'; |
||||
$class = $c . ($class ? " $class" : ''); |
||||
if (!$padding) { |
||||
$class .= ($class ? ' ' : '') . 'no-padding'; |
||||
} |
||||
|
||||
//($id?"id='$id' ":"") |
||||
if (strlen($icone) > 1) { |
||||
if ($icone_renommer = charger_fonction('icone_renommer', 'inc', true)) { |
||||
[$fond, $fonction] = $icone_renommer($icone, $fonction); |
||||
} |
||||
$size = 24; |
||||
if (preg_match('/-([0-9]{1,3})[.](gif|png)$/i', $fond, $match)) { |
||||
$size = $match[1]; |
||||
} |
||||
if ($fonction) { |
||||
// 2 images pour composer l'icone : le fond (article) en background, |
||||
// la fonction (new) en image |
||||
$icone = http_img_pack($fonction, '', "class='cadre-icone' width='$size' height='$size'\n" . |
||||
http_style_background($fond, 'no-repeat center center')); |
||||
} else { |
||||
$icone = http_img_pack($fond, '', "class='cadre-icone' width='$size' height='$size'"); |
||||
} |
||||
$titre = $icone . $titre; |
||||
} |
||||
|
||||
return boite_ouvrir($titre, $class, $style_titre_mapping[$style] ?? '', $id); |
||||
} |
||||
|
||||
/** |
||||
* Ferme un cadre. |
||||
* Copie de fin_cadre() pour historique |
||||
* |
||||
* @removed from SPIP 3.2 |
||||
*/ |
||||
function fin_cadre_grenier() { |
||||
return boite_fermer(); |
||||
} |
@ -1,84 +0,0 @@
|
||||
<?php |
||||
|
||||
/***************************************************************************\ |
||||
* SPIP, Système de publication pour l'internet * |
||||
* * |
||||
* Copyright © avec tendresse depuis 2001 * |
||||
* Arnaud Martin, Antoine Pitrou, Philippe Rivière, Emmanuel Saint-James * |
||||
* * |
||||
* Ce programme est un logiciel libre distribué sous licence GNU/GPL. * |
||||
\***************************************************************************/ |
||||
|
||||
/** |
||||
* Ce fichier gère la balise dynamique dépréciée `#LOGIN_PRIVE` |
||||
* |
||||
* @package SPIP\Core\Compilateur\Balises |
||||
**/ |
||||
|
||||
if (!defined('_ECRIRE_INC_VERSION')) { |
||||
return; |
||||
} #securite |
||||
|
||||
|
||||
/** |
||||
* Compile la balise dynamique `#LOGIN_PRIVE` qui permet d'afficher le |
||||
* formulaire de connexion vers l'espace privé |
||||
* |
||||
* @balise |
||||
* @removed from SPIP 4.0 |
||||
* @deprecated 3.1 Utiliser `#FORMULAIRE_LOGIN` |
||||
* |
||||
* @param Champ $p |
||||
* Pile au niveau de la balise |
||||
* @return Champ |
||||
* Pile complétée du code compilé |
||||
**/ |
||||
function balise_LOGIN_PRIVE($p) { |
||||
return calculer_balise_dynamique($p, 'LOGIN_PRIVE', ['url']); |
||||
} |
||||
|
||||
/** |
||||
* Calculs de paramètres de contexte automatiques pour la balise LOGIN_PRIVE |
||||
* |
||||
* Retourne le contexte du formulaire en prenant : |
||||
* |
||||
* 1. l'URL collectée ci-dessus (args0) ou donnée en premier paramètre (args1) |
||||
* `#LOGIN_PRIVE{#URL_ECRIRE}` |
||||
* 2. un éventuel paramètre (args2) indiquant le login et permettant une écriture |
||||
* `<boucle(AUTEURS)>[(#LOGIN_PRIVE{#URL_ECRIRE, #LOGIN})]` |
||||
* |
||||
* @param array $args |
||||
* Liste des arguments demandés obtenus du contexte (url) |
||||
* @param array $context_compil |
||||
* Tableau d'informations sur la compilation |
||||
* @return array |
||||
* Liste (url, login) des arguments collectés. |
||||
*/ |
||||
function balise_LOGIN_PRIVE_stat($args, $context_compil) { |
||||
return [$args[1] ?? $args[0], ($args[2] ?? '')]; |
||||
} |
||||
|
||||
/** |
||||
* Exécution de la balise dynamique `#LOGIN_PRIVE` |
||||
* |
||||
* Exécution mappée sur le formulaire de login. |
||||
* |
||||
* @param string $url |
||||
* URL de destination après l'identification. Par défaut la page |
||||
* d'accueil de l'espace privé. |
||||
* @param string $login |
||||
* Login de la personne à identifié (si connu) |
||||
* @return array |
||||
* Liste : Chemin du squelette, durée du cache, contexte |
||||
**/ |
||||
function balise_LOGIN_PRIVE_dyn($url, $login) { |
||||
include_spip('balise/formulaire_'); |
||||
if ( |
||||
!$url # pas d'url passee en filtre ou dans le contexte |
||||
and !$url = _request('url') # ni d'url passee par l'utilisateur |
||||
) { |
||||
$url = generer_url_ecrire('accueil', '', true); |
||||
} |
||||
|
||||
return balise_FORMULAIRE__dyn('login', $url, $login, true); |
||||
} |
@ -1,86 +0,0 @@
|
||||
<?php |
||||
|
||||
/***************************************************************************\ |
||||
* SPIP, Système de publication pour l'internet * |
||||
* * |
||||
* Copyright © avec tendresse depuis 2001 * |
||||
* Arnaud Martin, Antoine Pitrou, Philippe Rivière, Emmanuel Saint-James * |
||||
* * |
||||
* Ce programme est un logiciel libre distribué sous licence GNU/GPL. * |
||||
\***************************************************************************/ |
||||
|
||||
/** |
||||
* Ce fichier gère la balise dynamique dépréciée `#LOGIN_PUBLIC` |
||||
* |
||||
* @package SPIP\Core\Compilateur\Balises |
||||
**/ |
||||
|
||||
if (!defined('_ECRIRE_INC_VERSION')) { |
||||
return; |
||||
} #securite |
||||
|
||||
|
||||
/** |
||||
* Compile la balise dynamique `#LOGIN_PUBLIC` qui permet d'afficher le |
||||
* formulaire de connexion vers l'espace public |
||||
* |
||||
* @balise |
||||
* @removed from SPIP 4.0 |
||||
* @deprecated 3.1 Utiliser `#FORMULAIRE_LOGIN` |
||||
* |
||||
* @param Champ $p |
||||
* Pile au niveau de la balise |
||||
* @param string $nom |
||||
* Nom de la fonction de calcul des arguments statiques à appeler |
||||
* @return Champ |
||||
* Pile complétée du code compilé |
||||
**/ |
||||
function balise_LOGIN_PUBLIC($p, $nom = 'LOGIN_PUBLIC') { |
||||
return calculer_balise_dynamique($p, $nom, ['url']); |
||||
} |
||||
|
||||
/** |
||||
* Calculs de paramètres de contexte automatiques pour la balise LOGIN_PUBLIC |
||||
* |
||||
* Retourne le contexte du formulaire en prenant : |
||||
* |
||||
* 1. l'URL collectée ci-dessus (args0) ou donnée en premier paramètre (args1) |
||||
* `#LOGIN_PUBLIC{#SELF}` |
||||
* 2. un éventuel paramètre (args2) indiquant le login et permettant une écriture |
||||
* `<boucle(AUTEURS)>[(#LOGIN_PUBLIC{#SELF, #LOGIN})]` |
||||
* |
||||
* @param array $args |
||||
* Liste des arguments demandés obtenus du contexte (url) |
||||
* @param array $context_compil |
||||
* Tableau d'informations sur la compilation |
||||
* @return array |
||||
* Liste (url, login) des arguments collectés. |
||||
*/ |
||||
function balise_LOGIN_PUBLIC_stat($args, $context_compil) { |
||||
return [$args[1] ?? $args[0], ($args[2] ?? '')]; |
||||
} |
||||
|
||||
/** |
||||
* Exécution de la balise dynamique `#LOGIN_PUBLIC` |
||||
* |
||||
* Exécution mappée sur le formulaire de login. |
||||
* |
||||
* @param string $url |
||||
* URL de destination après l'identification. Par défaut la page |
||||
* en cours. |
||||
* @param string $login |
||||
* Login de la personne à identifié (si connu) |
||||
* @return array |
||||
* Liste : Chemin du squelette, durée du cache, contexte |
||||
**/ |
||||
function balise_LOGIN_PUBLIC_dyn($url, $login) { |
||||
include_spip('balise/formulaire_'); |
||||
if ( |
||||
!$url # pas d'url passee en filtre ou dans le contexte |
||||
and !$url = _request('url') # ni d'url passee par l'utilisateur |
||||
) { |
||||
$url = parametre_url(self(), '', '', '&'); |
||||
} |
||||
|
||||
return balise_FORMULAIRE__dyn('login', $url, $login, false); |
||||
} |
@ -1,124 +0,0 @@
|
||||
<?php |
||||
|
||||
/***************************************************************************\ |
||||
* SPIP, Système de publication pour l'internet * |
||||
* * |
||||
* Copyright © avec tendresse depuis 2001 * |
||||
* Arnaud Martin, Antoine Pitrou, Philippe Rivière, Emmanuel Saint-James * |
||||
* * |
||||
* Ce programme est un logiciel libre distribué sous licence GNU/GPL. * |
||||
\***************************************************************************/ |
||||
|
||||
/** |
||||
* Gestion d'affichage des pages privées en squelette (méthode dépreciée) |
||||
* |
||||
* Chargé depuis ecrire/index.php lorsqu'une page demandée est présente |
||||
* en tant que squelettes dans `prive/exec`. |
||||
* |
||||
* @removed from SPIP 4.0 |
||||
* @deprecated |
||||
* Il faut créer les squelettes de l'espace privé dans `prive/squelettes` |
||||
* |
||||
* @package SPIP\Core\Exec |
||||
*/ |
||||
|
||||
if (!defined('_ECRIRE_INC_VERSION')) { |
||||
return; |
||||
} |
||||
|
||||
/** |
||||
* Un exec générique qui utilise le fond homonyme de l'exec demandé |
||||
* dans l'URL |
||||
* |
||||
* Ancien système transitoire basé sur un squelette unique avec un |
||||
* pseudo balisage par commentaires HTML |
||||
* |
||||
* @deprecated Ne plus utiliser. Migrer vers `prive/squelettes/` |
||||
* |
||||
* @pipeline_appel affiche_hierarchie |
||||
* @pipeline_appel affiche_gauche |
||||
* @pipeline_appel affiche_droite |
||||
* @pipeline_appel affiche_milieu |
||||
* |
||||
*/ |
||||
function exec_fond_monobloc_dist() { |
||||
|
||||
// pas d'autorisation |
||||
// c'est au fond de les gerer avec #AUTORISER, et de renvoyer un fond vide le cas echeant |
||||
// qui declenchera un minipres acces interdit |
||||
$exec = _request('exec'); |
||||
$fond = trim(recuperer_fond("prive/exec/$exec", $_REQUEST)); |
||||
if (!$fond) { |
||||
include_spip('inc/minipres'); |
||||
echo minipres(); |
||||
} else { |
||||
$titre = "exec_$exec"; |
||||
$hierarchie = ''; |
||||
$navigation = ''; |
||||
$extra = ''; |
||||
|
||||
// recuperer le titre dans le premier hn de la page |
||||
if (preg_match(',<h[1-6][^>]*>(.+)</h[1-6]>,Uims', $fond, $match)) { |
||||
$titre = $match[1]; |
||||
} |
||||
|
||||
// recuperer la hierarchie (au-dessus du contenu) |
||||
if (preg_match(',<!--#hierarchie-->.+<!--/#hierarchie-->,Uims', $fond, $match)) { |
||||
$hierarchie = $match[0]; |
||||
$fond = str_replace($hierarchie, '', $fond); |
||||
} |
||||
|
||||
// recuperer la navigation (colonne de gauche) |
||||
if (preg_match(',<!--#navigation-->.+<!--/#navigation-->,Uims', $fond, $match)) { |
||||
$navigation = $match[0]; |
||||
$fond = str_replace($navigation, '', $fond); |
||||
} |
||||
|
||||
// recuperer les extras (colonne de droite) |
||||
if (preg_match(',<!--#extra-->.+<!--/#extra-->,Uims', $fond, $match)) { |
||||
$extra = $match[0]; |
||||
$fond = str_replace($extra, '', $fond); |
||||
} |
||||
|
||||
include_spip('inc/presentation'); // alleger les inclusions avec un inc/presentation_mini |
||||
$commencer_page = charger_fonction('commencer_page', 'inc'); |
||||
echo $commencer_page($titre); |
||||
|
||||
if ($hierarchie) { |
||||
echo debut_grand_cadre(true); |
||||
echo pipeline( |
||||
'affiche_hierarchie', |
||||
[ |
||||
'args' => [ |
||||
'exec' => $exec |
||||
], |
||||
'data' => $hierarchie |
||||
] |
||||
); |
||||
echo fin_grand_cadre(true); |
||||
} |
||||
|
||||
echo debut_gauche("exec_$exec", true); |
||||
|
||||
$contexte = ['exec' => $exec]; |
||||
if ($objet_exec = trouver_objet_exec($exec)) { |
||||
$id = $objet_exec['id_table_objet']; |
||||
if (_request($id)) { |
||||
$contexte[$id] = _request($id); |
||||
} |
||||
} |
||||
|
||||
echo $navigation; |
||||
echo pipeline('affiche_gauche', ['args' => $contexte, 'data' => '']); |
||||
|
||||
echo creer_colonne_droite("exec_$exec", true); |
||||
echo $extra; |
||||
echo pipeline('affiche_droite', ['args' => $contexte, 'data' => '']); |
||||
|
||||
echo debut_droite("exec_$exec", true); |
||||
echo $fond; |
||||
echo pipeline('affiche_milieu', ['args' => $contexte, 'data' => '']); |
||||
|
||||
echo fin_gauche(), fin_page(); |
||||
} |
||||
} |
@ -1,775 +0,0 @@
|
||||
<?php |
||||
|
||||
if (!function_exists('modifier_contenu')) { |
||||
/** |
||||
* Modifie un contenu |
||||
* |
||||
* Dépreciée : |
||||
* Fonction générique pour l'API de modification de contenu |
||||
* |
||||
* @removed from SPIP 4.0 |
||||
* @deprecated |
||||
* @param string $type |
||||
* Type d'objet |
||||
* @param int $id |
||||
* Identifiant de l'objet |
||||
* @param array $options |
||||
* Toutes les options |
||||
* @param array|null $c |
||||
* Couples champ/valeur à modifier |
||||
* @param string $serveur |
||||
* Nom du connecteur à la base de données |
||||
* @return bool |
||||
* true si quelque chose est modifié correctement |
||||
* false sinon (erreur ou aucun champ modifié) |
||||
*/ |
||||
function modifier_contenu($type, $id, $options, $c = null, $serveur = '') { |
||||
$res = objet_modifier_champs($type, $id, $options, $c, $serveur); |
||||
|
||||
return ($res === '' ? true : false); |
||||
} |
||||
} |
||||
|
||||
if (!function_exists('revision_objet')) { |
||||
/** |
||||
* Crée une modification d'un objet |
||||
* |
||||
* Wrapper pour remplacer tous les obsoletes revision_xxx |
||||
* |
||||
* @removed from SPIP 4.0 |
||||
* @deprecated |
||||
* Utiliser objet_modifier(); |
||||
* @uses objet_modifier() |
||||
* |
||||
* @param string $objet |
||||
* Nom de l'objet |
||||
* @param int $id_objet |
||||
* Identifiant de l'objet |
||||
* @param array $c |
||||
* Couples des champs/valeurs modifiées |
||||
* @return mixed|string |
||||
*/ |
||||
function revision_objet($objet, $id_objet, $c = null) { |
||||
$objet = objet_type($objet); // securite |
||||
include_spip('action/editer_objet'); |
||||
|
||||
return objet_modifier($objet, $id_objet, $c); |
||||
} |
||||
} |
||||
|
||||
if (!function_exists('revisions_articles')) { |
||||
/** |
||||
* Créer une révision d'un article |
||||
* |
||||
* @removed from SPIP 4.0 |
||||
* @deprecated 3.1 Utiliser article_modifier() |
||||
* @see article_modifier() |
||||
* |
||||
* @param int $id_article |
||||
* Identifiant de l'article à modifier |
||||
* @param array|null $c |
||||
* Couples (colonne => valeur) de données à modifier. |
||||
* En leur absence, on cherche les données dans les champs éditables |
||||
* qui ont été postés (via _request()) |
||||
* @return string|null |
||||
* Chaîne vide si aucune erreur, |
||||
* Null si aucun champ à modifier, |
||||
* Chaîne contenant un texte d'erreur sinon. |
||||
*/ |
||||
function revisions_articles($id_article, $c = false) { |
||||
return article_modifier($id_article, $c); |
||||
} |
||||
} |
||||
|
||||
if (!function_exists('revision_article')) { |
||||
/** |
||||
* Créer une révision d'un article |
||||
* |
||||
* @removed from SPIP 4.0 |
||||
* @deprecated 3.1 Utiliser article_modifier() |
||||
* @see article_modifier() |
||||
* |
||||
* @param int $id_article |
||||
* Identifiant de l'article à modifier |
||||
* @param array|null $c |
||||
* Couples (colonne => valeur) de données à modifier. |
||||
* En leur absence, on cherche les données dans les champs éditables |
||||
* qui ont été postés (via _request()) |
||||
* @return string|null |
||||
* Chaîne vide si aucune erreur, |
||||
* Null si aucun champ à modifier, |
||||
* Chaîne contenant un texte d'erreur sinon. |
||||
*/ |
||||
function revision_article($id_article, $c = false) { |
||||
return article_modifier($id_article, $c); |
||||
} |
||||
} |
||||
|
||||
if (!function_exists('articles_set')) { |
||||
/** |
||||
* Modifier un article |
||||
* |
||||
* @removed from SPIP 4.0 |
||||
* @deprecated 3.1 Utiliser article_modifier() |
||||
* @see article_modifier() |
||||
* |
||||
* @param int $id_article |
||||
* Identifiant de l'article à modifier |
||||
* @param array|null $set |
||||
* Couples (colonne => valeur) de données à modifier. |
||||
* En leur absence, on cherche les données dans les champs éditables |
||||
* qui ont été postés (via _request()) |
||||
* @return string|null |
||||
* Chaîne vide si aucune erreur, |
||||
* Null si aucun champ à modifier, |
||||
* Chaîne contenant un texte d'erreur sinon. |
||||
*/ |
||||
function articles_set($id_article, $set = null) { |
||||
return article_modifier($id_article, $set); |
||||
} |
||||
} |
||||
|
||||
if (!function_exists('insert_article')) { |
||||
/** |
||||
* Insertion d'un article dans une rubrique |
||||
* |
||||
* @removed from SPIP 4.0 |
||||
* @deprecated 3.1 Utiliser article_inserer() |
||||
* @see article_inserer() |
||||
* |
||||
* @param int $id_rubrique |
||||
* Identifiant de la rubrique |
||||
* @return int |
||||
* Identifiant du nouvel article |
||||
*/ |
||||
function insert_article($id_rubrique) { |
||||
return article_inserer($id_rubrique); |
||||
} |
||||
} |
||||
|
||||
if (!function_exists('instituer_article')) { |
||||
/** |
||||
* Instituer un article dans une rubrique |
||||
* |
||||
* @removed from SPIP 4.0 |
||||
* @deprecated 3.1 Utiliser article_instituer() |
||||
* @see article_instituer() |
||||
* |
||||
* @param int $id_article |
||||
* Identifiant de l'article |
||||
* @param array $c |
||||
* Couples (colonne => valeur) des données à instituer |
||||
* Les colonnes 'statut' et 'id_parent' sont liées, car un admin restreint |
||||
* peut deplacer un article publié vers une rubrique qu'il n'administre pas |
||||
* @param bool $calcul_rub |
||||
* True pour changer le statut des rubriques concernées si un article |
||||
* change de statut ou est déplacé dans une autre rubrique |
||||
* @return string |
||||
* Chaîne vide |
||||
*/ |
||||
function instituer_article($id_article, $c, $calcul_rub = true) { |
||||
return article_instituer($id_article, $c, $calcul_rub); |
||||
} |
||||
} |
||||
|
||||
|
||||
|
||||
if (!function_exists('insert_auteur')) { |
||||
/** |
||||
* Insertion d'un auteur |
||||
* |
||||
* @removed from SPIP 4.0 |
||||
* @deprecated Utiliser auteur_inserer() |
||||
* @see auteur_inserer() |
||||
* |
||||
* @param string|null $source |
||||
* @return int |
||||
*/ |
||||
function insert_auteur($source = null) { |
||||
return auteur_inserer($source); |
||||
} |
||||
} |
||||
|
||||
if (!function_exists('auteurs_set')) { |
||||
/** |
||||
* Modification d'un auteur |
||||
* |
||||
* @removed from SPIP 4.0 |
||||
* @deprecated Utiliser auteur_modifier() |
||||
* @see auteur_modifier() |
||||
* |
||||
* @param int $id_auteur |
||||
* @param array|null $set |
||||
* @return string|null |
||||
*/ |
||||
function auteurs_set($id_auteur, $set = null) { |
||||
return auteur_modifier($id_auteur, $set); |
||||
} |
||||
} |
||||
|
||||
if (!function_exists('instituer_auteur')) { |
||||
/** |
||||
* Modifier le statut d'un auteur, ou son login/pass |
||||
* |
||||
* @removed from SPIP 4.0 |
||||
* @deprecated Utiliser auteur_instituer() |
||||
* @see auteur_instituer() |
||||
* |
||||
* @param int $id_auteur |
||||
* @param array $c |
||||
* @param bool $force_webmestre |
||||
* @return bool|string |
||||
*/ |
||||
function instituer_auteur($id_auteur, $c, $force_webmestre = false) { |
||||
return auteur_instituer($id_auteur, $c, $force_webmestre); |
||||
} |
||||
} |
||||
|
||||
if (!function_exists('revision_auteur')) { |
||||
/** |
||||
* Créer une révision d'un auteur |
||||
* |
||||
* @removed from SPIP 4.0 |
||||
* @deprecated Utiliser auteur_modifier() |
||||
* @see auteur_modifier() |
||||
* |
||||
* @param int $id_auteur |
||||
* @param array $c |
||||
* @return string|null |
||||
*/ |
||||
function revision_auteur($id_auteur, $c = false) { |
||||
return auteur_modifier($id_auteur, $c); |
||||
} |
||||
} |
||||
|
||||
|
||||
if (!function_exists('auteur_referent')) { |
||||
/** |
||||
* Ancien nommage pour compatibilité |
||||
* |
||||
* @removed from SPIP 4.0 |
||||
* @deprecated Utiliser auteur_associer() |
||||
* @see auteur_associer() |
||||
* |
||||
* @param int $id_auteur |
||||
* @param array $c |
||||
* @return string |
||||
*/ |
||||
function auteur_referent($id_auteur, $c) { |
||||
return auteur_associer($id_auteur, $c); |
||||
} |
||||
} |
||||
|
||||
|
||||
|
||||
if (!function_exists('insert_rubrique')) { |
||||
/** |
||||
* Crée une rubrique |
||||
* |
||||
* @removed from SPIP 4.0 |
||||
* @deprecated |
||||
* Utiliser rubrique_inserer() |
||||
* @see rubrique_inserer() |
||||
* |
||||
* @param int $id_parent |
||||
* Identifiant de la rubrique parente. |
||||
* 0 pour la racine. |
||||
* @return int |
||||
* Identifiant de la rubrique crée |
||||
**/ |
||||
function insert_rubrique($id_parent) { |
||||
return rubrique_inserer($id_parent); |
||||
} |
||||
} |
||||
|
||||
if (!function_exists('revisions_rubriques')) { |
||||
/** |
||||
* Modifie les contenus d'une rubrique |
||||
* |
||||
* @removed from SPIP 4.0 |
||||
* @deprecated |
||||
* Utiliser rubrique_modifier() |
||||
* @see rubrique_modifier() |
||||
* |
||||
* @param int $id_rubrique |
||||
* Identifiant de la rubrique à instituer |
||||
* @param array|null $set |
||||
* Tableau qu'on peut proposer en lieu et place de _request() |
||||
* @return bool|string |
||||