From 9fd7bf20943732c0cec16f9e6f6c0772013d6739 Mon Sep 17 00:00:00 2001 From: Fabio Comuni Date: Thu, 7 Jul 2011 14:07:11 +0200 Subject: [PATCH] Community Home addon --- communityhome/README.md | 11 +++ communityhome/communityhome.css | 21 +++++ communityhome/communityhome.php | 152 +++++++++++++++++++++++++++++++ communityhome/directory_item.tpl | 10 ++ 4 files changed, 194 insertions(+) create mode 100644 communityhome/README.md create mode 100644 communityhome/communityhome.css create mode 100644 communityhome/communityhome.php create mode 100644 communityhome/directory_item.tpl diff --git a/communityhome/README.md b/communityhome/README.md new file mode 100644 index 00000000..3cf610ec --- /dev/null +++ b/communityhome/README.md @@ -0,0 +1,11 @@ +Community Home +-------------- + +This plugin overwrites the default home page shown to not logged users. +On sidebar there are the login form, last ten users (if they have +choosed to be in site directory), last ten public photos and last ten +"likes" sent by a site user or about a site user's item + +In main content is shown the community stream. This plugin doesn't +honour your community page visibility site setting: the community +stream is shown also if you have choose to not show the community page. diff --git a/communityhome/communityhome.css b/communityhome/communityhome.css new file mode 100644 index 00000000..73e7b59f --- /dev/null +++ b/communityhome/communityhome.css @@ -0,0 +1,21 @@ +aside #label-login-name, +aside #login-name, +aside #label-login-password, +aside #login-password { + float: none !important; +} +aside #login-name-end, +aside #login-password-end, +aside #login-extra-end, +aside #login-submit-end, +aside #login-extra-filler { + float: none; height: 5px; + margin: 0px; +} +aside #login-submit-button { margin-left: 100px; } +aside .items-wrapper, +aside #login-extra-links { overflow: auto; width: 100%; } +aside .directory-item { width: 55px; height: 55px; } +aside .directory-photo { margin: 0px; } +aside .directory-photo-img { max-width: 48px; max-height: 48px; } +aside #likes { margin: 0px; padding: 0px; list-style: none; } diff --git a/communityhome/communityhome.php b/communityhome/communityhome.php new file mode 100644 index 00000000..99d507a4 --- /dev/null +++ b/communityhome/communityhome.php @@ -0,0 +1,152 @@ + + */ + + +require_once('mod/community.php'); + + +function communityhome_install() { + register_hook('home_content', 'addon/communityhome/communityhome.php', 'communityhome_home'); + logger("installed communityhome"); +} + +function communityhome_uninstall() { + unregister_hook('home_content', 'addon/communityhome/communityhome.php', 'communityhome_home'); + logger("removed communityhome"); +} + +function communityhome_home(&$a, &$o){ + // custom css + $a->page['htmlhead'] .= ''; + + // login form + $aside .= "

". t('Login'). "

"; + $aside .= login(($a->config['register_policy'] == REGISTER_CLOSED) ? false : true); + + // last 10 users + $aside .= "

". t('Last users'). "

"; + $sql_extra = ""; + $publish = (get_config('system','publish_all') ? '' : " AND `publish` = 1 " ); + $order = " ORDER BY `register_date` DESC "; + + $r = q("SELECT `profile`.*, `profile`.`uid` AS `profile_uid`, `user`.`nickname`, `user`.`timezone` + FROM `profile` LEFT JOIN `user` ON `user`.`uid` = `profile`.`uid` + WHERE `is-default` = 1 $publish AND `user`.`blocked` = 0 $sql_extra $order LIMIT %d , %d ", + 0, + 10 + ); + $aside .= "
"; + if(count($r)) { + + $tpl = file_get_contents( dirname(__file__).'/directory_item.tpl'); + + $photo = 'thumb'; + + foreach($r as $rr) { + $profile_link = $a->get_baseurl() . '/profile/' . ((strlen($rr['nickname'])) ? $rr['nickname'] : $rr['profile_uid']); + + $entry = replace_macros($tpl,array( + '$id' => $rr['id'], + '$profile-link' => $profile_link, + '$photo' => $rr[$photo], + '$alt-text' => $rr['name'], + )); + + $aside .= $entry; + + } + } + $aside .= "
"; + + // last 10 photos + $aside .= "

". t('Last photos'). "

"; + $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` + WHERE `profile`=0 AND `height` NOT IN ( 175, 80, 48) + AND `allow_cid`='' AND `allow_gid`='' AND `deny_cid`='' AND `deny_gid`='' GROUP BY `resource-id`) AS `t1` + INNER JOIN `photo` ON `photo`.`resource-id`=`t1`.`resource-id` AND `photo`.`scale` = `t1`.`maxscale`, + `user` + WHERE `user`.`uid` = `photo`.`uid` + AND `user`.`blockwall`=0 + ORDER BY `photo`.`edited` DESC + LIMIT 0, 10"); + + $aside .= "
"; + if(count($r)) { + $tpl = file_get_contents( dirname(__file__).'/directory_item.tpl'); + foreach($r as $rr) { + $photo_page = $a->get_baseurl() . '/photos/' . $rr['nickname'] . '/image/' . $rr['resource-id']; + $photo_url = $a->get_baseurl() . '/photo/' . $rr['resource-id'] . '-' . $rr['scale'] .'.jpg'; + + $entry = replace_macros($tpl,array( + '$id' => $rr['id'], + '$profile-link' => $photo_page, + '$photo' => $photo_url, + '$alt-text' => $rr['username']." : ".$rr['desc'], + )); + + $aside .= $entry; + } + } + $aside .= "
"; + + // last 10 liked items + $aside .= "

". t('Last likes'). "

"; + $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` + FROM `item` WHERE `verb`='http://activitystrea.ms/schema/1.0/like' GROUP BY `parent-uri` ORDER BY `created` DESC) AS T1 + INNER JOIN `item` ON `item`.`uri`=`T1`.`parent-uri` + WHERE `T1`.`liker-link` LIKE '%s%%' OR `item`.`author-link` LIKE '%s%%' + GROUP BY `uri` + ORDER BY `T1`.`created` DESC + LIMIT 0,10", + $a->get_baseurl(),$a->get_baseurl() + ); + + $aside .= ""; + + + $a->page['aside'] = $aside; + + $o = '

' . ((x($a->config,'sitename')) ? sprintf( t("Welcome to %s") ,$a->config['sitename']) : "" ) . '

'; + + $oldset = get_config('system','no_community_page'); + set_config('system','no_community_page', false); + $o .= community_content($a,1); + set_config('system','no_community_page', $oldset); +} diff --git a/communityhome/directory_item.tpl b/communityhome/directory_item.tpl new file mode 100644 index 00000000..db1936e4 --- /dev/null +++ b/communityhome/directory_item.tpl @@ -0,0 +1,10 @@ + +
+
+
+ + $alt-text + +
+
+