Browse Source

Ajout d’un petit plugin pour gérer principalement 2 dates sur les auteurs :

- la date de dernière connexion
- la date de pénultième connexion
Et également une date de "suivi d’activité", qui prend la date
de pénultième connexion, sauf si elle est déjà plus récente.
Une action permet de définir cette date de suivi d’activité.

Ça va servir pour Forum.
master
marcimat@rezo.net 4 years ago
commit
1a3ee1dc45
  1. 10
      .gitattributes
  2. 38
      action/maj_date_activite.php
  3. 70
      date_connexion_administrations.php
  4. 62
      date_connexion_pipelines.php
  5. 12
      lang/date_connexion_fr.php
  6. 17
      lang/paquet-date_connexion_fr.php
  7. 20
      paquet.xml
  8. BIN
      prive/themes/spip/images/date_connexion-128.png
  9. BIN
      prive/themes/spip/images/date_connexion-32.png
  10. BIN
      prive/themes/spip/images/date_connexion-64.png

10
.gitattributes

@ -0,0 +1,10 @@
* text=auto !eol
action/maj_date_activite.php -text
/date_connexion_administrations.php -text
/date_connexion_pipelines.php -text
lang/date_connexion_fr.php -text
lang/paquet-date_connexion_fr.php -text
/paquet.xml -text
prive/themes/spip/images/date_connexion-128.png -text
prive/themes/spip/images/date_connexion-32.png -text
prive/themes/spip/images/date_connexion-64.png -text

38
action/maj_date_activite.php

@ -0,0 +1,38 @@
<?php
/**
* Définir la date d’activité
*
* @plugin Date de connexion
* @copyright 2017
* @author Matthieu Marcillaud
* @licence GNU/GPL
* @package SPIP\Date_connexion\Action
*/
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
/**
* Action pour définir la date d’activité
*
* L'argument attendu est `2017-12-10 12:20:17` (une date quoi !)
*
* @param null|string $arg
* Clé des arguments. En absence utilise l'argument
* de l'action sécurisée.
* @return void
*/
function action_maj_date_activite_dist($arg = null) {
if (is_null($arg)) {
$securiser_action = charger_fonction('securiser_action', 'inc');
$arg = $securiser_action();
}
include_spip('inc/session');
$id_auteur = session_get('id_auteur');
if ($id_auteur) {
include_spip('action/editer_auteur');
auteur_modifier($id_auteur, array('date_suivi_activite' => $arg));
}
}

70
date_connexion_administrations.php

@ -0,0 +1,70 @@
<?php
/**
* Fichier gérant l'installation et désinstallation du plugin Date de connexion
*
* @plugin Date de connexion
* @copyright 2017
* @author Matthieu Marcillaud
* @licence GNU/GPL
* @package SPIP\Date_connexion\Installation
*/
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
/**
* Fonction d'installation et de mise à jour du plugin Date de connexion.
*
* @param string $nom_meta_base_version
* Nom de la meta informant de la version du schéma de données du plugin installé dans SPIP
* @param string $version_cible
* Version du schéma de données dans ce plugin (déclaré dans paquet.xml)
* @return void
**/
function date_connexion_upgrade($nom_meta_base_version, $version_cible) {
$maj = array();
$maj['create'] = array(
array('maj_tables', array('spip_auteurs')),
array('date_connexion_maj_dates'),
);
include_spip('base/upgrade');
maj_plugin($nom_meta_base_version, $version_cible, $maj);
}
/**
* Fonction de désinstallation du plugin Date de connexion.
*
* @param string $nom_meta_base_version
* Nom de la meta informant de la version du schéma de données du plugin installé dans SPIP
* @return void
**/
function date_connexion_vider_tables($nom_meta_base_version) {
sql_alter('TABLE spip_auteurs DROP date_connexion');
sql_alter('TABLE spip_auteurs DROP date_connexion_precedente');
sql_alter('TABLE spip_auteurs DROP date_suivi_activite');
effacer_meta($nom_meta_base_version);
}
/**
* Crée les valeurs par défaut des champs dates créées
*/
function date_connexion_maj_dates() {
sql_update(
'spip_auteurs',
array(
'date_connexion' => 'maj',
'date_connexion_precedente' => 'maj',
'date_suivi_activite' => 'maj',
'maj' => 'maj' // on évite une mise à jour de 'maj' !
),
array(
'date_connexion = ' . sql_quote('0000-00-00 00:00:00')
)
);
}

62
date_connexion_pipelines.php

