@ -1,43 +1,40 @@
<?php
/**
* This files contains the common functions for the permissions
*
* A list of all the functions (in no particular order)
* ----------------------------------------------------
* store_permissions($content,$id)
* get_permissions($content,$id)
* limited_or_full($current_permissions)
* @author Patrick Cool < patrick.cool @ ugent . be > , Ghent University
* This files contains the common functions for the permissions
*
* A list of all the functions (in no particular order)
* ----------------------------------------------------
* store_permissions($content,$id)
* get_permissions($content,$id)
* limited_or_full($current_permissions)
* @author Patrick Cool < patrick.cool @ ugent . be > , Ghent University
* @package chamilo.permissions
*/
*/
/**
* This function stores the permissions in the correct table.
* Since Checkboxes are used we do not know which ones are unchecked.
* That's why we first delete them all (for the given user/group/role
* and afterwards we store the checked ones only.
* @param $content are we storing rights for a user, a group or a role (the database depends on it)
* @param $id the id of the user, group or role
* @author Patrick Cool < patrick.cool @ ugent . be > , Ghent University
* @version 1.0
*/
function store_permissions($content, $id) {
* This function stores the permissions in the correct table.
* Since Checkboxes are used we do not know which ones are unchecked.
* That's why we first delete them all (for the given user/group/role
* and afterwards we store the checked ones only.
* @param $content are we storing rights for a user, a group or a role (the database depends on it)
* @param $id the id of the user, group or role
* @author Patrick Cool < patrick.cool @ ugent . be > , Ghent University
* @version 1.0
*/
function store_permissions($content, $id)
{
$course_id = api_get_course_int_id();
// Which database are we using (depending on the $content parameter)
if ($content == 'user')
{
if ($content == 'user') {
$table = Database::get_course_table(TABLE_PERMISSION_USER);
$id_field = user_id;
}
if ($content == 'group')
{
if ($content == 'group') {
$table = Database::get_course_table(TABLE_PERMISSION_GROUP);
$id_field = group_id;
}
if ($content == 'role')
{
if ($content == 'role') {
$table = Database::get_course_table(TABLE_ROLE_PERMISSION);
$id_field = role_id;
}
@ -47,15 +44,14 @@ function store_permissions($content, $id) {
$result = Database::query($sql);
// looping through the post values to find the permission (containing the string permission* )
foreach ($_POST as $key => $value)
{
if (strstr($key, "permission*"))
{
foreach ($_POST as $key => $value) {
if (strstr($key, "permission*")) {
list($brol, $tool, $action) = explode("*", $key);
$sql = "INSERT INTO $table (c_id, $id_field,tool,action) VALUES ($course_id, '".Database::escape_string($id)."','".Database::escape_string($tool)."','".Database::escape_string($action)."')";
$result = Database::query($sql);
}
}
return get_lang('PermissionsStored');
}
@ -69,7 +65,8 @@ function store_permissions($content, $id) {
* @author Patrick Cool < patrick.cool @ ugent . be > , Ghent University
* @version 1.0
*/
function store_one_permission($content, $action, $id, $tool, $permission) {
function store_one_permission($content, $action, $id, $tool, $permission)
{
global $rights_full;
$course_id = api_get_course_int_id();
// for some reason I don't know, he can't get to the $rights_full array, so commented the following lines out.
@ -86,13 +83,11 @@ function store_one_permission($content, $action, $id, $tool, $permission) {
$table = Database::get_course_table(TABLE_PERMISSION_USER);
$id_field = user_id;
}
if ($content == 'group')
{
if ($content == 'group') {
$table = Database::get_course_table(TABLE_PERMISSION_GROUP);
$id_field = group_id;
}
if ($content == 'role')
{
if ($content == 'role') {
$table = Database::get_course_table(TABLE_ROLE_PERMISSION);
$id_field = role_id;
}
@ -105,14 +100,14 @@ function store_one_permission($content, $action, $id, $tool, $permission) {
$result_message = get_lang('PermissionGranted');
}
}
if ($action == 'revoke')
{
if ($action == 'revoke') {
$sql = "DELETE FROM $table WHERE c_id = $course_id AND $id_field = '".Database::escape_string($id)."' AND tool='".Database::escape_string($tool)."' AND action='".Database::escape_string($permission)."'";
$result = Database::query($sql);
if ($result) {
$result_message = get_lang('PermissionRevoked');
}
}
return $result_message;
}
@ -123,34 +118,26 @@ function store_one_permission($content, $action, $id, $tool, $permission) {
* @author Patrick Cool < patrick.cool @ ugent . be > , Ghent University
* @version 1.0
*/
function get_permissions($content, $id) {
function get_permissions($content, $id)
{
$course_id = api_get_course_int_id();
$currentpermissions = array();
// Which database are we using (depending on the $content parameter)
$course_id_condition = " c_id = $course_id AND ";
if ($content == 'user')
{
if ($content == 'user') {
$table = Database::get_course_table(TABLE_PERMISSION_USER);
$id_field = 'user_id';
}
elseif ($content == 'group')
{
} elseif ($content == 'group') {
$table = Database::get_course_table(TABLE_PERMISSION_GROUP);
$id_field = 'group_id';
}
elseif ($content == 'role')
{
} elseif ($content == 'role') {
$table = Database::get_course_table(TABLE_ROLE_PERMISSION);
$id_field = 'role_id';
}
elseif ($content == 'platform_role')
{
} elseif ($content == 'platform_role') {
$table = Database::get_main_table(TABLE_ROLE_PERMISSION);
$id_field = 'role_id';
$course_id_condition = '';
}
elseif ($content == 'task')
{
} elseif ($content == 'task') {
$table = Database::get_course_table(TABLE_BLOGS_TASKS_PERMISSIONS);
$id_field = 'task_id';
}
@ -162,8 +149,9 @@ function get_permissions($content, $id) {
WHERE $course_id_condition ".$id_field."='".Database::escape_string($id)."'";
$result = Database::query($sql);
while ($row = Database::fetch_array($result))
while ($row = Database::fetch_array($result)) {
$currentpermissions[$row['tool']][] = $row['action'];
}
return $currentpermissions;
}
@ -179,22 +167,16 @@ function get_permissions($content, $id) {
*/
function limited_or_full($current_permissions)
{
if (api_get_setting('permissions') == 'limited')
{
foreach ($current_permissions as $tool=>$tool_rights)
{
if (api_get_setting('permissions') == 'limited') {
foreach ($current_permissions as $tool => $tool_rights) {
// we loop through the possible permissions of a tool and unset the entry if it is view
// if it is visibility or move we have to grant the edit right
foreach ($tool_rights as $key=>$value)
{
if ($value == 'View')
{
foreach ($tool_rights as $key => $value) {
if ($value == 'View') {
unset($current_permissions[$tool][$key]);
}
if ($value == 'Visibility' OR $value == 'Move')
{
if (!in_array('Edit', $current_permissions[$tool]))
{
if ($value == 'Visibility' OR $value == 'Move') {
if (!in_array('Edit', $current_permissions[$tool])) {
$current_permissions[$tool][] = 'Edit';
}
unset($current_permissions[$tool][$key]);
@ -207,8 +189,7 @@ function limited_or_full($current_permissions)
}
return $current_permissions;
}
if (api_get_setting('permissions') == 'full')
{
if (api_get_setting('permissions') == 'full') {
return $current_permissions;
}
}
@ -277,15 +258,13 @@ function display_image_matrix($permission_array, $tool, $permission, $inherited_
{
$url = api_get_self();
$urlparameters = '';
foreach ($_GET as $key=>$value)
{
foreach ($_GET as $key => $value) {
$parameter[$key] = $value;
}
$parameter['action'] = 'grant';
$parameter['permission'] = $permission;
$parameter['tool'] = $tool;
foreach ($parameter as $key=>$value)
{
foreach ($parameter as $key => $value) {
$urlparameters .= $key.'='.$value.'& ';
}
$url = $url.'?'.$urlparameters;
@ -317,23 +296,14 @@ function display_image_matrix($permission_array, $tool, $permission, $inherited_
*/
function display_image_matrix_for_blogs($permission_array, $user_id, $tool, $permission, $inherited_permissions = array(), $course_admin = false, $editable = true)
{
if ($course_admin)
{
if ($course_admin) {
echo "\t\t\t< img src = \"../img/checkbox_on3.gif\" border = \"0\"/ title = \"".get_lang('PermissionGrantedByGroupOrRole')."\" > ";
}
else
{
if (!empty($inherited_permissions) and in_array($permission, $inherited_permissions[$tool]))
{
} else {
if (!empty($inherited_permissions) and in_array($permission, $inherited_permissions[$tool])) {
echo "\t\t\t< img src = \"../img/checkbox_on3.gif\" border = \"0\"/ title = \"".get_lang('PermissionGrantedByGroupOrRole')."\" > ";
}
else
{
if (is_array($permission_array[$tool]) AND in_array($permission, $permission_array[$tool]))
{
if ($editable)
{
} else {
if (is_array($permission_array[$tool]) AND in_array($permission, $permission_array[$tool])) {
if ($editable) {
$url = api_get_self();
$urlparameters = '';
foreach ($_GET as $key => $value)
@ -361,7 +331,7 @@ function display_image_matrix_for_blogs($permission_array, $user_id, $tool, $per
if ($editable) {
$url = api_get_self();
$urlparameters = '';
foreach ($_GET as $key=> $value) {
foreach ($_GET as $key => $value) {
$parameter[$key] = $value;
}
$parameter['action'] = 'manage_rights';
@ -402,26 +372,20 @@ function display_role_list($current_course_roles, $current_platform_roles)
// course roles
$sql = "SELECT * FROM $coures_roles_table WHERE c_id = $course_id ";
$result = Database::query($sql);
while ($row = Database::fetch_array($result))
{
if (in_array($row['role_id'], $current_course_roles))
{
while ($row = Database::fetch_array($result)) {
if (in_array($row['role_id'], $current_course_roles)) {
$checked = 'checked';
$image = 'checkbox_on2.gif';
$action = 'revoke';
}
else
{
} else {
$checked = '';
$image = 'wrong.gif';
$action = 'grant';
}
if ($setting_visualisation == 'checkbox')
{
if ($setting_visualisation == 'checkbox') {
echo "< input type = \"checkbox\" name = \"role*course*".$row['role_id']."\" $ checked > ";
}
if ($setting_visualisation == 'image')
{
if ($setting_visualisation == 'image') {
echo "< a href = \"".str_replace('&', ' & amp ; ' , $ _SERVER [ ' REQUEST_URI ' ] ) . " & amp ; action = $action&role=".$row['role_id']."&scope=course\" > < img src = \"../img/".$image."\" border = \"0\"/ > < / a > ";
}
@ -440,7 +404,8 @@ function display_role_list($current_course_roles, $current_platform_roles)
* @author Patrick Cool < patrick.cool @ ugent . be > , Ghent University
* @version 1.0
*/
function get_roles($content, $id, $scope = 'course') {
function get_roles($content, $id, $scope = 'course')
{
$course_id = api_get_course_int_id();
if ($content == 'user') {
$table = Database::get_course_table(TABLE_ROLE_USER);
@ -493,7 +458,6 @@ function get_all_roles($content = 'course') {
return $roles;
}
/**
* This function gets all the roles that are defined
* @param $content are we finding the roles for a user or a group (the database depends on it)
@ -504,7 +468,8 @@ function get_all_roles($content = 'course') {
* @author Patrick Cool < patrick.cool @ ugent . be > , Ghent University
* @version 1.0
*/
function get_roles_permissions($content, $id, $scope = 'course') {
function get_roles_permissions($content, $id, $scope = 'course')
{
$course_id = api_get_course_int_id();
if ($content == 'user') {
$table = Database::get_course_table(TABLE_ROLE_USER);
@ -531,8 +496,6 @@ function get_roles_permissions($content, $id, $scope = 'course') {
$role_condition = '';
}
$current_roles = array();
$sql = "
SELECT *
FROM
@ -563,8 +526,8 @@ function get_roles_permissions($content, $id, $scope = 'course') {
* @param $role_id the id of the role we are giving to a user or a group.
* @author Patrick Cool < patrick.cool @ ugent . be > , Ghent University
*/
function assign_role($content, $action, $id, $role_id, $scope = 'course') {
function assign_role($content, $action, $id, $role_id, $scope = 'course')
{
$course_id = api_get_course_int_id();
// Which database are we using (depending on the $content parameter)
if ($content == 'user') {
@ -598,26 +561,24 @@ function assign_role($content, $action, $id, $role_id, $scope = 'course') {
/**
* This function merges permission arrays. Each permission array has the following structure
* a permission array has a tool contanst as a key and an array as a value. This value array consists of all the permissions that are granted in that tool.
*/
* This function merges permission arrays. Each permission array has the
* following structure
* a permission array has a tool contanst as a key and an array as a value.
* This value array consists of all the permissions that are granted in that tool.
*/
function permission_array_merge($array1, $array2)
{
foreach ($array2 as $tool=>$permissions)
{
foreach ($permissions as $permissionkey=>$permissionvalue)
{
foreach ($array2 as $tool => $permissions) {
foreach ($permissions as $permissionkey => $permissionvalue) {
$array1[$tool][] = $permissionvalue;
}
}
return $array1;
}
function my_print_r($array)
{
echo '< pre > ';
print_r($array);
echo '< / pre > ';
}
?>