Sindbad~EG File Manager

Current Path : /var/www/web3/modules/rss/classes/
Upload File :
Current File : //var/www/web3/modules/rss/classes/RssMapHelper.class

<?php
/*
 * Gallery - a web based photo album viewer and editor
 * Copyright (C) 2000-2007 Bharat Mediratta
 *
 * This program 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.
 *
 * This program 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 this program; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
 */

/**
 * Utility functions useful in managing Rss
 * @package Rss
 * @subpackage Classes
 * @author Pierre-Luc Paour <gallery@paour.com>
 * @version $Revision: 15513 $
 * @static
 */
class RssMapHelper {

    /**
     * Return the feeds defined for a given item
     *
     * @param int $itemId (optional) item id or null for all feeds
     * @return array object GalleryStatus a status code
     *         array of array 'name' => feed name
     *                        'itemId' => item associated with the feed
     *                        'ownerId' => owner of the feed
     *                        'params' => feed definition
     */
    function fetchFeedsForItem($itemId=null) {
	global $gallery;

	if (isset($itemId)) {
	    list ($ret, $searchResults) = GalleryCoreApi::getMapEntry('RssMap',
		array('feedName', 'itemId', 'ownerId', 'params'),
		array('itemId' => $itemId));
	    if ($ret) {
		return array($ret, null);
	    }
	} else {
	    $query = '
	    SELECT
	      [RssMap::feedName], [RssMap::itemId], [RssMap::ownerId], [RssMap::params]
	    FROM
	      [RssMap]
	    ';

	    list ($ret, $searchResults) = $gallery->search($query);
	    if ($ret) {
		return array($ret, null);
	    }
	}

	$feeds = array();
	while ($result = $searchResults->nextResult()) {
	    $params = unserialize($result[3]);

	    if ($params != false) {
		$feed = array('name' => $result[0],
			      'itemId' => $result[1],
			      'ownerId' => $result[2],
			      'params' => $params);
		$feeds[] = $feed;
	    } else {
		/* unserialization error */
		return array(GalleryCoreApi::error(ERROR_STORAGE_FAILURE),
			     null);
	    }
	}
	return array(null, $feeds);
    }

    /**
     * Return all the feed names
     *
     * @param int $limit optional limit to the number of feeds
     * @return array object GalleryStatus a status code
     *         array of feed names
     */
    function fetchFeedNames($limit=0) {
	global $gallery;

	$query = '
	SELECT
	  [RssMap::feedName]
	FROM
	  [RssMap]
	';

	$params = array();
	if (isset($limit)) {
	    $params['limit'] = array('count' => $limit);
	}

	list ($ret, $searchResults) = $gallery->search($query, null, $params);
	if ($ret) {
	    return array($ret, null);
	}

	$names = array();
	while ($result = $searchResults->nextResult()) {
	    $names[] = $result[0];
	}

	return array(null, $names);
    }

    /**
     * Fetch a feed
     *
     * @param string $feedName
     * @return object GalleryStatus a status code
     */
    function fetchFeed($feedName) {
	list ($ret, $searchResults) = GalleryCoreApi::getMapEntry('RssMap',
	    array('params'), array('feedName' => $feedName));
	if ($ret) {
	    return array($ret, null);
	}

	$params = array();
	if ($result = $searchResults->nextResult()) {
	    $params = unserialize($result[0]);

	    if ($params != false) {
		return array(null, $params);
	    } else {
		/* unserialization error */
		return array(GalleryCoreApi::error(ERROR_STORAGE_FAILURE),
			     null);
	    }
	} else {
	    return array(GalleryCoreApi::error(ERROR_MISSING_OBJECT), null);
	}
    }

    /**
     * Create a feed
     *
     * @param string $feedName
     * @param array $params parameters
     * @return object GalleryStatus a status code
     */
    function createFeed($feedName, $params) {
	global $gallery;

	/* first, check for collision */
	list ($ret, $feed) = RssMapHelper::fetchFeed($feedName);
	if (!$ret) {
	    /* we expected an ERROR_MISSING_OBJECT, this means we have a collision. Throw it */
	    return GalleryCoreApi::error(ERROR_COLLISION);
	} else if (!$ret->getErrorCode() & ERROR_MISSING_OBJECT) {
	    return $ret;
	}

	$ret = GalleryCoreApi::addMapEntry('RssMap',
	    array('feedName' => $feedName,
		  'itemId' => $params['itemId'],
		  'ownerId' => $gallery->getActiveUserId(),
		  'params' => serialize($params)));
	if ($ret) {
	    return $ret;
	}

	return null;
    }

    /**
     * Update a feed
     *
     * @param string $feedName
     * @param array $params parameters
     * @return object GalleryStatus a status code
     */
    function updateFeed($feedName, $params) {
	$ret = GalleryCoreApi::updateMapEntry('RssMap',
	    array('feedName' => $feedName),
		  array('feedName' => $feedName,
			'itemId' => $params['itemId'],
			'params' => serialize($params)));
	if ($ret) {
	    return $ret;
	}

	return null;
    }

    /**
     * Delete a feed
     *
     * @param string $feedName
     * @return object GalleryStatus a status code
     */
    function deleteFeed($feedName) {
	$ret = GalleryCoreApi::removeMapEntry('RssMap', array('feedName' => $feedName));
	if ($ret) {
	    return $ret;
	}

	return null;
    }

    /**
     * Check whether configuring feeds is allowed.
     *
     * @param object GalleryItem $item
     * @param array $params module parameters
     * @param int $userId
     * @param boolean $assert (optional) if true, throw error if not allowed
     * @return array object GalleryStatus a status code
     *               boolean true if allowed
     */
    function canConfigureFeed($item, $params, $userId, $assert=false) {
	static $isAdmin;
	if (!isset($isAdmin[$userId])) {
	    list ($ret, $isAdmin[$userId]) = GalleryCoreApi::isUserInSiteAdminGroup($userId);
	    if ($ret) {
		return array($ret, null);
	    }
	}

	/*
	 * show the configure feeds link if:
	 *   - the user is the item owner or the admin
	 *   - configurable feeds are allowed
	 *   - and the allowed feeds are appropriate for this item type
	 */
	if ($params['allowConfigurableFeed'] == 1
		&& ($isAdmin[$userId] || $item->getOwnerId() == $userId)
		&& (
		    (GalleryUtilities::isA($item, 'GalleryAlbumItem')
		     && ($params['allowAlbums'] == 1
			 || $params['allowPhotos'] == 1
			 || $params['allowPhotosRecurse'] == 1
			 || $params['allowCommentsAlbum'] == 1))
		    || (GalleryUtilities::isA($item, 'GalleryDataItem') &&
			$params['allowCommentsPhoto'] == 1))) {
	    return array(null, true);
	}

	if ($assert) {
	    return array(GalleryCoreApi::error(ERROR_PERMISSION_DENIED), null);
	} else {
	    return array(null, false);
	}
    }
}
?>

Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists