Browse Source

Déplacement des déclarations de bases, autorisations, taches périodiques des disparus, boucles et recherche dans le plugin sites. + déplacement de formulaires/ à la racine

spip-3.0
marcimat@rezo.net 12 years ago
parent
commit
9ce3f7a9bf
  1. 13
      .gitattributes
  2. 139
      base/sites.php
  3. 50
      base/sites_upgrade.php
  4. 0
      formulaires/configurer_sites.html
  5. 0
      formulaires/configurer_sites.php
  6. 0
      formulaires/editer_site.html
  7. 0
      formulaires/editer_site.php
  8. 0
      formulaires/editer_site_fonctions.php
  9. 36
      plugin.xml
  10. 61
      public/sites.php
  11. 22
      sites_autoriser.php
  12. 61
      sites_pipelines.php

13
.gitattributes vendored

@ -4,9 +4,16 @@ action/instituer_site.php -text
action/instituer_syndic.php -text
action/instituer_syndic_article.php -text
balise/formulaire_site.php -text
base/sites.php -text
base/sites_upgrade.php -text
exec/sites.php -text
exec/sites_edit.php -text
exec/sites_tous.php -text
formulaires/configurer_sites.html -text
formulaires/configurer_sites.php -text
formulaires/editer_site.html -text
formulaires/editer_site.php -text
formulaires/editer_site_fonctions.php -text
genie/syndic.php -text
images/actions-24.png -text
images/actions-filigrane-24.png -text
@ -24,11 +31,6 @@ prive/contenu/site.html -text
prive/contenu/syndic_article.html -text
prive/editer/site.html -text
prive/exec/controler_syndication.html -text
prive/formulaires/configurer_sites.html -text
prive/formulaires/configurer_sites.php -text
prive/formulaires/editer_site.html -text
prive/formulaires/editer_site.php -text
prive/formulaires/editer_site_fonctions.php -text
prive/infos/site.html -text
prive/infos/site_fonctions.php -text
prive/listes/controler_syndication.html -text
@ -39,6 +41,7 @@ prive/listes/syndic_articles_fonctions.php -text
prive/modeles/syndic-actions-moderer.html -text
prive/modeles/syndic_article.html -text
prive/style_prive_plugin_syndic.html -text
public/sites.php -text
/sites_autoriser.php -text
/sites_pipelines.php -text
urls/generer_url_ecrire_site.php -text

139
base/sites.php

