224 lines
		
	
	
		
			6.6 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			224 lines
		
	
	
		
			6.6 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| include_once("global.inc");
 | |
| $json = file_get_contents("php://input");
 | |
| $data = json_decode($json,true);
 | |
| $command = $data['command'];
 | |
| 
 | |
| if ($command == '')
 | |
| {
 | |
| 	exit();
 | |
| }
 | |
| 
 | |
| // API stuff for songbook mobile apps
 | |
| 
 | |
| if ($command == "venueExists")
 | |
| {
 | |
| 	$venueUrlName = $data['venueUrlName'];
 | |
| 	$exists = venueExists($venueUrlName);
 | |
| 	$output = array('command'=>$command,'error'=>'false', 'exists'=>$exists);
 | |
|         print(json_encode($output,JSON_PRETTY_PRINT|JSON_UNESCAPED_SLASHES));
 | |
|         exit();
 | |
| 
 | |
| }
 | |
| 
 | |
| if ($command == "venueAccepting")
 | |
| {
 | |
| 	if (getAccepting())
 | |
|         	$output = array('command'=>$command,'accepting'=>true);
 | |
| 	else
 | |
| 		$output = array('command'=>$command,'accepting'=>false);
 | |
|         header('Content-type: application/json');
 | |
|         print(json_encode($output,JSON_PRETTY_PRINT|JSON_UNESCAPED_SLASHES));
 | |
|         exit();
 | |
| }
 | |
| 
 | |
| if ($command == "submitRequest")
 | |
| {
 | |
| 	$songId = $data['songId'];
 | |
| 	$singerName = $data['singerName'];
 | |
| 	$sql = "SELECT artist,title FROM songdb WHERE song_id = $songId";
 | |
| 	foreach ($db->query($sql) as $row) {
 | |
|         	$artist = $row['artist'];
 | |
|         	$title = $row['title'];
 | |
| 	}
 | |
| 	$stmt = $db->prepare("INSERT INTO requests (singer,artist,title) VALUES(:singerName, :artist, :title)");
 | |
| 	$stmt->execute(array(":singerName" => $singerName, ":artist" => $artist, ":title" => $title));
 | |
| 	newSerial();
 | |
| 	$output = array('command'=>$command,'error'=>'false', 'success'=>true);
 | |
|         print(json_encode($output,JSON_PRETTY_PRINT|JSON_UNESCAPED_SLASHES));
 | |
| 	exit();
 | |
| }
 | |
| 
 | |
| if ($command == "search")
 | |
| {
 | |
| 	$terms = explode(' ',$data['searchString']);
 | |
| 	$no = count($terms);
 | |
| 	$wherestring = '';
 | |
| 	if ($no == 1) {
 | |
| 	        $wherestring = "WHERE (combined LIKE \"%" . $terms[0] . "%\")";
 | |
| 	} elseif ($no >= 2) { 
 | |
| 	        foreach ($terms as $i => $term) {
 | |
| 		     if ($i == 0) {
 | |
| 	                $wherestring .= "WHERE ((combined LIKE \"%" . $term . "%\")";
 | |
| 	            }
 | |
| 	            if (($i > 0) && ($i < $no - 1)) {
 | |
| 	                $wherestring .= " AND (combined LIKE \"%" . $term . "%\")";
 | |
| 	            }
 | |
| 	            if ($i == $no - 1) {
 | |
| 	                $wherestring .= " AND (combined LIKE \"%" . $term . "%\") AND(artist<>'DELETED'))";
 | |
| 	            }
 | |
| 	        }
 | |
| 	} else {
 | |
| 	        $wherestring = "";
 | |
| 	}
 | |
| 	$entries = null;
 | |
| 	$res = array();
 | |
| 	$sql = "SELECT song_id,artist,title,combined FROM songdb $wherestring ORDER BY UPPER(artist), UPPER(title)";
 | |
| 	foreach ($db->query($sql) as $row)
 | |
| 	{
 | |
| 	    if ((stripos($row['combined'],'wvocal') === false) && (stripos($row['combined'],'w-vocal') === false) && (stripos($row['combined'],'vocals') === false)) {
 | |
| 	            $res[] = array('song_id'=>$row['song_id'],'artist'=>$row['artist'],'title'=>$row['title']);
 | |
| 	    }
 | |
| 	}
 | |
| 	$output = array("command" => "search", "songs" => $res);
 | |
| 	header('Content-type: application/json');
 | |
| 	print(json_encode($output,JSON_PRETTY_PRINT|JSON_UNESCAPED_SLASHES));
 | |
| 	exit();
 | |
| }
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| // API stuff for OpenKJ application
 | |
| 
 | |
| if ($command == "clearDatabase")
 | |
| {
 | |
| 	$db->exec("DELETE FROM songdb");
 | |
| 	$db->exec("DELETE FROM requests");
 | |
| 	$newSerial = newSerial();
 | |
| 	$output = array('command'=>$command,'error'=>'false', 'serial'=>newSerial());
 | |
| 	print(json_encode($output,JSON_PRETTY_PRINT|JSON_UNESCAPED_SLASHES));
 | |
| 	exit();
 | |
| }
 | |
| 
 | |
| function error($error_string) {
 | |
|         header('Content-type: application/json');
 | |
|         print(json_encode(array('command'=>$command,'error'=>'true','errorString'=>$error_string),JSON_PRETTY_PRINT|JSON_UNESCAPED_SLASHES));
 | |
| 	exit();
 | |
| }
 | |
