}
}
if($found) {
- $rnd = random_string(8);
+ $rnd = random_string(8);
$b['html'] = '<div id="blockem-wrap-' . $rnd . '" class="fakelink" onclick=openClose(\'blockem-' . $rnd . '\'); >' . sprintf( t('Blocked %s - Click to open/close'),$word ) . '</div><div id="blockem-' . $rnd . '" style="display: none; " >' . $b['html'] . '</div>';
}
}
function blockem_display_item(&$a,&$b) {
- if(strstr($b['output'],'id="blockem-wrap-'))
- $b['output'] = preg_replace('/\<img(.*?)src=\"(.*?)\" class=\"wall\-item\-photo(.*?)\>/','<img$1src="' . $a->get_baseurl() . "/images/default-profile-sm.jpg" . '" class="wall-item-photo$3>',$b['output']);
+ if(strstr($b['output']['body'],'id="blockem-wrap-'))
+ $b['output']['thumb'] = $a->get_baseurl() . "/images/default-profile-sm.jpg";
}
set_pconfig(local_user(),'blockem','words',$words);
info( t('blockem settings updated') . EOL );
killme();
-}
\ No newline at end of file
+}
--- /dev/null
+Thomas Willingham
+
+This isn't even close to being worth a pull request, but some people might find it useful.
+
+Enable community home in your admin panel, then replace communityhome.php with this one to get a front page like mine (a normal front page, but with latest users shown in the sidebar, which looks bleak when there's nothing in it).
+
+There are more graceful ways of doing this, I used communityhome as I plan to make use of a limited stream and likes in future.
--- /dev/null
+<?php
+/**
+ * Name: Community home
+ * Description: Show last community activity in homepage
+ * Version: 1.0
+ * Author: Fabio Comuni <http://kirgroup.com/profile/fabrixxm>
+ */
+
+
+require_once('mod/community.php');
+
+
+function communityhome_install() {
+ register_hook('home_content', 'addon/communityhome/communityhome.php', 'communityhome_home');
+ logger("installed communityhome");
+}
+
+function communityhome_uninstall() {
+ unregister_hook('home_content', 'addon/communityhome/communityhome.php', 'communityhome_home');
+ logger("removed communityhome");
+}
+
+function communityhome_home(&$a, &$o){
+ // custom css
+ $a->page['htmlhead'] .= '<link rel="stylesheet" type="text/css" href="'.$a->get_baseurl().'/addon/communityhome/communityhome.css" media="all" />';
+
+ $aside = array(
+ '$tab_1' => t('Login'),
+ '$tab_2' => t('OpenID'),
+ '$noOid' => get_config('system','no_openid'),
+ );
+
+ // login form
+ $aside['$login_title'] = t('Login');
+ $aside['$login_form'] = login(($a->config['register_policy'] == REGISTER_CLOSED) ? false : true);
+
+ // last 12 users
+ $aside['$lastusers_title'] = t('Latest users');
+ $aside['$lastusers_items'] = array();
+ $sql_extra = "";
+ $publish = (get_config('system','publish_all') ? '' : " AND `publish` = 1 " );
+ $order = " ORDER BY `register_date` DESC ";
+
+ $r = q("SELECT `profile`.*, `profile`.`uid` AS `profile_uid`, `user`.`nickname`
+ FROM `profile` LEFT JOIN `user` ON `user`.`uid` = `profile`.`uid`
+ WHERE `is-default` = 1 $publish AND `user`.`blocked` = 0 $sql_extra $order LIMIT %d , %d ",
+ 0,
+ 12
+ );
+ $tpl = file_get_contents( dirname(__file__).'/directory_item.tpl');
+ if(count($r)) {
+ $photo = 'thumb';
+ foreach($r as $rr) {
+ $profile_link = $a->get_baseurl() . '/profile/' . ((strlen($rr['nickname'])) ? $rr['nickname'] : $rr['profile_uid']);
+ $entry = replace_macros($tpl,array(
+ '$id' => $rr['id'],
+ '$profile-link' => $profile_link,
+ '$photo' => $rr[$photo],
+ '$alt-text' => $rr['name'],
+ ));
+ $aside['$lastusers_items'][] = $entry;
+ }
+ }
+
+ // 12 most active users (by posts and contacts)
+ // this query don't work on some mysql versions
+ $r = q("SELECT `uni`.`contacts`,`uni`.`items`, `profile`.*, `profile`.`uid` AS `profile_uid`, `user`.`nickname` FROM
+ (SELECT COUNT(`id`) as `contacts`, `uid` FROM `contact` WHERE `self`=0 GROUP BY `uid`) AS `con`,
+ (SELECT COUNT(`id`) as `items`, `uid` FROM `item` WHERE `item`.`changed` > DATE(NOW() - INTERVAL 1 MONTH) AND `item`.`wall` = 1 GROUP BY `uid`) AS `ite`,
+ (
+ SELECT `contacts`,`items`,`ite`.`uid` FROM `con` RIGHT OUTER JOIN `ite` ON `con`.`uid`=`ite`.`uid`
+ UNION ALL
+ SELECT `contacts`,`items`,`con`.`uid` FROM `con` LEFT OUTER JOIN `ite` ON `con`.`uid`=`ite`.`uid`
+ ) AS `uni`, `user`, `profile`
+ WHERE `uni`.`uid`=`user`.`uid`
+ AND `uni`.`uid`=`profile`.`uid` AND `profile`.`publish`=1
+ GROUP BY `uid`
+ ORDER BY `items` DESC,`contacts` DESC
+ LIMIT 0,10");
+ if($r && count($r)) {
+ $aside['$activeusers_title'] = t('Most active users');
+ $aside['$activeusers_items'] = array();
+
+ $photo = 'thumb';
+ foreach($r as $rr) {
+ $profile_link = $a->get_baseurl() . '/profile/' . ((strlen($rr['nickname'])) ? $rr['nickname'] : $rr['profile_uid']);
+ $entry = replace_macros($tpl,array(
+ '$id' => $rr['id'],
+ '$profile-link' => $profile_link,
+ '$photo' => $rr[$photo],
+ '$alt-text' => sprintf("%s (%s posts, %s contacts)",$rr['name'], ($rr['items']?$rr['items']:'0'), ($rr['contacts']?$rr['contacts']:'0'))
+ ));
+ $aside['$activeusers_items'][] = $entry;
+ }
+ }
+
+
+
+
+ $tpl = file_get_contents(dirname(__file__).'/communityhome.tpl');
+ $a->page['aside'] = replace_macros($tpl, $aside);
+ $o = '';
+ if(file_exists('home.html'))
+
+ $o .= file_get_contents('home.html');
+
+}
--- /dev/null
+
+#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;
+}
\ No newline at end of file
--- /dev/null
+<?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);
+
+ }
+}
+
Replace with the settings Facebook gives you.
d. Navigate to Set Web->Site URL & Domain -> Website Settings. Set Site URL
to yoursubdomain.yourdomain.com. Set Site Domain to your yourdomain.com.
+ e. Chose "Website" (the url should be your site URL with a trailing slash) in the
+ "Select how your app integrates with Facebook" section.
2. Enable the facebook plugin by including it in .htconfig.php - e.g.
$a->config['system']['addon'] = 'plugin1,plugin2,facebook';
3. Visit the Facebook Settings section of the "Settings->Plugin Settings" page.
--- /dev/null
+
+#gnot-desc {
+ margin-bottom: 10px;
+}
+
+#gnot-label {
+ float: left;
+ width: 200px;
+ margin-bottom: 25px;
+}
+
+#gnot {
+ float: left;
+}
+
+
--- /dev/null
+<?php
+/**
+ * Name: Gnot
+ * Description: Thread email comment notifications on Gmail and anonymise them
+ * Version: 1.0
+ * Author: Mike Macgirvin <http://macgirvin.com/profile/mike>
+ *
+ *
+ */
+
+
+function gnot_install() {
+
+ register_hook('plugin_settings', 'addon/gnot/gnot.php', 'gnot_settings');
+ register_hook('plugin_settings_post', 'addon/gnot/gnot.php', 'gnot_settings_post');
+ register_hook('enotify_mail', 'addon/gnot/gnot.php', 'gnot_enotify_mail');
+
+ logger("installed gnot");
+}
+
+
+function gnot_uninstall() {
+
+ unregister_hook('plugin_settings', 'addon/gnot/gnot.php', 'gnot_settings');
+ unregister_hook('plugin_settings_post', 'addon/gnot/gnot.php', 'gnot_settings_post');
+ unregister_hook('enotify_mail', 'addon/gnot/gnot.php', 'gnot_enotify_mail');
+
+
+ logger("removed gnot");
+}
+
+
+
+/**
+ *
+ * Callback from the settings post function.
+ * $post contains the $_POST array.
+ * We will make sure we've got a valid user account
+ * and if so set our configuration setting for this person.
+ *
+ */
+
+function gnot_settings_post($a,$post) {
+ if(! local_user() || (! x($_POST,'gnot-submit')))
+ return;
+
+ set_pconfig(local_user(),'gnot','enable',intval($_POST['gnot']));
+ info( t('Gnot settings updated.') . EOL);
+}
+
+
+/**
+ *
+ * Called from the Plugin Setting form.
+ * Add our own settings info to the page.
+ *
+ */
+
+
+
+function gnot_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/gnot/gnot.css' . '" media="all" />' . "\r\n";
+
+ /* Get the current state of our config variable */
+
+ $gnot = intval(get_pconfig(local_user(),'gnot','enable'));
+
+ $gnot_checked = (($gnot) ? ' checked="checked" ' : '' );
+
+ /* Add some HTML to the existing form */
+
+ $s .= '<div class="settings-block">';
+ $s .= '<h3>' . t('Gnot Settings') . '</h3>';
+ $s .= '<div id="gnot-wrapper">';
+ $s .= '<div id="gnot-desc">' . t("Allows threading of email comment notifications on Gmail and anonymising the subject line.") . '</div>';
+ $s .= '<label id="gnot-label" for="gnot">' . t('Enable this plugin/addon?') . '</label>';
+ $s .= '<input id="gnot-input" type="checkbox" name="gnot" value="1"'. $gnot_checked . '/>';
+ $s .= '</div><div class="clear"></div>';
+
+ /* provide a submit button */
+
+ $s .= '<div class="settings-submit-wrapper" ><input type="submit" name="gnot-submit" class="settings-submit" value="' . t('Submit') . '" /></div></div>';
+
+}
+
+
+function gnot_enotify_mail(&$a,&$b) {
+ if((! $b['uid']) || (! intval(get_pconfig($b['uid'], 'gnot','enable'))))
+ return;
+ if($b['type'] == NOTIFY_COMMENT)
+ $b['subject'] = sprintf( t('[Friendica:Notify] Comment to conversation #%d'), $b['parent']);
+}
+
--- /dev/null
+<?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;
+
+}
+
+
--- /dev/null
+
+#ljpost-enable-label, #ljpost-username-label, #ljpost-password-label, #ljpost-bydefault-label {
+<<<<<<< HEAD
+ 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;
+}
+
+=======
+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
--- /dev/null
+<?php
+
+/**
+ * Name: LiveJournal Post Connector
+ * Description: Post to LiveJournal
+ * Version: 1.0
+ * Author: Tony Baldwin <http://tonybaldwin.me/friendica/profile/tony>
+ * Author: Michael Johnston
+ */
+
+function ljpost_install() {
+ register_hook('post_local', 'addon/ljpost/ljpost.php', 'ljpost_post_local');
+ register_hook('notifier_normal', 'addon/ljpost/ljpost.php', 'ljpost_send');
+ register_hook('jot_networks', 'addon/ljpost/ljpost.php', 'ljpost_jot_nets');
+ register_hook('connector_settings', 'addon/ljpost/ljpost.php', 'ljpost_settings');
+ register_hook('connector_settings_post', 'addon/ljpost/ljpost.php', 'ljpost_settings_post');
+
+}
+function ljpost_uninstall() {
+ unregister_hook('post_local', 'addon/ljpost/ljpost.php', 'ljpost_post_local');
+ unregister_hook('notifier_normal', 'addon/ljpost/ljpost.php', 'ljpost_send');
+ unregister_hook('jot_networks', 'addon/ljpost/ljpost.php', 'ljpost_jot_nets');
+ unregister_hook('connector_settings', 'addon/ljpost/ljpost.php', 'ljpost_settings');
+ unregister_hook('connector_settings_post', 'addon/ljpost/ljpost.php', 'ljpost_settings_post');
+
+}
+
+
+function ljpost_jot_nets(&$a,&$b) {
+ if(! local_user())
+ return;
+
+ $lj_post = get_pconfig(local_user(),'ljpost','post');
+ if(intval($lj_post) == 1) {
+ $lj_defpost = get_pconfig(local_user(),'ljpost','post_by_default');
+ $selected = ((intval($lj_defpost) == 1) ? ' checked="checked" ' : '');
+ $b .= '<div class="profile-jot-net"><input type="checkbox" name="ljpost_enable" ' . $selected . ' value="1" /> '
+ . t('Post to LiveJournal') . '</div>';
+ }
+}
+
+
+function ljpost_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/ljpost/ljpost.css' . '" media="all" />' . "\r\n";
+
+ /* Get the current state of our config variables */
+
+ $enabled = get_pconfig(local_user(),'ljpost','post');
+
+ $checked = (($enabled) ? ' checked="checked" ' : '');
+
+ $def_enabled = get_pconfig(local_user(),'ljpost','post_by_default');
+
+ $def_checked = (($def_enabled) ? ' checked="checked" ' : '');
+
+ $lj_username = get_pconfig(local_user(), 'ljpost', 'lj_username');
+ $lj_password = get_pconfig(local_user(), 'ljpost', 'lj_password');
+
+
+ /* Add some HTML to the existing form */
+
+ $s .= '<div class="settings-block">';
+ $s .= '<h3>' . t('LiveJournal Post Settings') . '</h3>';
+ $s .= '<div id="ljpost-enable-wrapper">';
+ $s .= '<label id="ljpost-enable-label" for="ljpost-checkbox">' . t('Enable LiveJournal Post Plugin') . '</label>';
+ $s .= '<input id="ljpost-checkbox" type="checkbox" name="ljpost" value="1" ' . $checked . '/>';
+ $s .= '</div><div class="clear"></div>';
+
+ $s .= '<div id="ljpost-username-wrapper">';
+ $s .= '<label id="ljpost-username-label" for="ljpost-username">' . t('LiveJournal username') . '</label>';
+ $s .= '<input id="ljpost-username" type="text" name="lj_username" value="' . $lj_username . '" />';
+ $s .= '</div><div class="clear"></div>';
+
+ $s .= '<div id="ljpost-password-wrapper">';
+ $s .= '<label id="ljpost-password-label" for="ljpost-password">' . t('LiveJournal password') . '</label>';
+ $s .= '<input id="ljpost-password" type="password" name="lj_password" value="' . $lj_password . '" />';
+ $s .= '</div><div class="clear"></div>';
+
+ $s .= '<div id="ljpost-bydefault-wrapper">';
+ $s .= '<label id="ljpost-bydefault-label" for="ljpost-bydefault">' . t('Post to LiveJournal by default') . '</label>';
+ $s .= '<input id="ljpost-bydefault" type="checkbox" name="lj_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="ljpost-submit" name="ljpost-submit" class="settings-submit" value="' . t('Submit') . '" /></div></div>';
+
+}
+
+
+function ljpost_settings_post(&$a,&$b) {
+
+ if(x($_POST,'ljpost-submit')) {
+
+ set_pconfig(local_user(),'ljpost','post',intval($_POST['ljpost']));
+ set_pconfig(local_user(),'ljpost','post_by_default',intval($_POST['lj_bydefault']));
+ set_pconfig(local_user(),'ljpost','lj_username',trim($_POST['lj_username']));
+ set_pconfig(local_user(),'ljpost','lj_password',trim($_POST['lj_password']));
+
+ }
+
+}
+
+function ljpost_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;
+
+ $lj_post = intval(get_pconfig(local_user(),'ljpost','post'));
+
+ $lj_enable = (($lj_post && x($_REQUEST,'ljpost_enable')) ? intval($_REQUEST['ljpost_enable']) : 0);
+
+ if($_REQUEST['api_source'] && intval(get_pconfig(local_user(),'ljpost','post_by_default')))
+ $lj_enable = 1;
+
+ if(! $lj_enable)
+ return;
+
+ if(strlen($b['postopts']))
+ $b['postopts'] .= ',';
+ $b['postopts'] .= 'ljpost';
+}
+
+
+
+
+function ljpost_send(&$a,&$b) {
+
+ if($b['deleted'] || $b['private'] || ($b['created'] !== $b['edited']))
+ return;
+
+ if(! strstr($b['postopts'],'ljpost'))
+ return;
+
+ if($b['parent'] != $b['id'])
+ return;
+
+ // LiveJournal 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'];
+
+ $lj_username = xmlify(get_pconfig($b['uid'],'ljpost','lj_username'));
+ $lj_password = xmlify(get_pconfig($b['uid'],'ljpost','lj_password'));
+ $lj_journal = xmlify(get_pconfig($b['uid'],'ljpost','lj_journal'));
+// if(! $lj_journal)
+// $lj_journal = $lj_username;
+
+ $lj_blog = xmlify(get_pconfig($b['uid'],'ljpost','lj_blog'));
+ if(! strlen($lj_blog))
+ $lj_blog = xmlify('http://www.livejournal.com/interface/xmlrpc');
+
+ if($lj_username && $lj_password && $lj_blog) {
+
+ require_once('include/bbcode.php');
+ require_once('include/datetime.php');
+
+ $title = xmlify($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>username</name><value><string>$lj_username</string></value></member>
+ <member><name>password</name><value><string>$lj_password</string></value></member>
+ <member><name>event</name><value><string>$post</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>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>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>
+</methodCall>
+
+EOT;
+
+ logger('ljpost: data: ' . $xml, LOGGER_DATA);
+
+ if($lj_blog !== 'test')
+ $x = post_url($lj_blog,$xml);
+ logger('posted to livejournal: ' . ($x) ? $x : '', LOGGER_DEBUG);
+
+ }
+}
+
$s .= '<div class="settings-block">';
$s .= '<h3>' . t('Quick Comment Settings') . '</h3>';
$s .= '<div id="qcomment-wrapper">';
+ $s .= '<div id="qcomment-desc">' . t("Quick comments are found near comment boxes, sometimes hidden. Click them to provide simple replies.") . '</div>';
$s .= '<label id="qcomment-label" for="qcomment-words">' . t('Enter quick comments, one per line') . ' </label>';
$s .= '<textarea id="qcomment-words" type="text" name="qcomment-words" >' . htmlspecialchars(unxmlify($words)) . '</textarea>';
$s .= '</div><div class="clear"></div>';
return;
- $wp_username = get_pconfig($b['uid'],'wppost','wp_username');
- $wp_password = get_pconfig($b['uid'],'wppost','wp_password');
+ $wp_username = xmlify(get_pconfig($b['uid'],'wppost','wp_username'));
+ $wp_password = xmlify(get_pconfig($b['uid'],'wppost','wp_password'));
$wp_blog = get_pconfig($b['uid'],'wppost','wp_blog');
if($wp_username && $wp_password && $wp_blog) {
$post = xmlify($post);
$xml = <<< EOT
-
-<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>
+<?xml version=\"1.0\" encoding=\"utf-8\"?>
<methodCall>
<methodName>blogger.newPost</methodName>
<params>
if($wp_blog !== 'test')
$x = post_url($wp_blog,$xml);
- logger('posted to wordpress: ' . ($x) ? $x : '');
+ logger('posted to wordpress: ' . (($x) ? $x : ''), LOGGER_DEBUG);
}
}