public function editAction() { //"route":"admin_default","module":"authorization","controller":"level","action":"edit" //return $this->_helper->redirector->gotoRoute(array('route'=>'admin_default','module'=>'authorization','controller'=>'level', 'action' => 'edit')); $id = $this->_getParam('id', null); $this->view->user = $user = $this->_helper->api()->user()->getUser($id); $this->view->form = $form = new User_Form_Admin_Manage_Edit(); if ($user->level_id == 1 && count(Engine_Api::_()->user()->getSuperAdmins()) == 1) { $form->removeElement('level_id'); } // Posting form if ($this->getRequest()->isPost()) { if ($form->isValid($this->getRequest()->getPost())) { $user->setFromArray($form->getValues()); $user->save(); } $this->_forward('success', 'utility', 'core', array('smoothboxClose' => true, 'parentRefresh' => true, 'format' => 'smoothbox', 'messages' => array('Member Edited.'))); } else { foreach ($form->getElements() as $name => $element) { if (_ENGINE_ADMIN_NEUTER && $name == 'email') { continue; } if (isset($user->{$name})) { $element->setValue($user->{$name}); } } } }
public function editAction() { $id = $this->_getParam('id', null); $user = Engine_Api::_()->getItem('user', $id); $userLevel = Engine_Api::_()->getItem('authorization_level', $user->level_id); $viewer = Engine_Api::_()->user()->getViewer(); $viewerLevel = Engine_Api::_()->getItem('authorization_level', $viewer->level_id); $superAdminLevels = Engine_Api::_()->getItemTable('authorization_level')->fetchAll(array('flag = ?' => 'superadmin')); if (!$user || !$userLevel || !$viewer || !$viewerLevel) { return $this->_helper->redirector->gotoRoute(array('action' => 'index')); } $this->view->user = $user; $this->view->form = $form = new User_Form_Admin_Manage_Edit(array('userIdentity' => $id)); // Do not allow editing level if the last superadmin if ($userLevel->flag == 'superadmin' && count(Engine_Api::_()->user()->getSuperAdmins()) == 1) { $form->removeElement('level_id'); } // Do not allow admins to change to super admin if ($viewerLevel->flag != 'superadmin' && $form->getElement('level_id')) { if ($userLevel->flag == 'superadmin') { $form->removeElement('level_id'); } else { foreach ($superAdminLevels as $superAdminLevel) { unset($form->getElement('level_id')->options[$superAdminLevel->level_id]); } } } // Get values $values = $user->toArray(); unset($values['password']); if (_ENGINE_ADMIN_NEUTER) { unset($values['email']); } // Get networks $select = Engine_Api::_()->getDbtable('membership', 'network')->getMembershipsOfSelect($user); $networks = Engine_Api::_()->getDbtable('networks', 'network')->fetchAll($select); $values['network_id'] = $oldNetworks = array(); foreach ($networks as $network) { $values['network_id'][] = $oldNetworks[] = $network->getIdentity(); } $table = Engine_Api::_()->getApi('core', 'fields')->getTable('user', 'values'); $select = $table->select(); $select->where('field_id = ?', 1); $select->where('item_id = ?', $user->getIdentity()); $value_profile = $table->fetchRow($select); if ($value_profile) { $profile_id = $value_profile->value; } if ($profile_id == null) { $profile_id = 1; } $values['profile_type'] = $profile_id; // Populate form $form->populate($values); // Check method/valid if (!$this->getRequest()->isPost()) { return; } if (!$form->isValid($this->getRequest()->getPost())) { return; } $values = $form->getValues(); // Check password validity if (empty($values['password']) && empty($values['password_conf'])) { unset($values['password']); unset($values['password_conf']); } else { if ($values['password'] != $values['password_conf']) { return $form->getElement('password')->addError('Passwords do not match.'); } else { unset($values['password_conf']); } } // Process $oldValues = $user->toArray(); // Set new network $userNetworks = $values['network_id']; unset($values['network_id']); if ($userNetworks == NULL) { $userNetworks = array(); } $joinIds = array_diff($userNetworks, $oldNetworks); foreach ($joinIds as $id) { $network = Engine_Api::_()->getItem('network', $id); $network->membership()->addMember($user)->setUserApproved($user)->setResourceApproved($user); } $leaveIds = array_diff($oldNetworks, $userNetworks); foreach ($leaveIds as $id) { $network = Engine_Api::_()->getItem('network', $id); if (!is_null($network)) { $network->membership()->removeMember($user); } } // Check for null usernames if ($values['username'] == '') { // If value is "NULL", then set to zend Null $values['username'] = new Zend_Db_Expr("NULL"); } $user->setFromArray($values); $user->save(); // Send a notification that the account has been approved if (!$oldValues['enabled'] && $values['enabled']) { Engine_Api::_()->getApi('mail', 'core')->sendSystem($user, 'user_account_approved', array('host' => $_SERVER['HTTP_HOST'], 'email' => $user->email, 'date' => time(), 'recipient_title' => $user->getTitle(), 'recipient_link' => $user->getHref(), 'recipient_photo' => $user->getPhotoUrl('thumb.icon'), 'object_link' => Zend_Controller_Front::getInstance()->getRouter()->assemble(array(), 'user_login', true))); // Send hook to add activity Engine_Hooks_Dispatcher::getInstance()->callEvent('onUserEnable', $user); } else { if ($oldValues['enabled'] && !$values['enabled']) { // @todo ? } } $newProfileType = $values['profile_type']; if ($value_profile) { $value_profile->value = $newProfileType; $value_profile->save(); } // Forward return $this->_forward('success', 'utility', 'core', array('smoothboxClose' => true, 'parentRefresh' => true, 'format' => 'smoothbox', 'messages' => array('Your changes have been saved.'))); }