예제 #1
0
 private function getSourceCitationText($sourceCitation)
 {
     $citation = '';
     $recordName = (string) $sourceCitation['record_name'];
     $citation .= $recordName;
     $title = (string) $sourceCitation['title'];
     $titleLower = mb_strtolower($title);
     if ($recordName && $title) {
         $citation = StructuredData::chomp($citation, ',') . ', in ';
     }
     $srcTitle = '';
     $altTitle = '';
     if (mb_strpos($titleLower, 'source:') === 0 || mb_strpos($titleLower, 'mysource:') === 0) {
         $fields = explode('|', $title);
         if (count($fields) > 1) {
             $altTitle = $fields[1];
         }
         $t = Title::newFromText($fields[0]);
         if ($t) {
             $srcTitle = StructuredData::getRedirectToTitle($t);
         }
     }
     if ($srcTitle) {
         if ($altTitle) {
             $citation .= "[[" . $srcTitle->getPrefixedText() . "|{$altTitle}]]";
         } else {
             if ($srcTitle->getNamespace() == NS_SOURCE) {
                 $source = new Source($srcTitle->getText());
             } else {
                 $source = new MySource($srcTitle->getText());
             }
             $source->loadPage();
             $citation .= $source->getCitationText(true);
         }
     } else {
         $citation .= $title;
     }
     $page = (string) $sourceCitation['page'];
     if ($page) {
         $citation = StructuredData::chomp($citation, ',') . ", {$page}";
     }
     $date = (string) $sourceCitation['date'];
     if ($date) {
         $citation = StructuredData::chomp($citation, ',') . ", {$date}";
     }
     $quality = (string) $sourceCitation['quality'];
     if (strlen($quality) > 0) {
         $qualName = array_search($quality, self::$QUALITY_OPTIONS);
         if (!$qualName && @self::$QUALITY_OPTIONS[$quality]) {
             $qualName = $quality;
         }
         // allow old alpha form
         if ($qualName) {
             $citation = StructuredData::chomp($citation, ',') . ", {$qualName} quality";
         }
     }
     return $citation;
 }