| 
 | |
| if ($command == "clearRequests")
 | |
| {
 | |
| 	$db->exec("DELETE FROM requests");
 | |
|         $output = array('command'=>$command,'error'=>'false', 'serial'=>newSerial());
 | |
|         print(json_encode($output,JSON_PRETTY_PRINT|JSON_UNESCAPED_SLASHES));
 | |
| 	exit();
 | |
| }
 | |
| 
 | |
| if ($command == "deleteRequest")
 | |
| {
 | |
| 	$request_id = $data['request_id'];
 | |
| 	$stmt = $db->prepare("DELETE FROM requests WHERE request_id = :requestId");
 | |
| 	$stmt->execute(array(":requestId" => $request_id));
 | |
|         $output = array('command'=>$command,'error'=>'false', 'serial'=>newSerial());
 | |
|         print(json_encode($output,JSON_PRETTY_PRINT|JSON_UNESCAPED_SLASHES));
 | |
| 	exit();
 | |
| }
 | |
| 
 | |
| if ($command == "connectionTest")
 | |
| {
 | |
| 	header('Content-type: application/json');
 | |
| 	$output = array('command'=>$command,'connection'=>'ok');
 | |
| 	print(json_encode($output,JSON_PRETTY_PRINT|JSON_UNESCAPED_SLASHES));
 | |
| 	exit();
 | |
| }
 | |
| if ($command == "addSongs")
 | |
| {
 | |
| 	$stmt = $db->prepare("INSERT OR IGNORE INTO songdb (artist, title, combined) VALUES (:artist, :title, :combined)");
 | |
| 	$db->beginTransaction();
 | |
| 	$errors = array();
 | |
| 	$count = 0;
 | |
| 	$artist = "";
 | |
| 	$title = "";
 | |
| 	$combined = "";
 | |
| 	$error = "false";
 | |
| 	foreach ($data['songs'] as $song)
 | |
| 	{
 | |
| 		$artist = $song['artist'];
 | |
| 		$title = $song['title'];
 | |
| 		$combined = $artist . " " . $title;
 | |
| 		$inarray = array(":artist" => $artist, ":title" => $title, ":combined" => $combined);
 | |
| 		$result = $stmt->execute($inarray);
 | |
| 		if ($result === false)
 | |
| 		{
 | |
| 			$errors[] = $db->errorInfo();
 | |
| 			$error = "true";
 | |
| 		}
 | |
| 		$count++;
 | |
| 	}
 | |
| 	$result = $db->commit();
 | |
| 	if ($result == false)
 | |
| 		$errors[] = $db->errorInfo();
 | |
| 	$output['command'] = $command;
 | |
| 	$output['error'] = $error;
 | |
| 	$output['errors'] = $errors;
 | |
| 	$output['entries processed'] = $count;
 | |
| 	$output['last_artist'] = $artist;
 | |
| 	$output['last_title'] = $title;
 | |
| 	header('Content-type: application/json');
 | |
| 	print(json_encode($output,JSON_PRETTY_PRINT|JSON_UNESCAPED_SLASHES));
 | |
| 	exit();
 | |
| }
 | |
| 
 | |
| if ($command == "getSerial")
 | |
| {
 | |
| 	$output = array('command'=>$command,'serial'=>getSerial(),'error'=>'false');
 | |
| 	header('Content-type: application/json');
 | |
| 	print(json_encode($output,JSON_PRETTY_PRINT|JSON_UNESCAPED_SLASHES));
 | |
| 	exit();
 | |
| }
 | |
| 
 | |
| if ($command == "getAccepting")
 | |
| {
 | |
| 	$accepting = getAccepting();
 | |
| 	$output = array('command'=>$command,'accepting'=>$venue['accepting'],'venue_id'=>0);
 | |
| 	header('Content-type: application/json');
 | |
| 	print(json_encode($output,JSON_PRETTY_PRINT|JSON_UNESCAPED_SLASHES));
 | |
| 	exit();
 | |
| }
 | |
| 
 | |
| if ($command == "setAccepting")
 | |
| {
 | |
| 	$accepting = (bool)$data['accepting'];
 | |
|         setAccepting($accepting);
 | |
| 	$newSerial = newSerial();
 | |
| 	$output = array('command'=>$command,'error'=>'false','venue_id'=>0,'accepting'=>$accepting,'serial'=>$newSerial);
 | |
|         print(json_encode($output,JSON_PRETTY_PRINT|JSON_UNESCAPED_SLASHES));
 | |
|         exit();
 | |
| }
 | |
| 
 | |
| if ($command == "getVenues")
 | |
| {
 | |
| 	$output = getVenues();
 | |
| 	$output['command'] = $command;
 | |
| 	$output['error'] = 'false';
 | |
| 	header('Content-type: application/json');
 | |
|         print(json_encode($output,JSON_PRETTY_PRINT|JSON_UNESCAPED_SLASHES));
 | |
| 	exit();
 | |
| }
 | |
| 
 | |
| if ($command == "getRequests")
 | |
| {
 | |
| 	$serial = getSerial();
 | |
| 	$output = getRequests();
 | |
| 	$output['command'] = $command;
 | |
| 	$output['error'] = 'false';
 | |
| 	$output['serial'] = $serial;
 | |
| 	header('Content-type: application/json');
 | |
| 	print(json_encode($output,JSON_PRETTY_PRINT|JSON_UNESCAPED_SLASHES));
 | |
| 	exit();
 | |
| }
 | |
| 
 | |
| ?>
 |