J'ai toujours un peu regretté l'absence d'une fonctionnalité permettant de surveiller un topic que l'on n'a pas lancé sur le forum alsacreations.
Je vous propose un script php qui, exécuté automatiquement avec une tâche cron, peut faire ce travail:
Il faut donc créer un fichier "data" dans le même répertoire. Les données sont enregistrées de cette manière:
La date est la date du dernier message posté, ou la date d'ajout du topic dans liste de surveillance si aucun message n'a été posté depuis.
Je parle d'adresse partielle pour définir ce qui se trouve après le premier slash qui suit l'extension du domaine. Par exemple (comme ici):
Pour remplir plus facilement ce fichier, vous pouvez utiliser ce script:
Ajouter un topic:
Supprimer un topic:
Lister les topic surveillés:
Je l'avais fait pour moi initialement mais je me suis dit que ça pourrait en intéresser d'autres
Modifié par juliendargelos (01 Jul 2014 - 02:21)
Je vous propose un script php qui, exécuté automatiquement avec une tâche cron, peut faire ce travail:
<?php
$url='http://forum.alsacreations.com/';
$mail='ADRESSE_MAIL';
$path_file='./data';
$content_file='';
if($stream_file=fopen($path_file,'r')) {
while($line=fgets($stream_file)) {
$data=explode(':',preg_replace('#\n#','',$line));
$last_date=$data[0];
if($content=@file_get_contents($url.$data[1])) {
if(preg_match_all('#<time datetime="(\d{4})-(\d{2})-(\d{2})T(\d{2}):[#black][/#](\d{2}):[#black][/#](\d{2})">#',$content,$dates)) {
$last_date=$dates[1][count($dates[1])-1];
$last_date.=$dates[2][count($dates[2])-1];
$last_date.=$dates[3][count($dates[3])-1];
$last_date.=$dates[4][count($dates[4])-1];
$last_date.=$dates[5][count($dates[5])-1];
$last_date.=$dates[6][count($dates[6])-1];
if($last_date>$data[0]) {
echo 'Update: '.$data[1]."\n";
mail($mail,'Alsacreations: Nouveau message','Un nouveau message a été posté sur ce topic alsacreations: '.$url.$data[1].'#lastofpage');
}
}
}
$content_file.=$last_date.':'.$data[1]."\n";
}
ftruncate($stream_file,0);
fputs($stream_file,$content_file);
fclose($stream_file);
}
?>
Il faut donc créer un fichier "data" dans le même répertoire. Les données sont enregistrées de cette manière:
AAAAMMJJHHMMSS:ADRESSE_PARTIELLE_DU_TOPIC
AAAAMMJJHHMMSS:ADRESSE_PARTIELLE_DU_TOPIC
AAAAMMJJHHMMSS:ADRESSE_PARTIELLE_DU_TOPIC
La date est la date du dernier message posté, ou la date d'ajout du topic dans liste de surveillance si aucun message n'a été posté depuis.
Je parle d'adresse partielle pour définir ce qui se trouve après le premier slash qui suit l'extension du domaine. Par exemple (comme ici):
topic-9-72407-1-Surveiller-des-topics-sur-alsacreations.html
Pour remplir plus facilement ce fichier, vous pouvez utiliser ce script:
<?php
if(!isset($argv[1])) {
echo 'Veuillez indiquer une directive'."\n";
exit;
}
$url='http://forum.alsacreations.com/';
$path_file='./data';
$content_file=file_get_contents($path_file);
if($stream_file=fopen($path_file,'a+')) {
if($argv[1]=='list') readfile($path_file);
elseif($argv[1]=='delete' && isset($argv[2])) {
if(!preg_match('#^http://#',$argv[2])) $argv[2]='http://'.$argv[2];
$argv[2]=preg_replace('#^'.preg_quote($url).'#','',$argv[2]);
if(preg_match('#^\d{14}:'.preg_quote($argv[2]).'$#m',$content_file)) {
$content_file=preg_replace('#\d{14}:'.preg_quote($argv[2]).'\n#','',$content_file);
ftruncate($stream_file,0);
fputs($stream_file,$content_file);
echo 'Topic supprimé'."\n";
}
else echo 'Ce topic n\'est pas surveillé'."\n";
}
else {
if(!preg_match('#^http://#',$argv[1])) $argv[1]='http://'.$argv[1];
$argv[1]=preg_replace('#^'.preg_quote($url).'#','',$argv[1]);
if($content=@file_get_contents($url.$argv[1])) {
if(!preg_match('#^\d{14}:'.preg_quote($argv[1]).'$#m',$content_file)) {
date_default_timezone_set('Europe/Paris');
fputs($stream_file,date('YmdHis').':'.$argv[1]."\n");
echo 'Topic ajouté'."\n";
}
else echo 'Ce topic est déjà surveillé'."\n";
}
else echo 'Ce topic n\'existe pas'."\n";
}
fclose($stream_file);
}
?>
Ajouter un topic:
php script-alerte-donnees.php ADRESSE_COMPLÈTE_DU_TOPIC
Supprimer un topic:
php script-alerte-donnees.php delete ADRESSE_COMPLÈTE_DU_TOPIC
Lister les topic surveillés:
php script-alerte-donnees.php list
Je l'avais fait pour moi initialement mais je me suis dit que ça pourrait en intéresser d'autres
Modifié par juliendargelos (01 Jul 2014 - 02:21)