233 lines
6.6 KiB
PHP
233 lines
6.6 KiB
PHP
<?php
|
|
|
|
/**
|
|
* Shorturl functions
|
|
*
|
|
* @package MASHSB
|
|
* @subpackage Functions/Shorturls
|
|
* @copyright Copyright (c) 2016, René Hermenau
|
|
* @license http://opensource.org/licenses/gpl-2.0.php GNU Public License
|
|
* @since 3.0.0
|
|
*/
|
|
// Exit if accessed directly
|
|
if( !defined( 'ABSPATH' ) ) {
|
|
exit;
|
|
}
|
|
|
|
/*
|
|
* Check if Google API Key is working properly
|
|
*
|
|
* @since 3.0.0
|
|
* @return string
|
|
* @deprecated since 3.5.3
|
|
*/
|
|
|
|
function mashsb_check_google_apikey() {
|
|
|
|
global $mashsb_options;
|
|
$appid = isset( $mashsb_options['google_app_id'] ) ? $appid = $mashsb_options['google_app_id'] : $appid = '';
|
|
|
|
if( function_exists( 'curl_init' ) ) {
|
|
$shorturl = new mashsb_google_shorturl( $appid );
|
|
$statusArr = $shorturl->checkApiKey( 'http://www.google.de' );
|
|
}
|
|
|
|
isset( $statusArr['error']['errors'][0]['reason'] ) ? $statusArr['error']['errors'][0]['reason'] : $statusArr['error']['errors'][0]['reason'] = '';
|
|
|
|
if( !empty( $statusArr['error']['errors'][0]['reason'] ) ) {
|
|
return '<strong style="color:red;font-weight:bold;"> Notice: </strong>' . $statusArr['error']['errors'][0]['reason'];
|
|
}
|
|
}
|
|
|
|
/*
|
|
* Check if Bitly API Key is working properly
|
|
*
|
|
* @since 3.0.0
|
|
* @return mixed string | bool false when key is invalid
|
|
*/
|
|
|
|
function mashsb_check_bitly_apikey() {
|
|
global $mashsb_options;
|
|
|
|
$bitly_access_token = isset( $mashsb_options['bitly_access_token'] ) ? $bitly_access_token = $mashsb_options['bitly_access_token'] : '';
|
|
// url to check
|
|
$url = "http://www.google.de";
|
|
|
|
$params = array();
|
|
$params['access_token'] = $bitly_access_token;
|
|
$params['longUrl'] = $url;
|
|
//$results = bitly_get('link/lookup', $params);
|
|
$bitly = new mashsb_bitly_shorturl();
|
|
$results = $bitly->bitly_get( 'shorten', $params );
|
|
|
|
if( !empty( $results['data']['url'] ) ) {
|
|
return $results['data']['url'];
|
|
} else {
|
|
// Error
|
|
return false;
|
|
}
|
|
|
|
}
|
|
|
|
/**
|
|
* Get shorturls from the post meta
|
|
*
|
|
* @global array $post
|
|
* @return string
|
|
*/
|
|
function mashsb_get_shorturl_singular( $url ) {
|
|
global $mashsb_options, $post, $mashsb_custom_url;
|
|
|
|
|
|
// no shorturl
|
|
if( isset( $mashsb_options['mashsu_methods'] ) && $mashsb_options['mashsu_methods'] === 'disabled' ) {
|
|
return $url;
|
|
}
|
|
|
|
// Use native WP Shortlinks | only when $mashsb_custom_url is empty. WP Shortlinks are not possible for non wordpress urls like www.google.com
|
|
if( isset( $mashsb_options['mashsu_methods'] ) && $mashsb_options['mashsu_methods'] === 'wpshortlinks' && empty($mashsb_custom_url) ) {
|
|
return wp_get_shortlink();
|
|
}
|
|
|
|
|
|
$shorturl = "";
|
|
|
|
// Force cache rebuild
|
|
if( mashsb_force_cache_refresh() ) {
|
|
|
|
MASHSB()->logger->info( 'mashsb_get_shorturl_singular() -> refresh cache' );
|
|
|
|
// bitly shortlink
|
|
if( isset( $mashsb_options['mashsu_methods'] ) && $mashsb_options['mashsu_methods'] === 'bitly' ) {
|
|
$shorturl = mashsb_get_bitly_link( $url );
|
|
MASHSB()->logger->info('create shorturl singular: ' . $url . ' ' . $shorturl);
|
|
}
|
|
|
|
// Google shortlink
|
|
if( isset( $mashsb_options['mashsu_methods'] ) && $mashsb_options['mashsu_methods'] === 'google' ) {
|
|
$shorturl = mashsb_get_google_link( $url );
|
|
}
|
|
update_post_meta( $post->ID, 'mashsb_shorturl', $shorturl );
|
|
} else {
|
|
$shorturl = get_post_meta( $post->ID, 'mashsb_shorturl', true );
|
|
}
|
|
|
|
if( !empty( $shorturl ) && empty($mashsb_custom_url)) {
|
|
return $shorturl;
|
|
} else {
|
|
return $url;
|
|
}
|
|
}
|
|
|
|
/*
|
|
* Get URL shortened URL
|
|
*
|
|
* @since 1.0.0
|
|
* @param $url
|
|
* @return string
|
|
*/
|
|
|
|
function mashsb_get_shortened_url( $url ) {
|
|
global $mashsb_options;
|
|
|
|
// Return empty
|
|
if( empty( $url ) ) {
|
|
return "";
|
|
}
|
|
|
|
// Use native WP Shortlinks
|
|
if( $mashsb_options['mashsu_methods'] === 'wpshortlinks' ) {
|
|
return wp_get_shortlink();
|
|
}
|
|
|
|
// If is_singular post store shorturl in custom post fields
|
|
// and return it from there so user has the power to change values
|
|
// on his own from the post edit page and the custom fields editor
|
|
if( is_singular() ) {
|
|
return mashsb_get_shorturl_singular( $url );
|
|
}
|
|
|
|
// Force cache rebuild
|
|
if( mashsb_force_cache_refresh() ) {
|
|
|
|
MASHSB()->logger->info( 'mashsb_get_shorturl() -> refresh cache' );
|
|
|
|
// bitly shortlink
|
|
if( isset( $mashsb_options['mashsu_methods'] ) && $mashsb_options['mashsu_methods'] === 'bitly' ) {
|
|
$shorturl = mashsb_get_bitly_link( $url );
|
|
MASHSB()->logger->info('create shorturl: ' . $url . ' ' . $shorturl);
|
|
}
|
|
|
|
// Google shortlink
|
|
// if( isset( $mashsb_options['mashsu_methods'] ) && $mashsb_options['mashsu_methods'] === 'google' ) {
|
|
// $shorturl = mashsb_get_google_link( $url );
|
|
// }
|
|
|
|
// Get expiration time
|
|
$expiration = mashsb_get_expiration();
|
|
set_transient( 'mash_url_' . md5( $url ), $shorturl, $expiration );
|
|
} else {
|
|
$shorturl = get_transient( 'mash_url_' . md5( $url ) );
|
|
}
|
|
|
|
if( !empty( $shorturl ) ) {
|
|
return $shorturl;
|
|
} else {
|
|
return $url;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Get Google short url's (result: goo.gl)
|
|
*
|
|
* @param string $url
|
|
* @return string
|
|
* @deprecated since 3.5.3
|
|
*/
|
|
function mashsb_get_google_link( $url ) {
|
|
global $mashsb_options;
|
|
|
|
$google_app_id = isset( $mashsb_options['google_app_id'] ) ? $mashsb_options['google_app_id'] : '';
|
|
|
|
// get result and fill cache
|
|
if( !empty( $google_app_id ) && !empty( $url ) ) {
|
|
$shorturl = new mashsb_google_shorturl( $google_app_id );
|
|
$shorturlres = $shorturl->shorten( $url, false );
|
|
|
|
if( empty( $shorturlres ) ) {
|
|
return $url;
|
|
}
|
|
|
|
unset( $shorturl );
|
|
return $shorturlres;
|
|
}
|
|
return $url;
|
|
}
|
|
|
|
/*
|
|
* Get shorturl generated by bitly
|
|
*
|
|
* @return string
|
|
*/
|
|
|
|
function mashsb_get_bitly_link( $url ) {
|
|
global $mashsb_options;
|
|
|
|
$bitly_access_token = isset( $mashsb_options['bitly_access_token'] ) ? $bitly_access_token = $mashsb_options['bitly_access_token'] : '';
|
|
|
|
if( !empty( $bitly_access_token ) && !empty( $url ) && !is_null( $url ) ) {
|
|
|
|
$params = array();
|
|
$params['access_token'] = $bitly_access_token;
|
|
$params['longUrl'] = $url;
|
|
//$results = bitly_get('link/lookup', $params);
|
|
$bitly = new mashsb_bitly_shorturl();
|
|
$results = $bitly->bitly_get( 'shorten', $params );
|
|
|
|
if( !empty( $results['data']['url'] ) ) {
|
|
return $results['data']['url'];
|
|
}
|
|
}
|
|
return $url;
|
|
}
|