Вход Регистрация
Файл: admin/applications/core/modules_public/ajax/like.php
Строк: 104
<?php
/**
 * @file        like.php     Provides ajax methods for the central like/follow class
 *~TERABYTE_DOC_READY~
 * $Copyright: (c) 2001 - 2011 Invision Power Services, Inc.$
 * $License: http://www.invisionpower.com/company/standards.php#license$
 * $Author: bfarber $
 * @since        -
 * $LastChangedDate: 2011-08-05 20:51:01 -0400 (Fri, 05 Aug 2011) $
 * @version        v3.3.3
 * $Revision: 9373 $
 */

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_like
 * @brief        Provides ajax methods for the central like/follow class
 */
class public_core_ajax_like extends ipsAjaxCommand
{
    
/**
     * Main function executed automatically by the controller
     *
     * @param    object        $registry        Registry object
     * @return    @e void
     */
    
public function doExecute( ipsRegistry $registry )
    {
        
/* From App */
        
$app    = trim( $this->request['f_app'] );
        
$area    = trim( $this->request['f_area'] );
        
$relid    = intval( $this->request['f_relid'] );
        
        if ( ! 
$app OR ! $area OR empty( $relid ) )
        {
            
trigger_error( "Missing data in " . __FILE__ . ' ' . __LINE__ );
        }
        
        
/* Init some data */
        
require_once( IPS_ROOT_PATH . 'sources/classes/like/composite.php' );/*noLibHook*/
        
$this->_like = classes_like::bootstrap( $app, $area );
        
        
$this->registry->getClass('class_localization')->loadLanguageFile( array( 'public_like' ), 'core' );
        
        
/* What to do? */
        
switch( $this->request['do'] )
        {
            case 
'setDialogue':
                
$this->_setDialogue( $app, $area, $relid );
                break;
            case 
'save':
                
$this->_save( $relid );
                break;
            case 
'unset':
                
$this->_unset( $relid );
                break;
            case 
'more':
                
$this->_more( $relid );
                break;    
        }
    }
    
    
/**
     * Show more dialogue
     *
     * @param    integer        $relid        Relationship ID
     * @return    @e void
     */
    
protected function _more( $relid )
    {               
         
/* Fetch data */
         
return $this->returnHtml( $this->_like->render( 'more', $relid ) );
    }
    
    
/**
     * Do unset like
     *
     * @param    integer        $relid        Relationship ID
     * @return    @e void
     */
    
protected function _unset( $relid )
    {
        if( !
$this->memberData['member_id'] )
        {
            return 
$this->returnNull();
        }

        
/* Set data */
         
$this->_like->remove( $relid, $this->memberData['member_id'] );
         
         
/* Fetch data */
         
return $this->returnHtml( $this->_like->render( 'summary', $relid ) );
    }
    
    
/**
     * Save like
     *
     * @param    integer        $relid        Relationship ID
     * @return    @e void
     */
    
protected function _save( $relid )
    {
        if( !
$this->memberData['member_id'] )
        {
            return 
$this->returnNull();
        }

        
$like_notify    = intval( $this->request['like_notify'] );
        
$like_freq        = trim( $this->request['like_freq'] );
        
$like_anon        = intval( $this->request['like_anon'] );

        
/* Set data */
         
$this->_like->add( $relid, $this->memberData['member_id'], array( 'like_notify_do' => $like_notify, 'like_notify_freq' => $like_freq ), $like_anon );
         
         
/* Fetch data */
         
return $this->returnHtml( $this->_like->render( 'summary', $relid ) ); 
        
/* This used to force response as UTF-8, but that caused this bug: @link http://community.invisionpower.com/tracker/issue-32255-character-conversion-bug-with-follow-this-x */
    
}
    
    
/**
     * Show set form
     *
     * @param    string        $app        Application
     * @param     string        $area        Area
     * @param    integer        $relid        Relationship ID
     * @return    @e void
     */
    
protected function _setDialogue( $app, $area, $relid )
    {
        if( !
$this->memberData['member_id'] )
        {
            return 
$this->returnNull();
        }

         
$data = $this->_like->getDataForSetDialogue( $relid );
         
         return 
$this->returnHtml( $this->registry->getClass('output')->getTemplate('global_other')->likeSetDialogue( $app, $area, $relid, $data ) );
    }
}
Онлайн: 2
Реклама