Issue #306 - Web-services: Cleaning code, pass 1.

skala
Ivan Tcholakov 16 years ago
parent b23d9bc628
commit a08f0cd983
  1. 42
      main/webservices/courses_list.rest.php
  2. 38
      main/webservices/courses_list.soap.php
  3. 6
      main/webservices/http-auth.php
  4. 1595
      main/webservices/registration.soap.php
  5. 130
      main/webservices/user_import/import.lib.php
  6. 56
      main/webservices/user_import/service.php
  7. 49
      main/webservices/user_info.soap.php

@ -9,7 +9,9 @@
* See license terms in /dokeos_license.txt
* @author Yannick Warnier <yannick.warnier@dokeos.com>
*/
require_once('../inc/global.inc.php');
require_once '../inc/global.inc.php';
/**
* Get a list of courses (code, url, title, teacher, language) and return to caller
* Function registered as service. Returns strings in UTF-8.
@ -17,20 +19,20 @@ require_once('../inc/global.inc.php');
* @param mixed Array or string. Type of visibility of course (public, public-registered, private, closed)
* @return array Courses list (code=>[title=>'title',url='http://...',teacher=>'...',language=>''],code=>[...],...)
*/
function courses_list($security_key,$visibilities='public') {
function courses_list($security_key, $visibilities = 'public') {
global $_configuration;
// check if this script is launch by server and if security key is ok
if ( $security_key != $_configuration['security_key'] )
{
return array('error_msg'=>'Security check failed');
// Check if this script is launch by server and if security key is ok.
if ($security_key != $_configuration['security_key']) {
return array('error_msg' => 'Security check failed');
}
// Libraries
require_once api_get_path(LIBRARY_PATH).'course.lib.php';
// libraries
require_once (api_get_path(LIBRARY_PATH).'course.lib.php');
$charset = api_get_setting('platform_charset');
$vis = array('public'=>'3', 'public-registered'=>'2', 'private'=>'1', 'closed'=>'0');
$vis = array('public' => '3', 'public-registered' => '2', 'private' => '1', 'closed' => '0');
$courses_list = array();
@ -39,14 +41,13 @@ function courses_list($security_key,$visibilities='public') {
$visibilities = array($tmp);
}
foreach ($visibilities as $visibility) {
if (!in_array($visibility,array_keys($vis))) {
return array('error_msg'=>'Security check failed');
if (!in_array($visibility, array_keys($vis))) {
return array('error_msg' => 'Security check failed');
}
$courses_list_tmp = CourseManager::get_courses_list(null,null,null,null,$vis[$visibility]);
foreach ( $courses_list_tmp as $index => $course )
{
$courses_list_tmp = CourseManager::get_courses_list(null, null, null, null, $vis[$visibility]);
foreach ($courses_list_tmp as $index => $course) {
$course_info = CourseManager::get_course_information($course['code']);
$courses_list[$course['code']] = array('title'=>api_convert_encoding($course_info['title'],'UTF-8',$charset),'url'=>api_get_path(WEB_COURSE_PATH).$course_info['directory'].'/','teacher'=>api_convert_encoding($course_info['tutor_name'],'UTF-8',$charset),'language'=>$course_info['course_language']);
$courses_list[$course['code']] = array('title' => api_convert_encoding($course_info['title'], 'UTF-8', $charset), 'url' => api_get_path(WEB_COURSE_PATH).$course_info['directory'].'/', 'teacher' => api_convert_encoding($course_info['tutor_name'], 'UTF-8', $charset), 'language' => $course_info['course_language']);
}
}
return $courses_list;
@ -56,14 +57,11 @@ header('Content-Type: text/xml; charset=utf-8');
echo '<?xml version="1.0"?>';
echo '<courseslist>';
if(empty($_POST['security-key']) or empty($_POST['visibility']))
{
if (empty($_POST['security-key']) || empty($_POST['visibility'])) {
echo '<errormsg>Invalid parameters, this script expects a security-key and a visibility parameters</errormsg>';
}
else
{
$courses_list = courses_list($_POST['security-key'],$_POST['visibility']);
foreach ( $courses_list as $code => $cd ) {
} else {
$courses_list = courses_list($_POST['security-key'], $_POST['visibility']);
foreach ($courses_list as $code => $cd) {
echo '<course>';
echo '<code>' , $code , '</code>';
echo '<title>' , $cd['title'] , '</title>';

@ -54,8 +54,8 @@ $server->wsdl->addComplexType(
$server->register('DokeosWSCourseList', // method name
array('username' => 'xsd:string',
'signature' => 'xsd:string',
'visibilities' => 'xsd:string'), // input parameters
array('return' => 'xsd:Array'), // output parameters
'visibilities' => 'xsd:string'), // input parameters
array('return' => 'xsd:Array'), // output parameters
'urn:WSCourseList', // namespace
'urn:WSCourseList#DokeosWSCourseList', // soapaction
'rpc', // style
@ -72,17 +72,18 @@ $server->register('DokeosWSCourseList', // method name
* @param mixed Array or string. Type of visibility of course (public, public-registered, private, closed)
* @return array Courses list (code=>[title=>'title',url='http://...',teacher=>'...',language=>''],code=>[...],...)
*/
function DokeosWSCourseList($username, $signature, $visibilities='public') { if (empty($username) or empty($signature)) { return -1; }
function DokeosWSCourseList($username, $signature, $visibilities = 'public') {
if (empty($username) or empty($signature)) { return -1; }
require_once (api_get_path(LIBRARY_PATH).'course.lib.php');
require_once (api_get_path(LIBRARY_PATH).'usermanager.lib.php');
require_once api_get_path(LIBRARY_PATH).'course.lib.php';
require_once api_get_path(LIBRARY_PATH).'usermanager.lib.php';
global $_configuration;
$info = api_get_user_info_from_username($username);
$user_id = $info['user_id'];
if (!UserManager::is_admin($user_id)) { return -1; }
$list = UserManager::get_api_keys($user_id,'dokeos');
$list = UserManager::get_api_keys($user_id, 'dokeos');
$key = '';
foreach ($list as $key) {
break;
@ -91,32 +92,33 @@ function DokeosWSCourseList($username, $signature, $visibilities='public') {
$local_key = $username.$key;
if (!api_is_valid_secret_key($signature, $local_key)) {
return -1; //secret key is incorrect
return -1; // The secret key is incorrect.
}
// libraries
// Libraries
require_once (api_get_path(LIBRARY_PATH).'course.lib.php');
$charset = api_get_setting('platform_charset');
$vis = array('public'=>'3', 'public-registered'=>'2', 'private'=>'1', 'closed'=>'0');
$vis = array('public' => '3', 'public-registered' => '2', 'private' => '1', 'closed' => '0');
$courses_list = array();
if (!is_array($visibilities)) {
$visibilities = split(',',$visibilities);
$visibilities = split(',', $visibilities);
}
foreach ($visibilities as $visibility) {
if (!in_array($visibility,array_keys($vis))) {
return array('error_msg'=>'Security check failed');
if (!in_array($visibility, array_keys($vis))) {
return array('error_msg' => 'Security check failed');
}
$courses_list_tmp = CourseManager::get_courses_list(null,null,null,null,$vis[$visibility]);
foreach ( $courses_list_tmp as $index => $course ) {
$courses_list_tmp = CourseManager::get_courses_list(null, null, null, null, $vis[$visibility]);
foreach ($courses_list_tmp as $index => $course) {
$course_info = CourseManager::get_course_information($course['code']);
$courses_list[] = array('code'=>$course['code'],'title'=>api_convert_encoding($course_info['title'],'UTF-8',$charset),'url'=>api_get_path(WEB_COURSE_PATH).$course_info['directory'].'/','teacher'=>api_convert_encoding($course_info['tutor_name'],'UTF-8',$charset),'language'=>$course_info['course_language']);
$courses_list[] = array('code' => $course['code'],'title' => api_convert_encoding($course_info['title'], 'UTF-8', $charset), 'url' => api_get_path(WEB_COURSE_PATH).$course_info['directory'].'/', 'teacher' => api_convert_encoding($course_info['tutor_name'], 'UTF-8', $charset), 'language' => $course_info['course_language']);
}
}
return $courses_list;
}
// Use the request to (try to) invoke the service
// Use the request to (try to) invoke the service.
$HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : '';
$server->service($HTTP_RAW_POST_DATA);
$server->service($HTTP_RAW_POST_DATA);

@ -22,7 +22,7 @@ $A2 = md5("{$_SERVER['REQUEST_METHOD']}:{$digestParts['uri']}");
$validResponse = md5("{$A1}:{$digestParts['nonce']}:{$digestParts['nc']}:{$digestParts['cnonce']}:{$digestParts['qop']}:{$A2}");
if ($digestParts['response']!=$validResponse)
if ($digestParts['response'] != $validResponse)
requireLogin($realm,$nonce);
else {
// We're in!
@ -60,7 +60,7 @@ function requireLogin($realm,$nonce) {
// This function extracts the separate values from the digest string
function digestParse($digest) {
// protect against missing data
$needed_parts = array('nonce'=>1, 'nc'=>1, 'cnonce'=>1, 'qop'=>1, 'username'=>1, 'uri'=>1, 'response'=>1);
$needed_parts = array('nonce' => 1, 'nc' => 1, 'cnonce' => 1, 'qop' => 1, 'username' => 1, 'uri' => 1, 'response' => 1);
$data = array();
preg_match_all('@(\w+)=(?:(?:")([^"]+)"|([^\s,$]+))@', $digest, $matches, PREG_SET_ORDER);
@ -71,5 +71,3 @@ function digestParse($digest) {
}
return $needed_parts ? false : $data;
}
?>

File diff suppressed because it is too large Load Diff

@ -1,71 +1,58 @@
<?php
/**
* validate the imported data
* Validates imported data.
*/
function validate_data($users)
{
function validate_data($users) {
global $defined_auth_sources;
$errors = array ();
$usernames = array ();
foreach ($users as $index => $user)
{
//1. check if mandatory fields are set
foreach ($users as $index => $user) {
// 1. Check whether mandatory fields have been set.
$mandatory_fields = array ('LastName', 'FirstName');
if (api_get_setting('registration', 'email') == 'true')
{
if (api_get_setting('registration', 'email') == 'true') {
$mandatory_fields[] = 'Email';
}
foreach ($mandatory_fields as $key => $field)
{
if (!isset ($user[$field]) || strlen($user[$field]) == 0)
{
foreach ($mandatory_fields as $key => $field) {
if (!isset ($user[$field]) || strlen($user[$field]) == 0) {
$user['error'] = get_lang($field.'Mandatory');
$errors[] = $user;
}
}
//2. check username
// 2. Check username.
if (isset ($user['UserName']) && strlen($user['UserName']) != 0)
{
//2.1. check if no username was used twice in import file
if (isset ($usernames[$user['UserName']]))
{
// 2.1. Check if no username was used twice in import file.
if (isset ($usernames[$user['UserName']])) {
$user['error'] = get_lang('UserNameUsedTwice');
$errors[] = $user;
}
$usernames[$user['UserName']] = 1;
//2.2. check if username isn't allready in use in database
if (!UserManager :: is_username_available($user['UserName']))
{
// 2.2. Check if username isn't allready in use in database.
if (!UserManager :: is_username_available($user['UserName'])) {
$user['error'] = get_lang('UserNameNotAvailable');
$errors[] = $user;
}
//2.3. check if username isn't longer than the 20 allowed characters
if (strlen($user['UserName']) > 20)
{
// 2.3. Check if username isn't longer than the 20 allowed characters.
if (strlen($user['UserName']) > 20) {
$user['error'] = get_lang('UserNameTooLong');
$errors[] = $user;
}
}
//3. check status
if (isset ($user['Status']) && !api_status_exists($user['Status']))
{
// 3. Check status.
if (isset ($user['Status']) && !api_status_exists($user['Status'])) {
$user['error'] = get_lang('WrongStatus');
$errors[] = $user;
}
//4. Check classname
if (isset ($user['ClassName']) && strlen($user['ClassName']) != 0)
{
if (!ClassManager :: class_name_exists($user['ClassName']))
{
// 4. Check classname.
if (isset ($user['ClassName']) && strlen($user['ClassName']) != 0) {
if (!ClassManager :: class_name_exists($user['ClassName'])) {
$user['error'] = get_lang('ClassNameNotAvailable');
$errors[] = $user;
}
}
//5. Check authentication source
if (isset ($user['AuthSource']) && strlen($user['AuthSource']) != 0)
{
if (!in_array($user['AuthSource'], $defined_auth_sources))
{
// 5. Check authentication source.
if (isset ($user['AuthSource']) && strlen($user['AuthSource']) != 0) {
if (!in_array($user['AuthSource'], $defined_auth_sources)) {
$user['error'] = get_lang('AuthSourceNotAvailable');
$errors[] = $user;
}
@ -73,103 +60,92 @@ function validate_data($users)
}
return $errors;
}
/**
* Add missing user-information (which isn't required, like password, username
* etc)
* Adds missing user-information (which isn't required, like password, username, etc).
*/
function complete_missing_data($user)
{
//1. Create a username if necessary
if (!isset ($user['UserName']) || strlen($user['UserName']) == 0)
{
function complete_missing_data($user) {
// 1. Create a username if necessary.
if (!isset ($user['UserName']) || strlen($user['UserName']) == 0) {
$username = strtolower(ereg_replace('[^a-zA-Z]', '', substr($user['FirstName'], 0, 3).' '.substr($user['LastName'], 0, 4)));
if (!UserManager :: is_username_available($username))
{
if (!UserManager :: is_username_available($username)) {
$i = 0;
$temp_username = $username.$i;
while (!UserManager :: is_username_available($temp_username))
{
while (!UserManager :: is_username_available($temp_username)) {
$temp_username = $username.++$i;
}
$username = $temp_username;
}
$user['UserName'] = $username;
}
//2. generate a password if necessary
if (!isset ($user['Password']) || strlen($user['Password']) == 0)
{
// 2. Generate a password if necessary.
if (!isset ($user['Password']) || strlen($user['Password']) == 0) {
$user['Password'] = api_generate_password();
}
//3. set status if not allready set
if (!isset ($user['Status']) || strlen($user['Status']) == 0)
{
// 3. set status if not allready set.
if (!isset ($user['Status']) || strlen($user['Status']) == 0) {
$user['Status'] = 'user';
}
//4. set authsource if not allready set
if (!isset ($user['AuthSource']) || strlen($user['AuthSource']) == 0)
{
// 4. Set authsource if not allready set.
if (!isset ($user['AuthSource']) || strlen($user['AuthSource']) == 0) {
$user['AuthSource'] = PLATFORM_AUTH_SOURCE;
}
return $user;
}
/**
* Save the imported data
*/
function save_data($users)
{
function save_data($users) {
$user_table = Database :: get_main_table(TABLE_MAIN_USER);
foreach ($users as $index => $user)
{
foreach ($users as $index => $user) {
$user = complete_missing_data($user);
$user['Status'] = api_status_key($user['Status']);
$user_id = UserManager :: create_user($user['FirstName'], $user['LastName'], $user['Status'], $user['Email'], $user['UserName'], $user['Password'], $user['OfficialCode'], api_get_setting('PlatformLanguage'), $user['PhoneNumber'], '', $user['AuthSource']);
foreach ($user['Courses'] as $index => $course)
{
foreach ($user['Courses'] as $index => $course) {
if(CourseManager :: course_exists($course))
CourseManager :: subscribe_user($user_id, $course,$user['Status']);
}
if (strlen($user['ClassName']) > 0)
{
if (strlen($user['ClassName']) > 0) {
$class_id = ClassManager :: get_class_id($user['ClassName']);
ClassManager :: add_user($user_id, $class_id);
}
// qualite
if(!empty($user['Qualite']))
// Qualite
if (!empty($user['Qualite'])) {
UserManager::update_extra_field_value($user_id,'qualite',$user['Qualite']);
}
// Categorie
if(!empty($user['Categorie']))
if (!empty($user['Categorie'])) {
UserManager::update_extra_field_value($user_id,'categorie',$user['Categorie']);
}
// Etat
if(!empty($user['Etat']))
if (!empty($user['Etat'])) {
UserManager::update_extra_field_value($user_id,'etat',$user['Etat']);
}
// Niveau
if(!empty($user['Niveau']))
if(!empty($user['Niveau'])) {
UserManager::update_extra_field_value($user_id,'niveau',$user['Niveau']);
}
}
}
/**
* Read the CSV-file
* Reads the CSV-file.
* @param string $file Path to the CSV-file
* @return array All userinformation read from the file
*/
function parse_csv_data($file)
{
function parse_csv_data($file) {
$users = Import :: csv_to_array($file);
foreach ($users as $index => $user)
{
if (isset ($user['Courses']))
{
foreach ($users as $index => $user) {
if (isset ($user['Courses'])) {
$user['Courses'] = explode('|', trim($user['Courses']));
}
$users[$index] = $user;
}
return $users;
}
?>

@ -3,8 +3,8 @@
* See license terms in /dokeos_license.txt
* @author Eric Marguin <eric.marguin@dokeos.com>
*/
require_once('../../inc/global.inc.php');
require_once(api_get_path(LIBRARY_PATH).'nusoap/nusoap.php');
require_once '../../inc/global.inc.php';
require_once api_get_path(LIBRARY_PATH).'nusoap/nusoap.php';
/**
* Import users into database from a file located on the server.
@ -18,52 +18,47 @@ function import_users_from_file($filepath, $security_key) {
global $_configuration;
$errors_returned = array(
0=>'success',
1=>'file import does not exist',
2=>'no users to import',
3=>'wrong datas in file',
4=>'security error'
);
0 => 'success',
1 => 'file import does not exist',
2 => 'no users to import',
3 => 'wrong datas in file',
4 => 'security error'
);
// check if this script is launch by server and if security key is ok
if(empty($_SERVER['REMOTE_ADDR']) || $_SERVER['REMOTE_ADDR']!=$_SERVER['SERVER_ADDR'] || $security_key != $_configuration['security_key'])
{
// Check whether this script is launch by server and security key is ok.
if (empty($_SERVER['REMOTE_ADDR']) || $_SERVER['REMOTE_ADDR'] != $_SERVER['SERVER_ADDR'] || $security_key != $_configuration['security_key']) {
return $errors_returned[4];
}
// Libraries
require_once api_get_path(LIBRARY_PATH).'fileManage.lib.php';
require_once api_get_path(LIBRARY_PATH).'usermanager.lib.php';
require_once api_get_path(LIBRARY_PATH).'classmanager.lib.php';
require_once api_get_path(LIBRARY_PATH).'import.lib.php';
require_once api_get_path(LIBRARY_PATH).'formvalidator/FormValidator.class.php';
require_once 'import.lib.php';
// libraries
require_once (api_get_path(LIBRARY_PATH).'fileManage.lib.php');
require_once (api_get_path(LIBRARY_PATH).'usermanager.lib.php');
require_once (api_get_path(LIBRARY_PATH).'classmanager.lib.php');
require_once (api_get_path(LIBRARY_PATH).'import.lib.php');
require_once (api_get_path(LIBRARY_PATH).'formvalidator/FormValidator.class.php');
require_once ('import.lib.php');
// check is users file exists
if(!is_file($filepath))
{
// Check is users file exists.
if (!is_file($filepath)) {
return $errors_returned[1];
}
// get list of users
// Get list of users
$users = parse_csv_data($filepath);
if(count($users)==0)
{
if (count($users) == 0) {
return $errors_returned[2];
}
// check the datas for each user
// Check the datas for each user
$errors = validate_data($users);
if (count($errors) > 0)
{
if (count($errors) > 0) {
return $errors_returned[3];
}
// apply modifications in database
// Apply modifications in database
save_data($users);
return $errors_returned[0]; // import successfull
return $errors_returned[0]; // Import successfull
}
$server = new soap_server();
@ -72,4 +67,3 @@ $server->register('import_users_from_file');
$http_request = (isset($HTTP_RAW_POST_DATA)?$HTTP_RAW_POST_DATA:'');
$server->service($http_request);
?>

@ -73,13 +73,13 @@ $server->register('DokeosWSCourseListOfUser', // method name
function DokeosWSCourseListOfUser($username, $signature) {
if (empty($username) or empty($signature)) { return -1; }
require_once (api_get_path(LIBRARY_PATH).'course.lib.php');
require_once (api_get_path(LIBRARY_PATH).'usermanager.lib.php');
require_once api_get_path(LIBRARY_PATH).'course.lib.php';
require_once api_get_path(LIBRARY_PATH).'usermanager.lib.php';
global $_configuration;
$info = api_get_user_info_from_username($username);
$user_id = $info['user_id'];
$list = UserManager::get_api_keys($user_id,'dokeos');
$list = UserManager::get_api_keys($user_id, 'dokeos');
$key = '';
foreach ($list as $key) {
break;
@ -88,20 +88,19 @@ function DokeosWSCourseListOfUser($username, $signature) {
$local_key = $username.$key;
if (!api_is_valid_secret_key($signature, $local_key)) {
return -1; //secret key is incorrect
return -1; // The secret key is incorrect.
}
// libraries
require_once (api_get_path(LIBRARY_PATH).'course.lib.php');
require_once api_get_path(LIBRARY_PATH).'course.lib.php';
$charset = api_get_setting('platform_charset');
$courses_list = array();
$courses_list_tmp = CourseManager::get_courses_list_by_user_id($user_id);
foreach ( $courses_list_tmp as $index => $course )
{
foreach ($courses_list_tmp as $index => $course) {
$course_info = CourseManager::get_course_information($course['code']);
$courses_list[] = array('code'=>$course['code'],'title'=>api_convert_encoding($course_info['title'],'UTF-8',$charset),'url'=>api_get_path(WEB_COURSE_PATH).$course_info['directory'].'/','teacher'=>api_convert_encoding($course_info['tutor_name'],'UTF-8',$charset),'language'=>$course_info['course_language']);
$courses_list[] = array('code' => $course['code'], 'title' => api_convert_encoding($course_info['title'], 'UTF-8', $charset), 'url' => api_get_path(WEB_COURSE_PATH).$course_info['directory'].'/', 'teacher' => api_convert_encoding($course_info['tutor_name'], 'UTF-8', $charset), 'language' => $course_info['course_language']);
}
return $courses_list;
}
@ -142,12 +141,12 @@ $server->register('DokeosWSEventsList', // method name
array('username' => 'xsd:string',
'signature' => 'xsd:string',
'datestart' => 'xsd:int',
'dateend' => 'xsd:int'), // input parameters
array('return' => 'xsd:Array'), // output parameters
'urn:WSUserInfo', // namespace
'urn:WSUserInfo#DokeosWSEventsList', // soapaction
'rpc', // style
'encoded', // use
'dateend' => 'xsd:int'), // input parameters
array('return' => 'xsd:Array'), // output parameters
'urn:WSUserInfo', // namespace
'urn:WSUserInfo#DokeosWSEventsList', // soapaction
'rpc', // style
'encoded', // use
'This service returns a list of events of the courses the given user is subscribed to' // documentation
);
@ -160,17 +159,17 @@ $server->register('DokeosWSEventsList', // method name
* @param int End date, in YYYYMMDD format
* @return array Events list
*/
function DokeosWSEventsList($username,$signature,$datestart=0,$dateend=0) {
function DokeosWSEventsList($username, $signature, $datestart = 0, $dateend = 0) {
if (empty($username) or empty($signature)) { return -1; }
require_once (api_get_path(LIBRARY_PATH).'course.lib.php');
require_once (api_get_path(LIBRARY_PATH).'usermanager.lib.php');
require_once api_get_path(LIBRARY_PATH).'course.lib.php';
require_once api_get_path(LIBRARY_PATH).'usermanager.lib.php';
global $_configuration;
$info = api_get_user_info_from_username($username);
$user_id = $info['user_id'];
$list = UserManager::get_api_keys($user_id,'dokeos');
$list = UserManager::get_api_keys($user_id, 'dokeos');
$key = '';
foreach ($list as $key) {
break;
@ -179,23 +178,25 @@ function DokeosWSEventsList($username,$signature,$datestart=0,$dateend=0) {
$local_key = $username.$key;
if (!api_is_valid_secret_key($signature, $local_key)) {
return -1; //secret key is incorrect
return -1; // The secret key is incorrect.
}
// libraries
require_once (api_get_path(LIBRARY_PATH).'usermanager.lib.php');
// Libraries
require_once api_get_path(LIBRARY_PATH).'usermanager.lib.php';
$charset = api_get_setting('platform_charset');
$events_list = array();
$user_id = UserManager::get_user_id_from_username($username);
if ($user_id === false) { return $events_list; } //error in user id recovery
if ($user_id === false) { return $events_list; } // Error in user id recovery.
require_once '../calendar/myagenda.inc.php';
$ds = substr($datestart,0,4).'-'.substr($datestart,4,2).'-'.substr($datestart,6,2).' 00:00:00';
$de = substr($dateend,0,4).'-'.substr($dateend,4,2).'-'.substr($dateend,6,2).' 00:00:00';
$events_list = get_personal_agenda_items_between_dates($user_id, $ds, $de);
return $events_list;
}
// Use the request to (try to) invoke the service
// Use the request to (try to) invoke the service.
$HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : '';
$server->service($HTTP_RAW_POST_DATA);

Loading…
Cancel
Save