Author: david
Date: Mon Feb 20 11:33:24 2012
New Revision: 10943

Log:
Backport creation dates, creator and creator history changes from r10932 to 
lib/QubitSearch.class.php

Modified:
   trunk/lib/QubitSearch.class.php
   trunk/lib/QubitSearchPdo.class.php

Modified: trunk/lib/QubitSearch.class.php
==============================================================================
--- trunk/lib/QubitSearch.class.php     Mon Feb 20 10:32:21 2012        (r10942)
+++ trunk/lib/QubitSearch.class.php     Mon Feb 20 11:33:24 2012        (r10943)
@@ -25,7 +25,10 @@
   /*
    * Enable singleton creation via getInstance()
    */
-  protected static $_instance;
+  protected static
+    $_instance,
+    $conn,
+    $creationEventStatement;
 
   public static function getInstance()
   {
@@ -97,7 +100,10 @@
       return;
     }
 
-    $conn = Propel::getConnection();
+    if (!isset(self::$conn))
+    {
+      self::$conn = Propel::getConnection();
+    }
 
     $start = microtime(true);
     $this->getLogger()->log('Populating index...', $this->getName());
@@ -125,7 +131,7 @@
     {
       // Get count of all actors
       $sql = 'SELECT COUNT(*) from '.QubitActor::TABLE_NAME;
-      $rs = $conn->query($sql);
+      $rs = self::$conn->query($sql);
       $rowcount = $rs->fetchColumn(0);
 
       // Get actors (with offset)
@@ -162,7 +168,7 @@
     {
       // Get count of all information objects
       $sql = 'SELECT COUNT(*) from '.QubitInformationObject::TABLE_NAME;
-      $rs = $conn->query($sql);
+      $rs = self::$conn->query($sql);
       $rowcount = $rs->fetchColumn(0);
 
       // Get info objects (with offset)
@@ -306,14 +312,17 @@
    */
   public static function getTranslatedLanguages(&$object)
   {
-    $conn = Propel::getConnection();
+    if (!isset(self::$conn))
+    {
+      self::$conn = Propel::getConnection();
+    }
 
     // If this class has an i18n table
     if (class_exists(get_class($object).'I18n'))
     {
       $i18nTableName = constant(get_class($object).'I18n::TABLE_NAME');
 
-      $stmt = $conn->prepare('SELECT culture FROM '.$i18nTableName.' WHERE id 
= ? GROUP BY culture');
+      $stmt = self::$conn->prepare('SELECT culture FROM '.$i18nTableName.' 
WHERE id = ? GROUP BY culture');
       $stmt->execute(array($object->id));
 
       while ($row = $stmt->fetch())
@@ -322,7 +331,7 @@
       }
 
       $stmt->closeCursor();
-      $conn->clearStatementCache();
+      self::$conn->clearStatementCache();
     }
     else
     {
@@ -538,30 +547,8 @@
 
     $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))));
+    // Creation dates and creator
+    $doc = self::addCreationEvents($doc, $informationObject->id, $language);
 
     // Level of Description
     if (null !== $levelOfDescription = 
$informationObject->getLevelOfDescription())
@@ -683,4 +670,100 @@
     // Add all dynamic metadata fields to index
     self::getInstance()->getEngine()->getIndex()->addDocument($doc);
   }
