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
-~----------~----~----~----~------~----~------~--~---

Reply via email to