Admindeleteresourcealbumaction.class.php:
<?php
include_once( PLOG_CLASS_PATH."class/action/admin/adminaction.class.php" );
include_once( PLOG_CLASS_PATH."class/view/admin/adminresourceslistview.class.php" );
include_once( PLOG_CLASS_PATH."class/gallery/dao/galleryresource.class.php" );
include_once( PLOG_CLASS_PATH."class/gallery/dao/galleryalbums.class.php" );
/**
* \ingroup Action
* @private
*
* Deletes a resource from the blog
*/
class AdminDeleteResourceAlbumAction extends AdminAction
{
var $_albumIds;
/**
* Constructor. If nothing else, it also has to call the constructor of the parent
* class, BlogAction with the same parameters
*/
function AdminDeleteResourceAlbumAction( $actionInfo, $request )
{
$this->AdminAction( $actionInfo, $request );
$this->registerFieldValidator( "albumId", new IntegerValidator());
$view = new AdminResourcesListView( $this->_blogInfo );
$view->setErrorMessage( $this->_locale->tr("error_no_resources_selected"));
$this->setValidationErrorView( $view );
}
/**
* carries out the specified album
*/
function perform()
{
// get the album id
$albumId = $this->_request->getValue( "albumId" );
// load the resource
$albums = new GalleryAlbums();
// create the view
$this->_view = new AdminResourcesListView( $this->_blogInfo );
// fetch the resource albumm first, to get some info about it
$album = $albums->getAlbum( $albumId, $this->_blogInfo->getId(), false );
if( !$album ) {
$this->_view->setErrorMessage( $this->_locale->tr("error_fetching_album" ));
$this->setCommonData();
return false;
}
// notify of the "pre" delete event
$this->notifyEvent( EVENT_PRE_ALBUM_DELETE, Array( "album" => &$album ));
//
// this album cannot be deleted if either:
// 1) we have resources under it
// 2) we have child albums under it
//
if( $album->getNumChildren() > 0 || $album->getNumResources() > 0 ) {
$this->_view->setErrorMessage( $this->_locale->pr("error_album_has_children", $album->getName()));
}
else {
// otherwise, we can go ahead and remove it
if( $albums->deleteAlbum( $albumId, $this->_blogInfo->getId())) {
$this->_view->setSuccessMessage( $this->_locale->pr("album_deleted_ok", $album->getName()));
$this->notifyEvent( EVENT_PRE_ALBUM_DELETE, Array( "album" => &$album ));
// clear the cache
CacheControl::resetBlogCache( $this->_blogInfo->getId(), false );
}
else {
$this->_view->setErrorMessage( $this->_locale->pr("error_deleting_album", $album->getName()));
}
}
// return the view
$this->setCommonData();
// better to return true if everything fine
return true;
}
}
?>
Other Blog Scripts: