public function getProperties() { $properties = $this->source->getProperties(); $data = array(); foreach ($properties as $property) { $data[] = array($property['name'], $property['desc'], $property['type'], $property['options'], $property['value'], $property['lexicon'], $property['overridden'], $property['desc_trans'], $property['name_trans']); } $this->sourceArray['properties'] = $data; }
/** * @return array|string */ public function process() { if (!($data = $this->handleFile())) { return $this->failure($this->modx->lexicon('ms2gallery_err_gallery_ns')); } $properties = $this->mediaSource->getProperties(); $tmp = explode('.', $data['name']); $extension = strtolower(end($tmp)); $image_extensions = $allowed_extensions = array(); if (!empty($properties['imageExtensions']['value'])) { $image_extensions = array_map('trim', explode(',', strtolower($properties['imageExtensions']['value']))); } if (!empty($properties['allowedFileTypes']['value'])) { $allowed_extensions = array_map('trim', explode(',', strtolower($properties['allowedFileTypes']['value']))); } if (!empty($allowed_extensions) && !in_array($extension, $allowed_extensions)) { return $this->failure($this->modx->lexicon('ms2gallery_err_gallery_ext')); } else { if (in_array($extension, $image_extensions)) { $type = 'image'; } else { $type = $extension; } } $hash = sha1($data['stream']); if ($this->modx->getCount('msResourceFile', array('resource_id' => $this->resource->id, 'hash' => $hash, 'parent' => 0))) { return $this->failure($this->modx->lexicon('ms2gallery_err_gallery_exists')); } $filename = !empty($properties['imageNameType']) && $properties['imageNameType']['value'] == 'friendly' ? $this->resource->cleanAlias($data['name']) : $hash . '.' . $extension; $rank = isset($properties['imageUploadDir']) && empty($properties['imageUploadDir']['value']) ? 0 : $this->modx->getCount('msResourceFile', array('parent' => 0, 'resource_id' => $this->resource->id)); /* @var msResourceFile $product_file */ $product_file = $this->modx->newObject('msResourceFile', array('resource_id' => $this->resource->id, 'parent' => 0, 'name' => $data['name'], 'file' => $filename, 'path' => $this->resource->id . '/', 'source' => $this->mediaSource->get('id'), 'type' => $type, 'rank' => $rank, 'createdon' => date('Y-m-d H:i:s'), 'createdby' => $this->modx->user->id, 'active' => 1, 'hash' => $hash, 'properties' => $data['properties'])); $this->mediaSource->createContainer($product_file->path, '/'); $file = $this->mediaSource->createObject($product_file->get('path'), $product_file->get('file'), $data['stream']); if ($file) { $url = $this->mediaSource->getObjectUrl($product_file->get('path') . $product_file->get('file')); $product_file->set('url', $url); $product_file->save(); if (empty($rank)) { $imagesTable = $this->modx->getTableName('msResourceFile'); $sql = "UPDATE {$imagesTable} SET rank = rank + 1 WHERE resource_id ='" . $this->resource->id . "' AND id !='" . $product_file->get('id') . "'"; $this->modx->exec($sql); } $generate = $product_file->generateThumbnails($this->mediaSource); if ($generate !== true) { $this->modx->log(modX::LOG_LEVEL_ERROR, 'Could not generate thumbnails for image with id = ' . $product_file->get('id') . '. ' . $generate); return $this->failure($this->modx->lexicon('ms2gallery_err_gallery_thumb')); } else { return $this->success(); } } else { return $this->failure($this->modx->lexicon('ms2gallery_err_gallery_save') . ': ' . print_r($this->mediaSource->getErrors(), 1)); } }