/** * @throws Kronolith_Exception */ public function execute() { switch ($this->_vars->submitbutton) { case _("Save"): $new_name = $this->_vars->get('name'); $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'); $existing_groups = $driver->getGroupMemberships($this->_resource->getId()); $new_groups = $this->_vars->get('category'); $new_groups = is_null($new_groups) ? array() : $new_groups; foreach ($existing_groups as $gid) { $i = array_search($gid, $new_groups); if ($i === false) { // No longer in this group $group = $driver->getResource($gid); $members = $group->get('members'); $idx = array_search($this->_resource->getId(), $members); if ($idx !== false) { unset($members[$idx]); reset($members); $group->set('members', $members); $group->save(); } } else { // We know it's already in the group, remove it so we don't // have to check/add it again later. unset($new_groups[$i]); } } reset($new_groups); foreach ($new_groups as $gid) { $group = $driver->getResource($gid); $members = $group->get('members'); $members[] = $this->_resource->getId(); $group->set('members', $members); $group->save(); } try { $this->_resource->save(); } catch (Exception $e) { throw new Kronolith_Exception(sprintf(_("Unable to save resource \"%s\": %s"), $new_name, $e->getMessage())); } return $this->_resource; case _("Delete"): Horde::url('resources/delete.php')->add('c', $this->_vars->c)->redirect(); break; case _("Cancel"): Horde::url($GLOBALS['prefs']->getValue('defaultview') . '.php', true)->redirect(); break; } }
/** * @throws Kronolith_Exception */ public function execute() { switch ($this->_vars->submitbutton) { case _("Save"): $new_name = $this->_vars->get('name'); $this->_resource->set('name', $new_name); $this->_resource->set('description', $this->_vars->get('description')); $this->_resource->set('members', $this->_vars->get('members')); try { $this->_resource->save(); } catch (Exception $e) { throw new Kronolith_Exception(sprintf(_("Unable to save resource \"%s\": %s"), $new_name, $e->getMessage())); } return $this->_resource; case _("Delete"): Horde::url('resources/groups/delete.php')->add('c', $this->_vars->c)->redirect(); break; case _("Cancel"): Horde::url($GLOBALS['prefs']->getValue('defaultview') . '.php', true)->redirect(); break; } }