Index: temp_moodle_dev/moodle/blocks/lamstwo_status/block_lamstwo_status.php
===================================================================
diff -u
--- temp_moodle_dev/moodle/blocks/lamstwo_status/block_lamstwo_status.php (revision 0)
+++ temp_moodle_dev/moodle/blocks/lamstwo_status/block_lamstwo_status.php (revision 25ac5591fead109bf3a2af87806b1b37c2007368)
@@ -0,0 +1,147 @@
+libdir.'/moodlelib.php');
+
+/*
+ * Requires LAMS 2.1
+ */
+
+class block_lamstwo_status extends block_base {
+
+ const STATUS_NOT_STARTED = 'status_not_started';
+ const STATUS_STARTED = 'status_started';
+ const STATUS_COMPLETED = 'status_completed';
+ const STATUS_UNKNOWN = 'status_unknown';
+
+ function init() {
+ $this->title = get_string('block_title', 'lamstwo');
+ $this->version = 2009070800;
+ }
+
+ function get_content() {
+ if ($this->content !== NULL) {
+ return $this->content;
+ }
+
+ $this->content = new stdClass;
+ $this->content->text = $this->print_all_lesson_status();
+ $this->content->footer = '';
+
+ return $this->content;
+ }
+
+ function print_all_lesson_status() {
+ $return_str = '
';
+ $array = $this->get_all_lesson_status();
+ foreach ($array as $lamstwo_id => $status_obj_array) {
+ $return_str .= ''.$status_obj_array[0]->lamstwo_name.' |
';
+ foreach ($status_obj_array as $status_obj) {
+ $status_str = get_string($status_obj->status_i18n_key, 'lamstwo');
+ $return_str .= ''.$status_obj->lesson_name.' | '.$status_str.' |
';
+ }
+ }
+ $return_str .= '
';
+ return $return_str;
+ }
+
+ function get_all_lesson_status() {
+ global $CFG, $USER, $COURSE;
+ $status_array = array();
+
+ // get course module ids
+ $cms = get_records_sql("SELECT cm.* FROM {$CFG->prefix}course_modules cm, {$CFG->prefix}modules m
+ WHERE cm.module=m.id AND m.name='lamstwo' AND cm.course={$COURSE->id}");
+
+ foreach ($cms as $cmid => $cm) {
+ $context = get_context_instance(CONTEXT_MODULE, $cmid);
+ // check is learner
+ if (has_capability('mod/lams:participate', $context)) {
+ $lessons = get_records_sql("SELECT ll.lesson_id, ll.name AS lesson_name, l.id AS lamstwo_id, l.name AS lamstwo_name
+ FROM {$CFG->prefix}lamstwo_lesson ll, {$CFG->prefix}lamstwo l
+ WHERE ll.lamstwo=l.id AND ll.lamstwo={$cm->instance}");
+ // get status for all lessons
+ foreach ($lessons as $obj) {
+ $xml_array = $this->get_single_lesson_status($USER->username, $COURSE->id, $obj->lesson_id);
+ $status_obj = new stdClass();
+ $status_obj->lamstwo_name = $obj->lamstwo_name;
+ $status_obj->lesson_id = $obj->lesson_id;
+ $status_obj->lesson_name = $obj->lesson_name;
+ $status_obj->status_i18n_key = $this->process_xml($xml_array);
+ $status_array[$obj->lamstwo_id][] = $status_obj;
+ }
+ }
+ }
+
+ return $status_array;
+ }
+
+ /*
+ * Returns lams lesson status for a learner in a single lesson
+ */
+ function get_single_lesson_status($username, $courseid, $lsId) {
+ global $CFG, $USER;
+ if(!isset($CFG->lamstwo_serverid) || !isset($CFG->lamstwo_serverkey) || !isset($CFG->lamstwo_serverurl)) {
+ return get_string('notsetup', 'lamstwo');
+ }
+
+ // generate hash
+ $datetime = date('F d,Y g:i a');
+ $datetime_encoded = urlencode($datetime);
+ $rawstring = trim($datetime).trim($username).trim($CFG->lamstwo_serverid).trim($CFG->lamstwo_serverkey);
+ $hashvalue = sha1(strtolower($rawstring));
+
+ // Put together REST URL
+ $service = '/services/xml/LessonManager';
+ $request = "$CFG->lamstwo_serverurl$service?serverId=$CFG->lamstwo_serverid&datetime=$datetime_encoded&hashValue=$hashvalue&method=singleStudentProgress&username=$username&courseId=$courseid&lsId=$lsId&progressUser=$username";
+
+ // GET call to LAMS
+ $xml = file_get_contents($request);
+
+ if(!empty($http_response_header[0])) {
+ // Retrieve HTTP status code
+ list($version, $status_code, $msg) = explode(' ', $http_response_header[0], 3);
+
+ // Check the HTTP Status code
+ switch($status_code) {
+ case 200:
+ break;
+ case 503:
+ break;
+ case 403:
+ break;
+ case 400:
+ break;
+ default:
+ }
+ } else {
+ //return get_string('restcallfail', 'lamstwo');
+ //print_error('restcallfail', 'lamstwo', $CFG->wwwroot.'/course/view.php?id='.$courseid);
+ }
+
+ $xml_array = xmlize($xml);
+ return $xml_array;
+ //traverse_xmlize($xml_array);
+ //print implode("", $GLOBALS['traverse_array']);
+
+ //return lamstwo_process_array($xml_array['Folder']) . ']';
+ }
+
+ /*
+ * Return i18n key of learner's status in lams lesson based on xml returned from lams server
+ */
+ function process_xml($xml_array) {
+ $status = self::STATUS_UNKNOWN;
+ $attributes = $xml_array['LessonProgress']['#']['LearnerProgress'][0]['@'];
+ if ($attributes['lessonComplete'] == 'true') {
+ $status = self::STATUS_COMPLETED;
+ } else if ($attributes['attemptedActivities'] > 0 ) {
+ $status = self::STATUS_STARTED;
+ } else if ($attributes['attemptedActivities'] == 0 && $attributes['activitiesCompleted'] == 0) {
+ $status = self::STATUS_NOT_STARTED;
+ }
+ return $status;
+ }
+}
+
+
+?>
\ No newline at end of file
Index: temp_moodle_dev/moodle/lang/en_utf8/lamstwo.php
===================================================================
diff -u -r8f792d6134cfdce3726a75199cbfbe3fc5345074 -r25ac5591fead109bf3a2af87806b1b37c2007368
--- temp_moodle_dev/moodle/lang/en_utf8/lamstwo.php (.../lamstwo.php) (revision 8f792d6134cfdce3726a75199cbfbe3fc5345074)
+++ temp_moodle_dev/moodle/lang/en_utf8/lamstwo.php (.../lamstwo.php) (revision 25ac5591fead109bf3a2af87806b1b37c2007368)
@@ -82,5 +82,10 @@
$string['deletelesson'] = 'Delete this lesson';
$string['deletelessonconfirm'] = 'Are you sure you want to delete this lesson?';
$string['deletesuccess'] = 'Lesson successfully deleted.';
+$string['block_title'] = 'LAMSv2 Lesson Status';
+$string['status_started'] = 'Started';
+$string['status_not_started'] = 'Not started';
+$string['status_completed'] = 'Completed';
+$string['status_unknown'] = 'Unknown';
?>
Index: temp_moodle_dev/moodle/mod/lamstwo/version.php
===================================================================
diff -u -r8f792d6134cfdce3726a75199cbfbe3fc5345074 -r25ac5591fead109bf3a2af87806b1b37c2007368
--- temp_moodle_dev/moodle/mod/lamstwo/version.php (.../version.php) (revision 8f792d6134cfdce3726a75199cbfbe3fc5345074)
+++ temp_moodle_dev/moodle/mod/lamstwo/version.php (.../version.php) (revision 25ac5591fead109bf3a2af87806b1b37c2007368)
@@ -5,7 +5,7 @@
/// This fragment is called by moodle_needs_upgrading() and /admin/index.php
/////////////////////////////////////////////////////////////////////////////////
-$module->version = 2009070200; // The current module version (Date: YYYYMMDDXX)
+$module->version = 2009070900; // The current module version (Date: YYYYMMDDXX)
$module->requires = 2007021400; // Requires this Moodle version (1.8)
$module->cron = 0; // Period for cron to check this module (secs)