/** * surveypermission::surveyright() * Function responsible to process setting of permission of a user/usergroup. * @param mixed $surveyid * @return void */ function surveyright($surveyid) { $aData['surveyid'] = $surveyid = sanitize_int($surveyid); $aViewUrls = array(); $action = $_POST['action']; $clang = Yii::app()->lang; $imageurl = Yii::app()->getConfig('imageurl'); $postuserid = !empty($_POST['uid']) ? $_POST['uid'] : false; $postusergroupid = !empty($_POST['ugid']) ? $_POST['ugid'] : false; if ($action == "surveyrights") { $addsummary = "<div class='header ui-widget-header'>" . $clang->gT("Edit survey permissions") . "</div>\n"; $addsummary .= "<div class='messagebox ui-corner-all'>\n"; $where = ' '; if ($postuserid) { if (Yii::app()->session['USER_RIGHT_SUPERADMIN'] != 1) { $where .= "sid = :surveyid AND owner_id != :postuserid AND owner_id = :owner_id"; $resrow = Survey::model()->find($where, array(':sid' => $surveyid, ':owner_id' => Yii::app()->session['loginID'], ':postuserid' => $postuserid)); } } else { $where .= "sid = :sid"; $resrow = Survey::model()->find($where, array(':sid' => $surveyid)); $iOwnerID = $resrow['owner_id']; } $aBaseSurveyPermissions = Survey_permissions::model()->getBasePermissions(); $aPermissions = array(); foreach ($aBaseSurveyPermissions as $sPermissionKey => $aCRUDPermissions) { foreach ($aCRUDPermissions as $sCRUDKey => $CRUDValue) { if (!in_array($sCRUDKey, array('create', 'read', 'update', 'delete', 'import', 'export'))) { continue; } if ($CRUDValue) { if (isset($_POST["perm_{$sPermissionKey}_{$sCRUDKey}"])) { $aPermissions[$sPermissionKey][$sCRUDKey] = 1; } else { $aPermissions[$sPermissionKey][$sCRUDKey] = 0; } } } } if (isset($postusergroupid) && $postusergroupid > 0) { $oResult = User_in_groups::model()->findAll('ugid = :ugid AND uid <> :uid AND uid <> :iOwnerID', array(':ugid' => $postusergroupid, ':uid' => Yii::app()->session['loginID'], ':iOwnerID' => $iOwnerID)); if (count($oResult) > 0) { foreach ($oResult as $aRow) { Survey_permissions::model()->setPermission($aRow->uid, $surveyid, $aPermissions); } $addsummary .= "<div class=\"successheader\">" . $clang->gT("Survey permissions for all users in this group were successfully updated.") . "</div>\n"; } } else { if (Survey_permissions::model()->setPermission($postuserid, $surveyid, $aPermissions)) { $addsummary .= "<div class=\"successheader\">" . $clang->gT("Survey permissions were successfully updated.") . "</div>\n"; } else { $addsummary .= "<div class=\"warningheader\">" . $clang->gT("Failed to update survey permissions!") . "</div>\n"; } } $addsummary .= "<br/><input type=\"submit\" onclick=\"window.open('" . $this->getController()->createUrl('admin/surveypermission/sa/view/surveyid/' . $surveyid) . "', '_top')\" value=\"" . $clang->gT("Continue") . "\"/>\n"; $addsummary .= "</div>\n"; $aViewUrls['output'] = $addsummary; } $this->_renderWrappedTemplate('authentication', $aViewUrls, $aData); }
function user($ugid, $action = 'add') { if (Yii::app()->session['USER_RIGHT_SUPERADMIN'] != true || !in_array($action, array('add', 'remove'))) { die('access denied'); } $clang = Yii::app()->lang; $uid = (int) Yii::app()->request->getPost('uid'); $group = User_groups::model()->findByAttributes(array('ugid' => $ugid, 'owner_id' => Yii::app()->session['loginID'])); if (empty($group)) { list($aViewUrls, $aData) = $this->index(0, array('type' => 'warning', 'message' => $clang->gT('Failed.') . '<br />' . $clang->gT('Group not found.'))); } else { if ($uid > 0 && User::model()->findByPk($uid)) { if ($group->owner_id == $uid) { list($aViewUrls, $aData) = $this->index($ugid, array('type' => 'warning', 'message' => $clang->gT('Failed.') . '<br />' . $clang->gT('You can not add or remove the group owner from the group.'))); } $user_in_group = User_in_groups::model()->findByPk(array('ugid' => $ugid, 'uid' => $uid)); switch ($action) { case 'add': if (empty($user_in_group) && User_in_groups::model()->insertRecords(array('ugid' => $ugid, 'uid' => $uid))) { list($aViewUrls, $aData) = $this->index($ugid, array('type' => 'success', 'message' => $clang->gT('User added.'))); } else { list($aViewUrls, $aData) = $this->index($ugid, array('type' => 'warning', 'message' => $clang->gT('Failed to add user.') . '<br />' . $clang->gT('User already exists in the group.'))); } break; case 'remove': if (!empty($user_in_group) && User_in_groups::model()->deleteByPk(array('ugid' => $ugid, 'uid' => $uid))) { list($aViewUrls, $aData) = $this->index($ugid, array('type' => 'success', 'message' => $clang->gT('User removed.'))); } else { list($aViewUrls, $aData) = $this->index($ugid, array('type' => 'warning', 'message' => $clang->gT('Failed to remove user.') . '<br />' . $clang->gT('User does not exist in the group.'))); } break; } } else { list($aViewUrls, $aData) = $this->index($ugid, array('type' => 'warning', 'message' => $clang->gT('Failed.') . '<br />' . $clang->gT('User not found.'))); } } $this->_renderWrappedTemplate('usergroup', $aViewUrls, $aData); }