Файл: admin/sources/classes/share/plugins/blogthis.php
Строк: 102
<?php
/**
* <pre>
* Invision Power Services
* IP.Board v3.3.3
* Blog This plug in for share links library.
*
* Created by Mark Wade
* Last Updated: $Date: 2011-05-05 12:03:47 +0100 (Thu, 05 May 2011) $
* </pre>
*
* @author $Author: ips_terabyte $
* @copyright © 2011 Invision Power Services, Inc.
* @license http://www.invisionpower.com/company/standards.php#license
* @package IP.Board
* @link http://www.invisionpower.com
* @version $Rev: 8644 $
*
*/
class sl_blogthis
{
/**
* Requires a permission check
*
* @access public
* @param array Data array
* @return boolean
*/
public function requiresPermissionCheck( $array )
{
return true;
}
/**
* Share
*
* @access private
* @param string Plug in
*/
public function share( $title, $url )
{
/* Init vars */
$appChosen = NULL;
$furlRegex = NULL;
/* Which app should we load? */
if ( !empty( ipsRegistry::$request['overrideApp'] ) )
{
$appChosen = trim(ipsRegistry::$request['overrideApp']);
}
/* If friendly URLs are off, this is really easy */
elseif ( empty( ipsRegistry::$settings['use_friendly_urls'] ) )
{
$urlParsed = parse_url( $url );
parse_str( $urlParsed['query'], $check );
if ( empty( $check['app'] ) )
{
$classToLoad = IPSLib::loadLibrary( IPS_ROOT_PATH . 'sources/classes/share/links.php', 'share_links' );
$share = new $classToLoad( ipsRegistry::instance(), 'blogthis' );
$url = array_merge( $check, $share->deconstructUrl( $url ) );
$appChosen = $url['data_app'];
}
else
{
$url = $check;
$appChosen = $check['app'];
}
}
/* It's not that easy.. Work out what app this URL belongs to */
else
{
$url = str_replace( ipsRegistry::$settings['_original_base_url'], '', $url );
$url = str_replace( array( '/index.php/', '/index.php?/' ), '/', $url );
foreach ( ipsRegistry::$applications as $app )
{
$_file = IPSLib::getAppDir( $app['app_directory'] ) . '/extensions/furlTemplates.php';
if ( is_file( $_file ) )
{
$_SEOTEMPLATES = array();
require( $_file );/*noLibHook*/
foreach ( $_SEOTEMPLATES as $k => $data )
{
if ( preg_match( $data['in']['regex'], $url ) )
{
$appChosen = $app['app_directory'];
$furlRegex = $data['in']['regex'];
break 2;
}
}
}
}
}
/* Got a blogthis extension file for it? */
if ( ! empty( $appChosen ) && IPSLib::appIsInstalled( $appChosen ) )
{
$file = '';
if ( is_file( IPSLib::getAppDir( $appChosen ) . '/extensions/blogthis/bt_'. $appChosen .'.php' ) )
{
$file = IPSLib::getAppDir( $appChosen ) . '/extensions/blogthis/bt_'. $appChosen .'.php';
}
elseif ( is_file( IPSLib::getAppDir( 'blog' ) . '/extensions/blogthis/bt_'. $appChosen .'.php' ) )
{
$file = IPSLib::getAppDir( 'blog' ) . '/extensions/blogthis/bt_'. $appChosen .'.php';
}
if ( $file )
{
require_once( IPSLib::getAppDir( 'blog' ) . '/sources/classes/blogthis/bt.php' );/*noLibHook*/
$className = IPSLib::loadLibrary( $file, 'bt_' . $appChosen, $appChosen );
$class = new $className( ipsRegistry::instance(), $appChosen );
if ( method_exists( $class, 'getIds' ) )
{
$ids = $class->getIds( $url, $furlRegex );
$idString = '';
foreach ( $ids as $k => $v )
{
$idString .= '&id' . intval( $k ) . '=' . urlencode( $v );
}
ipsRegistry::getClass('output')->silentRedirect( ipsRegistry::getClass('output')->buildUrl( "app=blog&module=post§ion=post&do=showform&btapp={$appChosen}{$idString}" ) );
}
}
}
/* Still here? Use a generic return then */
$encodedTitle = base64_encode( $title );
$encodedUrl = base64_encode( $url );
ipsRegistry::getClass('output')->silentRedirect( ipsRegistry::getClass('output')->buildUrl( "app=blog&module=post§ion=post&do=showform&btapp=0&title={$encodedTitle}&url={$encodedUrl}" ) );
}
}