X-Git-Url: https://git.cyclocoop.org/?a=blobdiff_plain;f=www%2Fplugins%2Fauto%2Ffullcalendar%2Fexec%2Ffullcalendar_edit.php;fp=www%2Fplugins%2Fauto%2Ffullcalendar%2Fexec%2Ffullcalendar_edit.php;h=67a1b44ce78fc6823f7b0b26f679e00b2f40ea7a;hb=80b4d3e85f78d402ed2e73f8f5d1bf4c19962eed;hp=0000000000000000000000000000000000000000;hpb=aaf970bf4cdaf76689ecc10609048e18d073820c;p=velocampus%2Fweb%2Fwww.git
diff --git a/www/plugins/auto/fullcalendar/exec/fullcalendar_edit.php b/www/plugins/auto/fullcalendar/exec/fullcalendar_edit.php
new file mode 100644
index 0000000..67a1b44
--- /dev/null
+++ b/www/plugins/auto/fullcalendar/exec/fullcalendar_edit.php
@@ -0,0 +1,900 @@
+";
+ while ($row = sql_fetch($res)) {
+ $LISTE .= "
".$row['nom']."
";
+ if($row['type']=='mysql')
+ $LISTE_CALENDRIER.="";
+ }
+ }
+ sql_free($res);
+
+ ######################
+ # Ajout d'un mot clé #
+ ######################
+
+ if(
+ $_POST['action_to_take']=='add_mot'
+ && $_POST['ajouter']
+ && $_POST['id_calendrier']
+ && strlen($_POST['id_mot'])
+ ){
+ $INFO=" "._T('fullcalendar:action_mot_add').".
";
+ sql_insert('spip_fullcalendar_events', '(id_fullcalendar, lien)', "(".sql_quote(intval($_POST['id_calendrier'])).", ".sql_quote(intval($_POST['id_mot'])).")");
+ }
+
+ #######################
+ # Modifier le mot clé #
+ #######################
+
+ if(
+ $_POST['action_to_take']=='update_mot'
+ && $_POST['ajouter']
+ && $_POST['id_calendrier']
+ && strlen($_POST['id_mot'])
+ ){
+ $INFO=" "._T('fullcalendar:action_mot_edit').".
";
+ sql_update('spip_fullcalendar_events', array('lien' => sql_quote(intval($_POST['id_mot'])) ), "id_fullcalendar=".sql_quote(intval($_POST['id_calendrier'])) );
+ }
+
+ ########################
+ # Ajout d'une rubrique #
+ ########################
+
+ if(
+ $_POST['action_to_take']=='add_rubrique'
+ && $_POST['ajouter']
+ && $_POST['id_calendrier']
+ && strlen($_POST['id_rubrique'])
+ ){
+ $INFO=" "._T('fullcalendar:action_rub_add').".
";
+ sql_insert('spip_fullcalendar_events', '(id_fullcalendar, lien)', "(".sql_quote(intval($_POST['id_calendrier'])).", ".sql_quote(intval($_POST['id_rubrique'])).")");
+ }
+
+ ########################
+ # Modifier la rubrique #
+ ########################
+
+ if(
+ $_POST['action_to_take']=='update_rubrique'
+ && $_POST['ajouter']
+ && $_POST['id_calendrier']
+ && strlen($_POST['id_rubrique'])
+ ){
+ $INFO=" "._T('fullcalendar:action_rub_edit').".
";
+ sql_update('spip_fullcalendar_events', array('lien' => sql_quote(intval($_POST['id_rubrique'])) ), "id_fullcalendar=".sql_quote(intval($_POST['id_calendrier'])) );
+ }
+
+ ##########################
+ # Ajout d'une clé Google #
+ ##########################
+
+ if(
+ $_POST['action_to_take']=='add'
+ && $_POST['ajouter']
+ && $_POST['id_calendrier']
+ && strlen($_POST['gcalID'])
+ ){
+ $INFO=" "._T('fullcalendar:action_key_add').".
";
+ sql_insert('spip_fullcalendar_events', '(id_fullcalendar, lien)', "(".sql_quote(intval($_POST['id_calendrier'])).", ".sql_quote($_POST['gcalID']).")");
+ }
+
+ ##########################
+ # Modifier la clé Google #
+ ##########################
+
+ if(
+ $_POST['action_to_take']=='update'
+ && $_POST['ajouter']
+ && $_POST['id_calendrier']
+ && strlen($_POST['gcalID'])
+ ){
+ $INFO=" "._T('fullcalendar:action_key_edit').".
";
+ sql_update('spip_fullcalendar_events', array('lien' => sql_quote(trim($_POST['gcalID'])) ), "id_fullcalendar=".sql_quote(intval($_POST['id_calendrier'])) );
+ }
+
+ ##############################
+ # Ajout d'un évènement MySQL #
+ ##############################
+
+ if(
+ $_POST['action_to_take']=='AddEvent'
+ && strlen($_POST['Nom_Evenement'])
+ && $_POST['id_calendrier']
+ ){
+
+ $t = explode('/',$_POST['Date']);
+ $date = $t['2'].'-'.$t['1'].'-'.$t['0'];
+ $t = explode('/',$_POST['Date_Fin']);
+ $date_fin = $t['2'].'-'.$t['1'].'-'.$t['0'];
+ unset($t);
+
+ sql_insert("spip_fullcalendar_events",
+ "(id_fullcalendar, id_style, titre, lien, start, end)",
+ "(
+ ".sql_quote(intval($_POST['id_calendrier'])).",
+ ".sql_quote(intval($_POST['id_style'])).",
+ ".sql_quote($_POST['Nom_Evenement']).",
+ ".sql_quote($_POST['Lien_Evenement']).",
+ ".sql_quote($date." ".$_POST['HeureDebut'].":00").",
+ ".sql_quote($date_fin." ".$_POST['HeureFin'].":00")."
+ )");
+
+ $INFO=" "._T('fullcalendar:event_add').".
";
+
+ }
+
+ ###############################
+ # Modification d'un évènement #
+ ###############################
+
+ if(
+ $_POST['action_to_take']=='EditEvent'
+ && strlen($_POST['Nom_Evenement'])
+ && strlen($_POST['id_evenement'])
+ && $_POST['id_calendrier']
+ ){
+
+ $t = explode('/',$_POST['Date']);
+ $date = $t[2].'-'.$t[1].'-'.$t[0];
+ $t = explode('/',$_POST['Date_Fin']);
+ $date_fin = $t[2].'-'.$t[1].'-'.$t[0];
+ unset($t);
+
+ sql_update('spip_fullcalendar_events',
+ array(
+ 'id_fullcalendar' => sql_quote($_POST['id_calendrier']),
+ 'id_style' => sql_quote($_POST['id_style']),
+ 'titre' => sql_quote($_POST['Nom_Evenement']),
+ 'lien' => sql_quote(trim($_POST['Lien_Evenement'])),
+ 'start' => sql_quote($date." ".$_POST['HeureDebut'].":00"),
+ 'end' => sql_quote($date_fin." ".$_POST['HeureFin'].":00")
+ ),
+ "id_event=".sql_quote(intval($_POST['id_evenement']))
+ );
+
+ $INFO=" "._T('fullcalendar:event_edit').".
";
+
+ }
+
+ #######################
+ # Efface un évènement #
+ #######################
+
+ if(
+ $_POST['action_to_take']=='del'
+ && $_POST['id_calendrier']
+ && $_POST['id_evenement']
+ ){
+ sql_delete("spip_fullcalendar_events", "id_event=".sql_quote(intval($_POST['id_evenement'])) );
+ $INFO=" "._T('fullcalendar:event_del')."
";
+ }
+
+ #################################
+ # Calendrier en cours d'édition #
+ #################################
+
+ $req = sql_select('*', 'spip_fullcalendar_main', 'id_fullcalendar='.$id_fullcalendar);
+ $num_calendar = sql_count($req);
+ if(!$num_calendar) $INFO=""._T('fullcalendar:unknown_error')."
";
+ else {
+
+ $row = sql_fetch($req);
+ $id = $row['id_fullcalendar'];
+ $type = $row['type'];
+ $nom = $row['nom'];
+ sql_free($req);
+
+ # Récupère les styles pour les évènements
+
+ $req = sql_select('*', 'spip_fullcalendar_styles');
+ $num_style = sql_count($req);
+ if(!$num_style) $STYLES=_T('fullcalendar:no_style');
+ else {
+ $STYLES=""._T('fullcalendar:event_style').":
";
+ }
+
+ $LISTE_CALENDRIER.='';
+
+ if($type=='mysql'){
+
+ # Modification d'un évènement
+
+ if(
+ $_POST['action_to_take']=='edit'
+ && $_POST['id_evenement']
+ ){
+
+ $req = sql_select('*', 'spip_fullcalendar_events', array('id_fullcalendar='.$id_fullcalendar, 'id_event='.intval($_POST['id_evenement'])) );
+ $rw = sql_fetch($req);
+ sql_free($req);
+
+ $NOM=$rw['titre'];
+ $LIEN=$rw['lien'];
+
+ $ACTION='EditEvent';
+ $ID_EVENEMENT=$_POST['id_evenement'];
+ $DATE = DateFromMysql(substr($rw['start'],0,10));
+ $DATE_FIN = DateFromMysql(substr($rw['end'],0,10));
+ $START = substr($rw['start'],11,5);
+ $END = substr($rw['end'],11,5);
+ $BUTTON = "";
+
+ } else {
+
+ $ACTION='AddEvent';
+ $ID_EVENEMENT='';
+ $DATE=(strlen($_POST['Date'])==10)?stripslashes($_POST['Date']):Date("d/m/Y");
+ $DATE_FIN=(strlen($_POST['Date_Fin'])==10)?stripslashes($_POST['Date_Fin']):Date("d/m/Y");
+ $START=(strlen($_POST['HeureDebut'])==5)?stripslashes($_POST['HeureDebut']):Date("H:m");
+ $END=(strlen($_POST['HeureFin'])==5)?stripslashes($_POST['HeureFin']):Date("H:m");
+ $BUTTON = "";
+
+ }
+
+ # Récupère les style css
+ $HTML.="";
+
+ # Récupère les évènements du calendrier MySQL
+
+ $events='';
+ $req = sql_select('*', 'spip_fullcalendar_events', 'id_fullcalendar='.$id_fullcalendar, '', 'start ASC');
+ $num_events = sql_count($req);
+ if(!$num_events) $INFO.=_T('fullcalendar:no_event');
+ else {
+
+ $HTML.="
+
+
+
+
+ ";
+
+ $entete="
+ "._T('fullcalendar:event_title')." |
+ "._T('fullcalendar:event_start')." |
+ "._T('fullcalendar:event_end')." |
+ |
+
";
+
+ while ($row = sql_fetch($req)) {
+
+ $date = substr($row['start'],0,10);
+ $date_fin = substr($row['end'],0,10);
+ $start = substr($row['start'],11,5);
+ $end = substr($row['end'],11,5);
+ $class=$url=$lien_start=$lien_end='';
+
+ $fc_date = explode('-',substr($row['start'],0,10));
+ $fc_date_fin = explode('-',substr($row['end'],0,10));
+ $fc_start = explode(':',substr($row['start'],11,5));
+ $fc_end = explode(':',substr($row['end'],11,5));
+
+ if($row['id_style']>0){
+ $class=",backgroundColor: '".$style[$row['id_style']]['back']."', textColor: '".$style[$row['id_style']]['text']."', borderColor: '".$style[$row['id_style']]['bord']."'";
+ } else $class='';
+
+ if(strlen(trim($row['lien']))){
+ $lien_start="";
+ $lien_end="";
+ }
+
+ $bloc='';
+ $t=substr($date,5,2);
+ if($bloc_mois!=$t){
+ $bloc_mois=$t;
+ $annee=substr($date,0,4);
+ $bloc.="
+ ".MyMonth($t)." ".$annee."
+ |
".$entete;
+ }
+
+ $url="url:\"javascript:ModifierEvenement('".$row['id_event']."')\",";
+
+ $events.="{title: '".texte_script($row['titre'])."',start: new Date(".$fc_date[0].", ".($fc_date[1]-1).", ".$fc_date[2].", ".$fc_start[0].", ".$fc_start[1]."),end: new Date(".$fc_date_fin[0].", ".($fc_date_fin[1]-1).", ".$fc_date_fin[2].", ".$fc_end[0].", ".$fc_end[1]."),".$url." allDay: false ".$class."},";
+
+ $HTML.= "$bloc
+ ".$lien_start."".$row['titre']."".$lien_end." |
+ ".MyDateEnLettre ($date)." ".$start." |
+ ".MyDateEnLettre ($date_fin)." ".$end." |
+
+
+
+ |
+
+ ";
+
+ }
+ sql_free($req);
+ $HTML.="
";
+
+ $events=substr($events,0,strlen($events)-1);
+
+ }
+
+
+ $INTERFACE="
+
+
+ ";
+
+
+ } else if($type=='google') {
+
+ $INFO=""._T('fullcalendar:google_agenda')."
"._T('fullcalendar:google_agenda_info')."
".$INFO;
+
+ # Récupère le lien Google dans les évènements
+
+ $req = sql_select('lien', 'spip_fullcalendar_events', 'id_fullcalendar='.$id);
+ if(sql_count($req)){ # Une clé est déjà renseignée
+ $rw = sql_fetch($req);
+ sql_free($req);
+ $gcalID=$rw['lien'];
+ $URL_AGENDA = "http://www.google.com/calendar/feeds/".$rw['lien']."/public/basic";
+ $ACTION='update';
+ $BUTTON = "";
+ } else { # on ajoute la clé
+ $ACTION='add';
+ $gcalID='';
+ $BUTTON = "";
+ }
+
+
+ $INTERFACE='
+ ';
+
+ } else if($type=='rub') {
+
+ $INFO=""._T('fullcalendar:rub_agenda')."
"._T('fullcalendar:rub_agenda_info')."
".$INFO;
+
+ # Récupère le secteur utilisé pour les évènements
+
+ $req = sql_select('lien', 'spip_fullcalendar_events', 'id_fullcalendar='.$id);
+ if(sql_count($req)){ # Une rubrique est déjà renseignée
+ $rw = sql_fetch($req);
+ $ID_MOT=intval($rw['lien']);
+ sql_free($req);
+ $ACTION='update_rubrique';
+ $BUTTON = "";
+ } else { # on ajoute la clé
+ $ACTION='add_rubrique';
+ $ID_MOT='';
+ $BUTTON = "";
+ }
+
+ # Rubriques du site (contenant des articles)
+
+ $LISTE_RUBRIQUES='';
+
+ $req = sql_select(
+ array(
+ "DISTINCT R.id_rubrique",
+ "R.titre" ),
+ array(
+ "spip_rubriques AS R",
+ "spip_articles AS A" ),
+ array(
+ "R.id_parent=0",
+ "R.id_rubrique=A.id_rubrique",
+ "R.id_parent=0" ),
+ "",
+ "R.titre ASC");
+
+ if(sql_count($req)){
+
+ while ($row = sql_fetch($req)) {
+ $LISTE_RUBRIQUES.="";
+ }
+ sql_free($req);
+
+ }
+
+ $INTERFACE="
+ ";
+
+ # dans le cas de sous-rubriques, récupère les ids des rubriques filles
+
+ $req = sql_select(
+ array(
+ "id_rubrique",
+ ),
+ array(
+ "spip_rubriques" ),
+ array(
+ "id_parent='".$ID_MOT."'"
+ ),
+ "",
+ "");
+
+ while ($row = sql_fetch($req)) {
+ $ID_RUBRIQUES.="'".$row['id_rubrique']."',";
+ }
+
+ $ID_RUBRIQUES.="'".$ID_MOT."'";
+
+ # Récupère les article liés à ce secteur/rubrique
+
+ $req = sql_select(
+ array(
+ "A.id_article",
+ "A.titre",
+ "A.date",
+ "A.date_redac" ),
+ array(
+ "spip_articles AS A",
+ "spip_rubriques AS R" ),
+ array(
+ "A.id_rubrique IN (".$ID_RUBRIQUES.")",
+ "A.id_rubrique=R.id_rubrique" ),
+ "",
+ "A.date ASC");
+
+ $num_events = sql_count($req);
+ if(!$num_events) $INFO.=_T('fullcalendar:no_event');
+ else {
+ $HTML="
+
+
+
+ "._T('fullcalendar:event_title')." |
+ "._T('fullcalendar:event_start')." |
+ "._T('fullcalendar:event_end')." |
+
";
+ while ($row = sql_fetch($req)) {
+ $date = substr($row['date'],0,10);
+ $date_fin = substr($row['date_redac'],0,10);
+ $start = substr($row['date'],11,5);
+ $end = substr($row['date_redac'],11,5);
+ $erreur = ($date_fin=="0000-00-00")?' ortho':'';
+ # repère un incohérence dans les dates
+ $test_debut = $row['date'];
+ $test_fin = $row['date_redac'];
+ $diff = strtotime($test_fin) - strtotime($test_debut); // Ecart en secondes
+ if($diff<0){
+ $erreur =' ortho';
+ $end.="<- "._T('fullcalendar:event_error')."";
+ }
+ $HTML.= "
+ ".supprimer_numero($row['titre'])." |
+ ".MyDateEnLettre ($date)." ".$start." |
+ ".MyDateEnLettre ($date_fin)." ".$end." |
+
";
+ }
+ sql_free($req);
+ $HTML.="
";
+ }
+
+ } else if($type=='article') {
+
+ $INFO=""._T('fullcalendar:mot_agenda')."
"._T('fullcalendar:mot_agenda_info')."
".$INFO;
+
+ # Récupère le mot clé dans les évènements
+
+ $req = sql_select('lien', 'spip_fullcalendar_events', 'id_fullcalendar='.$id);
+ if(sql_count($req)){ # Un mot clé est déjà renseigné
+ $rw = sql_fetch($req);
+ $ID_MOT=intval($rw['lien']);
+ sql_free($req);
+ $ACTION='update_mot';
+ $BUTTON = "";
+ } else { # on ajoute la clé
+ $ACTION='add_mot';
+ $ID_MOT='';
+ $BUTTON = "";
+ }
+
+ # Mots clés du site (des groupes liés aux articles)
+
+ $LISTE_MOTS='';
+
+ $req = sql_select(
+ array(
+ "M.id_mot",
+ "M.titre" ),
+ array(
+ "spip_mots AS M",
+ "spip_groupes_mots AS G" ),
+ array(
+ "M.id_groupe=G.id_groupe",
+ "G.tables_liees like '%articles%'" ),
+ "",
+ "M.titre ASC");
+
+ if(sql_count($req)){
+
+ while ($row = sql_fetch($req)) {
+ $LISTE_MOTS.="";
+ }
+ sql_free($req);
+
+ }
+
+ $INTERFACE="
+ ";
+
+ # Récupère les article liés à ce mot clé
+
+ $req = sql_select(
+ array(
+ "A.id_article",
+ "A.titre",
+ "A.date",
+ "A.date_redac" ),
+ array(
+ "spip_articles AS A",
+ "spip_mots_articles AS M" ),
+ array(
+ "M.id_mot='".$ID_MOT."'",
+ "A.id_article=M.id_article" ),
+ "",
+ "A.date ASC");
+
+ $num_events = sql_count($req);
+ if(!$num_events) $INFO.=_T('fullcalendar:no_event');
+ else {
+ $HTML="
+
+
+
+ "._T('fullcalendar:event_title')." |
+ "._T('fullcalendar:event_start')." |
+ "._T('fullcalendar:event_end')." |
+
";
+
+ while ($row = sql_fetch($req)) {
+ $date = substr($row['date'],0,10);
+ $date_fin = substr($row['date_redac'],0,10);
+ $start = substr($row['date'],11,5);
+ $end = substr($row['date_redac'],11,5);
+ $erreur = ($date_fin=="0000-00-00")?' ortho':'';
+ # repère un incohérence dans les dates
+ $test_debut = $row['date'];
+ $test_fin = $row['date_redac'];
+ $diff = strtotime($test_fin) - strtotime($test_debut); // Ecart en secondes
+ if($diff<0){
+ $erreur =' ortho';
+ $end.="<- "._T('fullcalendar:event_error')."";
+ }
+ $HTML.= "
+ ".supprimer_numero($row['titre'])." |
+ ".MyDateEnLettre ($date)." ".$start." |
+ ".MyDateEnLettre ($date_fin)." ".$end." |
+
";
+ }
+ sql_free($req);
+ $HTML.="
";
+ }
+
+ }
+
+ }
+
+ $commencer_page = charger_fonction('commencer_page', 'inc');
+ print $commencer_page(_T('fullcalendar:fullcalendar'), "", "") ;
+ print "
";
+ print gros_titre(_T('fullcalendar:fullcalendar')." : "._T('fullcalendar:gestion_evenements'),'',false);
+ print debut_gauche ("",true);
+
+ print debut_boite_info(true);
+ print ""._T('fullcalendar:fullcalendar')."";
+ print "
";
+ print $INFO;
+ print fin_boite_info(true);
+
+ print debut_cadre_enfonce('',true,'','','');
+ print "";
+ print fin_cadre_enfonce(true);
+
+ print debut_cadre_enfonce('',true,'','','');
+ print "";
+ print fin_cadre_enfonce(true);
+
+ print debut_cadre_enfonce('',true,'','','');
+ print "";
+ print fin_cadre_enfonce(true);
+
+ if(strlen($LISTE)){
+ print debut_cadre_enfonce('',true,'',_T('fullcalendar:vos_calendriers'),'');
+ print $LISTE;
+ print fin_cadre_enfonce(true);
+ }
+
+ print creer_colonne_droite('',true);
+ print debut_droite("", true);
+ print debut_cadre_trait_couleur("", true, "", $titre=$nom,"","");
+
+ # INTERFACE D'AJOUT
+
+ print $INTERFACE;
+
+ # GESTION DES EVENEMENTS
+
+ if(($type=='mysql'||$type=='article'||$type=='rub')
+ && strlen($HTML)
+ ){
+ print debut_cadre_relief("", false,"", $titre = _T('fullcalendar:tous_evenements'));
+ print $HTML;
+ print fin_cadre_relief(false);
+ }else if(strlen($URL_AGENDA)){
+ print debut_cadre_enfonce('',true,'',_T('fullcalendar:flux'),'');
+ print _T('fullcalendar:votre_lien')." : ".$URL_AGENDA."";
+ print "";
+ print fin_cadre_enfonce(true);
+
+ }
+
+ print fin_cadre_trait_couleur(true);
+
+ print fin_gauche();
+ print fin_page();
+
+}
+
+function MyMonth($v){
+ $mois = array("","Janvier","Février","Mars","Avril","Mai","Juin","Juillet","Août","Septembre","Octobre","Novembre","Décembre");
+ $v=intval($v);
+ return $mois[$v];
+}
+
+/* Formate un DATETIME mysql en locale fr */
+
+function MyDateEnLettre ($MyDate,$digit=5){
+ $jour = array("","Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi", "Dimanche");
+ $day_arr = array("","Mon","Tue","Wed","Thu","Fri","Sat","Sun");
+ $mois = array("","Janvier","Février","Mars","Avril","Mai","Juin","Juillet","Août","Septembre","Octobre","Novembre","Décembre");
+ $t=explode('-', $MyDate);
+ $Y=$t[0];
+ $M=(strlen($t[1])<2)?"0".$t[1]:$t[1];
+ $D=(strlen($t[2])<2)?"0".$t[2]:$t[2];
+ $day=date("D", mktime(0,0,0,$M,$D,$Y));
+ $date=$day.":".$D.":".$M.":".$Y;
+ $date_tmp = explode(':', $date);
+ $day = $date_tmp[0];
+ for ($d=1;$d<=7;$d++)
+ if(strstr($day,$day_arr[$d])) $n=$d;
+ if($digit>=1) $return = $jour[$n].' ';
+ if($digit>=2) $return .= $date_tmp[1]+0;
+ if($digit>=3) $return .= ($date_tmp[1]==1)?'er':'';
+ if($digit>=4) $return .= ' '.$mois[$date_tmp[2]+0];
+ if($digit>=5) $return .= ' '.$date_tmp[3];
+ return $return;
+}
+
+/* Formate une date mysql vers locale fr */
+
+function DateFromMysql ($date){
+ $t=explode('-', $date);
+ return $t['2'].'/'.$t['1'].'/'.$t['0'];
+}
+
+?>