accessRawAudioData($sessid, $gunid); if(PEAR::isError($lnk)) return $lnk; // return tmpurl, fname, md5h $url = $this->_lnk2url($lnk); $md5h = $this->_md5sum($lnk); return array('url'=>$url, 'md5h'=>$md5h, 'fname'=>basename($lnk)); } /** * Close download */ function downloadClose($sessid, $url) { // release $lnk = $this->_url2lnk($url); $res = $this->releaseRawAudioData($sessid, $lnk); return $res; } /** * Open upload */ function uploadOpen($sessid, $gunid) { $fname = "{$this->storageDir}/buffer/$gunid"; if(!$fp = fopen($fname, 'w')) return PEAR::raiseError( "Archive::uploadOpen: unable to create blank file" ); fclose($fp); $res = $this->storeAudioClip($sessid, $gunid, $fname, ''); if(PEAR::isError($res)) return $res; $lnk = $this->accessRawAudioData($sessid, $gunid); if(PEAR::isError($lnk)) return $lnk; $url = $this->_lnk2url($lnk); return array('url'=>$url); } /** * Abort upload */ function uploadAbort($sessid, $url) { $lnk = $this->_url2lnk($url); $res = $this->releaseRawAudioData($sessid, $lnk); return $res; } /** * Check upload */ function uploadCheck($sessid, $url) { $lnk = $this->_url2lnk($url); $md5h = $this->_md5sum($lnk); $size = filesize($lnk); return array('md5h'=>$md5h, 'size'=>$size, 'url'=>$url); } /** * Close upload */ function uploadClose($sessid, $url, $type='file') { switch($type){ default: // case"file": // release $lnk = $this->_url2lnk($url); $res = $this->releaseRawAudioData($sessid, $lnk); return $res; break; case"search": // localSearch // return results break; } } /** * Translate local symlink to URL * */ function _lnk2url($lnk) { return "http://{$this->config['archiveUrlHost']}:{$this->config['archiveUrlPort']}". "{$this->config['archiveUrlPath']}/access/".basename($lnk); } /** * Traslate URL to local symlink * */ function _url2lnk($url) { return $this->accessDir."/".basename($url); } function _md5sum($fpath) { $md5h = `md5sum $fpath`; $arr = split(' ', $md5h); return $arr[0]; } } ?>