From cb54cda17454fde783c165c37d6ece1ba2067253 Mon Sep 17 00:00:00 2001
From: Mike Macgirvin <mike@macgirvin.com>
Date: Fri, 9 Jul 2010 22:47:32 -0700
Subject: [PATCH] more directory work

---
 boot.php             |  3 ++-
 include/datetime.php | 22 +++++++++++++++++++++-
 mod/directory.php    | 14 +++++++++++---
 view/style.css       |  9 +++++++++
 wip/todo             |  4 +++-
 5 files changed, 46 insertions(+), 6 deletions(-)

diff --git a/boot.php b/boot.php
index fab44a7a45..ddc2fa381e 100644
--- a/boot.php
+++ b/boot.php
@@ -356,4 +356,5 @@ function xmlify($str) {
 
 function hex2bin($s) {
 	return(pack("H*",$s));
-}
\ No newline at end of file
+}
+
diff --git a/include/datetime.php b/include/datetime.php
index f75193b1bd..0beadbe78e 100644
--- a/include/datetime.php
+++ b/include/datetime.php
@@ -115,7 +115,8 @@ function relative_date($posted_date) {
     	$diff -= $minutes*60;
     	$seconds = $diff;
 
-
+	if($months > 2)
+		return(datetime_convert('UTC',date_default_timezone_get(),$posted_date,'\o\n Y-m-d \a\t H:i:s'));
     if ($months>0) {
         // over a month old,
         return 'over a month ago';
@@ -143,3 +144,22 @@ function relative_date($posted_date) {
     // show relative date and add proper verbiage
     return $relative_date.' ago';
 }
+
+function age($dob,$owner_tz = '',$viewer_tz = '') {
+	if(strlen($dob) != 10)
+		return 0;
+	if(! $owner_tz)
+		$owner_tz = date_default_timezone_get();
+	if(! $viewer_tz)
+		$viewer_tz = date_default_timezone_get();
+
+	$birthdate = datetime_convert('UTC',$owner_tz,$dob . ' 00:00:00+00:00','Y-m-d');
+	list($year,$month,$day) = explode("-",$birthdate);
+	$year_diff  = datetime_convert('UTC',$viewer_tz,'now','Y') - $year;
+	$curr_month = datetime_convert('UTC',$viewer_tz,'now','m');
+	$curr_day   = datetime_convert('UTC',$viewer_tz,'now','d');
+
+	if(($curr_month < $month) || (($curr_month == $month) && ($curr_day < $day)))
+		$year_diff--;
+	return $year_diff;
+}
diff --git a/mod/directory.php b/mod/directory.php
index 0a7d7355e7..aec34f910d 100644
--- a/mod/directory.php
+++ b/mod/directory.php
@@ -3,14 +3,20 @@
 
 function directory_content(&$a) {
 
+	$search = ((x($_GET,'search')) ? notags(trim($_GET['search'])) : '');
 
 	$tpl .= file_get_contents('view/directory_header.tpl');
 
 	$o .= replace_macros($tpl, array(
+		'$search' => $search
 
 	));
 
-	$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 AND `publish` = 1 ORDER BY `name` ASC");
+	if($search)
+		$search = dbesc($search);
+	$sql_extra = ((strlen($search)) ? " AND MATCH (`profile`.`name`, `user`.`nickname`, `locality`,`region`,`country-name`,`gender`,`marital`,`sexual`,`about`,`romance`,`employer`,`school`) AGAINST ('$search' IN BOOLEAN MODE) " : "");
+
+	$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 AND `publish` = 1 $sql_extra ORDER BY `name` ASC");
 	if(count($r)) {
 
 		$tpl = file_get_contents('view/directory_item.tpl');
@@ -36,8 +42,10 @@ function directory_content(&$a) {
 					$details .= ', ';
 				$details .= $rr['country-name'];
 			}
-			if(strlen($rr['dob']))
-				$details .= '<br />Age: ' ; // . calculate age($rr['dob'])) ;
+			if(strlen($rr['dob'])) {
+				if(($years = age($rr['dob'],$rr['timezone'],'')) != 0)
+					$details .= "<br />Age: $years" ; 
+			}
 			if(strlen($rr['gender']))
 				$details .= '<br />Gender: ' . $rr['gender'];
 
diff --git a/view/style.css b/view/style.css
index 609c8a8f77..701a7d0c5f 100644
--- a/view/style.css
+++ b/view/style.css
@@ -491,3 +491,12 @@ input#dfrn-url {
 	overflow: auto;
 }
 
+#directory-search-wrapper {
+	float: right;
+	margin-right: 20px;
+	margin-bottom: 50px;
+}
+
+#directory-search-end {
+	clear: both;
+}
\ No newline at end of file
diff --git a/wip/todo b/wip/todo
index 9b0057698c..e32f693973 100644
--- a/wip/todo
+++ b/wip/todo
@@ -17,7 +17,9 @@ contact editor
 	reputation
 
 
-directory page search, pager, details
+directory page pager
+
+profile advanced details submit, display
 
 publish to external directory
 
-- 
2.39.5