This patch could likely be done better - I didn't poke around to see how to 
properly feed shared_calendar's "calendar_domain" into the query - I'm not 
really sure why it has the dots changed to underscores, and didn't dig around 
enough to find out.  I have to wonder why the plugin stores that data, 
mangled or not, if it doesn't actually use it.  From a DBA perspective, I'd 
greatly prefer the domain was stored intact with the dots.

However this patch does a very effective job of allowing calendar admins to 
create public calendars that anyone on their domain can use, but nobody 
outside of their domain can see.  The problem with the current 
shared_calendars plugin is that anyone in the same webmail database can see 
every public calendar in existance.

This patch is an alternate choice to the one I sent to the users list a while 
ago which removes public calendar functionality from the shared_calendars 
plugin interface.  If you need to get the domain set correctly for each user, 
the vlogin plugin will handle that.

One final note - I'm using PostgreSQL.  If you're using MySQL without the 
ANSI-compliant quoting option enabled, you'll need to change the query to use 
MySQL's proprietary quoting style.  Simply change the \'%1\' to "%1" and the 
same for %2.


--- calendar_sql_backend.orig/calendar_functions.php    2006-02-24 
06:46:15.000000000 +0000
+++ calendar_sql_backend/calendar_functions.php 2006-02-24 09:36:58.000000000 
+0000
@@ -186,16 +186,15 @@
 function cal_sql_get_all_public_calendars_do()
 {

-   global $all_calendars_of_type_query, $color;
+   global $all_public_calendars_query, $color, $domain;


    // get database connection
    //
    $db = cal_get_database_connection();

-
-   $sql = $all_calendars_of_type_query;
-   $sql = str_replace('%1', SM_CAL_TYPE_PUBLIC, $sql);
+   $sql = $all_public_calendars_query;
+   $sql = str_replace(array('%1', '%2'), array(str_replace('.', '_', 
$domain), SM_CAL_TYPE_PUBLIC), $sql);


    $IDs = $db->getAll($sql);
diff -Naur calendar_sql_backend.orig/config.php 
calendar_sql_backend/config.php
--- calendar_sql_backend.orig/config.php        2006-02-24 06:46:16.000000000 
+0000
+++ calendar_sql_backend/config.php     2006-02-24 09:39:58.000000000 +0000
@@ -22,7 +22,7 @@
           $delete_event_queries, $update_event_query, $newline_regexp,
           $wildcard_calendar_owners_query, 
$wildcard_calendar_owners_of_type_query,
           $wildcard_calendar_readers_of_type_query,
-          $wildcard_calendar_writers_of_type_query;
+          $wildcard_calendar_writers_of_type_query, 
$all_public_calendars_query;


    // cal_dsn
@@ -78,6 +78,22 @@



+   // all_public_calendars_query
+   //
+   // The SQL query that will grap all public calendars.  For a
+   // single-domain install, this can simply query for all public
+   // calendars (previous default).  Hosts of multiple domains will
+   // most likely wish to limit the query to return only public
+   // calendars for the user's domain rather than all domains.
+   //
+   //   %1 in this query will be replaced with the user's domain
+   //   %2 in this query will be replaced with the internal
+   //      calendar type for public calendars.
+   //
+   $all_public_calendars_query = 'SELECT id FROM calendars WHERE domain = 
\'%1\' AND type = \'%2\'';
+
+
+
    // owned_calendars_query
    //
    // The SQL query that will grab all calendars the the given user owns.

Cheers,
-- 
Casey Allen Shobe | [EMAIL PROTECTED] | 206-381-2800
SeattleServer.com, Inc. | http://www.seattleserver.com


-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642
--
squirrelmail-users mailing list
Posting Guidelines: 
http://www.squirrelmail.org/wiki/MailingListPostingGuidelines
List Address: [email protected]
List Archives: 
http://news.gmane.org/thread.php?group=gmane.mail.squirrelmail.user
List Archives:  http://sourceforge.net/mailarchive/forum.php?forum_id=2995
List Info: https://lists.sourceforge.net/lists/listinfo/squirrelmail-users

Reply via email to