BibliographicExtension/bibliographystyle-csu.php
From PeacockWiki
(Difference between revisions)
Revision as of 10:54, 25 August 2006 (edit) Trevorp (Talk | contribs) ← Previous diff |
Revision as of 03:40, 26 August 2006 (edit) Trevorp (Talk | contribs) Next diff → |
||
Line 13: | Line 13: | ||
class CSUHarvard_Style { | class CSUHarvard_Style { | ||
- | static function formatNames($argv, $citation) | + | static function formatNames($argv, $names1) |
{ | { | ||
$maxNames=3; | $maxNames=3; | ||
- | $names1=$citation->names(); | ||
$count=count($names1); | $count=count($names1); | ||
if($count>$maxNames) | if($count>$maxNames) | ||
Line 53: | Line 52: | ||
continue; | continue; | ||
} | } | ||
- | $entry=CSUHarvard_Style::formatNames(array('type'=>$articles['type']), $article['article']); | + | $entry=CSUHarvard_Style::formatNames(array('type'=>$articles['type']), $article['article']->names()); |
if($articles['type']=='name') | if($articles['type']=='name') | ||
$entry.=' ('.$article['article']->year().')'; | $entry.=' ('.$article['article']->year().')'; | ||
Line 81: | Line 80: | ||
if(!isset($citation->mFields['type'])) | if(!isset($citation->mFields['type'])) | ||
return "Article not found: ".$citation->mFields['reference']; | return "Article not found: ".$citation->mFields['reference']; | ||
- | formatNames(); | ||
if($argv!=null && key_exists('type', $argv) && $argv['type']=='name') | if($argv!=null && key_exists('type', $argv) && $argv['type']=='name') | ||
return $names.' ('.$citation->mFields['year'].')'; | return $names.' ('.$citation->mFields['year'].')'; | ||
Line 104: | Line 102: | ||
if($citation->type()==NULL) | if($citation->type()==NULL) | ||
return CSUHarvard_Style::notfoundText($citation); | return CSUHarvard_Style::notfoundText($citation); | ||
- | return BibliographyFormat::renderWikiText('[['.$citation->referencename().'|'.CSUHarvard_Style::formatNames(array('type'=>'normal'), $citation).' '.$citation->year().']], '.$citation->title()); | + | switch($citation->type()) |
+ | { | ||
+ | case 'Book': | ||
+ | $text=CSUHarvard_Style::referenceBook($citation); | ||
+ | break; | ||
+ | case 'Article': | ||
+ | $text=CSUHarvard_Style::referenceArticle($citation); | ||
+ | break; | ||
+ | default: | ||
+ | $text='[['.$citation->referencename().'|'.CSUHarvard_Style::formatNames(array('type'=>'normal'), $citation->names()).' '.$citation->year().']], '.$citation->title().'?'; | ||
+ | } | ||
+ | return BibliographyFormat::renderWikiText($text); | ||
+ | } | ||
+ | |||
+ | static function referenceBook($citation) | ||
+ | { | ||
+ | $text='[['.$citation->referencename().'|'; | ||
+ | $text.=CSUHarvard_Style::formatNames(array('type'=>'normal'), $citation->names()); | ||
+ | $text.=' '.$citation->year(); | ||
+ | $text.=']]'; | ||
+ | $text.=", ''".$citation->title()."''"; | ||
+ | //series | ||
+ | if($citation->field('title')) | ||
+ | $text.=', '.$citation->field('title'); | ||
+ | $text.=CSUHarvard_Style::electronicVer($citation); | ||
+ | //description | ||
+ | if($citation->field('book')) | ||
+ | $text.=", in ''".$citation->field('book')."''"; | ||
+ | if($citation->field('edition')) | ||
+ | $text.=', '.BibliographyFormat::formatCount($citation->field('edition')).' edn'; | ||
+ | //editor | ||
+ | //compiler | ||
+ | //revisor | ||
+ | //translator | ||
+ | //illustrator | ||
+ | //volume | ||
+ | if($citation->field('publisher')) | ||
+ | $text.=', '.$citation->field('publisher'); | ||
+ | if($citation->field('location')) | ||
+ | $text.=', '.$citation->field('location'); | ||
+ | $text.=CSUHarvard_Style::electronicTranscription($citation); | ||
+ | //page | ||
+ | return $text.'.'; | ||
+ | } | ||
+ | |||
+ | static function electronicTranscription($citation) | ||
+ | { | ||
+ | $text=''; | ||
+ | if($citation->field('electronicdesc')) | ||
+ | $text.=', '.$citation->field('electronicdesc'); | ||
+ | if($citation->field('viewed')) | ||
+ | $text.=', viewed '.CSUHarvard_Style::formatDate($citation->field('viewed')); | ||
+ | if($citation->field('url')) | ||
+ | $text.=', <'.$citation->field('url').'>'; | ||
+ | return $text; | ||
+ | } | ||
+ | |||
+ | static function electronicVer($citation) | ||
+ | { | ||
+ | $text=''; | ||
+ | if($citation->field('electronicversion')) | ||
+ | $text.=' electronic version'; | ||
+ | return $text; | ||
+ | } | ||
+ | |||
+ | static function formatDate($date) | ||
+ | { | ||
+ | $date2=split('/', $date); | ||
+ | if(count($date2)!=3) | ||
+ | return $date; | ||
+ | return date('j F Y', strtotime($date2[1].'/'.$date2[2].'/'.$date2[0])); | ||
+ | } | ||
+ | |||
+ | static function referenceArticle($citation) | ||
+ | { | ||
+ | $text='[['.$citation->referencename().'|'; | ||
+ | $text.=CSUHarvard_Style::formatNames(array('type'=>'normal'), $citation->names()); | ||
+ | $text.=' '.$citation->year(); | ||
+ | $text.=']]'; | ||
+ | $text.=", '".$citation->title()."'"; | ||
+ | $text.=CSUHarvard_Style::electronicVer($citation); | ||
+ | if($citation->field('periodical')) | ||
+ | $text.=', '.CSUHarvard_Style::formatPeriodical($citation->field('periodical')); | ||
+ | if($citation->field('issue')) | ||
+ | $text.=', '.$citation->field('issue'); | ||
+ | if($citation->field('pages')) | ||
+ | $text.=', pp.'.$citation->field('pages'); | ||
+ | $text.=CSUHarvard_Style::electronicTranscription($citation); | ||
+ | return $text.'.'; | ||
+ | } | ||
+ | |||
+ | static function formatPeriodical($periodical) | ||
+ | { | ||
+ | preg_match('/(.*)(\(.*\))/', $periodical, $match); | ||
+ | if(count($match)==0) | ||
+ | return "''".$periodical."''"; | ||
+ | return "''".trim($match[1])."'' ".$match[2]; | ||
} | } | ||
Revision as of 03:40, 26 August 2006
<?php /* TODO: 2.4 Companies or organisations as authors ...this is not easily proven (CSIRO 1986) This publicatino of the Centre for Rurali Social Research (1988) shows ... 2.5 Anonymous Works 2.6 Authrs with the same surname distinguished by including initials in in-text citation. */ class CSUHarvard_Style { static function formatNames($argv, $names1) { $maxNames=3; $count=count($names1); if($count>$maxNames) $names=$names1[0][1].' et al.'; else { $names=array(); foreach($names1 as $name) { $names[]=$name[1]; } #var_dump($names); if($argv!=null && key_exists('type', $argv) && $argv['type']=='name') $names=BibliographyFormat::makeList($names, ', ', ' and '); else $names=BibliographyFormat::makeList($names, ', ', ' & '); } return $names; } //Types: // normal - (Hayes 2000) // name - Hayes (2000) // text - Hayes 2000 static function intextcite($articles) { //TODO: Sort articles # var_dump($articles); $text=array(); $lastarticle=null; foreach($articles['articles'] as $name=>$article) { if($article['article']->type()==NULL) { $text[]=CSUHarvard_Style::notfoundText($article['article']); continue; } $entry=CSUHarvard_Style::formatNames(array('type'=>$articles['type']), $article['article']->names()); if($articles['type']=='name') $entry.=' ('.$article['article']->year().')'; else $entry.=' '.$article['article']->year(); if($article['note']!='') $entry.=', '.$article['note']; $entry=BibliographyFormat::renderWikiText("[[".$article['article']->referencename().'|'.$entry.']]'); $text[]=$entry; } # var_dump($text); # exit(); switch($articles['type']) { case 'normal': $text=BibliographyFormat::makeList($text, ', ', ', '); break; case 'name': $text=BibliographyFormat::makeList($text, ' ', ' and '); break; case 'text': $text=BibliographyFormat::makeList($text, ', ', ' and '); break; } # var_dump($text); if($articles['type']=='normal') $text='('.$text.')'; return $text; } static function intext($argv, $citation) { if(!isset($citation->mFields['type'])) return "Article not found: ".$citation->mFields['reference']; if($argv!=null && key_exists('type', $argv) && $argv['type']=='name') return $names.' ('.$citation->mFields['year'].')'; else return '('.$names.' '.$citation->mFields['year'].')'; } static function referenceList($articles) { //TODO: sort $refrences=''; foreach($articles as $article) { $refrences.=CSUHarvard_Style::reference($article).'<br/>'; } return $refrences; return "refernce list"; } static function reference($citation) { if($citation->type()==NULL) return CSUHarvard_Style::notfoundText($citation); switch($citation->type()) { case 'Book': $text=CSUHarvard_Style::referenceBook($citation); break; case 'Article': $text=CSUHarvard_Style::referenceArticle($citation); break; default: $text='[['.$citation->referencename().'|'.CSUHarvard_Style::formatNames(array('type'=>'normal'), $citation->names()).' '.$citation->year().']], '.$citation->title().'?'; } return BibliographyFormat::renderWikiText($text); } static function referenceBook($citation) { $text='[['.$citation->referencename().'|'; $text.=CSUHarvard_Style::formatNames(array('type'=>'normal'), $citation->names()); $text.=' '.$citation->year(); $text.=']]'; $text.=", ''".$citation->title()."''"; //series if($citation->field('title')) $text.=', '.$citation->field('title'); $text.=CSUHarvard_Style::electronicVer($citation); //description if($citation->field('book')) $text.=", in ''".$citation->field('book')."''"; if($citation->field('edition')) $text.=', '.BibliographyFormat::formatCount($citation->field('edition')).' edn'; //editor //compiler //revisor //translator //illustrator //volume if($citation->field('publisher')) $text.=', '.$citation->field('publisher'); if($citation->field('location')) $text.=', '.$citation->field('location'); $text.=CSUHarvard_Style::electronicTranscription($citation); //page return $text.'.'; } static function electronicTranscription($citation) { $text=''; if($citation->field('electronicdesc')) $text.=', '.$citation->field('electronicdesc'); if($citation->field('viewed')) $text.=', viewed '.CSUHarvard_Style::formatDate($citation->field('viewed')); if($citation->field('url')) $text.=', <'.$citation->field('url').'>'; return $text; } static function electronicVer($citation) { $text=''; if($citation->field('electronicversion')) $text.=' electronic version'; return $text; } static function formatDate($date) { $date2=split('/', $date); if(count($date2)!=3) return $date; return date('j F Y', strtotime($date2[1].'/'.$date2[2].'/'.$date2[0])); } static function referenceArticle($citation) { $text='[['.$citation->referencename().'|'; $text.=CSUHarvard_Style::formatNames(array('type'=>'normal'), $citation->names()); $text.=' '.$citation->year(); $text.=']]'; $text.=", '".$citation->title()."'"; $text.=CSUHarvard_Style::electronicVer($citation); if($citation->field('periodical')) $text.=', '.CSUHarvard_Style::formatPeriodical($citation->field('periodical')); if($citation->field('issue')) $text.=', '.$citation->field('issue'); if($citation->field('pages')) $text.=', pp.'.$citation->field('pages'); $text.=CSUHarvard_Style::electronicTranscription($citation); return $text.'.'; } static function formatPeriodical($periodical) { preg_match('/(.*)(\(.*\))/', $periodical, $match); if(count($match)==0) return "''".$periodical."''"; return "''".trim($match[1])."'' ".$match[2]; } static function notfoundText($citation) { return BibliographyFormat::renderWikiText("[[".$citation->mFields['reference']."|Article not found: ".$citation->referencename()."]]"); } } ?>