diff --git a/modules/tincanapi_content_types/tincanapi_content_types.module b/modules/tincanapi_content_types/tincanapi_content_types.module index 8c6fa6f..01dffe7 100644 --- a/modules/tincanapi_content_types/tincanapi_content_types.module +++ b/modules/tincanapi_content_types/tincanapi_content_types.module @@ -83,6 +83,24 @@ function tincanapi_content_types_data_from_node($node, $view_mode = '') { $data['storage']['node'] = $node; $data['storage']['view_mode'] = $view_mode; + tincanapi_content_types_add_og_context($node, $data); + + return $data; +} + +/** + * Fill statement group context with OG context + * + * @param object $node + * A Drupal node object. + * + * @return array + * A structured data array. + */ +function tincanapi_content_types_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'); @@ -92,13 +110,15 @@ function tincanapi_content_types_data_from_node($node, $view_mode = '') { if ($group_node) { $group = array( 'id' => $base_url . '/node/' . $group_node->nid, - 'definition' => array('name' => array('en-US' => $group_node->title)), + '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; + $data['context']['contextActivities']['grouping'][] = $group; } } - - return $data; } + diff --git a/modules/tincanapi_quiz/tincanapi_quiz.module b/modules/tincanapi_quiz/tincanapi_quiz.module index 37f12f6..e94a0b0 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_content_types_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_content_types_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_content_types_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_content_types_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_content_types_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_content_types_add_og_context($question, $data); } /**