From 1b05a2b5bbcb0f365d90f61e1441c40b2ce362e4 Mon Sep 17 00:00:00 2001 From: Stephanie King Date: Wed, 18 Jul 2012 12:12:02 -0400 Subject: [PATCH 1/2] Fixed issue #6312: Editing Survey Security Permissions as non-super-admin and non-survey owner throws PHP Fatal Error --- admin/html.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/admin/html.php b/admin/html.php index 4350fd28104..a2191ec8339 100644 --- a/admin/html.php +++ b/admin/html.php @@ -1474,7 +1474,7 @@ $addsummary = "
".$clang->gT("Add User")."
\n"; $addsummary .= "
\n"; - $query = "SELECT sid, owner_id FROM ".db_table_name('surveys')." WHERE sid = {$surveyid} AND owner_id = ".$_SESSION['loginID']." AND owner_id != ".$postuserid; + $query = "SELECT sid, owner_id FROM ".db_table_name('surveys')." WHERE sid = {$surveyid} AND owner_id != ".$postuserid; $result = db_execute_assoc($query); //Checked if( ($result->RecordCount() > 0 && in_array($postuserid,getuserlist('onlyuidarray'))) || $_SESSION['USER_RIGHT_SUPERADMIN'] == 1) @@ -1522,7 +1522,7 @@ $addsummary = "
".$clang->gT("Add user group")."
\n"; $addsummary .= "
\n"; - $query = "SELECT sid, owner_id FROM ".db_table_name('surveys')." WHERE sid = {$surveyid} AND owner_id = ".$_SESSION['loginID']; + $query = "SELECT sid, owner_id FROM ".db_table_name('surveys')." WHERE sid = {$surveyid}"; $result = db_execute_assoc($query); //Checked if( ($result->RecordCount() > 0 && in_array($postusergroupid,getsurveyusergrouplist('simpleugidarray'))) || $_SESSION['USER_RIGHT_SUPERADMIN'] == 1) { @@ -1582,7 +1582,7 @@ $addsummary = "
".$clang->gT("Deleting User")."
\n"; $addsummary .= "
\n"; - $query = "SELECT sid, owner_id FROM ".db_table_name('surveys')." WHERE sid = {$surveyid} AND owner_id = ".$_SESSION['loginID']." AND owner_id != ".$postuserid; + $query = "SELECT sid, owner_id FROM ".db_table_name('surveys')." WHERE sid = {$surveyid} AND owner_id != ".$postuserid; $result = db_execute_assoc($query); //Checked if($result->RecordCount() > 0 || $_SESSION['USER_RIGHT_SUPERADMIN'] == 1) { @@ -1609,7 +1609,7 @@ if($action == "setsurveysecurity" || $action == "setusergroupsurveysecurity") { - $query = "SELECT sid, owner_id FROM ".db_table_name('surveys')." WHERE sid = {$surveyid} AND owner_id = ".$_SESSION['loginID']; + $query = "SELECT sid, owner_id FROM ".db_table_name('surveys')." WHERE sid = {$surveyid}"; if ($action == "setsurveysecurity") { $query.= " AND owner_id != ".$postuserid; From 62efe55b236fdaefb7762b8b9bb2fc65d23fa98f Mon Sep 17 00:00:00 2001 From: Stephanie King Date: Fri, 20 Jul 2012 10:43:10 -0400 Subject: [PATCH 2/2] Fixed Issue #6312 - Editing Survey Security Permissions as non-super-admin and non-survey owner throws PHP Fatal Error deleted unecessary if-blocks underneath "addsurveysecurity", "addusergroupsurveysecurity", "delsurveysecurity", and "setsurveysecurity" The logic under "if (action=="surveysecurity")" already took care of all permissions, so those were not needed. --- admin/html.php | 180 +++++++++++++++++++------------------------------ 1 file changed, 69 insertions(+), 111 deletions(-) diff --git a/admin/html.php b/admin/html.php index a2191ec8339..652f2389325 100644 --- a/admin/html.php +++ b/admin/html.php @@ -1474,12 +1474,6 @@ $addsummary = "
".$clang->gT("Add User")."
\n"; $addsummary .= "
\n"; - $query = "SELECT sid, owner_id FROM ".db_table_name('surveys')." WHERE sid = {$surveyid} AND owner_id != ".$postuserid; - $result = db_execute_assoc($query); //Checked - if( ($result->RecordCount() > 0 && in_array($postuserid,getuserlist('onlyuidarray'))) || - $_SESSION['USER_RIGHT_SUPERADMIN'] == 1) - { - if($postuserid > 0){ $isrquery = "INSERT INTO {$dbprefix}survey_permissions (sid,uid,permission,read_p) VALUES ({$surveyid},{$postuserid},'survey',1)"; @@ -1508,11 +1502,6 @@ . "
" . $clang->gT("No Username selected.")."
\n"; $addsummary .= "
gT("Continue")."\"/>\n"; } - } - else - { - include("access_denied.php"); - } $addsummary .= "
\n"; } @@ -1522,57 +1511,48 @@ $addsummary = "
".$clang->gT("Add user group")."
\n"; $addsummary .= "
\n"; - $query = "SELECT sid, owner_id FROM ".db_table_name('surveys')." WHERE sid = {$surveyid}"; - $result = db_execute_assoc($query); //Checked - if( ($result->RecordCount() > 0 && in_array($postusergroupid,getsurveyusergrouplist('simpleugidarray'))) || $_SESSION['USER_RIGHT_SUPERADMIN'] == 1) - { - if($postusergroupid > 0){ - $query2 = "SELECT b.uid FROM (SELECT uid FROM ".db_table_name('survey_permissions')." WHERE sid = {$surveyid}) AS c RIGHT JOIN ".db_table_name('user_in_groups')." AS b ON b.uid = c.uid WHERE c.uid IS NULL AND b.ugid = {$postusergroupid}"; - $result2 = db_execute_assoc($query2); //Checked - if($result2->RecordCount() > 0) + if($postusergroupid > 0){ + $query2 = "SELECT b.uid FROM (SELECT uid FROM ".db_table_name('survey_permissions')." WHERE sid = {$surveyid}) AS c RIGHT JOIN ".db_table_name('user_in_groups')." AS b ON b.uid = c.uid WHERE c.uid IS NULL AND b.ugid = {$postusergroupid}"; + $result2 = db_execute_assoc($query2); //Checked + if($result2->RecordCount() > 0) + { + while ($row2 = $result2->FetchRow()) { - while ($row2 = $result2->FetchRow()) - { - $uid_arr[] = $row2['uid']; - $isrquery = "INSERT INTO {$dbprefix}survey_permissions (sid,uid,permission,read_p) VALUES ({$surveyid}, {$row2['uid']},'survey',1) "; - $isrresult = $connect->Execute($isrquery); //Checked - if (!$isrresult) break; - } + $uid_arr[] = $row2['uid']; + $isrquery = "INSERT INTO {$dbprefix}survey_permissions (sid,uid,permission,read_p) VALUES ({$surveyid}, {$row2['uid']},'survey',1) "; + $isrresult = $connect->Execute($isrquery); //Checked + if (!$isrresult) break; + } - if($isrresult) - { - $addsummary .= "
".$clang->gT("User Group added.")."
\n"; - $_SESSION['uids'] = $uid_arr; - $addsummary .= "
" + if($isrresult) + { + $addsummary .= "
".$clang->gT("User Group added.")."
\n"; + $_SESSION['uids'] = $uid_arr; + $addsummary .= "
" ."" ."" ."" ."
\n"; - } - else - { - // Error while adding user to the database - $addsummary .= "
".$clang->gT("Failed to add User Group.")."
\n"; - $addsummary .= "
gT("Continue")."\"/>\n"; - } } else { - // no user to add + // Error while adding user to the database $addsummary .= "
".$clang->gT("Failed to add User Group.")."
\n"; $addsummary .= "
gT("Continue")."\"/>\n"; } } else { - $addsummary .= "
".$clang->gT("Failed to add user.")."
\n" - . "
" . $clang->gT("No Username selected.")."
\n"; + // no user to add + $addsummary .= "
".$clang->gT("Failed to add User Group.")."
\n"; $addsummary .= "
gT("Continue")."\"/>\n"; } } else { - include("access_denied.php"); + $addsummary .= "
".$clang->gT("Failed to add user.")."
\n" + . "
" . $clang->gT("No Username selected.")."
\n"; + $addsummary .= "
gT("Continue")."\"/>\n"; } $addsummary .= "
\n"; } @@ -1582,57 +1562,40 @@ $addsummary = "
".$clang->gT("Deleting User")."
\n"; $addsummary .= "
\n"; - $query = "SELECT sid, owner_id FROM ".db_table_name('surveys')." WHERE sid = {$surveyid} AND owner_id != ".$postuserid; - $result = db_execute_assoc($query); //Checked - if($result->RecordCount() > 0 || $_SESSION['USER_RIGHT_SUPERADMIN'] == 1) + if (isset($postuserid)) { - if (isset($postuserid)) - { - $dquery="DELETE FROM".db_table_name('survey_permissions')." WHERE uid={$postuserid} AND sid={$surveyid}"; // added by Dennis - $dresult=$connect->Execute($dquery); //Checked + $dquery="DELETE FROM".db_table_name('survey_permissions')." WHERE uid={$postuserid} AND sid={$surveyid}"; // added by Dennis + $dresult=$connect->Execute($dquery); //Checked - $addsummary .= "
".$clang->gT("Username").": ".sanitize_xss_string($_POST['user'])."

