public function parse(Session $rets, ResponseInterface $response, $parameters) { $xml = $response->xml(); $rs = new Results(); $rs->setSession($rets)->setResource($parameters['SearchType'])->setClass($parameters['Class']); if ($this->getRestrictedIndicator($rets, $xml, $parameters)) { $rs->setRestrictedIndicator($this->getRestrictedIndicator($rets, $xml, $parameters)); } $rs->setHeaders($this->getColumnNames($rets, $xml, $parameters)); $rets->debug(count($rs->getHeaders()) . ' column headers/fields given'); $this->parseRecords($rets, $xml, $parameters, $rs); if ($this->getTotalCount($rets, $xml, $parameters) !== null) { $rs->setTotalResultsCount($this->getTotalCount($rets, $xml, $parameters)); $rets->debug($rs->getTotalResultsCount() . ' total results found'); } $rets->debug($rs->getReturnedResultsCount() . ' results given'); if ($this->foundMaxRows($rets, $xml, $parameters)) { // MAXROWS tag found. the RETS server withheld records. // if the server supports Offset, more requests can be sent to page through results // until this tag isn't found anymore. $rs->setMaxRowsReached(); $rets->debug('Maximum rows returned in response'); } unset($xml); return $rs; }
/** @test **/ public function it_tracks_headers() { $fields = ['A', 'B', 'C', 'D', 'E']; $rs = new Results(); $rs->setHeaders($fields); $this->assertSame($fields, $rs->getHeaders()); }
/** @test **/ public function it_accesses_parent_given_attributes() { $rs = new Results(); $rs->setResource('Property'); $rs->setClass('A'); $rs->setHeaders(['LIST_1', 'LIST_2', 'LIST_3']); $r = new Record(); $rs->addRecord($r); foreach ($rs as $r) { $this->assertSame('Property', $r->getResource()); $this->assertSame('A', $r->getClass()); $this->assertSame(['LIST_1', 'LIST_2', 'LIST_3'], $r->getFields()); } }