]> git.mxchange.org Git - friendica-addons.git/commitdiff
Merge remote branch 'upstream/master'
authorMichael <icarus@dabo.de>
Fri, 2 Mar 2012 09:32:57 +0000 (10:32 +0100)
committerMichael <icarus@dabo.de>
Fri, 2 Mar 2012 09:32:57 +0000 (10:32 +0100)
13 files changed:
communityhome.tgz
communityhome/twillingham/README [new file with mode: 0644]
communityhome/twillingham/communityhome.php [new file with mode: 0644]
gnot.tgz [new file with mode: 0644]
gnot/gnot.css [new file with mode: 0755]
gnot/gnot.php [new file with mode: 0755]
ljpost.tgz [new file with mode: 0644]
ljpost/ljpost.css [new file with mode: 0755]
ljpost/ljpost.php [new file with mode: 0755]
qcomment.tgz
qcomment/qcomment.php
wppost.tgz
wppost/wppost.php

index b08abd2ec236c20a20c24d7b8083cff317798e8c..33c6abc12fee0a7042e3aa38e0850d9ec3f55dd9 100755 (executable)
Binary files a/communityhome.tgz and b/communityhome.tgz differ
diff --git a/communityhome/twillingham/README b/communityhome/twillingham/README
new file mode 100644 (file)
index 0000000..bb57427
--- /dev/null
@@ -0,0 +1,7 @@
+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.
diff --git a/communityhome/twillingham/communityhome.php b/communityhome/twillingham/communityhome.php
new file mode 100644 (file)
index 0000000..102732a
--- /dev/null
@@ -0,0 +1,107 @@
+<?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');
+       
+}
diff --git a/gnot.tgz b/gnot.tgz
new file mode 100644 (file)
index 0000000..fbf7f26
Binary files /dev/null and b/gnot.tgz differ
diff --git a/gnot/gnot.css b/gnot/gnot.css
new file mode 100755 (executable)
index 0000000..ccafdaf
--- /dev/null
@@ -0,0 +1,16 @@
+
+#gnot-desc {
+       margin-bottom: 10px;
+}
+
+#gnot-label {
+       float: left;
+       width: 200px;
+       margin-bottom: 25px;
+}
+
+#gnot {
+       float: left;
+}
+
+
diff --git a/gnot/gnot.php b/gnot/gnot.php
new file mode 100755 (executable)
index 0000000..fd8fdfd
--- /dev/null
@@ -0,0 +1,99 @@
+<?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']);
+}
+
diff --git a/ljpost.tgz b/ljpost.tgz
new file mode 100644 (file)
index 0000000..f14b33d
Binary files /dev/null and b/ljpost.tgz differ
diff --git a/ljpost/ljpost.css b/ljpost/ljpost.css
new file mode 100755 (executable)
index 0000000..e0494c5
--- /dev/null
@@ -0,0 +1,16 @@
+
+#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;
+}
+
diff --git a/ljpost/ljpost.php b/ljpost/ljpost.php
new file mode 100755 (executable)
index 0000000..c1b9b97
--- /dev/null
@@ -0,0 +1,222 @@
+<?php
+
+/**
+ * Name: LiveJournal Post Connector
+ * Description: Post to LiveJournal
+ * Version: 1.0
+ * Author: Tony Baldwin <http://theshi.re/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>
+        </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);
+
+       }
+}
+
index 76dffda1c46b5eac43e558fa50e9ffa378a801e4..1ab55a43f8d3a0cc5b146950d35c7a65b5211726 100644 (file)
Binary files a/qcomment.tgz and b/qcomment.tgz differ
index 45e6332ef3603f5a0da6b74fe3da26608d9a5175..6b37257995412748a71daf5548a6dafdef912b6c 100755 (executable)
@@ -53,6 +53,7 @@ function qcomment_addon_settings(&$a,&$s) {
     $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>';
index 6dad5c117973a78a07fc7ea29a3b82d21bed43aa..12f96d3b0c569d433447d2fb11310e8ef953834f 100755 (executable)
Binary files a/wppost.tgz and b/wppost.tgz differ
index 5c1482e7864c46f07e69db795ae1d703eddd4b88..264a342c0c0733c5934b218bb0f9646984e3257b 100755 (executable)
@@ -161,8 +161,8 @@ function wppost_send(&$a,&$b) {
         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) {
@@ -174,8 +174,7 @@ function wppost_send(&$a,&$b) {
                $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>
@@ -194,7 +193,7 @@ EOT;
 
                if($wp_blog !== 'test')
                        $x = post_url($wp_blog,$xml);
-               logger('posted to wordpress: ' . ($x) ? $x : '');
+               logger('posted to wordpress: ' . (($x) ? $x : ''), LOGGER_DEBUG);
 
        }
 }