Skip to content

Instantly share code, notes, and snippets.

@jcartledge
Created May 12, 2014 01:43
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jcartledge/7c9e14f6cf9e330f08d0 to your computer and use it in GitHub Desktop.
Save jcartledge/7c9e14f6cf9e330f08d0 to your computer and use it in GitHub Desktop.
commit 06c98bcc273915737b4e0751fa4be1a32727087b
Author: James Cartledge <jcartledge@gmail.com>
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