Author: david
Date: Thu Aug 13 17:56:28 2009
New Revision: 3029
Log:
Add preferred and non-preferred terms to search index for subject access points.
Modified:
trunk/lib/model/QubitInformationObject.php
trunk/lib/model/QubitTerm.php
Modified: trunk/lib/model/QubitInformationObject.php
==============================================================================
--- trunk/lib/model/QubitInformationObject.php Thu Aug 13 17:50:58 2009
(r3028)
+++ trunk/lib/model/QubitInformationObject.php Thu Aug 13 17:56:28 2009
(r3029)
@@ -846,14 +846,26 @@
public function getSubjectsString($language)
{
$subjectString = '';
+ $subjects = array();
- $subjects = $this->getSubjectAccessPoints();
- if ($subjects)
+ $subjectAps = $this->getSubjectAccessPoints();
+ if ($subjectAps)
{
- foreach ($subjects as $subject)
+ foreach ($subjectAps as $subjectAp)
{
- $subjectString .= $subject->getTerm(array('culture' => $language)).' ';
+ $subjectTerm = $subjectAp->getTerm();
+ $subjects[] = $subjectTerm->getName(array('culture' => $language));
+
+ if (0 < count($equivalentTerms =
$subjectTerm->getEquivalentTerms(array('direction' => 'subjectToObject'))))
+ {
+ foreach ($equivalentTerms as $eqTerm)
+ {
+ $subjects[] = $eqTerm->getName(array('culture' => $language));
+ }
+ }
}
+
+ $subjectString = implode(' ', $subjects);
}
return $subjectString;
Modified: trunk/lib/model/QubitTerm.php
==============================================================================
--- trunk/lib/model/QubitTerm.php Thu Aug 13 17:50:58 2009 (r3028)
+++ trunk/lib/model/QubitTerm.php Thu Aug 13 17:56:28 2009 (r3029)
@@ -768,4 +768,61 @@
return $criteria;
}
+
+ /**
+ * Get all terms related to the current term by an 'equivalence' relation.
+ * Allows specifying direction of relationship.
+ *
+ * @param array @options optional parameters
+ * @return QubitQuery collection of QubitTerm objects
+ */
+ public function getEquivalentTerms($options = array())
+ {
+ $direction = (isset($options['direction'])) ? $options['direction'] :
'both';
+
+ $criteria = new Criteria;
+ $criteria->add(QubitRelation::TYPE_ID,
QubitTerm::TERM_RELATION_EQUIVALENCE_ID, Criteria::EQUAL);
+
+ switch ($direction)
+ {
+ case 'subjectToObject':
+ $criteria->add(QubitRelation::SUBJECT_ID, $this->id, Criteria::EQUAL);
+ break;
+ case 'objectToSubject':
+ $criteria->add(QubitRelation::OBJECT_ID, $this->id, Criteria::EQUAL);
+ break;
+ case 'both':
+ $cton1 = $criteria->getNewCriterion(QubitRelation::SUBJECT_ID,
$this->id, Criteria::EQUAL);
+ $cton2 = $criteria->getNewCriterion(QubitRelation::OBJECT_ID,
$this->id, Criteria::EQUAL);
+ $cton1->addOr($cton2);
+ $criteria->add($cton1);
+ break;
+ default:
+ return;
+ }
+
+ if (0 == count($relations = QubitRelation::get($criteria)))
+ {
+
+ return;
+ }
+
+ foreach ($relations as $relation)
+ {
+ if ($this->id == $relation->subjectId)
+ {
+ $relatedTermIds[] = $relation->objectId;
+ }
+ else
+ {
+ $relatedTermIds[] = $relation->subjectId;
+ }
+ }
+
+ $criteria = new Criteria;
+ $criteria->add(QubitTerm::ID, $relatedTermIds, Criteria::IN);
+
+ return QubitTerm::get($criteria);
+ }
+
}
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Qubit Toolkit Commits" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.ca/group/qubit-commits?hl=en
-~----------~----~----~----~------~----~------~--~---