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

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

/**
 * 
 * 
 * @copyright        [PHPFOX_COPYRIGHT]
 * @author          Raymond Benc
 * @package         Phpfox_Service
 * @version         $Id: marketplace.class.php 4242 2012-06-10 17:07:21Z Raymond_Benc $
 */
class Marketplace_Service_Marketplace extends Phpfox_Service 
{
    
/**
     * Class constructor
     */    
    
public function __construct()
    {    
        
$this->_sTable Phpfox::getT('marketplace');
    }    
    
    public function 
getListing($iId)
    {
        ((
$sPlugin Phpfox_Plugin::get('marketplace.service_marketplace_getlisting')) ? eval($sPlugin) : false);
        
        if (
Phpfox::isModule('like'))
        {
            
$this->database()->select('lik.like_id AS is_liked, ')->leftJoin(Phpfox::getT('like'), 'lik''lik.type_id = 'marketplace' AND lik.item_id = l.listing_id AND lik.user_id = ' Phpfox::getUserId());
        }    
        
        
$this->database()->select('f.friend_id AS is_friend, ')->leftJoin(Phpfox::getT('friend'), 'f'"f.user_id = l.user_id AND f.friend_user_id = " Phpfox::getUserId());
        
        
$aListing $this->database()->select('l.*, ml.invite_id, ml.visited_id, uf.total_score, uf.total_rating, ua.activity_points, ' . (Phpfox::getParam('core.allow_html') ? 'mt.description_parsed' 'mt.description') . ' AS description, ' Phpfox::getUserField())
            ->
from($this->_sTable'l')
            ->
join(Phpfox::getT('marketplace_text'), 'mt''mt.listing_id = l.listing_id')
            ->
join(Phpfox::getT('user'), 'u''u.user_id = l.user_id')
            ->
join(Phpfox::getT('user_field'), 'uf''uf.user_id = l.user_id')
            ->
join(Phpfox::getT('user_activity'), 'ua''ua.user_id = l.user_id')
            ->
leftJoin(Phpfox::getT('marketplace_invite'), 'ml''ml.listing_id = l.listing_id AND ml.invited_user_id = ' Phpfox::getUserId())
            ->
where('l.listing_id = ' . (int) $iId)
            ->
execute('getSlaveRow');
        
        if (!isset(
$aListing['listing_id']))
        {
            return 
false;
        }
        if (!
Phpfox::isModule('like'))
        {
            
$aListing['is_liked'] = false;
        }
        if (
$aListing['view_id'] == '1')
        {
            if (
$aListing['user_id'] == Phpfox::getUserId() || Phpfox::getUserParam('marketplace.can_approve_listings'))
            {
                
            }
            else 
            {
                return 
false;
            }
        }        
            
        
$aListing['categories'] = Phpfox::getService('marketplace.category')->getCategoriesById($aListing['listing_id']);
        
$aListing['bookmark_url'] = Phpfox::getLib('url')->permalink('marketplace'$aListing['listing_id'], $aListing['title']);
        
        return 
$aListing;
    }
    
    public function 
getForEdit($iId$bForce false)
    {
        ((
$sPlugin Phpfox_Plugin::get('marketplace.service_marketplace_getforedit')) ? eval($sPlugin) : false);
        
        
$aListing $this->database()->select('l.*, description')
            ->
from($this->_sTable'l')
            ->
join(Phpfox::getT('marketplace_text'), 'mt''mt.listing_id = l.listing_id')
            ->
where('l.listing_id = ' . (int) $iId)
            ->
execute('getSlaveRow');
            
        if (((
$aListing['user_id'] == Phpfox::getUserId() && Phpfox::getUserParam('marketplace.can_edit_own_listing')) || Phpfox::getUserParam('marketplace.can_edit_other_listing')) || ($bForce === true))
        {
            
$aListing['categories'] = Phpfox::getService('marketplace.category')->getCategoryIds($aListing['listing_id']);
            
            return 
$aListing;    
        }
            
        return 
false;
    }
    
    public function 
getInvoice($iId)
    {
        
$aInvoice $this->database()->select('mi.*, m.title, m.user_id AS marketplace_user_id, ' Phpfox::getUserField())
            ->
from(Phpfox::getT('marketplace_invoice'), 'mi')
            ->
join(Phpfox::getT('marketplace'), 'm''m.listing_id = mi.listing_id')
            ->
join(Phpfox::getT('user'), 'u''u.user_id = mi.user_id')
            ->
where('mi.invoice_id = ' . (int) $iId)
            ->
execute('getRow');
            
        return (isset(
$aInvoice['invoice_id']) ? $aInvoice false);
    }
    
