Merge branch 'devel' of dev.sourcefabric.org:airtime into devel

This commit is contained in:
martin 2011-05-19 16:58:51 -04:00
commit d2e3129613
9 changed files with 182 additions and 51 deletions

41
CREDITS
View File

@ -2,14 +2,19 @@
CREDITS
=======
Version 1.8.0
Version 1.8.2
-------------
Welcome to James Moon!
Naomi Aro (naomi.aro@sourcefabric.org)
Role: Software Developer
Martin Konecny (martin.konecny@sourcefabric.org)
Role: Software Developer
James Moon (james.moon@sourcefabric.org)
Role: Software Developer
Ofir Gal (ofir.gal@sourcefabric.org)
Role: QA
@ -19,30 +24,25 @@ Daniel James
Paul Baranowski (paul.baranowski@sourcefabric.org)
Role: Project Manager
Vladimir Stefanovic (vladimir.stefanovic@sourcefabric.org)
Role: User Interface Designer
Version 1.8.1
-------------
Same as previous version.
Version 1.8.0
-------------
Same as previous version.
Version 1.7.0
-------------
Naomi Aro (naomi.aro@sourcefabric.org)
Role: Software Developer
Martin Konecny (martin.konecny@sourcefabric.org)
Role: Software Developer
Ofir Gal (ofir.gal@sourcefabric.org)
Role: QA
Daniel James
Role: Documentor & QA
Paul Baranowski (paul.baranowski@sourcefabric.org)
Role: Project Manager
Same as previous version.
Version 1.6.1
-------------
Version 1.6.1 fixes a problem with playout being interrupted after 48
hours. It also fixes some security issues.
Same as previous version.
Version 1.6.0
-------------
@ -69,6 +69,9 @@ Martin Konecny (martin.konecny@sourcefabric.org)
- New User Interface
- Scheduler/Backend
Vladimir Stefanovic (vladimir.stefanovic@sourcefabric.org)
Role: User Interface Designer
Ofir Gal (ofir.gal@sourcefabric.org)
Role: QA

View File

