<?php /** * GET {language-lab instance url}/api/v1/join?context={LTI context ID}&user={LTI user ID} * * Returns * { * [api_key: {OpenTOK API key}, * session_id: {OpenTok session ID}, * token: {OpenTok subscriber token for `session_id`}, * id: {Database ID for `session_id`}] * } */ require_once 'common.inc.php'; use OpenTok\Role; requiredParameters([PARAM_CONTEXT, PARAM_USER, PARAM_USER_NAME]); $apiResponse = []; if (($groupSessions = $_SESSION['app']->sql->query("\n SELECT s.*\n FROM `group_memberships` AS m\n LEFT JOIN `groups` AS g ON m.`group` = g.`id`\n LEFT JOIN `sessions` AS s ON g.`session` = s.`id`\n WHERE\n m.`context` = '" . $_SESSION['app']->sql->escape_string($_REQUEST[PARAM_CONTEXT]) . "' AND\n m.`user` = '" . $_SESSION['app']->sql->escape_string($_REQUEST[PARAM_USER]) . "'\n LIMIT 1\n")) === false) { databaseError(__LINE__); } if ($group = $groupSessions->fetch_assoc()) { $apiResponse[API_DATABASE_ID] = $group['id']; $apiResponse[API_SESSION_ID] = $group['tokbox']; } else { if (($classSessions = $_SESSION['app']->sql->query("\n SELECT *\n FROM `sessions`\n WHERE\n `type` = '" . TYPE_CLASS . "' AND\n `context` = '" . $_SESSION['app']->sql->escape_string($_REQUEST[PARAM_CONTEXT]) . "'\n LIMIT 1\n ")) === false) { databaseError(__LINE__); } if ($classSession = $classSessions->fetch_assoc()) { $apiResponse[API_DATABASE_ID] = $classSession['id']; $apiResponse[API_SESSION_ID] = $classSession['tokbox']; } else {
<?php /** * GET {language-lab instance url}/api/v1/groups?context={LTI context ID}[&group={group ID}&action={list|delete|reset}] */ require_once 'common.inc.php'; use OpenTok\Role; requiredParameters([PARAM_CONTEXT, PARAM_USER, PARAM_USER_NAME]); $apiResponse = []; switch (trim(strtolower(empty($_REQUEST[PARAM_ACTION]) ? ACTION_LIST : $_REQUEST[PARAM_ACTION]))) { case ACTION_DELETE: requiredParameters([PARAM_GROUP]); $apiResponse[API_GROUP_ID] = $_REQUEST[PARAM_GROUP]; if (($groups = $_SESSION['app']->sql->query("\n SELECT *\n FROM `groups`\n WHERE\n `context` = '" . $_SESSION['app']->sql->escape_string($_REQUEST[PARAM_CONTEXT]) . "' AND\n `id` = '" . $_SESSION['app']->sql->escape_string($_REQUEST[PARAM_GROUP]) . "'\n ")) === false) { databaseError(__LINE__); } if ($groups->num_rows > 0) { $group = $groups->fetch_assoc(); if ($_SESSION['app']->sql->query("\n DELETE\n FROM `sessions`\n WHERE\n `context` = '" . $_SESSION['app']->sql->escape_string($_REQUEST[PARAM_CONTEXT]) . "' AND\n `id` = '{$group['session']}'\n ") === false) { databaseError(__LINE__); } if ($_SESSION['app']->sql->query("\n DELETE\n FROM `groups`\n WHERE\n `context` = '" . $_SESSION['app']->sql->escape_string($_REQUEST[PARAM_CONTEXT]) . "' AND\n `id` = '{$group['id']}'\n ") === false) { databaseError(__LINE__); } if ($_SESSION['app']->sql->query("\n DELETE\n FROM `group_memberships`\n WHERE\n `context` = '" . $_SESSION['app']->sql->escape_string($_REQUEST[PARAM_CONTEXT]) . "' AND\n `group` = '{$group['id']}'\n ") === false) { databaseError(__LINE__); } $apiResponse[API_ACTION_RESULT] = true; } else { $apiResponse[API_ACTION_RESULT] = false; }