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

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

/**
 *
 *
 * @copyright        [PHPFOX_COPYRIGHT]
 * @author          Raymond Benc
 * @package          Module_Friend
 * @version         $Id: friend.class.php 4500 2012-07-11 13:05:52Z Miguel_Espinoza $
 */
class Friend_Service_Friend extends Phpfox_Service
{
    
/**
     * Class constructor
     */
    
public function __construct()
    {
        
$this->_sTable Phpfox::getT('friend');
    }

    public function 
get($aCond$sSort 'friend.time_stamp DESC'$iPage ''$sLimit ''$bCount true$bAddDetails false$bIsOnline false$iUserId null$bIncludeList false$iListId 0)
    {
        
$bIsListView = ((Phpfox::getLib('request')->get('view') == 'list' || (defined('PHPFOX_IS_USER_PROFILE') && Phpfox::getLib('request')->getInt('list'))) ? true false);
        
$iCnt = ($bCount 1);
        
$aRows = array();
        
        if (
$sPlugin Phpfox_Plugin::get('friend.service_friend_get'))
        {
            eval(
$sPlugin);
        }        

        if (
$bCount === true)
        {
            if (
$bIsOnline === true)
            {
                
$this->database()->join(Phpfox::getT('log_session'), 'ls''ls.user_id = friend.friend_user_id AND ls.last_activity > '' . Phpfox::getService('log.session')->getActiveTime() . '' AND ls.im_hide = 0');
            }

            if (
$iUserId !== null)
            {
                
$this->database()->innerJoin('(SELECT friend_user_id FROM ' Phpfox::getT('friend') . ' WHERE is_page = 0 AND user_id = ' $iUserId ')''sf''sf.friend_user_id = friend.friend_user_id');
            }
            
            if (
$bIsListView)
            {
                
$this->database()->join(Phpfox::getT('friend_list_data'), 'fld''fld.friend_user_id = friend.friend_user_id');
            }
            
            if ((int) 
$iListId 0)
            {
                
$this->database()->innerJoin(Phpfox::getT('friend_list_data'), 'fld''fld.list_id = ' . (int) $iListId ' AND fld.friend_user_id = friend.friend_user_id');
            }

            
$iCnt $this->database()->select('COUNT(DISTINCT u.user_id)')
                ->
from($this->_sTable'friend')
                ->
join(Phpfox::getT('user'), 'u''u.user_id = friend.friend_user_id AND u.status_id = 0')
                ->
where($aCond)
                ->
execute('getSlaveField');
        }

        if (
$iCnt)
        {
            if (
$bAddDetails === true)
            {
                
$this->database()->select('u.status, u.user_id, u.birthday, u.gender, u.country_iso AS location, ');
            }

            if (
$bIsOnline === true)
            {
                
$this->database()->select('ls.last_activity, ')->join(Phpfox::getT('log_session'), 'ls''ls.user_id = friend.friend_user_id AND ls.last_activity > '' . Phpfox::getService('log.session')->getActiveTime() . '' AND ls.im_hide = 0');
            }

            if (
$iUserId !== null)
            {
                
$this->database()->innerJoin('(SELECT friend_user_id FROM ' Phpfox::getT('friend') . ' WHERE is_page = 0 AND user_id = ' $iUserId ')''sf''sf.friend_user_id = friend.friend_user_id');
            }
            
            if (
$bIsListView)
            {
                
$this->database()->join(Phpfox::getT('friend_list_data'), 'fld''fld.friend_user_id = friend.friend_user_id');        
            }
            
            if ((int) 
$iListId 0)
            {
                
$this->database()->innerJoin(Phpfox::getT('friend_list_data'), 'fld''fld.list_id = ' . (int) $iListId ' AND fld.friend_user_id = friend.friend_user_id');
            }            

            
$aRows $this->database()->select('uf.dob_setting, friend.friend_id, friend.friend_user_id, friend.is_top_friend, friend.time_stamp, ' Phpfox::getUserField())  
                ->
from($this->_sTable'friend')
                ->
join(Phpfox::getT('user'), 'u''u.user_id = friend.friend_user_id AND u.status_id = 0')
                ->
join(Phpfox::getT('user_field'), 'uf''u.user_id = uf.user_id')  
                ->
where($aCond)
                ->
limit($iPage$sLimit$iCnt)
                ->
order($sSort)
                ->
group('u.user_id')
                ->
execute('getSlaveRows');         
                
            if (
$bAddDetails === true)
            {
                
$oUser Phpfox::getService('user');
                
$oCoreCountry Phpfox::getService('core.country');
                foreach (
$aRows as $iKey => $aRow)
                {
                    
$aBirthDay Phpfox::getService('user')->getAgeArray($aRow['birthday']);
                    
                    
$aRows[$iKey]['month'] = Phpfox::getLib('date')->getMonth($aBirthDay['month']);
                    
$aRows[$iKey]['day'] = $aBirthDay['day'];
                    
$aRows[$iKey]['year'] = $aBirthDay['year'];                    
                    
$aRows[$iKey]['gender_phrase'] = $oUser->gender($aRow['gender']);
                    
$aRows[$iKey]['birthday'] = $oUser->age($aRow['birthday']);
                    
$aRows[$iKey]['location'] = $oCoreCountry->getCountry($aRow['location']);
                }
            }
            
            if (
$bIncludeList)
            {
                foreach (
$aRows as $iKey => $aRow)
                {
                    
$aRows[$iKey]['lists'] = Phpfox::getService('friend.list')->getListForUser($aRow['friend_user_id']);    
                }
            }
        }

        if (
$bCount === false)
        {
            return 
$aRows;
        }

        return array(
$iCnt$aRows);
    }
    
