Project

General

Profile

Download (18.8 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
        $numberOfTeamMembers = count($reference->citation->authorTeam->teamMembers);
266
        $currentRecord = 1;
267
        if (!empty($reference->citation->authorTeam->teamMembers)) {
268
          foreach ($reference->citation->authorTeam->teamMembers as $teamMember) {
269
            if (!empty($teamMember->lastname) && !empty($teamMember->firstname)) {
270
              if ($numberOfTeamMembers != $currentRecord) {
271
                $referenceString .= $teamMember->lastname . ", " . $teamMember->firstname . " & ";
272
              }
273
              else {
274
                $referenceString .= $teamMember->lastname . ", " . $teamMember->firstname;
275
                $referenceString .= ((str_endsWith($referenceString, ".") || str_endsWith($referenceString, ". ")) ? "" : ". ");
276
              }
277
              $currentRecord += 1;
278
            }
279
            else {
280
              if ($numberOfTeamMembers != $currentRecord) {
281
                $referenceString .= $teamMember->titleCache . " & ";
282
              }
283
              else {
284
                $referenceString .= $teamMember->titleCache;
285
                $referenceString .= ((str_endsWith($referenceString, ".") || str_endsWith($referenceString, ". ")) ? "" : ". ");
286
              }
287
              $currentRecord += 1;
288
            }
289
          }
290
        }
291
        $referenceString .= substr($reference->citation->inReference->datePublished->start, 0, 4) . ". " . $reference->citation->title . ". " . "Pages " . $reference->citation->pages . ". In ";
292
        $numberOfTeamMembersInReference = count($reference->citation->inReference->authorTeam->teamMembers);
293
        $currentRecordinReference = 1;
294
        if (!empty($reference->citation->inReference->authorTeam->teamMembers)) {
295
          foreach ($reference->citation->inReference->authorTeam->teamMembers as $teamMember) {
296
            if (!empty($teamMember->lastname) && !empty($teamMember->firstname)) {
297
              if ($numberOfTeamMembers != $currentRecord) {
298
                $referenceString .= $teamMember->lastname . ", " . $teamMember->firstname . " & ";
299
              }
300
              else {
301
                $referenceString .= $teamMember->lastname . ", " . $teamMember->firstname;
302
                $referenceString .= ((str_endsWith($referenceString, ".") || str_endsWith($referenceString, ". ")) ? "" : ". ");
303
              }
304
              $currentRecord += 1;
305
            }
306
            else {
307
              if ($numberOfTeamMembers != $currentRecord) {
308
                $referenceString .= $teamMember->titleCache . " & ";
309
              }
310
              else {
311
                $referenceString .= $teamMember->titleCache;
312
                $referenceString .= ((str_endsWith($referenceString, ".") || str_endsWith($referenceString, ". ")) ? "" : ". ");
313
              }
314
              $currentRecord += 1;
315
            }
316
          }
317
        }
318

    
319
        $referenceString .= $reference->citation->inReference->title . ". " . $reference->citation->inReference->publisher . ". " . $reference->citation->inReference->placePublished;
320
        $referenceString .= ((str_endsWith($referenceString, ".") || str_endsWith($referenceString, ". ")) ? "" : ". ");
321
        $referenceString .= "</li>";
322
        break;
323

    
324
      case "WebPage":
325
        $referenceString .= "<li class=\"descriptionText DescriptionElement\">" . $reference->citation->titleCache . "</li>";
326
        break;
327

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

    
382
      default:
383
        /*
384
        $author_team = cdm_ws_get(CDM_WS_REFERENCE_AUTHORTEAM, $reference->citation->uuid);
385

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

    
409
  $out .= "</ul></div></div>";
410
  return $out;
411
}
(1-1/9)