Вход Регистрация
Файл: IPBMafia.ru_IPB_3.4.6_Final_Rus _Nulled/board/upload/interface/board/modules/ipb/api.php
Строк: 479
<?php

/**
 * <pre>
 * Invision Power Services
 * IP.Board v3.4.6
 * Remote API Server
 * Last Updated: $Date: 2013-03-21 17:38:09 -0400 (Thu, 21 Mar 2013) $
 * </pre>
 *
 * @author         $Author: AndyMillne $
 * @copyright    (c) 2001 - 2009 Invision Power Services, Inc.
 * @license        http://www.invisionpower.com/company/standards.php#license
 * @package        IP.Board
 * @link        http://www.invisionpower.com
 * @version        $Rev: 12109 $
 *
 */

class API_Server
{
    
/**
     * Defines the service for WSDL
     *
     * @var        array
     */            
    
public $__dispatch_map = array();
    
    
/**
     * IPS Global Class
     *
     * @var        object
     */
    
protected $registry;
    
    
/**
     * IPS API SERVER Class
     *
     * @var        object
     */
    
public $classApiServer;
    
    
/**
     * Constructor
     * 
     * @return    @e void
     */        
    
public function __construct$registry 
    {
        
//-----------------------------------------
        // Set IPS CLASS
        //-----------------------------------------
        
        
$this->registry $registry;
        
        
//-----------------------------------------
        // Load allowed methods and build dispatch
        // list
        //-----------------------------------------
        
$ALLOWED_METHODS = array();
        require_once( 
DOC_IPS_ROOT_PATH 'interface/board/modules/ipb/methods.php' );/*noLibHook*/
        
        
if ( is_array$ALLOWED_METHODS ) and count$ALLOWED_METHODS ) )
        {
            foreach( 
$ALLOWED_METHODS as $_method => $_data )
            {
                
$this->__dispatch_map$_method ] = $_data;
            }
        }
    }
    
    
/**
     * Returns the list of online users
     * 
     * @param    string  $api_key        Authentication Key
     * @param     string  $api_module        Module
     * @param    string    $sep_character    Separator character
     * @return    string    xml
     */    
    
public function fetchOnlineUsers$api_key$api_module$sep_character=',' )
    {
        
//-----------------------------------------
        // INIT
        //-----------------------------------------

        
$api_key    IPSText::md5Clean$api_key );
        
$api_module    IPSText::parseCleanValue$api_module );
        
        
//-----------------------------------------
        // Authenticate
        //-----------------------------------------
        
        
if ( $this->__authenticate$api_key$api_module'fetchOnlineUsers' ) !== FALSE )
        {
            
            
//-----------------------------------------
            // Add log
            //-----------------------------------------
                
            
$this->addLogging$api_key );
            
            if ( !
ipsRegistry::$settings['au_cutoff'] )
            {
                
ipsRegistry::$settings'au_cutoff'] =  15 ;
            }
         
            
$cut_off ipsRegistry::$settings['au_cutoff'] * 60;
            
$time    time() - $cut_off;
            
$rows    = array();
            
$ar_time time();
            
            
$this->registry->DB()->build( array( 'select'    => '*',
                                                 
'from'        => 'sessions',
                                                  
'where'    => "running_time > {$time}) );
            
$this->registry->DB()->execute();
            
            
//-----------------------------------------
            // FETCH...
            //-----------------------------------------
            
            
while ( $r $this->registry->DB()->fetch() )
            {
                
$rows$r['running_time'].'.'.$r['id'] ] = $r;
            }
            
            
krsort$rows );

            
//-----------------------------------------
            // cache all printed members so we
            // don't double print them
            //-----------------------------------------
            
            
$cached = array();
            
            foreach ( 
$rows as $result )
            {
                
$last_date ipsRegistry::getClass'class_localization')->getTime$result['running_time'] );
                
                
//-----------------------------------------
                // Bot?
                //-----------------------------------------
                
                
