Вход Регистрация
Файл: upload/module/photo/include/service/album/process.class.php
Строк: 182
<?php
/**
 * [PHPFOX_HEADER]
 */

defined('PHPFOX') or exit('NO DICE!');

/**
 * INSERTS, UPDATES & DELETES photo albums.
 * 
 * @copyright        [PHPFOX_COPYRIGHT]
 * @author          Raymond Benc
 * @package          Module_Photo
 * @version         $Id: process.class.php 4140 2012-05-02 09:51:52Z Miguel_Espinoza $
 */
class Photo_Service_Album_Process extends Phpfox_Service 
{
    
/**
     * Class constructor
     */    
    
public function __construct()
    {    
        
$this->_sTable Phpfox::getT('photo_album');
    }
    
    
/**
     * Add a new photo album.
     *
     * @param int $iUserId User ID.
     * @param array $aVals $_POST data array.
     * @param boolean $bIsUpdate True for INSERT, false for UPDATE.
     * 
     * @return int ID of the item we inserted/updated.
     */
    
public function add($aVals$bIsUpdate false)
    {        
        
// Get the parser object.
        
$oParseInput Phpfox::getLib('parse.input');
        
        
// Create the fields to insert
        
$aFields = array(
            
'name',
            
'module_id',
            
'group_id' => 'int',
            
'privacy' => 'int',
            
'privacy_comment' => 'int'    
        
);
        
        
// Create the fields to insert
        
$aFieldsInfo = array(
            
'description'        
        
);                    

        
Phpfox::getService('ban')->checkAutomaticBan($aVals['name'] . ' ' $aVals['description']);
        
// Clean album name
        
$aVals['name'] = $oParseInput->clean($aVals['name'], 255);        
        
        
// Prepare description.
        
if (!empty($aVals['description']))
        {
            
$aVals['description'] = $oParseInput->clean($aVals['description'], 255);
        }            
        
        if (
$bIsUpdate)
        {
            
$aAlbum $this->database()->select('user_id')
                ->
from(Phpfox::getT('photo_album'))
                ->
where('album_id = ' . (int) $aVals['album_id'])
                ->
execute('getSlaveRow');
            
            
// Insert the data into the database.
            
$this->database()->process($aFields$aVals)->update($this->_sTable'album_id = ' $aVals['album_id']);            
                        
            
// Insert album info.            
            
$this->database()->process($aFieldsInfo$aVals)->update(Phpfox::getT('photo_album_info'), 'album_id = ' $aVals['album_id']);    
            
            
$iId $aVals['album_id'];    
            
            
$this->setPrivacy($iId$aVals['privacy'], $aVals['privacy_comment']);
            
            (
Phpfox::isModule('feed') ? Phpfox::getService('feed.process')->update('photo_album'$iId$aVals['privacy'], $aVals['privacy_comment'], 0$aAlbum['user_id']) : null);
            
            if (
Phpfox::isModule('privacy'))
            {
                if (isset(
$aVals['privacy']) && $aVals['privacy'] == '4')
                {
                    
Phpfox::getService('privacy.process')->update('photo_album'$iId, (isset($aVals['privacy_list']) ? $aVals['privacy_list'] : array()));
                }
                else 
                {
                    
Phpfox::getService('privacy.process')->delete('photo_album'$iId);
                }            
            }
        }
        else 
        {
            
$aFields['user_id'] = 'int';
            
$aFields[] = 'time_stamp';
            
            
// Add the users ID to the fields array
            
$aVals['user_id'] = Phpfox::getUserId();            
            
            
// Add a time_stamp
            
$aVals['time_stamp'] = PHPFOX_TIME;            
            
            
// Insert the data into the database.
            
$iId $this->database()->process($aFields$aVals)->insert($this->_sTable);
            
            
$aFieldsInfo['album_id'] = 'int';
            
            
$aVals['album_id'] = $iId;            
            
            
// Insert album info.            
            
$this->database()->process($aFieldsInfo$aVals)->insert(Phpfox::getT('photo_album_info'));
            
            if (
Phpfox::isModule('privacy'))
            {
                if (isset(
$aVals['privacy']) && $aVals['privacy'] == '4')
                {
                    
Phpfox::getService('privacy.process')->add('photo_album'$iId, (isset($aVals['privacy_list']) ? $aVals['privacy_list'] : array()));            
                }
            }
        }
        
        return 
$iId;    
    }
    
    public function 
delete($iAlbumId)
    {
        
$aAlbum $this->database()->select('album_id, user_id')
            ->
from($this->_sTable)
            ->
where('album_id = ' . (int) $iAlbumId)
            ->
execute('getRow');
            
        if (!isset(
$aAlbum['album_id']))
        {
            return 
Phpfox_Error::set(Phpfox::getPhrase('photo.not_a_valid_photo_album_to_delete'));
        }
            
        if (!
Phpfox::getService('user.auth')->hasAccess('photo_album''album_id'$iAlbumId'photo.can_delete_own_photo_album''photo.can_delete_other_photo_albums'$aAlbum['user_id']))
        {
            return 
Phpfox_Error::set(Phpfox::getPhrase('photo.you_do_not_have_sufficient_permission_to_delete_this_photo_album'));
        }            
        
        (
Phpfox::isModule('feed') ? Phpfox::getService('feed.process')->delete('photo_album'$aAlbum['album_id']) : null);
        
        
$aPhotos $this->database()->select('photo_id')
            ->
from(Phpfox::getT('photo'))
            ->
where('album_id = ' $aAlbum['album_id'])
            ->
execute('getRows');
            
        foreach (
$aPhotos as $aPhoto)
        {
            
Phpfox::getService('photo.process')->delete($aPhoto['photo_id']);
        }
        
        ((
$sPlugin Phpfox_Plugin::get('photo.service_album_process_delete__1')) ? eval($sPlugin) : false);
        
        
$this->database()->delete($this->_sTable'album_id = ' $aAlbum['album_id']);
        
$this->database()->delete(Phpfox::getT('photo_album_info'), 'album_id = ' $aAlbum['album_id']);
        
        return 
true;
    }
    
