Inheritance: extends Url
Esempio n. 1
0
 /**
  * Saves the screenshot to the requested location
  *
  * @param string $imageLocation      Image Location
  * @param bool   $deleteFileIfExists True to delete the file if it exists
  *
  * @return bool
  */
 public function save($imageLocation, $deleteFileIfExists = true)
 {
     $this->imageLocation = $this->output->getLocation() . $imageLocation;
     if (!pathinfo($this->imageLocation, PATHINFO_EXTENSION)) {
         $this->imageLocation .= '.' . $this->getImageType()->getFormat();
     }
     $data = array('url' => (string) $this->url, 'width' => $this->width, 'height' => $this->height, 'imageLocation' => LocalPath::sanitize($this->imageLocation));
     if ($this->clipWidth && $this->clipHeight) {
         $data['clipOptions']['width'] = $this->clipWidth;
         $data['clipOptions']['height'] = $this->clipHeight;
         $data['clipOptions']['top'] = 0;
         $data['clipOptions']['left'] = 0;
     }
     if ($this->backgroundColor) {
         $data['backgroundColor'] = $this->backgroundColor;
     } elseif ($this->getImageType()->getFormat() == Types\Jpg::FORMAT) {
         // If there is no background color set, and it's a jpeg
         // we need to set a bg color, otherwise the background will be black
         $data['backgroundColor'] = '#FFFFFF';
     }
     if ($this->userAgentString) {
         $data['userAgent'] = $this->userAgentString;
     }
     if ($this->timeout) {
         $data['timeout'] = $this->timeout;
     }
     if ($this->includedJsScripts) {
         $data['includedJsScripts'] = $this->includedJsScripts;
     }
     if ($this->includedJsSnippets) {
         $data['includedJsSnippets'] = $this->includedJsSnippets;
     }
     if ($deleteFileIfExists && file_exists($this->imageLocation) && is_writable($this->imageLocation)) {
         unlink($this->imageLocation);
     }
     $jobName = md5(json_encode($data));
     $jobPath = $this->jobs->getLocation() . $jobName . '.js';
     if (!is_file($jobPath)) {
         // Now we write the code to a js file
         $resultString = $this->getTemplateResult('screen-capture', $data);
         file_put_contents($jobPath, $resultString);
     }
     $command = sprintf("%sphantomjs %s %s", $this->binPath, $this->getOptionsString(), $jobPath);
     // Run the command and ensure it executes successfully
     $returnCode = null;
     $output = [];
     exec(sprintf("%s 2>&1", escapeshellcmd($command)), $output, $returnCode);
     if ($returnCode !== 0) {
         throw new PhantomJsException($output);
     }
     return file_exists($this->imageLocation);
 }
Esempio n. 2
0
 public function __construct()
 {
     $path = __DIR__ . '/../../../scripts/facebook-hide-login.js';
     parent::__construct($path);
 }