    public function 
getInvoices($aCond$bGroupUser false)
    {
        if (
$bGroupUser)
        {
            
$this->database()->group('mi.user_id');
        }
        
        
$iCnt $this->database()->select('COUNT(*)')
            ->
from(Phpfox::getT('marketplace_invoice'), 'mi')
            ->
where($aCond)            
            ->
execute('getSlaveField');

        if (
$bGroupUser)
        {
            
$this->database()->group('mi.user_id');
        }            

        
$aRows $this->database()->select('mi.*, ' Phpfox::getUserField())
            ->
from(Phpfox::getT('marketplace_invoice'), 'mi')
            ->
join(Phpfox::getT('user'), 'u''u.user_id = mi.user_id')
            ->
where($aCond)
            ->
execute('getSlaveRows');

        foreach (
$aRows as $iKey => $aRow)
        {
            switch (
$aRow['status'])
            {
                case 
'completed':
                    
$aRows[$iKey]['status_phrase'] = Phpfox::getPhrase('marketplace.paid');    
                    break;
                case 
'cancel':
                    
$aRows[$iKey]['status_phrase'] = Phpfox::getPhrase('marketplace.cancelled');    
                    break;
                case 
'pending':
                    
$aRows[$iKey]['status_phrase'] = Phpfox::getPhrase('marketplace.pending_payment');    
                    break;
                default:
                    
$aRows[$iKey]['status_phrase'] = Phpfox::getPhrase('marketplace.pending_payment');    
                    break;
            }            
        }            

        return array(
$iCnt$aRows);
    }
    
    public function 
getForProfileBlock($iUserId$iLimit 5)
    {
        ((
$sPlugin Phpfox_Plugin::get('marketplace.service_marketplace_getforprofileblock')) ? eval($sPlugin) : false);
        
        return 
$this->database()->select('m.*')
            ->
from($this->_sTable'm')
            ->
where('m.view_id = 0 AND m.group_id = 0 AND m.user_id = ' . (int) $iUserId)
            ->
limit($iLimit)
            ->
order('m.time_stamp DESC')
            ->
execute('getSlaveRows');
    }
    
    public function 
getImages($iId$iLimit null)
    {
        return 
$this->database()->select('image_id, image_path, server_id')
            ->
from(Phpfox::getT('marketplace_image'))
            ->
where('listing_id = ' . (int) $iId)
            ->
order('ordering ASC')
            ->
limit($iLimit)
            ->
execute('getSlaveRows');
    }

    public function 
getSponsorListings()
    {
        
$sCacheId $this->cache()->set('marketplace_sponsored');
        if (!(
$aListing $this->cache()->get($sCacheId)))
        {
            
$aListing $this->database()->select('s.sponsor_id, m.title, m.currency_id, m.price, m.time_stamp, m.image_path, m.server_id')
                ->
from($this->_sTable'm')
                ->
join(Phpfox::getT('ad_sponsor'), 's''s.item_id = m.listing_id')
                ->
where('m.view_id = 0 AND m.group_id = 0 AND is_sponsor = 1 AND s.module_id = "marketplace"')
                ->
execute('getSlaveRows');
    
            
$this->cache()->save($sCacheId$aListing);
        }
        
        if (
$aListing === true || (is_array($aListing) && !count($aListing)))
        {
            return array();
        }

        
shuffle($aListing);
        
        
$aOut = array();
        for(
$iLoop 0$iLoop Phpfox::getParam('marketplace.how_many_sponsored_listings'); $iLoop++)
        {
            if (empty(
$aListing))
            {
                break;
            }
            
$aOut[] = array_pop($aListing);
        }
        return 
$aOut;
    }
    
    public function 
getInvites($iListing$iType$iPage 0$iPageSize 8)
    {
        
$aInvites = array();
        
$iCnt $this->database()->select('COUNT(*)')
            ->
from(Phpfox::getT('marketplace_invite'))
            ->
where('listing_id = ' . (int) $iListing ' AND visited_id = ' . (int) $iType)
            ->
execute('getSlaveField');
        
        if (
$iCnt)
        {
            
$aInvites $this->database()->select('ei.*, ' Phpfox::getUserField())
                ->
from(Phpfox::getT('marketplace_invite'), 'ei')
                ->
leftJoin(Phpfox::getT('user'), 'u''u.user_id = ei.invited_user_id')
                ->
where('ei.listing_id = ' . (int) $iListing ' AND ei.visited_id = ' . (int) $iType)
                ->
limit($iPage$iPageSize$iCnt)
                ->
order('ei.invite_id DESC')
                ->
execute('getSlaveRows');
        }
            
        return array(
$iCnt$aInvites);
    }    
    
