Example #1
0
 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});
             }
         }
     }
 }
Example #2
0
 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.')));
 }