1 | # Plugins LinkCheck |
---|
2 | |
---|
3 | Ce plugin permet de chercher et tester l’ensemble des liens présents dans les objets. |
---|
4 | |
---|
5 | [Documentation](https://contrib.spip.net/LinkCheck-verificateur-de-liens) |
---|
6 | |
---|
7 | ## Todo |
---|
8 | |
---|
9 | * [ ] ajout d’un lien vers archive.org sur les articles morts |
---|
10 | * [ ] export CSV (à finaliser avec generer_url_objet) |
---|
11 | * [ ] ajout d’un picto lien mort optionnel dans propre() [+ éventuellement lien sur archive.org le cas échéant] |
---|
12 | * [ ] vérifier/traiter automagiquement les migrations http⟹https |
---|
13 | * [ ] trouver une meilleure regexp pour la détection de lien, ça doit bien exister sous forme de lib |
---|
14 | |
---|
15 | ## Done |
---|
16 | |
---|
17 | * [x] améliorer la détection des liens (ex de bugs : "gazogène.com", ou "lacite.website" sont coupés bizarrement, les urls terminant par une virgule sont aussi coupés) |
---|
18 | * [x] présence du lien sur toutes les pages : ce message pourrait être plus informatif en précisant le nombre de liens |
---|
19 | * [x] bloc des liens trop visible sur les pages d'objets (articles, rubriques, il devrait être dans la marge car il ne s’agit pas d’un contenu éditable) |
---|
20 | * [x] gestion des autoriser() pas très claire (permettre d'ouvrir le plugin aux rédacteurices) |
---|
21 | |
---|
22 | ## Versions 1.4.x |
---|
23 | |
---|
24 | ### Version 1.4.4 |
---|
25 | |
---|
26 | - Remettre la table `spip_linkchecks` en table principale sinon l'autoincrement ne se fait pas. |
---|
27 | - Fonction d'upgrade qui permet de corriger ce problème sur des versions buggées déjà installées |
---|
28 | - Enlever la table `spip_linkchecks` de la liste des tables à traiter |
---|
29 | |
---|
30 | ### Version 1.4.3 |
---|
31 | |
---|
32 | - La détection des liens ne prenait qu'un champ à chaque fois, il réinitialisait le compte de liens à chaque champ testé. |
---|
33 | |
---|
34 | ### Version 1.4.2 |
---|
35 | |
---|
36 | * Dans le pipeline `post_edition` s'assurer que le second argument passé à `in_array` est bien un tableau |
---|
37 | |
---|
38 | ### Version 1.4.1 |
---|
39 | |
---|
40 | * Ne passer dans le pipeline post_edition avec action instituer que si le statut change |
---|
41 | * Interdire la duplication d'une tâche `genie_linkcheck_test_postedition` |
---|
42 | |
---|
43 | ### Version 1.4.0 |
---|
44 | |
---|
45 | * Permettre de filtrer les liens distants et internes |
---|
46 | * Permettre de filtrer par type d'objet (articles, rubriques...) |
---|
47 | * Ajouter un formulaire de recherche qui s'applique sur les urls (en faisant un `LIKE` mysql) |
---|
48 | * Permettre d'exporter en CSV uniquement la liste filtrée |
---|
49 | * Amélioration de la détection de liens |
---|
50 | * Déplacement du bloc sur les objets dans la colonne de gauche |
---|
51 | * Limiter l'affichage du blocs de liens sur les objets aux auteurs pouvant modifier l'objet |
---|
52 | * Déclaration plus moderne de la table linkcheck (dans `declarer_tables_objets_sql()`) |
---|
53 | * Utiliser les mêmes limitations de statuts entre la détection de liens générale et celle par le pipeline `post_edition`. Seuls sont conservés les liens sur des objets pouvant être prévisualisés. |
---|
54 | * Réparation de la détection des liens sur les rubriques |
---|
55 | * Ajout d'un champ `publie` à la fois sur la table `spip_linkchecks` et `spip_linkchecks_liens` testant si l'objet parent est publié. |
---|
56 | * Permettre de filtrer sur les liens "Visibles en ligne" (`publie == oui`) et "Non visibles en ligne" (`publie == non`) |
---|
57 | * Changement du coté des autorisations, dorénavant : |
---|
58 | * les administrateurs et les rédacteurs peuvent voir la page linkchecks |
---|
59 | * seuls les webmestres peuvent réinitialiser la base |
---|
60 | * les personnes autorisées à modifier un objet voient les liens contenus dans l'objet éditorial |
---|
61 | |
---|
62 | ## Versions 1.3.x |
---|
63 | |
---|
64 | ### Version 1.3.7 |
---|
65 | |
---|
66 | * Correction d'un bug mysql dans le parcours |
---|
67 | |
---|
68 | ### Version 1.3.6 |
---|
69 | |
---|
70 | * `.brussels` c'est 8 caractères, on en autorise 9 maintenant (cf [post sur spip-contrib](cf [post sur spip-contrib](https://contrib.spip.net/LinkCheck-verificateur-de-liens#forum489219) |
---|
71 | |
---|
72 | ### Version 1.3.5 |
---|
73 | |
---|
74 | * Accepter le caractère `@` dans une Url (cf [post sur spip-contrib](https://contrib.spip.net/LinkCheck-verificateur-de-liens#forum489219) |
---|
75 | * Limiter l'affichage de l'alerte au webmestre que s'il y a un lien mort ou malade, pas d'affichage s'il n'y a que des liens déplacés par exemple (cf [post sur contrib.spip](https://contrib.spip.net/LinkCheck-verificateur-de-liens#forum489219)) |
---|
76 | * présence du lien sur toutes les pages : ce message devient plus informatif en précisant le nombre de liens morts, malades et déplacés |
---|
77 | |
---|
78 | ### Version 1.3.4 |
---|
79 | |
---|
80 | * Accepter le caractère `+` dans une Url (cf [post sur spip-contrib](https://contrib.spip.net/LinkCheck-verificateur-de-liens#forum489212) |
---|
81 | * Détecter les liens sur les statuts d'objets que l'on peut prévisualiser et qui sont publiés et non pas seulement sur une sélection arbitraitre de statuts |
---|
82 | |
---|
83 | ### Version 1.3.3 |
---|
84 | |
---|
85 | * Accepter les caractères `:` et `,` dans une Url (cf [post sur spip-contrib](https://contrib.spip.net/LinkCheck-verificateur-de-liens#forum489081) |
---|
86 | * Accepter les accents dans le nom de domaine |
---|
87 | * Accepter des extensions de noms de domaine jusqu'à 7 caractères (du type `.website` par exemple) |
---|
88 | |
---|
89 | ### Version 1.3.1 |
---|
90 | |
---|
91 | * Ne plus analyser `spip_plugins`, ce n'est pas un objet édito du site réellement, [cf ce message sur contrib](https://contrib.spip.net/LinkCheck-verificateur-de-liens?var_mode=calcul#forum488940) |
---|
92 | * Petites améliorations de chaînes de langue |
---|
93 | |
---|
94 | ### Version 1.3.0 |
---|
95 | |
---|
96 | * Ne pas enlever le dernier `/` des urls pour éviter des liens déplacés pour rien. |
---|
97 | * Si plusieurs redirections successives, il se peut que l'entête `Location` montre un path local, on récupère donc le domaine |
---|
98 | * Bien supprimer `Location:`, `location:` et `content-location` des urls de redirection |
---|
99 | * Si la redirection mène sur notre site, afficher les liens internes en redirection, du coup on décode l'url avec `inc/urls` |
---|
100 | * Afficher correctement la redirection qu'elle soit interne ou externe dans les détails d'un lien |
---|
101 | |
---|
102 | ## Versions 1.2.x |
---|
103 | |
---|
104 | ### Version 1.2.3 |
---|
105 | |
---|
106 | * Mettre url et redirection dans la même case de tableau pour faciliter la lecture des liens |
---|
107 | * Ajouter un bouton de vérification sur chaque lien dans les listes |
---|
108 | * Utiliser un User Agent de navigateur lors de la récupération des entêtes pour éviter les anti-bots |
---|
109 | * En cas de redirection, on récupère le dernier `Location:` et non le premier (cas de redirections multiples) |
---|
110 | * En cas de redirection, on vérifie si la finale ne renvoie pas une 404 |
---|
111 | * Mettre l'url de redirection détectée dans l'export CSV |
---|
112 | * Améliorer les entêtes de colonnes dans l'export CSV |
---|
113 | * `linkcheck_en_url()` renvoie false si l'url fournie est vide |
---|
114 | |
---|
115 | |
---|
116 | |
---|
117 | ### Version 1.2.2 |
---|
118 | |
---|
119 | * Un peu de refactoring |
---|
120 | * Ajout d'un champ `redirection` dans la table `spip_linkckecks` afin de stocker l'adresse de redirection si s'en est une |
---|
121 | * Affichage des redirections dans les tableaux de liens |
---|
122 | * Utiliser les fonctions SPIP de `inc/distant` pour analyser les entêtes des liens au lieu d'avoir une fonction personnelle |
---|
123 | * Lors de l'analyse totale des liens, les traiter de 5 en 5 |
---|
124 | * Utiliser `set_time_limit()` pour essayer d'éviter de planter avec un max execution time |
---|
125 | * Mettre un timeout de 30 secondes pour la récupération des entêtes |
---|
126 | * Si c'est une redirection, analyser les entêtes afin de stocker l'URL finale dans le champ redirection |
---|
127 | |
---|
128 | ### Version 1.2.1 |
---|
129 | |
---|
130 | * Eviter que les tableaux ne cassent à cause de liens longs |
---|
131 | * Amélioration de l'affichage (utilisation de ```#BOITE_OUVRIR``` et ```#BOITE_FERMER```) |
---|
132 | * Une autorisation sur la configuration |
---|
133 | * Bonnes chaînes de langue dans les comptes de liens |
---|
134 | * Correction du mail envoyé, ajout de l'état des liens (malade, deplace ou mort) dans le message |
---|
135 | * Nécessite saisies version 2.2.3 pour la fonction ```saisie_balise_structure_formulaire``` (formalisme SPIP 3.1) |
---|
136 | * Bien supprimer les liens qui ne sont plus liés à aucun objet (dans le pipeline ```post_edition```) |
---|
137 | |
---|
138 | ### Version 1.2.0 |
---|
139 | |
---|
140 | * Refaire fonctionner le post-edition |
---|
141 | * Optimisation des images |
---|
142 | * Des id numériques seulement ça ne devrait pas exister, on préfixe par ```linkcheck_``` |
---|
143 | * Une class en minuscule ```linkchecks``` pour avoir l'icone du plugin tout le temps dans les listes d'objets |
---|
144 | * Un peu de CSS |
---|
145 | |
---|
146 | ## Versions 1.1.x |
---|
147 | |
---|
148 | ### Version 1.1.4 |
---|
149 | |
---|
150 | * Gérer singulier_ou_pluriel correctement |
---|
151 | * Un peu mieux coté CSS |
---|
152 | * Ajout du lien de doc |
---|
153 | * Passage en stable |
---|
154 | |
---|
155 | ### Version 1.1.3 |
---|
156 | |
---|
157 | * Petites vérifications dans la liste des champs à traiter |
---|
158 | * Petites vérifications dans les pipelines |
---|
159 | |
---|
160 | ### Version 1.1.2 |
---|
161 | |
---|
162 | * La recherche des liens n'est possible que par le webmestre, donc on se base sur webmestre pour les autorisations |
---|
163 | |
---|
164 | ### Version 1.1.1 |
---|
165 | |
---|
166 | * Réparer l'affichage dans affiche_milieu suite aux changements de ```linkcheck_tables_a_traiter()``` |
---|
167 | * Ne pas prendre en compte spip_paquets |
---|
168 | |
---|
169 | ### Version 1.1.0 |
---|
170 | |
---|
171 | * Compatibilité formalisme 3.1 du formulaire de configuration |
---|
172 | * Indentation |
---|
173 | * Petites améliorations |
---|
174 | * Code css dans une css de plugins |
---|
175 | * Chaîne de langue manquante |
---|
176 | * Revoir la liste des tables et champs parcourus, on prend toutes les tables dites "principale" sauf spip_syndic_articles (ça mériterait un pipeline ici). On prend tous les champs de type texte (tinytext, longtext, mediumtext, text) |
---|
177 | * Utiliser sql_allfetsel + foreach au lieu de sql_select + sql_fetch (moins lourd) |
---|
178 | * Pour les statuts inconnus des liens internes => malade au pire |
---|
179 | |
---|
180 | ## Versions 1.0.x |
---|
181 | |
---|
182 | ### Version 1.0.2 |
---|
183 | |
---|
184 | * Indentation et sécurité |
---|
185 | * Pas de fichier d'options, évite une inclusion inutile |
---|
186 | |
---|
187 | ### Version 1.0.1 |
---|
188 | |
---|
189 | Version d'origine |
---|
190 | |
---|
191 | ## Todo |
---|
192 | |
---|
193 | * Ajouter la possibilité de remplacer automatiquement (via un bouton) les liens déplacés par la redirection découverte |
---|