@ -0,0 +1,139 @@
<?php
/***************************************************************************\
* SPIP, Systeme de publication pour l'internet *
* *
* Copyright (c) 2001-2009 *
* Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
* *
* Ce programme est un logiciel libre distribue sous licence GNU/GPL. *
* Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
\***************************************************************************/
/**
* Interfaces des tables syndic et syndic article
*
* @param array $interfaces
* @return array
*/
function sites_declarer_tables_interfaces($interfaces){
$interfaces['table_des_tables']['syndication']='syndic';
$interfaces['table_des_tables']['syndic']='syndic';
$interfaces['table_des_tables']['syndic_articles']='syndic_articles';
# ne sert plus ? verifier balise_URL_ARTICLE
$interfaces['exceptions_des_tables']['syndic_articles']['url_article']='url';
# ne sert plus ? verifier balise_LESAUTEURS
$interfaces['exceptions_des_tables']['syndic_articles']['lesauteurs']='lesauteurs';
$interfaces['exceptions_des_tables']['syndic_articles']['url_site']=array('syndic', 'url_site');
$interfaces['exceptions_des_tables']['syndic_articles']['nom_site']=array('syndic', 'nom_site');
$interfaces['table_date']['syndication'] = 'date';
$interfaces['table_date']['syndic_articles'] = 'date';
$interfaces['table_titre']['site'] = "nom_site AS titre, '' AS lang";
$interfaces['table_titre']['syndic'] = "nom_site AS titre, '' AS lang";
$interfaces['tables_jointures']['spip_syndic_articles'][]= 'syndic';
$interfaces['table_des_traitements']['NOM_SITE'][]= _TRAITEMENT_TYPO;
// Articles syndiques : passage des donnees telles quelles, sans traitement typo
// A noter, dans applique_filtres la securite et conformite XHTML de ces champs
// est assuree par safehtml()
foreach(array('TITRE','DESCRIPTIF','SOURCE') as $balise)
if (!isset($table_des_traitements[$balise]['syndic_articles']))
$table_des_traitements[$balise]['syndic_articles'] = '%s';
return $interfaces;
}
/**
* Table principale spip_syndic et spip_syndic_articles
*
* @param array $tables_principales
* @return array
*/
function sites_declarer_tables_principales($tables_principales){
$spip_syndic = array(
"id_syndic" => "bigint(21) NOT NULL",
"id_rubrique" => "bigint(21) DEFAULT '0' NOT NULL",
"id_secteur" => "bigint(21) DEFAULT '0' NOT NULL",
"nom_site" => "text DEFAULT '' NOT NULL",
"url_site" => "text DEFAULT '' NOT NULL",
"url_syndic" => "text DEFAULT '' NOT NULL",
"descriptif" => "text DEFAULT '' NOT NULL",
"maj" => "TIMESTAMP",
"syndication" => "VARCHAR(3) DEFAULT '' NOT NULL",
"statut" => "varchar(10) DEFAULT '0' NOT NULL",
"date" => "datetime DEFAULT '0000-00-00 00:00:00' NOT NULL",
"date_syndic" => "datetime DEFAULT '0000-00-00 00:00:00' NOT NULL",
"date_index" => "datetime DEFAULT '0000-00-00 00:00:00' NOT NULL",
"moderation" => "VARCHAR(3) DEFAULT 'non'",
"miroir" => "VARCHAR(3) DEFAULT 'non'",
"oubli" => "VARCHAR(3) DEFAULT 'non'",
"resume" => "VARCHAR(3) DEFAULT 'oui'"
);
$spip_syndic_key = array(
"PRIMARY KEY" => "id_syndic",
"KEY id_rubrique" => "id_rubrique",
"KEY id_secteur" => "id_secteur",
"KEY statut" => "statut, date_syndic",
);
$spip_syndic_join = array(
"id_syndic"=>"id_syndic",
"id_rubrique"=>"id_rubrique");
$spip_syndic_articles = array(
"id_syndic_article" => "bigint(21) NOT NULL",
"id_syndic" => "bigint(21) DEFAULT '0' NOT NULL",
"titre" => "text DEFAULT '' NOT NULL",
"url" => "VARCHAR(255) DEFAULT '' NOT NULL",
"date" => "datetime DEFAULT '0000-00-00 00:00:00' NOT NULL",
"lesauteurs" => "text DEFAULT '' NOT NULL",
"maj" => "TIMESTAMP",
"statut" => "varchar(10) DEFAULT '0' NOT NULL",
"descriptif" => "text DEFAULT '' NOT NULL",
"lang" => "VARCHAR(10) DEFAULT '' NOT NULL",
"url_source" => "TINYTEXT DEFAULT '' NOT NULL",
"source" => "TINYTEXT DEFAULT '' NOT NULL",
"tags" => "TEXT DEFAULT '' NOT NULL");
$spip_syndic_articles_key = array(
"PRIMARY KEY" => "id_syndic_article",
"KEY id_syndic" => "id_syndic",
"KEY statut" => "statut",
"KEY url" => "url");
$spip_syndic_articles_join = array(
"id_syndic_article"=>"id_syndic_article",
"id_syndic"=>"id_syndic");
$tables_principales['spip_syndic'] =
array('field' => &$spip_syndic, 'key' => &$spip_syndic_key, 'join' => &$spip_syndic_join);
$tables_principales['spip_syndic_articles'] =
array('field' => &$spip_syndic_articles, 'key' => &$spip_syndic_articles_key, 'join' => &$spip_syndic_articles_join);
return $tables_principales;
}
/**
* Declarer le surnom des syndic
*
* @param array $table
* @return array
*/
function sites_declarer_tables_objets_surnoms($table){
$table['syndic'] = 'syndic';
$table['site'] = 'syndic'; # hum hum
$table['syndic_article'] = 'syndic_article';
return $table;
}
?>

50
base/sites_upgrade.php

