268 lines
7.8 KiB
PHP
268 lines
7.8 KiB
PHP
<?php
|
|
if (!defined('_ECRIRE_INC_VERSION')) return;
|
|
|
|
function formulaires_editer_post_charger_dist($id_article=0, $redirect=''){
|
|
|
|
$erreurs = array();
|
|
include_spip('inc/autoriser');
|
|
if (! autoriser("creer","article")) {
|
|
$erreurs['message_erreur'] = "Vous devez être connecté pour utiliser ce formulaire.";
|
|
return $erreurs;
|
|
}
|
|
|
|
// Pour récupérer les champs renseignés en cas d'erreur
|
|
|
|
$id_rubrique = intval(_request('id_rubrique'));
|
|
$titre = _request('titre');
|
|
$texte = _request('texte');
|
|
$soustitre = _request('soustitre');
|
|
$date_agenda = _request('date_agenda');
|
|
$descriptif = _request('descriptif');
|
|
$statut = _request('statut');
|
|
$id_groupe = _request('id_groupe');
|
|
|
|
$valeurs = array();
|
|
$valeurs['titre'] = $titre;
|
|
$valeurs['texte'] = $texte;
|
|
$valeurs['soustitre'] = $soustitre;
|
|
$valeurs['date_agenda'] = $date_agenda;
|
|
$valeurs['descriptif'] = $descriptif;
|
|
$valeurs['statut'] = $statut;
|
|
$valeurs['id_groupe'] = $id_groupe;
|
|
|
|
if (intval($id_article)) {
|
|
if (! autoriser("modifier","article", $id_article)) {
|
|
$erreurs['message_erreur'] = "Vous n'êtes pas autorisé à modifier cet article.";
|
|
return $erreurs;
|
|
}
|
|
|
|
$valeurs = sql_fetsel('*', 'spip_articles', 'id_article='.intval($id_article));
|
|
$where = array(
|
|
'id_objet='.intval($id_article),
|
|
'objet="article"',
|
|
);
|
|
$res = sql_allfetsel('id_auteur','spip_auteurs_liens',$where);
|
|
$valeurs['T_id_auteurs'] = array_column($res,'id_auteur');
|
|
}
|
|
else {
|
|
$valeurs['T_id_auteurs'] = array();
|
|
$valeurs['id_article'] = -1 * intval(session_get('id_auteur'));
|
|
}
|
|
|
|
if (intval($id_article)) {
|
|
$from = array(
|
|
'spip_gis as G',
|
|
'spip_gis_liens as L',
|
|
'spip_articles as A'
|
|
);
|
|
$where = array(
|
|
'L.id_objet='.intval($id_article),
|
|
'L.objet="article"',
|
|
'L.id_gis=G.id_gis'
|
|
);
|
|
$res = sql_fetsel('G.lat, G.lon', $from, $where);
|
|
if (count($res)) {
|
|
$valeurs['lat'] = $res['lat'];
|
|
$valeurs['lon'] = $res['lon'];
|
|
}
|
|
|
|
}
|
|
// recup gis
|
|
|
|
$valeurs['_bigup_rechercher_fichiers'] = true;
|
|
return $valeurs;
|
|
}
|
|
|
|
function formulaires_editer_post_verifier_dist($id_article=0, $redirect=''){
|
|
$erreurs = array();
|
|
|
|
include_spip('inc/autoriser');
|
|
if (! autoriser("creer","article")) {
|
|
$erreurs['message_erreur'] = "Vous devez être connecté pour utiliser ce formulaire.";
|
|
return $erreurs;
|
|
}
|
|
if (intval($id_article)) {
|
|
if (! autoriser("modifier","article", $id_article)) {
|
|
$erreurs['message_erreur'] = "Vous n'êtes pas autorisé à modifier cet article.";
|
|
return $erreurs;
|
|
}
|
|
}
|
|
|
|
// il faut au minimum titre et un texte pour créer un article
|
|
if (_request('titre') == '' OR _request('texte') == ''){
|
|
$erreurs['message_erreur'] = "Il faut obligatoirement un titre et un texte pour créer un article.";
|
|
return $erreurs;
|
|
}
|
|
|
|
|
|
$bigform = charger_fonction('bigform_verifier','inc');
|
|
$options = ['mime' => 'tout_mime','taille_max'=>'5000','largeur_max'=>'2048','hauteur_max'=>'2048'];
|
|
$bigform($options,$erreurs);
|
|
|
|
return $erreurs;
|
|
}
|
|
|
|
function formulaires_editer_post_traiter_dist($id_article = 0, $redirect = ''){
|
|
$new = $id_article;
|
|
|
|
$id_rubrique = lire_config('balint/id_rub_articles');
|
|
|
|
if (!intval($id_article)) {
|
|
|
|
include_spip('action/editer_article');
|
|
$set = array(
|
|
'statut' => 'prepa'
|
|
);
|
|
$id_article = article_inserer($id_rubrique,$set);
|
|
}
|
|
|
|
// enregistrement de l'image
|
|
if (!intval($new)) {
|
|
$where = array(
|
|
'objet="article"',
|
|
'id_objet='.intval(session_get('id_auteur')) * -1
|
|
);
|
|
sql_updateq('spip_documents_liens',array('id_objet' => intval($id_article)), $where);
|
|
}
|
|
|
|
// maj de l'article
|
|
$set = array(
|
|
'titre' => _request('titre'),
|
|
'texte' => _request('texte'),
|
|
'soustitre' => _request('soustitre'),
|
|
'descriptif' => _request('descriptif'),
|
|
'date_agenda' => _request('date_agenda'),
|
|
'statut' => _request('statut'),
|
|
'id_groupe' => _request('id_groupe')
|
|
// 'champ_1' => _request('champ_1'),
|
|
// 'champ_2' => _request('champ_2'),
|
|
// 'chapo' => _request('chapo'),
|
|
// 'surtitre' => _request('surtitre')
|
|
);
|
|
sql_updateq('spip_articles',$set,'id_article='.intval($id_article));
|
|
|
|
// maj association article -> auteurs
|
|
include_spip('action/editer_liens');
|
|
$where = array(
|
|
'id_objet='.intval($id_article),
|
|
'objet="article"',
|
|
);
|
|
$ids_auteurs = sql_allfetsel('id_auteur', 'spip_auteurs_liens', $where);
|
|
$ids_auteurs = array_column($ids_auteurs, 'id_auteur');
|
|
$Tauteurs = _request('Tauteurs');
|
|
if (count($Tauteurs)) {
|
|
$associer = array_diff($Tauteurs, $ids_auteurs);
|
|
$dissocier = array_diff($ids_auteurs, $Tauteurs);
|
|
|
|
objet_associer( array('auteur' => $associer),array('article' => intval($id_article) ));
|
|
objet_dissocier( array('auteur' => $dissocier) , array('article' =>intval($id_article) ));
|
|
}
|
|
|
|
// maj des mots fermes
|
|
$T_id_groupe = sql_allfetsel('id_groupe','spip_groupes_mots','grigri!="tags"');
|
|
$T_id_groupe = array_column($T_id_groupe,'id_groupe');
|
|
$T_ids_mots = array();
|
|
|
|
foreach ($T_id_groupe as $id_groupe) {
|
|
$from = array(
|
|
'spip_mots as M',
|
|
'spip_mots_liens as L'
|
|
);
|
|
$where = array(
|
|
'L.id_objet='.intval($id_article),
|
|
'L.objet="article"',
|
|
'L.id_mot=M.id_mot',
|
|
'M.id_groupe='.$id_groupe
|
|
);
|
|
|
|
$ids_mots = sql_allfetsel('M.id_mot AS id_mot', $from, $where);
|
|
$ids_mots = array_column($ids_mots, 'id_mot');
|
|
foreach($ids_mots as $id_mot){
|
|
$T_ids_mots[] = $id_mot;
|
|
}
|
|
}
|
|
|
|
$coches = _request('id_emplacements');
|
|
|
|
if (count($coches)){
|
|
$associer = array_diff($coches, $T_ids_mots);
|
|
$dissocier = array_diff($T_ids_mots, $coches);
|
|
|
|
objet_associer(array('mot' => $associer),array('article' => intval($id_article)));
|
|
objet_dissocier(array('mot' => $dissocier), array('article' => intval($id_article)));
|
|
}
|
|
else{
|
|
objet_dissocier(array('mot' => $T_ids_mots), array('article' => intval($id_article)));
|
|
}
|
|
|
|
include_spip('action/editer_objet');
|
|
// GIS
|
|
$lat_def = lire_config('gis/lat');
|
|
$lon_def = lire_config('gis/lon');
|
|
$lat = _request('lat');
|
|
$lon = _request('lon');
|
|
// 1. recup id_gis si present
|
|
$from = array(
|
|
'spip_gis as G',
|
|
'spip_gis_liens as L',
|
|
'spip_articles as A'
|
|
);
|
|
$where = array(
|
|
'L.id_objet='.intval($id_article),
|
|
'L.objet="article"',
|
|
'L.id_gis=G.id_gis'
|
|
);
|
|
$id_gis = sql_getfetsel('G.id_gis', $from, $where);
|
|
$set = array(
|
|
'titre' => _request('titre'),
|
|
'lat' => $lat,
|
|
'lon' => $lon,
|
|
'zoom' => 15
|
|
);
|
|
|
|
if (!$id_gis) {
|
|
$id_gis = sql_insertq('spip_gis',$set);
|
|
$set = array(
|
|
'id_gis' => $id_gis,
|
|
'id_objet' => intval($id_article),
|
|
'objet' => 'article'
|
|
);
|
|
sql_insertq('spip_gis_liens',$set);
|
|
} else {
|
|
if ($lat !== $lat_def and $lon !== $lon_def) {
|
|
objet_modifier('gis', $id_gis, $set);
|
|
}
|
|
}
|
|
|
|
// SEO title et description: créer ou mettre à jour, y compris si les valeurs postées sont vides (= vidage du champ)
|
|
$id_article = intval($id_article);
|
|
$seo_titre = _request('seo_titre');
|
|
$set = array('id_objet' => $id_article, 'objet' => 'article', 'meta_name' => 'title', 'meta_content' => $seo_titre);
|
|
$where = array("id_objet = $id_article", "objet = 'article'", "meta_name = 'title'");
|
|
$res = sql_getfetsel('meta_content', 'spip_seo', $where);
|
|
if ((!$res AND $seo_titre != '')
|
|
OR ($res != $seo_titre)) {
|
|
sql_replace('spip_seo', $set, $where);
|
|
}
|
|
$seo_descriptif = _request('seo_descriptif');
|
|
$set = array('id_objet' => $id_article, 'objet' => 'article', 'meta_name' => 'description', 'meta_content' => $seo_descriptif);
|
|
$where = array("id_objet = $id_article", "objet = 'article'", "meta_name = 'description'");
|
|
$res = sql_getfetsel('meta_content', 'spip_seo', $where);
|
|
if ((!$res AND $seo_descriptif != '')
|
|
OR ($res != $seo_descriptif)) {
|
|
sql_replace('spip_seo', $set, $where);
|
|
}
|
|
|
|
include_spip('inc/invalideur');
|
|
suivre_invalideur("id='id_article/1'");
|
|
|
|
$retour = array();
|
|
$retour['message_ok'] = "L'article est bien enregistré.";
|
|
$retour['redirect'] = $redirect . '&id_article=' . $id_article;
|
|
|
|
$bigform = charger_fonction('bigform_traiter','inc');
|
|
$bigform($id_article, 'article');
|
|
|
|
|
|
return $retour;
|
|
}
|