if ( isset( $result['uagent_type'] ) && $result['uagent_type'] == 'search' )
                {
                    
//-----------------------------------------
                    // Seen bot of this type yet?
                    //-----------------------------------------
                    
                    
if ( ! $cached$result['member_name'] ] )
                    {
                        
$active['NAMES'][] = $result['member_name'];
                        
$cached$result['member_name'] ] = 1;
                    }
                    else
                    {
                        
//-----------------------------------------
                        // Yup, count others as guest
                        //-----------------------------------------
                        
                        
$active['GUESTS']++;
                    }
                }
                
                
//-----------------------------------------
                // Guest?
                //-----------------------------------------
                
                
else if ( ! $result['member_id'] OR ! $result['member_name'] )
                {
                    
$active['GUESTS']++;
                }
                
                
//-----------------------------------------
                // Member?
                //-----------------------------------------
                
                
else
                {
                    if ( empty( 
$cached$result['member_id'] ] ) )
                    {
                        
$cached$result['member_id'] ] = 1;

                        
$result['member_name'] = IPSMember::makeNameFormatted$result['member_name'], $result['member_group'] );
                        
                        
/* Reset login type in case the board/group setting got changed */
                        
$result['login_type']  = IPSMember::isLoggedInAnon( array( 'login_anonymous' => $result['login_type'] ), $result['member_group'] );
                        
                        if ( 
$result['login_type'] )
                        {
                            if ( 
$this->registry->member()->getProperty('g_access_cp') )
                            {
                                
$active['NAMES'][] = "<a href='" $this->registry->getClass('output')->buildSEOUrl"showuser={$result['member_id']}"'public'$result['seo_name'], 'showuser' ) . "' title='$last_date'>{$result['member_name']}</a>*";
                                
$active['ANON']++;
                            }
                            else
                            {
                                
$active['ANON']++;
                            }
                        }
                        else
                        {
                            
$active['MEMBERS']++;
                            
$active['NAMES'][] = "<a href='" $this->registry->getClass('output')->buildSEOUrl"showuser={$result['member_id']}"'public'$result['seo_name'], 'showuser' ) ."' title='$last_date'>{$result['member_name']}</a>";
                        }
                    }
                }
            }
            
            
$active['TOTAL'] = $active['MEMBERS'] + $active['GUESTS'] + $active['ANON'];
            
            
//-----------------------------------------
            // Return info
            //-----------------------------------------
            
            
$this->classApiServer->apiSendReply$active );
            exit();
        }
    }
    
    
/**
     * Returns details about the board
     * 
     * @param    string  $api_key      Authentication Key
     * @param    string  $api_module  Module
     * @return    string    xml
     */    
    
public function fetchStats$api_key$api_module )
    {
        
//-----------------------------------------
        // INIT
        //-----------------------------------------

        
$api_key                IPSText::md5Clean$api_key );
        
$api_module             IPSText::parseCleanValue$api_module );
        
        
//-----------------------------------------
        // Authenticate
        //-----------------------------------------
        
        
if ( $this->__authenticate$api_key$api_module'fetchStats' ) !== FALSE )
        {
            
//-----------------------------------------
            // Add log
            //-----------------------------------------
                
            
$this->addLogging$api_key );
            
            
$stats $this->registry->cache()->getCache('stats');

            
$most_time     ipsRegistry::getClass('class_localization')->getDate$stats['most_date'], 'LONG' );
            
$most_count    ipsRegistry::getClass('class_localization')->formatNumber$stats['most_count'] );
            
            
$total_posts   $stats['total_topics'] + $stats['total_replies'];
            
            
$total_posts   ipsRegistry::getClass('class_localization')->formatNumber($total_posts);
            
$mem_count     ipsRegistry::getClass('class_localization')->formatNumber($stats['mem_count']);
            
$mem_last_id   $stats['last_mem_id'];
            
$mem_last_name $stats['last_mem_name'];
            
            
//-----------------------------------------
            // Return info
            //-----------------------------------------
            
            
$this->classApiServer->apiSendReply( array( 'users_most_online'         => $most_count,
                                                             
'users_most_date_formatted' => $most_time,
                                                            
'users_most_data_unix'        => $stats['most_date'],
                                                            
'total_posts'                => $total_posts,
                                                            
'total_members'                => $mem_count,
                                                            
'last_member_id'            => $mem_last_id,
                                                            
'last_member_name'            => $mem_last_name ) );
            exit();
        }
    }
    
    