\n"; - $addsummary .= "
".$clang->gT("Success!")."
\n"; - } - else - { - $addsummary .= "
".$clang->gT("Could not delete user. User was not supplied.")."
\n"; - } - $addsummary .= "
gT("Continue")."\"/>\n"; + $addsummary .= "
".$clang->gT("Username").": ".sanitize_xss_string($_POST['user'])."

\n"; + $addsummary .= "
".$clang->gT("Success!")."
\n"; } else { - include("access_denied.php"); + $addsummary .= "
".$clang->gT("Could not delete user. User was not supplied.")."
\n"; } + $addsummary .= "
gT("Continue")."\"/>\n"; $addsummary .= "
\n"; } if($action == "setsurveysecurity" || $action == "setusergroupsurveysecurity") { - $query = "SELECT sid, owner_id FROM ".db_table_name('surveys')." WHERE sid = {$surveyid}"; + $js_admin_includes[]='../scripts/jquery/jquery.tablesorter.min.js'; + $js_admin_includes[]='scripts/surveysecurity.js'; if ($action == "setsurveysecurity") { - $query.= " AND owner_id != ".$postuserid; + $sUsername=$connect->GetOne("select users_name from ".db_table_name('users')." where uid={$postuserid}"); + $usersummary = "
".sprintf($clang->gT("Edit survey permissions for user %s"),"".$sUsername."")."
"; } - $result = db_execute_assoc($query); //Checked - if($result->RecordCount() > 0 || $_SESSION['USER_RIGHT_SUPERADMIN'] == 1) + else { - $js_admin_includes[]='../scripts/jquery/jquery.tablesorter.min.js'; - $js_admin_includes[]='scripts/surveysecurity.js'; - if ($action == "setsurveysecurity") - { - $sUsername=$connect->GetOne("select users_name from ".db_table_name('users')." where uid={$postuserid}"); - $usersummary = "
".sprintf($clang->gT("Edit survey permissions for user %s"),"".$sUsername."")."
"; - } - else - { - $sUsergroupName=$connect->GetOne("select name from ".db_table_name('user_groups')." where ugid={$postusergroupid}"); - $usersummary = "
".sprintf($clang->gT("Edit survey permissions for group %s"),"".$sUsergroupName."")."
"; - } - $usersummary .= "
\n" + $sUsergroupName=$connect->GetOne("select name from ".db_table_name('user_groups')." where ugid={$postusergroupid}"); + $usersummary = "
".sprintf($clang->gT("Edit survey permissions for group %s"),"".$sUsergroupName."")."
"; + } + $usersummary .= "
\n" . "\n"; - $usersummary .= "" + $usersummary .= "" . "\n" . "\n" . "\n" @@ -1645,54 +1608,49 @@ //content - $aBasePermissions=aGetBaseSurveyPermissions(); - $oddcolumn=false; - foreach($aBasePermissions as $sPermissionKey=>$aCRUDPermissions) + $aBasePermissions=aGetBaseSurveyPermissions(); + $oddcolumn=false; + foreach($aBasePermissions as $sPermissionKey=>$aCRUDPermissions) + { + $oddcolumn=!$oddcolumn; + $usersummary .= ""; + $usersummary .= ""; + $usersummary .= ""; + foreach ($aCRUDPermissions as $sCRUDKey=>$CRUDValue) { - $oddcolumn=!$oddcolumn; - $usersummary .= ""; - $usersummary .= ""; - $usersummary .= ""; - foreach ($aCRUDPermissions as $sCRUDKey=>$CRUDValue) - { - if (!in_array($sCRUDKey,array('create','read','update','delete','import','export'))) continue; - $usersummary .= "
".$clang->gT("Permission")."".$clang->gT("Create")."
{$aCRUDPermissions['title']}
{$aCRUDPermissions['title']}"; + if (!in_array($sCRUDKey,array('create','read','update','delete','import','export'))) continue; + $usersummary .= ""; - if ($CRUDValue) + if ($CRUDValue) + { + if (!($sPermissionKey=='survey' && $sCRUDKey=='read')) { - if (!($sPermissionKey=='survey' && $sCRUDKey=='read')) - { - $usersummary .= "" - ."" - .""; + $usersummary .= "\n
" + ."

" + ."" + .""; - if ($action=='setsurveysecurity') - { - $usersummary .=""; - } - else - { - $usersummary .=""; - } - $usersummary .= "

\n"; + if ($action=='setsurveysecurity') + { + $usersummary .=""; } else { - include("access_denied.php"); + $usersummary .=""; } + $usersummary .= "\n"; } // This is the action to export the structure of a complete survey