Project

General

Profile

Download (19.2 KB) Statistics
| Branch: | Tag: | Revision:
1
<?php
2
/**
3
 * @file
4
 * Bibliography Theming functions.
5
 *
6
 * @copyright
7
 *   (C) 2007-2012 EDIT
8
 *   European Distributed Institute of Taxonomy
9
 *   http://www.e-taxonomy.eu
10
 *
11
 *   The contents of this module are subject to the Mozilla
12
 *   Public License Version 1.1.
13
 * @see http://www.mozilla.org/MPL/MPL-1.1.html
14
 */
15

    
16
/**
17
 * Returns html for a bibliography.
18
 *
19
 * Used in the Palmae portal.
20
 *
21
 * @param array $variables
22
 *   An associative array containing:
23
 *   - descriptionElementsBibliography: the elements to theme for bibliography.
24
 *
25
 * @ingroup themeable
26
 */
27
function theme_cdm_descriptionElementBibliography($variables) {
28
  $descriptionElementsBibliography = $variables['descriptionElementsBibliography'];
29

    
30
  $listOfReferences = array ();
31
  // $useDescriptions = cdm_ws_get()
32
  $markerTypes['markerTypes'] = UUID_MARKERTYPE_USE;
33
  $useDescriptions = cdm_ws_get(CDM_WS_PORTAL_TAXON_DESCRIPTIONS, substr(strrchr($_GET["q"], '/'), 1), queryString($markerTypes));
34
  // = substr(strrchr($_GET["q"], '/'), 1);
35
  // $descout = print_r($useDescriptions);
36
  foreach ($descriptionElementsBibliography as $descriptionElementsBiblio) {
37
    foreach ($descriptionElementsBiblio as $descriptionElementBiblio) {
38
      if (isset($descriptionElementBiblio->sources) && is_array($descriptionElementBiblio->sources)) {
39
        foreach ($descriptionElementBiblio->sources as $source) {
40
          $isAlreadySelected = FALSE;
41
          if (empty($listOfReferences)) {
42
            $listOfReferences[] = $source;
43
          }
44
          else {
45
            foreach ($listOfReferences as $selectedReference) {
46
              if (isset($selectedReference->citation->uuid) && isset($source->citation->uuid) && $selectedReference->citation->uuid == $source->citation->uuid) {
47
                $isAlreadySelected = TRUE;
48
              }
49
            }
50
            // Add the source in the list of reference/ This is to remove
51
            // duplicates from the Bibliography section.
52
            if (!$isAlreadySelected) {
53
              $listOfReferences[] = $source;
54
            }
55
          }
56
        }
57
      }
58
    }
59
  }
60

    
61
  if (!empty($useDescriptions) && is_array($useDescriptions)) {
62
    foreach ($useDescriptions as $useDescription) {
63
      if (is_array($useDescription->sources)) {
64
        foreach ($useDescription->sources as $source) {
65
          $isAlreadySelected = FALSE;
66
          if (empty($listOfReferences)) {
67
            $listOfReferences[] = $source;
68
          }
69
          else {
70
            foreach ($listOfReferences as $selectedReference) {
71
              if ($selectedReference->citation->uuid == $source->citation->uuid) {
72
                $isAlreadySelected = TRUE;
73
              }
74
            }
75
            if (!$isAlreadySelected) {
76
              $listOfReferences[] = $source;
77
            }
78
          }
79
        }
80
      }
81
    }
82
  }
83

    
84
  // Call the reference formatting function, it will do the heavy lifting.
85
  $out = formatReference_for_Bibliography($listOfReferences);
86
  return $out;
87
}
88

    
89
/**
90
 * Formats a reference.
91
 * Comment @WA @todo use ' instead of " where possible.
92
 *
93
 * Used by theme_cdm_descriptionElementBibliography.
94
 */