@ -0,0 +1,62 @@
<?php
/**
* Utilisations de pipelines par Date de connexion
*
* @plugin Date de connexion
* @copyright 2017
* @author Matthieu Marcillaud
* @licence GNU/GPL
* @package SPIP\Date_connexion\Pipelines
*/
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
/**
* Déclaration des champs de date
* @param array $tables
* @return array
*/
function date_connexion_declarer_tables_objets_sql($tables) {
$tables['spip_auteurs']['field']['date_connexion'] = "datetime DEFAULT '0000-00-00 00:00:00' NOT NULL";
$tables['spip_auteurs']['field']['date_connexion_precedente'] = "datetime DEFAULT '0000-00-00 00:00:00' NOT NULL";
$tables['spip_auteurs']['field']['date_suivi_activite'] = "datetime DEFAULT '0000-00-00 00:00:00' NOT NULL";
return $tables;
}
/**
* Mise à jour des dates lors de la connexion de l’auteur
*
* La date de suivi d’activité prend la date de la pénultième connexion,
* sauf si la date de suivi d’activité est déjà plus récente.
*
* @param array $flux
* @return array
*/
function date_connexion_preparer_fichier_session($flux) {
if (!empty($flux['args']['row']['id_auteur'])) {
$id_auteur = $flux['args']['row']['id_auteur'];
$date_connexion = date('Y-m-d H:i:s');
$date_connexion_precedente = $flux['args']['row']['date_connexion'];
$date_suivi_activite = $flux['args']['row']['date_suivi_activite'];
if ($date_suivi_activite < $date_connexion_precedente) {
$date_suivi_activite = $date_connexion_precedente;
}
sql_updateq(
'spip_auteurs',
array(
'date_connexion' => $date_connexion,
'date_connexion_precedente' => $date_connexion_precedente,
'date_suivi_activite' => $date_suivi_activite,
),
array(
'id_auteur = ' . sql_quote($id_auteur)
)
);
$flux['args']['row']['date_connexion'] = $flux['data']['date_connexion'] = $date_connexion;
$flux['args']['row']['date_connexion_precedente'] = $flux['data']['date_connexion_precedente'] = $date_connexion_precedente;
$flux['args']['row']['date_suivi_activite'] = $flux['data']['date_suivi_activite'] = $date_suivi_activite;
}
return $flux;
}

12
lang/date_connexion_fr.php

@ -0,0 +1,12 @@
<?php
// This is a SPIP language file -- Ceci est un fichier langue de SPIP
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
$GLOBALS[$GLOBALS['idx_lang']] = array(
// D
'date_connexion_titre' => 'Date de connexion',
);

17
lang/paquet-date_connexion_fr.php

@ -0,0 +1,17 @@
<?php
// This is a SPIP language file -- Ceci est un fichier langue de SPIP
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
$GLOBALS[$GLOBALS['idx_lang']] = array(
// D
'date_connexion_description' => 'Ajoute 3 dates (automatiques) pour les auteurs :
- date_connexion : date de dernière connexion de l’auteur
- date_connexion_precedente : date de la pénultième connexion de l’auteur
- date_suivi_activite : date de précédente activité de l’auteur, c\'est à dire soit date_connexion_precedente, soit définie manuellement',
'date_connexion_nom' => 'Date de connexion',
'date_connexion_slogan' => 'Pouvoir utiliser des dates de connexion des auteurs',
);

20
paquet.xml

@ -0,0 +1,20 @@
<paquet
prefix="date_connexion"
categorie="date"
version="1.0.0"
etat="test"
compatibilite="[3.1.0;3.2.*]"
logo="prive/themes/spip/images/date_connexion-64.png"
documentation=""
schema="1.0.0"
>
<nom>Date de connexion</nom>
<!-- Pouvoir utiliser des dates de connexion des auteurs -->
<auteur>Matthieu Marcillaud</auteur>
<credit lien='https://www.iconfinder.com/icons/326483/access_clock_time_icon'>Google (logo)</credit>
<licence>GNU/GPL</licence>
<pipeline nom="declarer_tables_objets_sql" inclure="date_connexion_pipelines.php" />
<pipeline nom="preparer_fichier_session" inclure="date_connexion_pipelines.php" />
</paquet>

BIN
prive/themes/spip/images/date_connexion-128.png

After

Width: 128  |  Height: 128  |  Size: 6.0 KiB

BIN
prive/themes/spip/images/date_connexion-32.png

After

Width: 32  |  Height: 32  |  Size: 1.4 KiB

BIN
prive/themes/spip/images/date_connexion-64.png

After

Width: 64  |  Height: 64  |  Size: 3.1 KiB

Loading…
Cancel
Save