removed a bunch of blank comment lines
[citadel.git] / webcit / preferences.c
index 02b9102b5872c9b4a8ef7baa21b016f4fbc57150..bcec00d89b9203fe369135a3dfb4fccb40232c4d 100644 (file)
@@ -1,10 +1,20 @@
 /*
  * Manage user preferences with a little help from the Citadel server.
+ *
+ * Copyright (c) 1996-2012 by the citadel.org team
+ *
+ * This program is open source software.  You can redistribute it and/or
+ * modify it under the terms of the GNU General Public License, version 3.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
  */
 
 #include "webcit.h"
 #include "webserver.h"
-#include "groupdav.h"
+#include "dav.h"
 
 HashList *PreferenceHooks;
 extern HashList *HandlerHash;
@@ -27,7 +37,7 @@ typedef struct _Preference {
        long lval;
        long decoded;
        StrBuf *DeQPed;
-}Preference;
+} Preference;
 
 void DestroyPrefDef(void *vPrefDef)
 {
@@ -46,6 +56,7 @@ void DestroyPreference(void *vPref)
        free(Pref);
 
 }
+
 void _RegisterPreference(const char *Setting, long SettingLen, 
                         const char *PrefStr, 
                         ePrefType Type, 
@@ -108,7 +119,7 @@ void GetPrefTypes(HashList *List)
                        Pref->Type = PrefType;
                        Pref->eFlatPrefType = Pref->Type->eType;
 
-                       syslog(1, "Loading [%s]with type [%ld] [\"%s\"]\n",
+                       syslog(1, "Loading [%s]with type [%d] [\"%s\"]\n",
                                ChrPtr(Pref->Key),
                                Pref->Type->eType,
                                ChrPtr(Pref->Val));
@@ -173,6 +184,20 @@ void ParsePref(HashList **List, StrBuf *ReadBuf)
                        Data->Val = NewStrBuf();
                        StrBufExtract_token(Data->Key, ReadBuf, 0, '|');
                        StrBufExtract_token(Data->Val, ReadBuf, 1, '|');
+
+                       /***************** BEGIN VILE SLEAZY HACK ************************/
+
+                       /* some users might still have this start page configured, which now breaks */
+
+                       if (    (!strcasecmp(ChrPtr(Data->Key), "startpage"))
+                               && (!strcasecmp(ChrPtr(Data->Val), "/do_template?template=summary_page"))
+                       ) {
+                               FreeStrBuf(&Data->Val);
+                               Data->Val = NewStrBufPlain(HKEY("/summary"));
+                       }
+
+                       /******************* END VILE SLEAZY HACK ************************/
+
                        if (!IsEmptyStr(ChrPtr(Data->Key)))
                        {
                                Put(*List, 
@@ -221,10 +246,8 @@ void load_preferences(void)
                serv_puts("subj|__ WebCit Preferences __");
                serv_puts("000");
        }
-       while (!Done &&
-              (StrBuf_ServGetln(ReadBuf) >= 0)) {
-               if ( (StrLength(ReadBuf)==3) && 
-                    !strcmp(ChrPtr(ReadBuf), "000")) {
+       while (!Done && (StrBuf_ServGetln(ReadBuf) >= 0)) {
+               if ( (StrLength(ReadBuf)==3) && !strcmp(ChrPtr(ReadBuf), "000")) {
                        Done = 1;
                        break;
                }
@@ -235,9 +258,11 @@ void load_preferences(void)
                serv_printf("MSG0 %ld", msgnum);
                StrBuf_ServGetln(ReadBuf);
                if (GetServerStatus(ReadBuf, NULL) == 1) {
-                       while ((StrBuf_ServGetln(ReadBuf) >= 0) && 
-                              (strcmp(ChrPtr(ReadBuf), "text") && 
-                               strcmp(ChrPtr(ReadBuf), "000"))) {
+                       while ( (StrBuf_ServGetln(ReadBuf) >= 0)
+                               && (strcmp(ChrPtr(ReadBuf), "text")
+                               && strcmp(ChrPtr(ReadBuf), "000"))
+                       ) {
+                               /* flush */
                        }
                        if (!strcmp(ChrPtr(ReadBuf), "text")) {
                                ParsePref(&WCC->hash_prefs, ReadBuf);
@@ -255,8 +280,9 @@ void load_preferences(void)
        FlushFolder(&Room);
 }
 
+
 /*
- * Goto the user's configuration room, creating it if necessary.
+ * Go to the user's configuration room, creating it if necessary.
  * returns 0 on success or nonzero upon failure.
  */
 int goto_config_room(StrBuf *Buf, folder *Room) 
@@ -315,10 +341,12 @@ void WritePrefsToServer(HashList *Hash)
                                
                                nchars = StrBufSub(SubBuf, Pref->Val, offset, nchars);
                                
-                               if (n == 0)
+                               if (n == 0) {
                                        serv_printf("%s|%s", ChrPtr(Pref->Key), ChrPtr(SubBuf));
-                               else
+                               }
+                               else {
                                        serv_printf(" %s", ChrPtr(SubBuf));
+                               }
                                
                                offset += nchars;
                                nchars = StrLength(Pref->Val) - offset;
@@ -326,16 +354,17 @@ void WritePrefsToServer(HashList *Hash)
                        }
                        
                }
-               else
+               else {
                        serv_printf("%s|%s", ChrPtr(Pref->Key), ChrPtr(Pref->Val));
+               }
                
        }
        FreeStrBuf(&SubBuf);
        DeleteHashPos(&HashPos);
 }
 
-/**
- * \brief save the modifications
+/*
+ * save the modifications
  */
 void save_preferences(void) 
 {
@@ -375,10 +404,8 @@ void save_preferences(void)
                serv_puts("subj|__ WebCit Preferences __");
                serv_puts("000");
        }
-       while (!Done &&
-              (StrBuf_ServGetln(ReadBuf) >= 0)) {
-               if ( (StrLength(ReadBuf)==3) && 
-                    !strcmp(ChrPtr(ReadBuf), "000")) {
+       while (!Done && (StrBuf_ServGetln(ReadBuf) >= 0)) {
+               if ( (StrLength(ReadBuf)==3) && !strcmp(ChrPtr(ReadBuf), "000")) {
                        Done = 1;
                        break;
                }
@@ -410,12 +437,13 @@ void save_preferences(void)
        FlushFolder(&Room);
 }
 
-/**
- * \brief query the actual setting of key in the citadel database
- * \param key config key to query
- * \param keylen length of the key string
- * \param value StrBuf-value to the key to get
- * \returns found?
+/*
+ * query the actual setting of key in the citadel database
+ *
+ * key         config key to query
+ * keylen      length of the key string
+ * value       StrBuf-value to the key to get
+ * returns:    found?
  */
 int get_pref_backend(const char *key, size_t keylen, Preference **Pref)
 {
@@ -446,49 +474,54 @@ int get_PREFERENCE(const char *key, size_t keylen, StrBuf **value)
        return Ret;
 }
 
-/**
- * \brief      Write a key into the webcit preferences database for this user
+/*
+ * Write a key into the webcit preferences database for this user
  *
- * \params     key             key whichs value is to be modified
- * \param keylen length of the key string
- * \param      value           value to set
- * \param      save_to_server  1 = flush all data to the server, 0 = cache it for now
+ * key                 key whichs value is to be modified
+ * keylen              length of the key string
+ * value               value to set
+ * save_to_server      1 = flush all data to the server, 0 = cache it for now
  */
-long compare_preference(const Preference *PrefA, 
-                       const Preference *PrefB)
+long compare_preference(const Preference *PrefA, const Preference *PrefB)
 {
        ePrefType TypeA, TypeB;
 
-       if (PrefA->Type != NULL)
+       if (PrefA->Type != NULL) {
                TypeA = PrefA->Type->eType;
-       else 
+       }
+       else {
                TypeA = PrefA->eFlatPrefType;
+       }
 
-       if (PrefB->Type != NULL)
+       if (PrefB->Type != NULL) {
                TypeB = PrefB->Type->eType;
-       else 
+       }
+       else {
                TypeB = PrefB->eFlatPrefType;
+       }
 
-       if ((TypeA != PRF_UNSET) && 
-           (TypeB != PRF_UNSET) && 
-           (TypeA != TypeB))
-       {
-               if (TypeA > TypeB)
+       if (    (TypeA != PRF_UNSET)
+               && (TypeB != PRF_UNSET)
+               && (TypeA != TypeB)
+       {
+               if (TypeA > TypeB) {
                        return 1;
-               else /* (PrefA->Type < PrefB->Type) */
+               }
+               else {  /* (PrefA->Type < PrefB->Type) */
                        return -1;
+               }
        }
 
-       if (TypeB == PRF_UNSET)
+       if (TypeB == PRF_UNSET) {
                TypeA = PRF_UNSET;
+       }
                    
        switch (TypeA)
        {
        default:
        case PRF_UNSET:
        case PRF_STRING:
-               return strcmp(ChrPtr(PrefA->Val), 
-                             ChrPtr(PrefB->Val));
+               return strcmp(ChrPtr(PrefA->Val), ChrPtr(PrefB->Val));
        case PRF_YESNO:
        case PRF_INT:
                if (PrefA->lval == PrefB->lval)
@@ -503,13 +536,14 @@ long compare_preference(const Preference *PrefA,
        }
 }
 
-/**
- * \brief      Write a key into the webcit preferences database for this user
+
+/*
+ * Write a key into the webcit preferences database for this user
  *
- * \params     key             key whichs value is to be modified
- * \param keylen length of the key string
- * \param      value           value to set
- * \param      save_to_server  1 = flush all data to the server, 0 = cache it for now
+ * key                 key which value is to be modified
+ * keylen              length of the key string
+ * value               value to set
+ * save_to_server      1 = flush all data to the server, 0 = cache it for now
  */
 void set_preference_backend(const char *key, size_t keylen, 
                            long lvalue, 
@@ -537,7 +571,7 @@ void set_preference_backend(const char *key, size_t keylen,
                Pref->Type = PrefType;
                Pref->eFlatPrefType = PrefType->eType;
                if (Pref->Type->eType != lPrefType)
-                       syslog(1, "warning: saving preference with wrong type [%s] %ld != %ld \n",
+                       syslog(1, "warning: saving preference with wrong type [%s] %d != %ld \n",
                                key, Pref->Type->eType, lPrefType);
                switch (Pref->Type->eType)
                {
@@ -837,15 +871,13 @@ void GetPreferences(HashList *Setting)
 }
 
 
-/**
- * \brief Commit new preferences and settings
+/*
+ * Commit new preferences and settings
  */
 void set_preferences(void)
 {      
        if (!havebstr("change_button")) {
-               safestrncpy(WC->ImportantMessage, 
-                           _("Cancelled.  No settings were changed."),
-                           sizeof WC->ImportantMessage);
+               AppendImportantMessage(_("Cancelled.  No settings were changed."), -1);
                display_main_menu();
                return;
        }
@@ -1068,7 +1100,6 @@ void offer_start_page(StrBuf *Target, WCTemplputParams *TP)
  */
 void change_start_page(void) 
 {
-       wcsession *WCC = WC;
        const char *pch;
        void *vHandler;
        int ProhibitSave = 0;
@@ -1096,13 +1127,9 @@ void change_start_page(void)
                                       1, 
                                       NULL);
                if (ProhibitSave == 1)
-                       StrBufAppendBufPlain(WCC->ImportantMsg,
-                                            _("This isn't allowed to become the start page."),
-                                            -1, 0);
+                       AppendImportantMessage(_("This isn't allowed to become the start page."), -1);
                else
-                       StrBufAppendBufPlain(WCC->ImportantMsg,
-                                            _("You no longer have a start page selected."),
-                                            -1, 0);
+                       AppendImportantMessage(_("You no longer have a start page selected."), -1);
                display_main_menu();
                return;
        }
@@ -1117,7 +1144,7 @@ void change_start_page(void)
                               NULL);
 
        output_headers(1, 1, 0, 0, 0, 0);
-       do_template("newstartpage", NULL);
+       do_template("newstartpage");
        wDumpContent(1);
 }
 
@@ -1212,7 +1239,3 @@ SessionDestroyModule_PREFERENCES
 {
        DeleteHash(&sess->hash_prefs);
 }
-
-
-
-/*@}*/