/**
     * Returns hello board test
     * 
     * @param    string  $api_key    Authentication Key
     * @param    string  $api_module    Module
     * @return    string    xml
     */    
    
public function helloBoard$api_key$api_module )
    {
        
//-----------------------------------------
        // INIT
        //-----------------------------------------

        
$api_key                IPSText::md5Clean$api_key );
        
$api_module             IPSText::parseCleanValue$api_module );
        
        
//-----------------------------------------
        // Authenticate
        //-----------------------------------------
        
        
if ( $this->__authenticate$api_key$api_module'helloBoard' ) !== FALSE )
        {
            
            
//-----------------------------------------
            // Add log
            //-----------------------------------------
                
            
$this->addLogging$api_key );
            
            
//-----------------------------------------
               // Upgrade history?
               //-----------------------------------------

               
$latest_version = array( 'upgrade_version_id' => NULL );

               
$this->registry->DB()->build( array( 'select' => '*''from' => 'upgrade_history''where' => "upgrade_app='core'"'order' => 'upgrade_version_id DESC''limit' => array(1) ) );
               
$this->registry->DB()->execute();

               while( 
$r $this->registry->DB()->fetch() )
               {
                
$latest_version $r;
               }
    
            
//-----------------------------------------
            // Return info
            //-----------------------------------------
            
            
$this->classApiServer->apiSendReply( array( 'board_name'            => ipsRegistry::$settings['board_name'],
                                                             
'upload_url'            => ipsRegistry::$settings['upload_url'],
                                                             
'ipb_img_url'           => ipsRegistry::$settings['ipb_img_url'],
                                                             
'board_human_version' => $latest_version['upgrade_version_human'],
                                                            
'board_long_version'  => !empty($latest_version['upgrade_notes']) ? $latest_version['upgrade_notes'] : ipsRegistry::$vn_full ) );
            
            exit();
        }
    }
    
    
/**
     * Posts a topic to the board remotely
     * 
     * @param    string  $api_key        Authentication Key
     * @param    string  $api_module        Module
     * @param    string    $member_field    Member field to check (valid: "id", "email", "username", "displayname")
     * @param    string    $member_key        Member key to check for
     * @param    integer    $forum_id        Forum id to post in
     * @param    string    $topic_title    Topic title
     * @param    string    $post_content    Posted content
     * @return    string    xml
     */    
    
public function postTopic$api_key$api_module$member_field$member_key$forum_id$topic_title$post_content )
    {
        
//-----------------------------------------
        // INIT
        //-----------------------------------------

        
$api_key                IPSText::md5Clean$api_key );
        
$api_module             IPSText::parseCleanValue$api_module );
        
$member_field           IPSText::parseCleanValue$member_field );
        
$member_key             IPSText::parseCleanValue$member_key );
        
$topic_title            IPSText::parseCleanValue$topic_title );
        
$forum_id                intval$forum_id );
        
$UNCLEANED_post_content $post_content;
        
        
//-----------------------------------------
        // Authenticate
        //-----------------------------------------
        
        
if ( $this->__authenticate$api_key$api_module'postTopic' ) !== FALSE )
        {
            
//-----------------------------------------
            // Add log
            //-----------------------------------------
            
            
$this->addLogging$api_key );

            
//-----------------------------------------
            // Member field...
            //-----------------------------------------
            
            
$member    IPSMember::load$member_key'all'$member_field );

            
//-----------------------------------------
            // Got a member?
            //-----------------------------------------
            
            
if ( ! $member['member_id'] )
            {
                
$this->classApiServer->apiSendError'10'"IP.Board could not locate a member using $member_key / $member_field);
            }
            
            
//-----------------------------------------
            // Get some classes
            //-----------------------------------------

            
ipsRegistry::getAppClass'forums' );

            require_once( 
IPSLib::getAppDir'forums' ) . '/sources/classes/post/classPost.php' );/*noLibHook*/
            
$classToLoad IPSLib::loadLibraryIPSLib::getAppDir'forums' ) . '/sources/classes/post/classPostForms.php''classPostForms''forums' );
            
