Вход Регистрация
Файл: IPBMafia.ru_IPB_3.4.6_Final_Rus _Nulled/board/upload/admin/sources/classes/admin/bookmarks.php
Строк: 111
<?php
/**
 * <pre>
 * Invision Power Services
 * IP.Board v3.4.6
 * Admin Bookmarks Model
 * Last Updated: $Date: 2012-05-10 21:10:13 +0100 (Thu, 10 May 2012) $
 * </pre>
 *
 * @author         Matt Mecham
 * @copyright    (c) 2001 - 2012 Invision Power Services, Inc.
 * @license        http://www.invisionpower.com/company/standards.php#license
 * @package        IP.Board
 * @link        http://www.invisionpower.com
 * @since        Tue. 7th August 2012
 * @version        $Rev: 10721 $
 *
 */

/**
 * Bookmarks model
 * @author matt
 *
 */
class classes_admin_bookmarks
{
    private 
$Member    = array();
    private 
$Bookmarks = array();
    
    
    
/**
     * Construct
     */
    
public function __construct()
    {
        
/* Make objects */
        
$this->registry ipsRegistry::instance();
        
$this->DB        $this->registry->DB();
        
$this->settings =& $this->registry->fetchSettings();
        
$this->request  =& $this->registry->fetchRequest();
        
$this->lang        $this->registry->getClass('class_localization');
        
$this->member   $this->registry->member();
        
$this->memberData =& $this->registry->member()->fetchMemberData();
        
$this->cache    $this->registry->cache();
        
$this->caches   =& $this->registry->cache()->fetchCaches();
        
        if ( 
$this->memberData['member_id'] )
        {
            
$this->setMember$this->memberData );
        }
    }
    
    
/**
     * Set a member for the scope of this class
     * @param    mixed
     */
    
public function setMember$member )
    {
        if ( 
is_numeric$member ) )
        {
            
$this->Member IPSMember::load$member );
        }
        else if ( 
is_array$member ) && ! empty( $member['member_id'] ) )
        {
            
$this->Member $member;
        }
        else
        {
            
trigger_error("Member data incorrect"E_USER_ERROR); 
        }
        
        
/* Load bookmarks */        
        
$bookmarks = array();
        
        
$this->DB->build( array( 'select' => '*',
                                                         
'from'   => 'core_sys_bookmarks',
                                                         
'where'  => 'bookmark_member_id=' intval$this->Member['member_id'] ),
                                                         
'order'  => 'bookmark_pos ASC' ) );    
        
$b $this->DB->execute();
        
        while( 
$row $this->DB->fetch$b ) )
        {
            
$bookmarks[$row['bookmark_id']] = $row;
        }
        
        
$this->Bookmarks $bookmarks;
    }
    
    
/**
     * Get the home URL
     */
    
public function getHomeUrl()
    {
        
$url false;
        
        if ( 
is_array$this->Bookmarks ) && count$this->Bookmarks ) )
        {
            foreach( 
$this->Bookmarks as $id => $data )
            {
                if ( 
$data['bookmark_home'] )
                {
                    
$url $data['bookmark_url'];
                    break;
                }
            }
        }
        
        return 
$url;
    }
    
    
/**
     * Update the bookmark
     * @param    int        Id
     * @param    array    array( title, position )
     */
    
public function update$id$data=array() )
    {
        if ( 
$id && count$data ) )
        {
            
$save = array();
            
            if ( ! empty( 
$data['title'] ) )
            {
                
$save['bookmark_title'] = $this->DB->addSlashes$data['title'] );
            }
            
            if ( isset( 
$data['position'] ) )
            {
                
$save['bookmark_pos'] = intval$data['position'] );
            }
            
            
$this->DB->update'core_sys_bookmarks'$save'bookmark_id=' intval$id ) . ' AND bookmark_member_id=' $this->Member['member_id'] );
        }
        
        
$this->setMember$this->Member );
    }
    
    
/**
     * Get bookmarks
     * @param    int
     */
    
