annotate modules/biblio/includes/biblio.feeds.inc @ 6:a75ead649730

added biblio, admin_menu and reference modules
author danieleb <danielebarchiesi@me.com>
date Fri, 20 Sep 2013 11:18:21 +0100
parents
children
rev   line source
danielebarchiesi@6 1 <?php
danielebarchiesi@6 2 function _biblio_feeds_processor_targets_alter(&$targets, $entity_type, $bundle_name) {
danielebarchiesi@6 3 if ($entity_type == 'node' && $bundle_name == 'biblio') {
danielebarchiesi@6 4 $schema = drupal_get_schema('biblio');
danielebarchiesi@6 5 foreach ($schema['fields'] as $field => $spec) {
danielebarchiesi@6 6 if (strstr($field, 'biblio_')) {
danielebarchiesi@6 7 $type = $spec['type'];
danielebarchiesi@6 8 $length = isset($spec['length']) ? ' ['. $spec['length'] . ']': '';
danielebarchiesi@6 9 $targets[$field] = array(
danielebarchiesi@6 10 'name' => $field . ' (' . $type . $length . ')',
danielebarchiesi@6 11 'description' =>'',
danielebarchiesi@6 12 'callback' => '_biblio_feeds_set__simple_target',
danielebarchiesi@6 13 );
danielebarchiesi@6 14 }
danielebarchiesi@6 15 }
danielebarchiesi@6 16 $targets['biblio_type']['callback'] = '_biblio_feeds_set__type_target';
danielebarchiesi@6 17 $targets['biblio_contributor'] = array(
danielebarchiesi@6 18 'name' => t('biblio_contributor'),
danielebarchiesi@6 19 'description' => t('This is a contributor (author) contained in a biblio entry.'),
danielebarchiesi@6 20 'callback' => '_biblio_feeds_set__contrib_target',
danielebarchiesi@6 21 // 'real_target' => 'my_node_field_two', // Specify real target field on node.
danielebarchiesi@6 22 );
danielebarchiesi@6 23 $targets['biblio_keyword'] = array(
danielebarchiesi@6 24 'name' => t('biblio_keyword'),
danielebarchiesi@6 25 'description' => t('This is a keyword contained in a biblio entry.'),
danielebarchiesi@6 26 'callback' => '_biblio_feeds_set__keyword_target',
danielebarchiesi@6 27 // 'real_target' => 'my_node_field_two', // Specify real target field on node.
danielebarchiesi@6 28 );
danielebarchiesi@6 29 }
danielebarchiesi@6 30 }
danielebarchiesi@6 31
danielebarchiesi@6 32 function _biblio_feeds_set__type_target($source, $entity, $target, $value) {
danielebarchiesi@6 33 static $types = array();
danielebarchiesi@6 34
danielebarchiesi@6 35 if (empty($value)) {
danielebarchiesi@6 36 return;
danielebarchiesi@6 37 }
danielebarchiesi@6 38
danielebarchiesi@6 39 // Handle non-multiple value fields.
danielebarchiesi@6 40 if (!is_array($value)) {
danielebarchiesi@6 41 $value = array($value);
danielebarchiesi@6 42 }
danielebarchiesi@6 43
danielebarchiesi@6 44 if (isset($value[0]) && !empty($value[0])) {
danielebarchiesi@6 45 if (intval($value[0]) > 0) {
danielebarchiesi@6 46 // value[0] is the bibio type ID
danielebarchiesi@6 47 if (empty($types)) {
danielebarchiesi@6 48 $result = db_query('SELECT t.* FROM {biblio_types} as t WHERE t.tid > 0');
danielebarchiesi@6 49 foreach ($result as $row) {
danielebarchiesi@6 50 $types[$row->tid] = $row->tid;
danielebarchiesi@6 51 }
danielebarchiesi@6 52 }
danielebarchiesi@6 53
danielebarchiesi@6 54 $type_id = $value[0];
danielebarchiesi@6 55 $entity->biblio_type = (isset($types[$type_id])) ? $type_id : 129;
danielebarchiesi@6 56 }
danielebarchiesi@6 57 elseif (is_string($value[0])) {
danielebarchiesi@6 58 // value[0] is the bibio type name
danielebarchiesi@6 59 if (empty($types)) {
danielebarchiesi@6 60 $result = db_query('SELECT t.* FROM {biblio_types} as t WHERE t.tid > 0');
danielebarchiesi@6 61 foreach ($result as $row) {
danielebarchiesi@6 62 $types[$row->tid] = str_replace(" ","_", strtolower($row->name));
danielebarchiesi@6 63 }
danielebarchiesi@6 64 }
danielebarchiesi@6 65
danielebarchiesi@6 66 $type = array_search($value[0], $types);
danielebarchiesi@6 67 $entity->biblio_type = (!empty($type)) ? $type : 129;
danielebarchiesi@6 68 }
danielebarchiesi@6 69 }
danielebarchiesi@6 70 }
danielebarchiesi@6 71
danielebarchiesi@6 72 function _biblio_feeds_set__simple_target($source, $entity, $target, $value) {
danielebarchiesi@6 73 if (empty($value)) {
danielebarchiesi@6 74 return;
danielebarchiesi@6 75 }
danielebarchiesi@6 76
danielebarchiesi@6 77 // Handle non-multiple value fields.
danielebarchiesi@6 78 if (!is_array($value)) {
danielebarchiesi@6 79 $value = array($value);
danielebarchiesi@6 80 }
danielebarchiesi@6 81
danielebarchiesi@6 82 if (isset($value[0]) && !empty($value[0])) {
danielebarchiesi@6 83 $entity->$target = $value[0];
danielebarchiesi@6 84 if ($target == 'biblio_abst_e') {
danielebarchiesi@6 85 $entity->biblio_formats[$target] = 'full_html';
danielebarchiesi@6 86 }
danielebarchiesi@6 87 }
danielebarchiesi@6 88 }
danielebarchiesi@6 89
danielebarchiesi@6 90 function _biblio_feeds_set__contrib_target($source, $entity, $target, $value) {
danielebarchiesi@6 91 if (is_string($value)) {
danielebarchiesi@6 92 $value = explode('||', $value);
danielebarchiesi@6 93 }
danielebarchiesi@6 94 foreach ($value as $author) {
danielebarchiesi@6 95 $entity->biblio_contributors[] = array(
danielebarchiesi@6 96 'name' => $author,
danielebarchiesi@6 97 'auth_category' => 1,
danielebarchiesi@6 98 );
danielebarchiesi@6 99 }
danielebarchiesi@6 100 }
danielebarchiesi@6 101
danielebarchiesi@6 102 function _biblio_feeds_set__keyword_target($source, $entity, $target, $value) {
danielebarchiesi@6 103 if (!empty($value)) {
danielebarchiesi@6 104 $entity->biblio_keywords = $value;
danielebarchiesi@6 105 }
danielebarchiesi@6 106 }
danielebarchiesi@6 107
danielebarchiesi@6 108 function _biblio_feeds_oai_importer_default() {
danielebarchiesi@6 109
danielebarchiesi@6 110 $feeds_importer = new stdClass;
danielebarchiesi@6 111 $feeds_importer->disabled = FALSE; /* Edit this to true to make a default feeds_importer disabled initially */
danielebarchiesi@6 112 $feeds_importer->api_version = 1;
danielebarchiesi@6 113 $feeds_importer->id = 'biblio_oai_pmh';
danielebarchiesi@6 114 $feeds_importer->config = array(
danielebarchiesi@6 115 'name' => 'Biblio OAI-PMH',
danielebarchiesi@6 116 'description' => 'Import an OAI-PMH feed into the Biblio node type.',
danielebarchiesi@6 117 'fetcher' => array(
danielebarchiesi@6 118 'plugin_key' => 'FeedsOAIHTTPFetcher',
danielebarchiesi@6 119 'config' => array(
danielebarchiesi@6 120 'auto_detect_feeds' => FALSE,
danielebarchiesi@6 121 'use_pubsubhubbub' => FALSE,
danielebarchiesi@6 122 'last_fetched_timestamp' => '',
danielebarchiesi@6 123 'earliest_timestamp' => '',
danielebarchiesi@6 124 'use_dates' => FALSE,
danielebarchiesi@6 125 'to' => array(),
danielebarchiesi@6 126 'from' => array(),
danielebarchiesi@6 127 ),
danielebarchiesi@6 128 ),
danielebarchiesi@6 129 'parser' => array(
danielebarchiesi@6 130 'plugin_key' => 'FeedsOAIParser',
danielebarchiesi@6 131 'config' => array(),
danielebarchiesi@6 132 ),
danielebarchiesi@6 133 'processor' => array(
danielebarchiesi@6 134 'plugin_key' => 'FeedsNodeProcessor',
danielebarchiesi@6 135 'config' => array(
danielebarchiesi@6 136 'content_type' => 'biblio',
danielebarchiesi@6 137 'expire' => '-1',
danielebarchiesi@6 138 'author' => 0,
danielebarchiesi@6 139 'mappings' => array(
danielebarchiesi@6 140 0 => array(
danielebarchiesi@6 141 'source' => 'title',
danielebarchiesi@6 142 'target' => 'title',
danielebarchiesi@6 143 'unique' => 0,
danielebarchiesi@6 144 ),
danielebarchiesi@6 145 1 => array(
danielebarchiesi@6 146 'source' => 'publisher',
danielebarchiesi@6 147 'target' => 'biblio_publisher',
danielebarchiesi@6 148 'unique' => FALSE,
danielebarchiesi@6 149 ),
danielebarchiesi@6 150 2 => array(
danielebarchiesi@6 151 'source' => 'subject',
danielebarchiesi@6 152 'target' => 'biblio_keyword',
danielebarchiesi@6 153 'unique' => FALSE,
danielebarchiesi@6 154 ),
danielebarchiesi@6 155 3 => array(
danielebarchiesi@6 156 'source' => 'source',
danielebarchiesi@6 157 'target' => 'biblio_secondary_title',
danielebarchiesi@6 158 'unique' => FALSE,
danielebarchiesi@6 159 ),
danielebarchiesi@6 160 4 => array(
danielebarchiesi@6 161 'source' => 'guid',
danielebarchiesi@6 162 'target' => 'guid',
danielebarchiesi@6 163 'unique' => 1,
danielebarchiesi@6 164 ),
danielebarchiesi@6 165 5 => array(
danielebarchiesi@6 166 'source' => 'creator',
danielebarchiesi@6 167 'target' => 'biblio_contributor',
danielebarchiesi@6 168 'unique' => FALSE,
danielebarchiesi@6 169 ),
danielebarchiesi@6 170 6 => array(
danielebarchiesi@6 171 'source' => 'description',
danielebarchiesi@6 172 'target' => 'biblio_abst_e',
danielebarchiesi@6 173 'unique' => FALSE,
danielebarchiesi@6 174 ),
danielebarchiesi@6 175 7 => array(
danielebarchiesi@6 176 'source' => 'contributor',
danielebarchiesi@6 177 'target' => 'biblio_contributor',
danielebarchiesi@6 178 'unique' => FALSE,
danielebarchiesi@6 179 ),
danielebarchiesi@6 180 8 => array(
danielebarchiesi@6 181 'source' => 'identifier',
danielebarchiesi@6 182 'target' => 'biblio_url',
danielebarchiesi@6 183 'unique' => FALSE,
danielebarchiesi@6 184 ),
danielebarchiesi@6 185 9 => array(
danielebarchiesi@6 186 'source' => 'date',
danielebarchiesi@6 187 'target' => 'biblio_year',
danielebarchiesi@6 188 'unique' => FALSE,
danielebarchiesi@6 189 ),
danielebarchiesi@6 190 10 => array(
danielebarchiesi@6 191 'source' => 'setspec_raw',
danielebarchiesi@6 192 'target' => 'biblio_type',
danielebarchiesi@6 193 'unique' => FALSE,
danielebarchiesi@6 194 ),
danielebarchiesi@6 195 ),
danielebarchiesi@6 196 'update_existing' => '0',
danielebarchiesi@6 197 'input_format' => 'plain_text',
danielebarchiesi@6 198 ),
danielebarchiesi@6 199 ),
danielebarchiesi@6 200 'content_type' => '',
danielebarchiesi@6 201 'update' => 0,
danielebarchiesi@6 202 'import_period' => '1800',
danielebarchiesi@6 203 'expire_period' => 3600,
danielebarchiesi@6 204 'import_on_create' => 1,
danielebarchiesi@6 205 'process_in_background' => 0,
danielebarchiesi@6 206 );
danielebarchiesi@6 207
danielebarchiesi@6 208 return array(
danielebarchiesi@6 209 'biblio_oai' => $feeds_importer
danielebarchiesi@6 210 );
danielebarchiesi@6 211 }