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_detects_restricted_values() { $rs = new Results(); $rs->setRestrictedIndicator('RESTRICTED'); $r = new Record(); $r->set('name', 'value'); $r->set('another', $rs->getRestrictedIndicator()); $rs->addRecord($r); $this->assertFalse($r->isRestricted('name')); $this->assertTrue($r->isRestricted('another')); }
/** @test **/ public function it_gives_a_list_excluding_restricted_values() { $rs = new Results(); $rs->setRestrictedIndicator('****'); $r = new Record(); $r->set('id', 'extra'); $r->set('name', 'test'); $rs->addRecord($r); $r = new Record(); $r->set('id', '****'); $r->set('name', 'test'); $rs->addRecord($r); $r = new Record(); $r->set('id', 'bonus'); $r->set('name', 'test'); $rs->addRecord($r); $this->assertSame(['extra', 'bonus'], $rs->lists('id')); }