Merge branch 'master', remote-tracking branch 'remotes/upstream/master'
* remotes/upstream/master: please use make to build packages realized I had tarred up the irc, then made changes without updating the tarball, so, just now I updated the tarball. returned ljpost to same as in friendica/friendica-addons rather than make it offer other sites, I am writing separate plugins for separate sites. I already have a dreamwidth one written, as can be seen in my repo. Can/maybe will write up insanejournal, deadjournal, blurty, etc. eventually, too for aesthetic reasons, reduced size of IRC chat window fixed irc chat...IT WORKS! tarred up irc removed mibbit, added simpler irc chat another minor alteration to mibbit again, just minor adjustment to mibbit minor alterations to mibbit.php added a mibbit/irc chatroom plugin minor adjustment to dwpost added dreamwidth connector working on adding support for other moveabletype sites. added entry for siteurl (lj_url) minor corrections, but still not working should work, doesn't. xml is correct, required parameters include, nothing gets through... the xml POST data was missing the "usejournal" parameter, required for LJ to know to which blog to post (since users have posting permission to their own AND to community blogs). It is now hardwired to their own, personal blog. Eventually this should be more configurable. Also, the plugin shouldn't be hardwired for livejournal, but also allow dreamwidth, insanejournal, deadjournal, etc. I'll work on that. * master:
This commit is contained in:
commit
a4c894cf4f
7 changed files with 308 additions and 1 deletions
Binary file not shown.
15
dwpost/dwpost.css
Normal file
15
dwpost/dwpost.css
Normal file
|
@ -0,0 +1,15 @@
|
|||
|
||||
#ljpost-enable-label, #ljpost-username-label, #ljpost-password-label, #ljpost-bydefault-label {
|
||||
float: left;
|
||||
width: 200px;
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
#ljpost-checkbox, #ljpost-username, #ljpost-password, #ljpost-bydefault {
|
||||
float: left;
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
#ljpost-submit {
|
||||
margin-top: 15px;
|
||||
}
|
219
dwpost/dwpost.php
Normal file
219
dwpost/dwpost.php
Normal file
|
@ -0,0 +1,219 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* Name: Dreamwidth Post Connector
|
||||
* Description: Post to dreamwidth
|
||||
* Version: 1.0
|
||||
* Author: Tony Baldwin <http://tonybaldwin.me/friendica/profile/tony>
|
||||
* Author: Michael Johnston
|
||||
*/
|
||||
|
||||
function dwpost_install() {
|
||||
register_hook('post_local', 'addon/dwpost/dwpost.php', 'dwpost_post_local');
|
||||
register_hook('notifier_normal', 'addon/dwpost/dwpost.php', 'dwpost_send');
|
||||
register_hook('jot_networks', 'addon/dwpost/dwpost.php', 'dwpost_jot_nets');
|
||||
register_hook('connector_settings', 'addon/dwpost/dwpost.php', 'dwpost_settings');
|
||||
register_hook('connector_settings_post', 'addon/dwpost/dwpost.php', 'dwpost_settings_post');
|
||||
|
||||
}
|
||||
function dwpost_uninstall() {
|
||||
unregister_hook('post_local', 'addon/dwpost/dwpost.php', 'dwpost_post_local');
|
||||
unregister_hook('notifier_normal', 'addon/dwpost/dwpost.php', 'dwpost_send');
|
||||
unregister_hook('jot_networks', 'addon/dwpost/dwpost.php', 'dwpost_jot_nets');
|
||||
unregister_hook('connector_settings', 'addon/dwpost/dwpost.php', 'dwpost_settings');
|
||||
unregister_hook('connector_settings_post', 'addon/dwpost/dwpost.php', 'dwpost_settings_post');
|
||||
|
||||
}
|
||||
|
||||
|
||||
function dwpost_jot_nets(&$a,&$b) {
|
||||
if(! local_user())
|
||||
return;
|
||||
|
||||
$dw_post = get_pconfig(local_user(),'dwpost','post');
|
||||
if(intval($dw_post) == 1) {
|
||||
$dw_defpost = get_pconfig(local_user(),'dwpost','post_by_default');
|
||||
$selected = ((intval($dw_defpost) == 1) ? ' checked="checked" ' : '');
|
||||
$b .= '<div class="profile-jot-net"><input type="checkbox" name="dwpost_enable" ' . $selected . ' value="1" /> '
|
||||
. t('Post to Dreamwidth') . '</div>';
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function dwpost_settings(&$a,&$s) {
|
||||
|
||||
if(! local_user())
|
||||
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/dwpost/dwpost.css' . '" media="all" />' . "\r\n";
|
||||
|
||||
/* Get the current state of our config variables */
|
||||
|
||||
$enabled = get_pconfig(local_user(),'dwpost','post');
|
||||
|
||||
$checked = (($enabled) ? ' checked="checked" ' : '');
|
||||
|
||||
$def_enabled = get_pconfig(local_user(),'dwpost','post_by_default');
|
||||
|
||||
$def_checked = (($def_enabled) ? ' checked="checked" ' : '');
|
||||
|
||||
$dw_username = get_pconfig(local_user(), 'dwpost', 'dw_username');
|
||||
$dw_password = get_pconfig(local_user(), 'dwpost', 'dw_password');
|
||||
|
||||
|
||||
/* Add some HTML to the existing form */
|
||||
|
||||
$s .= '<div class="settings-block">';
|
||||
$s .= '<h3>' . t('Dreamwidth Post Settings') . '</h3>';
|
||||
$s .= '<div id="dwpost-enable-wrapper">';
|
||||
$s .= '<label id="dwpost-enable-label" for="dwpost-checkbox">' . t('Enable dreamwidth Post Plugin') . '</label>';
|
||||
$s .= '<input id="dwpost-checkbox" type="checkbox" name="dwpost" value="1" ' . $checked . '/>';
|
||||
$s .= '</div><div class="clear"></div>';
|
||||
|
||||
$s .= '<div id="dwpost-username-wrapper">';
|
||||
$s .= '<label id="dwpost-username-label" for="dwpost-username">' . t('dreamwidth username') . '</label>';
|
||||
$s .= '<input id="dwpost-username" type="text" name="dw_username" value="' . $dw_username . '" />';
|
||||
$s .= '</div><div class="clear"></div>';
|
||||
|
||||
$s .= '<div id="dwpost-password-wrapper">';
|
||||
$s .= '<label id="dwpost-password-label" for="dwpost-password">' . t('dreamwidth password') . '</label>';
|
||||
$s .= '<input id="dwpost-password" type="password" name="dw_password" value="' . $dw_password . '" />';
|
||||
$s .= '</div><div class="clear"></div>';
|
||||
|
||||
$s .= '<div id="dwpost-bydefault-wrapper">';
|
||||
$s .= '<label id="dwpost-bydefault-label" for="dwpost-bydefault">' . t('Post to dreamwidth by default') . '</label>';
|
||||
$s .= '<input id="dwpost-bydefault" type="checkbox" name="dw_bydefault" value="1" ' . $def_checked . '/>';
|
||||
$s .= '</div><div class="clear"></div>';
|
||||
|
||||
/* provide a submit button */
|
||||
|
||||
$s .= '<div class="settings-submit-wrapper" ><input type="submit" id="dwpost-submit" name="dwpost-submit" class="settings-submit" value="' . t('Submit') . '" /></div></div>';
|
||||
|
||||
}
|
||||
|
||||
|
||||
function dwpost_settings_post(&$a,&$b) {
|
||||
|
||||
if(x($_POST,'dwpost-submit')) {
|
||||
|
||||
set_pconfig(local_user(),'dwpost','post',intval($_POST['dwpost']));
|
||||
set_pconfig(local_user(),'dwpost','post_by_default',intval($_POST['dw_bydefault']));
|
||||
set_pconfig(local_user(),'dwpost','dw_username',trim($_POST['dw_username']));
|
||||
set_pconfig(local_user(),'dwpost','dw_password',trim($_POST['dw_password']));
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
function dwpost_post_local(&$a,&$b) {
|
||||
|
||||
// This can probably be changed to allow editing by pointing to a different API endpoint
|
||||
|
||||
if($b['edit'])
|
||||
return;
|
||||
|
||||
if((! local_user()) || (local_user() != $b['uid']))
|
||||
return;
|
||||
|
||||
if($b['private'] || $b['parent'])
|
||||
return;
|
||||
|
||||
$dw_post = intval(get_pconfig(local_user(),'dwpost','post'));
|
||||
|
||||
$dw_enable = (($dw_post && x($_REQUEST,'dwpost_enable')) ? intval($_REQUEST['dwpost_enable']) : 0);
|
||||
|
||||
if($_REQUEST['api_source'] && intval(get_pconfig(local_user(),'dwpost','post_by_default')))
|
||||
$dw_enable = 1;
|
||||
|
||||
if(! $dw_enable)
|
||||
return;
|
||||
|
||||
if(strlen($b['postopts']))
|
||||
$b['postopts'] .= ',';
|
||||
$b['postopts'] .= 'dwpost';
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
function dwpost_send(&$a,&$b) {
|
||||
|
||||
if($b['deleted'] || $b['private'] || ($b['created'] !== $b['edited']))
|
||||
return;
|
||||
|
||||
if(! strstr($b['postopts'],'dwpost'))
|
||||
return;
|
||||
|
||||
if($b['parent'] != $b['id'])
|
||||
return;
|
||||
|
||||
// dreamwidth post in the LJ user's timezone.
|
||||
// Hopefully the person's Friendica account
|
||||
// will be set to the same thing.
|
||||
|
||||
$tz = 'UTC';
|
||||
|
||||
$x = q("select timezone from user where uid = %d limit 1",
|
||||
intval($b['uid'])
|
||||
);
|
||||
if($x && strlen($x[0]['timezone']))
|
||||
$tz = $x[0]['timezone'];
|
||||
|
||||
$dw_username = get_pconfig($b['uid'],'dwpost','dw_username');
|
||||
$dw_password = get_pconfig($b['uid'],'dwpost','dw_password');
|
||||
$dw_blog = 'http://www.dreamwidth.org/interface/xmlrpc';
|
||||
|
||||
if($dw_username && $dw_password && $dw_blog) {
|
||||
|
||||
require_once('include/bbcode.php');
|
||||
require_once('include/datetime.php');
|
||||
|
||||
$title = $b['title'];
|
||||
$post = bbcode($b['body']);
|
||||
$post = xmlify($post);
|
||||
|
||||
$date = datetime_convert('UTC',$tz,$b['created'],'Y-m-d H:i:s');
|
||||
$year = intval(substr($date,0,4));
|
||||
$mon = intval(substr($date,5,2));
|
||||
$day = intval(substr($date,8,2));
|
||||
$hour = intval(substr($date,11,2));
|
||||
$min = intval(substr($date,14,2));
|
||||
|
||||
$xml = <<< EOT
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<methodCall><methodName>LJ.XMLRPC.postevent</methodName>
|
||||
<params><param>
|
||||
<value><struct>
|
||||
<member><name>year</name><value><int>$year</int></value></member>
|
||||
<member><name>mon</name><value><int>$mon</int></value></member>
|
||||
<member><name>day</name><value><int>$day</int></value></member>
|
||||
<member><name>hour</name><value><int>$hour</int></value></member>
|
||||
<member><name>min</name><value><int>$min</int></value></member>
|
||||
<member><name>event</name><value><string>$post</string></value></member>
|
||||
<member><name>username</name><value><string>$dw_username</string></value></member>
|
||||
<member><name>password</name><value><string>$dw_password</string></value></member>
|
||||
<member><name>subject</name><value><string>$title</string></value></member>
|
||||
<member><name>lineendings</name><value><string>unix</string></value></member>
|
||||
<member><name>ver</name><value><int>1</int></value></member>
|
||||
<member><name>props</name>
|
||||
<value><struct>
|
||||
<member><name>useragent</name><value><string>Friendica</string></value></member>
|
||||
<member><name>taglist</name><value><string>friendica</string></value></member>
|
||||
</struct></value></member>
|
||||
</struct></value>
|
||||
</param></params>
|
||||
</methodCall>
|
||||
|
||||
EOT;
|
||||
|
||||
logger('dwpost: data: ' . $xml, LOGGER_DATA);
|
||||
|
||||
if($dw_blog !== 'test')
|
||||
$x = post_url($dw_blog,$xml);
|
||||
logger('posted to dreamwidth: ' . ($x) ? $x : '', LOGGER_DEBUG);
|
||||
|
||||
}
|
||||
}
|
||||
|
45
irc/irc.php
Normal file
45
irc/irc.php
Normal file
|
@ -0,0 +1,45 @@
|
|||
<?php
|
||||
/**
|
||||
* Name: IRC Chat Plugin
|
||||
* Description: add an Internet Relay Chat chatroom
|
||||
* Version: 1.0
|
||||
* Author: tony baldwin <http://tonybaldwin.me>
|
||||
*/
|
||||
|
||||
|
||||
function irc_install() {
|
||||
register_hook('app_menu', 'addon/irc/irc.php', 'irc_app_menu');
|
||||
}
|
||||
|
||||
function irc_uninstall() {
|
||||
unregister_hook('app_menu', 'addon/irc/irc.php', 'irc_app_menu');
|
||||
|
||||
}
|
||||
|
||||
function irc_app_menu($a,&$b) {
|
||||
$b['app_menu'][] = '<div class="app-title"><a href="irc">' . t('irc Chatroom') . '</a></div>';
|
||||
}
|
||||
|
||||
|
||||
function irc_module() {
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
function irc_content(&$a) {
|
||||
|
||||
$baseurl = $a->get_baseurl() . '/addon/irc';
|
||||
$o = '';
|
||||
|
||||
|
||||
// add the chatroom frame and some html
|
||||
$o .= <<< EOT
|
||||
<h2>IRC chat</h2>
|
||||
<iframe src="http://webchat.freenode.net?channels=friendica" width="600" height="600"></iframe>
|
||||
EOT;
|
||||
|
||||
return $o;
|
||||
|
||||
}
|
||||
|
||||
|
BIN
ljpost.tgz
BIN
ljpost.tgz
Binary file not shown.
|
@ -1,5 +1,6 @@
|
|||
|
||||
#ljpost-enable-label, #ljpost-username-label, #ljpost-password-label, #ljpost-bydefault-label {
|
||||
<<<<<<< HEAD
|
||||
float: left;
|
||||
width: 200px;
|
||||
margin-top: 10px;
|
||||
|
@ -14,3 +15,18 @@
|
|||
margin-top: 15px;
|
||||
}
|
||||
|
||||
=======
|
||||
float: left;
|
||||
width: 200px;
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
#ljpost-checkbox, #ljpost-username, #ljpost-password, #ljpost-bydefault {
|
||||
float: left;
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
#ljpost-submit {
|
||||
margin-top: 15px;
|
||||
}
|
||||
>>>>>>> 99d9fddb6af9e872266666038447771e42ce13b4
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
* Name: LiveJournal Post Connector
|
||||
* Description: Post to LiveJournal
|
||||
* Version: 1.0
|
||||
* Author: Tony Baldwin <http://theshi.re/profile/tony>
|
||||
* Author: Tony Baldwin <http://tonybaldwin.me/friendica/profile/tony>
|
||||
* Author: Michael Johnston
|
||||
*/
|
||||
|
||||
|
@ -204,6 +204,18 @@ function ljpost_send(&$a,&$b) {
|
|||
<member><name>day</name><value><int>$day</int></value></member>
|
||||
<member><name>hour</name><value><int>$hour</int></value></member>
|
||||
<member><name>min</name><value><int>$min</int></value></member>
|
||||
<member><name>usejournal</name><value><string>$lj_username</string></value></member>
|
||||
<member>
|
||||
<name>props</name>
|
||||
<value>
|
||||
<struct>
|
||||
<member>
|
||||
<name>useragent</name>
|
||||
<value><string>Friendica</string></value>
|
||||
</member>
|
||||
</struct>
|
||||
</value>
|
||||
</member>
|
||||
</struct>
|
||||
</value></param>
|
||||
</params>
|
||||
|
|
Loading…
Reference in a new issue