Initial support for resources to contain email addresses.
authorMichael J. Rubinsky <mrubinsk@horde.org>
Thu, 8 Apr 2010 18:49:05 +0000 (14:49 -0400)
committerMichael J. Rubinsky <mrubinsk@horde.org>
Thu, 8 Apr 2010 18:52:35 +0000 (14:52 -0400)
No notifications are sent, just stores the email address. Needed for
synch clients that support resource attendees.

13 files changed:
kronolith/lib/Driver/Resource.php
kronolith/lib/Forms/CreateResource.php
kronolith/lib/Forms/EditResource.php
kronolith/lib/Resource/Base.php
kronolith/resources/edit.php
kronolith/scripts/sql/kronolith.mssql.sql
kronolith/scripts/sql/kronolith.mysql.sql
kronolith/scripts/sql/kronolith.oci8.sql
kronolith/scripts/sql/kronolith.pgsql.sql
kronolith/scripts/sql/kronolith.sql
kronolith/scripts/sql/kronolith.xml
kronolith/scripts/upgrades/2010-04-08_add_resourceemail.oci8.sql [new file with mode: 0644]
kronolith/scripts/upgrades/2010-04-08_add_resourceemail.sql [new file with mode: 0644]

index 1efdd1e..16b9aec 100644 (file)
@@ -67,15 +67,15 @@ class Kronolith_Driver_Resource extends Kronolith_Driver_Sql
     public function save($resource)
     {
         if ($resource->getId()) {
-            $query = 'UPDATE kronolith_resources SET resource_name = ?, resource_calendar = ? , resource_description = ?, resource_response_type = ?, resource_type = ?, resource_members = ? WHERE resource_id = ?';
-            $values = array($this->convertToDriver($resource->get('name')), $resource->get('calendar'), $this->convertToDriver($resource->get('description')), $resource->get('response_type'), $resource->get('type'), serialize($resource->get('members')), $resource->getId());
+            $query = 'UPDATE kronolith_resources SET resource_name = ?, resource_calendar = ? , resource_description = ?, resource_response_type = ?, resource_type = ?, resource_members = ?, resource_email = ? WHERE resource_id = ?';
+            $values = array($this->convertToDriver($resource->get('name')), $resource->get('calendar'), $this->convertToDriver($resource->get('description')), $resource->get('response_type'), $resource->get('type'), serialize($resource->get('members')), $resource->get('email'), $resource->getId());
             $result = $this->_write_db->query($query, $values);
             $this->handleError($result);
         } else {
-            $query = 'INSERT INTO kronolith_resources (resource_id, resource_name, resource_calendar, resource_description, resource_response_type, resource_type, resource_members)';
-            $cols_values = ' VALUES (?, ?, ?, ?, ?, ?, ?)';
+            $query = 'INSERT INTO kronolith_resources (resource_id, resource_name, resource_calendar, resource_description, resource_response_type, resource_type, resource_members, resource_email)';
+            $cols_values = ' VALUES (?, ?, ?, ?, ?, ?, ?, ?)';
             $id = $this->_db->nextId('kronolith_resources');
-            $values = array($id, $this->convertToDriver($resource->get('name')), $resource->get('calendar'), $this->convertToDriver($resource->get('description')), $resource->get('response_type'), $resource->get('type'), serialize($resource->get('members')));
+            $values = array($id, $this->convertToDriver($resource->get('name')), $resource->get('calendar'), $this->convertToDriver($resource->get('description')), $resource->get('response_type'), $resource->get('type'), serialize($resource->get('members'), $resource->get('email')));
             $result = $this->_write_db->query($query . $cols_values, $values);
             $this->handleError($result);
             $resource->setId($id);
@@ -116,7 +116,7 @@ class Kronolith_Driver_Resource extends Kronolith_Driver_Sql
      */
     public function getResource($id)
     {
-        $query = 'SELECT resource_id, resource_name, resource_calendar, resource_description, resource_response_type, resource_type, resource_members FROM kronolith_resources WHERE resource_id = ?';
+        $query = 'SELECT resource_id, resource_name, resource_calendar, resource_description, resource_response_type, resource_type, resource_members, resource_email FROM kronolith_resources WHERE resource_id = ?';
         $results = $this->_db->getRow($query, array($id), DB_FETCHMODE_ASSOC);
         $this->handleError($results);
         if (empty($results)) {
@@ -170,7 +170,7 @@ class Kronolith_Driver_Resource extends Kronolith_Driver_Sql
             return array();
         }
 
-        $query = 'SELECT resource_id, resource_name, resource_calendar, resource_description, resource_response_type, resource_type, resource_members FROM kronolith_resources';
+        $query = 'SELECT resource_id, resource_name, resource_calendar, resource_description, resource_response_type, resource_type, resource_members, resource_email FROM kronolith_resources';
         if (count($filter)) {
             $clause = ' WHERE ';
             $i = 0;
index fd9ef25..a118007 100644 (file)
@@ -42,6 +42,7 @@ class Kronolith_CreateResourceForm extends Horde_Form
 
         $this->addVariable(_("Name"), 'name', 'text', true);
         $this->addVariable(_("Description"), 'description', 'longtext', false, false, null, array(4, 60));
+        $this->addVariable(_("Email"), 'email', 'email', false);
         $v = &$this->addVariable(_("Response type"), 'responsetype', 'enum', true, false, null, array('enum' => $responses));
         $v->setDefault(Kronolith_Resource::RESPONSETYPE_AUTO);
         $this->addVariable(_("Groups"), 'category', 'multienum', false, false, null, array('enum' => $enum));
@@ -55,17 +56,20 @@ class Kronolith_CreateResourceForm extends Horde_Form
     {
         $new = array('name' => $this->_vars->get('name'),
                      'description' => $this->_vars->get('description'),
-                     'response_type' => $this->_vars->get('responsetype'));
+                     'response_type' => $this->_vars->get('responsetype'),
+                     'email' => $this->_vars->get('email'));
         $resource = Kronolith_Resource::addResource(new Kronolith_Resource_Single($new));
 
         /* Do we need to add this to any groups? */
         $groups = $this->_vars->get('category');
-        foreach ($groups as $group_id) {
-            $group = Kronolith::getDriver('Resource')->getResource($group_id);
-            $members = $group->get('members');
-            $members[] = $resource->getId();
-            $group->set('members', $members);
-            $group->save();
+        if (!empty($groups)) {
+            foreach ($groups as $group_id) {
+                $group = Kronolith::getDriver('Resource')->getResource($group_id);
+                $members = $group->get('members');
+                $members[] = $resource->getId();
+                $group->set('members', $members);
+                $group->save();
+            }
         }
     }
 
index c738415..2885aaa 100644 (file)
@@ -50,6 +50,7 @@ class Kronolith_EditResourceForm extends Horde_Form
 
         $this->addHidden('', 'c', 'text', true);
         $this->addVariable(_("Name"), 'name', 'text', true);
+        $this->addVariable(_("Email"), 'email', 'email', false);
         $this->addVariable(_("Description"), 'description', 'longtext', false, false, null, array(4, 60));
         $this->addVariable(_("Response type"), 'responsetype', 'enum', true, false, null, array('enum' => $responses));
         $this->addVariable(_("Groups"), 'category', 'multienum', false, false, null, array('enum' => $enum));
@@ -66,6 +67,7 @@ class Kronolith_EditResourceForm extends Horde_Form
         $this->_resource->set('name', $new_name);
         $this->_resource->set('description', $this->_vars->get('description'));
         $this->_resource->set('response_type', $this->_vars->get('responsetype'));
+        $this->_resource->set('email', $this->_vars->get('email'));
 
         /* Update group memberships */
         $driver = Kronolith::getDriver('Resource');
index f6c6b03..e8ff47a 100644 (file)
@@ -54,7 +54,8 @@ abstract class Kronolith_Resource_Base
         $this->_params = array_merge(array('description' => '',
                                            'response_type' => Kronolith_Resource::RESPONSETYPE_MANUAL,
                                            'members' => '',
-                                           'calendar' => ''),
+                                           'calendar' => '',
+                                           'email' => ''),
                                      $params);
 
     }
index 60bd7f6..41d271e 100644 (file)
@@ -53,6 +53,7 @@ if ($form->validate($vars)) {
 }
 
 $vars->set('name', $resource->get('name'));
+$vars->set('email', $resource->get('email'));
 $vars->set('description', $resource->get('description'));
 $vars->set('category', Kronolith::getDriver('Resource')->getGroupMemberships($resource->getId()));
 $vars->set('responsetype', $resource->get('response_type'));
index 5b77ea0..7ef80a8 100644 (file)
@@ -91,6 +91,7 @@ CREATE TABLE kronolith_resources (
     resource_response_type INT,
     resource_type VARCHAR(255) NOT NULL,
     resource_members VARCHAR(MAX),
+    resource_email VARCHAR(255),
     
     PRIMARY KEY (resource_id)
 );
index 5c38587..ffd6d06 100644 (file)
@@ -91,6 +91,7 @@ CREATE TABLE kronolith_resources (
     resource_response_type INT,
     resource_type VARCHAR(255) NOT NULL,
     resource_members TEXT,
+    resource_email VARCHAR(255),
 
     PRIMARY KEY (resource_id)
 );
index 5848094..8e90e7b 100644 (file)
@@ -91,6 +91,7 @@ CREATE TABLE kronolith_resources (
     resource_description CLOB,
     resource_response_type NUMBER(16),
     resource_type VARCHAR2(255) NOT NULL,
+    resource_email VARCHAR2(255),
 
     resource_members CLOB,
     
index c9edefb..858b468 100644 (file)
@@ -91,6 +91,7 @@ CREATE TABLE kronolith_resources (
     resource_response_type INT,
     resource_type VARCHAR(255) NOT NULL,
     resource_members TEXT,
+    resource_email VARCHAR(255),
     
     PRIMARY KEY (resource_id)
 );
index 15f6345..0db36d5 100644 (file)
@@ -91,6 +91,7 @@ CREATE TABLE kronolith_resources (
     resource_response_type INT,
     resource_type VARCHAR(255) NOT NULL,
     resource_members TEXT,
+    resource_email VARCHAR(255),
 
     PRIMARY KEY (resource_id)
 );
index 1680f58..90f66b6 100644 (file)
     <name>resource_members</name>
     <type>clob</type>
    </field>
-   
+
+   <field>
+    <name>resource_email</name>
+    <type>text</type>
+    <length>255</length>
+   </field>
    <index>
     <name>kronolith_resources_type_idx</name>
     <field>
diff --git a/kronolith/scripts/upgrades/2010-04-08_add_resourceemail.oci8.sql b/kronolith/scripts/upgrades/2010-04-08_add_resourceemail.oci8.sql
new file mode 100644 (file)
index 0000000..0f67f38
--- /dev/null
@@ -0,0 +1 @@
+ALTER TABLE kronolith_resources ADD resource_email VARCHAR2(255);
diff --git a/kronolith/scripts/upgrades/2010-04-08_add_resourceemail.sql b/kronolith/scripts/upgrades/2010-04-08_add_resourceemail.sql
new file mode 100644 (file)
index 0000000..ca96724
--- /dev/null
@@ -0,0 +1 @@
+ALTER TABLE kronolith_resources ADD resource_email VARCHAR(255);