When I POST to the activities/state endpoint, with activityId=<uuid>&agent=<json agent>®istration=<uuid>&stateId=resume, I get an exception returned from learninglocker. It looks like StateController::store() is looking for attached content, but not finding it...
//Get the content from the request
$data['content_info'] = $this->getAttachedContent('content');What is the attached content? I don't see this in the spec here:
https://github.com/adlnet/xAPI-Spec/blob/master/xAPI.md#stateapi
The stack trace is:
#0 /Users/drew/Documents/hw_workspace/lrs/learninglocker/vendor/laravel/framework/src/Illuminate/Support/Facades/Facade.php(211): Illuminate\Foundation\Application->abort(400, '`content` was n...')
#1 /Users/drew/Documents/hw_workspace/lrs/learninglocker/app/controllers/xapi/DocumentController.php(109): Illuminate\Support\Facades\Facade::__callStatic('abort', Array)
#2 /Users/drew/Documents/hw_workspace/lrs/learninglocker/app/controllers/xapi/DocumentController.php(109): Illuminate\Support\Facades\App::abort(400, '`content` was n...')
#3 /Users/drew/Documents/hw_workspace/lrs/learninglocker/app/controllers/xapi/DocumentController.php(84): Controllers\xAPI\DocumentController->getPostContent('content')
#4 /Users/drew/Documents/hw_workspace/lrs/learninglocker/app/controllers/xapi/StateController.php(92): Controllers\xAPI\DocumentController->getAttachedContent('content')
#5 /Users/drew/Documents/hw_workspace/lrs/learninglocker/app/controllers/xapi/DocumentController.php(44): Controllers\xAPI\StateController->store()
#6 [internal function]: Controllers\xAPI\DocumentController->index()
#7 /Users/drew/Documents/hw_workspace/lrs/learninglocker/vendor/laravel/framework/src/Illuminate/Routing/Controller.php(231): call_user_func_array(Array, Array)
#8 /Users/drew/Documents/hw_workspace/lrs/learninglocker/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php(93): Illuminate\Routing\Controller->callAction('index', Array)
#9 /Users/drew/Documents/hw_workspace/lrs/learninglocker/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php(62): Illuminate\Routing\ControllerDispatcher->call(Object(Controllers\xAPI\StateController), Object(Illuminate\Routing\Route), 'index')
#10 /Users/drew/Documents/hw_workspace/lrs/learninglocker/vendor/laravel/framework/src/Illuminate/Routing/Router.php(934): Illuminate\Routing\ControllerDispatcher->dispatch(Object(Illuminate\Routing\Route), Object(Illuminate\Http\Request), 'Controllers\\xAP...', 'index')
#11 [internal function]: Illuminate\Routing\Router->Illuminate\Routing\{closure}()
#12 /Users/drew/Documents/hw_workspace/lrs/learninglocker/vendor/laravel/framework/src/Illuminate/Routing/Route.php(105): call_user_func_array(Object(Closure), Array)
#13 /Users/drew/Documents/hw_workspace/lrs/learninglocker/vendor/laravel/framework/src/Illuminate/Routing/Router.php(1000): Illuminate\Routing\Route->run(Object(Illuminate\Http\Request))
#14 /Users/drew/Documents/hw_workspace/lrs/learninglocker/vendor/laravel/framework/src/Illuminate/Routing/Router.php(968): Illuminate\Routing\Router->dispatchToRoute(Object(Illuminate\Http\Request))
#15 /Users/drew/Documents/hw_workspace/lrs/learninglocker/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(738): Illuminate\Routing\Router->dispatch(Object(Illuminate\Http\Request))
#16 /Users/drew/Documents/hw_workspace/lrs/learninglocker/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(708): Illuminate\Foundation\Application->dispatch(Object(Illuminate\Http\Request))
#17 /Users/drew/Documents/hw_workspace/lrs/learninglocker/vendor/laravel/framework/src/Illuminate/Http/FrameGuard.php(38): Illuminate\Foundation\Application->handle(Object(Illuminate\Http\Request), 1, true)
#18 /Users/drew/Documents/hw_workspace/lrs/learninglocker/vendor/laravel/framework/src/Illuminate/Session/Middleware.php(72): Illuminate\Http\FrameGuard->handle(Object(Illuminate\Http\Request), 1, true)
#19 /Users/drew/Documents/hw_workspace/lrs/learninglocker/vendor/laravel/framework/src/Illuminate/Cookie/Queue.php(47): Illuminate\Session\Middleware->handle(Object(Illuminate\Http\Request), 1, true)
#20 /Users/drew/Documents/hw_workspace/lrs/learninglocker/vendor/laravel/framework/src/Illuminate/Cookie/Guard.php(51): Illuminate\Cookie\Queue->handle(Object(Illuminate\Http\Request), 1, true)
#21 /Users/drew/Documents/hw_workspace/lrs/learninglocker/vendor/stack/builder/src/Stack/StackedHttpKernel.php(23): Illuminate\Cookie\Guard->handle(Object(Illuminate\Http\Request), 1, true)
#22 /Users/drew/Documents/hw_workspace/lrs/learninglocker/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(606): Stack\StackedHttpKernel->handle(Object(Illuminate\Http\Request))
#23 /Users/drew/Documents/hw_workspace/lrs/learninglocker/public/index.php(49): Illuminate\Foundation\Application->run()
#24 {main} [] []
Any ideas?
case "text/plain":
$this->content = $content;
/*
if( !$this->exists ){
} else {
\App::abort(400, sprintf('Cannot amend existing %s document with a string', $this->contentType) );
}
*/
break;In case yiu have problems with state in TinCanPHP heres some code that works: https://github.com/garemoko/moodle-mod_tincanlaunch/blob/master/tincanlaunch/locallib.php#L179
I plan to replace this with TinCanPHP myself at some point though, so I dont really recommend copying that code.
Andrew
--
You received this message because you are subscribed to a topic in the Google Groups "Learning Locker" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/learning-locker/W5SMpJhN1-E/unsubscribe.
To unsubscribe from this group and all its topics, send an email to learning-lock...@googlegroups.com.
To post to this group, send an email to learnin...@googlegroups.com.
Andrew