diff --git a/boot.php b/boot.php index e1687030d..ca954a90c 100644 --- a/boot.php +++ b/boot.php @@ -9,9 +9,9 @@ require_once('include/nav.php'); require_once('include/cache.php'); define ( 'FRIENDICA_PLATFORM', 'Friendica'); -define ( 'FRIENDICA_VERSION', '2.3.1329' ); +define ( 'FRIENDICA_VERSION', '2.3.1330' ); define ( 'DFRN_PROTOCOL_VERSION', '2.23' ); -define ( 'DB_UPDATE_VERSION', 1142 ); +define ( 'DB_UPDATE_VERSION', 1143 ); define ( 'EOL', "
\r\n" ); define ( 'ATOM_TIME', 'Y-m-d\TH:i:s\Z' ); @@ -1520,9 +1520,12 @@ function get_my_url() { } function zrl_init(&$a) { - proc_run('php','include/gprobe.php',bin2hex(get_my_url())); - $arr = array('zrl' => get_my_url(), 'url' => $a->cmd); - call_hooks('zrl_init',$arr); + $tmp_str = get_my_url(); + if(validate_url($tmp_str)) { + proc_run('php','include/gprobe.php',bin2hex($tmp_str)); + $arr = array('zrl' => $tmp_str, 'url' => $a->cmd); + call_hooks('zrl_init',$arr); + } } function zrl($s,$force = false) { diff --git a/database.sql b/database.sql index dc586bc2b..cf086796a 100644 --- a/database.sql +++ b/database.sql @@ -1027,6 +1027,7 @@ CREATE TABLE IF NOT EXISTS `user` ( `account_expired` tinyint(1) NOT NULL DEFAULT '0', `account_expires_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `expire_notification_sent` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', + `service_class` char(32) NOT NULL, `allow_cid` mediumtext NOT NULL, `allow_gid` mediumtext NOT NULL, `deny_cid` mediumtext NOT NULL, @@ -1042,7 +1043,8 @@ CREATE TABLE IF NOT EXISTS `user` ( KEY `verified` (`verified`), KEY `unkmail` (`unkmail`), KEY `cntunkmail` (`cntunkmail`), - KEY `account_removed` (`account_removed`) + KEY `account_removed` (`account_removed`), + KEY `service_class` (`service_class`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -- -------------------------------------------------------- diff --git a/include/cache.php b/include/cache.php index 3c8a3f713..360c4acbd 100644 --- a/include/cache.php +++ b/include/cache.php @@ -14,22 +14,40 @@ } public static function set($key,$value) { - $r = q("SELECT * FROM `cache` WHERE `k`='%s' limit 1", - dbesc($key) - ); - if(count($r)) { - q("UPDATE `cache` SET `v` = '%s', `updated = '%s' WHERE `k` = '%s' limit 1", - dbesc($value), - dbesc(datetime_convert()), - dbesc($key)); - } - else { - q("INSERT INTO `cache` (`k`,`v`,`updated`) VALUES ('%s','%s','%s')", + + q("REPLACE INTO `cache` (`k`,`v`,`updated`) VALUES ('%s','%s','%s')", dbesc($key), dbesc($value), dbesc(datetime_convert())); - } } + + +/* + * + * Leaving this legacy code temporaily to see how REPLACE fares + * as opposed to non-atomic checks when faced with fast moving key duplication. + * As a MySQL extension it isn't portable, but we're not yet very portable. + */ + +/* + * $r = q("SELECT * FROM `cache` WHERE `k`='%s' limit 1", + * dbesc($key) + * ); + * if(count($r)) { + * q("UPDATE `cache` SET `v` = '%s', `updated = '%s' WHERE `k` = '%s' limit 1", + * dbesc($value), + * dbesc(datetime_convert()), + * dbesc($key)); + * } + * else { + * q("INSERT INTO `cache` (`k`,`v`,`updated`) VALUES ('%s','%s','%s')", + * dbesc($key), + * dbesc($value), + * dbesc(datetime_convert())); + * } + * } + */ + public static function clear(){ q("DELETE FROM `cache` WHERE `updated` < '%s'", diff --git a/include/contact_widgets.php b/include/contact_widgets.php index cfe27c5c9..bf3a86958 100644 --- a/include/contact_widgets.php +++ b/include/contact_widgets.php @@ -146,11 +146,19 @@ function common_friends_visitor_widget($profile_uid) { $cid = local_user(); else { if(get_my_url()) { - $r = q("select id from gcontact where nurl = '%s' limit 1", - dbesc(normalise_link(get_my_url())) + $r = q("select id from contact where nurl = '%s' and uid = %d limit 1", + dbesc(normalise_link(get_my_url())), + intval($profile_uid) ); if(count($r)) - $zcid = $r[0]['id']; + $cid = $r[0]['id']; + else { + $r = q("select id from gcontact where nurl = '%s' limit 1", + dbesc(normalise_link(get_my_url())) + ); + if(count($r)) + $zcid = $r[0]['id']; + } } } @@ -162,14 +170,14 @@ function common_friends_visitor_widget($profile_uid) { if($cid) $t = count_common_friends($profile_uid,$cid); else - $t = count_common_friends($profile_uid,$cid); + $t = count_common_friends_zcid($profile_uid,$zcid); if(! $t) return; if($cid) - $r = common_friends($profile_uid,$cid,5); + $r = common_friends($profile_uid,$cid,5,true); else - $r = common_friends_zcid($profile_uid,$zcid); + $r = common_friends_zcid($profile_uid,$zcid,5,true); return replace_macros(get_markup_template('remote_friends_common.tpl'), array( '$desc' => sprintf( tt("%d friend in common", "%d friends in common", $t), $t), diff --git a/include/socgraph.php b/include/socgraph.php index a08d58074..a67b3d9e3 100644 --- a/include/socgraph.php +++ b/include/socgraph.php @@ -99,11 +99,12 @@ function poco_load($cid,$uid = 0,$zcid = 0,$url = null) { $gcid = $x[0]['id']; if($x[0]['name'] != $name || $x[0]['photo'] != $profile_photo) { - q("update gcontact set `name` = '%s', `photo` = '%s', `connect` = '%s' + q("update gcontact set `name` = '%s', `photo` = '%s', `connect` = '%s', `url` = '%s' where `nurl` = '%s' limit 1", dbesc($name), dbesc($profile_photo), dbesc($connect_url), + dbesc($profile_url), dbesc(normalise_link($profile_url)) ); } @@ -168,7 +169,7 @@ function count_common_friends($uid,$cid) { $r = q("SELECT count(*) as `total` FROM `glink` left join `gcontact` on `glink`.`gcid` = `gcontact`.`id` where `glink`.`cid` = %d and `glink`.`uid` = %d - and `gcontact`.`nurl` in (select nurl from contact where uid = %d and self = 0 and id != %d ) ", + and `gcontact`.`nurl` in (select nurl from contact where uid = %d and self = 0 and blocked = 0 and hidden = 0 and id != %d ) ", intval($cid), intval($uid), intval($uid), @@ -182,13 +183,18 @@ function count_common_friends($uid,$cid) { } -function common_friends($uid,$cid,$limit=9999) { +function common_friends($uid,$cid,$limit=9999,$shuffle = false) { + + if($shuffle) + $sql_extra = " order by rand() "; + else + $sql_extra = " order by `gcontact`.`name` asc "; $r = q("SELECT `gcontact`.* FROM `glink` left join `gcontact` on `glink`.`gcid` = `gcontact`.`id` where `glink`.`cid` = %d and `glink`.`uid` = %d - and `gcontact`.`nurl` in (select nurl from contact where uid = %d and self = 0 and id != %d ) - order by `gcontact`.`name` asc limit 0, %d", + and `gcontact`.`nurl` in (select nurl from contact where uid = %d and self = 0 and blocked = 0 and hidden = 0 and id != %d ) + $sql_extra limit 0, %d", intval($cid), intval($uid), intval($uid), @@ -206,7 +212,7 @@ function count_common_friends_zcid($uid,$zcid) { $r = q("SELECT count(*) as `total` FROM `glink` left join `gcontact` on `glink`.`gcid` = `gcontact`.`id` where `glink`.`zcid` = %d - and `gcontact`.`nurl` in (select nurl from contact where uid = %d and self = 0 ) ", + and `gcontact`.`nurl` in (select nurl from contact where uid = %d and self = 0 and blocked = 0 and hidden = 0 ) ", intval($zcid), intval($uid) ); @@ -217,13 +223,18 @@ function count_common_friends_zcid($uid,$zcid) { } -function common_friends_zcid($uid,$zcid,$limit = 6) { +function common_friends_zcid($uid,$zcid,$limit = 9999,$shuffle) { + + if($shuffle) + $sql_extra = " order by rand() "; + else + $sql_extra = " order by `gcontact`.`name` asc "; $r = q("SELECT `gcontact`.* FROM `glink` left join `gcontact` on `glink`.`gcid` = `gcontact`.`id` where `glink`.`zcid` = %d - and `gcontact`.`nurl` in (select nurl from contact where uid = %d and self = 0 ) - order by `gcontact`.`name` asc limit 0, %d", + and `gcontact`.`nurl` in (select nurl from contact where uid = %d and self = 0 and blocked = 0 and hidden = 0 ) + $sql_extra limit 0, %d", intval($zcid), intval($uid), intval($limit) diff --git a/mod/events.php b/mod/events.php index e66a2dc44..069046ff9 100644 --- a/mod/events.php +++ b/mod/events.php @@ -28,6 +28,9 @@ function events_post(&$a) { $adjust = intval($_POST['adjust']); $nofinish = intval($_POST['nofinish']); + // The default setting for the `private` field in event_store() is false, so mirror that + $private_event = false; + $start = sprintf('%d-%d-%d %d:%d:0',$startyear,$startmonth,$startday,$starthour,$startminute); if($nofinish) @@ -65,14 +68,38 @@ function events_post(&$a) { $share = ((intval($_POST['share'])) ? intval($_POST['share']) : 0); + $c = q("select id from contact where uid = %d and self = 1 limit 1", + intval(local_user()) + ); + if(count($c)) + $self = $c[0]['id']; + else + $self = 0; + + if($share) { $str_group_allow = perms2str($_POST['group_allow']); $str_contact_allow = perms2str($_POST['contact_allow']); $str_group_deny = perms2str($_POST['group_deny']); $str_contact_deny = perms2str($_POST['contact_deny']); + + // Undo the pseudo-contact of self, since there are real contacts now + if( strpos($str_contact_allow, '<' . $self . '>') !== false ) + { + $str_contact_allow = str_replace('<' . $self . '>', '', $str_contact_allow); + } + // Make sure to set the `private` field as true. This is necessary to + // have the posts show up correctly in Diaspora if an event is created + // as visible only to self at first, but then edited to display to others. + if( strlen($str_group_allow) or strlen($str_contact_allow) or strlen($str_group_deny) or strlen($str_contact_deny) ) + { + $private_event = true; + } } else { - $str_contact_allow = '<' . local_user() . '>'; + // Note: do not set `private` field for self-only events. It will + // keep even you from seeing them! + $str_contact_allow = '<' . $self . '>'; $str_group_allow = $str_contact_deny = $str_group_deny = ''; } @@ -91,6 +118,7 @@ function events_post(&$a) { $datarray['allow_gid'] = $str_group_allow; $datarray['deny_cid'] = $str_contact_deny; $datarray['deny_gid'] = $str_group_deny; + $datarray['private'] = $private_event; $datarray['id'] = $event_id; $datarray['created'] = $created; $datarray['edited'] = $edited; diff --git a/mod/item.php b/mod/item.php index 1436f7ffc..639379fe0 100644 --- a/mod/item.php +++ b/mod/item.php @@ -444,9 +444,28 @@ function item_post(&$a) { $tags[] = '@' . $parent_contact['nick']; } + $tagged = array(); + + if(count($tags)) { foreach($tags as $tag) { - handle_tag($a, $body, $inform, $str_tags, (local_user()) ? local_user() : $profile_uid , $tag); + + // If we already tagged 'Robert Johnson', don't try and tag 'Robert'. + // Robert Johnson should be first in the $tags array + + $fullnametagged = false; + for($x = 0; $x < count($tagged); $x ++) { + if(stristr($tagged[$x],$tag . ' ')) { + $fullnametagged = true; + break; + } + } + if($fullnametagged) + continue; + + $success = handle_tag($a, $body, $inform, $str_tags, (local_user()) ? local_user() : $profile_uid , $tag); + if($success) + $tagged[] = $tag; } } @@ -861,21 +880,27 @@ function item_content(&$a) { * @param unknown_type $str_tags string to add the tag to * @param unknown_type $profile_uid * @param unknown_type $tag the tag to replace + * + * @return boolean true if replaced, false if not replaced */ function handle_tag($a, &$body, &$inform, &$str_tags, $profile_uid, $tag) { + + $replaced = false; + //is it a hash tag? if(strpos($tag,'#') === 0) { //if the tag is replaced... if(strpos($tag,'[url=')) //...do nothing - return; + return $replaced; //base tag has the tags name only $basetag = str_replace('_',' ',substr($tag,1)); //create text for link $newtag = '#[url=' . $a->get_baseurl() . '/search?tag=' . rawurlencode($basetag) . ']' . $basetag . '[/url]'; //replace tag by the link $body = str_replace($tag, $newtag, $body); - + $replaced = true; + //is the link already in str_tags? if(! stristr($str_tags,$newtag)) { //append or set str_tags @@ -883,13 +908,13 @@ function handle_tag($a, &$body, &$inform, &$str_tags, $profile_uid, $tag) { $str_tags .= ','; $str_tags .= $newtag; } - return; + return $replaced; } //is it a person tag? if(strpos($tag,'@') === 0) { //is it already replaced? if(strpos($tag,'[url=')) - return; + return $replaced; $stat = false; //get the person's name $name = substr($tag,1); @@ -965,6 +990,7 @@ function handle_tag($a, &$body, &$inform, &$str_tags, $profile_uid, $tag) { } //if there is an url for this persons profile if(isset($profile)) { + $replaced = true; //create profile link $profile = str_replace(',','%2c',$profile); $newtag = '@[url=' . $profile . ']' . $newname . '[/url]'; @@ -989,4 +1015,6 @@ function handle_tag($a, &$body, &$inform, &$str_tags, $profile_uid, $tag) { } } } + + return $replaced; } diff --git a/mod/profiles.php b/mod/profiles.php index 3a52c8fa5..4de9057dc 100644 --- a/mod/profiles.php +++ b/mod/profiles.php @@ -328,7 +328,7 @@ function profile_activity($changed, $value) { $prof = '[url=' . $self[0]['url'] . '?tab=profile' . ']' . t('public profile') . '[/url]'; if($t == 1 && strlen($value)) { - $message = sprintf( t('%1$s changed %2$s to %3$s'), $A, $changes, $value); + $message = sprintf( t('%1$s changed %2$s to "%3$s"'), $A, $changes, $value); $message .= "\n\n" . sprintf( t(' - Visit %1$s\'s %2$s'), $A, $prof); } else diff --git a/update.php b/update.php index cce942f27..e363aa942 100644 --- a/update.php +++ b/update.php @@ -1,6 +1,6 @@ \n" "Language-Team: LANGUAGE \n" @@ -3584,7 +3584,7 @@ msgstr "" msgid "Access to this profile has been restricted." msgstr "" -#: ../../mod/profile.php:147 +#: ../../mod/profile.php:151 msgid "Tips for New Members" msgstr "" @@ -3783,7 +3783,7 @@ msgstr "" #: ../../mod/profiles.php:331 #, php-format -msgid "%1$s changed %2$s to %3$s" +msgid "%1$s changed %2$s to \"%3$s\"" msgstr "" #: ../../mod/profiles.php:332 @@ -6431,6 +6431,13 @@ msgstr "" msgid "Categories" msgstr "" +#: ../../include/contact_widgets.php:183 +#, php-format +msgid "%d friend in common" +msgid_plural "%d friends in common" +msgstr[0] "" +msgstr[1] "" + #: ../../include/auth.php:29 msgid "Logged out." msgstr "" diff --git a/view/head.tpl b/view/head.tpl index 7b1541242..7638e56ca 100644 --- a/view/head.tpl +++ b/view/head.tpl @@ -6,7 +6,6 @@ - + diff --git a/view/theme/diabook/comment_item.tpl b/view/theme/diabook/comment_item.tpl index e10b86845..fc3594fdc 100644 --- a/view/theme/diabook/comment_item.tpl +++ b/view/theme/diabook/comment_item.tpl @@ -13,13 +13,13 @@
{{ if $qcomment }} - - '; - - $aside['$nv'] = $nv; - }; - - //Community Page - if(local_user()) { - $page = '
-

'.t("Community Pages").'

-
'; - //if (sizeof($contacts) > 0) - - $aside['$page'] = $page; - } - //END Community Page - //helpers - $helpers = array(); - $helpers['title'] = Array("", t('Help or @NewHere ?'), "", ""); - - $aside['$helpers'] = $helpers; - //end helpers - //connectable services - $con_services = array(); - $con_services['title'] = Array("", t('Connect Services'), "", ""); - - $aside['$con_services'] = $con_services; - //end connectable services - - - //get_baseurl - $url = $a->get_baseurl($ssl_state); - $aside['$url'] = $url; - - $tpl = file_get_contents(dirname(__file__).'/communityhome.tpl'); - $a->page['right_aside'] = replace_macros($tpl, $aside); - - - - -} - - -//profile_side at networkpages -if ($a->argv[0] === "network" && local_user()){ + //profile_side at networkpages + if ($a->argv[0] === "network" && local_user()){ // USER MENU if(local_user()) { @@ -278,10 +73,10 @@ if ($a->argv[0] === "network" && local_user()){ $tpl = get_markup_template('profile_side.tpl'); - $a->page['aside'] .= replace_macros($tpl, array( + $a->page['aside'] = replace_macros($tpl, array( '$userinfo' => $userinfo, '$ps' => $ps, - )); + )).$a->page['aside']; } @@ -295,12 +90,12 @@ if ($a->argv[0] === "network" && local_user()){ if($resolution == "normal") {$cssFile = $a->get_baseurl($ssl_state)."/view/theme/diabook".$color_path."style-network.css";} if($resolution == "wide") {$cssFile = $a->get_baseurl($ssl_state)."/view/theme/diabook".$color_path."style-network-wide.css";} } -} + } -//right_aside at profile pages -if ($a->argv[0].$a->argv[1] === "profile".$a->user['nickname']){ + //right_aside at profile pages + if ($a->argv[0].$a->argv[1] === "profile".$a->user['nickname']){ if($ccCookie != "9") { // COMMUNITY diabook_community_info(); @@ -310,155 +105,87 @@ if ($a->argv[0].$a->argv[1] === "profile".$a->user['nickname']){ if($resolution == "wide") {$cssFile = $a->get_baseurl($ssl_state)."/view/theme/diabook".$color_path."style-profile-wide.css";} } -} - -// custom css -if (!is_null($cssFile)) $a->page['htmlhead'] .= sprintf('', $cssFile); - -//footer -$tpl = get_markup_template('footer.tpl'); -$a->page['footer'] .= replace_macros($tpl, array()); - -//load jquery.cookie.js -$cookieJS = $a->get_baseurl($ssl_state)."/view/theme/diabook/js/jquery.cookie.js"; -$a->page['htmlhead'] .= sprintf('', $cookieJS); - -//load jquery.ae.image.resize.js -$imageresizeJS = $a->get_baseurl($ssl_state)."/view/theme/diabook/js/jquery.ae.image.resize.js"; -$a->page['htmlhead'] .= sprintf('', $imageresizeJS); - -//load jquery.autogrow-textarea.js -$autogrowJS = $a->get_baseurl($ssl_state)."/view/theme/diabook/js/jquery.autogrow.textarea.js"; -$a->page['htmlhead'] .= sprintf('', $autogrowJS); - -//load jquery.twitter.search.js -$twitterJS = $a->get_baseurl($ssl_state)."/view/theme/diabook/js/jquery.twitter.search.js"; -$a->page['htmlhead'] .= sprintf('', $twitterJS); - -//js scripts - -//check if community_home-plugin is activated and change css -$nametocheck = "communityhome"; -$r = q("select id from addon where name = '%s' and installed = 1", dbesc($nametocheck)); -if(count($r) == "1") { + } -$a->page['htmlhead'] .= ' -', $cookieJS); + + //load jquery.ae.image.resize.js + $imageresizeJS = $a->get_baseurl($ssl_state)."/view/theme/diabook/js/jquery.ae.image.resize.js"; + $a->page['htmlhead'] .= sprintf('', $imageresizeJS); + + //load jquery.ui.js + if($ccCookie != "9") { + $jqueryuiJS = $a->get_baseurl($ssl_state)."/view/theme/diabook/js/jquery-ui-1.8.20.custom.min.js"; + $a->page['htmlhead'] .= sprintf('', $jqueryuiJS); + } + + //load jquery.twitter.search.js + if($_COOKIE['close_twitter'] != "1") { + $twitterJS = $a->get_baseurl($ssl_state)."/view/theme/diabook/js/jquery.twitter.search.js"; + $a->page['htmlhead'] .= sprintf('', $twitterJS); + } + + $a->page['htmlhead'] .= ' + '; + + //check if twitterbox is active and print + if($_COOKIE['close_twitter'] != "1") { + $a->page['htmlhead'] .= ' + ';} + + //check if community_home-plugin is activated and change css + $nametocheck = "communityhome"; + $r = q("select id from addon where name = '%s' and installed = 1", dbesc($nametocheck)); + if(count($r) == "1") { + + $a->page['htmlhead'] .= ' + '; -} - -//comment-edit-wrapper on photo_view -if ($a->argv[0].$a->argv[2] === "photos"."image"){ - -$a->page['htmlhead'] .= ' -'; + } + //comment-edit-wrapper on photo_view + if ($a->argv[0].$a->argv[2] === "photos"."image"){ + $a->page['htmlhead'] .= ' + '; -} - -$a->page['htmlhead'] .= ' - -'; - - -$a->page['htmlhead'] .= ' - -'; - - -$a->page['htmlhead'] .= ' - '; - -if($a->argv[0] === "settings" && local_user()) { -$a->page['htmlhead'] .= ' -';} + } + ';} + + if ($a->argv[0].$a->argv[1] === "profile".$a->user['nickname'] or $a->argv[0] === "network" && local_user()){ + $a->page['htmlhead'] .= ' + '; - - + }); + '; + if($ccCookie != "9") { -$a->page['htmlhead'] .= ' -';}} - -$a->page['htmlhead'] .= ' - -';} } - return true; + //end js scripts + + // custom css + if (!is_null($cssFile)) $a->page['htmlhead'] .= sprintf('', $cssFile); + + //footer + $tpl = get_markup_template('footer.tpl'); + $a->page['footer'] .= replace_macros($tpl, array()); + + // + js_in_foot(); } -function cmtBbOpen(id) { - $(".comment-edit-bb-" + id).show(); -} -function cmtBbClose(id) { - $(".comment-edit-bb-" + id).hide(); -} - '; \ No newline at end of file + function diabook_community_info() { + $a = get_app(); + // comunity_profiles + if($_COOKIE['close_profiles'] != "1") { + $aside['$comunity_profilest_title'] = t('Community Profiles'); + $aside['$comunity_profiles_items'] = array(); + $r = q("select gcontact.* from gcontact left join glink on glink.gcid = gcontact.id + where glink.cid = 0 and glink.uid = 0 order by rand() limit 9"); + $tpl = file_get_contents( dirname(__file__).'/ch_directory_item.tpl'); + if(count($r)) { + $photo = 'photo'; + 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' => zrl($rr['url']), + '$photo' => $rr[$photo], + '$alt-text' => $rr['name'], + )); + $aside['$comunity_profiles_items'][] = $entry; + } + }} + + // last 12 users + if($_COOKIE['close_lastusers'] != "1") { + $aside['$lastusers_title'] = t('Last 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, + 9 + ); + $tpl = file_get_contents( dirname(__file__).'/ch_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; + } + }} + + // last 10 liked items + if($_COOKIE['close_lastlikes'] != "1") { + $aside['$like_title'] = t('Last 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` + 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,5", + $a->get_baseurl(),$a->get_baseurl() + ); + + foreach ($r as $rr) { + $author = '' . $rr['liker'] . ''; + $objauthor = '' . $rr['author-name'] . ''; + + //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 = '' . $post_type . ''; + + $aside['$like_items'][] = sprintf( t('%1$s likes %2$s\'s %3$s'), $author, $objauthor, $plink); + + }} + + // last 12 photos + if($_COOKIE['close_photos'] != "1") { + $aside['$photos_title'] = t('Last 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` + WHERE `profile`=0 AND `contact-id`=0 AND `album` NOT IN ('Contact Photos', '%s', 'Profile Photos', '%s') + 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 + AND `user`.`hidewall`=0 + ORDER BY `photo`.`edited` DESC + LIMIT 0, 9", + dbesc(t('Contact Photos')), + dbesc(t('Profile Photos')) + ); + if(count($r)) { + $tpl = file_get_contents( dirname(__file__).'/ch_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['$photos_items'][] = $entry; + } + }} + + //right_aside FIND FRIENDS + if($_COOKIE['close_friends'] != "1") { + if(local_user()) { + $nv = array(); + $nv['title'] = Array("", t('Find Friends'), "", ""); + $nv['directory'] = Array('directory', t('Local Directory'), "", ""); + $nv['global_directory'] = Array('http://dir.friendica.com/', t('Global Directory'), "", ""); + $nv['match'] = Array('match', t('Similar Interests'), "", ""); + $nv['suggest'] = Array('suggest', t('Friend Suggestions'), "", ""); + $nv['invite'] = Array('invite', t('Invite Friends'), "", ""); + + $nv['search'] = '
+ + + + + '; + + $aside['$nv'] = $nv; + }} + + //Community_Pages at right_aside + if($_COOKIE['close_pages'] != "1") { + if(local_user()) { + $page = ' +

'.t("Community Pages").'

+
    '; + + $pagelist = array(); + + $contacts = q("SELECT `id`, `url`, `name`, `micro`FROM `contact` + WHERE `network`= 'dfrn' AND `forum` = 1 AND `uid` = %d + ORDER BY `name` ASC", + intval($a->user['uid']) + ); + + $pageD = array(); + + // Look if the profile is a community page + foreach($contacts as $contact) { + $pageD[] = array("url"=>$contact["url"], "name"=>$contact["name"], "id"=>$contact["id"], "micro"=>$contact['micro']); + }; + + + $contacts = $pageD; + + foreach($contacts as $contact) { + $page .= '
  • ' . $contact['url'] . ' '. + $contact["name"]."
  • "; + } + $page .= '
'; + //if (sizeof($contacts) > 0) + $aside['$page'] = $page; + }} + //END Community Page + + //helpers + if($_COOKIE['close_helpers'] != "1") { + $helpers = array(); + $helpers['title'] = Array("", t('Help or @NewHere ?'), "", ""); + $aside['$helpers'] = $helpers; + } + //end helpers + //connectable services + if($_COOKIE['close_services'] != "1") { + $con_services = array(); + $con_services['title'] = Array("", t('Connect Services'), "", ""); + $aside['$con_services'] = $con_services; + } + //end connectable services + //get_baseurl + $url = $a->get_baseurl($ssl_state); + $aside['$url'] = $url; + //print right_aside + $tpl = file_get_contents(dirname(__file__).'/communityhome.tpl'); + $a->page['right_aside'] = replace_macros($tpl, $aside); + + } + + function js_in_foot() { + /** @purpose insert stuff in bottom of page + */ + $a = get_app(); + $baseurl = $a->get_baseurl($ssl_state); + $bottom['$baseurl'] = $baseurl; + $tpl = file_get_contents(dirname(__file__) . '/bottom.tpl'); + $a->page['footer'] = $a->page['footer'].replace_macros($tpl, $bottom); + } + + + + + + + + + + + +