Mercurial > hg > digitalobjects
diff digitalobjects.import.php @ 0:6f6e07baad80 default tip
initial
author | Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de> |
---|---|
date | Tue, 02 Jun 2015 08:57:48 +0200 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/digitalobjects.import.php Tue Jun 02 08:57:48 2015 +0200 @@ -0,0 +1,251 @@ +<?php + +function digitalcollection_import_from_file($filename,$nid){ + + + $handle = fopen($filename, "r"); + $contents = fread($handle, filesize($filename)); + fclose($handle); + + $node = node_load($nid); + + foreach(explode("\n",$contents) as $line){ + $node->field_objid[LANGUAGE_NONE][]['objid']=$line; + print $line; + } + + node_save($node); +} + + + +function digitalobjects_importPagesFromFile(){ + $filename = "/tmp/maps.json"; + # $filename = "/tmp/echo.json"; + $handle = fopen($filename, "r"); + $contents = fread($handle, filesize($filename)); + fclose($handle); + + $pages = drupal_json_decode($contents); + + $cnt=0; + foreach ($pages as $key => $page){ + + $page = base64_decode($page); + digitalobjects_importPage($page,$key); + $cnt++; + + } + + +} + + +function digitalobjects_importPage($page,$key){ + + $baseUrl = "http://localhost:18080/echo_nav/echo_pages/content/scientific_revolution/harriot/maps/"; + + $fnames = explode("/",$key); + + if ($fnames[1] != "maps"){ + dpm($fnames[0]); + return; + } + + $fname = str_replace(".pt","1_1.png",$fnames[sizeof($fnames)-1]); + + $image = file_get_contents($baseUrl . $fname); // string + $file = file_save_data($image, 'public://' . $fname,FILE_EXISTS_REPLACE); + + + + + $node = new stdClass(); + $node->type = 'map_page'; + node_object_prepare($node); + + $node->body['und'][0]['value'] = check_markup($page,'full_html'); + + $node->body['und'][0]['format'] = 'full_html'; + + $node->path['alias']="harriot/maps/" . $fnames[sizeof($fnames)-1]; + + $node->title = "_".$key; + + + $node->language = LANGUAGE_NONE; + + + $node->field_echopath['und'][0]['value']=$key; + + $node->field_image[LANGUAGE_NONE]['0']['fid'] = $file->fid; + $node = node_submit($node); + + + + + /*$node->field_admintag['und'][0] = array ( + 'tid' => $tid, + + );*/ + // Try to set your custom field + + $node = node_submit($node); + + node_save($node); + + } + + + +function digitalobjects_importCollectionFromFile() { + + + $filename = "/tmp/china.json"; + $handle = fopen($filename, "r"); + $contents = fread($handle, filesize($filename)); + fclose($handle); + + $collection = drupal_json_decode($contents); + digitalobjects_importCollection($collection); +} + +function digitalobjects_importCollection($collection,$tid){ + + + //schaue ob die collection schon gibt + $qs = "select count(*) as n from field_data_field_echopath where field_echopath_value='". $collection['echo_path'] ."'"; + $results = db_query($qs); + foreach($results as $result){ + + if ($result->n> 0){ + return; + } + } + dpm($collection['echo_path']); + $node = new stdClass(); + $node->type = 'digitalcollection'; + node_object_prepare($node); + + $node->body['und'][0]['value'] = check_markup($collection['description'],'full_html'); + + $node->body['und'][0]['format'] = 'full_html'; + + + $node->title = $collection['title']; + + + $node->language = LANGUAGE_NONE; + + + $node->field_echopath['und'][0]['value']=$collection['echo_path']; + $node->field_label['und'][0]['value']=$collection['label']; + $node = node_submit($node); + + + $cnt=0; + foreach ($collection['content'] as $cont){ + print $cont; + if (($cont != "") && ($cont !=null)){ + $node->field_objid['und'][$cnt]['objid']=$cont; + $cnt++; + + + } + } + + $node->field_admintag['und'][0] = array ( + 'tid' => $tid, + + ); + // Try to set your custom field + + $node = node_submit($node); + + node_save($node); + +} + +function digitalobjects_importCollections($tid) { + #filename = "/tmp/export.json"; + $filename = "/tmp/groups.json"; + # $filename = "/tmp/echo.json"; + $handle = fopen($filename, "r"); + $contents = fread($handle, filesize($filename)); + fclose($handle); + + $collections = drupal_json_decode($contents); + + $cnt=0; + foreach ($collections as $key => $collection){ + digitalobjects_importCollection($collection,$tid); + $cnt++; + + } + +} + +/* suche all e nodes mit echopath = $path */ +function digitalobjects_searchCollectionByPath($path){ + $results = db_query("SELECT * FROM {field_data_field_echopath} n where field_echopath_value ='" . $path . "'"); + + return $results; + } + +function digitalobjects_importStructure(){ + $filename = "/Library/WebServer/Documents/drupal-dev/testData/exportAllCollectionsAndSubCollectionAsJSON"; + # $filename = "/tmp/echo.json"; + $handle = fopen($filename, "r"); + $contents = fread($handle, filesize($filename)); + fclose($handle); + + $collections = drupal_json_decode($contents); + + foreach ($collections as $parentCollection => $value){ + /* finde node id von parent */ + $nodes = digitalobjects_searchCollectionByPath($parentCollection); + if (sizeof($nodes) == 0){ //parent existiert nicht + //generate parent + } else { + foreach($nodes as $node){ // sollte eigentlich nur eine geben aber wenn mehrere gibt, dann eben überall die entsprechenden einträge machen. + // gehe jetzt durch content + + $cnt=0; + foreach($value['content'] as $content){ + $childnodes = digitalobjects_searchCollectionByPath($content); + if (sizeof($nodes) == 0){ // gibt es nicht + //erzeuge + }else{ + + $nodeid = $node->entity_id; + $entities = entity_load("node",array($nodeid)); // hole die entities + foreach($entities as $entity){ + foreach($childnodes as $childnode){ // trage jetzt die childnodes ein. + + $newnode ="node/".$childnode->entity_id; + $qs = "SELECT count(*) as n FROM {field_data_field_collid} n where field_collid_objid ='" . $newnode . "' and entity_id ='". $nodeid . "'"; + $res = db_query($qs); + + foreach($res as $result){ + dpm($result); + dpm($qs); + if ($result->n == 0){ //gibt es noch nicht + + $entity->field_collid['und'][]['objid']=$newnode; + } + } + } + + $entity = node_submit($entity); + + node_save($entity); + } + } + } + } + + } + } + +} +