functions.php 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652
  1. <?php
  2. /**
  3. * @name functions.php
  4. * @author Philipp Maurer
  5. * @author Tobias Reich
  6. * @copyright 2012 by Philipp Maurer, Tobias Reich
  7. */
  8. include("config.php");
  9. // Database Functions
  10. function dbConnect() {
  11. global $db, $dbUser, $dbPassword, $dbHost;
  12. $connect = mysql_connect($dbHost, $dbUser, $dbPassword);
  13. if(!$connect) {
  14. echo "No connection: ".mysql_error();
  15. return false;
  16. }
  17. $dbSelect = mysql_select_db($db);
  18. if(!$dbSelect) {
  19. if(createDatabase($db)){$dbSelect = mysql_select_db($db);}
  20. else {echo "Can not create Database!"; return false;}
  21. }
  22. $query = "SELECT * FROM photos, albums;";
  23. if(!mysql_query($query)) createTables();
  24. return true;
  25. }
  26. function dbClose() {
  27. $close = mysql_close();
  28. if(!$close) {
  29. echo "Closing the connection failed!";
  30. return false;
  31. }
  32. return true;
  33. }
  34. function createDatabase($db) {
  35. $query = "CREATE DATABASE $db;";
  36. $result = mysql_query($query);
  37. if(!$result) return false;
  38. return true;
  39. }
  40. function createTables() {
  41. $query = "CREATE TABLE IF NOT EXISTS `albums` (
  42. `id` int(11) NOT NULL AUTO_INCREMENT,
  43. `title` varchar(50) NOT NULL,
  44. `sysdate` varchar(10) NOT NULL,
  45. PRIMARY KEY (`id`)
  46. ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;";
  47. $result = mysql_query($query);
  48. if(!$result) return false;
  49. $query = "CREATE TABLE IF NOT EXISTS `photos` (
  50. `id` bigint(14) NOT NULL,
  51. `title` varchar(50) NOT NULL,
  52. `description` varchar(160) NOT NULL,
  53. `url` varchar(100) NOT NULL,
  54. `public` tinyint(1) NOT NULL,
  55. `shortlink` varchar(20) NOT NULL,
  56. `type` varchar(10) NOT NULL,
  57. `width` int(11) NOT NULL,
  58. `height` int(11) NOT NULL,
  59. `size` varchar(10) NOT NULL,
  60. `sysdate` varchar(10) NOT NULL,
  61. `systime` varchar(8) NOT NULL,
  62. `iso` varchar(15) NOT NULL,
  63. `aperture` varchar(10) NOT NULL,
  64. `make` varchar(20) NOT NULL,
  65. `model` varchar(50) NOT NULL,
  66. `shutter` varchar(10) NOT NULL,
  67. `focal` varchar(10) NOT NULL,
  68. `takedate` varchar(10) NOT NULL,
  69. `taketime` varchar(8) NOT NULL,
  70. `star` tinyint(1) NOT NULL,
  71. `album` varchar(30) NOT NULL DEFAULT '0',
  72. `thumbUrl` varchar(50) NOT NULL,
  73. PRIMARY KEY (`id`)
  74. ) ENGINE=MyISAM DEFAULT CHARSET=latin1;";
  75. $result = mysql_query($query);
  76. if(!$result) return false;
  77. return true;
  78. }
  79. // Upload Functions
  80. function upload($file, $albumID) {
  81. switch($albumID) {
  82. case 's':
  83. $public = 1;
  84. $star = 0;
  85. $albumID = 0;
  86. break;
  87. case 'f':
  88. $star = 1;
  89. $public = 0;
  90. $albumID = 0;
  91. break;
  92. default:
  93. $star = 0;
  94. $public = 0;
  95. }
  96. $id = str_replace('.', '', microtime(true));
  97. while(strlen($id)<14) $id .= 0;
  98. $tmp_name = $file['File']["tmp_name"];
  99. $type = getimagesize($tmp_name);
  100. if(($type[2]!=1)&&($type[2]!=2)&&($type[2]!=3)) return false;
  101. $data = $file['File']["name"];
  102. $data = explode('.',$data);
  103. $data = array_reverse ($data);
  104. $data = $data[0];
  105. move_uploaded_file($tmp_name, "../uploads/big/$id.$data");
  106. createThumb($id.".".$data);
  107. // Read infos
  108. $info = getCamera($id.".".$data);
  109. $title="";
  110. if(isset($info['type'])){$type=$info['type'];}else{$type="";}
  111. if(isset($info['width'])){$width=$info['width'];}else{$width="";}
  112. if(isset($info['height'])){$height=$info['height'] OR "";}else{$height="";}
  113. if(isset($info['size'])){$size=$info['size'] OR "";}else{$size="";}
  114. if(isset($info['date'])){$sysdate=$info['date'];}else{$sysdate="";}
  115. if(isset($info['time'])){$systime=$info['time'];}else{$systime="";}
  116. if(isset($info['iso'])){$iso=$info['iso'];}else{$iso="";}
  117. if(isset($info['aperture'])){$aperture=$info['aperture'];}else{$aperture="";}
  118. if(isset($info['make'])){$make=$info['make'];}else{$make="";}
  119. if(isset($info['model'])){$model=$info['model'] OR "";}else{$model="";}
  120. if(isset($info['shutter'])){$shutter=$info['shutter'];}else{$shutter="";}
  121. if(isset($info['focal'])){$focal=$info['focal'];}else{$focal="";}
  122. if(isset($info['takeDate'])){$takeDate=$info['takeDate'];}else{$takeDate="";}
  123. if(isset($info['takeTime'])){$takeTime=$info['takeTime'];}else{$takeTime="";}
  124. $query = "INSERT INTO photos (id, title, url, type, width, height, size, sysdate, systime, iso, aperture, make, model, shutter, focal, takedate, taketime, thumbUrl, album, public, star)
  125. VALUES ('$id', '$title', 'uploads/big/$id.$data', '$type', '$width', '$height', '$size', '$sysdate', '$systime', '$iso', '$aperture', '$make', '$model', '$shutter', '$focal', '$takeDate', '$takeTime', 'uploads/thumb/$id.$data', '$albumID', '$public', '$star');";
  126. $result = mysql_query($query);
  127. }
  128. function getCamera($photoID) {
  129. $return = array();
  130. $url = "../uploads/big/$photoID";
  131. $type = getimagesize($url);
  132. $type = $type['mime'];
  133. if(($type == "image/jpeg") && function_exists('exif_read_data') ){
  134. $exif = exif_read_data($url, "EXIF", 0);
  135. // General information
  136. $return['name'] = $exif['FileName'];
  137. $generalInfos = getimagesize($url);
  138. $return['type'] = $generalInfos['mime'];
  139. $return['width'] = $generalInfos[0];
  140. $return['height'] = $generalInfos[1];
  141. $size = (filesize($url) / 1024);
  142. if($size >= 1024){$size=round($size/1024,1)." MB";}else{$size=round($size,1)." KB";}
  143. $return['size'] = $size;
  144. $return['date'] = date("d.m.Y",filectime($url));
  145. $return['time'] = date("H:i:s",filectime($url));
  146. echo $exif['FileDateTime']."<br/>".$exif['DateTimeOriginal'];
  147. // Camera Information
  148. if(isset($exif['ISOSpeedRatings'])){$return['iso']="ISO-".$exif['ISOSpeedRatings'];}
  149. if(isset($exif['COMPUTED']['ApertureFNumber'])){$return['aperture']=$exif['COMPUTED']['ApertureFNumber'];}
  150. if(isset($exif['Make'])){$return['make']=$exif['Make'];}
  151. if(isset($exif['Model'])){$return['model']=$exif['Model'];}
  152. if(isset($exif['ExposureTime'])){$return['shutter']=$exif['ExposureTime']." Sek.";}
  153. if(isset($exif['FocalLength'])){$return['focal']=($exif['FocalLength']/1)." mm";}
  154. if(isset($exif['Software'])){$return['software']=$exif['Software'];}
  155. if(isset($exif['DateTimeOriginal'])) {
  156. $exifDate = explode(" ",$exif['DateTimeOriginal']);
  157. $date = explode(":", $exifDate[0]); $return['takeDate'] = $date[2].".".$date[1].".".$date[0];
  158. $return['takeTime'] = $exifDate[1];
  159. }
  160. }else{
  161. $exif = getimagesize($url);
  162. $return['type'] = $exif['mime'];
  163. $return['width'] = $exif[0];
  164. $return['height'] = $exif[1];
  165. $size = (filesize($url) / 1024);
  166. if($size >= 1024){$size=round($size/1024,1)." MB";}else{$size=round($size,1)." KB";}
  167. $return['size'] = $size;
  168. $return['date'] = date("d.m.Y",filectime($url));
  169. $return['time'] = date("H:i:s",filectime($url));
  170. }
  171. return $return;
  172. }
  173. function createThumb($photoName, $width = 200, $height = 200) {
  174. global $thumbQuality;
  175. $photoUrl = "../uploads/big/$photoName";
  176. $newUrl = "../uploads/thumb/$photoName";
  177. $oldImg = getimagesize($photoUrl);
  178. $type = $oldImg['mime'];
  179. switch($type) {
  180. case "image/jpeg": $sourceImg = imagecreatefromjpeg($photoUrl); break;
  181. case "image/png": $sourceImg = imagecreatefrompng($photoUrl); break;
  182. case "image/gif": $sourceImg = imagecreatefromgif($photoUrl); break;
  183. default: return false;
  184. }
  185. $thumb = imagecreatetruecolor($width, $height);
  186. if($oldImg[0]<$oldImg[1]) {
  187. $newSize = $oldImg[0];
  188. $startWidth = 0;
  189. $startHeight = $oldImg[1]/2 - $oldImg[0]/2;
  190. } else {
  191. $newSize = $oldImg[1];
  192. $startWidth = $oldImg[0]/2 - $oldImg[1]/2;
  193. $startHeight = 0;
  194. }
  195. imagecopyresampled($thumb,$sourceImg,0,0,$startWidth,$startHeight,$width,$height,$newSize,$newSize);
  196. switch($type) {
  197. case "image/jpeg": imagejpeg($thumb,$newUrl,$thumbQuality); break;
  198. case "image/png": imagepng($thumb,$newUrl); break;
  199. case "image/gif": imagegif($thumb,$newUrl); break;
  200. default: return false;
  201. }
  202. return true;
  203. }
  204. // Session Functions
  205. function login($loginUser, $loginPassword) {
  206. global $user, $password;
  207. if(($loginUser == $user) && ($loginPassword == $password)){
  208. $_SESSION['login'] = true;
  209. return true;
  210. } else {
  211. return false;
  212. }
  213. }
  214. function logout() {
  215. session_destroy();
  216. return true;
  217. }
  218. // Album Functions
  219. function addAlbum($title) {
  220. $title = mysql_escape_string($title);
  221. $sysdate = date("d.m.Y");
  222. $query = "INSERT INTO albums (title, sysdate) VALUES ('$title', '$sysdate');";
  223. $result = mysql_query($query);
  224. if(!$result) return false;
  225. return mysql_insert_id();
  226. }
  227. function getAlbums() {
  228. $return = array(array());
  229. $query = "SELECT id, title, sysdate FROM albums ORDER BY id DESC;";
  230. $result = mysql_query($query) OR die("Error: $result <br>".mysql_error());
  231. $i=0;
  232. while($row = mysql_fetch_object($result)) {
  233. $return[$i]['id'] = $row->id;
  234. $return[$i]['title'] = $row->title;
  235. $return[$i]['sysdate'] = $row->sysdate;
  236. $albumID = $row->id;
  237. $query = "SELECT thumbUrl FROM photos WHERE album = '$albumID' ORDER BY id DESC LIMIT 0, 3;";
  238. $result2 = mysql_query($query);
  239. $k = 0;
  240. while($row2 = mysql_fetch_object($result2)){
  241. $return[$i]["thumb$k"] = $row2->thumbUrl;
  242. $k++;
  243. }
  244. if(!isset($return[$i]["thumb0"]))$return[$i]["thumb0"]="";
  245. if(!isset($return[$i]["thumb1"]))$return[$i]["thumb1"]="";
  246. if(!isset($return[$i]["thumb2"]))$return[$i]["thumb2"]="";
  247. $i++;
  248. }
  249. if($i==0) return false;
  250. return $return;
  251. }
  252. function getSmartInfo() {
  253. $return = array();
  254. $query = "SELECT * FROM photos WHERE album = 0 ORDER BY id DESC;";
  255. $result = mysql_query($query);
  256. $i = 0;
  257. while($row = mysql_fetch_object($result)) {
  258. if($i<3) $return["unsortThumb$i"] = $row->thumbUrl;
  259. $i++;
  260. }
  261. $return['unsortNum'] = $i;
  262. $query2 = "SELECT * FROM photos WHERE public = 1 ORDER BY id DESC;";
  263. $result2 = mysql_query($query2);
  264. $i = 0;
  265. while($row2 = mysql_fetch_object($result2)) {
  266. if($i<3) $return["publicThumb$i"] = $row2->thumbUrl;
  267. $i++;
  268. }
  269. $return['publicNum'] = $i;
  270. $query3 = "SELECT * FROM photos WHERE star = 1 ORDER BY id DESC;";
  271. $result3 = mysql_query($query3);
  272. $i = 0;
  273. while($row3 = mysql_fetch_object($result3)) {
  274. if($i<3) $return["starredThumb$i"] = $row3->thumbUrl;
  275. $i++;
  276. }
  277. $return['starredNum'] = $i;
  278. return $return;
  279. }
  280. function getAlbumInfo($albumID) {
  281. $return = array();
  282. $query = "SELECT * FROM albums WHERE id = '$albumID';";
  283. $result = mysql_query($query);
  284. $row = mysql_fetch_object($result);
  285. $return['title'] = $row->title;
  286. $return['date'] = $row->sysdate;
  287. $return['star'] = $row->star;
  288. $return['public'] = $row->public;
  289. $query = "SELECT COUNT(*) AS num FROM photos WHERE album = '$albumID';";
  290. $result = mysql_query($query);
  291. $row = mysql_fetch_object($result);
  292. $return['num'] = $row->num;
  293. return $return;
  294. }
  295. function setAlbumTitle($albumID, $title) {
  296. $title = mysql_real_escape_string(urldecode($title));
  297. if(strlen($title)<3||strlen($title)>30) return false;
  298. $query = "UPDATE albums SET title = '$title' WHERE id = '$albumID';";
  299. $result = mysql_query($query);
  300. if(!$result) return false;
  301. return true;
  302. }
  303. function deleteAlbum($albumID, $delAll) {
  304. if($delAll=="true") {
  305. $query = "SELECT id FROM photos WHERE album = '$albumID';";
  306. $result = mysql_query($query);
  307. $error = false;
  308. while($row = mysql_fetch_object($result)) {
  309. if(!deletePhoto($row->id)) $error = true;
  310. }
  311. } else {
  312. $query = "UPDATE photos SET album = '0' WHERE album = '$albumID';";
  313. $result = mysql_query($query);
  314. if(!$result) return false;
  315. }
  316. if($albumID!=0) {
  317. $query = "DELETE FROM albums WHERE id = '$albumID';";
  318. $result = mysql_query($query);
  319. if(!$result) return false;
  320. }
  321. if($error) return false;
  322. return true;
  323. }
  324. function getAlbumArchive($albumID) {
  325. switch($albumID) {
  326. case 's':
  327. $query = "SELECT * FROM photos WHERE public = '1';";
  328. $zipTitle = "Public";
  329. break;
  330. case 'f':
  331. $query = "SELECT * FROM photos WHERE star = '1';";
  332. $zipTitle = "Starred";
  333. break;
  334. default:
  335. $query = "SELECT * FROM photos WHERE album = '$albumID';";
  336. $zipTitle = "Unsorted";
  337. }
  338. $result = mysql_query($query);
  339. $files = array();
  340. $i=0;
  341. while($row = mysql_fetch_object($result)) {
  342. $files[$i] = "../".$row->url;
  343. $i++;
  344. }
  345. $query = "SELECT * FROM albums WHERE id = '$albumID';";
  346. $result = mysql_query($query);
  347. $row = mysql_fetch_object($result);
  348. if($albumID!=0&&is_numeric($albumID))$zipTitle = $row->title;
  349. $filename = "./".$zipTitle.".zip";
  350. $zip = new ZipArchive();
  351. if ($zip->open($filename, ZIPARCHIVE::CREATE)!==TRUE) {
  352. return false;
  353. }
  354. foreach($files AS $zipFile) {
  355. $newFile = explode("/",$zipFile);
  356. $newFile = array_reverse($newFile);
  357. $zip->addFile($zipFile, $zipTitle."/".$newFile[0]);
  358. }
  359. $zip->close();
  360. header("Content-Type: application/zip");
  361. header("Content-Disposition: attachment; filename=\"$zipTitle.zip\"");
  362. readfile($filename);
  363. unlink($filename);
  364. return true;
  365. }
  366. // Photo Functions
  367. function getPhotos($albumID) {
  368. switch($albumID) {
  369. case "f": $query = "SELECT * FROM photos WHERE star = 1 ORDER BY id DESC;";
  370. break;
  371. case "s": $query = "SELECT * FROM photos WHERE public = 1 ORDER BY id DESC;";
  372. break;
  373. default: $query = "SELECT * FROM photos WHERE album = '$albumID' ORDER BY id DESC;";
  374. }
  375. $result = mysql_query($query);
  376. $return = array(array());
  377. $i = 0;
  378. while($row = mysql_fetch_array($result)) {
  379. $return[$i] = $row;
  380. $i++;
  381. }
  382. if($i==0) return false;
  383. return $return;
  384. }
  385. function getPhotoInfo($photoID) {
  386. $query = "SELECT * FROM photos WHERE id = '$photoID';";
  387. $result = mysql_query($query);
  388. $return = mysql_fetch_array($result);
  389. return $return;
  390. }
  391. function downloadPhoto($photoID) {
  392. $query = "SELECT * FROM photos WHERE id = '$photoID';";
  393. $result = mysql_query($query);
  394. $row = mysql_fetch_object($result);
  395. $photo = "../".$row->url;
  396. $title = $row->title;
  397. $type = "appcication/zip";
  398. $filename = "./imageDownload.zip";
  399. $zip = new ZipArchive();
  400. if ($zip->open($filename, ZIPARCHIVE::CREATE)!==TRUE) return false;
  401. $newFile = explode("/",$photo);
  402. $newFile = array_reverse($newFile);
  403. $zip->addFile($photo, $title.$newFile[0]);
  404. $zip->close();
  405. header("Content-Type: $type");
  406. header("Content-Disposition: attachment; filename=\"$title.zip\"");
  407. readfile($filename);
  408. unlink($filename);
  409. return true;
  410. }
  411. function countPhotos() {
  412. $query = "SELECT COUNT(*) AS num FROM photos;";
  413. $result = mysql_query($query);
  414. $row = mysql_fetch_object($result);
  415. return $row->num;
  416. }
  417. function setPhotoPublic($photoID, $url) {
  418. $query = "SELECT public, shortlink FROM photos WHERE id = '$photoID';";
  419. $row = mysql_fetch_object(mysql_query($query));
  420. if($row->public == 0){
  421. $public = 1;
  422. }else{
  423. $public = 0;
  424. }
  425. if(preg_match('/localhost/', $_SERVER['HTTP_REFERER'])) {
  426. $shortlink = "";
  427. }else{
  428. if($row->shortlink==""){
  429. $shortlink = urlShortner($url);
  430. }else{
  431. $shortlink = $row->shortlink;
  432. }
  433. }
  434. $query = "UPDATE photos SET public = '$public', shortlink = '$shortlink' WHERE id = '$photoID';";
  435. $result = mysql_query($query);
  436. if(!$result) return false;
  437. return true;
  438. }
  439. function setPhotoStar($photoID) {
  440. $query = "SELECT star FROM photos WHERE id = '$photoID';";
  441. $row = mysql_fetch_object(mysql_query($query));
  442. if($row->star == 0) {
  443. $star = 1;
  444. } else {
  445. $star = 0;
  446. }
  447. $query = "UPDATE photos SET star = '$star' WHERE id = '$photoID';";
  448. $result = mysql_query($query);
  449. return true;
  450. }
  451. function nextPhoto($photoID, $albumID) {
  452. switch($albumID) {
  453. case 'f': $query = "SELECT * FROM photos WHERE id < '$photoID' AND star = '1' ORDER BY id DESC LIMIT 0, 1;";
  454. break;
  455. case 's': $query = "SELECT * FROM photos WHERE id < '$photoID' AND public = '1' ORDER BY id DESC LIMIT 0, 1;";
  456. break;
  457. default: $query = "SELECT * FROM photos WHERE id < '$photoID' AND album = '$albumID' ORDER BY id DESC LIMIT 0, 1;";
  458. }
  459. $result = mysql_query($query);
  460. $return = mysql_fetch_array($result);
  461. if(!$return || ($return==0)) {
  462. switch($albumID) {
  463. case 'f': $query = "SELECT * FROM photos WHERE star = '1' ORDER BY id DESC LIMIT 0, 1;";
  464. break;
  465. case 's': $query = "SELECT * FROM photos WHERE public = '1' ORDER BY id DESC LIMIT 0, 1;";
  466. break;
  467. default: $query = "SELECT * FROM photos WHERE album = '$albumID' ORDER BY id DESC LIMIT 0, 1;";
  468. }
  469. $result = mysql_query($query);
  470. $return = mysql_fetch_array($result);
  471. }
  472. return $return;
  473. }
  474. function previousPhoto($photoID, $albumID) {
  475. switch($albumID) {
  476. case 'f': $query = "SELECT * FROM photos WHERE id > '$photoID' AND star = '1' LIMIT 0, 1;";
  477. break;
  478. case 's': $query = "SELECT * FROM photos WHERE id > '$photoID' AND public = '1' LIMIT 0, 1;";
  479. break;
  480. default: $query = "SELECT * FROM photos WHERE id > '$photoID' AND album = '$albumID' LIMIT 0, 1;";
  481. }
  482. $result = mysql_query($query);
  483. $return = mysql_fetch_array($result);
  484. if(!$return || ($return==0)) {
  485. switch($albumID) {
  486. case 'f': $query = "SELECT * FROM photos WHERE star = '1' ORDER BY id LIMIT 0, 1;";
  487. break;
  488. case 's': $query = "SELECT * FROM photos WHERE public = '1' ORDER BY id LIMIT 0, 1;";
  489. break;
  490. default: $query = "SELECT * FROM photos WHERE album = '$albumID' ORDER BY id LIMIT 0, 1;";
  491. }
  492. $result = mysql_query($query);
  493. $return = mysql_fetch_array($result);
  494. }
  495. return $return;
  496. }
  497. function movePhoto($photoID, $newAlbum) {
  498. $query = "UPDATE photos SET album = '$newAlbum' WHERE id = '$photoID';";
  499. $result = mysql_query($query);
  500. if(!$result) return false;
  501. else return true;
  502. }
  503. function setPhotoTitle($photoID, $title) {
  504. $title = mysql_real_escape_string(urldecode($title));
  505. if(strlen($title)>30) return false;
  506. $query = "UPDATE photos SET title = '$title' WHERE id = '$photoID';";
  507. $result = mysql_query($query);
  508. if(!$result) return false;
  509. else return true;
  510. }
  511. function setPhotoDescription($photoID, $description) {
  512. $description = mysql_real_escape_string(htmlentities($description));
  513. if(strlen($description)>160) return false;
  514. $query = "UPDATE photos SET description = '$description' WHERE id = '$photoID';";
  515. $result = mysql_query($query);
  516. if(!$result) return false;
  517. return true;
  518. }
  519. function deletePhoto($photoID) {
  520. $query = "SELECT * FROM photos WHERE id = '$photoID';";
  521. $result = mysql_query($query);
  522. if(!$result) return false;
  523. $row = mysql_fetch_object($result);
  524. $unlink1 = unlink("../".$row->url);
  525. $unlink2 = unlink("../".$row->thumbUrl);
  526. if(!$unlink1 || !$unlink2) return false;
  527. $query = "DELETE FROM photos WHERE id = '$photoID';";
  528. $result = mysql_query($query);
  529. if(!$result) return false;
  530. return true;
  531. }
  532. // Share Functions
  533. function urlShortner($url) {
  534. global $bitlyUsername, $bitlyApi;
  535. if($bitlyUsername==""||$bitlyApi=="") return false;
  536. $url = urlencode($url);
  537. $bitlyAPI = "http://api.bit.ly/shorten?version=2.0.1&format=xml&longUrl=$url&login=$bitlyUsername&apiKey=$bitlyApi";
  538. $data = file_get_contents($bitlyAPI);
  539. $xml = simplexml_load_string($data);
  540. $shortlink = $xml->results->nodeKeyVal->shortUrl;
  541. return $shortlink;
  542. }
  543. function sharePhoto($photoID, $url) {
  544. $query = "SELECT * FROM photos WHERE id = '$photoID'";
  545. $result = mysql_query($query);
  546. $row = mysql_fetch_object($result);
  547. $thumb = "http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']."/../../".$row->thumbUrl;
  548. $title = $row->title;
  549. $description = $row->description;
  550. $shortlink = $row->shortlink;
  551. $twitterUrl = "https://twitter.com/share?url=".urlencode("$url");
  552. $facebookUrl = "http://www.facebook.com/sharer.php?u=".urlencode("$url")."&t=".urlencode($title);
  553. $tumblrUrl = "http://www.tumblr.com/share/link?url=".urlencode("$url")."&name=". urlencode($title)."&description=".urlencode($description);
  554. $pinterestUrl = "http://pinterest.com/pin/create/button/?url=".urlencode("$url")."&media=".urlencode($thumb);
  555. $mailUrl = "mailto:?subject=".rawurlencode($title)."&body=".rawurlencode("Hey guy! Check this out: $url");
  556. $share = array();
  557. $share['twitter'] = $twitterUrl;
  558. $share['facebook'] = $facebookUrl;
  559. $share['tumblr'] = $tumblrUrl;
  560. $share['pinterest'] = $pinterestUrl;
  561. $share['mail'] = $mailUrl;
  562. $share['shortlink'] = $shortlink;
  563. return $share;
  564. }
  565. function facebookHeader($photoID) {
  566. if(!is_numeric($photoID)) return false;
  567. dbConnect();
  568. $query = "SELECT * FROM photos WHERE id = '$photoID';";
  569. $result = mysql_query($query);
  570. $row = mysql_fetch_object($result);
  571. $parseUrl = parse_url("http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']);
  572. $thumb = $parseUrl['scheme']."://".$parseUrl['host'].$parseUrl['path']."/../".$row->thumbUrl;
  573. $return = '<meta name="title" content="'.$row->title.'" />';
  574. $return .= '<meta name="description" content="'.$row->description.' - via Lychee" />';
  575. $return .= '<link rel="image_src" type="image/jpeg" href="'. $thumb .'" />';
  576. return $return;
  577. }
  578. function isPhotoPublic($photoID) {
  579. $query = "SELECT * FROM photos WHERE id = '$photoID';";
  580. $result = mysql_query($query);
  581. $row = mysql_fetch_object($result);
  582. if($row->public == 1) return true;
  583. return false;
  584. }
  585. // Search Function
  586. function search($term) {
  587. $term = mysql_real_escape_string($term);
  588. $query = "SELECT * FROM photos WHERE title like '%$term%' OR description like '%$term%';";
  589. $result = mysql_query($query);
  590. while($row = mysql_fetch_array($result)) {
  591. $return['photos'][] = $row;
  592. }
  593. $query = "SELECT * FROM albums WHERE title like '%$term%';";
  594. $result = mysql_query($query);
  595. $i=0;
  596. while($row = mysql_fetch_array($result)) {
  597. $return['albums'][$i] = $row;
  598. $query = "SELECT thumbUrl FROM photos WHERE album = '".$row['id']."' ORDER BY id DESC LIMIT 0, 3;";
  599. $result2 = mysql_query($query);
  600. $k = 0;
  601. while($row2 = mysql_fetch_object($result2)){
  602. $return['albums'][$i]["thumb$k"] = $row2->thumbUrl;
  603. $k++;
  604. }
  605. }
  606. return $return;
  607. }
  608. ?>