Retour : Page Principale > sommaire applications générales

Nouveau site Web www.tela-botanica.org


https://beta.tela-botanica.org/preprod

But(s)

Le site Web de Tela Botanica.
Remplace l'ancien site (Papyrus / SPIP).
Assure également le backend d'annuaire en remplacement des tables annuaire_* de la base de données tela_prod_v4.

Il n'y a pas de logiciel "Site Web", mais une collection de logiciels pour les différentes parties :


Infos


Code source

Il n'y a pas de dépôt de code source unique.


  • Langage(s) : PHP, Javascript, CSS (SASS), HTML

Environnement de développement

La complexité de l'environnement justifie l'automatisation, pour ça on utilise VVV comme base pour créer une machine virtuelle avec vagrant et virtualbox qui automatise l'installation et la configuration de chaque appli de l'écosystème Tela.
Voir le dépot GitHub pour plus d'infos : https://github.com/telabotanica/vvv-wordpress-tela-botanica

Installations


beta (test)
beta (preprod)
beta (pretest)
prod (Ă  migrer sur Sycomore - 2017-08-10)

Les plugins maison

Trois des plugins développés pour le site sont réutilisables et peuvent rendre service à d'autres utilisateurs de Wordpress : bp-members-directory-actions, bp-moderate-private-messages et bp-moderate-group-creation. Il serait bien de les redistribuer sur le dépôt de plugins de Wordpress afin d'en faire profiter la communauté.

bp-moderate-group-creation

Code source : https://github.com/telabotanica/bp-moderate-group-creation
Page sur le dépôt de plugins Wordpress : - pas encore
Soumet la création de groupes Buddypress ("projets") à la modération par les super-admin.
Voir le README pour plus de détails.

bp-members-directory-actions

Code source : https://github.com/telabotanica/bp-members-directory-actions
Page sur le dépôt de plugins Wordpress : - pas encore
Ajoute un système d'actions par lot à la page "membres" de Buddypress.
Voir le README pour plus de détails.

bp-moderate-private-messages

Code source : https://github.com/telabotanica/bp-moderate-private-messages
Page sur le dépôt de plugins Wordpress : - pas encore
Modère les messages privés Buddypress, au delà de n destinataires.
Voir le README pour plus de détails.

wp-plugin-tb-sso

Code source : https://github.com/telabotanica/wp-plugin-tb-sso
Synchronise l'Ă©tat du SSO de Tela Botanica au login Wordpress.
Voir le README pour plus de détails.

ep-plugin

Voir plugin Espace Projets.

Les plugins forkés

Ces deux plugins ont été forkés pour résoudre un problème d'affichage des libellés de champs de profil étendu Buddypress (apostrophes échappées par des antislashes). Le véritable problème se trouve dans le plugin payant wpml; ses développeurs en ont pris acte (2017-08) et vont le corriger dans une prochaine version. Une fois ceci fait, les forks ci-dessous ne devraient plus être nécessaires.

buddypress-multilingual

Code source : https://github.com/telabotanica/buddypress-multilingual
Forké pour pallier le problème d'apostrophes échappées.

bp-profile-search

Code source : https://github.com/telabotanica/bp-profile-search
Forké pour pallier le problème d'apostrophes échappées; modifications réintégrées (le fork n'est plus nécessaire).

problème avec WPML

Le site est tombé les 23 et 24 juillet ainsi que les 10 et 21 août car la table icl_strings_pages passait d'environ 35000 lignes à 3/4 millions. Si on désactive le plugin, les fiches eFlore et la création d'actualités ne fonctionnent plus. Le 21 août, on a enlevé la possibilité de mettre en anglais les pages actualités et profil, à surveiller.
- Si on désactive la langue anglaise, eFlore ne fonctionne plus.
- Si on met une requête fausse ou on enlève les droits d'écriture sur la table, plus d'insert mais du log php
- On ne peut pas mettre de lock sur une table mariadb