$_postClass = new $classToLoad$this->registry );
            
            
/* reset forum list to allow all access */
            
$this->registry->getClass('class_forums')->strip_invisible false;
            
$this->registry->getClass('class_forums')->forumsInit();
                
            
//-----------------------------------------
            // Set the data
            //-----------------------------------------
        
            
$_postClass->setIsPreviewfalse );
            
$_postClass->setForumData$this->registry->getClass('class_forums')->forum_by_id$forum_id ] );
            
$_postClass->setForumID$forum_id );
            
$_postClass->setPostContent$UNCLEANED_post_content );
            
$_postClass->setAuthor$member['member_id'] );
            
$_postClass->setPublishedtrue );
            
$_postClass->setSettings( array( 'enableSignature' => 1,
                                                   
'enableEmoticons' => 1,
                                                   
'post_htmlstatus' => 0,
                                                   
'enableTracker'   => ) );
            
$_postClass->setTopicTitle$topic_title );

            
# Switch off perm checks
            
$_postClass->setBypassPermissionCheck(true);
            
/**
             * And post it...
             */
            
try
            {
                if ( 
$_postClass->addTopic() === FALSE )
                {
                    
$this->classApiServer->apiSendError'10'"IP.Board could not post the topic: " $_postClass->getPostError() );
                }
            }
            catch( 
Exception $error )
            {
                
$this->classApiServer->apiSendError'10'"IP.Board post class exception: " $error->getMessage() );
            }

            
$this->classApiServer->apiSendReply( array( 
                                                        
'result'   => 'success',
                                                        
'topic_id' => $_postClass->getTopicData('tid')
                                                )    );
            exit();
        }
    }
    
    
/**
     * Posts a topic reply
     * 
     * @param    string  $api_key        Authentication Key
     * @param    string  $api_module        Module
     * @param    string    $member_field    Member field to check (valid: "id", "email", "username", "displayname")
     * @param    string    $member_key        Member key to check for
     * @param    integer    $topic_id        Topic id to post in
     * @param    string    $post_content    Posted content
     * @return    string    xml
     */    
    
public function postReply$api_key$api_module$member_field$member_key$topic_id$post_content )
    {
        
//-----------------------------------------
        // INIT
        //-----------------------------------------

        
$api_key                IPSText::md5Clean$api_key );
        
$api_module             IPSText::parseCleanValue$api_module );
        
$member_field           IPSText::parseCleanValue$member_field );
        
$member_key             IPSText::parseCleanValue$member_key );
        
$topic_id                intval$topic_id );
        
$UNCLEANED_post_content $post_content;
        
        
//-----------------------------------------
        // Authenticate
        //-----------------------------------------
        
        
if ( $this->__authenticate$api_key$api_module'postReply' ) !== FALSE )
        {
            
//-----------------------------------------
            // Add log
            //-----------------------------------------
            
            
$this->addLogging$api_key );

            
//-----------------------------------------
            // Member field...
            //-----------------------------------------
            
            
$member    IPSMember::load$member_key'all'$member_field );
            
            
//-----------------------------------------
            // Got a member?
            //-----------------------------------------
            
            
if ( ! $member['member_id'] )
            {
                
$this->classApiServer->apiSendError'10'"IP.Board could not locate a member using $member_key / $member_field);
            }

            
//-----------------------------------------
            // Get some classes
            //-----------------------------------------

            
ipsRegistry::getAppClass'forums' );

            require_once( 
IPSLib::getAppDir'forums' ) . '/sources/classes/post/classPost.php' );/*noLibHook*/
            
$classToLoad IPSLib::loadLibraryIPSLib::getAppDir'forums' ) . '/sources/classes/post/classPostForms.php''classPostForms''forums' );
            
$_postClass = new $classToLoad$this->registry );
            
            
/* reset forum list to allow all access */
            
$this->registry->getClass('class_forums')->strip_invisible false;
            
$this->registry->getClass('class_forums')->forumsInit();
            
            
//-----------------------------------------
            // Need the topic...
            //-----------------------------------------
            
            
