Index of the minimun value found
*/
- function aaGetMinimun($arr, $column, $columnType = 'STRING', $columnCondition = "", $condition = "") {
+ public function aaGetMinimun($arr, $column, $columnType = 'STRING',
+ $columnCondition = "", $condition = "")
+ {
// get first value
$auxValue = $arr [0] [$column];
$index = null;
- foreach ( $arr as $i => $row ) {
+ foreach ($arr as $i => $row) {
switch ($columnType) {
case 'STRING' :
- if ((strnatcmp ( $row [$column], $auxValue ) <= 0) && (($columnCondition == "") || ($row [$columnCondition] == $condition))) {
+ if ((strnatcmp ($row [$column], $auxValue) <= 0) && (($columnCondition == "") || ($row [$columnCondition] == $condition))) {
$auxValue = $row [$column];
$index = $i;
}
@@ -1607,7 +1716,7 @@ class AppSolr {
}
break;
case 'DATE' :
- if ((strtotime ( $row [$column] ) <= strtotime ( $auxValue )) && (($columnCondition == "") || ($row [$columnCondition] == $condition))) {
+ if ((strtotime ($row [$column]) <= strtotime ($auxValue)) && (($columnCondition == "") || ($row [$columnCondition] == $condition))) {
$auxValue = $row [$column];
$index = $i;
@@ -1627,13 +1736,14 @@ class AppSolr {
* contain the conditions that must fullfill 'Column'=>'Condition'
* @return array array of indexes with the found records
*/
- function aaSearchRecords($arr, $andColumnsConditions) {
+ public function aaSearchRecords($arr, $andColumnsConditions)
+ {
$indexes = array ();
$isEqual = true;
- foreach ( $arr as $i => $row ) {
+ foreach ($arr as $i => $row) {
$evaluateRow = false;
// evaluate each row
- foreach ( $andColumnsConditions as $column => $valueCondition ) {
+ foreach ($andColumnsConditions as $column => $valueCondition) {
$condition = $valueCondition;
$isEqual = true;
if ($valueCondition == 'NULL') {
@@ -1673,55 +1783,58 @@ class AppSolr {
/**
* Get application and delegation data from database
- * @param string $AppUID the application identifier
+ *
+ * @param string $AppUID
+ * the application identifier
* @return array of records from database
*/
- function getApplicationDelegationData($AppUID) {
+ public function getApplicationDelegationData($AppUID)
+ {
$allAppDbData = array ();
$c = new Criteria ();
- $c->addSelectColumn ( ApplicationPeer::APP_UID );
- $c->addSelectColumn ( ApplicationPeer::APP_NUMBER );
- $c->addSelectColumn ( ApplicationPeer::APP_STATUS );
- $c->addSelectColumn ( ApplicationPeer::PRO_UID );
- $c->addSelectColumn ( ApplicationPeer::APP_CREATE_DATE );
- $c->addSelectColumn ( ApplicationPeer::APP_FINISH_DATE );
- $c->addSelectColumn ( ApplicationPeer::APP_UPDATE_DATE );
- $c->addSelectColumn ( ApplicationPeer::APP_DATA );
+ $c->addSelectColumn (ApplicationPeer::APP_UID);
+ $c->addSelectColumn (ApplicationPeer::APP_NUMBER);
+ $c->addSelectColumn (ApplicationPeer::APP_STATUS);
+ $c->addSelectColumn (ApplicationPeer::PRO_UID);
+ $c->addSelectColumn (ApplicationPeer::APP_CREATE_DATE);
+ $c->addSelectColumn (ApplicationPeer::APP_FINISH_DATE);
+ $c->addSelectColumn (ApplicationPeer::APP_UPDATE_DATE);
+ $c->addSelectColumn (ApplicationPeer::APP_DATA);
- $c->addAsColumn ( 'APP_TITLE', 'capp.CON_VALUE' );
- $c->addAsColumn ( 'PRO_TITLE', 'cpro.CON_VALUE' );
+ $c->addAsColumn ('APP_TITLE', 'capp.CON_VALUE');
+ $c->addAsColumn ('PRO_TITLE', 'cpro.CON_VALUE');
- $c->addSelectColumn ( 'ad.DEL_INDEX' );
- $c->addSelectColumn ( 'ad.DEL_PREVIOUS' );
- $c->addSelectColumn ( 'ad.TAS_UID' );
- $c->addSelectColumn ( 'ad.USR_UID' );
- $c->addSelectColumn ( 'ad.DEL_TYPE' );
- $c->addSelectColumn ( 'ad.DEL_THREAD' );
- $c->addSelectColumn ( 'ad.DEL_THREAD_STATUS' );
- $c->addSelectColumn ( 'ad.DEL_PRIORITY' );
- $c->addSelectColumn ( 'ad.DEL_DELEGATE_DATE' );
- $c->addSelectColumn ( 'ad.DEL_INIT_DATE' );
- $c->addSelectColumn ( 'ad.DEL_TASK_DUE_DATE' );
- $c->addSelectColumn ( 'ad.DEL_FINISH_DATE' );
- $c->addSelectColumn ( 'ad.DEL_DURATION' );
- $c->addSelectColumn ( 'ad.DEL_QUEUE_DURATION' );
- $c->addSelectColumn ( 'ad.DEL_DELAY_DURATION' );
- $c->addSelectColumn ( 'ad.DEL_STARTED' );
- $c->addSelectColumn ( 'ad.DEL_FINISHED' );
- $c->addSelectColumn ( 'ad.DEL_DELAYED' );
- $c->addSelectColumn ( 'ad.APP_OVERDUE_PERCENTAGE' );
+ $c->addSelectColumn ('ad.DEL_INDEX');
+ $c->addSelectColumn ('ad.DEL_PREVIOUS');
+ $c->addSelectColumn ('ad.TAS_UID');
+ $c->addSelectColumn ('ad.USR_UID');
+ $c->addSelectColumn ('ad.DEL_TYPE');
+ $c->addSelectColumn ('ad.DEL_THREAD');
+ $c->addSelectColumn ('ad.DEL_THREAD_STATUS');
+ $c->addSelectColumn ('ad.DEL_PRIORITY');
+ $c->addSelectColumn ('ad.DEL_DELEGATE_DATE');
+ $c->addSelectColumn ('ad.DEL_INIT_DATE');
+ $c->addSelectColumn ('ad.DEL_TASK_DUE_DATE');
+ $c->addSelectColumn ('ad.DEL_FINISH_DATE');
+ $c->addSelectColumn ('ad.DEL_DURATION');
+ $c->addSelectColumn ('ad.DEL_QUEUE_DURATION');
+ $c->addSelectColumn ('ad.DEL_DELAY_DURATION');
+ $c->addSelectColumn ('ad.DEL_STARTED');
+ $c->addSelectColumn ('ad.DEL_FINISHED');
+ $c->addSelectColumn ('ad.DEL_DELAYED');
+ $c->addSelectColumn ('ad.APP_OVERDUE_PERCENTAGE');
- $c->addSelectColumn ( 'at.APP_THREAD_INDEX' );
- $c->addSelectColumn ( 'at.APP_THREAD_PARENT' );
- $c->addSelectColumn ( 'at.APP_THREAD_STATUS' );
+ $c->addSelectColumn ('at.APP_THREAD_INDEX');
+ $c->addSelectColumn ('at.APP_THREAD_PARENT');
+ $c->addSelectColumn ('at.APP_THREAD_STATUS');
- $c->addAlias ( 'capp', 'CONTENT' );
- $c->addAlias ( 'cpro', 'CONTENT' );
- $c->addAlias ( 'ad', 'APP_DELEGATION' );
- $c->addAlias ( 'at', 'APP_THREAD' );
+ $c->addAlias ('capp', 'CONTENT');
+ $c->addAlias ('cpro', 'CONTENT');
+ $c->addAlias ('ad', 'APP_DELEGATION');
+ $c->addAlias ('at', 'APP_THREAD');
$aConditions = array ();
$aConditions [] = array (
@@ -1736,7 +1849,7 @@ class AppSolr {
'capp.CON_LANG',
DBAdapter::getStringDelimiter () . 'en' . DBAdapter::getStringDelimiter ()
);
- $c->addJoinMC ( $aConditions, Criteria::LEFT_JOIN );
+ $c->addJoinMC ($aConditions, Criteria::LEFT_JOIN);
$aConditions = array ();
$aConditions [] = array (
@@ -1751,9 +1864,9 @@ class AppSolr {
'cpro.CON_LANG',
DBAdapter::getStringDelimiter () . 'en' . DBAdapter::getStringDelimiter ()
);
- $c->addJoinMC ( $aConditions, Criteria::LEFT_JOIN );
+ $c->addJoinMC ($aConditions, Criteria::LEFT_JOIN);
- $c->addJoin ( ApplicationPeer::APP_UID, 'ad.APP_UID', Criteria::JOIN );
+ $c->addJoin (ApplicationPeer::APP_UID, 'ad.APP_UID', Criteria::JOIN);
$aConditions = array ();
$aConditions [] = array (
@@ -1764,17 +1877,17 @@ class AppSolr {
'ad.DEL_THREAD',
'at.APP_THREAD_INDEX'
);
- $c->addJoinMC ( $aConditions, Criteria::JOIN );
+ $c->addJoinMC ($aConditions, Criteria::JOIN);
- $c->add ( ApplicationPeer::APP_UID, $AppUID );
+ $c->add (ApplicationPeer::APP_UID, $AppUID);
- $rs = ApplicationPeer::doSelectRS ( $c );
- $rs->setFetchmode ( ResultSet::FETCHMODE_ASSOC );
+ $rs = ApplicationPeer::doSelectRS ($c);
+ $rs->setFetchmode (ResultSet::FETCHMODE_ASSOC);
$rs->next ();
$row = $rs->getRow ();
- while ( is_array ( $row ) ) {
+ while (is_array ($row)) {
$allAppDbData [] = $row;
$rs->next ();
$row = $rs->getRow ();
@@ -1783,18 +1896,23 @@ class AppSolr {
}
/**
- * Get the list of groups of unassigned users of the specified task from database
- * @param string $ProUID Process identifier
- * @param string $TaskUID task identifier
+ * Get the list of groups of unassigned users of the specified task from
+ * database
+ *
+ * @param string $ProUID
+ * Process identifier
+ * @param string $TaskUID
+ * task identifier
* @return array of unassigned user groups
*/
- function getTaskUnassignedUsersGroupsData($ProUID, $TaskUID) {
+ public function getTaskUnassignedUsersGroupsData($ProUID, $TaskUID)
+ {
$unassignedUsersGroups = array ();
$c = new Criteria ();
- $c->addSelectColumn ( TaskUserPeer::USR_UID );
- $c->addSelectColumn ( TaskUserPeer::TU_RELATION );
+ $c->addSelectColumn (TaskUserPeer::USR_UID);
+ $c->addSelectColumn (TaskUserPeer::TU_RELATION);
$aConditions = array ();
$aConditions [] = array (
@@ -1805,18 +1923,18 @@ class AppSolr {
TaskPeer::TAS_ASSIGN_TYPE,
DBAdapter::getStringDelimiter () . 'SELF_SERVICE' . DBAdapter::getStringDelimiter ()
);
- $c->addJoinMC ( $aConditions, Criteria::JOIN );
+ $c->addJoinMC ($aConditions, Criteria::JOIN);
- $c->add ( TaskPeer::PRO_UID, $ProUID );
- $c->add ( TaskPeer::TAS_UID, $TaskUID );
+ $c->add (TaskPeer::PRO_UID, $ProUID);
+ $c->add (TaskPeer::TAS_UID, $TaskUID);
- $rs = TaskPeer::doSelectRS ( $c );
- $rs->setFetchmode ( ResultSet::FETCHMODE_ASSOC );
+ $rs = TaskPeer::doSelectRS ($c);
+ $rs->setFetchmode (ResultSet::FETCHMODE_ASSOC);
// echo $c->toString();
$rs->next ();
$row = $rs->getRow ();
- while ( is_array ( $row ) ) {
+ while (is_array ($row)) {
$unassignedUsersGroups [] = $row;
$rs->next ();
$row = $rs->getRow ();
@@ -1828,24 +1946,27 @@ class AppSolr {
/**
* Get the list of dynaform file names associated with the specified process
* from database
- * @param string $ProUID process identifier
+ *
+ * @param string $ProUID
+ * process identifier
* @return array of dynaform file names
*/
- function getProcessDynaformFileNames($ProUID) {
+ public function getProcessDynaformFileNames($ProUID)
+ {
$dynaformFileNames = array ();
$c = new Criteria ();
- $c->addSelectColumn ( DynaformPeer::DYN_FILENAME );
+ $c->addSelectColumn (DynaformPeer::DYN_FILENAME);
- $c->add ( DynaformPeer::PRO_UID, $ProUID );
+ $c->add (DynaformPeer::PRO_UID, $ProUID);
- $rs = DynaformPeer::doSelectRS ( $c );
- $rs->setFetchmode ( ResultSet::FETCHMODE_ASSOC );
+ $rs = DynaformPeer::doSelectRS ($c);
+ $rs->setFetchmode (ResultSet::FETCHMODE_ASSOC);
$rs->next ();
$row = $rs->getRow ();
- while ( is_array ( $row ) ) {
+ while (is_array ($row)) {
$dynaformFileNames [] = $row;
$rs->next ();
$row = $rs->getRow ();
@@ -1858,67 +1979,76 @@ class AppSolr {
* Store a flag indicating if the application was updated in database
* table APP_SOLR_QUEUE
*
- * @param string $AppUid applicatiom identifier
+ * @param string $AppUid
+ * applicatiom identifier
* @param integer $updated
* 0:false, not updated, 1: updated, 2:deleted
*/
- function applicationChangedUpdateSolrQueue($AppUid, $updated) {
+ public function applicationChangedUpdateSolrQueue($AppUid, $updated)
+ {
$oAppSolrQueue = new AppSolrQueue ();
- $oAppSolrQueue->createUpdate ( $AppUid, $updated );
+ $oAppSolrQueue->createUpdate ($AppUid, $updated);
}
/**
- * Update application records in Solr that are stored in APP_SOLR_QUEUE table
+ * Update application records in Solr that are stored in APP_SOLR_QUEUE table
*/
- function synchronizePendingApplications() {
+ public function synchronizePendingApplications()
+ {
// check table of pending updates
$oAppSolrQueue = new AppSolrQueue ();
$aAppSolrQueue = $oAppSolrQueue->getListUpdatedApplications ();
- foreach ( $aAppSolrQueue as $oAppSolrQueueEntity ) {
+ foreach ($aAppSolrQueue as $oAppSolrQueueEntity) {
// call the syncronization function
- $this->updateApplicationSearchIndex ( $oAppSolrQueueEntity->appUid );
- $this->applicationChangedUpdateSolrQueue ( $oAppSolrQueueEntity->appUid, 0 );
+ $this->updateApplicationSearchIndex ($oAppSolrQueueEntity->appUid);
+ $this->applicationChangedUpdateSolrQueue ($oAppSolrQueueEntity->appUid, 0);
}
}
/**
* Get the total number of application records in database
+ *
* @return application counter
*/
- function getCountApplicationsPMOS2() {
+ public function getCountApplicationsPMOS2()
+ {
$c = new Criteria ();
- $c->addSelectColumn ( ApplicationPeer::APP_UID );
+ $c->addSelectColumn (ApplicationPeer::APP_UID);
- $count = ApplicationPeer::doCount ( $c );
+ $count = ApplicationPeer::doCount ($c);
return $count;
}
/**
* Get a paginated list of application uids from database.
- * @param integer $skip the offset from where to return the application records
- * @param integer $pagesize the size of the page
+ *
+ * @param integer $skip
+ * the offset from where to return the application records
+ * @param integer $pagesize
+ * the size of the page
* @return array of application id's in the specified page.
*/
- function getPagedApplicationUids($skip, $pagesize) {
+ public function getPagedApplicationUids($skip, $pagesize)
+ {
$c = new Criteria ();
- $c->addSelectColumn ( ApplicationPeer::APP_UID );
- $c->setOffset ( $skip );
- $c->setLimit ( $pagesize );
+ $c->addSelectColumn (ApplicationPeer::APP_UID);
+ $c->setOffset ($skip);
+ $c->setLimit ($pagesize);
- $rs = ApplicationPeer::doSelectRS ( $c );
- $rs->setFetchmode ( ResultSet::FETCHMODE_ASSOC );
+ $rs = ApplicationPeer::doSelectRS ($c);
+ $rs->setFetchmode (ResultSet::FETCHMODE_ASSOC);
$rs->next ();
$row = $rs->getRow ();
$appUIds = array ();
- while ( is_array ( $row ) ) {
+ while (is_array ($row)) {
$appUIds [] = $row;
$rs->next ();
$row = $rs->getRow ();
@@ -1928,9 +2058,10 @@ class AppSolr {
/**
* Reindex all the application records in Solr server
- * update applications in groups of 1000
+ * update applications in groups of 1000
*/
- function reindexAllApplications() {
+ public function reindexAllApplications()
+ {
$trunk = 1000;
// delete all documents to begin reindex
// deleteAllDocuments();
@@ -1940,22 +2071,22 @@ class AppSolr {
$numRows = $this->getCountApplicationsPMOS2 ();
print "Total number of records: " . $numRows . "\n";
//
- $initTimeAll = microtime ( true );
+ $initTimeAll = microtime (true);
// $numRows = 15;
- for($skip = 0; $skip <= $numRows;) {
- $aaAPPUIds = $this->getPagedApplicationUids ( $skip, $trunk );
+ for ($skip = 0; $skip <= $numRows;) {
+ $aaAPPUIds = $this->getPagedApplicationUids ($skip, $trunk);
- printf ( "Indexing %d to %d \n", $skip, $skip + $trunk );
- $initTimeDoc = microtime ( true );
- $this->updateApplicationSearchIndex ( $aaAPPUIds );
+ printf ("Indexing %d to %d \n", $skip, $skip + $trunk);
+ $initTimeDoc = microtime (true);
+ $this->updateApplicationSearchIndex ($aaAPPUIds);
- $curTimeDoc = gmdate ( 'H:i:s', (microtime ( true ) - $initTimeDoc) );
- printf ( "Indexing document time: %s \n", $curTimeDoc );
+ $curTimeDoc = gmdate ('H:i:s', (microtime (true) - $initTimeDoc));
+ printf ("Indexing document time: %s \n", $curTimeDoc);
$skip += $trunk;
}
- $curTimeDoc = gmdate ( 'H:i:s', (microtime ( true ) - $initTimeAll) );
- printf ( "Total reindex time: %s \n", $curTimeDoc );
+ $curTimeDoc = gmdate ('H:i:s', (microtime (true) - $initTimeAll));
+ printf ("Total reindex time: %s \n", $curTimeDoc);
}
}
diff --git a/workflow/engine/classes/class.searchIndex.php b/workflow/engine/classes/class.searchIndex.php
index 255c8632e..a7aa9acaa 100644
--- a/workflow/engine/classes/class.searchIndex.php
+++ b/workflow/engine/classes/class.searchIndex.php
@@ -1,368 +1,456 @@
-.
+ *
+ * For more information, contact Colosa Inc, 5304 Ventura Drive,
+ * Delray Beach, FL, 33484, USA, or email info@colosa.com.
+ *
+ */
+
+
/**
* Class used as interface to have access to the search index services
*
* @author Herbert Saal Gutierrez
*
- */
-Class BpmnEngine_Services_SearchIndex
-{
- private $solrIsEnabled = false;
- private $solrHost = "";
-
- function __construct($solrIsEnabled = false, $solrHost = ""){
- //check if Zend Library is available
-// if(class_exists("Zend_Registry")){
-// $registry = Zend_Registry::getInstance();
-// //check if configuration is enabled
-// $this->solrIsEnabled = $registry->isRegistered('solrEnabled') && $registry->get('solrEnabled') == 1;
-// $this->solrHost = $registry->isRegistered('solrHost')?$registry->get('solrHost'):"";
-// }
-// else{
-// //use the parameters to initialize class
- $this->solrIsEnabled = $solrIsEnabled;
- $this->solrHost = $solrHost;
-// }
- }
- /**
- * Verify if the Solr service is available
- * @gearman = false
- * @rest = false
- * @background = false
- *
- * no input parameters @param[in]
- * @param[out] bool true if index service is enabled false in other case
- */
- public function isEnabled()
- {
- //require_once (ROOT_PATH . '/businessLogic/modules/SearchIndexAccess/Solr.php');
- require_once ('class.solr.php');
- $solr = new BpmnEngine_SearchIndexAccess_Solr($this->solrIsEnabled, $this->solrHost);
- return $solr->isEnabled();
- }
-
-
- /**
- * Get the list of facets in base to the specified query and filter
- * @gearman = true
- * @rest = false
- * @background = false
- *
- * @param[in] Entity_FacetRequest facetRequestEntity Facet request entity
- * @param[out] array FacetGroup
- */
- function getFacetsList($facetRequestEntity)
- {
- require_once ('class.solr.php');
- //require_once (ROOT_PATH . '/businessLogic/modules/SearchIndexAccess/Solr.php');
- require_once ('entities/FacetGroup.php');
- require_once ('entities/FacetItem.php');
- require_once ('entities/SelectedFacetGroupItem.php');
- require_once ('entities/FacetResult.php');
-
- /******************************************************************/
- //get array of selected facet groups
- $facetRequestEntity->selectedFacetsString = str_replace(',,', ',', $facetRequestEntity->selectedFacetsString);
- //remove descriptions of selected facet groups
-
- $aGroups = explode(',', $facetRequestEntity->selectedFacetsString);
-
- $aGroups = array_filter($aGroups);//remove empty items
-
- $aSelectedFacetGroups = array();
- foreach($aGroups as $i => $value)
- {
- $gi = explode(':::', $value);
- $gr = explode('::', $gi[0]);
- $it = explode('::', $gi[1]);
-
- //create string for remove condition
- $count = 0;
- $removeCondition = str_replace($value . ',', '', $facetRequestEntity->selectedFacetsString, $count);
- if($count == 0)
- {
- $removeCondition = str_replace($value, '', $facetRequestEntity->selectedFacetsString, $count);
- }
- $selectedFacetGroupData= array(
- 'selectedFacetGroupName' => $gr[0],
- 'selectedFacetGroupPrintName' => $gr[1],
- 'selectedFacetItemName' => $it[0],
- 'selectedFacetItemPrintName' => $it[1],
- 'selectedFacetRemoveCondition' => $removeCondition
- );
-
- $aSelectedFacetGroups[] = Entity_SelectedFacetGroupItem::CreateForRequest($selectedFacetGroupData);
- }
-
- /******************************************************************/
- //convert request to index request
- //create filters
- $filters = array();
- if (!empty($aSelectedFacetGroups)) {
- //exclude facetFields and facetDates included in filter from the next list of facets
- foreach ($aSelectedFacetGroups as $value) {
- $facetRequestEntity->facetFields = array_diff($facetRequestEntity->facetFields, array($value->selectedFacetGroupName));
- $facetRequestEntity->facetDates = array_diff($facetRequestEntity->facetDates, array($value->selectedFacetGroupName));
- }
-
- //$facetFields = array_diff($facetFields, $facetInterfaceRequestEntity->selectedFacetGroups);
- //$facetDates = array_diff($facetDates, $facetInterfaceRequestEntity->selectedFacetGroups);
- foreach ($aSelectedFacetGroups as $group) {
- $filters[] = $group->selectedFacetGroupName . ':' . urlencode($group->selectedFacetItemName);
- }
- }
- $facetRequestEntity->filters = $filters;
-
- $solr = new BpmnEngine_SearchIndexAccess_Solr($this->solrIsEnabled, $this->solrHost);
-
- //create list of facets
- $facetsList = $solr->getFacetsList($facetRequestEntity);
-
- $numFound = $facetsList['response']['numFound'];
-
- $facetCounts = $facetsList['facet_counts'];
-
- $facetGroups = array();
- //convert facet fields result to objects
- /************************************************************************/
- //include facet field results
- $facetFieldsResult = $facetsList['facet_counts']['facet_fields'];
- if(!empty($facetFieldsResult))
- {
- foreach($facetFieldsResult as $facetGroup => $facetvalues)
- {
- if(count($facetvalues) > 0) //if the group have facets included
- {
- $data = array('facetGroupName' => $facetGroup);
- $data['facetGroupPrintName'] = $facetGroup;
- $data['facetGroupType'] = 'field';
- $facetItems = array();
- for($i = 0; $i < count($facetvalues) ; $i+=2)
- {
- $dataItem = array();
- $dataItem['facetName'] = $facetvalues[$i];
- $dataItem['facetPrintName'] = $facetvalues[$i];
- $dataItem['facetCount'] = $facetvalues[$i+1];
- $dataItem['facetSelectCondition'] = $facetRequestEntity->selectedFacetsString . (empty($facetRequestEntity->selectedFacetsString)?'':',') . $data['facetGroupName'] . '::' . $data['facetGroupPrintName'] .':::' . $dataItem['facetName'] . '::' . $dataItem['facetPrintName'];
- $newFacetItem = Entity_FacetItem::CreateForInsert($dataItem);
- $facetItems[] =$newFacetItem;
- }
- $data['facetItems'] = $facetItems;
- $newFacetGroup = Entity_FacetGroup::CreateForInsert($data);
-
- $facetGroups[] = $newFacetGroup;
- }
- }
- }
- /************************************************************************/
- //include facet date ranges results
- $facetDatesResult = $facetsList['facet_counts']['facet_dates'];
- if(!empty($facetDatesResult))
- {
- foreach($facetDatesResult as $facetGroup => $facetvalues)
- {
- if(count($facetvalues) > 3) //if the group have any facets included besides start, end and gap
- {
- $data = array('facetGroupName' => $facetGroup);
- $data['facetGroupPrintName'] = $facetGroup;
- $data['facetGroupType'] = 'daterange';
- $facetItems = array();
- $facetvalueskeys = array_keys($facetvalues);
- foreach ($facetvalueskeys as $i => $k)
- {
- if($k != 'gap' && $k != 'start' && $k != 'end')
- {
- $dataItem = array();
- if($i < count($facetvalueskeys) - 4){
-
- $dataItem['facetName'] = '['.$k.'%20TO%20'.$facetvalueskeys[$i+1].']';
- $dataItem['facetPrintName'] = '['.$k.'%20TO%20'.$facetvalueskeys[$i+1].']';
- }
- else {
- //the last group
- $dataItem['facetName'] = '['.$k.'%20TO%20'.$facetvalues['end'].']';
- $dataItem['facetPrintName'] = '['.$k.'%20TO%20'.$facetvalues['end'].']';
- }
-
- $dataItem['facetCount'] = $facetvalues[$k];
- $dataItem['facetSelectCondition'] = $facetRequestEntity->selectedFacetsString . (empty($facetRequestEntity->selectedFacetsString)?'':',') . $data['facetGroupName'] . '::' . $data['facetGroupPrintName'] .':::' . $dataItem['facetName'] . '::' . $dataItem['facetPrintName'];
- $newFacetItem = Entity_FacetItem::CreateForInsert($dataItem);
- $facetItems[] =$newFacetItem;
- }
- }
-
- $data['facetItems'] = $facetItems;
- $newFacetGroup = Entity_FacetGroup::CreateForInsert($data);
-
- $facetGroups[] = $newFacetGroup;
- }
- }
- }
- //TODO:convert facet queries
- //-----
- /******************************************************************/
- //Create a filter string used in the filter of results of a datatable
- $filterText = ''; //the list of selected filters used for filtering result, send in ajax
- foreach($aSelectedFacetGroups as $selectedFacetGroup)
- {
- $filterText .= $selectedFacetGroup->selectedFacetGroupName .':'. urlencode($selectedFacetGroup->selectedFacetItemName).',';
- }
- $filterText = substr_replace($filterText, '', -1);
- //$filterText = ($filterText == '')?'':'&filterText='.$filterText;
-
- /******************************************************************/
- //Create result
- $dataFacetResult = array(
- 'aFacetGroups' => $facetGroups,
- 'aSelectedFacetGroups' => $aSelectedFacetGroups,
- 'sFilterText' => $filterText
- );
- $facetResult = Entity_FacetResult::CreateForRequest($dataFacetResult);
-
- return $facetResult;
- }
-
- function getNumberDocuments($workspace){
- require_once ('class.solr.php');
- //require_once (ROOT_PATH . '/businessLogic/modules/SearchIndexAccess/Solr.php');
- $solr = new BpmnEngine_SearchIndexAccess_Solr($this->solrIsEnabled, $this->solrHost);
-
- //create list of facets
- $numberDocuments = $solr->getNumberDocuments($workspace);
-
- return $numberDocuments;
- }
-
- function updateIndexDocument($solrUpdateDocumentEntity){
- G::LoadClass('solr');
-
- $solr = new BpmnEngine_SearchIndexAccess_Solr($this->solrIsEnabled, $this->solrHost);
-
- //create list of facets
- $solr->updateDocument($solrUpdateDocumentEntity);
- }
-
- function deleteDocumentFromIndex($workspace, $idQuery){
- G::LoadClass('solr');
-
- $solr = new BpmnEngine_SearchIndexAccess_Solr($this->solrIsEnabled, $this->solrHost);
-
- //create list of facets
- $solr->deleteDocument($workspace, $idQuery);
- }
-
- function commitIndexChanges($workspace){
- G::LoadClass('solr');
-
- $solr = new BpmnEngine_SearchIndexAccess_Solr($this->solrIsEnabled, $this->solrHost);
-
- //commit
- $solr->commitChanges($workspace);
- }
-
- function getDataTablePaginatedList($solrRequestData){
- require_once ('class.solr.php');
- //require_once (ROOT_PATH . '/businessLogic/modules/SearchIndexAccess/Solr.php');
- require_once ('entities/SolrRequestData.php');
- require_once ('entities/SolrQueryResult.php');
-
- //print_r($solrRequestData);
- //prepare the list of sorted columns
- //verify if the data of sorting is available
- if(isset($solrRequestData->sortCols[0])){
- for($i=0; $i<$solrRequestData->numSortingCols; $i++){
- //verify if column is sortable
- if($solrRequestData->includeCols[$solrRequestData->sortCols[$i]] != '' && $solrRequestData->sortableCols[$i] == "true"){
- //change sorting column index to column names
- $solrRequestData->sortCols[$i] = $solrRequestData->includeCols[$solrRequestData->sortCols[$i]];
- //define the direction of the sorting columns
- $solrRequestData->sortDir[$i] = $solrRequestData->sortDir[$i];
- }
- }
- }
- //remove placeholder fields
- //the placeholder doesn't affect the the solr's response
- //$solrRequestData->includeCols = array_diff($solrRequestData->includeCols, array(''));
-
- //print_r($solrRequestData);
- //execute query
- $solr = new BpmnEngine_SearchIndexAccess_Solr($this->solrIsEnabled, $this->solrHost);
- $solrPaginatedResult = $solr->executeQuery($solrRequestData);
-
- //get total number of documents in index
- $numTotalDocs = $solr->getNumberDocuments($solrRequestData->workspace);
-
- //create the Datatable response of the query
- $numFound = $solrPaginatedResult['response']['numFound'];
-
- $docs = $solrPaginatedResult['response']['docs'];
- //print_r($docs);
- //insert list of names in docs result
- $data = array(
- "sEcho" => '',//must be completed in response
- "iTotalRecords" => intval($numTotalDocs), //we must get the total number of documents
- "iTotalDisplayRecords" => $numFound,
- "aaData" => array()
- );
- //copy result document or add placeholders to result
- foreach ($docs as $i => $doc) {
- $data['aaData'][$i] = array();
- foreach($solrRequestData->includeCols as $columnName){
- if($columnName == ''){
- $data['aaData'][$i][] = ''; //placeholder
- }else{
- if(isset($doc[$columnName])){
- $data['aaData'][$i][] = $doc[$columnName];
- }else{
- $data['aaData'][$i][] = '';
- }
- }
- }
- }
-
- $solrQueryResponse = Entity_SolrQueryResult::CreateForRequest($data);
- //
-
- return $solrQueryResponse;
- }
-
- function getIndexFields($workspace){
- //global $indexFields;
- //cache
-// if(!empty($indexFields))
-// return $indexFields;
-
- require_once ('class.solr.php');
- //require_once (ROOT_PATH . '/businessLogic/modules/SearchIndexAccess/Solr.php');
- $solr = new BpmnEngine_SearchIndexAccess_Solr($this->solrIsEnabled, $this->solrHost);
-
-
- //print "SearchIndex!!!!";
- //create list of facets
- $solrFieldsData = $solr->getListIndexedStoredFields($workspace);
-
- //copy list of arrays
- $listFields = array();
- foreach($solrFieldsData['fields'] as $key => $fieldData){
- if(array_key_exists('dynamicBase', $fieldData)){
- //remove *
- $originalFieldName = substr($key, 0, -strlen($fieldData['dynamicBase'])+1);
- //$listFields[strtolower($originalFieldName)] = $key;
- //Maintain case sensitive variable names
- $listFields[$originalFieldName] = $key;
- }else{
- //$listFields[strtolower($key)] = $key;
- //Maintain case sensitive variable names
- $listFields[$key] = $key;
- }
- }
-
- //print_r($listFields);
- //$indexFields = $listFields;
-
- return $listFields;
- }
-
+ */
+class BpmnEngine_Services_SearchIndex
+{
+ private $_solrIsEnabled = false;
+ private $_solrHost = "";
+
+ function __construct($solrIsEnabled = false, $solrHost = "")
+ {
+ // check if Zend Library is available
+ // if(class_exists("Zend_Registry")){
+ // $registry = Zend_Registry::getInstance();
+ // //check if configuration is enabled
+ // $this->solrIsEnabled = $registry->isRegistered('solrEnabled') &&
+ // $registry->get('solrEnabled') == 1;
+ // $this->solrHost =
+ // $registry->isRegistered('solrHost')?$registry->get('solrHost'):"";
+ // }
+ // else{
+ // //use the parameters to initialize class
+ $this->_solrIsEnabled = $solrIsEnabled;
+ $this->_solrHost = $solrHost;
+ // }
+ }
+ /**
+ * Verify if the Solr service is available
+ * @gearman = false
+ * @rest = false
+ * @background = false
+ *
+ * no input parameters @param[in]
+ *
+ * @param
+ * [out] bool true if index service is enabled false in other case
+ */
+ public function isEnabled()
+ {
+ // require_once (ROOT_PATH .
+ // '/businessLogic/modules/SearchIndexAccess/Solr.php');
+ require_once ('class.solr.php');
+ $solr = new BpmnEngine_SearchIndexAccess_Solr ($this->_solrIsEnabled, $this->_solrHost);
+ return $solr->isEnabled ();
+ }
+
+ /**
+ * Get the list of facets in base to the specified query and filter
+ * @gearman = true
+ * @rest = false
+ * @background = false
+ *
+ * @param
+ * [in] Entity_FacetRequest facetRequestEntity Facet request entity
+ * @param
+ * [out] array FacetGroup
+ */
+ public function getFacetsList($facetRequestEntity)
+ {
+ require_once ('class.solr.php');
+ // require_once (ROOT_PATH .
+ // '/businessLogic/modules/SearchIndexAccess/Solr.php');
+ require_once ('entities/FacetGroup.php');
+ require_once ('entities/FacetItem.php');
+ require_once ('entities/SelectedFacetGroupItem.php');
+ require_once ('entities/FacetResult.php');
+
+ /**
+ * ***************************************************************
+ */
+ // get array of selected facet groups
+ $facetRequestEntity->selectedFacetsString = str_replace (',,', ',', $facetRequestEntity->selectedFacetsString);
+ // remove descriptions of selected facet groups
+
+ $aGroups = explode (',', $facetRequestEntity->selectedFacetsString);
+
+ $aGroups = array_filter ($aGroups); // remove empty items
+
+ $aSelectedFacetGroups = array ();
+ foreach ($aGroups as $i => $value) {
+ $gi = explode (':::', $value);
+ $gr = explode ('::', $gi [0]);
+ $it = explode ('::', $gi [1]);
+
+ // create string for remove condition
+ $count = 0;
+ $removeCondition = str_replace ($value . ',', '', $facetRequestEntity->selectedFacetsString, $count);
+ if ($count == 0) {
+ $removeCondition = str_replace ($value, '', $facetRequestEntity->selectedFacetsString, $count);
+ }
+ $selectedFacetGroupData = array (
+ 'selectedFacetGroupName' => $gr [0],
+ 'selectedFacetGroupPrintName' => $gr [1],
+ 'selectedFacetItemName' => $it [0],
+ 'selectedFacetItemPrintName' => $it [1],
+ 'selectedFacetRemoveCondition' => $removeCondition
+ );
+
+ $aSelectedFacetGroups [] = Entity_SelectedFacetGroupItem::createForRequest ($selectedFacetGroupData);
+ }
+
+ /**
+ * ***************************************************************
+ */
+ // convert request to index request
+ // create filters
+ $filters = array ();
+ if (! empty ($aSelectedFacetGroups)) {
+ // exclude facetFields and facetDates included in filter from the next
+ // list of facets
+ foreach ($aSelectedFacetGroups as $value) {
+ $facetRequestEntity->facetFields = array_diff ($facetRequestEntity->facetFields, array (
+ $value->selectedFacetGroupName
+ ));
+ $facetRequestEntity->facetDates = array_diff ($facetRequestEntity->facetDates, array (
+ $value->selectedFacetGroupName
+ ));
+ }
+
+ // $facetFields = array_diff($facetFields,
+ // $facetInterfaceRequestEntity->selectedFacetGroups);
+ // $facetDates = array_diff($facetDates,
+ // $facetInterfaceRequestEntity->selectedFacetGroups);
+ foreach ($aSelectedFacetGroups as $group) {
+ $filters [] = $group->selectedFacetGroupName . ':' . urlencode ($group->selectedFacetItemName);
+ }
+ }
+ $facetRequestEntity->filters = $filters;
+
+ $solr = new BpmnEngine_SearchIndexAccess_Solr ($this->_solrIsEnabled, $this->_solrHost);
+
+ // create list of facets
+ $facetsList = $solr->getFacetsList ($facetRequestEntity);
+
+ $numFound = $facetsList ['response'] ['numFound'];
+
+ $facetCounts = $facetsList ['facet_counts'];
+
+ $facetGroups = array ();
+ // convert facet fields result to objects
+ /**
+ * *********************************************************************
+ */
+ // include facet field results
+ $facetFieldsResult = $facetsList ['facet_counts'] ['facet_fields'];
+ if (! empty ($facetFieldsResult)) {
+ foreach ($facetFieldsResult as $facetGroup => $facetvalues) {
+ if (count ($facetvalues) > 0) // if the group have facets included
+ {
+ $data = array (
+ 'facetGroupName' => $facetGroup
+ );
+ $data ['facetGroupPrintName'] = $facetGroup;
+ $data ['facetGroupType'] = 'field';
+ $facetItems = array ();
+ for ($i = 0; $i < count ($facetvalues); $i += 2) {
+ $dataItem = array ();
+ $dataItem ['facetName'] = $facetvalues [$i];
+ $dataItem ['facetPrintName'] = $facetvalues [$i];
+ $dataItem ['facetCount'] = $facetvalues [$i + 1];
+ $dataItem ['facetSelectCondition'] = $facetRequestEntity->selectedFacetsString . (empty ($facetRequestEntity->selectedFacetsString) ? '' : ',') . $data ['facetGroupName'] . '::' . $data ['facetGroupPrintName'] . ':::' . $dataItem ['facetName'] . '::' . $dataItem ['facetPrintName'];
+ $newFacetItem = Entity_FacetItem::createForInsert ($dataItem);
+ $facetItems [] = $newFacetItem;
+ }
+ $data ['facetItems'] = $facetItems;
+ $newFacetGroup = Entity_FacetGroup::createForInsert ($data);
+
+ $facetGroups [] = $newFacetGroup;
+ }
+ }
+ }
+ /**
+ * *********************************************************************
+ */
+ // include facet date ranges results
+ $facetDatesResult = $facetsList ['facet_counts'] ['facet_dates'];
+ if (! empty ($facetDatesResult)) {
+ foreach ($facetDatesResult as $facetGroup => $facetvalues) {
+ if (count ($facetvalues) > 3) // if the group have any facets included
+ // besides start, end and gap
+ {
+ $data = array (
+ 'facetGroupName' => $facetGroup
+ );
+ $data ['facetGroupPrintName'] = $facetGroup;
+ $data ['facetGroupType'] = 'daterange';
+ $facetItems = array ();
+ $facetvalueskeys = array_keys ($facetvalues);
+ foreach ($facetvalueskeys as $i => $k) {
+ if ($k != 'gap' && $k != 'start' && $k != 'end') {
+ $dataItem = array ();
+ if ($i < count ($facetvalueskeys) - 4) {
+
+ $dataItem ['facetName'] = '[' . $k . '%20TO%20' . $facetvalueskeys [$i + 1] . ']';
+ $dataItem ['facetPrintName'] = '[' . $k . '%20TO%20' . $facetvalueskeys [$i + 1] . ']';
+ }
+ else {
+ // the last group
+ $dataItem ['facetName'] = '[' . $k . '%20TO%20' . $facetvalues ['end'] . ']';
+ $dataItem ['facetPrintName'] = '[' . $k . '%20TO%20' . $facetvalues ['end'] . ']';
+ }
+
+ $dataItem ['facetCount'] = $facetvalues [$k];
+ $dataItem ['facetSelectCondition'] = $facetRequestEntity->selectedFacetsString . (empty ($facetRequestEntity->selectedFacetsString) ? '' : ',') . $data ['facetGroupName'] . '::' . $data ['facetGroupPrintName'] . ':::' . $dataItem ['facetName'] . '::' . $dataItem ['facetPrintName'];
+ $newFacetItem = Entity_FacetItem::createForInsert ($dataItem);
+ $facetItems [] = $newFacetItem;
+ }
+ }
+
+ $data ['facetItems'] = $facetItems;
+ $newFacetGroup = Entity_FacetGroup::createForInsert ($data);
+
+ $facetGroups [] = $newFacetGroup;
+ }
+ }
+ }
+ // TODO:convert facet queries
+ // -----
+ /**
+ * ***************************************************************
+ */
+ // Create a filter string used in the filter of results of a datatable
+ $filterText = ''; // the list of selected filters used for filtering result,
+ // send in ajax
+ foreach ($aSelectedFacetGroups as $selectedFacetGroup) {
+ $filterText .= $selectedFacetGroup->selectedFacetGroupName . ':' . urlencode ($selectedFacetGroup->selectedFacetItemName) . ',';
+ }
+ $filterText = substr_replace ($filterText, '', - 1);
+ // $filterText = ($filterText == '')?'':'&filterText='.$filterText;
+
+ /**
+ * ***************************************************************
+ */
+ // Create result
+ $dataFacetResult = array (
+ 'aFacetGroups' => $facetGroups,
+ 'aSelectedFacetGroups' => $aSelectedFacetGroups,
+ 'sFilterText' => $filterText
+ );
+ $facetResult = Entity_FacetResult::createForRequest ($dataFacetResult);
+
+ return $facetResult;
+ }
+
+ /**
+ * Get the total number of documents in search server
+ * @param string $workspace
+ * @return integer number of documents
+ *
+ */
+ public function getNumberDocuments($workspace)
+ {
+ require_once ('class.solr.php');
+ // require_once (ROOT_PATH .
+ // '/businessLogic/modules/SearchIndexAccess/Solr.php');
+ $solr = new BpmnEngine_SearchIndexAccess_Solr ($this->_solrIsEnabled, $this->_solrHost);
+
+ // create list of facets
+ $numberDocuments = $solr->getNumberDocuments ($workspace);
+
+ return $numberDocuments;
+ }
+
+ /**
+ * Update document Index
+ * @param SolrUpdateDocumentEntity $solrUpdateDocumentEntity
+ */
+ public function updateIndexDocument($solrUpdateDocumentEntity)
+ {
+ G::LoadClass ('solr');
+
+ $solr = new BpmnEngine_SearchIndexAccess_Solr ($this->_solrIsEnabled, $this->_solrHost);
+
+ // create list of facets
+ $solr->updateDocument ($solrUpdateDocumentEntity);
+ }
+
+ /**
+ * Delete document from index
+ * @param string $workspace
+ * @param string $idQuery
+ */
+ public function deleteDocumentFromIndex($workspace, $idQuery)
+ {
+ G::LoadClass ('solr');
+
+ $solr = new BpmnEngine_SearchIndexAccess_Solr ($this->_solrIsEnabled, $this->_solrHost);
+
+ // create list of facets
+ $solr->deleteDocument ($workspace, $idQuery);
+ }
+
+ /**
+ * Commit index changes
+ * @param string $workspace
+ */
+ public function commitIndexChanges($workspace)
+ {
+ G::LoadClass ('solr');
+
+ $solr = new BpmnEngine_SearchIndexAccess_Solr ($this->_solrIsEnabled, $this->_solrHost);
+
+ // commit
+ $solr->commitChanges ($workspace);
+ }
+
+ /**
+ * Call Solr server to return the list of paginated pages.
+ * @param FacetRequest $solrRequestData
+ * @return Entity_SolrQueryResult
+ */
+ public function getDataTablePaginatedList($solrRequestData)
+ {
+ require_once ('class.solr.php');
+ // require_once (ROOT_PATH .
+ // '/businessLogic/modules/SearchIndexAccess/Solr.php');
+ require_once ('entities/SolrRequestData.php');
+ require_once ('entities/SolrQueryResult.php');
+
+ // print_r($solrRequestData);
+ // prepare the list of sorted columns
+ // verify if the data of sorting is available
+ if (isset ($solrRequestData->sortCols [0])) {
+ for ($i = 0; $i < $solrRequestData->numSortingCols; $i ++) {
+ // verify if column is sortable
+ if ($solrRequestData->includeCols [$solrRequestData->sortCols [$i]] != '' && $solrRequestData->sortableCols [$i] == "true") {
+ // change sorting column index to column names
+ $solrRequestData->sortCols [$i] = $solrRequestData->includeCols [$solrRequestData->sortCols [$i]];
+ // define the direction of the sorting columns
+ $solrRequestData->sortDir [$i] = $solrRequestData->sortDir [$i];
+ }
+ }
+ }
+ // remove placeholder fields
+ // the placeholder doesn't affect the the solr's response
+ // $solrRequestData->includeCols = array_diff($solrRequestData->includeCols,
+ // array(''));
+
+ // print_r($solrRequestData);
+ // execute query
+ $solr = new BpmnEngine_SearchIndexAccess_Solr ($this->_solrIsEnabled, $this->_solrHost);
+ $solrPaginatedResult = $solr->executeQuery ($solrRequestData);
+
+ // get total number of documents in index
+ $numTotalDocs = $solr->getNumberDocuments ($solrRequestData->workspace);
+
+ // create the Datatable response of the query
+ $numFound = $solrPaginatedResult ['response'] ['numFound'];
+
+ $docs = $solrPaginatedResult ['response'] ['docs'];
+ // print_r($docs);
+ // insert list of names in docs result
+ $data = array (
+ "sEcho" => '', // must be completed in response
+ "iTotalRecords" => intval ($numTotalDocs), // we must get the
+ // total number of
+ // documents
+ "iTotalDisplayRecords" => $numFound,
+ "aaData" => array ()
+ );
+ // copy result document or add placeholders to result
+ foreach ($docs as $i => $doc) {
+ $data ['aaData'] [$i] = array ();
+ foreach ($solrRequestData->includeCols as $columnName) {
+ if ($columnName == '') {
+ $data ['aaData'] [$i] [] = ''; // placeholder
+ }
+ else {
+ if (isset ($doc [$columnName])) {
+ $data ['aaData'] [$i] [] = $doc [$columnName];
+ }
+ else {
+ $data ['aaData'] [$i] [] = '';
+ }
+ }
+ }
+ }
+
+ $solrQueryResponse = Entity_SolrQueryResult::createForRequest ($data);
+ //
+
+ return $solrQueryResponse;
+ }
+
+ /**
+ * Return the list of stored fields in the index.
+ * @param string $workspace
+ * @return array of index fields
+ */
+ public function getIndexFields($workspace)
+ {
+ // global $indexFields;
+ // cache
+ // if(!empty($indexFields))
+ // return $indexFields;
+
+ require_once ('class.solr.php');
+ // require_once (ROOT_PATH .
+ // '/businessLogic/modules/SearchIndexAccess/Solr.php');
+ $solr = new BpmnEngine_SearchIndexAccess_Solr ($this->_solrIsEnabled, $this->_solrHost);
+
+ // print "SearchIndex!!!!";
+ // create list of facets
+ $solrFieldsData = $solr->getListIndexedStoredFields ($workspace);
+
+ // copy list of arrays
+ $listFields = array ();
+ foreach ($solrFieldsData ['fields'] as $key => $fieldData) {
+ if (array_key_exists ('dynamicBase', $fieldData)) {
+ // remove *
+ $originalFieldName = substr ($key, 0, - strlen ($fieldData ['dynamicBase']) + 1);
+ // $listFields[strtolower($originalFieldName)] = $key;
+ // Maintain case sensitive variable names
+ $listFields [$originalFieldName] = $key;
+ }
+ else {
+ // $listFields[strtolower($key)] = $key;
+ // Maintain case sensitive variable names
+ $listFields [$key] = $key;
+ }
+ }
+
+ // print_r($listFields);
+ // $indexFields = $listFields;
+
+ return $listFields;
+ }
+
}
\ No newline at end of file
diff --git a/workflow/engine/classes/class.solr.php b/workflow/engine/classes/class.solr.php
index c9dfa8745..bf0ed2755 100644
--- a/workflow/engine/classes/class.solr.php
+++ b/workflow/engine/classes/class.solr.php
@@ -1,19 +1,44 @@
.
+ *
+ * For more information, contact Colosa Inc, 5304 Ventura Drive,
+ * Delray Beach, FL, 33484, USA, or email info@colosa.com.
+ *
+ */
+
/**
* Interface to the Solr Search server
* @author Herbert Saal Gutierrez
*
*/
-class BpmnEngine_SearchIndexAccess_Solr {
+class BpmnEngine_SearchIndexAccess_Solr
+{
const SOLR_VERSION = '&version=2.2';
- private $solrIsEnabled = false;
- private $solrHost = "";
+ private $_solrIsEnabled = false;
+ private $_solrHost = "";
- function __construct($solrIsEnabled = false, $solrHost = "") {
+ public function __construct($solrIsEnabled = false, $solrHost = "")
+ {
// use the parameters to initialize class
- $this->solrIsEnabled = $solrIsEnabled;
- $this->solrHost = $solrHost;
+ $this->_solrIsEnabled = $solrIsEnabled;
+ $this->_solrHost = $solrHost;
}
/**
@@ -21,13 +46,14 @@ class BpmnEngine_SearchIndexAccess_Solr {
* @gearman = false
* @rest = false
* @background = false
- *
+ *
* @return bool
*/
- function isEnabled() {
+ public function isEnabled()
+ {
// verify solr server response
- return $this->solrIsEnabled;
+ return $this->_solrIsEnabled;
}
/**
@@ -35,32 +61,33 @@ class BpmnEngine_SearchIndexAccess_Solr {
* @gearman = false
* @rest = false
* @background = false
- *
+ *
* @param
* workspace: workspace name
* @return total
*/
- function getNumberDocuments($workspace) {
- if (! $this->solrIsEnabled)
+ public function getNumberDocuments($workspace)
+ {
+ if (! $this->_solrIsEnabled)
return;
// get configuration information in base to workspace parameter
// get total number of documents in registry
- $solrIntruct = (substr($this->solrHost, -1) == "/")?$this->solrHost:$this->solrHost . "/";
+ $solrIntruct = (substr ($this->_solrHost, - 1) == "/") ? $this->_solrHost : $this->_solrHost . "/";
$solrIntruct .= $workspace;
$solrIntruct .= "/select/?q=*:*";
$solrIntruct .= self::SOLR_VERSION;
$solrIntruct .= "&start=0&rows=0&echoParams=none&wt=json";
- $handlerTotal = curl_init ( $solrIntruct );
- curl_setopt ( $handlerTotal, CURLOPT_RETURNTRANSFER, true );
- $responseTotal = curl_exec ( $handlerTotal );
- curl_close ( $handlerTotal );
+ $handlerTotal = curl_init ($solrIntruct);
+ curl_setopt ($handlerTotal, CURLOPT_RETURNTRANSFER, true);
+ $responseTotal = curl_exec ($handlerTotal);
+ curl_close ($handlerTotal);
// verify the result of solr
- $responseSolrTotal = json_decode ( $responseTotal, true );
- if ($responseSolrTotal['responseHeader']['status'] != 0) {
- throw new Exception ( "Error returning the total number of documents in Solr." . $solrIntruct);
+ $responseSolrTotal = G::json_decode ($responseTotal, true);
+ if ($responseSolrTotal ['responseHeader'] ['status'] != 0) {
+ throw new Exception ("Error returning the total number of documents in Solr." . $solrIntruct);
}
$numTotalDocs = $responseSolrTotal ['response'] ['numFound'];
return $numTotalDocs;
@@ -71,43 +98,44 @@ class BpmnEngine_SearchIndexAccess_Solr {
* @gearman = false
* @rest = false
* @background = false
- *
+ *
* @return solr response
*/
- function executeQuery($solrRequestData) {
- if (! $this->solrIsEnabled)
+ public function executeQuery($solrRequestData)
+ {
+ if (! $this->_solrIsEnabled)
return;
$solrIntruct = '';
// get configuration information in base to workspace parameter
$workspace = $solrRequestData->workspace;
// format request
- $query = empty ( $solrRequestData->searchText ) ? '*:*' : $solrRequestData->searchText;
- $query = rawurlencode ( $query );
+ $query = empty ($solrRequestData->searchText) ? '*:*' : $solrRequestData->searchText;
+ $query = rawurlencode ($query);
$start = '&start=' . $solrRequestData->startAfter;
$rows = '&rows=' . $solrRequestData->pageSize;
$fieldList = '';
$cols = $solrRequestData->includeCols;
- if (! empty ( $cols )) {
- $fieldList = "&fl=" . implode ( ",", $cols );
+ if (! empty ($cols)) {
+ $fieldList = "&fl=" . implode (",", $cols);
}
$sort = '';
if ($solrRequestData->numSortingCols > 0) {
$sort = '&sort=';
- for($i = 0; $i < $solrRequestData->numSortingCols; $i ++) {
+ for ($i = 0; $i < $solrRequestData->numSortingCols; $i ++) {
$sort .= $solrRequestData->sortCols [$i] . "%20" . $solrRequestData->sortDir [$i] . ",";
}
- $sort = substr_replace ( $sort, "", - 1 );
+ $sort = substr_replace ($sort, "", - 1);
}
- $resultFormat = empty ( $solrRequestData->resultFormat ) ? '' : '&wt=' . $solrRequestData->resultFormat;
+ $resultFormat = empty ($solrRequestData->resultFormat) ? '' : '&wt=' . $solrRequestData->resultFormat;
$filters = '';
- $aFilters = explode ( ',', $solrRequestData->filterText );
- foreach ( $aFilters as $value ) {
- $filters .= '&fq=' . urlencode ( $value );
+ $aFilters = explode (',', $solrRequestData->filterText);
+ foreach ($aFilters as $value) {
+ $filters .= '&fq=' . urlencode ($value);
}
- $solrIntruct = (substr($this->solrHost, -1) == "/")?$this->solrHost:$this->solrHost . "/";
+ $solrIntruct = (substr ($this->_solrHost, - 1) == "/") ? $this->_solrHost : $this->_solrHost . "/";
$solrIntruct .= $workspace;
$solrIntruct .= "/select/?q=$query";
$solrIntruct .= "&echoParams=none";
@@ -120,15 +148,15 @@ class BpmnEngine_SearchIndexAccess_Solr {
$solrIntruct .= $resultFormat;
// send query
// search the cases in base to datatable parameters
- $handler = curl_init ( $solrIntruct );
- curl_setopt ( $handler, CURLOPT_RETURNTRANSFER, true );
- $response = curl_exec ( $handler );
- curl_close ( $handler );
-
+ $handler = curl_init ($solrIntruct);
+ curl_setopt ($handler, CURLOPT_RETURNTRANSFER, true);
+ $response = curl_exec ($handler);
+ curl_close ($handler);
+
// decode
- $responseSolr = json_decode ( $response, true );
- if ($responseSolr['responseHeader']['status'] != 0) {
- throw new Exception ( "Error executing query to Solr." . $solrIntruct);
+ $responseSolr = G::json_decode ($response, true);
+ if ($responseSolr ['responseHeader'] ['status'] != 0) {
+ throw new Exception ("Error executing query to Solr." . $solrIntruct);
}
return $responseSolr;
@@ -139,31 +167,32 @@ class BpmnEngine_SearchIndexAccess_Solr {
* @gearman = false
* @rest = false
* @background = false
- *
+ *
* @return solr response
*/
- function updateDocument($solrUpdateDocument) {
- if (! $this->solrIsEnabled)
+ public function updateDocument($solrUpdateDocument)
+ {
+ if (! $this->_solrIsEnabled)
return;
$solrIntruct = '';
// get configuration information in base to workspace parameter
- $solrIntruct = (substr($this->solrHost, -1) == "/")?$this->solrHost:$this->solrHost . "/";
+ $solrIntruct = (substr ($this->_solrHost, - 1) == "/") ? $this->_solrHost : $this->_solrHost . "/";
$solrIntruct .= $solrUpdateDocument->workspace;
$solrIntruct .= "/update";
-
- $handler = curl_init ( $solrIntruct );
- curl_setopt ( $handler, CURLOPT_RETURNTRANSFER, true );
- curl_setopt ( $handler, CURLOPT_HTTPHEADER, array (
- 'Content-type:application/xml'
- ) ); // -H
- curl_setopt ( $handler, CURLOPT_BINARYTRANSFER, TRUE ); // --data-binary
- curl_setopt ( $handler, CURLOPT_POSTFIELDS, $solrUpdateDocument->document ); // data
- $response = curl_exec ( $handler );
- curl_close ( $handler );
- $swOk = strpos ( $response, '0' );
+ $handler = curl_init ($solrIntruct);
+ curl_setopt ($handler, CURLOPT_RETURNTRANSFER, true);
+ curl_setopt ($handler, CURLOPT_HTTPHEADER, array (
+ 'Content-type:application/xml'
+ )); // -H
+ curl_setopt ($handler, CURLOPT_BINARYTRANSFER, TRUE); // --data-binary
+ curl_setopt ($handler, CURLOPT_POSTFIELDS, $solrUpdateDocument->document); // data
+ $response = curl_exec ($handler);
+ curl_close ($handler);
+
+ $swOk = strpos ($response, '0');
if (! $swOk) {
- throw new Exception ( "Error updating document in Solr." . $solrIntruct);
+ throw new Exception ("Error updating document in Solr." . $solrIntruct);
}
}
@@ -172,31 +201,32 @@ class BpmnEngine_SearchIndexAccess_Solr {
* @gearman = false
* @rest = false
* @background = false
- *
+ *
* @return solr response
*/
- function commitChanges($workspace) {
- if (! $this->solrIsEnabled)
+ public function commitChanges($workspace)
+ {
+ if (! $this->_solrIsEnabled)
return;
$solrIntruct = '';
// get configuration information in base to workspace parameter
- $solrIntruct = (substr($this->solrHost, -1) == "/")?$this->solrHost:$this->solrHost . "/";
+ $solrIntruct = (substr ($this->_solrHost, - 1) == "/") ? $this->_solrHost : $this->_solrHost . "/";
$solrIntruct .= $workspace;
$solrIntruct .= "/update";
- $handler = curl_init ( $solrIntruct );
- curl_setopt ( $handler, CURLOPT_RETURNTRANSFER, true );
- curl_setopt ( $handler, CURLOPT_HTTPHEADER, array (
+ $handler = curl_init ($solrIntruct);
+ curl_setopt ($handler, CURLOPT_RETURNTRANSFER, true);
+ curl_setopt ($handler, CURLOPT_HTTPHEADER, array (
'Content-type:application/xml'
- ) ); // -H
- curl_setopt ( $handler, CURLOPT_BINARYTRANSFER, TRUE ); // --data-binary
- curl_setopt ( $handler, CURLOPT_POSTFIELDS, "" ); // data
- $response = curl_exec ( $handler );
- curl_close ( $handler );
+ )); // -H
+ curl_setopt ($handler, CURLOPT_BINARYTRANSFER, TRUE); // --data-binary
+ curl_setopt ($handler, CURLOPT_POSTFIELDS, ""); // data
+ $response = curl_exec ($handler);
+ curl_close ($handler);
- $swOk = strpos ( $response, '0' );
+ $swOk = strpos ($response, '0');
if (! $swOk) {
- throw new Exception ( "Error commiting changes in Solr." . $solrIntruct);
+ throw new Exception ("Error commiting changes in Solr." . $solrIntruct);
}
}
@@ -205,32 +235,33 @@ class BpmnEngine_SearchIndexAccess_Solr {
* @gearman = false
* @rest = false
* @background = false
- *
+ *
* @return solr response
*/
- function rollbackChanges($workspace) {
- if (! $this->solrIsEnabled)
+ public function rollbackChanges($workspace)
+ {
+ if (! $this->_solrIsEnabled)
return;
$solrIntruct = '';
// get configuration information in base to workspace parameter
- $solrIntruct = (substr($this->solrHost, -1) == "/")?$this->solrHost:$this->solrHost . "/";
+ $solrIntruct = (substr ($this->_solrHost, - 1) == "/") ? $this->_solrHost : $this->_solrHost . "/";
$solrIntruct .= $workspace;
$solrIntruct .= "/update";
- $handler = curl_init ( $solrIntruct );
- curl_setopt ( $handler, CURLOPT_RETURNTRANSFER, true );
- curl_setopt ( $handler, CURLOPT_HTTPHEADER, array (
+ $handler = curl_init ($solrIntruct);
+ curl_setopt ($handler, CURLOPT_RETURNTRANSFER, true);
+ curl_setopt ($handler, CURLOPT_HTTPHEADER, array (
'Content-type:application/xml'
- ) ); // -H
- curl_setopt ( $handler, CURLOPT_BINARYTRANSFER, TRUE ); // --data-binary
- curl_setopt ( $handler, CURLOPT_POSTFIELDS, "" ); // data
- $response = curl_exec ( $handler );
- curl_close ( $handler );
+ )); // -H
+ curl_setopt ($handler, CURLOPT_BINARYTRANSFER, TRUE); // --data-binary
+ curl_setopt ($handler, CURLOPT_POSTFIELDS, ""); // data
+ $response = curl_exec ($handler);
+ curl_close ($handler);
- $swOk = strpos ( $response, '0' );
+ $swOk = strpos ($response, '0');
if (! $swOk) {
- throw new Exception ( "Error rolling back changes in Solr." . $solrIntruct);
+ throw new Exception ("Error rolling back changes in Solr." . $solrIntruct);
}
}
@@ -239,59 +270,63 @@ class BpmnEngine_SearchIndexAccess_Solr {
* @gearman = false
* @rest = false
* @background = false
- *
+ *
* @return solr response
*/
- function optimizeChanges($workspace) {
- if (! $this->solrIsEnabled)
+ public function optimizeChanges($workspace)
+ {
+ if (! $this->_solrIsEnabled)
return;
$solrIntruct = '';
// get configuration information in base to workspace parameter
- $solrIntruct = (substr($this->solrHost, -1) == "/")?$this->solrHost:$this->solrHost . "/";
+ $solrIntruct = (substr ($this->_solrHost, - 1) == "/") ? $this->_solrHost : $this->_solrHost . "/";
$solrIntruct .= $workspace;
$solrIntruct .= "/update";
- $handler = curl_init ( $solrIntruct );
- curl_setopt ( $handler, CURLOPT_RETURNTRANSFER, true );
- curl_setopt ( $handler, CURLOPT_HTTPHEADER, array (
+ $handler = curl_init ($solrIntruct);
+ curl_setopt ($handler, CURLOPT_RETURNTRANSFER, true);
+ curl_setopt ($handler, CURLOPT_HTTPHEADER, array (
'Content-type:application/xml'
- ) ); // -H
- curl_setopt ( $handler, CURLOPT_BINARYTRANSFER, TRUE ); // --data-binary
- curl_setopt ( $handler, CURLOPT_POSTFIELDS, "" ); // data
- $response = curl_exec ( $handler );
- curl_close ( $handler );
+ )); // -H
+ curl_setopt ($handler, CURLOPT_BINARYTRANSFER, TRUE); // --data-binary
+ curl_setopt ($handler, CURLOPT_POSTFIELDS, ""); // data
+ $response = curl_exec ($handler);
+ curl_close ($handler);
- $swOk = strpos ( $response, '0' );
+ $swOk = strpos ($response, '0');
if (! $swOk) {
- throw new Exception ( "Error optimizing changes in Solr." . $solrIntruct);
+ throw new Exception ("Error optimizing changes in Solr." . $solrIntruct);
}
}
/**
- * Return the list of the stored fields in Solr
- * @param string $workspace Solr instance name
+ * Return the list of the stored fields in Solr
+ *
+ * @param string $workspace
+ * Solr instance name
* @throws Exception
- * @return void|mixed array of field names
+ * @return void mixed of field names
*/
- function getListIndexedStoredFields($workspace) {
- if (! $this->solrIsEnabled)
+ public function getListIndexedStoredFields($workspace)
+ {
+ if (! $this->_solrIsEnabled)
return;
$solrIntruct = '';
// get configuration information in base to workspace parameter
- $solrIntruct = (substr($this->solrHost, -1) == "/")?$this->solrHost:$this->solrHost . "/";
+ $solrIntruct = (substr ($this->_solrHost, - 1) == "/") ? $this->_solrHost : $this->_solrHost . "/";
$solrIntruct .= $workspace;
$solrIntruct .= "/admin/luke?numTerms=0&wt=json";
- $handler = curl_init ( $solrIntruct );
- curl_setopt ( $handler, CURLOPT_RETURNTRANSFER, true );
- $response = curl_exec ( $handler );
- curl_close ( $handler );
+ $handler = curl_init ($solrIntruct);
+ curl_setopt ($handler, CURLOPT_RETURNTRANSFER, true);
+ $response = curl_exec ($handler);
+ curl_close ($handler);
// decode
- $responseSolr = json_decode ( $response, true );
- if ($responseSolr['responseHeader']['status'] != 0) {
- throw new Exception ( "Error getting index fields in Solr." . $solrIntruct);
+ $responseSolr = G::json_decode ($response, true);
+ if ($responseSolr ['responseHeader'] ['status'] != 0) {
+ throw new Exception ("Error getting index fields in Solr." . $solrIntruct);
}
return $responseSolr;
}
@@ -301,34 +336,35 @@ class BpmnEngine_SearchIndexAccess_Solr {
* @gearman = false
* @rest = false
* @background = false
- *
+ *
* @return solr response
*/
- function deleteAllDocuments($workspace) {
- if (! $this->solrIsEnabled)
+ public function deleteAllDocuments($workspace)
+ {
+ if (! $this->_solrIsEnabled)
return;
// $registry = Zend_Registry::getInstance();
$solrIntruct = '';
// get configuration information in base to workspace parameter
- $solrIntruct = (substr($this->solrHost, -1) == "/")?$this->solrHost:$this->solrHost . "/";
+ $solrIntruct = (substr ($this->_solrHost, - 1) == "/") ? $this->_solrHost : $this->_solrHost . "/";
$solrIntruct .= $workspace;
$solrIntruct .= "/update";
- $handler = curl_init ( $solrIntruct );
- curl_setopt ( $handler, CURLOPT_RETURNTRANSFER, true );
- curl_setopt ( $handler, CURLOPT_HTTPHEADER, array (
+ $handler = curl_init ($solrIntruct);
+ curl_setopt ($handler, CURLOPT_RETURNTRANSFER, true);
+ curl_setopt ($handler, CURLOPT_HTTPHEADER, array (
'Content-type:application/xml'
- ) ); // -H
- curl_setopt ( $handler, CURLOPT_BINARYTRANSFER, TRUE ); // --data-binary
- curl_setopt ( $handler, CURLOPT_POSTFIELDS, "*:*" ); // data
- $response = curl_exec ( $handler );
+ )); // -H
+ curl_setopt ($handler, CURLOPT_BINARYTRANSFER, TRUE); // --data-binary
+ curl_setopt ($handler, CURLOPT_POSTFIELDS, "*:*"); // data
+ $response = curl_exec ($handler);
- curl_close ( $handler );
+ curl_close ($handler);
- $swOk = strpos ( $response, '0' );
+ $swOk = strpos ($response, '0');
if (! $swOk) {
- throw new Exception ( "Error deleting all documents in Solr." . $solrIntruct);
+ throw new Exception ("Error deleting all documents in Solr." . $solrIntruct);
}
}
@@ -337,45 +373,47 @@ class BpmnEngine_SearchIndexAccess_Solr {
* @gearman = false
* @rest = false
* @background = false
- *
+ *
* @return solr response
*/
- function deleteDocument($workspace, $idQuery) {
- if (! $this->solrIsEnabled)
+ public function deleteDocument($workspace, $idQuery)
+ {
+ if (! $this->_solrIsEnabled)
return;
// $registry = Zend_Registry::getInstance();
$solrIntruct = '';
// get configuration information in base to workspace parameter
- $solrIntruct = (substr($this->solrHost, -1) == "/")?$this->solrHost:$this->solrHost . "/";
+ $solrIntruct = (substr ($this->_solrHost, - 1) == "/") ? $this->_solrHost : $this->_solrHost . "/";
$solrIntruct .= $workspace;
$solrIntruct .= "/update";
- $handler = curl_init ( $solrIntruct );
- curl_setopt ( $handler, CURLOPT_RETURNTRANSFER, true );
- curl_setopt ( $handler, CURLOPT_HTTPHEADER, array (
+ $handler = curl_init ($solrIntruct);
+ curl_setopt ($handler, CURLOPT_RETURNTRANSFER, true);
+ curl_setopt ($handler, CURLOPT_HTTPHEADER, array (
'Content-type:application/xml'
- ) ); // -H
- curl_setopt ( $handler, CURLOPT_BINARYTRANSFER, TRUE ); // --data-binary
- curl_setopt ( $handler, CURLOPT_POSTFIELDS, "" . $idQuery . "" ); // data
- $response = curl_exec ( $handler );
+ )); // -H
+ curl_setopt ($handler, CURLOPT_BINARYTRANSFER, TRUE); // --data-binary
+ curl_setopt ($handler, CURLOPT_POSTFIELDS, "" . $idQuery . ""); // data
+ $response = curl_exec ($handler);
- curl_close ( $handler );
+ curl_close ($handler);
- $swOk = strpos ( $response, '0' );
+ $swOk = strpos ($response, '0');
if (! $swOk) {
- throw new Exception ( "Error deleting document in Solr." . $solrIntruct);
+ throw new Exception ("Error deleting document in Solr." . $solrIntruct);
}
}
/**
* Execute a query in base to Request data
- *
+ *
* @param Entity_FacetRequest $facetRequestEntity
* @return solr response: list of facets array
*/
- function getFacetsList($facetRequest) {
- if (! $this->solrIsEnabled)
+ public function getFacetsList($facetRequest)
+ {
+ if (! $this->_solrIsEnabled)
return;
$solrIntruct = '';
@@ -383,22 +421,22 @@ class BpmnEngine_SearchIndexAccess_Solr {
$workspace = $facetRequest->workspace;
// format request
- $query = empty ( $facetRequest->searchText ) ? '*:*' : $facetRequest->searchText;
- $query = rawurlencode ( $query );
+ $query = empty ($facetRequest->searchText) ? '*:*' : $facetRequest->searchText;
+ $query = rawurlencode ($query);
$start = '&start=0';
$rows = '&rows=0';
$facets = '&facet=on&facet.mincount=1&facet.limit=20'; // enable facet and
// only return facets
// with minimun one
// instance
- foreach ( $facetRequest->facetFields as $value ) {
+ foreach ($facetRequest->facetFields as $value) {
$facets .= '&facet.field=' . $value;
}
- foreach ( $facetRequest->facetQueries as $value ) {
+ foreach ($facetRequest->facetQueries as $value) {
$facets .= '&facet.query=' . $value;
}
- if (! empty ( $facetRequest->facetDates )) {
- foreach ( $facetRequest->facetDates as $value ) {
+ if (! empty ($facetRequest->facetDates)) {
+ foreach ($facetRequest->facetDates as $value) {
$facets .= '&facet.date=' . $value;
}
$facets .= '&facet.date.start=' . $facetRequest->facetDatesStart;
@@ -406,14 +444,14 @@ class BpmnEngine_SearchIndexAccess_Solr {
$facets .= '&facet.date.gap=' . $facetRequest->facetDateGap;
}
$filters = '';
- foreach ( $facetRequest->filters as $value ) {
+ foreach ($facetRequest->filters as $value) {
$filters .= '&fq=' . $value;
}
// echo "";
$resultFormat = '&wt=json';
- $solrIntruct = (substr($this->solrHost, -1) == "/")?$this->solrHost:$this->solrHost . "/";
+ $solrIntruct = (substr ($this->_solrHost, - 1) == "/") ? $this->_solrHost : $this->_solrHost . "/";
$solrIntruct .= $workspace;
$solrIntruct .= "/select/?q=$query";
$solrIntruct .= "&echoParams=none";
@@ -426,15 +464,15 @@ class BpmnEngine_SearchIndexAccess_Solr {
// send query
// search the cases in base to datatable parameters
- $handler = curl_init ( $solrIntruct );
- curl_setopt ( $handler, CURLOPT_RETURNTRANSFER, true );
- $response = curl_exec ( $handler );
- curl_close ( $handler );
+ $handler = curl_init ($solrIntruct);
+ curl_setopt ($handler, CURLOPT_RETURNTRANSFER, true);
+ $response = curl_exec ($handler);
+ curl_close ($handler);
// decode
- $responseSolr = json_decode ( $response, true );
- if ($responseSolr['responseHeader']['status'] != 0) {
- throw new Exception ( "Error getting faceted list from Solr." . $solrIntruct);
+ $responseSolr = G::json_decode ($response, true);
+ if ($responseSolr ['responseHeader'] ['status'] != 0) {
+ throw new Exception ("Error getting faceted list from Solr." . $solrIntruct);
}
return $responseSolr;
diff --git a/workflow/engine/classes/entities/AppSolrQueue.php b/workflow/engine/classes/entities/AppSolrQueue.php
index 089babac9..fbccce566 100644
--- a/workflow/engine/classes/entities/AppSolrQueue.php
+++ b/workflow/engine/classes/entities/AppSolrQueue.php
@@ -4,30 +4,34 @@ require_once ('Base.php');
/**
* Application Solr Queue
*/
-class Entity_AppSolrQueue extends Entity_Base {
+class Entity_AppSolrQueue extends Entity_Base
+{
public $appUid = '';
public $appUpdated = 0;
- private function __construct() {
+ private function __construct()
+ {
}
- static function CreateEmpty() {
+ static function createEmpty()
+ {
$obj = new Entity_AppSolrQueue ();
return $obj;
}
- static function CreateForRequest($data) {
+ static function createForRequest($data)
+ {
$obj = new Entity_AppSolrQueue ();
- $obj->initializeObject ( $data );
+ $obj->initializeObject ($data);
$requiredFields = array (
"appUid",
"appUpdated"
);
- $obj->validateRequiredFields ( $requiredFields );
+ $obj->validateRequiredFields ($requiredFields);
return $obj;
}
diff --git a/workflow/engine/classes/entities/Base.php b/workflow/engine/classes/entities/Base.php
index 39046d3ef..5aa927469 100644
--- a/workflow/engine/classes/entities/Base.php
+++ b/workflow/engine/classes/entities/Base.php
@@ -1,17 +1,19 @@
$f ) {
- if (isset ( $this->temp [$f] )) {
+ foreach ($fields as $k => $f) {
+ if (isset ($this->temp [$f])) {
$fieldIsEmpty = false;
return $this->temp [$f];
}
@@ -37,16 +39,18 @@ class Entity_Base {
}
}
- protected function validateRequiredFields($requiredFields = array()) {
- foreach ( $requiredFields as $k => $field ) {
+ protected function validateRequiredFields($requiredFields = array())
+ {
+ foreach ($requiredFields as $k => $field) {
if ($this->{$field} === NULL) {
- throw (new Exception ( "Field $field is required in " . get_class ( $this ) ));
+ throw (new Exception ("Field $field is required in " . get_class ($this)));
die ();
}
}
}
/**
+ *
*
*
* Copy the values of the Entity to the array of aliases
@@ -54,15 +58,19 @@ class Entity_Base {
*
* @return Array of alias with the Entity values
*/
- public function getAliasDataArray() {
+ public function getAliasDataArray()
+ {
$aAlias = array ();
// get aliases from class
- $className = get_class ( $this );
- if (method_exists ( $className, 'GetAliases' )) {
- $aliases = call_user_func(array($className, 'GetAliases'));
- //$aliases = $className::GetAliases ();
- foreach ( $this as $field => $value )
- if (isset ( $aliases [$field] )) {
+ $className = get_class ($this);
+ if (method_exists ($className, 'GetAliases')) {
+ $aliases = call_user_func (array (
+ $className,
+ 'GetAliases'
+ ));
+ // $aliases = $className::GetAliases ();
+ foreach ($this as $field => $value)
+ if (isset ($aliases [$field])) {
// echo "Field exists in Aliases: " . $field . "\n";
// echo "Alias Name:" . $aliases[$field] . "\n";
// echo "Alias value:" . $value . "\n";
@@ -74,6 +82,7 @@ class Entity_Base {
}
/**
+ *
*
*
* Set the data from array of alias to Entity
@@ -81,57 +90,68 @@ class Entity_Base {
* @param $aAliasData array
* of data of aliases
*/
- public function setAliasDataArray($aAliasData) {
+ public function setAliasDataArray($aAliasData)
+ {
// get aliases from class
- $className = get_class ( $this );
- if (method_exists ( $className, 'GetAliases' )) {
- $aliases = call_user_func(array($className, 'GetAliases'));
- //$aliases = $className::GetAliases ();
- foreach ( $this as $field => $value )
- if (isset ( $aliases [$field] ))
+ $className = get_class ($this);
+ if (method_exists ($className, 'GetAliases')) {
+ $aliases = call_user_func (array (
+ $className,
+ 'GetAliases'
+ ));
+ // $aliases = $className::GetAliases ();
+ foreach ($this as $field => $value)
+ if (isset ($aliases [$field]))
$this->{$field} = $aAliasData [$aliases [$field]];
}
}
/**
+ *
*
*
* Initialize object with values from $data.
* The values from data use properties or alias array.
- *
+ *
* @param
* $data
*/
- protected function initializeObject($data) {
+ protected function initializeObject($data)
+ {
// get aliases from class
- $className = get_class ( $this );
+ $className = get_class ($this);
$aliases = array ();
$swAliases = false;
- if (method_exists ( $className, 'GetAliases' )) {
- $aliases = call_user_func(array($className, 'GetAliases'));
- //$aliases = $className::GetAliases ();
+ if (method_exists ($className, 'GetAliases')) {
+ $aliases = call_user_func (array (
+ $className,
+ 'GetAliases'
+ ));
+ // $aliases = $className::GetAliases ();
$swAliases = true;
}
// use object properties or aliases to initialize
- foreach ( $this as $field => $value )
- if (isset ( $data [$field] )) {
+ foreach ($this as $field => $value)
+ if (isset ($data [$field])) {
$this->$field = $data [$field];
}
- elseif ($swAliases && isset ( $aliases [$field] ) && isset ( $data [$aliases [$field]] )) {
+ elseif ($swAliases && isset ($aliases [$field]) && isset ($data [$aliases [$field]])) {
$this->$field = $data [$aliases [$field]];
}
}
- public function serialize() {
- if (isset ( $this->temp ))
- unset ( $this->temp );
- return serialize ( $this );
+ public function serialize()
+ {
+ if (isset ($this->temp))
+ unset ($this->temp);
+ return serialize ($this);
}
- public function unserialize($str) {
- $className = get_class ( $this );
- $data = unserialize ( $str );
- return new $className ( $data );
+ public function unserialize($str)
+ {
+ $className = get_class ($this);
+ $data = unserialize ($str);
+ return new $className ($data);
}
}
\ No newline at end of file
diff --git a/workflow/engine/classes/entities/FacetGroup.php b/workflow/engine/classes/entities/FacetGroup.php
index 1b9b16f3b..4e3302d8d 100644
--- a/workflow/engine/classes/entities/FacetGroup.php
+++ b/workflow/engine/classes/entities/FacetGroup.php
@@ -2,10 +2,8 @@
require_once ('Base.php');
/**
- *
- *
* Facet group entity that represent a facet group
- *
+ *
* @property $facetGroupName: The name of the facet (field name in solr index)
* @property $facetGroupPrintName: The print name of the facet (Human readable
* description)
@@ -16,32 +14,36 @@ require_once ('Base.php');
* @author dev-HebertSaak
*
*/
-class Entity_FacetGroup extends Entity_Base {
+class Entity_FacetGroup extends Entity_Base
+{
public $facetGroupName = '';
public $facetGroupPrintName = '';
public $facetGroupType = ''; // field, daterange, query
public $facetGroupId = '';
public $facetItems = array ();
- private function __construct() {
+ private function __construct()
+ {
}
- static function CreateEmpty() {
+ static function createEmpty()
+ {
$obj = new Entity_FacetGroup ();
return $obj;
}
- static function CreateForInsert($data) {
+ static function createForInsert($data)
+ {
$obj = new Entity_FacetGroup ();
- $obj->initializeObject ( $data );
+ $obj->initializeObject ($data);
$requiredFields = array (
"facetGroupName",
"facetItems"
);
- $obj->validateRequiredFields ( $requiredFields );
+ $obj->validateRequiredFields ($requiredFields);
return $obj;
}
diff --git a/workflow/engine/classes/entities/FacetInterfaceRequest.php b/workflow/engine/classes/entities/FacetInterfaceRequest.php
index 72b9f8a45..2b074a2a5 100644
--- a/workflow/engine/classes/entities/FacetInterfaceRequest.php
+++ b/workflow/engine/classes/entities/FacetInterfaceRequest.php
@@ -1,34 +1,38 @@
initializeObject ( $data );
+ $obj->initializeObject ($data);
$requiredFields = array (
"searchText",
"selectedFacetsString"
);
- $obj->validateRequiredFields ( $requiredFields );
+ $obj->validateRequiredFields ($requiredFields);
return $obj;
}
diff --git a/workflow/engine/classes/entities/FacetInterfaceResult.php b/workflow/engine/classes/entities/FacetInterfaceResult.php
index 37a12b76a..600581321 100644
--- a/workflow/engine/classes/entities/FacetInterfaceResult.php
+++ b/workflow/engine/classes/entities/FacetInterfaceResult.php
@@ -1,25 +1,29 @@
initializeObject ( $data );
+ $obj->initializeObject ($data);
$requiredFields = array (
"aFacetGroup",
@@ -27,7 +31,7 @@ class Entity_FacetInterfaceResult extends Entity_Base {
"sFilterText"
);
- $obj->validateRequiredFields ( $requiredFields );
+ $obj->validateRequiredFields ($requiredFields);
return $obj;
}
diff --git a/workflow/engine/classes/entities/FacetItem.php b/workflow/engine/classes/entities/FacetItem.php
index ae07719af..f710af459 100644
--- a/workflow/engine/classes/entities/FacetItem.php
+++ b/workflow/engine/classes/entities/FacetItem.php
@@ -2,39 +2,44 @@
require_once ('Base.php');
/**
+ *
*
*
* Entity Face item, represent an option in a facet group
- *
+ *
* @author dev-HebertSaak
*
*/
-class Entity_FacetItem extends Entity_Base {
+class Entity_FacetItem extends Entity_Base
+{
public $facetName = '';
public $facetPrintName = '';
public $facetCount = '';
public $facetSelectCondition = ''; // selected condition used to select
- // this facet
+ // this facet
- private function __construct() {
+ private function __construct()
+ {
}
- static function CreateEmpty() {
+ static function createEmpty()
+ {
$obj = new Entity_FacetItem ();
return $obj;
}
- static function CreateForInsert($data) {
+ static function createForInsert($data)
+ {
$obj = new Entity_FacetItem ();
- $obj->initializeObject ( $data );
+ $obj->initializeObject ($data);
$requiredFields = array (
"facetName",
"facetCount"
);
- $obj->validateRequiredFields ( $requiredFields );
+ $obj->validateRequiredFields ($requiredFields);
return $obj;
}
diff --git a/workflow/engine/classes/entities/FacetRequest.php b/workflow/engine/classes/entities/FacetRequest.php
index 6c5d5b067..cfd82ed40 100644
--- a/workflow/engine/classes/entities/FacetRequest.php
+++ b/workflow/engine/classes/entities/FacetRequest.php
@@ -1,7 +1,8 @@
initializeObject ( $data );
+ $obj->initializeObject ($data);
$requiredFields = array (
"workspace"
);
- $obj->validateRequiredFields ( $requiredFields );
+ $obj->validateRequiredFields ($requiredFields);
return $obj;
}
diff --git a/workflow/engine/classes/entities/FacetResult.php b/workflow/engine/classes/entities/FacetResult.php
index e50a0d66f..c115a6220 100644
--- a/workflow/engine/classes/entities/FacetResult.php
+++ b/workflow/engine/classes/entities/FacetResult.php
@@ -1,23 +1,27 @@
initializeObject ( $data );
+ $obj->initializeObject ($data);
$requiredFields = array (
"aFacetGroups",
@@ -25,7 +29,7 @@ class Entity_FacetResult extends Entity_Base {
"sFilterText"
);
- $obj->validateRequiredFields ( $requiredFields );
+ $obj->validateRequiredFields ($requiredFields);
return $obj;
}
diff --git a/workflow/engine/classes/entities/SelectedFacetGroupItem.php b/workflow/engine/classes/entities/SelectedFacetGroupItem.php
index f90cea42b..364ca2d74 100644
--- a/workflow/engine/classes/entities/SelectedFacetGroupItem.php
+++ b/workflow/engine/classes/entities/SelectedFacetGroupItem.php
@@ -1,34 +1,38 @@
initializeObject ( $data );
+ $obj->initializeObject ($data);
$requiredFields = array (
"selectedFacetGroupName",
"selectedFacetItemName"
);
- $obj->validateRequiredFields ( $requiredFields );
+ $obj->validateRequiredFields ($requiredFields);
return $obj;
}
diff --git a/workflow/engine/classes/entities/SolrQueryResult.php b/workflow/engine/classes/entities/SolrQueryResult.php
index 1ce33edb8..7be7246b5 100644
--- a/workflow/engine/classes/entities/SolrQueryResult.php
+++ b/workflow/engine/classes/entities/SolrQueryResult.php
@@ -1,25 +1,29 @@
initializeObject ( $data );
+ $obj->initializeObject ($data);
$requiredFields = array (
'sEcho',
@@ -28,7 +32,7 @@ class Entity_SolrQueryResult extends Entity_Base {
'aaData'
);
- $obj->validateRequiredFields ( $requiredFields );
+ $obj->validateRequiredFields ($requiredFields);
return $obj;
}
diff --git a/workflow/engine/classes/entities/SolrRequestData.php b/workflow/engine/classes/entities/SolrRequestData.php
index 84e66c0cc..931afbea4 100644
--- a/workflow/engine/classes/entities/SolrRequestData.php
+++ b/workflow/engine/classes/entities/SolrRequestData.php
@@ -1,7 +1,8 @@
initializeObject ( $data );
+ $obj->initializeObject ($data);
$requiredFields = array (
'workspace'
);
- $obj->validateRequiredFields ( $requiredFields );
+ $obj->validateRequiredFields ($requiredFields);
return $obj;
}
diff --git a/workflow/engine/classes/entities/SolrUpdateDocument.php b/workflow/engine/classes/entities/SolrUpdateDocument.php
index 6c32c5c38..6ce732516 100644
--- a/workflow/engine/classes/entities/SolrUpdateDocument.php
+++ b/workflow/engine/classes/entities/SolrUpdateDocument.php
@@ -1,29 +1,33 @@
initializeObject ( $data );
+ $obj->initializeObject ($data);
$requiredFields = array (
"workspace",
"document"
);
- $obj->validateRequiredFields ( $requiredFields );
+ $obj->validateRequiredFields ($requiredFields);
return $obj;
}
diff --git a/workflow/engine/classes/model/AppSolrQueue.php b/workflow/engine/classes/model/AppSolrQueue.php
index 8d045c279..f8d0445fd 100644
--- a/workflow/engine/classes/model/AppSolrQueue.php
+++ b/workflow/engine/classes/model/AppSolrQueue.php
@@ -109,7 +109,7 @@ class AppSolrQueue extends BaseAppSolrQueue {
$row = $rs->getRow();
while (is_array($row)) {
- $appSolrQueue = Entity_AppSolrQueue::CreateEmpty();
+ $appSolrQueue = Entity_AppSolrQueue::createEmpty();
$appSolrQueue->appUid = $row['APP_UID'];
$appSolrQueue->appUpdated = $row['APP_UPDATED'];
$updatedApplications[] = $appSolrQueue;