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: '."/"); ?>