aboutsummaryrefslogtreecommitdiffstats
path: root/apps/gallery/ajax/sharing.php
blob: 04de57eb1778b51ea386ebde03c565a13626adbf (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
<?php

/**
* ownCloud - gallery application
*
* @author Bartek Przybylski
* @copyright 2012 Bartek Przybylski bartek@alefzero.eu
* 
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
* License as published by the Free Software Foundation; either 
* version 3 of the License, or any later version.
* 
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
* GNU AFFERO GENERAL PUBLIC LICENSE for more details.
*  
* You should have received a copy of the GNU Lesser General Public 
* License along with this library.  If not, see <http://www.gnu.org/licenses/>.
* 
*/

 

if (!isset($_GET['token']) || !isset($_GET['operation'])) {
  OC_JSON::error(array('cause' => 'Not enought arguments'));
  exit;
}

$operation = $_GET['operation'];
$token = $_GET['token'];

if (!OC_Gallery_Sharing::isTokenValid($token)) {
  OC_JSON::error(array('cause' => 'Given token is not valid'));
  exit;
}

function handleGetGallery($token, $path) {
  $owner = OC_Gallery_Sharing::getTokenOwner($token);
  $apath = OC_Gallery_Sharing::getPath($token);

  if ($path == false)
    $root = $apath;
  else
    $root =  rtrim($apath,'/').$path;

  $r = OC_Gallery_Album::find($owner, null, $root);
  $albums = array();
  $photos = array();
  $albumId = -1;
  if ($row = $r->fetchRow()) {
    $albumId = $row['album_id'];
  }
  if ($albumId != -1) {

    if (OC_Gallery_Sharing::isRecursive($token)) {
      $r = OC_Gallery_Album::find($owner, null, null, $root);
      while ($row = $r->fetchRow())
        $albums[] = $row['album_name'];
    }

    $r = OC_Gallery_Photo::find($albumId);
    while ($row = $r->fetchRow())
      $photos[] = $row['file_path'];
  }

  OC_JSON::success(array('albums' => $albums, 'photos' => $photos));
}

function handleGetThumbnail($token, $imgpath) {
  $owner = OC_Gallery_Sharing::getTokenOwner($token);
  $image = OC_Gallery_Photo::getThumbnail($imgpath, $owner);
  if ($image) {
    OC_Response::enableCaching(3600 * 24); // 24 hour
    $image->show();
  }
}

function handleGetAlbumThumbnail($token, $albumname)
{
  $owner = OC_Gallery_Sharing::getTokenOwner($token);
  $file = OCP\Config::getSystemValue("datadirectory").'/'. $owner .'/gallery/'.$albumname.'.png';
  $image = new OC_Image($file);
  if ($image->valid()) {
    $image->centerCrop();
    $image->resize(200);
    $image->fixOrientation();
    OC_Response::enableCaching(3600 * 24); // 24 hour
    $image->show();
  }
}

function handleGetPhoto($token, $photo) {
  $owner = OC_Gallery_Sharing::getTokenOwner($token);
  $file = OCP\Config::getSystemValue( "datadirectory", OC::$SERVERROOT."/data" ).'/'.$owner.'/files'.urldecode($photo);
  header('Content-Type: '.OC_Image::getMimeTypeForFile($file));
  OC_Response::sendFile($file);
}

switch ($operation) {
  case 'get_gallery':
    handleGetGallery($token, isset($_GET['path'])? $_GET['path'] : false);
    break;
  case 'get_thumbnail':
    handleGetThumbnail($token, urldecode($_GET['img']));
    break;
  case 'get_album_thumbnail':
    handleGetAlbumThumbnail($token, urldecode($_GET['albumname']));
    break;
  case 'get_photo':
    handleGetPhoto($token, urldecode($_GET['photo']));
    break;
}