Вход Регистрация
Файл: admin/applications/core/modules_public/ajax/notifications.php
Строк: 126
<?php

/**
 * <pre>
 * Invision Power Services
 * IP.Board v3.3.3
 * Notification AJAX methods
 * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
 * </pre>
 *
 * @author         $Author: bfarber $
 * @copyright    (c) 2001 - 2009 Invision Power Services, Inc.
 * @license        http://www.invisionpower.com/company/standards.php#license
 * @package        IP.Board
 * @subpackage    Core
 * @link        http://www.invisionpower.com
 * @since        Tuesday 1st March 2005 (11:52)
 * @version        $Revision: 10721 $
 *
 */

if ( ! defined'IN_IPB' ) )
{
    print 
"<h1>Incorrect access</h1>You cannot access this file directly. If you have recently upgraded, make sure you upgraded all the relevant files.";
    exit();
}

class 
public_core_ajax_notifications extends ipsAjaxCommand 
{
    
/**
     * Class entry point
     *
     * @param    object        Registry reference
     * @return    @e void        [Outputs to screen]
     */
    
public function doExecuteipsRegistry $registry 
    {
        switch( 
$this->request['do'] )
        {
            case 
'getlatest':
            default:
                
$this->getMyNotifications();
            break;
            
            case 
'getNextNotification':
                
$this->getMoreNotifications'DESC' );
            break;
            
            case 
'getLastNotification':
                
$this->getMoreNotifications'ASC' );
            break;
        }
    }

    
/**
     * Retrieve next notification for user
     *
     * @param    string        Database order (asc/desc)
     * @return    @e void        [Outputs JSON to browser AJAX call]
     */
    
protected function getMoreNotifications$dir='DESC' )
    {
        
//-----------------------------------------
        // We logged in?
        //-----------------------------------------
        
        
if( !$this->memberData['member_id'] )
        {
            
$this->returnJsonError$this->lang->words['notifylogin_error'] );
        }
        
        
//-----------------------------------------
        // Retrieve notifications
        //-----------------------------------------
        
        
$classToLoad        IPSLib::loadLibraryIPS_ROOT_PATH '/sources/classes/member/notifications.php''notifications' );
        
$notifyLibrary        = new $classToLoad$this->registry );
        
$notifyLibrary->setMember$this->memberData );

        
$_data $notifyLibrary->fetchUnreadNotifications50'notify_sent'$dir );
        
        
//-----------------------------------------
        // Now we loop through and set has previous, 
        // has more, and get "next" notification
        //-----------------------------------------
        
        
$_hasPrevious    false;
        
$_hasNext        false;
        
$_hitId            false;
        
$_gotNext        false;
        
$_thisNotify    = array();
        
        foreach( 
$_data as $k => $v )
        {
            if( !
$_hitId )
            {
                if( 
$v['notify_id'] == $this->request['last'] )
                {
                    
$_hitId    true;
                }
                
                
$_hasPrevious    true;
                continue;
            }
            
            if( !
$_gotNext )
            {
                
$_gotNext        true;
                
$_thisNotify    $v;
                continue;
            }
            
            
$_hasNext    true;
            break;
        }
        
        if( 
count($_thisNotify) )
        {
            
$_thisNotify['notify_date_formatted']        = $this->registry->class_localization->getDate$_thisNotify['notify_sent'], 'short' );
            
            
$_thisNotify['has_more']        = $_hasNext;
            
$_thisNotify['has_previous']    = $_hasPrevious;
        }
        else
        {
            
$_thisNotify['error']    = $this->lang->words['nomore_notifications_4u'];
        }
        
        if( !
$_thisNotify['notify_url'] )
        {
            
$_thisNotify['notify_url']    = $this->registry->output->buildSEOUrl"app=core&module=usercp&area=viewNotification&do=view&view={$_thisNotify['notify_id']}"'public' );
        }
        
        
$this->returnJsonArray$_thisNotify );
    }
    
    
/**
     * Retrieve user's last x notifications
     *
     * @return    @e void        [Outputs JSON to browser AJAX call]
     */
    
protected function getMyNotifications()
    {
        
//-----------------------------------------
        // We logged in?
        //-----------------------------------------
        
        
if ( ! $this->memberData['member_id'] )
        {
            
$this->returnJsonError$this->lang->words['notifylogin_error'] );
        }
        
        
//-----------------------------------------
        // Retrieve notifications
        //-----------------------------------------
        
        
$classToLoad        IPSLib::loadLibraryIPS_ROOT_PATH '/sources/classes/member/notifications.php''notifications' );
        
$notifyLibrary        = new $classToLoad$this->registry );
        
$notifyLibrary->setMember$this->memberData );

        
$_data $notifyLibrary->fetchLatestNotifications10 );

        
//-----------------------------------------
        // Now mark them all read
        //-----------------------------------------
        
        
$notifyLibrary->markNotificationsAsReadByMemberId$this->memberData['member_id'] );
        
        
//-----------------------------------------
        // Return results
        //-----------------------------------------

        
$this->returnJsonArray( array( 'html' => $this->cleanOutput$this->registry->output->getTemplate('global_other')->notificationsList$_data ) ) ) );
    }
}
Онлайн: 1
Реклама