1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100
<?php
require_once 'bedita_base.php';
class ThumbShell extends BeditaBaseShell {
public function create() {
$id = isset($this->params['id']) ? $this->params['id'] : null;
$uri = isset($this->params['-uri']) ? $this->params['-uri'] : null;
if (!$id && !$uri) {
$this->out('Please use --uri or -id options to identify source image');
return;
}
$stream = ClassRegistry::init('Stream');
if ($id) {
$imgData = $stream->findById($id);
} else {
$imgData = $stream->find('first', array('conditions' => array('uri' => $uri)));
if (!empty($imgData['Stream'])) {
$imgData = $imgData['Stream'];
}
}
if ($imgData === false || empty($imgData['uri'])) {
if ($id) {
$this->out('No stream uri found for image id: ' . $id);
} else {
$this->out('Stream uri not found: ' . $uri);
}
return;
}
$beThumb = BeLib::getObject('BeThumb');
$options = $this->readThumbOptions();
$thumbUri = $beThumb->image($imgData, $options);
$this->out('Thumbnail created: ' . $thumbUri);
$this->out('Done');
}
private function readThumbOptions() {
$res = array();
if (!empty($this->params['-thumb-options'])) {
$thumbOpts = $this->params['-thumb-options'];
$opts = explode(',', $thumbOpts);
foreach ($opts as $v) {
$opt = explode('=', $v);
if (count($opt) != 2) {
$this->out('bad input parameter: ' . $thumbOpts);
return false;
}
if ($opt[1] === 'true') {
$opt[1] = true;
} elseif ($opt[1] === 'false') {
$opt[1] = false;
} elseif ($opt[1] === 'null') {
$opt[1] = null;
}
$res[$opt[0]] = $opt[1];
}
}
return $res;
}
function help() {
$this->out('Available functions:');
$this->out(' ');
$this->out('1. create: thumbnail from image id or stream uri');
$this->out(' ');
$this->out(' Usage: create [-id <object-id>] [--uri <stream-uri>] [--thumb-options <thumb-options>]');
$this->out(' ');
$this->out(" -id <object-id>\t source image id");
$this->out(" --uri <stream-uri>\t local stream uri, relative to media root folder - e.g. /ad/54/img.jpg");
$this->out(" --thumb-options \t thumb options in the form width=100|height=100|...");
$this->out(' ');
}
}