Should fix bug when using string[] when using webservices see BT#4158

skala
Julio Montoya 13 years ago
parent afa4725985
commit b9186d6844
  1. 20
      main/webservices/client_soap.php
  2. 134
      main/webservices/registration.soap.php

@ -12,8 +12,7 @@
* *
*/ */
//exit; //Uncomment this in order to execute the page exit; //Uncomment this in order to execute the page
require_once '../inc/global.inc.php'; require_once '../inc/global.inc.php';
$libpath = api_get_path(LIBRARY_PATH); $libpath = api_get_path(LIBRARY_PATH);
@ -83,6 +82,23 @@ if (!empty($user_id) && is_numeric($user_id)) {
'secret_key' => $secret_key); 'secret_key' => $secret_key);
$result = $client->call('WSSubscribeUserToCourseSimple', array('subscribeUserToCourseSimple' => $params)); $result = $client->call('WSSubscribeUserToCourseSimple', array('subscribeUserToCourseSimple' => $params));
//4. Adding course Test to the Session Session1
$course_id_list = array (
array('course_code' => 'TEST1'),
array('course_code' => 'TEST2')
);
$params = array('coursessessions' => array(
array('original_course_id_values' => $course_id_list,
'original_course_id_name' => 'course_id_name',
'original_session_id_value' => '1',
'original_session_id_name' => 'session_id_value')
),
'secret_key' => $secret_key);
$result = $client->call('WSSuscribeCoursesToSession', array('subscribeCoursesToSession' => $params));
// ------------------------ // ------------------------
//Calling the WSSubscribeUserToCourse //Calling the WSSubscribeUserToCourse

