if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
-
+include_spip('inc/formidable_fichiers');
define(
'_RACCOURCI_MODELE_FORMIDABLE',
'(<(formulaire\|formidable|formidable|form)' # <modele
if ($r[2] == 'formidable') {
$id_formulaire = $r[3];
} elseif ($r[2] == 'form') {
- $id_formulaire = sql_getfetsel('id_formulaire', 'spip_formulaires', 'identifiant='.sql_quote('form'.$r[3]));
+ $id_formulaire = sql_getfetsel(
+ 'id_formulaire',
+ 'spip_formulaires',
+ 'identifiant='.sql_quote('form'.$r[3])
+ );
} elseif ($r[2] == 'formulaire|formidable') {
$args = ltrim($r[4], '|');
$args = explode('=', $args);
if (is_numeric($args)) {
$id_formulaire = intval($args);
} else {
- $id_formulaire = sql_getfetsel('id_formulaire', 'spip_formulaires', 'identifiant='.sql_quote($args));
+ $id_formulaire = sql_getfetsel(
+ 'id_formulaire',
+ 'spip_formulaires',
+ 'identifiant='.sql_quote($args)
+ );
}
}
if ($id_formulaire = intval($id_formulaire)) {
and isset($flux['args'][$e['id_table_objet']])
and $id = $flux['args'][$e['id_table_objet']]
and sql_countsel('spip_formulaires_liens', 'objet='.sql_quote($objet).' AND id_objet='.intval($id))) {
- $flux['data'] .= recuperer_fond('prive/squelettes/inclure/formulaires_lies', array('objet' => $objet, 'id_objet' => $id));
+ $flux['data'] .= recuperer_fond(
+ 'prive/squelettes/inclure/formulaires_lies',
+ array('objet' => $objet, 'id_objet' => $id)
+ );
}
return $flux;
}
**/
function formidable_affiche_milieu($flux) {
include_spip('inc/config');
- $texte = "";
+ $texte = '';
$e = trouver_objet_exec($flux['args']['exec']);
-
+
if (!$e['edition'] and in_array($e['table_objet_sql'], lire_config('formidable/analyse/objets', array()))) {
$texte .= recuperer_fond('prive/objets/editer/liens', array(
'table_source' => 'formulaires',
'id_objet' => $flux['args'][$e['id_table_objet']]
));
}
-
+
if ($texte) {
if ($p=strpos($flux['data'], '<!--affiche_milieu-->')) {
$flux['data'] = substr_replace($flux['data'], $texte, $p, 0);
- }
- else {
+ } else {
$flux['data'] .= $texte;
}
}
-
+
return $flux;
}
'spip_formulaires',
'statut='.sql_quote('poubelle')
);
+ $res2 = sql_select(
+ 'id_formulaire AS id',
+ 'spip_formulaires',
+ 'statut='.sql_quote('poubelle')
+ );//Copie pour supprimer les fichiers
// On génère la suppression
$flux['data'] += optimiser_sansref('spip_formulaires', 'id_formulaire', $res);
+ while ($reponse = sql_fetch($res2)) {
+ $flux['data'] += formidable_effacer_fichiers_formulaire($reponse['id']);
+ }
- # les reponses qui sont associees a un formulaire inexistant
+ // les reponses qui sont associees a un formulaire inexistant
$res = sql_select(
'R.id_formulaire AS id',
'spip_formulaires_reponses AS R LEFT JOIN spip_formulaires AS F ON R.id_formulaire=F.id_formulaire',
$flux['data'] += optimiser_sansref('spip_formulaires_reponses', 'id_formulaire', $res);
-
// Les réponses qui sont à la poubelle
$res = sql_select(
- 'id_formulaires_reponse AS id',
+ 'id_formulaires_reponse AS id, id_formulaire AS form',
'spip_formulaires_reponses',
- sql_in('statut', array('refuse', 'poubelle'))
+ 'statut='.sql_quote('poubelle')
);
-
+ $res2 = sql_select(
+ 'id_formulaires_reponse AS id, id_formulaire AS form',
+ 'spip_formulaires_reponses',
+ sql_in('statut', array('refuse', 'poubelle'))
+ ); //Copie pour la suppression des fichiers des réponses, c'est idiot de pas pouvoir faire une seule requete
// On génère la suppression
$flux['data'] += optimiser_sansref('spip_formulaires_reponses', 'id_formulaires_reponse', $res);
+ while ($reponse = sql_fetch($res2)) {
+ $flux['data'] += formidable_effacer_fichiers_reponse($reponse['form'], $reponse['id']);
+ }
// les champs des reponses associes a une reponse inexistante
$res = sql_select(
'C.id_formulaires_reponse AS id',
- 'spip_formulaires_reponses_champs AS C LEFT JOIN spip_formulaires_reponses AS R ON C.id_formulaires_reponse=R.id_formulaires_reponse',
+ 'spip_formulaires_reponses_champs AS C
+ LEFT JOIN spip_formulaires_reponses AS R ON C.id_formulaires_reponse=R.id_formulaires_reponse',
'C.id_formulaires_reponse > 0 AND R.id_formulaires_reponse IS NULL'
);
$flux['data'] += optimiser_sansref('spip_formulaires_reponses_champs', 'id_formulaires_reponse', $res);
- //
- // CNIL -- Informatique et libertes
- //
- // masquer le numero IP des vieilles réponses
- //
- ## date de reference = 4 mois
- ## definir a 0 pour desactiver
- ## même constante que pour les forums
- if (!defined('_CNIL_PERIODE')) {
- define('_CNIL_PERIODE', 3600*24*31*4);
- }
+ return $flux;
+}
- if (_CNIL_PERIODE) {
- $critere_cnil = 'date<"'.date('Y-m-d', time()-_CNIL_PERIODE).'"'
- . ' AND statut != "spam"'
- . ' AND (ip LIKE "%.%" OR ip LIKE "%:%")'; # ipv4 ou ipv6
- $c = sql_countsel('spip_formulaires_reponses', $critere_cnil);
- if ($c>0) {
- spip_log("CNIL: masquer IP de $c réponses anciennes à formidable");
- sql_update('spip_formulaires_reponses', array('ip' => 'MD5(ip)'), $critere_cnil);
+/**
+ * S'assurer que le traitement email ait lieu après le traitement enregistrement
+ *
+ * @pipeline formidable_traitements
+ * @param array $flux
+ * @return array $flux
+ **/
+function formidable_formidable_traitements($flux) {
+ if (isset($flux['data']['email']) and isset($flux['data']['enregistrement'])) {
+ $keys = array_keys($flux['data']);
+ $position_email = array_search('email', $keys);
+ $position_enregistrement = array_search('enregistrement', $keys);
+
+ if ($position_enregistrement > $position_email) { // si enregistrement après email
+ $nouveau_tab = array();
+ foreach ($keys as $key) { //on reconstruit le tableau, en inversant simplement email et enregistrement
+ if ($key == 'email') {
+ $nouveau_tab['enregistrement'] = $flux['data']['enregistrement'];
+ } elseif ($key == 'enregistrement') {
+ $nouveau_tab['email'] = $flux['data']['email'];
+ } else {
+ $nouveau_tab[$key] = $flux['data'][$key];
+ }
+ }
+ $flux['data'] = $nouveau_tab;
}
}
return $flux;
}
+
+/** Hasher les ip régulièrement
+ * @param array $flux
+ * @return array $flux
+**/
+function formidable_taches_generales_cron($flux) {
+ $flux['formidable_hasher_ip'] = 24*3600;
+ $flux['formidable_effacer_fichiers_email'] = 24*3600;
+ $flux['formidable_effacer_enregistrements'] = 24*3600;
+ return $flux;
+}
+
+/** Déclarer les formulaires et les réponses
+ * au plugin corbeille
+ * @param array $flux;
+ * @return array $flux;
+**/
+function formidable_corbeille_table_infos($flux) {
+ $flux['formulaires']= array(
+ 'statut'=>'poubelle',
+ 'table'=>'formulaires',
+ 'tableliee'=>array('spip_formulaires_liens')
+ );
+ $flux['formulaires_reponses']= array(
+ 'statut'=>'poubelle',
+ 'table'=>'formulaires_reponses'
+ );
+ return $flux;
+}