X-Git-Url: https://git.nubati.net/cgi-bin/gitweb.cgi?p=phpfspot.git;a=blobdiff_plain;f=rpc.php;h=17af07376afd2f94420083bb237c10896d20653b;hp=2bb96280344ec53164e1ebc6bbea756e6854446d;hb=6198d8ac0ce0623ebb56dba2fed19e4e759682c0;hpb=01d597aa4940beb0af2404096e2a1abdf1582f3a diff --git a/rpc.php b/rpc.php index 2bb9628..17af073 100644 --- a/rpc.php +++ b/rpc.php @@ -2,13 +2,14 @@ /* ************************************************************************* * - * 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 @@ -23,37 +24,162 @@ 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(); + + /* if no action is specified, no need to further process this + * function here. + */ + if(!isset($_GET['action']) && !isset($_POST['action'])) + return; - switch($_GET['action']) { + if(isset($_GET['action'])) + $action = $_GET['action']; + if(isset($_POST['action'])) + $action = $_POST['action']; + + switch($action) { case 'showphoto': + if(isset($_GET['id']) && is_numeric($_GET['id'])) { + print $phpfspot->showPhoto($_GET['id']); + } + break; + + case 'getxmltaglist': + print $phpfspot->get_xml_tag_list(); + break; + + case 'show_available_tags': + print $phpfspot->getAvailableTags(); + break; + + case 'show_selected_tags': + print $phpfspot->getSelectedTags(); + break; + + case 'addtag': + if(isset($_POST['id']) && is_numeric($_POST['id'])) { + print $phpfspot->addTag($_POST['id']); + } + break; + + case 'deltag': + if(isset($_POST['id']) && is_numeric($_POST['id'])) { + print $phpfspot->delTag($_POST['id']); + } + break; + + case 'reset': + $phpfspot->resetTagSearch(); + $phpfspot->resetNameSearch(); + $phpfspot->resetTags(); + $phpfspot->resetDateSearch(); + $phpfspot->resetRateSearch(); + $phpfspot->resetPhotoView(); + break; + + case 'tagcondition': + if(isset($_POST['mode']) && in_array($_POST['mode'], Array('or', 'and'))) { + print $phpfspot->setTagCondition($_POST['mode']); + } + break; - $fspot->prepare_single_photo($_GET['id']); - $fspot->tmpl->show("body.tpl"); + case 'show_photo_index': + 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']; + + print $phpfspot->showPhotoIndex(); + break; + + case 'showcredits': + $phpfspot->showCredits(); + break; + + 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 'update_photo_version': + if(isset($_POST['photo_version']) && is_numeric($_POST['photo_version']) && + isset($_POST['photo_idx']) && is_numeric($_POST['photo_idx'])) { + print $phpfspot->update_photo_version($_POST['photo_idx'], $_POST['photo_version']); + } + break; + + case 'get_export': + /* $_GET['mode'] will be validated by getExport() */ + $phpfspot->getExport($_GET['mode']); + break; + case 'get_photo_to_show': + print $phpfspot->get_current_photo(); break; + + 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 'what_to_do': + print $phpfspot->whatToDo(); + break; + + 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();