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
require_once (__DIR__."/configs/navigation.php");
require_once (__DIR__."/configs/ACL.php");
require_once __DIR__."/configs/navigation.php";
require_once __DIR__."/configs/ACL.php";
require_once 'propel/runtime/lib/Propel.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';
date_default_timezone_set($tz);
require_once (__DIR__."/configs/constants.php");
require_once (__DIR__."/configs/conf.php");
require_once __DIR__."/configs/constants.php";
require_once __DIR__."/configs/conf.php";
require_once 'DB.php';
require_once 'Soundcloud.php';
@ -21,7 +21,7 @@ require_once 'Schedule.php';
require_once 'Shows.php';
require_once 'Users.php';
require_once 'RabbitMq.php';
require_once __DIR__.'/controllers/plugins/RabbitMqPlugin.php';
global $CC_CONFIG, $CC_DBC;
$dsn = $CC_CONFIG['dsn'];
@ -36,6 +36,9 @@ $CC_DBC->setFetchMode(DB_FETCHMODE_ASSOC);
//Zend_Session::start();
Zend_Validate::setDefaultNamespaces("Zend");
$front = Zend_Controller_Front::getInstance();
$front->registerPlugin(new RabbitMqPlugin());
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
protected function _initDoctype()
@ -48,9 +51,7 @@ class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
protected function _initHeadLink()
{
$view = $this->getResource('view');
$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/styles.css');
}
@ -70,14 +71,17 @@ class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
$view->headScript()->appendFile('/js/airtime/common/common.js','text/javascript');
}
protected function _initViewHelpers(){
protected function _initViewHelpers()
{
$view = $this->getResource('view');
$view->addHelperPath('../application/views/helpers', 'Airtime_View_Helper');
}
protected function _initTitle(){
protected function _initTitle()
{
$view = $this->getResource('view');
$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);
$select = new Zend_Form_Element_Select('type');
$select->setLabel('User Type:');
$select->setAttrib('class', 'input_select');
$select->setAttrib('style', 'width: 40%');
$select->setMultiOptions(array(
"A" => "admin",
"H" => "host",
"G" => "guest",
"H" => "host",
"A" => "admin"
));
$select->setRequired(true);
$this->addElement($select);

View File

@ -3,30 +3,41 @@ require_once 'php-amqplib/amqp.inc';
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.
* Will push the schedule in the range from 24 hours ago to 24 hours
* in the future.
*/
public static function PushSchedule() {
public static function PushScheduleFinal()
{
global $CC_CONFIG;
$conn = new AMQPConnection($CC_CONFIG["rabbitmq"]["host"],
$CC_CONFIG["rabbitmq"]["port"],
$CC_CONFIG["rabbitmq"]["user"],
$CC_CONFIG["rabbitmq"]["password"]);
$channel = $conn->channel();
$channel->access_request($CC_CONFIG["rabbitmq"]["vhost"], false, false, true, true);
if (RabbitMq::$doPush) {
$conn = new AMQPConnection($CC_CONFIG["rabbitmq"]["host"],
$CC_CONFIG["rabbitmq"]["port"],
$CC_CONFIG["rabbitmq"]["user"],
$CC_CONFIG["rabbitmq"]["password"]);
$channel = $conn->channel();
$channel->access_request($CC_CONFIG["rabbitmq"]["vhost"], false, false, true, true);
$EXCHANGE = 'airtime-schedule';
$channel->exchange_declare($EXCHANGE, 'direct', false, true);
$EXCHANGE = 'airtime-schedule';
$channel->exchange_declare($EXCHANGE, 'direct', false, true);
$data = json_encode(Schedule::ExportRangeAsJson());
$msg = new AMQPMessage($data, array('content_type' => 'text/plain'));
$data = json_encode(Schedule::ExportRangeAsJson());
$msg = new AMQPMessage($data, array('content_type' => 'text/plain'));
$channel->basic_publish($msg, $EXCHANGE);
$channel->close();
$conn->close();
$channel->basic_publish($msg, $EXCHANGE);
$channel->close();
$conn->close();
}
}
}

View File

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

View File

@ -43,6 +43,6 @@
<div id="jquery_jplayer_1" class="jp-jplayer" style="width:0px; height:0px;"></div>
<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>
</div>

View File

@ -38,16 +38,16 @@ try:
remove_path(BASE_PATH)
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"):
remove_path("rm -rf /etc/service/pypo-fetch")
remove_path("/etc/service/pypo-fetch")
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"
remove_path("rm -rf /etc/service/pypo-liquidsoap")
remove_path("/etc/service/pypo-liquidsoap")
remove_user("pypo")
print "Uninstall complete."

View File

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