You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

172 lines
5.0 KiB

<?php
if (!defined("_ECRIRE_INC_VERSION")) return;
include_spip('inc/session');
include_spip('inc/securiser_action');
include_spip('public/assembler');
function formulaires_article_gis_charger_dist(){
$valeurs = array(
'titre'=>'',
'texte'=>'',
'lat'=>'',
'lonx'=>'',
'editable'=>true
);
// si on a pas de rubrique, on n'edite pas le formulaire !
if (!$id_rubrique = lire_config('gis/rubrique_cible')){
$valeurs['editable']=false;
}
// si l'on vien juste de poster le formlaire et qu'il a ete valide
// on veut pouvoir recommencer a poster un nouvelle photo
// on ne prend du coup pas les anciennes valeurs dans l'environnement
// pour ne pas polluer le nouveau formulaire
if (_request('soumission_gis_enregistre')){
unset ($valeurs['titre']);
unset ($valeurs['texte']);
unset ($valeurs['lat']);
unset ($valeurs['lonx']);
}
return $valeurs;
}
function formulaires_article_gis_verifier_dist(){
$erreurs = array();
$id_article = _request('id_article');
if ($id_article AND !_request('document'))
return $erreurs;
if (!$titre = _request('titre')){
$erreurs['titre'] = _T('gis:erreur_titre');
}
if (!$texte = _request('texte')){
$erreurs['texte'] = _T('gis:erreur_texte');
}
if (!count($erreurs)){
if ($afficher_texte != 'non') {
// ajout de l'article et de ses coordonnées
if(!$id_article){
include_spip('base/abstract_sql');
include_spip('inc/texte');
// pour le traitement :
// 1) on demande un nouvel article
// 2) on lui donne un titre et un statut et on y colle le texte
//3) on insère les coordonnées de l'article
// 1
include_spip('action/editer_article');
$id_rubrique = lire_config('gis/rubrique_cible');
if (!$id_article = insert_article($id_rubrique)){
return array(1,_T('gis:erreur_ajout_article'));
}
// 2
$titre = _request('titre');
$statut = lire_config('gis/statut','prop');
$texte = sql_quote(_request('texte'));
$c = array(
'titre'=> $titre,
'statut'=> $statut
);
include_spip('inc/modifier');
revision_article($id_article, $c);
instituer_article($id_article, $c);
sql_update('spip_articles', array('texte' => $texte), 'id_article=' . sql_quote($id_article));
//3
$lat = _request('lat');
$lonx = _request('lonx');
sql_insertq("spip_gis", array("id_article" => $id_article , "lat" => $lat, "lonx" => $lonx));
}
// ajout des documents
if(_request('document')) {
// compatibilite php < 4.1
if (!$_FILES) $_FILES = $GLOBALS['HTTP_POST_FILES'];
// recuperation des variables
$fichier = $_FILES['doc']['name'];
$size = $_FILES['doc']['size'];
$tmp = $_FILES['doc']['tmp_name'];
$type = $_FILES['doc']['type'];
$error = $_FILES['doc']['error'];
$doc = &$_FILES['doc'];
// verification si upload OK
if( !is_uploaded_file($tmp) ) {
$erreurs['document'] = _T('gis:erreur_upload');
}
else {
// on récupère l'extension du document envoyé
include_spip('base/abstract_sql');
include_spip('inc/ajouter_documents');
list($extension,$fichier) = fixer_extension_document($doc);
$acceptes = array_map('trim', explode(',',lire_config('gis/formats_documents','jpg,png,gif')));
// on vérifie que l'extension du document est autorisée
if (!in_array($extension, $acceptes)) {
if (!$formats = join(', ',$acceptes))
$formats = _L('aucun');
$erreurs['document'] = _T('gis:erreur_formats_acceptes',array('formats' => $formats));
}
else {
// ajout du document
$ajouter_documents = charger_fonction('ajouter_documents','inc');
if(!$ajouter_documents($tmp, $fichier, "article", $id_article, 'document', $id_document=0, $docs_actifs=array()))
$erreurs['document'] = _T('gis:erreur_copie_impossible');
}
}
// supprimer des documents ?
if (is_array(_request('supprimer')))
foreach (_request('supprimer') as $supprimer) {
if ($supprimer = intval($supprimer)) {
include_spip('inc/autoriser');
$supprimer_document = charger_fonction('supprimer_document','action');
$supprimer_document($supprimer);
$erreurs['document'] = _T('gis:document_supprime');
}
}
}
$form_doc = inclure_formulaire_doc_gis($id_article);
$erreurs['form_doc'] = $form_doc;
}
}
return $erreurs;
}
function formulaires_article_gis_traiter_dist(){
// signaler que l'on vient de soumettre le formulaire
// pour que charger ne remette pas les anciennes valeurs
// puisqu'on propose sa reedition dans la foulee
set_request('soumission_gis_enregistre',true);
return array('editable'=>true,'message_ok'=>_T('gis:ok_formulaire_soumis'));
}
function inclure_formulaire_doc_gis($id_article)
{
$contexte = array();
$contexte = array_merge(
$contexte,
array(
'id_article' => $id_article
)
);
return inclure_balise_dynamique(array('formulaires/documents_gis',0,$contexte),false);
}
?>