public function __toString() { $string = array(); if (isset($this->basis)) { $string[] = $this->basis; } if (isset($this->act)) { $string[] = $this->act; } $string = implode(' - ', $string); if (null !== ($date = Qubit::renderDateStartEnd(null, $this->startDate, $this->endDate))) { $string .= ' (' . $date . ')'; } return $string; }
</div> </div> <div class="field"> <h3><?php echo __('Date(s)'); ?> </h3> <div> <ul> <?php foreach ($resource->getDates() as $item) { ?> <li> <?php echo Qubit::renderDateStartEnd($item->getDate(array('cultureFallback' => true)), $item->startDate, $item->endDate); ?> (<?php echo $item->getType(array('cultureFallback' => true)); ?> ) <?php if (isset($item->actor)) { ?> <?php echo link_to(render_title($item->actor), array($item->actor, 'module' => 'actor')); ?> <?php } ?> </li>
<?php } else { ?> <?php echo render_title($item->object); ?> <?php } ?> </td><td> <?php echo $item->type; ?> </td><td> <?php echo Qubit::renderDateStartEnd($item->date, $item->startDate, $item->endDate); ?> </td><td> <?php echo $item->description; ?> </td><td style="text-align: center"> <input class="multiDelete" name="deleteRelations[]" type="checkbox" value="<?php echo url_for(array($item, 'module' => 'relation')); ?> "/> </td> </tr> <?php } ?>
echo render_value($relatedEntity->getDatesOfExistence(array('cultureFallback' => true))); ?> )</span><?php } ?> <?php echo render_show(__('Identifier of the related entity'), render_value($relatedEntity->descriptionIdentifier)); ?> <?php echo render_show(__('Category of the relationship'), render_value($item->type)); ?> <?php echo render_show(__('Dates of the relationship'), Qubit::renderDateStartEnd($item->date, $item->startDate, $item->endDate)); ?> <?php echo render_show(__('Description of relationship'), render_value($item->description)); ?> </div> </div> <?php } ?> <?php foreach ($functions as $item) { ?>
public function generateReport($request) { // Get "file" term in "level of description" taxonomy $c2 = new Criteria(); $c2->addJoin(QubitTerm::ID, QubitTermI18n::ID, Criteria::INNER_JOIN); $c2->add(QubitTermI18n::NAME, 'file'); $c2->add(QubitTermI18n::CULTURE, 'en'); $c2->add(QubitTerm::TAXONOMY_ID, QubitTaxonomy::LEVEL_OF_DESCRIPTION_ID); $lod = QubitTermI18n::getOne($c2); if (null === $lod) { throw new sfException('Can\'t find "file" level of description in term table'); } $criteria = new Criteria(); $criteria->add(QubitInformationObject::LFT, $this->resource->lft, Criteria::GREATER_EQUAL); $criteria->add(QubitInformationObject::RGT, $this->resource->rgt, Criteria::LESS_EQUAL); $criteria->addAscendingOrderByColumn(QubitInformationObject::LFT); // Filter drafts $criteria = QubitAcl::addFilterDraftsCriteria($criteria); $this->results = array(); $this->resultCount = 0; $informationObjects = QubitInformationObject::get($criteria); foreach ($informationObjects as $item) { if ($lod->id == $item->levelOfDescriptionId) { $parentIsad = new sfIsadPlugin($item->parent); $isad = new sfIsadPlugin($item); $creationDates = self::getCreationDates($item); $this->results[$parentIsad->__toString()][] = array('resource' => $item, 'referenceCode' => $isad->referenceCode, 'title' => $item->getTitle(array('cultureFallback' => true)), 'dates' => isset($creationDates) ? Qubit::renderDateStartEnd($creationDates->getDate(array('cultureFallback' => true)), $creationDates->startDate, $creationDates->endDate) : ' ', 'startDate' => isset($creationDates) ? $creationDates->startDate : null, 'accessConditions' => $item->getAccessConditions(array('cultureFallback' => true)), 'locations' => self::getLocationString($item)); $this->resultCount++; } } // Sort items by selected criteria $sortBy = $this->form->getValue('sortBy'); foreach ($this->results as $key => &$items) { uasort($items, function ($a, $b) use($sortBy) { return strnatcasecmp($a[$sortBy], $b[$sortBy]); }); } }
<unitdate <?php if ($type = $date->getType()->__toString()) { echo 'datechar="' . strtolower($type) . '" '; } if ($startdate = $date->getStartDate()) { echo 'normal="'; echo Qubit::renderDate($startdate); if (0 < strlen($enddate = $date->getEndDate())) { echo '/'; echo Qubit::renderDate($enddate); } echo '"'; } ?> encodinganalog="3.1.3"><?php echo esc_specialchars(Qubit::renderDateStartEnd($date->getDate(array('cultureFallback' => true)), $date->startDate, $date->endDate)); ?> </unitdate> <?php } if (0 < count($creators = $descendant->getCreators())) { ?> <origination encodinganalog="3.2.1"> <?php foreach ($creators as $creator) { if ($type = $creator->getEntityTypeId()) { if ($type == QubitTerm::PERSON_ID) { ?> <persname><?php echo esc_specialchars($creator->getAuthorizedFormOfName(array('cultureFallback' => true))); ?>
public static function addInformationObjectIndex(QubitInformationObject $informationObject, $language, $options = array()) { // Only ROOT node should have no parent, don't index if (null === $informationObject->parent) { return; } $doc = new Zend_Search_Lucene_Document(); // Reference elements $doc->addField(Zend_Search_Lucene_Field::Keyword('id', $informationObject->id)); $doc->addField(Zend_Search_Lucene_Field::Keyword('slug', $informationObject->slug)); $doc->addField(Zend_Search_Lucene_Field::Keyword('culture', $language)); $doc->addField(Zend_Search_Lucene_Field::Keyword('className', 'QubitInformationObject')); $doc->addField(Zend_Search_Lucene_Field::UnIndexed('parentId', $informationObject->parentId)); $doc->addField(Zend_Search_Lucene_Field::Keyword('parent', $informationObject->parent->slug)); $doc->addField(Zend_Search_Lucene_Field::UnIndexed('collectionRootId', $informationObject->getCollectionRoot()->id)); $doc->addField(Zend_Search_Lucene_Field::Keyword('collectionRootSlug', $informationObject->getCollectionRoot()->slug)); $doc->addField(Zend_Search_Lucene_Field::UnIndexed('collectionRootTitle', $informationObject->getCollectionRoot()->getTitle())); // Digital object information if ($digitalObject = $informationObject->getDigitalObject()) { $doc->addField(Zend_Search_Lucene_Field::Keyword('hasDigitalObject', 'true')); $doc->addField(Zend_Search_Lucene_Field::Keyword('do_mediaTypeId', $digitalObject->mediaTypeId)); if (null !== $digitalObject->thumbnail) { $doc->addField(Zend_Search_Lucene_Field::UnIndexed('do_thumbnail_FullPath', $digitalObject->thumbnail->getFullPath())); } // $doc->addField(Zend_Search_Lucene_Field::Unstored('mediatype', $digitalObject->getMediaType()->getName(array('culture' => $language)))); // $doc->addField(Zend_Search_Lucene_Field::Unstored('filename', $digitalObject->getName())); // $doc->addField(Zend_Search_Lucene_Field::Unstored('mimetype', $digitalObject->mimeType)); } else { $doc->addField(Zend_Search_Lucene_Field::Keyword('hasDigitalObject', 'false')); } // Title // include an i18n fallback for proper search result display in case the title field was not translated if (0 < strlen($informationObject->getTitle(array('culture' => $language)))) { $titleField = Zend_Search_Lucene_Field::Text('title', $informationObject->getTitle(array('culture' => $language))); } else { $titleField = Zend_Search_Lucene_Field::Text('title', $informationObject->getTitle(array('sourceCulture' => true))); } // Boost the hit relevance for the title field $titleField->boost = 10; $doc->addField($titleField); // Publication status $doc->addField(Zend_Search_Lucene_Field::Text('publicationStatusId', $informationObject->getPublicationStatus()->status->id)); $doc->addField(Zend_Search_Lucene_Field::Text('scopeAndContent', $informationObject->getScopeAndContent(array('culture' => $language)))); $doc->addField(Zend_Search_Lucene_Field::Text('referenceCode', $informationObject->referenceCode)); // Store dates as serialized array $dates = array(); foreach ($informationObject->getDates() as $date) { $save_date['id'] = $date->id; $save_date['rendered'] = Qubit::renderDateStartEnd($date->getDate(array('cultureFallback' => true)), $date->startDate, $date->endDate); $save_date['type'] = $date->getType(array('cultureFallback' => true))->__toString(); if (isset($date->actor)) { $save_date['actor'] = $date->actor->__toString(); } $dates[] = $save_date; } $doc->addField(Zend_Search_Lucene_Field::UnIndexed('dates', serialize($dates))); // CREATOR $creatorField = Zend_Search_Lucene_Field::Unstored('creator', $informationObject->getCreatorsNameString(array('culture' => $language))); // Boost the hit relevance for the creator field $creatorField->boost = 8; $doc->addField($creatorField); $doc->addField(Zend_Search_Lucene_Field::Unstored('creatorhistory', $informationObject->getCreatorsHistoryString(array('culture' => $language)))); // Level of Description if (null !== $informationObject->getLevelOfDescription()) { $doc->addField(Zend_Search_Lucene_Field::Text('levelOfDescription', $informationObject->getLevelOfDescription()->getName(array('culture' => $language)))); } else { $doc->addField(Zend_Search_Lucene_Field::UnIndexed('levelOfDescription', null)); } // Repository $repository = $informationObject->getRepository(array('inherit' => true)); if (null !== $repository) { $doc->addField(Zend_Search_Lucene_Field::Keyword('repositoryId', $repository->id)); $doc->addField(Zend_Search_Lucene_Field::Keyword('repositorySlug', $repository->slug)); $doc->addField(Zend_Search_Lucene_Field::Text('repositoryName', $repository->getAuthorizedFormOfName(array('culture' => $language)))); } else { $doc->addField(Zend_Search_Lucene_Field::UnIndexed('repositoryId', null)); $doc->addField(Zend_Search_Lucene_Field::UnIndexed('repositorySlug', null)); $doc->addField(Zend_Search_Lucene_Field::UnIndexed('repositoryName', null)); } // Identifier $identifierField = Zend_Search_Lucene_Field::Text('identifier', $informationObject->getIdentifier()); $identifierField->boost = 5; $doc->addField($identifierField); // I18n fields $doc->addField(Zend_Search_Lucene_Field::Unstored('alternatetitle', $informationObject->getAlternateTitle(array('culture' => $language)))); $doc->addField(Zend_Search_Lucene_Field::Unstored('edition', $informationObject->getEdition(array('culture' => $language)))); $doc->addField(Zend_Search_Lucene_Field::Unstored('extentandmedium', $informationObject->getExtentAndMedium(array('culture' => $language)))); $doc->addField(Zend_Search_Lucene_Field::Unstored('archivalhistory', $informationObject->getArchivalHistory(array('culture' => $language)))); $doc->addField(Zend_Search_Lucene_Field::Unstored('acquisition', $informationObject->getAcquisition(array('culture' => $language)))); $doc->addField(Zend_Search_Lucene_Field::Unstored('appraisal', $informationObject->getAppraisal(array('culture' => $language)))); $doc->addField(Zend_Search_Lucene_Field::Unstored('accruals', $informationObject->getAccruals(array('culture' => $language)))); $doc->addField(Zend_Search_Lucene_Field::Unstored('arrangement', $informationObject->getArrangement(array('culture' => $language)))); $doc->addField(Zend_Search_Lucene_Field::Unstored('accessconditions', $informationObject->getAccessConditions(array('culture' => $language)))); $doc->addField(Zend_Search_Lucene_Field::Unstored('reproductionconditions', $informationObject->getReproductionConditions(array('culture' => $language)))); $doc->addField(Zend_Search_Lucene_Field::Unstored('physicalcharacteristics', $informationObject->getPhysicalCharacteristics(array('culture' => $language)))); $doc->addField(Zend_Search_Lucene_Field::Unstored('findingaids', $informationObject->getFindingAids(array('culture' => $language)))); $doc->addField(Zend_Search_Lucene_Field::Unstored('locationoforiginals', $informationObject->getLocationOfOriginals(array('culture' => $language)))); $doc->addField(Zend_Search_Lucene_Field::Unstored('locationofcopies', $informationObject->getLocationOfCopies(array('culture' => $language)))); $doc->addField(Zend_Search_Lucene_Field::Unstored('relatedunitsofdescription', $informationObject->getRelatedUnitsOfDescription(array('culture' => $language)))); // Subjects $subjectField = Zend_Search_Lucene_Field::Unstored('subject', $informationObject->getAccessPointsString(QubitTaxonomy::SUBJECT_ID, array('culture' => $language))); // Boost the hit relevance for the subject field $subjectField->boost = 5; $doc->addField($subjectField); // Place $placeField = Zend_Search_Lucene_Field::Unstored('place', $informationObject->getAccessPointsString(QubitTaxonomy::PLACE_ID, array('culture' => $language))); // Boost the hit relevance for the place field $placeField->boost = 3; $doc->addField($placeField); // Names $nameField = Zend_Search_Lucene_Field::Unstored('name', $informationObject->getNameAccessPointsString(array('culture' => $language))); // Boost the hit relevance for the place field $nameField->boost = 3; $doc->addField($nameField); $cultureInfo = sfCultureInfo::getInstance($language); $languages = $cultureInfo->getLanguages(); $scripts = $cultureInfo->getScripts(); // Languages if (0 < count($properties = $informationObject->getProperties($name = 'language'))) { $languageCodes = unserialize($properties->offsetGet(0)->getValue(array('sourceCulture' => true))); if (0 < count($languageCodes)) { $languageString = ''; foreach ($languageCodes as $languageCode) { $languageString .= $languages[$languageCode] . ' '; } $doc->addField(Zend_Search_Lucene_Field::Unstored('language', rtrim($languageString))); } } // Scripts if (0 < count($properties = $informationObject->getProperties($name = 'script'))) { $scriptCodes = unserialize($properties->offsetGet(0)->getValue(array('sourceCulture' => true))); if (0 < count($scriptCodes)) { $scriptString = ''; foreach ($scriptCodes as $scriptCode) { $scriptString .= $scripts[$scriptCode] . ' '; } $doc->addField(Zend_Search_Lucene_Field::Unstored('script', rtrim($scriptString))); } } // Notes if (0 < count($notes = $informationObject->getNotes())) { $noteString = ''; foreach ($notes as $note) { $noteString .= $note->getContent(array('culture' => $language)) . ' '; } $doc->addField(Zend_Search_Lucene_Field::Unstored('notes', $noteString)); } // Exclude control area fields for now, maybe add a seperate index for administrative data? // (institution_responsible_identifier, rules, sources, revision_history) // To come: // Add all dynamic metadata fields to index self::getInstance()->getEngine()->getIndex()->addDocument($doc); }