예제 #1
0
/**
 * Handle a file that has been uploaded
 *
 * @param object $uploadinfo details of the file / content that has been uploaded
 * @return int instance id of the newly created mod
 */
function equella_dndupload_handle($uploadinfo)
{
    global $USER;
    $fs = get_file_storage();
    // Gather the required info.
    $courseid = $uploadinfo->course->id;
    $coursemodule = $uploadinfo->coursemodule;
    $usercontext = context_user::instance($USER->id);
    $draftfiles = $fs->get_area_files($usercontext->id, 'user', 'draft', $uploadinfo->draftitemid, 'id', false);
    $moduleid = null;
    foreach ($draftfiles as $file) {
        $handle = $file->get_content_file_handle();
        // pushing files to equella
        $params = array();
        $params['moodlecoursefullname'] = $uploadinfo->course->fullname;
        $params['moodlecourseshortname'] = $uploadinfo->course->shortname;
        $params['moodlecourseid'] = $uploadinfo->course->id;
        $params['moodlecourseidnumber'] = $uploadinfo->course->idnumber;
        $params['filesize'] = $file->get_filesize();
        $mimetype = $file->get_mimetype();
        $info = equella_rest_api::contribute_file_with_shared_secret($file->get_filename(), $handle, $params);
        if (isset($info->error)) {
            throw new equella_exception($info->error_description);
        }
        $modulename = '';
        if (!empty($info->name)) {
            $modulename = $info->name;
        } else {
            if (!empty($info->description)) {
                $modulename = $info->description;
            } else {
                $modulename = $info->uuid;
            }
        }
        $eqresource = new stdClass();
        $eqresource->course = $courseid;
        $eqresource->name = $modulename;
        $eqresource->intro = $info->description;
        $eqresource->introformat = FORMAT_HTML;
        $eqresource->mimetype = $mimetype;
        $eqresource->filename = $file->get_filename();
        $item = array_pop($info->attachments);
        $eqresource->attachmentuuid = $item->uuid;
        $eqresource->url = $item->links->view;
        try {
            $eqresourceid = equella_add_instance($eqresource, null);
        } catch (Exception $ex) {
            throw new equella_exception('Failed to create EQUELLA resource.');
        }
    }
    return $eqresourceid;
}
예제 #2
0
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
require_once dirname(dirname(__DIR__)) . '/config.php';
require_once dirname(dirname(__DIR__)) . '/lib/filelib.php';
require_login();
// / Parameters
$code = required_param('code', PARAM_ALPHANUMEXT);
// Repository ID
require_once 'equella_rest_api.php';
$redirect_url = equella_rest_api::get_redirect_url();
$endpoint = equella_rest_api::get_end_point();
if (empty($CFG->equella_oauth_client_id)) {
    throw new moodle_exception('equella client id not set');
}
$options = array('client_id' => $CFG->equella_oauth_client_id, 'code' => $code, 'endpoint' => $endpoint, 'redirect_uri' => $redirect_url->out());
$info = equella_rest_api::get_access_token($options);
if (empty($info->access_token)) {
    die($info->error_description);
}
$token = $info->access_token;
try {
    $bool = set_config('equella_oauth_access_token', $token);
} catch (Exception $ex) {
}
$modulesettingurl = new moodle_url('/admin/settings.php', array('section' => 'modsettingequella'));
?>
<html>
<head>
<script type="text/javascript">
if (window.opener) {
    // refresh parent window