$topic    $this->registry->DB()->buildAndFetch( array( 'select' => '*''from' => 'topics''where' => 'tid=' $topic_id ) );
            
            
//-----------------------------------------
            // Set the data
            //-----------------------------------------

            
$_postClass->setIsPreviewfalse );
            
$_postClass->setForumData$this->registry->getClass('class_forums')->forum_by_id$topic['forum_id'] ] );
            
$_postClass->setForumID$topic['forum_id'] );
            
$_postClass->setTopicID$topic_id );
            
$_postClass->setTopicData$topic );
            
$_postClass->setPostContent$UNCLEANED_post_content );
            
$_postClass->setAuthor$member['member_id'] );
            
$_postClass->setPublishedtrue );
            
$_postClass->setSettings( array( 'enableSignature' => 1,
                                                   
'enableEmoticons' => 1,
                                                   
'post_htmlstatus' => 0,
                                                   
'enableTracker'   => ) );
            
            
/**
             * And post it...
             */
            
try
            {
                if ( 
$_postClass->addReply() === FALSE )
                {
                    
//print $_postClass->_postErrors;
                    
$this->classApiServer->apiSendError'10'"IP.Board could not add the reply " $_postClass->_postErrors );
                }
            }
            catch( 
Exception $error )
            {
                
$this->classApiServer->apiSendError'10'"IP.Board post class exception: " $error->getMessage() );
            }

            
$this->classApiServer->apiSendReply( array( 'result'   => 'success' ) );
                                                            

            exit();
        }
    }
    
    
/**
     * Returns a member
     * 
     * @param    string  $api_key        Authentication Key
     * @param    string  $api_module        Module
     * @param    string    $search_type    Member field to check (valid: "id", "email", "username", "displayname")
     * @param    string    $search_string    String to search for
     * @return    string    xml
     */    
    
public function fetchMember$api_key$api_module$search_type$search_string )
    {
        
//-----------------------------------------
        // INIT
        //-----------------------------------------

        
$api_key                IPSText::md5Clean$api_key );
        
$api_module             IPSText::parseCleanValue$api_module );
        
$search_type            IPSText::parseCleanValue$search_type );
        
$search_string          IPSText::parseCleanValue$search_string );
        
        
//-----------------------------------------
        // Authenticate
        //-----------------------------------------
        
        
if ( $this->__authenticate$api_key$api_module'fetchMember' ) !== FALSE )
        {
            
//-----------------------------------------
            // Add log
            //-----------------------------------------
            
            
$this->addLogging$api_key );

            
//-----------------------------------------
            // Fetch forum list
            //-----------------------------------------
            
            
$member IPSMember::load$search_string'all'$search_type );
            
            if ( ! 
$member['member_id'] )
            {
                
$member = array( 'member_id' => );
            }

            
//-----------------------------------------
            // Return the data
            //-----------------------------------------
        
            
$this->classApiServer->apiSendReply$member );
            exit();
        }
    }
    
    
/**
     * Check if a member exists
     * 
     * @param    string  $api_key        Authentication Key
     * @param    string  $api_module        Module
     * @param    string    $search_type    Member field to check (valid: "id", "email", "username", "displayname")
     * @param    string    $search_string    String to search for
     * @return    string    xml
     */    
    
public function checkMemberExists$api_key$api_module$search_type$search_string )
    {
        
//-----------------------------------------
        // INIT
        //-----------------------------------------

        
$api_key                IPSText::md5Clean$api_key );
        
$api_module             IPSText::parseCleanValue$api_module );
        
$search_type            IPSText::parseCleanValue$search_type );
        
$search_string          IPSText::parseCleanValue$search_string );
        
        
//-----------------------------------------
        // Authenticate
        //-----------------------------------------
        
        
if ( $this->__authenticate$api_key$api_module'checkMemberExists' ) !== FALSE )
        {
            
//-----------------------------------------
            // Add log
            //-----------------------------------------
            
            
$this->addLogging$api_key );

            
$member IPSMember::load$search_string'all'$search_type );
            
            
//-----------------------------------------
            // Return the data
            //-----------------------------------------
        
            