public function getBookmarks()
    {
        return 
$this->Bookmarks;
    }
    
    
/**
     * Remove a bookmark
     * @param   int     bookmark id
     */
    
public function removeBookmark$id )
    {
        
$this->DB->delete'core_sys_bookmarks''bookmark_member_id=' $this->Member['member_id'] . ' AND bookmark_id=' intval$id ) );
    
        
/* Reset stored markers */
        
$this->setMember$this->Member );
    }
    
    
/**
     * Add a bookmark
     * @param   int     memberId
     * @param    string    URL
     * @param    string  Title
     * @param    boolean    asHome
     */
    
public function addBookmark$url$title$asHome=false )
    {
        
$url $this->cleanUrl$url );
        
        if ( ! 
$url || ! $title )
        {
            throw new 
Exception("Data missing");
        }
        
        
/* Already stored? */
        
if ( $this->hasBookmarked$url ) )
        {
            return 
true;
        }
        
        
$this->DB->insert'core_sys_bookmarks', array( 'bookmark_member_id' => $this->Member['member_id'],
                                                        
'bookmark_title'     => $title,
                                                        
'bookmark_url'         => $url,
                                                        
'bookmark_home'      => $asHome,
                                                        
'bookmark_pos'         => count$this->Bookmarks ) ) );
    
        
$insertId $this->DB->getInsertId();
        
        if ( 
$asHome )
        {
            
$this->setAsHome$insertId );
        }
        
        
/* Reset stored markers */
        
$this->setMember$this->Member );
    }
    
    
/**
     * Set an ID as home
     * @param int $id
     */
    
public function setAsHome$id )
    {
        
$this->DB->update'core_sys_bookmarks', array( 'bookmark_home' => ), 'bookmark_member_id=' $this->Member['member_id'] );
        
        if ( ! empty( 
$id ) )
        {
            
$this->DB->update'core_sys_bookmarks', array( 'bookmark_home' => ), 'bookmark_member_id=' $this->Member['member_id'] . ' AND bookmark_id=' intval$id ) );
        }
    }
    
    
/**
     * Test to see if the URL has already been bookmarked
     * @param string $url
     * @return boolean
     */
    
public function hasBookmarked$url )
    {
        
$url $this->cleanUrl$url );
        
        if ( 
is_array$this->Bookmarks ) && count$this->Bookmarks ) )
        {
            foreach( 
$this->Bookmarks as $id => $data )
            {
                if ( 
$data['bookmark_url'] == $url )
                {
                    return 
true;
                }
            }
        }
        
        return 
false;
    }
    
    
/**
     * Return bookmarks as Bob, er, I mean, Json.
     */
    
public function asJson()
    {
        
$bob = array();
        
        if ( 
is_array$this->Bookmarks ) && count$this->Bookmarks ) )
        {
            foreach( 
$this->Bookmarks as $id => $data )
            {
                
$bob$id ] = array( 'url'   => $data['bookmark_url'],
                                     
'title' => $data['bookmark_title'],
                                     
'home'  => $data['bookmark_home'] );
            }
        }
        
        return 
json_encode$bob );
    }
    
    
/**
     * Clean up the URL, remove encoded &amps, missing key=value pairs, etc
     * @param    string
     * @return    string
     */
    
public function cleanUrl$url )
    { 
        if ( 
strstr$url'adsess=' ) )
        {
            
preg_match'#^(?:.+?)?adsess=(?:[dw]{32})(?:&amp;|&)(.*)$#'$url$matches );
            
            if ( 
$matches[1] )
            {
                
$url $matches[1]; 
            }
        }
        
        
$url str_replace'&amp;''&'$url );
        
        
parse_str$url$array );
        
        if ( ! 
count$array ) )
        {
            return 
false;
        }
        
        
/* Remove empty elements */
        
foreach( $array as $k => $v )
        {
            if ( ! 
is_array$v ) && ! strlen$v ) )
            {
                unset( 
$array$k ] );
            }
        }
        
        return 
http_build_query$array );
    }
    
}
Онлайн: 0
Реклама