/** * 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(); } }