Файл: 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' => 0 ), 'bookmark_member_id=' . $this->Member['member_id'] );
if ( ! empty( $id ) )
{
$this->DB->update( 'core_sys_bookmarks', array( 'bookmark_home' => 1 ), '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 &s, missing key=value pairs, etc
* @param string
* @return string
*/
public function cleanUrl( $url )
{
if ( strstr( $url, 'adsess=' ) )
{
preg_match( '#^(?:.+?)?adsess=(?:[dw]{32})(?:&|&)(.*)$#', $url, $matches );
if ( $matches[1] )
{
$url = $matches[1];
}
}
$url = str_replace( '&', '&', $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 );
}
}