]> git.mxchange.org Git - friendica-addons.git/commitdiff
Merge remote branch 'upstream/master'
authortony baldwin <tony@baldwinsoftware.com>
Tue, 10 Apr 2012 12:46:37 +0000 (08:46 -0400)
committertony baldwin <tony@baldwinsoftware.com>
Tue, 10 Apr 2012 12:46:37 +0000 (08:46 -0400)
195 files changed:
adult_smile.tgz [deleted file]
adult_smile/adult_smile.php [deleted file]
adult_smile/icons/bong.gif [deleted file]
adult_smile/icons/tits.gif [deleted file]
blockem.tgz
blockem/blockem.php
communityhome.tgz
communityhome/communityhome.php
communityhome/twillingham/README
dwpost.tgz
facebook.tgz
facebook/README
facebook/facebook.php
ijpost.tar.gz [deleted file]
ijpost.tgz [new file with mode: 0644]
impressum.tgz
impressum/README
impressum/admin.tpl
impressum/impressum.css [new file with mode: 0644]
impressum/impressum.php
irc.tgz
irc/irc.php
ljpost.tgz
namethingy.tgz [new file with mode: 0644]
namethingy/namethingy.php [new file with mode: 0755]
nsfw.tgz
nsfw/nsfw.php
openstreetmap.tgz
openstreetmap/README
page.tgz [new file with mode: 0644]
page/page.php [new file with mode: 0755]
pageheader.tgz
pageheader/pageheader.php
pages.tgz
pages/README [deleted file]
pages/pages.php [deleted file]
piwik.tgz
piwik/README
piwik/piwik.php
showmore.tgz
showmore/showmore.php
smiley_pack.tgz [new file with mode: 0644]
smiley_pack/icons/animals/bee.gif [new file with mode: 0644]
smiley_pack/icons/animals/bigspider.gif [new file with mode: 0644]
smiley_pack/icons/animals/bunny.gif [new file with mode: 0644]
smiley_pack/icons/animals/bunnyflowers.gif [new file with mode: 0644]
smiley_pack/icons/animals/cat.gif [new file with mode: 0644]
smiley_pack/icons/animals/chick.gif [new file with mode: 0644]
smiley_pack/icons/animals/cow.gif [new file with mode: 0644]
smiley_pack/icons/animals/crab.gif [new file with mode: 0644]
smiley_pack/icons/animals/dog.gif [new file with mode: 0644]
smiley_pack/icons/animals/dolphin.gif [new file with mode: 0644]
smiley_pack/icons/animals/dragonfly.gif [new file with mode: 0644]
smiley_pack/icons/animals/elephant.gif [new file with mode: 0644]
smiley_pack/icons/animals/fish.gif [new file with mode: 0644]
smiley_pack/icons/animals/frog.gif [new file with mode: 0644]
smiley_pack/icons/animals/giraffe.gif [new file with mode: 0644]
smiley_pack/icons/animals/hamster.gif [new file with mode: 0644]
smiley_pack/icons/animals/horse.gif [new file with mode: 0644]
smiley_pack/icons/animals/ladybird.gif [new file with mode: 0644]
smiley_pack/icons/animals/monkey.gif [new file with mode: 0644]
smiley_pack/icons/animals/parrot.gif [new file with mode: 0644]
smiley_pack/icons/animals/pig.gif [new file with mode: 0644]
smiley_pack/icons/animals/sheep.gif [new file with mode: 0644]
smiley_pack/icons/animals/snail.gif [new file with mode: 0644]
smiley_pack/icons/animals/tux.gif [new file with mode: 0644]
smiley_pack/icons/babies/baby.gif [new file with mode: 0644]
smiley_pack/icons/babies/babycot.gif [new file with mode: 0644]
smiley_pack/icons/babies/pregnant.gif [new file with mode: 0644]
smiley_pack/icons/babies/stork.gif [new file with mode: 0644]
smiley_pack/icons/confused/confused.gif [new file with mode: 0644]
smiley_pack/icons/confused/dazed.gif [new file with mode: 0644]
smiley_pack/icons/confused/shrug.gif [new file with mode: 0644]
smiley_pack/icons/confused/stupid.gif [new file with mode: 0644]
smiley_pack/icons/cool/affro.gif [new file with mode: 0644]
smiley_pack/icons/cool/cool.gif [new file with mode: 0644]
smiley_pack/icons/devilangel/angel.gif [new file with mode: 0644]
smiley_pack/icons/devilangel/blondedevil.gif [new file with mode: 0644]
smiley_pack/icons/devilangel/catdevil.gif [new file with mode: 0644]
smiley_pack/icons/devilangel/cherub.gif [new file with mode: 0644]
smiley_pack/icons/devilangel/daseesaw.gif [new file with mode: 0644]
smiley_pack/icons/devilangel/devil.gif [new file with mode: 0644]
smiley_pack/icons/devilangel/graveside.gif [new file with mode: 0644]
smiley_pack/icons/devilangel/saint.gif [new file with mode: 0644]
smiley_pack/icons/devilangel/turnevil.gif [new file with mode: 0644]
smiley_pack/icons/disgust/fartblush.gif [new file with mode: 0644]
smiley_pack/icons/disgust/fartinbed.gif [new file with mode: 0644]
smiley_pack/icons/disgust/toilet.gif [new file with mode: 0644]
smiley_pack/icons/disgust/vomit.gif [new file with mode: 0644]
smiley_pack/icons/drink/tea.gif [new file with mode: 0644]
smiley_pack/icons/drool/drool.gif [new file with mode: 0644]
smiley_pack/icons/fantasy/alienmonster.gif [new file with mode: 0644]
smiley_pack/icons/fantasy/barbarian.gif [new file with mode: 0644]
smiley_pack/icons/fantasy/dinosaur.gif [new file with mode: 0644]
smiley_pack/icons/fantasy/dragon.gif [new file with mode: 0644]
smiley_pack/icons/fantasy/dragonwhelp.gif [new file with mode: 0644]
smiley_pack/icons/fantasy/ghost.gif [new file with mode: 0644]
smiley_pack/icons/fantasy/mummy.gif [new file with mode: 0644]
smiley_pack/icons/fight/2guns.gif [new file with mode: 0644]
smiley_pack/icons/fight/acid.gif [new file with mode: 0644]
smiley_pack/icons/fight/alienfight.gif [new file with mode: 0644]
smiley_pack/icons/fight/army.gif [new file with mode: 0644]
smiley_pack/icons/fight/arrowhead.gif [new file with mode: 0644]
smiley_pack/icons/fight/bfg.gif [new file with mode: 0644]
smiley_pack/icons/fight/bowman.gif [new file with mode: 0644]
smiley_pack/icons/fight/chainsaw.gif [new file with mode: 0644]
smiley_pack/icons/fight/crossbow.gif [new file with mode: 0644]
smiley_pack/icons/fight/crusader.gif [new file with mode: 0644]
smiley_pack/icons/fight/dead.gif [new file with mode: 0644]
smiley_pack/icons/fight/gangs.gif [new file with mode: 0644]
smiley_pack/icons/fight/hammersplat.gif [new file with mode: 0644]
smiley_pack/icons/fight/lasergun.gif [new file with mode: 0644]
smiley_pack/icons/fight/machinegun.gif [new file with mode: 0644]
smiley_pack/icons/fight/marine.gif [new file with mode: 0644]
smiley_pack/icons/fight/sabre.gif [new file with mode: 0644]
smiley_pack/icons/fight/samurai.gif [new file with mode: 0644]
smiley_pack/icons/fight/tank.gif [new file with mode: 0644]
smiley_pack/icons/fight/viking.gif [new file with mode: 0644]
smiley_pack/icons/food/apple.gif [new file with mode: 0644]
smiley_pack/icons/food/banana.gif [new file with mode: 0644]
smiley_pack/icons/food/broccoli.gif [new file with mode: 0644]
smiley_pack/icons/food/cake.gif [new file with mode: 0644]
smiley_pack/icons/food/carrot.gif [new file with mode: 0644]
smiley_pack/icons/food/cooking.gif [new file with mode: 0644]
smiley_pack/icons/food/fryegg.gif [new file with mode: 0644]
smiley_pack/icons/food/popcorn.gif [new file with mode: 0644]
smiley_pack/icons/food/tomato.gif [new file with mode: 0644]
smiley_pack/icons/happy/cloud9.gif [new file with mode: 0644]
smiley_pack/icons/happy/tearsofjoy.gif [new file with mode: 0644]
smiley_pack/icons/laugh/hahaha.gif [new file with mode: 0644]
smiley_pack/icons/laugh/loltv.gif [new file with mode: 0644]
smiley_pack/icons/laugh/rofl.gif [new file with mode: 0644]
smiley_pack/icons/love/iloveyou.gif [new file with mode: 0644]
smiley_pack/icons/love/inlove.gif [new file with mode: 0644]
smiley_pack/icons/love/love.gif [new file with mode: 0644]
smiley_pack/icons/love/lovebear.gif [new file with mode: 0644]
smiley_pack/icons/love/lovebed.gif [new file with mode: 0644]
smiley_pack/icons/love/loveheart.gif [new file with mode: 0644]
smiley_pack/icons/music/dj.gif [new file with mode: 0644]
smiley_pack/icons/music/drums.gif [new file with mode: 0644]
smiley_pack/icons/music/elvis.gif [new file with mode: 0644]
smiley_pack/icons/music/guitar.gif [new file with mode: 0644]
smiley_pack/icons/music/trumpet.gif [new file with mode: 0644]
smiley_pack/icons/music/violin.gif [new file with mode: 0644]
smiley_pack/icons/oldcore/beard.png [new file with mode: 0644]
smiley_pack/icons/oldcore/headbang.gif [new file with mode: 0644]
smiley_pack/icons/oldcore/laughing.gif [new file with mode: 0755]
smiley_pack/icons/oldcore/shaka.gif [new file with mode: 0644]
smiley_pack/icons/oldcore/surprised.gif [new file with mode: 0755]
smiley_pack/icons/oldcore/whitebeard.png [new file with mode: 0644]
smiley_pack/icons/respect/bow.gif [new file with mode: 0644]
smiley_pack/icons/respect/bravo.gif [new file with mode: 0644]
smiley_pack/icons/respect/hailking.gif [new file with mode: 0644]
smiley_pack/icons/respect/number1.gif [new file with mode: 0644]
smiley_pack/icons/sad/crying.png [new file with mode: 0644]
smiley_pack/icons/sad/prisoner.gif [new file with mode: 0644]
smiley_pack/icons/smoking/smoking.gif [new file with mode: 0644]
smiley_pack/icons/sport/archery.gif [new file with mode: 0644]
smiley_pack/icons/sport/basketball.gif [new file with mode: 0644]
smiley_pack/icons/sport/bowling.gif [new file with mode: 0644]
smiley_pack/icons/sport/cycling.gif [new file with mode: 0644]
smiley_pack/icons/sport/darts.gif [new file with mode: 0644]
smiley_pack/icons/sport/fencing.gif [new file with mode: 0644]
smiley_pack/icons/sport/football.gif [new file with mode: 0644]
smiley_pack/icons/sport/golf.gif [new file with mode: 0644]
smiley_pack/icons/sport/horseriding.gif [new file with mode: 0644]
smiley_pack/icons/sport/juggling.gif [new file with mode: 0644]
smiley_pack/icons/sport/skipping.gif [new file with mode: 0644]
smiley_pack/icons/sport/snooker.gif [new file with mode: 0644]
smiley_pack/icons/sport/surfing.gif [new file with mode: 0644]
smiley_pack/icons/sport/tennis.gif [new file with mode: 0644]
smiley_pack/icons/tired/countsheep.gif [new file with mode: 0644]
smiley_pack/icons/tired/hammock.gif [new file with mode: 0644]
smiley_pack/icons/tired/pillow.gif [new file with mode: 0644]
smiley_pack/smiley_pack.php [new file with mode: 0644]
smilies_adult.tgz [new file with mode: 0644]
smilies_adult/icons/bong.gif [new file with mode: 0644]
smilies_adult/icons/drunk.gif [new file with mode: 0644]
smilies_adult/icons/sperm.gif [new file with mode: 0644]
smilies_adult/icons/tits.gif [new file with mode: 0644]
smilies_adult/smilies_adult.php [new file with mode: 0644]
statusnet.tgz
statusnet/README
statusnet/statusnet.css
statusnet/statusnet.php
twitter.tgz
twitter/README
twitter/twitter.css
twitter/twitter.php
viewsrc.tgz
viewsrc/viewsrc.php
widgets.tgz
widgets/widgets.php
wppost.tgz
wppost/wppost.php

diff --git a/adult_smile.tgz b/adult_smile.tgz
deleted file mode 100644 (file)
index 67e2a31..0000000
Binary files a/adult_smile.tgz and /dev/null differ
diff --git a/adult_smile/adult_smile.php b/adult_smile/adult_smile.php
deleted file mode 100644 (file)
index 4657414..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-<?php
-/*
- * Name: Adult Smilies
- * Description: Smily icons that could or should not be included in core
- * Version: 1.0
- * Author: Mike Macgirvin <http://macgirvin.com/profile/mike>
- * 
- * This is a template for how to extend the "smily" code.
- * 
- */
-
-function adult_smile_install() {
-       register_hook('smilie', 'addon/adult_smile/adult_smile.php', 'adult_smile_smilies');
-}
-
-function adult_smile_uninstall() {
-       unregister_hook('smilie', 'addon/adult_smile/adult_smile.php', 'adult_smile_smilies');
-}
-
-
-function adult_smile_smilies(&$a,&$b) {
-
-       $b['texts'][] = '(o)(o)';
-       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/adult_smile/icons/tits.gif' . '" alt="' . '(o)(o)' . '" />';
-
-       $b['texts'][] = '(.)(.)';
-       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/adult_smile/icons/tits.gif' . '" alt="' . '(.)(.)' . '" />';
-
-       $b['texts'][] = ':bong';
-       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/adult_smile/icons/bong.gif' . '" alt="' . ':bong' . '" />';
-
-
-}
\ No newline at end of file
diff --git a/adult_smile/icons/bong.gif b/adult_smile/icons/bong.gif
deleted file mode 100644 (file)
index 4b67122..0000000
Binary files a/adult_smile/icons/bong.gif and /dev/null differ
diff --git a/adult_smile/icons/tits.gif b/adult_smile/icons/tits.gif
deleted file mode 100644 (file)
index 4c1658c..0000000
Binary files a/adult_smile/icons/tits.gif and /dev/null differ
index dd092204f380e65b5cf18babf0de1edc53fb9ebf..c1842e52411ebbf55ee9f96894d11bbafb6234a7 100755 (executable)
Binary files a/blockem.tgz and b/blockem.tgz differ
index 9134bd0b654fea63fdfaeba3bd3fc01a4d4c4a08..5ff87c58b2d0ee2ae3f4690af94df9eee682ffc9 100755 (executable)
@@ -109,7 +109,7 @@ function blockem_prepare_body(&$a,&$b) {
 
 function blockem_display_item(&$a,&$b) {
        if(strstr($b['output']['body'],'id="blockem-wrap-'))
-               $b['output']['thumb'] = $a->get_baseurl() . "/images/default-profile-sm.jpg";
+               $b['output']['thumb'] = $a->get_baseurl() . "/images/person-80.jpg";
 }
 
 
index b08f2e5680d9013231e95abe67bc2758c18ecca7..dbb235bbbb9a8dd1be06d8da9f73790336fec470 100755 (executable)
Binary files a/communityhome.tgz and b/communityhome.tgz differ
index 8f0aa867509998266029d40ac05c4c4aa3e7a9f8..14c40328e0b3613f5b1db5318503c020e211db5e 100755 (executable)
@@ -35,7 +35,7 @@ function communityhome_home(&$a, &$o){
        $aside['$login_form'] = login(($a->config['register_policy'] == REGISTER_CLOSED) ? false : true);
        
        // last 12 users
-       $aside['$lastusers_title'] = t('Last users');
+       $aside['$lastusers_title'] = t('Latest users');
        $aside['$lastusers_items'] = array();
        $sql_extra = "";
        $publish = (get_config('system','publish_all') ? '' : " AND `publish` = 1 " );
@@ -95,7 +95,7 @@ function communityhome_home(&$a, &$o){
        }
        
        // last 12 photos
-       $aside['$photos_title'] = t('Last photos');
+       $aside['$photos_title'] = t('Latest photos');
        $aside['$photos_items'] = array();
        $r = q("SELECT `photo`.`id`, `photo`.`resource-id`, `photo`.`scale`, `photo`.`desc`, `user`.`nickname`, `user`.`username` FROM 
                                (SELECT `resource-id`, MAX(`scale`) as maxscale FROM `photo` 
@@ -130,7 +130,7 @@ function communityhome_home(&$a, &$o){
        }
        
        // last 10 liked items
-       $aside['$like_title'] = t('Last likes');
+       $aside['$like_title'] = t('Latest likes');
        $aside['$like_items'] = array();
        $r = q("SELECT `T1`.`created`, `T1`.`liker`, `T1`.`liker-link`, `item`.* FROM 
                        (SELECT `parent-uri`, `created`, `author-name` AS `liker`,`author-link` AS `liker-link` 
index bb5742785e34422567bf2614796142a3817b91aa..dbbe14198046771438cc228a64dbbeb882275712 100644 (file)
@@ -1,7 +1,3 @@
-Thomas Willingham
+This is a variant of the community home.  Instead of displaying the community tab in the front page, we still use home.html, but we also add the latest users to the sidebar.
 
-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.
+Simply replace addon/communityhome/communityhome.php with this version then enable community home in your admin panel as usual.
\ No newline at end of file
index ecbb5198f0da94735d63ced4755d6e827db97e45..c0fbb96bd402bb314142fe5cf36d531e8d4d03d6 100644 (file)
Binary files a/dwpost.tgz and b/dwpost.tgz differ
index 783425cedb897604f662a7b1261b797dc0e28e49..563d39cc8f4965b8f54a60abcc1f2d9504958979 100644 (file)
Binary files a/facebook.tgz and b/facebook.tgz differ
index 9687558e70bd9a0d1b8aefd167e4aea1a8f64402..b68ba3da81e0094820adf08a227493bcf74ecc1d 100755 (executable)
@@ -1,35 +1,43 @@
 Installing the Friendica/Facebook connector
 
-1. register an API key for your site from developer.facebook.com
-  a. We'd be very happy if you include "Friendica" in the application name
-     to increase name recognition. The Friendica icons are also present
-     in the images directory and may be uploaded as a Facebook app icon.
-     Use images/friendica-16.jpg for the Icon and images/friendica-128.jpg for the Logo.
-  b. The url should be your site URL with a trailing slash.
-     You may use http://portal.friendika.com/privacy as the privacy policy
-     URL unless your site has different requirements, and 
-     http://portal.friendika.com as the Terms of Service URL unless
-     you have different requirements. (Friendica is a software application
-     and does not require Terms of Service, though your installation of it might).
-  c. Set the following values in your .htconfig.php file
-        $a->config['facebook']['appid'] = 'xxxxxxxxxxx';
-        $a->config['facebook']['appsecret'] = 'xxxxxxxxxxxxxxx';
-     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.
-   and click 'Install Facebook Connector'.
-4. This will ask you to login to Facebook and grant permission to the 
-   plugin to do its stuff. Allow it to do so. 
-5. Optional step: If you want to use Facebook Real Time Updates (so new messages
-   and new contacts are added ~1min after they are postet / added on FB), go to
-   Settings -> plugins -> facebook and press the "Activate Real-Time Updates"-button.
-6. You're done. To turn it off visit the Plugin Settings page again and
-   'Remove Facebook posting'.
+1. Visit https://developers.facebook.com/apps to register an app.
+    a) Click "Create a new app"
+    b) We'd be very happy if you include "Friendica" in the application name
+       to increase name recognition.  
+    c) Edit your app settings on the setup page.  The Friendica icons are present
+       in the images directory and may be uploaded as a Facebook app icon.  Use 
+       images/friendica-16.jpg for the Icon and images/Friendica-128.jpg for the logo.
+    d) In the App Display name enter the name of your app (this should default to the
+       name you chose in part a).
+    e) Enter YourDomain.com in the App Domain field and hit return.
+    f) In "Select how your app connects with Facebook select "Website" and enter the 
+       full URL to your Friendica install including HTTPS and a trailing slash.
+
+2.    Enable the Facebook plugin by clicking on the icon next to it's name on the plugin
+      page of your admin panel.
+   b) return to the Facebook plugin page in your admin panel, and fill in the App-ID
+      and Application Secret settings you got from Facebook.
+   c) Click save.
+   d) Finally, return to the Facebook settings page, and activate real-time updates.
+
+       i. If you for any reason prefer to use a configuration file instead of the admin panels, 
+           Activate the plugin by including it in .htconfig.php, e.g.
+           
+               $a->config['system']['addon'] = 'plugin1,plugin2,facebook';
+       
+           and set the following values:
+               $a->config['facebook']['appid'] = 'xxxxxxxxxxx';
+               $a->config['facebook']['appsecret'] = 'xxxxxxxxxxxxxxx';
+
+           Replace with the settings Facebook gives you.
+       
+
+3.    To use the Facebook plugin, visit the "connector settings" area of your settings
+      page.  Click "Install Facebook Connector".  
+4.    This will ask you to login to Facebook and allow the plugin to do it's stuff.  
+      Allow it to do so.
+5.    You're done. To turn it off visit the Plugin Settings page again and
+      'Remove Facebook posting'.
 
 Vidoes and embeds will not be posted if there is no other content. Links 
 and images will be converted to a format suitable for the Facebook API and 
