<?php
namespace ShortPixel\Model\Image;

if ( ! defined( 'ABSPATH' ) ) {
 exit; // Exit if accessed directly.
}

use ShortPixel\ShortPixelLogger\ShortPixelLogger as Log;

class ImageConvertMeta
{

	 protected $fileFormat; // png / heic etc
	 protected $isConverted = false;
	 protected $placeholder = false;
	 protected $replacementImageBase = false;
	// protected $doConversion = false;
	 protected $triedConversion = false;
	 protected $errorReason = false;
	 protected $omitBackup = true; // Don't backup the converted image (again), keeping only the original format. if not, make a backup of the converted file and treat that as the default backup/restore

	 public function __construct()
	 {

	 }

	 public function isConverted()
	 {
		 	return $this->isConverted;
	 }

	 public function didTry()
	 {
		   return $this->triedConversion;
	 }

	 public function setTried($value)
	 {
		  $this->triedConversion = $value;
	 }

	 public function setConversionDone($omitBackup = true)
	 {
		  $this->isConverted = true;
			$this->omitBackup = $omitBackup;
	 }

	 public function setError($code)
	 {
		  $this->errorReason = $code;
	 }

	 public function getError()
	 {
		  return $this->errorReason;
	 }

	 public function setFileFormat($ext)
	 {
		  if (is_null($this->fileFormat))
		  	$this->fileFormat = $ext;
	 }

	 public function getFileFormat()
	 {
		  return $this->fileFormat;
	 }

	 public function omitBackup()
	 {
		  return $this->omitBackup;
	 }

	 // bool for now, otherwise if needed.
	 public function setPlaceHolder($placeholder = true)
	 {
		 	$this->placeholder = $placeholder;
	 }

	 public function hasPlaceHolder()
	 {
		  return $this->placeholder;
	 }

	 public function setReplacementImageBase($name)
	 {
		  $this->replacementImageBase = $name;

	 }

	 public function getReplacementImageBase()
	 {
		  return $this->replacementImageBase;

	 }


	 public function fromClass($object)
   {
      foreach($object as $property => $value)
      {
				if (property_exists($this, $property))
        {
          $this->$property = $value;
        }
     	}
  	}

	 public function toClass()
	 {
		 $class = new \stdClass;
		 $vars = get_object_vars($this);

		 foreach($vars as $property => $value) // only used by media library.
		 {
			  $class->$property = $this->$property;
		 }
		 return $class;
	 }

}