<?php

require_once(__DIR__.'/lib.php');

/**
 * Resizes all images allocated in a directory.
 *
 * @param string $srcDir The source directory
 * @param string $dstDir The destination directory
 * @param integer $maxHeight The maximum height of resized image in pixels
 * @param integer $maxWidth The maximum width of resized image in pixels
 * @param boolean $rewrite Wether to rewrite the destination file if it exits
 */
class Resize extends Vn\Lib\Method {
	const PARAMS = [
		 'srcDir'
		,'dstDir'
		,'maxHeight'
		,'maxWidth'
		,'rewrite'
		,'crop'
		,'symbolic'
	];

	function run() {
		$options = getopt('', $params);

		if (!$this->checkParams($options, self::PARAMS))
			$this->usage();

		$srcDir = $options['srcDir'];
		$dstDir = $options['dstDir'];
		$maxHeight = $options['maxHeight'];
		$maxWidth = $options['maxWidth'];
		$rewrite = isset($options['rewrite']);
		$crop = isset($options['crop']);
		$symbolic = isset($options['symbolic']);

		set_time_limit(0);

		$count = 0;
		$dir = opendir($srcDir);

		if ($dir)
		while ($fileName = readdir($dir))
		if (!in_array($fileName, ['.', '..'])) {
			$srcFile = "$srcDir/$fileName";
			$dstFile = "$dstDir/". substr($fileName, 0, -4).'.png';
			
			if (!file_exists($dstFile) || $rewrite)
			try {
				$symbolicSrc =($symbolic) ? $srcFile : NULL;
			
				$image = Image::create($srcFile);
				Image::resizeSave($image, $dstFile, $maxHeight, $maxWidth, $crop, $symbolicSrc);
				imagedestroy($image);
				$count++;
			} catch (\Exception $e) {}
		}
		
		echo "$count files resized.\n";
	}
}