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

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

/**
 * 
 * 
 * @copyright        [PHPFOX_COPYRIGHT]
 * @author          Raymond Benc
 * @package         Phpfox_Service
 * @version         $Id: process.class.php 4143 2012-05-02 09:56:53Z Miguel_Espinoza $
 */
class Marketplace_Service_Process extends Phpfox_Service 
{
    private 
$_bHasImage false;
    
    private 
$_aCategories = array();
    
    
/**
     * Class constructor
     */    
    
public function __construct()
    {    
        
$this->_sTable Phpfox::getT('marketplace');
    }
    
    public function 
add($aVals)
    {
        
// Plugin call
        
if ($sPlugin Phpfox_Plugin::get('marketplace.service_process_add__start'))
        {
            eval(
$sPlugin);
        }
        
        if (!
$this->_verify($aVals))
        {
            return 
false;
        }
        
        if (!isset(
$aVals['privacy']))
        {
            
$aVals['privacy'] = 0;
        }
        
Phpfox::getService('ban')->checkAutomaticBan($aVals);
        
        
$oParseInput Phpfox::getLib('parse.input');
        
        
$aSql = array(
            
'view_id' => (Phpfox::getUserParam('marketplace.listing_approve') ? '1' '0'),
            
'privacy' => (isset($aVals['privacy']) ? $aVals['privacy'] : '0'),
            
'privacy_comment' => (isset($aVals['privacy_comment']) ? $aVals['privacy_comment'] : '0'),            
            
'group_id' => 0,
            
'user_id' => Phpfox::getUserId(),
            
'title' => $oParseInput->clean($aVals['title'], 255),
            
'currency_id' => $aVals['currency_id'],
            
'price' => $this->_price($aVals['price']),
            
'country_iso' => $aVals['country_iso'],
            
'country_child_id' => (isset($aVals['country_child_id']) ? (int) $aVals['country_child_id'] : 0),
            
'postal_code' => (empty($aVals['postal_code']) ? null Phpfox::getLib('parse.input')->clean($aVals['postal_code'], 20)),
            
'city' => (empty($aVals['city']) ? null $oParseInput->clean($aVals['city'], 255)),
            
'time_stamp' => PHPFOX_TIME,
            
'is_sell' => (isset($aVals['is_sell']) ? (int) $aVals['is_sell'] : 0),
            
'auto_sell' => (isset($aVals['auto_sell']) ? (int) $aVals['auto_sell'] : 0),
            
'mini_description' => (empty($aVals['mini_description']) ? null $oParseInput->clean($aVals['mini_description'], 255))
        );
        
        
$iId $this->database()->insert($this->_sTable$aSql);
        
        ((
$sPlugin Phpfox_Plugin::get('marketplace.service_process_add')) ? eval($sPlugin) : false);
        
        if (!
$iId)
        {
            return 
false;
        }
        
        
$this->database()->insert(Phpfox::getT('marketplace_text'), array(
                
'listing_id' => $iId,
                
'description' => (empty($aVals['description']) ? null $oParseInput->clean($aVals['description'])),
                
'description_parsed' => (empty($aVals['description']) ? null $oParseInput->prepare($aVals['description']))
            )
        );        
        
        foreach (
$this->_aCategories as $iCategoryId)
        {
            
$this->database()->insert(Phpfox::getT('marketplace_category_data'), array('listing_id' => $iId'category_id' => $iCategoryId));
        }
        
        if (!
Phpfox::getUserParam('marketplace.listing_approve'))
        {
            (
Phpfox::isModule('feed') ? Phpfox::getService('feed.process')->add('marketplace'$iId$aVals['privacy'], (isset($aVals['privacy_comment']) ? (int) $aVals['privacy_comment'] : 0)) : null);
            
            
Phpfox::getService('user.activity')->update(Phpfox::getUserId(), 'marketplace');
        }
        
        if (
$aVals['privacy'] == '4')
        {
            
Phpfox::getService('privacy.process')->add('marketplace'$iId, (isset($aVals['privacy_list']) ? $aVals['privacy_list'] : array()));            
        }            

        
//Plugin call
        
if ($sPlugin Phpfox_Plugin::get('marketplace.service_process_add__end'))
        {
            eval(
$sPlugin);
        }
        
        return 
$iId;
    }
    
