Merge pull request #6 from Keith2/master

Adds a custom YourLS url shortener
This commit is contained in:
Keith Fernie 2012-02-09 15:12:39 -08:00
commit 2b531131c8
8 changed files with 163 additions and 11 deletions

Binary file not shown.

View File

@ -407,17 +407,31 @@ function statusnet_post_hook(&$a,&$b) {
$shortlink = ""; $shortlink = "";
require_once('library/slinky.php'); require_once('library/slinky.php');
$slinky = new Slinky( $b['plink'] ); $slinky = new Slinky( $b['plink'] );
// setup a cascade of shortening services $yourls_url = get_config('yourls','url1');
// try to get a short link from these services if ($yourls_url) {
// in the order ur1.ca, trim, id.gd, tinyurl $yourls_username = get_config('yourls','username1');
$slinky->set_cascade( array( new Slinky_UR1ca(), new Slinky_Trim(), new Slinky_IsGd(), new Slinky_TinyURL() ) ); $yourls_password = get_config('yourls', 'password1');
$yourls_ssl = get_config('yourls', 'ssl1');
$yourls = new Slinky_YourLS();
$yourls->set( 'username', $yourls_username );
$yourls->set( 'password', $yourls_password );
$yourls->set( 'ssl', $yourls_ssl );
$yourls->set( 'yourls-url', $yourls_url );
$slinky->set_cascade( array( $yourls, new Slinky_UR1ca(), new Slinky_Trim(), new Slinky_IsGd(), new Slinky_TinyURL() ) );
}
else {
// setup a cascade of shortening services
// try to get a short link from these services
// in the order ur1.ca, trim, id.gd, tinyurl
$slinky->set_cascade( array( new Slinky_UR1ca(), new Slinky_Trim(), new Slinky_IsGd(), new Slinky_TinyURL() ) );
}
$shortlink = $slinky->short(); $shortlink = $slinky->short();
// the new message will be shortened such that "... $shortlink" // the new message will be shortened such that "... $shortlink"
// will fit into the character limit // will fit into the character limit
$msg = substr($msg, 0, $max_char-strlen($shortlink)-4); $msg = substr($msg, 0, $max_char-strlen($shortlink)-4);
$msg .= '... ' . $shortlink; $msg .= '... ' . $shortlink;
} }
// and now tweet it :-) // and now tweet it :-)
if(strlen($msg)) if(strlen($msg))
$dent->post('statuses/update', array('status' => $msg)); $dent->post('statuses/update', array('status' => $msg));
} }

Binary file not shown.

View File

@ -269,10 +269,25 @@ function twitter_post_hook(&$a,&$b) {
$shortlink = ""; $shortlink = "";
require_once('library/slinky.php'); require_once('library/slinky.php');
$slinky = new Slinky( $b['plink'] ); $slinky = new Slinky( $b['plink'] );
// setup a cascade of shortening services $yourls_url = get_config('yourls','url1');
// try to get a short link from these services if ($yourls_url) {
// in the order ur1.ca, trim, id.gd, tinyurl $max_char = 135;
$slinky->set_cascade( array( new Slinky_UR1ca(), new Slinky_Trim(), new Slinky_IsGd(), new Slinky_TinyURL() ) ); $yourls_username = get_config('yourls','username1');
$yourls_password = get_config('yourls', 'password1');
$yourls_ssl = get_config('yourls', 'ssl1');
$yourls = new Slinky_YourLS();
$yourls->set( 'username', $yourls_username );
$yourls->set( 'password', $yourls_password );
$yourls->set( 'ssl', $yourls_ssl );
$yourls->set( 'yourls-url', $yourls_url );
$slinky->set_cascade( array( $yourls, new Slinky_UR1ca(), new Slinky_Trim(), new Slinky_IsGd(), new Slinky_TinyURL() ) );
}
else {
// setup a cascade of shortening services
// try to get a short link from these services
// in the order ur1.ca, trim, id.gd, tinyurl
$slinky->set_cascade( array( new Slinky_UR1ca(), new Slinky_Trim(), new Slinky_IsGd(), new Slinky_TinyURL() ) );
}
$shortlink = $slinky->short(); $shortlink = $slinky->short();
// the new message will be shortened such that "... $shortlink" // the new message will be shortened such that "... $shortlink"
// will fit into the character limit // will fit into the character limit
@ -282,7 +297,7 @@ function twitter_post_hook(&$a,&$b) {
// and now tweet it :-) // and now tweet it :-)
if(strlen($msg)) { if(strlen($msg)) {
$result = $tweet->post('statuses/update', array('status' => $msg)); $result = $tweet->post('statuses/update', array('status' => $msg));
logger('twitter_post send', LOGGER_DEBUG); logger('twitter_post send' , LOGGER_DEBUG);
} }
} }
} }

