Exemple #1
0
 /**
  * Aktualizacja ról oraz grup dla profilu
  *
  * @param Base_Form_Abstract $form formularz z danymi do zapisania
  * @param integer $id id profilu
  * @return integer ilość poprawionych wierszy
  */
 public function _updateProfile($form, $id, $id_user)
 {
     $model = new User();
     $userRow = $model->findOne($id_user)->toArray();
     $profileRoleModel = new ProfileRole();
     $profileGroupModel = new ProfileGroup();
     $log = Zend_Registry::get('admin_log');
     $profileGroupModel->getAdapter()->beginTransaction();
     try {
         $select = $profileRoleModel->select()->where('id_profile = ' . $id . ' and ghost = false')->setIntegrityCheck(false);
         $dataArray = $profileRoleModel->fetchAll($select)->toArray();
         foreach ($dataArray as $key => $val) {
             $profileRoleRow = $profileRoleModel->findOne($val['id']);
             $roleModel = new Role();
             $roleData = $roleModel->findOne($val['id_role'])->toArray();
             $profileRoleRowData = $profileRoleRow->toArray();
             $log->roledelete(array('old' => $profileRoleRow));
             $profileRoleRow->delete();
         }
         $select = $profileGroupModel->select()->where('id_profile = ' . $id . ' and ghost = false')->setIntegrityCheck(false);
         $dataArray = $profileGroupModel->fetchAll($select)->toArray();
         foreach ($dataArray as $key => $val) {
             $profileGroupRow = $profileGroupModel->findOne($val['id']);
             $profileGroupRow->setFromArray(array('ghost' => 't'));
             $profileGroupRow->save();
         }
         // dodanie grupy logowania
         $groupModel = new Group();
         $logGroupRow = $groupModel->fetchRow(array('group_name = ?' => 'logowanie'));
         $profileGroupModel->insert(array('id_profile' => $id, 'id_group' => $logGroupRow->id));
         $values = $form->getValues();
         $roleModel = new Role();
         $roleNames = array();
         foreach ($values['role'] as $roleId) {
             $roleRow = $roleModel->findOne($roleId);
             $roleNames[] = $roleRow->role_name;
         }
         if (!empty($values['role'][0])) {
             $landingRole = $roleModel->findOne($values['role'][0]);
             $landing = $landingRole->landing;
         } else {
             $landing = '/login';
         }
         //            $landing = in_array('dsk', $roleNames) ? '/dsk' : '/admin';
         $profileModel = new Profile();
         $profileRow = $profileModel->findOne($id);
         $profileRow->landing = $landing;
         $profileRow->save();
         if (isset($values['role']) && !empty($values['role'])) {
             foreach ($values['role'] as $role_id) {
                 $profileRoleRow = $profileRoleModel->createRow(array('id_profile' => $id, 'id_role' => $role_id));
                 $log->roleadd(array('new' => $profileRoleRow));
                 $profileRoleRow->save();
                 $roleModel = new Role();
                 $roleData = $roleModel->findOne($role_id)->toArray();
                 $profileRoleRowData = $profileRoleRow->toArray();
                 $roleGroupModel = new RoleGroup();
                 $roleGroupsSelect = $roleGroupModel->select()->where('id_role = ?', $role_id);
                 $roleGroups = $roleGroupModel->fetchAll($roleGroupsSelect);
                 foreach ($roleGroups as $roleRow) {
                     $profileGroupRow = $profileGroupModel->createRow(array('id_profile' => $id, 'id_group' => $roleRow->id_group));
                     $profileGroupRow->save();
                 }
             }
         }
         $profileGroupModel->getAdapter()->commit();
         $cache = Zend_Controller_Front::getInstance()->getParam('bootstrap')->getResource('cachemanager')->getCache('rolecache');
         $cache->clean(Zend_Cache::CLEANING_MODE_ALL);
     } catch (Exception $e) {
         $profileGroupModel->getAdapter()->rollBack();
     }
 }