    public function 
update($iId$aVals)
    {
        if (!
$this->_verify($aVals))
        {
            return 
false;
        }        
        
        
$oParseInput Phpfox::getLib('parse.input');
        
Phpfox::getService('ban')->checkAutomaticBan($aVals['title'] . ' ' $aVals['description']);
        
        if (empty(
$aVals['privacy']))
        {
            
$aVals['privacy'] = 0;
        }
        if (empty(
$aVals['privacy_comment']))
        {
            
$aVals['privacy_comment'] = 0;
        }            
        
        
$aSql = array(
            
'privacy' => (isset($aVals['privacy']) ? $aVals['privacy'] : '0'),
            
'privacy_comment' => (isset($aVals['privacy_comment']) ? $aVals['privacy_comment'] : '0'),        
            
'title' => $oParseInput->clean($aVals['title'], 255),            
            
'currency_id' => $aVals['currency_id'],
            
'price' => $this->_price($aVals['price']),
            
'country_iso' => $aVals['country_iso'],
            
'country_child_id' => (isset($aVals['country_child_id']) ? (int) $aVals['country_child_id'] : 0),
            
'postal_code' => (empty($aVals['postal_code']) ? null Phpfox::getLib('parse.input')->clean($aVals['postal_code'], 20)),
            
'city' => (empty($aVals['city']) ? null $oParseInput->clean($aVals['city'], 255)),
            
'is_sell' => (isset($aVals['is_sell']) ? (int) $aVals['is_sell'] : 0),
            
'auto_sell' => (isset($aVals['auto_sell']) ? (int) $aVals['auto_sell'] : 0),
            
'mini_description' => (empty($aVals['mini_description']) ? null $oParseInput->clean($aVals['mini_description'], 255))
        );
        
        if (isset(
$aVals['view_id']) && ($aVals['view_id'] == '0' || $aVals['view_id'] == '2'))
        {
            
$aSql['view_id'] = $aVals['view_id'];    
        }        
        
        
$this->database()->update($this->_sTable$aSql'listing_id = ' . (int) $iId);
        
        
$this->database()->update(Phpfox::getT('marketplace_text'), array(                
                
'description' => (empty($aVals['description']) ? null $oParseInput->clean($aVals['description'])),
                
'description_parsed' => (empty($aVals['description']) ? null $oParseInput->prepare($aVals['description']))
            ), 
'listing_id = ' . (int) $iId
        
);        
        
        ((
$sPlugin Phpfox_Plugin::get('marketplace.service_process_update')) ? eval($sPlugin) : false);
        
        
$this->database()->delete(Phpfox::getT('marketplace_category_data'), 'listing_id = ' . (int) $iId);
        foreach (
$this->_aCategories as $iCategoryId)
        {
            
$this->database()->insert(Phpfox::getT('marketplace_category_data'), array('listing_id' => $iId'category_id' => $iCategoryId));
        }
        
        
$aListing $this->database()->select('*')
            ->
from($this->_sTable)
            ->
where('listing_id = ' . (int) $iId)
            ->
execute('getSlaveRow');        
        
        if (
$this->_bHasImage)
        {            
            
$oImage Phpfox::getLib('image');
            
$oFile Phpfox::getLib('file');
            
            
$aSizes = array(50120200400);
            
            
$iFileSizes 0;
            foreach (
$_FILES['image']['error'] as $iKey => $sError)
            {
                if (
$sError == UPLOAD_ERR_OK
                {            
                    if (
$aImage $oFile->load('image[' $iKey ']', array(
                                
'jpg',
                                
'gif',
                                
'png'
                            
), (Phpfox::getUserParam('marketplace.max_upload_size_listing') === null : (Phpfox::getUserParam('marketplace.max_upload_size_listing') / 1024))
                        )
                    )
                    {                    
                        
$sFileName Phpfox::getLib('file')->upload('image[' $iKey ']'Phpfox::getParam('marketplace.dir_image'), $iId);
                        
                        
$iFileSizes += filesize(Phpfox::getParam('marketplace.dir_image') . sprintf($sFileName''));
                        
                        
$this->database()->insert(Phpfox::getT('marketplace_image'), array('listing_id' => $iId'image_path' => $sFileName'server_id' => Phpfox::getLib('request')->getServer('PHPFOX_SERVER_ID')));        
            
                        foreach (
$aSizes as $iSize)
                        {                        
                            
$oImage->createThumbnail(Phpfox::getParam('marketplace.dir_image') . sprintf($sFileName''), Phpfox::getParam('marketplace.dir_image') . sprintf($sFileName'_' $iSize), $iSize$iSize);    
                            
$oImage->createThumbnail(Phpfox::getParam('marketplace.dir_image') . sprintf($sFileName''), Phpfox::getParam('marketplace.dir_image') . sprintf($sFileName'_' $iSize '_square'), $iSize$iSizefalse);                        
                            
                            
$iFileSizes += filesize(Phpfox::getParam('marketplace.dir_image') . sprintf($sFileName'_' $iSize));            
                        }                    
                    }
                }
            }
            
            if (
$iFileSizes === 0)
            {
                return 
false;
            }
            
            
$this->database()->update($this->_sTable, array('image_path' => $sFileName'server_id' => Phpfox::getLib('request')->getServer('PHPFOX_SERVER_ID')), 'listing_id = ' $iId);
            
            ((
$sPlugin Phpfox_Plugin::get('marketplace.service_process_update__1')) ? eval($sPlugin) : false);
            
            
// Update user space usage
            
Phpfox::getService('user.space')->update(Phpfox::getUserId(), 'marketplace'$iFileSizes);            
        }
        
        if (isset(
$aVals['emails']) || isset($aVals['invite']))
        {
            
$aInvites $this->database()->select('invited_user_id, invited_email')
                ->
from(Phpfox::getT('marketplace_invite'))
                ->
where('listing_id = ' . (int) $iId)
                ->
execute('getRows');
            
$aInvited = array();
            foreach (
$aInvites as $aInvite)
            {
                
$aInvited[(empty($aInvite['invited_email']) ? 'user' 'email')][(empty($aInvite['invited_email']) ? $aInvite['invited_user_id'] : $aInvite['invited_email'])] = true;
            }            
        }

        
        if (isset(
$aVals['emails']))
        {

            
// if (strpos($aVals['emails'], ','))
            
{
                
$aEmails explode(','$aVals['emails']);
                
$aCachedEmails = array();
                
                foreach (
$aEmails as $sEmail)
                {
                    
$sEmail trim($sEmail);
                    if (!
Phpfox::getLib('mail')->checkEmail($sEmail))
                    {
                        continue;
                    }
                    
                    if (isset(
$aInvited['email'][$sEmail]))
                    {
                        continue;
                    }
                    
                    
$sLink Phpfox::getLib('url')->permalink('marketplace'$aListing['listing_id'], $aListing['title']);
                    
$sMessage Phpfox::getPhrase('marketplace.full_name_invited_you_to_view_the_marketplace_listing_title', array(
                            
'full_name' => Phpfox::getUserBy('full_name'),
                            
'title' => $oParseInput->clean($aVals['title'], 255),
                            
'link' => $sLink
                        
)
                    );
                    if (!empty(
$aVals['personal_message']))
                    {
                        
$sMessage .= "nn" Phpfox::getPhrase('marketplace.full_name_added_the_following_personal_message', array('full_name' => Phpfox::getUserBy('full_name'))) . ":n";
                        
$sMessage .= $aVals['personal_message'];
                    }

                    
$oMail Phpfox::getLib('mail');
                    if (isset(
$aVals['invite_from']) && $aVals['invite_from'] == 1)
                    {
                        
$oMail->fromEmail(Phpfox::getUserBy('email'))
                                ->
fromName(Phpfox::getUserBy('full_name'));
                    }
                    
$bSent $oMail->to($sEmail)
                        ->
subject(array('marketplace.full_name_invited_you_to_view_the_listing_title', array('full_name' => Phpfox::getUserBy('full_name'), 'title' => $oParseInput->clean($aVals['title'], 255))))
                        ->
message($sMessage)
                        ->
send();
                        
                    if (
$bSent)
                    {
                        
$this->_aInvited[] = array('email' => $sEmail);
                        
                        
$aCachedEmails[$sEmail] = true;
                        
                        
$this->database()->insert(Phpfox::getT('marketplace_invite'), array(
                                
'listing_id' => $iId,
                                
'type_id' => 1,
                                
'user_id' => Phpfox::getUserId(),
                                
'invited_email' => $sEmail,
                                
'time_stamp' => PHPFOX_TIME
                            
)
                        );
                    }
                }
            }
        }
        if (isset(
$aVals['invite']) && is_array($aVals['invite']))
        {
            
$sUserIds '';
            foreach (
$aVals['invite'] as $iUserId)
            {
                if (!
is_numeric($iUserId))
                {
                    continue;
                }
                
$sUserIds .= $iUserId ',';
            }
            
$sUserIds rtrim($sUserIds',');
            
            
$aUsers $this->database()->select('user_id, email, language_id, full_name')
                ->
from(Phpfox::getT('user'))
                ->
where('user_id IN(' $sUserIds ')')
                ->
execute('getSlaveRows');
                
            foreach (
$aUsers as $aUser)
            {
                if (isset(
$aCachedEmails[$aUser['email']]))
                {
                    continue;
                }    
                
                if (isset(
$aInvited['user'][$aUser['user_id']]))
                {
                    continue;
                }
                
                
$sLink Phpfox::getLib('url')->permalink('marketplace'$aListing['listing_id'], $aListing['title']);
                
$sMessage Phpfox::getPhrase('marketplace.full_name_invited_you_to_view_the_marketplace_listing_title', array(
                        
'full_name' => Phpfox::getUserBy('full_name'),
                        
'title' => $oParseInput->clean($aVals['title'], 255),
                        
'link' => $sLink
                    
), falsenull$aUser['language_id']
                );
                if (!empty(
$aVals['personal_message']))
                {
                    
$sMessage .= "nn" Phpfox::getPhrase('marketplace.full_name_added_the_following_personal_message', array('full_name' => Phpfox::getUserBy('full_name')), falsenull$aUser['language_id']);
                    
$sMessage .= $aVals['personal_message'];
                }
                
                
$bSent Phpfox::getLib('mail')->to($aUser['user_id'])                        
                    ->
subject(array('marketplace.full_name_invited_you_to_view_the_listing_title', array('full_name' => Phpfox::getUserBy('full_name'), 'title' => $oParseInput->clean($aVals['title'], 255))))
                    ->
message($sMessage)
                    ->
notification('marketplace.new_invite')
                    ->
send();
                        
                if (
$bSent)
                {
                    
$this->_aInvited[] = array('user' => $aUser['full_name']);    
                    
                    
$this->database()->insert(Phpfox::getT('marketplace_invite'), array(
                            
'listing_id' => $iId,                                
                            
'user_id' => Phpfox::getUserId(),
                            
'invited_user_id' => $aUser['user_id'],
                            
'time_stamp' => PHPFOX_TIME
                        
)
                    );
                    
                    (
Phpfox::isModule('request') ? Phpfox::getService('request.process')->add('marketplace_invite'$iId$aUser['user_id']) : null);
                }
            }
        }        
        
        (
Phpfox::isModule('feed') ? Phpfox::getService('feed.process')->update('marketplace'$iId$aVals['privacy'], $aVals['privacy_comment'], 0$aListing['user_id']) : null);
        
        if (
Phpfox::isModule('privacy'))
        {
            if (
$aVals['privacy'] == '4')
            {
                
Phpfox::getService('privacy.process')->update('marketplace'$iId, (isset($aVals['privacy_list']) ? $aVals['privacy_list'] : array()));
            }
            else 
            {
                
Phpfox::getService('privacy.process')->delete('marketplace'$iId);
            }        
        }
        
        return 
true;
    }    
    
    public function 
delete($iId, &$aListing null)
    {
        if (
$aListing === null)
        {
            
$aListing $this->database()->select('user_id, image_path')
                ->
from($this->_sTable)
                ->
where('listing_id = ' . (int) $iId)
                ->
execute('getRow');
                
            if (!isset(
$aListing['user_id']))
            {
                return 
Phpfox_Error::set(Phpfox::getPhrase('marketplace.unable_to_find_the_listing_you_want_to_delete'));
            }
            
            if (!
Phpfox::getService('user.auth')->hasAccess('listing''listing_id'$iId'marketplace.can_delete_own_listing''marketplace.can_delete_other_listings'$aListing['user_id']))
            {
                return 
Phpfox_Error::set(Phpfox::getPhrase('marketplace.you_do_not_have_sufficient_permission_to_delete_this_listing'));
            }
        }
        
        
$iFileSizes 0;
        
$aImages $this->database()->select('image_id, image_path, server_id')
            ->
from(Phpfox::getT('marketplace_image'))
            ->
where('listing_id = ' $iId)
            ->
execute('getRows');
        foreach (
$aImages as $aImage)
        {            
            
$aSizes = array(''50120200400);
            foreach (
$aSizes as $iSize)
            {
                
$sImage Phpfox::getParam('marketplace.dir_image') . sprintf($aListing['image_path'], (empty($iSize) ? '' '_' ) . $iSize);
                if (
file_exists($sImage))
                {
                    
$iFileSizes += filesize($sImage);
                    
                    @
unlink($sImage);
                }
            }
            
            
$this->database()->delete(Phpfox::getT('marketplace_image'), 'image_id = ' $aImage['image_id']);
        }
        
        if (
$iFileSizes 0)
        {
            
Phpfox::getService('user.space')->update($aListing['user_id'], 'marketplace'$iFileSizes'-');
        }            
        
        (
Phpfox::isModule('comment') ? Phpfox::getService('comment.process')->deleteForItem(null$iId'marketplace') : null);        
        (
Phpfox::isModule('feed') ? Phpfox::getService('feed.process')->delete('marketplace'$iId) : null);
        (
Phpfox::isModule('feed') ? Phpfox::getService('feed.process')->delete('comment_marketplace'$iId) : null);
        
        
$this->database()->delete($this->_sTable'listing_id = ' . (int) $iId);
        
$this->database()->delete(Phpfox::getT('marketplace_text'), 'listing_id = ' . (int) $iId);
        
$this->database()->delete(Phpfox::getT('marketplace_category_data'), 'listing_id = ' . (int) $iId);
        
        
Phpfox::getService('user.activity')->update($aListing['user_id'], 'marketplace''-');
        
        
$this->cache()->remove('marketplace_sponsored');
        
        ((
$sPlugin Phpfox_Plugin::get('marketplace.service_process_delete__1')) ? eval($sPlugin) : false);
        return 
true;
    }
    
    public function 
setDefault($iImageId)
    {
        
$aListing $this->database()->select('mi.image_path, mi.server_id, m.user_id, m.listing_id')
            ->
from(Phpfox::getT('marketplace_image'), 'mi')
            ->
join($this->_sTable'm''m.listing_id = mi.listing_id')
            ->
where('mi.image_id = ' . (int) $iImageId)
            ->
execute('getSlaveRow');
            
        if (!isset(
$aListing['user_id']))
        {
            return 
Phpfox_Error::set('Unable to find the image.');
        }    

        if (!
Phpfox::getService('user.auth')->hasAccess('listing''listing_id'$aListing['listing_id'], 'marketplace.can_delete_own_listing''marketplace.can_delete_other_listings'$aListing['user_id']))
        {
            return 
Phpfox_Error::set(Phpfox::getPhrase('marketplace.you_do_not_have_sufficient_permission_to_modify_this_listing'));
        }
        
        
$this->database()->update($this->_sTable, array('image_path' => $aListing['image_path'], 'server_id' => $aListing['server_id']), 'listing_id = ' $aListing['listing_id']);
        
        ((
$sPlugin Phpfox_Plugin::get('marketplace.service_process_setdefault__1')) ? eval($sPlugin) : false);
        
        return 
true;
    }
    
    public function 
deleteImage($iImageId)
    {
        
$aListing $this->database()->select('mi.image_id, mi.image_path, mi.server_id, m.user_id, m.listing_id, m.image_path AS default_image_path')
            ->
from(Phpfox::getT('marketplace_image'), 'mi')
            ->
join($this->_sTable'm''m.listing_id = mi.listing_id')
            ->
where('mi.image_id = ' . (int) $iImageId)
            ->
execute('getSlaveRow');
            
        if (!isset(
$aListing['user_id']))
        {
            return 
Phpfox_Error::set('Unable to find the image.');
        }    

        if (!
Phpfox::getService('user.auth')->hasAccess('listing''listing_id'$aListing['listing_id'], 'marketplace.can_delete_own_listing''marketplace.can_delete_other_listings'$aListing['user_id']))
        {
            return 
Phpfox_Error::set(Phpfox::getPhrase('marketplace.you_do_not_have_sufficient_permission_to_modify_this_listing'));
        }            
        
        if (
$aListing['default_image_path'] == $aListing['image_path'])
        {
            
$aImage $this->database()->select('image_path, server_id')
                ->
from(Phpfox::getT('marketplace_image'))
                ->
where('listing_id = ' $aListing['listing_id'])
                ->
execute('getSlaveRow');
            
            
$this->database()->update($this->_sTable, array('image_path' => (isset($aImage['image_path']) ? $aImage['image_path'] : null), 'server_id' => (isset($aImage['server_id']) ? $aImage['server_id'] : null)), 'listing_id = ' $aListing['listing_id']);            
        }
        
        
$iFileSizes 0;
        
$aSizes = array(''50120200400);
        foreach (
$aSizes as $iSize)
        {
            
$sImage Phpfox::getParam('marketplace.dir_image') . sprintf($aListing['image_path'], (empty($iSize) ? '' '_' ) . $iSize);
            if (
file_exists($sImage))
            {
                
$iFileSizes += filesize($sImage);
                
                @
unlink($sImage);
            }
        }
        
        if (
$iFileSizes 0)
        {
            
Phpfox::getService('user.space')->update($aListing['user_id'], 'marketplace'$iFileSizes'-');
        }        
        
        
$this->database()->delete(Phpfox::getT('marketplace_image'), 'image_id = ' $aListing['image_id']);
        
        ((
$sPlugin Phpfox_Plugin::get('marketplace.service_process_deleteimage__1')) ? eval($sPlugin) : false);
        
        return 
true;
    }

    public function 
setVisit($iId$iUserId)
    {
        
$this->database()->update(Phpfox::getT('marketplace_invite'), array('visited_id' => 1), 'listing_id = ' . (int) $iId ' AND invited_user_id = ' . (int) $iUserId);
        
        (
Phpfox::isModule('request') ? Phpfox::getService('request.process')->delete('marketplace_invite'$iId$iUserId) : null);
    }
    
    public function 
feature($iId$iType)
    {
        
Phpfox::isUser(true);
        
Phpfox::getUserParam('marketplace.can_feature_listings'true);
        
        
$this->database()->update($this->_sTable, array('is_featured' => ($iType '1' '0')), 'listing_id = ' . (int) $iId);
        
        
$this->cache()->remove('marketplace_featured');
        
        return 
true;
    }    

    public function 
sponsor($iId$iType)
    {
        if (!
Phpfox::getUserParam('marketplace.can_sponsor_marketplace') && !Phpfox::getUserParam('marketplace.can_purchase_sponsor') && !defined('PHPFOX_API_CALLBACK'))
        {
            return 
Phpfox_Error::set('Hack attempt?');
        }
        
$iType = (int)$iType;
        
$iId = (int)$iId;
        if (
$iType != && $iType != 1)
        {
            return 
false;
        }
        
$this->database()->update($this->_sTable, array('is_featured' => 0'is_sponsor' => $iType),
            
'listing_id = ' $iId
        
);

        if (
$sPlugin Phpfox_Plugin::get('marketplace.service_sponsor__end')){eval($sPlugin);}
        
$this->cache()->remove('marketplace_sponsored');
        return 
true;
    }

    public function 
approve($iId)
    {
        
Phpfox::isUser(true);
        
Phpfox::getUserParam('marketplace.can_approve_listings'true);
        
        
$aListing $this->database()->select('v.*, ' Phpfox::getUserField())
            ->
from($this->_sTable'v')
            ->
join(Phpfox::getT('user'), 'u''u.user_id = v.user_id')
            ->
where('v.listing_id = ' . (int) $iId)
            ->
execute('getRow');
            
        if (!isset(
$aListing['listing_id']))
        {
            return 
Phpfox_Error::set(Phpfox::getPhrase('marketplace.unable_to_find_the_listing_you_want_to_approve'));
        }
        
        
$this->database()->update($this->_sTable, array('view_id' => '0''time_stamp' => PHPFOX_TIME), 'listing_id = ' $aListing['listing_id']);
        
        if (
Phpfox::isModule('notification'))
        {
            
Phpfox::getService('notification.process')->add('marketplace_approved'$aListing['listing_id'], $aListing['user_id']);
        }
        
        
// Send the user an email
        
$sLink Phpfox::getLib('url')->permalink('marketplace' $aListing['listing_id'], $aListing['title']);
        
        
$bAddFeed true;
        
        ((
$sPlugin Phpfox_Plugin::get('marketplace.service_process_approve__1')) ? eval($sPlugin) : false);
        
        
Phpfox::getLib('mail')->to($aListing['user_id'])
            ->
subject(array('marketplace.your_listing_has_been_approved_on_site_title', array('site_title' => Phpfox::getParam('core.site_title'))))
            ->
message(array('marketplace.your_listing_has_been_approved_on_site_title_message', array('site_title' => Phpfox::getParam('core.site_title'), 'link' => $sLink)))
            ->
notification('marketplace.listing_is_approved')
            ->
send();        
            
        (
Phpfox::isModule('feed') && $bAddFeed Phpfox::getService('feed.process')->add('marketplace'$iId$aListing['privacy'], (isset($aListing['privacy_comment']) ? (int) $aListing['privacy_comment'] : 0), 0$aListing['user_id']) : null);                

        return 
true;    
    }
    
    public function 
addInvoice($iId$sCurrency$sCost)
    {
        
$iInvoiceId $this->database()->insert(Phpfox::getT('marketplace_invoice'), array(
                
'listing_id' => $iId,
                
'user_id' => Phpfox::getUserId(),
                
'currency_id' => $sCurrency,
                
'price' => $sCost,
                
'time_stamp' => PHPFOX_TIME
            
)
        );

        return 
$iInvoiceId;    
    }
        
    
/**
     * 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('marketplace.service_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);
    }
    
    private function 
_price($sPrice)
    {
        if (empty(
$sPrice))
        {
            return 
'0.00';
        }
        
        
$sPrice str_replace(array(' '','), ''$sPrice);
        
$aParts explode('.'$sPrice);        
        if (
count($aParts) > 2)
        {
            
$iCnt 0;
            
$sPrice '';
            foreach (
$aParts as $sPart)
            {
                
$iCnt++;
                
$sPrice .= (count($aParts) == $iCnt '.' '') . $sPart;
            }
        }        
        
        return 
$sPrice;
    }

    private function 
_verify(&$aVals)
    {
        if (!isset(
$aVals['category']))
        {
            return 
Phpfox_Error::set(Phpfox::getPhrase('marketplace.provide_a_category_this_listing_will_belong_to'));
        }
        
        foreach (
$aVals['category'] as $iCategory)
        {        
            if (empty(
$iCategory))
            {
                continue;
            }
            
            if (!
is_numeric($iCategory))
            {
                continue;
            }            
            
            
$this->_aCategories[] = $iCategory;
        }
        
        if (!
count($this->_aCategories))
        {
            return 
Phpfox_Error::set(Phpfox::getPhrase('marketplace.provide_a_category_this_listing_will_belong_to'));
        }    
                
        if (isset(
$_FILES['image']))
        {
            foreach (
$_FILES['image']['error'] as $iKey => $sError)
            {
                if (
$sError == UPLOAD_ERR_OK
                {            
                    
$aImage Phpfox::getLib('file')->load('image[' $iKey ']', array(
                            
'jpg',
                            
'gif',
                            
'png'
                        
)
                    );
                    
                    if (
$aImage === false)
                    {
                        continue;
                    }
                    
                    
$this->_bHasImage true;
                }
            }
        }    

        return 
true;    
    }
}

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