diff options
Diffstat (limited to 'phpfspot.class.php')
-rw-r--r-- | phpfspot.class.php | 163 |
1 files changed, 128 insertions, 35 deletions
diff --git a/phpfspot.class.php b/phpfspot.class.php index 8fe0f77..31a3952 100644 --- a/phpfspot.class.php +++ b/phpfspot.class.php @@ -54,8 +54,8 @@ class PHPFSPOT { $this->tmpl->assign('searchfor', $_SESSION['searchfor']); $this->tmpl->assign('page_title', $this->cfg->page_title); $this->tmpl->assign('current_condition', $_SESSION['tag_condition']); - $this->tmpl->assign('from_date', $this->get_calendar()); - $this->tmpl->assign('to_date', $this->get_calendar()); + $this->tmpl->assign('from_date', $this->get_calendar('from')); + $this->tmpl->assign('to_date', $this->get_calendar('to')); switch($_GET['mode']) { case 'showpi': @@ -339,25 +339,37 @@ class PHPFSPOT { public function resetTags() { - unset($_SESSION['selected_tags']); + if(isset($_SESSION['selected_tags'])) + unset($_SESSION['selected_tags']); } // resetTags() public function resetPhotoView() { - unset($_SESSION['current_photo']); + if(isset($_SESSION['current_photo'])) + unset($_SESSION['current_photo']); } // resetPhotoView(); public function resetTagSearch() { - unset($_SESSION['searchfor']); + if(isset($_SESSION['searchfor'])) + unset($_SESSION['searchfor']); } // resetTagSearch() + public function resetDateSearch() + { + if(isset($_SESSION['from_date'])) + unset($_SESSION['from_date']); + if(isset($_SESSION['to_date'])) + unset($_SESSION['to_date']); + + } // resetDateSearch(); + public function getPhotoSelection() { - $tagged_photos = Array(); + $matched_photos = Array(); /* return a search result */ if(isset($_SESSION['searchfor']) && $_SESSION['searchfor'] != '') { @@ -372,9 +384,9 @@ class PHPFSPOT { ORDER BY p.time ASC "); while($row = $this->db->db_fetch_object($result)) { - array_push($tagged_photos, $row['photo_id']); + array_push($matched_photos, $row['photo_id']); } - return $tagged_photos; + return $matched_photos; } /* return according the selected tags */ @@ -432,11 +444,31 @@ class PHPFSPOT { } while($row = $this->db->db_fetch_object($result)) { - array_push($tagged_photos, $row['photo_id']); + array_push($matched_photos, $row['photo_id']); } - return $tagged_photos; + return $matched_photos; } + if(isset($_SESSION['from_date']) && isset($_SESSION['to_date'])) { + $from_date = strtotime($_SESSION['from_date']); + $to_date = strtotime($_SESSION['to_date']); + $result = $this->db->db_query(" + SELECT DISTINCT photo_id + FROM photo_tags pt + INNER JOIN photos p + ON p.id=pt.photo_id + WHERE + time>='". $from_date ."' + AND + time<='". $to_date ."' + ORDER BY p.time ASC + "); + while($row = $this->db->db_fetch_object($result)) { + array_push($matched_photos, $row['photo_id']); + } + return $matched_photos; + } + /* return all available photos */ $result = $this->db->db_query(" SELECT DISTINCT photo_id @@ -446,9 +478,9 @@ class PHPFSPOT { ORDER BY p.time ASC "); while($row = $this->db->db_fetch_object($result)) { - array_push($tagged_photos, $row['photo_id']); + array_push($matched_photos, $row['photo_id']); } - return $tagged_photos; + return $matched_photos; } // getPhotoSelection() @@ -908,8 +940,16 @@ class PHPFSPOT { array_push($_SESSION['selected_tags'], $tag); } + $this->resetDateSearch(); + } // startTagSearch() + public function startDateSearch($from, $to) + { + $_SESSION['from_date'] = $from; + $_SESSION['to_date'] = $to; + } + private function rotateImage($img, $degrees) { if(function_exists("imagerotate")) @@ -1082,37 +1122,90 @@ class PHPFSPOT { } // _warning() - private function get_calendar() + private function get_calendar($mode) { -// require_once CALENDAR_ROOT.'Year.php'; -// require_once CALENDAR_ROOT.'Month.php'; -// require_once CALENDAR_ROOT.'Day.php'; + $output = "<input type=\"text\" size=\"3\" id=\"". $mode ."year\" value=\"". date("Y") ."\" />\n"; + $output.= "<input type=\"text\" size=\"1\" id=\"". $mode ."month\" value=\"". date("m") ."\" />\n"; + $output.= "<input type=\"text\" size=\"1\" id=\"". $mode ."day\" value=\"". date("d") ."\" />\n"; + return $output; -// $Year = new Calendar_Year(); -// $Month = new Calendar_Month(); -// $Day = new Calendar_Day(); + } // get_calendar() - $output = "<select name=\"year\">\n"; - for($year = 1990; $year <= date("Y"); $year++) { - $output.= "<option value=\"". $year ."\">". $year ."</option>\n"; - } - $output.= "</select>\n"; + public function get_calendar_matrix($year = 0, $month = 0, $day = 0) + { + if (!isset($year)) $year = date('Y'); + if (!isset($month)) $month = date('m'); + if (!isset($day)) $day = date('d'); + $rows = 1; + $cols = 1; + $matrix = Array(); + + require_once CALENDAR_ROOT.'Month/Weekdays.php'; + require_once CALENDAR_ROOT.'Day.php'; - $output.= "<select name=\"month\">\n"; - for($month = 1; $month <= 12; $month++) { - $output.= "<option value=\"". $month ."\">". $month ."</option>\n"; - } - $output.= "</select>\n"; - $output.= "<select name=\"day\">\n"; - for($day = 1; $day <= 31; $day++) { - $output.= "<option value=\"". $day ."\">". $day ."</option>\n"; + // Build the month + $month = new Calendar_Month_Weekdays($year,$month); + + // Create links + $prevStamp = $month->prevMonth(true); + $prev = "javascript:setMonth(". date('Y',$prevStamp) .", ". date('n',$prevStamp) .", ". date('j',$prevStamp) .");"; + $nextStamp = $month->nextMonth(true); + $next = "javascript:setMonth(". date('Y',$nextStamp) .", ". date('n',$nextStamp) .", ". date('j',$nextStamp) .");"; + + $selectedDays = array ( + new Calendar_Day($year,$month,$day), + new Calendar_Day($year,12,25), + ); + + // Build the days in the month + $month->build($selectedDays); + + $this->tmpl->assign('current_month', date('F Y',$month->getTimeStamp())); + $this->tmpl->assign('prev_month', $prev); + $this->tmpl->assign('next_month', $next); + + while ( $day = $month->fetch() ) { + + if(!isset($matrix[$rows])) + $matrix[$rows] = Array(); + + $string = ""; + + $dayStamp = $day->thisDay(true); + $link = "javascript:setCalendarDate(". date('Y',$dayStamp) .", ". date('n',$dayStamp).", ". date('j',$dayStamp) .");"; + + // isFirst() to find start of week + if ( $day->isFirst() ) + $string.= "<tr>\n"; + + if ( $day->isSelected() ) { + $string.= "<td class=\"selected\">".$day->thisDay()."</td>\n"; + } else if ( $day->isEmpty() ) { + $string.= "<td> </td>\n"; + } else { + $string.= "<td><a class=\"calendar\" href=\"".$link."\">".$day->thisDay()."</a></td>\n"; + } + + // isLast() to find end of week + if ( $day->isLast() ) + $string.= "</tr>\n"; + + $matrix[$rows][$cols] = $string; + + $cols++; + + if($cols > 7) { + $cols = 1; + $rows++; + } } - $output.= "</select>\n"; - return $output; + $this->tmpl->assign('matrix', $matrix); + $this->tmpl->assign('rows', $rows); + $this->tmpl->show("calendar.tpl"); - } // get_calendar() + } // get_calendar_matrix() public function getExport($mode) { |