/* do database query */
-if (isset($_REQUEST["P"]))
+if (isset($_REQUEST["S"]))
{
- $OFFSET = "".($_REQUEST["P"]*$N-$N);
+ /* single tag or part of tag */
+ $tag = sqlite_escape_string($_REQUEST["S"]);
- $result = $DB->query("SELECT * FROM photos LIMIT $OFFSET, $N");
+ $result = $DB->query("SELECT name FROM tags");
+ $count = $DB->query("SELECT 1");
}
-else if (isset($_REQUEST["T"]))
+else
{
- $result = $DB->query("SELECT count(*) as total FROM photos");
+ if (isset($_REQUEST["P"]))
+ $OFFSET = "".(intval($_REQUEST["P"])*$N-$N);
+ else
+ $OFFSET = "0";
+
+ if (isset($_REQUEST["T"]))
+ {
+ /* single tag or part of tag */
+ $tags = sqlite_escape_string($_REQUEST["T"]);
+ $tags = explode("+",$tags);
+ $tags = "'".implode("','",$tags)."'";
+
+ /* individual tags are seperated by '+' */
+ $result = $DB->query("SELECT base_uri, filename FROM photos ".
+ " left join photo_tags on photos.id=photo_tags.photo_id ".
+ " left join tags on tags.id=photo_tags.tag_id ".
+ " where tags.name in ($tags) LIMIT $OFFSET, $N");
+
+ $count = $DB->query("SELECT count(*) as total FROM photos ".
+ " left join photo_tags on photos.id=photo_tags.photo_id ".
+ " left join tags on tags.id=photo_tags.tag_id ".
+ " where tags.name in ($tags)");
+
+ }
+ else
+ {
+ $result = $DB->query("SELECT * FROM photos LIMIT $OFFSET, $N");
+ $count = $DB->query("SELECT count(*) as total FROM photos");
+ }
}
-else
- $result=null;
/* encode result as an array */
$tmp=array();
{
/* convert results into array */
while($res = $result->fetchArray(SQLITE3_ASSOC))
- {
- $tmp[]=$res;
- }
+ $tmp[]=$res;
}
else
{
foreach($result as $res)
- {
- $tmp[]=$res;
- }
+ $tmp[]=$res;
}
$result=$tmp;
-echo json_encode($result);
+/* encode count as an array */
+$tmp=array();
+if(!$usePDO)
+ {
+ /* convert results into array */
+ while($res = $count->fetchArray(SQLITE3_ASSOC))
+ $tmp[]=$res;
+ }
+else
+ {
+ foreach($count as $res)
+ $tmp[]=$res;
+ }
+$count=$tmp;
+
+$return=array($count,$result);
+
+echo json_encode($return);
/* close the database */
if($usePDO)