    public function 
getUserListings($iListingId$iUserId)
    {
        ((
$sPlugin Phpfox_Plugin::get('marketplace.service_marketplace_getuserlistings_count')) ? eval($sPlugin) : false);
        
        
$iCnt $this->database()->select('COUNT(*)')
            ->
from($this->_sTable'v')
            ->
join(Phpfox::getT('user'), 'u''u.user_id = v.user_id')
            ->
where('v.listing_id != ' . (int) $iListingId ' AND v.view_id = 0 AND v.user_id = ' . (int) $iUserId)
            ->
execute('getSlaveField');            
            
        ((
$sPlugin Phpfox_Plugin::get('marketplace.service_marketplace_getuserlistings_query')) ? eval($sPlugin) : false);
        
        
$aRows $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) $iListingId ' AND v.view_id = 0 AND v.user_id = ' . (int) $iUserId)
            ->
limit(Phpfox::getParam('marketplace.total_listing_more_from'))
            ->
order('v.time_stamp DESC')
            ->
execute('getSlaveRows');
        
        return array(
$iCnt$aRows);
    }    
    
    public function 
getPendingTotal()
    {
        return 
$this->database()->select('COUNT(*)')
            ->
from($this->_sTable)
            ->
where('view_id = 1')
            ->
execute('getSlaveField');
    }    
    
    public function 
isAlreadyInvited($iItemId$aFriends)
    {
        if ((int) 
$iItemId === 0)
        {
            return 
false;
        }
        
        if (
is_array($aFriends))
        {
            if (!
count($aFriends))
            {
                return 
false;
            }            
            
            
$sIds '';
            foreach (
$aFriends as $aFriend)
            {
                if (!isset(
$aFriend['user_id']))
                {
                    continue;
                }
                
                
$sIds[] = $aFriend['user_id'];
            }            
            
            
$aInvites $this->database()->select('invite_id, visited_id, invited_user_id')
                ->
from(Phpfox::getT('marketplace_invite'))
                ->
where('listing_id = ' . (int) $iItemId ' AND invited_user_id IN(' implode(', '$sIds) . ')')
                ->
execute('getSlaveRows');
            
            
$aCache = array();
            foreach (
$aInvites as $aInvite)
            {
                
$aCache[$aInvite['invited_user_id']] = ($aInvite['visited_id'] ? Phpfox::getPhrase('marketplace.visted') : Phpfox::getPhrase('marketplace.invited'));
            }
            
            if (
count($aCache))
            {
                return 
$aCache;
            }
        }
        
        return 
false;
    }

    public function 
getFeatured()
    {
        
$sCacheId $this->cache()->set('marketplace_featured');
        
        if (!(
$aRows $this->cache()->get($sCacheId)))
        {
            
$aRows $this->database()->select('m.*')
                ->
from(Phpfox::getT('marketplace'), 'm')
                ->
where('m.view_id = 0 AND m.privacy = 0 AND m.is_featured = 1')
                ->
execute('getSlaveRows');
                
            foreach (
$aRows as $iKey => $aRow)
            {
                
$aRows[$iKey]['images'] = $this->getImages($aRow['listing_id'], 5);
            }
            
            
$this->cache()->save($sCacheId$aRows);
        }
        
        if (!
is_array($aRows))
        {
            return array();
        }
        
        
shuffle($aRows);
        
        
$aReturn = array();
        
$iCnt 0;
        foreach (
$aRows as $aRow)
        {
            
$iCnt++;
            
            if (
$iCnt 5)
            {
                break;
            }
            
            
$aReturn[] = $aRow;
        }        
            
        return 
$aReturn;        
    }
    
    public function 
getTotalInvites()
    {
        static 
$iCnt null;
        
        if (
$iCnt !== null)
        {
            return 
$iCnt;
        }
        
        
$iCnt = (int) $this->database()->select('COUNT(m.listing_id)')
            ->
from(Phpfox::getT('marketplace_invite'), 'mi')
            ->
join(Phpfox::getT('marketplace'), 'm''m.listing_id = mi.listing_id AND m.view_id = 0')
            ->
where('mi.visited_id = 0 AND mi.invited_user_id = ' Phpfox::getUserId())
            ->
execute('getSlaveField');
            
        return 
$iCnt;
    }
    
    public function 
getUserInvites()
    {
        
$iCnt $this->getTotalInvites();
        
        
$aRows $this->database()->select('m.*')
            ->
from(Phpfox::getT('marketplace_invite'), 'mi')
            ->
join(Phpfox::getT('marketplace'), 'm''m.listing_id = mi.listing_id')
            ->
where('mi.visited_id = 0 AND mi.invited_user_id = ' Phpfox::getUserId())
            ->
limit(5)
            ->
execute('getSlaveRows');
            
        return array(
$iCnt$aRows);
    }
    
    
/**
     * 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_marketplace__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);
    }    
}

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