source: spip-zone/_plugins_/refresher/refresher_options.php

Last change on this file was 99009, checked in by benoit.aubert@…, 4 years ago

Refresher plugin by Goony & Philooo

File size: 3.4 KB
Line 
1<?php
2include_spip("inc/config");
3include_spip("inc/refresher_functions");
4define('_LOG_FILTRE_GRAVITE',8);
5
6
7$GLOBALS['refresher_objets'] = array(
8                /* define pull objects here */
9                /*array('mot_skel', 'mot')*/
10);
11
12// we stop invalidating the whole cache when there's an update (basic SPIP feature)
13$GLOBALS['derniere_modif_invalide'] = false;
14
15if(isset($_GET['var_mode']) && ($_GET['var_mode'] == 'calcul' || $_GET['var_mode'] == 'recalcul')){
16        $who_recalculates = lire_config('refresher/who_recalculates');
17        $redirect = false;
18        switch($who_recalculates){
19                case 'authors' : 
20                        if(!isset($GLOBALS['visiteur_session']) || !isset($GLOBALS['visiteur_session']['id_auteur']) || $GLOBALS['visiteur_session']['id_auteur']=='') $redirect = true;/*unset($_GET['var_mode']);*/
21                        break;
22                case 'webmasters' : 
23                        if(!isset($GLOBALS['visiteur_session']) || !isset($GLOBALS['visiteur_session']['id_auteur']) | !defined('_ID_WEBMESTRES') || !in_array($GLOBALS['visiteur_session']['id_auteur'], explode(':', _ID_WEBMESTRES))) $redirect = true;/*unset($_GET['var_mode']);*/
24                        break;
25                case 'none' : 
26                        unset($_GET['var_mode']);
27                        break;
28                default : 
29                        break;
30        }
31}
32       
33// in case the recalcul is in POST form we turn it into GET to notice SPIP. This is a refresh.
34if(isset($_POST["var_mode"]) && $_POST["var_mode"]=="calcul"){
35        $_SERVER['REQUEST_METHOD']="GET";
36        $_GET["var_mode"] = "calcul";
37        spip_log("calcul (PUSH) ".$GLOBALS['meta']['adresse_site'].$GLOBALS['REQUEST_URI'], 'refresher');
38}
39
40if(isset($GLOBALS['refresher_objets']) && is_array($GLOBALS['refresher_objets'])){
41        foreach($GLOBALS['refresher_objets'] as $item){
42                $page = $item[0];
43                $objet = $item[1];
44                if($page == $_GET['page'] && (isset($_GET['id_'.$objet]) | isset($_GET[$objet]))){
45                        if(isset($_GET['id'.$item[1]])) $id_objet = $_GET['id_'.$item[1]];
46                        else $id_objet = $_GET[$item[1]];
47                        if(is_array($id_objet)) 
48                        $id_objet = '|'.implode('|', $id_objet).'|';
49                        $res = sql_select("id_objet, objet", "refresher_urls", "uri=".sql_quote($url_sv)." and objet=".sql_quote($objet)." and id_objet=".sql_quote($id_objet), "", "", 1);
50                        if($row = sql_fetch($res)){}
51                        else{
52                                sql_insertq('refresher_urls', array('uri' => $url_sv, 'objet' => 'multi_kw', 'id_objet' => $id_objet, 'squelette' => $_GET['page']));
53                                // forcer le calcul
54                                if (!defined('_VAR_MODE')) {
55                                        define('_VAR_MODE', 'calcul');
56                                }
57                        }
58                }
59        }
60}
61
62// exemple of customizing an invalidation : editing an article
63// NOTE: all URLs given must be without the domain.
64// i.e for http://www.mysite.com/mypath/mypage.html we only give 'mypath/mypage.html'
65/*
66function refresh_objet_modifier_article($urls, $id_article, $arr){
67        // only do it if article already published online
68        if(article_is_published($id_article) == 1){
69                // refresh article page with 'push'
70                array_push($urls['push'], $id_article.'|article'));
71                // refresh article page with 'push' (useless if we already used push on it)
72                array_push($urls['pull'], $id_article.'|article'));
73        }
74        return $urls;
75}
76*/
77
78/* examples of functions we can use:
79- refresh_objet_modifier_article -> editing an article
80- refresh_objet_instituer_article -> publishing/unpublishing an article
81- refresh_lien_delete_document_article
82- refresh_lien_insert_document_article
83- refresh_lien_delete_mot_article
84- refresh_lien_insert_mot_article
85- refresh_objet_modifier_mot
86... and probably more. You might want to try other combinationsor object, it might work!
87*/
88
89?>
Note: See TracBrowser for help on using the repository browser.