/** * Converts a ADORecordSet object into an array of "rows" that * are subarrays of variable => value pairs. * * @param ADORecordSet $dbRecordSet Anything ADOConnection::Execute() can return * @return array */ protected function getVariableArrayFromRecordSet(ADORecordSet $dbRecordSet, $strResultForm) { $arResult = array(); switch ($strResultForm) { case 'construct': $arResultVars = $this->query->getConstructPatternVariables(); break; default: $arResultVars = $this->query->getResultVars(); break; } if (in_array('*', $arResultVars)) { $arResultVars = array_keys($this->sg->arVarAssignments); } //work around bug in adodb: // ADORecordSet_empty does not implement php5 iterators if ($dbRecordSet->RowCount() <= 0) { return array(); } foreach ($dbRecordSet as $row) { $arResultRow = array(); foreach ($arResultVars as $strVar) { $strVarName = (string) $strVar; if (!isset($this->sg->arVarAssignments[$strVarName])) { //variable is in select, but not in result (test: q-select-2) $arResultRow[$strVarName] = ''; } else { $arVarSettings = $this->sg->arVarAssignments[$strVarName]; $strMethod = $this->arCreationMethods[$arVarSettings[1]]; $arResultRow[$strVarName] = $this->{$strMethod}($dbRecordSet, $arVarSettings[0], $strVar); } } $arResult[] = $arResultRow; } return $arResult; }