Merge branch 'master' of dev.sourcefabric.org:campcaster

This commit is contained in:
naomiaro 2011-03-23 23:37:01 -04:00
commit e57b18168a
8 changed files with 64 additions and 37 deletions

View file

@ -1,7 +1,7 @@
<?php <?php
require_once (__DIR__."/configs/navigation.php"); require_once __DIR__."/configs/navigation.php";
require_once (__DIR__."/configs/ACL.php"); require_once __DIR__."/configs/ACL.php";
require_once 'propel/runtime/lib/Propel.php'; require_once 'propel/runtime/lib/Propel.php';
Propel::init(__DIR__."/configs/airtime-conf.php"); Propel::init(__DIR__."/configs/airtime-conf.php");
@ -10,8 +10,8 @@ Propel::init(__DIR__."/configs/airtime-conf.php");
$tz = ini_get('date.timezone') ? ini_get('date.timezone') : 'UTC'; $tz = ini_get('date.timezone') ? ini_get('date.timezone') : 'UTC';
date_default_timezone_set($tz); date_default_timezone_set($tz);
require_once (__DIR__."/configs/constants.php"); require_once __DIR__."/configs/constants.php";
require_once (__DIR__."/configs/conf.php"); require_once __DIR__."/configs/conf.php";
require_once 'DB.php'; require_once 'DB.php';
require_once 'Soundcloud.php'; require_once 'Soundcloud.php';
@ -21,7 +21,7 @@ require_once 'Schedule.php';
require_once 'Shows.php'; require_once 'Shows.php';
require_once 'Users.php'; require_once 'Users.php';
require_once 'RabbitMq.php'; require_once 'RabbitMq.php';
require_once __DIR__.'/controllers/plugins/RabbitMqPlugin.php';
global $CC_CONFIG, $CC_DBC; global $CC_CONFIG, $CC_DBC;
$dsn = $CC_CONFIG['dsn']; $dsn = $CC_CONFIG['dsn'];
@ -36,6 +36,9 @@ $CC_DBC->setFetchMode(DB_FETCHMODE_ASSOC);
//Zend_Session::start(); //Zend_Session::start();
Zend_Validate::setDefaultNamespaces("Zend"); Zend_Validate::setDefaultNamespaces("Zend");
$front = Zend_Controller_Front::getInstance();
$front->registerPlugin(new RabbitMqPlugin());
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{ {
protected function _initDoctype() protected function _initDoctype()
@ -48,9 +51,7 @@ class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
protected function _initHeadLink() protected function _initHeadLink()
{ {
$view = $this->getResource('view'); $view = $this->getResource('view');
$view->headLink()->appendStylesheet('/css/redmond/jquery-ui-1.8.8.custom.css'); $view->headLink()->appendStylesheet('/css/redmond/jquery-ui-1.8.8.custom.css');
$this->view->headLink()->appendStylesheet('/css/pro_dropdown_3.css'); $this->view->headLink()->appendStylesheet('/css/pro_dropdown_3.css');
$this->view->headLink()->appendStylesheet('/css/styles.css'); $this->view->headLink()->appendStylesheet('/css/styles.css');
} }
@ -70,14 +71,17 @@ class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
$view->headScript()->appendFile('/js/airtime/common/common.js','text/javascript'); $view->headScript()->appendFile('/js/airtime/common/common.js','text/javascript');
} }
protected function _initViewHelpers(){ protected function _initViewHelpers()
{
$view = $this->getResource('view'); $view = $this->getResource('view');
$view->addHelperPath('../application/views/helpers', 'Airtime_View_Helper'); $view->addHelperPath('../application/views/helpers', 'Airtime_View_Helper');
} }
protected function _initTitle(){ protected function _initTitle()
{
$view = $this->getResource('view'); $view = $this->getResource('view');
$view->headTitle(Application_Model_Preference::GetHeadTitle()); $view->headTitle(Application_Model_Preference::GetHeadTitle());
} }
} }

View file

@ -0,0 +1,9 @@
<?php
class RabbitMqPlugin extends Zend_Controller_Plugin_Abstract
{
public function dispatchLoopShutdown()
{
RabbitMq::PushScheduleFinal();
}
}

View file

@ -68,12 +68,13 @@ class Application_Form_AddUser extends Zend_Form
$this->addElement($jabber); $this->addElement($jabber);
$select = new Zend_Form_Element_Select('type'); $select = new Zend_Form_Element_Select('type');
$select->setLabel('User Type:');
$select->setAttrib('class', 'input_select'); $select->setAttrib('class', 'input_select');
$select->setAttrib('style', 'width: 40%'); $select->setAttrib('style', 'width: 40%');
$select->setMultiOptions(array( $select->setMultiOptions(array(
"A" => "admin",
"H" => "host",
"G" => "guest", "G" => "guest",
"H" => "host",
"A" => "admin"
)); ));
$select->setRequired(true); $select->setRequired(true);
$this->addElement($select); $this->addElement($select);

View file

