comparison 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
comparison
equal deleted inserted replaced
-1:000000000000 0:6f6e07baad80
1 <?php
2
3 function digitalcollection_import_from_file($filename,$nid){
4
5
6 $handle = fopen($filename, "r");
7 $contents = fread($handle, filesize($filename));
8 fclose($handle);
9
10 $node = node_load($nid);
11
12 foreach(explode("\n",$contents) as $line){
13 $node->field_objid[LANGUAGE_NONE][]['objid']=$line;
14 print $line;
15 }
16
17 node_save($node);
18 }
19
20
21
22 function digitalobjects_importPagesFromFile(){
23 $filename = "/tmp/maps.json";
24 # $filename = "/tmp/echo.json";
25 $handle = fopen($filename, "r");
26 $contents = fread($handle, filesize($filename));
27 fclose($handle);
28
29 $pages = drupal_json_decode($contents);
30
31 $cnt=0;
32 foreach ($pages as $key => $page){
33
34 $page = base64_decode($page);
35 digitalobjects_importPage($page,$key);
36 $cnt++;
37
38 }
39
40
41 }
42
43
44 function digitalobjects_importPage($page,$key){
45
46 $baseUrl = "http://localhost:18080/echo_nav/echo_pages/content/scientific_revolution/harriot/maps/";
47
48 $fnames = explode("/",$key);
49
50 if ($fnames[1] != "maps"){
51 dpm($fnames[0]);
52 return;
53 }
54
55 $fname = str_replace(".pt","1_1.png",$fnames[sizeof($fnames)-1]);
56
57 $image = file_get_contents($baseUrl . $fname); // string
58 $file = file_save_data($image, 'public://' . $fname,FILE_EXISTS_REPLACE);
59
60
61
62
63 $node = new stdClass();
64 $node->type = 'map_page';
65 node_object_prepare($node);
66
67 $node->body['und'][0]['value'] = check_markup($page,'full_html');
68
69 $node->body['und'][0]['format'] = 'full_html';
70
71 $node->path['alias']="harriot/maps/" . $fnames[sizeof($fnames)-1];
72
73 $node->title = "_".$key;
74
75
76 $node->language = LANGUAGE_NONE;
77
78
79 $node->field_echopath['und'][0]['value']=$key;
80
81 $node->field_image[LANGUAGE_NONE]['0']['fid'] = $file->fid;
82 $node = node_submit($node);
83
84
85
86
87 /*$node->field_admintag['und'][0] = array (
88 'tid' => $tid,
89
90 );*/
91 // Try to set your custom field
92
93 $node = node_submit($node);
94
95 node_save($node);
96
97 }
98
99
100
101 function digitalobjects_importCollectionFromFile() {
102
103
104 $filename = "/tmp/china.json";
105 $handle = fopen($filename, "r");
106 $contents = fread($handle, filesize($filename));
107 fclose($handle);
108
109 $collection = drupal_json_decode($contents);
110 digitalobjects_importCollection($collection);
111 }
112
113 function digitalobjects_importCollection($collection,$tid){
114
115
116 //schaue ob die collection schon gibt
117 $qs = "select count(*) as n from field_data_field_echopath where field_echopath_value='". $collection['echo_path'] ."'";
118 $results = db_query($qs);
119 foreach($results as $result){
120
121 if ($result->n> 0){
122 return;
123 }
124 }
125 dpm($collection['echo_path']);
126 $node = new stdClass();
127 $node->type = 'digitalcollection';
128 node_object_prepare($node);
129
130 $node->body['und'][0]['value'] = check_markup($collection['description'],'full_html');
131
132 $node->body['und'][0]['format'] = 'full_html';
133
134
135 $node->title = $collection['title'];
136
137
138 $node->language = LANGUAGE_NONE;
139
140
141 $node->field_echopath['und'][0]['value']=$collection['echo_path'];
142 $node->field_label['und'][0]['value']=$collection['label'];
143 $node = node_submit($node);
144
145
146 $cnt=0;
147 foreach ($collection['content'] as $cont){
148 print $cont;
149 if (($cont != "") && ($cont !=null)){
150 $node->field_objid['und'][$cnt]['objid']=$cont;
151 $cnt++;
152
153
154 }
155 }
156
157 $node->field_admintag['und'][0] = array (
158 'tid' => $tid,
159
160 );
161 // Try to set your custom field
162
163 $node = node_submit($node);
164
165 node_save($node);
166
167 }
168
169 function digitalobjects_importCollections($tid) {
170 #filename = "/tmp/export.json";
171 $filename = "/tmp/groups.json";
172 # $filename = "/tmp/echo.json";
173 $handle = fopen($filename, "r");
174 $contents = fread($handle, filesize($filename));
175 fclose($handle);
176
177 $collections = drupal_json_decode($contents);
178
179 $cnt=0;
180 foreach ($collections as $key => $collection){
181 digitalobjects_importCollection($collection,$tid);
182 $cnt++;
183
184 }
185
186 }
187
188 /* suche all e nodes mit echopath = $path */
189 function digitalobjects_searchCollectionByPath($path){
190 $results = db_query("SELECT * FROM {field_data_field_echopath} n where field_echopath_value ='" . $path . "'");
191
192 return $results;
193 }
194
195 function digitalobjects_importStructure(){
196 $filename = "/Library/WebServer/Documents/drupal-dev/testData/exportAllCollectionsAndSubCollectionAsJSON";
197 # $filename = "/tmp/echo.json";
198 $handle = fopen($filename, "r");
199 $contents = fread($handle, filesize($filename));
200 fclose($handle);
201
202 $collections = drupal_json_decode($contents);
203
204 foreach ($collections as $parentCollection => $value){
205 /* finde node id von parent */
206 $nodes = digitalobjects_searchCollectionByPath($parentCollection);
207 if (sizeof($nodes) == 0){ //parent existiert nicht
208 //generate parent
209 } else {
210 foreach($nodes as $node){ // sollte eigentlich nur eine geben aber wenn mehrere gibt, dann eben überall die entsprechenden einträge machen.
211 // gehe jetzt durch content
212
213 $cnt=0;
214 foreach($value['content'] as $content){
215 $childnodes = digitalobjects_searchCollectionByPath($content);
216 if (sizeof($nodes) == 0){ // gibt es nicht
217 //erzeuge
218 }else{
219
220 $nodeid = $node->entity_id;
221 $entities = entity_load("node",array($nodeid)); // hole die entities
222 foreach($entities as $entity){
223 foreach($childnodes as $childnode){ // trage jetzt die childnodes ein.
224
225 $newnode ="node/".$childnode->entity_id;
226 $qs = "SELECT count(*) as n FROM {field_data_field_collid} n where field_collid_objid ='" . $newnode . "' and entity_id ='". $nodeid . "'";
227 $res = db_query($qs);
228
229 foreach($res as $result){
230 dpm($result);
231 dpm($qs);
232 if ($result->n == 0){ //gibt es noch nicht
233
234 $entity->field_collid['und'][]['objid']=$newnode;
235 }
236 }
237 }
238
239 $entity = node_submit($entity);
240
241 node_save($entity);
242 }
243 }
244 }
245 }
246
247 }
248 }
249
250 }
251