index 4524a4865b18773b868257bcb073081347b4ec7f..70a353dd2ee5f4cfe42876c1c1fb8f9ac768de06 100755 (executable)
@@ -25,9 +25,8 @@
  *   d. Navigate to Set Web->Site URL & Domain -> Website Settings.  Set 
  *      Site URL to yoursubdomain.yourdomain.com. Set Site Domain to your 
  *      yourdomain.com.
- * 2. (This step is now obsolete. Enable the plugin via the Admin panel.)
- *     Enable the facebook plugin by including it in .htconfig.php - e.g. 
- *     $a->config['system']['addon'] = 'plugin1,plugin2,facebook';
+ * 2. Visit the Facebook Settings section of the "Settings->Plugin Settings" page.
+ *    and click 'Install Facebook Connector'.
  * 3. Visit the Facebook Settings section of the "Settings->Plugin Settings" page.
  *    and click 'Install Facebook Connector'.
  * 4. This will ask you to login to Facebook and grant permission to the 
  * authenticate to your site to establish identity. We will address this 
  * in a future release.
  */
+ /** TODO
+ * - Implement a method for the administrator to delete all configuration data the plugin has created,
+ *   e.g. the app_access_token
+ */
 
-define('FACEBOOK_MAXPOSTLEN', 420);
+// Size of maximum post length increased
+// see http://www.facebook.com/schrep/posts/203969696349811
+// define('FACEBOOK_MAXPOSTLEN', 420);
+define('FACEBOOK_MAXPOSTLEN', 63206);
+define('FACEBOOK_SESSION_ERR_NOTIFICATION_INTERVAL', 259200); // 3 days
+define('FACEBOOK_DEFAULT_POLL_INTERVAL', 60); // given in minutes
+define('FACEBOOK_MIN_POLL_INTERVAL', 5);
 
 
 function facebook_install() {
@@ -56,9 +66,8 @@ function facebook_install() {
        register_hook('jot_networks',     'addon/facebook/facebook.php', 'facebook_jot_nets');
        register_hook('connector_settings',  'addon/facebook/facebook.php', 'facebook_plugin_settings');
        register_hook('cron',             'addon/facebook/facebook.php', 'facebook_cron');
+       register_hook('enotify',          'addon/facebook/facebook.php', 'facebook_enotify');
        register_hook('queue_predeliver', 'addon/facebook/facebook.php', 'fb_queue_hook');
-       
-       if (get_config('facebook', 'realtime_active') == 1) facebook_subscription_add_users(); // Restore settings, if the plugin was installed before
 }
 
 
@@ -68,13 +77,12 @@ function facebook_uninstall() {
        unregister_hook('jot_networks',     'addon/facebook/facebook.php', 'facebook_jot_nets');
        unregister_hook('connector_settings',  'addon/facebook/facebook.php', 'facebook_plugin_settings');
        unregister_hook('cron',             'addon/facebook/facebook.php', 'facebook_cron');
+       unregister_hook('enotify',          'addon/facebook/facebook.php', 'facebook_enotify');
        unregister_hook('queue_predeliver', 'addon/facebook/facebook.php', 'fb_queue_hook');
 
        // hook moved
        unregister_hook('post_local_end',  'addon/facebook/facebook.php', 'facebook_post_hook');
        unregister_hook('plugin_settings',  'addon/facebook/facebook.php', 'facebook_plugin_settings');
-       
-       if (get_config('facebook', 'realtime_active') == 1) facebook_subscription_del_users();
 }
 
 
@@ -150,8 +158,12 @@ function facebook_init(&$a) {
                                                        $s = fetch_url('https://graph.facebook.com/me/feed?access_token=' . $access_token);
                                                        if($s) {
                                                                $j = json_decode($s);
-                                                               logger('facebook_init: wall: ' . print_r($j,true), LOGGER_DATA);
-                                                               fb_consume_stream($uid,$j,($private_wall) ? false : true);
+                                                               if (isset($j->data)) {
+                                                                       logger('facebook_init: wall: ' . print_r($j,true), LOGGER_DATA);
+                                                                       fb_consume_stream($uid,$j,($private_wall) ? false : true);
+                                                               } else {
+                                                                       logger('facebook_init: wall: got no data from Facebook: ' . print_r($j,true), LOGGER_NORMAL);
+                                                               }
                                                        }
                                                }
                                                
@@ -256,6 +268,10 @@ function fb_get_friends_sync_full($uid, $access_token, $person) {
 
                $jp->link = 'http://facebook.com/profile.php?id=' . $person->id;
 
+               // If its a page then set the first name from the username
+               if (!$jp->first_name and $jp->username)
+                       $jp->first_name = $jp->username;
+
                // check if we already have a contact
 
                $r = q("SELECT * FROM `contact` WHERE `uid` = %d AND `url` = '%s' LIMIT 1",
@@ -455,9 +471,21 @@ function facebook_content(&$a) {
                info( t('Updating contacts') . EOL);
        }
 
-
-       $fb_installed = get_pconfig(local_user(),'facebook','post');
-
+       $o = '';
+       
+       $fb_installed = false;
+       if (get_pconfig(local_user(),'facebook','post')) {
+               $access_token = get_pconfig(local_user(),'facebook','access_token');
+               if ($access_token) {
+                       $private_wall = intval(get_pconfig($uid,'facebook','private_wall'));
+                       $s = fetch_url('https://graph.facebook.com/me/feed?access_token=' . $access_token);
+                       if($s) {
+                               $j = json_decode($s);
+                               if (isset($j->data)) $fb_installed = true;
+                       }
+               }
+       }
+       
        $appid = get_config('facebook','appid');
 
        if(! $appid) {
@@ -534,7 +562,7 @@ function facebook_cron($a,$b) {
        
        $poll_interval = intval(get_config('facebook','poll_interval'));
        if(! $poll_interval)
-               $poll_interval = 3600;
+               $poll_interval = FACEBOOK_DEFAULT_POLL_INTERVAL;
 
        if($last) {
                $next = $last + $poll_interval;
@@ -589,7 +617,7 @@ function facebook_cron($a,$b) {
                                
                                if(strlen($a->config['admin_email']) && !get_config('facebook', 'realtime_err_mailsent')) {
                                        $res = mail($a->config['admin_email'], t('Problems with Facebook Real-Time Updates'), 
-                                               "Hi!\n\nThere's a problem with the Facebook Real-Time Updates that cannob be solved automatically. Maybe an permission issue?\n\nThis e-mail will only be sent once.",
+                                               "Hi!\n\nThere's a problem with the Facebook Real-Time Updates that cannot be solved automatically. Maybe a permission issue?\n\nPlease try to re-activate it on " . $a->config["system"]["url"] . "/admin/plugins/facebook\n\nThis e-mail will only be sent once.",
                                                'From: ' . t('Administrator') . '@' . $_SERVER['SERVER_NAME'] . "\n"
                                                . 'Content-type: text/plain; charset=UTF-8' . "\n"
                                                . 'Content-transfer-encoding: 8bit'
@@ -620,17 +648,58 @@ function facebook_plugin_settings(&$a,&$b) {
 
 
 function facebook_plugin_admin(&$a, &$o){
+       $o = '<input type="hidden" name="form_security_token" value="' . get_form_security_token("fbsave") . '">';
        
-       $activated = facebook_check_realtime_active();
-       if ($activated) {
-               $o = t('Real-Time Updates are activated.') . '<br><br>';
-               $o .= '<input type="submit" name="real_time_deactivate" value="' . t('Deactivate Real-Time Updates') . '">';
-       } else {
-               $o = t('Real-Time Updates not activated.') . '<br><input type="submit" name="real_time_activate" value="' . t('Activate Real-Time Updates') . '">';
+       $o .= '<h4>' . t('Facebook API Key') . '</h4>';
+       
+       $appid  = get_config('facebook', 'appid'  );
+       $appsecret = get_config('facebook', 'appsecret' );
+       $poll_interval = get_config('facebook', 'poll_interval' );
+       if (!$poll_interval) $poll_interval = FACEBOOK_DEFAULT_POLL_INTERVAL;
+       
+       $ret1 = q("SELECT `v` FROM `config` WHERE `cat` = 'facebook' AND `k` = 'appid' LIMIT 1");
+       $ret2 = q("SELECT `v` FROM `config` WHERE `cat` = 'facebook' AND `k` = 'appsecret' LIMIT 1");
+       if ((count($ret1) > 0 && $ret1[0]['v'] != $appid) || (count($ret2) > 0 && $ret2[0]['v'] != $appsecret)) $o .= t('Error: it appears that you have specified the App-ID and -Secret in your .htconfig.php file. As long as they are specified there, they cannot be set using this form.<br><br>');
+       
+       $working_connection = false;
+       if ($appid && $appsecret) {
+               $subs = facebook_subscriptions_get();
+               if ($subs === null) $o .= t('Error: the given API Key seems to be incorrect (the application access token could not be retrieved).') . '<br>';
+               elseif (is_array($subs)) {
+                       $o .= t('The given API Key seems to work correctly.') . '<br>';
+                       $working_connection = true;
+               } else $o .= t('The correctness of the API Key could not be detected. Somthing strange\'s going on.') . '<br>';
+       }
+       
+       $o .= '<label for="fb_appid">' . t('App-ID / API-Key') . '</label><input name="appid" type="text" value="' . escape_tags($appid ? $appid : "") . '"><br style="clear: both;">';
+       $o .= '<label for="fb_appsecret">' . t('Application secret') . '</label><input name="appsecret" type="text" value="' . escape_tags($appsecret ? $appsecret : "") . '"><br style="clear: both;">';
+       $o .= '<label for="fb_poll_interval">' . sprintf(t('Polling Interval (min. %1$s minutes)'), FACEBOOK_MIN_POLL_INTERVAL) . '</label><input name="poll_interval" type="number" min="' . FACEBOOK_MIN_POLL_INTERVAL . '" value="' . $poll_interval . '"><br style="clear: both;">';
+       $o .= '<input type="submit" name="fb_save_keys" value="' . t('Save') . '">';
+       
+       if ($working_connection) {
+               $o .= '<h4>' . t('Real-Time Updates') . '</h4>';
+               
+               $activated = facebook_check_realtime_active();
+               if ($activated) {
+                       $o .= t('Real-Time Updates are activated.') . '<br><br>';
+                       $o .= '<input type="submit" name="real_time_deactivate" value="' . t('Deactivate Real-Time Updates') . '">';
+               } else {
+                       $o .= t('Real-Time Updates not activated.') . '<br><input type="submit" name="real_time_activate" value="' . t('Activate Real-Time Updates') . '">';
+               }
        }
 }
 
 function facebook_plugin_admin_post(&$a, &$o){
+       check_form_security_token_redirectOnErr('/admin/plugins/facebook', 'fbsave');
+       
+       if (x($_REQUEST,'fb_save_keys')) {
+               set_config('facebook', 'appid', $_REQUEST['appid']);
+               set_config('facebook', 'appsecret', $_REQUEST['appsecret']);
+               $poll_interval = IntVal($_REQUEST['poll_interval']);
+               if ($poll_interval >= FACEBOOK_MIN_POLL_INTERVAL) set_config('facebook', 'poll_interval', $poll_interval);
+               del_config('facebook', 'app_access_token');
+               info(t('The new values have been saved.'));
+       }
        if (x($_REQUEST,'real_time_activate')) {
                facebook_subscription_add_users();
        }
@@ -664,6 +733,7 @@ function facebook_post_hook(&$a,&$b) {
         */
 
        require_once('include/group.php');
+       require_once('include/html2plain.php');
 
        logger('Facebook post');
 
@@ -784,7 +854,8 @@ function facebook_post_hook(&$a,&$b) {
                                if($b['verb'] == ACTIVITY_DISLIKE)
                                        $msg = trim(strip_tags(bbcode($msg)));
 
-                               $search_str = $a->get_baseurl() . '/search';
+                               // Old code
+                               /*$search_str = $a->get_baseurl() . '/search';
 
                                if(preg_match("/\[url=(.*?)\](.*?)\[\/url\]/is",$msg,$matches)) {
 
@@ -813,24 +884,83 @@ function facebook_post_hook(&$a,&$b) {
                                if((strpos($link,z_root()) !== false) && (! $image))
                                        $image = $a->get_baseurl() . '/images/friendica-64.jpg';
 
-                               $msg = trim(strip_tags(bbcode($msg)));
+                               $msg = trim(strip_tags(bbcode($msg)));*/
+
+                               // New code
+
+                               // Looking for the first image
+                               $image = '';
+                               if(preg_match("/\[img\=([0-9]*)x([0-9]*)\](.*?)\[\/img\]/is",$b['body'],$matches))
+                                       $image = $matches[3];
+
+                               if ($image != '')
+                                       if(preg_match("/\[img\](.*?)\[\/img\]/is",$b['body'],$matches))
+                                               $image = $matches[1];
+
+                               // Checking for a bookmark element
+                               $body = $b['body'];
+                               if (strpos($body, "[bookmark") !== false) {
+                                       // splitting the text in two parts:
+                                       // before and after the bookmark
+                                       $pos = strpos($body, "[bookmark");
+                                       $body1 = substr($body, 0, $pos);
+                                       $body2 = substr($body, $pos);
+
+                                       // Removing the bookmark and all quotes after the bookmark
+                                       // they are mostly only the content after the bookmark.
+                                       $body2 = preg_replace("/\[bookmark\=([^\]]*)\](.*?)\[\/bookmark\]/ism",'',$body2);
+                                       $body2 = preg_replace("/\[quote\=([^\]]*)\](.*?)\[\/quote\]/ism",'',$body2);
+                                       $body2 = preg_replace("/\[quote\](.*?)\[\/quote\]/ism",'',$body2);
+
+                                       $body = $body1.$body2;
+                               }
+
+                               // At first convert the text to html
+                               $html = bbcode($body);
+
+                               // Then convert it to plain text
+                               $msg = trim($b['title']." \n\n".html2plain($html, 0, true));
                                $msg = html_entity_decode($msg,ENT_QUOTES,'UTF-8');
 
-                               // add any attachments as text urls
+                               // Removing multiple newlines
+                               while (strpos($msg, "\n\n\n") !== false)
+                                       $msg = str_replace("\n\n\n", "\n\n", $msg);
 
-                           $arr = explode(',',$b['attach']);
+                               // add any attachments as text urls
+                               $arr = explode(',',$b['attach']);
 
-                           if(count($arr)) {
+                               if(count($arr)) {
                                        $msg .= "\n";
-                               foreach($arr as $r) {
-                               $matches = false;
+                                       foreach($arr as $r) {
+                                               $matches = false;
                                                $cnt = preg_match('|\[attach\]href=\"(.*?)\" size=\"(.*?)\" type=\"(.*?)\" title=\"(.*?)\"\[\/attach\]|',$r,$matches);
                                                if($cnt) {
-                                                       $msg .= $matches[1];
+                                                       $msg .= "\n".$matches[1];
                                                }
                                        }
                                }
 
+                               $link = '';
+                               $linkname = '';
+                               // look for bookmark-bbcode and handle it with priority
+                               if(preg_match("/\[bookmark\=([^\]]*)\](.*?)\[\/bookmark\]/is",$b['body'],$matches)) {
+                                       $link = $matches[1];
+                                       $linkname = $matches[2];
+                               }
+
+                               // If there is no bookmark element then take the first link
+                               if ($link == '') {
+                                       $links = collecturls($html);
+                                       if (sizeof($links) > 0) {
+                                               reset($links);
+                                               $link = current($links);
+                                       }
+                               }
+
+                               // Remove trailing and leading spaces
+                               $msg = trim($msg);
+
+                               // Since facebook increased the maxpostlen massively this never should happen again :)
                                if (strlen($msg) > FACEBOOK_MAXPOSTLEN) {
                                        $shortlink = "";
                                        require_once('library/slinky.php');
@@ -848,7 +978,19 @@ function facebook_post_hook(&$a,&$b) {
                                        $msg = substr($msg, 0, FACEBOOK_MAXPOSTLEN - strlen($shortlink) - 4);
                                        $msg .= '... ' . $shortlink;
                                }
-                               if(! strlen($msg))
+
+                               // Fallback - if message is empty
+                               if(!strlen($msg))
+                                       $msg = $link;
+
+                               if(!strlen($msg))
+                                       $msg = $image;
+
+                               if(!strlen($msg))
+                                       $msg = $linkname;
+
+                               // If there is nothing to post then exit
+                               if(!strlen($msg))
                                        return;
 
                                logger('Facebook post: msg=' . $msg, LOGGER_DATA);
@@ -896,6 +1038,7 @@ function facebook_post_hook(&$a,&$b) {
 
                                if(! get_config('facebook','test_mode')) {
                                        $x = post_url($url, $postvars);
+                                       logger('Facebook post returns: ' . $x, LOGGER_DEBUG);
 
                                        $retj = json_decode($x);
                                        if($retj->id) {
@@ -911,15 +1054,45 @@ function facebook_post_hook(&$a,&$b) {
                                                        add_to_queue($a->contact,NETWORK_FACEBOOK,$s);
                                                        notice( t('Facebook post failed. Queued for retry.') . EOL);
                                                }
+                                               
+                                               if (isset($retj->error) && $retj->error->type == "OAuthException" && $retj->error->code == 190) {
+                                                       logger('Facebook session has expired due to changed password.', LOGGER_DEBUG);
+                                                       
+                                                       $last_notification = get_pconfig($b['uid'], 'facebook', 'session_expired_mailsent');
+                                                       if (!$last_notification || $last_notification < (time() - FACEBOOK_SESSION_ERR_NOTIFICATION_INTERVAL)) {
+                                                               require_once('include/enotify.php');
+                                                       
+                                                               $r = q("SELECT * FROM `user` WHERE `uid` = %d LIMIT 1", intval($b['uid']) );
+                                                               notification(array(
+                                                                       'uid' => $b['uid'],
+                                                                       'type' => NOTIFY_SYSTEM,
+                                                                       'system_type' => 'facebook_connection_invalid',
+                                                                       'language'     => $r[0]['language'],
+                                                                       'to_name'      => $r[0]['username'],
+                                                                       'to_email'     => $r[0]['email'],
+                                                                       'source_name'  => t('Administrator'),
+                                                                       'source_link'  => $a->config["system"]["url"],
+                                                                       'source_photo' => $a->config["system"]["url"] . '/images/person-80.jpg',
+                                                               ));
+                                                               
+                                                               set_pconfig($b['uid'], 'facebook', 'session_expired_mailsent', time());
+                                                       } else logger('Facebook: No notification, as the last one was sent on ' . $last_notification, LOGGER_DEBUG);
+                                               }
                                        }
-                                       
-                                       logger('Facebook post returns: ' . $x, LOGGER_DEBUG);
                                }
                        }
                }
        }
 }
 
+function facebook_enotify(&$app, &$data) {
+       if (x($data, 'params') && $data['params']['type'] == NOTIFY_SYSTEM && x($data['params'], 'system_type') && $data['params']['system_type'] == 'facebook_connection_invalid') {
+               $data['itemlink'] = '/facebook';
+               $data['epreamble'] = $data['preamble'] = t('Your Facebook connection became invalid. Please Re-authenticate.');
+               $data['subject'] = t('Facebook connection became invalid');
+               $data['body'] = sprintf( t("Hi %1\$s,\n\nThe connection between your accounts on %2\$s and Facebook became invalid. This usually happens after you change your Facebook-password. To enable the connection again, you have to %3\$sre-authenticate the Facebook-connector%4\$s."), $data['params']['to_name'], "[url=" . $app->config["system"]["url"] . "]" . $app->config["sitename"] . "[/url]", "[url=" . $app->config["system"]["url"] . "/facebook]", "[/url]");
+       }
+}
 
 function facebook_post_local(&$a,&$b) {
 
@@ -1005,6 +1178,46 @@ function fb_queue_hook(&$a,&$b) {
        }
 }
 
+function fb_get_timeline($access_token, &$since) {
+
+       $entries->data = array();
+       $newest = 0;
+
+       $url = 'https://graph.facebook.com/me/home?access_token='.$access_token;
+
+       if ($since != 0)
+               $url .= "&since=".$since;
+
+       do {
+               $s = fetch_url($url);
+               $j = json_decode($s);
+               $oldestdate = time();
+               if (isset($j->data))
+                       foreach ($j->data as $entry) {
+                               $created = strtotime($entry->created_time);
+
+                               if ($newest < $created)
+                                       $newest = $created;
+
+                               if ($created >= $since)
+                                       $entries->data[] = $entry;
+
+                               if ($created <= $oldestdate)
+                                       $oldestdate = $created;
+                       }
+               else
+                       break;
+
+               $url = $j->paging->next;
+
+       } while (($oldestdate > $since) and ($since != 0) and ($url != ''));
+
+       if ($newest > $since)
+               $since = $newest;
+
+       return($entries);
+}
+
 function fb_consume_all($uid) {
 
        require_once('include/items.php');
@@ -1018,23 +1231,33 @@ function fb_consume_all($uid) {
                $s = fetch_url('https://graph.facebook.com/me/feed?access_token=' . $access_token);
                if($s) {
                        $j = json_decode($s);
-                       logger('fb_consume_stream: wall: ' . print_r($j,true), LOGGER_DATA);
-                       fb_consume_stream($uid,$j,($private_wall) ? false : true);
+                       if (isset($j->data)) {
+                               logger('fb_consume_stream: wall: ' . print_r($j,true), LOGGER_DATA);
+                               fb_consume_stream($uid,$j,($private_wall) ? false : true);
+                       } else {
+                               logger('fb_consume_stream: wall: got no data from Facebook: ' . print_r($j,true), LOGGER_NORMAL);
+                       }
                }
        }
-       $s = fetch_url('https://graph.facebook.com/me/home?access_token=' . $access_token);
-       if($s) {
-               $j = json_decode($s);
+       // Get the last date
+       $lastdate = get_pconfig($uid,'facebook','lastdate');
+       // fetch all items since the last date
+       $j = fb_get_timeline($access_token, &$lastdate);
+       if (isset($j->data)) {
                logger('fb_consume_stream: feed: ' . print_r($j,true), LOGGER_DATA);
                fb_consume_stream($uid,$j,false);
-       }
 
+               // Write back the last date
+               set_pconfig($uid,'facebook','lastdate', $lastdate);
+       } else
+               logger('fb_consume_stream: feed: got no data from Facebook: ' . print_r($j,true), LOGGER_NORMAL);
 }
 
 function fb_get_photo($uid,$link) {
        $access_token = get_pconfig($uid,'facebook','access_token');
        if(! $access_token || (! stristr($link,'facebook.com/photo.php')))
-               return "\n" . '[url=' . $link . ']' . t('link') . '[/url]';
+               return "";
+               //return "\n" . '[url=' . $link . ']' . t('link') . '[/url]';
        $ret = preg_match('/fbid=([0-9]*)/',$link,$match);
        if($ret)
                $photo_id = $match[1];
@@ -1042,8 +1265,8 @@ function fb_get_photo($uid,$link) {
        $j = json_decode($x);
        if($j->picture)
                return "\n\n" . '[url=' . $link . '][img]' . $j->picture . '[/img][/url]';
-       else
-               return "\n" . '[url=' . $link . ']' . t('link') . '[/url]';
+       //else
+       //      return "\n" . '[url=' . $link . ']' . t('link') . '[/url]';
 }
 
 function fb_consume_stream($uid,$j,$wall = false) {
@@ -1102,6 +1325,10 @@ function fb_consume_stream($uid,$j,$wall = false) {
                        if($from->id == $self_id)
                                $datarray['contact-id'] = $self[0]['id'];
                        else {
+                               // Looking if user is known - if not he is added
+                               $access_token = get_pconfig($uid, 'facebook', 'access_token');
+                               fb_get_friends_sync_new($uid, $access_token, $from);
+
                                $r = q("SELECT * FROM `contact` WHERE `notify` = '%s' AND `uid` = %d AND `blocked` = 0 AND `readonly` = 0 LIMIT 1",
                                        dbesc($from->id),
                                        intval($uid)
@@ -1111,9 +1338,8 @@ function fb_consume_stream($uid,$j,$wall = false) {
                        }
 
                        // don't store post if we don't have a contact
-
                        if(! x($datarray,'contact-id')) {
-                               logger('no contact: post ignored');
+                               logger('facebook: no contact '.$from->name.' '.$from->id.'. post ignored');
                                continue;
                        }
 
@@ -1148,24 +1374,92 @@ function fb_consume_stream($uid,$j,$wall = false) {
                        $datarray['author-avatar'] = 'https://graph.facebook.com/' . $from->id . '/picture';
                        $datarray['plink'] = $datarray['author-link'] . '&v=wall&story_fbid=' . substr($entry->id,strpos($entry->id,'_') + 1);
 
+                       logger('facebook: post '.$entry->id.' from '.$from->name);
+
                        $datarray['body'] = escape_tags($entry->message);
 
-                       if($entry->picture && $entry->link) {
-                               $datarray['body'] .= "\n\n" . '[url=' . $entry->link . '][img]' . $entry->picture . '[/img][/url]';
+                       if($entry->name and $entry->link)
+                               $datarray['body'] .= "\n\n[bookmark=".$entry->link."]".$entry->name."[/bookmark]";
+                       elseif ($entry->name)
+                               $datarray['body'] .= "\n\n[b]" . $entry->name."[/b]";
+
+                       if($entry->caption) {
+                               if(!$entry->name and $entry->link)
+                                       $datarray['body'] .= "\n\n[bookmark=".$entry->link."]".$entry->caption."[/bookmark]";
+                               else
+                                       $datarray['body'] .= "[i]" . $entry->caption."[/i]\n";
                        }
-                       else {
-                               if($entry->picture)
-                                       $datarray['body'] .= "\n\n" . '[img]' . $entry->picture . '[/img]';
-                               // if just a link, it may be a wall photo - check
-                               if($entry->link)
-                                       $datarray['body'] .= fb_get_photo($uid,$entry->link);
+
+                       if(!$entry->caption and !$entry->name) {
+                               if ($entry->link)
+                                       $datarray['body'] .= "\n[url]".$entry->link."[/url]\n";
+                               else
+                                       $datarray['body'] .= "\n";
                        }
-                       if($entry->name)
-                               $datarray['body'] .= "\n" . $entry->name;
-                       if($entry->caption)
-                               $datarray['body'] .= "\n" . $entry->caption;
+
+                       $quote = "";
                        if($entry->description)
-                               $datarray['body'] .= "\n" . $entry->description;
+                               $quote = $entry->description;
+
+                       if ($entry->properties)
+                               foreach ($entry->properties as $property)
+                                       $quote .= "\n".$property->name.": [url=".$property->href."]".$property->text."[/url]";
+
+                       if ($quote)
+                               $datarray['body'] .= "\n[quote]".$quote."[/quote]";
+
+                       // Only import the picture when the message is no video
+                       // oembed display a picture of the video as well 
+                       if ($entry->type != "video") {
+                               if($entry->picture && $entry->link) {
+                                       $datarray['body'] .= "\n" . '[url=' . $entry->link . '][img]'.$entry->picture.'[/img][/url]';   
+                               }
+                               else {
+                                       if($entry->picture)
+                                               $datarray['body'] .= "\n" . '[img]' . $entry->picture . '[/img]';
+                                       // if just a link, it may be a wall photo - check
+                                       if($entry->link)
+                                               $datarray['body'] .= fb_get_photo($uid,$entry->link);
+                               }
+                       }
+
+                       // Just as a test - to see if these are the missing entries
+                       //if(trim($datarray['body']) == '')
+                       //      $datarray['body'] = $entry->story;
+
+                       if(trim($datarray['body']) == '') {
+                               logger('facebook: empty body '.$entry->id.' '.print_r($entry, true));
+                               continue;
+                       }
+
+                       $datarray['body'] .= "\n";
+
+                       if ($entry->icon)
+                               $datarray['body'] .= "[img]".$entry->icon."[/img] &nbsp; ";
+
+                       if ($entry->actions)
+                               foreach ($entry->actions as $action)
+                                       if (($action->name != "Comment") and ($action->name != "Like"))
+                                               $datarray['body'] .= "[url=".$action->link."]".$action->name."[/url] &nbsp; ";
+
+                       $datarray['body'] = trim($datarray['body']);
+
+                       //if(($datarray['body'] != '') and ($uid == 1))
+                       //      $datarray['body'] .= "[noparse]".print_r($entry, true)."[/noparse]";
+
+                       if ($entry->place->name)
+                               $datarray['coord'] = $entry->place->name;
+                       else if ($entry->place->location->street or $entry->place->location->city or $entry->place->location->Denmark) {
+                               if ($entry->place->location->street)
+                                       $datarray['coord'] = $entry->place->location->street;
+                               if ($entry->place->location->city)
+                                       $datarray['coord'] .= " ".$entry->place->location->city;
+                               if ($entry->place->location->country)
+                                       $datarray['coord'] .= " ".$entry->place->location->country;
+                       } else if ($entry->place->location->latitude and $entry->place->location->longitude)
+                               $datarray['coord'] = substr($entry->place->location->latitude, 0, 8)
+                                                       .' '.substr($entry->place->location->longitude, 0, 8);
+
                        $datarray['created'] = datetime_convert('UTC','UTC',$entry->created_time);
                        $datarray['edited'] = datetime_convert('UTC','UTC',$entry->updated_time);
 
@@ -1174,12 +1468,7 @@ function fb_consume_stream($uid,$j,$wall = false) {
 
                        if($entry->privacy && $entry->privacy->value !== 'EVERYONE') {
                                $datarray['private'] = 1;
-                               $datarray['allow_cid'] = '<' . $uid . '>';
-                       }
-
-                       if(trim($datarray['body']) == '') {
-                               logger('facebook: empty body');
-                               continue;
+                               $datarray['allow_cid'] = '<' . $self[0]['id'] . '>';
                        }
 
                        $top_item = item_store($datarray);
@@ -1373,8 +1662,8 @@ function fb_get_app_access_token() {
                logger('fb_get_app_access_token: appid and/or appsecret not set', LOGGER_DEBUG);
                return false;
        }
-       
-       $x = fetch_url('https://graph.facebook.com/oauth/access_token?client_id=' . $appid . '&client_secret=' . $appsecret . "&grant_type=client_credentials");
+       logger('https://graph.facebook.com/oauth/access_token?client_id=' . $appid . '&client_secret=' . $appsecret . '&grant_type=client_credentials', LOGGER_DATA);
+       $x = fetch_url('https://graph.facebook.com/oauth/access_token?client_id=' . $appid . '&client_secret=' . $appsecret . '&grant_type=client_credentials');
        
        if(strpos($x,'access_token=') !== false) {
                logger('fb_get_app_access_token: returned access token: ' . $x, LOGGER_DATA);
@@ -1402,11 +1691,10 @@ function facebook_subscription_del_users() {
        $url = "https://graph.facebook.com/" . get_config('facebook', 'appid'  ) . "/subscriptions?access_token=" . $access_token;
        facebook_delete_url($url);
        
-       del_config('facebook', 'realtime_active');
+       if (!facebook_check_realtime_active()) del_config('facebook', 'realtime_active');
 }
 
-function facebook_subscription_add_users() {
-       
+function facebook_subscription_add_users($second_try = false) {
        $a = get_app();
        $access_token = fb_get_app_access_token();
        
@@ -1427,9 +1715,18 @@ function facebook_subscription_add_users() {
        del_config('facebook', 'cb_verify_token');
        
        if ($j) {
+               $x = json_decode($j);
                logger("Facebook reponse: " . $j, LOGGER_DATA);
-               
-               if (facebook_check_realtime_active()) set_config('facebook', 'realtime_active', 1);
+               if (isset($x->error)) {
+                       logger('facebook_subscription_add_users: got an error: ' . $j);
+                       if ($x->error->type == "OAuthException" && $x->error->code == 190) {
+                               del_config('facebook', 'app_access_token');
+                               if ($second_try === false) facebook_subscription_add_users(true);
+                       }
+               } else {
+                       logger('facebook_subscription_add_users: sucessful');
+                       if (facebook_check_realtime_active()) set_config('facebook', 'realtime_active', 1);
+               }
        };
 }
 
@@ -1543,4 +1840,4 @@ function facebook_delete_url($url,$headers = null, &$redirects = 0, $timeout = 0
 
        curl_close($ch);
        return($body);
-}}
\ No newline at end of file
+}}
diff --git a/ijpost.tar.gz b/ijpost.tar.gz
deleted file mode 100644 (file)
index 4c67d49..0000000
Binary files a/ijpost.tar.gz and /dev/null differ
diff --git a/ijpost.tgz b/ijpost.tgz
new file mode 100644 (file)
index 0000000..555e060
Binary files /dev/null and b/ijpost.tgz differ
index 4f8ab29f49b0e304417e235d773008aa8b473d29..3e4ecd75b430a1926d3547728f019b70f397febb 100755 (executable)
Binary files a/impressum.tgz and b/impressum.tgz differ
index 3f183fbf51da7144f4ab1923f0199901824263c3..fcf29aaf3443e08101ca9bedef60500e235479ab 100755 (executable)
@@ -1,9 +1,10 @@
 Impressum Plugin for Friendica
 
 Author: Tobias Diekershoff
+        http://diekershoff.homeunix.net/friendika/profile/tobias
         tobias.diekershoff@gmx.net
 
-License: 3-clause BSD license (same as Friendica)
+License: 3-clause BSD license
 
 About
   This plugin adds an Impressum block to the /friendica page with informations
@@ -12,16 +13,22 @@ About
   In the notes and postal fields you can use HTML tags for formatting.
 
 Configuration:
-  For configuration you can set the following variables in the .htconfig file
-   * $a->config['impressum']['owner']           this is the Name of the Operator
-   * $a->config['impressum']['ownerprofile']    this is an optional Friendica account
-                                                where the above owner name will link to
-   * $a->config['impressum']['email']           a contact email address (optional)
-                                                will be displayed slightly obfuscated
-                                                as name(at)example(dot)com
-   * $a->config['impressum']['postal']          should contain a postal address where
-                                                you can be reached at (optional)
-   * $a->config['impressum']['notes']           additional informations that should
-                                                be displayed in the Impressum block
+  Simply fill in the fields in the impressium settings page in the plugins area
+  of your admin panel.
  
+If you for any reason prefer to use a configuration file instead, you can set the 
+following variables in the .htconfig file
 
+  * $a->config['impressum']['owner']           this is the Name of the Operator
+  * $a->config['impressum']['ownerprofile']    this is an optional Friendica account
+                                               where the above owner name will link to
+  * $a->config['impressum']['email']           a contact email address (optional)
+                                               will be displayed slightly obfuscated
+                                               as name(at)example(dot)com
+
+  * $a->config['impressum']['postal']          should contain a postal address where
+                                               you can be reached at (optional)
+  * $a->config['impressum']['notes']           additional informations that should
+                                               be displayed in the Impressum block
+  * $a->config['impressum']['footer_text']     Text that will be displayed at
+                                               the bottom of the pages.
index cfba8df76decfd9d5e38c5221723ba4580b62892..849c11f976cb3237960caab62d99a48ccea4aca7 100755 (executable)
@@ -3,4 +3,5 @@
 {{ inc field_input.tpl with $field=$postal }}{{ endinc }}
 {{ inc field_input.tpl with $field=$notes }}{{ endinc }}
 {{ inc field_input.tpl with $field=$email }}{{ endinc }}
+{{ inc field_input.tpl with $field=$footer_text }}{{ endinc }}
 <div class="submit"><input type="submit" name="page_site" value="$submit" /></div>
diff --git a/impressum/impressum.css b/impressum/impressum.css
new file mode 100644 (file)
index 0000000..ec0b5e5
--- /dev/null
@@ -0,0 +1,4 @@
+#impressum_footer {
+    padding-top: 15px;
+    font-size: 0.8em;
+}
index ce9790bbf19cb6fd52810dac56d8fa63ce3cfc56..7600227907a63964378fa030658ca7601471551f 100755 (executable)
@@ -2,18 +2,20 @@
 /**
  * Name: Impressum
  * Description: Plugin to add contact information to the about page (/friendica)
- * Version: 1.0
- * Author: Tobias Diekershoff <https://diekershoff.homeunix.net/friendika/profile/tobias>
+ * Version: 1.1
+ * Author: Tobias Diekershoff <http://diekershoff.homeunix.net/friendika/profile/tobias>
  * License: 3-clause BSD license
  */
 
 function impressum_install() {
     register_hook('about_hook', 'addon/impressum/impressum.php', 'impressum_show');
+    register_hook('page_end', 'addon/impressum/impressum.php', 'impressum_footer');
     logger("installed impressum plugin");
 }
 
 function impressum_uninstall() {
     unregister_hook('about_hook', 'addon/impressum/impressum.php', 'impressum_show');
+    unregister_hook('page_end', 'addon/impressum/impressum.php', 'impressum_footer');
     logger("uninstalled impressum plugin");
 }
 function obfuscate_email ($s) {
@@ -21,6 +23,13 @@ function obfuscate_email ($s) {
     $s = str_replace('.','(dot)',$s);
     return $s;
 }
+function impressum_footer($a, &$b) {
+    $text = get_config('impressum','footer_text');
+    if (! $text == '') {
+        $a->page['htmlhead'] .= '<link rel="stylesheet" type="text/css" href="'.$a->get_baseurl().'/addon/impressum/impressum.css" media="all" />';
+        $b .= '<div id="impressum_footer">'.$text.'</div>';
+    }
+}
 function impressum_show($a,&$b) {
     $b .= '<h3>'.t('Impressum').'</h3>';
     $owner = get_config('impressum', 'owner');
@@ -56,21 +65,24 @@ function impressum_plugin_admin_post (&$a) {
     $postal = ((x($_POST, 'postal')) ? (trim($_POST['postal'])) : '');
     $notes = ((x($_POST, 'notes')) ? (trim($_POST['notes'])) : '');
     $email = ((x($_POST, 'email')) ? notags(trim($_POST['email'])) : '');
+    $footer_text = ((x($_POST, 'footer_text')) ? (trim($_POST['footer_text'])) : '');
     set_config('impressum','owner',$owner);
     set_config('impressum','ownerprofile',$ownerprofile);
     set_config('impressum','postal',$postal);
     set_config('impressum','email',$email);
     set_config('impressum','notes',$notes);
+    set_config('impressum','footer_text',$footer_text);
     info( t('Settings updated.'). EOL );
 }
 function impressum_plugin_admin (&$a, &$o) {
     $t = file_get_contents( dirname(__file__). "/admin.tpl" );
     $o = replace_macros($t, array(
         '$submit' => t('Submit'),
-        '$owner' => array('owner', t('Site Owner'), get_config('impressum','owner'), ''),
-        '$ownerprofile' => array('ownerprofile', t('Site Owners Profile'), get_config('impressum','ownerprofile'), ''),
-        '$postal' => array('postal', t('Postal Address'), get_config('impressum','postal'), ''),
-        '$notes' => array('notes', t('Notes'), get_config('impressum','notes'), ''),
-        '$email' => array('email', t('Email Address'), get_config('impressum','email'), ''),
+        '$owner' => array('owner', t('Site Owner'), get_config('impressum','owner'), t('The page operators name.')),
+        '$ownerprofile' => array('ownerprofile', t('Site Owners Profile'), get_config('impressum','ownerprofile'), t('Profile address of the operator.')),
+        '$postal' => array('postal', t('Postal Address'), get_config('impressum','postal'), t('How to contact the operator via snail mail.')),
+        '$notes' => array('notes', t('Notes'), get_config('impressum','notes'), t('Additional notes that are displayed beneath the contact information.')),
+        '$email' => array('email', t('Email Address'), get_config('impressum','email'), t('How to contact the operator via email. (will be displayed obfuscated)')),
+        '$footer_text' => array('footer_text', t('Footer note'), get_config('impressum','footer_text'), t('Text for the footer.')),
     ));
 }
diff --git a/irc.tgz b/irc.tgz
index 999c8d212c37698a5e50fde466e28e627896d263..cb86460599f429d1304f82ec46525225d70f591f 100644 (file)
Binary files a/irc.tgz and b/irc.tgz differ
index 1e05195099fa03172726bff3f6b9ba7ebe30aa38..065e48080d81a4726ead6048b19dcab7327e71ae 100644 (file)
@@ -22,7 +22,7 @@ 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>';
+$b['app_menu'][] = '<div class="app-title"><a href="irc">' . t('IRC Chatroom') . '</a></div>';
 }
 
 
@@ -33,9 +33,27 @@ return;
 
 function irc_content(&$a) {
 
-$baseurl = $a->get_baseurl() . '/addon/irc';
-$o = '';
+       $baseurl = $a->get_baseurl() . '/addon/irc';
+       $o = '';
 
+       $sitechats = get_config('irc','channels');
+       if($sitechats)
+               $chats = explode(',',$sitechats);
+       else
+               $chats = array('friendica','chat','chatback','hottub','ircbar','dateroom','teentalk');
+
+
+       $a->page['aside'] .= '<div class="widget"><h3>' . t('Popular Channels') . '</h3><ul>';
+       foreach($chats as $chat) {
+               $a->page['aside'] .= '<li><a href="' . $a->get_baseurl() . '/irc?channels=' . $chat . '" >' . '#' . $chat . '</a></li>';
+       }
+       $a->page['aside'] .= '</ul></div>';
+
+
+
+
+
+$channels = ((x($_GET,'channels')) ? $_GET['channels'] : 'friendica');
 
 /* add the chatroom frame and some html
  * by altering the "channels=friendica" part of the URL, you can add/remove channels.  
@@ -43,8 +61,8 @@ $o = '';
  */
   $o .= <<< EOT
 <h2>IRC chat</h2>
-<p><a href="http://tldp.org/HOWTO/IRC/beginners.html" target="_blank">a beginner's guide to using IRC.</a></p>
-<iframe src="http://webchat.freenode.net?channels=friendica" width="600" height="600"></iframe>
+<p><a href="http://tldp.org/HOWTO/IRC/beginners.html" target="_blank">A beginner's guide to using IRC. [en]</a></p>
+<iframe src="http://webchat.freenode.net?channels=$channels" width="600" height="600"></iframe>
 EOT;
 
 return $o;
index 21ec1915e827fb2e36065a5b1feb1ccc317c8e75..840e2ee2abc6ac2551fb6bfc32c22df70578ee2a 100644 (file)
Binary files a/ljpost.tgz and b/ljpost.tgz differ
diff --git a/namethingy.tgz b/namethingy.tgz
new file mode 100644 (file)
index 0000000..9642e38
Binary files /dev/null and b/namethingy.tgz differ
diff --git a/namethingy/namethingy.php b/namethingy/namethingy.php
new file mode 100755 (executable)
index 0000000..0ccf106
--- /dev/null
@@ -0,0 +1,37 @@
+<?php
+
+/**
+ *
+ * Name: NameThingy
+ * Description: The Ultimate Random Name Generator
+ * Version: 1.0
+ * Author: Mike Macgirvin <http://macgirvin.com/profile/mike>
+ */
+
+
+function namethingy_install() {
+    register_hook('app_menu', 'addon/namethingy/namethingy.php', 'namethingy_app_menu');
+}
+
+function namethingy_uninstall() {
+    unregister_hook('app_menu', 'addon/namethingy/namethingy.php', 'namethingy_app_menu');
+
+}
+
+function namethingy_app_menu($a,&$b) {
+    $b['app_menu'][] = '<div class="app-title"><a href="namethingy">NameThingy</a></div>';
+}
+
+
+function namethingy_module() {}
+
+function namethingy_content(&$a) {
+
+$baseurl = $a->get_baseurl() . '/addon/namethingy';
+
+$o .= <<< EOT
+<iframe src="http://namethingy.com" width="900" height="700" />
+EOT;
+
+return $o;
+}
index b7caadbd4a6f614c3e12d380785068951c2e6372..6897cb89077e099b1266efead83947f5f48971be 100755 (executable)
Binary files a/nsfw.tgz and b/nsfw.tgz differ
index a5b3ede184db868c48d8de72714f44a79c9cda59..0f94158bc83b19dd2d4b92623d808d9bf2be72fc 100755 (executable)
@@ -44,13 +44,13 @@ function nsfw_addon_settings(&$a,&$s) {
                $words = 'nsfw,';
 
     $s .= '<div class="settings-block">';
-    $s .= '<h3>' . t('"Not Safe For Work" Settings') . '</h3>';
+    $s .= '<h3>' . t('Not Safe For Work (General Purpose Content Filter) settings') . '</h3>';
     $s .= '<div id="nsfw-wrapper">';
-       
-    $s .= '<label id="nsfw-enable-label" for="nsfw-enable">' . t('Enable NSFW filter') . ' </label>';
+    $s .= '<p>' . t ('This plugin looks in posts for the words/text you specify below, and collapses any content containing those keywords so it is not displayed at inappropriate times, such as sexual innuendo that may be improper in a work setting. It is polite and recommended to tag any content containing nudity with #NSFW.  This filter can also match any other word/text you specify, and can thereby be used as a general purpose content filter.') . '</p>';
+    $s .= '<label id="nsfw-enable-label" for="nsfw-enable">' . t('Enable Content filter') . ' </label>';
     $s .= '<input id="nsfw-enable" type="checkbox" name="nsfw-enable" value="1"' . $enable_checked . ' />';
        $s .= '<div class="clear"></div>';
-    $s .= '<label id="nsfw-label" for="nsfw-words">' . t('Comma separated words to treat as NSFW') . ' </label>';
+    $s .= '<label id="nsfw-label" for="nsfw-words">' . t('Comma separated list of keywords to hide') . ' </label>';
     $s .= '<input id="nsfw-words" type="text" name="nsfw-words" value="' . $words .'" />';
     $s .= '</div><div class="clear"></div>';
 
index 64a55d813223801f2f8fb5ea543eabd205853029..29fced0a2dfdc6d21e0199391b5daf2713970d6a 100644 (file)
Binary files a/openstreetmap.tgz and b/openstreetmap.tgz differ
index 41fc842c61d49d7a3d1bba91cd90eeb7ea60a49f..beac3a2184ef7534365411f3286795a6755b4457 100644 (file)
@@ -16,15 +16,33 @@ Support the OpenStreetMap community and share the load.
 
 ___ Configuration ___
 
+If you for any reason prefer to use a configuration file instead 
+of the admin panels, please refer to the Alternative Configuration below. 
+
+Activate the plugin from your admin panel.  
+
+You can now add a Tile Server and default zoom level in the plugin settings
+page of your admin panel.
+
+The Time Server URL points to the tile server you want to use. Use the full URL,
+with protocol (http/s) and trailing slash. You can configure the default zoom
+level on the map in the Default Zoom box.  1 will show the whole world and 18 is the highest
+zoom level available.
+
+
+___ Alternative Configuration ___
+
 Open the .htconfig.php file and add "openstreetmap" to the list of activated
 addons.
+
     $a->config['system']['addon'] = "openstreetmap, ..."
 
 You have to add two configuration variables for the addon:
+
     $a->config['openstreetmap']['tmsserver'] = 'http://www.openstreetmap.org/';
     $a->config['openstreetmap']['zoom'] = '18';
 
 The *tmsserver* points to the tile server you want to use. Use the full URL,
-with protocol (http/s) and trailing slash. You can configure the default zoom
-level on the map with *zoom*. 1 will show the whole world and 18 is the highest
-zoom level available.
+with protocol (http/s) and trailing slash. You can configure the default zoom 
+level on the map with *zoom*. 1 will show the whole world and 18 is the highest 
+zoom level available.
\ No newline at end of file
diff --git a/page.tgz b/page.tgz
new file mode 100644 (file)
index 0000000..84fb7b8
Binary files /dev/null and b/page.tgz differ
diff --git a/page/page.php b/page/page.php
new file mode 100755 (executable)
index 0000000..72972ed
--- /dev/null
@@ -0,0 +1,60 @@
+<?php
+/**
+ * Name: Page
+ * Description: Shows lists of community pages (improved performance over 'pages')
+ * Version: 1.0
+ * Author: Mike Macgirvin <mike@macgirvin.com>
+ * based on pages plugin by
+ * Author: Michael Vogel <ike@piratenpartei.de>
+ *
+ */
+
+function page_install() {
+       register_hook('page_end', 'addon/page/page.php', 'page_page_end');
+}
+
+function page_uninstall() {
+       unregister_hook('page_end', 'addon/page/page.php', 'page_page_end');
+}
+
+
+function page_getpage($uid) {
+
+
+       $pagelist = array();
+
+       $contacts = q("SELECT `id`, `url`, `name`, `micro`FROM `contact`
+                       WHERE `network`= 'dfrn' AND `forum` = 1 AND `uid` = %d",
+                       intval($uid)
+       );
+
+       $page = array();
+
+       // Look if the profile is a community page
+       foreach($contacts as $contact) {
+               $page[] = array("url"=>$contact["url"], "name"=>$contact["name"], "id"=>$contact["id"], "micro"=>$contact['micro']);
+       }
+       return($page);
+}
+
+function page_page_end($a,&$b) {
+       // Only move on if if it's the "network" module and there is a logged on user
+       if (($a->module != "network") OR ($a->user['uid'] == 0))
+               return;
+
+       $page = '<div id="page-sidebar" class="widget">
+                       <div class="title tool">
+                       <h3>'.t("Forums").'</h3></div>
+                       <div id="sidebar-page-list"><ul>';
+
+       $contacts = page_getpage($a->user['uid']);
+
+       foreach($contacts as $contact) {
+               $page .= '<li style="list-style-type: none;" class="tool"><img height="20" width="20" src="' . $contact['micro'] .'" alt="' . $contact['url'] . '" /> <a href="'.$a->get_baseurl().'/redir/'.$contact["id"].'" title="' . $contact['url'] . '" class="label" target="external-link">'.
+                               $contact["name"]."</a></li>";
+       }
+       $page .= "</ul></div></div>";
+       if (sizeof($contacts) > 0)
+               $a->page['aside'] = $page . $a->page['aside'];
+}
+?>
index 876d37e400b36711ff92d02129d9aebdc5983817..80ecd94b4669e09e5cdbe61075e1b35177d3a729 100755 (executable)
Binary files a/pageheader.tgz and b/pageheader.tgz differ
index d9b187de3afadcf51d9651fdf882b34ce3af98e8..cf92204a55646f996b6b3c08b69fe6bbceda8853 100755 (executable)
@@ -10,7 +10,7 @@
  */
 
 function pageheader_install() {
-    register_hook('page_header', 'addon/pageheader/pageheader.php', 'pageheader_fetch');
+    register_hook('page_content_top', 'addon/pageheader/pageheader.php', 'pageheader_fetch');
        register_hook('plugin_settings', 'addon/pageheader/pageheader.php', 'pageheader_addon_settings');
        register_hook('plugin_settings_post', 'addon/pageheader/pageheader.php', 'pageheader_addon_settings_post');
 
@@ -18,10 +18,13 @@ function pageheader_install() {
 
 
 function pageheader_uninstall() {
-    unregister_hook('page_header', 'addon/pageheader/pageheader.php', 'pageheader_fetch');
+    unregister_hook('page_content_top', 'addon/pageheader/pageheader.php', 'pageheader_fetch');
        unregister_hook('plugin_settings', 'addon/pageheader/pageheader.php', 'pageheader_addon_settings');
        unregister_hook('plugin_settings_post', 'addon/pageheader/pageheader.php', 'pageheader_addon_settings_post');
 
+       // hook moved, uninstall the old one if still there. 
+    unregister_hook('page_header', 'addon/pageheader/pageheader.php', 'pageheader_fetch');
+
 }
 
 
@@ -41,7 +44,7 @@ function pageheader_addon_settings(&$a,&$s) {
 
        $words = get_config('pageheader','text');
        if(! $words)
-               $words = 'pageheader,';
+               $words = '';
 
     $s .= '<div class="settings-block">';
     $s .= '<h3>' . t('"pageheader" Settings') . '</h3>';
index 7be170afa3a968cc049ec11260e8ae8a386629ab..5fd23f7302f3a9d134af0a0a10e329531c0793c6 100644 (file)
Binary files a/pages.tgz and b/pages.tgz differ
diff --git a/pages/README b/pages/README
deleted file mode 100755 (executable)
index 6ec314b..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-Pages
-
-Shows lists of community pages
diff --git a/pages/pages.php b/pages/pages.php
deleted file mode 100755 (executable)
index bc56d2e..0000000
+++ /dev/null
@@ -1,88 +0,0 @@
-<?php
-/**
- * Name: Pages
- * Description: Shows lists of community pages
- * Version: 1.0
- * Author: Michael Vogel <ike@piratenpartei.de>
- *
- */
-
-function pages_install() {
-       register_hook('page_end', 'addon/pages/pages.php', 'pages_page_end');
-}
-
-function pages_uninstall() {
-       unregister_hook('page_end', 'addon/pages/pages.php', 'pages_page_end');
-}
-
-function pages_iscommunity($url, &$pagelist) {
-       // check every week for the status - should be enough
-       if ($pagelist[$url]["checked"]<time()-86400*7) {
-               // When too old or not found fetch the status from the profile
-               $ch = curl_init();
-
-               $url = str_replace("/profile/","/hcard/", $url);
-
-               curl_setopt($ch, CURLOPT_URL, $url);
-               curl_setopt($ch, CURLOPT_HEADER, 0);
-               curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
-               curl_setopt($ch, CURLOPT_TIMEOUT, 2);
-               $page = curl_exec($ch);
-               curl_close($ch);
-
-               $iscommunity = (strpos($page, '<meta name="friendika.community" content="true" />') != 0);
-
-               $pagelist[$url] = array("community" => $iscommunity, "checked" => time());
-       } else // Fetch from cache
-               $iscommunity = $pagelist[$url]["community"];
-       return($iscommunity);
-}
-
-function pages_getpages($uid) {
-
-       // Fetch cached pagelist from configuration
-       $pagelist = get_pconfig($uid,'pages','pagelist');
-
-       if (sizeof($pagelist) == 0)
-               $pagelist = array();
-
-       $contacts = q("SELECT `id`, `url`, `Name` FROM `contact`
-                       WHERE `network`= 'dfrn' AND `uid` = %d",
-                       intval($uid));
-
-       $pages = array();
-
-       // Look if the profile is a community page
-       foreach($contacts as $contact) {
-               if (pages_iscommunity($contact["url"], $pagelist))
-                       $pages[] = array("url"=>$contact["url"], "Name"=>$contact["Name"], "id"=>$contact["id"]);
-       }
-
-       // Write back cached pagelist
-       set_pconfig($uid,'pages','pagelist', $pagelist);
-       return($pages);
-}
-
-function pages_page_end($a,&$b) {
-       // Only move on if if it's the "network" module and there is a logged on user
-       if (($a->module != "network") OR ($a->user['uid'] == 0))
-               return;
-
-       $pages = '<div id="pages-sidebar" class="widget">
-                       <div class="title tool">
-                       <h3>'.t("Community").'</h3></div>
-                       <div id="sidebar-pages-list"><ul>';
-
-       $contacts = pages_getpages($a->user['uid']);
-
-       foreach($contacts as $contact) {
-               $pages .= '<li class="tool"><a href="'.$a->get_baseurl().'/redir/'.$contact["id"].'" class="label" target="external-link">'.
-                               $contact["Name"]."</a></li>";
-       }
-       $pages .= "</ul></div></div>";
-       if (sizeof($contacts) > 0)
-               $a->page['aside'] = $pages.$a->page['aside'];
-}
-?>
index febb641ea4d3d441b9d25776533d74896490b082..230c1f50d7798a3ead7a3d67bfc9936a7508b482 100755 (executable)
Binary files a/piwik.tgz and b/piwik.tgz differ
index e276ccd4477bc4cd2629adb44bef507b1194712a..c648a4d1214be6d4ea7563ad97ff511fef752afa 100755 (executable)
@@ -1,6 +1,7 @@
 ## Piwik Plugin ##
 
 by Tobias Diekershoff 
+   http://diekershoff.homeunix.net/friendika/profile/tobias
    tobias.diekershoff(at)gmx.net
 
 This addon allows you to embed the code necessary for the FLOSS webanalytics
@@ -19,6 +20,13 @@ styling the opt-out notice.
 
 ### Configuration ###
 
+The easiest way to configure this addon is by activating the admin panels of
+your ~friendica server and then enter the needed details on the config page
+for the addon.
+
+If you don't want to use the admin panel, you can configure the addon through
+the .htconfig file.
+
 Open the .htconfig.php file and add "piwik" to the list of activated addons.
 
     $a->config['system']['addon'] = "piwik, ..."
index dbb1f45a257ea99a672d4aef7eaeff9914decfd4..3e0d718ffaa7c0cdc5330e3d89530bd36efff1cf 100755 (executable)
@@ -3,7 +3,7 @@
  * Name: Piwik Analytics
  * Description: Piwik Analytics Plugin for Friendica
  * Version: 1.1
- * Author: Tobias Diekershoff <https://diekershoff.homeunix.net/friendika/profile/tobias>
+ * Author: Tobias Diekershoff <http://diekershoff.homeunix.net/friendika/profile/tobias>
  * Author: Klaus Weidenbach
  */
 
@@ -49,7 +49,7 @@ function piwik_analytics($a,&$b) {
         *   associated CSS file. We just have to tell Friendica to get it
         *   into the page header.
         */
-       $a->page['htmlhead'] .= '<link rel="stylesheet"  type="text/css" href="' . $a->get_baseurl() . '/addon/piwik/piwik.css' . '" media="all" />' . "\r\n";
+       $a->page['htmlhead'] .= '<link rel="stylesheet"  type="text/css" href="' . $a->get_baseurl() . '/addon/piwik/piwik.css' . '" media="all" />';
 
        /*
         *   Get the configuration variables from the .htconfig file.
index 6c2203a15b96292b5190a255f3d90ff05a3a895d..394a99fda47e56a33721ca89057046d5b685d71a 100644 (file)
Binary files a/showmore.tgz and b/showmore.tgz differ
index 7842a58e624c8473b4970838f3d9dd800ae2c62e..2b4d5d0fcce8337670120eb0e0ae5ae9633bf831 100755 (executable)
@@ -46,7 +46,8 @@ function showmore_addon_settings(&$a,&$s) {
        $s .= '</div><div class="clear"></div>';
 
        $s .= '<div class="settings-submit-wrapper" ><input type="submit" id="showmore-submit" name="showmore-submit" class="settings-submit" value="' . t('Submit') . '" /></div>';
-//     $s .= '<div class="showmore-desc">' . t('Use /expression/ to provide regular expressions') . '</div></div>';
+//     $s .= '<div class="showmore-desc">' . t('Use /expression/ to provide regular expressions') . '</div>';
+       $s .= '</div>';
 
        return;
 }
@@ -83,7 +84,7 @@ function showmore_prepare_body(&$a,&$b) {
        if($found) {
                $rnd = random_string(8);
                $b['html'] = '<span id="showmore-teaser-'.$rnd.'" style="display: block;">'.$shortened." ".
-                               '<span id="showmore-wrap-'.$rnd.'" style="white-space:nowrap;" class="fakelink" onclick="openClose(\'showmore-'.$rnd.'\'); openClose(\'showmore-teaser-'.$rnd.'\');" >'.sprintf(t('Show More')).'</span></span>'.
+                               '<span id="showmore-wrap-'.$rnd.'" style="white-space:nowrap;" class="fakelink" onclick="openClose(\'showmore-'.$rnd.'\'); openClose(\'showmore-teaser-'.$rnd.'\');" >'.sprintf(t('show more')).'</span></span>'.
                                '<div id="showmore-'.$rnd.'" style="display: none;">'.$b['html'].'</div>';
        }
 }
diff --git a/smiley_pack.tgz b/smiley_pack.tgz
new file mode 100644 (file)
index 0000000..7ef9d88
Binary files /dev/null and b/smiley_pack.tgz differ
diff --git a/smiley_pack/icons/animals/bee.gif b/smiley_pack/icons/animals/bee.gif
new file mode 100644 (file)
index 0000000..206c2e3
Binary files /dev/null and b/smiley_pack/icons/animals/bee.gif differ
diff --git a/smiley_pack/icons/animals/bigspider.gif b/smiley_pack/icons/animals/bigspider.gif
new file mode 100644 (file)
index 0000000..bc43deb
Binary files /dev/null and b/smiley_pack/icons/animals/bigspider.gif differ
diff --git a/smiley_pack/icons/animals/bunny.gif b/smiley_pack/icons/animals/bunny.gif
new file mode 100644 (file)
index 0000000..402b2b3
Binary files /dev/null and b/smiley_pack/icons/animals/bunny.gif differ
diff --git a/smiley_pack/icons/animals/bunnyflowers.gif b/smiley_pack/icons/animals/bunnyflowers.gif
new file mode 100644 (file)
index 0000000..6d665e2
Binary files /dev/null and b/smiley_pack/icons/animals/bunnyflowers.gif differ
diff --git a/smiley_pack/icons/animals/cat.gif b/smiley_pack/icons/animals/cat.gif
new file mode 100644 (file)
index 0000000..3a0db66
Binary files /dev/null and b/smiley_pack/icons/animals/cat.gif differ
diff --git a/smiley_pack/icons/animals/chick.gif b/smiley_pack/icons/animals/chick.gif
new file mode 100644 (file)
index 0000000..6bcddcd
Binary files /dev/null and b/smiley_pack/icons/animals/chick.gif differ
diff --git a/smiley_pack/icons/animals/cow.gif b/smiley_pack/icons/animals/cow.gif
new file mode 100644 (file)
index 0000000..3f94cfa
Binary files /dev/null and b/smiley_pack/icons/animals/cow.gif differ
diff --git a/smiley_pack/icons/animals/crab.gif b/smiley_pack/icons/animals/crab.gif
new file mode 100644 (file)
index 0000000..db5b8ce
Binary files /dev/null and b/smiley_pack/icons/animals/crab.gif differ
diff --git a/smiley_pack/icons/animals/dog.gif b/smiley_pack/icons/animals/dog.gif
new file mode 100644 (file)
index 0000000..7b28477
Binary files /dev/null and b/smiley_pack/icons/animals/dog.gif differ
diff --git a/smiley_pack/icons/animals/dolphin.gif b/smiley_pack/icons/animals/dolphin.gif
new file mode 100644 (file)
index 0000000..672ebd7
Binary files /dev/null and b/smiley_pack/icons/animals/dolphin.gif differ
diff --git a/smiley_pack/icons/animals/dragonfly.gif b/smiley_pack/icons/animals/dragonfly.gif
new file mode 100644 (file)
index 0000000..566e95c
Binary files /dev/null and b/smiley_pack/icons/animals/dragonfly.gif differ
diff --git a/smiley_pack/icons/animals/elephant.gif b/smiley_pack/icons/animals/elephant.gif
new file mode 100644 (file)
index 0000000..4311e97
Binary files /dev/null and b/smiley_pack/icons/animals/elephant.gif differ
diff --git a/smiley_pack/icons/animals/fish.gif b/smiley_pack/icons/animals/fish.gif
new file mode 100644 (file)
index 0000000..3a7a584
Binary files /dev/null and b/smiley_pack/icons/animals/fish.gif differ
diff --git a/smiley_pack/icons/animals/frog.gif b/smiley_pack/icons/animals/frog.gif
new file mode 100644 (file)
index 0000000..85e4b56
Binary files /dev/null and b/smiley_pack/icons/animals/frog.gif differ
diff --git a/smiley_pack/icons/animals/giraffe.gif b/smiley_pack/icons/animals/giraffe.gif
new file mode 100644 (file)
index 0000000..4c95ea4
Binary files /dev/null and b/smiley_pack/icons/animals/giraffe.gif differ
diff --git a/smiley_pack/icons/animals/hamster.gif b/smiley_pack/icons/animals/hamster.gif
new file mode 100644 (file)
index 0000000..96c7323
Binary files /dev/null and b/smiley_pack/icons/animals/hamster.gif differ
diff --git a/smiley_pack/icons/animals/horse.gif b/smiley_pack/icons/animals/horse.gif
new file mode 100644 (file)
index 0000000..9103abf
Binary files /dev/null and b/smiley_pack/icons/animals/horse.gif differ
diff --git a/smiley_pack/icons/animals/ladybird.gif b/smiley_pack/icons/animals/ladybird.gif
new file mode 100644 (file)
index 0000000..69444a9
Binary files /dev/null and b/smiley_pack/icons/animals/ladybird.gif differ
diff --git a/smiley_pack/icons/animals/monkey.gif b/smiley_pack/icons/animals/monkey.gif
new file mode 100644 (file)
index 0000000..b9b338d
Binary files /dev/null and b/smiley_pack/icons/animals/monkey.gif differ
diff --git a/smiley_pack/icons/animals/parrot.gif b/smiley_pack/icons/animals/parrot.gif
new file mode 100644 (file)
index 0000000..ae6faf6
Binary files /dev/null and b/smiley_pack/icons/animals/parrot.gif differ
diff --git a/smiley_pack/icons/animals/pig.gif b/smiley_pack/icons/animals/pig.gif
new file mode 100644 (file)
index 0000000..bdc68e8
Binary files /dev/null and b/smiley_pack/icons/animals/pig.gif differ
diff --git a/smiley_pack/icons/animals/sheep.gif b/smiley_pack/icons/animals/sheep.gif
new file mode 100644 (file)
index 0000000..8fafc11
Binary files /dev/null and b/smiley_pack/icons/animals/sheep.gif differ
diff --git a/smiley_pack/icons/animals/snail.gif b/smiley_pack/icons/animals/snail.gif
new file mode 100644 (file)
index 0000000..3bdb44c
Binary files /dev/null and b/smiley_pack/icons/animals/snail.gif differ
diff --git a/smiley_pack/icons/animals/tux.gif b/smiley_pack/icons/animals/tux.gif
new file mode 100644 (file)
index 0000000..08e006e
Binary files /dev/null and b/smiley_pack/icons/animals/tux.gif differ
diff --git a/smiley_pack/icons/babies/baby.gif b/smiley_pack/icons/babies/baby.gif
new file mode 100644 (file)
index 0000000..d105afb
Binary files /dev/null and b/smiley_pack/icons/babies/baby.gif differ
diff --git a/smiley_pack/icons/babies/babycot.gif b/smiley_pack/icons/babies/babycot.gif
new file mode 100644 (file)
index 0000000..750f6df
Binary files /dev/null and b/smiley_pack/icons/babies/babycot.gif differ
diff --git a/smiley_pack/icons/babies/pregnant.gif b/smiley_pack/icons/babies/pregnant.gif
new file mode 100644 (file)
index 0000000..d97f476
Binary files /dev/null and b/smiley_pack/icons/babies/pregnant.gif differ
diff --git a/smiley_pack/icons/babies/stork.gif b/smiley_pack/icons/babies/stork.gif
new file mode 100644 (file)
index 0000000..de2371d
Binary files /dev/null and b/smiley_pack/icons/babies/stork.gif differ
diff --git a/smiley_pack/icons/confused/confused.gif b/smiley_pack/icons/confused/confused.gif
new file mode 100644 (file)
index 0000000..8f1b79a
Binary files /dev/null and b/smiley_pack/icons/confused/confused.gif differ
diff --git a/smiley_pack/icons/confused/dazed.gif b/smiley_pack/icons/confused/dazed.gif
new file mode 100644 (file)
index 0000000..f5e7ec2
Binary files /dev/null and b/smiley_pack/icons/confused/dazed.gif differ
diff --git a/smiley_pack/icons/confused/shrug.gif b/smiley_pack/icons/confused/shrug.gif
new file mode 100644 (file)
index 0000000..31ce007
Binary files /dev/null and b/smiley_pack/icons/confused/shrug.gif differ
diff --git a/smiley_pack/icons/confused/stupid.gif b/smiley_pack/icons/confused/stupid.gif
new file mode 100644 (file)
index 0000000..c17170a
Binary files /dev/null and b/smiley_pack/icons/confused/stupid.gif differ
diff --git a/smiley_pack/icons/cool/affro.gif b/smiley_pack/icons/cool/affro.gif
new file mode 100644 (file)
index 0000000..f06166b
Binary files /dev/null and b/smiley_pack/icons/cool/affro.gif differ
diff --git a/smiley_pack/icons/cool/cool.gif b/smiley_pack/icons/cool/cool.gif
new file mode 100644 (file)
index 0000000..05ba9f1
Binary files /dev/null and b/smiley_pack/icons/cool/cool.gif differ
diff --git a/smiley_pack/icons/devilangel/angel.gif b/smiley_pack/icons/devilangel/angel.gif
new file mode 100644 (file)
index 0000000..8e58541
Binary files /dev/null and b/smiley_pack/icons/devilangel/angel.gif differ
diff --git a/smiley_pack/icons/devilangel/blondedevil.gif b/smiley_pack/icons/devilangel/blondedevil.gif
new file mode 100644 (file)
index 0000000..09e7e68
Binary files /dev/null and b/smiley_pack/icons/devilangel/blondedevil.gif differ
diff --git a/smiley_pack/icons/devilangel/catdevil.gif b/smiley_pack/icons/devilangel/catdevil.gif
new file mode 100644 (file)
index 0000000..269d719
Binary files /dev/null and b/smiley_pack/icons/devilangel/catdevil.gif differ
diff --git a/smiley_pack/icons/devilangel/cherub.gif b/smiley_pack/icons/devilangel/cherub.gif
new file mode 100644 (file)
index 0000000..40872e0
Binary files /dev/null and b/smiley_pack/icons/devilangel/cherub.gif differ
diff --git a/smiley_pack/icons/devilangel/daseesaw.gif b/smiley_pack/icons/devilangel/daseesaw.gif
new file mode 100644 (file)
index 0000000..1c04b2e
Binary files /dev/null and b/smiley_pack/icons/devilangel/daseesaw.gif differ
diff --git a/smiley_pack/icons/devilangel/devil.gif b/smiley_pack/icons/devilangel/devil.gif
new file mode 100644 (file)
index 0000000..2b56797
Binary files /dev/null and b/smiley_pack/icons/devilangel/devil.gif differ
diff --git a/smiley_pack/icons/devilangel/graveside.gif b/smiley_pack/icons/devilangel/graveside.gif
new file mode 100644 (file)
index 0000000..0e90935
Binary files /dev/null and b/smiley_pack/icons/devilangel/graveside.gif differ
diff --git a/smiley_pack/icons/devilangel/saint.gif b/smiley_pack/icons/devilangel/saint.gif
new file mode 100644 (file)
index 0000000..52c22c4
Binary files /dev/null and b/smiley_pack/icons/devilangel/saint.gif differ
diff --git a/smiley_pack/icons/devilangel/turnevil.gif b/smiley_pack/icons/devilangel/turnevil.gif
new file mode 100644 (file)
index 0000000..1490c0f
Binary files /dev/null and b/smiley_pack/icons/devilangel/turnevil.gif differ
diff --git a/smiley_pack/icons/disgust/fartblush.gif b/smiley_pack/icons/disgust/fartblush.gif
new file mode 100644 (file)
index 0000000..4160a1f
Binary files /dev/null and b/smiley_pack/icons/disgust/fartblush.gif differ
diff --git a/smiley_pack/icons/disgust/fartinbed.gif b/smiley_pack/icons/disgust/fartinbed.gif
new file mode 100644 (file)
index 0000000..5553649
Binary files /dev/null and b/smiley_pack/icons/disgust/fartinbed.gif differ
diff --git a/smiley_pack/icons/disgust/toilet.gif b/smiley_pack/icons/disgust/toilet.gif
new file mode 100644 (file)
index 0000000..092d7ca
Binary files /dev/null and b/smiley_pack/icons/disgust/toilet.gif differ
diff --git a/smiley_pack/icons/disgust/vomit.gif b/smiley_pack/icons/disgust/vomit.gif
new file mode 100644 (file)
index 0000000..6e7e727
Binary files /dev/null and b/smiley_pack/icons/disgust/vomit.gif differ
diff --git a/smiley_pack/icons/drink/tea.gif b/smiley_pack/icons/drink/tea.gif
new file mode 100644 (file)
index 0000000..474b989
Binary files /dev/null and b/smiley_pack/icons/drink/tea.gif differ
diff --git a/smiley_pack/icons/drool/drool.gif b/smiley_pack/icons/drool/drool.gif
new file mode 100644 (file)
index 0000000..4093df6
Binary files /dev/null and b/smiley_pack/icons/drool/drool.gif differ
diff --git a/smiley_pack/icons/fantasy/alienmonster.gif b/smiley_pack/icons/fantasy/alienmonster.gif
new file mode 100644 (file)
index 0000000..e0ca7f6
Binary files /dev/null and b/smiley_pack/icons/fantasy/alienmonster.gif differ
diff --git a/smiley_pack/icons/fantasy/barbarian.gif b/smiley_pack/icons/fantasy/barbarian.gif
new file mode 100644 (file)
index 0000000..de8a068
Binary files /dev/null and b/smiley_pack/icons/fantasy/barbarian.gif differ
diff --git a/smiley_pack/icons/fantasy/dinosaur.gif b/smiley_pack/icons/fantasy/dinosaur.gif
new file mode 100644 (file)
index 0000000..e8c625c
Binary files /dev/null and b/smiley_pack/icons/fantasy/dinosaur.gif differ
diff --git a/smiley_pack/icons/fantasy/dragon.gif b/smiley_pack/icons/fantasy/dragon.gif
new file mode 100644 (file)
index 0000000..fd28fbf
Binary files /dev/null and b/smiley_pack/icons/fantasy/dragon.gif differ
diff --git a/smiley_pack/icons/fantasy/dragonwhelp.gif b/smiley_pack/icons/fantasy/dragonwhelp.gif
new file mode 100644 (file)
index 0000000..dbc4555
Binary files /dev/null and b/smiley_pack/icons/fantasy/dragonwhelp.gif differ
diff --git a/smiley_pack/icons/fantasy/ghost.gif b/smiley_pack/icons/fantasy/ghost.gif
new file mode 100644 (file)
index 0000000..4c5d85d
Binary files /dev/null and b/smiley_pack/icons/fantasy/ghost.gif differ
diff --git a/smiley_pack/icons/fantasy/mummy.gif b/smiley_pack/icons/fantasy/mummy.gif
new file mode 100644 (file)
index 0000000..50e1dfb
Binary files /dev/null and b/smiley_pack/icons/fantasy/mummy.gif differ
diff --git a/smiley_pack/icons/fight/2guns.gif b/smiley_pack/icons/fight/2guns.gif
new file mode 100644 (file)
index 0000000..9e1b663
Binary files /dev/null and b/smiley_pack/icons/fight/2guns.gif differ
diff --git a/smiley_pack/icons/fight/acid.gif b/smiley_pack/icons/fight/acid.gif
new file mode 100644 (file)
index 0000000..fa55f67
Binary files /dev/null and b/smiley_pack/icons/fight/acid.gif differ
diff --git a/smiley_pack/icons/fight/alienfight.gif b/smiley_pack/icons/fight/alienfight.gif
new file mode 100644 (file)
index 0000000..9d5e879
Binary files /dev/null and b/smiley_pack/icons/fight/alienfight.gif differ
diff --git a/smiley_pack/icons/fight/army.gif b/smiley_pack/icons/fight/army.gif
new file mode 100644 (file)
index 0000000..7506700
Binary files /dev/null and b/smiley_pack/icons/fight/army.gif differ
diff --git a/smiley_pack/icons/fight/arrowhead.gif b/smiley_pack/icons/fight/arrowhead.gif
new file mode 100644 (file)
index 0000000..f4572c4
Binary files /dev/null and b/smiley_pack/icons/fight/arrowhead.gif differ
diff --git a/smiley_pack/icons/fight/bfg.gif b/smiley_pack/icons/fight/bfg.gif
new file mode 100644 (file)
index 0000000..c2ba9d0
Binary files /dev/null and b/smiley_pack/icons/fight/bfg.gif differ
diff --git a/smiley_pack/icons/fight/bowman.gif b/smiley_pack/icons/fight/bowman.gif
new file mode 100644 (file)
index 0000000..2f1f8f0
Binary files /dev/null and b/smiley_pack/icons/fight/bowman.gif differ
diff --git a/smiley_pack/icons/fight/chainsaw.gif b/smiley_pack/icons/fight/chainsaw.gif
new file mode 100644 (file)
index 0000000..71f757c
Binary files /dev/null and b/smiley_pack/icons/fight/chainsaw.gif differ
diff --git a/smiley_pack/icons/fight/crossbow.gif b/smiley_pack/icons/fight/crossbow.gif
new file mode 100644 (file)
index 0000000..20874f3
Binary files /dev/null and b/smiley_pack/icons/fight/crossbow.gif differ
diff --git a/smiley_pack/icons/fight/crusader.gif b/smiley_pack/icons/fight/crusader.gif
new file mode 100644 (file)
index 0000000..95848ae
Binary files /dev/null and b/smiley_pack/icons/fight/crusader.gif differ
diff --git a/smiley_pack/icons/fight/dead.gif b/smiley_pack/icons/fight/dead.gif
new file mode 100644 (file)
index 0000000..31adaba
Binary files /dev/null and b/smiley_pack/icons/fight/dead.gif differ
diff --git a/smiley_pack/icons/fight/gangs.gif b/smiley_pack/icons/fight/gangs.gif
new file mode 100644 (file)
index 0000000..2c655b1
Binary files /dev/null and b/smiley_pack/icons/fight/gangs.gif differ
diff --git a/smiley_pack/icons/fight/hammersplat.gif b/smiley_pack/icons/fight/hammersplat.gif
new file mode 100644 (file)
index 0000000..95bd540
Binary files /dev/null and b/smiley_pack/icons/fight/hammersplat.gif differ
diff --git a/smiley_pack/icons/fight/lasergun.gif b/smiley_pack/icons/fight/lasergun.gif
new file mode 100644 (file)
index 0000000..f3f82cb
Binary files /dev/null and b/smiley_pack/icons/fight/lasergun.gif differ
diff --git a/smiley_pack/icons/fight/machinegun.gif b/smiley_pack/icons/fight/machinegun.gif
new file mode 100644 (file)
index 0000000..1cff5cc
Binary files /dev/null and b/smiley_pack/icons/fight/machinegun.gif differ
diff --git a/smiley_pack/icons/fight/marine.gif b/smiley_pack/icons/fight/marine.gif
new file mode 100644 (file)
index 0000000..88fd2e0
Binary files /dev/null and b/smiley_pack/icons/fight/marine.gif differ
diff --git a/smiley_pack/icons/fight/sabre.gif b/smiley_pack/icons/fight/sabre.gif
new file mode 100644 (file)
index 0000000..e623968
Binary files /dev/null and b/smiley_pack/icons/fight/sabre.gif differ
diff --git a/smiley_pack/icons/fight/samurai.gif b/smiley_pack/icons/fight/samurai.gif
new file mode 100644 (file)
index 0000000..8b24385
Binary files /dev/null and b/smiley_pack/icons/fight/samurai.gif differ
diff --git a/smiley_pack/icons/fight/tank.gif b/smiley_pack/icons/fight/tank.gif
new file mode 100644 (file)
index 0000000..f1d969d
Binary files /dev/null and b/smiley_pack/icons/fight/tank.gif differ
diff --git a/smiley_pack/icons/fight/viking.gif b/smiley_pack/icons/fight/viking.gif
new file mode 100644 (file)
index 0000000..4908edd
Binary files /dev/null and b/smiley_pack/icons/fight/viking.gif differ
diff --git a/smiley_pack/icons/food/apple.gif b/smiley_pack/icons/food/apple.gif
new file mode 100644 (file)
index 0000000..969d4ca
Binary files /dev/null and b/smiley_pack/icons/food/apple.gif differ
diff --git a/smiley_pack/icons/food/banana.gif b/smiley_pack/icons/food/banana.gif
new file mode 100644 (file)
index 0000000..d990d19
Binary files /dev/null and b/smiley_pack/icons/food/banana.gif differ
diff --git a/smiley_pack/icons/food/broccoli.gif b/smiley_pack/icons/food/broccoli.gif
new file mode 100644 (file)
index 0000000..f379889
Binary files /dev/null and b/smiley_pack/icons/food/broccoli.gif differ
diff --git a/smiley_pack/icons/food/cake.gif b/smiley_pack/icons/food/cake.gif
new file mode 100644 (file)
index 0000000..22d0ebd
Binary files /dev/null and b/smiley_pack/icons/food/cake.gif differ
diff --git a/smiley_pack/icons/food/carrot.gif b/smiley_pack/icons/food/carrot.gif
new file mode 100644 (file)
index 0000000..387b94c
Binary files /dev/null and b/smiley_pack/icons/food/carrot.gif differ
diff --git a/smiley_pack/icons/food/cooking.gif b/smiley_pack/icons/food/cooking.gif
new file mode 100644 (file)
index 0000000..e62fea0
Binary files /dev/null and b/smiley_pack/icons/food/cooking.gif differ
diff --git a/smiley_pack/icons/food/fryegg.gif b/smiley_pack/icons/food/fryegg.gif
new file mode 100644 (file)
index 0000000..bd1b4ff
Binary files /dev/null and b/smiley_pack/icons/food/fryegg.gif differ
diff --git a/smiley_pack/icons/food/popcorn.gif b/smiley_pack/icons/food/popcorn.gif
new file mode 100644 (file)
index 0000000..b0ea697
Binary files /dev/null and b/smiley_pack/icons/food/popcorn.gif differ
diff --git a/smiley_pack/icons/food/tomato.gif b/smiley_pack/icons/food/tomato.gif
new file mode 100644 (file)
index 0000000..0e3dadd
Binary files /dev/null and b/smiley_pack/icons/food/tomato.gif differ
diff --git a/smiley_pack/icons/happy/cloud9.gif b/smiley_pack/icons/happy/cloud9.gif
new file mode 100644 (file)
index 0000000..801c1a3
Binary files /dev/null and b/smiley_pack/icons/happy/cloud9.gif differ
diff --git a/smiley_pack/icons/happy/tearsofjoy.gif b/smiley_pack/icons/happy/tearsofjoy.gif
new file mode 100644 (file)
index 0000000..5de3117
Binary files /dev/null and b/smiley_pack/icons/happy/tearsofjoy.gif differ
diff --git a/smiley_pack/icons/laugh/hahaha.gif b/smiley_pack/icons/laugh/hahaha.gif
new file mode 100644 (file)
index 0000000..37aa92a
Binary files /dev/null and b/smiley_pack/icons/laugh/hahaha.gif differ
diff --git a/smiley_pack/icons/laugh/loltv.gif b/smiley_pack/icons/laugh/loltv.gif
new file mode 100644 (file)
index 0000000..3de6f77
Binary files /dev/null and b/smiley_pack/icons/laugh/loltv.gif differ
diff --git a/smiley_pack/icons/laugh/rofl.gif b/smiley_pack/icons/laugh/rofl.gif
new file mode 100644 (file)
index 0000000..a3bb03d
Binary files /dev/null and b/smiley_pack/icons/laugh/rofl.gif differ
diff --git a/smiley_pack/icons/love/iloveyou.gif b/smiley_pack/icons/love/iloveyou.gif
new file mode 100644 (file)
index 0000000..7007515
Binary files /dev/null and b/smiley_pack/icons/love/iloveyou.gif differ
diff --git a/smiley_pack/icons/love/inlove.gif b/smiley_pack/icons/love/inlove.gif
new file mode 100644 (file)
index 0000000..30357af
Binary files /dev/null and b/smiley_pack/icons/love/inlove.gif differ
diff --git a/smiley_pack/icons/love/love.gif b/smiley_pack/icons/love/love.gif
new file mode 100644 (file)
index 0000000..d8f0d5b
Binary files /dev/null and b/smiley_pack/icons/love/love.gif differ
diff --git a/smiley_pack/icons/love/lovebear.gif b/smiley_pack/icons/love/lovebear.gif
new file mode 100644 (file)
index 0000000..d13fd18
Binary files /dev/null and b/smiley_pack/icons/love/lovebear.gif differ
diff --git a/smiley_pack/icons/love/lovebed.gif b/smiley_pack/icons/love/lovebed.gif
new file mode 100644 (file)
index 0000000..c5783e0
Binary files /dev/null and b/smiley_pack/icons/love/lovebed.gif differ
diff --git a/smiley_pack/icons/love/loveheart.gif b/smiley_pack/icons/love/loveheart.gif
new file mode 100644 (file)
index 0000000..541220a
Binary files /dev/null and b/smiley_pack/icons/love/loveheart.gif differ
diff --git a/smiley_pack/icons/music/dj.gif b/smiley_pack/icons/music/dj.gif
new file mode 100644 (file)
index 0000000..66bc075
Binary files /dev/null and b/smiley_pack/icons/music/dj.gif differ
diff --git a/smiley_pack/icons/music/drums.gif b/smiley_pack/icons/music/drums.gif
new file mode 100644 (file)
index 0000000..27215f4
Binary files /dev/null and b/smiley_pack/icons/music/drums.gif differ
diff --git a/smiley_pack/icons/music/elvis.gif b/smiley_pack/icons/music/elvis.gif
new file mode 100644 (file)
index 0000000..ebcdccc
Binary files /dev/null and b/smiley_pack/icons/music/elvis.gif differ
diff --git a/smiley_pack/icons/music/guitar.gif b/smiley_pack/icons/music/guitar.gif
new file mode 100644 (file)
index 0000000..11eccdd
Binary files /dev/null and b/smiley_pack/icons/music/guitar.gif differ
diff --git a/smiley_pack/icons/music/trumpet.gif b/smiley_pack/icons/music/trumpet.gif
new file mode 100644 (file)
index 0000000..4595ccc
Binary files /dev/null and b/smiley_pack/icons/music/trumpet.gif differ
diff --git a/smiley_pack/icons/music/violin.gif b/smiley_pack/icons/music/violin.gif
new file mode 100644 (file)
index 0000000..53592d6
Binary files /dev/null and b/smiley_pack/icons/music/violin.gif differ
diff --git a/smiley_pack/icons/oldcore/beard.png b/smiley_pack/icons/oldcore/beard.png
new file mode 100644 (file)
index 0000000..5d4b284
Binary files /dev/null and b/smiley_pack/icons/oldcore/beard.png differ
diff --git a/smiley_pack/icons/oldcore/headbang.gif b/smiley_pack/icons/oldcore/headbang.gif
new file mode 100644 (file)
index 0000000..91ccb8b
Binary files /dev/null and b/smiley_pack/icons/oldcore/headbang.gif differ
diff --git a/smiley_pack/icons/oldcore/laughing.gif b/smiley_pack/icons/oldcore/laughing.gif
new file mode 100755 (executable)
index 0000000..1bf29de
Binary files /dev/null and b/smiley_pack/icons/oldcore/laughing.gif differ
diff --git a/smiley_pack/icons/oldcore/shaka.gif b/smiley_pack/icons/oldcore/shaka.gif
new file mode 100644 (file)
index 0000000..e5d7b70
Binary files /dev/null and b/smiley_pack/icons/oldcore/shaka.gif differ
diff --git a/smiley_pack/icons/oldcore/surprised.gif b/smiley_pack/icons/oldcore/surprised.gif
new file mode 100755 (executable)
index 0000000..b074653
Binary files /dev/null and b/smiley_pack/icons/oldcore/surprised.gif differ
diff --git a/smiley_pack/icons/oldcore/whitebeard.png b/smiley_pack/icons/oldcore/whitebeard.png
new file mode 100644 (file)
index 0000000..2a1fccb
Binary files /dev/null and b/smiley_pack/icons/oldcore/whitebeard.png differ
diff --git a/smiley_pack/icons/respect/bow.gif b/smiley_pack/icons/respect/bow.gif
new file mode 100644 (file)
index 0000000..ecc6484
Binary files /dev/null and b/smiley_pack/icons/respect/bow.gif differ
diff --git a/smiley_pack/icons/respect/bravo.gif b/smiley_pack/icons/respect/bravo.gif
new file mode 100644 (file)
index 0000000..34f72ab
Binary files /dev/null and b/smiley_pack/icons/respect/bravo.gif differ
diff --git a/smiley_pack/icons/respect/hailking.gif b/smiley_pack/icons/respect/hailking.gif
new file mode 100644 (file)
index 0000000..07551e5
Binary files /dev/null and b/smiley_pack/icons/respect/hailking.gif differ
diff --git a/smiley_pack/icons/respect/number1.gif b/smiley_pack/icons/respect/number1.gif
new file mode 100644 (file)
index 0000000..ab5c410
Binary files /dev/null and b/smiley_pack/icons/respect/number1.gif differ
diff --git a/smiley_pack/icons/sad/crying.png b/smiley_pack/icons/sad/crying.png
new file mode 100644 (file)
index 0000000..62b9646
Binary files /dev/null and b/smiley_pack/icons/sad/crying.png differ
diff --git a/smiley_pack/icons/sad/prisoner.gif b/smiley_pack/icons/sad/prisoner.gif
new file mode 100644 (file)
index 0000000..f2c3181
Binary files /dev/null and b/smiley_pack/icons/sad/prisoner.gif differ
diff --git a/smiley_pack/icons/smoking/smoking.gif b/smiley_pack/icons/smoking/smoking.gif
new file mode 100644 (file)
index 0000000..77720b1
Binary files /dev/null and b/smiley_pack/icons/smoking/smoking.gif differ
diff --git a/smiley_pack/icons/sport/archery.gif b/smiley_pack/icons/sport/archery.gif
new file mode 100644 (file)
index 0000000..8b4b9f6
Binary files /dev/null and b/smiley_pack/icons/sport/archery.gif differ
diff --git a/smiley_pack/icons/sport/basketball.gif b/smiley_pack/icons/sport/basketball.gif
new file mode 100644 (file)
index 0000000..e9ad4b5
Binary files /dev/null and b/smiley_pack/icons/sport/basketball.gif differ
diff --git a/smiley_pack/icons/sport/bowling.gif b/smiley_pack/icons/sport/bowling.gif
new file mode 100644 (file)
index 0000000..0f8300c
Binary files /dev/null and b/smiley_pack/icons/sport/bowling.gif differ
diff --git a/smiley_pack/icons/sport/cycling.gif b/smiley_pack/icons/sport/cycling.gif
new file mode 100644 (file)
index 0000000..332081e
Binary files /dev/null and b/smiley_pack/icons/sport/cycling.gif differ
diff --git a/smiley_pack/icons/sport/darts.gif b/smiley_pack/icons/sport/darts.gif
new file mode 100644 (file)
index 0000000..09fb6ea
Binary files /dev/null and b/smiley_pack/icons/sport/darts.gif differ
diff --git a/smiley_pack/icons/sport/fencing.gif b/smiley_pack/icons/sport/fencing.gif
new file mode 100644 (file)
index 0000000..a4ec5cd
Binary files /dev/null and b/smiley_pack/icons/sport/fencing.gif differ
diff --git a/smiley_pack/icons/sport/football.gif b/smiley_pack/icons/sport/football.gif
new file mode 100644 (file)
index 0000000..c9fa6c5
Binary files /dev/null and b/smiley_pack/icons/sport/football.gif differ
diff --git a/smiley_pack/icons/sport/golf.gif b/smiley_pack/icons/sport/golf.gif
new file mode 100644 (file)
index 0000000..179fc52
Binary files /dev/null and b/smiley_pack/icons/sport/golf.gif differ
diff --git a/smiley_pack/icons/sport/horseriding.gif b/smiley_pack/icons/sport/horseriding.gif
new file mode 100644 (file)
index 0000000..13ca450
Binary files /dev/null and b/smiley_pack/icons/sport/horseriding.gif differ
diff --git a/smiley_pack/icons/sport/juggling.gif b/smiley_pack/icons/sport/juggling.gif
new file mode 100644 (file)
index 0000000..1a2eb60
Binary files /dev/null and b/smiley_pack/icons/sport/juggling.gif differ
diff --git a/smiley_pack/icons/sport/skipping.gif b/smiley_pack/icons/sport/skipping.gif
new file mode 100644 (file)
index 0000000..f63270b
Binary files /dev/null and b/smiley_pack/icons/sport/skipping.gif differ
diff --git a/smiley_pack/icons/sport/snooker.gif b/smiley_pack/icons/sport/snooker.gif
new file mode 100644 (file)
index 0000000..fa2e6a8
Binary files /dev/null and b/smiley_pack/icons/sport/snooker.gif differ
diff --git a/smiley_pack/icons/sport/surfing.gif b/smiley_pack/icons/sport/surfing.gif
new file mode 100644 (file)
index 0000000..b75d74b
Binary files /dev/null and b/smiley_pack/icons/sport/surfing.gif differ
diff --git a/smiley_pack/icons/sport/tennis.gif b/smiley_pack/icons/sport/tennis.gif
new file mode 100644 (file)
index 0000000..36e47bf
Binary files /dev/null and b/smiley_pack/icons/sport/tennis.gif differ
diff --git a/smiley_pack/icons/tired/countsheep.gif b/smiley_pack/icons/tired/countsheep.gif
new file mode 100644 (file)
index 0000000..815b090
Binary files /dev/null and b/smiley_pack/icons/tired/countsheep.gif differ
diff --git a/smiley_pack/icons/tired/hammock.gif b/smiley_pack/icons/tired/hammock.gif
new file mode 100644 (file)
index 0000000..8639dd3
Binary files /dev/null and b/smiley_pack/icons/tired/hammock.gif differ
diff --git a/smiley_pack/icons/tired/pillow.gif b/smiley_pack/icons/tired/pillow.gif
new file mode 100644 (file)
index 0000000..367f65e
Binary files /dev/null and b/smiley_pack/icons/tired/pillow.gif differ
diff --git a/smiley_pack/smiley_pack.php b/smiley_pack/smiley_pack.php
new file mode 100644 (file)
index 0000000..7f4bfb7
--- /dev/null
@@ -0,0 +1,485 @@
+<?php
+/*
+ * Name: Smiley Pack
+ * Description: Pack of smileys that make master too AOLish.
+ * Version: 1.0
+ * Author: Thomas Willingham (based on Mike Macgirvin's Adult Smile template) 
+ * All smileys from sites offering them as Public Domain
+ * 
+ * 
+ */
+
+function smiley_pack_install() {
+       register_hook('smilie', 'addon/smiley_pack/smiley_pack.php', 'smiley_pack_smilies');
+}
+
+function smiley_pack_uninstall() {
+       unregister_hook('smilie', 'addon/smiley_pack/smiley_pack.php', 'smiley_pack_smilies');
+}
+
+
+function smiley_pack_smilies(&$a,&$b) {
+
+#Smileys are split into various directories by the intended range of emotions.  This is in case we get too big and need to modularise things.  We can then cut and paste the right lines, move the right directory, and just change the name of the addon to happy_smilies or whatever.
+
+#Be careful with invocation strings.  If you have a smiley called foo, and another called foobar, typing :foobar will call foo.  Avoid this with clever naming, using ~ instead of : 
+#when all else fails.
+
+
+
+#Animal smileys.
+
+       $b['texts'][] = ':bunnyflowers';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smiley_pack/icons/animals/bunnyflowers.gif' . '" alt="' . ':bunnyflowers' . '" />';
+
+       $b['texts'][] = ':chick';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smiley_pack/icons/animals/chick.gif' . '" alt="' . ':chick' . '" />';
+
+       $b['texts'][] = ':bumblebee';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smiley_pack/icons/animals/bee.gif' . '" alt="' . ':bee' . '" />';    
+
+       $b['texts'][] = ':ladybird';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smiley_pack/icons/animals/ladybird.gif' . '" alt="' . ':ladybird' . '" />';  
+
+       $b['texts'][] = ':bigspider';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smiley_pack/icons/animals/bigspider.gif' . '" alt="' . ':bigspider' . '" />';        
+
+       $b['texts'][] = ':cat';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smiley_pack/icons/animals/cat.gif' . '" alt="' . ':cat' . '" />';    
+
+       $b['texts'][] = ':bunny';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smiley_pack/icons/animals/bunny.gif' . '" alt="' . ':bunny' . '" />';        
+
+       $b['texts'][] = ':chick';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smiley_pack/icons/animals/chick.gif' . '" alt="' . ':chick' . '" />';        
+
+       $b['texts'][] = ':cow';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smiley_pack/icons/animals/cow.gif' . '" alt="' . ':cow' . '" />';    
+    
+       $b['texts'][] = ':crab';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smiley_pack/icons/animals/crab.gif' . '" alt="' . ':crab' . '" />';  
+
+       $b['texts'][] = ':dolphin';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smiley_pack/icons/animals/dolphin.gif' . '" alt="' . ':dolphin' . '" />';    
+
+       $b['texts'][] = ':dragonfly';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smiley_pack/icons/animals/dragonfly.gif' . '" alt="' . ':dragonfly' . '" />';        
+
+       $b['texts'][] = ':frog';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smiley_pack/icons/animals/frog.gif' . '" alt="' . ':frog' . '" />';  
+
+       $b['texts'][] = ':hamster';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smiley_pack/icons/animals/hamster.gif' . '" alt="' . ':hamster' . '" />';    
+
+       $b['texts'][] = ':monkey';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smiley_pack/icons/animals/monkey.gif' . '" alt="' . ':monkey' . '" />';      
+
+       $b['texts'][] = ':horse';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smiley_pack/icons/animals/horse.gif' . '" alt="' . ':horse' . '" />';        
+  
+       $b['texts'][] = ':parrot';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smiley_pack/icons/animals/parrot.gif' . '" alt="' . ':parrot' . '" />';      
+
+       $b['texts'][] = ':tux';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smiley_pack/icons/animals/tux.gif' . '" alt="' . ':tux' . '" />';    
+
+       $b['texts'][] = ':snail';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smiley_pack/icons/animals/snail.gif' . '" alt="' . ':snail' . '" />';        
+
+       $b['texts'][] = ':sheep';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smiley_pack/icons/animals/sheep.gif' . '" alt="' . ':sheep' . '" />';        
+
+       $b['texts'][] = ':dog';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smiley_pack/icons/animals/dog.gif' . '" alt="' . ':dog' . '" />';    
+
+       $b['texts'][] = ':elephant';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smiley_pack/icons/animals/elephant.gif' . '" alt="' . ':elephant' . '" />';  
+
+       $b['texts'][] = ':fish';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smiley_pack/icons/animals/fish.gif' . '" alt="' . ':fish' . '" />';  
+
+       $b['texts'][] = ':giraffe';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smiley_pack/icons/animals/giraffe.gif' . '" alt="' . ':giraffe' . '" />';    
+
+       $b['texts'][] = ':pig';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smiley_pack/icons/animals/pig.gif' . '" alt="' . ':pig' . '" />';    
+
+
+
+#Baby Smileys
+
+       $b['texts'][] = ':baby';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smiley_pack/icons/babies/baby.gif' . '" alt="' . ':baby' . '" />';   
+
+       $b['texts'][] = ':babycot';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smiley_pack/icons/babies/babycot.gif' . '" alt="' . ':babycot' . '" />';     
+       
+
+       $b['texts'][] = ':pregnant';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smiley_pack/icons/babies/pregnant.gif' . '" alt="' . ':pregnant' . '" />';   
+
+       $b['texts'][] = ':stork';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smiley_pack/icons/babies/stork.gif' . '" alt="' . ':stork' . '" />'; 
+
+
+#Confused Smileys      
+       $b['texts'][] = ':confused';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smiley_pack/icons/confused/confused.gif' . '" alt="' . ':confused' . '" />'; 
+    
+       $b['texts'][] = ':shrug';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smiley_pack/icons/confused/shrug.gif' . '" alt="' . ':shrug' . '" />';       
+
+       $b['texts'][] = ':stupid';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smiley_pack/icons/confused/stupid.gif' . '" alt="' . ':stupid' . '" />';     
+
+       $b['texts'][] = ':dazed';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smiley_pack/icons/confused/dazed.gif' . '" alt="' . ':dazed' . '" />';       
+
+
+#Cool Smileys
+
+       $b['texts'][] = ':affro';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smiley_pack/icons/cool/affro.gif' . '" alt="' . ':affro' . '" />';   
+
+       $b['texts'][] = ':cool';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smiley_pack/icons/cool/cool.gif' . '" alt="' . ':cool' . '" />';     
+
+#Devil/Angel Smileys
+
+       $b['texts'][] = ':angel';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smiley_pack/icons/devilangel/angel.gif' . '" alt="' . ':angel' . '" />';     
+
+       $b['texts'][] = ':cherub';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smiley_pack/icons/devilangel/cherub.gif' . '" alt="' . ':cherub' . '" />';   
+
+       $b['texts'][] = ':devilangel';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smiley_pack/icons/devilangel/blondedevil.gif' . '" alt="' . ':devilangel' . '" />';  
+
+       $b['texts'][] = ':catdevil';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smiley_pack/icons/devilangel/catdevil.gif' . '" alt="' . ':catdevil' . '" />';       
+
+       $b['texts'][] = ':devillish';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smiley_pack/icons/devilangel/devil.gif' . '" alt="' . ':devillish' . '" />'; 
+       
+       $b['texts'][] = ':daseesaw';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smiley_pack/icons/devilangel/daseesaw.gif' . '" alt="' . ':daseesaw' . '" />';       
+
+       $b['texts'][] = ':turnevil';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smiley_pack/icons/devilangel/turnevil.gif' . '" alt="' . ':turnevil' . '" />';       
+       
+       $b['texts'][] = ':saint';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smiley_pack/icons/devilangel/saint.gif' . '" alt="' . ':saint' . '" />';     
+
+       $b['texts'][] = ':graveside';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smiley_pack/icons/devilangel/graveside.gif' . '" alt="' . ':graveside' . '" />';     
+
+#Unpleasent smileys.
+
+       $b['texts'][] = ':toilet';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smiley_pack/icons/disgust/toilet.gif' . '" alt="' . ':toilet' . '" />';      
+
+       $b['texts'][] = ':fartinbed';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smiley_pack/icons/disgust/fartinbed.gif' . '" alt="' . ':fartinbed' . '" />';
+
+       $b['texts'][] = ':vomit';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smiley_pack/icons/disgust/vomit.gif' . '" alt="' . ':vomit' . '" />';
+
+       $b['texts'][] = ':fartblush';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smiley_pack/icons/disgust/fartblush.gif' . '" alt="' . ':fartblush' . '" />';
+
+#Drinks
+
+       $b['texts'][] = ':tea';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smiley_pack/icons/drink/tea.gif' . '" alt="' . ':tea' . '" />';
+
+       $b['texts'][] = ':drool';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smiley_pack/icons/drool/drool.gif' . '" alt="' . ':drool' . '" />';
+
+#Sad smileys
+
+       $b['texts'][] = ':crying';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smiley_pack/icons/sad/crying.png' . '" alt="' . ':crying' . '" />';
+
+       $b['texts'][] = ':prisoner';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smiley_pack/icons/sad/prisoner.gif' . '" alt="' . ':prisoner' . '" />';
+
+#Smoking - only one smiley in here, maybe it needs moving elsewhere?
+
+       $b['texts'][] = ':smoking';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smiley_pack/icons/smoking/smoking.gif' . '" alt="' . ':smoking' . '" />';
+
+#Sport smileys
+
+       $b['texts'][] = ':basketball';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smiley_pack/icons/sport/basketball.gif' . '" alt="' . ':basketball' . '" />';
+
+       $b['texts'][] = ':bowling';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smiley_pack/icons/sport/bowling.gif' . '" alt="' . ':bowling' . '" />';
+
+       $b['texts'][] = ':cycling';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smiley_pack/icons/sport/cycling.gif' . '" alt="' . ':cycling' . '" />';
+
+       $b['texts'][] = ':darts';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smiley_pack/icons/sport/darts.gif' . '" alt="' . ':darts' . '" />';
+
+       $b['texts'][] = ':fencing';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smiley_pack/icons/sport/fencing.gif' . '" alt="' . ':fencing' . '" />';
+
+       $b['texts'][] = ':golf';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smiley_pack/icons/sport/golf.gif' . '" alt="' . ':golf' . '" />';
+
+       $b['texts'][] = ':juggling';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smiley_pack/icons/sport/juggling.gif' . '" alt="' . ':juggling' . '" />';
+
+       $b['texts'][] = ':skipping';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smiley_pack/icons/sport/skipping.gif' . '" alt="' . ':skipping' . '" />';
+
+       $b['texts'][] = ':archery';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smiley_pack/icons/sport/archery.gif' . '" alt="' . ':archery' . '" />';
+
+       $b['texts'][] = ':football';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smiley_pack/icons/sport/football.gif' . '" alt="' . ':football' . '" />';
+
+       $b['texts'][] = ':surfing';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smiley_pack/icons/sport/surfing.gif' . '" alt="' . ':surfing' . '" />';
+
+       $b['texts'][] = ':snooker';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smiley_pack/icons/sport/snooker.gif' . '" alt="' . ':snooker' . '" />';
+  
+       $b['texts'][] = ':tennis';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smiley_pack/icons/sport/tennis.gif' . '" alt="' . ':tennis' . '" />';
+
+       $b['texts'][] = ':horseriding';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smiley_pack/icons/sport/horseriding.gif' . '" alt="' . ':horseriding' . '" />';
+
+#Love smileys
+
+       $b['texts'][] = ':iloveyou';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smiley_pack/icons/love/iloveyou.gif' . '" alt="' . ':iloveyou' . '" />';
+
+       $b['texts'][] = ':inlove';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smiley_pack/icons/love/inlove.gif' . '" alt="' . ':inlove' . '" />';
+
+       $b['texts'][] = '~love';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smiley_pack/icons/love/love.gif' . '" alt="' . ':love' . '" />';
+
+       $b['texts'][] = ':lovebear';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smiley_pack/icons/love/lovebear.gif' . '" alt="' . ':lovebear' . '" />';
+
+       $b['texts'][] = ':lovebed';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smiley_pack/icons/love/lovebed.gif' . '" alt="' . ':lovebed' . '" />';
+
+       $b['texts'][] = ':loveheart';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smiley_pack/icons/love/loveheart.gif' . '" alt="' . ':loveheart' . '" />';
+
+#Tired/Sleep smileys
+
+       $b['texts'][] = ':countsheep';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smiley_pack/icons/tired/countsheep.gif' . '" alt="' . ':countsheep' . '" />';
+
+       $b['texts'][] = ':hammock';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smiley_pack/icons/tired/hammock.gif' . '" alt="' . ':hammock' . '" />';
+
+       $b['texts'][] = ':pillow';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smiley_pack/icons/tired/pillow.gif' . '" alt="' . ':pillow' . '" />';
+
+#Fight/Flame/Violent smileys
+
+       $b['texts'][] = ':2guns';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smiley_pack/icons/fight/2guns.gif' . '" alt="' . ':2guns' . '" />';
+
+       $b['texts'][] = ':alienfight';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smiley_pack/icons/fight/alienfight.gif' . '" alt="' . ':alienfight' . '" />';
+
+       $b['texts'][] = ':army';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smiley_pack/icons/fight/army.gif' . '" alt="' . ':army' . '" />';
+
+       $b['texts'][] = ':arrowhead';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smiley_pack/icons/fight/arrowhead.gif' . '" alt="' . ':arrowhead' . '" />';
+
+       $b['texts'][] = ':bfg';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smiley_pack/icons/fight/bfg.gif' . '" alt="' . ':bfg' . '" />';
+
+       $b['texts'][] = ':bowman';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smiley_pack/icons/fight/bowman.gif' . '" alt="' . ':bowman' . '" />';
+
+       $b['texts'][] = ':chainsaw';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smiley_pack/icons/fight/chainsaw.gif' . '" alt="' . ':chainsaw' . '" />';
+
+       $b['texts'][] = ':crossbow';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smiley_pack/icons/fight/crossbow.gif' . '" alt="' . ':crossbow' . '" />';
+
+       $b['texts'][] = ':crusader';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smiley_pack/icons/fight/crusader.gif' . '" alt="' . ':crusader' . '" />';
+
+       $b['texts'][] = ':dead';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smiley_pack/icons/fight/dead.gif' . '" alt="' . ':dead' . '" />';
+
+       $b['texts'][] = ':hammersplat';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smiley_pack/icons/fight/hammersplat.gif' . '" alt="' . ':hammersplat' . '" />';
+
+       $b['texts'][] = ':lasergun';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smiley_pack/icons/fight/lasergun.gif' . '" alt="' . ':lasergun' . '" />';
+
+       $b['texts'][] = ':machinegun';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smiley_pack/icons/fight/machinegun.gif' . '" alt="' . ':machinegun' . '" />';
+
+       $b['texts'][] = ':marine';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smiley_pack/icons/fight/marine.gif' . '" alt="' . ':marine' . '" />';
+
+       $b['texts'][] = ':sabre';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smiley_pack/icons/fight/sabre.gif' . '" alt="' . ':sabre' . '" />';
+
+       $b['texts'][] = ':tank';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smiley_pack/icons/fight/tank.gif' . '" alt="' . ':tank' . '" />';
+
+       $b['texts'][] = ':viking';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smiley_pack/icons/fight/viking.gif' . '" alt="' . ':viking' . '" />';
+
+       $b['texts'][] = ':gangs';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smiley_pack/icons/fight/gangs.gif' . '" alt="' . ':gangs' . '" />';
+
+       $b['texts'][] = ':acid';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smiley_pack/icons/fight/acid.gif' . '" alt="' . ':acid' . '" />';
+
+#Fantasy smileys - monsters and dragons fantasy.  The other type of fantasy belongs in adult smileys
+
+       $b['texts'][] = ':alienmonster';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smiley_pack/icons/fantasy/alienmonster.gif' . '" alt="' . ':alienmonster' . '" />';
+
+       $b['texts'][] = ':barbarian';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smiley_pack/icons/fantasy/barbarian.gif' . '" alt="' . ':barbarian' . '" />';
+
+       $b['texts'][] = ':dinosaur';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smiley_pack/icons/fantasy/dinosaur.gif' . '" alt="' . ':dinosaur' . '" />';
+
+       $b['texts'][] = ':dragon';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smiley_pack/icons/fantasy/dragon.gif' . '" alt="' . ':dragon' . '" />';
+
+       $b['texts'][] = ':draco';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smiley_pack/icons/fantasy/dragonwhelp.gif' . '" alt="' . ':draco' . '" />';
+
+       $b['texts'][] = ':ghost';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smiley_pack/icons/fantasy/ghost.gif' . '" alt="' . ':ghost' . '" />';
+
+       $b['texts'][] = ':mummy';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smiley_pack/icons/fantasy/mummy.gif' . '" alt="' . ':mummy' . '" />';
+
+#Food smileys
+
+       $b['texts'][] = ':apple';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smiley_pack/icons/food/apple.gif' . '" alt="' . ':apple' . '" />';
+
+       $b['texts'][] = ':broccoli';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smiley_pack/icons/food/broccoli.gif' . '" alt="' . ':brocolli' . '" />';
+
+       $b['texts'][] = ':cake';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smiley_pack/icons/food/cake.gif' . '" alt="' . ':cake' . '" />';
+
+       $b['texts'][] = ':carrot';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smiley_pack/icons/food/carrot.gif' . '" alt="' . ':carrot' . '" />';
+
+       $b['texts'][] = ':popcorn';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smiley_pack/icons/food/popcorn.gif' . '" alt="' . ':popcorn' . '" />';
+
+       $b['texts'][] = ':tomato';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smiley_pack/icons/food/tomato.gif' . '" alt="' . ':tomato' . '" />';
+
+       $b['texts'][] = ':banana';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smiley_pack/icons/food/banana.gif' . '" alt="' . ':banana' . '" />';
+
+       $b['texts'][] = ':cooking';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smiley_pack/icons/food/cooking.gif' . '" alt="' . ':cooking' . '" />';
+
+       $b['texts'][] = ':fryegg';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smiley_pack/icons/food/fryegg.gif' . '" alt="' . ':fryegg' . '" />';
+
+#Happy smileys
+
+       $b['texts'][] = ':cloud9';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smiley_pack/icons/happy/cloud9.gif' . '" alt="' . ':cloud9' . '" />';
+
+       $b['texts'][] = ':tearsofjoy';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smiley_pack/icons/happy/tearsofjoy.gif' . '" alt="' . ':tearsofjoy' . '" />';
+
+#Repsect smileys
+
+       $b['texts'][] = ':bow';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smiley_pack/icons/respect/bow.gif' . '" alt="' . ':bow' . '" />';
+
+       $b['texts'][] = ':bravo';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smiley_pack/icons/respect/bravo.gif' . '" alt="' . ':bravo' . '" />';
+
+       $b['texts'][] = ':hailking';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smiley_pack/icons/respect/hailking.gif' . '" alt="' . ':hailking' . '" />';
+
+       $b['texts'][] = ':number1';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smiley_pack/icons/respect/number1.gif' . '" alt="' . ':number1' . '" />';
+
+#Laugh smileys
+
+       $b['texts'][] = ':hahaha';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smiley_pack/icons/laugh/hahaha.gif' . '" alt="' . ':hahaha' . '" />';
+
+       $b['texts'][] = ':loltv';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smiley_pack/icons/laugh/loltv.gif' . '" alt="' . ':loltv' . '" />';
+
+       $b['texts'][] = ':rofl';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smiley_pack/icons/laugh/rofl.gif' . '" alt="' . ':rofl' . '" />';
+
+#Music smileys
+
+       $b['texts'][] = ':dj';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smiley_pack/icons/music/dj.gif' . '" alt="' . ':dj' . '" />';
+
+       $b['texts'][] = ':drums';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smiley_pack/icons/music/drums.gif' . '" alt="' . ':drums' . '" />';
+
+       $b['texts'][] = ':elvis';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smiley_pack/icons/music/elvis.gif' . '" alt="' . ':elivs' . '" />';
+
+       $b['texts'][] = ':guitar';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smiley_pack/icons/music/guitar.gif' . '" alt="' . ':guitar' . '" />';
+
+       $b['texts'][] = ':trumpet';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smiley_pack/icons/music/trumpet.gif' . '" alt="' . ':trumpet' . '" />';
+
+       $b['texts'][] = ':violin';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smiley_pack/icons/music/violin.gif' . '" alt="' . ':violin' . '" />';
+
+#Smileys that used to be in core
+
+       $b['texts'][] = ':headbang';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smiley_pack/icons/oldcore/headbang.gif' . '" alt="' . ':headbang' . '" />';
+
+               $b['texts'][] = ':beard';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smiley_pack/icons/oldcore/beard.png' . '" alt="' . ':beard' . '" />';
+
+       $b['texts'][] = ':whitebeard';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smiley_pack/icons/oldcore/whitebeard.png' . '" alt="' . ':whitebeard' . '" />';
+
+       $b['texts'][] = ':shaka';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smiley_pack/icons/oldcore/shaka.gif' . '" alt="' . ':shaka' . '" />';
+
+       $b['texts'][] = ':\\.../';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smiley_pack/icons/oldcore/shaka.gif' . '" alt="' . ':\\.../' . '" />';
+
+       $b['texts'][] = ':\\ooo/';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smiley_pack/icons/oldcore/shaka.gif' . '" alt="' . ':\\ooo/' . '" />';
+
+       $b['texts'][] = ':headdesk';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smiley_pack/icons/oldcore/headdesk.gif' . '" alt="' . ':headdesk' . '" />';
+
+#These two are still in core, so oldcore isn't strictly right, but we don't want too many directories
+
+       $b['texts'][] = ':-d';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smiley_pack/icons/oldcore/laughing.gif' . '" alt="' . ':-d' . '" />';
+
+       $b['texts'][] = ':-o';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smiley_pack/icons/oldcore/surprised.gif' . '" alt="' . ':-o' . '" />';
+
+
+
+
+}
diff --git a/smilies_adult.tgz b/smilies_adult.tgz
new file mode 100644 (file)
index 0000000..e4e86ba
Binary files /dev/null and b/smilies_adult.tgz differ
diff --git a/smilies_adult/icons/bong.gif b/smilies_adult/icons/bong.gif
new file mode 100644 (file)
index 0000000..4b67122
Binary files /dev/null and b/smilies_adult/icons/bong.gif differ
diff --git a/smilies_adult/icons/drunk.gif b/smilies_adult/icons/drunk.gif
new file mode 100644 (file)
index 0000000..4a1c064
Binary files /dev/null and b/smilies_adult/icons/drunk.gif differ
diff --git a/smilies_adult/icons/sperm.gif b/smilies_adult/icons/sperm.gif
new file mode 100644 (file)
index 0000000..6ba9219
Binary files /dev/null and b/smilies_adult/icons/sperm.gif differ
diff --git a/smilies_adult/icons/tits.gif b/smilies_adult/icons/tits.gif
new file mode 100644 (file)
index 0000000..4c1658c
Binary files /dev/null and b/smilies_adult/icons/tits.gif differ
diff --git a/smilies_adult/smilies_adult.php b/smilies_adult/smilies_adult.php
new file mode 100644 (file)
index 0000000..fd6928b
--- /dev/null
@@ -0,0 +1,38 @@
+<?php
+/*
+ * Name: Adult Smilies
+ * Description: Smily icons that could or should not be included in core
+ * Version: 1.0
+ * Author: Mike Macgirvin <http://macgirvin.com/profile/mike>
+ * 
+ * This is a template for how to extend the "smily" code.
+ * 
+ */
+
+function smilies_adult_install() {
+       register_hook('smilie', 'addon/smilies_adult/smilies_adult.php', 'smilies_adult_smilies');
+}
+
+function smilies_adult_uninstall() {
+       unregister_hook('smilie', 'addon/smilies_adult/smilies_adult.php', 'smilies_adult_smilies');
+}
+
+
+function smilies_adult_smilies(&$a,&$b) {
+
+       $b['texts'][] = '(o)(o)';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smilies_adult/icons/tits.gif' . '" alt="' . '(o)(o)' . '" />';
+
+       $b['texts'][] = '(.)(.)';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smilies_adult/icons/tits.gif' . '" alt="' . '(.)(.)' . '" />';
+
+       $b['texts'][] = ':bong';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smilies_adult/icons/bong.gif' . '" alt="' . ':bong' . '" />';
+
+       $b['texts'][] = ':sperm';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smilies_adult/icons/sperm.gif' . '" alt="' . ':sperm' . '" />';
+
+       $b['texts'][] = ':drunk';
+       $b['icons'][] = '<img src="' . $a->get_baseurl() . '/addon/smilies_adult/icons/drunk.gif' . '" alt="' . ':drunk' . '" />';
+}
\ No newline at end of file
index 1984cdbafe7128fd844cf41f6125616525afb20d..2b41f5a47aa3324b1eb4b5021aeebb0d560a64a5 100755 (executable)
Binary files a/statusnet.tgz and b/statusnet.tgz differ
index 48f620aba4249b0a8157425f18d333bab1fc444e..df0412d0e5591a3bad774cff849f687f39d7f120 100755 (executable)
@@ -1,5 +1,6 @@
 ____ StatusNet Plugin ____
 by Tobias Diekershoff
+   http://diekershoff.homeunix.net/friendika/profile/tobias
    tobias.diekershoff(at)gmx.net
 
 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@@ -42,9 +43,35 @@ ___ Configuration ___
 
 __ Global Configuration __
 
-To activate this addon add statusnet to the list of active addons in your
-.htconfig.php file 
-    $a->config['system']['addon'] = "statusnet, ...".
+If you have configured an admin account, you can configure this plugin from
+the admin panel. First activate it from the plugin section of the panel.
+Afterwards you will have a separate configuration page for the plugin, where
+you can provide a set of globally available OAuth credentials for different
+StatusNet pages which will be available for all users of your server.
+
+If you don't use the admin panel, you can configure the relay using the
+.htconfig.php file of your friendica installation. To activate the relay add
+it's name to the list of activated addons.
+
+ $a->config['system']['addon'] = "statusnet, ..."
+
+If you want to provide preconfigured StatusNet instances for your user add the
+credentials for them by adding
+
+$a->config['statusnet']['sites'] = array (
+   array ('sitename' => 'identi.ca', 'apiurl' => 'https://identi.ca/api/',
+     'consumersecret' => 'OAuth Consumer Secret here', 'consumerkey' => 'OAuth
+     Consumer Key here'),
+   array ('sitename' => 'Some other Server', 'apiurl' =>
+     'http://status.example.com/api/', 'consumersecret'  => 'OAuth
+     Consumer Secret here', 'consumerkey' => 'OAuth Consumer Key here')
+);
+
+to the config file.
+
+Regardless of providing global OAuth credentials for your users or not, they
+can always add their own OAuth-Key and -Secret thus enable the relay for any
+StatusNet instance they may have an account at.
 
 __ User Configuration __
 
index 6c1347fc7af97cb8e2e3971d3baa880453f8d252..a5594cb70249ae183b2de56eafea233de1caf546 100755 (executable)
 #statusnet-default-label {
        float: left;
        width: 250px;
-       margin-bottom: 25px;
 }
-
+#statusnet-sendtaglinks-label {
+        float: left;
+        width: 250px;
+        margin-bottom: 25px;
+}
 #statusnet-disconnect {
        float: left;
 }
index 8f2fbf8190965e9a95a0a2237e3985ae341d4b2d..c4100e88e509b667a16db8274ac75a5905010770 100755 (executable)
@@ -2,8 +2,8 @@
 /**
  * Name: StatusNet Connector
  * Description: Relay public postings to a connected StatusNet account
- * Version: 1.0.3
- * Author: Tobias Diekershoff <https://diekershoff.homeunix.net/friendika/profile/tobias>
+ * Version: 1.0.4
+ * Author: Tobias Diekershoff <http://diekershoff.homeunix.net/friendika/profile/tobias>
  */
  
 /*   StatusNet Plugin for Friendica
@@ -155,6 +155,7 @@ function statusnet_settings_post ($a,$post) {
             del_pconfig( local_user(), 'statusnet', 'oauthtoken' );
             del_pconfig( local_user(), 'statusnet', 'oauthsecret' );
             del_pconfig( local_user(), 'statusnet', 'baseapi' );
+            del_pconfig( local_user(), 'statusnet', 'post_taglinks');
        } else {
             if (isset($_POST['statusnet-preconf-apiurl'])) {
                 /***
@@ -218,14 +219,16 @@ function statusnet_settings_post ($a,$post) {
                                        //  ok, now that we have the Access Token, save them in the user config
                                        set_pconfig(local_user(),'statusnet', 'oauthtoken',  $token['oauth_token']);
                                        set_pconfig(local_user(),'statusnet', 'oauthsecret', $token['oauth_token_secret']);
-                    set_pconfig(local_user(),'statusnet', 'post', 1);
+                                        set_pconfig(local_user(),'statusnet', 'post', 1);
+                                        set_pconfig(local_user(),'statusnet', 'post_taglinks', 1);
                     //  reload the Addon Settings page, if we don't do it see Bug #42
                     goaway($a->get_baseurl().'/settings/connectors');
                                } else {
                                        //  if no PIN is supplied in the POST variables, the user has changed the setting
-                                       //  to post a tweet for every new __public__ posting to the wall
+                                       //  to post a dent for every new __public__ posting to the wall
                                        set_pconfig(local_user(),'statusnet','post',intval($_POST['statusnet-enable']));
-                                       set_pconfig(local_user(),'statusnet','post_by_default',intval($_POST['statusnet-default']));
+                                        set_pconfig(local_user(),'statusnet','post_by_default',intval($_POST['statusnet-default']));
+                                        set_pconfig(local_user(),'statusnet','post_taglinks',intval($_POST['statusnet-sendtaglinks']));
                                        info( t('StatusNet settings updated.') . EOL);
                }}}}
 }
@@ -247,7 +250,9 @@ function statusnet_settings(&$a,&$s) {
        $enabled = get_pconfig(local_user(), 'statusnet', 'post');
        $checked = (($enabled) ? ' checked="checked" ' : '');
        $defenabled = get_pconfig(local_user(),'statusnet','post_by_default');
-       $defchecked = (($defenabled) ? ' checked="checked" ' : '');
+        $defchecked = (($defenabled) ? ' checked="checked" ' : '');
+        $linksenabled = get_pconfig(local_user(),'statusnet','post_taglinks');
+        $linkschecked = (($linksenabled) ? ' checked="checked" ' : '');
        $s .= '<div class="settings-block">';
        $s .= '<h3>'. t('StatusNet Posting Settings').'</h3>';
 
@@ -336,6 +341,9 @@ function statusnet_settings(&$a,&$s) {
                        $s .= '<div class="clear"></div>';
                        $s .= '<label id="statusnet-default-label" for="statusnet-default">'. t('Send public postings to StatusNet by default') .'</label>';
                        $s .= '<input id="statusnet-default" type="checkbox" name="statusnet-default" value="1" ' . $defchecked . '/>';
+                       $s .= '<div class="clear"></div>';
+                        $s .= '<label id="statusnet-sendtaglinks-label" for="statusnet-sendtaglinks">'.t('Send #tag links to StatusNet').'</label>';
+                        $s .= '<input id="statusnet-sendtaglinks" type="checkbox" name="statusnet-sendtaglinks" value="1" '. $linkschecked . '/>';
                        $s .= '</div><div class="clear"></div>';
 
                        $s .= '<div id="statusnet-disconnect-wrapper">';
@@ -425,7 +433,12 @@ function statusnet_post_hook(&$a,&$b) {
                 // we can later send to StatusNet. This way we can "gain" some 
                 // information during shortening of potential links but do not 
                 // shorten all the links in a 200000 character long essay.
-                $tmp = substr($b['body'], 0, 2*$max_char);
+                if (! $b['title']=='') {
+                    $tmp = $b['title'] . ' : '. $b['body'];
+                    $tmp = substr($tmp, 0, 4*$max_char);
+                } else {
+                    $tmp = substr($b['body'], 0, 3*$max_char);
+                }
                 // if [url=bla][img]blub.png[/img][/url] get blub.png
                 $tmp = preg_replace( '/\[url\=(https?\:\/\/[a-zA-Z0-9\:\/\-\?\&\;\.\=\_\~\#\%\$\!\+\,]+)\]\[img\](\\w+.*?)\\[\\/img\]\\[\\/url\]/i', '$2', $tmp);
                 // preserve links to images, videos and audios
@@ -435,11 +448,13 @@ function statusnet_post_hook(&$a,&$b) {
                 $tmp = preg_replace( '/\[\\/?youtube(\\s+.*?\]|\])/i', '', $tmp);
                 $tmp = preg_replace( '/\[\\/?vimeo(\\s+.*?\]|\])/i', '', $tmp);
                 $tmp = preg_replace( '/\[\\/?audio(\\s+.*?\]|\])/i', '', $tmp);
+                $linksenabled = get_pconfig($b['uid'],'statusnet','post_taglinks');
                 // if a #tag is linked, don't send the [url] over to SN
-                //   this is commented out by default as it means backlinks
-                //   to friendica, if you don't like this feel free to
-                //   uncomment the following line
-//                $tmp = preg_replace( '/#\[url\=(\w+.*?)\](\w+.*?)\[\/url\]/i', '#$2', $tmp);
+                // that is, don't send if the option is not set in the 
+                // connector settings
+                if ($linksenabled=='0') {
+                    $tmp = preg_replace( '/#\[url\=(\w+.*?)\](\w+.*?)\[\/url\]/i', '#$2', $tmp);
+                }
                 // preserve links to webpages
                 $tmp = preg_replace( '/\[url\=(https?\:\/\/[a-zA-Z0-9\:\/\-\?\&\;\.\=\_\~\#\%\$\!\+\,]+)\](\w+.*?)\[\/url\]/i', '$2 $1', $tmp);
                 $tmp = preg_replace( '/\[bookmark\=(https?\:\/\/[a-zA-Z0-9\:\/\-\?\&\;\.\=\_\~\#\%\$\!\+\,]+)\](\w+.*?)\[\/bookmark\]/i', '$2 $1', $tmp);
@@ -465,7 +480,13 @@ function statusnet_post_hook(&$a,&$b) {
                        $shortlink = short_link( $b['plink'] );
                        // the new message will be shortened such that "... $shortlink"
                        // will fit into the character limit
-                       $msg = substr($msg, 0, $max_char-strlen($shortlink)-4);
+                       $msg = nl2br(substr($msg, 0, $max_char-strlen($shortlink)-4));
+                        $msg = str_replace(array('<br>','<br />'),' ',$msg);
+                        $e = explode(' ', $msg);
+                        //  remove the last word from the cut down message to 
+                        //  avoid sending cut words to the MicroBlog
+                        array_pop($e);
+                        $msg = implode(' ', $e);
                        $msg .= '... ' . $shortlink;
                }
                // and now tweet it :-)
index 18416d1f638db3eeebfe9077aa1b999d01bcfad8..52a05cc6600b304661107df14cdf29825de91d5c 100755 (executable)
Binary files a/twitter.tgz and b/twitter.tgz differ
index 99edf0d303dbc23506aed593f7002d44cbeba5d2..12bb6664691b695bee8921e98637404784bb7330 100755 (executable)
@@ -1,5 +1,6 @@
 ____ Twitter Plugin ____
 By Tobias Diekershoff
+   http://diekershoff.homeunix.net/friendika/profile/tobias
    tobias.diekershoff(at)gmx.net
 
 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@@ -47,18 +48,31 @@ ___ Configuration ___
 
 __ Global Configuration __
 
+If you enabled an administrator account, please use the admin panel to configure
+the Twitter relay. If you for any reason prefer to use a configuration file instead 
+of the admin panels, please refer to the Alternative Configuration below. 
+
+Activate the plugin from the plugins section of your admin panel.  When you have
+done so, add your consumer key and consumer secret in the settings section of the 
+plugin page.
+
+When this is done your user can now configure their Twitter connection at
+"Settings -> Connector Settings" and enable the forwarding of their *public*
+messages to Twitter.
+
+__ Alternative Configuration __
+
 To activate this addon add @twitter@ to the list of active addons in your
 .htconfig.php file 
-    $a->config['system']['addon'] = "twitter, ..."
+
+$a->config['system']['addon'] = "twitter, ..."
+
 Afterwards you need to add your OAuth consumer key / secret pair to it by
 adding the following two lines
 
 $a->config['twitter']['consumerkey'] = 'your consumer KEY here';
 $a->config['twitter']['consumersecret'] = 'your consumer SECRET here';
 
-When this is done your user can now configure their Twitter connection at
-"Settings -> Plugin Settings" and enable the forwarding of their *public*
-messages to Twitter.
 
 __ User Configuration __
 
@@ -75,3 +89,4 @@ on the "Plugin Settings" page displaying two check boxes. One to enable/disable
 the forwarding of *all public* postings to Twitter and one to clear the
 personal configuration from the Twitter credentials.
 
+
index 899cfd17320ecce642ddaeab1a3a51c8404d4f9a..75747979eb952a9c07b442ea8d5e330cee0912e5 100755 (executable)
@@ -12,7 +12,7 @@
 }
 #twitter-disconnect-label {
        float: left;
-       width: 200px;
+       width: 250px;
        margin-bottom: 25px;
 }
 
 }
 #twitter-enable-label {
        float: left;
-       width: 200px;
+       width: 250px;
        margin-bottom: 5px;
 }
+#twitter-default-label {
+       float: left;
+       width: 250px;
+}
+#twitter-sendtaglinks-label {
+        float: left;
+        width: 250px;
+        margin-bottom: 25px;
+}
 
 #twitter-checkbox {
        float: left;
 }
 #twitter-pin-label {
        float: left;
-       width: 200px;
+       width: 250px;
        margin-bottom: 25px;
 }
 
index 4f4d72808bc3c4aae3aab149138a407493bd825e..32b4980f55a2df4ebba7486150a29b1cc9729d5f 100755 (executable)
@@ -2,8 +2,8 @@
 /**
  * Name: Twitter Connector
  * Description: Relay public postings to a connected Twitter account
- * Version: 1.0.2
- * Author: Tobias Diekershoff <https://diekershoff.homeunix.net/friendika/profile/tobias>
+ * Version: 1.0.3
+ * Author: Tobias Diekershoff <http://diekershoff.homeunix.net/friendika/profile/tobias>
  */
 
 
@@ -93,6 +93,7 @@ function twitter_settings_post ($a,$post) {
                 del_pconfig( local_user(), 'twitter', 'oauthsecret'  );  
                 del_pconfig( local_user(), 'twitter', 'post' );
                 del_pconfig( local_user(), 'twitter', 'post_by_default' );
+                del_pconfig( local_user(), 'twitter', 'post_taglinks');
        } else {
        if (isset($_POST['twitter-pin'])) {
                //  if the user supplied us with a PIN from Twitter, let the magic of OAuth happen
@@ -109,6 +110,7 @@ function twitter_settings_post ($a,$post) {
                set_pconfig(local_user(),'twitter', 'oauthtoken',  $token['oauth_token']);
                set_pconfig(local_user(),'twitter', 'oauthsecret', $token['oauth_token_secret']);
                 set_pconfig(local_user(),'twitter', 'post', 1);
+                set_pconfig(local_user(),'twitter', 'post_taglinks', 1);
                 //  reload the Addon Settings page, if we don't do it see Bug #42
                 goaway($a->get_baseurl().'/settings/connectors');
        } else {
@@ -116,6 +118,7 @@ function twitter_settings_post ($a,$post) {
                //  to post a tweet for every new __public__ posting to the wall
                set_pconfig(local_user(),'twitter','post',intval($_POST['twitter-enable']));
                 set_pconfig(local_user(),'twitter','post_by_default',intval($_POST['twitter-default']));
+                set_pconfig(local_user(),'twitter','post_taglinks',intval($_POST['twitter-sendtaglinks']));
                 info( t('Twitter settings updated.') . EOL);
        }}
 }
@@ -136,6 +139,8 @@ function twitter_settings(&$a,&$s) {
        $checked = (($enabled) ? ' checked="checked" ' : '');
         $defenabled = get_pconfig(local_user(),'twitter','post_by_default');
        $defchecked = (($defenabled) ? ' checked="checked" ' : '');
+        $linksenabled = get_pconfig(local_user(),'twitter','post_taglinks');
+        $linkschecked = (($linksenabled) ? ' checked="checked" ' : '');
 
        $s .= '<div class="settings-block">';
        $s .= '<h3>'. t('Twitter Posting Settings') .'</h3>';
@@ -192,6 +197,9 @@ function twitter_settings(&$a,&$s) {
                         $s .= '<div class="clear"></div>';
                         $s .= '<label id="twitter-default-label" for="twitter-default">'. t('Send public postings to Twitter by default') .'</label>';
                         $s .= '<input id="twitter-default" type="checkbox" name="twitter-default" value="1" ' . $defchecked . '/>';
+                       $s .= '<div class="clear"></div>';
+                        $s .= '<label id="twitter-sendtaglinks-label" for="twitter-sendtaglinks">'.t('Send #tag links to Twitter').'</label>';
+                        $s .= '<input id="twitter-sendtaglinks" type="checkbox" name="twitter-sendtaglinks" value="1" '. $linkschecked . '/>';
                        $s .= '</div><div class="clear"></div>';
 
                        $s .= '<div id="twitter-disconnect-wrapper">';
@@ -291,7 +299,12 @@ function twitter_post_hook(&$a,&$b) {
                 // we can later send to Twitter. This way we can "gain" some 
                 // information during shortening of potential links but do not 
                 // shorten all the links in a 200000 character long essay.
-                $tmp = substr($b['body'], 0, 2*$max_char);
+                if (! $b['title']=='') {
+                    $tmp = $b['title'] . ' : '. $b['body'];
+                    $tmp = substr($tmp, 0, 4*$max_char);
+                } else {
+                    $tmp = substr($b['body'], 0, 3*$max_char);
+                }
                 // if [url=bla][img]blub.png[/img][/url] get blub.png
                 $tmp = preg_replace( '/\[url\=(https?\:\/\/[a-zA-Z0-9\:\/\-\?\&\;\.\=\_\~\#\%\$\!\+\,]+)\]\[img\](\\w+.*?)\\[\\/img\]\\[\\/url\]/i', '$2', $tmp);
                 // preserve links to images, videos and audios
@@ -301,12 +314,13 @@ function twitter_post_hook(&$a,&$b) {
                 $tmp = preg_replace( '/\[\\/?youtube(\\s+.*?\]|\])/i', '', $tmp);
                 $tmp = preg_replace( '/\[\\/?vimeo(\\s+.*?\]|\])/i', '', $tmp);
                 $tmp = preg_replace( '/\[\\/?audio(\\s+.*?\]|\])/i', '', $tmp);
+                $linksenabled = get_pconfig($b['uid'],'twitter','post_taglinks');
                 // if a #tag is linked, don't send the [url] over to SN
-                //   this is commented out by default as it means backlinks
-                //   to friendica, if you don't like this feel free to
-                //   uncomment the following line
-//                $tmp = preg_replace( '/#\[url\=(\w+.*?)\](\w+.*?)\[\/url\]/i', '#$2', $tmp);
-                // preserve links to webpages
+                // that is, don't send if the option is not set in the 
+                // connector settings
+                if ($linksenabled=='0') {
+                    $tmp = preg_replace( '/#\[url\=(\w+.*?)\](\w+.*?)\[\/url\]/i', '#$2', $tmp);
+                }
                 $tmp = preg_replace( '/\[url\=(https?\:\/\/[a-zA-Z0-9\:\/\-\?\&\;\.\=\_\~\#\%\$\!\+\,]+)\](\w+.*?)\[\/url\]/i', '$2 $1', $tmp);
                 $tmp = preg_replace( '/\[bookmark\=(https?\:\/\/[a-zA-Z0-9\:\/\-\?\&\;\.\=\_\~\#\%\$\!\+\,]+)\](\w+.*?)\[\/bookmark\]/i', '$2 $1', $tmp);
                 // find all http or https links in the body of the entry and 
@@ -331,7 +345,13 @@ function twitter_post_hook(&$a,&$b) {
                        $shortlink = short_link( $b['plink'] );
                        // the new message will be shortened such that "... $shortlink"
                        // will fit into the character limit
-                       $msg = substr($msg, 0, $max_char-strlen($shortlink)-4);
+                       $msg = nl2br(substr($msg, 0, $max_char-strlen($shortlink)-4));
+                        $msg = str_replace(array('<br>','<br />'),' ',$msg);
+                        $e = explode(' ', $msg);
+                        //  remove the last word from the cut down message to 
+                        //  avoid sending cut words to the MicroBlog
+                        array_pop($e);
+                        $msg = implode(' ', $e);
                        $msg .= '... ' . $shortlink;
                }
                // and now tweet it :-)
index 4717ab05bf134e9d2d32822543342315101a8dbe..2ace240a6fef124011513f485166f93df404300f 100644 (file)
Binary files a/viewsrc.tgz and b/viewsrc.tgz differ
index e39fe8a6a7215b959ba339bc7789279405509a72..f165e9c5353ba73dd63bf2537bb691074eccb0d7 100644 (file)
 
 function viewsrc_install() {
        register_hook('item_photo_menu', 'addon/viewsrc/viewsrc.php', 'viewsrc_item_photo_menu');
+       register_hook('page_end', 'addon/viewsrc/viewsrc.php', 'viewsrc_page_end');
 }
 
 
 function viewsrc_uninstall() {
        unregister_hook('item_photo_menu', 'addon/viewsrc/viewsrc.php', 'viewsrc_item_photo_menu');
+       unregister_hook('page_end', 'addon/viewsrc/viewsrc.php', 'viewsrc_page_end');
+
 }
 
+function viewsrc_page_end(&$a, &$o){
+       $a->page['htmlhead'] .= <<< EOS
+       <script>
+               $(function(){
+                       $('a[href*="/viewsrc/"]').fancybox();
+               });
+       </script>
+EOS;
+}
 
 function viewsrc_item_photo_menu(&$a,&$b) {
-       if(! local_user())
+       if((! local_user()) || (local_user() != $b['item']['uid']))
                return;
        $b['menu'] = array_merge( array( t('View Source') => $a->get_baseurl() . '/viewsrc/'. $b['item']['id']), $b['menu']);
 
index c1d96048590adb215747e7cb8e85518b125f8528..47d5f588c285e211f26093c1d99cdccb23bdc093 100755 (executable)
Binary files a/widgets.tgz and b/widgets.tgz differ
index 27cabfd698cdec6580ee39d9c99b2ff0d8699fbd..47a6e48a6fe6deea6903fb25b3d8f4244206112a 100755 (executable)
@@ -19,7 +19,8 @@ function widgets_uninstall() {
 
 
 function widgets_settings_post(){
-       
+       if(! local_user())
+               return;
        if (isset($_POST['widgets-submit'])){
                del_pconfig(local_user(), 'widgets', 'key');
                
index 221943355a96060e6f4205754d05e37a9ec5c826..b07bf6e0d9ac6965afcc92cf5dfaa0204063937d 100755 (executable)
Binary files a/wppost.tgz and b/wppost.tgz differ
index 264a342c0c0733c5934b218bb0f9646984e3257b..28e4e36946af907978a89f16acf6045e1470f60d 100755 (executable)
@@ -168,6 +168,24 @@ function wppost_send(&$a,&$b) {
        if($wp_username && $wp_password && $wp_blog) {
 
                require_once('include/bbcode.php');
+               require_once('include/html2plain.php');
+
+               // If the title is empty then try to guess
+               if ($b['title'] == '') {
+                       // Take the description from the bookmark
+                       if(preg_match("/\[bookmark\=([^\]]*)\](.*?)\[\/bookmark\]/is",$b['body'],$matches))
+                               $b['title'] = $matches[2];
+
+                       // If no bookmark is found then take the first line
+                       if ($b['title'] == '') {
+                               $title = html2plain(bbcode($b['body']), 0, true);
+                               $pos = strpos($title, "\n");
+                               if (($pos == 0) or ($pos > 60))
+                                       $pos = 60;
+
+                               $b['title'] = substr($title, 0, $pos);
+                       }
+               }
 
                $title = '<title>' . (($b['title']) ? $b['title'] : t('Post from Friendica')) . '</title>';
                $post = $title . bbcode($b['body']);