|
|
|
@ -1,6 +1,7 @@ |
|
|
|
|
<?php |
|
|
|
|
// Storage API |
|
|
|
|
// PHP Backend |
|
|
|
|
// CBlue SPRL, Jean-Karim Bockstael, <jeankarim@cblue.be> |
|
|
|
|
|
|
|
|
|
require_once('../inc/global.inc.php'); |
|
|
|
|
|
|
|
|
@ -14,6 +15,21 @@ switch ($_REQUEST['action']) { |
|
|
|
|
case "getall": |
|
|
|
|
print storage_getall($_REQUEST['svuser'], $_REQUEST['svcourse'], $_REQUEST['svsco']); |
|
|
|
|
break; |
|
|
|
|
case "stackpush": |
|
|
|
|
print storage_stack_push($_REQUEST['svuser'], $_REQUEST['svcourse'], $_REQUEST['svsco'], $_REQUEST['svkey'], $_REQUEST['svvalue']); |
|
|
|
|
break; |
|
|
|
|
case "stackpop": |
|
|
|
|
print storage_stack_pop($_REQUEST['svuser'], $_REQUEST['svcourse'], $_REQUEST['svsco'], $_REQUEST['svkey']); |
|
|
|
|
break; |
|
|
|
|
case "stacklength": |
|
|
|
|
print storage_stack_length($_REQUEST['svuser'], $_REQUEST['svcourse'], $_REQUEST['svsco'], $_REQUEST['svkey']); |
|
|
|
|
break; |
|
|
|
|
case "stackclear": |
|
|
|
|
print storage_stack_clear($_REQUEST['svuser'], $_REQUEST['svcourse'], $_REQUEST['svsco'], $_REQUEST['svkey']); |
|
|
|
|
break; |
|
|
|
|
case "stackgetall": |
|
|
|
|
print storage_stack_getall($_REQUEST['svuser'], $_REQUEST['svcourse'], $_REQUEST['svsco'], $_REQUEST['svkey']); |
|
|
|
|
break; |
|
|
|
|
default: |
|
|
|
|
// Do nothing |
|
|
|
|
} |
|
|
|
@ -61,4 +77,106 @@ function storage_getall($sv_user, $sv_course, $sv_sco) { |
|
|
|
|
} |
|
|
|
|
return json_encode($data); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
function storage_stack_push($sv_user, $sv_course, $sv_sco, $sv_key, $sv_value) { |
|
|
|
|
$sv_value = mysql_real_escape_string($sv_value); |
|
|
|
|
$mainDB = Database::get_main_database(); |
|
|
|
|
Database::query("start transaction"); |
|
|
|
|
$sqlorder = "select ifnull((select max(stack_order) |
|
|
|
|
from $mainDB.stored_values_stack |
|
|
|
|
where user_id= '$sv_user' |
|
|
|
|
and sco_id='$sv_sco' |
|
|
|
|
and course_id='$sv_course' |
|
|
|
|
and sv_key='$sv_key' |
|
|
|
|
), 0) as stack_order"; |
|
|
|
|
$resorder = Database::query($sqlorder); |
|
|
|
|
$row = Database::fetch_assoc($resorder); |
|
|
|
|
$stack_order = (1 + $row['stack_order']); |
|
|
|
|
$sqlinsert = "insert into $mainDB.stored_values_stack |
|
|
|
|
(user_id, sco_id, course_id, sv_key, stack_order, sv_value) |
|
|
|
|
values |
|
|
|
|
('$sv_user', '$sv_sco', '$sv_course', '$sv_key', '$stack_order', '$sv_value')"; |
|
|
|
|
$resinsert = Database::query($sqlinsert); |
|
|
|
|
if ($resorder && $resinsert) { |
|
|
|
|
Database::query("commit"); |
|
|
|
|
return 1; |
|
|
|
|
} |
|
|
|
|
else { |
|
|
|
|
Database::query("rollback"); |
|
|
|
|
return 0; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
function storage_stack_pop($sv_user, $sv_course, $sv_sco, $sv_key) { |
|
|
|
|
$mainDB = Database::get_main_database(); |
|
|
|
|
Database::query("start transaction"); |
|
|
|
|
$sqlselect = "select sv_value, stack_order |
|
|
|
|
from $mainDB.stored_values_stack |
|
|
|
|
where user_id= '$sv_user' |
|
|
|
|
and sco_id='$sv_sco' |
|
|
|
|
and course_id='$sv_course' |
|
|
|
|
and sv_key='$sv_key' |
|
|
|
|
order by stack_order desc |
|
|
|
|
limit 1"; |
|
|
|
|
$resselect = Database::query($sqlselect); |
|
|
|
|
$rowselect = Database::fetch_assoc($resselect); |
|
|
|
|
$stack_order = $rowselect['stack_order']; |
|
|
|
|
$sqldelete = "delete |
|
|
|
|
from $mainDB.stored_values_stack |
|
|
|
|
where user_id= '$sv_user' |
|
|
|
|
and sco_id='$sv_sco' |
|
|
|
|
and course_id='$sv_course' |
|
|
|
|
and sv_key='$sv_key' |
|
|
|
|
and stack_order='$stack_order'"; |
|
|
|
|
$resdelete = Database::query($sqldelete); |
|
|
|
|
if ($resselect && $resdelete) { |
|
|
|
|
Database::query("commit"); |
|
|
|
|
return $rowselect['sv_value']; |
|
|
|
|
} |
|
|
|
|
else { |
|
|
|
|
Database::query("rollback"); |
|
|
|
|
return null; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
function storage_stack_length($sv_user, $sv_course, $sv_sco, $sv_key) { |
|
|
|
|
$mainDB = Database::get_main_database(); |
|
|
|
|
$sql = "select count(*) as length |
|
|
|
|
from $mainDB.stored_values_stack |
|
|
|
|
where user_id= '$sv_user' |
|
|
|
|
and sco_id='$sv_sco' |
|
|
|
|
and course_id='$sv_course' |
|
|
|
|
and sv_key='$sv_key'"; |
|
|
|
|
$res = Database::query($sql); |
|
|
|
|
$row = Database::fetch_assoc($res); |
|
|
|
|
return $row['length']; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
function storage_stack_clear($sv_user, $sv_course, $sv_sco, $sv_key) { |
|
|
|
|
$mainDB = Database::get_main_database(); |
|
|
|
|
$sql = "delete |
|
|
|
|
from $mainDB.stored_values_stack |
|
|
|
|
where user_id= '$sv_user' |
|
|
|
|
and sco_id='$sv_sco' |
|
|
|
|
and course_id='$sv_course' |
|
|
|
|
and sv_key='$sv_key'"; |
|
|
|
|
$res = Database::query($sql); |
|
|
|
|
return mysql_num_rows($res); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
function storage_stack_getall($sv_user, $sv_course, $sv_sco, $sv_key) { |
|
|
|
|
$mainDB = Database::get_main_database(); |
|
|
|
|
$sql = "select stack_order as stack_order, sv_value as value |
|
|
|
|
from $mainDB.stored_values_stack |
|
|
|
|
where user_id= '$sv_user' |
|
|
|
|
and sco_id='$sv_sco' |
|
|
|
|
and course_id='$sv_course' |
|
|
|
|
and sv_key='$sv_key'"; |
|
|
|
|
$res = Database::query($sql); |
|
|
|
|
$results = array(); |
|
|
|
|
while ($row = Database::fetch_assoc($res)) { |
|
|
|
|
$results[] = $row; |
|
|
|
|
} |
|
|
|
|
return json_encode($results); |
|
|
|
|
} |
|
|
|
|
?> |
|
|
|
|