Browse Source

feat(dev-tools): Mise en place phpcs+phpstan (#4833)

Co-authored-by: JamesRezo <james@rezo.net>
Reviewed-on: spip/sites#4833
Co-authored-by: JamesRezo <jamesrezo@noreply.git.spip.net>
Co-committed-by: JamesRezo <jamesrezo@noreply.git.spip.net>
master
JamesRezo 11 months ago
parent
commit
51ce1ac1bd
  1. 7
      .gitignore
  2. 65
      action/editer_site.php
  3. 22
      action/exporter_bookmarks.php
  4. 58
      action/importer_bookmarks_netscape.php
  5. 23
      action/importer_bookmarks_opml.php
  6. 15
      action/instituer_syndic_article.php
  7. 6
      action/purger_site.php
  8. 7
      action/syndiquer_site.php
  9. 14
      balise/formulaire_site.php
  10. 178
      base/sites.php
  11. 7
      composer.json
  12. 32
      formulaires/configurer_sites.php
  13. 47
      formulaires/editer_site.php
  14. 4
      formulaires/editer_site_fonctions.php
  15. 14
      formulaires/exporter_sites.php
  16. 27
      formulaires/importer_sites.php
  17. 12
      formulaires/regler_moderation_site.php
  18. 17
      formulaires/site.php
  19. 132
      genie/syndic.php
  20. 73
      inc/feedfinder.php
  21. 43
      inc/site.php
  22. 3
      inc/syndic.php
  23. 4
      liens/implicite_site.php
  24. 15
      phpcs.xml.dist
  25. 897
      phpstan-baseline.neon
  26. 12
      phpstan.neon.dist
  27. 4
      puce_statut/site.php
  28. 37
      sites_administrations.php
  29. 10
      sites_autoriser.php
  30. 10
      sites_fonctions.php
  31. 2
      sites_ieconfig.php
  32. 138
      sites_pipelines.php
  33. 353
      syndic/atomrss.php

7
.gitignore vendored

@ -0,0 +1,7 @@
/vendor/
/composer.phar
/composer.lock
/phpcs.xml
/phpstan.neon
/.php_cs.cache
/.php_cs.txt

65
action/editer_site.php

@ -16,7 +16,7 @@
* @package SPIP\Sites\Edition
*/
if (!defined("_ECRIRE_INC_VERSION")) {
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
@ -48,7 +48,8 @@ function action_editer_site_dist($arg = null) {
if (!$id_syndic = intval($arg)) {
$id_syndic = site_inserer(_request('id_parent'));
if ($logo = _request('logo')
if (
$logo = _request('logo')
and $format_logo = _request('format_logo')
) {
include_spip('inc/distant');
@ -60,12 +61,12 @@ function action_editer_site_dist($arg = null) {
}
if (!$id_syndic) {
return array(0, '');
return [0, ''];
}
$err = site_modifier($id_syndic);
return array($id_syndic, $err);
return [$id_syndic, $err];
}
@ -88,46 +89,48 @@ function site_inserer($id_rubrique, $set = null) {
// Si id_rubrique vaut 0 ou n'est pas definie, creer le site
// dans la premiere rubrique racine
if (!$id_rubrique = intval($id_rubrique)) {
$id_rubrique = sql_getfetsel("id_rubrique", "spip_rubriques", "id_parent=0", '', '0+titre,titre', "1");
$id_rubrique = sql_getfetsel('id_rubrique', 'spip_rubriques', 'id_parent=0', '', '0+titre,titre', '1');
}
// Le secteur a la creation : c'est le secteur de la rubrique
$id_secteur = sql_getfetsel("id_secteur", "spip_rubriques", "id_rubrique=" . intval($id_rubrique));
$id_secteur = sql_getfetsel('id_secteur', 'spip_rubriques', 'id_rubrique=' . intval($id_rubrique));
// eviter un null si la rubrique n'existe pas (rubrique -1 par exemple)
if (!$id_secteur) {
$id_secteur = 0;
}
$champs = array(
$champs = [
'id_rubrique' => $id_rubrique,
'id_secteur' => $id_secteur,
'statut' => 'prop',
'date' => date('Y-m-d H:i:s')
);
];
if ($set) {
$champs = array_merge($champs, $set);
}
// Envoyer aux plugins
$champs = pipeline('pre_insertion',
array(
'args' => array(
$champs = pipeline(
'pre_insertion',
[
'args' => [
'table' => 'spip_syndic',
),
],
'data' => $champs
)
]
);
$id_syndic = sql_insertq("spip_syndic", $champs);
pipeline('post_insertion',
array(
'args' => array(
$id_syndic = sql_insertq('spip_syndic', $champs);
pipeline(
'post_insertion',
[
'args' => [
'table' => 'spip_syndic',
'id_objet' => $id_syndic
),
],
'data' => $champs
)
]
);
return $id_syndic;
@ -161,13 +164,13 @@ function site_modifier($id_syndic, $set = null) {
// white list
objet_info('site', 'champs_editables'),
// black list
array('statut', 'id_parent', 'date'),
['statut', 'id_parent', 'date'],
// donnees eventuellement fournies
$set
);
// resyndiquer si un element de syndication modifie
if ($t = sql_fetsel('url_syndic,syndication,resume', 'spip_syndic', "id_syndic=" . intval($id_syndic))) {
if ($t = sql_fetsel('url_syndic,syndication,resume', 'spip_syndic', 'id_syndic=' . intval($id_syndic))) {
foreach ($t as $k => $v) {
if (isset($c[$k]) and $v != $c[$k]) {
$resyndiquer = true;
@ -176,34 +179,38 @@ function site_modifier($id_syndic, $set = null) {
}
// Si le site est publie, invalider les caches et demander sa reindexation
$t = sql_getfetsel("statut", "spip_syndic", "id_syndic=" . intval($id_syndic));
$t = sql_getfetsel('statut', 'spip_syndic', 'id_syndic=' . intval($id_syndic));
$invalideur = $indexation = false;
if ($t == 'publie') {
$invalideur = "id='site/$id_syndic'";
$indexation = true;
}
if ($err = objet_modifier_champs('site', $id_syndic,
array(
if (
$err = objet_modifier_champs(
'site',
$id_syndic,
[
'data' => $set,
'nonvide' => array('nom_site' => _T('info_sans_titre')),
'nonvide' => ['nom_site' => _T('info_sans_titre')],
'invalideur' => $invalideur,
'indexation' => $indexation
),
$c)
],
$c
)
) {
return $err;
}
if ($resyndiquer and sql_getfetsel('syndication', 'spip_syndic', "id_syndic=" . intval($id_syndic)) !== 'non') {
if ($resyndiquer and sql_getfetsel('syndication', 'spip_syndic', 'id_syndic=' . intval($id_syndic)) !== 'non') {
$syndiquer_site = charger_fonction('syndiquer_site', 'action');
$syndiquer_site($id_syndic);
}
// Modification de statut, changement de rubrique ?
$c = collecter_requests(array('date', 'statut', 'id_parent'), array(), $set);
$c = collecter_requests(['date', 'statut', 'id_parent'], [], $set);
include_spip('action/editer_objet');
$err = objet_instituer('site', $id_syndic, $c);

22
action/exporter_bookmarks.php

@ -10,7 +10,7 @@
* Pour plus de détails voir le fichier COPYING.txt ou l'aide en ligne. *
\***************************************************************************/
if (!defined("_ECRIRE_INC_VERSION")) {
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
@ -22,19 +22,21 @@ function action_exporter_bookmarks_dist($arg = null) {
}
if (autoriser('exporter', '_sites')) {
list($id_parent, $exporter_publie_seulement, $exporter_avec_mots_cles) = explode("-", $arg);
$statut = ($exporter_publie_seulement ? array('publie') : array('prop', 'publie'));
list($id_parent, $exporter_publie_seulement, $exporter_avec_mots_cles) = explode('-', $arg);
$statut = ($exporter_publie_seulement ? ['publie'] : ['prop', 'publie']);
$f = "bookmarks-" . date('Y-m-d') . ".html";
$f = 'bookmarks-' . date('Y-m-d') . '.html';
header('Content-Type: text/html');
header("Content-Disposition: attachment; filename=\"$f\";");
header("Content-Transfer-Encoding: 8bit");
header('Content-Transfer-Encoding: 8bit');
// fix for IE catching or PHP bug issue
header("Pragma: public");
header("Expires: 0"); // set expiration time
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
echo recuperer_fond("prive/transmettre/bookmarks",
array('statut' => $statut, 'id_parent' => intval($id_parent), 'tags' => $exporter_avec_mots_cles));
header('Pragma: public');
header('Expires: 0'); // set expiration time
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
echo recuperer_fond(
'prive/transmettre/bookmarks',
['statut' => $statut, 'id_parent' => intval($id_parent), 'tags' => $exporter_avec_mots_cles]
);
}
}

58
action/importer_bookmarks_netscape.php

@ -10,7 +10,7 @@
* Pour plus de détails voir le fichier COPYING.txt ou l'aide en ligne. *
\***************************************************************************/
if (!defined("_ECRIRE_INC_VERSION")) {
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
@ -29,11 +29,11 @@ function action_importer_bookmarks_netscape_dist($fichier_ok, $id_parent, $impor
}
function bookmarks_netscape_fast_parse(&$contenu) {
$out = array();
$out = [];
#var_dump(">>".substr($contenu,0,200));
$po = stripos($contenu, "<h3", 4);
$pf = stripos($contenu, "</dl>");
$po = stripos($contenu, '<h3', 4);
$pf = stripos($contenu, '</dl>');
while ($po or $pf) {
#var_dump("$po:$pf");
if ($po > 0 and $po < $pf) {
@ -41,7 +41,6 @@ function bookmarks_netscape_fast_parse(&$contenu) {
$contenu = substr($contenu, $po);
$out['sub'][] = bookmarks_netscape_fast_parse($contenu);
} else {
$out['content'] .= substr($contenu, 0, $pf);
$contenu = substr($contenu, $pf + 5);
#var_dump("<<".substr($contenu,0,200));
@ -49,8 +48,8 @@ function bookmarks_netscape_fast_parse(&$contenu) {
return $out;
}
$po = stripos($contenu, "<h3");
$pf = stripos($contenu, "</dl>");
$po = stripos($contenu, '<h3');
$pf = stripos($contenu, '</dl>');
}
$out['content'] = bookmarks_extract_links($out['content']);
@ -58,23 +57,23 @@ function bookmarks_netscape_fast_parse(&$contenu) {
}
function bookmarks_extract_links($contenu) {
$out = array();
$contenu = str_ireplace("<DT>", "<dt>", $contenu);
$contenu = explode("<dt>", $contenu);
$out = [];
$contenu = str_ireplace('<DT>', '<dt>', $contenu);
$contenu = explode('<dt>', $contenu);
$h3 = array_shift($contenu);
$h3 = extraire_balise($h3, "h3");
$h3 = extraire_balise($h3, 'h3');
$out['titre'] = strip_tags($h3);
foreach ($contenu as $item) {
$link = array();
$link = [];
if ($a = extraire_balise($item, 'a')) {
$link['url'] = extraire_attribut($a, 'href');
$link['titre'] = strip_tags($a);
$link['date'] = extraire_attribut($a, "add_date");
$link['descriptif'] = "";
$link['date'] = extraire_attribut($a, 'add_date');
$link['descriptif'] = '';
if ($p = stripos($item, "<dd>")) {
if ($p = stripos($item, '<dd>')) {
$link['descriptif'] = textebrut(substr($item, $p));
}
$out['links'][] = $link;
@ -89,17 +88,21 @@ function bookmarks_insert($tree, $id_parent, $importer_statut_publie, $importer_
include_spip('action/editer_site');
$nb = 0;
if (count($tree['content']['links'])
if (
count($tree['content']['links'])
or isset($tree['sub'])
) {
$titre = ($tree['content']['titre'] ? $tree['content']['titre'] : _T('info_sans_titre'));
$id_rubrique = sql_getfetsel('id_rubrique', 'spip_rubriques',
'id_parent=' . intval($id_parent) . " AND titre=" . sql_quote($titre));
if (!$id_rubrique
$id_rubrique = sql_getfetsel(
'id_rubrique',
'spip_rubriques',
'id_parent=' . intval($id_parent) . ' AND titre=' . sql_quote($titre)
);
if (
!$id_rubrique
and $id_rubrique = rubrique_inserer($id_parent)
) {
rubrique_modifier($id_rubrique, array('titre' => $titre));
rubrique_modifier($id_rubrique, ['titre' => $titre]);
}
if ($id_rubrique) {
$statut = 'prop';
@ -108,18 +111,21 @@ function bookmarks_insert($tree, $id_parent, $importer_statut_publie, $importer_
}
$now = time();
foreach ($tree['content']['links'] as $link) {
if (!$id_syndic = sql_getfetsel('id_syndic',
'spip_syndic',
'id_rubrique=' . intval($id_rubrique) . " AND url_site=" . sql_quote($link['url']))
if (
!$id_syndic = sql_getfetsel(
'id_syndic',
'spip_syndic',
'id_rubrique=' . intval($id_rubrique) . ' AND url_site=' . sql_quote($link['url'])
)
) {
$id_syndic = site_inserer($id_rubrique);
$set = array(
$set = [
'url_site' => $link['url'],
'nom_site' => $link['titre'],
'date' => date('Y-m-d H:i:s', $link['date'] ? $link['date'] : $now),
'statut' => $statut,
'descriptif' => $link['descriptif']
);
];
#echo "creation site $id_syndic ".$set['url_site']." <br />";
site_modifier($id_syndic, $set);
$nb++;

23
action/importer_bookmarks_opml.php

@ -63,7 +63,7 @@ function opml_startElement($xp, $element, $attr) {
function opml_endElement($xp, $element) {
global $blogs, $folder, $inOpmlfolder, $inOpmlItem;
if (strcasecmp($element, "outline") === 0) {
if (strcasecmp($element, 'outline') === 0) {
if (!$inOpmlItem && $inOpmlfolder) {
// end of folder element!
$inOpmlfolder = false;
@ -91,11 +91,15 @@ function bookmarks_opml_insert($tree, $id_parent, $importer_statut_publie, $impo
$statut = 'publie';
}
$now = time();
if (!$id_syndic = sql_getfetsel('id_syndic', 'spip_syndic',
'id_rubrique=' . intval($id_parent) . " AND url_site=" . sql_quote($item['HTMLURL']))
if (
!$id_syndic = sql_getfetsel(
'id_syndic',
'spip_syndic',
'id_rubrique=' . intval($id_parent) . ' AND url_site=' . sql_quote($item['HTMLURL'])
)
) {
$id_syndic = site_inserer($id_parent);
$set = array(
$set = [
'url_site' => $item['HTMLURL'],
'nom_site' => $item['TITLE'],
'url_syndic' => $item['XMLURL'],
@ -103,7 +107,7 @@ function bookmarks_opml_insert($tree, $id_parent, $importer_statut_publie, $impo
'resume' => 'non',
'date' => date('Y-m-d H:i:s', $now),
'statut' => $statut
);
];
site_modifier($id_syndic, $set);
$nb++;
} else {
@ -112,10 +116,13 @@ function bookmarks_opml_insert($tree, $id_parent, $importer_statut_publie, $impo
} else {
// cas d'un dossier
$titre = $key;
$id_rubrique = sql_getfetsel('id_rubrique', 'spip_rubriques',
'id_parent=' . intval($id_parent) . " AND titre=" . sql_quote($titre));
$id_rubrique = sql_getfetsel(
'id_rubrique',
'spip_rubriques',
'id_parent=' . intval($id_parent) . ' AND titre=' . sql_quote($titre)
);
if (!$id_rubrique and $id_rubrique = rubrique_inserer($id_parent)) {
rubrique_modifier($id_rubrique, array('titre' => $titre));
rubrique_modifier($id_rubrique, ['titre' => $titre]);
}
if ($id_rubrique) {
$nb += bookmarks_opml_insert($item, $id_rubrique, $importer_statut_publie, $importer_tags);

15
action/instituer_syndic_article.php

@ -10,7 +10,7 @@
* Pour plus de détails voir le fichier COPYING.txt ou l'aide en ligne. *
\***************************************************************************/
if (!defined("_ECRIRE_INC_VERSION")) {
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
@ -22,12 +22,15 @@ function action_instituer_syndic_article_dist() {
list($id_syndic_article, $statut) = preg_split('/\W/', $arg);
if ($id_syndic_article = intval($id_syndic_article)
and $id_syndic = sql_getfetsel('id_syndic', 'spip_syndic_articles',
"id_syndic_article=" . intval($id_syndic_article))
if (
$id_syndic_article = intval($id_syndic_article)
and $id_syndic = sql_getfetsel(
'id_syndic',
'spip_syndic_articles',
'id_syndic_article=' . intval($id_syndic_article)
)
and autoriser('moderer', 'site', $id_syndic)
) {
sql_updateq("spip_syndic_articles", array("statut" => $statut), "id_syndic_article=" . intval($id_syndic_article));
sql_updateq('spip_syndic_articles', ['statut' => $statut], 'id_syndic_article=' . intval($id_syndic_article));
}
}

6
action/purger_site.php

@ -10,7 +10,7 @@
* Pour plus de détails voir le fichier COPYING.txt ou l'aide en ligne. *
\***************************************************************************/
if (!defined("_ECRIRE_INC_VERSION")) {
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
@ -21,10 +21,10 @@ function action_purger_site_dist($id_syndic = null) {
$id_syndic = $securiser_action();
}
if ($id_syndic = intval($id_syndic)
if (
$id_syndic = intval($id_syndic)
and autoriser('purger', 'site', $id_syndic)
) {
include_spip('base/abstract_sql');
sql_delete('spip_syndic_articles', 'id_syndic=' . intval($id_syndic));
}

7
action/syndiquer_site.php

@ -10,7 +10,7 @@
* Pour plus de détails voir le fichier COPYING.txt ou l'aide en ligne. *
\***************************************************************************/
if (!defined("_ECRIRE_INC_VERSION")) {
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
@ -23,13 +23,12 @@ function action_syndiquer_site_dist($id_syndic = null) {
}
$id_job = job_queue_add('syndic_a_jour', 'syndic_a_jour', array($id_syndic), 'genie/syndic', true);
$id_job = job_queue_add('syndic_a_jour', 'syndic_a_jour', [$id_syndic], 'genie/syndic', true);
// l'executer immediatement si possible
if ($id_job) {
include_spip('inc/queue');
queue_schedule(array($id_job));
queue_schedule([$id_job]);
} else {
spip_log("Erreur insertion syndic_a_jour($id_syndic) dans la file des travaux", _LOG_ERREUR);
}
}

14
balise/formulaire_site.php

@ -10,7 +10,7 @@
* Pour plus de détails voir le fichier COPYING.txt ou l'aide en ligne. *
\***************************************************************************/
if (!defined("_ECRIRE_INC_VERSION")) {
if (!defined('_ECRIRE_INC_VERSION')) {
return;
} #securite
@ -19,7 +19,7 @@ if (!defined("_ECRIRE_INC_VERSION")) {
// https://code.spip.net/@balise_FORMULAIRE_SITE
function balise_FORMULAIRE_SITE($p) {
return calculer_balise_dynamique($p, 'FORMULAIRE_SITE', array('id_rubrique'));
return calculer_balise_dynamique($p, 'FORMULAIRE_SITE', ['id_rubrique']);
}
// https://code.spip.net/@balise_FORMULAIRE_SITE_stat
@ -27,13 +27,13 @@ function balise_FORMULAIRE_SITE_stat($args, $context_compil) {
// Pas d'id_rubrique ? Erreur de contexte
if (!$args[0]) {
$msg = array(
$msg = [
'zbug_champ_hors_motif',
array(
[
'champ' => 'FORMULAIRE_SITE',
'motif' => 'RUBRIQUES'
)
);
]
];
erreur_squelette($msg, $context_compil);
return '';
@ -41,5 +41,5 @@ function balise_FORMULAIRE_SITE_stat($args, $context_compil) {
// Verifier que les visisteurs sont autorises a proposer un site
return (($GLOBALS['meta']["proposer_sites"] != 2) ? '' : $args);
return (($GLOBALS['meta']['proposer_sites'] != 2) ? '' : $args);
}

178
base/sites.php

@ -31,8 +31,8 @@ function sites_declarer_tables_interfaces($interfaces) {
$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['exceptions_des_tables']['syndic_articles']['url_site'] = ['syndic', 'url_site'];
$interfaces['exceptions_des_tables']['syndic_articles']['nom_site'] = ['syndic', 'nom_site'];
$interfaces['table_date']['syndication'] = 'date';
@ -42,7 +42,7 @@ function sites_declarer_tables_interfaces($interfaces) {
// Articles syndiques : passage des donnees telles quelles, sans traitement typo
// la securite et conformite XHTML de ces champs est assuree par safehtml()
foreach (array('DESCRIPTIF', 'SOURCE', 'URL', 'URL_SOURCE', 'LESAUTEURS', 'TAGS') as $balise) {
foreach (['DESCRIPTIF', 'SOURCE', 'URL', 'URL_SOURCE', 'LESAUTEURS', 'TAGS'] as $balise) {
if (!isset($interfaces['table_des_traitements'][$balise]['syndic_articles'])) {
$interfaces['table_des_traitements'][$balise]['syndic_articles'] = 'safehtml(%s)';
} else {
@ -57,10 +57,10 @@ function sites_declarer_tables_interfaces($interfaces) {
function sites_declarer_tables_objets_sql($tables) {
$tables['spip_syndic'] = array(
'table_objet_surnoms' => array('site'),
$tables['spip_syndic'] = [
'table_objet_surnoms' => ['site'],
'type' => 'site',
'type_surnoms' => array('syndic'),
'type_surnoms' => ['syndic'],
'texte_retour' => 'icone_retour',
'texte_objets' => 'icone_sites_references',
'texte_objet' => 'sites:icone_site_reference',
@ -72,52 +72,52 @@ function sites_declarer_tables_objets_sql($tables) {
'titre' => "nom_site AS titre, '' AS lang",
'date' => 'date',
'principale' => 'oui',
'field' => 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'"
),
'key' => array(
"PRIMARY KEY" => "id_syndic",
"KEY id_rubrique" => "id_rubrique",
"KEY id_secteur" => "id_secteur",
"KEY statut" => "statut, date_syndic",
),
'parent' => array('type' => 'rubrique', 'champ' => 'id_rubrique'),
'join' => array(
"id_syndic" => "id_syndic",
"id_rubrique" => "id_rubrique"
),
'statut' => array(
array('champ' => 'statut', 'publie' => 'publie', 'previsu' => 'publie,prop', 'exception' => 'statut')
),
'field' => [
'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'"
],
'key' => [
'PRIMARY KEY' => 'id_syndic',
'KEY id_rubrique' => 'id_rubrique',
'KEY id_secteur' => 'id_secteur',
'KEY statut' => 'statut, date_syndic',
],
'parent' => ['type' => 'rubrique', 'champ' => 'id_rubrique'],
'join' => [
'id_syndic' => 'id_syndic',
'id_rubrique' => 'id_rubrique'
],
'statut' => [
['champ' => 'statut', 'publie' => 'publie', 'previsu' => 'publie,prop', 'exception' => 'statut']
],
'texte_changer_statut' => 'sites:info_statut_site_1',
'statut_textes_instituer' => array(
'statut_textes_instituer' => [
'prop' => 'texte_statut_propose_evaluation',
'publie' => 'texte_statut_publie',
'refuse' => 'texte_statut_poubelle',
),
],
'rechercher_champs' => array(
'rechercher_champs' => [
'nom_site' => 5,
'url_site' => 1,
'descriptif' => 3
),
'champs_editables' => array(
],
'champs_editables' => [
'nom_site',
'url_site',
'descriptif',
@ -127,19 +127,19 @@ function sites_declarer_tables_objets_sql($tables) {
'miroir',
'oubli',
'resume'
),
'champs_versionnes' => array(
],
'champs_versionnes' => [
'id_rubrique',
'id_secteur',
'nom_site',
'url_site',
'url_syndic',
'descriptif'
),
);
],
];
$tables['spip_syndic_articles'] = array(
'table_objet_surnoms' => array('syndic_article'),
$tables['spip_syndic_articles'] = [
'table_objet_surnoms' => ['syndic_article'],
'texte_retour' => 'icone_retour',
'texte_objets' => 'sites:icone_articles_syndic',
@ -158,55 +158,55 @@ function sites_declarer_tables_objets_sql($tables) {
'date' => 'date',
'editable' => 'non',
'principale' => 'oui',
'field' => array(
"id_syndic_article" => "bigint(21) NOT NULL",
"id_syndic" => "bigint(21) DEFAULT '0' NOT NULL",
"titre" => "text DEFAULT '' NOT NULL",
"url" => "text 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",
"raw_data" => "TEXT DEFAULT '' NOT NULL",
"raw_format" => "TINYTEXT DEFAULT '' NOT NULL",
"raw_methode" => "TINYTEXT DEFAULT '' NOT NULL",
),
'key' => array(
"PRIMARY KEY" => "id_syndic_article",
"KEY id_syndic" => "id_syndic",
"KEY statut" => "statut",
"KEY url" => "url(255)"
),
'join' => array(
"id_syndic_article" => "id_syndic_article",
"id_syndic" => "id_syndic"
),
'statut' => array(
array('champ' => 'statut', 'publie' => 'publie', 'previsu' => 'publie,prop', 'exception' => 'statut'),
array(
'champ' => array(array('spip_syndic', 'id_syndic'), 'statut'),
'field' => [
'id_syndic_article' => 'bigint(21) NOT NULL',
'id_syndic' => "bigint(21) DEFAULT '0' NOT NULL",
'titre' => "text DEFAULT '' NOT NULL",
'url' => "text 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",
'raw_data' => "TEXT DEFAULT '' NOT NULL",
'raw_format' => "TINYTEXT DEFAULT '' NOT NULL",
'raw_methode' => "TINYTEXT DEFAULT '' NOT NULL",
],
'key' => [
'PRIMARY KEY' => 'id_syndic_article',
'KEY id_syndic' => 'id_syndic',
'KEY statut' => 'statut',
'KEY url' => 'url(255)'
],
'join' => [
'id_syndic_article' => 'id_syndic_article',
'id_syndic' => 'id_syndic'
],
'statut' => [
['champ' => 'statut', 'publie' => 'publie', 'previsu' => 'publie,prop', 'exception' => 'statut'],
[
'champ' => [['spip_syndic', 'id_syndic'], 'statut'],
'publie' => 'publie',
'previsu' => 'publie,prop',
'exception' => 'statut'
),
),
'statut_images' => array(
],
],
'statut_images' => [
'puce-rouge-anim-xx.svg',
'publie' => 'puce-publier-8.png',
'refuse' => 'puce-supprimer-8.png',
'dispo' => 'puce-proposer-8.png',
'off' => 'puce-refuser-8.png',
),
'rechercher_champs' => array(
],
'rechercher_champs' => [
'titre' => 5,
'descriptif' => 1
)
);
]
];
return $tables;
}

7
composer.json

@ -0,0 +1,7 @@
{
"require-dev": {
"dealerdirect/phpcodesniffer-composer-installer": "^0.7.1",
"spip/coding-standards": "^1.2",
"phpstan/phpstan": "^0.12.98"
}
}

32
formulaires/configurer_sites.php

@ -16,7 +16,7 @@
* @package SPIP\Sites\Formulaires
**/
if (!defined("_ECRIRE_INC_VERSION")) {
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
@ -27,12 +27,14 @@ if (!defined("_ECRIRE_INC_VERSION")) {
* Environnement du formulaire
**/
function formulaires_configurer_sites_charger_dist() {
foreach (array(
"activer_sites",
"activer_syndic",
"proposer_sites",
"moderation_sites",
) as $m) {
foreach (
[
'activer_sites',
'activer_syndic',
'proposer_sites',
'moderation_sites',
] as $m
) {
$valeurs[$m] = isset($GLOBALS['meta'][$m]) ? $GLOBALS['meta'][$m] : '';
}
@ -46,19 +48,21 @@ function formulaires_configurer_sites_charger_dist() {
* Retours du traitement
**/
function formulaires_configurer_sites_traiter_dist() {
$res = array('editable' => true);
foreach (array(
"activer_sites",
"activer_syndic",
"moderation_sites",
) as $m) {
$res = ['editable' => true];
foreach (
[
'activer_sites',
'activer_syndic',
'moderation_sites',
] as $m
) {
if (!is_null($v = _request($m))) {
ecrire_meta($m, $v == 'oui' ? 'oui' : 'non');
}
}
$v = _request('proposer_sites');
ecrire_meta('proposer_sites', in_array($v, array('0', '1', '2')) ? $v : '0');
ecrire_meta('proposer_sites', in_array($v, ['0', '1', '2']) ? $v : '0');
$res['message_ok'] = _T('config_info_enregistree');

47
formulaires/editer_site.php

@ -16,7 +16,7 @@
* @package SPIP\Sites\Formulaires
**/
if (!defined("_ECRIRE_INC_VERSION")) {
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
@ -52,11 +52,19 @@ function formulaires_editer_site_charger_dist(
$retour = '',
$lier_trad = 0,
$config_fonc = 'sites_edit_config',
$row = array(),
$row = [],
$hidden = ''
) {
$valeurs = formulaires_editer_objet_charger('site', $id_syndic, $id_rubrique, $lier_trad, $retour, $config_fonc, $row,
$hidden);
$valeurs = formulaires_editer_objet_charger(
'site',
$id_syndic,
$id_rubrique,
$lier_trad,
$retour,
$config_fonc,
$row,
$hidden
);
# pour recuperer le logo issu d'analyse auto
$valeurs['logo'] = '';
$valeurs['format_logo'] = '';
@ -95,10 +103,10 @@ function formulaires_editer_site_identifier_dist(
$retour = '',
$lier_trad = 0,
$config_fonc = 'sites_edit_config',
$row = array(),
$row = [],
$hidden = ''
) {
return serialize(array(intval($id_syndic), $lier_trad));
return serialize([intval($id_syndic), $lier_trad]);
}
/**
@ -149,17 +157,18 @@ function formulaires_editer_site_verifier_dist(
$retour = '',
$lier_trad = 0,
$config_fonc = 'sites_edit_config',
$row = array(),
$row = [],
$hidden = ''
) {
include_spip('inc/filtres');
include_spip('inc/site');
$oblis = array('nom_site', 'url_site', 'id_parent');
$oblis = ['nom_site', 'url_site', 'id_parent'];
// Envoi depuis le formulaire d'analyse automatique d'un site
if (_request('ajoute_url_auto') and strlen(vider_url($u = _request('url_auto')))) {
if ($auto = analyser_site($u)) {
// Si pas de logo, on va le chercher dans le ou les feeds
if (isset($auto['url_syndic'])
if (
isset($auto['url_syndic'])
&& !(isset($auto['logo']) and $auto['logo'])
&& ($auto['url_syndic'] != _request('ajouter_url_auto'))
&& preg_match(',^select: (.+),', $auto['url_syndic'], $regs)
@ -177,7 +186,7 @@ function formulaires_editer_site_verifier_dist(
foreach ($auto as $k => $v) {
set_request($k, $v);
}
$erreurs['verif_url_auto'] = _T('sites:texte_referencement_automatique_verifier', array('url' => $u));
$erreurs['verif_url_auto'] = _T('sites:texte_referencement_automatique_verifier', ['url' => $u]);
$erreurs['message_erreur'] = '';
} else {
$erreurs['url_auto'] = _T('sites:avis_site_introuvable');
@ -185,9 +194,9 @@ function formulaires_editer_site_verifier_dist(
} else {
// auto-renseigner le titre si il n'existe pas
// d'abord a partir du descriptif en coupant
titre_automatique('nom_site', array('descriptif'));
titre_automatique('nom_site', ['descriptif']);
// et sinon l'url du site, sans couper
titre_automatique('nom_site', array('url_site'), 255);
titre_automatique('nom_site', ['url_site'], 255);
$erreurs = formulaires_editer_objet_verifier('site', $id_syndic, $oblis);
}
@ -222,7 +231,7 @@ function formulaires_editer_site_traiter_dist(
$retour = '',
$lier_trad = 0,
$config_fonc = 'sites_edit_config',
$row = array(),
$row = [],
$hidden = ''
) {
// netoyer les entrees
@ -230,6 +239,14 @@ function formulaires_editer_site_traiter_dist(
set_request('url_site', vider_url(_request('url_site')));
}
return formulaires_editer_objet_traiter('site', $id_syndic, $id_rubrique, $lier_trad, $retour, $config_fonc, $row,
$hidden);
return formulaires_editer_objet_traiter(
'site',
$id_syndic,
$id_rubrique,
$lier_trad,
$retour,
$config_fonc,
$row,
$hidden
);
}

4
formulaires/editer_site_fonctions.php

@ -15,9 +15,9 @@ if (!defined('_ECRIRE_INC_VERSION')) {
}
function saisie_url_syndic($url_syndic, $name = 'url_syndic', $id = 'url_syndic') {
$res = "";
$res = '';
if (strlen($url_syndic) < 8) {
$url_syndic = "http://";
$url_syndic = 'http://';
}
// cas d'une liste de flux detectee par feedfinder : menu

14
formulaires/exporter_sites.php

@ -10,7 +10,7 @@
* Pour plus de détails voir le fichier COPYING.txt ou l'aide en ligne. *
\***************************************************************************/
if (!defined("_ECRIRE_INC_VERSION")) {
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
@ -20,11 +20,11 @@ function formulaires_exporter_sites_charger_dist() {
return false;
}
return array(
return [
'id_parent' => 0,
'exporter_publie_seulement' => 0,
'exporter_avec_mots_cles' => 1,
);
];
}
function formulaires_exporter_sites_traiter_dist() {
@ -33,8 +33,10 @@ function formulaires_exporter_sites_traiter_dist() {
$exporter_avec_mots_cles = _request('exporter_avec_mots_cles') ? 1 : 0;
include_spip('inc/actions');
$redirect = generer_action_auteur('exporter_bookmarks',
"$id_parent-$exporter_publie_seulement-$exporter_avec_mots_cles");
$redirect = generer_action_auteur(
'exporter_bookmarks',
"$id_parent-$exporter_publie_seulement-$exporter_avec_mots_cles"
);
return array('redirect' => $redirect);
return ['redirect' => $redirect];
}

27
formulaires/importer_sites.php

@ -10,7 +10,7 @@
* Pour plus de détails voir le fichier COPYING.txt ou l'aide en ligne. *
\***************************************************************************/
if (!defined("_ECRIRE_INC_VERSION")) {
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
@ -20,16 +20,16 @@ function formulaires_importer_sites_charger_dist() {
return false;
}
return array(
return [
'fichier_import' => 0,
'id_parent' => 0,
'importer_statut_publie' => 0,
'importer_les_tags' => 1,
);
];
}
function formulaires_importer_sites_verifier_dist() {
$erreurs = array();
$erreurs = [];
if (!_request('id_parent')) {
$erreurs['id_parent'] = _T('info_obligatoire');
@ -39,8 +39,10 @@ function formulaires_importer_sites_verifier_dist() {
if (!$fichier_ok) {
$erreurs['fichier_import'] = _T('sites:erreur_fichier_incorrect');
} elseif (!charger_fonction('importer_bookmarks_' . $fichier_ok['format'], 'action', true)) {
$erreurs['fichier_import'] = _T('sites:erreur_fichier_format_inconnu',
array('fichier' => "<tt>" . $fichier_ok['name'] . "</tt>"));
$erreurs['fichier_import'] = _T(
'sites:erreur_fichier_format_inconnu',
['fichier' => '<tt>' . $fichier_ok['name'] . '</tt>']
);
}
return $erreurs;
@ -56,21 +58,22 @@ function formulaires_importer_sites_traiter_dist() {
$nb = $importer_bookmarks($fichier_ok, $id_parent, $importer_statut_publie, $importer_tags);
if (!$nb) {
$res = array('message_erreur' => _T('sites:info_aucun_site_importe'));
$res = ['message_erreur' => _T('sites:info_aucun_site_importe')];
} else {
$res = array(
$res = [
'message_ok' => singulier_ou_pluriel($nb, 'sites:info_1_site_importe', 'sites:info_nb_sites_importes')
);
];
}
return $res;
}
function info_fichiers_import($name) {
static $fichier_ok = array();
static $fichier_ok = [];
if (!isset($fichier_ok[$name])) {
if (sizeof($_FILES) < 0
if (
sizeof($_FILES) < 0
or !isset($_FILES[$name])
or !$_FILES[$name]['size'] > 0
) {
@ -81,7 +84,7 @@ function info_fichiers_import($name) {
return false;
}
$fichier_ok[$name] = array();
$fichier_ok[$name] = [];
$fichier_ok[$name]['name'] = $_FILES[$name]['name'];
$fichier_ok[$name]['chemin'] = $_FILES[$name]['tmp_name'];

12
formulaires/regler_moderation_site.php

@ -16,7 +16,7 @@
* @package SPIP\Sites\Formulaires
**/
if (!defined("_ECRIRE_INC_VERSION")) {
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
@ -39,7 +39,7 @@ include_spip('inc/editer');
function formulaires_regler_moderation_site_charger_dist($id_syndic, $retour = '') {
$valeurs = formulaires_editer_objet_charger('site', $id_syndic, 0, 0, $retour, '');
# pour recuperer le logo issu d'analyse auto
foreach (array('moderation', 'miroir', 'oubli', 'resume') as $k) {
foreach (['moderation', 'miroir', 'oubli', 'resume'] as $k) {
if (!$valeurs[$k]) {
$valeurs[$k] = 'non';
}
@ -60,7 +60,7 @@ function formulaires_regler_moderation_site_charger_dist($id_syndic, $retour = '
* Hash du formulaire
*/
function formulaires_regler_moderation_site_identifier_dist($id_syndic, $retour = '') {
return serialize(array($id_syndic));
return serialize([$id_syndic]);
}
/**
@ -74,10 +74,10 @@ function formulaires_regler_moderation_site_identifier_dist($id_syndic, $retour
* Erreurs du formulaire
**/
function formulaires_regler_moderation_site_verifier_dist($id_syndic, $retour = '') {
$erreurs = array();
$erreurs = [];
foreach (array('moderation', 'miroir', 'oubli', 'resume') as $k) {
if (!_request($k) or !in_array(_request($k), array('oui', 'non'))) {
foreach (['moderation', 'miroir', 'oubli', 'resume'] as $k) {
if (!_request($k) or !in_array(_request($k), ['oui', 'non'])) {
set_request($k, 'non');
}
}

17
formulaires/site.php

@ -16,21 +16,21 @@ if (!defined('_ECRIRE_INC_VERSION')) {
function formulaires_site_charger_dist($id_rubrique) {
return array('nom_site' => '', 'url_site' => 'http://', 'description_site' => '');
return ['nom_site' => '', 'url_site' => 'http://', 'description_site' => ''];
}
function formulaires_site_verifier_dist($id_rubrique) {
$erreurs = array();
$erreurs = [];
if (!$nom = _request('nom_site')) {
$erreurs['nom_site'] = _T("info_obligatoire");
$erreurs['nom_site'] = _T('info_obligatoire');
} else {
if ((strlen($nom) < 2) or (strlen(_request('nobot')) > 0)) {
$erreurs['email_message_auteur'] = _T('form_prop_indiquer_nom_site');
}
}
if (!$url = _request('url_site')) {
$erreurs['url_site'] = _T("info_obligatoire");
$erreurs['url_site'] = _T('info_obligatoire');
}
if (!count($erreurs)) {
@ -45,14 +45,15 @@ function formulaires_site_verifier_dist($id_rubrique) {
}
function formulaires_site_traiter_dist($id_rubrique) {
$res = array('message_erreur' => _T('titre_probleme_technique'));
$res = ['message_erreur' => _T('titre_probleme_technique')];
$nom = _request('nom_site');
$url = _request('url_site');
$desc = _request('description_site');
include_spip('base/abstract_sql');
if ($id_syndic = sql_insertq('spip_syndic', array(
if (
$id_syndic = sql_insertq('spip_syndic', [
'nom_site' => $nom,
'url_site' => $url,
'id_rubrique' => $id_rubrique,
@ -62,9 +63,9 @@ function formulaires_site_traiter_dist($id_rubrique) {
'date_syndic' => date('Y-m-d H:i:s'),
'statut' => 'prop',
'syndication' => 'non'
))
])
) {
$res = array('message_ok' => _T('form_prop_enregistre'), 'id_syndic' => $id_syndic);
$res = ['message_ok' => _T('form_prop_enregistre'), 'id_syndic' => $id_syndic];
}
return $res;

132
genie/syndic.php

@ -16,7 +16,7 @@
* @package SPIP\Sites\Genie
**/
if (!defined("_ECRIRE_INC_VERSION")) {
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
@ -60,26 +60,38 @@ function executer_une_syndication() {
// On va tenter un site 'sus' ou 'off' de plus de 24h, et le passer en 'off'
// s'il echoue
$where = sql_in("syndication", array('sus', 'off')) . "
$where = sql_in('syndication', ['sus', 'off']) . "
AND statut<>'refuse'
AND NOT(" . sql_date_proche('date_syndic', (0 - _PERIODE_SYNDICATION_SUSPENDUE), "MINUTE") . ')';
$id_syndic = sql_getfetsel("id_syndic", "spip_syndic", "statut<>" . sql_quote("refuse") . " AND " . $where, '',
"date_syndic", "1");
AND NOT(" . sql_date_proche('date_syndic', (0 - _PERIODE_SYNDICATION_SUSPENDUE), 'MINUTE') . ')';
$id_syndic = sql_getfetsel(
'id_syndic',
'spip_syndic',
'statut<>' . sql_quote('refuse') . ' AND ' . $where,
'',
'date_syndic',
'1'
);
if ($id_syndic) {
// inserer la tache dans la file, avec controle d'unicite
job_queue_add('syndic_a_jour', 'syndic_a_jour', array($id_syndic), 'genie/syndic', true);
job_queue_add('syndic_a_jour', 'syndic_a_jour', [$id_syndic], 'genie/syndic', true);
}
// Et un site 'oui' de plus de 2 heures, qui passe en 'sus' s'il echoue
$where = "syndication='oui'
AND statut<>'refuse'
AND NOT(" . sql_date_proche('date_syndic', (0 - _PERIODE_SYNDICATION), "MINUTE") . ')';
$id_syndic = sql_getfetsel("id_syndic", "spip_syndic", "statut<>" . sql_quote("refuse") . " AND " . $where, '',
"date_syndic", "1");
AND NOT(" . sql_date_proche('date_syndic', (0 - _PERIODE_SYNDICATION), 'MINUTE') . ')';
$id_syndic = sql_getfetsel(
'id_syndic',
'spip_syndic',
'statut<>' . sql_quote('refuse') . ' AND ' . $where,
'',
'date_syndic',
'1'
);
if ($id_syndic) {
// inserer la tache dans la file, avec controle d'unicite
job_queue_add('syndic_a_jour', 'syndic_a_jour', array($id_syndic), 'genie/syndic', true);
job_queue_add('syndic_a_jour', 'syndic_a_jour', [$id_syndic], 'genie/syndic', true);
}
return 0;
@ -101,11 +113,13 @@ function syndic_a_jour($now_id_syndic) {
include_spip('inc/texte');
$call = debug_backtrace();
if ($call[1]['function'] !== 'queue_start_job') {
spip_log("syndic_a_jour doit etre appelee par JobQueue Cf. https://git.spip.net/spip/spip/commit/1a9e69d6aaf852b70e098f9ed6cf1cdb7eafd446",
_LOG_ERREUR);
spip_log(
'syndic_a_jour doit etre appelee par JobQueue Cf. https://git.spip.net/spip/spip/commit/1a9e69d6aaf852b70e098f9ed6cf1cdb7eafd446',
_LOG_ERREUR
);
}
$site = sql_fetsel("*", "spip_syndic", "id_syndic=" . intval($now_id_syndic));
$site = sql_fetsel('*', 'spip_syndic', 'id_syndic=' . intval($now_id_syndic));
if (!$site) {
return;
@ -131,8 +145,11 @@ function syndic_a_jour($now_id_syndic) {
$statut = 'off';
}
sql_updateq('spip_syndic', array('syndication' => $statut, 'date_syndic' => date('Y-m-d H:i:s')),
"id_syndic=" . intval($now_id_syndic));
sql_updateq(
'spip_syndic',
['syndication' => $statut, 'date_syndic' => date('Y-m-d H:i:s')],
'id_syndic=' . intval($now_id_syndic)
);
$methode_syndication = 'atomrss';
if (preg_match(',^(\w+:)\w+://,', $url_syndic, $m)) {
@ -143,7 +160,7 @@ function syndic_a_jour($now_id_syndic) {
if (!$syndic = charger_fonction($methode_syndication, 'syndic', true)) {
spip_log("methode syndication $methode_syndication inconnue pour $url_syndic", 'sites' . _LOG_ERREUR);
return _T('sites:erreur_methode_syndication_inconnue', array('methode' => $methode_syndication));
return _T('sites:erreur_methode_syndication_inconnue', ['methode' => $methode_syndication]);
}
$items = $syndic($url_syndic);
@ -154,28 +171,33 @@ function syndic_a_jour($now_id_syndic) {
// Les enregistrer dans la base
$faits = array();
$faits = [];
foreach ($items as $item) {
inserer_article_syndique($item, $now_id_syndic, $statut_article, $url_site, $url_syndic, $site['resume'], $faits, $methode_syndication);
}
// moderation automatique des liens qui sont sortis du feed
if (count($faits) > 0) {
$not_faits = sql_in("id_syndic_article", $faits, 'NOT');
$not_faits = sql_in('id_syndic_article', $faits, 'NOT');
if ($site['miroir'] == 'oui') {
sql_update('spip_syndic_articles', array('statut' => "'off'", 'maj' => 'maj'),
"id_syndic=".intval($now_id_syndic). " AND $not_faits");
sql_update(
'spip_syndic_articles',
['statut' => "'off'", 'maj' => 'maj'],
'id_syndic=' . intval($now_id_syndic) . " AND $not_faits"
);
}
// suppression apres 2 mois des liens qui sont sortis du feed
if ($site['oubli'] == 'oui') {
sql_delete('spip_syndic_articles', 'id_syndic='.intval($now_id_syndic) . ' AND NOT(' . sql_date_proche('maj', -2,
'MONTH') . ') AND NOT(' . sql_date_proche('date', -2, 'MONTH') . ") AND $not_faits");
sql_delete('spip_syndic_articles', 'id_syndic=' . intval($now_id_syndic) . ' AND NOT(' . sql_date_proche(
'maj',
-2,
'MONTH'
) . ') AND NOT(' . sql_date_proche('date', -2, 'MONTH') . ") AND $not_faits");
}
}
// Noter que la syndication est OK
sql_updateq("spip_syndic", array("syndication" => 'oui'), "id_syndic=" . intval($now_id_syndic));
sql_updateq('spip_syndic', ['syndication' => 'oui'], 'id_syndic=' . intval($now_id_syndic));
return false; # c'est bon
}
@ -240,12 +262,17 @@ function inserer_article_syndique($data, $now_id_syndic, $statut, $url_site, $ur
// S'il y a plusieurs liens qui repondent, il faut choisir le plus proche
// (ie meme titre et pas deja fait), le mettre a jour et ignorer les autres
$n = 0;
$s = sql_select("id_syndic_article,titre,id_syndic,statut", "spip_syndic_articles",
"url=" . sql_quote($le_lien)
$s = sql_select(
'id_syndic_article,titre,id_syndic,statut',
'spip_syndic_articles',
'url=' . sql_quote($le_lien)
. (_SYNDICATION_URL_UNIQUE
? ''
: " AND id_syndic=$now_id_syndic")
. " AND " . sql_in('id_syndic_article', $faits, 'NOT'), "", "maj DESC");
. ' AND ' . sql_in('id_syndic_article', $faits, 'NOT'),
'',
'maj DESC'
);
while ($a = sql_fetch($s)) {
$id = $a['id_syndic_article'];
$id_syndic = $a['id_syndic'];
@ -260,34 +287,36 @@ function inserer_article_syndique($data, $now_id_syndic, $statut, $url_site, $ur
$id_syndic_article = $id;
} // Si l'article n'existe pas, on le cree
elseif (!isset($id_syndic_article)) {
$champs = array(
$champs = [
'id_syndic' => $now_id_syndic,
'url' => $le_lien,
'date' => date("Y-m-d H:i:s", $data['date'] ? $data['date'] : $data['lastbuilddate']),
'date' => date('Y-m-d H:i:s', $data['date'] ? $data['date'] : $data['lastbuilddate']),
'statut' => $statut
);
];
// Envoyer aux plugins
$champs = pipeline('pre_insertion',
array(
'args' => array(
$champs = pipeline(
'pre_insertion',
[
'args' => [
'table' => 'spip_syndic_articles',
),
],
'data' => $champs
)
]
);
$ajout = $id_syndic_article = sql_insertq('spip_syndic_articles', $champs);
if (!$ajout) {
return;
}
pipeline('post_insertion',
array(
'args' => array(
pipeline(
'post_insertion',
[
'args' => [
'table' => 'spip_syndic_articles',
'id_objet' => $id_syndic_article
),
],
'data' => $champs
)
]
);
}
$faits[] = $id_syndic_article;
@ -326,7 +355,7 @@ function inserer_article_syndique($data, $now_id_syndic, $statut, $url_site, $ur
$tags = ($data['enclosures'] ? $data['enclosures'] : '');
# eviter les doublons (cle = url+titre) et passer d'un tableau a une chaine
if ($data['tags']) {
$vus = array();
$vus = [];
foreach ($data['tags'] as $tag) {
$cle = supprimer_tags($tag) . extraire_attribut($tag, 'href');
$vus[$cle] = $tag;
@ -335,7 +364,7 @@ function inserer_article_syndique($data, $now_id_syndic, $statut, $url_site, $ur
}
// Mise a jour du contenu (titre,auteurs,description,date?,source...)
$vals = array(
$vals = [
'titre' => $data['titre'],
'lesauteurs' => $data['lesauteurs'],
'descriptif' => $desc,
@ -343,7 +372,7 @@ function inserer_article_syndique($data, $now_id_syndic, $statut, $url_site, $ur
'source' => (isset($data['source']) ? substr($data['source'], 0, 255) : ''),
'url_source' => (isset($data['url_source']) ? substr($data['url_source'], 0, 255) : ''),
'tags' => $tags