Merge branch 'master' into htmlfix
[phpfspot.git] / rpc.php
diff --git a/rpc.php b/rpc.php
index 1f8698e408d6e4b0cc1fd9468aac7171cf07f91c..f4a93ce6eb728a8232616ec6584a558e762cb19b 100644 (file)
--- a/rpc.php
+++ b/rpc.php
@@ -2,8 +2,9 @@
 
 /* *************************************************************************
  *
- * 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
 
 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()
@@ -38,52 +49,61 @@ class PHPFSPOT_RPC {
       $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']))
+      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'])) {
-               $fspot->showPhoto($_GET['id']);
+               print $phpfspot->showPhoto($_GET['id']);
             }
             break;
    
+         case 'getxmltaglist':
+            print $phpfspot->get_xml_tag_list();
+            break;
+
          case 'show_available_tags':
-            print $fspot->getAvailableTags();
+            print $phpfspot->getAvailableTags();
             break;
 
          case 'show_selected_tags':
-            print $fspot->getSelectedTags();
+            print $phpfspot->getSelectedTags();
             break;
 
          case 'addtag':
-            if(isset($_GET['id']) && is_numeric($_GET['id'])) {
-               $fspot->addTag($_GET['id']);
+            if(isset($_POST['id']) && is_numeric($_POST['id'])) {
+               print $phpfspot->addTag($_POST['id']);
             }
             break;
 
          case 'deltag':
-            if(isset($_GET['id']) && is_numeric($_GET['id'])) {
-               $fspot->delTag($_GET['id']);
+            if(isset($_POST['id']) && is_numeric($_POST['id'])) {
+               print $phpfspot->delTag($_POST['id']);
             }
             break;
 
          case 'reset':
-            $fspot->resetTagSearch();
-            $fspot->resetNameSearch();
-            $fspot->resetTags();
-            $fspot->resetDateSearch();
-            $fspot->resetPhotoView();
+            $phpfspot->resetTagSearch();
+            $phpfspot->resetNameSearch();
+            $phpfspot->resetTags();
+            $phpfspot->resetDateSearch();
+            $phpfspot->resetPhotoView();
             break;
 
          case 'tagcondition':
-            if(isset($_GET['mode']) && in_array($_GET['mode'], Array('or', 'and'))) {
-               $fspot->setTagCondition($_GET['mode']);
+            if(isset($_POST['mode']) && in_array($_POST['mode'], Array('or', 'and'))) {
+               print $phpfspot->setTagCondition($_POST['mode']);
             }
             break;
 
@@ -94,54 +114,57 @@ class PHPFSPOT_RPC {
             else {
                unset($_SESSION['begin_with']);
             }
-            $fspot->showPhotoIndex();
+            if(isset($_GET['last_photo']) && is_numeric($_GET['last_photo']))
+               $_SESSION['last_photo'] = $_GET['last_photo'];
+
+            print $phpfspot->showPhotoIndex();
             break;
    
          case 'showcredits':
-            $fspot->showCredits();
+            $phpfspot->showCredits();
             break;
 
          case 'search':
-            $fspot->startSearch($_GET['for']);
+            print $phpfspot->startSearch();
             break;
 
          case 'update_sort_order':
             if(isset($_POST['value']) && is_string($_POST['value'])) {
-               print $fspot->updateSortOrder($_POST['value']);
+               print $phpfspot->updateSortOrder($_POST['value']);
             }
             break;
 
          case 'get_export':
             /* $_GET['mode'] will be validated by getExport() */
-            $fspot->getExport($_GET['mode']);
+            $phpfspot->getExport($_GET['mode']);
             break;
 
          case 'get_photo_to_show':
-            $fspot->getCurrentPhoto();
+            $phpfspot->getCurrentPhoto();
             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']))) {
-               $fspot->get_calendar_matrix($_GET['year'], $_GET['month'], $_GET['day']);
+               $phpfspot->get_calendar_matrix($_GET['year'], $_GET['month'], $_GET['day']);
             }
             break;
 
          case 'what_to_do':
-            print $fspot->whatToDo();
+            print $phpfspot->whatToDo();
             break;
 
          case 'reset_slideshow':
-            print $fspot->resetSlideShow();
+            print $phpfspot->resetSlideShow();
             break;
 
          case 'get_next_slideshow_img':
-            print $fspot->getNextSlideShowImage();
+            print $phpfspot->getNextSlideShowImage();
             break;
          
          case 'get_prev_slideshow_img':
-            print $fspot->getPrevSlideShowImage();
+            print $phpfspot->getPrevSlideShowImage();
             break;
 
       }