Last active
December 21, 2017 12:19
-
-
Save sepiariver/78b6e44b5a0dbd99e304 to your computer and use it in GitHub Desktop.
Process MODX Resource Image OnDocFormSave with pthumb
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
// In case the wrong event is enabled | |
if ($modx->context->key !== 'mgr' || $modx->event->name !== 'OnDocFormSave') return; | |
// We really need a resource object and the pthumb snippet | |
if (!is_object($resource) || $modx->getCount('modSnippet', array('name' => 'phpthumbof')) !== 1) { | |
$modx->log(modX::LOG_LEVEL_ERROR, 'ResourceImageThumbnails plugin requires phpthumbof and a valid resource object.'); | |
return; | |
} | |
// Check template ID condition | |
$templateIds = array_map('trim', explode(',', $modx->getOption('templateIds', $scriptProperties, ''))); | |
// If templateIds property is empty this will always return here | |
if (!in_array($resource->get('template'), $templateIds)) return; | |
// We need an image (expect it in a TV) | |
$tv = $modx->getOption('tv', $scriptProperties, 'image'); | |
// We're gonna rely on pthumb to qualify the image file | |
$imageFile = $resource->getTVValue($tv); | |
// See if there's a zc setting in a TV | |
$zc = $modx->getOption('zc', $scriptProperties, 'crop'); | |
$crop = $resource->getTVValue($zc); | |
if (empty($crop)) $crop = '1'; | |
// Options | |
$options = array( | |
'small' => implode('&', array('w=640','h=360','hp=854','zc=' . $crop,'q=60','aoe=1')), | |
'medium' => implode('&', array('w=1280','h=720','hp=1280','zc=' . $crop,'q=60','aoe=1')), | |
'large' => implode('&', array('w=1920','h=1080','hp=1920','zc=' . $crop,'q=60','aoe=1')), | |
); | |
// Create thumbnails and store results in resource properties | |
$thumbs = array(); | |
foreach($options as $size => $opts) { | |
$thumbs[$size] = $modx->runSnippet('phpthumbof', array('options' => $opts, 'input' => $imageFile)); | |
} | |
$image = array( | |
'original' => $imageFile, | |
'thumbs' => $thumbs, | |
); | |
$resource->setProperties($image, 'resourceimage'); | |
$resource->set('introtext', $modx->toJSON($image)); | |
$resource->save(); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment