* Invision Power Services * IP.Board v3.3.4 * 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) $ * * * @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}" ) ); } }