@ -3,14 +3,24 @@ require_once 'php-amqplib/amqp.inc';
class RabbitMq class RabbitMq
{ {
static private $doPush = FALSE;
/**
* Sets a flag to push the schedule at the end of the request.
*/
public static function PushSchedule() {
RabbitMq::$doPush = TRUE;
}
/** /**
* Push the current schedule to RabbitMQ, to be picked up by Pypo. * Push the current schedule to RabbitMQ, to be picked up by Pypo.
* Will push the schedule in the range from 24 hours ago to 24 hours * Will push the schedule in the range from 24 hours ago to 24 hours
* in the future. * in the future.
*/ */
public static function PushSchedule() { public static function PushScheduleFinal()
{
global $CC_CONFIG; global $CC_CONFIG;
if (RabbitMq::$doPush) {
$conn = new AMQPConnection($CC_CONFIG["rabbitmq"]["host"], $conn = new AMQPConnection($CC_CONFIG["rabbitmq"]["host"],
$CC_CONFIG["rabbitmq"]["port"], $CC_CONFIG["rabbitmq"]["port"],
$CC_CONFIG["rabbitmq"]["user"], $CC_CONFIG["rabbitmq"]["user"],
@ -28,6 +38,7 @@ class RabbitMq
$channel->close(); $channel->close();
$conn->close(); $conn->close();
} }
}
} }

View file

@ -716,7 +716,7 @@ class Schedule {
$result['stream_metadata'] = array(); $result['stream_metadata'] = array();
$result['stream_metadata']['format'] = Application_Model_Preference::GetStreamLabelFormat(); $result['stream_metadata']['format'] = Application_Model_Preference::GetStreamLabelFormat();
$result['stream_metadata']['station_name'] = Application_Model_Preference::GetStationName(); $result['stream_metadata']['station_name'] = Application_Model_Preference::GetStationName();
$result['server_timezone'] = date_default_timezone_get(); $result['server_timezone'] = date('O');
return $result; return $result;
} }

View file

@ -43,6 +43,6 @@
<div id="jquery_jplayer_1" class="jp-jplayer" style="width:0px; height:0px;"></div> <div id="jquery_jplayer_1" class="jp-jplayer" style="width:0px; height:0px;"></div>
<div id="about-txt" style="display: none;"> <div id="about-txt" style="display: none;">
<a href="http://airtime.sourcefabric.org">Airtime</a>, the open radio software for scheduling and remote station management.<br> <a href="http://airtime.sourcefabric.org">Airtime</a> 1.7, the open radio software for scheduling and remote station management.<br>
© 2011 <a href="http://www.sourcefabric.org">Sourcefabric</a> o.p.s 2011. Airtime is distributed under the <a href="http://www.gnu.org/licenses/gpl-3.0-standalone.html">GNU GPL v.3</a> © 2011 <a href="http://www.sourcefabric.org">Sourcefabric</a> o.p.s 2011. Airtime is distributed under the <a href="http://www.gnu.org/licenses/gpl-3.0-standalone.html">GNU GPL v.3</a>
</div> </div>

View file

@ -38,16 +38,16 @@ try:
remove_path(BASE_PATH) remove_path(BASE_PATH)
print "Removing daemontool script pypo" print "Removing daemontool script pypo"
remove_path("rm -rf /etc/service/pypo") remove_path("/etc/service/pypo")
if os.path.exists("/etc/service/pypo-fetch"): if os.path.exists("/etc/service/pypo-fetch"):
remove_path("rm -rf /etc/service/pypo-fetch") remove_path("/etc/service/pypo-fetch")
if os.path.exists("/etc/service/pypo-push"): if os.path.exists("/etc/service/pypo-push"):
remove_path("rm -rf /etc/service/pypo-push") remove_path("/etc/service/pypo-push")
print "Removing daemontool script pypo-liquidsoap" print "Removing daemontool script pypo-liquidsoap"
remove_path("rm -rf /etc/service/pypo-liquidsoap") remove_path("/etc/service/pypo-liquidsoap")
remove_user("pypo") remove_user("pypo")
print "Uninstall complete." print "Uninstall complete."

View file

@ -11,6 +11,7 @@ import json
import telnetlib import telnetlib
import math import math
from threading import Thread from threading import Thread
from subprocess import Popen, PIPE
# For RabbitMQ # For RabbitMQ
from kombu.connection import BrokerConnection from kombu.connection import BrokerConnection
@ -78,13 +79,14 @@ class PypoFetch(Thread):
def check_matching_timezones(self, server_timezone): def check_matching_timezones(self, server_timezone):
logger = logging.getLogger('fetch') logger = logging.getLogger('fetch')
f = open('/etc/timezone', 'r')
pypo_timezone = f.readline().strip(' \t\n\r') process = Popen(["date", "+%z"], stdout=PIPE)
f.close() pypo_timezone = (process.communicate()[0]).strip(' \r\n\t')
if server_timezone != pypo_timezone: if server_timezone != pypo_timezone:
logger.error("Server and pypo timezones do not match. Audio playback may not start when expected!") logger.error("Server and pypo timezone offsets do not match. Audio playback may not start when expected!")
logger.error("Server timezone: %s", server_timezone) logger.error("Server timezone offset: %s", server_timezone)
logger.error("Pypo timezone: %s", pypo_timezone) logger.error("Pypo timezone offset: %s", pypo_timezone)
""" """
Process the schedule Process the schedule