annotate relation_processor/nodes.inc @ 5:1c73c660c2f2

new relation_processor
author Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
date Wed, 17 Jun 2015 18:55:14 +0200
parents 124ef8f3b22d
children bdf91a4a40ff
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1 <?php
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
2
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
3 /**
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
4 * @file
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
5 * On behalf implementation of Feeds mapping API for taxonomy.module.
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
6 */
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
7
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
8 /**
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
9 * Search by term name.
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
10 */
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
11 define('FEEDS_ENTITY_SEARCH_TERM_NAME', 0);
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
12
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
13 /**
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
14 * Search by term id.
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
15 */
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
16 define('FEEDS_ENTITY_SEARCH_TERM_ID', 1);
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
17
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
18 /**
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
19 * Search by GUID.
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
20 */
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
21 define('FEEDS_ENTITY_SEARCH_TERM_GUID', 2);
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
22
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
23
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
24 /**
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
25 * Search by CITEKEY.
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
26 */
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
27 define('FEEDS_ENTITY_SEARCH_TERM_CITEKEY', 3);
5
1c73c660c2f2 new relation_processor
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents: 0
diff changeset
28 dpm("RELATION_include");
0
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
29 /**
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
30 * Implements hook_feeds_parser_sources_alter().
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
31 */
5
1c73c660c2f2 new relation_processor
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents: 0
diff changeset
32 function relation_feeds_parser_sources_alter(&$sources, $content_type) {
0
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
33
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
34 if (!empty($content_type)) {
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
35 $sources['sources'] = array(
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
36 'name' => t('Feed node: Entity'),
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
37 'description' => t('Entites from feed node.'),
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
38 'callback' => 'entites_feeds_get_source',
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
39 );
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
40 }
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
41 }
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
42
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
43
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
44 /**
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
45 * Callback, returns taxonomy from feed node.
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
46 */
5
1c73c660c2f2 new relation_processor
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents: 0
diff changeset
47 function relation_feeds_get_source(FeedsSource $source, FeedsParserResult $result, $key) {
0
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
48 /*if ($node = node_load($source->feed_nid)) {
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
49 $terms = taxonomy_feeds_node_get_terms($node);
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
50 $vocabularies = taxonomy_vocabulary_load_multiple(array(), array('machine_name' => str_replace('parent:taxonomy:', '', $key)));
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
51 $vocabulary = array_shift($vocabularies);
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
52 $result = array();
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
53 foreach ($terms as $tid => $term) {
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
54 if ($term->vid == $vocabulary->vid) {
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
55 $result[] = new FeedsTermElement($term);
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
56 }
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
57 }*/
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
58
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
59 return $result;
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
60 //}
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
61 }
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
62
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
63 /**
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
64 * Implements hook_feeds_processor_targets_alter().
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
65 */
5
1c73c660c2f2 new relation_processor
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents: 0
diff changeset
66 function relation_feeds_processor_targets_alter(&$targets, $entity_type, $bundle_name) {
0
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
67 /*foreach (field_info_instances($entity_type, $bundle_name) as $name => $instance) {
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
68 $info = field_info_field($name);
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
69 if ($info['type'] == 'taxonomy_term_reference') {
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
70 $targets[$name] = array(
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
71 'name' => check_plain($instance['label']),
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
72 'callback' => 'taxonomy_feeds_set_target',
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
73 'description' => t('The @label field of the entity.', array('@label' => $instance['label'])),
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
74 'summary_callback' => 'taxonomy_feeds_summary_callback',
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
75 'form_callback' => 'taxonomy_feeds_form_callback',
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
76 );
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
77 }
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
78 }*/
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
79
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
80
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
81 if ($entity_type == "relation"){
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
82
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
83 $targets["source_id"]= array(
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
84 'name' => 'Source Field',
5
1c73c660c2f2 new relation_processor
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents: 0
diff changeset
85 'callback' => 'relation_feeds_set_target',
0
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
86 'description' => t('The guid of the entity.'),
5
1c73c660c2f2 new relation_processor
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents: 0
diff changeset
87 'summary_callback' => 'relation_feeds_summary_callback',
1c73c660c2f2 new relation_processor
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents: 0
diff changeset
88 'form_callback' => 'relation_feeds_form_callback',
0
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
89 );
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
90
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
91 $targets["target_id"]= array(
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
92 'name' => 'Target Field',
5
1c73c660c2f2 new relation_processor
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents: 0
diff changeset
93 'callback' => 'relation_feeds_set_target',
0
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
94 'description' => t('The guid of the entity.'),
5
1c73c660c2f2 new relation_processor
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents: 0
diff changeset
95 'summary_callback' => 'relation_feeds_summary_callback',
1c73c660c2f2 new relation_processor
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents: 0
diff changeset
96 'form_callback' => 'relation_feeds_form_callback',
0
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
97 );
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
98
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
99 $targets["relation_name"]= array(
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
100 'name' => 'Relation Type',
5
1c73c660c2f2 new relation_processor
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents: 0
diff changeset
101 'callback' => 'relation_feeds_set_relation_type',
0
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
102
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
103 );
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
104
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
105 }
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
106
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
107 }
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
108
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
109
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
110
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
111 /*callback for relation_types
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
112 *
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
113 *
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
114 */
5
1c73c660c2f2 new relation_processor
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents: 0
diff changeset
115 function relation_feeds_set_relation_type($source, $entity, $target, $terms, $mapping = array()) {
0
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
116 if (empty($terms)) {
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
117 return;
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
118 }
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
119
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
120 // don't Handle non-multiple values.
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
121 if (is_array($terms)) {
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
122 return;
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
123 }
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
124
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
125
5
1c73c660c2f2 new relation_processor
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents: 0
diff changeset
126 dpm("CHECK: TYPE");
1c73c660c2f2 new relation_processor
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents: 0
diff changeset
127 dpm($terms);
1c73c660c2f2 new relation_processor
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents: 0
diff changeset
128
0
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
129 $types=relation_get_types(array($terms));
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
130
5
1c73c660c2f2 new relation_processor
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents: 0
diff changeset
131
0
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
132 if(sizeof($types)==0){ //typ gibt es nicht dann erzeuge mit defualt werten #TODO konfigurierbar?
5
1c73c660c2f2 new relation_processor
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents: 0
diff changeset
133
0
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
134 $info = array();
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
135 $info['relation_type']=$terms;
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
136 $info['directional']=TRUE;
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
137 $info['source_bundles'][]="node:*";
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
138 $info['target_bundles'][]="node:*";
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
139 $info['reverse_label']="invOf_" . $terms;
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
140 $rel_type = relation_type_create($info);
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
141 relation_type_save($rel_type);
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
142 }
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
143
5
1c73c660c2f2 new relation_processor
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents: 0
diff changeset
144
0
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
145 $entity->relation_type=$terms;
5
1c73c660c2f2 new relation_processor
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents: 0
diff changeset
146
1c73c660c2f2 new relation_processor
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents: 0
diff changeset
147 if ( _relation_feeds_checkRelationComplete($entity)){
1c73c660c2f2 new relation_processor
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents: 0
diff changeset
148
1c73c660c2f2 new relation_processor
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents: 0
diff changeset
149 $entity->is_new=FALSE;
1c73c660c2f2 new relation_processor
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents: 0
diff changeset
150 }
0
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
151 relation_update($entity);
5
1c73c660c2f2 new relation_processor
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents: 0
diff changeset
152
1c73c660c2f2 new relation_processor
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents: 0
diff changeset
153 }
1c73c660c2f2 new relation_processor
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents: 0
diff changeset
154
1c73c660c2f2 new relation_processor
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents: 0
diff changeset
155
1c73c660c2f2 new relation_processor
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents: 0
diff changeset
156 function _relation_feeds_checkRelationComplete($relation){
1c73c660c2f2 new relation_processor
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents: 0
diff changeset
157 //einer der Endpunkte existiert nicht
1c73c660c2f2 new relation_processor
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents: 0
diff changeset
158
1c73c660c2f2 new relation_processor
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents: 0
diff changeset
159 if (count($relation->endpoints['und'][0]) == 0)
1c73c660c2f2 new relation_processor
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents: 0
diff changeset
160 return false;
1c73c660c2f2 new relation_processor
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents: 0
diff changeset
161 if (!isset($relation->endpoints['und'][1]))
1c73c660c2f2 new relation_processor
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents: 0
diff changeset
162 return false;
1c73c660c2f2 new relation_processor
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents: 0
diff changeset
163 if (count($relation->endpoints['und'][1]) == 0)
1c73c660c2f2 new relation_processor
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents: 0
diff changeset
164 return false;
1c73c660c2f2 new relation_processor
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents: 0
diff changeset
165
1c73c660c2f2 new relation_processor
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents: 0
diff changeset
166 if ($relation->relation_type == "generic")
1c73c660c2f2 new relation_processor
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents: 0
diff changeset
167 return false;
1c73c660c2f2 new relation_processor
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents: 0
diff changeset
168 return true;
1c73c660c2f2 new relation_processor
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents: 0
diff changeset
169
1c73c660c2f2 new relation_processor
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents: 0
diff changeset
170 }
1c73c660c2f2 new relation_processor
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents: 0
diff changeset
171
1c73c660c2f2 new relation_processor
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents: 0
diff changeset
172 function _relation_feeds_checkEndpointsComplete($relation){
1c73c660c2f2 new relation_processor
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents: 0
diff changeset
173 //einer der Endpunkte existiert nicht
1c73c660c2f2 new relation_processor
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents: 0
diff changeset
174
1c73c660c2f2 new relation_processor
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents: 0
diff changeset
175
1c73c660c2f2 new relation_processor
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents: 0
diff changeset
176 if (count($relation->endpoints['und'][0]) == 0)
1c73c660c2f2 new relation_processor
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents: 0
diff changeset
177 return false;
1c73c660c2f2 new relation_processor
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents: 0
diff changeset
178 if (!isset($relation->endpoints['und'][1]))
1c73c660c2f2 new relation_processor
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents: 0
diff changeset
179 return false;
1c73c660c2f2 new relation_processor
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents: 0
diff changeset
180 if (count($relation->endpoints['und'][1]) == 0)
1c73c660c2f2 new relation_processor
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents: 0
diff changeset
181 return false;
1c73c660c2f2 new relation_processor
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents: 0
diff changeset
182
1c73c660c2f2 new relation_processor
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents: 0
diff changeset
183 return true;
1c73c660c2f2 new relation_processor
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents: 0
diff changeset
184
0
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
185 }
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
186
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
187 /**
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
188 * Callback for mapping. Here is where the actual mapping happens.
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
189 *
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
190 * @todo Do not create new terms for non-autotag fields.
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
191 */
5
1c73c660c2f2 new relation_processor
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents: 0
diff changeset
192 function relation_feeds_set_target($source, $entity, $target, $terms, $mapping = array()) {
0
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
193
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
194 // Allow mapping the string '0' to a term name.
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
195 if (empty($terms) && $terms != 0) {
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
196 return;
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
197 }
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
198
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
199 // Handle non-multiple values.
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
200 if (!is_array($terms)) {
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
201 $terms = array($terms);
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
202 }
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
203
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
204 // Add in default values.
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
205 $mapping += array(
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
206 'term_search' => FEEDS_ENTITY_SEARCH_TERM_NAME,
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
207 'autocreate' => FALSE,
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
208 );
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
209
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
210
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
211 $cache = &drupal_static(__FUNCTION__);
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
212
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
213
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
214 //$query = new EntityFieldQuery();
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
215 //$query->entityCondition('entity_type', 'node')
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
216 // ->range(0, 1);
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
217
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
218
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
219
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
220
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
221
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
222
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
223 // Iterate over all values.
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
224
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
225
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
226 #$mapping['term_search']=FEEDS_ENTITY_SEARCH_TERM_GUID;
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
227 foreach ($terms as $term) {
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
228 //dpm($term);
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
229
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
230
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
231 $tid = FALSE;
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
232
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
233 switch ($mapping['term_search']){
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
234 // Lookup by name.
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
235 case FEEDS_ENTITY_SEARCH_TERM_NAME:
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
236 $name_query = clone $query;
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
237 if ($tids = $name_query->propertyCondition('name', $term)->execute()) {
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
238 $tid = key($tids['taxonomy_term']);
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
239 }
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
240
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
241 // Lookup by tid.
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
242 case FEEDS_ENTITY_SEARCH_TERM_ID:
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
243 if (is_numeric($term)) {
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
244 $tid = $term;
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
245 }
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
246 break;
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
247
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
248 // Lookup by GUID.
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
249 case FEEDS_ENTITY_SEARCH_TERM_GUID:
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
250
5
1c73c660c2f2 new relation_processor
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents: 0
diff changeset
251
1c73c660c2f2 new relation_processor
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents: 0
diff changeset
252 $tid = relation_feeds_entity_lookup_entity_by_guid($term);
1c73c660c2f2 new relation_processor
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents: 0
diff changeset
253
0
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
254 break;
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
255
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
256 case FEEDS_ENTITY_SEARCH_TERM_CITEKEY:
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
257 $tid = _searchEntityByBiblioValue("biblio","citekey",$term);
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
258 }
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
259 }
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
260
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
261
5
1c73c660c2f2 new relation_processor
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents: 0
diff changeset
262
0
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
263 $eps = $entity->endpoints[LANGUAGE_NONE];
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
264 if (!isset($entity->endpoints[LANGUAGE_NONE])){ // noch nicht existent
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
265 $entity->endpoints[LANGUAGE_NONE][]=array();
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
266 } else if (sizeof($entity->endpoints[LANGUAGE_NONE])<1) { // nicht mindestens ein eintrag
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
267 $entity->endpoints[LANGUAGE_NONE][]=array();
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
268 }
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
269
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
270 switch ($target){
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
271 case "source_id":
5
1c73c660c2f2 new relation_processor
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents: 0
diff changeset
272
0
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
273 // source is immer der erste eintrag
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
274 $entity->endpoints[LANGUAGE_NONE][0]=array('entity_type' => 'node', 'entity_id' => $tid);
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
275 break;
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
276
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
277 case "target_id":
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
278 //target können mehrere existieren, hinten anfügen.
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
279 $entity->endpoints[LANGUAGE_NONE][]=array('entity_type' => 'node', 'entity_id' => $tid);
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
280 }
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
281
5
1c73c660c2f2 new relation_processor
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents: 0
diff changeset
282
1c73c660c2f2 new relation_processor
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents: 0
diff changeset
283
1c73c660c2f2 new relation_processor
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents: 0
diff changeset
284 if ( _relation_feeds_checkRelationComplete($entity)){
1c73c660c2f2 new relation_processor
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents: 0
diff changeset
285
1c73c660c2f2 new relation_processor
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents: 0
diff changeset
286 $entity->is_new=FALSE;
1c73c660c2f2 new relation_processor
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents: 0
diff changeset
287 relation_update($entity);
1c73c660c2f2 new relation_processor
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents: 0
diff changeset
288 }
0
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
289
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
290
5
1c73c660c2f2 new relation_processor
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents: 0
diff changeset
291 if ( _relation_feeds_checkEndpointsComplete($entity)){
0
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
292
5
1c73c660c2f2 new relation_processor
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents: 0
diff changeset
293 relation_update($entity);
1c73c660c2f2 new relation_processor
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents: 0
diff changeset
294 }
0
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
295
5
1c73c660c2f2 new relation_processor
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents: 0
diff changeset
296 # if ($target=="source_id"){
1c73c660c2f2 new relation_processor
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents: 0
diff changeset
297 # relation_update($entity);
1c73c660c2f2 new relation_processor
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents: 0
diff changeset
298 # }
0
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
299
5
1c73c660c2f2 new relation_processor
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents: 0
diff changeset
300 #if (sizeof($entity->endpoints[LANGUAGE_NONE])>1){ // WENN ZWEI ENDPUNKTE VORHANDEN DANN abspeichern
1c73c660c2f2 new relation_processor
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents: 0
diff changeset
301
1c73c660c2f2 new relation_processor
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents: 0
diff changeset
302 //$entity->is_new=FALSE;
1c73c660c2f2 new relation_processor
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents: 0
diff changeset
303
1c73c660c2f2 new relation_processor
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents: 0
diff changeset
304 #}
0
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
305 // }
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
306 }
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
307
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
308 /**
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
309 * Finds all terms associated with the given node, within one vocabulary.
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
310 */
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
311
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
312 /*
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
313 function taxonomy_feeds_node_get_terms($node, $key = 'tid') {
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
314 $terms = &drupal_static(__FUNCTION__);
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
315
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
316 if (!isset($terms[$node->nid][$key])) {
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
317 // Get tids from all taxonomy_term_reference fields.
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
318 $tids = array();
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
319 $fields = field_info_fields();
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
320 foreach ($fields as $field_name => $field) {
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
321 if ($field['type'] == 'taxonomy_term_reference' && field_info_instance('node', $field_name, $node->type)) {
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
322 if (($items = field_get_items('node', $node, $field_name)) && is_array($items)) {
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
323 $tids = array_merge($tids, array_map('_taxonomy_feeds_extract_tid', $items));
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
324 }
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
325 }
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
326 }
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
327
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
328 // Load terms and cache them in static var.
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
329 $curr_terms = taxonomy_term_load_multiple($tids);
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
330 $terms[$node->nid][$key] = array();
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
331 foreach ($curr_terms as $term) {
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
332 $terms[$node->nid][$key][$term->$key] = $term;
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
333 }
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
334 }
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
335 return $terms[$node->nid][$key];
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
336 }
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
337
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
338 */
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
339
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
340 /**
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
341 * Extracts tid from array item returned by field_get_items().
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
342 *
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
343 * @param array $item
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
344 * Tid information in the form of a single element array
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
345 * (key == 'tid', value == tid we're looking for)
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
346 *
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
347 * @return int
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
348 * Term id extracted from $item.
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
349 *
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
350 * @see taxonomy_feeds_node_get_terms()
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
351 * @see field_get_items()
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
352 */
5
1c73c660c2f2 new relation_processor
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents: 0
diff changeset
353 function _relation_feeds_extract_tid($item) {
0
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
354 return $item['tid'];
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
355 }
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
356
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
357 /**
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
358 * Looks up a term by GUID, assumes SQL storage backend.
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
359 *
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
360 * @param string $guid
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
361 * The Feeds GUID to compare against.
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
362 *
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
363 * @return int|FALSE
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
364 * The term id, or FALSE if one was not found.
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
365 */
5
1c73c660c2f2 new relation_processor
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents: 0
diff changeset
366 function relation_feeds_entity_lookup_entity_by_guid($guid) {
0
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
367
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
368
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
369 $res = db_select('feeds_item')
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
370 ->fields('feeds_item', array('entity_id'))
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
371 //->condition('feed_nid', $source->feed_nid)
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
372 //->condition('entity_type', $this->entityType())
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
373 //->condition('id', $source->id);
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
374 ->condition('guid', $guid)
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
375 ->execute()
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
376 ->fetchField();
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
377
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
378
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
379 return $res;
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
380 /* return db_select('feeds_item')
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
381 ->fields('feeds_item', array('entity_id'))
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
382 ->condition('entity_type', 'taxonomy_term')
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
383 ->condition('guid', $guid)
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
384 ->execute()
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
385 ->fetchField();*/
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
386 }
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
387
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
388 /**
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
389 * Mapping configuration summary for taxonomy.module.
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
390 *
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
391 * @param array $mapping
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
392 * Associative array of the mapping settings.
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
393 * @param array $target
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
394 * Array of target settings, as defined by the processor or
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
395 * hook_feeds_processor_targets_alter().
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
396 * @param array $form
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
397 * The whole mapping form.
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
398 * @param array $form_state
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
399 * The form state of the mapping form.
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
400 *
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
401 * @return string
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
402 * Returns, as a string that may contain HTML, the summary to display while
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
403 * the full form isn't visible.
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
404 * If the return value is empty, no summary and no option to view the form
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
405 * will be displayed.
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
406 */
5
1c73c660c2f2 new relation_processor
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents: 0
diff changeset
407 function relation_feeds_summary_callback($mapping, $target, $form, $form_state) {
1c73c660c2f2 new relation_processor
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents: 0
diff changeset
408 $options = _relation_feeds_form_callback_options();
0
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
409 if (empty($mapping['term_search'])) {
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
410 return t('Search Entity terms by: <strong>@search</strong>', array('@search' => $options[FEEDS_ENTITY_SEARCH_TERM_NAME]));
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
411 }
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
412 return t('Search Entity terms by: <strong>@search</strong>', array('@search' => $options[$mapping['term_search']]));
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
413 }
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
414
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
415 /**
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
416 * Settings form callback.
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
417 *
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
418 * @return array
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
419 * The per mapping configuration form. Once the form is saved, $mapping will
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
420 * be populated with the form values.
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
421 */
5
1c73c660c2f2 new relation_processor
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents: 0
diff changeset
422 function relation_feeds_form_callback($mapping, $target, $form, $form_state) {
0
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
423 return array(
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
424 'term_search' => array(
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
425 '#type' => 'select',
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
426 '#title' => t('Search Entity by'),
5
1c73c660c2f2 new relation_processor
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents: 0
diff changeset
427 '#options' => _relation_feeds_form_callback_options(),
0
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
428 '#default_value' => !empty($mapping['term_search']) ? $mapping['term_search'] : FEEDS_ENTITY_SEARCH_TERM_NAME,
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
429 ),
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
430 );
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
431 }
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
432
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
433 /**
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
434 * Returns the list of available term search methods.
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
435 *
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
436 * @return array
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
437 * An array of taxonomy search option titles.
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
438 */
5
1c73c660c2f2 new relation_processor
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents: 0
diff changeset
439 function _relation_feeds_form_callback_options() {
0
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
440 return array(
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
441 FEEDS_ENTITY_SEARCH_TERM_NAME => 'Entity name',
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
442 FEEDS_ENTITY_SEARCH_TERM_ID => 'Entity ID',
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
443 FEEDS_ENTITY_SEARCH_TERM_GUID => 'GUID',
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
444 FEEDS_ENTITY_SEARCH_TERM_CITEKEY => 'CITEKEY'
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
445 );
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
446 }
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
447
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
448
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
449
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
450 /* sucht nach entity vom typ mit Wert von Feld (fieldname) = term */
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
451 function _searchEntityByBiblioValue($bundle,$fieldName,$term){
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
452
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
453 $fc = module_load_include('inc', 'biblio', 'includes/biblio.pages');
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
454 if ($fc==FALSE){
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
455 dpm("FEHLER: cann't find biblio module!");
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
456 return;
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
457 }
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
458 $arglist = array (
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
459 "f" => array( $fieldName => $term)
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
460 );
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
461 $res = biblio_build_query($arglist);
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
462 $nid = $res[0][0];
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
463
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
464
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
465 return $nid;
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
466 }
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
467
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
468 function _searchEntityByFieldValue($bundle,$fieldName,$term){
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
469
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
470 $query = new EntityFieldQuery();
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
471 $query->entityCondition('entity_type', 'node')
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
472 ->entityCondition('bundle', $bundle)
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
473 ->fieldCondition($fieldName, 'value',$term, '=');
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
474
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
475 $result = $query->execute();
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
476 if (isset($result['node'])) {
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
477 $news_items_nids = array_keys($result['node']);
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
478 $news_items = entity_load('node', $news_items_nids);
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
479 return $news_items[0];
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
480 }
124ef8f3b22d initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
481 }