95
function formatReference_for_Bibliography($references) {
96
  $out = '<div id="block-cdm_dataportal-feature-discussion"><a name="bibliography"> </a><H2>Bibliography</H2><div class="content"> <ul class="description">';
97
  $outTemp = array ();
98
  foreach ($references as $reference) {
99
    $referenceString = '';
100
    $reference_type = isset($reference->citation->type) ? $reference->citation->type : '';
101
    switch ($reference_type) {
102
      case "Journal":
103
        $referenceString .= "<li class=\"descriptionText DescriptionElement\">";
104
        $numberOfTeamMembers = count($reference->citation->authorTeam->teamMembers);
105
        $currentRecord = 1;
106
        if (!empty($reference->citation->authorTeam->teamMembers)) {
107
          foreach ($reference->citation->authorTeam->teamMembers as $teamMember) {
108
            if (!empty($teamMember->lastname) && !empty($teamMember->firstname)) {
109
              if ($currentRecord == 1) {
110
                $referenceString .= $teamMember->lastname . ", " . $teamMember->firstname;
111
              }
112
              elseif ($numberOfTeamMembers != $currentRecord) {
113
                $referenceString .= " , " . $teamMember->lastname . ", " . $teamMember->firstname;
114
              }
115
              else {
116
                $referenceString .= " & " . $teamMember->lastname . ", " . $teamMember->firstname;
117
                $referenceString .= ((str_endsWith($referenceString, ".") || str_endsWith($referenceString, ". ")) ? ' ' : ". ");
118
              }
119
              $currentRecord += 1;
120
            }
121
            else {
122
              if ($numberOfTeamMembers != $currentRecord) {
123
                $referenceString .= $teamMember->titleCache . " & ";
124
              }
125
              else {
126
                $referenceString .= $teamMember->titleCache;
127
                $referenceString .= ((str_endsWith($referenceString, ".") || str_endsWith($referenceString, ". ")) ? ' ' : ". ");
128
              }
129
              $currentRecord += 1;
130
            }
131
          }
132
        }
133
        else {
134
          $referenceString .= $reference->citation->authorTeam->titleCache;
135
          $referenceString .= ((str_endsWith($referenceString, ".") || str_endsWith($referenceString, ". ")) ? " " : ". ");
136
        }
137
        /*
138
        else {
139
          $referenceString .= $teamMember->lastname . ", " . $teamMember->firstname . " ";
140
        }
141
        */
142
        if (!empty($reference->citation->datePublished->start)) {
143
          $referenceString .= substr($reference->citation->datePublished->start, 0, 4);
144
          $referenceString .= ((str_endsWith($referenceString, ".") || str_endsWith($referenceString, ". ")) ? "" : ". ");
145
        }
146
        $referenceString .= $reference->citation->title . ". " . $reference->citation->publisher;
147
        $referenceString .= ((str_endsWith($referenceString, ".") || str_endsWith($referenceString, ". ")) ? "" : ". ");
148
        $referenceString .= "</li>";
149
        break;
150

    
151
      case "Article":
152
        $referenceString .= "<li class=\"descriptionText DescriptionElement\">";
153
        $numberOfTeamMembers = 0;
154
        if(!empty($reference->citation->authorTeam->teamMembers)) {
155
          $numberOfTeamMembers = count($reference->citation->authorTeam->teamMembers);
156
        }
157
        $currentRecord = 1;
158
        if (!empty($reference->citation->authorTeam->teamMembers)) {
159
          foreach ($reference->citation->authorTeam->teamMembers as $teamMember) {
160
            if (!empty($teamMember->lastname) && !empty($teamMember->firstname)) {
161
              if ($currentRecord == 1) {
162
                $referenceString .= $teamMember->lastname . ", " . $teamMember->firstname;
163
              }
164
              elseif ($numberOfTeamMembers != $currentRecord) {
165
                $referenceString .= " , " . $teamMember->lastname . ", " . $teamMember->firstname;
166
              }
167
              else {
168
                $referenceString .= " & " . $teamMember->lastname . ", " . $teamMember->firstname;
169
                $referenceString .= ((str_endsWith($referenceString, ".") || str_endsWith($referenceString, ". ")) ? ' ' : ". ");
170
              }
171
              $currentRecord += 1;
172
            }
173
            else {
174
              if ($numberOfTeamMembers != $currentRecord) {
175
                $referenceString .= $teamMember->titleCache . " & ";
176
              }
177
              else {
178
                $referenceString .= $teamMember->titleCache;
179
                $referenceString .= ((str_endsWith($referenceString, ".") || str_endsWith($referenceString, ". ")) ? ' ' : ". ");
180
              }
181
              $currentRecord += 1;
182
            }
183
          }
184
        }
185
        else {
186
          $referenceString .= $reference->citation->authorTeam->titleCache;
187
          $referenceString .= ((str_endsWith($referenceString, ".") || str_endsWith($referenceString, ". ")) ? " " : ". ");
188
        }
189
        /*
190
        else {
191
          $referenceString .= $teamMember->lastname . ", " . $teamMember->firstname . " ";
192
        }
193
        */
194
        if (!empty($reference->citation->datePublished->start)) {
195
          $referenceString .= substr($reference->citation->datePublished->start, 0, 4);
196
          $referenceString .= ((str_endsWith($referenceString, ".") || str_endsWith($referenceString, ". ")) ? "" : ". ");
197
        }
198
        if (!empty($reference->citation->title)) {
199
          $referenceString .= $reference->citation->title . ". ";
200
        }
201
        if (!empty($reference->citation->publisher)) {
202
          $referenceString .= $reference->citation->publisher;
203
        }
204
        $referenceString .= ((str_endsWith($referenceString, ".") || str_endsWith($referenceString, ". ")) ? "" : ". ");
205
        $referenceString .= "</li>";
206
        break;
207

    
208
      case "Book":
209
        $referenceString .= "<li class=\"descriptionText DescriptionElement\">";
210
        if (!empty($reference->citation->authorTeam->teamMembers)) {
211
          $numberOfTeamMembers = count($reference->citation->authorTeam->teamMembers);
212
        }
213
        $currentRecord = 1;
214
        $isCitationTitleCache = FALSE;
215
        if (!empty($reference->citation->authorTeam->teamMembers) && $reference->citation->authorTeam->titleCache != "-empty team-") {
216
          foreach ($reference->citation->authorTeam->teamMembers as $teamMember) {
217
            if (!empty($teamMember->lastname) && !empty($teamMember->firstname)) {
218
              if ($numberOfTeamMembers != $currentRecord) {
219
                $referenceString .= $teamMember->lastname . ", " . $teamMember->firstname . " & ";
220
              }
221
              else {
222
                $referenceString .= $teamMember->lastname . ", " . $teamMember->firstname;
223
                $referenceString .= ((str_endsWith($referenceString, ".") || str_endsWith($referenceString, ". ")) ? "" : ". ");
224
              }
225
              $currentRecord += 1;
226
            }
227
            else {
228
              if ($numberOfTeamMembers != $currentRecord) {
229
                $referenceString .= $teamMember->titleCache . " & ";
230
              }
231
              else {
232
                $referenceString .= $teamMember->titleCache;
233
                $referenceString .= ((str_endsWith($referenceString, ".") || str_endsWith($referenceString, ". ")) ? "" : ". ");
234
              }
235
              $currentRecord += 1;
236
            }
237
          }
238
        }
239
        elseif ($reference->citation->authorTeam->titleCache != "-empty team-") {
240
          $referenceString .= $reference->citation->authorTeam->titleCache;
241
          $referenceString .= ((str_endsWith($referenceString, ".") || str_endsWith($referenceString, ". ")) ? "" : ". ");
242
        }
243
        else {
244
          $isCitationTitleCache = TRUE;
245
          $referenceString .= $reference->citation->titleCache;
246
        }
247
        if (!empty($reference->citation->datePublished->start)) {
248
          $referenceString .= substr($reference->citation->datePublished->start, 0, 4);
249
          $referenceString .= ((str_endsWith($referenceString, ".") || str_endsWith($referenceString, ". ")) ? "" : ". ");
250
        }
251
        if ($isCitationTitleCache == FALSE && !empty($reference->citation->title)) {
252
          $referenceString .= $reference->citation->title;
253
          $referenceString .= ((str_endsWith($referenceString, ".") || str_endsWith($referenceString, ". ")) ? "" : ". ");
254
        }
255
        if (!empty($reference->citation->publisher)) {
256
          $referenceString .= $reference->citation->publisher;
257
          $referenceString .= ((str_endsWith($referenceString, ".") || str_endsWith($referenceString, ". ")) ? "" : ". ");
258
        }
259
        $referenceString .= ((str_endsWith($referenceString, ".") || str_endsWith($referenceString, ". ")) ? "" : ". ");
260
        $referenceString .= "</li>";
261
        break;
262

    
263
      case "BookSection":
264
        $referenceString .= "<li class=\"descriptionText DescriptionElement\">";
265
        if(isset($reference->citation->authorTeam)){
266
          $currentRecord = 1;
267
          if (!empty($reference->citation->authorTeam->teamMembers)) {
268
            $numberOfTeamMembers = count($reference->citation->authorTeam->teamMembers);
269
            foreach ($reference->citation->authorTeam->teamMembers as $teamMember) {
270
              if (!empty($teamMember->lastname) && !empty($teamMember->firstname)) {
271
                if ($numberOfTeamMembers != $currentRecord) {
272
                  $referenceString .= $teamMember->lastname . ", " . $teamMember->firstname . " & ";
273
                }
274
                else {
275
                  $referenceString .= $teamMember->lastname . ", " . $teamMember->firstname;
276
                  $referenceString .= ((str_endsWith($referenceString, ".") || str_endsWith($referenceString, ". ")) ? "" : ". ");
277
                }
278
                $currentRecord += 1;
279
              }
280
              else {
281
                if ($numberOfTeamMembers != $currentRecord) {
282
                  $referenceString .= $teamMember->titleCache . " & ";
283
                }
284
                else {
285
                  $referenceString .= $teamMember->titleCache;
286
                  $referenceString .= ((str_endsWith($referenceString, ".") || str_endsWith($referenceString, ". ")) ? "" : ". ");
287
                }
288
                $currentRecord += 1;
289
              }
290
            }
291
          }
292
        }
293

    
294
        if(isset($reference->citation->inReference)){
295

    
296
          $referenceString .= substr($reference->citation->inReference->datePublished->start, 0, 4) . ". " . $reference->citation->title . ". " . "Pages " . $reference->citation->pages . ". In ";
297
          if (isset($reference->citation->inReference->authorTeam)) {
298
            $numberOfTeamMembersInReference = count($reference->citation->inReference->authorTeam->teamMembers);
299
            $currentRecordinReference = 1;
300
            if (!empty($reference->citation->inReference->authorTeam->teamMembers)) {
301
              foreach ($reference->citation->inReference->authorTeam->teamMembers as $teamMember) {
302
                if (!empty($teamMember->lastname) && !empty($teamMember->firstname)) {
303
                  if ($numberOfTeamMembers != $currentRecord) {
304
                    $referenceString .= $teamMember->lastname . ", " . $teamMember->firstname . " & ";
305
                  }
306
                  else {
307
                    $referenceString .= $teamMember->lastname . ", " . $teamMember->firstname;
308
                    $referenceString .= ((str_endsWith($referenceString, ".") || str_endsWith($referenceString, ". ")) ? "" : ". ");
309
                  }
310
                  $currentRecord += 1;
311
                }
312
                else {
313
                  if ($numberOfTeamMembers != $currentRecord) {
314
                    $referenceString .= $teamMember->titleCache . " & ";
315
                  }
316
                  else {
317
                    $referenceString .= $teamMember->titleCache;
318
                    $referenceString .= ((str_endsWith($referenceString, ".") || str_endsWith($referenceString, ". ")) ? "" : ". ");
319
                  }
320
                  $currentRecord += 1;
321
                }
322
              }
323
            }
324
          }
325
          $referenceString .= $reference->citation->inReference->title . ". " . $reference->citation->inReference->publisher . ". " . $reference->citation->inReference->placePublished;
326
        }
327
        $referenceString .= ((str_endsWith($referenceString, ".") || str_endsWith($referenceString, ". ")) ? "" : ". ");
328
        $referenceString .= "</li>";
329
        break;
330

    
331
      case "WebPage":
332
        $referenceString .= "<li class=\"descriptionText DescriptionElement\">" . $reference->citation->titleCache . "</li>";
333
        break;
334

    
335
      case "Generic":
336
        $referenceString .= "<li class=\"descriptionText DescriptionElement\">";
337
        $currentRecord = 1;
338
        if (!empty($reference->citation->authorTeam->teamMembers)) {
339
          $numberOfTeamMembers = count($reference->citation->authorTeam->teamMembers);
340
          foreach ($reference->citation->authorTeam->teamMembers as $teamMember) {
341
            if (!empty($teamMember->lastname) && !empty($teamMember->firstname)) {
342
              if ($currentRecord == 1) {
343
                $referenceString .= $teamMember->lastname . ", " . $teamMember->firstname;
344
              }
345
              elseif ($numberOfTeamMembers != $currentRecord) {
346
                $referenceString .= " , " . $teamMember->lastname . ", " . $teamMember->firstname;
347
              }
348
              else {
349
                $referenceString .= " & " . $teamMember->lastname . ", " . $teamMember->firstname;
350
                $referenceString .= ((str_endsWith($referenceString, ".") || str_endsWith($referenceString, ". ")) ? ' ' : ". ");
351
              }
352
              $currentRecord += 1;
353
            }
354
            else {
355
              if ($numberOfTeamMembers != $currentRecord) {
356
                $referenceString .= $teamMember->titleCache . " & ";
357
              }
358
              else {
359
                $referenceString .= $teamMember->titleCache;
360
                $referenceString .= ((str_endsWith($referenceString, ".") || str_endsWith($referenceString, ". ")) ? ' ' : ". ");
361
              }
362
              $currentRecord += 1;
363
            }
364
          }
365
        }
366
        elseif (!empty($reference->citation->authorTeam->titleCache)) {
367
          $referenceString .= $reference->citation->authorTeam->titleCache;
368
          $referenceString .= ((str_endsWith($referenceString, ".") || str_endsWith($referenceString, ". ")) ? " " : ". ");
369
        }
370
        else {
371
          $referenceString .= $reference->citation->titleCache;
372
          $referenceString .= ((str_endsWith($out, ".") || str_endsWith($out, ". ")) ? " " : ". ");
373
        }
374
        /*
375
        else {
376
          $referenceString .= $teamMember->lastname . ", " . $teamMember->firstname . " ";
377
        }
378
        */
379
        if (!empty($reference->citation->datePublished->start)) {
380
          $referenceString .= substr($reference->citation->datePublished->start, 0, 4);
381
          $referenceString .= ((str_endsWith($referenceString, ".") || str_endsWith($referenceString, ". ")) ? " " : ". ");
382
        }
383
        $referenceString .= $reference->citation->title . ". " . (isset($reference->citation->publisher) ? $reference->citation->publisher : '');
384
        $referenceString .= ((str_endsWith($referenceString, ".") || str_endsWith($referenceString, ". ")) ? " " : ". ");
385
        $referenceString .= ((str_endsWith($referenceString, ".")) ? " " : "");
386
        $referenceString .= "</li>";
387
        break;
388

    
389
      default:
390
        /*
391
        $author_team = cdm_ws_get(CDM_WS_REFERENCE  _AUTHORTEAM, $reference->citation->uuid);
392

    
393
        if(!empty($author_team->titleCache)) {
394
          $referenceString.= print_r($reference->citation);
395
          $referenceString .= '<li class="descriptionText DescriptionElement">' . "<b>" . $reference->citation->title . ":" . "</b>" . $author_team->titleCache .   '</li>';
396
        }
397
        else {
398
          $referenceString .= '<li class="descriptionText DescriptionElement">' ."<b>" . $reference->citation->titleCache . "</b>" . '</li>';
399
        }
400
        if ($referenceCitation){
401
          $sourceRefs = $referenceCitation;
402
          // $referenceString .= "[titleccache] " . $descriptionElementBiblio->feature->titleCache . "[/titlecache]";
403
          // $referenceString .= "[Class] " . $descriptionElementBiblio->class . "[/class]";
404
          // $referenceString .= "[sourceref]" . $sourceRefs . "[/sourceRef]";
405
        }
406
        */
407
        break;
408
    }
409
    $outTemp[] = $referenceString;
410
  }
411
  sort($outTemp);
412
   foreach ($outTemp as $refString) {
413
    $out .= $refString;
414
  }
415

    
416
  $out .= "</ul></div></div>";
417
  return $out;
418
}
(1-1/10)