/** * preSave. * * @param Doctrine_Event $event */ public function preSave($event) { $record = $event->getInvoker(); if ($record->isNew()) { $file = $record->getFilename(); if ($file != basename($file) && is_file($file)) { $fs = new lyMediaFileSystem(); $dest_path = $record->getFolderPath(); $dest_file = $fs->generateUniqueFileName($dest_path, basename($file)); $fs->import($file, $dest_path . $dest_file); $record->setType(mime_content_type($file)); $record->setFilename($dest_file); } if ($record->supportsThumbnails()) { lyMediaTools::generateThumbnails($record->getFolderPath(), $record->getFilename()); } } else { $modified = $record->getModified(true); if (isset($modified['folder_id']) || isset($modified['filename'])) { //Selected new folder or edited filename: move/rename asset $dest_folder = Doctrine::getTable('lyMediaFolder')->find($record->getFolderId()); $src_folder = $dest_folder; if (isset($modified['folder_id'])) { $src_folder = Doctrine::getTable('lyMediaFolder')->find($modified['folder_id']); } $src = $src_folder->getRelativePath() . (isset($modified['filename']) ? $modified['filename'] : $record->getFileName()); $dest = $dest_folder->getRelativePath() . $record->getFileName(); $fs = new lyMediaFileSystem(); $fs->rename($src, $dest, $record->supportsThumbnails()); } } }
public function setup() { parent::setup(); unset($this['type'], $this['filesize'], $this['created_at'], $this['updated_at']); // add the i18n label stuff if ($this->getObject()->getTable()->isI18n()) { $cultures = sfConfig::get('app_lyMediaManager_i18n_cultures', array()); if (isset($cultures[0])) { throw new sfException('Invalid i18n_cultures format in app.yml. Use the format: i18n_cultures: en: English fr: Français'); } $this->embedI18n(array_keys($cultures)); foreach ($cultures as $culture => $name) { $this->widgetSchema->setLabel($culture, $name); } } $this->widgetSchema['folder_id']->setOption('method', 'getIndentName'); $this->widgetSchema['folder_id']->setOption('order_by', array('lft', '')); if ($this->isNew()) { $this->widgetSchema['filename'] = new sfWidgetFormInputFile(); $this->validatorSchema['filename'] = new lyMediaValidatorFile(array('required' => 'true', 'path' => $this->getOption('upload_root') . sfConfig::get('app_lyMediaManager_media_root', 'media'), 'mime_types' => lyMediaTools::getAllowedMimeTypes(), 'allowed_extensions' => lyMediaTools::getAllowedExtensions())); if ($this->getOption('folder_id')) { $this->setDefault('folder_id', $this->getOption('folder_id')); } } else { $query = Doctrine_query::create()->from('lyMediaFolder')->where('id != ?', $this->getObject()->getFolder()->getId()); $this->widgetSchema['folder_id']->setOption('query', $query); $this->widgetSchema['folder_id']->setOption('add_empty', 'Move to ...'); $this->widgetSchema['filename'] = new sfWidgetFormInput(); $this->validatorSchema['filename'] = new lyMediaValidatorFilename(array('required' => true, 'allowed_extensions' => lyMediaTools::getAllowedExtensions())); } $this->validatorSchema->setPostValidator(new lyMediaValidatorAsset()); }
public function setup() { parent::setup(); unset($this['type'], $this['filesize'], $this['created_at'], $this['updated_at']); $this->widgetSchema['folder_id'] = new sfWidgetFormInputHidden(); $this->validatorSchema['folder_id'] = new sfValidatorInteger(); $this->widgetSchema['filename'] = new sfWidgetFormInputFile(); $this->validatorSchema['filename'] = new lyMediaValidatorFile(array('required' => 'true', 'path' => lyMediaTools::getBasePath() . $this->getOption('folder')->getRelativePath(), 'mime_types' => lyMediaTools::getAllowedMimeTypes(), 'allowed_extensions' => lyMediaTools::getAllowedExtensions())); $this->widgetSchema['filename']->setLabel('Upload file'); }
/** * Checks if asset file and thumbnails exist in filesystem. * * @param string $folder asset folder (relative path) * @param string $file asset filename * @param boolean $check_thumbs check existence/non-existence of thumbnail files * @param boolean $exist true=must exist, false=must not exist * * @return lyMediaTestFunctional current lyMediaTestFunctional instance */ protected function checkFile($folder, $file, $check_thumbs = true, $exist = true) { $file_path = lyMediaTools::getBasePath() . $folder . $file; $this->test()->is(is_file($file_path), $exist, 'File ' . $folder . $file . ($exist ? ' has ' : ' has not ') . 'been found'); if ($check_thumbs) { foreach (lyMediaTools::getThumbnailSettings() as $key => $params) { $file_path = lyMediaTools::getThumbnailPath($folder, $file, $key, false); $this->test()->is(is_file($file_path), $exist, 'Thumbnail ' . $key . '_' . $file . ($exist ? ' has ' : ' has not ') . 'been found'); } } return $this; }
public function setup() { parent::setup(); unset($this['type'], $this['filesize'], $this['created_at'], $this['updated_at']); $this->widgetSchema['folder_id']->setOption('method', 'getIndentName'); if ($this->isNew()) { $this->widgetSchema['filename'] = new sfWidgetFormInputFile(); $this->validatorSchema['filename'] = new lyMediaValidatorFile(array('required' => 'true', 'path' => $this->getOption('upload_root') . sfConfig::get('app_lyMediaManager_media_root', 'media'), 'mime_types' => lyMediaTools::getAllowedMimeTypes(), 'allowed_extensions' => lyMediaTools::getAllowedExtensions())); if ($user = $this->getOption('user')) { if ($user->getAttribute('view') == 'icons' && $user->getAttribute('folder_id')) { $this->setDefault('folder_id', $user->getAttribute('folder_id')); } } } else { $query = Doctrine_query::create()->from('lyMediaFolder')->where('id != ?', $this->getObject()->getFolder()->getId()); $this->widgetSchema['folder_id']->setOption('query', $query); $this->widgetSchema['folder_id']->setOption('add_empty', 'Move to ...'); $this->widgetSchema['filename'] = new sfWidgetFormInput(); $this->validatorSchema['filename'] = new lyMediaValidatorFilename(array('required' => true, 'allowed_extensions' => lyMediaTools::getAllowedExtensions())); $this->validatorSchema->setPostValidator(new lyMediaValidatorAsset()); } }
function thumbnail_image_path($asset, $folder_path = null, $type = 'small') { return image_path(lyMediaTools::getThumbnailURI($asset, $folder_path, $type)); }
/** * Deletes a file and related thumbnails. * * @param string $file path of the file to delete (can be relative to web dir). * @param bool $thumbs, if true thubnail files are also deleted. */ public function unlink($file, $thumbs = false) { $file = $this->makePathAbsolute($file); if (file_exists($file)) { unlink($file); } if ($thumbs) { $info = pathinfo($file); $path = $info['dirname'] . DIRECTORY_SEPARATOR . lyMediaTools::getThumbnailFolder() . DIRECTORY_SEPARATOR; foreach ($this->getThumbnailTypes() as $key) { $file = $path . $key . '_' . $info['basename']; if (file_exists($file)) { unlink($file); } } } }
?> </span> <?php } ?> </div> <?php } ?> <?php echo thumbnail_image_tag($asset, $folder->getRelativePath(), 'small', 'alt=asset title=' . $asset->getTitle()); ?> </div> <div class="lymedia_caption"> <?php echo lyMediaTools::formatAssetCaption($asset); ?> </div> <div class="lymedia_iconbar"> <ul class="lymedia_actions_icons"> <li class="edit"> <?php echo link_to(image_tag('/lyMediaManagerPlugin/images/edit', 'alt=edit'), 'ly_media_asset_edit', $asset, array('title' => 'edit asset')); ?> </li> <li class="delete"> <?php echo link_to(image_tag('/lyMediaManagerPlugin/images/delete', 'alt=delete'), 'ly_media_asset_delete', $asset, array('method' => 'delete', 'confirm' => 'Are you sure?', 'title' => 'delete asset')); ?> </li> </ul>
/** * Used by synchronize task. * * @param string $baseFolder * @param bool $verbose * @param bool $removeOrphanAssets * @param bool $removeOrphanFolders */ public function synchronizeWith($baseFolder, $verbose = true, $removeOrphanAssets = false, $removeOrphanFolders = false) { if (!is_dir($baseFolder)) { throw new lyMediaException(sprintf('%s is not a directory', $baseFolder)); } $files = sfFinder::type('file')->maxdepth(0)->ignore_version_control()->in($baseFolder); $assets = $this->getAssetsWithFilenames(); $fs = new lyMediaFileSystem(); foreach ($files as $file) { $basename = basename($file); if (!array_key_exists($basename, $assets)) { // File exists, asset does not exist: create asset $fs->import($file, $this->getRelativePath() . $basename); $lyMediaAsset = new lyMediaAsset(); $lyMediaAsset->setFolderId($this->getId()); $lyMediaAsset->setFilename($basename); $lyMediaAsset->setType(mime_content_type($file)); $lyMediaAsset->setFilesize(filesize($file) / 1024); $lyMediaAsset->save(); if ($verbose) { lyMediaTools::log(sprintf("Importing file %s", $file), 'green'); } } else { // File exists, asset exists: do nothing unset($assets[basename($file)]); } } foreach ($assets as $name => $asset) { if ($removeOrphanAssets) { // File does not exist, asset exists: delete asset $asset->delete(); if ($verbose) { lyMediaTools::log(sprintf("Deleting asset %s", $asset->getPath()), 'yellow'); } } else { if ($verbose) { lyMediaTools::log(sprintf("Warning: No file for asset %s", $asset->getPath()), 'red'); } } } $dirs = sfFinder::type('dir')->maxdepth(0)->discard(lyMediaTools::getThumbnailFolder())->ignore_version_control()->in($baseFolder); $folders = $this->getSubfoldersWithFolderNames(); foreach ($dirs as $dir) { list(, $name) = lyMediaTools::splitPath($dir); if (!array_key_exists($name, $folders)) { // dir exists in filesystem, not in database: create folder in database $lyMediaFolder = new lyMediaFolder(); $lyMediaFolder->setName($name); $lyMediaFolder->create($this); if ($verbose) { lyMediaTools::log(sprintf("Importing directory %s", $dir), 'green'); } } else { // dir exists in filesystem and database: look inside $lyMediaFolder = $folders[$name]; unset($folders[$name]); } $lyMediaFolder->synchronizeWith($dir, $verbose, $removeOrphanAssets, $removeOrphanFolders); } foreach ($folders as $name => $folder) { if ($removeOrphanFolders) { $folder->delete(null, true); if ($verbose) { lyMediaTools::log(sprintf("Deleting folder %s", $folder->getRelativePath()), 'yellow'); } } else { if ($verbose) { lyMediaTools::log(sprintf("Warning: No directory for folder %s", $folder->getRelativePath()), 'red'); } } } }
<div id="lymedia_thumb_menu"> <div class="title"> <?php echo __('Choose size'); ?> </div> <span class="_original"><?php echo __('original'); ?> </span> <?php foreach (lyMediaTools::getThumbnailSettings() as $type => $params) { ?> <span class="<?php echo $type; ?> "><?php echo __($type) . ' (' . $params['width'] . 'x' . $params['height'] . ')'; ?> </span> <?php } ?> <span class="_cancel"><?php echo __('Cancel'); ?> </span> </div>