setEventData(['server' => $server]); $res = $hook->notifyWSRegistration(HOOK_EVENT_TYPE_PRE); if (!empty($res['server'])) { $server = $res['server']; } } $server->soap_defencoding = 'UTF-8'; // Initialize WSDL support $server->configureWSDL('WSAccessUrl', 'urn:WSAccessUrl'); $server->wsdl->addComplexType( 'portalItem', 'complexType', 'struct', 'all', '', [ 'id' => ['name' => 'id', 'type' => 'xsd:string'], 'url' => ['name' => 'url', 'type' => 'xsd:string'], ] ); $server->wsdl->addComplexType( 'portalList', 'complexType', 'array', '', 'SOAP-ENC:Array', [], [ [ 'ref' => 'SOAP-ENC:arrayType', 'wsdl:arrayType' => 'tns:portalItem[]', ], ], 'tns:portalItem' ); $server->wsdl->addComplexType( 'getPortals', 'complexType', 'struct', 'all', '', [ 'secret_key' => ['name' => 'secret_key', 'type' => 'xsd:string'], ] ); // Register the method to expose $server->register( 'WSGetPortals', // method name ['getPortals' => 'tns:getPortals'], // input parameters ['return' => 'tns:portalList'], // output parameters 'urn:WSAccessUrl', // namespace 'urn:WSAccessUrl#WSGetPortals', // soapaction 'rpc', // style 'encoded', // use 'This service adds a user to portal' // documentation ); // Define the method WSAddUserToPortal function WSGetPortals($params) { global $debug; if (!WSHelperVerifyKey($params['secret_key'])) { return return_error(WS_ERROR_SECRET_KEY); } $urlData = UrlManager::get_url_data(); $return = []; foreach ($urlData as $data) { $return[] = [ 'id' => $data['id'], 'url' => $data['url'], ]; } if ($debug) { error_log(print_r($return, 1)); } return $return; } $server->wsdl->addComplexType( 'AddUserToPortal', 'complexType', 'struct', 'all', '', [ 'secret_key' => ['name' => 'secret_key', 'type' => 'xsd:string'], 'user_id' => ['name' => 'user_id', 'type' => 'xsd:string'], 'portal_id' => ['name' => 'portal_id', 'type' => 'xsd:string'], ] ); // Register the method to expose $server->register( 'WSAddUserToPortal', // method name ['addUserToPortal' => 'tns:AddUserToPortal'], // input parameters ['return' => 'xsd:string'], // output parameters 'urn:WSAccessUrl', // namespace 'urn:WSAccessUrl#WSAddUserToPortal', // soapaction 'rpc', // style 'encoded', // use 'This service adds a user to portal' // documentation ); // Define the method WSAddUserToPortal function WSAddUserToPortal($params) { if (!WSHelperVerifyKey($params['secret_key'])) { return return_error(WS_ERROR_SECRET_KEY); } $userId = $params['user_id']; $portalId = $params['portal_id']; UrlManager::add_user_to_url($userId, $portalId); $result = UrlManager::relation_url_user_exist($userId, $portalId); if (!empty($result)) { return 1; } return 0; } // Register the method to expose $server->register( 'WSRemoveUserFromPortal', // method name ['removeUserFromPortal' => 'tns:AddUserToPortal'], // input parameters ['return' => 'xsd:string'], // output parameters 'urn:WSAccessUrl', // namespace 'urn:WSAccessUrl#WSRemoveUserFromPortal', // soapaction 'rpc', // style 'encoded', // use 'This service remove a user from a portal' // documentation ); // Define the method WSDeleteUserFromGroup function WSRemoveUserFromPortal($params) { if (!WSHelperVerifyKey($params['secret_key'])) { return return_error(WS_ERROR_SECRET_KEY); } $userId = $params['user_id']; $portalId = $params['portal_id']; UrlManager::delete_url_rel_user($userId, $portalId); $result = UrlManager::relation_url_user_exist($userId, $portalId); if (empty($result)) { return 1; } return 0; } $server->wsdl->addComplexType( 'getPortalListFromUser', 'complexType', 'struct', 'all', '', [ 'secret_key' => ['name' => 'secret_key', 'type' => 'xsd:string'], 'user_id' => ['name' => 'user_id', 'type' => 'xsd:string'], ] ); // Register the method to expose $server->register( 'WSGetPortalListFromUser', // method name ['getPortalListFromUser' => 'tns:getPortalListFromUser'], // input parameters ['return' => 'tns:portalList'], // output parameters 'urn:WSAccessUrl', // namespace 'urn:WSAccessUrl#WSGetPortalListFromUser', // soapaction 'rpc', // style 'encoded', // use 'This service remove a user from a portal' // documentation ); // Define the method WSDeleteUserFromGroup function WSGetPortalListFromUser($params) { if (!WSHelperVerifyKey($params['secret_key'])) { return return_error(WS_ERROR_SECRET_KEY); } $userId = $params['user_id']; $result = UrlManager::get_access_url_from_user($userId); if (!empty($result)) { foreach ($result as &$data) { $data['id'] = $data['access_url_id']; } } return $result; } // Course ws $server->wsdl->addComplexType( 'getPortalListFromCourse', 'complexType', 'struct', 'all', '', [ 'secret_key' => ['name' => 'secret_key', 'type' => 'xsd:string'], 'original_course_id_name' => ['name' => 'original_course_id_name', 'type' => 'xsd:string'], 'original_course_id_value' => ['name' => 'original_course_id_value', 'type' => 'xsd:string'], ] ); // Register the method to expose $server->register( 'WSGetPortalListFromCourse', // method name ['getPortalListFromCourse' => 'tns:getPortalListFromCourse'], // input parameters ['return' => 'tns:portalList'], // output parameters 'urn:WSAccessUrl', // namespace 'urn:WSAccessUrl#getPortalListFromCourse', // soapaction 'rpc', // style 'encoded', // use 'This service remove a user from a portal' // documentation ); // Define the method WSDeleteUserFromGroup function WSGetPortalListFromCourse($params) { if (!WSHelperVerifyKey($params['secret_key'])) { return return_error(WS_ERROR_SECRET_KEY); } $courseInfo = CourseManager::getCourseInfoFromOriginalId( $params['original_course_id_value'], $params['original_course_id_name'] ); $courseId = $courseInfo['real_id']; $result = UrlManager::get_access_url_from_course($courseId); if (!empty($result)) { foreach ($result as &$data) { $data['id'] = $data['access_url_id']; } } return $result; } $server->wsdl->addComplexType( 'addCourseToPortal', 'complexType', 'struct', 'all', '', [ 'secret_key' => ['name' => 'secret_key', 'type' => 'xsd:string'], 'portal_id' => ['name' => 'portal_id', 'type' => 'xsd:string'], 'original_course_id_name' => ['name' => 'original_course_id_name', 'type' => 'xsd:string'], 'original_course_id_value' => ['name' => 'original_course_id_value', 'type' => 'xsd:string'], ] ); // Register the method to expose $server->register( 'WSAddCourseToPortal', // method name ['addCourseToPortal' => 'tns:addCourseToPortal'], // input parameters ['return' => 'xsd:string'], // output parameters 'urn:WSAccessUrl', // namespace 'urn:WSAccessUrl#WSAddCourseToPortal', // soapaction 'rpc', // style 'encoded', // use 'This service adds a course to portal' // documentation ); // Define the method WSAddUserToPortal function WSAddCourseToPortal($params) { if (!WSHelperVerifyKey($params['secret_key'])) { return return_error(WS_ERROR_SECRET_KEY); } $courseInfo = CourseManager::getCourseInfoFromOriginalId( $params['original_course_id_value'], $params['original_course_id_name'] ); $courseId = $courseInfo['real_id']; $portalId = $params['portal_id']; UrlManager::add_course_to_url($courseId, $portalId); $result = UrlManager::relation_url_course_exist($courseId, $portalId); return intval($result); } // Register the method to expose $server->register( 'WSRemoveCourseFromPortal', // method name ['removeCourseFromPortal' => 'tns:addCourseToPortal'], // input parameters ['return' => 'xsd:string'], // output parameters 'urn:WSAccessUrl', // namespace 'urn:WSAccessUrl#WSRemoveCourseFromPortal', // soapaction 'rpc', // style 'encoded', // use 'This service remove a course from a portal' // documentation ); // Define the method WSDeleteUserFromGroup function WSRemoveCourseFromPortal($params) { if (!WSHelperVerifyKey($params['secret_key'])) { return return_error(WS_ERROR_SECRET_KEY); } $courseInfo = CourseManager::getCourseInfoFromOriginalId( $params['original_course_id_value'], $params['original_course_id_name'] ); $courseId = $courseInfo['real_id']; $portalId = $params['portal_id']; UrlManager::delete_url_rel_course($courseId, $portalId); $result = UrlManager::relation_url_course_exist($courseId, $portalId); if (empty($result)) { return true; } return false; } /* Delete user from group Web Service end */ // Add more webservices through hooks from plugins if (!empty($hook)) { $hook->setEventData(['server' => $server]); $res = $hook->notifyWSRegistration(HOOK_EVENT_TYPE_POST); if (!empty($res['server'])) { $server = $res['server']; } } // Use the request to (try to) invoke the service $GLOBALS['HTTP_RAW_POST_DATA'] = file_get_contents('php://input'); $HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : ''; // If you send your data in utf8 then this value must be false. $decodeUTF8 = api_get_setting('registration.soap.php.decode_utf8'); if ($decodeUTF8 === 'true') { $server->decode_utf8 = true; } else { $server->decode_utf8 = false; } $server->service($HTTP_RAW_POST_DATA);