/trunk/jrest/services/MigrationWiki.php |
---|
4,15 → 4,10 |
const dry_run = false; |
public function __construct($config, $demarrer_session= true) { |
parent::__construct($config, $demarrer_session); |
define('NL',"\n"); |
} |
private function executerRequeteManip($requete, $mode_fetch = false) { |
// Fonction de commodité pour afficher les requetes au lieu de les executer |
if (self::dry_run) { |
echo '<pre>'.str_replace('),','),'.NL, $requete).'</pre>'; |
echo str_replace('),','),'.NL, $requete); |
return true; |
} else { |
if($mode_fetch) { |
25,17 → 20,20 |
private function executerRequete($requete, $mode_fetch = false) { |
if (self::dry_run) { |
echo '<pre>'.str_replace('),','),'.NL, $requete).'</pre>'.NL.NL; |
echo '<pre>'.str_replace('),','),'.NL, $requete).'</pre>'; |
} |
return $this->bdd->query($requete)->fetchAll($mode_fetch); |
$retour = $this->bdd->query($requete)->fetchAll($mode_fetch); |
return $retour; |
} |
public function __construct($config, $demarrer_session= true) { |
parent::__construct($config, $demarrer_session); |
define('NL',"\n"); |
} |
public function getElement($uid){ |
$nom_admin = $this->config['appli']['nom_admin_wiki']; |
$mail_admin = $this->config['appli']['adresse_admin_wiki']; |
$pass_admin = $this->config['appli']['pass_admin_wiki']; |
exit; |
$requete_projets_wikinis = 'SELECT * FROM gen_wikini'; |
$wikinis_projets = $this->executerRequete($requete_projets_wikinis, PDO::FETCH_ASSOC); |
42,16 → 40,15 |
foreach($wikinis_projets as $wikini) { |
// test sur un wiki |
/*if($wikini['gewi_code_alpha_wikini'] != 'bibliobota') { |
if($wikini['gewi_code_alpha_wikini'] != 'relais') { |
continue; |
}*/ |
} |
$base = $wikini['gewi_bdd_nom']; |
$prefixe = $wikini['gewi_table_prefix']; |
$chemin_wiki_sur_site = $this->config['appli']['chemin_wikis_integres']; |
//$chemin_wiki = $wikini['gewi_chemin']; |
$chemin_wiki = '/home/aurelien/web/wikini/'.$wikini['gewi_code_alpha_wikini']; |
$chemin_wiki = $wikini['gewi_chemin']; |
echo NL.'Traitement du wiki '.$chemin_wiki.NL; |
echo NL.$chemin_wiki.NL; |
63,23 → 60,24 |
$chemin_base_wiki_defaut = $this->config['appli']['chemin_wiki_defaut']; |
$nom_admin = $this->config['appli']['nom_admin_wiki']; |
$mail_admin = $this->config['appli']['adresse_admin_wiki']; |
$pass_admin = $this->config['appli']['pass_admin_wiki']; |
$infos_admin = array('name' =>$nom_admin, 'email' => $mail_admin, 'password' => $pass_admin); |
if(!$this->verifierPresenceTableTriple($base, $prefixe)) { |
//if(!$this->verifierPresenceTableTriple($base, $prefixe)) { |
echo 'migration du wiki '.$wikini['gewi_code_alpha_wikini'].NL; |
$this->creerTableTriple($base, $prefixe); |
$this->ajouterUtilisateurAdmin($base,$prefixe, $infos_admin); |
// $this->creerTableTriple($base, $prefixe); |
// $this->ajouterUtilisateurAdmin($base,$prefixe, $infos_admin); |
$this->copierFichiersWikini($chemin_base_wiki_defaut, $chemin_wiki); |
$this->changerVersionWakkaConfig($chemin_wiki); |
echo 'migration du wiki '.$wikini['gewi_code_alpha_wikini'].' effectuée '.NL.NL.NL.NL; |
} else { |
echo 'wiki dejà à jour '.$wikini['gewi_code_alpha_wikini'].NL.NL.NL.NL; |
//} else { |
// echo 'wiki dejà à jour '.$wikini['gewi_code_alpha_wikini'].NL.NL.NL.NL; |
//} |
} |
$this->ajoutPageFormatees($chemin_wiki, $infos_admin); |
} |
} |
private function verifierPresenceTableTriple($base, $prefixe) { |
150,7 → 148,7 |
$this->executerRequeteManip($requete_suppression_si_admin_present); |
$requete_creation_admin = "insert into ".$base.'.'.$prefixe."users set ". |
$requete_creation_admin = "INSERT INTO ".$base.'.'.$prefixe."users SET ". |
"signuptime = now(), ". |
"name = '".$infos_admin['name']."', ". |
"email = '".$infos_admin['email']."', ". |
161,9 → 159,9 |
private function changerVersionWakkaConfig($chemin_wikini) { |
if(file_exists($chemin_wikini.'wakka.config.php')) { |
if(file_exists($chemin_wikini.'/wakka.config.php')) { |
$contenu_wakka_config = file_get_contents($chemin_wikini.'wakka.config.php'); |
$contenu_wakka_config = file_get_contents($chemin_wikini.'/wakka.config.php'); |
$contenu_wakka_config_maj = str_replace('"wikini_version" => "0.4.3"','"wikini_version" => "0.5.0"',$contenu_wakka_config); |
$contenu_wakka_config_maj = str_replace("'wikini_version' => '0.4.3'","'wikini_version' => '0.5.0'",$contenu_wakka_config_maj); |
170,104 → 168,28 |
if(self::dry_run) { |
echo 'Wakka Config mis à jour '.$contenu_wakka_config_maj.NL; |
} else { |
//file_put_contents($chemin_wikini.'wakka.config.php', $contenu_wakka_config_maj); |
file_put_contents($chemin_wikini.'/wakka.config.php', $contenu_wakka_config_maj); |
} |
echo 'Changement de la version de wikini '.NL; |
} else { |
echo 'Attention ! le fichier '.$chemin_wikini.'wakka.config.php n\'existe pas '.NL; |
echo 'Attention ! le fichier '.$chemin_wikini.'/wakka.config.php n\'existe pas '.NL; |
} |
} |
private function copierFichiersWikini($chemin_base_wiki_defaut, $chemin_wiki_dest) { |
echo 'copie de '.$chemin_base_wiki_defaut.' vers '.$chemin_wiki_dest.NL; |
if(self::dry_run) { |
echo 'copie de '.$chemin_base_wiki_defaut.' vers '.$chemin_wiki_dest.NL; |
$copie_recursive = true; |
} else { |
if(trim($chemin_base_wiki_defaut) != '/' && trim($chemin_wiki_dest) != '/') { |
$copie_recursive = shell_exec( " cp -Rf -a ".$chemin_base_wiki_defaut."* ".$chemin_wiki_dest." 2>&1 " ); |
echo " cp -Rf -a ".$chemin_base_wiki_defaut."* ".$chemin_wiki_dest."/ 2>&1 "; |
$copie_recursive = shell_exec( " cp -Rf -a ".$chemin_base_wiki_defaut."* ".$chemin_wiki_dest."/ 2>&1 " ); |
} |
} |
return $copie_recursive; |
} |
private function ajoutPageFormatees($chemin_wikini, $utilisateur) { |
$chemin_base_wiki_defaut = $this->config['appli']['chemin_wiki_defaut']; |
require_once($chemin_base_wiki_defaut.'wakka_class.php'); |
$nom_admin = $this->config['appli']['nom_admin_wiki']; |
$chemin_wikini = rtrim($chemin_wikini,'/'); |
require_once($chemin_wikini.'/wakka.config.php'); |
// la variable $wakkaConfig est contenu dans le fichier wakka.config.php |
$config = $wakkaConfig; |
$wiki = new Wiki($config); |
$wiki->SetGroupACL("admins", $nom_admin); |
$wiki->setUser($utilisateur); |
//insertion des pages de documentation et des pages standards |
$d = dir($chemin_base_wiki_defaut.'/setup/doc/'); |
while ($doc = $d->read()){ |
if (is_dir($doc) || substr($doc, -4) != '.txt') {continue;} |
$pagecontent = implode ('', file($chemin_base_wiki_defaut.'/setup/doc/'.$doc)); |
$pagecontent = mb_convert_encoding($pagecontent,'UTF-8','ISO-8859-15'); |
if ($doc=='_root_page.txt'){ |
$pagename = $config["root_page"]; |
}else{ |
$pagename = substr($doc,0,strpos($doc,'.txt')); |
} |
$base = $config['mysql_database']; |
$requete_existence_page = "Select tag from ".$base.".".$config['table_prefix']."pages where tag='$pagename'"; |
$existence_page = $this->executerRequete($requete_existence_page); |
if (is_array($existence_page) && count($existence_page) > 0) { |
echo 'la page '.$pagename.' existe déjà '.NL; |
} else { |
echo 'Ajout de la page '.$pagename.NL; |
$requete_maj_pages_anciennes = "UPDATE ".$base.".".$config['table_prefix']."pages ". |
"SET ". |
"latest = 'N'". |
"WHERE tag = '$pagename'"; |
$reussite = $this->executerRequeteManip($requete_maj_pages_anciennes); |
$requete_insertion_page = "INSERT INTO ".$base.".".$config['table_prefix']."pages ". |
"SET tag = '$pagename', ". |
"body = ".$this->bdd->quote($pagecontent).", ". |
"user = '".$nom_admin."', ". |
"owner = '".$nom_admin."', " . |
"time = now(), ". |
"latest = 'Y'"; |
$reussite = $this->executerRequeteManip($requete_insertion_page); |
if(!$reussite) { |
echo 'echec de l\'ajout de la page '.$pagename.NL; |
} else { |
// mise à jour des liens entre pages |
$wiki->SetPage($wiki->LoadPage($pagename,"",0)); |
$wiki->ClearLinkTable(); |
$wiki->StartLinkTracking(); |
$wiki->TrackLinkTo($pagename); |
$wiki->StopLinkTracking(); |
$wiki->WriteLinkTable(); |
$wiki->ClearLinkTable(); |
} |
} |
} |
} |
} |
?> |
?> |
/trunk/jrest/services/Resume.php |
---|
30,12 → 30,11 |
'(SELECT psu_id_projet FROM projet_statut_utilisateurs'. |
' WHERE psu_id_utilisateur = '.$this->bdd->quote($id_utilisateur).')'. |
' GROUP BY ps_ce_projet'. |
' ORDER BY ps_msg_derniere_semaine DESC'. |
' LIMIT 0,5'; |
' ORDER BY ps_msg_derniere_semaine DESC'; |
$resume = array(); |
$resume['titre'] = 'Vos projets les plus actifs'; |
$resume['titre'] = 'Mes projets les plus actifs'; |
$resume['lien_appli'] = '<a href="http://www.tela-botanica.org/page:liste_projets"> Voir tous les projets </a>'; |
$projets = $this->bdd->query($requete_projets)->fetchAll(); |
/trunk/jrest/services/Documents.php |
---|
34,7 → 34,7 |
$resume = array(); |
$resume['titre'] = 'Vos derniers documents déposés'; |
$resume['titre'] = 'Mes derniers documents déposés'; |
//$resume['lien_appli'] = '<a href="http://www.tela-botanica.org/page:liste_projets"> Voir tous les projets </a>'; |
$docs = $this->bdd->query($requete_docs_projets)->fetchAll(); |
46,6 → 46,8 |
$infos_projet = $this->obtenirInformationsProjet($doc['pd_ce_projet']); |
//print_r($infos_projet); |
$nom_projet = $infos_projet[0]['p_titre']; |
$date_formatee = strftime( "%d/%m/%Y" , strtotime( $doc['pd_date_de_mise_a_jour'] ) ); |
/trunk/jrest/services/ProjetService.php |
---|
86,28 → 86,6 |
return $listes_projets; |
} |
protected function obtenirListesExternesAssocieesAuProjet($id_projet) { |
$requete_liste_projets = 'SELECT * FROM agora '. |
'WHERE plle_id_liste IN '. |
'(SELECT plle_id_liste from projet_lien_liste_externe '. |
'WHERE plle_id_projet='.$this->bdd->quote($id_projet).')' ; |
try { |
$listes_projets = $this->bdd->query($requete_liste_projets)->fetchAll(PDO::FETCH_ASSOC); |
} catch (PDOException $e) { |
Log::getInstance()->ajouterEntree('projet','Fichier: '.$e->getFile().' Ligne: '.$e->getLine().' '.$e->getMessage()); |
return array(); |
} |
if(!$listes_projets || count($listes_projets) <= 0) { |
return array(); |
} |
return $listes_projets; |
} |
protected function supprimerInscriptionAListeProjet($id_utilisateur, $id_liste) { |
$requete_suppression_liste = 'DELETE FROM projet_inscription_liste '. |
140,7 → 118,6 |
try { |
$est_abonne = '0' ; |
// TODO: externaliser l'adresse |
$xml_abonne = new SimpleXMLElement(file_get_contents('http://vpopmail.tela-botanica.org/est_abonne.php?domaine=tela-botanica.org&liste='.$nom_liste.'&mail='.$mail)) ; |
$est_abonne = $xml_abonne[0] ; |
162,12 → 139,10 |
} |
protected function inscriptionListe($nom_liste, $mail) { |
// TODO: externaliser l'adresse |
return $inscription_abonne = file_get_contents('http://vpopmail.tela-botanica.org/ajout_abonne.php?domaine=tela-botanica.org&liste='.$nom_liste.'&mail='.$mail) ; |
} |
protected function desinscriptionListe($nom_liste, $mail) { |
// TODO: externaliser l'adresse |
return $suppression_abonne = file_get_contents('http://vpopmail.tela-botanica.org/suppression_abonne.php?domaine=tela-botanica.org&liste='.$nom_liste.'&mail='.$mail) ; |
} |
} |
/trunk/jrest/services/ProjetSyndication.php |
---|
New file |
0,0 → 1,342 |
<?php |
/** |
* Service fournissant des informations concernant PROJET au format RSS1, RSS2 ou ATOM. |
* Encodage en entrée : utf8 |
* Encodage en sortie : utf8 |
* |
* @author Grégoire Duché <gregoire@tela-botanica.org> |
* @license GPL v3 <http://www.gnu.org/licenses/gpl.txt> |
* @license CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt> |
* @version $Id: CoelSyndication.php 381 2010-05-17 17:10:37Z jpm $ |
* @copyright 2009 |
*/ |
class ProjetSyndication extends ProjetService { |
private $format = null; |
private $service = null; |
private $squelette = null; |
private $squelette_dossier = null; |
private $squelette_diff = null; |
private $flux = array(); |
/** |
* Méthode appelée avec une requête de type GET. |
*/ |
public function getElement($param = array()) { |
// Initialisation des variables |
$info = array(); |
$contenu = ''; |
// Pré traitement des paramètres |
$pour_bdd = false; |
$p = $this->traiterParametresUrl(array('service', 'format'), $param, $pour_bdd); |
// Récupération de la liste des flux |
$this->chargerListeDesFlux(); |
// Chargement du bon type de service demandé |
if (isset($p['service'])) { |
$this->service = strtolower($p['service']); |
$methode = $this->getNomMethodeService(); |
if (method_exists($this, $methode)) { |
if ($this->service != 'liste_des_flux') { |
if (isset($p['format']) && preg_match('/^(?:rss1|rss2|atom)$/i', $p['format'])) { |
// Multiplication par deux de la limite car nous récupérons deux lignes par item |
$this->limit = $this->limit*2; |
// Mise en minuscule de l'indication du format |
$this->format = strtolower($p['format']); |
// Définition du fichier squelette demandé |
$this->squelette_dossier = dirname(__FILE__).DIRECTORY_SEPARATOR.'squelettes'.DIRECTORY_SEPARATOR; |
$this->squelette = $this->squelette_dossier.$this->format.'.tpl.xml'; |
$this->squelette_diff = $this->squelette_dossier.'diff.tpl.html'; |
} else { |
$this->format = ''; |
$this->messages[] = "Le service Projet Syndication nécessite d'indiquer en second paramètre le format : rss1, rss2 ou atom."; |
} |
} |
// Récupération du contenu à renvoyer |
$contenu = $this->$methode(); |
} else { |
$this->messages[] = "Le type d'information demandé '$this->service' n'est pas disponible."; |
} |
} else { |
$this->messages[] = "Le service Projet Syndication nécessite d'indiquer en premier paramètre le type d'information demandé."; |
} |
// Envoie sur la sortie standard |
$encodage = 'utf-8'; |
$mime = $this->getTypeMime(); |
$formatage_json = $this->getFormatageJson(); |
$this->envoyer($contenu, $mime, $encodage, $formatage_json); |
} |
private function getUrlServiceBase() { |
$url_service = $this->config['coel']['urlBaseJrest'].'CoelSyndication/'.$this->service.'/'.$this->format; |
return $url_service; |
} |
private function getNomMethodeService() { |
$methode = ''; |
$service_formate = str_replace(' ', '', ucwords(implode(' ', explode('_', $this->service)))); |
$methode = 'getService'.$service_formate; |
return $methode; |
} |
private function getTypeMime() { |
$mime = ''; |
switch ($this->format) { |
case 'atom' : |
$mime = 'application/atom+xml'; |
break; |
case 'rss1' : |
case 'rss2' : |
$mime = 'application/rss+xml'; |
break; |
default: |
$mime = 'text/html'; |
} |
return $mime; |
} |
private function getFormatageJson() { |
$json = false; |
switch ($this->service) { |
case 'liste_des_flux' : |
$json = true; |
break; |
default: |
$json = false; |
} |
return $json; |
} |
private function getFlux($nom) { |
$nom = strtolower($nom); |
return isset($this->flux[$nom]) ? $this->flux[$nom] : array(); |
} |
private function setFlux($nom, $titre, $description) { |
$url_base = $this->config['appli']['urlBaseJrest'].'ProjetSyndication/'; |
$formats = array('atom', 'rss2', 'rss1'); |
$flux = array(); |
foreach ($formats as $format) { |
$url = $url_base.$nom.'/'.$format; |
$flux[$format] = $url; |
} |
$this->flux[$nom] = array('titre' => $titre, 'description' => $description, 'urls' => $flux); |
} |
private function chargerListeDesFlux() { |
$this->setFlux('actifs', 'Flux de syndication des projets les plus actifs', |
'Ce flux fournit des informations sur les projets les plus actifs de l\'espace projet'); |
$this->setFlux('derniers_messages', 'Flux de syndication des derniers messages', |
'Ce flux fournit des informations sur les derniers messages de l\'espace projet'); |
} |
private function getServiceListeDesFlux() { |
return $this->flux; |
} |
private function getServiceActifs() { |
// Construction de la requête |
$requete_projets = ' select p_id, p_titre as titre, p_resume as description, pl_id_liste, plle_id_liste, p_avoir_document, ps_nombre_inscrit, ps_pourcent,'. |
' p_wikini, ps_doc_derniere_semaine, p_avoir_document, ps_nombre_inscrit_derniere_semaine, '. |
' ps_nombre_membre_yahoo, ps_msg_derniere_semaine, ps_modifwiki_derniere_semaine, p_en_dormance from'. |
' projet left join projet_lien_liste on p_id=pl_id_projet'. |
' left join projet_lien_liste_externe on p_id=plle_id_projet'. |
' left join projet_statistiques on p_id=ps_ce_projet and ps_dernier=1'. |
' WHERE p_en_dormance = 0'. |
' group by p_id order by ps_pourcent desc'; |
$elements = $this->executerRequete($requete_projets); |
// Création du contenu |
$contenu = $this->executerService('cpr_nom', $elements); |
return $contenu; |
} |
private function getServiceDerniersMessages() { |
/*include_once("lib/ezmlmAccessObject.class.php"); |
$xml_parser = &new ezmlmAccessObject('list_info', 'tela-botanica.org', |
'determination_plantes', 'fr', 'http://localhost') ; |
$xml_parser->load(); |
ob_start(); |
$resultat = $xml_parser->parse() ; |
$calendrier = ob_get_contents(); |
ob_end_clean();*/ |
} |
private function executerRequete($requete) { |
try { |
$infos = $this->bdd->query($requete)->fetchAll(PDO::FETCH_ASSOC); |
if ($infos === false) { |
$this->messages[] = "La requête a retourné aucun résultat."; |
} |
} catch (PDOException $e) { |
$this->messages[] = sprintf($this->getTxt('sql_erreur'), $e->getFile(), $e->getLine(), $e->getMessage()); |
} |
return $infos; |
} |
private function executerService($champ_titre, $elements) { |
// Prétraitement des données |
$donnees = $this->construireDonneesCommunesAuFlux($elements); |
foreach ($elements as $element) { |
//$xml = $this->getXmlHisto($element); |
//$enrg = $this->getTableauDepuisXmlHisto($xml); |
//$diff = $this->getDiffInfos($element); |
//$diff['differences'] = $this->getDiff($element); |
//$diff_html = (!is_null($diff['differences'])) ? Coel::traiterSquelettePhp($this->squelette_diff, $diff) : ''; |
$item = $this->construireDonneesCommunesAuxItems($element); |
$item['titre'] = $this->creerTitre($champ_titre, $element, $enrg); |
$item['guid'] = sprintf($this->config['appli']['guid'], 'projet', $element['p_id']); |
$item['lien'] = $this->config['appli']['url_base_projet'].'?id_projet='.urlencode($element['p_id']); |
$item['description'] = "<h4>".$element['ps_nombre_inscrit'].' inscrits - '.$element['ps_msg_derniere_semaine'].' nouveaux messages</h4>'; |
$item['description'] .= '<p>'.$this->creerDescription($element, $enrg).'</p>'; |
$item['description'] .= $diff_html; |
$item['description'] = $this->nettoyerTexte($item['description']); |
$item['description_encodee'] = htmlspecialchars($item['description']); |
$donnees['items'][] = $item; |
} |
// Création du contenu à partir d'un template PHP |
$contenu = ProjetService::traiterSquelettePhp($this->squelette, $donnees); |
return $contenu; |
} |
private function creerTitre($champ, $element, $enrg) { |
$titre = ''; |
if (isset($element['titre'])) { |
$titre = $element['titre']; |
} else if (isset($element[$champ])) { |
$titre = $element[$champ]; |
} else if (isset($enrg[$champ])) { |
$titre = $enrg[$champ]; |
} |
$titre = $this->nettoyerTexte($titre); |
return $titre; |
} |
private function creerDescription($element, $enrg) { |
$description = ''; |
if (isset($element['description'])) { |
$description = strip_tags($element['description']); |
} |
return $description; |
} |
private function nettoyerNomChamps($infos) { |
$sortie = array(); |
foreach ($infos as $champ => $valeur) { |
if (preg_match('/^__(.+)$/', $champ, $match)) { |
$sortie[$match[1]] = $valeur; |
} else { |
$sortie[$champ] = $valeur; |
} |
} |
return $sortie; |
} |
private function traiterInfosPrecedentes($infos_courantes, $infos_precedentes) { |
$infos_precedentes_traitees = array(); |
foreach ($infos_precedentes as $champ => $valeur) { |
if ($champ == 'cmhl_date_modification') { |
$infos_precedentes_traitees['date_prec'] = $valeur; |
} else if ($champ == 'cmhl_enregistrement') { |
$infos_precedentes_traitees['enrg_prec'] = $valeur; |
} else if (preg_match('/^__(.+)$/', $champ, $match)) { |
$infos_precedentes_traitees[$match[1].'_prec'] = $valeur; |
} |
} |
$sortie = array_merge($infos_courantes, $infos_precedentes_traitees); |
return $sortie; |
} |
private function nettoyerTexte($txt) { |
$txt = preg_replace('/&(?!amp;)/i', '&', $txt, -1); |
return $txt; |
} |
private function getMessageModif($item) { |
$message = $item['etat'].' le '.$item['date_maj_simple'].' par '.$item['modifier_par'].' depuis l\'IP '.$item['ip']; |
return $message; |
} |
private function construireDonneesCommunesAuxItems($info) { |
$item = array(); |
$date_modification_timestamp = strtotime($info['cmhl_date_modification']); |
$item['date_maj_simple'] = strftime('%A %d %B %Y à %H:%M', $date_modification_timestamp); |
$item['date_maj_RSS'] = date(DATE_RSS, $date_modification_timestamp); |
$item['date_maj_ATOM'] = date(DATE_ATOM, $date_modification_timestamp); |
$item['date_maj_W3C'] = date(DATE_W3C, $date_modification_timestamp); |
$item['guid'] = $info['cmhl_id_historique_ligne']; |
$item['cle'] = $info['cmhl_cle_ligne']; |
$item['ip'] = $info['cmhl_ip']; |
$item['modifier_par'] = $info['modifier_par']; |
$item['etat'] = isset($info['cmhl_ce_etat']) ? $this->getTexteEtat($info['cmhl_ce_etat']) : ''; |
return $item; |
} |
private function getTexteEtat($code) { |
$etat = ''; |
switch ($code) { |
case '1' : |
$etat = 'Ajouté'; |
break; |
case '2' : |
$etat = 'Modifié'; |
break; |
case '3' : |
$etat = 'Supprimé'; |
break; |
default : |
$etat = '!Problème!'; |
$e = "Le champ cmhl_ce_etat possède une valeur innatendue : $code"; |
$this->messages[] = $e; |
} |
return $etat; |
} |
private function construireDonneesCommunesAuFlux($infos) { |
$donnees = $this->getFlux($this->service); |
$donnees['guid'] = $this->getUrlServiceBase(); |
$donnees['lien_service'] = $this->creerUrlService(); |
$donnees['lien_projet'] = $this->config['appli']['url_base_projet']; |
$donnees['editeur'] = $this->config['coel']['editeur']; |
$derniere_info_en_date = reset($infos); |
$date_modification_timestamp = strtotime($derniere_info_en_date['cmhl_date_modification']); |
$donnees['date_maj_RSS'] = date(DATE_RSS, $date_modification_timestamp); |
$donnees['date_maj_ATOM'] = date(DATE_ATOM, $date_modification_timestamp); |
$donnees['date_maj_W3C'] = date(DATE_W3C, $date_modification_timestamp); |
$donnees['annee_courante'] = date('Y'); |
$donnees['generateur'] = 'COEL - Jrest'; |
preg_match('/([0-9]+)/', '$Revision: 381 $', $match); |
$donnees['generateur_version'] = $match[1]; |
return $donnees; |
} |
private function creerUrlService() { |
$url_service = $this->getUrlServiceBase(); |
if (isset($this->start) || isset($this->limit)) { |
$arguments = array(); |
if (isset($this->start) && isset($_GET['start'])) { |
$arguments[] = 'start='.$this->start; |
} |
if (isset($this->limit) && isset($_GET['limit'])) { |
$arguments[] = 'limit='.($this->limit/2); |
} |
if (count($arguments) > 0) { |
$url_service .= '?'.implode('&', $arguments); |
} |
} |
return $url_service; |
} |
} |
/trunk/jrest/services/squelettes/rss1.tpl.xml |
---|
New file |
0,0 → 1,45 |
<?php echo '<?xml version="1.0" encoding="UTF-8"?>'."\n";?> |
<!DOCTYPE rdf:RDF [ |
<!ENTITY % HTMLlat1 PUBLIC |
"-//W3C//ENTITIES Latin 1 for XHTML//EN" |
"http://www.w3.org/TR/xhtml1/DTD/xhtml-lat1.ent"> |
%HTMLlat1; |
]> |
<rdf:RDF |
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" |
xmlns:dc="http://purl.org/dc/elements/1.1/" |
xmlns="http://purl.org/rss/1.0/"> |
<channel rdf:about="<?=$guid?>"> |
<title><?=$titre?></title> |
<link><?=$lien_coel?></link> |
<description><?=$description?></description> |
<dc:publisher><?=$editeur?></dc:publisher> |
<dc:date><?=$date_maj_W3C?></dc:date> |
<?php if (isset($items)) : ?> |
<items> |
<rdf:Seq> |
<?php foreach ($items as $item) : ?> |
<rdf:li resource="<?=$item['guid']?>" /> |
<?php endforeach; ?> |
</rdf:Seq> |
</items> |
<?php endif; ?> |
</channel> |
<?php if (isset($items)) : ?> |
<?php foreach ($items as $item) : ?> |
<item rdf:about="<?=$item['guid']?>"> |
<title><?=$item['titre']?></title> |
<link><?=$item['lien']?></link> |
<description><?=$item['description_encodee']?></description> |
<dc:date><?=$item['date_maj_W3C']?></dc:date> |
</item> |
<?php endforeach; ?> |
<?php endif; ?> |
</rdf:RDF> |
/trunk/jrest/services/squelettes/rss2.tpl.xml |
---|
New file |
0,0 → 1,22 |
<?php echo '<?xml version="1.0" encoding="UTF-8"?>'."\n";?> |
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"> |
<channel> |
<title><?=$titre?></title> |
<link><?=$lien_projet?></link> |
<atom:link href="<?=$lien_service?>" rel="self" type="application/rss+xml" /> |
<description><?=$description?></description> |
<?php if (isset($items)) : ?> |
<?php foreach ($items as $item) : ?> |
<item> |
<guid><?=$item['guid']?></guid> |
<title><?=$item['titre']?></title> |
<link><?=$item['lien']?></link> |
<description><?=$item['description_encodee']?></description> |
<pubDate><?=$item['date_maj_RSS']?></pubDate> |
</item> |
<?php endforeach; ?> |
<?php endif; ?> |
</channel> |
</rss> |
/trunk/jrest/services/squelettes/diff.tpl.html |
---|
New file |
0,0 → 1,36 |
<table style="border:1px solid black;border-collapse:collapse;" summary="Différences entre les données du <?=$date_ancienne?> et du <?=$date_nouvelle?>."> |
<caption style="text-align:left;font-weight:bold;">Différences</caption> |
<thead style="border:1px solid black;"> |
<tr> |
<th rowspan="2" style="border:1px dotted;">Champ</th> |
<th rowspan="2" style="border:1px dotted;">Type</th> |
<th <?=(($etat == 'M') ? 'colspan="2"' : '');?> style="border:1px dotted;">Valeur</th> |
</tr> |
<tr> |
<?php if ($etat == 'M') : ?> |
<th style="border:1px dotted;">Ancienne (<?=$date_ancienne?>)</th> |
<?php endif; ?> |
<th style="border:1px dotted;">Nouvelle (<?=$date_nouvelle?>)</th> |
</tr> |
</thead> |
<tbody> |
<?php foreach ($differences as $champ => $diff) : ?> |
<?php if ($diff['type'] == 'A') : |
$couleur = CFC; |
elseif ($diff['type'] == 'M') : |
$couleur = FFC; |
elseif ($diff['type'] == 'S') : |
$couleur = F99; |
endif; ?> |
<tr style="background-color:#<?=$couleur?>;"> |
<td style="border:1px dotted;"><?=$champ?></td> |
<td style="text-align:center;border:1px dotted;"><?=$diff['type_txt']?></td> |
<?php if ($etat == 'M') : ?> |
<td style="border:1px dotted;"><?=$diff['ancien']?></td> |
<?php endif; ?> |
<td style="border:1px dotted;"><?=$diff['nouveau']?></td> |
</tr> |
<?php endforeach; ?> |
</tbody> |
</table> |
/trunk/jrest/services/squelettes/atom.tpl.xml |
---|
New file |
0,0 → 1,33 |
<?php echo '<?xml version="1.0" encoding="UTF-8"?>'."\n";?> |
<feed xmlns="http://www.w3.org/2005/Atom"> |
<title><?=$titre?></title> |
<link href="<?=$lien_coel?>" rel="alternate" type="text/html" hreflang="fr" /> |
<link href="<?=$lien_service?>" rel="self" type="application/atom+xml"/> |
<updated><?=$date_maj_ATOM?></updated> |
<author> |
<name><?=$editeur?></name> |
</author> |
<id><?=$guid?></id> |
<rights>Copyright (c) <?=$annee_courante?>, <?=$editeur?></rights> |
<generator uri="<?=$lien_coel?>" version="<?=$generateur_version?>"><?=$generateur?></generator> |
<?php if (isset($items)) : ?> |
<?php foreach ($items as $item) : ?> |
<entry> |
<id><?=$item['lien']?></id> |
<title><?=$item['titre']?></title> |
<link href="<?=$item['lien']?>"/> |
<updated><?=$item['date_maj_ATOM']?></updated> |
<author><name><?=$item['modifier_par']?></name></author> |
<content type="xhtml" xml:lang="fr"> |
<div xmlns="http://www.w3.org/1999/xhtml"> |
<?=$item['description'];?> |
</div> |
</content> |
</entry> |
<?php endforeach; ?> |
<?php endif; ?> |
</feed> |