Вход Регистрация
Файл: admin/applications/core/modules_public/ajax/sharelinks.php
Строк: 185
<?php
/**
 * <pre>
 * Invision Power Services
 * IP.Board v3.3.3
 * AJAX Sharelinks
 * 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
 * @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_sharelinks extends ipsAjaxCommand 
{
    
/**
     * Class entry point
     *
     * @param    object        Registry reference
     * @return    @e void        [Outputs to screen]
     */
    
public function doExecute( ipsRegistry $registry ) 
    {
        
/* load language */
        
$this->registry->getClass('class_localization')->loadLanguageFile( array( 'public_emails' ), 'core' );
        
        
/* Do it */
        
switch( $this->request['do'] )
        {
            case 
'twitterForm':
                return 
$this->_twitterForm();
            break;
            case 
'twitterGo':
                return 
$this->_twitterGo();
            break;
            case 
'facebookForm':
                return 
$this->_facebookForm();
            break;
            case 
'facebookGo':
                return 
$this->_facebookGo();
            break;
            case 
'savePostPrefs':
                return 
$this->_savePostPrefs();
            break;
        }
    }
    
    
/**
     * Stores post prefs for share links
     */
    
protected function _savePostPrefs()
    {
        
IPSMember::setToMemberCache( $this->memberData, array( 'postSocialPrefs' => array( 'facebook' => intval( $_POST['facebook'] ), 'twitter' => intval( $_POST['twitter'] ) ) ) );
        
        
$this->returnJsonArray( array( 'status' => 'ok' ) );
    }
    
    
/**
     * Displays a form of facebook stuff. It's really that exciting.
     *
     * @Deprecated as of 3.3 - now using Facebook standard share button
     * @return    @e void        [Outputs HTML to browser AJAX call]
     */
    
protected function _facebookForm()
    {
        
/* Ensure we have a twitter account and that */
        
if ( $this->memberData['member_id'] AND $this->memberData['fb_uid'] AND $this->memberData['fb_token'] )
        {
            
/* Connect to the Facebook */
            
$classToLoad = IPSLib::loadLibrary( IPS_ROOT_PATH . 'sources/classes/facebook/connect.php', 'facebook_connect' );
            
$connect     = new $classToLoad( $this->registry );
            
            try
            {
                
$userData = $connect->fetchUserData();
                
                
$this->returnHtml( $this->registry->output->getTemplate('global_other')->facebookPop( $userData ) );
            }
            catch( 
Exception $e )
            {
                
$this->returnHtml( '.' );
            }
        }
        else
        {
            
/* Oh go on then */
            
$this->returnHtml( $this->registry->output->getTemplate('global_other')->facebookPop( array() ) );
        }
    }
    
    
/**
     * Go go Facebook go
     * 
     * @Deprecated as of 3.3 - now using Facebook standard share button
     * @return    @e void        [Outputs HTML to browser AJAX call]
     */
    
protected function _facebookGo()
    {
        
/* INIT */
        
$comment = trim( urldecode( $_POST['comment'] ) );
        
$url     = trim( urldecode( $_POST['url'] ) );
        
$title   = trim( urldecode( $_POST['title'] ) );
        
$comment = ( $comment == $this->lang->words['fb_share_default'] ) ? '' : $comment;
        
        
/* Ensure title is correctly de-html-ized */
        
$title = IPSText::UNhtmlspecialchars( $title );
        
        
/* Ensure we have a twitter account and that */
        
if ( $this->memberData['member_id'] AND $this->memberData['fb_uid'] AND $this->memberData['fb_token'] )
        {
            
/* Connect to the Facebook */
            
$classToLoad = IPSLib::loadLibrary( IPS_ROOT_PATH . 'sources/classes/facebook/connect.php', 'facebook_connect' );
            
$connect     = new $classToLoad( $this->registry );
            
            try
            {
                
$userData = $connect->fetchUserData();                
                
                if ( 
$userData['first_name'] )
                {
                    
/* Log it */
                    
$classToLoad = IPSLib::loadLibrary( IPS_ROOT_PATH . 'sources/classes/share/links.php', 'share_links' );
                    
$share = new $classToLoad( $this->registry, 'facebook' );
                    
$share->log( $url, $title );
                    
                    
$connect->postLinkToWall( $url, $comment );
                    
                    
$this->returnHtml( $this->registry->output->getTemplate('global_other')->facebookDone( $userData ) );
                }
                else
                {
                    
$this->returnHtml( 'finchersaysno' );
                }
                
            }
            catch( 
Exception $e )
            {
                
$this->returnHtml( 'finchersaysno' );
            }
        }
        else
        {
            
/* Bog off */
            
$this->returnString( 'finchersaysno' );
        }
    }

        
    