@ -4412,7 +4412,8 @@ function WSUnsuscribeUsersFromSession($params) {
/* Register WSSuscribeCoursesToSession function */ /* Register WSSuscribeCoursesToSession function */
// Register the data structures used by the service // Register the data structures used by the service
$server->wsdl->addComplexType(
/*$server->wsdl->addComplexType(
'originalCoursesList', 'originalCoursesList',
'complexType', 'complexType',
'array', 'array',
@ -4421,8 +4422,44 @@ $server->wsdl->addComplexType(
array(), array(),
array(array('ref' => 'SOAP-ENC:arrayType', 'wsdl:arrayType' => 'string[]')), array(array('ref' => 'SOAP-ENC:arrayType', 'wsdl:arrayType' => 'string[]')),
'xsd:string' 'xsd:string'
);*/
$server->wsdl->addComplexType(
'course_code_type',
'complexType',
'struct',
'all',
'',
array(
'course_code' => array('name' => 'course_code', 'type' => 'xsd:string'),
)
);
$server->wsdl->addComplexType(
'originalCoursesList',
'complexType',
'array',
'',
'SOAP-ENC:Array',
array(),
array(array('ref' => 'SOAP-ENC:arrayType', 'wsdl:arrayType' => 'tns:course_code_type[]')),
'tns:course_code_type'
); );
$server->wsdl->addComplexType(
'subscribeCoursesToSessionParamsList',
'complexType',
'array',
'',
'SOAP-ENC:Array',
array(),
array(array('ref' => 'SOAP-ENC:arrayType', 'wsdl:arrayType' => 'tns:subscribeCoursesToSessionParams[]')),
'tns:subscribeCoursesToSessionParams'
);
$server->wsdl->addComplexType( $server->wsdl->addComplexType(
'subscribeCoursesToSessionParams', 'subscribeCoursesToSessionParams',
'complexType', 'complexType',
@ -4431,9 +4468,9 @@ $server->wsdl->addComplexType(
'', '',
array( array(
'original_course_id_values' => array('name' => 'original_course_id_values', 'type' => 'tns:originalCoursesList'), 'original_course_id_values' => array('name' => 'original_course_id_values', 'type' => 'tns:originalCoursesList'),
'original_course_id_name' => array('name' => 'original_course_id_name', 'type' => 'xsd:string'), 'original_course_id_name' => array('name' => 'original_course_id_name', 'type' => 'xsd:string'),
'original_session_id_value' => array('name' => 'original_session_id_value', 'type' => 'xsd:string'), 'original_session_id_value' => array('name' => 'original_session_id_value', 'type' => 'xsd:string'),
'original_session_id_name' => array('name' => 'original_session_id_name', 'type' => 'xsd:string') 'original_session_id_name' => array('name' => 'original_session_id_name', 'type' => 'xsd:string')
) )
); );
@ -4498,39 +4535,45 @@ $server->register('WSSuscribeCoursesToSession', // method name
// Define the method WSSuscribeCoursesToSession // Define the method WSSuscribeCoursesToSession
function WSSuscribeCoursesToSession($params) { function WSSuscribeCoursesToSession($params) {
global $debug;
if(!WSHelperVerifyKey($params)) { if (!WSHelperVerifyKey($params)) {
return return_error(WS_ERROR_SECRET_KEY); return return_error(WS_ERROR_SECRET_KEY);
} }
if ($debug) error_log('WSSuscribeCoursesToSession: '.print_r($params, 1));
// initialisation // initialisation
$tbl_session_rel_course_rel_user = Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER); $tbl_session_rel_course_rel_user = Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER);
$tbl_session = Database::get_main_table(TABLE_MAIN_SESSION); $tbl_session = Database::get_main_table(TABLE_MAIN_SESSION);
$tbl_session_rel_user = Database::get_main_table(TABLE_MAIN_SESSION_USER); $tbl_session_rel_user = Database::get_main_table(TABLE_MAIN_SESSION_USER);
$tbl_session_rel_course = Database::get_main_table(TABLE_MAIN_SESSION_COURSE); $tbl_session_rel_course = Database::get_main_table(TABLE_MAIN_SESSION_COURSE);
$tbl_course = Database::get_main_table(TABLE_MAIN_COURSE); $tbl_course = Database::get_main_table(TABLE_MAIN_COURSE);
$t_sf = Database::get_main_table(TABLE_MAIN_SESSION_FIELD); $t_sf = Database::get_main_table(TABLE_MAIN_SESSION_FIELD);
$t_sfv = Database::get_main_table(TABLE_MAIN_SESSION_FIELD_VALUES); $t_sfv = Database::get_main_table(TABLE_MAIN_SESSION_FIELD_VALUES);
$t_cfv = Database::get_main_table(TABLE_MAIN_COURSE_FIELD_VALUES); $t_cfv = Database::get_main_table(TABLE_MAIN_COURSE_FIELD_VALUES);
$t_cf = Database::get_main_table(TABLE_MAIN_COURSE_FIELD); $t_cf = Database::get_main_table(TABLE_MAIN_COURSE_FIELD);
$coursessessions_params = $params['coursessessions']; $coursessessions_params = $params['coursessessions'];
$results = array(); $results = array();
$orig_course_id_value = array(); $orig_course_id_value = array();
$orig_session_id_value = array(); $orig_session_id_value = array();
foreach($coursessessions_params as $coursesession_param) { foreach ($coursessessions_params as $coursesession_param) {
$original_session_id_value = $coursesession_param['original_session_id_value']; $original_session_id_value = $coursesession_param['original_session_id_value'];
$original_session_id_name = $coursesession_param['original_session_id_name']; $original_session_id_name = $coursesession_param['original_session_id_name'];
$original_course_id_name = $coursesession_param['original_course_id_name']; $original_course_id_name = $coursesession_param['original_course_id_name'];
$original_course_id_values = $coursesession_param['original_course_id_values']; $original_course_id_values = $coursesession_param['original_course_id_values'];
$orig_session_id_value[] = $original_session_id_value; $orig_session_id_value[] = $original_session_id_value;
// get session id from original session id
// get session id from original session id
$sql_session = "SELECT session_id FROM $t_sf sf,$t_sfv sfv WHERE sfv.field_id=sf.id AND field_variable='$original_session_id_name' AND field_value='$original_session_id_value'"; $sql_session = "SELECT session_id FROM $t_sf sf,$t_sfv sfv WHERE sfv.field_id=sf.id AND field_variable='$original_session_id_name' AND field_value='$original_session_id_value'";
if ($debug) error_log($sql_session);
$res_session = Database::query($sql_session); $res_session = Database::query($sql_session);
$row_session = Database::fetch_row($res_session); $row_session = Database::fetch_row($res_session);
$id_session = $row_session[0]; $id_session = $row_session[0];
if (empty($id_session)) { if (empty($id_session)) {
$results[] = 0; $results[] = 0;
@ -4539,11 +4582,14 @@ function WSSuscribeCoursesToSession($params) {
// Get course list from row_original_course_id_values // Get course list from row_original_course_id_values
$course_list = array(); $course_list = array();
foreach ($original_course_id_values as $row_original_course_list) { foreach ($original_course_id_values as $row_original_course_list) {
$sql_course = "SELECT course_code FROM $t_cf cf,$t_cfv cfv WHERE cfv.field_id=cf.id AND field_variable='$original_course_id_name' AND field_value = '$row_original_course_list'";
$res_course = Database::query($sql_course); $course_code = Database::escape_string($row_original_course_list['course_code']);
$row_course = Database::fetch_row($res_course);
if (empty($row_course[0])) { $sql_course = "SELECT course_code FROM $t_cf cf, $t_cfv cfv WHERE cfv.field_id=cf.id AND field_variable='$original_course_id_name' AND field_value = '$course_code'";
$res_course = Database::query($sql_course);
$row_course = Database::fetch_row($res_course);
if (empty($row_course[0])) {
continue; // course_code doesn't exist. continue; // course_code doesn't exist.
} else { } else {
$sql = "SELECT code FROM $tbl_course WHERE code ='".$row_course[0]."' AND visibility = '0'"; $sql = "SELECT code FROM $tbl_course WHERE code ='".$row_course[0]."' AND visibility = '0'";
@ -4554,17 +4600,17 @@ function WSSuscribeCoursesToSession($params) {
} }
} }
$course_list[] = $row_course[0]; $course_list[] = $row_course[0];
} }
if (empty($course_list)) { if (empty($course_list)) {
$results[] = 0; $results[] = 0;
continue; continue;
} }
$orig_course_id_value[] = implode(',', $course_list); $orig_course_id_value[] = implode(',', $course_list);
// Get general coach ID // Get general coach ID
$sql = "SELECT id_coach FROM $tbl_session WHERE id='$id_session'"; $sql = "SELECT id_coach FROM $tbl_session WHERE id='$id_session'";
$id_coach = Database::query($sql); $id_coach = Database::query($sql);
$id_coach = Database::fetch_array($id_coach); $id_coach = Database::fetch_array($id_coach);
$id_coach = $id_coach[0]; $id_coach = $id_coach[0];
@ -4577,9 +4623,8 @@ function WSSuscribeCoursesToSession($params) {
$nbr_courses=count($existingCourses); $nbr_courses=count($existingCourses);
// get list of users subscribed to this session // get list of users subscribed to this session
$sql="SELECT id_user $sql= "SELECT id_user FROM $tbl_session_rel_user
FROM $tbl_session_rel_user WHERE id_session = '$id_session' AND relation_type<>".SESSION_RELATION_TYPE_RRHH."";
WHERE id_session = '$id_session' AND relation_type<>".SESSION_RELATION_TYPE_RRHH."";
$result=Database::query($sql); $result=Database::query($sql);
$user_list=Database::store_result($result); $user_list=Database::store_result($result);
@ -4633,12 +4678,11 @@ function WSSuscribeCoursesToSession($params) {
continue; continue;
} }
$count_results = count($results); $count_results = count($results);
$output = array(); $output = array();
for($i = 0; $i < $count_results; $i++) { for ($i = 0; $i < $count_results; $i++) {
$output[] = array('original_course_id_values' => $orig_course_id_value[$i], 'original_session_id_value' => $orig_session_id_value[$i], 'result' => $results[$i]); $output[] = array('original_course_id_values' => $orig_course_id_value[$i], 'original_session_id_value' => $orig_session_id_value[$i], 'result' => $results[$i]);
} }
return $output; return $output;
} }
@ -4727,16 +4771,15 @@ function WSUnsuscribeCoursesFromSession($params) {
// Initialisation // Initialisation
$tbl_session_rel_course_rel_user = Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER); $tbl_session_rel_course_rel_user = Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER);
$tbl_session = Database::get_main_table(TABLE_MAIN_SESSION); $tbl_session = Database::get_main_table(TABLE_MAIN_SESSION);
$tbl_session_rel_user = Database::get_main_table(TABLE_MAIN_SESSION_USER);
$tbl_session_rel_course = Database::get_main_table(TABLE_MAIN_SESSION_COURSE); $tbl_session_rel_course = Database::get_main_table(TABLE_MAIN_SESSION_COURSE);
$tbl_course = Database::get_main_table(TABLE_MAIN_COURSE); $tbl_course = Database::get_main_table(TABLE_MAIN_COURSE);
$t_sf = Database::get_main_table(TABLE_MAIN_SESSION_FIELD); $t_sf = Database::get_main_table(TABLE_MAIN_SESSION_FIELD);
$t_sfv = Database::get_main_table(TABLE_MAIN_SESSION_FIELD_VALUES); $t_sfv = Database::get_main_table(TABLE_MAIN_SESSION_FIELD_VALUES);
$t_cfv = Database::get_main_table(TABLE_MAIN_COURSE_FIELD_VALUES); $t_cfv = Database::get_main_table(TABLE_MAIN_COURSE_FIELD_VALUES);
$t_cf = Database::get_main_table(TABLE_MAIN_COURSE_FIELD); $t_cf = Database::get_main_table(TABLE_MAIN_COURSE_FIELD);
$coursessessions_params = $params['coursessessions']; $coursessessions_params = $params['coursessessions'];
$results = array(); $results = array();
$orig_course_id_value = array(); $orig_course_id_value = array();
$orig_session_id_value = array(); $orig_session_id_value = array();
@ -4747,8 +4790,8 @@ function WSUnsuscribeCoursesFromSession($params) {
$original_session_id_name = $coursesession_param['original_session_id_name']; $original_session_id_name = $coursesession_param['original_session_id_name'];
$original_course_id_name = $coursesession_param['original_course_id_name']; $original_course_id_name = $coursesession_param['original_course_id_name'];
$original_course_id_values = $coursesession_param['original_course_id_values']; $original_course_id_values = $coursesession_param['original_course_id_values'];
$orig_session_id_value[] = $original_session_id_value; $orig_session_id_value[] = $original_session_id_value;
// Get session id from original session id // Get session id from original session id
$sql_session = "SELECT session_id FROM $t_sf sf,$t_sfv sfv WHERE sfv.field_id=sf.id AND field_variable='$original_session_id_name' AND field_value='$original_session_id_value'"; $sql_session = "SELECT session_id FROM $t_sf sf,$t_sfv sfv WHERE sfv.field_id=sf.id AND field_variable='$original_session_id_name' AND field_value='$original_session_id_value'";
$res_session = Database::query($sql_session); $res_session = Database::query($sql_session);
$row_session = Database::fetch_row($res_session); $row_session = Database::fetch_row($res_session);
@ -4763,7 +4806,9 @@ function WSUnsuscribeCoursesFromSession($params) {
// Get courses list from row_original_course_id_values // Get courses list from row_original_course_id_values
$course_list = array(); $course_list = array();
foreach ($original_course_id_values as $row_original_course_list) { foreach ($original_course_id_values as $row_original_course_list) {
$sql_course = "SELECT course_code FROM $t_cf cf,$t_cfv cfv WHERE cfv.field_id=cf.id AND field_variable='$original_course_id_name' AND field_value = '$row_original_course_list'"; $course_code = Database::escape_string($row_original_course_list['course_code']);
$sql_course = "SELECT course_code FROM $t_cf cf,$t_cfv cfv WHERE cfv.field_id=cf.id AND field_variable='$original_course_id_name' AND field_value = '$course_code'";
$res_course = Database::query($sql_course); $res_course = Database::query($sql_course);
$row_course = Database::fetch_row($res_course); $row_course = Database::fetch_row($res_course);
if (empty($row_course[0])) { if (empty($row_course[0])) {
@ -4810,12 +4855,11 @@ function WSUnsuscribeCoursesFromSession($params) {
continue; continue;
} }
$count_results = count($results); $count_results = count($results);
$output = array(); $output = array();
for($i = 0; $i < $count_results; $i++) { for($i = 0; $i < $count_results; $i++) {
$output[] = array('original_course_id_values' => $orig_course_id_value[$i], 'original_session_id_value' => $orig_session_id_value[$i], 'result' => $results[$i]); $output[] = array('original_course_id_values' => $orig_course_id_value[$i], 'original_session_id_value' => $orig_session_id_value[$i], 'result' => $results[$i]);
} }
return $output; return $output;
} }

Loading…
Cancel
Save