diff --git a/include/items.php b/include/items.php index bb81d1a45..8a655594e 100755 --- a/include/items.php +++ b/include/items.php @@ -3390,3 +3390,50 @@ function drop_item($id,$interactive = true) { } } + + +function first_post_date($uid,$wall = false) { + $r = q("select created from item + where uid = %d and wall = %d and deleted = 0 and visible = 1 AND moderated = 0 + order by created asc limit 1", + intval($uid), + intval($wall ? 1 : 0) + ); + if(count($r)) + return substr($r[0]['created'],0,10); + return false; +} + +function posted_dates($uid,$wall) { + $dnow = datetime_convert('','','now','Y-m-d'); + + $dthen = first_post_date($uid,$wall); + if(! $dthen) + return array(); + + $ret = array(); + while($dnow >= $dthen) { + $start_month = datetime_convert('','','first day of ' . $dnow,'Y-m-d'); + $end_month = datetime_convert('','','last day of ' . $dnow,'Y-m-d'); + $str = day_translate(datetime_convert('','',$dnow,'F Y')); + $ret[] = array($str,$end_month,$start_month); + $dnow = datetime_convert('','',$dnow . ' -1 month', 'Y-m-d'); + } + return $ret; +} + + +function posted_date_widget($url,$uid,$wall) { + $o = ''; + $ret = posted_dates($uid,$wall); + if(! count($ret)) + return $o; + + $o = replace_macros(get_markup_template('posted_date_widget.tpl'),array( + '$title' => t('Archives'), + '$size' => ((count($ret) > 6) ? 6 : count($ret)), + '$url' => $url, + '$dates' => $ret + )); + return $o; +} \ No newline at end of file diff --git a/mod/network.php b/mod/network.php index a733f3fb3..c31260b44 100644 --- a/mod/network.php +++ b/mod/network.php @@ -7,6 +7,16 @@ function network_init(&$a) { 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; + } + } + } // fetch last used tab and redirect if needed $sel_tabs = network_query_get_sel_tab($a); @@ -24,7 +34,11 @@ function network_init(&$a) { // redirect if current selected tab is 'no_active' and // last selected tab is _not_ 'all_active'. - if ($sel_tabs[0] == 'active' && $last_sel_tabs[0]!='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); //echo "
"; var_dump($sel_tabs, $last_sel_tabs, $tab_urlsm, $k, $tab_urls[$k]); killme(); goaway($a->get_baseurl() . $tab_urls[$k]); @@ -35,6 +49,7 @@ function network_init(&$a) { require_once('include/group.php'); require_once('include/contact_widgets.php'); + require_once('include/items.php'); if(! x($a->page,'aside')) $a->page['aside'] = ''; @@ -66,8 +81,9 @@ function network_init(&$a) { if(x($_GET,'search')) { $a->page['content'] .= '' . t('Search Results For:') . ' ' . $search . '
'; } - + $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'] : '')); @@ -246,43 +262,46 @@ function network_content(&$a, $update = 0) { // if no tabs are selected, defaults to comments if ($no_active=='active') $all_active='active'; //echo ""; 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) . '?f=&order=comment' . ((x($_GET,'cid')) ? '&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'), ), @@ -470,10 +489,10 @@ function network_content(&$a, $update = 0) { $sql_extra3 = ''; if($datequery) { - $sql_extra3 .= protect_sprintf(sprintf(" AND item.created <= '%s' ", dbesc(datetime_convert('','',$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('','',$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` "); diff --git a/mod/profile.php b/mod/profile.php index 2ac8fe586..24e03d6ea 100644 --- a/mod/profile.php +++ b/mod/profile.php @@ -94,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'; @@ -168,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'])) { @@ -218,10 +221,10 @@ function profile_content(&$a, $update = 0) { } if($datequery) { - $sql_extra2 .= protect_sprintf(sprintf(" AND item.created <= '%s' ", dbesc(datetime_convert('','',$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('','',$datequery2)))); + $sql_extra2 .= protect_sprintf(sprintf(" AND item.created >= '%s' ", dbesc(datetime_convert(date_default_timezone_get(),'',$datequery2)))); } diff --git a/view/categories_widget.tpl b/view/categories_widget.tpl index 061821beb..5dbd871a8 100644 --- a/view/categories_widget.tpl +++ b/view/categories_widget.tpl @@ -1,4 +1,3 @@ -{{ endif }} + diff --git a/view/posted_date_widget.tpl b/view/posted_date_widget.tpl new file mode 100644 index 000000000..3e2ee5a3e --- /dev/null +++ b/view/posted_date_widget.tpl @@ -0,0 +1,9 @@ + diff --git a/view/theme/duepuntozero/style.css b/view/theme/duepuntozero/style.css index ab660888f..3264caf52 100644 --- a/view/theme/duepuntozero/style.css +++ b/view/theme/duepuntozero/style.css @@ -3226,3 +3226,7 @@ ul.menu-popup { .autocomplete { color:#000; border:1px solid #999; background:#FFF; cursor:default; text-align:left; max-height:350px; overflow:auto; margin:-6px 6px 6px -6px; /* IE6 specific: */ _height:350px; _margin:0; _overflow-x:hidden; } .autocomplete .selected { background:#F0F0F0; } .autocomplete div { padding:2px 5px; white-space:nowrap; overflow:hidden; } + +#datebrowse-sidebar select { + margin-left: 25px; +} diff --git a/view/theme/slackr/style.css b/view/theme/slackr/style.css index aa4d4b800..8a8f8c726 100644 --- a/view/theme/slackr/style.css +++ b/view/theme/slackr/style.css @@ -88,6 +88,20 @@ nav #site-location { box-shadow: 4px 4px 3px 0 #444444; } +#datebrowse-sidebar select { + margin-left: 25px; + border-radius: 3px; + -moz-border-radius: 3px; + opacity: 0.3; + filter:alpha(opacity=30); +} + +#datebrowse-sidebar select:hover { + opacity: 1.0; + filter:alpha(opacity=100); +} + + .contact-entry-photo img, .profile-match-photo img, #photo-photo img, .directory-photo-img, .photo-album-photo, .photo-top-photo, .profile-jot-text, .group-selected, .nets-selected, .fileas-selected, #profile-jot-submit, .categories-selected { border-radius: 3px; -moz-border-radius: 3px;