Created
May 12, 2014 01:43
-
-
Save jcartledge/7c9e14f6cf9e330f08d0 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
commit 06c98bcc273915737b4e0751fa4be1a32727087b | |
Author: James Cartledge <[email protected]> | |
Date: Mon May 12 11:36:26 2014 +1000 | |
tweak study area import script: | |
1. correctly associate topics, study areas and related study areas | |
2. correctly associate study areas with courses | |
diff --git a/src/drupal/sites/all/modules/custom/vu_courses/modules/vu_course_study_areas/vu_course_study_areas.install b/src/drupal/sites/all/modules/custom/vu_courses/modules/vu_course_study_areas/vu_course_study_areas.install | |
index 49e174b..1a4eedf 100644 | |
--- a/src/drupal/sites/all/modules/custom/vu_courses/modules/vu_course_study_areas/vu_course_study_areas.install | |
+++ b/src/drupal/sites/all/modules/custom/vu_courses/modules/vu_course_study_areas/vu_course_study_areas.install | |
@@ -55,17 +55,29 @@ function vu_course_study_areas_import_study_area($area, $type = 'study_area') { | |
$node = vu_courses_study_areas_parse_study_area($data, $area, $type); | |
if(!$node) return FALSE; | |
- $return = array($node->nid => array()); | |
+ $related_areas = array(); | |
foreach($data[0]['studyareas'] as $study_area){ | |
- $return[$node->nid] = array($study_area["title"]); | |
+ $related_areas[] = $study_area["title"]; | |
} | |
+ return array($node->nid => $related_areas); | |
+} | |
- return $return; | |
- | |
+function vu_course_study_areas_import_study_topic($area) { | |
+ return vu_course_study_areas_import_study_area($area, 'study_topic'); | |
} | |
-function vu_courses_study_areas_update_course($code, $teaser, $area_nid){ | |
- $node = vu_courses_node_from_code($code); | |
+function vu_courses_study_areas_update_course($code, $teaser, $area_nid) { | |
+ // node_load caches the node the first time it is loaded so we can't | |
+ // update a node multiple times because all the previous updates win. | |
+ // So we'll keep our own cache of updated nodes. | |
+ static $course_nodes = array(); | |
+ | |
+ $code = strtolower($code); | |
+ if(isset($course_nodes[$code])) { | |
+ $node = $course_nodes[$code]; | |
+ } else { | |
+ $node = vu_courses_node_from_code($code); | |
+ } | |
if(!$node) return; | |
$node->teaser = $teaser; | |
@@ -323,22 +335,20 @@ function vu_course_study_areas_install(){ | |
drupal_get_path('module', 'vu_course_study_areas'), | |
'study_topic')); | |
foreach($topics as $topic) { | |
- $name = basename($topic); | |
- $name = substr($name, 0, strpos($name, '.')); | |
- $return = vu_course_study_areas_import_study_area($name, 'study_topic'); | |
- if(is_array($return)){ | |
- $topic_study_areas = vu_course_study_areas_array_merge_recursive_distinct($return, $topic_study_areas); | |
+ $name = basename($topic, '.json'); | |
+ $study_areas = vu_course_study_areas_import_study_topic($name); | |
+ if(is_array($study_areas)) { | |
+ $topic_study_areas = vu_course_study_areas_array_merge_recursive_distinct($study_areas, $topic_study_areas); | |
} | |
} | |
$areas = glob(sprintf("./%s/data/%s/*.json", | |
drupal_get_path('module', 'vu_course_study_areas'), | |
'study_area')); | |
foreach($areas as $area) { | |
- $name = basename($area); | |
- $name = substr($name, 0, strpos($name, '.')); | |
- $return = vu_course_study_areas_import_study_area($name, 'study_area'); | |
- if(is_array($return)){ | |
- $related_study_areas = vu_course_study_areas_array_merge_recursive_distinct($return, $related_study_areas); | |
+ $name = basename($area, '.json'); | |
+ $study_areas = vu_course_study_areas_import_study_area($name); | |
+ if(is_array($study_areas)) { | |
+ $related_study_areas = vu_course_study_areas_array_merge_recursive_distinct($study_areas, $related_study_areas); | |
} | |
} | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment