Admin_DocumentController::diffVersionsAction PHP Method

diffVersionsAction() public method

public diffVersionsAction ( )
    public function diffVersionsAction()
    {
        $versionFrom = Version::getById($this->getParam("from"));
        $docFrom = $versionFrom->loadData();
        $request = $this->getRequest();
        $sessionName = Tool\Session::getOption("name");
        $prefix = $request->getScheme() . "://" . $request->getHttpHost() . $docFrom->getRealFullPath() . "?pimcore_version=";
        $fromUrl = $prefix . $this->getParam("from") . "&" . $sessionName . "=" . $_COOKIE[$sessionName];
        $toUrl = $prefix . $this->getParam("to") . "&" . $sessionName . "=" . $_COOKIE[$sessionName];
        $fromFile = PIMCORE_SYSTEM_TEMP_DIRECTORY . "/version-diff-tmp-" . uniqid() . ".png";
        $toFile = PIMCORE_SYSTEM_TEMP_DIRECTORY . "/version-diff-tmp-" . uniqid() . ".png";
        $diffFile = PIMCORE_SYSTEM_TEMP_DIRECTORY . "/version-diff-tmp-" . uniqid() . ".png";
        if (\Pimcore\Image\HtmlToImage::isSupported() && class_exists("Imagick")) {
            \Pimcore\Image\HtmlToImage::convert($fromUrl, $fromFile);
            \Pimcore\Image\HtmlToImage::convert($toUrl, $toFile);
            $image1 = new Imagick($fromFile);
            $image2 = new Imagick($toFile);
            if ($image1->getImageWidth() == $image2->getImageWidth() && $image1->getImageHeight() == $image2->getImageHeight()) {
                $result = $image1->compareImages($image2, Imagick::METRIC_MEANSQUAREERROR);
                $result[0]->setImageFormat("png");
                $result[0]->writeImage($diffFile);
                $result[0]->clear();
                $result[0]->destroy();
                $this->view->image = base64_encode(file_get_contents($diffFile));
                unlink($diffFile);
            } else {
                $this->view->image1 = base64_encode(file_get_contents($fromFile));
                $this->view->image2 = base64_encode(file_get_contents($toFile));
            }
            // cleanup
            $image1->clear();
            $image1->destroy();
            $image2->clear();
            $image2->destroy();
            unlink($fromFile);
            unlink($toFile);
        } else {
            $this->renderScript("document/diff-versions-unsupported.php");
        }
    }