/**
     * Go go twitter go
     * 
     * @return    @e void        [Outputs HTML to browser AJAX call]
     */
    
protected function _twitterGo()
    {
        
/* INIT */
        
$tweet = trim( urldecode( $_POST['tweet'] ) );
        
$url   = trim( urldecode( $_POST['url'] ) );
        
$title = trim( urldecode( $_POST['title'] ) );
        
        
/* Ensure title is correctly de-html-ized */
        
$title = IPSText::UNhtmlspecialchars( $title );
        
        
/* Ensure we have a twitter account and that */
        
if ( $this->memberData['member_id'] AND $this->memberData['twitter_id'] AND $this->memberData['twitter_token'] AND $this->memberData['twitter_secret'] )
        {
            
/* Connect to the twitter */
            
$classToLoad = IPSLib::loadLibrary( IPS_ROOT_PATH . 'sources/classes/twitter/connect.php', 'twitter_connect' );
            
$connect = new $classToLoad( $this->registry, $this->memberData['twitter_token'], $this->memberData['twitter_secret'] );
            
$user    = $connect->fetchUserData();
            
            if ( 
$user['id'] )
            {
                
$sid = $connect->updateStatusWithUrl( $tweet, $url );
                
                if ( 
$sid )
                {    
                    
/* Log it */
                    
$classToLoad = IPSLib::loadLibrary( IPS_ROOT_PATH . 'sources/classes/share/links.php', 'share_links' );
                    
$share = new $classToLoad( $this->registry, 'twitter' );
                    
$share->log( $url, $title );
                    
                    
$user['status']['id'] = $sid;
                    
$this->returnHtml( $this->registry->output->getTemplate('global_other')->twitterDone( $user ) );
                }
                else
                {
                    
/* Bog off */
                    
$this->returnString( 'failwhale' );
                }
            }
            else
            {
                
/* Bog off */
                
$this->returnString( 'failwhale' );
            }
        }
        else
        {
            
/* Bog off */
            
$this->returnString( 'failwhale' );
        }
    }
    
    
/**
     * Displays a form of twitter stuff. It's really that exciting.
     *
     * @return    @e void        [Outputs HTML to browser AJAX call]
     */
    
protected function _twitterForm()
    {
        
/* Ensure we have a twitter account and that */
        
if ( $this->memberData['member_id'] AND $this->memberData['twitter_id'] AND $this->memberData['twitter_token'] AND $this->memberData['twitter_secret'] )
        {
            
/* Connect to the twitter */
            
$classToLoad = IPSLib::loadLibrary( IPS_ROOT_PATH . 'sources/classes/twitter/connect.php', 'twitter_connect' );
            
$connect = new $classToLoad( $this->registry, $this->memberData['twitter_token'], $this->memberData['twitter_secret'] );
            
$user    = $connect->fetchUserData();
            
            if ( 
$user['id'] )
            {
                
$this->returnHtml( $this->registry->output->getTemplate('global_other')->twitterPop( $user ) );
            }
            else
            {
                
/* Bog off */
                
$this->returnHtml( 'x' );
            }
        }
        else
        {
            
/* Bog off */
            
$this->returnHtml( 'x' );
        }
    }
}
Онлайн: 2
Реклама