aboutsummaryrefslogtreecommitdiffstats
path: root/mod
diff options
context:
space:
mode:
Diffstat (limited to 'mod')
-rw-r--r--mod/contacts.php2
-rw-r--r--mod/dfrn_request.php15
-rw-r--r--mod/manage.php5
-rw-r--r--mod/network.php215
-rw-r--r--mod/profile.php40
5 files changed, 216 insertions, 61 deletions
diff --git a/mod/contacts.php b/mod/contacts.php
index a3e3f409b..f84a988c8 100644
--- a/mod/contacts.php
+++ b/mod/contacts.php
@@ -335,6 +335,7 @@ function contacts_content(&$a) {
$tab_tpl = get_markup_template('common_tabs.tpl');
$tab_str = replace_macros($tab_tpl, array('$tabs' => $tabs));
+ $lost_contact = (($contact['archive'] && $contact['term-date'] != '0000-00-00 00:00:00' && $contact['term-date'] < datetime_convert('','','now')) ? t('Communications lost with this contact!') : '');
$o .= replace_macros($tpl,array(
'$header' => t('Contact Editor'),
@@ -359,6 +360,7 @@ function contacts_content(&$a) {
'$poll_interval' => contact_poll_interval($contact['priority'],(! $poll_enabled)),
'$poll_enabled' => $poll_enabled,
'$lastupdtext' => t('Last update:'),
+ '$lost_contact' => $lost_contact,
'$updpub' => t('Update public posts'),
'$last_update' => $last_update,
'$udnow' => t('Update now'),
diff --git a/mod/dfrn_request.php b/mod/dfrn_request.php
index 896fe1792..3c76034c3 100644
--- a/mod/dfrn_request.php
+++ b/mod/dfrn_request.php
@@ -170,6 +170,21 @@ function dfrn_request_post(&$a) {
info( t("Introduction complete.") . EOL);
}
+ $r = q("select id from contact where uid = %d and url = '%s' and `site-pubkey` = '%s limit 1",
+ intval(local_user()),
+ dbesc($dfrn_url),
+ $parms['key'] // this was already escaped
+ );
+ if(count($r)) {
+ $g = q("select def_gid from user where uid = %d limit 1",
+ intval(local_user())
+ );
+ if($g && intval($g[0]['def_gid'])) {
+ require_once('include/group.php');
+ group_add_member(local_user(),'',$r[0]['id'],$g[0]['def_gid']);
+ }
+ }
+
/**
* Allow the blocked remote notification to complete
*/
diff --git a/mod/manage.php b/mod/manage.php
index 84dfa6917..96d420c78 100644
--- a/mod/manage.php
+++ b/mod/manage.php
@@ -96,7 +96,7 @@ function manage_content(&$a) {
$o .= '<div id="identity-selector-wrapper">' . "\r\n";
$o .= '<form action="manage" method="post" >' . "\r\n";
- $o .= '<select name="identity" size="4">' . "\r\n";
+ $o .= '<select name="identity" size="4" onchange="this.form.submit();" >' . "\r\n";
foreach($a->identities as $rr) {
$selected = (($rr['nickname'] === $a->user['nickname']) ? ' selected="selected" ' : '');
@@ -106,7 +106,8 @@ function manage_content(&$a) {
$o .= '</select>' . "\r\n";
$o .= '<div id="identity-select-break"></div>' . "\r\n";
- $o .= '<input id="identity-submit" type="submit" name="submit" value="' . t('Submit') . '" /></div></form>' . "\r\n";
+// $o .= '<input id="identity-submit" type="submit" name="submit" value="' . t('Submit') . '" />';
+ $o .= '</div></form>' . "\r\n";
return $o;
diff --git a/mod/network.php b/mod/network.php
index b998a3107..5f009dacd 100644
--- a/mod/network.php
+++ b/mod/network.php
@@ -6,11 +6,65 @@ function network_init(&$a) {
notice( t('Permission denied.') . EOL);
return;
}
-
+
+ $is_a_date_query = false;
+
+ if($a->argc > 1) {
+ for($x = 1; $x < $a->argc; $x ++) {
+ if(is_a_date_arg($a->argv[$x])) {
+ $is_a_date_query = true;
+ break;
+ }
+ }
+ }
+
+ // convert query string to array and remove first element (wich is friendica args)
+ $query_array = array();
+ parse_str($a->query_string, $query_array);
+ array_shift($query_array);
+
+ // fetch last used tab and redirect if needed
+ $sel_tabs = network_query_get_sel_tab($a);
+ $last_sel_tabs = get_pconfig(local_user(), 'network.view','tab.selected');
+ if (is_array($last_sel_tabs)){
+ $tab_urls = array(
+ '/network?f=&order=comment',//all
+ '/network?f=&order=post', //postord
+ '/network?f=&conv=1', //conv
+ '/network/new', //new
+ '/network?f=&star=1', //starred
+ '/network?f=&bmark=1', //bookmarked
+ '/network?f=&spam=1', //spam
+ );
+
+ // redirect if current selected tab is 'no_active' and
+ // last selected tab is _not_ 'all_active'.
+ // and this isn't a date query
+
+ if ($sel_tabs[0] == 'active' && $last_sel_tabs[0]!='active' && (! $is_a_date_query)) {
+ $k = array_search('active', $last_sel_tabs);
+
+ // merge tab querystring with request querystring
+ $dest_qa = array();
+ list($dest_url,$dest_qs) = explode("?", $tab_urls[$k]);
+ parse_str( $dest_qs, $dest_qa);
+ $dest_qa = array_merge($query_array, $dest_qa);
+ $dest_qs = build_querystring($dest_qa);
+
+ // groups filter is in form of "network/nnn". Add it to $dest_url, if it's possible
+ if ($a->argc==2 && is_numeric($a->argv[1]) && strpos($dest_url, "/",1)===false){
+ $dest_url .= "/".$a->argv[1];
+ }
+
+ goaway($a->get_baseurl() . $dest_url."?".$dest_qs);
+ }
+ }
+
$group_id = (($a->argc > 1 && intval($a->argv[1])) ? intval($a->argv[1]) : 0);
require_once('include/group.php');
require_once('include/contact_widgets.php');
+ require_once('include/items.php');
if(! x($a->page,'aside'))
$a->page['aside'] = '';
@@ -42,8 +96,9 @@ function network_init(&$a) {
if(x($_GET,'search')) {
$a->page['content'] .= '<h2>' . t('Search Results For:') . ' ' . $search . '</h2>';
}
-
+
$a->page['aside'] .= group_side('network','network',true,$group_id);
+ $a->page['aside'] .= posted_date_widget($a->get_baseurl() . '/network',local_user(),false);
$a->page['aside'] .= networks_widget($a->get_baseurl(true) . '/network',(x($_GET, 'nets') ? $_GET['nets'] : ''));
$a->page['aside'] .= saved_searches($search);
$a->page['aside'] .= fileas_widget($a->get_baseurl(true) . '/network',(x($_GET, 'file') ? $_GET['file'] : ''));
@@ -98,26 +153,23 @@ function saved_searches($search) {
}
-
-function network_content(&$a, $update = 0) {
-
- require_once('include/conversation.php');
-
- if(! local_user()) {
- $_SESSION['return_url'] = $a->query_string;
- return login(false);
- }
-
- $arr = array('query' => $a->query_string);
-
- call_hooks('network_content_init', $arr);
-
- $o = '';
-
- // item filter tabs
- // TODO: fix this logic, reduce duplication
- //$a->page['content'] .= '<div class="tabs-wrapper">';
-
+/**
+ * Return selected tab from query
+ *
+ * urls -> returns
+ * '/network' => $no_active = 'active'
+ * '/network?f=&order=comment' => $comment_active = 'active'
+ * '/network?f=&order=post' => $postord_active = 'active'
+ * '/network?f=&conv=1', => $conv_active = 'active'
+ * '/network/new', => $new_active = 'active'
+ * '/network?f=&star=1', => $starred_active = 'active'
+ * '/network?f=&bmark=1', => $bookmarked_active = 'active'
+ * '/network?f=&spam=1', => $spam_active = 'active'
+ *
+ * @return Array ( $no_active, $comment_active, $postord_active, $conv_active, $new_active, $starred_active, $bookmarked_active, $spam_active );
+ */
+function network_query_get_sel_tab($a) {
+ $no_active='';
$starred_active = '';
$new_active = '';
$bookmarked_active = '';
@@ -125,6 +177,7 @@ function network_content(&$a, $update = 0) {
$search_active = '';
$conv_active = '';
$spam_active = '';
+ $postord_active = '';
if(($a->argc > 1 && $a->argv[1] === 'new')
|| ($a->argc > 2 && $a->argv[2] === 'new')) {
@@ -152,59 +205,118 @@ function network_content(&$a, $update = 0) {
}
+
if (($new_active == '')
&& ($starred_active == '')
&& ($bookmarked_active == '')
&& ($conv_active == '')
&& ($search_active == '')
&& ($spam_active == '')) {
- $all_active = 'active';
+ $no_active = 'active';
}
+ if ($no_active=='active' && x($_GET,'order')) {
+ switch($_GET['order']){
+ case 'post': $postord_active = 'active'; $no_active=''; break;
+ case 'comment' : $all_active = 'active'; $no_active=''; break;
+ }
+ }
- $postord_active = '';
+ return array($no_active, $all_active, $postord_active, $conv_active, $new_active, $starred_active, $bookmarked_active, $spam_active);
+}
+
+
+function network_content(&$a, $update = 0) {
+
+ require_once('include/conversation.php');
+
+ if(! local_user()) {
+ $_SESSION['return_url'] = $a->query_string;
+ return login(false);
+ }
+
+ $arr = array('query' => $a->query_string);
+
+ call_hooks('network_content_init', $arr);
+
+
+ $datequery = $datequery2 = '';
+
+ $group = 0;
+
+ $nouveau = false;
- if($all_active && x($_GET,'order') && $_GET['order'] !== 'comment') {
- $all_active = '';
- $postord_active = 'active';
+ if($a->argc > 1) {
+ for($x = 1; $x < $a->argc; $x ++) {
+ if(is_a_date_arg($a->argv[$x])) {
+ if($datequery)
+ $datequery2 = escape_tags($a->argv[$x]);
+ else {
+ $datequery = escape_tags($a->argv[$x]);
+ $_GET['order'] = 'post';
+ }
+ }
+ elseif($a->argv[$x] === 'new') {
+ $nouveau = true;
+ }
+ elseif(intval($a->argv[$x])) {
+ $group = intval($a->argv[$x]);
+ $def_acl = array('allow_gid' => '<' . $group . '>');
+ }
+ }
}
-
+
+
+ $o = '';
+
+ // item filter tabs
+ // TODO: fix this logic, reduce duplication
+ //$a->page['content'] .= '<div class="tabs-wrapper">';
+
+ list($no_active, $all_active, $postord_active, $conv_active, $new_active, $starred_active, $bookmarked_active, $spam_active) = network_query_get_sel_tab($a);
+ // if no tabs are selected, defaults to comments
+ if ($no_active=='active') $all_active='active';
+ //echo "<pre>"; var_dump($no_active, $all_active, $postord_active, $conv_active, $new_active, $starred_active, $bookmarked_active, $spam_active); killme();
+
+ $cmd = (($datequery) ? '' : $a->cmd);
+ $len_naked_cmd = strlen(str_replace('/new','',$cmd));
+
// tabs
$tabs = array(
array(
'label' => t('Commented Order'),
- 'url'=>$a->get_baseurl(true) . '/' . str_replace('/new', '', $a->cmd) . ((x($_GET,'cid')) ? '?f=&cid=' . $_GET['cid'] : ''),
+ 'url'=>$a->get_baseurl(true) . '/' . str_replace('/new', '', $cmd) . '?f=&order=comment' . ((x($_GET,'cid')) ? '&cid=' . $_GET['cid'] : ''),
'sel'=>$all_active,
'title'=> t('Sort by Comment Date'),
),
array(
'label' => t('Posted Order'),
- 'url'=>$a->get_baseurl(true) . '/' . str_replace('/new', '', $a->cmd) . '?f=&order=post' . ((x($_GET,'cid')) ? '&cid=' . $_GET['cid'] : ''),
+ 'url'=>$a->get_baseurl(true) . '/' . str_replace('/new', '', $cmd) . '?f=&order=post' . ((x($_GET,'cid')) ? '&cid=' . $_GET['cid'] : ''),
'sel'=>$postord_active,
'title' => t('Sort by Post Date'),
),
array(
'label' => t('Personal'),
- 'url' => $a->get_baseurl(true) . '/' . str_replace('/new', '', $a->cmd) . ((x($_GET,'cid')) ? '/?f=&cid=' . $_GET['cid'] : '') . '&conv=1',
+ 'url' => $a->get_baseurl(true) . '/' . str_replace('/new', '', $cmd) . ((x($_GET,'cid')) ? '/?f=&cid=' . $_GET['cid'] : '') . '&conv=1',
'sel' => $conv_active,
'title' => t('Posts that mention or involve you'),
),
array(
'label' => t('New'),
- 'url' => $a->get_baseurl(true) . '/' . str_replace('/new', '', $a->cmd) . '/new' . ((x($_GET,'cid')) ? '/?f=&cid=' . $_GET['cid'] : ''),
+ 'url' => $a->get_baseurl(true) . '/' . str_replace('/new', '', $cmd) . ($len_naked_cmd ? '/' : '') . 'new' . ((x($_GET,'cid')) ? '/?f=&cid=' . $_GET['cid'] : ''),
'sel' => $new_active,
'title' => t('Activity Stream - by date'),
),
array(
'label' => t('Starred'),
- 'url'=>$a->get_baseurl(true) . '/' . str_replace('/new', '', $a->cmd) . ((x($_GET,'cid')) ? '/?f=&cid=' . $_GET['cid'] : '') . '&star=1',
+ 'url'=>$a->get_baseurl(true) . '/' . str_replace('/new', '', $cmd) . ((x($_GET,'cid')) ? '/?f=&cid=' . $_GET['cid'] : '') . '&star=1',
'sel'=>$starred_active,
'title' => t('Favourite Posts'),
),
array(
'label' => t('Shared Links'),
- 'url'=>$a->get_baseurl(true) . '/' . str_replace('/new', '', $a->cmd) . ((x($_GET,'cid')) ? '/?f=&cid=' . $_GET['cid'] : '') . '&bmark=1',
+ 'url'=>$a->get_baseurl(true) . '/' . str_replace('/new', '', $cmd) . ((x($_GET,'cid')) ? '/?f=&cid=' . $_GET['cid'] : '') . '&bmark=1',
'sel'=>$bookmarked_active,
'title'=> t('Interesting Links'),
),
@@ -215,8 +327,12 @@ function network_content(&$a, $update = 0) {
// 'title' => t('Posts flagged as SPAM'),
// ),
-
);
+
+ // save selected tab, but only if not in search or file mode
+ if(!x($_GET,'search') && !x($_GET,'file')) {
+ set_pconfig( local_user(), 'network.view','tab.selected',array($all_active, $postord_active, $conv_active, $new_active, $starred_active, $bookmarked_active, $spam_active) );
+ }
$arr = array('tabs' => $tabs);
call_hooks('network_tabs', $arr);
@@ -231,9 +347,6 @@ function network_content(&$a, $update = 0) {
$contact_id = $a->cid;
- $group = 0;
-
- $nouveau = false;
require_once('include/acl_selectors.php');
$cid = ((x($_GET,'cid')) ? intval($_GET['cid']) : 0);
@@ -248,17 +361,7 @@ function network_content(&$a, $update = 0) {
$cmax = ((x($_GET,'cmax')) ? intval($_GET['cmax']) : 99);
$file = ((x($_GET,'file')) ? $_GET['file'] : '');
- if(($a->argc > 2) && $a->argv[2] === 'new')
- $nouveau = true;
- if($a->argc > 1) {
- if($a->argv[1] === 'new')
- $nouveau = true;
- else {
- $group = intval($a->argv[1]);
- $def_acl = array('allow_gid' => '<' . $group . '>');
- }
- }
if(x($_GET,'search') || x($_GET,'file'))
$nouveau = true;
@@ -398,7 +501,17 @@ function network_content(&$a, $update = 0) {
. "'; var profile_page = " . $a->pager['page'] . "; </script>\r\n";
}
+ $sql_extra3 = '';
+
+ if($datequery) {
+ $sql_extra3 .= protect_sprintf(sprintf(" AND item.created <= '%s' ", dbesc(datetime_convert(date_default_timezone_get(),'',$datequery))));
+ }
+ if($datequery2) {
+ $sql_extra3 .= protect_sprintf(sprintf(" AND item.created >= '%s' ", dbesc(datetime_convert(date_default_timezone_get(),'',$datequery2))));
+ }
+
$sql_extra2 = (($nouveau) ? '' : " AND `item`.`parent` = `item`.`id` ");
+ $sql_extra3 = (($nouveau) ? '' : $sql_extra3);
if(x($_GET,'search')) {
$search = escape_tags($_GET['search']);
@@ -454,7 +567,7 @@ function network_content(&$a, $update = 0) {
FROM `item` LEFT JOIN `contact` ON `contact`.`id` = `item`.`contact-id`
WHERE `item`.`uid` = %d AND `item`.`visible` = 1 AND `item`.`deleted` = 0
AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0
- $sql_extra2
+ $sql_extra2 $sql_extra3
$sql_extra $sql_nets ",
intval($_SESSION['uid'])
);
@@ -506,7 +619,7 @@ function network_content(&$a, $update = 0) {
WHERE `item`.`uid` = %d AND `item`.`visible` = 1 AND `item`.`deleted` = 0
and `item`.`moderated` = 0 and `item`.`unseen` = 1
AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0
- $sql_extra $sql_nets ",
+ $sql_extra3 $sql_extra $sql_nets ",
intval(local_user())
);
}
@@ -516,7 +629,7 @@ function network_content(&$a, $update = 0) {
WHERE `item`.`uid` = %d AND `item`.`visible` = 1 AND `item`.`deleted` = 0
AND `item`.`moderated` = 0 AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0
AND `item`.`parent` = `item`.`id`
- $sql_extra $sql_nets
+ $sql_extra3 $sql_extra $sql_nets
ORDER BY `item`.$ordering DESC $pager_sql ",
intval(local_user())
);
diff --git a/mod/profile.php b/mod/profile.php
index 7658a9647..24e03d6ea 100644
--- a/mod/profile.php
+++ b/mod/profile.php
@@ -67,11 +67,23 @@ function profile_init(&$a) {
function profile_content(&$a, $update = 0) {
- if (x($a->category)) {
- $category = $a->category;
+ $category = $datequery = $datequery2 = '';
+
+ if($a->argc > 2) {
+ for($x = 2; $x < $a->argc; $x ++) {
+ if(is_a_date_arg($a->argv[$x])) {
+ if($datequery)
+ $datequery2 = escape_tags($a->argv[$x]);
+ else
+ $datequery = escape_tags($a->argv[$x]);
+ }
+ else
+ $category = $a->argv[$x];
+ }
}
- else {
- $category = ((x($_GET,'category')) ? $_GET['category'] : '');
+
+ if(! x($category)) {
+ $category = ((x($_GET,'category')) ? $_GET['category'] : '');
}
if(get_config('system','block_public') && (! local_user()) && (! remote_user())) {
@@ -82,6 +94,8 @@ function profile_content(&$a, $update = 0) {
require_once('include/security.php');
require_once('include/conversation.php');
require_once('include/acl_selectors.php');
+ require_once('include/items.php');
+
$groups = array();
$tab = 'posts';
@@ -97,6 +111,7 @@ function profile_content(&$a, $update = 0) {
}
}
+
$contact = null;
$remote_contact = false;
@@ -155,6 +170,7 @@ function profile_content(&$a, $update = 0) {
$celeb = ((($a->profile['page-flags'] == PAGE_SOAPBOX) || ($a->profile['page-flags'] == PAGE_COMMUNITY)) ? true : false);
+ $a->page['aside'] .= posted_date_widget($a->get_baseurl(true) . '/profile/' . $a->profile['nickname'],$a->profile['profile_uid'],true);
$a->page['aside'] .= categories_widget($a->get_baseurl(true) . '/profile/' . $a->profile['nickname'],(x($category) ? xmlify($category) : ''));
if(can_write_wall($a,$a->profile['profile_uid'])) {
@@ -200,16 +216,24 @@ function profile_content(&$a, $update = 0) {
}
else {
- if(x($category)) {
- $sql_extra .= file_tag_file_query('item',$category,'category');
+ if(x($category)) {
+ $sql_extra .= protect_sprintf(file_tag_file_query('item',$category,'category'));
+ }
+
+ if($datequery) {
+ $sql_extra2 .= protect_sprintf(sprintf(" AND item.created <= '%s' ", dbesc(datetime_convert(date_default_timezone_get(),'',$datequery))));
+ }
+ if($datequery2) {
+ $sql_extra2 .= protect_sprintf(sprintf(" AND item.created >= '%s' ", dbesc(datetime_convert(date_default_timezone_get(),'',$datequery2))));
}
+
$r = q("SELECT COUNT(*) AS `total`
FROM `item` LEFT JOIN `contact` ON `contact`.`id` = `item`.`contact-id`
WHERE `item`.`uid` = %d AND `item`.`visible` = 1 AND `item`.`deleted` = 0
and `item`.`moderated` = 0 AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0
AND `item`.`id` = `item`.`parent` AND `item`.`wall` = 1
- $sql_extra ",
+ $sql_extra $sql_extra2 ",
intval($a->profile['profile_uid'])
);
@@ -225,7 +249,7 @@ function profile_content(&$a, $update = 0) {
WHERE `item`.`uid` = %d AND `item`.`visible` = 1 AND `item`.`deleted` = 0
and `item`.`moderated` = 0 AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0
AND `item`.`id` = `item`.`parent` AND `item`.`wall` = 1
- $sql_extra
+ $sql_extra $sql_extra2
ORDER BY `item`.`created` DESC $pager_sql ",
intval($a->profile['profile_uid'])