public function testRedactedFields() { $instance = new FilteredRecord(); $instance->setRedactedFields(array('bar')); $instance->set('bar', 42); $this->assertFalse($instance->has('bar')); $instance->append('bar', 'foobar'); $this->assertFalse($instance->has('bar')); $this->assertEmpty($instance->getRecordFields()); }
private function findElementsForPubMed(DOMDocument $domDocument) { foreach ($domDocument->getElementsByTagName('PubDate') as $item) { foreach ($item->getElementsByTagName('Year') as $i) { $this->filteredRecord->set('year', $i->nodeValue); } } foreach ($domDocument->getElementsByTagName('Abstract') as $item) { $this->filteredRecord->set('abstract', preg_replace('#\\s{2,}#', ' ', trim($item->nodeValue))); } foreach ($domDocument->getElementsByTagName('MeshHeading') as $item) { $this->filteredRecord->append('subject', preg_replace('#\\s{2,}#', ' ', trim($item->nodeValue))); } // http://www.library.illinois.edu/biotech/j-abbrev.html notes: // "... database uses the "standard abbreviation", as defined by ISSN // and used also by BIOSIS and CASSI ..." foreach ($domDocument->getElementsByTagName('ISOAbbreviation') as $item) { $this->filteredRecord->append('iso-abbreviation', trim($item->nodeValue)); } }
private function doProcessCiteproc($citeproc) { foreach ($citeproc as $key => $value) { switch ($key) { case 'type': $this->filteredRecord->set('type', $value); break; case 'subject': $this->filteredRecord->set('subject', $value); break; case 'editor': case 'author': $this->collectAuthors($key, $value); break; case 'title': $this->filteredRecord->set('title', $value); break; case 'issue': $this->filteredRecord->set('issue', $value); break; case 'volume': $this->filteredRecord->set('volume', $value); break; case 'page': $this->filteredRecord->set('pages', $value); break; case 'publisher': $this->filteredRecord->set('publisher', $value); break; case 'container-title': $this->filteredRecord->set('journal', $value); break; case 'DOI': $this->filteredRecord->set('doi', $value); break; case 'ISSN': $this->filteredRecord->set('issn', $value); break; case 'deposited': // Dataset // Dataset case 'issued': if (isset($value['raw'])) { $this->filteredRecord->set('year', $value['raw']); } else { $date = end($value['date-parts']); $this->filteredRecord->set('year', $date[0]); } break; } } // Part of the auto generated key $this->filteredRecord->append('reference', $this->filteredRecord->get('year') . mb_substr(strtolower($this->filteredRecord->get('title')), 0, 2)); }
private function collectIdentifiers($value) { foreach ($value as $id => $v) { if ($id === 'openlibrary') { $id = 'olid'; } if ($id === 'isbn_13' || $id === 'isbn_10') { $id = 'isbn'; } // No commercial provider if (!in_array($id, array('isbn', 'olid', 'oclc', 'lccn'))) { continue; } $this->filteredRecord->append($id, end($v)); } }
private function collectAbstract($values) { foreach ($values as $key => $value) { if (is_array($value)) { $this->collectAbstract($value); continue; } // This is pure guess work since the description list is // an unordered list with no indication of what type of // content is stored, use `--` is indicator that is not // the abstract if (strpos($value, '--') !== false) { continue; } if ($key === '@value') { $this->filteredRecord->append('abstract', $value); } } }