WP File Manager
Current Path:
/
home
/
argothem
/
www
/
log
/
inc
/
cache
/
calcul
/
Name
Action
..
.ok
Edit
00
01
02
03
04
05
06
07
08
09
0a
0b
0c
0d
0e
0f
10
10.cache
Edit
11
12
13
14
15
16
17
18
19
1a
1b
1c
1d
1e
1f
20
21
22
23
24
25
26
27
28
29
2a
2b
2c
2d
2e
2f
30
31
32
33
34
35
36
36.cache
Edit
37
38
39
3a
3b
3c
3d
3e
3f
40
41
41.cache
Edit
42
43
44
45
46
47
48
49
4a
4b
4c
4d
4e
4f
50
51
51.cache
Edit
52
53
54
55
56
57
58
59
5a
5b
5c
5d
5e
5f
60
61
62
63
64
65
66
67
68
69
6a
6b
6c
6d
6e
6f
70
71
72
73
74
75
76
77
78
79
7a
7b
7c
7d
7e
7f
80
81
82
83
84
85
86
87
88
89
8a
8b
8c
8d
8e
8f
90
91
92
93
94
95
96
97
98
99
9a
9b
9c
9d
9e
9f
Chiffrement.php
Edit
Cles-20250623160443.php
Edit
Cles.php
Edit
a0
a1
a2
a3
a4
a5
a6
a7
a8
a9
aa
ab
ac
ad
ad.cache
Edit
ae
af
b0
b1
b2
b3
b4
b5
b6
b7
b8
b9
ba
bb
bc
bd
be
bf
c0
c1
c2
c3
c4
c5
c6
c7
c8
c9
ca
cb
cc
cd
ce
cf
charger_pipelines.php
Edit
charger_plugins_options.php
Edit
d0
d1
d2
d3
d4
d5
d6
d7
d8
d9
da
db
dc
dd
de
df
distant.log-20250625103631.1
Edit
distant.log.1
Edit
distant.log.2
Edit
distant.log.3
Edit
e0
e1
e2
e3
e4
e5
e6
e7
e8
e9
ea
eb
eb.cache
Edit
ec
ec.cache
Edit
ed
ee
ef
f0
f1
f2
f3
f4
f5
f5.cache
Edit
f6
f7
f8
f9
fa
fb
fc
fd
fe
fe.cache
Edit
ff
ff.cache
Edit
modifier.log.1
Edit
mysql.log
Edit
mysql.log-20250623151434.1
Edit
mysql.log-20250623152155.2
Edit
mysql.log-20250623185945.2
Edit
mysql.log.1
Edit
mysql.log.2
Edit
paquet-dist_en.php
Edit
paquet-dist_it.php
Edit
sqlite.log
Edit
svn10000-20250623164814.php
Edit
svn10000-20250623193149.php
Edit
svn10000-20250623205724.php
Edit
svn10000.php
Edit
svp_actionner-20250625103622.php
Edit
svp_actionner.php
Edit
svp_decider.php
Edit
svp_depoter_distant.php
Edit
svp_plugin.php
Edit
v21.php
Edit
v30.php
Edit
v31.php
Edit
Editing: v30.php
<?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 des mises à jour de bdd de SPIP * * Mises à jour en 3.0 * * @package SPIP\Core\SQL\Upgrade **/ if (!defined('_ECRIRE_INC_VERSION')) { return; } $GLOBALS['maj'][16428] = [ ['maj_liens', 'auteur'], // creer la table liens ['maj_liens', 'auteur', 'article'], ['sql_drop_table', 'spip_auteurs_articles'], ['maj_liens', 'auteur', 'rubrique'], ['sql_drop_table', 'spip_auteurs_rubriques'], ['maj_liens', 'auteur', 'message'], ['sql_drop_table', 'spip_auteurs_messages'], ]; /** * Mise à jour des tables de liens * * Crée la table de lien au nouveau format (spip_xx_liens) ou insère * les données d'ancien format dans la nouveau format. * * Par exemple pour réunir en une seule table les liens de documents, * spip_documents_articles et spip_documents_forum * * Supprime la table au vieux format une fois les données transférées. * * @uses creer_ou_upgrader_table() * @uses maj_liens_insertq_multi_check() * * @param string $pivot * Nom de la table pivot, tel que `auteur` * @param string $l * Vide : crée la table de lien pivot. * Sinon, nom de la table à lier, tel que `article`, et dans ce cas là, * remplit spip_auteurs_liens à partir de spip_auteurs_articles. */ function maj_liens($pivot, $l = '') { @define('_LOG_FILTRE_GRAVITE', 8); $exceptions_pluriel = ['forum' => 'forum', 'syndic' => 'syndic']; $pivot = preg_replace(',[^\w],', '', $pivot); // securite $pivots = ($exceptions_pluriel[$pivot] ?? $pivot . 's'); $liens = 'spip_' . $pivots . '_liens'; $id_pivot = 'id_' . $pivot; // Creer spip_auteurs_liens global $tables_auxiliaires; if (!$l) { include_spip('base/auxiliaires'); include_spip('base/create'); creer_ou_upgrader_table($liens, $tables_auxiliaires[$liens], false); } else { // Preparer $l = preg_replace(',[^\w],', '', $l); // securite $primary = "id_$l"; $objet = ($l == 'syndic' ? 'site' : $l); $ls = ($exceptions_pluriel[$l] ?? $l . 's'); $ancienne_table = 'spip_' . $pivots . '_' . $ls; $pool = 400; $trouver_table = charger_fonction('trouver_table', 'base'); if (!$desc = $trouver_table($ancienne_table)) { return; } // securite pour ne pas perdre de donnees if (!$trouver_table($liens)) { return; } $champs = $desc['field']; if (isset($champs['maj'])) { unset($champs['maj']); } if (isset($champs[$primary])) { unset($champs[$primary]); } $champs = array_keys($champs); // ne garder que les champs qui existent sur la table destination if ($desc_cible = $trouver_table($liens)) { $champs = array_intersect($champs, array_keys($desc_cible['field'])); } $champs[] = "$primary as id_objet"; $champs[] = "'$objet' as objet"; $champs = implode(', ', $champs); // Recopier les donnees $sub_pool = 100; while ($ids = array_map('reset', sql_allfetsel("$primary", $ancienne_table, '', '', '', "0,$sub_pool"))) { $insert = []; foreach ($ids as $id) { $n = sql_countsel($liens, "objet='$objet' AND id_objet=" . intval($id)); while ($t = sql_allfetsel($champs, $ancienne_table, "$primary=" . intval($id), '', $id_pivot, "$n,$pool")) { $n += is_countable($t) ? count($t) : 0; // empiler en s'assurant a minima de l'unicite while ($r = array_shift($t)) { $insert[$r[$id_pivot] . ':' . $r['id_objet']] = $r; } if (count($insert) >= $sub_pool) { maj_liens_insertq_multi_check($liens, $insert, $tables_auxiliaires[$liens]); $insert = []; } // si timeout, sortir, la relance nous ramenera dans cette fonction // et on verifiera/repartira de la if (time() >= _TIME_OUT) { return; } } if (time() >= _TIME_OUT) { return; } } if (count($insert)) { maj_liens_insertq_multi_check($liens, $insert, $tables_auxiliaires[$liens]); } sql_delete($ancienne_table, sql_in($primary, $ids)); } } } /** * Insère des données dans une table de liaison de façon un peu sécurisée * * Si une insertion multiple échoue, on réinsère ligne par ligne. * * @param string $table Table de liaison * @param array $couples Tableau de couples de données à insérer * @param array $desc Description de la table de liaison * @return void **/ function maj_liens_insertq_multi_check($table, $couples, $desc = []) { $n_before = sql_countsel($table); sql_insertq_multi($table, $couples, $desc); $n_after = sql_countsel($table); if (($n_after - $n_before) == count($couples)) { return; } // si ecart, on recommence l'insertion ligne par ligne... // moins rapide mais secure : seul le couple en doublon echouera, et non toute la serie foreach ($couples as $c) { sql_insertq($table, $c, $desc); } } $GLOBALS['maj'][17311] = [ [ 'ecrire_meta', 'multi_objets', implode( ',', array_diff( [ (isset($GLOBALS['meta']['multi_rubriques']) and $GLOBALS['meta']['multi_rubriques'] == 'oui') ? 'spip_rubriques' : '', (isset($GLOBALS['meta']['multi_articles']) and $GLOBALS['meta']['multi_articles'] == 'oui') ? 'spip_articles' : '' ], [''] ) ) ], [ 'ecrire_meta', 'gerer_trad_objets', implode( ',', array_diff( [ (isset($GLOBALS['meta']['gerer_trad']) and $GLOBALS['meta']['gerer_trad'] == 'oui') ? 'spip_articles' : '' ], [''] ) ) ], ]; $GLOBALS['maj'][17555] = [ ['sql_alter', "TABLE spip_resultats ADD table_objet varchar(30) DEFAULT '' NOT NULL"], ['sql_alter', "TABLE spip_resultats ADD serveur char(16) DEFAULT '' NOT NULL"], ]; $GLOBALS['maj'][17563] = [ ['sql_alter', "TABLE spip_articles ADD virtuel VARCHAR(255) DEFAULT '' NOT NULL"], ['sql_update', 'spip_articles', ['virtuel' => 'SUBSTRING(chapo,2)', 'chapo' => "''"], "chapo LIKE '=_%'"], ]; $GLOBALS['maj'][17577] = [ ['maj_tables', ['spip_jobs', 'spip_jobs_liens']], ]; $GLOBALS['maj'][17743] = [ ['sql_update', 'spip_auteurs', ['prefs' => 'bio', 'bio' => "''"], "statut='nouveau' AND bio<>''"], ]; $GLOBALS['maj'][18219] = [ ['sql_alter', 'TABLE spip_rubriques DROP id_import'], ['sql_alter', 'TABLE spip_rubriques DROP export'], ]; $GLOBALS['maj'][18310] = [ ['sql_alter', "TABLE spip_auteurs_liens CHANGE vu vu VARCHAR(6) DEFAULT 'non' NOT NULL"], ]; $GLOBALS['maj'][18597] = [ ['sql_alter', "TABLE spip_rubriques ADD profondeur smallint(5) DEFAULT '0' NOT NULL"], ['maj_propager_les_secteurs'], ]; $GLOBALS['maj'][18955] = [ ['sql_alter', 'TABLE spip_auteurs_liens ADD INDEX id_objet (id_objet)'], ['sql_alter', 'TABLE spip_auteurs_liens ADD INDEX objet (objet)'], ]; /** * Mise à jour pour recalculer les secteurs des rubriques * * @uses propager_les_secteurs() **/ function maj_propager_les_secteurs() { include_spip('inc/rubriques'); propager_les_secteurs(); } /** * Mise à jour des bdd SQLite pour réparer les collation des champs texte * pour les passer en NOCASE * * @uses base_lister_toutes_tables() * @uses _sqlite_remplacements_definitions_table() **/ function maj_collation_sqlite() { include_spip('base/dump'); $tables = base_lister_toutes_tables(); // rien a faire si base non sqlite if (strncmp($GLOBALS['connexions'][0]['type'], 'sqlite', 6) !== 0) { return; } $trouver_table = charger_fonction('trouver_table', 'base'); // forcer le vidage de cache $trouver_table(''); // cas particulier spip_auteurs : retablir le collate binary sur le login $desc = $trouver_table('spip_auteurs'); spip_log('spip_auteurs : ' . var_export($desc['field'], true), 'maj.' . _LOG_INFO_IMPORTANTE); if (stripos($desc['field']['login'], 'BINARY') === false) { spip_log('Retablir champ login BINARY sur table spip_auteurs', 'maj'); sql_alter('table spip_auteurs change login login VARCHAR(255) BINARY'); $trouver_table(''); $new_desc = $trouver_table('spip_auteurs'); spip_log('Apres conversion spip_auteurs : ' . var_export($new_desc['field'], true), 'maj.' . _LOG_INFO_IMPORTANTE); } foreach ($tables as $table) { if (time() >= _TIME_OUT) { return; } if ($desc = $trouver_table($table)) { $desc_collate = _sqlite_remplacements_definitions_table($desc['field']); if ($d = array_diff($desc['field'], $desc_collate)) { spip_log("Table $table COLLATE incorrects", 'maj'); // cas particulier spip_urls : // supprimer les doublons avant conversion sinon echec (on garde les urls les plus recentes) if ($table == 'spip_urls') { // par date DESC pour conserver les urls les plus recentes $data = sql_allfetsel('*', 'spip_urls', '', '', 'date DESC'); $urls = []; foreach ($data as $d) { $key = $d['id_parent'] . '::' . strtolower($d['url']); if (!isset($urls[$key])) { $urls[$key] = true; } else { spip_log( 'Suppression doublon dans spip_urls avant conversion : ' . serialize($d), 'maj.' . _LOG_INFO_IMPORTANTE ); sql_delete('spip_urls', 'id_parent=' . sql_quote($d['id_parent']) . ' AND url=' . sql_quote($d['url'])); } } } foreach ($desc['field'] as $field => $type) { if ($desc['field'][$field] !== $desc_collate[$field]) { spip_log("Conversion COLLATE table $table", 'maj.' . _LOG_INFO_IMPORTANTE); sql_alter("table $table change $field $field " . $desc_collate[$field]); $trouver_table(''); $new_desc = $trouver_table($table); spip_log( "Apres conversion $table : " . var_export($new_desc['field'], true), 'maj.' . _LOG_INFO_IMPORTANTE ); continue 2; // inutile de continuer pour cette table : un seul alter remet tout a jour en sqlite } } } } } // forcer le vidage de cache $trouver_table(''); } $GLOBALS['maj'][19236] = [ ['sql_updateq', 'spip_meta', ['impt' => 'oui'], "nom='version_installee'"], // version base principale ['sql_updateq', 'spip_meta', ['impt' => 'oui'], "nom LIKE '%_base_version'"], // version base plugins ['maj_collation_sqlite'], ]; $GLOBALS['maj'][19268] = [ ['supprimer_toutes_sessions'], ]; /** * Supprime toutes les sessions des auteurs * * Obligera tous les auteurs à se reconnecter ! **/ function supprimer_toutes_sessions() { spip_log('supprimer sessions auteur'); if ($dir = opendir(_DIR_SESSIONS)) { while (($f = readdir($dir)) !== false) { spip_unlink(_DIR_SESSIONS . $f); if (time() >= _TIME_OUT) { return; } } } }