Project

General

Profile

Download (3.18 KB) Statistics
| Branch: | Tag: | Revision:
1
<?php
2

    
3
define(NODETYPE_TAXON, 'taxon');
4
define(NODETYPE_MEDIA, 'media');
5
define(NODETYPE_REFERENCE, 'reference');
6
define(NODETYPE_NAME, 'name');
7

    
8
/**
9
 * Implementation of hook_cdm_nodetypes().
10
 */
11
function cdm_dataportal_cdm_nodetypes(){
12
	static $nodetypes;
13
	  if(!$nodetypes){
14
	    $nodetypes = array('cdm_'.NODETYPE_REFERENCE => NODETYPE_REFERENCE, 'cdm_'.NODETYPE_TAXON => NODETYPE_TAXON, 'cdm_'.NODETYPE_MEDIA => NODETYPE_MEDIA, 'cdm_'.NODETYPE_NAME => NODETYPE_NAME); 
15
	  }
16
	  return $nodetypes; 
17
}
18

    
19
/**
20
 * Implementation of hook_node_info().
21
 */
22
function cdm_dataportal_node_info() {
23
	
24
  $nodeinfo = array();
25
  foreach( cdm_get_nodetypes() as $nodeType=>$type){
26
    $nodeinfo[$nodeType] = array(
27
      'name' => t(ucfirst($type)),
28
      'has_title' => TRUE,
29
      'module' => 'cdm_dataportal',
30
      'description' => t('This node type is being used internally to create peer nodes in drupal for cdm entities of the type ' . $type . '.')
31
    );
32
  }
33
  
34
  return $nodeinfo;
35
}
36

    
37

    
38
/**
39
 *  Implementation of hook_form()
40
 */
41
function cdm_dataportal_form(&$node) {
42
  
43
  $type = node_get_types('type', $node);
44
  
45
  if(is_numeric($node->nid)){
46
    $cdm_node_notice = t('In order to edit CDM content, please use the '). l(t('Taxonomic Editor'), 'http://dev.e-taxonomy.eu/trac/wiki/TaxonomicEditor', NULL, NULL, TRUE);   
47
  } else {
48
    $cdm_node_notice = t('You cannot manually create a node of type ').$type->name . '. '. t('This node type is only created internally');
49
  }
50
  $form['cdm'] = array(
51
    '#value' => '<div class="cdm_node_notice warning">' . $cdm_node_notice . '</div>',
52
    '#weight' => -5
53
  );
54
  // We need to define form elements for the node's title and body.
55
  $form['title'] = array(
56
    '#type' => 'textfield',
57
    '#title' => check_plain($type->title_label),
58
    '#required' => TRUE,
59
    '#disabled' => TRUE,
60
    '#default_value' => $node->title,
61
    '#weight' => -5
62
  );
63
  
64
  return $form;
65
}
66

    
67

    
68
/**
69
 * Implementation of hook_nodeapi().
70
 */
71
function cdm_dataportal_nodeapi(&$node, $op, $teaser, $page) {
72
  switch ($op) {
73
    case 'view':
74
      switch($node->type){
75
        case 'cdm_'.NODETYPE_TAXON : 
76
          if(arg(0) == 'node'){
77
            $cdmnode = db_fetch_object(db_query('SELECT * FROM {node_cdm} WHERE nid = \'%d\''
78
              , $node->nid));
79
            $taxonpage = cdm_dataportal_taxon_view($cdmnode->uuid);
80
            drupal_set_title($taxonpage->title);
81
            cdm_add_node_content($node, $taxonpage->content, variable_get('cdm_content_weight', -1));
82
          }
83
          break;
84
        case 'cdm_'.NODETYPE_NAME : 
85
          if(arg(0) == 'node'){
86
            $cdmnode = db_fetch_object(db_query('SELECT * FROM {node_cdm} WHERE nid = \'%d\''
87
              , $node->nid));
88
            $namepage = cdm_dataportal_name_view($cdmnode->uuid);
89
            drupal_set_title($namepage->title);
90
            cdm_add_node_content($node, $namepage->content, variable_get('cdm_content_weight', -1));
91
          }
92
          break;  
93
      }
94
      break;
95
      
96
      case 'delete':
97
      	if(array_key_exists($node->type, cdm_get_nodetypes())){
98
      		 db_query("DELETE FROM {node_cdm} WHERE nid = %d", $node->nid);
99
      	}
100
  }
101
}
(10-10/12)