source: spip-zone/_core_/plugins/revisions/genie/optimiser_revisions.php @ 93651

Last change on this file since 93651 was 93651, checked in by marcimat@…, 5 years ago

Meilleure compatibilité avec PSR-2 et nos règles d'écriture, en appliquant
différents fix avec php-cs-fixers. Fixers appliqués ici :

'encoding', utf8
'eof_ending',
un saut de ligne en fin de fichier
'elseif', elseif plutôt que else if
'function_call_space',
espaces sur fonctions
'function_declaration', espaces sur fonctions
'function_typehint_space',
espaces sur fonctions
'linefeed', sauts de ligne \n uniquement
'lowercase_constants',
true, false, null en munuscule
'lowercase_keywords', mots clés PHP en lowercase
'method_argument_space',
espaces sur appels de fonctions
'multiple_use', use unique sur fonctions anonymes
'newline_after_open_tag',
ouverture de php… et c'est tout sur cette ligne
'operators_spaces', espaces de part et d'autres des opérateurs binaires
'parenthesis',
pas d'espace juste après parenthèse ouvrante, ou avant parenthèse fermante
'php_closing_tag', pas de fermeture de php
'short_tag',
tag PHP corrects
'trailing_spaces', pas d'espace qui traîne en fin de ligne
'visibility',
déclarer 'public / private / protected' sur les méthodes

File size: 2.9 KB
Line 
1<?php
2/***************************************************************************\
3 *  SPIP, Systeme de publication pour l'internet                           *
4 *                                                                         *
5 *  Copyright (c) 2001-2013                                                *
6 *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
7 *                                                                         *
8 *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
9 *  Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne.   *
10\***************************************************************************/
11
12/**
13 * @plugin Revisions pour SPIP
14 * @license GPL
15 * @package SPIP\Revisions\Genie
16 */
17
18if (!defined('_ECRIRE_INC_VERSION')) {
19        return;
20}
21
22include_spip('base/abstract_sql');
23
24/**
25 * Tâche Cron d'optimisation des révisions
26 *
27 * @param int $last
28 *     Timestamp de la dernière exécution de cette tâche
29 * @return int
30 *     Positif : la tâche a été effectuée
31 */
32function genie_optimiser_revisions_dist($last) {
33
34        optimiser_base_revisions();
35        optimiser_tables_revision();
36
37        return 1;
38}
39
40/**
41 * Supprimer les révisions des objets disparus
42 */
43function optimiser_base_revisions() {
44        /**
45         * On commence par récupérer la liste des types d'objet ayant au moins une révision
46         */
47        $objets_revises = sql_select('objet', 'spip_versions', 'id_version=1', 'objet');
48
49        /**
50         * Pour chaque objet, on va contruire un tableau des identifiants disparus
51         * On supprimera ensuite les occurences dans spip_versions et spip_versions_fragments
52         */
53        while ($objet = sql_fetch($objets_revises)) {
54                $in = array();
55                $table = table_objet_sql($objet['objet']);
56                $id_table_objet = id_table_objet($objet['objet']);
57                $res = sql_select("A.id_objet AS id_objet, A.objet AS objet",
58                        "spip_versions AS A LEFT JOIN $table AS R
59                                                        ON R.$id_table_objet=A.id_objet AND A.objet=" . sql_quote($objet['objet']),
60                        "R.$id_table_objet IS NULL AND A.objet=" . sql_quote($objet['objet']) . " AND A.id_objet > 0",
61                        "A.id_objet",
62                        "A.id_objet");
63
64                while ($row = sql_fetch($res)) {
65                        $in[$row['id_objet']] = true;
66                }
67                sql_free($res);
68
69                /**
70                 * Si on a un array
71                 * On supprime toute occurence des objets disparus dans :
72                 * -* spip_versions
73                 * -* spip_versions_fragments
74                 */
75                if ($in) {
76                        foreach (array('spip_versions', 'spip_versions_fragments') as $table) {
77                                sql_delete($table, sql_in('id_objet', array_keys($in)) . " AND objet=" . sql_quote($objet['objet']));
78                        }
79                }
80        }
81}
82
83/**
84 * Optimisation des tables spip_versions et spip_versions_fragments
85 */
86function optimiser_tables_revision() {
87        foreach (array('spip_versions', 'spip_versions_fragments') as $table) {
88                spip_log("debut d'optimisation de la table $table");
89                if (sql_optimize($table)) {
90                        spip_log("fin d'optimisation de la table $table");
91                } else {
92                        spip_log("Pas d'optimiseur necessaire pour $table");
93                }
94        }
95}
Note: See TracBrowser for help on using the repository browser.