function process(&$medium, &$gallery) { $ok = true; //innocent, until proven guilty ;) $events =& zmgFactory::getEvents(); $config =& zmgFactory::getConfig(); $imagetools =& zmgToolboxConstants::getImageTools(); $toolkey = intval($config->get('plugins/toolbox/general/conversiontool')); $imagetool = $imagetools[$toolkey - 1]; zmgimport('org.zoomfactory.var.plugins.toolbox.tools.' . $imagetool . 'Tool'); $klass = 'zmg' . ucfirst($imagetool) . 'Tool'; $file = $medium->getAbsPath(); $size = getimagesize($file); $img_meta = array('width' => $size[0], 'height' => $size[1], 'extension' => $medium->getExtension(), 'jpeg_qty' => $config->get('plugins/toolbox/general/jpegquality')); $metadata = $events->fire('ongetimagemetadata', false, $medium); //rotate image //TODO //resize to thumbnail if ($ok && !file_exists($medium->getAbsPath(ZMG_MEDIUM_THUMBNAIL))) { $ok = call_user_func_array(array($klass, 'resize'), array($file, $medium->getAbsPath(ZMG_MEDIUM_THUMBNAIL), intval($config->get('plugins/toolbox/general/imagesizethumbnail')), $img_meta)); } //resize to viewsize format $maxSize = intval($config->get('plugins/toolbox/general/imagesizemax')); if ($ok && !file_exists($medium->getAbsPath(ZMG_MEDIUM_VIEWSIZE)) && ($img_meta['width'] > $maxSize || $img_meta['height'] > $maxSize)) { $ok = call_user_func_array(array($klass, 'resize'), array($file, $medium->getAbsPath(ZMG_MEDIUM_VIEWSIZE), intval($config->get('plugins/toolbox/general/imagesizethumbnail')), $img_meta)); } //apply watermarks //TODO if ($ok) { $ok = $events->fire('onputimagemetadata', false, $medium, $metadata); } return $ok; }
function storeDelegate(&$event) { $aView = $event->getArgument('view'); $view = implode(':', $aView); $config =& zmgFactory::getConfig(); $events =& zmgFactory::getEvents(); $request =& zmgFactory::getRequest(); switch ($view) { case "admin:settings:store": $request->setResult($config->update($_POST, false)); break; case stristr($view, "admin:settings:plugins:autodetect"): $tool = trim($aView[count($aView) - 1]); if ($tool == "autodetect") { $tool = "all"; } else { $tool = array($tool); } $events->fire('onautodetect', false, $tool); break; case stristr($view, "admin:update:mediacount"): $filter = intval(array_pop($aView)); $zoom =& zmgFactory::getEvents()->fire('ongetcore'); $request->setResult($zoom->getMediumCount($filter)); break; case "admin:galleryedit:store": zmgimport('org.zoomfactory.var.plugins.datastore.stores.galleryStore'); zmgGalleryStore::process(); break; case "admin:galleryedit:delete": zmgimport('org.zoomfactory.var.plugins.datastore.stores.galleryStore'); zmgGalleryStore::delete(); break; case "admin:mediumedit:store": zmgimport('org.zoomfactory.var.plugins.datastore.stores.mediumStore'); zmgMediumStore::process(); break; case stristr($view, "admin:mediaupload:store"): //SWFUpload needs HTTP headers to signal the user... $method = stristr($view, "jupload") ? "jupload" : "swfupload"; $events->fire('onupload', false, $method); //exit; break; case stristr($view, "admin:mediaupload:update"): $gid = array_pop($aView); $events->fire('onuploadupdate', false, $gid); break; case stristr($view, "admin:update:mediacount"): $gid = intval(array_pop($aView)); $zoom =& zmgFactory::getEvents()->fire('ongetcore'); echo $zoom->getMediumCount($gid); break; default: break; } }
function process() { $gid = zmgGetParam($_REQUEST, 'zmg_edit_gallery_gid', 0); $isNew = false; if ($gid === "new") { $isNew = true; $gid = 0; } $gid = intval($gid); $events =& zmgFactory::getEvents(); $messages =& zmgFactory::getMessages(); $gallery = new zmgGallery(zmgDatabase::getDBO()); $res = true; if ($gid > 0) { if (!($res = $gallery->load($gid))) { $messages->append(T_('Gallery could not be saved') . ': ' . $gallery->getError()); } } if ($res && $gid > 0 || $isNew) { $data = array('name' => zmgSQLEscape(zmgGetParam($_REQUEST, 'zmg_edit_gallery_name', $gallery->name)), 'descr' => zmgSQLEscape(zmgGetParam($_REQUEST, 'zmg_edit_gallery_descr', $gallery->descr)), 'keywords' => zmgSQLEscape(zmgGetParam($_REQUEST, 'zmg_edit_gallery_keywords', $gallery->keywords)), 'hide_msg' => intval(zmgGetParam($_REQUEST, 'zmg_edit_gallery_hidenm', $gallery->hide_msg)), 'shared' => intval(zmgGetParam($_REQUEST, 'zmg_edit_gallery_shared', $gallery->shared)), 'published' => intval(zmgGetParam($_REQUEST, 'zmg_edit_gallery_published', $gallery->published)), 'uid' => intval(zmgGetParam($_REQUEST, 'zmg_edit_gallery_acl_gid', $gallery->uid))); if ($isNew) { $data['dir'] = zmgSQLEscape(zmgGetParam($_REQUEST, 'zmg_edit_gallery_dir', '')); } //do some additional validation of strings $data['name'] = $events->fire('onvalidate', false, $data['name']); $data['descr'] = $events->fire('onvalidate', false, $data['descr']); $data['keywords'] = $events->fire('onvalidate', false, $data['keywords']); if (!$gallery->bind($data)) { $messages->append(T_('Gallery could not be saved') . ': ' . $gallery->getError()); } else { if (!$gallery->store()) { $messages->append(T_('Gallery could not be saved') . ': ' . $gallery->getError()); } else { if ($isNew) { $gallery->buildDirStructure(); } $messages->append(T_('Gallery saved successfully!')); } } } else { $messages->append(T_('Gallery could not be saved') . ': ' . $gid); } }
/** * Create a HTML dropdown form element which contains a list of galleries * (ordered and indented). * @param mixed $onchange * @param string $sel_name * @param int $sel * @param int $exclude * @return void */ function galleriesSelect($onchange = 0, $sel_name = "gid", $sel = 0, $exclude = 0) { $html = "<select name=\"{$sel_name}\" id=\"{$sel_name}\" class=\"inputbox\""; if ($onchange !== 0) { $html .= " onchange=\"{$onchange}\""; } $html .= ">\n\t<option value=\"0\">--- " . T_('Select a Gallery') . " ---</option>\n"; $zoom =& zmgFactory::getEvents()->fire('ongetcore'); $galleries =& $zoom->getGalleryList(); if (isset($galleries)) { foreach ($galleries as $set) { $gallery = $set['object']; if ($gallery->gid != $exclude || $exclude == 0) { $html .= "\t<option value=\"" . $gallery->gid . "\"" . ($sel == $gallery->gid ? " selected" : "") . ">" . $set['path_name'] . "</option>\n"; } } } echo $html . "</select>\n"; }
function process() { $mid = intval(zmgGetParam($_REQUEST, 'zmg_edit_mid', 0)); $medium = new zmgMedium(zmgDatabase::getDBO()); $res = true; $events =& zmgFactory::getEvents(); $messages =& zmgFactory::getMessages(); if ($mid > 0) { if (!($res = $medium->load($mid))) { $messages->append(T_('Medium could not be saved') . ': ' . $medium->getError()); } } if ($res && $mid > 0) { $data = array('name' => zmgSQLEscape(zmgGetParam($_REQUEST, 'zmg_edit_name', $medium->name)), 'descr' => zmgSQLEscape(zmgGetParam($_REQUEST, 'zmg_edit_descr', $medium->descr)), 'keywords' => zmgSQLEscape(zmgGetParam($_REQUEST, 'zmg_edit_keywords', $medium->keywords)), 'shared' => intval(zmgGetParam($_REQUEST, 'zmg_edit_shared', $medium->shared)), 'published' => intval(zmgGetParam($_REQUEST, 'zmg_edit_published', $medium->published)), 'uid' => intval(zmgGetParam($_REQUEST, 'zmg_edit_acl_gid', $medium->uid))); //do some additional validation of strings $data['name'] = $events->fire('onvalidate', false, $data['name']); $data['descr'] = $events->fire('onvalidate', false, $data['descr']); $data['keywords'] = $events->fire('onvalidate', false, $data['keywords']); if (!$medium->bind($data)) { $messages->append(T_('Medium could not be saved') . ': ' . $medium->getError()); } else { if (!$medium->store()) { $messages->append(T_('Medium could not be saved') . ': ' . $medium->getError()); } else { $isGalleryImg = intval(zmgGetParam($_REQUEST, 'zmg_edit_gimg', 0)) === 1; $isParentImg = intval(zmgGetParam($_REQUEST, 'zmg_edit_pimg', 0)) === 1; if (!($isGalleryImg && $medium->setAsGalleryImage())) { $messages->append(T_('Medium could not be saved') . ': ' . T_('unable to set as image of gallery')); $res = false; } if (!($isParentImg && $medium->setAsGalleryImage(true))) { $messages->append(T_('Medium could not be saved') . ': ' . T_('unable to set as image of parent gallery')); $res = false; } if ($res) { $messages->append(T_('Medium saved successfully!')); } } } } else { $messages->append(T_('Medium could not be saved') . ': ' . $mid); } }
function set() { $view = trim(zmgGetParam($_REQUEST, 'view', ZMG_ADMIN ? 'admin:home' : 'gallery:show:home')); if (empty($view)) { $view = ZMG_ADMIN ? "admin:dispatchresult" : "dispatchresult"; $this->throwError('No view specified.'); } $this->_active_view = $view; $this->_view_tokens = split(':', $view); $events =& zmgFactory::getEvents(); //check for dispatches that 'put' data (in contrary to 'get' requests) $isDataStore = $events->fire('onisdatastore', false, $this->_view_tokens); if ((bool) $isDataStore) { $events->fire('ondatastore', false, $this->_view_tokens); $this->_active_view = (ZMG_ADMIN ? "admin:dispatchresult" : "dispatchresult") . ":" . str_replace(':', '_', str_replace('admin:', '', $view)); $this->_view_tokens = split(':', $this->_active_view); } /* switch ($page) { case 'editimg': if ($zoom->privileges->hasPrivilege('priv_editmedium') || $zoom->_isAdmin) { include(ZMG_ABS_PATH.'/components/com_zoom/www/admin/editimg.php'); } else { $zoom->notAuth(); } break; case 'view': include(ZMG_ABS_PATH.'/components/com_zoom/www/view.php'); break; case 'special': include(ZMG_ABS_PATH.'/components/com_zoom/www/special.php'); break; // Admin module pages... case 'admin': if ($zoom->privileges->hasPrivileges()) { include(ZMG_ABS_PATH.'/components/com_zoom/www/admin/admin.php'); $zoom->adminFooter(); } else { $zoom->notAuth(); } break; case 'zoomthumb': include(ZMG_ABS_PATH.'/components/com_zoom/www/admin/zoomthumb.php'); break; case 'catsmgr': if ($zoom->_isAdmin || ($zoom->privileges->hasPrivilege('priv_creategal') || $zoom->privileges->hasPrivilege('priv_editgal') || $zoom->privileges->hasPrivilege('priv_delgal'))) { include(ZMG_ABS_PATH.'/components/com_zoom/www/admin/catsmgr.php'); $zoom->adminFooter(); } else { $zoom->notAuth(); } break; case 'mediamgr': if ($zoom->_isAdmin || ($zoom->privileges->hasPrivilege('priv_upload') || $zoom->privileges->hasPrivilege('priv_editmedium') || $zoom->privileges->hasPrivilege('priv_delmedium'))) { include(ZMG_ABS_PATH.'/components/com_zoom/www/admin/mediamgr.php'); $zoom->adminFooter(); } else { $zoom->notAuth(); } break; case 'upload': if ($zoom->_isAdmin || $zoom->privileges->hasPrivilege('priv_upload')) { include(ZMG_ABS_PATH.'/components/com_zoom/www/admin/upload.php'); $zoom->adminFooter(); } else { $zoom->notAuth(); } break; case 'settings': if ($zoom->_isAdmin) { include(ZMG_ABS_PATH.'/components/com_zoom/www/admin/settings.php'); $zoom->adminFooter(); } else { $zoom->notAuth(); } break; case 'movefiles': if ($zoom->_isAdmin) { include(ZMG_ABS_PATH.'/components/com_zoom/www/admin/movefiles.php'); $zoom->adminFooter(); } else { $zoom->notAuth(); } break; case 'credits': if ($zoom->privileges->hasPrivileges()) { include(ZMG_ABS_PATH.'/components/com_zoom/www/admin/credits.php'); $zoom->adminFooter(); } else { $zoom->notAuth(); } break; case 'lightbox': if ($zoom->_CONFIG['lightbox']) { include(ZMG_ABS_PATH.'/components/com_zoom/www/lightbox.php'); } else { $zoom->notAuth(); } break; case 'ecard': if ($zoom->_CONFIG['ecards']) { include(ZMG_ABS_PATH.'/components/com_zoom/www/ecard.php'); } else { $zoom->notAuth(); } break; case 'search': include(ZMG_ABS_PATH.'/components/com_zoom/www/search.php'); break; default: $action = trim(mosGetParam($_REQUEST,'action')); if ($action === 'delimg') { if ($zoom->_isAdmin || $zoom->privileges->hasPrivilege('priv_delmedium')) { $key = mosGetParam($_REQUEST,'key'); $PageNo = mosGetParam($_REQUEST,'PageNo'); if ($key || $key == 0) { $zoom->_gallery->_images[$key]->getInfo(); if ($zoom->_gallery->_images[$key]->delete()) { mosRedirect(sefRelToAbs("index.php?option=$option&catid=".$zoom->_gallery->_id."&PageNo=$PageNo&Itemid=$Itemid"), _ZOOM_ALERT_DELPIC); } else { mosRedirect(sefRelToAbs("index.php?option=$option&catid=".$zoom->_gallery->_id."&PageNo=$PageNo&Itemid=$Itemid"), _ZOOM_ALERT_NODELPIC); } } } else { $zoom->notAuth(); } } if (!empty($zoom->_gallery) || $zoom->_isAdmin || $catid == 0) { $valid = true; if (!empty($zoom->_gallery)) { if (!$zoom->_gallery->_published && !$zoom->_isAdmin) { $valid = false; } } if ($valid) { include(ZMG_ABS_PATH.'/components/com_zoom/www/galleryshow.php'); } else { $zoom->notAuth(); } } else { $zoom->notAuth(); } break; } */ $events->fire('onviewset'); }
function getCoverImage() { if (empty($this->gid)) { return zmgError::throwError('zmgGallery: gallery data not loaded yet!'); } if (is_object($this->_obj_cover_img)) { return $this->_obj_cover_img->getRelPath(); } $db =& zmgDatabase::getDBO(); if (!is_int($this->cover_img)) { // first, check if the gallery contains any media at all: $zoom =& zmgFactory::getEvents()->fire('ongetcore'); $table = zmgFactory::getConfig()->getTableName('media'); $db->setQuery("SELECT mid FROM " . $table . " WHERE gid = " . $this->gid . " ORDER BY " . $zoom->getMediaOrdering() . " LIMIT 1"); $medium = intval($db->loadResult()); if ($medium > 0) { // get the first available medium $this->_obj_cover_img = new zmgMedium($db); $this->_obj_cover_img->load($medium); return $this->_obj_cover_img->getRelPath(); } } else { $this->_obj_cover_img = new zmgMedium($db); $this->_obj_cover_img->load($this->cover_img); return $this->_obj_cover_img->getRelPath(); } //TODO: display an 'empty gallery' image...or let the client handle this? return ""; }
function finalizeUpload($gid = 0) { //finish the SwfUpload sequence... if ($gid === 0) { return zmgToolboxPlugin::registerError(T_('Upload media'), T_('No valid gallery ID provided')); } $session =& zmgFactory::getSession(); $events =& zmgFactory::getEvents(); $config =& zmgFactory::getConfig(); $db =& zmgDatabase::getDBO(); $gallery = new zmgGallery($db); $gallery->load($gid); //now we got the gallery and its data, retrieve the uploaded media $media = $session->get('uploadtool.fancyfiles'); if (!is_array($media) || count($media) == 0) { return zmgToolboxPlugin::registerError(T_('Upload media'), T_('No media have been uploaded; nothing to do.')); } zmgimport('org.zoomfactory.lib.helpers.zmgFileHelper'); $src_path = ZMG_ABS_PATH . DS . "etc" . DS . "cache" . DS; $dest_path = zmgEnv::getRootPath() . DS . $config->get('filesystem/mediapath') . $gallery->dir . DS; foreach ($media as $medium) { $obj = new zmgMedium($db); $name = zmgSQLEscape(zmgGetParam($_REQUEST, 'zmg_upload_name', '')); $descr = zmgSQLEscape(zmgGetParam($_REQUEST, 'zmg_upload_descr', '')); $data = array('name' => $name, 'filename' => $medium, 'descr' => $descr, 'published' => 1, 'gid' => $gallery->gid); $obj->setGalleryDir($gallery->dir); //saves a SQL query later on... //do some additional validation of strings $data['name'] = $events->fire('onvalidate', $data['name']); if (!$data['name']) { $data['name'] = $name; } $data['descr'] = $events->fire('onvalidate', $data['descr']); if (!$data['descr']) { $data['descr'] = $descr; } if (!$obj->bind($data)) { zmgToolboxPlugin::registerError(T_('Upload media'), T_('Medium could not be saved') . ': ' . $obj->getError()); } else { if (!zmgFileHelper::copy($src_path . $medium, $dest_path . $medium)) { zmgToolboxPlugin::registerError(T_('Upload media'), T_('Unable to copy file') . ' ' . $medium); } else { if (!zmgFileHelper::delete($src_path . $medium)) { zmgToolboxPlugin::registerError(T_('Upload media'), T_('Unable to delete temporary file') . ' ' . $medium); } else { if (!zmgToolboxPlugin::processMedium($obj, $gallery)) { zmgToolboxPlugin::registerError(T_('Upload media'), T_('Medium could not be processed') . ' ' . $medium); } else { if (!$obj->store()) { //now save this medium in our DB zmgToolboxPlugin::registerError(T_('Upload media'), T_('Medium could not be saved') . ': ' . $obj->getError()); } } } } } //delete medium from session data: fourth parameter as TRUE $session->update('uploadtool.fancyfiles', $medium, ZMG_DATATYPE_ARRAY, true); } zmgToolboxPlugin::throwErrors(); }
function zmgMediumMetadata(&$medium) { $config =& zmgFactory::getConfig(); $events =& zmgFactory::getEvents(); $this->_mid = $medium->mid; $this->_ext = $medium->getExtension(); zmgimport('org.zoomfactory.lib.mime.zmgMimeHelper'); $path = $medium->getAbsPath(ZMG_MEDIUM_ORIGINAL . $config->get('filesystem/mediapath')); if (zmgMimeHelper::isImage($this->_ext)) { $this->_raw = $events->fire('ongetimagemetadata', false, $medium); } else { if (zmgMimeHelper::isAudio($this->_ext)) { $this->_raw = $events->fire('ongetaudiometadata', false, $path); } else { if (zmgMimeHelper::isVideo($this->_ext)) { $this->_raw = $events->fire('ongetvideometadata', false, $path); } } } }
<?php /** * zOOm Media Gallery! - a multi-gallery component * * @package zmg * @version $Revision$ * @author Mike de Boer <mike AT zoomfactory.org> * @copyright Copyright © 2007, Mike de Boer. All rights reserved. * @license http://www.gnu.org/copyleft/gpl.html GPL */ //list of global constants: define("_ZMG_EXEC", 1); define("ZMG_ABS_PATH", preg_replace('#[/\\\\]+administrator#', '', dirname(__FILE__))); define("ZMG_ADMIN", 1); //load all required libraries include ZMG_ABS_PATH . '/lib/initzoom.php'; $view =& zmgFactory::getView(); $events =& zmgFactory::getEvents(); $view->setAndRun(); $events->fire('onfinish');
function getMediaMetadata($mid) { $zoom =& zmgFactory::getEvents()->fire('ongetcore'); $medium = $zoom->getMedium($mid); return array($medium->getMetadata()); }
/** * Chmods files and directories recursively to given permissions. Available from 1.0.0 up. * @param path The starting file or directory (no trailing slash) * @param filemode Integer value to chmod files. NULL = dont chmod files. * @param dirmode Integer value to chmod directories. NULL = dont chmod directories. * @return TRUE=all succeeded FALSE=one or more chmods failed */ function chmodRecursive($path, $filemode = 0644, $dirmode = 0777) { $ret = true; $config =& zmgFactory::getConfig(); $events =& zmgFactory::getEvents(); if (is_dir($path)) { $dh = opendir($path); while ($file = readdir($dh)) { if ($file != '.' && $file != '..') { $fullpath = $path . DS . $file; if (is_dir($fullpath)) { $ret = zmgFileHelper::chmodRecursive($fullpath, $filemode, $dirmode); } else { if (isset($filemode)) { if ($config->get('plugins/safemode/general/enable') == 1) { $ret = $events->fire('onchmod', $fullpath, $filemode); } else { $ret = (bool) @chmod($fullpath, $filemode); } } } } } closedir($dh); if (isset($dirmode)) { if ($config->get('plugins/safemode/general/enable') == 1) { $ret = $events->fire('onchmod', $path, $dirmode); } else { $ret = (bool) @chmod($path, $dirmode); } } } else { if (isset($filemode)) { if ($config->get('plugins/safemode/general/enable') == 1) { $ret = $events->fire('onchmod', $path, $filemode); } else { $ret = (bool) @chmod($path, $filemode); } } } return $ret; }