From b616382cbd07855c64a429ba03e81f5594cfeb55 Mon Sep 17 00:00:00 2001 From: friendica Date: Wed, 29 Feb 2012 16:28:28 -0800 Subject: [PATCH 1/2] Add Thomas Willingham contributed alternate version --- communityhome.tgz | Bin 3662 -> 4127 bytes communityhome/twillingham/README | 7 ++ communityhome/twillingham/communityhome.php | 107 ++++++++++++++++++++ 3 files changed, 114 insertions(+) create mode 100644 communityhome/twillingham/README create mode 100644 communityhome/twillingham/communityhome.php diff --git a/communityhome.tgz b/communityhome.tgz index b08abd2ec236c20a20c24d7b8083cff317798e8c..33c6abc12fee0a7042e3aa38e0850d9ec3f55dd9 100755 GIT binary patch literal 4127 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 diff --git a/communityhome/twillingham/README b/communityhome/twillingham/README new file mode 100644 index 00000000..bb574278 --- /dev/null +++ b/communityhome/twillingham/README @@ -0,0 +1,7 @@ +Thomas Willingham + +This isn't even close to being worth a pull request, but some people might find it useful. + +Enable community home in your admin panel, then replace communityhome.php with this one to get a front page like mine (a normal front page, but with latest users shown in the sidebar, which looks bleak when there's nothing in it). + +There are more graceful ways of doing this, I used communityhome as I plan to make use of a limited stream and likes in future. diff --git a/communityhome/twillingham/communityhome.php b/communityhome/twillingham/communityhome.php new file mode 100644 index 00000000..102732ac --- /dev/null +++ b/communityhome/twillingham/communityhome.php @@ -0,0 +1,107 @@ + + */ + + +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'] .= ''; + + $aside = array( + '$tab_1' => t('Login'), + '$tab_2' => t('OpenID'), + '$noOid' => get_config('system','no_openid'), + ); + + // login form + $aside['$login_title'] = t('Login'); + $aside['$login_form'] = login(($a->config['register_policy'] == REGISTER_CLOSED) ? false : true); + + // last 12 users + $aside['$lastusers_title'] = t('Latest users'); + $aside['$lastusers_items'] = array(); + $sql_extra = ""; + $publish = (get_config('system','publish_all') ? '' : " AND `publish` = 1 " ); + $order = " ORDER BY `register_date` DESC "; + + $r = q("SELECT `profile`.*, `profile`.`uid` AS `profile_uid`, `user`.`nickname` + FROM `profile` LEFT JOIN `user` ON `user`.`uid` = `profile`.`uid` + WHERE `is-default` = 1 $publish AND `user`.`blocked` = 0 $sql_extra $order LIMIT %d , %d ", + 0, + 12 + ); + $tpl = file_get_contents( dirname(__file__).'/directory_item.tpl'); + if(count($r)) { + $photo = 'thumb'; + foreach($r as $rr) { + $profile_link = $a->get_baseurl() . '/profile/' . ((strlen($rr['nickname'])) ? $rr['nickname'] : $rr['profile_uid']); + $entry = replace_macros($tpl,array( + '$id' => $rr['id'], + '$profile-link' => $profile_link, + '$photo' => $rr[$photo], + '$alt-text' => $rr['name'], + )); + $aside['$lastusers_items'][] = $entry; + } + } + + // 12 most active users (by posts and contacts) + // this query don't work on some mysql versions + $r = q("SELECT `uni`.`contacts`,`uni`.`items`, `profile`.*, `profile`.`uid` AS `profile_uid`, `user`.`nickname` FROM + (SELECT COUNT(`id`) as `contacts`, `uid` FROM `contact` WHERE `self`=0 GROUP BY `uid`) AS `con`, + (SELECT COUNT(`id`) as `items`, `uid` FROM `item` WHERE `item`.`changed` > DATE(NOW() - INTERVAL 1 MONTH) AND `item`.`wall` = 1 GROUP BY `uid`) AS `ite`, + ( + SELECT `contacts`,`items`,`ite`.`uid` FROM `con` RIGHT OUTER JOIN `ite` ON `con`.`uid`=`ite`.`uid` + UNION ALL + SELECT `contacts`,`items`,`con`.`uid` FROM `con` LEFT OUTER JOIN `ite` ON `con`.`uid`=`ite`.`uid` + ) AS `uni`, `user`, `profile` + WHERE `uni`.`uid`=`user`.`uid` + AND `uni`.`uid`=`profile`.`uid` AND `profile`.`publish`=1 + GROUP BY `uid` + ORDER BY `items` DESC,`contacts` DESC + LIMIT 0,10"); + if($r && count($r)) { + $aside['$activeusers_title'] = t('Most active users'); + $aside['$activeusers_items'] = array(); + + $photo = 'thumb'; + foreach($r as $rr) { + $profile_link = $a->get_baseurl() . '/profile/' . ((strlen($rr['nickname'])) ? $rr['nickname'] : $rr['profile_uid']); + $entry = replace_macros($tpl,array( + '$id' => $rr['id'], + '$profile-link' => $profile_link, + '$photo' => $rr[$photo], + '$alt-text' => sprintf("%s (%s posts, %s contacts)",$rr['name'], ($rr['items']?$rr['items']:'0'), ($rr['contacts']?$rr['contacts']:'0')) + )); + $aside['$activeusers_items'][] = $entry; + } + } + + + + + $tpl = file_get_contents(dirname(__file__).'/communityhome.tpl'); + $a->page['aside'] = replace_macros($tpl, $aside); + $o = ''; + if(file_exists('home.html')) + + $o .= file_get_contents('home.html'); + +} From 7b86f5babe9ac38fb2c878ba6b21e76f8907a935 Mon Sep 17 00:00:00 2001 From: friendica Date: Thu, 1 Mar 2012 00:21:30 -0800 Subject: [PATCH 2/2] xml escape ljpost vars --- ljpost.tgz | Bin 2494 -> 2538 bytes ljpost/ljpost.php | 14 ++++++++++---- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/ljpost.tgz b/ljpost.tgz index 5189d6e09312ad392b92620e95eda3e691992840..f14b33d4ac398b832e02f46d3469e83ea8db5a22 100644 GIT binary patch delta 2526 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 delta 2481 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