/** * @param DocumentCollection $documents * @return DocumentCollection */ private function decorateDocuments(DocumentCollection $documents) { $newCollection = new DocumentCollection(); $newCollection->setTotalCount($documents->getTotalCount()); foreach ($documents as $document) { $newCollection->append($this->checkTypeAndDecorate($document)); } return $newCollection; }
/** * @param \SimpleXMLElement $xml * * @return \Searchperience\Api\Client\Domain\Document\DocumentCollection */ protected function buildDocumentsFromXml(\SimpleXMLElement $xml) { $documentArray = new DocumentCollection(); if ($xml->totalCount instanceof \SimpleXMLElement) { $documentArray->setTotalCount((int) $xml->totalCount->__toString()); } $documents = $xml->xpath('document'); foreach ($documents as $document) { $documentAttributeArray = (array) $document->attributes(); $mimeType = (string) $document->mimeType; $className = $this->getClassNameForMimeType($mimeType); $documentObject = new $className(); $documentObject->__setProperty('id', (int) $documentAttributeArray['@attributes']['id']); $documentObject->__setProperty('url', (string) $document->url); $documentObject->__setProperty('foreignId', (string) $document->foreignId); $documentObject->__setProperty('source', (string) $document->source); $documentObject->__setProperty('boostFactor', (int) $document->boostFactor); $documentObject->__setProperty('content', (string) $document->content); $documentObject->__setProperty('generalPriority', (int) $document->generalPriority); $documentObject->__setProperty('temporaryPriority', (int) $document->temporaryPriority); $documentObject->__setProperty('mimeType', (string) $document->mimeType); $documentObject->__setProperty('isMarkedForProcessing', (int) $document->isMarkedForProcessing); $documentObject->__setProperty('isMarkedForDeletion', (int) $document->isMarkedForDeletion); $documentObject->__setProperty('isProminent', (int) $document->isProminent); $documentObject->__setProperty('isRedirectTo', (int) $document->isRedirectTo); $documentObject->__setProperty('isDuplicateOf', (int) $document->isDuplicateOf); $documentObject->__setProperty('errorCount', (int) $document->errorCount); $documentObject->__setProperty('lastErrorMessage', (string) $document->lastErrorMessage); $documentObject->__setProperty('recrawlTimeSpan', (string) $document->recrawlTimeSpan); $documentObject->__setProperty('internalNoIndex', (string) $document->internalNoIndex); $documentObject->__setProperty('pageRank', (double) $document->pageRank); $documentObject->__setProperty('solrCoreHints', (string) $document->solrCoreHints); if (trim($document->lastProcessingTime) != '') { //we assume that the restapi allways return y-m-d H:i:s in the utc format $lastProcessingDate = $this->dateTimeService->getDateTimeFromApiDateString($document->lastProcessingTime); $documentObject->__setProperty('lastProcessingDate', $lastProcessingDate); } if (trim($document->lastCrawlingTime) != '') { //we assume that the restapi allways return y-m-d H:i:s in the utc format $lastCrawlingDateTime = $this->dateTimeService->getDateTimeFromApiDateString($document->lastCrawlingTime); $documentObject->__setProperty('lastCrawlingDateTime', $lastCrawlingDateTime); } $documentObject->__setProperty('noIndex', (int) $document->noIndex); $documentArray[] = $documentObject; $documentObject->afterReconstitution(); } return $documentArray; }