From 05c3bde0c29128d803d98b69b337ccfebe4c1732 Mon Sep 17 00:00:00 2001 From: jwangen Date: Sun, 27 Oct 2002 23:55:57 +0000 Subject: Search furthur implimented --- functions/ical_parser.php | 53 ++++--- languages/german.inc.php | 30 ++-- languages/portuguese.inc.php | 25 +++- languages/spanish.inc.php | 28 ++-- print.php | 5 +- search.php | 331 ++++++++++++++++++++++++++----------------- 6 files changed, 292 insertions(+), 180 deletions(-) diff --git a/functions/ical_parser.php b/functions/ical_parser.php index 47a0a36..4a9eeb7 100644 --- a/functions/ical_parser.php +++ b/functions/ical_parser.php @@ -73,6 +73,14 @@ if ($parse_file) { // .ics file, we need to have some unique place in the array $uid_counter = 0; + // for custom search ranges of recurring events + $search_range = false; + if (isset($HTTP_GET_VARS['start']) && isset($HTTP_GET_VARS['end']) && $HTTP_GET_VARS['start'] != '' && $HTTP_GET_VARS['end'] != '') { + $search_range_start = strtotime($HTTP_GET_VARS['start']); + $search_range_end = strtotime($HTTP_GET_VARS['end']); + $search_range = true; + } + // read file in line by line // XXX end line is skipped because of the 1-line readahead while (!feof($ifile)) { @@ -209,6 +217,24 @@ if ($parse_file) { $rrule_array['END_TIME'] = $end_time; $rrule_array['END'] = 'end'; } + + $start_date_time = strtotime($start_date); + $this_month_start_time = strtotime($this_year.$this_month.'01'); + if ($save_parsed_cals == 'yes' && !$is_webcal) { + $start_range_time = strtotime($this_year.'-01-01 -1 month -2 days'); + $end_range_time = strtotime($this_year.'-12-31 +1 month +2 days'); + if ($search_range) { + if ($start_range_time > $search_range_start) $start_range_time = $search_range_start; + if ($end_range_time < $search_range_end) $end_range_time = $search_range_end; + } + } elseif ($search_range) { + $start_range_time = $search_range_start; + $end_range_time = $search_range_end; + } else { + $start_range_time = strtotime('-1 month -2 day', $this_month_start_time); + $end_range_time = strtotime('+2 month +2 day', $this_month_start_time); + } + //print_r($rrule_array); foreach ($rrule_array as $key => $val) { switch($key) { @@ -292,39 +318,28 @@ if ($parse_file) { break; case 'END': - // again, $parse_to_year is set to January 10 of the upcoming year - $parse_to_year_time = mktime(0,0,0,1,10,($this_year + 1)); - $start_date_time = strtotime($start_date); - $this_month_start_time = strtotime($this_year.$this_month.'01'); - - if ($save_parsed_cals == 'yes' && !$is_webcal) { - $start_range_time = strtotime($this_year.'-01-01 -1 month -2 days'); - $end_range_time = strtotime($this_year.'-12-31 +1 month +2 days'); - } else { - $start_range_time = strtotime('-1 month -2 day', $this_month_start_time); - $end_range_time = strtotime('+2 month +2 day', $this_month_start_time); - } - // if $until isn't set yet, we set it to the end of our range we're looking at if (!isset($until)) $until = $end_range_time; $end_date_time = $until; + $start_range_time_tmp = $start_range_time; + $end_range_time_tmp = $end_range_time; // If the $end_range_time is less than the $start_date_time, or $start_range_time is greater // than $end_date_time, we may as well forget the whole thing // It doesn't do us any good to spend time adding data we aren't even looking at // this will prevent the year view from taking way longer than it needs to - if ($end_range_time >= $start_date_time && $start_range_time <= $end_date_time) { + if ($end_range_time_tmp >= $start_date_time && $start_range_time_tmp <= $end_date_time) { // if the beginning of our range is less than the start of the item, we may as well set it equal to it - if ($start_range_time < $start_date_time) $start_range_time = $start_date_time; - if ($end_range_time > $end_date_time) $end_range_time = $end_date_time; + if ($start_range_time_tmp < $start_date_time) $start_range_time_tmp = $start_date_time; + if ($end_range_time_tmp > $end_date_time) $end_range_time_tmp = $end_date_time; // initialze the time we will increment - $next_range_time = $start_range_time; + $next_range_time = $start_range_time_tmp; $count_to = 0; // start at the $start_range and go until we hit the end of our range. - while (($next_range_time >= $start_range_time) && ($next_range_time <= $end_range_time) && ($count_to != $count)) { + while (($next_range_time >= $start_range_time_tmp) && ($next_range_time <= $end_range_time_tmp) && ($count_to != $count)) { $func = $freq_type.'Compare'; $diff = $func(date('Ymd',$next_range_time), $start_date); if ($diff < $count) { @@ -395,7 +410,7 @@ if ($parse_file) { break; default: // anything else we need to end the loop - $next_range_time = $end_range_time + 100; + $next_range_time = $end_range_time_tmp + 100; $count_to = $count; } } else { diff --git a/languages/german.inc.php b/languages/german.inc.php index 4c64dfb..d45fb95 100644 --- a/languages/german.inc.php +++ b/languages/german.inc.php @@ -45,24 +45,24 @@ $gomonth_lang = 'Gehe zum aktuellen Monat'; $goyear_lang = 'Gehe zum aktuellen Jahr'; // new in 0.8 ------------- -$search_lang = 'Search'; // the verb -$results_lang = 'Search Results'; -$query_lang = 'Query: '; // will be followed by the search query -$no_results_lang = 'No events found'; +$search_lang = 'Suchen'; // the verb +$results_lang = 'Suchresultate'; +$query_lang = 'Suche: '; // will be followed by the search query +$no_results_lang = 'Keine Einträge gefunden'; -$goprint_lang = 'Printer Friendly'; -$time_lang = 'Time'; -$summary_lang = 'Summary'; -$description_lang = 'Description'; +$goprint_lang = 'Druckversion'; +$time_lang = 'Zeit'; +$summary_lang = 'Zusammenfassung'; +$description_lang = 'Beschreibung'; // RSS text for 0.8 -$this_site_is_lang = 'This site is'; -$no_events_day_lang = 'No events today.'; -$no_events_week_lang = 'No events this week.'; -$no_events_month_lang = 'No events this month.'; -$rss_day_date = 'g:i A'; // Lists just the time -$rss_week_date = '%b %e'; // Lists just the day -$rss_month_date = '%b %e'; // Lists just the day +$this_site_is_lang = 'Diese Site ist'; +$no_events_day_lang = 'Keine Einträge für heute.'; +$no_events_week_lang = 'Keine Einträge in dieser Woche.'; +$no_events_month_lang = 'Keine Einträge in diesem Monat.'; +$rss_day_date = 'H:i'; // Lists just the time +$rss_week_date = '%e. %b'; // Lists just the day +$rss_month_date = '%e. %b'; // Lists just the day // ------------------------- $daysofweek_lang = array ('Sonntag','Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag'); diff --git a/languages/portuguese.inc.php b/languages/portuguese.inc.php index b9c0295..b98044c 100644 --- a/languages/portuguese.inc.php +++ b/languages/portuguese.inc.php @@ -1,7 +1,7 @@ - \ No newline at end of file + + + + \ No newline at end of file diff --git a/search.php b/search.php index a2ab225..4ffa0c8 100644 --- a/search.php +++ b/search.php @@ -4,20 +4,218 @@ define('BASE','./'); $current_view = 'search'; include('./functions/ical_parser.php'); +if (isset($HTTP_SERVER_VARS['HTTP_REFERER']) && $HTTP_SERVER_VARS['HTTP_REFERER'] != '') { + $back_page = $HTTP_SERVER_VARS['HTTP_REFERER']; +} else { + $back_page = BASE.$default_view.'.php?cal='.$cal.'&getdate='.$getdate; +} + +$search_valid = false; +if (isset($HTTP_GET_VARS['query']) && $HTTP_GET_VARS['query'] != '') { + $query = $HTTP_GET_VARS['query']; + $search_valid = true; +} + +$formatted_start_range = localizeDate($dateFormat_week, $start_range_time); +$formatted_end_range = localizeDate($dateFormat_week, $end_range_time); + +$search_box = ''; // yet to be implemented switch($HTTP_GET_VARS['mode']) { case 'advanced_search': // display advanced search stuff + break; case 'search': // display simple search stuff + $search_box .= + '
'."\n". + ''."\n". + ''."\n". + '
'; break; case 'results': // display results of either simple or advanced search break; default: // some generic thing, maybe same as search + $search_box .= + '
'."\n". + ''."\n". + ''."\n". + '
'; +} + +$search_started = getmicrotime(); +if ($search_valid) { + $format_search_arr = format_search($query); + $formatted_search = $format_search_arr[0]; + if (isset($master_array) && is_array($master_array)) { + foreach($master_array as $date_key_tmp => $date_tmp) { + if (is_array($date_tmp)) { + foreach($date_tmp as $time_tmp) { + if (is_array($time_tmp)) { + foreach ($time_tmp as $event_tmp) { + if (is_array($event_tmp)) { + $results1 = search_boolean($format_search_arr,$event_tmp['event_text']); + if (!$results1) { + $results2 = search_boolean($format_search_arr,$event_tmp['description']); + } + if ($results1 || $results2) { + $event_tmp['date'] = $date_key_tmp; + $the_arr[] = $event_tmp; + } + } + } + } + } + } + } + } +} else { + $formatted_search = 'No query given'; } +$search_ended = getmicrotime(); + +$search_took = number_format(($search_ended-$search_started),3); + +?> + + + + + + <?php echo "$calendar_name - $results_lang"; ?> + + + +
+ + + + + + + + + + +
+ + + + + + +
+
+ + + + +
+ + + + + + + + + + + + + + \n"; + echo ""; + echo "\n"; + + if ($val["event_text"]) { + $event_text = stripslashes(urldecode($val["event_text"])); + $description = stripslashes(urldecode($val["description"])); + $event_start = $val["event_start"]; + $event_end = $val["event_end"]; + $event_start = date ($timeFormat, strtotime ("$event_start")); + $event_end = date ($timeFormat, strtotime ("$event_end")); + $event_start = "$event_start - $event_end"; + if (!$val["event_start"]) { + $event_start = "$all_day_lang"; + $event_start2 = ''; + $event_end = ''; + } + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + } + } + } else { + echo ''; + } + + + + ?> + + + +
 
$dayofmonth
\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + if ($val["description"]) { + echo "\n"; + echo "\n"; + echo "\n"; + echo "\n"; + } + echo "
$time_lang:$event_start
$summary_lang:$event_text
$description_lang:$description
\n"; + echo "
'; + echo $no_results_lang; + echo '
 
+ '; + echo ''.$formatted_start_range.' - '.$formatted_end_range.'
'; + echo 'Search took '.$search_took.' seconds

'; + ?> +
+
+
+
+ + + + $date_tmp) { - if (is_array($date_tmp)) { - foreach($date_tmp as $time_tmp) { - if (is_array($time_tmp)) { - foreach ($time_tmp as $event_tmp) { - if (is_array($event_tmp)) { - $results1 = search_boolean($format_search_arr,$event_tmp['event_text']); - if (!$results1) { - $results2 = search_boolean($format_search_arr,$event_tmp['description']); - } - if ($results1 || $results2) { - $event_tmp['date'] = $date_key_tmp; - $the_arr[] = $event_tmp; - } - } - } - } - } - } - } +function getmicrotime() { + list($usec, $sec) = explode(' ',microtime()); + return ((float)$usec + (float)$sec); } - -?> - - - - - - <?php echo "$calendar_name - Search Results"; ?> - "> - - - -
- - - - - - - - - -
"; ?>"; ?>
- - - - -
- - - - - - - - - - \n"; - echo "\n"; - echo "\n"; - - } else { - echo "\n"; - echo "\n"; - echo "\n"; - } - - ?> -
"; ?>"; ?>
\n"; - foreach($the_arr as $val) { - $thedate = $val['date']; - $dayofmonth = strtotime ($thedate); - $dayofmonth = localizeDate ($dateFormat_week_list, $dayofmonth); - $i = 0; - if ($getdate == $thedate) { - $fontclass="class=\"G10BOLD\""; - } else { - $fontclass="class=\"G10B\""; - } - if ($val["event_text"]) { - $event_text = stripslashes(urldecode($val["event_text"])); - $event_text2 = addslashes($val["event_text"]); - $event_text2 = str_replace("\"", """, $event_text2); - $event_text2 = urlencode($event_text2); - $description = addslashes($val["description"]); - $description = str_replace("\"", """, $description); - $event_start = $val["event_start"]; - $event_end = $val["event_end"]; - $event_start = date ($timeFormat, strtotime ("$event_start")); - $event_end = date ($timeFormat, strtotime ("$event_end")); - $event_text = str_replace ("
", "", $event_text); - $event_start2 = $event_start; - if (strlen($event_text) > 70) { - $event_text = substr("$event_text", 0, 65); - $event_text = $event_text . "..."; - } - if (!$val["event_start"]) { - $event_start = "$all_day_lang"; - $event_start2 = ''; - $event_end = ''; - } - echo "\n"; - echo "\n"; - echo "\n"; - } - } - echo "
 $dayofmonth ($event_start)\n"; - echo " $event_text\n"; - echo "\n"; - echo ''.htmlspecialchars(urldecode($val["description"])).''; - echo "
No results found
-
- - -
- -
- - +?> \ No newline at end of file -- cgit v1.2.3