@ -1,3 +1,34 @@
1.8.2 - May 25, 2011
Highlights:
* Improvements:
- You can now download audio files from the search screen and from the "Show Content" screen.
- The "Now Playing" screen now shows whether a show is being recorded.
- In the "Playlist Builder" screen, you can now edit the title of the playlist and the description inline, without having to switch to another page.
- When you click on "Add Show", the cursor is placed on the show title field and a default name is automatically filled in.
- It is now possible to cancel a show that was recording.
- An new command-line program was added to verify an installation and help identify where problems are: "airtime-check-system"
- Airtime now runs on Ubuntu 11.04 (though we do not offer support for this).
* Bug fixes:
- Fixed serious problem with the upgrading and installing process. The Airtime install will now automatically detect if you should upgrade or install and take the appropriate action. Reinstalls cannot happen except by using a specific command.
- "Show Contents" screen will now display properly on smaller screens.
- Install/uninstall now works on Debian without needing the "sudo" command.
- Editing a playlist name or deleting a playlist now reflects immediately in the media search window.
- In the "Add Media" page, the "start upload" button vanished after upload. Now it remains there after upload so it is possible to upload again.
- When canceling a playing show, the currently playing audio file still showed as playing. This has been fixed.
- Audio files greater than 100MB were not being played.
1.8.1 - May 2, 2011
* Fixed issue where an track's progress bar would keep updating, even if the track was no longer playing.
* Fixed problem where editing a show would only update some of the show instances.
* Fixed an issue related to editing a show that had instances scheduled in the past.
* airtime-clean-storage command-line utility should now work properly
* Fixed an issue related the "airtime-import" command-line utility
* Fixed an issue with the Airtime Debian package overwriting configuration files
* Fixed some database install issues on Debian
* Fixed an issue with show names and foreign characters causing the show to not start (temporarily disabled allowing the usage of these characters)
1.8.0 - April 19, 2011
* The biggest feature of this release is the ability to edit shows. You can
change everything from Name, Description, and URL, to repeat and
@ -26,38 +57,38 @@
"airtime-pypo-stop", "airtime-show-recorder-start", and
"airtime-show-recorder-stop".
* Bug fixes:
* CC-2192 Schedule sent to pypo is not sorted by start time.
* CC-2175 Overbooking: Cut off shows when they are done
* CC-2174 Need formatting and a warning icon for the message for overbooking a show
* CC-2039 Upload file: file name cropped
* CC-2177 Schedule editing does not work under Firefox 4
- CC-2192 Schedule sent to pypo is not sorted by start time.
- CC-2175 Overbooking: Cut off shows when they are done
- CC-2174 Need formatting and a warning icon for the message for overbooking a show
- CC-2039 Upload file: file name cropped
- CC-2177 Schedule editing does not work under Firefox 4
1.7.0 - April 4, 2011
* Recording and automatic scheduling/broadcasting of live shows
o Recording/rebroadcast status of a show is shown in "Now Playing" and "Calendar"
o Can rebroadcast a show at multiple times and dates
- Recording/rebroadcast status of a show is shown in "Now Playing" and "Calendar"
- Can rebroadcast a show at multiple times and dates
* Automatic upload of recorded shows to Soundcloud
* Frontend JQuery widgets for public-facing websites to show your visitors what's playing and the upcoming schedule.
* Ability to over-book a show and automatically cut and fade out song if it goes beyond the show time
* Ability to delete audio files
* Ability to cancel the currently playing show
* Any changes to the schedule are immediately seen by the playout engine
o In version 1.6, you had to make sure that your show was ready to go 30 seconds before it started.
- In version 1.6, you had to make sure that your show was ready to go 30 seconds before it started.
* Upgrade support (should be able to upgrade from any version, unlike 1.6.1 which required an uninstall of 1.6.0 first)
* "Now Playing" list view:
o audio items are now grouped by show.
o If a show is not fully scheduled, the user is notified how many seconds of silence are at the end of the show in this View.
o Audio items that play past the show's end time have a visual notification that they will be cut off
- audio items are now grouped by show.
- If a show is not fully scheduled, the user is notified how many seconds of silence are at the end of the show in this View.
- Audio items that play past the show's end time have a visual notification that they will be cut off
* Ability to change metadata tag display format for web streams
* Config files moved to /etc/airtime. This means all config files are in one convenient location and separated from the code, so you can upgrade your code independently of your config files.
* Redesign of Preferences screen
* Bug fixes:
o CC-2082 OGG stream dies after every song when using MPlayer
o CC-1894 Warn users about time zone differences or clock drift problems on the server
o CC-2058 Utilities are not in the system $PATH
o CC-2051 Unable to change user password
o CC-2030 Icon needed for Cue In/Out
o CC-1955 Special character support in the library search
- CC-2082 OGG stream dies after every song when using MPlayer
- CC-1894 Warn users about time zone differences or clock drift problems on the server
- CC-2058 Utilities are not in the system $PATH
- CC-2051 Unable to change user password
- CC-2030 Icon needed for Cue In/Out
- CC-1955 Special character support in the library search
1.6.1 - Feb 23, 2011
Bug fixes:

View File