    public function 
update($iAlbumId$aVals)
    {
        
$aVals['album_id'] = $iAlbumId;
        
        return 
$this->add($aValstrue);
    }
    
    public function 
setPrivacy($iAlbumId$iPrivacy null$iPrivacyComment null)
    {
        if (
$iPrivacy === null)
        {
            
$aAlbum $this->database()->select('privacy, privacy_comment')
                ->
from($this->_sTable)
                ->
where('album_id = ' . (int) $iAlbumId)
                ->
execute('getSlaveRow');
                
            
$iPrivacy $aAlbum['privacy'];
            
$iPrivacyComment $aAlbum['privacy_comment'];
        }
        
        
$this->database()->update(Phpfox::getT('photo'), array('privacy' => (int) $iPrivacy'privacy_comment' => (int) $iPrivacyComment), 'album_id = ' . (int) $iAlbumId);
        
        if (
$iPrivacy == '4')
        {
            
$aList = array();
            
$aPrivacyLists $this->database()->select('*')
                ->
from(Phpfox::getT('privacy'))
                ->
where('module_id = 'photo_album' AND item_id = ' . (int) $iAlbumId)
                ->
execute('getSlaveRows');

            foreach (
$aPrivacyLists as $aPrivacyList)
            {
                
$aList[] = $aPrivacyList['friend_list_id'];
            }
        }
        
        
$aPhotos $this->database()->select('photo_id')
            ->
from(Phpfox::getT('photo'))
            ->
where('album_id = ' . (int) $iAlbumId)
            ->
execute('getSlaveRows');
        foreach (
$aPhotos as $aPhoto)
        {
            if (
Phpfox::isModule('feed'))
            {
                
Phpfox::getService('feed.process')->update('photo'$aPhoto['photo_id'], $iPrivacy$iPrivacyComment);
            }
            if (
Phpfox::isModule('privacy'))
            {
                if (
$iPrivacy == '4')
                {
                    
Phpfox::getService('privacy.process')->update('photo'$aPhoto['photo_id'], $aList);
                }
                else 
                {
                    
Phpfox::getService('privacy.process')->delete('photo'$aPhoto['photo_id']);
                }            
            }
        }

        return 
true;
    }
    
    public function 
hasCover($iAlbumId)
    {
        return 
$this->database()->select('COUNT(*)')
            ->
from(Phpfox::getT('photo'))
            ->
where('album_id = ' . (int) $iAlbumId ' AND is_cover = 1')
            ->
execute('getField');
    }
    
    public function 
setCover($iAlbumId$iPhotoId)
    {
        
$this->database()->update(Phpfox::getT('photo'), array('is_cover' => 0), 'album_id = ' . (int) $iAlbumId);
        
$this->database()->update(Phpfox::getT('photo'), array('is_cover' => 1), 'photo_id = ' . (int) $iPhotoId);
        
        return 
true;
    }
    
    
/**
     * Update the album counters.
     *
     * @param int $iId ID# of the album
     * @param string $sCounter Field we plan to update
     * @param boolean $bMinus True increases to the count and false decreases the count
     * @param mixed $sValue Pass a null to use 1 or pass an int value to define how many should we plus/minus
     */
    
public function updateCounter($iId$sCounter$bMinus false$sValue null)
    {        
        
$iTotal $this->database()->select('COUNT(*)')
            ->
from(Phpfox::getT('photo'))
            ->
where('album_id = ' . (int) $iId ' AND view_id = 0')
            ->
execute('getField');
        
        
$this->database()->update($this->_sTable, array($sCounter => $iTotal), 'album_id = ' . (int) $iId);
    }

    public function 
updateTitle($iAlbumId$sTitle)
    {
        
Phpfox::getService('ban')->checkAutomaticBan($sTitle);
        
$this->database()->update($this->_sTable, array('name' => Phpfox::getLib('parse.input')->clean($sTitle255)), 'album_id = ' . (int) $iAlbumId);
        
        return 
true;
    }
    
    
/**
     * If a call is made to an unknown method attempt to connect
     * it to a specific plug-in with the same name thus allowing 
     * plug-in developers the ability to extend classes.
     *
     * @param string $sMethod is the name of the method
     * @param array $aArguments is the array of arguments of being passed
     */
    
public function __call($sMethod$aArguments)
    {
        
/**
         * Check if such a plug-in exists and if it does call it.
         */
        
if ($sPlugin Phpfox_Plugin::get('photo.service_album_process__call'))
        {
            return eval(
$sPlugin);
        }
            
        
/**
         * No method or plug-in found we must throw a error.
         */
        
Phpfox_Error::trigger('Call to undefined method ' __CLASS__ '::' $sMethod '()'E_USER_ERROR);
    }    
}

?>
Онлайн: 1
Реклама