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.