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