Compare commits

...

No commits in common. 'master' and 'spip-3.2' have entirely different histories.

  1. 117
      .gitattributes
  2. 7
      .gitignore
  3. 32
      README.md
  4. 50
      action/configuration.php
  5. 128
      base/convert_sql_utf8.php
  6. 158
      base/convert_utf8.php
  7. 18
      composer.json
  8. 64
      exec/base_convert_sql_utf8.php
  9. 65
      exec/base_convert_utf8.php
  10. 30
      exec/configuration.php
  11. 26
      exec/informer_auteur.php
  12. 42
      exec/memoriser.php
  13. 41
      exec/rechercher_auteur.php
  14. 26
      exec/selectionner_auteur.php
  15. 6
      grenier-xx.svg
  16. 130
      grenier_32/grenier_32_fonctions.php
  17. 85
      grenier_40/balise/login_prive.php
  18. 87
      grenier_40/balise/login_public.php
  19. 125
      grenier_40/exec/fond_monobloc.php
  20. 775
      grenier_40/grenier_40_actions.php
  21. 588
      grenier_40/grenier_40_autres.php
  22. 97
      grenier_40/grenier_40_balises.php
  23. 22
      grenier_40/grenier_40_criteres.php
  24. 102
      grenier_40/grenier_40_fonctions.php
  25. 38
      grenier_40/inc/charger_php_extension.php
  26. 41
      grenier_40/inc/mail.php
  27. 129
      grenier_fonctions.php
  28. 4
      grenier_options.php
  29. 178
      inc/actions.php
  30. 536
      inc/afficher_objets.php
  31. 112
      inc/date.php
  32. 25
      inc/dater.php
  33. 26
      inc/editer_auteurs.php
  34. 22
      inc/editer_mots.php
  35. 19
      inc/filtres_images.php
  36. 20
      inc/filtres_images_compat.php
  37. 98
      inc/formater_article.php
  38. 113
      inc/formater_auteur.php
  39. 69
      inc/informer_auteur.php
  40. 34
      inc/meme_rubrique.php
  41. 92
      inc/php3.php
  42. 268
      inc/presentation.php
  43. 143
      inc/presenter_liste.php
  44. 132
      inc/ressembler.php
  45. 77
      inc/selectionner_auteur.php
  46. 960
      inc/vieilles_defs.php
  47. 130
      lang/grenier.xml
  48. 2
      lang/grenier_fr.php
  49. 14
      lang/grenier_nl.php
  50. 4
      lang/grenier_pt.php
  51. 2
      lang/grenier_pt_br.php
  52. 11
      lang/paquet-grenier.xml
  53. 2
      lang/paquet-grenier_fr.php
  54. 6
      paquet.xml
  55. 15
      phpcs.xml.dist
  56. 597
      phpstan-baseline.neon
  57. 12
      phpstan.neon.dist
  58. 65
      prive/javascript/layer_old.js
  59. 3
      prive/objets/editer/dater.html

117
.gitattributes vendored

@ -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

7
.gitignore vendored

@ -1,7 +0,0 @@
/vendor/
/composer.phar
/composer.lock
/phpcs.xml
/phpstan.neon
/.php_cs.cache
/.php_cs.txt

32
README.md

@ -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`)

50
action/configuration.php

@ -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);
}

128
base/convert_sql_utf8.php

@ -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"), "'> &gt;&gt; ",
_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');
}
}

158
base/convert_utf8.php

@ -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"), "'> &gt;&gt; ",
_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> &nbsp; ";
$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));
}
}

18
composer.json

@ -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"
}
}
}

64
exec/base_convert_sql_utf8.php

@ -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);
}
}
}

65
exec/base_convert_utf8.php

@ -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"). "'> &gt;&gt; "._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);
}
}
}

30
exec/configuration.php

@ -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?');
}

26
exec/informer_auteur.php

@ -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));
}

42
exec/memoriser.php

@ -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);
}

41
exec/rechercher_auteur.php

@ -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));
}
}

26
exec/selectionner_auteur.php

@ -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));
}

6
grenier-xx.svg

@ -1,6 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" width="64" height="64">
<path fill="#666" d="M58 59H6c-1.1 0-2-.9-2-2V6c0-1.1.9-2 2-2h52c1.1 0 2 .9 2 2v51c0 1.1-.9 2-2 2z" />
<path fill="#fff" d="M10 10h44v43H10z"/>
<path fill="#888" d="M10 18h44v2H10zM10 30h44v2H10zM10 42h44v2H10z"/>
<path fill="#1d83d4" d="M23 23h-1c-1.1 0-2-.9-2-2v-5c0-1.1.9-2 2-2h1c1.1 0 2 .9 2 2v5c0 1.1-.9 2-2 2zM17 23h-1c-1.1 0-2-.9-2-2v-5c0-1.1.9-2 2-2h1c1.1 0 2 .9 2 2v5c0 1.1-.9 2-2 2zM29 23h-1c-1.1 0-2-.9-2-2v-5c0-1.1.9-2 2-2h1c1.1 0 2 .9 2 2v5c0 1.1-.9 2-2 2zM23 36h-1c-1.1 0-2-.9-2-2v-5c0-1.1.9-2 2-2h1c1.1 0 2 .9 2 2v5c0 1.1-.9 2-2 2zM17 36h-1c-1.1 0-2-.9-2-2v-5c0-1.1.9-2 2-2h1c1.1 0 2 .9 2 2v5c0 1.1-.9 2-2 2zM29 36h-1c-1.1 0-2-.9-2-2v-5c0-1.1.9-2 2-2h1c1.1 0 2 .9 2 2v5c0 1.1-.9 2-2 2zM43 47h-1c-1.1 0-2-.9-2-2v-5c0-1.1.9-2 2-2h1c1.1 0 2 .9 2 2v5c0 1.1-.9 2-2 2zM49 47h-1c-1.1 0-2-.9-2-2v-5c0-1.1.9-2 2-2h1c1.1 0 2 .9 2 2v5c0 1.1-.9 2-2 2zM36 23h-1c-1.1 0-2-.9-2-2v-5c0-1.1.9-2 2-2h1c1.1 0 2 .9 2 2v5c0 1.1-.9 2-2 2z"/>
</svg>

Before

Width:  |  Height:  |  Size: 1.0 KiB

130
grenier_32/grenier_32_fonctions.php

@ -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();
}

85
grenier_40/balise/login_prive.php

@ -1,85 +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. *
* Pour plus de détails voir le fichier COPYING.txt ou l'aide en ligne. *
\***************************************************************************/
/**
* 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);
}

87
grenier_40/balise/login_public.php

@ -1,87 +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. *
* Pour plus de détails voir le fichier COPYING.txt ou l'aide en ligne. *
\***************************************************************************/
/**
* 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);
}

125
grenier_40/exec/fond_monobloc.php

@ -1,125 +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. *
* Pour plus de détails voir le fichier COPYING.txt ou l'aide en ligne. *
\***************************************************************************/
/**
* 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();
}
}

775
grenier_40/grenier_40_actions.php

@ -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