]*>|[^>])*)?' # |arguments (y compris des tags <...>) .'>)' # fin du modele > .'\s*(<\/a>)?' # eventuel ); /** * Trouver les liens
"*"),array($objet=>$id_objet)); $del = array(); if (count($deja)){ foreach($deja as $l){ if (isset($formulaires[$l['id_formulaire']])) unset($formulaires[$l['id_formulaire']]); else $del[] = $l['id_formulaire']; } } if (count($formulaires)){ objet_associer(array("formulaire"=>$formulaires),array($objet=>$id_objet)); } if (count($del)){ objet_dissocier(array("formulaire"=>$del),array($objet=>$id_objet)); } } return $flux; } /** * Afficher les formulaires utilises par un objet * @param $flux * @return mixed */ function formidable_affiche_droite($flux){ if ($e = trouver_objet_exec($flux['args']['exec']) AND isset($e['type']) AND $objet = $e['type'] 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)); } return $flux; } /** * Optimiser la base de donnée en enlevant les liens de formulaires supprimés * * @pipeline optimiser_base_disparus * @param array $flux * Données du pipeline * @return array * Données du pipeline */ function formidable_optimiser_base_disparus($flux){ // Les formulaires qui sont à la poubelle $res = sql_select( 'id_formulaire AS id', 'spip_formulaires', 'statut='.sql_quote('poubelle') ); // On génère la suppression $flux['data'] += optimiser_sansref('spip_formulaires', 'id_formulaire', $res); # 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", "R.id_formulaire > 0 AND F.id_formulaire IS NULL"); $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', 'spip_formulaires_reponses', sql_in('statut',array('refuse','poubelle')) ); // On génère la suppression $flux['data'] += optimiser_sansref('spip_formulaires_reponses', 'id_formulaires_reponse', $res); // 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", "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); } 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); } } return $flux; } ?>