/* *************************************************************************
*
- * Copyright (c) by Andreas Unterkircher, unki@netshadow.at
- * All rights reserved
+ * phpfspot, presents your F-Spot photo collection in Web browsers.
+ *
+ * Copyright (c) by Andreas Unterkircher
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
+ * any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
require_once "phpfspot.class.php";
+/**
+ * PHPFSPOT_RPC class
+ *
+ * handles AJAX-RPC calls from client browsers
+ * @package phpfspot
+ */
class PHPFSPOT_RPC {
+ /**
+ * PHPFSPOT_RPC constructor
+ */
public function __construct()
{
-
+ /* start PHP session */
session_start();
} // __construct()
- function process_ajax_request()
+ public function process_ajax_request()
{
-
require_once 'HTML/AJAX/Server.php';
$server = new HTML_AJAX_Server();
$server->handleRequest();
- $fspot = new PHPFSPOT();
+ $phpfspot = new PHPFSPOT();
- switch($_GET['action']) {
- case 'showphoto':
+ /* if no action is specified, no need to further process this
+ * function here.
+ */
+ if(!isset($_GET['action']) && !isset($_POST['action']))
+ return;
+
+ if(isset($_GET['action']))
+ $action = $_GET['action'];
+ if(isset($_POST['action']))
+ $action = $_POST['action'];
- $fspot->showPhoto($_GET['id']);
+ switch($action) {
+ case 'showphoto':
+ if(isset($_GET['id']) && is_numeric($_GET['id'])) {
+ $phpfspot->showPhoto($_GET['id']);
+ }
break;
- case 'show_available_tags':
+ case 'getxmltaglist':
+ print $phpfspot->get_xml_tag_list();
+ break;
- $fspot->getAvailableTags();
+ case 'show_available_tags':
+ print $phpfspot->getAvailableTags();
break;
case 'show_selected_tags':
-
- $fspot->getSelectedTags();
+ print $phpfspot->getSelectedTags();
break;
case 'addtag':
-
- $fspot->addTag($_GET['id']);
+ if(isset($_POST['id']) && is_numeric($_POST['id'])) {
+ print $phpfspot->addTag($_POST['id']);
+ }
break;
case 'deltag':
-
- $fspot->delTag($_GET['id']);
+ if(isset($_POST['id']) && is_numeric($_POST['id'])) {
+ print $phpfspot->delTag($_POST['id']);
+ }
break;
- case 'resettags':
-
- $fspot->resetTags();
+ case 'reset':
+ $phpfspot->resetTagSearch();
+ $phpfspot->resetNameSearch();
+ $phpfspot->resetTags();
+ $phpfspot->resetDateSearch();
+ $phpfspot->resetPhotoView();
break;
case 'tagcondition':
-
- $fspot->setTagCondition($_GET['mode']);
+ if(isset($_POST['mode']) && in_array($_POST['mode'], Array('or', 'and'))) {
+ print $phpfspot->setTagCondition($_POST['mode']);
+ }
break;
case 'show_photo_index':
-
- $_SESSION['begin_with'] = $_GET['begin_with'];
- $fspot->showPhotoIndex();
+ if(isset($_GET['begin_with']) && is_numeric($_GET['begin_with'])) {
+ $_SESSION['begin_with'] = $_GET['begin_with'];
+ }
+ else {
+ unset($_SESSION['begin_with']);
+ }
+ if(isset($_GET['last_photo']) && is_numeric($_GET['last_photo']))
+ $_SESSION['last_photo'] = $_GET['last_photo'];
+
+ $phpfspot->showPhotoIndex();
break;
- case 'showbubbledetails':
-
- $fspot->showBubbleDetails($_GET['id'], $_GET['direction']);
+ case 'showcredits':
+ $phpfspot->showCredits();
break;
- case 'showcredits':
+ case 'search':
+ print $phpfspot->startSearch();
+ break;
+
+ case 'update_sort_order':
+ if(isset($_POST['value']) && is_string($_POST['value'])) {
+ print $phpfspot->updateSortOrder($_POST['value']);
+ }
+ break;
+
+ case 'get_export':
+ /* $_GET['mode'] will be validated by getExport() */
+ $phpfspot->getExport($_GET['mode']);
+ break;
+
+ case 'get_photo_to_show':
+ $phpfspot->getCurrentPhoto();
+ break;
- $fspot->showCredits();
+ case 'get_calendar_matrix':
+ if((is_numeric($_GET['year']) || !isset($_GET['year'])) &&
+ (is_numeric($_GET['month']) || !isset($_GET['month'])) &&
+ (is_numeric($_GET['day']) || !isset($_GET['day']))) {
+ $phpfspot->get_calendar_matrix($_GET['year'], $_GET['month'], $_GET['day']);
+ }
break;
- case 'tag_search':
+ case 'what_to_do':
+ print $phpfspot->whatToDo();
+ break;
- $fspot->startTagSearch($_GET['for']);
+ case 'reset_slideshow':
+ print $phpfspot->resetSlideShow();
+ break;
+
+ case 'get_next_slideshow_img':
+ print $phpfspot->getNextSlideShowImage();
+ break;
+
+ case 'get_prev_slideshow_img':
+ print $phpfspot->getPrevSlideShowImage();
break;
}
} // process_ajax_request();
-}
+} // class PHPFSPOT_RPC
$rpc = new PHPFSPOT_RPC();
$rpc->process_ajax_request();