Exemplo n.º 1
0
 /**
  * Save or update a Kronolith_Resource
  *
  * @param Kronolith_Resource_Base $resource
  *
  * @return Kronolith_Resource object
  * @throws Kronolith_Exception, Horde_Exception_PermissionDenied
  */
 public function save(Kronolith_Resource_Base $resource)
 {
     if (!$GLOBALS['registry']->isAdmin() && !$GLOBALS['injector']->getInstance('Horde_Core_Perms')->hasAppPermission('resource_management')) {
         throw new Horde_Exception_PermissionDenied();
     }
     if ($resource->getId()) {
         $query = 'UPDATE ' . $this->_params['table'] . ' 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());
         try {
             $this->_db->update($query, $values);
         } catch (Horde_Db_Exception $e) {
             throw new Kronolith_Exception($e);
         }
     } else {
         $query = 'INSERT INTO ' . $this->_params['table'] . ' (resource_name, resource_calendar, ' . 'resource_description, resource_response_type, ' . ' resource_type, resource_members, resource_email)' . ' VALUES (?, ?, ?, ?, ?, ?, ?)';
         $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'));
         try {
             $id = $this->_db->insert($query, $values);
         } catch (Horde_Db_Exception $e) {
             throw new Kronolith_Exception($e);
         }
         $resource->setId($id);
     }
     return $resource;
 }