|
From: <gem...@li...> - 2013-04-10 10:03:01
|
Revision: 1219
http://sourceforge.net/p/gemstracker/code/1219
Author: mennodekker
Date: 2013-04-10 10:02:57 +0000 (Wed, 10 Apr 2013)
Log Message:
-----------
Preparation for batch export of results, allow for limit and offset
Retrieval of rowcount for export is now more efficient
Modified Paths:
--------------
trunk/library/classes/OpenRosa/Tracker/Source/OpenRosa.php
Modified: trunk/library/classes/OpenRosa/Tracker/Source/OpenRosa.php
===================================================================
--- trunk/library/classes/OpenRosa/Tracker/Source/OpenRosa.php 2013-04-10 09:59:07 UTC (rev 1218)
+++ trunk/library/classes/OpenRosa/Tracker/Source/OpenRosa.php 2013-04-10 10:02:57 UTC (rev 1219)
@@ -237,15 +237,54 @@
public function getRawTokenAnswerRows(array $filter, $surveyId, $sourceSurveyId = null)
{
+ $select = $this->getRawTokenAnswerRowsSelect($filter, $surveyId, $sourceSurveyId);
+
+ $data = $select->query()->fetchAll();
+ if (is_array($data)) {
+ $data = $model->processAfterLoad($data);
+ }
+
+ if ($data) {
+ return $data;
+ }
+ return array();
+ }
+
+ /**
+ * Returns the recordcount for a given filter
+ *
+ * @param array $filter filter array
+ * @param int $surveyId Gems Survey Id
+ * @param string $sourceSurveyId Optional Survey Id used by source
+ * @return int
+ */
+ public function getRawTokenAnswerRowsCount(array $filter, $surveyId, $sourceSurveyId = null)
+ {
+ $select = $this->getRawTokenAnswerRowsSelect($filter, $surveyId, $sourceSurveyId);
+
+ $p = new Zend_Paginator_Adapter_DbSelect($select);
+ $count = $p->getCountSelect()->query()->fetchColumn();
+
+ return $count;
+ }
+
+ /**
+ * Get the select object to use for RawTokenAnswerRows
+ *
+ * @param array $filter
+ * @param type $surveyId
+ * @param type $sourceSurveyId
+ * @return Zend_Db_Select
+ */
+ public function getRawTokenAnswerRowsSelect(array $filter, $surveyId, $sourceSurveyId = null)
+ {
$survey = $this->getSurvey($surveyId, $sourceSurveyId);
$model = $survey->getModel();
- $result = $model->load();
+ $select = $model->getSelect();
+ $this->filterLimitOffset($filter, $select);
- if ($result) {
- return $result;
- }
- return array();
+ return $select;
}
public function getStartTime(Gems_Tracker_Token $token, $surveyId, $sourceSurveyId = null)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|