BIN
yourls.tgz Executable file

Binary file not shown.

8
yourls/README Executable file
View File

@ -0,0 +1,8 @@
YourLS
For server admins only.
Defines a YourLS url shortener for the Statusnet & Twitter plugins.
This plugin will not do anything else unless the Statusnet and/or Twitter plugins are installed.
The message is entered in the admin account at Settings -> Plugin settings.

21
yourls/yourls.css Executable file
View File

@ -0,0 +1,21 @@
#yourls-label {
float: left;
width: 300px;
margin-top: 10px;
}
yourls-url {
float: left;
margin-top: 10px;
}
#yourls-submit {
margin-top: 15px;
}
.yourls {
text-align: left;
width 100%;
margin-top: 25px;
font-size: 20px;
}

94
yourls/yourls.php Executable file
View File

@ -0,0 +1,94 @@
<?php
/**
* Name: Yourls
* Description: Defines a YourLS url shortener for the Statusnet & Twitter plugins
* Version: 1.0
* Author: Keith Fernie <http://friendika.me4.it/profile/keith>
*
*/
function yourls_install() {
register_hook('plugin_settings', 'addon/yourls/yourls.php', 'yourls_addon_settings');
register_hook('plugin_settings_post', 'addon/yourls/yourls.php', 'yourls_addon_settings_post');
}
function yourls_uninstall() {
unregister_hook('plugin_settings', 'addon/yourls/yourls.php', 'yourls_addon_settings');
unregister_hook('plugin_settings_post', 'addon/yourls/yourls.php', 'yourls_addon_settings_post');
set_config('yourls','url1',trim($_POST['']));
set_config('yourls','username1',trim($_POST['']));
set_config('yourls','password1',trim($_POST['']));
set_config('yourls','ssl1',trim($_POST['']));
}
function yourls_addon_settings(&$a,&$s) {
if(! is_site_admin())
return;
/* Add our stylesheet to the page so we can make our settings look nice */
$a->page['htmlhead'] .= '<link rel="stylesheet" type="text/css" href="' . $a->get_baseurl() . '/addon/yourls/yourls.css' . '" media="all" />' . "\r\n";
$yourls_url = get_config('yourls','url1');
$yourls_username = get_config('yourls','username1');
$yourls_password = get_config('yourls', 'password1');
$ssl_enabled = get_config('yourls','ssl1');
$ssl_checked = (($ssl_enabled) ? ' checked="checked" ' : '');
$yourls_ssl = get_config('yourls', 'ssl1');
$s .= '<div class="settings-block">';
$s .= '<h3>' . t('YourLS Settings') . '</h3>';
$s .= '<div id="yourls-url-wrapper">';
$s .= '<label id="yourls-url-label" for="yourls-url">' . t('URL: http://') . '</label>';
$s .= '<input id="yourls-url" type="text" name="yourls_url" value="' . $yourls_url .'" />';
$s .= '</div><div class="clear"></div>';
$s .= '<div id="yourls-username-wrapper">';
$s .= '<label id="yourls-username-label" for="yourls-username">' . t('Username:') . '</label>';
$s .= '<input id="yourls-username" type="text" name="yourls_username" value="' . $yourls_username .'" />';
$s .= '</div><div class="clear"></div>';
$s .= '<div id="yourls-password-wrapper">';
$s .= '<label id="yourls-password-label" for="yourls-password">' . t('Password:') . '</label>';
$s .= '<input id="yourls-password" type="password" name="yourls_password" value="' . $yourls_password .'" />';
$s .= '</div><div class="clear"></div>';
$s .= '<div id="yourls-ssl-wrapper">';
$s .= '<label id="yourls-ssl-label" for="yourls-ssl">' . t('Use SSL ') . '</label>';
$s .= '<input id="yourls-ssl" type="checkbox" name="yourls_ssl" value="1" ' . $ssl_checked . '"/>';
$s .= '</div><div class="clear"></div>';
$s .= '<div class="settings-submit-wrapper" ><input type="submit" id="yourls-submit" name="yourls-submit" class="settings-submit" value="' . t('Submit') . '" /></div></div>';
return;
}
function yourls_addon_settings_post(&$a,&$b) {
if(! is_site_admin())
return;
if($_POST['yourls-submit']) {
set_config('yourls','url1',trim($_POST['yourls_url']));
set_config('yourls','username1',trim($_POST['yourls_username']));
set_config('yourls','password1',trim($_POST['yourls_password']));
set_config('yourls','ssl1',intval($_POST['yourls_ssl']));
info( t('yourls Settings saved.') . EOL);
}
}