diff --git a/modules/tincanapi_content_types/tincanapi_content_types.module b/modules/tincanapi_content_types/tincanapi_content_types.module index 8c6fa6f..feb1eb0 100644 --- a/modules/tincanapi_content_types/tincanapi_content_types.module +++ b/modules/tincanapi_content_types/tincanapi_content_types.module @@ -83,22 +83,7 @@ function tincanapi_content_types_data_from_node($node, $view_mode = '') { $data['storage']['node'] = $node; $data['storage']['view_mode'] = $view_mode; - // Add organic group (class) information. - if (isset($node->og_group_ref)) { - $og_group_values = field_get_items('node', $node, 'og_group_ref'); - $group_nid = $og_group_values[0]['target_id']; - - $group_node = node_load($group_nid); - if ($group_node) { - $group = array( - 'id' => $base_url . '/node/' . $group_node->nid, - 'definition' => array('name' => array('en-US' => $group_node->title)), - 'objectType' => 'Activity', - ); - - $data['context']['contextActivities']['grouping'] = $group; - } - } + tincanapi_add_og_context($node, $data); return $data; } diff --git a/modules/tincanapi_quiz/tincanapi_quiz.module b/modules/tincanapi_quiz/tincanapi_quiz.module index 37f12f6..6e74c88 100644 --- a/modules/tincanapi_quiz/tincanapi_quiz.module +++ b/modules/tincanapi_quiz/tincanapi_quiz.module @@ -62,24 +62,7 @@ function tincanapi_quiz_quiz_finished($quiz, $score, $session_data) { $data['result']['completion'] = FALSE; } - // Add organic group (class) information. - if (isset($quiz->og_group_ref)) { - global $base_url; - - $og_group_values = field_get_items('node', $quiz, 'og_group_ref'); - $group_nid = $og_group_values[0]['target_id']; - - $group_node = node_load($group_nid); - if ($group_node) { - $group = array( - 'id' => $base_url . '/node/' . $group_node->nid, - 'definition' => array('name' => array('en-US' => $group_node->title)), - 'objectType' => 'Activity', - ); - - $data['context']['contextActivities']['grouping'] = $group; - } - } + tincanapi_add_og_context($quiz, $data); tincanapi_track_data('quiz', $data); } @@ -101,24 +84,7 @@ function tincanapi_quiz_quiz_scored($quiz, $score, $rid) { $data['result'] = _tincanapi_quiz_get_result($score, $quiz); - // Add organic group (class) information. - if (isset($quiz->og_group_ref)) { - global $base_url; - - $og_group_values = field_get_items('node', $quiz, 'og_group_ref'); - $group_nid = $og_group_values[0]['target_id']; - - $group_node = node_load($group_nid); - if ($group_node) { - $group = array( - 'id' => $base_url . '/node/' . $group_node->nid, - 'definition' => array('name' => array('en-US' => $group_node->title)), - 'objectType' => 'Activity', - ); - - $data['context']['contextActivities']['grouping'] = $group; - } - } + tincanapi_add_og_context($quiz, $data); tincanapi_track_data('quiz', $data, (int) $record->uid); } @@ -265,24 +231,7 @@ function tincanapi_quiz_tincanapi_quiz_data_multichoice(&$data, $question, $answ $data['object']['definition']['choices'] = $choices; $data['result']['response'] = implode(",", $data['result']['response']); - // Add organic group (class) information. - if (isset($question->og_group_ref)) { - global $base_url; - - $og_group_values = field_get_items('node', $question, 'og_group_ref'); - $group_nid = $og_group_values[0]['target_id']; - - $group_node = node_load($group_nid); - if ($group_node) { - $group = array( - 'id' => $base_url . '/node/' . $group_node->nid, - 'definition' => array('name' => array('en-US' => $group_node->title)), - 'objectType' => 'Activity', - ); - - $data['context']['contextActivities']['grouping'] = $group; - } - } + tincanapi_add_og_context($question, $data); } @@ -331,25 +280,7 @@ function tincanapi_quiz_tincanapi_quiz_data_scale(&$data, $question, $answers) { $data['object']['definition']['scale'] = $scale; - // Add organic group (class) information. - if (isset($question->og_group_ref)) { - global $base_url; - - $og_group_values = field_get_items('node', $question, 'og_group_ref'); - $group_nid = $og_group_values[0]['target_id']; - - $group_node = node_load($group_nid); - if ($group_node) { - $group = array( - 'id' => $base_url . '/node/' . $group_node->nid, - 'definition' => array('name' => array('en-US' => $group_node->title)), - 'objectType' => 'Activity', - ); - - $data['context']['contextActivities']['grouping'] = $group; - } - } - + tincanapi_add_og_context($question, $data); } /** @@ -377,24 +308,7 @@ function tincanapi_quiz_tincanapi_quiz_data_short_answer(&$data, $question, $ans 'max' => (int) $max, ); - // Add organic group (class) information. - if (isset($question->og_group_ref)) { - global $base_url; - - $og_group_values = field_get_items('node', $question, 'og_group_ref'); - $group_nid = $og_group_values[0]['target_id']; - - $group_node = node_load($group_nid); - if ($group_node) { - $group = array( - 'id' => $base_url . '/node/' . $group_node->nid, - 'definition' => array('name' => array('en-US' => $group_node->title)), - 'objectType' => 'Activity', - ); - - $data['context']['contextActivities']['grouping'] = $group; - } - } + tincanapi_add_og_context($question, $data); } /** @@ -411,25 +325,7 @@ function tincanapi_quiz_tincanapi_quiz_data_truefalse(&$data, $question, $answer $correct = ($question->correct_answer == 1 ? 'true' : 'false'); $data['object']['definition']['correctResponsesPattern'] = array($correct); - // Add organic group (class) information. - if (isset($question->og_group_ref)) { - global $base_url; - - $og_group_values = field_get_items('node', $question, 'og_group_ref'); - $group_nid = $og_group_values[0]['target_id']; - - $group_node = node_load($group_nid); - if ($group_node) { - $group = array( - 'id' => $base_url . '/node/' . $group_node->nid, - 'definition' => array('name' => array('en-US' => $group_node->title)), - 'objectType' => 'Activity', - ); - - $data['context']['contextActivities']['grouping'] = $group; - } - } - + tincanapi_add_og_context($question, $data); } /** diff --git a/tincanapi.module b/tincanapi.module index a41166e..76a1f6f 100644 --- a/tincanapi.module +++ b/tincanapi.module @@ -454,3 +454,38 @@ function tincanapi_format_iso8601_duration($timestamp) { return $output; } + + +/** + * Fill statement group context with OG context + * + * @param object $node + * A Drupal node object. + * + * @return array + * A structured data array. + */ +function tincanapi_add_og_context($node, &$data) +{ + global $base_url; + + // Add organic group (class) information. + if (isset($node->og_group_ref)) { + $og_group_values = field_get_items('node', $node, 'og_group_ref'); + $group_nid = $og_group_values[0]['target_id']; + + $group_node = node_load($group_nid); + if ($group_node) { + $group = array( + 'id' => $base_url . '/node/' . $group_node->nid, + 'definition' => array( + 'name' => array('en-US' => $group_node->title), + 'type' => TINCANAPI_CUSTOM_URI . '/content/type/' . $group_node->type + ), + 'objectType' => 'Activity', + ); + + $data['context']['contextActivities']['grouping'][] = $group; + } + } +}