pour supprimer les événements d'une année

wp post delete --force $(wp post list --post_type=post --format=ids --year=2019 --category_name=expositions,congres-conferences,sorties-de-terrain,stages-ateliers  --posts_per_page=10000)


calcul du nombre d'articles par catégorie

SELECT term_id, count(*) FROM `posts` join (SELECT term_id, name, object_id FROM `term_relationships` join terms on term_id = term_taxonomy_id WHERE `term_taxonomy_id` in (SELECT term_id FROM `term_taxonomy` WHERE `parent` in (19,25, 30))) c on object_id = ID WHERE `post_type` = "post" and year(`post_date`) = 2022 and post_status = "publish" group by term_id;

additionner 20,21,22,23,24 pour actu générale, 26,27,28,29 pour événements, 31,32,39 pour offre d'emploi

calcul du nombre de rédacteurs par catégorie

SELECT name, count( distinct post_author) FROM `posts` join (SELECT term_id, name, object_id FROM `term_relationships` join terms on term_id = term_taxonomy_id WHERE `term_taxonomy_id` in (SELECT term_id FROM `term_taxonomy` WHERE `parent` in (19,25, 30))) c on object_id = ID WHERE `post_type` = "post" and year(`post_date`) = 2020 and post_status = "publish" group by name


Approximation du nombre de structures qui publient (nb d'auteurs qui publient offres d'emploi et événement)
SELECT distinct post_author FROM `posts` WHERE `ID` in (SELECT `object_id` FROM `term_relationships` WHERE `term_taxonomy_id`> 25 and `term_taxonomy_id` < 33) and year(post_date) = 2021 and post_status = "publish"


Approximation du nombre d'auteurs ayant publié des "posts" par année :
select count(*) as nb, u.user_nicename, u.user_email
from posts
join users u on posts.post_author = u.ID
where post_status = 'publish' 
and post_type = 'post'
and YEAR(post_date) = 2021
group by post_author
order by nb desc



Approximation du nombre d'auteurs ayant publié des "actu" par année (hors offre d'emploi et événements) :
select u.user_nicename, count(*) as nb
from posts p
join users u on p.post_author = u.ID
 join (SELECT term_id, name, object_id FROM `term_relationships` join terms on term_id = term_taxonomy_id WHERE `term_taxonomy_id` in (SELECT term_id FROM `term_taxonomy` WHERE `parent` = 19)) c on object_id = p.ID 
where post_status = 'publish' 
and post_type = 'post'
and YEAR(post_date) = 2023
group by user_nicename
order by nb desc;


Approximation (manque certains utilisateurs ayant un code différent) du nombre d'inscrits par dept en Occitanie
SELECT value, count(distinct user_id) FROM `bp_xprofile_data` where field_id = 592 and value in ("09 Ariège", "09 Arièges", "09","11", "11 Aude","12", "12 Aveyron", "34", "34 Hérault","30", "30 Gard", "31", "31 Haute-Garonne", "32", "32 Gers", "46", "46 Lot", "48", "48 Lozère","66", "66 Pyrénées-Orientales", "65", "65 Hautes-Pyrénées", "81", "81 Tarn", "82", "82 Tarn-et-Garonne") group by value;


Liste des pings sur les posts existants par année
SELECT count(*), YEAR(`comment_date`) as year FROM `comments` WHERE `comment_type` LIKE 'pingback' group by year order by year desc


Espaces projets créés par années :
SELECT count(*) as nb, t.name FROM `term_taxonomy` tt join terms t on tt.term_id = t.term_id join term_relationships tr on tt.term_taxonomy_id = tr.term_taxonomy_id join bp_groups bg on bg.id = tr.object_id WHERE `taxonomy` LIKE 'bp_group_type' and YEAR(bg.date_created) = 2021 group by t.term_id


- Installation d'un cron qui vide la table toutes les nuits ou d'un trigger qui vide la table tous les 100 000 lignes

Documentation


Ressources