chamilo/chamilo-lms

View on GitHub
public/plugin/advanced_subscription/test/ws_session_user.php

Summary

Maintainability
A
0 mins
Test Coverage
<?php

/* For license terms, see /license.txt */

use Chamilo\CoreBundle\Framework\Container;

/**
 * A script to test session details by user web service.
 */
require_once __DIR__.'/../config.php';

api_protect_admin_script();

// exit;

$plugin = AdvancedSubscriptionPlugin::create();
$hookPlugin = Container::instantiateHook(HookAdvancedSubscription::class);
// Get params from request (GET or POST)
$params = [];
// Init result array
$params['user_id'] = (int) ($_REQUEST['u']);
$params['user_field'] = 'drupal_user_id';
$params['session_id'] = (int) ($_REQUEST['s']);
$params['profile_completed'] = 100;
$params['is_connected'] = true;

/**
 * Copied code from WSHelperVerifyKey function.
 */
/**
 * Start WSHelperVerifyKey.
 */
//error_log(print_r($params,1));
$check_ip = false;
$ip = trim($_SERVER['REMOTE_ADDR']);
// if we are behind a reverse proxy, assume it will send the
// HTTP_X_FORWARDED_FOR header and use this IP instead
if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
    list($ip1, $ip2) = preg_split('/,/D', $_SERVER['HTTP_X_FORWARDED_FOR']);
    $ip = trim($ip1);
}
// Check if a file that limits access from webservices exists and contains
// the restraining check
if (is_file(api_get_path(WEB_CODE_PATH).'webservices/webservice-auth-ip.conf.php')) {
    include api_get_path(WEB_CODE_PATH).'webservices/webservice-auth-ip.conf.php';
    if (!empty($ws_auth_ip)) {
        $check_ip = true;
    }
}

if ($check_ip) {
    $security_key = api_get_env_variable('kernel.secret');
} else {
    $security_key = $ip.api_get_env_variable('kernel.secret');;
    //error_log($secret_key.'-'.$security_key);
}
/*
 * End WSHelperVerifyKey.
 */
$params['secret_key'] = hash('sha512', $security_key);

// Registration soap wsdl
$wsUrl = api_get_path(WEB_CODE_PATH).'webservices/registration.soap.php?wsdl';
$options = [
    'location' => $wsUrl,
    'uri' => $wsUrl,
];

/*
 * WS test.
 */
try {
    // Init soap client
    $client = new SoapClient(null, $options);
    // Soap call to WS
    $result = $client->__soapCall('HookAdvancedSubscription..WSSessionGetDetailsByUser', [$params]);
    if (is_object($result) && isset($result->action_url)) {
        echo '<br />';
        echo Display::url('message'.$result->message, $result->action_url);
    }
} catch (\Exception $e) {
    var_dump($e);
}