@ -0,0 +1,50 @@
<?php
/***************************************************************************\
* SPIP, Systeme de publication pour l'internet *
* *
* Copyright (c) 2001-2009 *
* Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
* *
* Ce programme est un logiciel libre distribue sous licence GNU/GPL. *
* Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
\***************************************************************************/
/**
* Installation/maj des tables syndic et syndic articles
*
* @param string $nom_meta_base_version
* @param string $version_cible
*/
function sites_upgrade($nom_meta_base_version,$version_cible){
$current_version = 0.0;
if ( (!isset($GLOBALS['meta'][$nom_meta_base_version]) )
|| (($current_version = $GLOBALS['meta'][$nom_meta_base_version])!=$version_cible)){
if ($current_version==0.0){
include_spip('base/create');
// creer les tables
creer_base();
// mettre les metas par defaut
$config = charger_fonction('config','inc');
$config();
ecrire_meta($nom_meta_base_version,$current_version=$version_cible);
}
}
}
/**
* Desinstallation/suppression des tables mots et groupes de mots
*
* @param string $nom_meta_base_version
*/
function sites_vider_tables($nom_meta_base_version) {
sql_drop_table("spip_syndic");
sql_drop_table("spip_syndic_articles");
effacer_meta($nom_meta_base_version);
}
?>

0
prive/formulaires/configurer_sites.html → formulaires/configurer_sites.html

0
prive/formulaires/configurer_sites.php → formulaires/configurer_sites.php

0
prive/formulaires/editer_site.html → formulaires/editer_site.html

0
prive/formulaires/editer_site.php → formulaires/editer_site.php

0
prive/formulaires/editer_site_fonctions.php → formulaires/editer_site_fonctions.php

36
plugin.xml

@ -6,12 +6,38 @@
<etat>test</etat>
<description>Sites et syndication dans SPIP (priv&eacute; et public)</description>
<prefix>sites</prefix>
<install>base/sites_upgrade.php</install>
<!-- boucles SYNDICATION et SYNDIC_ARTICLES -->
<fonctions>public/sites.php</fonctions>
<pipeline><nom>pre_syndication</nom><action></action></pipeline>
<pipeline><nom>post_syndication</nom><action></action></pipeline>
<pipeline>
<nom>autoriser</nom>
<inclure>sites_autoriser.php</inclure>
</pipeline>
<pipeline>
<nom>declarer_tables_principales</nom>
<inclure>base/sites.php</inclure>
</pipeline>
<pipeline>
<nom>declarer_tables_interfaces</nom>
<inclure>base/sites.php</inclure>
</pipeline>
<pipeline>
<nom>declarer_tables_objets_surnoms</nom>
<inclure>base/sites.php</inclure>
</pipeline>
<pipeline>
<nom>configurer_liste_metas</nom>
<inclure>sites_pipelines.php</inclure>
</pipeline>
<pipeline>
<nom>declarer_url_objets</nom>
<inclure>sites_pipelines.php</inclure>
@ -21,7 +47,15 @@
<nom>taches_generales_cron</nom>
<inclure>sites_pipelines.php</inclure>
</pipeline>
<pipeline>
<nom>optimiser_base_disparus</nom>
<inclure>sites_pipelines.php</inclure>
</pipeline>
<pipeline>
<nom>rechercher_liste_des_champs</nom>
<inclure>sites_pipelines.php</inclure>
</pipeline>
<bouton id='controler_syndication' parent='bando_publication' position="-1">
<icone>images/v1/site-16.png</icone>

61
public/sites.php

