Pimcore\Model\Search\Backend\Data::setDataFromElement PHP Method

setDataFromElement() public method

public setDataFromElement ( $element )
$element
    public function setDataFromElement($element)
    {
        $this->data = null;
        $this->id = new Data\Id($element);
        $this->fullPath = $element->getRealFullPath();
        $this->creationDate = $element->getCreationDate();
        $this->modificationDate = $element->getModificationDate();
        $this->userModification = $element->getUserModification();
        $this->userOwner = $element->getUserOwner();
        $this->type = $element->getType();
        if ($element instanceof Object\Concrete) {
            $this->subtype = $element->getClassName();
        } else {
            $this->subtype = $this->type;
        }
        $this->properties = "";
        $properties = $element->getProperties();
        if (is_array($properties)) {
            foreach ($properties as $nextProperty) {
                $pData = (string) $nextProperty->getData();
                if ($nextProperty->getName() == "bool") {
                    $pData = $pData ? "true" : "false";
                }
                $this->properties .= $nextProperty->getName() . ":" . $pData . " ";
            }
        }
        $this->data = "";
        if ($element instanceof Document) {
            if ($element instanceof Document\Folder) {
                $this->data = $element->getKey();
                $this->published = true;
            } elseif ($element instanceof Document\Link) {
                $this->published = $element->isPublished();
                $this->data = $element->getTitle() . " " . $element->getHref();
            } elseif ($element instanceof Document\PageSnippet) {
                $this->published = $element->isPublished();
                $elements = $element->getElements();
                if (is_array($elements) && !empty($elements)) {
                    foreach ($elements as $tag) {
                        if ($tag instanceof Document\Tag\TagInterface) {
                            ob_start();
                            $this->data .= strip_tags($tag->frontend()) . " ";
                            $this->data .= ob_get_clean();
                        }
                    }
                }
                if ($element instanceof Document\Page) {
                    $this->published = $element->isPublished();
                    $this->data .= " " . $element->getTitle() . " " . $element->getDescription() . " " . $element->getPrettyUrl();
                }
            }
        } elseif ($element instanceof Asset) {
            $this->data = $element->getFilename();
            $elementMetadata = $element->getMetadata();
            if (is_array($elementMetadata)) {
                foreach ($elementMetadata as $md) {
                    if (is_scalar($md['data'])) {
                        $this->data .= " " . $md["name"] . ":" . $md["data"];
                    }
                }
            }
            if ($element instanceof Asset\Document && \Pimcore\Document::isAvailable()) {
                if (\Pimcore\Document::isFileTypeSupported($element->getFilename())) {
                    try {
                        $contentText = $element->getText();
                        $contentText = Encoding::toUTF8($contentText);
                        $contentText = str_replace(["\r\n", "\r", "\n", "\t", "\f"], " ", $contentText);
                        $contentText = preg_replace("/[ ]+/", " ", $contentText);
                        $this->data .= " " . $contentText;
                    } catch (\Exception $e) {
                        Logger::error($e);
                    }
                }
            } elseif ($element instanceof Asset\Text) {
                try {
                    $contentText = $element->getData();
                    $contentText = Encoding::toUTF8($contentText);
                    $this->data .= " " . $contentText;
                } catch (\Exception $e) {
                    Logger::error($e);
                }
            } elseif ($element instanceof Asset\Image) {
                try {
                    $metaData = array_merge($element->getEXIFData(), $element->getIPTCData());
                    foreach ($metaData as $key => $value) {
                        $this->data .= " " . $key . " : " . $value;
                    }
                } catch (\Exception $e) {
                    Logger::error($e);
                }
            }
            $this->published = true;
        } elseif ($element instanceof Object\AbstractObject) {
            if ($element instanceof Object\Concrete) {
                $getInheritedValues = Object\AbstractObject::doGetInheritedValues();
                Object\AbstractObject::setGetInheritedValues(true);
                $this->published = $element->isPublished();
                foreach ($element->getClass()->getFieldDefinitions() as $key => $value) {
                    $this->data .= $value->getDataForSearchIndex($element) . " ";
                }
                Object\AbstractObject::setGetInheritedValues($getInheritedValues);
            } elseif ($element instanceof Object\Folder) {
                $this->data = $element->getKey();
                $this->published = true;
            }
        } else {
            Logger::crit("Search\\Backend\\Data received an unknown element!");
        }
        if ($element instanceof Element\ElementInterface) {
            $this->data = "ID: " . $element->getId() . "  \nPath: " . $this->getFullPath() . "  \n" . $this->cleanupData($this->data);
        }
        return $this;
    }