@ -86,6 +86,25 @@ Non-linked code:
- Web site: http://www.eyecon.ro/colorpicker/
- License: Dual licensed under the MIT and GPL licenses.
* Context Menu
- Web site: http://jursza.net/dev/jjmenu/
- License: MIT [http://www.opensource.org/licenses/mit-license.php]
* PLUpload
- Web site: http://www.plupload.com
- License: GPLv2
* jPlayer
- Web site: http://www.jplayer.org/
- License: Dual licensed under the MIT and GPL licenses.
* qtip
- Web site: http://craigsworks.com/projects/qtip/
- License: MIT
* TimePicker
- Web site: http://fgelinas.com/code/timepicker/
- License: Dual licensed under the MIT or GPL Version 2 licenses.

View File

@ -6,10 +6,6 @@
* /etc/airtime/recorder.cfg
*/
define('AIRTIME_VERSION', '1.8.2');
define('AIRTIME_COPYRIGHT_DATE', '2010-2011');
define('AIRTIME_REST_VERSION', '1.1');
global $CC_CONFIG;
$CC_CONFIG = array(

View File

@ -1,5 +1,9 @@
<?php
define('AIRTIME_VERSION', '1.8.2');
define('AIRTIME_COPYRIGHT_DATE', '2010-2011');
define('AIRTIME_REST_VERSION', '1.1');
// Metadata Keys
define('UI_MDATA_KEY_TITLE', 'dc:title');
define('UI_MDATA_KEY_CREATOR', 'dc:creator');

View File

@ -5,6 +5,7 @@ set_include_path(__DIR__.'/../airtime_mvc/library' . PATH_SEPARATOR . get_includ
require_once(dirname(__FILE__).'/include/AirtimeIni.php');
require_once(dirname(__FILE__).'/include/AirtimeInstall.php');
require_once(AirtimeInstall::GetAirtimeSrcDir().'/application/configs/constants.php');
require_once(AirtimeInstall::GetAirtimeSrcDir().'/application/configs/conf.php');
echo PHP_EOL."*** Database Installation ***".PHP_EOL;
@ -17,11 +18,14 @@ AirtimeInstall::DbConnect(true);
AirtimeInstall::InstallPostgresScriptingLanguage();
if ($databaseExisted){
if(isset($argv[1]) && $argv[1] == 'y') {
AirtimeInstall::CreateDatabaseTables();
}
else if ($databaseExisted){
//Database already exists. Ask the user how they want to
//proceed. Warn them that creating the database tables again
//will cause them to lose their old ones.
$userAnswer = "x";
while (!in_array($userAnswer, array("y", "Y", "n", "N", ""))) {
echo PHP_EOL."Database already exists. Do you want to delete all tables and recreate? (y/N)";
@ -30,7 +34,8 @@ if ($databaseExisted){
if (in_array($userAnswer, array("y", "Y"))) {
AirtimeInstall::CreateDatabaseTables();
}
} else {
}
else {
//Database was just created, meaning the tables do not
//exist. Let's create them.
AirtimeInstall::CreateDatabaseTables();

View File

@ -11,12 +11,52 @@ echo "******************************** Install Begin ***************************
require_once(dirname(__FILE__).'/include/AirtimeIni.php');
require_once(dirname(__FILE__).'/include/AirtimeInstall.php');
require_once(AirtimeInstall::GetAirtimeSrcDir().'/application/configs/constants.php');
AirtimeInstall::ExitIfNotRoot();
$version = AirtimeInstall::CheckForVersionBeforeInstall();
$turnOffPreserve = false;
//echo "Airtime version $version found.".PHP_EOL;
//echo "Airtime version ".AIRTIME_VERSION." found.".PHP_EOL;
require_once('Zend/Loader/Autoloader.php');
$autoloader = Zend_Loader_Autoloader::getInstance();
//a previous version exists.
if(isset($version) && $version != false && $version < AIRTIME_VERSION) {
echo "Airtime version $version found.".PHP_EOL;
try {
$opts = new Zend_Console_Getopt(
array(
'upgrade|u' => 'Upgrades Airtime Application.',
'install|i' => 'Installs Airtime Application.',
)
);
$opts->parse();
}
catch (Zend_Console_Getopt_Exception $e) {
exit($e->getMessage() ."\n\n". $e->getUsageMessage());
}
$userAnswer = "x";
while (!in_array($userAnswer, array("u", "U", "i", "I", ""))) {
echo PHP_EOL."You have an older version of Airtime Installed, would you like to (U)pgrade or do a fresh (I)nstall?";
$userAnswer = trim(fgets(STDIN));
}
if (in_array($userAnswer, array("u", "U"))) {
$command = "php airtime-upgrade.php";
system($command);
exit();
}
else if (in_array($userAnswer, array("i", "I"))) {
$turnOffPreserve = true;
}
}
try {
$opts = new Zend_Console_Getopt(
array(
@ -45,7 +85,7 @@ if (isset($opts->o)) {
$overwrite = true;
}
else if (!isset($opts->p) && !isset($opts->o)) {
if (AirtimeIni::IniFilesExist()) {
if (AirtimeIni::IniFilesExist() && !$turnOffPreserve) {
$userAnswer = "x";
while (!in_array($userAnswer, array("o", "O", "p", "P", ""))) {
echo PHP_EOL."You have existing config files. Do you want to (O)verwrite them, or (P)reserve them? (o/P) ";
@ -78,7 +118,12 @@ require_once(AirtimeInstall::GetAirtimeSrcDir().'/application/configs/conf.php')
echo "* Airtime Version: ".AIRTIME_VERSION.PHP_EOL;
if ($db_install) {
require( 'airtime-db-install.php' );
if($turnOffPreserve) {
system('php airtime-db-install.php y');
}
else {
system('php airtime-db-install.php');
}
}
AirtimeInstall::InstallStorageDirectory();
@ -99,7 +144,5 @@ system("python ".__DIR__."/../python_apps/show-recorder/install/recorder-install
//echo PHP_EOL."*** Media Monitor Installation ***".PHP_EOL;
//system("python ".__DIR__."/../python_apps/pytag-fs/install/media-monitor-install.py");
AirtimeInstall::SetAirtimeVersion(AIRTIME_VERSION);
echo "******************************* Install Complete *******************************".PHP_EOL;

View File

@ -15,6 +15,7 @@ if (!file_exists(AirtimeIni::CONF_FILE_AIRTIME)) {
echo "Most likely this means that Airtime is not installed, so there is nothing to do.".PHP_EOL.PHP_EOL;
exit();
}
require_once(AirtimeInstall::GetAirtimeSrcDir().'/application/configs/constants.php');
require_once(AirtimeInstall::GetAirtimeSrcDir().'/application/configs/conf.php');
echo PHP_EOL;

View File

@ -34,6 +34,35 @@ class AirtimeInstall
}
}
public static function CheckForVersionBeforeInstall()
{
global $CC_DBC, $CC_CONFIG;
$values = parse_ini_file('/etc/airtime/airtime.conf', true);
// Database config
$CC_CONFIG['dsn']['username'] = $values['database']['dbuser'];
$CC_CONFIG['dsn']['password'] = $values['database']['dbpass'];
$CC_CONFIG['dsn']['hostspec'] = $values['database']['host'];
$CC_CONFIG['dsn']['phptype'] = 'pgsql';
$CC_CONFIG['dsn']['database'] = $values['database']['dbname'];
$CC_DBC = DB::connect($CC_CONFIG['dsn'], FALSE);
if (PEAR::isError($CC_DBC)) {
echo "New Airtime Install.".PHP_EOL;
}
else {
$CC_DBC->setFetchMode(DB_FETCHMODE_ASSOC);
$sql = "SELECT valstr FROM cc_pref WHERE keystr = 'system_version'";
$version = $CC_DBC->GetOne($sql);
if (PEAR::isError($version)) {
return null;
}
return $version;
}
}
public static function DbTableExists($p_name)
{
@ -142,7 +171,7 @@ class AirtimeInstall
}
}
public static function CreateDatabase()
{
global $CC_CONFIG;
@ -153,7 +182,7 @@ class AirtimeInstall
$username = $CC_CONFIG['dsn']['username'];
#$command = "echo \"CREATE DATABASE $database OWNER $username\" | su postgres -c psql 2>/dev/null";
$command = "su postgres -c \"createdb $database --owner $username\"";
@exec($command, $output, $results);
if ($results == 0) {
echo "* Database '{$CC_CONFIG['dsn']['database']}' created.".PHP_EOL;
@ -166,9 +195,9 @@ class AirtimeInstall
echo "* Database '{$CC_CONFIG['dsn']['database']}' already exists.".PHP_EOL;
}
}
$databaseExisted = ($results != 0);
return $databaseExisted;
}