true, 'embedUri' => '/gallery2/main.php', 'g2Uri' => '/gallery2/'));
if ($ret) {
print 'GalleryEmbed::init failed, here is the error message: ' . $ret->getAsHtml();
exit;
}
GalleryEmbed::done();
}
/**
* Dynamic query for tag items
* @param int $userId
* @param string $keyword (optional) keyword for query; get from request if not specified
* @return array object GalleryStatus a status code
* array of item ids
* @static
*/
function getTagChildIds($userId, $tagName=null) {
global $gallery;
$storage =& $gallery->getStorage();
if (!isset($tagName)) {
$tagName = GalleryUtilities::getRequestVariables('tagName');
}
if (empty($tagName)) {
return array(GalleryCoreApi::error(ERROR_BAD_PARAMETER), null);
}
/* Force case-sensitive look-up to make the query use an column index */
list ($ret, $tagId) = TagsHelper::getTagIdFromName($tagName, true);
if ($ret) {
return array($ret, null);
}
if (empty($tagId)) {
return array(null, array());
}
list ($ret, $query, $data) = GalleryCoreApi::buildItemQuery('TagItemMap', 'itemId',
'[TagItemMap::tagId] = ?', null, null, null, 'core.view', false, $userId);
if ($ret) {
return array($ret, null);
}
list ($ret, $searchResults) = $gallery->search($query, array_merge(array($tagId), $data));
if ($ret) {
return array($ret, null);
}
$itemIds = array();
while ($result = $searchResults->nextResult()) {
$itemIds[] = $result[0];
}
// start item display loop
if (!empty($itemIds))
{
foreach( $itemIds as $value )
{
list ($ret, $childItem) = GalleryCoreApi::loadEntitiesById($value, 'GalleryItem');
if ($ret)
{
print "Error loading childItems:" . $ret->getAsHtml();
}
// we need to check the disabledFlag for each in dynamic mode
$disabled = getDisabledFlag($childItem->getId());
if(!$disabled){
if(!($childItem->entityType == "GalleryAlbumItem")){
$display .= getDisplay($childItem);
}
}
}
return $display;
}
// end item display loop
}
/**
* Dynamic query for keyword items
* @param int $userId
* @param string $keyword (optional) keyword for query; get from request if not specified
* @return array GalleryStatus a status code
* array of item ids
* @static
*/
function getKeywordChildIds($userId, $keyword) {
global $gallery;
$storage =& $gallery->getStorage();
if (!isset($keyword)) {
$keyword = GalleryUtilities::getRequestVariables('keyword');
}
if (empty($keyword)) {
return array(GalleryCoreApi::error(ERROR_BAD_PARAMETER), null);
}
list ($ret, $module) = GalleryCoreApi::loadPlugin('module', 'keyalbum');
if ($ret) {
return array($ret, null);
}
list ($ret, $params) = GalleryCoreApi::fetchAllPluginParameters('module', 'keyalbum');
if ($ret) {
return array($ret, null);
}
$keywords = $where = array();
$keywords[] = '%' . $keyword . '%';
$where[] = '[GalleryItem::keywords] LIKE ?';
list ($ret, $query, $data) = GalleryCoreApi::buildItemQuery(
'GalleryItem', 'id', implode(' AND ', $where),
$params['orderBy'], $params['orderDirection'], null, 'core.view', false, $userId);
if ($ret) {
return array($ret, null);
}
if (empty($query)) {
return array(null, array());
}
list ($ret, $searchResults) = $gallery->search($query, array_merge($keywords, $data));
if ($ret) {
return array($ret, null);
}
$itemIds = array();
while ($result = $searchResults->nextResult()) {
$itemIds[] = $result[0];
}
// start item display loop
if (!empty($itemIds))
{
foreach( $itemIds as $value )
{
list ($ret, $childItem) = GalleryCoreApi::loadEntitiesById($value, 'GalleryItem');
if ($ret)
{
print "Error loading childItems:" . $ret->getAsHtml();
}
// we need to check the disabledFlag for each in dynamic mode
$disabled = getDisabledFlag($childItem->getId());
if(!$disabled){
if(!($childItem->entityType == "GalleryAlbumItem")){
$display .= getDisplay($childItem);
}
}
}
return $display;
}
// end item display loop
}
/**
* Dynamic query for dynamic items
* @param int $userId
* @return array object GalleryStatus a status code
* array of item ids
* @static
*/
function getDynamicChildIds($userId, $param='date', $orderBy='creationTimestamp',
$orderDirection=ORDER_DESCENDING, $table='GalleryEntity', $id='id') {
global $gallery;
$storage =& $gallery->getStorage();
list ($ret, $params) = GalleryCoreApi::fetchAllPluginParameters('module', 'dynamicalbum');
if ($ret) {
return array($ret, null);
}
$size = $params['size.' . $param];
$type = $params['type.' . $param];
if (!$size) {
return array(GalleryCoreApi::error(ERROR_PERMISSION_DENIED), null);
}
list ($show, $albumId) = GalleryUtilities::getRequestVariables('show', 'albumId');
if (!empty($show)) {
$type = $show;
}
switch ($type) {
case 'data':
$class = 'GalleryDataItem';
break;
case 'all':
$class = 'GalleryItem';
break;
case 'album':
$class = 'GalleryAlbumItem';
break;
default:
return array(GalleryCoreApi::error(ERROR_BAD_PARAMETER), null);
}
if (!isset($table)) {
$table = $class;
}
$query = '[' . $table . '::' . $id . '] IS NOT NULL';
if (!empty($albumId)) {
list ($ret, $sequence) = GalleryCoreApi::fetchParentSequence($albumId);
if ($ret) {
return array($ret, null);
}
if (!empty($sequence)) {
$sequence = implode('/', $sequence) . '/' . (int)$albumId . '/%';
$query = '[GalleryItemAttributesMap::parentSequence] LIKE ?';
$table = 'GalleryItemAttributesMap';
$id = 'itemId';
} else {
$query = '[' . $table . '::' . $id . '] <> ' . (int)$albumId;
}
}
if ($table == $class) {
$class = null;
}
list ($ret, $query, $data) = GalleryCoreApi::buildItemQuery(
$table, $id, $query, $orderBy, $orderDirection,
$class, 'core.view', false, $userId);
if ($ret) {
return array($ret, null);
}
if (empty($query)) {
return array(null, array());
}
if (!empty($sequence)) {
array_unshift($data, $sequence);
}
list ($ret, $searchResults) = $gallery->search($query, $data,
array('limit' => array('count' => $size)));
if ($ret) {
return array($ret, null);
}
$itemIds = array();
while ($result = $searchResults->nextResult()) {
$itemIds[] = $result[0];
}
// start item display loop
if (!empty($itemIds))
{
foreach( $itemIds as $value )
{
list ($ret, $childItem) = GalleryCoreApi::loadEntitiesById($value, 'GalleryItem');
if ($ret)
{
print "Error loading childItems:" . $ret->getAsHtml();
}
// we need to check the disabledFlag for each in dynamic mode
$disabled = getDisabledFlag($childItem->getId());
if(!$disabled){
if(!($childItem->entityType == "GalleryAlbumItem")){
$display .= getDisplay($childItem);
}
}
}
return $display;
}
// end item display loop
}
function getAlbumList ($id)
{
global $gallery;
$display = "";
$urlGenerator =& $gallery->getUrlGenerator();
list ($ret, $Albums) = GalleryCoreApi::fetchAlbumTree();
list ($ret, $Albums) = GalleryCoreApi::loadEntitiesById(GalleryUtilities::arrayKeysRecursive($Albums), 'GalleryAlbumItem');
foreach ($Albums as $Albums){
// we can check for disabledFlag for the whole album
$disabled = getDisabledFlag($Albums->getId());
if (($Albums->canContainChildren == 1 && $Albums->parentId == $id) || ($Albums->canContainChildren == 1 && $Albums->getId() == $id) || ($Albums->canContainChildren == 1 && $Albums->parentId == 418) && !$disabled || empty($id))
{
$display .=" \n";
$display .= " " . cdata($Albums->getTitle()) . "\n";
$display .= " " . cdata($Albums->parentId) . "\n";
$display .= " " . cdata(getOwner($Albums->ownerId, 'GalleryUser')) . "\n";
$display .= " " . cdata($Albums->getId()) . "\n";
$display .=" \n";
}
}
return $display;
}
function getItems ($id) {
global $gallery;
$display = "";
list ($ret, $entity) = GalleryCoreApi::loadEntitiesById( $id, 'GalleryItem' );
if ($ret)
{
print "Error loading Entity:" . $ret->getAsHtml();
}
// we can check for disabledFlag for the whole album
$disabled = getDisabledFlag($id);
if(!$disabled){
list ($ret, $childIds) = GalleryCoreApi::fetchChildItemIds($entity);
if ($ret)
{
print "Error finding child item ids:" . $ret->getAsHtml();
}
if (!empty($childIds))
{
foreach( $childIds as $value )
{
list ($ret, $childItem) = GalleryCoreApi::loadEntitiesById($value, 'GalleryItem');
if ($ret)
{
print "Error loading childItems:" . $ret->getAsHtml();
}
if(!($childItem->entityType == "GalleryAlbumItem")){
$display .= getDisplay($childItem);
}
}
}
return $display;
}
}
//the big display function
function getDisplay($item){
$item = getPreferred($item);
$itemId = $item->getId();
$display = '';
if(hasPermission($itemId)) {
list ($ret, $thumbnailList) = GalleryCoreApi::fetchThumbnailsByItemIds(array($itemId));
if ($ret) {
return array($ret->wrap(__FILE__, __LINE__), null);
}
$display .= " - \n";
$display .= " " . getTitle($item) . "\n";
$display .= " " . $itemId . "\n";
$display .= " " . getLink($item) . "\n";
$display .= " " . getView($item) . "\n";
$display .= " " . getThumbUrl($item) . "\n";
$display .= " " . getWidth($item) . "\n";
$display .= " " . getHeight($item) . "\n";
$display .= " " . getMime($item) . "\n";
if (!$ret && !empty($thumbnailList)) {
$display .= " ". cdata("

" . getTitle($item)) ."\n";
}
$display .= " " . getLink($item) . "\n";
$display .= " " . date('r', $item->getModificationTimestamp()) . "\n";
$display .= " " . getPreferredLink($item) . "\n";
// start new media rss
$display .= " \n";
$display .= " " . getTitle($item) . "\n";
$display .= " getModificationTimestamp()) . "\"/>\n";
if (!$ret && !empty($thumbnailList)) {
$display .= " " . cdata("
" . getTitle($item)) ."\n";
}
$display .= " \n";
$display .= " \n";
}
return $display;
}
//check if current user has view permissions
function hasPermission($itemId){
global $gallery;
if (!isset($userId)) {
$userId = $gallery->getActiveUserId();
}
if (!isset($userId)) {
$userId = GalleryCoreApi::getAnonymousUserId();
}
list ($ret, $ok) = GalleryCoreApi::hasItemPermission($itemId, 'core.view', $userId);
if ($ret || !$ok) {
return false;
}else{
return true;
}
}
//check to see if a module is available
function pluginCheck($plugin){
list ($ret, $modules) = GalleryCoreApi::fetchPluginStatus('module');
if ($ret)
{
print "checking plugin:". $plugin . " - " . $ret->getAsHtml();
}
if($modules[$plugin]['active'] && $modules[$plugin]['available']){
return true;
}else{
return false;
}
}
//check to see if the "Prevent this album from being displayed in the Image Block" is checked
function getDisabledFlag($itemId) {
$isActive = pluginCheck('imageblock');
if($isActive){
list ($ret, $searchResults) = GalleryCoreApi::getMapEntry('ImageBlockDisabledMap',
array('itemId'), array('itemId' => (int)$itemId));
if ($ret) {
return false;
}
$result = false;
if ($rec = $searchResults->nextResult()) {
$result = (bool)$rec[0];
}
return $result;
}else{
//we want to return false if the imageBlock module is not active
return false;
}
}
function getResizes($item) {
$itemId = $item->getId();
list ($ret, $resizes) = GalleryCoreApi::fetchResizesByItemIds(array($itemId));
if ($ret)
{
print "Error loading ResizesByItemIds:" . $ret->getAsHtml();
}
if (isset($resizes)) {
foreach ($resizes as $resized) {
$display .= getView($resized[0]);
}
}else{
$display .= "none";
}
return $display;
}
function getPreferred($item) {
list ($ret, $preferred) = GalleryCoreApi::fetchPreferredsByItemIds(array($id));
if ($ret) {
return array($ret, null);
}
if(isset($preferred[$id])) {
return $preferred[$id];
}else{
return $item;
}
}
function getOwner($id, $type) {
list ($ret, $entity) = GalleryCoreApi::loadEntitiesById( $id, $type );
if ($ret) {
print "Error loading ownerId:" . $ret->getAsHtml();
}
$owner = $entity->userName;
return $owner;
}
function getTitle($item) {
return stripTags($item->getTitle());
}
function stripTags($tostrip) {
GalleryCoreApi::requireOnce('lib/smarty_plugins/modifier.markup.php');
$stripped = smarty_modifier_markup($tostrip, 'strip');
return $stripped;
}
function getMime($item) {
if(!($item->entityType == "GalleryAlbumItem")){
return $item->getMimeType();
} else {
return "Album";
}
}
function getWidth($item) {
if(($item->entityType == "GalleryAnimationItem" || $item->entityType == "GalleryPhotoItem" || $item->entityType == "ThumbnailImage" || $item->entityType == "GalleryMovieItem" || $item->entityType == "GalleryDerivativeImage")){
return $item->getWidth();
} else {
return 480;
}
}
function getHeight($item) {
if(($item->entityType == "GalleryAnimationItem" || $item->entityType == "GalleryPhotoItem" || $item->entityType == "ThumbnailImage" || $item->entityType == "GalleryMovieItem" || $item->entityType == "GalleryDerivativeImage")){
return $item->getHeight();
} else {
return 160;
}
}
function getRating($item) {
$isActive = pluginCheck('rating');
if($isActive){
$itemId = $item->getId();
$rating = '';
GalleryCoreApi::requireOnce('modules/rating/classes/RatingHelper.class');
list ($ret, $Ratings) = RatingHelper::fetchRatings($itemId, '');
if(!empty ($Ratings)){
$rating = $Ratings[$id]['rating'];
return " " . $rating . "\n";
} else {
return " 0\n";
}
}
}
function getThumbUrl($item) {
global $gallery;
$urlGenerator =& $gallery->getUrlGenerator();
$itemId = $item->getId();
list ($ret, $thumbnail) = GalleryCoreApi::fetchThumbnailsByItemIds(array($itemId));
if (!$ret && !empty($thumbnail)) {
$thumbUrl = $urlGenerator->generateUrl(
array('view' => 'core.DownloadItem', 'itemId' => $thumbnail[$itemId]->getId(),
'serialNumber' => $thumbnail[$itemId]->getSerialNumber()),
array('forceFullUrl' => true, 'forceSessionId' => true, 'htmlEntities' => true));
} else {
$thumbUrl = "";
}
return $thumbUrl;
}
function getLink($item)
{
global $gallery;
$urlGenerator =& $gallery->getUrlGenerator();
$link = $urlGenerator->generateUrl(
array('view' => 'core.ShowItem', 'itemId' => $item->getId()),
array('forceFullUrl' => true, 'forceSessionId' => true));
return $link;
}
function getPreferredLink($item)
{
global $gallery;
$urlGenerator =& $gallery->getUrlGenerator();
$link = $urlGenerator->generateUrl(
array('view' => 'core.ShowItem', 'itemId' => $item->getId(), 'imageViewsIndex' => 0),
array('forceFullUrl' => true, 'forceSessionId' => true));
return $link;
}
function getView($item)
{
global $gallery;
$urlGenerator =& $gallery->getUrlGenerator();
$view = $urlGenerator->generateUrl(
array('view' => 'core.DownloadItem', 'itemId' => $item->getId(),
'serialNumber' => $item->getSerialNumber()),
array('forceFullUrl' => true, 'forceSessionId' => true, 'htmlEntities' => true));
return $view;
}
function cdata($text) {
return '';
}
function xml() {
init();
global $gallery;
$title = '';
$userId = $gallery->getActiveUserId();
if (isset ($_REQUEST['mode'])) {
$mode = $_REQUEST['mode'];
}
if (isset ($_REQUEST['g2_itemId'])) {
$g2_itemId = $_REQUEST['g2_itemId'];
list ($ret, $item) = GalleryCoreApi::loadEntitiesById($g2_itemId, 'GalleryAlbumItem');
if ($ret) {
print "Error loading initial item:" . $ret->getAsHtml();
}
$title = getTitle($item);
}else{
$title = "XML Mini SlideShow for Gallery2";
}
if (isset ($_REQUEST['g2_view'])) {
$g2_view = $_REQUEST['g2_view'];
}
$xml = '';
$urlGenerator =& $gallery->getUrlGenerator();
$link = $urlGenerator->generateUrl(array(), array('forceFullUrl' => true));
$vm = $gallery->getPhpVm();
list ($ret, $language) = GalleryTranslator::getDefaultLanguageCode( );
if ($ret)
{
$language = "en_US";
}
if (!$vm->headers_sent()) {
$vm->header('Content-Type: application/rss+xml');
}
echo "\n";
$xml .= "\n";
$xml .= " \n";
$xml .= " " . cdata($title) . "\n";
$xml .= " " . $link . "\n";
$xml .= " " . cdata($title) . "\n";
$xml .= " " .$language. "\n";
$xml .= " FlashYourWeb MediaRSS Generator v2.0.2\n";
$xml .= " " . date('r', $vm->time()) . "\n";
$xml .= " 120\n";
$xml .= getAlbumList ($g2_itemId);
switch ($mode) {
case 'dynamic':
switch ($g2_view) {
case 'dynamicalbum.UpdatesAlbum':
$xml .= getDynamicChildIds($userId);
break;
case 'dynamicalbum.PopularAlbum':
$xml .= getDynamicChildIds($userId, 'views', 'viewCount', ORDER_DESCENDING, 'GalleryItemAttributesMap', 'itemId');
break;
case 'dynamicalbum.RandomAlbum':
$xml .= getDynamicChildIds($userId, 'random', 'random', ORDER_ASCENDING, null, 'id');
break;
case 'keyalbum.KeywordAlbum':
$xml .= getKeywordChildIds($userId, $g2_keyword=null);
break;
case 'tags.VirtualAlbum':
$xml .= getTagChildIds($userId, $g2_tagName=null);
break;
default:
$xml .= getDynamicChildIds($userId);
}
break;
default:
$xml .= getItems($g2_itemId);
}
$xml .= " \n";
$xml .= "\n";
echo $xml;
}
xml();
?>