@ -0,0 +1,61 @@
<?php
/***************************************************************************\
* SPIP, Systeme de publication pour l'internet *
* *
* Copyright (c) 2001-2009 *
* Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
* *
* Ce programme est un logiciel libre distribue sous licence GNU/GPL. *
* Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
\***************************************************************************/
//
// <BOUCLE(SYNDICATION)>
//
// http://doc.spip.org/@boucle_SYNDICATION_dist
function boucle_SYNDICATION_dist($id_boucle, &$boucles) {
$boucle = &$boucles[$id_boucle];
$id_table = $boucle->id_table;
$mstatut = $id_table .'.statut';
// Restreindre aux elements publies
if (!isset($boucle->modificateur['criteres']['statut'])) {
if (!$GLOBALS['var_preview']) {
array_unshift($boucle->where,array("'='", "'$mstatut'", "'\\'publie\\''"));
} else
array_unshift($boucle->where,array("'IN'", "'$mstatut'", "'(\\'publie\\',\\'prop\\')'"));
}
return calculer_boucle($id_boucle, $boucles);
}
//
// <BOUCLE(SYNDIC_ARTICLES)>
//
// http://doc.spip.org/@boucle_SYNDIC_ARTICLES_dist
function boucle_SYNDIC_ARTICLES_dist($id_boucle, &$boucles) {
$boucle = &$boucles[$id_boucle];
$id_table = $boucle->id_table;
$mstatut = $id_table .'.statut';
// Restreindre aux elements publies, sauf critere contraire
if (isset($boucle->modificateur['criteres']['statut']) AND $boucle->modificateur['criteres']['statut']) {}
else if ($GLOBALS['var_preview'])
array_unshift($boucle->where,array("'IN'", "'$mstatut'", "'(\\'publie\\',\\'prop\\')'"));
else {
$jointure = array_search("spip_syndic", $boucle->from);
if (!$jointure) {
fabrique_jointures($boucle, array(array($id_table, array('spip_syndic'), 'id_syndic')), true, $boucle->show, $id_table);
$jointure = array_search('spip_syndic', $boucle->from);
}
array_unshift($boucle->where,array("'='", "'$mstatut'", "'\\'publie\\''"));
$boucle->where[]= array("'='", "'$jointure" . ".statut'", "'\\'publie\\''");
}
return calculer_boucle($id_boucle, $boucles);
}
?>

22
sites_autoriser.php

@ -27,4 +27,26 @@ function autoriser_controle_syndic_bouton_dist($faire, $type, $id, $qui, $opt){
return (sql_countsel('spip_syndic_articles'));
}
// Autoriser a modifier un site
// http://doc.spip.org/@autoriser_site_modifier_dist
function autoriser_site_modifier_dist($faire, $type, $id, $qui, $opt) {
if ($qui['statut'] == '0minirezo' AND !$qui['restreint'])
return true;
$t = sql_fetsel("id_rubrique,statut", "spip_syndic", "id_syndic=".sql_quote($id));
return ($t
AND autoriser('voir','rubrique',$t['id_rubrique'])
AND ($t['statut'] == 'prop'
OR autoriser('modifier', 'rubrique', $t['id_rubrique'])
)
);
}
// Autoriser a voir un site $id_syndic
// http://doc.spip.org/@autoriser_site_voir_dist
function autoriser_site_voir_dist($faire, $type, $id, $qui, $opt) {
return autoriser_site_modifier_dist($faire, $type, $id, $qui, $opt);
}
?>

61
sites_pipelines.php

@ -10,6 +10,21 @@
* Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
\***************************************************************************/
/**
* Definir les meta de configuration liee aux syndications et sites
*
* @param array $metas
* @return array
*/
function sites_configurer_liste_metas($metas){
$metas['activer_sites'] = 'non';
$metas['proposer_sites'] = 0;
$metas['activer_syndic'] = 'oui';
$metas['moderation_sites'] = 'non';
return $metas;
}
/**
* Permet des calculs de noms d'url sur les sites.
@ -40,4 +55,50 @@ function sites_taches_generales_cron($taches_generales){
return $taches_generales;
}
/**
* Optimiser la base de donnee en supprimant les liens orphelins
*
* @param int $n
* @return int
*/
function sites_optimiser_base_disparus($flux){
$n = &$flux['data'];
sql_delete("spip_syndic", "maj < $mydate AND statut = 'refuse'");
# les articles syndiques appartenant a des sites effaces
$res = sql_select("S.id_syndic AS id",
"spip_syndic_articles AS S
LEFT JOIN spip_syndic AS syndic
ON S.id_syndic=syndic.id_syndic",
"syndic.id_syndic IS NULL");
$n+= optimiser_sansref('spip_syndic_articles', 'id_syndic', $res);
return $flux;
}
/**
* Definir la liste des champs de recherche sur la table syndic_articles
*
* @param array $liste
* @return array
*/
function sites_rechercher_liste_des_champs($liste){
$liste['syndic_article'] = array(
'titre' => 5, 'descriptif' => 1
);
return $liste;
}
?>

Loading…
Cancel
Save