    public function 
getFromCache($mAllowCustom false$sUserSearch false)
    {
        
$mAllowCustom false;
        if (
Phpfox::getUserBy('profile_page_id'))
        {
            
$mAllowCustom true;
        }
        
        if (
$sUserSearch != false)
        {
            if (
Phpfox::getUserParam('mail.restrict_message_to_friends') == true)
            {
                
$this->database()->join($this->_sTable'f''u.user_id = f.friend_user_id AND f.user_id=' Phpfox::getUserId());
            }
            
            
$aRows $this->database()->select('' Phpfox::getUserField())
                ->
from(Phpfox::getT('user'),'u')
                ->
where('u.full_name LIKE "%'Phpfox::getLib('parse.input')->clean($sUserSearch) .'%" AND u.profile_page_id = 0')
                ->
limit(Phpfox::getParam('friend.friend_cache_limit'))
                ->
order('u.last_activity DESC')
                ->
execute('getSlaveRows');
        }
        else
        {
            
$aRows $this->database()->select('f.*, ' Phpfox::getUserField())
                ->
from($this->_sTable'f')
                ->
join(Phpfox::getT('user'), 'u''u.user_id = f.friend_user_id')
                ->
where(($mAllowCustom '' 'f.is_page = 0 AND') . ' f.user_id = ' Phpfox::getUserId())
                ->
limit(Phpfox::getParam('friend.friend_cache_limit'))
                ->
order('u.last_activity DESC')
                ->
execute('getSlaveRows');
        }    

        foreach (
$aRows as $iKey => $aRow)
        {        
            if (
Phpfox::getUserId() == $aRow['user_id'])
            {
                unset(
$aRows[$iKey]);
                
                continue;
            }
            
            
$aRows[$iKey]['full_name'] = html_entity_decode(Phpfox::getLib('parse.output')->split($aRow['full_name'], 20), null'UTF-8');                        
            
$aRows[$iKey]['user_profile'] = ($aRow['profile_page_id'] ? Phpfox::getService('pages')->getUrl($aRow['profile_page_id'], ''$aRow['user_name']) : Phpfox::getLib('url')->makeUrl($aRow['user_name']));
            
$aRows[$iKey]['is_page'] = ($aRow['profile_page_id'] ? true false);
            
$aRows[$iKey]['user_image'] = Phpfox::getLib('image.helper')->display(array(
                    
'user' => $aRow,
                    
'suffix' => '_50_square',
                    
'max_height' => 50,
                    
'max_width' => 50,
                    
'return_url' => true
                
)
            );
        }        
        
        return 
$aRows;
    }

    
/**
     * This function returns information about $iUser's friends' upcoming birthdays
     * @param Int $iUser
     * @return array
     */
    
public function getBirthdays($iUser)
    {
        
// Phpfox::isUser(true);
        
$iUser = (int)$iUser;

        
// Calculate how many days in advance to check and
        
$iDaysInAdvance Phpfox::getParam('friend.days_to_check_for_birthday') >= Phpfox::getParam('friend.days_to_check_for_birthday') : 0;
        
$iThisMonth date('m'Phpfox::getTime());
        
$iToday date('d'Phpfox::getTime());
        
        
$iThisYear date('Y'Phpfox::getTime());
        
$iLastDayOfMonth Phpfox::getLib('date')->lastDayOfMonth($iThisMonth);

        
$sMonthUntil $iThisMonth;
        
$sDayUntil $iToday;
        while(
$iDaysInAdvance 0)
        {
            if (
$sDayUntil $iLastDayOfMonth)
            {
                if (
$sMonthUntil 12)
                {
                    
$sMonthUntil++;
                }
                else
                {
                    
$sMonthUntil 1;
                    
$iLastDayOfMonth Phpfox::getLib('date')->lastDayOfMonth($sMonthUntil$iThisYear);
                }
                
$sDayUntil 0;
            }
            
$iDaysInAdvance--;
            
$sDayUntil++;
        }
        
$sMonthUntil $sMonthUntil[0] != '0' ? ($sMonthUntil 10) ? '0'.$sMonthUntil $sMonthUntil $sMonthUntil;
        
$sDayUntil = ($sDayUntil 10) ? '0' $sDayUntil $sDayUntil;
        
//$sBirthdays =  '"'.$iThisMonth . ''.$iToday . '" <= uf.birthday_range AND "'. $sMonthUntil . $sDayUntil . '" >= uf.birthday_range';
        
if ($sMonthUntil $iThisMonth// its next year
        
{
            
$sBirthdays =  '"'.$iThisMonth ''.$iToday '" <= uf.birthday_range OR "'$sMonthUntil $sDayUntil '" >= uf.birthday_range';
        }
        else{
            
$sBirthdays =  '"'.$iThisMonth ''.$iToday '" <= uf.birthday_range AND "'$sMonthUntil $sDayUntil '" >= uf.birthday_range';
        }

        
// cache this query
        
$aBirthdays = array();
        
$sCacheId $this->cache()->set('friend_birthday_' $iUser);
        if (!(
$aBirthdays $this->cache()->get($sCacheIdPhpfox::getParam('friend.birthdays_cache_time_out') * 60*60))) // cache is in hours
        
{
            
$aBirthdays $this->database()->select('u.user_name, u.full_name, u.user_name, uf.dob_setting, u.birthday, fb.birthday_user_receiver')
                ->
from(Phpfox::getT('friend'), 'f')
                ->
join(Phpfox::getT('user'),' u''u.user_id = f.friend_user_id')
                ->
join(Phpfox::getT('user_field'), 'uf''uf.user_id = u.user_id')
                ->
leftjoin(Phpfox::getT('friend_birthday'), 'fb''fb.birthday_user_receiver = u.user_id AND fb.time_stamp > '. (PHPFOX_TIME 2629743)) /* Fixes (SHB-989762) */
                
->where('f.user_id = ' $iUser ' AND (' $sBirthdays ') AND (uf.dob_setting != 2 AND uf.dob_setting != 3) AND fb.birthday_user_receiver IS NULL')
                ->
order('uf.birthday_range ASC')
                ->
limit(15)
                ->
execute('getSlaveRows');        
            
$this->cache()->save($sCacheId$aBirthdays);
        }
        if (!
is_array($aBirthdays))
        {
            
$aBirthdays = array();
        }
        
/*{ (MJF-457673)
            $aFriends = $this->database()->select('u.user_id, u.user_name, f.friend_user_id as birthday_user_id')
                ->join(Phpfox::getT('user'), 'u', 'u.user_id = f.friend_user_id')
                ->join(Phpfox::getT('user_field'), 'uf', 'uf.user_id = f.friend_user_id')
                ->from($this->_sTable, 'f')
                ->where('f.user_id = ' . $iUser . ' AND (' . $sBirthdays . ')')
                ->limit(15)
                ->order('u.birthday ASC')
                ->group('f.friend_user_id')
                ->execute('getSlaveRows');
            $this->cache()->save($sCacheId, $aFriends);
        }

        // another foreach to check if its congratulated already,
        if (!is_array($aFriends) || empty($aFriends)) return false;
        $sReceivers = '(uf.dob_setting != 2 AND uf.dob_setting != 3) AND (';
        foreach ($aFriends as $iKey => $aUser)
        {
            $sReceivers .= 'u.user_id = ' . $aUser['user_id'] . ' OR ';
        }
        
        $sReceivers = substr($sReceivers, 0, strlen($sReceivers) - 4) .')';

        $aBirthdays = $this->database()->select('fb.birthday_user_receiver, fb.status_id, u.birthday, u.birthday_search, uf.dob_setting, ' .Phpfox::getUserField())
            ->from(Phpfox::getT('user'), 'u')
            ->leftjoin(Phpfox::getT('friend_birthday'), 'fb', 'fb.birthday_user_receiver = u.user_id AND fb.birthday_user_sender = ' . Phpfox::getUserId())
            ->leftjoin(Phpfox::getT('user_field'), 'uf', 'uf.user_id = u.user_id')
            ->group('u.user_id') // added to try to prevent duplicated entries from showing up
            ->where($sReceivers)
            ->execute('getSlaveRows');*/

        
foreach ($aBirthdays as $iKey => $aFriend)
        {
            
// add when is their birthday and how old are they going to be
            
$iAge Phpfox::getService('user')->age($aFriend['birthday']);
            
            if (
substr($aFriend['birthday'],0,2).'-'.substr($aFriend['birthday'],2,2) == date('m-d'Phpfox::getTime()))
            {
                
$aBirthdays[$iKey]['new_age'] = $iAge;
            }
            else 
            {
                
$aBirthdays[$iKey]['new_age'] = ($iAge 1);
            }

            
// Should fix ticket (ICC-452267)
            
if (!isset($aFriend['birthday']) || empty($aFriend['birthday']))
            {
                
$iDays = -1;
            }
            else
            {
                
$iDays Phpfox::getLib('date')->daysToDate($aFriend['birthday'], nullfalse);
            }

            if (
$iDays || $aFriend['dob_setting'] == || $aFriend['dob_setting'] == 3)
            {
                unset(
$aBirthdays[$iKey]);
                continue;
            }
            else
            {
                
$aBirthdays[$iKey]['days_left'] = floor($iDays);
            }

            
// do we show the age?
            
if ($aFriend['dob_setting'] < // 0 => age and dob; 1 => age and day/month; 2 => age
            
{
                
$aBirthdays[$iKey]['show_age'] = true;
            }
            else
            {
                
$aBirthdays[$iKey]['show_age'] = false;
            }
            
// fail safe
            
$aBirthdays[$iKey]['birthdate'] = '';
            
// $aFriend['birthday_search'] = Phpfox::getLib('date')->convertToGmt($aFriend['birthday_search']);
            // Format the birthdate according to the profile
            
$aBirthDay Phpfox::getService('user')->getAgeArray($aFriend['birthday']);
            if (
$aFriend['dob_setting'] == 4)// just copy the arbitrary format on the browse.html
            
{
                
//$aBirthdays[$iKey]['birthdate'] = Phpfox::getLib('date')->getMonth($aBirthDay['month']) . ' ' . $aBirthDay['day'];
                //{$aUser.month} {$aUser.day}
                
unset($aBirthDay['year']);
            }
            elseif(
$aFriend['dob_setting'] == 0)
            {
                
$aBirthdays[$iKey]['birthdate'] = Phpfox::getLib('date')->getMonth($aBirthDay['month']) . ' ' $aBirthDay['day'] . ', ' $aBirthDay['year'];
            }
            elseif (
$aFriend['dob_setting'] == 1)
            {
                
$aBirthdays[$iKey]['birthdate'] = Phpfox::getLib('date')->getMonth($aBirthDay['month']) . ' ' $aBirthDay['day'];
            }
            
// seems to fix bug http://www.phpfox.com/tracker/view/6070/
            //$aBirthdays[$iKey]['birthdate'] = date(Phpfox::getParam('core.profile_time_stamps'), Phpfox::getLib('date')->mktime(0,0,0,$aBirthDay['month'],$aBirthDay['day'], $aBirthDay['year']));
            
        
}    

        
$aReturnBirthday = array();
        foreach (
$aBirthdays as $iBirthKey => $aBirthData)
        {
            
$aReturnBirthday[$aBirthData['days_left']][] = $aBirthData;
        }    
        
        
ksort($aReturnBirthday);

        return 
$aReturnBirthday;
    }

    
/**
     * This is a very failsafe function, if there is an id it gets the message but if its not set or equals zero
     * it then can get all the messages since $iTime
     * @param int $iUser user id
     * @param int @iId Message id, used to fetch only one message
     * @param int $iTime moment since we should fetch records onwards
     * @return array
     */
    
public function getBirthdayMessages($iUser$iId 0$iTime 0)
    {
        
$aWhere = array('fb.status_id = 1 AND fb.birthday_user_receiver = ' . (int)$iUser);
        if (isset(
$iId) && is_int($iId) && $iId 0$aWhere[] = 'AND birthday_id = ' . (int)$iId;
        elseif (
$iTime 0$aWhere[] = 'AND fb.time_stamp >= ' . (int)$iTime;

        return 
$this->database()->select('fb.birthday_message, egift.*, ' Phpfox::getUserField())
            ->
from(Phpfox::getT('friend_birthday'), 'fb')
            ->
leftjoin(Phpfox::getT('user'), 'u''u.user_id = fb.birthday_user_sender')
            ->
leftjoin(Phpfox::getT('egift'),'egift','egift.egift_id = fb.egift_id')
            ->
where($aWhere)
            ->
execute('getSlaveRows');
    }

    
/**
     * Checks if userA is friends with userB
     *
     * @param unknown_type $iUserId
     * @param unknown_type $iFriendId
     * @param unknown_type $bRedirect
     * @return boolean
     */
    
public function isFriend($iUserId$iFriendId$bRedirect false)
    {
        static 
$aCache = array();        
        
        if (isset(
$aCache[$iUserId][$iFriendId]))
        {
            if (!
$aCache[$iUserId][$iFriendId] && $bRedirect)
            {
                
Phpfox::getLib('url')->send('friend''request');
            }            
            
            return 
$aCache[$iUserId][$iFriendId];
        }

        if (
$iFriendId === $iUserId)
        {
            return 
true;
        }

        
$iCnt $this->database()->select('COUNT(*)')
            ->
from($this->_sTable)
            ->
where('user_id = ' . (int) $iUserId ' AND friend_user_id = ' . (int) $iFriendId)
            ->
execute('getField');

        if (
$iCnt)
        {
            
$aCache[$iUserId][$iFriendId] = true;

            return 
true;
        }
    
        if (
$bRedirect)
        {
            
Phpfox::getLib('url')->send('friend''request');
        }

        
$aCache[$iUserId][$iFriendId] = false;

        return 
false;
    }

    public function 
getTop($iUserId$iLimit null)
    {
        
$aFriends $this->database()->select('f.friend_id, ' Phpfox::getUserField())
            ->
from($this->_sTable'f')
            ->
join(Phpfox::getT('user'), 'u''u.user_id = f.friend_user_Id')
            ->
where('f.user_id = ' . (int) $iUserId ' AND f.is_top_friend = 1')
            ->
order('f.ordering ASC, f.time_stamp DESC')
            ->
limit($iLimit)
            ->
execute('getSlaveRows');

        return 
$aFriends;
    }

    public function 
getMutualFriends($iUserId$iLimit 7$bNoCount false)
    {
        static 
$aCache = array();
        
        if (isset(
$aCache[$iUserId]))
        {
            return 
$aCache[$iUserId];
        }
        
        
$sExtra1 '';
        
$sExtra2 '';
        
        if (
$sPlugin Phpfox_Plugin::get('friend.service_friend_getmutualfriends'))
        {
             eval(
$sPlugin);
        }                
        
        
$aRows $this->database()->select(($bNoCount '' 'SQL_CALC_FOUND_ROWS ') . Phpfox::getUserField())
            ->
from(Phpfox::getT('friend'), 'f')
            ->
innerJoin('(SELECT friend_user_id FROM ' Phpfox::getT('friend') . ' WHERE is_page = 0 AND user_id = ' $iUserId $sExtra1 ')''sf''sf.friend_user_id = f.friend_user_id')
            ->
join(Phpfox::getT('user'), 'u''u.user_id = f.friend_user_id')
            ->
where('f.is_page = 0 AND f.user_id = ' Phpfox::getUserId() . $sExtra2)
            ->
order('f.time_stamp DESC')
            ->
group('f.friend_user_id')
            ->
limit($iLimit)
            ->
execute('getSlaveRows');    

        if (!
$bNoCount)
        {
            
$iCnt $this->database()->getField('SELECT FOUND_ROWS()');
        }
        
        
$aCache[$iUserId] = array($iCnt$aRows);

        return array(
$iCnt$aRows);
    }
    
    public function 
isFriendOfFriend($iUserId)
    {
        static 
$aCache = array();
        
        if (isset(
$aCache[$iUserId]))
        {
            return 
$aCache[$iUserId];
        }
        
        list(
$iCnt$aRows) = $this->getMutualFriends($iUserId);

        
$bReturn = ($iCnt true false);
        
        
$aCache[$iUserId] = $bReturn;
        
        return 
$bReturn;
    }
    
    
/**
     * Checks if we already sent a user a birthday notification.
     *
     * @param int $iUserId User ID of the sender
     * @param int $iFriendId User ID of the friend to check
     * @return bool TRUE for sent, FALSE for not sent
     */
    
public function isBirthdaySent($iUserId$iFriendId)
    {
        return ((int) 
$this->database()->select('COUNT(*)')
            ->
from(Phpfox::getT('friend_birthday'))
            ->
where('birthday_user_sender = ' . (int) $iUserId ' AND birthday_user_receiver = ' . (int) $iFriendId)
            ->
execute('getSlaveField') ? true false);
    }
    
    public function 
queryJoin($bNoQueryFriend)
    {
        if (
$this->request()->get('view') == 'friend' || ($bNoQueryFriend === false && (Phpfox::getParam('core.friends_only_community') && $this->request()->get('view') == '')))
        {
            return 
true;
        }
        
        return 
false;
    }
    
    public function 
buildMenu()
    {
        
$aFilterMenu = array(
            
Phpfox::getPhrase('friend.all_friends') => '',
            
Phpfox::getPhrase('friend.incoming_requests') => 'friend.accept',
            
Phpfox::getPhrase('friend.pending_requests') => 'friend.pending'
        
);            
        
        
$aFilterMenu[] = true;
        
        
$aLists Phpfox::getService('friend.list')->get();
        
        if (
count($aLists))
        {            
            foreach (
$aLists as $aList)
            {
                if (
is_numeric($aList['name']))
                {
                    
$aList['name'] = 'phpfox_numeric_friend_list_'.$aList['name'];
                }
                
$aFilterMenu[$aList['name']] = 'friend.view_list.id_' $aList['list_id'];    
            }            
        }
        
        
Phpfox::getLib('template')->buildSectionMenu('friend'$aFilterMenu);        
    }

    
/*
        @param $aFriends array|string if string its meant for an IN select
    */
    
public function getFriendsOfFriends($aFriends = array())
    {
        
Phpfox::isUser(true);
        
        if (
is_array($aFriends) && !empty($aFriends))
        {
            
$aMyFriends $aFriends;
        }
        else if (
is_string($aFriends) && !empty($aFriends))
        {
            
$sIn $aFriends;
        }
        else        
        {
            
$aMyFriends $this->database()->select('friend_user_id')
                ->
from(Phpfox::getT('friend'))
                ->
where('user_id = ' Phpfox::getUserId())
                ->
group('friend_user_id')
                ->
execute('getSlaveRows');            
        }
        
        if (isset(
$aMyFriends))
        {
            
$sIn '(';
            foreach (
$aMyFriends as $aFriend)
            {
                
$sIn .= $aFriend['friend_user_id'] .',';
            }
            
$sIn rtrim($sIn',') .')';
        }
        
        
$aOfFriends $this->database()->select('friend_user_id')
            ->
from(Phpfox::getT('friend'))
            ->
where('user_id IN ' $sIn)
            ->
group('friend_user_id')
            ->
execute('getSlaveRows');
        
        
$aFriendsOfFriends = array();
        foreach (
$aOfFriends as $aUser)
        {
            
$aFriendsOfFriends[] = $aUser['friend_user_id'];
        }
        return 
$aFriendsOfFriends;
    }
    
    
/**
     * 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('friend.service_friend___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
Реклама