$v) { $t[$e]=trim(str_replace("\t", " ", $t[$e])); if (ereg ("([0-9]{1,2})/([0-9]{1,2})/?([0-9]{4})?-?([0-9]{1,2})?/?([0-9]{1,2})?/?([0-9]{4})? +". "([0-9]{1,2})?:?([0-9]{1,2})?-?([0-9]{1,2})?:?([0-9]{1,2})? *". '" *([^ ^"][^"]*) *" *("([^"]*)")? *("([^"]*)")? *'. '((MOTS|REP) *=.*)?', $t[$e]=trim($t[$e]), $regs)) { $evenement_horaire = true; // annee_debut omise if($regs[3]=='') $regs[3]=date('Y', time()); // annee_fin omise if($regs[6]=='') $regs[6]=$regs[3]; ; // heure_fin omise if($regs[9].$regs[10]=='') { $regs[9]=$regs[7]; $regs[10]=$regs[8]; } if ($reg[7].$reg[8].$reg[9].$reg[10]=='') $evenement_horaire=false; // date_fin omise if($regs[4].$regs[5]=='') { $regs[4]=$regs[1]; $regs[5]=$regs[2]; } // format complet for ($i=0;$i<=10;$i++) $regs[$i]=sprintf("%02d", intval($regs[$i])); // cas des REP= et MOTS= $listes = preg_split('/(MOTS|REP) *= */', $regs[16], -1, PREG_SPLIT_DELIM_CAPTURE); $rep = $mots = array(); foreach($listes as $i => $valeur) if ($i & 1) foreach($listes as $i => $valeur) if ($i & 1) { if ($valeur=='REP' && ereg('([0-9 /,]*)', $listes[$i+1], $regs2)) $rep = array_merge($rep, Agenda_retourne_liste_mots($regs2[1])); elseif ($valeur=='MOTS') $mots = array_merge($mots, Agenda_retourne_liste_mots($listes[$i+1])); } // todo : mettre les mots au format des select du formulaire normal $mots_compiles = Agenda_verifie_les_mots_clefs($mots); // mettre les repetitions au format du textarea du formulaire normal $selected_rep = ""; foreach($rep as $k=>$r){ $r =explode("/",$r); $selected_rep .= ",".sprintf('%02d',$r[1])."/".sprintf('%02d',$r[0])."/".sprintf('%04d',$r[2]); $rep[$k] = mktime($reg[7],$regs[8],null,$r[1],$r[0],$r[2]); } $selected_rep = substr($selected_rep,1); // remise en forme en doubon : idem a un post ou idem a un spip_query $t[$e]=array_merge(array( 'jour_evenement_debut' =>$regs[1], 'mois_evenement_debut' =>$regs[2], 'annee_evenement_debut' =>$regs[3], 'heure_evenement_debut' =>$regs[7], 'minute_evenement_debut' =>$regs[8], 'jour_evenement_fin' =>$regs[4], 'mois_evenement_fin' =>$regs[5], 'annee_evenement_fin' =>$regs[6], 'heure_evenement_fin' =>$regs[9], 'minute_evenement_fin' =>$regs[10], 'evenement_horaire' => $evenement_horaire, 'evenement_titre' =>$regs[11], 'evenement_lieu' =>$regs[13], 'evenement_descriptif' =>$regs[15], 'evenement_groupe_mot_select' => $mots_compiles['echo'], 'evenement_repetitions' => $rep, 'selected_date_repetitions' => $selected_rep ),$mots_compiles['post']); } else { if ($t[$e]!="") $t[$e]=array(); else unset($t[$e]); } } return $t; } // retourne le tableau des mots acceptes par groupe function Agenda_verifie_les_mots_clefs($mots_envoyes) { $les_mots_ok = $mots_compiles = array(); // on recupere tous les mots cles sur les evenements $res = spip_query("SELECT * FROM spip_groupes_mots WHERE evenements='oui'"); while ($row = spip_fetch_array($res,SPIP_ASSOC)){ $id_groupe = $row['id_groupe']; $titre = supprimer_numero($row['titre']); $res2= spip_query("SELECT * FROM spip_mots WHERE id_groupe=".spip_abstract_quote($id_groupe)); while ($row2 = spip_fetch_array($res2,SPIP_ASSOC)){ $les_mots_ok[]=array( 'nb'=>0, 'id_mot'=>$row2['id_mot'], 'titre_mot'=> $row2['titre'], 'id_groupe'=>$id_groupe, 'titre_groupe'=> $titre, 'echo' => $titre.':'.$row2['titre']); } } $mots_compiles = array('echo'=>array(),'post'=>array()); // on voit quels mots cles on retient... foreach($mots_envoyes as $mot) { if (preg_match('/((([^:]+):)?(.*))/', $mot, $regs)) foreach($les_mots_ok as $mot_ok=>$tab){ $test_mot_ok = ($tab['titre_mot']==$regs[4]) || ($tab['id_mot']==$regs[4]); $test_groupe_ok = (''==$regs[3]) || ($tab['titre_groupe']==$regs[3]) || ($tab['id_groupe']==$regs[3]); if ($test_mot_ok && $test_groupe_ok) { $mots_compiles['echo'][$tab['id_mot']] = $tab['echo']; $mots_compiles['post']["evenement_groupe_mot_select_".$tab['id_groupe']][$tab['id_mot']] = $tab['id_mot']; break; } } } return $mots_compiles; } function Agenda_formulaire_saisie_rapide_previsu() { global $spip_lang_right; $out = ""; if ($evenements_saisie_rapide = _request('evenements_saisie_rapide')){ $t = Agenda_compile_texte_saisie_rapide($evenements_saisie_rapide); $out .= "
"; //$out .= fin_cadre_enfonce(true); $out .= debut_cadre_formulaire('',true); $out .= _T('saisierapide:saisie_rapide_explications'); $out .= fin_cadre_formulaire(true); return $out; } ?>