Merge branch 'devel' of dev.sourcefabric.org:airtime into devel
This commit is contained in:
commit
0386f8a9cb
|
@ -21,9 +21,9 @@ class AudiopreviewController extends Zend_Controller_Action
|
|||
{
|
||||
global $CC_CONFIG;
|
||||
|
||||
$audioFileID = $this->_getParam('audioFileID');
|
||||
$audioFileID = $this->_getParam('audioFileID');
|
||||
$audioFileArtist = $this->_getParam('audioFileArtist');
|
||||
$audioFileTitle = $this->_getParam('audioFileTitle');
|
||||
$audioFileTitle = $this->_getParam('audioFileTitle');
|
||||
$type = $this->_getParam('type');
|
||||
|
||||
$request = $this->getRequest();
|
||||
|
@ -47,23 +47,23 @@ class AudiopreviewController extends Zend_Controller_Action
|
|||
}
|
||||
|
||||
if ($type == "audioclip") {
|
||||
$uri = "/api/get-media/file/".$audioFileID;
|
||||
$uri = "/api/get-media/file/".$audioFileID;
|
||||
$media = Application_Model_StoredFile::Recall($audioFileID);
|
||||
$mime = $media->getPropelOrm()->getDbMime();
|
||||
$mime = $media->getPropelOrm()->getDbMime();
|
||||
} elseif ($type == "stream") {
|
||||
$webstream = CcWebstreamQuery::create()->findPk($audioFileID);
|
||||
$uri = $webstream->getDbUrl();
|
||||
$mime = $webstream->getDbMime();
|
||||
$uri = $webstream->getDbUrl();
|
||||
$mime = $webstream->getDbMime();
|
||||
} else {
|
||||
throw new Exception("Unknown type for audio preview!");
|
||||
throw new Exception("Unknown type for audio preview!.Type=$type");
|
||||
}
|
||||
|
||||
$this->view->uri = $uri;
|
||||
$this->view->mime = $mime;
|
||||
$this->view->audioFileID = $audioFileID;
|
||||
$this->view->uri = $uri;
|
||||
$this->view->mime = $mime;
|
||||
$this->view->audioFileID = $audioFileID;
|
||||
$this->view->audioFileArtist = $audioFileArtist;
|
||||
$this->view->audioFileTitle = $audioFileTitle;
|
||||
$this->view->type = $type;
|
||||
$this->view->audioFileTitle = $audioFileTitle;
|
||||
$this->view->type = $type;
|
||||
|
||||
$this->_helper->viewRenderer->setRender('audio-preview');
|
||||
}
|
||||
|
|
|
@ -35,17 +35,6 @@ class WebstreamController extends Zend_Controller_Action
|
|||
$webstream->setDbUtime(new DateTime("now", new DateTimeZone('UTC')));
|
||||
$webstream->setDbMtime(new DateTime("now", new DateTimeZone('UTC')));
|
||||
|
||||
/*
|
||||
$type = "stream";
|
||||
$objInfo = Application_Model_Library::getObjInfo($type);
|
||||
|
||||
$obj = new $objInfo['className']($webstream);
|
||||
$obj->setName($webstream->getDbName());
|
||||
$obj->setMetadata('dc:creator', $userInfo->id);
|
||||
|
||||
$type = "stream";
|
||||
Application_Model_Library::changePlaylist($obj->getId(), $type);
|
||||
*/
|
||||
//clear the session in case an old playlist was open: CC-4196
|
||||
Application_Model_Library::changePlaylist(null, null);
|
||||
|
||||
|
|
|
@ -399,6 +399,17 @@ SQL;
|
|||
$this->_file->save();
|
||||
}
|
||||
|
||||
|
||||
public function getRealFileExtension() {
|
||||
$path = $this->_file->getDbFilepath();
|
||||
$path_elements = explode('.', $path);
|
||||
if (count($path_elements) < 2) {
|
||||
return "";
|
||||
} else {
|
||||
return $path_elements[count($path_elements) - 1];
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Return suitable extension.
|
||||
*
|
||||
|
@ -407,9 +418,15 @@ SQL;
|
|||
*/
|
||||
public function getFileExtension()
|
||||
{
|
||||
return "";
|
||||
// TODO : what's the point of having this function? Can we not just use
|
||||
// the extension from the file_path column from cc_files?
|
||||
$possible_ext = $this->getRealFileExtension();
|
||||
if ($possible_ext !== "") {
|
||||
return $possible_ext;
|
||||
}
|
||||
|
||||
|
||||
// We fallback to guessing the extension from the mimetype if we
|
||||
// cannot extract it from the file name
|
||||
|
||||
$mime = $this->_file->getDbMime();
|
||||
|
||||
if ($mime == "audio/ogg" || $mime == "application/ogg") {
|
||||
|
@ -565,7 +582,7 @@ SQL;
|
|||
/**
|
||||
* Fetch the Application_Model_StoredFile by looking up its filepath.
|
||||
*
|
||||
* @param string $p_filepath path of file stored in Airtime.
|
||||
* @param string $p_filepath path of file stored in Airtime.
|
||||
* @return Application_Model_StoredFile|NULL
|
||||
*/
|
||||
public static function RecallByFilepath($p_filepath)
|
||||
|
@ -661,21 +678,21 @@ SQL;
|
|||
$fileSelect[] = $key;
|
||||
$streamSelect[] = "NULL::NUMERIC AS ".$key;
|
||||
} elseif ($key === "lptime") {
|
||||
$plSelect[] = "NULL::TIMESTAMP AS ".$key;
|
||||
$blSelect[] = "NULL::TIMESTAMP AS ".$key;
|
||||
$fileSelect[] = $key;
|
||||
$plSelect[] = "NULL::TIMESTAMP AS ".$key;
|
||||
$blSelect[] = "NULL::TIMESTAMP AS ".$key;
|
||||
$fileSelect[] = $key;
|
||||
$streamSelect[] = $key;
|
||||
}
|
||||
//same columns in each table.
|
||||
else if (in_array($key, array("length", "utime", "mtime"))) {
|
||||
$plSelect[] = $key;
|
||||
$blSelect[] = $key;
|
||||
$fileSelect[] = $key;
|
||||
$plSelect[] = $key;
|
||||
$blSelect[] = $key;
|
||||
$fileSelect[] = $key;
|
||||
$streamSelect[] = $key;
|
||||
} elseif ($key === "year") {
|
||||
$plSelect[] = "EXTRACT(YEAR FROM utime)::varchar AS ".$key;
|
||||
$blSelect[] = "EXTRACT(YEAR FROM utime)::varchar AS ".$key;
|
||||
$fileSelect[] = "year AS ".$key;
|
||||
$plSelect[] = "EXTRACT(YEAR FROM utime)::varchar AS ".$key;
|
||||
$blSelect[] = "EXTRACT(YEAR FROM utime)::varchar AS ".$key;
|
||||
$fileSelect[] = "year AS ".$key;
|
||||
$streamSelect[] = "EXTRACT(YEAR FROM utime)::varchar AS ".$key;
|
||||
}
|
||||
//need to cast certain data as ints for the union to search on.
|
||||
|
@ -712,6 +729,7 @@ SQL;
|
|||
$unionTable = "({$plTable} UNION {$blTable} UNION {$fileTable} UNION {$streamTable}) AS RESULTS";
|
||||
|
||||
//choose which table we need to select data from.
|
||||
// TODO : use constants instead of numbers -- RG
|
||||
switch ($type) {
|
||||
case 0:
|
||||
$fromTable = $unionTable;
|
||||
|
@ -1039,12 +1057,14 @@ SQL;
|
|||
{
|
||||
$con = Propel::getConnection();
|
||||
|
||||
$sql = "SELECT id, filepath as fp"
|
||||
." FROM CC_FILES"
|
||||
." WHERE directory = :dir_id"
|
||||
." AND file_exists = 'TRUE'"
|
||||
." AND replay_gain is NULL"
|
||||
." LIMIT :lim";
|
||||
$sql = <<<SQL
|
||||
SELECT id,
|
||||
filepath AS fp
|
||||
FROM cc_files
|
||||
WHERE directory = :dir_id
|
||||
AND file_exists = 'TRUE'
|
||||
AND replay_gain IS NULL LIMIT :lim
|
||||
SQL;
|
||||
|
||||
$stmt = $con->prepare($sql);
|
||||
$stmt->bindParam(':dir_id', $dir_id);
|
||||
|
@ -1153,6 +1173,8 @@ SQL;
|
|||
return $this->_file->getDbFileExists();
|
||||
}
|
||||
|
||||
|
||||
// note: never call this method from controllers because it does a sleep
|
||||
public function uploadToSoundCloud()
|
||||
{
|
||||
global $CC_CONFIG;
|
||||
|
@ -1164,11 +1186,11 @@ SQL;
|
|||
if (Application_Model_Preference::GetUploadToSoundcloudOption()) {
|
||||
for ($i=0; $i<$CC_CONFIG['soundcloud-connection-retries']; $i++) {
|
||||
$description = $file->getDbTrackTitle();
|
||||
$tag = array();
|
||||
$genre = $file->getDbGenre();
|
||||
$release = $file->getDbYear();
|
||||
$tag = array();
|
||||
$genre = $file->getDbGenre();
|
||||
$release = $file->getDbYear();
|
||||
try {
|
||||
$soundcloud = new Application_Model_Soundcloud();
|
||||
$soundcloud = new Application_Model_Soundcloud();
|
||||
$soundcloud_res = $soundcloud->uploadTrack(
|
||||
$this->getFilePath(), $this->getName(), $description,
|
||||
$tag, $release, $genre);
|
||||
|
@ -1178,9 +1200,10 @@ SQL;
|
|||
break;
|
||||
} catch (Services_Soundcloud_Invalid_Http_Response_Code_Exception $e) {
|
||||
$code = $e->getHttpCode();
|
||||
$msg = $e->getHttpBody();
|
||||
$msg = $e->getHttpBody();
|
||||
// TODO : Do not parse JSON by hand
|
||||
$temp = explode('"error":',$msg);
|
||||
$msg = trim($temp[1], '"}');
|
||||
$msg = trim($temp[1], '"}');
|
||||
$this->setSoundCloudErrorCode($code);
|
||||
$this->setSoundCloudErrorMsg($msg);
|
||||
// setting sc id to -3 which indicates error
|
||||
|
|
|
@ -39,7 +39,7 @@ class Application_Model_Webstream implements Application_Model_LibraryEditable
|
|||
|
||||
public function getLastModified($p_type)
|
||||
{
|
||||
return "modified";
|
||||
return $this->webstream->getDbMtime();
|
||||
}
|
||||
|
||||
public function getDefaultLength()
|
||||
|
@ -215,15 +215,16 @@ class Application_Model_Webstream implements Application_Model_LibraryEditable
|
|||
return true;
|
||||
}
|
||||
|
||||
// TODO : properly implement this interface
|
||||
// TODO : Fix this interface
|
||||
public function setMetadata($key, $val)
|
||||
{
|
||||
throw new Exception("setMetadata is not imeplemented by WebStream yet");
|
||||
//This function should not be defined in the interface.
|
||||
throw new Exception("Not implemented.");
|
||||
}
|
||||
|
||||
public function setName($name)
|
||||
{
|
||||
throw new Exception("setName is not imeplemented by WebStream yet");
|
||||
$this->webstream->setDbName($name);
|
||||
}
|
||||
|
||||
public function setLastPlayed($timestamp)
|
||||
|
@ -243,8 +244,6 @@ class Application_Model_Webstream implements Application_Model_LibraryEditable
|
|||
//TODO: What if invalid url?
|
||||
$content = curl_exec($ch);
|
||||
|
||||
Logging::debug($content);
|
||||
|
||||
// close cURL resource, and free up system resources
|
||||
curl_close($ch);
|
||||
|
||||
|
|
|
@ -64,7 +64,7 @@ var AIRTIME = (function(AIRTIME) {
|
|||
helper : function() {
|
||||
|
||||
var $el = $(this), selected = mod
|
||||
.getChosenAudioFilesLength(), container, message, li = $("#side_playlist ul li:first"), width = li
|
||||
.getChosenAudioFilesLength(), container, message, li = $("#side_playlist ul[id='spl_sortable'] li:first"), width = li
|
||||
.width(), height = li.height();
|
||||
|
||||
// dragging an element that has an unselected
|
||||
|
|
|
@ -82,36 +82,6 @@ SCRIPT=`readlink -f $0`
|
|||
SCRIPTPATH=`dirname $SCRIPT`
|
||||
AIRTIMEROOT=$SCRIPTPATH/../
|
||||
|
||||
#Check if required zend mvc library is present. This is a temporary workaround for 2.0.1,
|
||||
#and we should probably create a separate file that checks whether ALL dependencies are satisfied before
|
||||
#allowing the install to continue. However in that case, we wouldn't check for Debian packages so that we
|
||||
#can become less Debian platform dependent in the future...
|
||||
|
||||
set +e
|
||||
dpkg -l | grep zendframework > /dev/null 2>&1
|
||||
ZENDFRAMEWORK=$?
|
||||
|
||||
dpkg -l | grep libzend-framework-php > /dev/null 2>&1
|
||||
LIBZEND=$?
|
||||
|
||||
dpkg -l | grep lsof > /dev/null 2>&1
|
||||
LSOF_EXIST=$?
|
||||
|
||||
dpkg -l | grep sudo > /dev/null 2>&1
|
||||
SUDO_EXIST=$?
|
||||
|
||||
set -e
|
||||
|
||||
if [ "$ZENDFRAMEWORK" != "0" -a "$LIBZEND" != "0" ]; then
|
||||
echo "zendframework/libzend-framework-php package missing. Please run airtime-full-install"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ "$LSOF_EXIST" != "0" -o "$SUDO_EXIST" != "0" ]; then
|
||||
echo "Packages missing. Please run airtime-full-install"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "* Making sure /etc/default/locale is set properly"
|
||||
set +e
|
||||
update-locale
|
||||
|
|
|
@ -32,7 +32,7 @@ airtime2mutagen = {
|
|||
"MDATA_KEY_MOOD" : "mood",
|
||||
"MDATA_KEY_TRACKNUMBER" : "tracknumber",
|
||||
"MDATA_KEY_BPM" : "bpm",
|
||||
"MDATA_KEY_LABEL" : "organization",
|
||||
"MDATA_KEY_LABEL" : "label",
|
||||
"MDATA_KEY_COMPOSER" : "composer",
|
||||
"MDATA_KEY_ENCODER" : "encodedby",
|
||||
"MDATA_KEY_CONDUCTOR" : "conductor",
|
||||
|
|
|
@ -66,6 +66,7 @@ class Organizer(ReportHandler,Loggable):
|
|||
|
||||
# See hack in mmp.magic_move
|
||||
def new_dir_watch(d):
|
||||
# TODO : rewrite as return lambda : dispatcher.send(...
|
||||
def cb():
|
||||
dispatcher.send(signal="add_subwatch", sender=self,
|
||||
directory=d)
|
||||
|
|
Loading…
Reference in New Issue