$this->classApiServer->apiSendReply( array( 'memberExists' => $member['member_id'] ? true false ) );
            exit();
        }
    }
    
    
/**
     * Fetch the forum options list.
     * WARNING: Last two options are deprecated and no longer supported. All viewable forums returned. User is automatically treated like a guest.
     * 
     * @param    string  $api_key        Authentication Key
     * @param    string  $api_module        Module
     * @param    string    $selected_forum_ids    Comma separated list of forum ids
     * @param    bool    $view_as_guest    Treat user as a guest
     * @return    string    xml
     */    
    
public function fetchForumsOptionList$api_key$api_module$selected_forum_ids$view_as_guest )
    {
        
//-----------------------------------------
        // INIT
        //-----------------------------------------

        
$api_key                IPSText::md5Clean$api_key );
        
$api_module             IPSText::parseCleanValue$api_module );
        
        
//-----------------------------------------
        // Authenticate
        //-----------------------------------------
        
        
if ( $this->__authenticate$api_key$api_module'fetchForumsOptionList' ) !== FALSE )
        {
            
//-----------------------------------------
            // Add log
            //-----------------------------------------
            
            
$this->addLogging$api_key );
            
            
//-----------------------------------------
            // Get some classes
            //-----------------------------------------

            
ipsRegistry::getAppClass'forums' );

            
//-----------------------------------------
            // Fetch forum list
            //-----------------------------------------
            
            
$list $this->registry->getClass('class_forums')->forumsForumJump();
            
            
//-----------------------------------------
            // Return the data
            //-----------------------------------------
        
            
$this->classApiServer->apiSendReply( array( 'forumList' => $list ) );
            exit();
        }
    }
    
    
/**
     * Returns the board's forums.
     * WARNING: Last option is deprecated and no longer supported.  User is automatically treated like a guest.
     * 
     * @param    string  $api_key        Authentication Key
     * @param    string  $api_module        Module
     * @param    string    $forum_ids        Comma separated list of forum ids
     * @param    bool    $view_as_guest    Treat user as a guest
     * @return    string    xml
     */    
    
public function fetchForums$api_key$api_module$forum_ids$view_as_guest )
    {
        
//-----------------------------------------
        // INIT
        //-----------------------------------------

        
$api_key       IPSText::md5Clean$api_key );
        
$api_module    IPSText::parseCleanValue$api_module );
        
$forum_ids     = ( $forum_ids ) ? explode','IPSText::parseCleanValue$forum_ids ) ) : null;
        
$view_as_guest intval$view_as_guest );
        
        
//-----------------------------------------
        // Authenticate
        //-----------------------------------------
        
        
if ( $this->__authenticate$api_key$api_module'fetchForums' ) !== FALSE )
        {
            
//-----------------------------------------
            // Add log
            //-----------------------------------------
            
            
$this->addLogging$api_key );
            
            
//-----------------------------------------
            // Get some classes
            //-----------------------------------------

            
ipsRegistry::getAppClass'forums' );

            
//-----------------------------------------
            // Fetch forum list
            //-----------------------------------------
            
            
$return    = array();
            
            foreach( 
$forum_ids as $id )
            {
                
$return[]    = $this->registry->getClass('class_forums')->forumsFetchData$id );
            }
            
            
//-----------------------------------------
            // Return the data
            //-----------------------------------------
        
            
$this->classApiServer->apiSendReply$return );
            exit();
        }
    }
    
    
/**
     * Returns topics based on request params
     * 
     * @param    string  $api_key        Authentication Key
     * @param    string  $api_module        Module
     * @param    string    $forum_ids        Comma separated list of forum ids
     * @param    string    $order_field    DB field to order by
     * @param    string    $order_by        One of "asc" or "desc"
     * @param    integer    $offset            Start point offset for results
     * @param    integer    $limit            Number of results to pull
     * @param    bool    $view_as_guest    Treat user as a guest
     * @return    string    xml
     */    
    
public function fetchTopics$api_key$api_module$forum_ids$order_field$order_by$offset$limit$view_as_guest$parse_display )
    {
        
//-----------------------------------------
        // INIT
        //-----------------------------------------

        
$api_key       IPSText::md5Clean$api_key );
        
