]> git.mxchange.org Git - friendica-addons.git/commitdiff
Community Home addon
authorFabio Comuni <fabrix.xm@gmail.com>
Thu, 7 Jul 2011 12:07:11 +0000 (14:07 +0200)
committerFabio Comuni <fabrix.xm@gmail.com>
Thu, 7 Jul 2011 12:07:11 +0000 (14:07 +0200)
communityhome/README.md [new file with mode: 0644]
communityhome/communityhome.css [new file with mode: 0644]
communityhome/communityhome.php [new file with mode: 0644]
communityhome/directory_item.tpl [new file with mode: 0644]

diff --git a/communityhome/README.md b/communityhome/README.md
new file mode 100644 (file)
index 0000000..3cf610e
--- /dev/null
@@ -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 (file)
index 0000000..73e7b59
--- /dev/null
@@ -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 (file)
index 0000000..99d507a
--- /dev/null
@@ -0,0 +1,152 @@
+<?php
+/**
+ * Name: Community home
+ * Description: Show last community activity in homepage
+ * Version: 1.0
+ * Author: Fabio Comuni <http://kirgroup.com/profile/fabrixxm>
+ */
+
+
+require_once('mod/community.php');
+
+
+function communityhome_install() {
+       register_hook('home_content', 'addon/communityhome/communityhome.php', 'communityhome_home');
+       logger("installed communityhome");
+}
+
+function communityhome_uninstall() {
+       unregister_hook('home_content', 'addon/communityhome/communityhome.php', 'communityhome_home');
+       logger("removed communityhome");
+}
+
+function communityhome_home(&$a, &$o){
+       // custom css
+       $a->page['htmlhead'] .= '<link rel="stylesheet" type="text/css" href="'.$a->get_baseurl().'/addon/communityhome/communityhome.css" media="all" />';
+       
+       // login form
+       $aside .= "<h3>". t('Login'). "</h3>";
+       $aside .= login(($a->config['register_policy'] == REGISTER_CLOSED) ? false : true);
+       
+       // last 10 users
+       $aside .= "<h3>". t('Last users'). "</h3>";
+       $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 .= "<div class='items-wrapper'>";
+       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 .= "</div>";
+       
+       // last 10 photos
+       $aside .= "<h3>". t('Last photos'). "</h3>";
+       $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 .= "<div class='items-wrapper'>";                                
+       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 .= "</div>";
+       
+       // last 10 liked items
+       $aside .= "<h3>". t('Last likes'). "</h3>";
+       $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 .= "<ul id='likes'>";
+       foreach ($r as $rr) {
+               $author  = '<a href="' . $rr['liker-link'] . '">' . $rr['liker'] . '</a>';
+               $objauthor =  '<a href="' . $rr['author-link'] . '">' . $rr['author-name'] . '</a>';
+               
+               //var_dump($rr['verb'],$rr['object-type']); killme();
+               switch($rr['verb']){
+                       case 'http://activitystrea.ms/schema/1.0/post':
+                               switch ($rr['object-type']){
+                                       case 'http://activitystrea.ms/schema/1.0/event':
+                                               $post_type = t('event');
+                                               break;
+                                       default:
+                                               $post_type = t('status');
+                               }
+                               break;
+                       default:
+                               if ($rr['resource-id']){
+                                       $post_type = t('photo');
+                                       $m=array();     preg_match("/\[url=([^]]*)\]/", $rr['body'], $m);
+                                       $rr['plink'] = $m[1];
+                               } else {
+                                       $post_type = t('status');
+                               }
+               }
+               $plink = '<a href="' . $rr['plink'] . '">' . $post_type . '</a>';
+
+               $aside .= "<li>". sprintf( t('%1$s likes %2$s\'s %3$s'), $author, $objauthor, $plink) ."</li>";
+               
+       }
+       $aside .= "</ul>";
+               
+       
+       $a->page['aside'] = $aside;
+       
+       $o = '<h1>' . ((x($a->config,'sitename')) ? sprintf( t("Welcome to %s") ,$a->config['sitename']) : "" ) . '</h1>';
+       
+       $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 (file)
index 0000000..db1936e
--- /dev/null
@@ -0,0 +1,10 @@
+
+<div class="directory-item" id="directory-item-$id" >
+       <div class="directory-photo-wrapper" id="directory-photo-wrapper-$id" > 
+               <div class="directory-photo" id="directory-photo-$id" >
+                       <a href="$profile-link" class="directory-profile-link" id="directory-profile-link-$id" >
+                               <img class="directory-photo-img" src="$photo" alt="$alt-text" title="$alt-text" />
+                       </a>
+               </div>
+       </div>
+</div>