| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203 |
- <?php
- /**
- * Gallery
- *
- * Copyright 2010-2012 by Shaun McCormick <shaun@modx.com>
- *
- * Gallery is free software; you can redistribute it and/or modify it under the
- * terms of the GNU General Public License as published by the Free Software
- * Foundation; either version 2 of the License, or (at your option) any later
- * version.
- *
- * Gallery is distributed in the hope that it will be useful, but WITHOUT ANY
- * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
- * A PARTICULAR PURPOSE. See the GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * Gallery; if not, write to the Free Software Foundation, Inc., 59 Temple
- * Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * @package gallery
- */
- /**
- * The main Gallery snippet.
- *
- * @var modX $modx
- * @var Gallery $gallery
- *
- * @package gallery
- */
- $gallery = $modx->getService('gallery','Gallery',$modx->getOption('gallery.core_path',null,$modx->getOption('core_path').'components/gallery/').'model/gallery/',$scriptProperties);
- if (!($gallery instanceof Gallery)) return '';
- $modx->lexicon->load('gallery:web');
- /* check for REQUEST vars if property set */
- $imageGetParam = $modx->getOption('imageGetParam',$scriptProperties,'galItem');
- $albumRequestVar = $modx->getOption('albumRequestVar',$scriptProperties,'galAlbum');
- $tagRequestVar = $modx->getOption('tagRequestVar',$scriptProperties,'galTag');
- if ($modx->getOption('checkForRequestAlbumVar',$scriptProperties,true)) {
- if (!empty($_REQUEST[$albumRequestVar])) $scriptProperties['album'] = $_REQUEST[$albumRequestVar];
- }
- if ($modx->getOption('checkForRequestTagVar',$scriptProperties,true)) {
- if (!empty($_REQUEST[$tagRequestVar])) $scriptProperties['tag'] = $_REQUEST[$tagRequestVar];
- }
- if (empty($scriptProperties['album']) && empty($scriptProperties['tag'])) return '';
- $data = $modx->call('galItem','getList',array(&$modx,$scriptProperties));
- $totalVar = $modx->getOption('totalVar', $scriptProperties, 'total');
- $modx->setPlaceholder($totalVar,$data['total']);
- /* load plugins */
- $plugin = $modx->getOption('plugin',$scriptProperties,'');
- if (!empty($plugin)) {
- $pluginPath = $modx->getOption('pluginPath',$scriptProperties,'');
- if (empty($pluginPath)) {
- $pluginPath = $gallery->config['modelPath'].'gallery/plugins/';
- }
- /** @var GalleryPlugin $plugin */
- if (($className = $modx->loadClass($plugin,$pluginPath,true,true))) {
- $plugin = new $className($gallery,$scriptProperties);
- $plugin->load();
- $scriptProperties = $plugin->adjustSettings($scriptProperties);
- } else {
- return $modx->lexicon('gallery.plugin_err_load',array('name' => $plugin,'path' => $pluginPath));
- }
- } else {
- if ($modx->getOption('useCss',$scriptProperties,true)) {
- $modx->regClientCSS($gallery->config['cssUrl'].'web.css');
- }
- }
- /* iterate */
- $imageProperties = $modx->getOption('imageProperties',$scriptProperties,'');
- $imageProperties = !empty($imageProperties) ? $modx->fromJSON($imageProperties) : array();
- $imageProperties = array_merge(array(
- 'w' => (int)$modx->getOption('imageWidth',$scriptProperties,500),
- 'h' => (int)$modx->getOption('imageHeight',$scriptProperties,500),
- 'zc' => (boolean)$modx->getOption('imageZoomCrop',$scriptProperties,0),
- 'far' => (string)$modx->getOption('imageFar',$scriptProperties,false),
- 'q' => (int)$modx->getOption('imageQuality',$scriptProperties,90),
- ),$imageProperties);
- $thumbProperties = $modx->getOption('thumbProperties',$scriptProperties,'');
- $thumbProperties = !empty($thumbProperties) ? $modx->fromJSON($thumbProperties) : array();
- $thumbProperties = array_merge(array(
- 'w' => (int)$modx->getOption('thumbWidth',$scriptProperties,100),
- 'h' => (int)$modx->getOption('thumbHeight',$scriptProperties,100),
- 'zc' => (boolean)$modx->getOption('thumbZoomCrop',$scriptProperties,1),
- 'far' => (string)$modx->getOption('thumbFar',$scriptProperties,'C'),
- 'q' => (int)$modx->getOption('thumbQuality',$scriptProperties,90),
- ),$thumbProperties);
- $idx = 0;
- $output = array();
- $filesUrl = $modx->call('galAlbum','getFilesUrl',array(&$modx));
- $filesPath = $modx->call('galAlbum','getFilesPath',array(&$modx));
- $itemCls = $modx->getOption('itemCls',$scriptProperties,'gal-item');
- $imageAttributes = $modx->getOption('imageAttributes',$scriptProperties,'');
- $linkAttributes = $modx->getOption('linkAttributes',$scriptProperties,'');
- $linkToImage = $modx->getOption('linkToImage',$scriptProperties,false);
- $activeCls = $modx->getOption('activeCls',$scriptProperties,'gal-item-active');
- $highlightItem = $modx->getOption($imageGetParam,$_REQUEST,false);
- $defaultThumbTpl = $modx->getOption('thumbTpl',$scriptProperties,'galItemThumb');
- /** @var galItem $item */
- if (!is_array($data)) return '';
- // prep for &thumbTpl_N
- $keys = array_keys($scriptProperties);
- $nthTpls = array();
- foreach($keys as $key) {
- $keyBits = $gallery->explodeAndClean($key, '_');
- if (isset($keyBits[0]) && $keyBits[0] === 'thumbTpl') {
- if ($i = (int) $keyBits[1]) $nthTpls[$i] = $scriptProperties[$key];
- }
- }
- ksort($nthTpls);
- foreach ($data['items'] as $item) {
- $itemArray = $item->toArray();
- $itemArray['idx'] = $idx;
- $itemArray['cls'] = $itemCls;
- if ($itemArray['id'] == $highlightItem) {
- $itemArray['cls'] .= ' '.$activeCls;
- }
- $itemArray['filename'] = basename($item->get('filename'));
- $itemArray['image_absolute'] = $item->get('base_url').$filesUrl.$item->get('filename');
- $itemArray['fileurl'] = $itemArray['image_absolute'];
- $itemArray['filepath'] = $filesPath.$item->get('filename');
- $itemArray['filesize'] = $item->get('filesize');
- $itemArray['thumbnail'] = $item->get('thumbnail',$thumbProperties);
- $itemArray['image'] = $item->get('thumbnail',$imageProperties);
- $itemArray['image_attributes'] = $imageAttributes;
- $itemArray['link_attributes'] = $linkAttributes;
- if (!empty($scriptProperties['album'])) $itemArray['album'] = $scriptProperties['album'];
- if (!empty($scriptProperties['tag'])) $itemArray['tag'] = $scriptProperties['tag'];
- $itemArray['linkToImage'] = $linkToImage;
- $itemArray['url'] = $item->get('url');
- $itemArray['imageGetParam'] = $imageGetParam;
- $itemArray['albumRequestVar'] = $albumRequestVar;
- $itemArray['tagRequestVar'] = $tagRequestVar;
- $itemArray['tag'] = '';
- if ($plugin) {
- $plugin->renderItem($itemArray);
- }
- $thumbTpl = $defaultThumbTpl;
- if (isset($nthTpls[$idx])) {
- $thumbTpl = $nthTpls[$idx];
- } else {
- foreach ($nthTpls as $int => $tpl) {
- if ( ($idx % $int) === 0 ) $thumbTpl = $tpl;
- }
- }
- $output[] = $gallery->getChunk($thumbTpl,$itemArray);
- $idx++;
- }
- $output = implode("\n",$output);
- /* if set, place in a container tpl */
- $containerTpl = $modx->getOption('containerTpl',$scriptProperties,false);
- if (!empty($containerTpl)) {
- $ct = $gallery->getChunk($containerTpl,array(
- 'thumbnails' => $output,
- 'album_name' => $data['album']['name'],
- 'album_description' => $data['album']['description'],
- 'album_year' => isset($data['album']['year']) ? $data['album']['year'] : '',
- 'albumRequestVar' => $albumRequestVar,
- 'albumId' => $data['album']['id'],
- ));
- if (!empty($ct)) $output = $ct;
- }
- /* set to placeholders or output directly */
- $toPlaceholder = $modx->getOption('toPlaceholder',$scriptProperties,false);
- if (!empty($toPlaceholder)) {
- $modx->toPlaceholders(array(
- $toPlaceholder => $output,
- $toPlaceholder.'.id' => $data['album']['id'],
- $toPlaceholder.'.name' => $data['album']['name'],
- $toPlaceholder.'.year' => isset($data['album']['year']) ? $data['album']['year'] : '',
- $toPlaceholder.'.description' => $data['album']['description'],
- $toPlaceholder.'.total' => $data['total'],
- $toPlaceholder.'.next' => $data['album']['id'] + 1,
- $toPlaceholder.'.prev' => $data['album']['id'] - 1,
- ));
- } else {
- $placeholderPrefix = $modx->getOption('placeholderPrefix',$scriptProperties,'gallery.');
- $modx->toPlaceholders(array(
- $placeholderPrefix.'id' => $data['album']['id'],
- $placeholderPrefix.'name' => $data['album']['name'],
- $placeholderPrefix.'year' => isset($data['album']['year']) ? $data['album']['year'] : '',
- $placeholderPrefix.'description' => $data['album']['description'],
- $placeholderPrefix.'total' => $data['total'],
- $placeholderPrefix.'next' => $data['album']['id'] + 1,
- $placeholderPrefix.'prev' => $data['album']['id'] - 1,
- ));
- return $output;
- }
- return '';
- return;
|