Ejemplo n.º 1
0
 /**
  * @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;
     }
 }
Ejemplo n.º 2
0
 /**
  * @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;
     }
 }