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";
}
-#ljpost-enable-label, #ljpost-username-label, #ljpost-password-label, #ljpost-bydefault-label {
+#dwpost-enable-label, #dwpost-username-label, #dwpost-password-label, #dwpost-bydefault-label {
float: left;
width: 200px;
margin-top: 10px;
}
-#ljpost-checkbox, #ljpost-username, #ljpost-password, #ljpost-bydefault {
+#dwpost-checkbox, #dwpost-username, #dwpost-password, #dwpost-bydefault {
float: left;
margin-top: 10px;
}
-#ljpost-submit {
+#dwpost-submit {
margin-top: 15px;
-}
\ No newline at end of file
+}
* Name: Dreamwidth Post Connector
* Description: Post to dreamwidth
* Version: 1.0
- * Author: Tony Baldwin <http://tonybaldwin.me/friendica/profile/tony>
+ * Author: Tony Baldwin <https://free-haven.org/profile/tony>
* Author: Michael Johnston
* Author: Cat Gray <https://free-haven.org/profile/catness>
*/
logger('dwpost: data: ' . $xml, LOGGER_DATA);
if($dw_blog !== 'test')
- $x = post_url($dw_blog,$xml);
+ $x = post_url($dw_blog,$xml,array("Content-Type: text/xml"));
logger('posted to dreamwidth: ' . ($x) ? $x : '', LOGGER_DEBUG);
}
* 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
+ * - Implement a configuration option to set the polling interval system-wide
+ */
define('FACEBOOK_MAXPOSTLEN', 420);
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
}
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();
}
$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);
+ }
}
}
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 an permission issue?\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'
dbesc('fb::' . $retj->id),
intval($b['id'])
);
+ del_pconfig($b['uid'], 'facebook', 'session_expired_mailsent');
}
else {
if(! $likes) {
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);
+ if (!get_pconfig($b['uid'], 'facebook', 'session_expired_mailsent')) {
+ 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'],
+ ));
+
+ set_pconfig($b['uid'], 'facebook', 'session_expired_mailsent', '1');
+ }
+ }
}
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');
+ }
+}
function facebook_post_local(&$a,&$b) {
$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);
- logger('fb_consume_stream: feed: ' . print_r($j,true), LOGGER_DATA);
- fb_consume_stream($uid,$j,false);
+ if (isset($j->data)) {
+ logger('fb_consume_stream: feed: ' . print_r($j,true), LOGGER_DATA);
+ fb_consume_stream($uid,$j,false);
+ } else {
+ logger('fb_consume_stream: feed: got no data from Facebook: ' . print_r($j,true), LOGGER_NORMAL);
+ }
}
}
$a = get_app();
- $user = q("SELECT `nickname`, `blockwall` FROM `user` WHERE `uid` = %d AND `account_expired` = 0 LIMIT 1",
+ $user = q("SELECT * FROM `user` WHERE `uid` = %d AND `account_expired` = 0 LIMIT 1",
intval($uid)
);
if(! count($user))
if($entry->privacy && $entry->privacy->value !== 'EVERYONE') {
$datarray['private'] = 1;
- $datarray['allow_cid'] = '<' . $uid . '>';
+ $datarray['allow_cid'] = '<' . $self[0]['id'] . '>';
}
if(trim($datarray['body']) == '') {
$cmntdata['author-avatar'] = 'https://graph.facebook.com/' . $cmnt->from->id . '/picture';
$cmntdata['body'] = $cmnt->message;
$item = item_store($cmntdata);
+
+ $myconv = q("SELECT `author-link`, `author-avatar`, `parent` FROM `item` WHERE `parent-uri` = '%s' AND `uid` = %d AND `parent` != 0 ",
+ dbesc($orig_post['uri']),
+ intval($uid)
+ );
+
+ if(count($myconv)) {
+ $importer_url = $a->get_baseurl() . '/profile/' . $user[0]['nickname'];
+
+ foreach($myconv as $conv) {
+
+ // now if we find a match, it means we're in this conversation
+
+ if(! link_compare($conv['author-link'],$importer_url))
+ continue;
+
+ require_once('include/enotify.php');
+
+ $conv_parent = $conv['parent'];
+
+ notification(array(
+ 'type' => NOTIFY_COMMENT,
+ 'notify_flags' => $user[0]['notify-flags'],
+ 'language' => $user[0]['language'],
+ 'to_name' => $user[0]['username'],
+ 'to_email' => $user[0]['email'],
+ 'uid' => $user[0]['uid'],
+ 'item' => $cmntdata,
+ 'link' => $a->get_baseurl() . '/display/' . $importer['nickname'] . '/' . $item,
+ 'source_name' => $cmntdata['author-name'],
+ 'source_link' => $cmntdata['author-link'],
+ 'source_photo' => $cmntdata['author-avatar'],
+ 'verb' => ACTIVITY_POST,
+ 'otype' => 'item',
+ 'parent' => $conv_parent,
+ ));
+
+ // only send one notification
+ break;
+ }
+ }
}
}
}
--- /dev/null
+
+
+
+#frown-enable-label {
+ float: left;
+ width: 200px;
+ margin-bottom: 25px;
+}
+
+#frown-checkbox {
+ float: left;
+}
+
+
--- /dev/null
+<?php
+/**
+ * Name: Frown
+ * Description: Disable graphical smilies
+ * Version: 1.0
+ * Author: Mike Macgirvin <http://macgirvin.com/profile/mike>
+ *
+ *
+ */
+
+
+function frown_install() {
+
+ register_hook('plugin_settings', 'addon/frown/frown.php', 'frown_settings');
+ register_hook('plugin_settings_post', 'addon/frown/frown.php', 'frown_settings_post');
+
+ logger("installed frown");
+}
+
+
+function frown_uninstall() {
+
+ unregister_hook('plugin_settings', 'addon/frown/frown.php', 'frown_settings');
+ unregister_hook('plugin_settings_post', 'addon/frown/frown.php', 'frown_settings_post');
+
+
+ logger("removed frown");
+}
+
+
+
+/**
+ *
+ * Callback from the settings post function.
+ * $post contains the $_POST array.
+ * We will make sure we've got a valid user account
+ * and if so set our configuration setting for this person.
+ *
+ */
+
+function frown_settings_post($a,$post) {
+ if(! local_user() || (! x($_POST,'frown-submit')))
+ return;
+ set_pconfig(local_user(),'system','no_smilies',intval($_POST['frown']));
+
+ info( t('Frown settings updated.') . EOL);
+}
+
+
+/**
+ *
+ * Called from the Plugin Setting form.
+ * Add our own settings info to the page.
+ *
+ */
+
+
+
+function frown_settings(&$a,&$s) {
+
+ if(! local_user())
+ return;
+
+ /* Add our stylesheet to the page so we can make our settings look nice */
+
+ $a->page['htmlhead'] .= '<link rel="stylesheet" type="text/css" href="' . $a->get_baseurl() . '/addon/frown/frown.css' . '" media="all" />' . "\r\n";
+
+ /* Get the current state of our config variable */
+
+ $enabled = get_pconfig(local_user(),'system','no_smilies');
+ $checked = (($enabled) ? ' checked="checked" ' : '');
+
+ /* Add some HTML to the existing form */
+
+ $s .= '<div class="settings-block">';
+ $s .= '<h3>' . t('Frown Settings') . '</h3>';
+ $s .= '<div id="frown-enable-wrapper">';
+ $s .= '<label id="frown-enable-label" for="frown-checkbox">' . t('Disable graphical smilies') . '</label>';
+ $s .= '<input id="frown-checkbox" type="checkbox" name="frown" value="1" ' . $checked . '/>';
+ $s .= '</div><div class="clear"></div>';
+
+ /* provide a submit button */
+
+ $s .= '<div class="settings-submit-wrapper" ><input type="submit" name="frown-submit" class="settings-submit" value="' . t('Submit') . '" /></div></div>';
+
+}
--- /dev/null
+
+#ijpost-enable-label, #ijpost-username-label, #ijpost-password-label, #ijpost-bydefault-label {
+float: left;
+width: 200px;
+margin-top: 10px;
+}
+
+#ijpost-checkbox, #ijpost-username, #ijpost-password, #ijpost-bydefault {
+float: left;
+margin-top: 10px;
+}
+
+#ijpost-submit {
+margin-top: 15px;
+}
--- /dev/null
+<?php
+
+/**
+ * Name: Insanejournal Post Connector
+ * Description: Post to Insanejournal
+ * Version: 1.0
+ * Author: Tony Baldwin <https://free-haven.org/profile/tony>
+ * Author: Michael Johnston
+ * Author: Cat Gray <https://free-haven.org/profile/catness>
+ */
+
+function ijpost_install() {
+ register_hook('post_local', 'addon/ijpost/ijpost.php', 'ijpost_post_local');
+ register_hook('notifier_normal', 'addon/ijpost/ijpost.php', 'ijpost_send');
+ register_hook('jot_networks', 'addon/ijpost/ijpost.php', 'ijpost_jot_nets');
+ register_hook('connector_settings', 'addon/ijpost/ijpost.php', 'ijpost_settings');
+ register_hook('connector_settings_post', 'addon/ijpost/ijpost.php', 'ijpost_settings_post');
+
+}
+function ijpost_uninstall() {
+ unregister_hook('post_local', 'addon/ijpost/ijpost.php', 'ijpost_post_local');
+ unregister_hook('notifier_normal', 'addon/ijpost/ijpost.php', 'ijpost_send');
+ unregister_hook('jot_networks', 'addon/ijpost/ijpost.php', 'ijpost_jot_nets');
+ unregister_hook('connector_settings', 'addon/ijpost/ijpost.php', 'ijpost_settings');
+ unregister_hook('connector_settings_post', 'addon/ijpost/ijpost.php', 'ijpost_settings_post');
+
+}
+
+
+function ijpost_jot_nets(&$a,&$b) {
+ if(! local_user())
+ return;
+
+ $ij_post = get_pconfig(local_user(),'ijpost','post');
+ if(intval($ij_post) == 1) {
+ $ij_defpost = get_pconfig(local_user(),'ijpost','post_by_default');
+ $selected = ((intval($ij_defpost) == 1) ? ' checked="checked" ' : '');
+ $b .= '<div class="profile-jot-net"><input type="checkbox" name="ijpost_enable" ' . $selected . ' value="1" /> '
+ . t('Post to Insanejournal') . '</div>';
+ }
+}
+
+
+function ijpost_settings(&$a,&$s) {
+
+ if(! local_user())
+ return;
+
+ /* Add our stylesheet to the page so we can make our settings look nice */
+
+ $a->page['htmlhead'] .= '<link rel="stylesheet" type="text/css" href="' . $a->get_baseurl() . '/addon/ijpost/ijpost.css' . '" media="all" />' . "\r\n";
+
+ /* Get the current state of our config variables */
+
+ $enabled = get_pconfig(local_user(),'ijpost','post');
+
+ $checked = (($enabled) ? ' checked="checked" ' : '');
+
+ $def_enabled = get_pconfig(local_user(),'ijpost','post_by_default');
+
+ $def_checked = (($def_enabled) ? ' checked="checked" ' : '');
+
+ $ij_username = get_pconfig(local_user(), 'ijpost', 'ij_username');
+ $ij_password = get_pconfig(local_user(), 'ijpost', 'ij_password');
+
+
+ /* Add some HTML to the existing form */
+
+ $s .= '<div class="settings-block">';
+ $s .= '<h3>' . t('InsaneJournal Post Settings') . '</h3>';
+ $s .= '<div id="ijpost-enable-wrapper">';
+ $s .= '<label id="ijpost-enable-label" for="ijpost-checkbox">' . t('Enable InsaneJournal Post Plugin') . '</label>';
+ $s .= '<input id="ijpost-checkbox" type="checkbox" name="ijpost" value="1" ' . $checked . '/>';
+ $s .= '</div><div class="clear"></div>';
+
+ $s .= '<div id="ijpost-username-wrapper">';
+ $s .= '<label id="ijpost-username-label" for="ijpost-username">' . t('InsaneJournal username') . '</label>';
+ $s .= '<input id="ijpost-username" type="text" name="ij_username" value="' . $ij_username . '" />';
+ $s .= '</div><div class="clear"></div>';
+
+ $s .= '<div id="ijpost-password-wrapper">';
+ $s .= '<label id="ijpost-password-label" for="ijpost-password">' . t('InsaneJournal password') . '</label>';
+ $s .= '<input id="ijpost-password" type="password" name="ij_password" value="' . $ij_password . '" />';
+ $s .= '</div><div class="clear"></div>';
+
+ $s .= '<div id="ijpost-bydefault-wrapper">';
+ $s .= '<label id="ijpost-bydefault-label" for="ijpost-bydefault">' . t('Post to InsaneJournal by default') . '</label>';
+ $s .= '<input id="ijpost-bydefault" type="checkbox" name="ij_bydefault" value="1" ' . $def_checked . '/>';
+ $s .= '</div><div class="clear"></div>';
+
+ /* provide a submit button */
+
+ $s .= '<div class="settings-submit-wrapper" ><input type="submit" id="ijpost-submit" name="ijpost-submit" class="settings-submit" value="' . t('Submit') . '" /></div></div>';
+
+}
+
+
+function ijpost_settings_post(&$a,&$b) {
+
+ if(x($_POST,'ijpost-submit')) {
+
+ set_pconfig(local_user(),'ijpost','post',intval($_POST['ijpost']));
+ set_pconfig(local_user(),'ijpost','post_by_default',intval($_POST['ij_bydefault']));
+ set_pconfig(local_user(),'ijpost','ij_username',trim($_POST['ij_username']));
+ set_pconfig(local_user(),'ijpost','ij_password',trim($_POST['ij_password']));
+
+ }
+
+}
+
+function ijpost_post_local(&$a,&$b) {
+
+ // This can probably be changed to allow editing by pointing to a different API endpoint
+
+ if($b['edit'])
+ return;
+
+ if((! local_user()) || (local_user() != $b['uid']))
+ return;
+
+ if($b['private'] || $b['parent'])
+ return;
+
+ $ij_post = intval(get_pconfig(local_user(),'ijpost','post'));
+
+ $ij_enable = (($ij_post && x($_REQUEST,'ijpost_enable')) ? intval($_REQUEST['ijpost_enable']) : 0);
+
+ if($_REQUEST['api_source'] && intval(get_pconfig(local_user(),'ijpost','post_by_default')))
+ $ij_enable = 1;
+
+ if(! $ij_enable)
+ return;
+
+ if(strlen($b['postopts']))
+ $b['postopts'] .= ',';
+ $b['postopts'] .= 'ijpost';
+}
+
+
+
+
+function ijpost_send(&$a,&$b) {
+
+ if($b['deleted'] || $b['private'] || ($b['created'] !== $b['edited']))
+ return;
+
+ if(! strstr($b['postopts'],'ijpost'))
+ return;
+
+ if($b['parent'] != $b['id'])
+ return;
+
+ // insanejournal post in the LJ user's timezone.
+ // Hopefully the person's Friendica account
+ // will be set to the same thing.
+
+ $tz = 'UTC';
+
+ $x = q("select timezone from user where uid = %d limit 1",
+ intval($b['uid'])
+ );
+ if($x && strlen($x[0]['timezone']))
+ $tz = $x[0]['timezone'];
+
+ $ij_username = get_pconfig($b['uid'],'ijpost','ij_username');
+ $ij_password = get_pconfig($b['uid'],'ijpost','ij_password');
+ $ij_blog = 'http://www.insanejournal.com/interface/xmlrpc';
+
+ if($ij_username && $ij_password && $ij_blog) {
+
+ require_once('include/bbcode.php');
+ require_once('include/datetime.php');
+
+ $title = $b['title'];
+ $post = bbcode($b['body']);
+ $post = xmlify($post);
+ $tags = ijpost_get_tags($b['tag']);
+
+ $date = datetime_convert('UTC',$tz,$b['created'],'Y-m-d H:i:s');
+ $year = intval(substr($date,0,4));
+ $mon = intval(substr($date,5,2));
+ $day = intval(substr($date,8,2));
+ $hour = intval(substr($date,11,2));
+ $min = intval(substr($date,14,2));
+
+ $xml = <<< EOT
+<?xml version="1.0" encoding="utf-8"?>
+<methodCall><methodName>LJ.XMLRPC.postevent</methodName>
+<params><param>
+<value><struct>
+<member><name>year</name><value><int>$year</int></value></member>
+<member><name>mon</name><value><int>$mon</int></value></member>
+<member><name>day</name><value><int>$day</int></value></member>
+<member><name>hour</name><value><int>$hour</int></value></member>
+<member><name>min</name><value><int>$min</int></value></member>
+<member><name>event</name><value><string>$post</string></value></member>
+<member><name>username</name><value><string>$ij_username</string></value></member>
+<member><name>password</name><value><string>$ij_password</string></value></member>
+<member><name>subject</name><value><string>$title</string></value></member>
+<member><name>lineendings</name><value><string>unix</string></value></member>
+<member><name>ver</name><value><int>1</int></value></member>
+<member><name>props</name>
+<value><struct>
+<member><name>useragent</name><value><string>Friendica</string></value></member>
+<member><name>taglist</name><value><string>$tags</string></value></member>
+</struct></value></member>
+</struct></value>
+</param></params>
+</methodCall>
+
+EOT;
+
+ logger('ijpost: data: ' . $xml, LOGGER_DATA);
+
+ if($ij_blog !== 'test')
+ $x = post_url($ij_blog,$xml,array("Content-Type: text/xml"));
+ logger('posted to insanejournal: ' . ($x) ? $x : '', LOGGER_DEBUG);
+
+ }
+}
+
+function ijpost_get_tags($post)
+{
+ preg_match_all("/\]([^\[#]+)\[/",$post,$matches);
+ $tags = implode(', ',$matches[1]);
+ return $tags;
+}
* Name: IRC Chat Plugin
* Description: add an Internet Relay Chat chatroom
* Version: 1.0
-* Author: tony baldwin <http://tonybaldwin.me>
+* Author: tony baldwin <https://free-haven.org/profile/tony>
*/
+/* enable in admin->plugins
+ * you will then have "irc chatroom" listed at yoursite/apps
+ * and the app will run at yoursite/irc
+ * documentation at http://tonybaldwin.me/hax/doku.php?id=friendica:irc
+ */
function irc_install() {
register_hook('app_menu', 'addon/irc/irc.php', 'irc_app_menu');
$o = '';
- // add the chatroom frame and some html
+/* add the chatroom frame and some html
+ * by altering the "channels=friendica" part of the URL, you can add/remove channels.
+ * At free-haven.org, I have "?channels=friendica,free-haven", for instance, to open #friendica and #free-haven
+ */
$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>
EOT;
* Name: LiveJournal Post Connector
* Description: Post to LiveJournal
* Version: 1.0
- * Author: Tony Baldwin <http://tonybaldwin.me/friendica/profile/tony>
+ * Author: Tony Baldwin <https://free-haven.org/profile/tony>
* Author: Michael Johnston
* Author: Cat Gray <https://free-haven.org/profile/catness>
*/
logger('ljpost: data: ' . $xml, LOGGER_DATA);
if($lj_blog !== 'test')
- $x = post_url($lj_blog,$xml);
+ $x = post_url($lj_blog,$xml,array("Content-Type: text/xml"));
logger('posted to livejournal: ' . ($x) ? $x : '', LOGGER_DEBUG);
}
--- /dev/null
+<?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("Community Pages").'</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'];
+}
+?>
--- /dev/null
+<?php
+/**
+ * Name: Remember OpenID Login
+ * Description: Autologin with last openid used
+ * Version: 1.0
+ * Author: Fabio Comuni <http://kirgroup.com/profile/fabrixxm>
+ */
+
+
+function rememberoid_install(){
+ register_hook('init_1','addon/rememberoid/rememberoid.php','rememberoid_init');
+ register_hook('logging_out','addon/rememberoid/rememberoid.php','rememberoid_logout');
+ register_hook('login_hook','addon/rememberoid/rememberoid.php','rememberoid_form');
+}
+
+function rememberoid_uninstall(){
+ unregister_hook('init_1','addon/rememberoid/rememberoid.php','rememberoid_init');
+ unregister_hook('logging_out','addon/rememberoid/rememberoid.php','rememberoid_logout');
+ unregister_hook('login_hook','addon/rememberoid/rememberoid.php','rememberoid_form');
+}
+
+function rememberoid_init(&$a) {
+ if (x($_COOKIE, "remember_oid") && !x($_SESSION['openid']) && !x($_SESSION,'authenticated') && !x($_POST,'auth-params') && $a->module === 'home' ){
+ $_POST['openid_url'] = $_COOKIE["remember_oid"];
+ $_POST['auth-params'] = 1;
+ }
+ if (x($_POST,'auth-params') && $_POST['openid_url'] && $_POST['openid_url']!="" && $_POST['remember_oid']){
+ setcookie('remember_oid', $_POST['openid_url'], time()+60*60*24*30, "/");
+ }
+}
+
+function rememberoid_logout(&$a) {
+ setcookie("rembember_oid", "", time()-3600);
+}
+
+function rememberoid_form(&$a, &$o){
+ $tpl = get_markup_template("field_checkbox.tpl");
+ $html = replace_macros($tpl, array(
+ '$field' => array('remember_oid', t("Autologin with this OpenId"), false,''),
+ ));
+
+ $o = preg_replace("|<div *id=[\"']login_openid[\"']>|", "<div id='login_openid'>".$html, $o);
+
+}
--- /dev/null
+<?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' . '" />';
+
+
+
+
+}
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())
function widgets_settings_post(){
-
+ if(! local_user())
+ return;
if (isset($_POST['widgets-submit'])){
del_pconfig(local_user(), 'widgets', 'key');