88 lines
3.1 KiB
PHP
Executable File
88 lines
3.1 KiB
PHP
Executable File
<?php
|
|
session_start();
|
|
$root = realpath($_SERVER["DOCUMENT_ROOT"]);
|
|
require($root."/database/credentials.php");
|
|
|
|
ini_set('display_errors', 1);
|
|
ini_set('display_startup_errors', 1);
|
|
error_reporting(E_ALL);
|
|
|
|
// Connect the database
|
|
try {
|
|
$db = new PDO("mysql:host=$host;dbname=$database;charset=utf8",
|
|
$user,
|
|
$password,
|
|
array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
|
|
));
|
|
} catch (Exception $e) {
|
|
die("Error : ".$e->getMessage());
|
|
}
|
|
|
|
// /* Create Table if not exists */
|
|
// $sql = file_get_contents($root."/database/create_record.sql");
|
|
// $db->exec($sql);
|
|
|
|
$req = $db->prepare('SELECT id FROM `authors` WHERE username=:username');
|
|
$req->execute(array(
|
|
"username"=>$_SESSION['username']
|
|
));
|
|
if ($data = $req->fetch())
|
|
{
|
|
$id = $data['id'];
|
|
}
|
|
|
|
/** Retrieve .wav duration*/
|
|
$filepath = "$root/storage/records/".$_SESSION['observation']['file'];
|
|
|
|
function wavDur($file) {
|
|
$fp = fopen($file, 'r');
|
|
if (fread($fp,4) == "RIFF") {
|
|
fseek($fp, 20);
|
|
$rawheader = fread($fp, 16);
|
|
$header = unpack('vtype/vchannels/Vsamplerate/Vbytespersec/valignment/vbits',$rawheader);
|
|
$pos = ftell($fp);
|
|
while (fread($fp,4) != "data" && !feof($fp)) {
|
|
$pos++;
|
|
fseek($fp,$pos);
|
|
}
|
|
$rawheader = fread($fp, 4);
|
|
$data = unpack('Vdatasize',$rawheader);
|
|
$sec = $data['datasize']/$header['bytespersec'];
|
|
$minutes = intval(($sec / 60) % 60);
|
|
$seconds = intval($sec % 60);
|
|
return str_pad($minutes,2,"0", STR_PAD_LEFT).":".str_pad($seconds,2,"0", STR_PAD_LEFT);
|
|
}
|
|
}
|
|
|
|
$t = wavDur($filepath);
|
|
print_r($t);
|
|
try {
|
|
$req = $db->prepare('INSERT INTO `records` (author_id, recordist_name, file_name, license, species, subspecies, sound_type, duration, make, model, serial, sample_rate, time_expansion, country, lat, lng, date, time, remarks) VALUES ( :id, :recordist_name, :file_name, :license, :species, :subspecies, :sound_type, :duration, :make, :model, :serial, :sample_rate, :time_expansion, :country, :lat, :lng, :date, :time, :remarks)');
|
|
$req->execute(array(
|
|
"id"=>$id,
|
|
"recordist_name"=>$_SESSION['observation']['recordist-name'],
|
|
"file_name"=>$_SESSION['observation']['file'],
|
|
"license"=>$_SESSION['observation']['license'],
|
|
"species" => $_SESSION['observation']['species'],
|
|
"subspecies"=>$_SESSION['observation']['subspecies'],
|
|
"sound_type"=>implode(',', $_SESSION['observation']['type']),
|
|
"duration"=>$t,
|
|
"make"=>isset($_SESSION['observation']['make']) ? $_SESSION['observation']['make'] : "",
|
|
"model"=>isset($_SESSION['osbservation']['model']) ? $_SESSION['osbservation']['model'] : "",
|
|
"serial"=>isset($_SESSION['observation']['serial']) ? $_SESSION['observation']['serial'] : "",
|
|
"sample_rate"=>isset($_SESSION['observation']['sample_rate']) ? $_SESSION['observation']['sample_rate'] : 384,
|
|
"time_expansion"=>isset($_SESSION['observation']['time_expansion']) ? $_SESSION['observation']['time_expansion'] : 10,
|
|
"country"=>$_SESSION['observation']['country'],
|
|
"lat"=>$_SESSION['observation']['lat'],
|
|
"lng"=>$_SESSION['observation']['lng'],
|
|
"date"=>$_SESSION['observation']['date'],
|
|
"time"=>$_SESSION['observation']['time'],
|
|
"remarks"=>$_SESSION['observation']['remarks']
|
|
));
|
|
} catch (Exception $e) {
|
|
die("Error : ".$e->getMessage());
|
|
}
|
|
|
|
header('Location: '."/");
|
|
?>
|