+
+  protected static function addCreationEvents($doc, $informationObjectId, 
$culture)
+  {
+    if (!isset(self::$conn))
+    {
+      self::$conn = Propel::getConnection();
+    }
+
+    $dates = array();
+    $startDates = array();
+    $endDates = array();
+    $creators = array();
+    $creatorLinks = array();
+    $histories = array();
+
+    if (!isset(self::$creationEventStatement))
+    {
+      $sql  = 'SELECT
+                  event.id,
+                  event.start_date,
+                  event.end_date,
+                  event.actor_id,
+                  act_slug.slug,
+                  act_i18n.authorized_form_of_name,
+                  act_i18n.history,
+                  i18n.date';
+      $sql .= ' FROM '.QubitEvent::TABLE_NAME.' event';
+      $sql .= ' JOIN '.QubitEventI18n::TABLE_NAME.' i18n
+                  ON event.id = i18n.id';
+      $sql .= ' LEFT JOIN '.QubitActorI18n::TABLE_NAME.' act_i18n
+                  ON event.actor_id = act_i18n.id';
+      $sql .= ' LEFT JOIN '.QubitSlug::TABLE_NAME.' act_slug
+                  ON event.actor_id = act_slug.object_id';
+      $sql .= ' WHERE event.information_object_id = ?
+                  AND event.type_id = ?
+                  AND i18n.culture = ?
+                  AND act_i18n.culture = ?';
+
+      self::$creationEventStatement = self::$conn->prepare($sql);
+    }
+
+    self::$creationEventStatement->execute(array(
+      $informationObjectId,
+      QubitTerm::CREATION_ID,
+      $culture,
+      $culture));
+
+    foreach (self::$creationEventStatement->fetchAll(PDO::FETCH_OBJ) as $item)
+    {
+      if (isset($item->date) || isset($item->start_date) || 
isset($item->end_date))
+      {
+        $dates[] = Qubit::renderDateStartEnd($item->date, $item->start_date, 
$item->end_date);
+      }
+
+      if (isset($item->start_date))
+      {
+        $date = new DateTime($item->start_date);
+        $startDates[] = $date->format('Ymd');
+      }
+
+      if (isset($item->end_date))
+      {
+        $date = new DateTime($item->end_date);
+        $endDates[] = $date->format('Ymd');
+      }
+
+      if (isset($item->actor_id))
+      {
+        $creatorNames[] = $item->authorized_form_of_name;
+
+        $creatorLinks[] = array(
+          'name' => $item->authorized_form_of_name,
+          'slug' => $item->slug);
+
+        if (isset($item->history))
+        {
+          $histories[] = $item->history;
+        }
+      }
+    }
+
+    $doc->addField(Zend_Search_Lucene_Field::UnIndexed('datesOfCreation', 
serialize($dates)));
+    $doc->addField(Zend_Search_Lucene_Field::Unstored('startDate', implode(' 
', $startDates)));
+    $doc->addField(Zend_Search_Lucene_Field::Unstored('endDate', implode(' ', 
$endDates)));
+
+    // CREATORS
+    $creatorField = Zend_Search_Lucene_Field::Unstored('creators', implode(' 
', $creatorNames));
+    $creatorField->boost = 8; // Boost the relevance
+    $doc->addField($creatorField);
+
+    $doc->addField(Zend_Search_Lucene_Field::UnIndexed('creatorLinks', 
serialize($creatorLinks)));
+
+    $doc->addField(Zend_Search_Lucene_Field::Unstored('creatorHistory', 
implode(' ', $histories)));
+
+    return $doc;
+  }
 }

Modified: trunk/lib/QubitSearchPdo.class.php
==============================================================================
--- trunk/lib/QubitSearchPdo.class.php  Mon Feb 20 10:32:21 2012        (r10942)
+++ trunk/lib/QubitSearchPdo.class.php  Mon Feb 20 11:33:24 2012        (r10943)
@@ -23,8 +23,6 @@
     $counter;
 
   protected static
-    $conn,
-    $creationEventStatement,
     $infoObjectCount,
     $levelsOfDescription,
     $startTime,
@@ -345,7 +343,7 @@
     }
 
     // CREATION DATES AND CREATORS
-    $doc = self::addCreationEvents($doc, $resource);
+    $doc = self::addCreationEvents($doc, $resource->id, $resource->culture);
 
     self::getInstance()->getEngine()->getIndex()->addDocument($doc);
 
@@ -479,95 +477,4 @@
       return self::$levelsOfDescription[$id]->getName(array('culture' => 
$culture));
     }
   }
-
-  protected static function addCreationEvents($doc, $resource)
-  {
-    $dates = array();
-    $startDates = array();
-    $endDates = array();
-    $creators = array();
-    $creatorLinks = array();
-    $histories = array();
-
-    if (!isset(self::$creationEventStatement))
-    {
-      $sql  = 'SELECT 
-                  event.id,
-                  event.start_date,
-                  event.end_date,
-                  event.actor_id,
-                  act_slug.slug,
-                  act_i18n.authorized_form_of_name,
-                  act_i18n.history,
-                  i18n.date';
-      $sql .= ' FROM '.QubitEvent::TABLE_NAME.' event';
-      $sql .= ' JOIN '.QubitEventI18n::TABLE_NAME.' i18n
-                  ON event.id = i18n.id';
-      $sql .= ' LEFT JOIN '.QubitActorI18n::TABLE_NAME.' act_i18n
-                  ON event.actor_id = act_i18n.id';
-      $sql .= ' LEFT JOIN '.QubitSlug::TABLE_NAME.' act_slug
-                  ON event.actor_id = act_slug.object_id';
-      $sql .= ' WHERE event.information_object_id = ?
-                  AND event.type_id = ?
-                  AND i18n.culture = ?
-                  AND act_i18n.culture = ?';
-
-      self::$creationEventStatement = self::$conn->prepare($sql);
-    }
-
-    self::$creationEventStatement->execute(array(
-      $resource->id, 
-      QubitTerm::CREATION_ID,
-      $resource->culture,
-      $resource->culture));
-
-    foreach (self::$creationEventStatement->fetchAll(PDO::FETCH_OBJ) as $item)
-    {
-      if (isset($item->date) || isset($item->start_date) || 
isset($item->end_date))
-      {
-        $dates[] = Qubit::renderDateStartEnd($item->date, $item->start_date, 
$item->end_date);
-      }
-
-      if (isset($item->start_date))
-      {
-        $date = new DateTime($item->start_date);
-        $startDates[] = $date->format('Ymd');
-      }
-
-      if (isset($item->end_date))
-      {
-        $date = new DateTime($item->end_date);
-        $endDates[] = $date->format('Ymd');
-      }
-
-      if (isset($item->actor_id))
-      {
-        $creatorNames[] = $item->authorized_form_of_name;
-
-        $creatorLinks[] = array(
-          'name' => $item->authorized_form_of_name,
-          'slug' => $item->slug);
-
-        if (isset($item->history))
-        {
-          $histories[] = $item->history;
-        }
-      }
-    }
-
-    $doc->addField(Zend_Search_Lucene_Field::UnIndexed('datesOfCreation', 
serialize($dates)));
-    $doc->addField(Zend_Search_Lucene_Field::Unstored('startDate', implode(' 
', $startDates)));
-    $doc->addField(Zend_Search_Lucene_Field::Unstored('endDate', implode(' ', 
$endDates)));
-
-    // CREATORS
-    $creatorField = Zend_Search_Lucene_Field::Unstored('creators', implode(' 
', $creatorNames));
-    $creatorField->boost = 8; // Boost the relevance
-    $doc->addField($creatorField);
-
-    $doc->addField(Zend_Search_Lucene_Field::UnIndexed('creatorLinks', 
serialize($creatorLinks)));
-
-    $doc->addField(Zend_Search_Lucene_Field::Unstored('creatorHistory', 
implode(' ', $histories)));
-
-    return $doc;
-  }
 }

-- 
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.com/group/qubit-commits?hl=en.

Reply via email to