$api_module    IPSText::parseCleanValue$api_module );
        
$forum_ids        IPSText::parseCleanValue$forum_ids );
        
$order_field   IPSText::parseCleanValue$order_field );
        
$order_by      = ( strtolower$order_by ) == 'asc' ) ? 'asc' 'desc';
        
$offset           intval$offset );
        
$limit           intval$limit );
        
$view_as_guest intval$view_as_guest );
        
$parse_display intval$parse_display );
        
        
//-----------------------------------------
        // Authenticate
        //-----------------------------------------
        
        
if ( $this->__authenticate$api_key$api_module'fetchTopics' ) !== FALSE )
        {
            
//-----------------------------------------
            // Add log
            //-----------------------------------------
            
            
$this->addLogging$api_key );
            
            
//-----------------------------------------
            // Get API classes
            //-----------------------------------------

            
$classToLoad IPSLib::loadLibraryIPS_ROOT_PATH '/api/forums/api_topic_view.php''apiTopicView' );
            
$topic_view     = new $classToLoad();
            
            
//-----------------------------------------
            // Fetch topic list
            //-----------------------------------------
            
            
$topic_view->topic_list_config['order_field']    = $order_field;
            
$topic_view->topic_list_config['order_by']        = $order_by;
            
$topic_view->topic_list_config['forums']        = $forum_ids;
            
$topic_view->topic_list_config['offset']        = $offset;
            
$topic_view->topic_list_config['limit']            = $limit;
            
            
$topics $topic_view->return_topic_list_data$view_as_guest$parse_display );
            
            
//-----------------------------------------
            // Return the data
            //-----------------------------------------
        
            
$this->classApiServer->apiSendReply$topics );
            exit();
        }
    }
    
    
/**
     * Adds logging obviously :)
     *
     * @param    string  $api_key        Authentication Key
     */
    
public function addLogging$api_key )
    {
        if ( 
ipsRegistry::$settings['xmlrpc_log_type'] != 'failed' )
        {
            
$this->registry->DB()->insert'api_log', array(   'api_log_key'     => $api_key,
                    
'api_log_ip'      => $_SERVER['REMOTE_ADDR'],
                    
'api_log_date'    => time(),
                    
'api_log_query'   => $this->classApiServer->raw_request,
                    
'api_log_allowed' => ) );
        }
    }    

    
/**
     * Checks to see if the request is allowed
     * 
     * @param    string    $api_key        Authenticate Key
     * @param    string    $api_module        Module
     * @param    string    $api_function    Function 
     * @return    string    Error message, if any
     */
    
protected function __authenticate$api_key$api_module$api_function )
    {
        
//-----------------------------------------
        // Check
        //-----------------------------------------
        
        
if ( $this->api_user['api_user_id'] )
        {
            
$this->api_user['_permissions'] = unserializestripslashes$this->api_user['api_user_perms'] ) );
            
            if ( 
$this->api_user['_permissions'][ $api_module ][ $api_function ] == )
            {
                return 
TRUE;
            }
            else
            {
                
$this->registry->DB()->insert'api_log', array(   'api_log_key'     => $api_key,
                                                                    
'api_log_ip'      => $_SERVER['REMOTE_ADDR'],
                                                                    
'api_log_date'    => time(),
                                                                    
'api_log_query'   => $this->classApiServer->raw_request,
                                                                    
'api_log_allowed' => ) );
                
                
$this->classApiServer->apiSendError'200'"API Key {$api_key} does not have permission for {$api_module}/{$api_function});

                return 
FALSE;
            }
        }
        else
        {
            
$this->registry->DB()->insert'api_log', array(   'api_log_key'     => $api_key,
                                                                
'api_log_ip'      => $_SERVER['REMOTE_ADDR'],
                                                                
'api_log_date'    => time(),
                                                                
'api_log_query'   => $this->classApiServer->raw_request,
                                                                
'api_log_allowed' => ) );
            
            
$this->classApiServer->apiSendError'100'"API Key {$api_key} does not have permission for {$api_module}/{$api_function});
                                                                                                                                                        
            return 
FALSE;
        }
    }

}
Онлайн: 2
Реклама