Merge branch 'master' of dev.sourcefabric.org:campcaster
Conflicts: pypo/tests/airtime-schedule-insert.php
This commit is contained in:
commit
f7aa3b37ef
|
@ -35,6 +35,7 @@
|
|||
<actionMethod actionName="delete"/>
|
||||
<actionMethod actionName="contents"/>
|
||||
<actionMethod actionName="editFileMd"/>
|
||||
<actionMethod actionName="quickSearch"/>
|
||||
</controllerFile>
|
||||
<controllerFile controllerName="Plupload">
|
||||
<actionMethod actionName="index"/>
|
||||
|
@ -45,6 +46,7 @@
|
|||
<actionMethod actionName="index"/>
|
||||
<actionMethod actionName="newfield"/>
|
||||
<actionMethod actionName="display"/>
|
||||
<actionMethod actionName="newgroup"/>
|
||||
</controllerFile>
|
||||
<controllerFile controllerName="Login">
|
||||
<actionMethod actionName="index"/>
|
||||
|
@ -85,6 +87,7 @@
|
|||
<formFile formName="AddShow"/>
|
||||
<formFile formName="ScheduleShow"/>
|
||||
<formFile formName="AddUser"/>
|
||||
<formFile formName="AdvancedSearchGroup"/>
|
||||
</formsDirectory>
|
||||
<layoutsDirectory enabled="false"/>
|
||||
<modelsDirectory/>
|
||||
|
@ -229,6 +232,12 @@
|
|||
<viewControllerScriptsDirectory forControllerName="Library">
|
||||
<viewScriptFile forActionName="editFileMd"/>
|
||||
</viewControllerScriptsDirectory>
|
||||
<viewControllerScriptsDirectory forControllerName="Library">
|
||||
<viewScriptFile forActionName="quickSearch"/>
|
||||
</viewControllerScriptsDirectory>
|
||||
<viewControllerScriptsDirectory forControllerName="Search">
|
||||
<viewScriptFile forActionName="newgroup"/>
|
||||
</viewControllerScriptsDirectory>
|
||||
</viewScriptsDirectory>
|
||||
<viewHelpersDirectory/>
|
||||
<viewFiltersDirectory enabled="false"/>
|
||||
|
|
9
CREDITS
9
CREDITS
|
@ -6,7 +6,8 @@ Version 1.6.0
|
|||
-------------
|
||||
This version marks a major change to the project, completely replacing the
|
||||
custom audio player with liquidsoap, dropping the custom desktop GUI, and
|
||||
completely rewriting the web interface.
|
||||
completely rewriting the web interface. The project has also been renamed
|
||||
from "Campcaster" to "Airtime" for this release.
|
||||
|
||||
Paul Baranowski (paul.baranowski@sourcefabric.org)
|
||||
Role: Project Lead / Software Developer
|
||||
|
@ -20,6 +21,12 @@ Naomi Aro (naomi.aro@sourcefabric.org)
|
|||
- New User Interface
|
||||
- Conversion to Propel DB backend
|
||||
|
||||
Martin Konecny (martin.konecny@sourcefabric.org)
|
||||
Role:Software Developer
|
||||
Highlights:
|
||||
- New User Interface
|
||||
- Scheduler
|
||||
|
||||
Daniel James
|
||||
Role: Documentor & QA
|
||||
|
||||
|
|
8
INSTALL
8
INSTALL
|
@ -2,22 +2,22 @@
|
|||
|
||||
Copyright (c) 2010 Sourcefabric O.P.S.
|
||||
|
||||
This file is part of the Campcaster project.
|
||||
This file is part of the Airtime project.
|
||||
http://campcaster.sourcefabric.org/
|
||||
To report bugs, send an e-mail to contact@sourcefabric.org
|
||||
|
||||
Campcaster is free software; you can redistribute it and/or modify
|
||||
Airtime is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
Campcaster is distributed in the hope that it will be useful,
|
||||
Airtime is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Campcaster; if not, write to the Free Software
|
||||
along with Airtime; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
|
75
README
75
README
|
@ -1,94 +1,45 @@
|
|||
=========================================================================
|
||||
========================== CAMPCASTER ===============================
|
||||
========================== AIRTIME =================================
|
||||
=========================================================================
|
||||
Campcaster is the first free and open radio management software that
|
||||
provides live studio broadcast capabilities as well as remote automation
|
||||
in one integrated system.
|
||||
Airtime is an open source application that provides remote automation
|
||||
of a radio station.
|
||||
|
||||
Campcaster has three audio outputs: one for live broadcasting, one for
|
||||
previewing audio, and one for automated scheduled playback.
|
||||
|
||||
Major features of Campcaster:
|
||||
* Live, in-studio playout. Campcaster Studio enables station personnel
|
||||
to play out both individual sound files and playlists such as
|
||||
advertising blocks or entire programs.
|
||||
Major features:
|
||||
* Web-based remote station management. Authorized personnel can add
|
||||
program material, create playlists, and schedule programming all via
|
||||
Campcaster's web interface.
|
||||
* Automation. Campcaster has a scheduler function that enables users to
|
||||
a web interface.
|
||||
* Automation. Airtime has a scheduler function that enables users to
|
||||
set playlists for playback at a date and time of their choosing.
|
||||
Playlists can be played back multiple times.
|
||||
* Playlists. Campcaster allows users to create playlists that can be
|
||||
* Playlists. Airtime allows users to create playlists that can be
|
||||
either played on-demand in the Studio or in automated mode. Playlists
|
||||
can be nested inside each other, so for example, a playlist with a
|
||||
block of ads can be inside of a playlist with a music program.
|
||||
* Centralized archives of station program material. Station personnel
|
||||
have a searchable, browseable central archive that is accessible both
|
||||
in the office and via the web.
|
||||
* Solid, fast playback. Campcaster uses the popular Gstreamer
|
||||
* Solid, fast playback. Airtime uses the open source Liquidsoap
|
||||
multimedia framework for clean, reliable, fast playback.
|
||||
* Program sharing. Stations can share both playlists and files with a
|
||||
designated, centralized 'network hub.' This enables the creation of
|
||||
'virtual radio networks' connected via the Internet.
|
||||
* Search-based backup. You can backup all station archives at the click
|
||||
of a button, or only backup certain files based on search terms, so
|
||||
that backup files can be made of only a certain program or of all
|
||||
files created by a certain user.
|
||||
* Localization. Campcaster is multilingual and supports Unicode. It
|
||||
also is very easy to create language localizations.
|
||||
* No restrictions. Multiple instances of the Campcaster Studio program
|
||||
can access the same archive on the office network, and there are no
|
||||
worries about hardware dongles or keys limiting access on multiple PCs.
|
||||
* Innovative design. Campcaster's user interface – the product of
|
||||
Parsons School of Design's “Design and Communication” program -
|
||||
introduces a number of innovations, including the 'Scratchpad',
|
||||
a list of recently-used files and playlists.
|
||||
* Open, extensible architecture. Stations are free to extend and alter
|
||||
all parts of the Campcaster program code, which makes extensive use
|
||||
of XML-RPC APIs.
|
||||
all parts of the program code.
|
||||
|
||||
|
||||
INSTALLATION
|
||||
------------
|
||||
Please see this page for a typical user installation:
|
||||
http://en.flossmanuals.net/Campcaster
|
||||
http://en.flossmanuals.net/Airtime
|
||||
|
||||
If you are a developer, please see this page:
|
||||
http://wiki.sourcefabric.org/display/CC/Campcaster+Dev+Site
|
||||
http://wiki.sourcefabric.org/display/CC/Airtime+Dev+Site
|
||||
|
||||
Quick links to our resources
|
||||
----------------------------
|
||||
User Manual: http://en.flossmanuals.net/Campcaster/Introduction
|
||||
User Manual: http://en.flossmanuals.net/Airtime/Introduction
|
||||
Forums and mailing lists: http://forum.sourcefabric.org
|
||||
Bug Tracking: http://dev.sourcefabric.org
|
||||
Code view/review: http://code.sourcefabric.org
|
||||
Public source code hosting: http://github.com/sourcefabric
|
||||
Download link: https://sourceforge.net/projects/campcaster/files/
|
||||
Download link: https://sourceforge.net/projects/airtime/files/
|
||||
Developer's wiki: http://wiki.sourcefabric.org
|
||||
|
||||
|
||||
|
||||
-------------------------------------------------------------------------
|
||||
|
||||
Copyright (c) 2010 Sourcefabric O.P.S.
|
||||
|
||||
This file is part of the Campcaster project.
|
||||
http://campcaster.sourcefabric.org/
|
||||
To report bugs, send an e-mail to campcaster-support@lists.sourcefabric.org
|
||||
|
||||
Campcaster is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
Campcaster is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Campcaster; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
-------------------------------------------------------------------------
|
||||
|
||||
|
|
|
@ -53,6 +53,8 @@ class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
|
|||
$view = $this->getResource('view');
|
||||
$view->headScript()->appendFile('/js/libs/jquery-1.4.4.min.js','text/javascript');
|
||||
$view->headScript()->appendFile('/js/libs/jquery-ui-1.8.7.custom.min.js','text/javascript');
|
||||
$view->headScript()->appendFile('/js/playlist/playlist.js','text/javascript');
|
||||
$view->headScript()->appendFile('/js/progressbar/jquery.progressbar.min.js','text/javascript');
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -12,9 +12,9 @@ resources.view[] =
|
|||
resources.db.adapter = "Pdo_Pgsql"
|
||||
resources.db.params.charset = "utf8"
|
||||
resources.db.params.host = "localhost"
|
||||
resources.db.params.username = "campcaster"
|
||||
resources.db.params.password = "campcaster"
|
||||
resources.db.params.dbname = "campcaster"
|
||||
resources.db.params.username = "airtime"
|
||||
resources.db.params.password = "airtime"
|
||||
resources.db.params.dbname = "airtime"
|
||||
|
||||
[staging : production]
|
||||
|
||||
|
|
|
@ -8,11 +8,11 @@ global $CC_CONFIG;
|
|||
$CC_CONFIG = array(
|
||||
// Database config
|
||||
'dsn' => array(
|
||||
'username' => 'campcaster',
|
||||
'password' => 'campcaster',
|
||||
'username' => 'airtime',
|
||||
'password' => 'airtime',
|
||||
'hostspec' => 'localhost',
|
||||
'phptype' => 'pgsql',
|
||||
'database' => 'campcaster',
|
||||
'database' => 'airtime',
|
||||
),
|
||||
|
||||
// Name of the web server user
|
||||
|
@ -173,4 +173,4 @@ set_include_path('.'.PATH_SEPARATOR.$CC_CONFIG['pearPath']
|
|||
//$CC_DBC->setFetchMode(DB_FETCHMODE_ASSOC);
|
||||
|
||||
|
||||
?>
|
||||
?>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<?php
|
||||
// This file generated by Propel 1.5.2 convert-conf target
|
||||
// from XML runtime conf file /home/naomiaro/dev-campcaster/campcaster/build/runtime-conf.xml
|
||||
// from XML runtime conf file /home/naomi/dev-campcaster/campcaster/build/runtime-conf.xml
|
||||
$conf = array (
|
||||
'datasources' =>
|
||||
array (
|
||||
|
|
|
@ -2,7 +2,9 @@
|
|||
|
||||
class LibraryController extends Zend_Controller_Action
|
||||
{
|
||||
|
||||
protected $pl_sess = null;
|
||||
|
||||
protected $search_sess = null;
|
||||
|
||||
public function init()
|
||||
|
@ -18,6 +20,7 @@ class LibraryController extends Zend_Controller_Action
|
|||
->addActionContext('upload', 'json')
|
||||
->addActionContext('delete', 'json')
|
||||
->addActionContext('context-menu', 'json')
|
||||
->addActionContext('quick-search', 'json')
|
||||
->initContext();
|
||||
|
||||
$this->pl_sess = new Zend_Session_Namespace(UI_PLAYLIST_SESSNAME);
|
||||
|
@ -26,16 +29,17 @@ class LibraryController extends Zend_Controller_Action
|
|||
|
||||
public function indexAction()
|
||||
{
|
||||
$this->view->headScript()->appendFile('/js/campcaster/onready/library.js','text/javascript');
|
||||
$this->view->headScript()->appendFile('/js/airtime/onready/library.js','text/javascript');
|
||||
$this->view->headScript()->appendFile('/js/contextmenu/jjmenu.js','text/javascript');
|
||||
$this->view->headLink()->appendStylesheet('/css/contextmenu.css');
|
||||
|
||||
$this->_helper->layout->setLayout('library');
|
||||
|
||||
unset($this->search_sess->page);
|
||||
unset($this->search_sess->md);
|
||||
unset($this->search_sess->order);
|
||||
|
||||
|
||||
$this->_helper->actionStack('contents', 'library');
|
||||
$this->_helper->actionStack('quick-search', 'library');
|
||||
$this->_helper->actionStack('index', 'sideplaylist');
|
||||
}
|
||||
|
||||
|
@ -59,7 +63,7 @@ class LibraryController extends Zend_Controller_Action
|
|||
}
|
||||
|
||||
$menu[] = array('action' => array('type' => 'gourl', 'url' => '/Library/edit-file-md/id/#id#'),
|
||||
'title' => 'Info');
|
||||
'title' => 'Edit Metadata');
|
||||
|
||||
}
|
||||
else if($type === "pl") {
|
||||
|
@ -94,7 +98,7 @@ class LibraryController extends Zend_Controller_Action
|
|||
public function deleteAction()
|
||||
{
|
||||
$id = $this->_getParam('id');
|
||||
|
||||
|
||||
if (!is_null($id)) {
|
||||
$file = StoredFile::Recall($id);
|
||||
|
||||
|
@ -120,17 +124,55 @@ class LibraryController extends Zend_Controller_Action
|
|||
|
||||
public function contentsAction()
|
||||
{
|
||||
$this->view->headScript()->appendFile('/js/campcaster/library/library.js','text/javascript');
|
||||
|
||||
$this->view->headScript()->appendFile('/js/airtime/library/library.js','text/javascript');
|
||||
|
||||
$this->_helper->viewRenderer->setResponseSegment('library');
|
||||
|
||||
$order["category"] = $this->_getParam('ob', "dc:creator");
|
||||
$order["order"] = $this->_getParam('order', "asc");
|
||||
$cat = $this->_getParam('ob', null);
|
||||
$or = $this->_getParam('order', null);
|
||||
$page = $this->_getParam('page', null);
|
||||
|
||||
$this->search_sess->order = $order;
|
||||
$md = isset($this->search_sess->md) ? $this->search_sess->md : array();
|
||||
if(!is_null($cat) && !is_null($or)) {
|
||||
$order["category"] = $cat;
|
||||
$order["order"] = $or;
|
||||
$this->search_sess->order = $order;
|
||||
}
|
||||
else if(isset($this->search_sess->order)){
|
||||
$order = $this->search_sess->order;
|
||||
}
|
||||
else{
|
||||
$order = null;
|
||||
}
|
||||
|
||||
$this->view->files = StoredFile::searchFiles($md, $order);
|
||||
if (isset($this->search_sess->page)) {
|
||||
$last_page = $this->search_sess->page;
|
||||
}
|
||||
else{
|
||||
$last_page = null;
|
||||
}
|
||||
|
||||
if(isset($this->search_sess->md)){
|
||||
$md = $this->search_sess->md;
|
||||
$quick = false;
|
||||
}
|
||||
else if(isset($this->search_sess->quick)) {
|
||||
$md = $this->search_sess->quick;
|
||||
$quick = true;
|
||||
}
|
||||
else {
|
||||
$md = array();
|
||||
$quick = false;
|
||||
}
|
||||
|
||||
$currpage = isset($page) ? $page : $last_page;
|
||||
$this->search_sess->page = $currpage;
|
||||
|
||||
$count = StoredFile::searchFiles($md, $order, true, null, null, $quick);
|
||||
|
||||
$paginator = new Zend_Paginator(new Zend_Paginator_Adapter_Null($count));
|
||||
$paginator->setCurrentPageNumber($currpage);
|
||||
$this->view->paginator = $paginator;
|
||||
$this->view->files = StoredFile::searchFiles($md, $order, false, $paginator->getCurrentPageNumber(), $paginator->getItemCountPerPage(), $quick);
|
||||
}
|
||||
|
||||
public function editFileMdAction()
|
||||
|
@ -156,7 +198,52 @@ class LibraryController extends Zend_Controller_Action
|
|||
$this->view->form = $form;
|
||||
}
|
||||
|
||||
public function quickSearchAction()
|
||||
{
|
||||
$this->view->headScript()->appendFile('/js/airtime/library/quicksearch.js','text/javascript');
|
||||
|
||||
$this->_helper->viewRenderer->setResponseSegment('quick_search');
|
||||
|
||||
$this->view->qs_value = $this->search_sess->quick_string;
|
||||
|
||||
$format = $this->_getParam('format', 'layout');
|
||||
|
||||
if($format !== 'json')
|
||||
return;
|
||||
|
||||
$search = $this->_getParam('search', null);
|
||||
$this->search_sess->quick_string = $search;
|
||||
|
||||
$categories = array("dc:title", "dc:creator", "dc:source", "ls:type");
|
||||
$keywords = explode(" ", $search);
|
||||
|
||||
$md = array();
|
||||
|
||||
for($group_id=1; $group_id <= count($keywords); $group_id++) {
|
||||
|
||||
for($row_id=1; $row_id <= count($categories); $row_id++) {
|
||||
|
||||
$md["group_".$group_id]["row_".$row_id]["metadata"] = $categories[$row_id-1];
|
||||
$md["group_".$group_id]["row_".$row_id]["match"] = "0";
|
||||
$md["group_".$group_id]["row_".$row_id]["search"] = $keywords[$group_id-1];
|
||||
}
|
||||
}
|
||||
|
||||
$this->search_sess->quick = $md;
|
||||
|
||||
$currpage = isset($this->search_sess->page) ? $this->search_sess->page : null;
|
||||
$order = isset($this->search_sess->order) ? $this->search_sess->order : null;
|
||||
$count = StoredFile::searchFiles($md, $order, true, null, null, true);
|
||||
|
||||
$paginator = new Zend_Paginator(new Zend_Paginator_Adapter_Null($count));
|
||||
$paginator->setCurrentPageNumber($currpage);
|
||||
$this->view->paginator = $paginator;
|
||||
$this->view->files = StoredFile::searchFiles($md, $order, false, $paginator->getCurrentPageNumber(), $paginator->getItemCountPerPage(), true);
|
||||
|
||||
$this->view->html = $this->view->render('library/contents.phtml');
|
||||
unset($this->view->files);
|
||||
unset($this->view->paginator);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@ -173,3 +260,5 @@ class LibraryController extends Zend_Controller_Action
|
|||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -136,7 +136,7 @@ class PlaylistController extends Zend_Controller_Action
|
|||
|
||||
public function editAction()
|
||||
{
|
||||
$this->view->headScript()->appendFile('/js/campcaster/playlist/playlist.js','text/javascript');
|
||||
$this->view->headScript()->appendFile('/js/airtime/playlist/playlist.js','text/javascript');
|
||||
|
||||
$pl_id = $this->_getParam('id', null);
|
||||
$display = $this->_getParam('view', null);
|
||||
|
|
|
@ -165,7 +165,7 @@ class PluploadController extends Zend_Controller_Action
|
|||
|
||||
$view->headScript()->appendFile('/js/plupload/plupload.full.min.js','text/javascript');
|
||||
$view->headScript()->appendFile('/js/plupload/jquery.plupload.queue.min.js','text/javascript');
|
||||
$view->headScript()->appendFile('/js/campcaster/library/plupload.js','text/javascript');
|
||||
$view->headScript()->appendFile('/js/airtime/library/plupload.js','text/javascript');
|
||||
|
||||
$view->headLink()->appendStylesheet('/css/plupload.queue.css');
|
||||
}
|
||||
|
|
|
@ -29,7 +29,7 @@ class ScheduleController extends Zend_Controller_Action
|
|||
$this->view->headScript()->appendFile('/js/contextmenu/jquery.contextMenu.js','text/javascript');
|
||||
$this->view->headScript()->appendFile('/js/qtip/jquery.qtip-1.0.0.min.js','text/javascript');
|
||||
|
||||
$this->view->headScript()->appendFile('/js/campcaster/schedule/schedule.js','text/javascript');
|
||||
$this->view->headScript()->appendFile('/js/airtime/schedule/schedule.js','text/javascript');
|
||||
|
||||
$this->view->headLink()->appendStylesheet('/css/jquery.contextMenu.css');
|
||||
$this->view->headLink()->appendStylesheet('/css/fullcalendar.css');
|
||||
|
@ -177,8 +177,7 @@ class ScheduleController extends Zend_Controller_Action
|
|||
|
||||
public function viewPlaylistAction()
|
||||
{
|
||||
$this->view->headScript()->appendFile('/js/playlist/playlist.js','text/javascript');
|
||||
$this->view->headScript()->appendFile('/js/progressbar/jquery.progressbar.min.js','text/javascript');
|
||||
//TODO: insert code for datagrid
|
||||
}
|
||||
|
||||
public function getCurrentPlaylistAction()
|
||||
|
|
|
@ -2,23 +2,42 @@
|
|||
|
||||
class SearchController extends Zend_Controller_Action
|
||||
{
|
||||
protected $search_sess = null;
|
||||
|
||||
protected $form;
|
||||
protected $search_sess = null;
|
||||
private function addGroup($group_id) {
|
||||
|
||||
$form = new Application_Form_AdvancedSearch();
|
||||
|
||||
$form->addGroup($group_id, 1);
|
||||
$group = $form->getSubForm('group_'.$group_id);
|
||||
|
||||
return $group->__toString();
|
||||
}
|
||||
|
||||
private function addFieldToGroup($group_id, $row_id) {
|
||||
|
||||
$form = new Application_Form_AdvancedSearch();
|
||||
|
||||
$form->addGroup($group_id);
|
||||
$group = $form->getSubForm('group_'.$group_id);
|
||||
|
||||
$group->addRow($row_id);
|
||||
|
||||
return $group->__toString();
|
||||
}
|
||||
|
||||
public function init()
|
||||
{
|
||||
if(!Zend_Auth::getInstance()->hasIdentity())
|
||||
if(!Zend_Auth::getInstance()->hasIdentity())
|
||||
{
|
||||
$this->_redirect('login/index');
|
||||
}
|
||||
|
||||
$ajaxContext = $this->_helper->getHelper('AjaxContext');
|
||||
$ajaxContext->addActionContext('newfield', 'html')
|
||||
->addActionContext('display', 'json')
|
||||
$ajaxContext->addActionContext('newfield', 'json')
|
||||
->addActionContext('newgroup', 'json')
|
||||
->initContext();
|
||||
|
||||
$this->form = new Application_Form_AdvancedSearch();
|
||||
$this->search_sess = new Zend_Session_Namespace("search");
|
||||
}
|
||||
|
||||
|
@ -26,80 +45,82 @@ class SearchController extends Zend_Controller_Action
|
|||
{
|
||||
$this->_helper->layout->setLayout('search');
|
||||
|
||||
$this->view->headScript()->appendFile('/js/campcaster/onready/search.js','text/javascript');
|
||||
$this->view->headScript()->appendFile('/js/airtime/onready/search.js','text/javascript');
|
||||
$this->view->headScript()->appendFile('/js/contextmenu/jjmenu.js','text/javascript');
|
||||
$this->view->headLink()->appendStylesheet('/css/contextmenu.css');
|
||||
|
||||
$this->_helper->actionStack('display', 'search');
|
||||
$this->_helper->actionStack('contents', 'library');
|
||||
$this->_helper->actionStack('display', 'search');
|
||||
$this->_helper->actionStack('index', 'sideplaylist');
|
||||
}
|
||||
|
||||
public function displayAction()
|
||||
{
|
||||
$this->view->headScript()->appendFile('/js/campcaster/library/advancedsearch.js','text/javascript');
|
||||
$this->view->headScript()->appendFile('/js/airtime/library/advancedsearch.js','text/javascript');
|
||||
$this->view->headLink()->appendStylesheet('/css/library_search.css');
|
||||
|
||||
$this->_helper->viewRenderer->setResponseSegment('search');
|
||||
|
||||
$request = $this->getRequest();
|
||||
|
||||
$this->form = new Application_Form_AdvancedSearch();
|
||||
$form = $this->form;
|
||||
$form = new Application_Form_AdvancedSearch();
|
||||
$this->view->form = $form;
|
||||
|
||||
// Form has not been submitted - displayed using layouts
|
||||
if (!$request->isPost()) {
|
||||
|
||||
unset($this->search_sess->md);
|
||||
unset($this->search_sess->order);
|
||||
$form->addGroup(1, 1);
|
||||
|
||||
$sub = new Application_Form_AdvancedSearchRow(1);
|
||||
$form->addSubForm($sub, 'row_1');
|
||||
$form->getSubForm('row_1')->removeDecorator('DtDdWrapper');
|
||||
$this->search_sess->next_group = 2;
|
||||
$this->search_sess->next_row[1] = 2;
|
||||
|
||||
$this->view->form = $form;
|
||||
return;
|
||||
}
|
||||
|
||||
// Form has been submitted - run data through preValidation()
|
||||
$this->view->md = $request->getPost();
|
||||
|
||||
// Form has been submitted
|
||||
$form->preValidation($request->getPost());
|
||||
|
||||
if (!$form->isValid($request->getPost())) {
|
||||
$this->view->form = $form->__toString();
|
||||
return;
|
||||
}
|
||||
|
||||
// form was submitted, send back strings to json response.
|
||||
$info = $form->getValues();
|
||||
$this->search_sess->md = $info;
|
||||
$order = isset($this->search_sess->order) ? $this->search_sess->order : NULL;
|
||||
// valid form was submitted set as search criteria.
|
||||
$this->view->md = $form->getValues();
|
||||
$this->search_sess->md = $form->getValues();
|
||||
|
||||
$this->view->files = StoredFile::searchFiles($info, $order);
|
||||
|
||||
if (count($this->view->files) > 0) {
|
||||
$this->view->results = $this->view->render('library/update.phtml');
|
||||
}
|
||||
else {
|
||||
$this->view->results = "<tr>No Results</tr>";
|
||||
}
|
||||
unset($this->view->files);
|
||||
//make sure to start on first page of new results.
|
||||
unset($this->search_sess->page);
|
||||
}
|
||||
|
||||
public function newfieldAction()
|
||||
{
|
||||
$id = $this->_getParam('id', 1);
|
||||
$group_id = $this->_getParam('group', 1);
|
||||
$row_id = $this->search_sess->next_row[$group_id];
|
||||
|
||||
$this->form->addSubForm(new Application_Form_AdvancedSearchRow($id), 'row_'.$id, $id);
|
||||
$this->view->html = $this->addFieldToGroup($group_id, $row_id);
|
||||
$this->view->row = $row_id;
|
||||
|
||||
$this->form->getSubForm('row_'.$id)->removeDecorator('DtDdWrapper');
|
||||
$e = $this->form->getSubForm('row_'.$id);
|
||||
|
||||
$this->view->field = $e->__toString();
|
||||
$this->search_sess->next_row[$group_id] = $row_id + 1;
|
||||
}
|
||||
|
||||
public function newgroupAction()
|
||||
{
|
||||
$group_id = $this->search_sess->next_group;
|
||||
|
||||
$this->view->html = $this->addGroup($group_id);
|
||||
|
||||
$this->search_sess->next_group = $group_id + 1;
|
||||
$this->search_sess->next_row[$group_id] = 2;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -17,7 +17,7 @@ class SideplaylistController extends Zend_Controller_Action
|
|||
|
||||
public function indexAction()
|
||||
{
|
||||
$this->view->headScript()->appendFile('/js/campcaster/library/spl.js','text/javascript');
|
||||
$this->view->headScript()->appendFile('/js/airtime/library/spl.js','text/javascript');
|
||||
|
||||
$this->_helper->viewRenderer->setResponseSegment('spl');
|
||||
|
||||
|
|
|
@ -5,12 +5,34 @@ class Application_Form_AdvancedSearch extends Zend_Form
|
|||
|
||||
public function init()
|
||||
{
|
||||
$this->addElement('hidden', 'search_next_id', array(
|
||||
'value' => 2
|
||||
));
|
||||
$this->getElement('search_next_id')->removeDecorator('Label')->removeDecorator('HtmlTag');
|
||||
// Add the add button
|
||||
$this->addElement('button', 'search_add_group', array(
|
||||
'ignore' => true,
|
||||
'label' => 'Add',
|
||||
'order' => '-2'
|
||||
));
|
||||
$this->getElement('search_add_group')->removeDecorator('DtDdWrapper');
|
||||
|
||||
// Add the submit button
|
||||
$this->addElement('submit', 'search_submit', array(
|
||||
'ignore' => true,
|
||||
'label' => 'Submit',
|
||||
'order' => '-1'
|
||||
));
|
||||
$this->getElement('search_submit')->removeDecorator('DtDdWrapper');
|
||||
}
|
||||
|
||||
public function addGroup($group_id, $row_id=null) {
|
||||
|
||||
$this->addSubForm(new Application_Form_AdvancedSearchGroup(), 'group_'.$group_id, $group_id);
|
||||
$this->getSubForm('group_'.$group_id)->removeDecorator('DtDdWrapper');
|
||||
|
||||
if(!is_null($row_id)) {
|
||||
$subGroup = $this->getSubForm('group_'.$group_id);
|
||||
$subGroup->addRow($row_id);
|
||||
}
|
||||
}
|
||||
|
||||
public function preValidation(array $data) {
|
||||
|
||||
function findId($name) {
|
||||
|
@ -18,34 +40,26 @@ class Application_Form_AdvancedSearch extends Zend_Form
|
|||
return $t[1];
|
||||
}
|
||||
|
||||
// array_filter callback
|
||||
function findFields($field) {
|
||||
return strpos($field, 'row') !== false;
|
||||
return strpos($field, 'group') !== false;
|
||||
}
|
||||
|
||||
$fields = array_filter(array_keys($data), 'findFields');
|
||||
$groups = array_filter(array_keys($data), 'findFields');
|
||||
|
||||
foreach ($fields as $field) {
|
||||
// use id to set new order
|
||||
$id = findId($field);
|
||||
$this->addNewField($data, $id);
|
||||
foreach ($groups as $group) {
|
||||
|
||||
$group_id = findId($group);
|
||||
$this->addGroup($group_id);
|
||||
|
||||
$subGroup = $this->getSubForm($group);
|
||||
|
||||
foreach (array_keys($data[$group]) as $row) {
|
||||
|
||||
$row_id = findId($row);
|
||||
$subGroup->addRow($row_id, $data[$group][$row]);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public function addNewField($data, $id) {
|
||||
|
||||
$sub = new Application_Form_AdvancedSearchRow($id);
|
||||
|
||||
$values = array("metadata_".$id => $data["row_".$id]["metadata_".$id],
|
||||
"match_".$id => $data["row_".$id]["match_".$id],
|
||||
"search_".$id => $data["row_".$id]["search_".$id]);
|
||||
|
||||
$sub->setDefaults($values);
|
||||
|
||||
$this->addSubForm($sub, 'row_'.$id, $id);
|
||||
$this->getSubForm('row_'.$id)->removeDecorator('DtDdWrapper');
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,29 @@
|
|||
<?php
|
||||
|
||||
class Application_Form_AdvancedSearchGroup extends Zend_Form_SubForm
|
||||
{
|
||||
public function init()
|
||||
{
|
||||
// Add the add button
|
||||
$this->addElement('button', 'search_add_row', array(
|
||||
'ignore' => true,
|
||||
'label' => 'Add',
|
||||
'order' => '-2'
|
||||
));
|
||||
$this->getElement('search_add_row')->removeDecorator('DtDdWrapper');
|
||||
}
|
||||
|
||||
public function addRow($row_id, $data=null) {
|
||||
|
||||
$this->addSubForm(new Application_Form_AdvancedSearchRow(), 'row_'.$row_id, $row_id);
|
||||
$row = $this->getSubForm('row_'.$row_id);
|
||||
$row->removeDecorator('DtDdWrapper');
|
||||
|
||||
if(!is_null($data)) {
|
||||
$row->setDefaults($data);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -2,22 +2,11 @@
|
|||
|
||||
class Application_Form_AdvancedSearchRow extends Zend_Form_SubForm
|
||||
{
|
||||
|
||||
protected $_rowid;
|
||||
|
||||
public function __construct($id = null)
|
||||
{
|
||||
$this->_rowid = $id;
|
||||
parent::__construct();
|
||||
}
|
||||
|
||||
public function init()
|
||||
{
|
||||
$id = $this->_rowid;
|
||||
|
||||
$this->addElement(
|
||||
'select',
|
||||
'metadata_'.$id,
|
||||
'metadata',
|
||||
array(
|
||||
'required' => true,
|
||||
'multiOptions' => array(
|
||||
|
@ -50,11 +39,11 @@ class Application_Form_AdvancedSearchRow extends Zend_Form_SubForm
|
|||
),
|
||||
)
|
||||
);
|
||||
$this->getElement('metadata_'.$id)->removeDecorator('Label')->removeDecorator('HtmlTag');
|
||||
$this->getElement('metadata')->removeDecorator('Label')->removeDecorator('HtmlTag');
|
||||
|
||||
$this->addElement(
|
||||
'select',
|
||||
'match_'.$id,
|
||||
'match',
|
||||
array(
|
||||
'required' => true,
|
||||
'multiOptions' => array(
|
||||
|
@ -68,12 +57,12 @@ class Application_Form_AdvancedSearchRow extends Zend_Form_SubForm
|
|||
),
|
||||
)
|
||||
);
|
||||
$this->getElement('match_'.$id)->removeDecorator('Label')->removeDecorator('HtmlTag');
|
||||
$this->getElement('match')->removeDecorator('Label')->removeDecorator('HtmlTag');
|
||||
|
||||
$this->addElement('text', 'search_'.$id, array(
|
||||
$this->addElement('text', 'search', array(
|
||||
'required' => true,
|
||||
));
|
||||
$this->getElement('search_'.$id)->removeDecorator('Label')->removeDecorator('HtmlTag');
|
||||
$this->getElement('search')->removeDecorator('Label')->removeDecorator('HtmlTag');
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>Campcaster</title>
|
||||
<title>Airtime</title>
|
||||
<?php echo $this->headScript() ?>
|
||||
<?php echo $this->headLink() ?>
|
||||
</head>
|
||||
|
@ -11,7 +11,17 @@
|
|||
|
||||
<div id="nav"><?php echo $this->navigation()->menu()->setRenderInvisible(true) ?></div>
|
||||
|
||||
<div id="content"><?php echo $this->layout()->content ?></div>
|
||||
|
||||
<div id="content" style="height: auto"><?php echo $this->layout()->content ?></div>
|
||||
<div style="z-index: 1; position: absolute; width: 100%; left: 0px; right: 0px; bottom: 0px; color: black; min-height: 100px; background-color: #cc3300;">
|
||||
<div style="float:left; width: 15%; height: 100%;"> </div>
|
||||
<div style="float:left; width: 25%; height: 100%;"><div>Show:</div><div>Playlist:</div><div>Host:</div></div>
|
||||
<div style="float:left; width: 30%; height: 100%;"><div>Previous:</div><div>Current:</div><div>Upcoming:</div></div>
|
||||
<div style="float:left; width: 30%; height: 100%;" id="list0" ></div>
|
||||
</div>
|
||||
<script>
|
||||
$(document).ready(function() {
|
||||
$("#list0").playlistViewer();
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>Campcaster</title>
|
||||
<title>Airtime</title>
|
||||
<?php echo $this->headScript() ?>
|
||||
<?php echo $this->headLink() ?>
|
||||
</head>
|
||||
|
@ -11,6 +11,7 @@
|
|||
|
||||
<div id="nav"><?php echo $this->navigation()->menu()->setRenderInvisible(true) ?></div>
|
||||
|
||||
<div id="library_quick_search"><?php echo $this->layout()->quick_search ?></div>
|
||||
<div id="library_content"><?php echo $this->layout()->library ?></div>
|
||||
|
||||
<div id="side_playlist"><?php echo $this->layout()->spl ?></div>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>Campcaster</title>
|
||||
<title>Airtime</title>
|
||||
<?php echo $this->headScript() ?>
|
||||
<?php echo $this->headLink() ?>
|
||||
</head>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>Campcaster</title>
|
||||
<title>Airtime</title>
|
||||
<?php echo $this->headScript() ?>
|
||||
<?php echo $this->headLink() ?>
|
||||
</head>
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
* Handles recursive accessPlaylist/releasePlaylist.
|
||||
* Should be 'required_once' from LocStor.php only.
|
||||
*
|
||||
* @package Campcaster
|
||||
* @package Airtime
|
||||
* @subpackage StorageServer
|
||||
* @copyright 2010 Sourcefabric O.P.S.
|
||||
* @license http://www.gnu.org/licenses/gpl.txt
|
||||
|
@ -181,4 +181,4 @@ class AccessRecur {
|
|||
}
|
||||
|
||||
} // class AccessRecur
|
||||
?>
|
||||
?>
|
||||
|
|
|
@ -8,7 +8,7 @@ define('ALIBERR_NOTEXISTS', 31);
|
|||
/**
|
||||
* Authentication/authorization class
|
||||
*
|
||||
* @package Campcaster
|
||||
* @package Airtime
|
||||
* @subpackage Alib
|
||||
* @copyright 2010 Sourcefabric O.P.S.
|
||||
* @license http://www.gnu.org/licenses/gpl.txt
|
||||
|
@ -619,4 +619,4 @@ class Alib {
|
|||
} // fn test
|
||||
|
||||
} // class Alib
|
||||
?>
|
||||
?>
|
||||
|
|
|
@ -3,7 +3,7 @@ define('BACKUP_EXT', 'tar');
|
|||
define('ACCESS_TYPE', 'backup');
|
||||
|
||||
/**
|
||||
* @package Campcaster
|
||||
* @package Airtime
|
||||
* @subpackage StorageServer
|
||||
* @copyright 2010 Sourcefabric O.P.S.
|
||||
* @license http://www.gnu.org/licenses/gpl.txt
|
||||
|
|
|
@ -106,9 +106,9 @@ require_once(dirname(__FILE__)."/Playlist.php");
|
|||
// "dc:language" => "language");
|
||||
|
||||
/**
|
||||
* Core of Campcaster file storage module
|
||||
* Core of Airtime file storage module
|
||||
*
|
||||
* @package Campcaster
|
||||
* @package Airtime
|
||||
* @subpackage StorageServer
|
||||
* @copyright 2010 Sourcefabric O.P.S.
|
||||
* @license http://www.gnu.org/licenses/gpl.txt
|
||||
|
@ -1494,7 +1494,7 @@ class BasicStor {
|
|||
* @param string $plid
|
||||
* Playlist gunid
|
||||
* @param string $aPath
|
||||
* Absolute path part of imported file (e.g. /home/user/campcaster)
|
||||
* Absolute path part of imported file (e.g. /home/user/airtime)
|
||||
* @param string $rPath
|
||||
* Relative path/filename part of imported file (e.g. playlists/playlist_1.smil)
|
||||
* @param string $ext
|
||||
|
@ -2183,4 +2183,4 @@ class BasicStor {
|
|||
}
|
||||
|
||||
} // class BasicStor
|
||||
?>
|
||||
?>
|
||||
|
|
|
@ -18,7 +18,7 @@ require_once("Transport.php");
|
|||
*
|
||||
* File storage module.
|
||||
*
|
||||
* @package Campcaster
|
||||
* @package Airtime
|
||||
* @subpackage StorageServer
|
||||
* @copyright 2010 Sourcefabric O.P.S.
|
||||
* @license http://www.gnu.org/licenses/gpl.txt
|
||||
|
@ -1723,4 +1723,4 @@ class GreenBox extends BasicStor {
|
|||
} // fn removePerm
|
||||
|
||||
} // class GreenBox
|
||||
?>
|
||||
?>
|
||||
|
|
|
@ -16,7 +16,7 @@ if (isset($WHITE_SCREEN_OF_DEATH) && $WHITE_SCREEN_OF_DEATH) {
|
|||
*
|
||||
* Local storage interface
|
||||
*
|
||||
* @package Campcaster
|
||||
* @package Airtime
|
||||
* @subpackage StorageServer
|
||||
* @copyright 2010 Sourcefabric O.P.S.
|
||||
* @license http://www.gnu.org/licenses/gpl.txt
|
||||
|
@ -1362,7 +1362,7 @@ class LocStor extends BasicStor {
|
|||
|
||||
/*===================================================== auxiliary methods */
|
||||
/**
|
||||
* Dummy method - only returns Campcaster version
|
||||
* Dummy method - only returns Airtime version
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
|
@ -1746,4 +1746,4 @@ class LocStor extends BasicStor {
|
|||
/* ==================================================== auxiliary methods */
|
||||
|
||||
} // class LocStor
|
||||
?>
|
||||
?>
|
||||
|
|
|
@ -4,7 +4,7 @@ define('INDCH', ' ');
|
|||
/**
|
||||
* M3uPlaylist class
|
||||
*
|
||||
* @package Campcaster
|
||||
* @package Airtime
|
||||
* @subpackage StorageServer
|
||||
* @copyright 2010 Sourcefabric O.P.S.
|
||||
* @license http://www.gnu.org/licenses/gpl.txt
|
||||
|
@ -59,7 +59,7 @@ class M3uPlaylist {
|
|||
*
|
||||
* @param GreenBox $gb
|
||||
* @param string $aPath
|
||||
* absolute path part of imported file (e.g. /home/user/campcaster)
|
||||
* absolute path part of imported file (e.g. /home/user/airtime)
|
||||
* @param string $rPath
|
||||
* relative path/filename part of imported file
|
||||
* (e.g. playlists/playlist_1.smil)
|
||||
|
@ -141,7 +141,7 @@ class M3uPlaylist {
|
|||
* @param string $data
|
||||
* local path to M3U file
|
||||
* @return string
|
||||
* XML playlist in Campcaster playlist format
|
||||
* XML playlist in Airtime playlist format
|
||||
*/
|
||||
function convert2lspl(&$gb, $data)
|
||||
{
|
||||
|
@ -196,7 +196,7 @@ class M3uPlaylist {
|
|||
|
||||
|
||||
/**
|
||||
* @package Campcaster
|
||||
* @package Airtime
|
||||
* @subpackage StorageServer
|
||||
* @copyright 2010 Sourcefabric O.P.S.
|
||||
* @license http://www.gnu.org/licenses/gpl.txt
|
||||
|
@ -231,7 +231,7 @@ class M3uPlaylistBodyElement {
|
|||
|
||||
|
||||
/**
|
||||
* @package Campcaster
|
||||
* @package Airtime
|
||||
* @subpackage StorageServer
|
||||
* @copyright 2010 Sourcefabric O.P.S.
|
||||
* @license http://www.gnu.org/licenses/gpl.txt
|
||||
|
@ -257,7 +257,7 @@ class M3uPlaylistParElement {
|
|||
|
||||
|
||||
/**
|
||||
* @package Campcaster
|
||||
* @package Airtime
|
||||
* @subpackage StorageServer
|
||||
* @copyright 2010 Sourcefabric O.P.S.
|
||||
* @license http://www.gnu.org/licenses/gpl.txt
|
||||
|
@ -313,7 +313,7 @@ class M3uPlaylistAudioElement {
|
|||
|
||||
|
||||
/**
|
||||
* @package Campcaster
|
||||
* @package Airtime
|
||||
* @subpackage StorageServer
|
||||
* @copyright 2010 Sourcefabric O.P.S.
|
||||
* @license http://www.gnu.org/licenses/gpl.txt
|
||||
|
@ -349,4 +349,4 @@ class M3uPlaylistAnimateElement {
|
|||
}
|
||||
}
|
||||
|
||||
?>
|
||||
?>
|
||||
|
|
|
@ -7,7 +7,7 @@ define('INDCH', ' ');
|
|||
*
|
||||
* remark: dcterms:extent format: hh:mm:ss.ssssss
|
||||
*
|
||||
* @package Campcaster
|
||||
* @package Airtime
|
||||
* @subpackage StorageServer
|
||||
* @copyright 2010 Sourcefabric O.P.S.
|
||||
* @license http://www.gnu.org/licenses/gpl.txt
|
||||
|
@ -155,8 +155,7 @@ class Playlist {
|
|||
{
|
||||
$con = Propel::getConnection("campcaster");
|
||||
|
||||
$sql = "SELECT * FROM cc_playlist LEFT JOIN cc_playlisttimes USING(id) WHERE length <= '{$p_length}' ";
|
||||
//AND state != 'edited'
|
||||
$sql = "SELECT * FROM cc_playlist LEFT JOIN cc_playlisttimes USING(id) WHERE length <= '{$p_length}' AND state != 'edited' ";
|
||||
|
||||
$r = $con->query($sql);
|
||||
return $r->fetchAll();
|
||||
|
@ -905,7 +904,7 @@ class Playlist {
|
|||
} // class Playlist
|
||||
|
||||
/**
|
||||
* @package Campcaster
|
||||
* @package Airtime
|
||||
* @subpackage StorageServer
|
||||
* @copyright 2010 Sourcefabric O.P.S.
|
||||
* @license http://www.gnu.org/licenses/gpl.txt
|
||||
|
@ -1015,7 +1014,7 @@ class PlaylistTagExport
|
|||
|
||||
|
||||
/**
|
||||
* @package Campcaster
|
||||
* @package Airtime
|
||||
* @subpackage StorageServer
|
||||
* @copyright 2010 Sourcefabric O.P.S.
|
||||
* @license http://www.gnu.org/licenses/gpl.txt
|
||||
|
@ -1196,7 +1195,7 @@ class PlaylistElementExport {
|
|||
|
||||
|
||||
/**
|
||||
* @package Campcaster
|
||||
* @package Airtime
|
||||
* @subpackage StorageServer
|
||||
* @copyright 2010 Sourcefabric O.P.S.
|
||||
* @license http://www.gnu.org/licenses/gpl.txt
|
||||
|
@ -1270,7 +1269,7 @@ class PlaylistAudioClipExport
|
|||
|
||||
|
||||
/**
|
||||
* @package Campcaster
|
||||
* @package Airtime
|
||||
* @subpackage StorageServer
|
||||
* @copyright 2010 Sourcefabric O.P.S.
|
||||
* @license http://www.gnu.org/licenses/gpl.txt
|
||||
|
@ -1304,7 +1303,7 @@ class PlaylistFadeInfoExport
|
|||
|
||||
|
||||
/**
|
||||
* @package Campcaster
|
||||
* @package Airtime
|
||||
* @subpackage StorageServer
|
||||
* @copyright 2010 Sourcefabric O.P.S.
|
||||
* @license http://www.gnu.org/licenses/gpl.txt
|
||||
|
|
|
@ -5,7 +5,7 @@ require_once("GreenBox.php");
|
|||
/**
|
||||
* Preference storage class.
|
||||
*
|
||||
* @package Campcaster
|
||||
* @package Airtime
|
||||
* @subpackage StorageServer
|
||||
* @copyright 2010 Sourcefabric O.P.S.
|
||||
* @license http://www.gnu.org/licenses/gpl.txt
|
||||
|
@ -439,4 +439,4 @@ class Prefs {
|
|||
}
|
||||
|
||||
} // class Prefs
|
||||
?>
|
||||
?>
|
||||
|
|
|
@ -8,7 +8,7 @@ require_once("Playlist.php");
|
|||
*
|
||||
* Playlist to file rendering - PHP layer, caller to the renderer executable
|
||||
*
|
||||
* @package Campcaster
|
||||
* @package Airtime
|
||||
* @subpackage StorageServer
|
||||
* @copyright 2010 Sourcefabric O.P.S.
|
||||
* @license http://www.gnu.org/licenses/gpl.txt
|
||||
|
@ -287,4 +287,4 @@ class Renderer
|
|||
|
||||
} // class Renderer
|
||||
|
||||
?>
|
||||
?>
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* @package Campcaster
|
||||
* @package Airtime
|
||||
* @subpackage StorageServer
|
||||
* @copyright 2010 Sourcefabric O.P.S.
|
||||
* @license http://www.gnu.org/licenses/gpl.txt
|
||||
|
|
|
@ -6,7 +6,7 @@ require_once("XmlParser.php");
|
|||
/**
|
||||
* SmilPlaylist class
|
||||
*
|
||||
* @package Campcaster
|
||||
* @package Airtime
|
||||
* @subpackage StorageServer
|
||||
* @copyright 2010 Sourcefabric O.P.S.
|
||||
* @license http://www.gnu.org/licenses/gpl.txt
|
||||
|
@ -35,7 +35,7 @@ class SmilPlaylist {
|
|||
* @param GreenBox $gb
|
||||
* reference to GreenBox object
|
||||
* @param string $aPath
|
||||
* absolute path part of imported file (e.g. /home/user/campcaster)
|
||||
* absolute path part of imported file (e.g. /home/user/airtime)
|
||||
* @param string $rPath
|
||||
* relative path/filename part of imported file
|
||||
* (e.g. playlists/playlist_1.smil)
|
||||
|
@ -92,7 +92,7 @@ class SmilPlaylist {
|
|||
* @param array $parr
|
||||
* array of subjid, aPath, plid, rPath
|
||||
* @return string
|
||||
* XML of playlist in Campcaster playlist format
|
||||
* XML of playlist in Airtime playlist format
|
||||
*/
|
||||
public static function convert2lspl(&$gb, $data, &$gunids, $parr)
|
||||
{
|
||||
|
@ -119,7 +119,7 @@ class SmilPlaylist {
|
|||
|
||||
|
||||
/**
|
||||
* @package Campcaster
|
||||
* @package Airtime
|
||||
* @subpackage StorageServer
|
||||
* @copyright 2010 Sourcefabric O.P.S.
|
||||
* @license http://www.gnu.org/licenses/gpl.txt
|
||||
|
@ -158,7 +158,7 @@ class SmilPlaylistBodyElement {
|
|||
|
||||
|
||||
/**
|
||||
* @package Campcaster
|
||||
* @package Airtime
|
||||
* @subpackage StorageServer
|
||||
* @copyright 2010 Sourcefabric O.P.S.
|
||||
* @license http://www.gnu.org/licenses/gpl.txt
|
||||
|
@ -186,7 +186,7 @@ class SmilPlaylistParElement {
|
|||
|
||||
|
||||
/**
|
||||
* @package Campcaster
|
||||
* @package Airtime
|
||||
* @subpackage StorageServer
|
||||
* @copyright 2010 Sourcefabric O.P.S.
|
||||
* @license http://www.gnu.org/licenses/gpl.txt
|
||||
|
@ -271,7 +271,7 @@ class SmilPlaylistAudioElement {
|
|||
|
||||
|
||||
/**
|
||||
* @package Campcaster
|
||||
* @package Airtime
|
||||
* @subpackage StorageServer
|
||||
* @copyright 2010 Sourcefabric O.P.S.
|
||||
* @license http://www.gnu.org/licenses/gpl.txt
|
||||
|
@ -310,4 +310,4 @@ class SmilPlaylistAnimateElement {
|
|||
}
|
||||
} // class SmilPlaylistAnimateElement
|
||||
|
||||
?>
|
||||
?>
|
||||
|
|
|
@ -6,6 +6,7 @@ require_once("Schedule.php");
|
|||
|
||||
global $g_metadata_xml_to_db_mapping;
|
||||
$g_metadata_xml_to_db_mapping = array(
|
||||
"ls:type" => "ftype",
|
||||
"dc:format" => "format",
|
||||
"ls:bitrate" => "bit_rate",
|
||||
"ls:samplerate" => "sample_rate",
|
||||
|
@ -312,14 +313,14 @@ function camp_get_audio_metadata($p_filename, $p_testonly = false)
|
|||
/**
|
||||
* StoredFile class
|
||||
*
|
||||
* Campcaster file storage support class.<br>
|
||||
* Airtime file storage support class.<br>
|
||||
* Represents one virtual file in storage. Virtual file has up to two parts:
|
||||
* <ul>
|
||||
* <li>metadata in database - represented by MetaData class</li>
|
||||
* <li>binary media data in real file</li>
|
||||
* </ul>
|
||||
*
|
||||
* @package Campcaster
|
||||
* @package Airtime
|
||||
* @subpackage StorageServer
|
||||
* @copyright 2010 Sourcefabric O.P.S.
|
||||
* @license http://www.gnu.org/licenses/gpl.txt
|
||||
|
@ -1741,7 +1742,7 @@ class StoredFile {
|
|||
return $CC_CONFIG['accessDir']."/$p_token.$p_ext";
|
||||
}
|
||||
|
||||
public static function searchFiles($md, $order=NULL)
|
||||
public static function searchFiles($md, $order=NULL, $count=false, $page=null, $limit=null, $quick=false)
|
||||
{
|
||||
global $CC_CONFIG, $CC_DBC, $g_metadata_xml_to_db_mapping;
|
||||
|
||||
|
@ -1755,9 +1756,6 @@ class StoredFile {
|
|||
"6" => "!=",
|
||||
);
|
||||
|
||||
//$sql = "SELECT * FROM ".$CC_CONFIG['filesTable'];
|
||||
|
||||
|
||||
$plSelect = "SELECT ";
|
||||
$fileSelect = "SELECT ";
|
||||
$_SESSION["br"] = "";
|
||||
|
@ -1766,6 +1764,10 @@ class StoredFile {
|
|||
if($key === "dc:title"){
|
||||
$plSelect .= "name AS ".$val.", ";
|
||||
$fileSelect .= $val.", ";
|
||||
}
|
||||
else if ($key === "ls:type"){
|
||||
$plSelect .= "'playlist' AS ".$val.", ";
|
||||
$fileSelect .= $val.", ";
|
||||
}
|
||||
else if ($key === "dc:creator"){
|
||||
$plSelect .= "creator AS ".$val.", ";
|
||||
|
@ -1785,45 +1787,79 @@ class StoredFile {
|
|||
}
|
||||
}
|
||||
|
||||
$sql = "SELECT * FROM ((".$plSelect."PL.id, 'playlist' AS ftype
|
||||
if($count) {
|
||||
$selector = "SELECT COUNT(*)";
|
||||
}
|
||||
else {
|
||||
$selector = "SELECT *";
|
||||
}
|
||||
|
||||
$from = " FROM ((".$plSelect."PL.id
|
||||
FROM ".$CC_CONFIG["playListTable"]." AS PL
|
||||
LEFT JOIN ".$CC_CONFIG['playListTimeView']." PLT ON PL.id = PLT.id)
|
||||
|
||||
UNION
|
||||
|
||||
(".$fileSelect."id, ftype FROM ".$CC_CONFIG["filesTable"]." AS FILES)) AS RESULTS ";
|
||||
(".$fileSelect."id FROM ".$CC_CONFIG["filesTable"]." AS FILES)) AS RESULTS ";
|
||||
|
||||
$cond = array();
|
||||
foreach(array_keys($md) as $key) {
|
||||
if(strpos($key, 'row') !== false){
|
||||
$t = explode("_", $key);
|
||||
$row_num = $t[1];
|
||||
$sql = $selector." ".$from;
|
||||
|
||||
$string = $g_metadata_xml_to_db_mapping[$md[$key]["metadata_".$row_num]];
|
||||
$or_cond = array();
|
||||
$inner = $quick ? 'OR':'AND';
|
||||
$outer = $quick ? 'AND':'OR';
|
||||
foreach (array_keys($md) as $group) {
|
||||
|
||||
$string = $string ." ".$match[$md[$key]["match_".$row_num]];
|
||||
if(strpos($group, 'group') === false) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if ($md[$key]["match_".$row_num] === "0")
|
||||
$string = $string." '%". $md[$key]["search_".$row_num]."%'";
|
||||
$and_cond = array();
|
||||
foreach (array_keys($md[$group]) as $row) {
|
||||
|
||||
$string = $g_metadata_xml_to_db_mapping[$md[$group][$row]["metadata"]];
|
||||
|
||||
$string = $string ." ".$match[$md[$group][$row]["match"]];
|
||||
|
||||
if ($md[$group][$row]["match"] === "0")
|
||||
$string = $string." '%". $md[$group][$row]["search"]."%'";
|
||||
else
|
||||
$string = $string." '". $md[$key]["search_".$row_num]."'";
|
||||
$string = $string." '". $md[$group][$row]["search"]."'";
|
||||
|
||||
$cond[] = $string;
|
||||
$and_cond[] = $string;
|
||||
}
|
||||
|
||||
if(count($and_cond) > 0) {
|
||||
$or_cond[] = "(".join(" ".$inner." ", $and_cond).")";
|
||||
}
|
||||
}
|
||||
|
||||
if(count($cond) > 0) {
|
||||
$where = " WHERE ". join(" AND ", $cond);
|
||||
if(count($or_cond) > 0) {
|
||||
$where = " WHERE ". join(" ".$outer." ", $or_cond);
|
||||
$sql = $sql . $where;
|
||||
}
|
||||
|
||||
if(!is_null($order)) {
|
||||
$ob = " ORDER BY ".$g_metadata_xml_to_db_mapping[$order["category"]];
|
||||
$sql = $sql . $ob . " " .$order["order"];
|
||||
if($count) {
|
||||
return $CC_DBC->getOne($sql);
|
||||
}
|
||||
|
||||
if(!is_null($order)) {
|
||||
$ob = " ORDER BY ".$g_metadata_xml_to_db_mapping[$order["category"]]." ".$order["order"].", id ";
|
||||
$sql = $sql . $ob;
|
||||
}
|
||||
else{
|
||||
$ob = " ORDER BY artist_name asc, id";
|
||||
$sql = $sql . $ob;
|
||||
}
|
||||
|
||||
if(!is_null($page) && !is_null($limit)) {
|
||||
$offset = $page * $limit - ($limit);
|
||||
$paginate = " LIMIT ".$limit. " OFFSET " .$offset;
|
||||
$sql = $sql . $paginate;
|
||||
}
|
||||
//echo var_dump($md);
|
||||
//echo $sql;
|
||||
|
||||
return $CC_DBC->getAll($sql);
|
||||
return $CC_DBC->getAll($sql);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -9,7 +9,7 @@ define('ALIBERR_BADSMEMB', 21);
|
|||
* with "linearized recursive membership" ;)
|
||||
* (allow adding users to groups or groups to groups)
|
||||
*
|
||||
* @package Campcaster
|
||||
* @package Airtime
|
||||
* @subpackage Alib
|
||||
* @copyright 2010 Sourcefabric O.P.S.
|
||||
* @license http://www.gnu.org/licenses/gpl.txt
|
||||
|
@ -680,4 +680,4 @@ class Subjects {
|
|||
} // fn test
|
||||
|
||||
} // class Subjects
|
||||
?>
|
||||
?>
|
||||
|
|
|
@ -38,7 +38,7 @@ include_once("TransportRecord.php");
|
|||
* <li>file</li>
|
||||
* </ul>
|
||||
*
|
||||
* @package Campcaster
|
||||
* @package Airtime
|
||||
* @subpackage StorageServer
|
||||
* @copyright 2010 Sourcefabric O.P.S.
|
||||
* @license http://www.gnu.org/licenses/gpl.txt
|
||||
|
@ -401,7 +401,7 @@ class Transport
|
|||
|
||||
/* ------------------------------------------------ remote-search methods */
|
||||
/**
|
||||
* Start search job on remote Campcaster instance.
|
||||
* Start search job on remote Airtime instance.
|
||||
*
|
||||
* @param array $criteria
|
||||
* LS criteria format (see localSearch)
|
||||
|
@ -1636,7 +1636,7 @@ class Transport
|
|||
|
||||
|
||||
/**
|
||||
* Ping to remote Campcaster server
|
||||
* Ping to remote Airtime server
|
||||
*
|
||||
* @return string
|
||||
* network hub response or error object
|
||||
|
|
|
@ -5,7 +5,7 @@ define('TR_LEAVE_CLOSED', TRUE);
|
|||
/**
|
||||
* Auxiliary class for transport records
|
||||
*
|
||||
* @package Campcaster
|
||||
* @package Airtime
|
||||
* @subpackage StorageServer
|
||||
* @copyright 2010 Sourcefabric O.P.S.
|
||||
* @license http://www.gnu.org/licenses/gpl.txt
|
||||
|
@ -416,4 +416,4 @@ class TransportRecord
|
|||
}
|
||||
|
||||
} // class TransportRecord
|
||||
?>
|
||||
?>
|
||||
|
|
|
@ -23,7 +23,7 @@ define('VAL_PREDXML', 121);
|
|||
* </ul>
|
||||
* It probably should be replaced by XML schema validation in the future.
|
||||
*
|
||||
* @package Campcaster
|
||||
* @package Airtime
|
||||
* @subpackage StorageServer
|
||||
* @copyright 2010 Sourcefabric O.P.S.
|
||||
* @license http://www.gnu.org/licenses/gpl.txt
|
||||
|
@ -382,4 +382,4 @@ class Validator {
|
|||
|
||||
} // class Validator
|
||||
|
||||
?>
|
||||
?>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<?php
|
||||
/**
|
||||
* @package Campcaster
|
||||
* @package Airtime
|
||||
* @subpackage StorageServer
|
||||
*/
|
||||
require_once "XML/Util.php";
|
||||
|
@ -10,7 +10,7 @@ require_once "XML/Util.php";
|
|||
/**
|
||||
* Object representation of one XML element
|
||||
*
|
||||
* @package Campcaster
|
||||
* @package Airtime
|
||||
* @subpackage StorageServer
|
||||
* @copyright 2010 Sourcefabric O.P.S.
|
||||
* @license http://www.gnu.org/licenses/gpl.txt
|
||||
|
@ -80,7 +80,7 @@ class XmlElement {
|
|||
/**
|
||||
* Object representation of one XML attribute
|
||||
*
|
||||
* @package Campcaster
|
||||
* @package Airtime
|
||||
* @subpackage StorageServer
|
||||
* @copyright 2010 Sourcefabric O.P.S.
|
||||
* @license http://www.gnu.org/licenses/gpl.txt
|
||||
|
@ -126,7 +126,7 @@ class XmlAttrib {
|
|||
/**
|
||||
* XML parser object encapsulation
|
||||
*
|
||||
* @package Campcaster
|
||||
* @package Airtime
|
||||
* @subpackage StorageServer
|
||||
* @copyright 2010 Sourcefabric O.P.S.
|
||||
* @license http://www.gnu.org/licenses/gpl.txt
|
||||
|
@ -395,4 +395,4 @@ class XmlParser {
|
|||
}
|
||||
|
||||
}
|
||||
?>
|
||||
?>
|
||||
|
|
|
@ -40,6 +40,8 @@ class CcShowScheduleTableMap extends TableMap {
|
|||
// columns
|
||||
$this->addPrimaryKey('ID', 'DbId', 'INTEGER', true, null, null);
|
||||
$this->addForeignKey('SHOW_ID', 'DbShowId', 'INTEGER', 'cc_show', 'ID', true, null, null);
|
||||
$this->addColumn('SHOW_DAY', 'DbShowDay', 'DATE', true, null, null);
|
||||
$this->addColumn('POSITION', 'DbPosition', 'INTEGER', false, null, null);
|
||||
$this->addColumn('GROUP_ID', 'DbGroupId', 'INTEGER', true, null, null);
|
||||
// validators
|
||||
} // initialize()
|
||||
|
|
|
@ -36,6 +36,18 @@ abstract class BaseCcShowSchedule extends BaseObject implements Persistent
|
|||
*/
|
||||
protected $show_id;
|
||||
|
||||
/**
|
||||
* The value for the show_day field.
|
||||
* @var string
|
||||
*/
|
||||
protected $show_day;
|
||||
|
||||
/**
|
||||
* The value for the position field.
|
||||
* @var int
|
||||
*/
|
||||
protected $position;
|
||||
|
||||
/**
|
||||
* The value for the group_id field.
|
||||
* @var int
|
||||
|
@ -81,6 +93,49 @@ abstract class BaseCcShowSchedule extends BaseObject implements Persistent
|
|||
return $this->show_id;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the [optionally formatted] temporal [show_day] column value.
|
||||
*
|
||||
*
|
||||
* @param string $format The date/time format string (either date()-style or strftime()-style).
|
||||
* If format is NULL, then the raw DateTime object will be returned.
|
||||
* @return mixed Formatted date/time value as string or DateTime object (if format is NULL), NULL if column is NULL
|
||||
* @throws PropelException - if unable to parse/validate the date/time value.
|
||||
*/
|
||||
public function getDbShowDay($format = '%x')
|
||||
{
|
||||
if ($this->show_day === null) {
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
|
||||
try {
|
||||
$dt = new DateTime($this->show_day);
|
||||
} catch (Exception $x) {
|
||||
throw new PropelException("Internally stored date/time/timestamp value could not be converted to DateTime: " . var_export($this->show_day, true), $x);
|
||||
}
|
||||
|
||||
if ($format === null) {
|
||||
// Because propel.useDateTimeClass is TRUE, we return a DateTime object.
|
||||
return $dt;
|
||||
} elseif (strpos($format, '%') !== false) {
|
||||
return strftime($format, $dt->format('U'));
|
||||
} else {
|
||||
return $dt->format($format);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the [position] column value.
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
public function getDbPosition()
|
||||
{
|
||||
return $this->position;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the [group_id] column value.
|
||||
*
|
||||
|
@ -135,6 +190,75 @@ abstract class BaseCcShowSchedule extends BaseObject implements Persistent
|
|||
return $this;
|
||||
} // setDbShowId()
|
||||
|
||||
/**
|
||||
* Sets the value of [show_day] column to a normalized version of the date/time value specified.
|
||||
*
|
||||
* @param mixed $v string, integer (timestamp), or DateTime value. Empty string will
|
||||
* be treated as NULL for temporal objects.
|
||||
* @return CcShowSchedule The current object (for fluent API support)
|
||||
*/
|
||||
public function setDbShowDay($v)
|
||||
{
|
||||
// we treat '' as NULL for temporal objects because DateTime('') == DateTime('now')
|
||||
// -- which is unexpected, to say the least.
|
||||
if ($v === null || $v === '') {
|
||||
$dt = null;
|
||||
} elseif ($v instanceof DateTime) {
|
||||
$dt = $v;
|
||||
} else {
|
||||
// some string/numeric value passed; we normalize that so that we can
|
||||
// validate it.
|
||||
try {
|
||||
if (is_numeric($v)) { // if it's a unix timestamp
|
||||
$dt = new DateTime('@'.$v, new DateTimeZone('UTC'));
|
||||
// We have to explicitly specify and then change the time zone because of a
|
||||
// DateTime bug: http://bugs.php.net/bug.php?id=43003
|
||||
$dt->setTimeZone(new DateTimeZone(date_default_timezone_get()));
|
||||
} else {
|
||||
$dt = new DateTime($v);
|
||||
}
|
||||
} catch (Exception $x) {
|
||||
throw new PropelException('Error parsing date/time value: ' . var_export($v, true), $x);
|
||||
}
|
||||
}
|
||||
|
||||
if ( $this->show_day !== null || $dt !== null ) {
|
||||
// (nested ifs are a little easier to read in this case)
|
||||
|
||||
$currNorm = ($this->show_day !== null && $tmpDt = new DateTime($this->show_day)) ? $tmpDt->format('Y-m-d') : null;
|
||||
$newNorm = ($dt !== null) ? $dt->format('Y-m-d') : null;
|
||||
|
||||
if ( ($currNorm !== $newNorm) // normalized values don't match
|
||||
)
|
||||
{
|
||||
$this->show_day = ($dt ? $dt->format('Y-m-d') : null);
|
||||
$this->modifiedColumns[] = CcShowSchedulePeer::SHOW_DAY;
|
||||
}
|
||||
} // if either are not null
|
||||
|
||||
return $this;
|
||||
} // setDbShowDay()
|
||||
|
||||
/**
|
||||
* Set the value of [position] column.
|
||||
*
|
||||
* @param int $v new value
|
||||
* @return CcShowSchedule The current object (for fluent API support)
|
||||
*/
|
||||
public function setDbPosition($v)
|
||||
{
|
||||
if ($v !== null) {
|
||||
$v = (int) $v;
|
||||
}
|
||||
|
||||
if ($this->position !== $v) {
|
||||
$this->position = $v;
|
||||
$this->modifiedColumns[] = CcShowSchedulePeer::POSITION;
|
||||
}
|
||||
|
||||
return $this;
|
||||
} // setDbPosition()
|
||||
|
||||
/**
|
||||
* Set the value of [group_id] column.
|
||||
*
|
||||
|
@ -189,7 +313,9 @@ abstract class BaseCcShowSchedule extends BaseObject implements Persistent
|
|||
|
||||
$this->id = ($row[$startcol + 0] !== null) ? (int) $row[$startcol + 0] : null;
|
||||
$this->show_id = ($row[$startcol + 1] !== null) ? (int) $row[$startcol + 1] : null;
|
||||
$this->group_id = ($row[$startcol + 2] !== null) ? (int) $row[$startcol + 2] : null;
|
||||
$this->show_day = ($row[$startcol + 2] !== null) ? (string) $row[$startcol + 2] : null;
|
||||
$this->position = ($row[$startcol + 3] !== null) ? (int) $row[$startcol + 3] : null;
|
||||
$this->group_id = ($row[$startcol + 4] !== null) ? (int) $row[$startcol + 4] : null;
|
||||
$this->resetModified();
|
||||
|
||||
$this->setNew(false);
|
||||
|
@ -198,7 +324,7 @@ abstract class BaseCcShowSchedule extends BaseObject implements Persistent
|
|||
$this->ensureConsistency();
|
||||
}
|
||||
|
||||
return $startcol + 3; // 3 = CcShowSchedulePeer::NUM_COLUMNS - CcShowSchedulePeer::NUM_LAZY_LOAD_COLUMNS).
|
||||
return $startcol + 5; // 5 = CcShowSchedulePeer::NUM_COLUMNS - CcShowSchedulePeer::NUM_LAZY_LOAD_COLUMNS).
|
||||
|
||||
} catch (Exception $e) {
|
||||
throw new PropelException("Error populating CcShowSchedule object", $e);
|
||||
|
@ -532,6 +658,12 @@ abstract class BaseCcShowSchedule extends BaseObject implements Persistent
|
|||
return $this->getDbShowId();
|
||||
break;
|
||||
case 2:
|
||||
return $this->getDbShowDay();
|
||||
break;
|
||||
case 3:
|
||||
return $this->getDbPosition();
|
||||
break;
|
||||
case 4:
|
||||
return $this->getDbGroupId();
|
||||
break;
|
||||
default:
|
||||
|
@ -560,7 +692,9 @@ abstract class BaseCcShowSchedule extends BaseObject implements Persistent
|
|||
$result = array(
|
||||
$keys[0] => $this->getDbId(),
|
||||
$keys[1] => $this->getDbShowId(),
|
||||
$keys[2] => $this->getDbGroupId(),
|
||||
$keys[2] => $this->getDbShowDay(),
|
||||
$keys[3] => $this->getDbPosition(),
|
||||
$keys[4] => $this->getDbGroupId(),
|
||||
);
|
||||
if ($includeForeignObjects) {
|
||||
if (null !== $this->aCcShow) {
|
||||
|
@ -604,6 +738,12 @@ abstract class BaseCcShowSchedule extends BaseObject implements Persistent
|
|||
$this->setDbShowId($value);
|
||||
break;
|
||||
case 2:
|
||||
$this->setDbShowDay($value);
|
||||
break;
|
||||
case 3:
|
||||
$this->setDbPosition($value);
|
||||
break;
|
||||
case 4:
|
||||
$this->setDbGroupId($value);
|
||||
break;
|
||||
} // switch()
|
||||
|
@ -632,7 +772,9 @@ abstract class BaseCcShowSchedule extends BaseObject implements Persistent
|
|||
|
||||
if (array_key_exists($keys[0], $arr)) $this->setDbId($arr[$keys[0]]);
|
||||
if (array_key_exists($keys[1], $arr)) $this->setDbShowId($arr[$keys[1]]);
|
||||
if (array_key_exists($keys[2], $arr)) $this->setDbGroupId($arr[$keys[2]]);
|
||||
if (array_key_exists($keys[2], $arr)) $this->setDbShowDay($arr[$keys[2]]);
|
||||
if (array_key_exists($keys[3], $arr)) $this->setDbPosition($arr[$keys[3]]);
|
||||
if (array_key_exists($keys[4], $arr)) $this->setDbGroupId($arr[$keys[4]]);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -646,6 +788,8 @@ abstract class BaseCcShowSchedule extends BaseObject implements Persistent
|
|||
|
||||
if ($this->isColumnModified(CcShowSchedulePeer::ID)) $criteria->add(CcShowSchedulePeer::ID, $this->id);
|
||||
if ($this->isColumnModified(CcShowSchedulePeer::SHOW_ID)) $criteria->add(CcShowSchedulePeer::SHOW_ID, $this->show_id);
|
||||
if ($this->isColumnModified(CcShowSchedulePeer::SHOW_DAY)) $criteria->add(CcShowSchedulePeer::SHOW_DAY, $this->show_day);
|
||||
if ($this->isColumnModified(CcShowSchedulePeer::POSITION)) $criteria->add(CcShowSchedulePeer::POSITION, $this->position);
|
||||
if ($this->isColumnModified(CcShowSchedulePeer::GROUP_ID)) $criteria->add(CcShowSchedulePeer::GROUP_ID, $this->group_id);
|
||||
|
||||
return $criteria;
|
||||
|
@ -709,6 +853,8 @@ abstract class BaseCcShowSchedule extends BaseObject implements Persistent
|
|||
public function copyInto($copyObj, $deepCopy = false)
|
||||
{
|
||||
$copyObj->setDbShowId($this->show_id);
|
||||
$copyObj->setDbShowDay($this->show_day);
|
||||
$copyObj->setDbPosition($this->position);
|
||||
$copyObj->setDbGroupId($this->group_id);
|
||||
|
||||
$copyObj->setNew(true);
|
||||
|
@ -809,6 +955,8 @@ abstract class BaseCcShowSchedule extends BaseObject implements Persistent
|
|||
{
|
||||
$this->id = null;
|
||||
$this->show_id = null;
|
||||
$this->show_day = null;
|
||||
$this->position = null;
|
||||
$this->group_id = null;
|
||||
$this->alreadyInSave = false;
|
||||
$this->alreadyInValidation = false;
|
||||
|
|
|
@ -26,7 +26,7 @@ abstract class BaseCcShowSchedulePeer {
|
|||
const TM_CLASS = 'CcShowScheduleTableMap';
|
||||
|
||||
/** The total number of columns. */
|
||||
const NUM_COLUMNS = 3;
|
||||
const NUM_COLUMNS = 5;
|
||||
|
||||
/** The number of lazy-loaded columns. */
|
||||
const NUM_LAZY_LOAD_COLUMNS = 0;
|
||||
|
@ -37,6 +37,12 @@ abstract class BaseCcShowSchedulePeer {
|
|||
/** the column name for the SHOW_ID field */
|
||||
const SHOW_ID = 'cc_show_schedule.SHOW_ID';
|
||||
|
||||
/** the column name for the SHOW_DAY field */
|
||||
const SHOW_DAY = 'cc_show_schedule.SHOW_DAY';
|
||||
|
||||
/** the column name for the POSITION field */
|
||||
const POSITION = 'cc_show_schedule.POSITION';
|
||||
|
||||
/** the column name for the GROUP_ID field */
|
||||
const GROUP_ID = 'cc_show_schedule.GROUP_ID';
|
||||
|
||||
|
@ -56,12 +62,12 @@ abstract class BaseCcShowSchedulePeer {
|
|||
* e.g. self::$fieldNames[self::TYPE_PHPNAME][0] = 'Id'
|
||||
*/
|
||||
private static $fieldNames = array (
|
||||
BasePeer::TYPE_PHPNAME => array ('DbId', 'DbShowId', 'DbGroupId', ),
|
||||
BasePeer::TYPE_STUDLYPHPNAME => array ('dbId', 'dbShowId', 'dbGroupId', ),
|
||||
BasePeer::TYPE_COLNAME => array (self::ID, self::SHOW_ID, self::GROUP_ID, ),
|
||||
BasePeer::TYPE_RAW_COLNAME => array ('ID', 'SHOW_ID', 'GROUP_ID', ),
|
||||
BasePeer::TYPE_FIELDNAME => array ('id', 'show_id', 'group_id', ),
|
||||
BasePeer::TYPE_NUM => array (0, 1, 2, )
|
||||
BasePeer::TYPE_PHPNAME => array ('DbId', 'DbShowId', 'DbShowDay', 'DbPosition', 'DbGroupId', ),
|
||||
BasePeer::TYPE_STUDLYPHPNAME => array ('dbId', 'dbShowId', 'dbShowDay', 'dbPosition', 'dbGroupId', ),
|
||||
BasePeer::TYPE_COLNAME => array (self::ID, self::SHOW_ID, self::SHOW_DAY, self::POSITION, self::GROUP_ID, ),
|
||||
BasePeer::TYPE_RAW_COLNAME => array ('ID', 'SHOW_ID', 'SHOW_DAY', 'POSITION', 'GROUP_ID', ),
|
||||
BasePeer::TYPE_FIELDNAME => array ('id', 'show_id', 'show_day', 'position', 'group_id', ),
|
||||
BasePeer::TYPE_NUM => array (0, 1, 2, 3, 4, )
|
||||
);
|
||||
|
||||
/**
|
||||
|
@ -71,12 +77,12 @@ abstract class BaseCcShowSchedulePeer {
|
|||
* e.g. self::$fieldNames[BasePeer::TYPE_PHPNAME]['Id'] = 0
|
||||
*/
|
||||
private static $fieldKeys = array (
|
||||
BasePeer::TYPE_PHPNAME => array ('DbId' => 0, 'DbShowId' => 1, 'DbGroupId' => 2, ),
|
||||
BasePeer::TYPE_STUDLYPHPNAME => array ('dbId' => 0, 'dbShowId' => 1, 'dbGroupId' => 2, ),
|
||||
BasePeer::TYPE_COLNAME => array (self::ID => 0, self::SHOW_ID => 1, self::GROUP_ID => 2, ),
|
||||
BasePeer::TYPE_RAW_COLNAME => array ('ID' => 0, 'SHOW_ID' => 1, 'GROUP_ID' => 2, ),
|
||||
BasePeer::TYPE_FIELDNAME => array ('id' => 0, 'show_id' => 1, 'group_id' => 2, ),
|
||||
BasePeer::TYPE_NUM => array (0, 1, 2, )
|
||||
BasePeer::TYPE_PHPNAME => array ('DbId' => 0, 'DbShowId' => 1, 'DbShowDay' => 2, 'DbPosition' => 3, 'DbGroupId' => 4, ),
|
||||
BasePeer::TYPE_STUDLYPHPNAME => array ('dbId' => 0, 'dbShowId' => 1, 'dbShowDay' => 2, 'dbPosition' => 3, 'dbGroupId' => 4, ),
|
||||
BasePeer::TYPE_COLNAME => array (self::ID => 0, self::SHOW_ID => 1, self::SHOW_DAY => 2, self::POSITION => 3, self::GROUP_ID => 4, ),
|
||||
BasePeer::TYPE_RAW_COLNAME => array ('ID' => 0, 'SHOW_ID' => 1, 'SHOW_DAY' => 2, 'POSITION' => 3, 'GROUP_ID' => 4, ),
|
||||
BasePeer::TYPE_FIELDNAME => array ('id' => 0, 'show_id' => 1, 'show_day' => 2, 'position' => 3, 'group_id' => 4, ),
|
||||
BasePeer::TYPE_NUM => array (0, 1, 2, 3, 4, )
|
||||
);
|
||||
|
||||
/**
|
||||
|
@ -150,10 +156,14 @@ abstract class BaseCcShowSchedulePeer {
|
|||
if (null === $alias) {
|
||||
$criteria->addSelectColumn(CcShowSchedulePeer::ID);
|
||||
$criteria->addSelectColumn(CcShowSchedulePeer::SHOW_ID);
|
||||
$criteria->addSelectColumn(CcShowSchedulePeer::SHOW_DAY);
|
||||
$criteria->addSelectColumn(CcShowSchedulePeer::POSITION);
|
||||
$criteria->addSelectColumn(CcShowSchedulePeer::GROUP_ID);
|
||||
} else {
|
||||
$criteria->addSelectColumn($alias . '.ID');
|
||||
$criteria->addSelectColumn($alias . '.SHOW_ID');
|
||||
$criteria->addSelectColumn($alias . '.SHOW_DAY');
|
||||
$criteria->addSelectColumn($alias . '.POSITION');
|
||||
$criteria->addSelectColumn($alias . '.GROUP_ID');
|
||||
}
|
||||
}
|
||||
|
|
|
@ -8,10 +8,14 @@
|
|||
*
|
||||
* @method CcShowScheduleQuery orderByDbId($order = Criteria::ASC) Order by the id column
|
||||
* @method CcShowScheduleQuery orderByDbShowId($order = Criteria::ASC) Order by the show_id column
|
||||
* @method CcShowScheduleQuery orderByDbShowDay($order = Criteria::ASC) Order by the show_day column
|
||||
* @method CcShowScheduleQuery orderByDbPosition($order = Criteria::ASC) Order by the position column
|
||||
* @method CcShowScheduleQuery orderByDbGroupId($order = Criteria::ASC) Order by the group_id column
|
||||
*
|
||||
* @method CcShowScheduleQuery groupByDbId() Group by the id column
|
||||
* @method CcShowScheduleQuery groupByDbShowId() Group by the show_id column
|
||||
* @method CcShowScheduleQuery groupByDbShowDay() Group by the show_day column
|
||||
* @method CcShowScheduleQuery groupByDbPosition() Group by the position column
|
||||
* @method CcShowScheduleQuery groupByDbGroupId() Group by the group_id column
|
||||
*
|
||||
* @method CcShowScheduleQuery leftJoin($relation) Adds a LEFT JOIN clause to the query
|
||||
|
@ -27,10 +31,14 @@
|
|||
*
|
||||
* @method CcShowSchedule findOneByDbId(int $id) Return the first CcShowSchedule filtered by the id column
|
||||
* @method CcShowSchedule findOneByDbShowId(int $show_id) Return the first CcShowSchedule filtered by the show_id column
|
||||
* @method CcShowSchedule findOneByDbShowDay(string $show_day) Return the first CcShowSchedule filtered by the show_day column
|
||||
* @method CcShowSchedule findOneByDbPosition(int $position) Return the first CcShowSchedule filtered by the position column
|
||||
* @method CcShowSchedule findOneByDbGroupId(int $group_id) Return the first CcShowSchedule filtered by the group_id column
|
||||
*
|
||||
* @method array findByDbId(int $id) Return CcShowSchedule objects filtered by the id column
|
||||
* @method array findByDbShowId(int $show_id) Return CcShowSchedule objects filtered by the show_id column
|
||||
* @method array findByDbShowDay(string $show_day) Return CcShowSchedule objects filtered by the show_day column
|
||||
* @method array findByDbPosition(int $position) Return CcShowSchedule objects filtered by the position column
|
||||
* @method array findByDbGroupId(int $group_id) Return CcShowSchedule objects filtered by the group_id column
|
||||
*
|
||||
* @package propel.generator.campcaster.om
|
||||
|
@ -189,6 +197,68 @@ abstract class BaseCcShowScheduleQuery extends ModelCriteria
|
|||
return $this->addUsingAlias(CcShowSchedulePeer::SHOW_ID, $dbShowId, $comparison);
|
||||
}
|
||||
|
||||
/**
|
||||
* Filter the query on the show_day column
|
||||
*
|
||||
* @param string|array $dbShowDay The value to use as filter.
|
||||
* Accepts an associative array('min' => $minValue, 'max' => $maxValue)
|
||||
* @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL
|
||||
*
|
||||
* @return CcShowScheduleQuery The current query, for fluid interface
|
||||
*/
|
||||
public function filterByDbShowDay($dbShowDay = null, $comparison = null)
|
||||
{
|
||||
if (is_array($dbShowDay)) {
|
||||
$useMinMax = false;
|
||||
if (isset($dbShowDay['min'])) {
|
||||
$this->addUsingAlias(CcShowSchedulePeer::SHOW_DAY, $dbShowDay['min'], Criteria::GREATER_EQUAL);
|
||||
$useMinMax = true;
|
||||
}
|
||||
if (isset($dbShowDay['max'])) {
|
||||
$this->addUsingAlias(CcShowSchedulePeer::SHOW_DAY, $dbShowDay['max'], Criteria::LESS_EQUAL);
|
||||
$useMinMax = true;
|
||||
}
|
||||
if ($useMinMax) {
|
||||
return $this;
|
||||
}
|
||||
if (null === $comparison) {
|
||||
$comparison = Criteria::IN;
|
||||
}
|
||||
}
|
||||
return $this->addUsingAlias(CcShowSchedulePeer::SHOW_DAY, $dbShowDay, $comparison);
|
||||
}
|
||||
|
||||
/**
|
||||
* Filter the query on the position column
|
||||
*
|
||||
* @param int|array $dbPosition The value to use as filter.
|
||||
* Accepts an associative array('min' => $minValue, 'max' => $maxValue)
|
||||
* @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL
|
||||
*
|
||||
* @return CcShowScheduleQuery The current query, for fluid interface
|
||||
*/
|
||||
public function filterByDbPosition($dbPosition = null, $comparison = null)
|
||||
{
|
||||
if (is_array($dbPosition)) {
|
||||
$useMinMax = false;
|
||||
if (isset($dbPosition['min'])) {
|
||||
$this->addUsingAlias(CcShowSchedulePeer::POSITION, $dbPosition['min'], Criteria::GREATER_EQUAL);
|
||||
$useMinMax = true;
|
||||
}
|
||||
if (isset($dbPosition['max'])) {
|
||||
$this->addUsingAlias(CcShowSchedulePeer::POSITION, $dbPosition['max'], Criteria::LESS_EQUAL);
|
||||
$useMinMax = true;
|
||||
}
|
||||
if ($useMinMax) {
|
||||
return $this;
|
||||
}
|
||||
if (null === $comparison) {
|
||||
$comparison = Criteria::IN;
|
||||
}
|
||||
}
|
||||
return $this->addUsingAlias(CcShowSchedulePeer::POSITION, $dbPosition, $comparison);
|
||||
}
|
||||
|
||||
/**
|
||||
* Filter the query on the group_id column
|
||||
*
|
||||
|
|
|
@ -18,7 +18,7 @@ require_once (dirname(__FILE__).'/../../conf.php');
|
|||
* );
|
||||
* $cron->closeCrontab();
|
||||
* </pre>
|
||||
* @package Campcaster
|
||||
* @package Airtime
|
||||
* @subpackage StorageServer.Cron
|
||||
*/
|
||||
class Cron {
|
||||
|
@ -211,4 +211,4 @@ class Cron {
|
|||
return $this->cronfile.' "'.str_replace('"','\"',serialize($this->params)).'"';
|
||||
}
|
||||
}
|
||||
?>
|
||||
?>
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
/**
|
||||
* Cron jobs handling abstract class
|
||||
*
|
||||
* @package Campcaster
|
||||
* @package Airtime
|
||||
* @subpackage StorageServer.Cron
|
||||
*/
|
||||
class CronJob
|
||||
|
@ -14,4 +14,4 @@ class CronJob
|
|||
{
|
||||
}
|
||||
}
|
||||
?>
|
||||
?>
|
||||
|
|
|
@ -11,7 +11,7 @@ define('CRON_EMPTY', 4);
|
|||
* This class lets you manipulate a user's crontab.
|
||||
* It lets you add delete update entries easily.
|
||||
*
|
||||
* @package Campcaster
|
||||
* @package Airtime
|
||||
* @subpackage StorageServer.Cron
|
||||
*/
|
||||
class Crontab
|
||||
|
@ -281,4 +281,4 @@ class Crontab
|
|||
return $returnar;
|
||||
}
|
||||
}
|
||||
?>
|
||||
?>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<?php
|
||||
/**
|
||||
* @package Campcaster
|
||||
* @package Airtime
|
||||
* @subpackage StorageServer
|
||||
* @copyright 2010 Sourcefabric O.P.S.
|
||||
* @license http://www.gnu.org/licenses/gpl.txt
|
||||
|
@ -114,4 +114,4 @@ $playlistFormat = array(
|
|||
?
|
||||
ls:filename Text auto
|
||||
*/
|
||||
?>
|
||||
?>
|
||||
|
|
|
@ -1,8 +1,11 @@
|
|||
<?php
|
||||
require_once(__DIR__.'/../../3rd_party/php/propel/runtime/lib/Propel.php');
|
||||
// Initialize Propel with the runtime configuration
|
||||
Propel::init(__DIR__."/../propel-db/build/conf/campcaster-conf.php");
|
||||
// Add the generated 'classes' directory to the include path
|
||||
|
||||
//Example how to use PDO:
|
||||
//Propel::init(__DIR__."/../propel-db/build/conf/airtime-conf.php");
|
||||
|
||||
//Add the generated 'classes' directory to the include path
|
||||
set_include_path(__DIR__."/../propel-db/build/classes" . PATH_SEPARATOR . get_include_path());
|
||||
$con = Propel::getConnection("campcaster");
|
||||
|
||||
|
@ -19,4 +22,4 @@ $sql3 = "SELECT TIMESTAMP '2011-01-01 00:00:00.000' + INTERVAL '01:00:00.123456'
|
|||
$result3 = $con->query($sql3);
|
||||
var_dump($result3->fetchAll());
|
||||
|
||||
?>
|
||||
?>
|
||||
|
|
|
@ -4,7 +4,7 @@ require_once(dirname(__FILE__).'/../LocStor.php');
|
|||
/**
|
||||
* XML-RPC interface for LocStor class
|
||||
*
|
||||
* @package Campcaster
|
||||
* @package Airtime
|
||||
* @subpackage StorageServer
|
||||
* @copyright 2010 Sourcefabric O.P.S.
|
||||
* @license http://www.gnu.org/licenses/gpl.txt
|
||||
|
@ -12,7 +12,7 @@ require_once(dirname(__FILE__).'/../LocStor.php');
|
|||
class XR_LocStor extends LocStor {
|
||||
/* ----------------------------------------------------------- getVersion */
|
||||
/**
|
||||
* Dummy method - only returns Campcaster version
|
||||
* Dummy method - only returns Airtime version
|
||||
*
|
||||
* The XML-RPC name of this method is "locstor.getVersion".
|
||||
*
|
||||
|
@ -242,7 +242,7 @@ class XR_LocStor extends LocStor {
|
|||
* (returned by subsequent storeAudioClipClose call)
|
||||
* </li>
|
||||
* <li> metadata : string - metadata XML string
|
||||
* (as defined in Campcaster::Core::AudioClip Class Reference,
|
||||
* (as defined in Airtime::Core::AudioClip Class Reference,
|
||||
* examples are in storageServer/var/tests/*.xml)
|
||||
* </li>
|
||||
* <li> fname : string - human readable mnemonic file name
|
||||
|
@ -3830,4 +3830,4 @@ class XR_LocStor extends LocStor {
|
|||
|
||||
} // class XR_LocStor
|
||||
|
||||
?>
|
||||
?>
|
||||
|
|
|
@ -23,7 +23,7 @@
|
|||
* </ul>
|
||||
*
|
||||
* @see XR_LocStor
|
||||
* @package Campcaster
|
||||
* @package Airtime
|
||||
* @subpackage storageServer
|
||||
*/
|
||||
|
||||
|
@ -96,4 +96,4 @@ fclose($fp);
|
|||
fclose($putdata);
|
||||
|
||||
header("HTTP/1.1 200");
|
||||
?>
|
||||
?>
|
||||
|
|
|
@ -61,7 +61,7 @@ $locStor = new XR_LocStor();
|
|||
$methods = array(
|
||||
'test' => 'Tests toupper and checks sessid, params: '.
|
||||
'teststring, sessid.',
|
||||
'getVersion' => 'Get version of Campcaster.',
|
||||
'getVersion' => 'Get version of Airtime.',
|
||||
// 'authenticate' => 'Checks authentication.',
|
||||
'login' => 'Login to storage.',
|
||||
'logout' => 'Logout from storage.',
|
||||
|
@ -169,4 +169,4 @@ foreach ($methods as $method => $description) {
|
|||
|
||||
$s = new XML_RPC_Server($defs);
|
||||
|
||||
?>
|
||||
?>
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
<th><span class="album">Album</span></th>
|
||||
<th><span class="track">Track</span></th>
|
||||
<th><span class="length">Length</span></th>
|
||||
<th><span class="type">Type</span></th>
|
||||
</tr>
|
||||
<?php
|
||||
echo $this->partialLoop('library/libraryTablePartial.phtml', $this->files);
|
||||
|
@ -20,3 +21,12 @@
|
|||
}
|
||||
?>
|
||||
|
||||
<?php
|
||||
|
||||
echo $this->paginationControl($this->paginator,
|
||||
'Sliding',
|
||||
'library/paginator.phtml');
|
||||
|
||||
|
||||
?>
|
||||
|
||||
|
|
|
@ -5,4 +5,5 @@
|
|||
<td><?php echo $this->album_title ?></td>
|
||||
<td><?php echo $this->track_number ?></td>
|
||||
<td><?php echo $this->length ?></td>
|
||||
<td><?php echo $this->ftype ?></td>
|
||||
</tr>
|
||||
|
|
|
@ -0,0 +1,56 @@
|
|||
<div class="paginationControl">
|
||||
<p>
|
||||
<?php if ($this->pageCount): ?>
|
||||
|
||||
<?php echo $this->firstItemNumber; ?> - <?php echo $this->lastItemNumber; ?>
|
||||
of <?php echo $this->totalItemCount; ?>
|
||||
</p>
|
||||
<p>
|
||||
<!-- First page link -->
|
||||
<?php if (isset($this->previous)): ?>
|
||||
<a href="<?php echo $this->url(array('page' => $this->first)); ?>">
|
||||
First
|
||||
</a> |
|
||||
<?php else: ?>
|
||||
<span class="disabled">First</span> |
|
||||
<?php endif; ?>
|
||||
|
||||
<!-- Previous page link -->
|
||||
<?php if (isset($this->previous)): ?>
|
||||
<a href="<?php echo $this->url(array('page' => $this->previous)); ?>">
|
||||
< Previous
|
||||
</a> |
|
||||
<?php else: ?>
|
||||
<span class="disabled">< Previous</span> |
|
||||
<?php endif; ?>
|
||||
|
||||
<!-- current pages links -->
|
||||
<?php foreach ($this->pagesInRange as $page): ?>
|
||||
<?php if ($this->current != $page): ?>
|
||||
<a href="<?php echo $this->url(array('page' => $page));?>"><?php echo $page; ?></a>
|
||||
<?php else: ?>
|
||||
<?php echo $page; ?>
|
||||
<?php endif; ?>
|
||||
<?php endforeach; ?>
|
||||
|
||||
<!-- Next page link -->
|
||||
<?php if (isset($this->next)): ?>
|
||||
<a href="<?php echo $this->url(array('page' => $this->next)); ?>">
|
||||
Next >
|
||||
</a> |
|
||||
<?php else: ?>
|
||||
<span class="disabled">Next ></span> |
|
||||
<?php endif; ?>
|
||||
|
||||
<!-- Last page link -->
|
||||
<?php if (isset($this->next)): ?>
|
||||
<a href="<?php echo $this->url(array('page' => $this->last)); ?>">
|
||||
Last
|
||||
</a>
|
||||
<?php else: ?>
|
||||
<span class="disabled">Last</span>
|
||||
<?php endif; ?>
|
||||
|
||||
<?php endif; ?>
|
||||
</p>
|
||||
</div>
|
|
@ -0,0 +1,2 @@
|
|||
<label for="quick_search">Search:</label>
|
||||
<input id="quick_search" name="quick_search" type="text" value = "<?php echo $this->qs_value ?>"></input>
|
|
@ -1,2 +1,3 @@
|
|||
<?php
|
||||
echo $this->partialLoop('library/libraryTablePartial.phtml', $this->files);
|
||||
|
||||
echo $this->partialLoop('library/libraryTablePartial.phtml', $this->files);
|
||||
|
|
|
@ -2,8 +2,8 @@
|
|||
|
||||
<script>
|
||||
$(document).ready(function() {
|
||||
$("#list0").playlistViewer();
|
||||
$("#list1").playlistViewer();
|
||||
});
|
||||
</script>
|
||||
<div id="list0"></div>
|
||||
<div id="list1"></div>
|
||||
</div>
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
<?php
|
||||
|
||||
$this->form->setAction($this->url());
|
||||
echo $this->form;
|
||||
echo var_dump($this->md);
|
||||
?>
|
||||
<span id="search_add">Add</span>
|
||||
<span id="search_submit">Submit</span>
|
||||
|
||||
|
|
|
@ -1 +0,0 @@
|
|||
<?php echo $this->field; ?>
|
|
@ -0,0 +1 @@
|
|||
<br /><br /><center>View script for controller <b>Search</b> and script/action name <b>newgroup</b></center>
|
|
@ -1,9 +1,9 @@
|
|||
project.home = /home/naomiaro/dev-campcaster/campcaster
|
||||
project.home = /path/to/airtime
|
||||
project.build = ${project.home}/build
|
||||
|
||||
#Database driver
|
||||
propel.database = pgsql
|
||||
propel.database.url = pgsql:host=localhost dbname=campcaster user=campcaster password=campcaster
|
||||
propel.database.url = pgsql:host=localhost dbname=airtime user=airtime password=airtime
|
||||
|
||||
#Project name
|
||||
propel.project = campcaster
|
||||
|
|
|
@ -153,6 +153,8 @@
|
|||
<table name="cc_show_schedule" phpName="CcShowSchedule">
|
||||
<column name="id" phpName="DbId" type="INTEGER" primaryKey="true" autoIncrement="true" required="true"/>
|
||||
<column name="show_id" phpName="DbShowId" type="INTEGER" required="true"/>
|
||||
<column name="show_day" phpName="DbShowDay" type="DATE" required="true"/>
|
||||
<column name="position" phpName="DbPosition" type="INTEGER" required="false"/>
|
||||
<column name="group_id" phpName="DbGroupId" type="INTEGER" required="true"/>
|
||||
<foreign-key foreignTable="cc_show" name="cc_perm_show_fkey" onDelete="CASCADE">
|
||||
<reference local="show_id" foreign="id"/>
|
||||
|
|
|
@ -224,6 +224,8 @@ CREATE TABLE "cc_show_schedule"
|
|||
(
|
||||
"id" serial NOT NULL,
|
||||
"show_id" INTEGER NOT NULL,
|
||||
"show_day" DATE NOT NULL,
|
||||
"position" INTEGER,
|
||||
"group_id" INTEGER NOT NULL,
|
||||
PRIMARY KEY ("id")
|
||||
);
|
||||
|
|
|
@ -21,3 +21,27 @@ CREATE FUNCTION calculate_position() RETURNS trigger AS
|
|||
|
||||
CREATE TRIGGER calculate_position AFTER INSERT OR DELETE ON cc_playlistcontents
|
||||
FOR EACH ROW EXECUTE PROCEDURE calculate_position();
|
||||
|
||||
----------------------------------------------------------------------------------
|
||||
--show_content()
|
||||
----------------------------------------------------------------------------------
|
||||
DROP FUNCTION show_content() CASCADE;
|
||||
|
||||
CREATE FUNCTION show_content() RETURNS trigger AS
|
||||
'
|
||||
BEGIN
|
||||
IF(TG_OP=''INSERT'') THEN
|
||||
UPDATE cc_show_schedule SET position = (position + 1)
|
||||
WHERE (id = new.id AND position >= new.position AND id != new.id);
|
||||
END IF;
|
||||
IF(TG_OP=''DELETE'') THEN
|
||||
UPDATE cc_show_schedule SET position = (position - 1)
|
||||
WHERE (id = old.id AND position > old.position);
|
||||
END IF;
|
||||
RETURN NULL;
|
||||
END;
|
||||
'
|
||||
LANGUAGE 'plpgsql';
|
||||
|
||||
CREATE TRIGGER show_content AFTER INSERT OR DELETE ON cc_show_schedule
|
||||
FOR EACH ROW EXECUTE PROCEDURE show_content();
|
||||
|
|
|
@ -139,7 +139,7 @@ override_dh_install:
|
|||
override_dh_fixperms:
|
||||
dh_fixperms
|
||||
#
|
||||
chmod +x debian/campcaster-data/usr/share/campcaster/www/storageServer/var/install/campcaster-user.php
|
||||
chmod +x debian/campcaster-data/usr/share/campcaster/www/storageServer/var/install/airtime-user.php
|
||||
chmod -x debian/campcaster-data/usr/share/campcaster/www/storageServer/var/cron/Crontab.php \
|
||||
debian/campcaster-data/usr/share/campcaster/www/storageServer/var/cron/CronJob.php \
|
||||
debian/campcaster-data/usr/share/campcaster/www/htmlUI/var/templates/popup/PLAYLIST.downloadExportedFile.tpl \
|
||||
|
|
|
@ -14,13 +14,13 @@ Setting Up Your VHOST
|
|||
The following is a sample VHOST you might want to consider for your project.
|
||||
|
||||
<VirtualHost *:80>
|
||||
DocumentRoot "/home/naomiaro/campcaster-refactor/campcaster/public"
|
||||
ServerName campcaster.local
|
||||
DocumentRoot "/home/naomiaro/campcaster-refactor/airtime/public"
|
||||
ServerName airtime.local
|
||||
|
||||
# This should be omitted in the production environment
|
||||
SetEnv APPLICATION_ENV development
|
||||
|
||||
<Directory "/home/naomiaro/campcaster-refactor/campcaster/public">
|
||||
<Directory "/home/naomiaro/campcaster-refactor/airtime/public">
|
||||
Options Indexes MultiViews FollowSymLinks
|
||||
AllowOverride All
|
||||
Order allow,deny
|
||||
|
|
|
@ -17,9 +17,9 @@ if (isset($arr["DOCUMENT_ROOT"]) && ($arr["DOCUMENT_ROOT"] != "") ) {
|
|||
function printUsage()
|
||||
{
|
||||
echo "\n";
|
||||
echo "campcaster-user\n";
|
||||
echo "airtime-user\n";
|
||||
echo "===============\n";
|
||||
echo " This program allows you to manage Campcaster users.\n";
|
||||
echo " This program allows you to manage Airtime users.\n";
|
||||
echo "\n";
|
||||
echo "OPTIONS:\n";
|
||||
echo " --addupdate <username> <password>\n";
|
||||
|
@ -99,4 +99,4 @@ if (PEAR::isError($r)) {
|
|||
die($r->getMessage());
|
||||
}
|
||||
exit(0);
|
||||
?>
|
||||
?>
|
|
@ -1,23 +1,23 @@
|
|||
#!/bin/bash
|
||||
#-------------------------------------------------------------------------------
|
||||
# Copyright (c) 2010 Sourcefabric O.P.S.
|
||||
# Copyright (c) 2010 Airtime O.P.S.
|
||||
#
|
||||
# This file is part of the Campcaster project.
|
||||
# This file is part of the Airtime project.
|
||||
# http://campcaster.sourcefabric.org/
|
||||
# To report bugs, send an e-mail to bugs@campware.org
|
||||
#
|
||||
# Campcaster is free software; you can redistribute it and/or modify
|
||||
# Airtime is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# Campcaster is distributed in the hope that it will be useful,
|
||||
# Airtime is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with Campcaster; if not, write to the Free Software
|
||||
# along with Airtime; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
#
|
||||
#-------------------------------------------------------------------------------
|
||||
|
@ -404,7 +404,7 @@ if [ "$storage_is_local" = "yes" ]; then
|
|||
grep -q 'ls_scheduler_storage_pass' $install_etc/campcaster-scheduler.xml
|
||||
if [ $? = 0 ]; then
|
||||
SCHEDULER_STORAGE_PASS=`pwgen -N1 -c -n -s`
|
||||
php -q $install_var_ls/storageServer/var/install/campcaster-user.php \
|
||||
php -q $install_var_ls/storageServer/var/install/airtime-user.php \
|
||||
--addupdate scheduler ${SCHEDULER_STORAGE_PASS}
|
||||
sed -i -e "s/ls_scheduler_storage_pass/${SCHEDULER_STORAGE_PASS}/" \
|
||||
$install_etc/campcaster-scheduler.xml
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<?php
|
||||
/**
|
||||
* @package Campcaster
|
||||
* @package Airtime
|
||||
* @subpackage StorageServer
|
||||
* @copyright 2010 Sourcefabric O.P.S.
|
||||
* @license http://www.gnu.org/licenses/gpl.txt
|
||||
|
@ -15,7 +15,6 @@ if (isset($arr["DOCUMENT_ROOT"]) && ($arr["DOCUMENT_ROOT"] != "") ) {
|
|||
exit(1);
|
||||
}
|
||||
|
||||
echo "******************************* Install Begin ********************************\n";
|
||||
|
||||
require_once(dirname(__FILE__).'/../application/configs/conf.php');
|
||||
require_once(dirname(__FILE__).'/../application/models/GreenBox.php');
|
||||
|
@ -23,6 +22,12 @@ require_once(dirname(__FILE__).'/../application/models/GreenBox.php');
|
|||
require_once(dirname(__FILE__)."/installInit.php");
|
||||
|
||||
// Need to check that we are superuser before running this.
|
||||
if(exec("whoami") != "root"){
|
||||
echo "Must be root user.\n";
|
||||
exit(1);
|
||||
}
|
||||
|
||||
echo "******************************* Install Begin ********************************\n";
|
||||
|
||||
echo " *** Database Installation ***\n";
|
||||
|
||||
|
@ -63,7 +68,7 @@ if ($langIsInstalled == '0') {
|
|||
|
||||
echo " * Creating database tables\n";
|
||||
// Put Propel sql files in Database
|
||||
$command = __DIR__."/../library/propel/generator/bin/propel-gen ../build/ insert-sql";
|
||||
$command = __DIR__."/../library/propel/generator/bin/propel-gen ../build/ insert-sql 2>propel-error.log";
|
||||
//echo $command."\n";
|
||||
@exec($command, $output, $results);
|
||||
|
||||
|
@ -201,7 +206,7 @@ install_setDirPermissions($CC_CONFIG["storageDir"]);
|
|||
//echo " Done.\n";
|
||||
|
||||
echo " * Importing sample audio clips \n";
|
||||
$command = __DIR__."/../utils/campcaster-import --copy ../audio_samples/ > /dev/null";
|
||||
$command = __DIR__."/../utils/airtime-import --copy ../audio_samples/ > /dev/null";
|
||||
@exec($command, $output, $results);
|
||||
echo "****************************** Install Complete ******************************\n";
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<?php
|
||||
/**
|
||||
* @package Campcaster
|
||||
* @package Airtime
|
||||
* @copyright 2010 Sourcefabric O.P.S.
|
||||
* @license http://www.gnu.org/licenses/gpl.txt
|
||||
*/
|
||||
|
@ -236,4 +236,4 @@ echo "************************************\n";
|
|||
echo "* StorageServer Uninstall Complete *\n";
|
||||
echo "************************************\n";
|
||||
|
||||
?>
|
||||
?>
|
||||
|
|
|
@ -2,21 +2,21 @@
|
|||
#-------------------------------------------------------------------------------
|
||||
# Copyright (c) 2010 Sourcefabric O.P.S.
|
||||
#
|
||||
# This file is part of the Campcaster project.
|
||||
# This file is part of the Airtime project.
|
||||
# http://campcaster.sourcefabric.org/
|
||||
#
|
||||
# Campcaster is free software; you can redistribute it and/or modify
|
||||
# Airtime is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# Campcaster is distributed in the hope that it will be useful,
|
||||
# Airtime is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with Campcaster; if not, write to the Free Software
|
||||
# along with Airtime; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
#
|
||||
#-------------------------------------------------------------------------------
|
||||
|
|
|
@ -2,21 +2,21 @@
|
|||
#-------------------------------------------------------------------------------
|
||||
# Copyright (c) 2010 Sourcefabric O.P.S.
|
||||
#
|
||||
# This file is part of the Campcaster project.
|
||||
# http://campcaster.campware.org/
|
||||
# This file is part of the Airtime project.
|
||||
# http://campcaster.sourcefabric.org/
|
||||
#
|
||||
# Campcaster is free software; you can redistribute it and/or modify
|
||||
# Airtime is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# Campcaster is distributed in the hope that it will be useful,
|
||||
# Airtime is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with Campcaster; if not, write to the Free Software
|
||||
# along with Airtime; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
#
|
||||
#-------------------------------------------------------------------------------
|
||||
|
|
|
@ -2,21 +2,21 @@
|
|||
# getID3 - read and writes tags in media files - see getid3.readme.txt
|
||||
# getID3 by James Heinrich <getid3@users.sourceforge.net>
|
||||
#
|
||||
# This file is part of the Campcaster project.
|
||||
# This file is part of the Airtime project.
|
||||
# Copyright (c) 2010 Sourcefabric O.P.S.
|
||||
#
|
||||
# Campcaster is free software; you can redistribute it and/or modify
|
||||
# Airtime is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# Campcaster is distributed in the hope that it will be useful,
|
||||
# Airtime is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with Campcaster; if not, write to the Free Software
|
||||
# along with Airtime; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
#
|
||||
# @configure_input@
|
||||
|
|
|
@ -1,21 +1,21 @@
|
|||
dnl-----------------------------------------------------------------------------
|
||||
dnl Copyright (c) 2010 Sourcefabric O.P.S.
|
||||
dnl
|
||||
dnl This file is part of the Campcaster project.
|
||||
dnl This file is part of the Airtime project.
|
||||
dnl http://campcaster.sourcefabric.org/
|
||||
dnl
|
||||
dnl Campcaster is free software; you can redistribute it and/or modify
|
||||
dnl Airtime is free software; you can redistribute it and/or modify
|
||||
dnl it under the terms of the GNU General Public License as published by
|
||||
dnl the Free Software Foundation; either version 2 of the License, or
|
||||
dnl (at your option) any later version.
|
||||
dnl
|
||||
dnl Campcaster is distributed in the hope that it will be useful,
|
||||
dnl Airtime is distributed in the hope that it will be useful,
|
||||
dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
dnl GNU General Public License for more details.
|
||||
dnl
|
||||
dnl You should have received a copy of the GNU General Public License
|
||||
dnl along with Campcaster; if not, write to the Free Software
|
||||
dnl along with Airtime; if not, write to the Free Software
|
||||
dnl Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
dnl
|
||||
dnl-----------------------------------------------------------------------------
|
||||
|
|
|
@ -2,20 +2,20 @@
|
|||
# doxygen.config
|
||||
# Copyright (c) 2010 Sourcefabric O.P.S.
|
||||
#
|
||||
# This file is part of the Campcaster project.
|
||||
# This file is part of the Airtime project.
|
||||
#
|
||||
# Campcaster is free software; you can redistribute it and/or modify
|
||||
# Airtime is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# Campcaster is distributed in the hope that it will be useful,
|
||||
# Airtime is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with Campcaster; if not, write to the Free Software
|
||||
# along with Airtime; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
#
|
||||
#-------------------------------------------------------------------------------
|
||||
|
|
|
@ -0,0 +1,48 @@
|
|||
function addRemove(el) {
|
||||
var id, span;
|
||||
|
||||
id = $(el).attr("id").split("_").pop();
|
||||
|
||||
span = $('<span id="search_remove_'+id+'">Remove</span>').click(function(){
|
||||
$(this).parent().parent().remove();
|
||||
});
|
||||
|
||||
$(el).find("dl input").after(span);
|
||||
}
|
||||
|
||||
function ajaxAddRow() {
|
||||
var group_id;
|
||||
|
||||
group_id = $(this).parent().parent().attr("id").split("_").pop();
|
||||
|
||||
var url = '/Search/newfield/format/json';
|
||||
|
||||
$.post(url, {group: group_id}, function(json) {
|
||||
|
||||
var newRow = $(json.html).find("#fieldset-row_"+json.row);
|
||||
|
||||
$("#fieldset-group_"+group_id+" dl:first").append(newRow);
|
||||
});
|
||||
}
|
||||
|
||||
function ajaxAddGroup() {
|
||||
|
||||
var url = '/Search/newgroup/format/json';
|
||||
|
||||
$.post(url, function(json) {
|
||||
|
||||
$(".zend_form").append(json.html);
|
||||
$('[id$="search_add_row"]').click(ajaxAddRow);
|
||||
});
|
||||
}
|
||||
|
||||
function setUpSearch() {
|
||||
|
||||
$("#search_add_group").click(ajaxAddGroup);
|
||||
|
||||
$('[id$="search_add_row"]').click(ajaxAddRow);
|
||||
|
||||
$('[id^="fieldset-row_"]').each(function(i, el){
|
||||
addRemove(el);
|
||||
});
|
||||
}
|
|
@ -66,6 +66,7 @@ function setUpLibrary() {
|
|||
$("#library_display tr:first-child span.album").data({'ob': 'dc:source', 'order' : 'asc'});
|
||||
$("#library_display tr:first-child span.track").data({'ob': 'ls:track_num', 'order' : 'asc'});
|
||||
$("#library_display tr:first-child span.length").data({'ob': 'dcterms:extent', 'order' : 'asc'});
|
||||
$("#library_display tr:first-child span.type").data({'ob': 'dcterms:extent', 'order' : 'asc'});
|
||||
|
||||
$("#library_display tr:first-child span").click(function(){
|
||||
var url = "/Library/contents/format/html",
|
|
@ -0,0 +1,28 @@
|
|||
function setUpQuickSearch() {
|
||||
|
||||
$("#library_quick_search input").keyup(function(ev){
|
||||
var url, string;
|
||||
//alert(x);
|
||||
|
||||
url = "/Library/quick-search/format/json";
|
||||
string = $(this).val();
|
||||
|
||||
$.post(url, {search: string}, function(json){
|
||||
var html, data;
|
||||
//hacky way until I can figure out paginator better.
|
||||
html = json.html.replace(/quick-search\/format\/json/g, "index");
|
||||
|
||||
var el = $(html);
|
||||
|
||||
data = el.find("tr:not(:first-child)");
|
||||
setLibraryContents(data);
|
||||
|
||||
var lib = $("#library_content");
|
||||
|
||||
lib.find("div.paginationControl").remove();
|
||||
lib.append(el[2]);
|
||||
|
||||
});
|
||||
});
|
||||
|
||||
}
|
|
@ -1,5 +1,6 @@
|
|||
$(document).ready(function() {
|
||||
|
||||
setUpQuickSearch();
|
||||
setUpLibrary();
|
||||
setUpSPL();
|
||||
|
|
@ -255,7 +255,7 @@ function eventMenu(action, el, pos) {
|
|||
|
||||
length = event.end.getTime() - event.start.getTime();
|
||||
|
||||
h = length / (1000*60*60);
|
||||
h = Math.floor(length / (1000*60*60));
|
||||
m = (length % (1000*60*60)) / (1000*60);
|
||||
s = ((length % (1000*60*60)) % (1000*60)) / 1000;
|
||||
|
|
@ -1,65 +0,0 @@
|
|||
function addRemove(el) {
|
||||
var id, span;
|
||||
|
||||
id = $(el).attr("id").split("_").pop();
|
||||
|
||||
span = $('<span id="search_remove_'+id+'">Remove</span>').click(function(){
|
||||
$(this).parent().parent().remove();
|
||||
});
|
||||
|
||||
$(el).find("dl input").after(span);
|
||||
}
|
||||
|
||||
function ajaxAddField() {
|
||||
|
||||
var id = $("#search_next_id").val();
|
||||
|
||||
var url = '/Search/newfield';
|
||||
url = url + '/format/html';
|
||||
url = url + '/id/' + id;
|
||||
|
||||
$.post(url, function(newElement) {
|
||||
|
||||
var el = $(newElement);
|
||||
addRemove(el);
|
||||
|
||||
$(".zend_form").append(el);
|
||||
$("#search_next_id").val(++id);
|
||||
});
|
||||
}
|
||||
|
||||
function searchLibrary() {
|
||||
var url, data;
|
||||
|
||||
url = '/Search/display/format/json';
|
||||
data = $("form").serializeArray();
|
||||
|
||||
$.post(url, data, function(json){
|
||||
|
||||
if(json.form) {
|
||||
$("#search")
|
||||
.empty()
|
||||
.append(json.form);
|
||||
}
|
||||
|
||||
|
||||
if(json.results) {
|
||||
$("#library_display tr:not(:first-child)").remove();
|
||||
$("#library_display tbody").append(json.results);
|
||||
|
||||
//in campcaster/library.js
|
||||
addLibraryItemEvents();
|
||||
}
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
function setUpSearch() {
|
||||
|
||||
$("#search_add").click(ajaxAddField);
|
||||
$("#search_submit").click(searchLibrary);
|
||||
|
||||
$('[id^="fieldset-row_"]').each(function(i, el){
|
||||
addRemove(el);
|
||||
});
|
||||
}
|
|
@ -21,7 +21,6 @@
|
|||
$(cc.currentElem).append(prevDiv);
|
||||
|
||||
var currParentDiv = document.createElement('div');
|
||||
currParentDiv.setAttribute("style", "background-color:#bbbbbb;");
|
||||
$(cc.currentElem).append(currParentDiv);
|
||||
|
||||
var currDiv = document.createElement('div');
|
||||
|
@ -145,7 +144,7 @@
|
|||
}
|
||||
|
||||
function getScheduleFromServer(){
|
||||
$.ajax({ url: "http://localhost/Schedule/get-current-playlist/format/json", dataType:"json", success:function(data){
|
||||
$.ajax({ url: "/Schedule/get-current-playlist/format/json", dataType:"json", success:function(data){
|
||||
parseItems(data.entries);
|
||||
}});
|
||||
setTimeout(getScheduleFromServer, 5000);
|
||||
|
|
|
@ -20,8 +20,8 @@ from urlparse import urlparse
|
|||
|
||||
|
||||
def api_client_factory(config):
|
||||
if config["api_client"] == "campcaster":
|
||||
return CampcasterApiClient(config)
|
||||
if config["api_client"] == "airtime":
|
||||
return AirTimeApiClient(config)
|
||||
elif config["api_client"] == "obp":
|
||||
return ObpApiClient(config)
|
||||
else:
|
||||
|
@ -100,15 +100,15 @@ class ApiClientInterface:
|
|||
# nil
|
||||
|
||||
################################################################################
|
||||
# Campcaster API Client
|
||||
# Airtime API Client
|
||||
################################################################################
|
||||
|
||||
class CampcasterApiClient(ApiClientInterface):
|
||||
class AirTimeApiClient(ApiClientInterface):
|
||||
|
||||
def __init__(self, config):
|
||||
self.config = config
|
||||
|
||||
def __get_campcaster_version(self, verbose = True):
|
||||
def __get_airtime_version(self, verbose = True):
|
||||
logger = logging.getLogger()
|
||||
url = self.config["base_url"] + self.config["api_base"] + self.config["version_url"]
|
||||
url = url.replace("%%api_key%%", self.config["api_key"])
|
||||
|
@ -120,7 +120,7 @@ class CampcasterApiClient(ApiClientInterface):
|
|||
logger.debug("Data: %s", data)
|
||||
response_json = json.read(data)
|
||||
version = response_json['version']
|
||||
logger.debug("Campcaster Version %s detected", version)
|
||||
logger.debug("Airtime Version %s detected", version)
|
||||
except Exception, e:
|
||||
try:
|
||||
if e[1] == 401:
|
||||
|
@ -137,7 +137,7 @@ class CampcasterApiClient(ApiClientInterface):
|
|||
if e[1] == 404:
|
||||
if (verbose):
|
||||
print '#####################################'
|
||||
print '# Unable to contact the Campcaster-API'
|
||||
print '# Unable to contact the Airtime-API'
|
||||
print '# ' + url
|
||||
print '#####################################'
|
||||
return False
|
||||
|
@ -145,7 +145,7 @@ class CampcasterApiClient(ApiClientInterface):
|
|||
pass
|
||||
|
||||
version = 0
|
||||
logger.error("Unable to detect Campcaster Version - %s, Response: %s", e, response)
|
||||
logger.error("Unable to detect Airtime Version - %s, Response: %s", e, response)
|
||||
|
||||
return version
|
||||
|
||||
|
@ -168,22 +168,22 @@ class CampcasterApiClient(ApiClientInterface):
|
|||
|
||||
|
||||
def is_server_compatible(self, verbose = True):
|
||||
version = self.__get_campcaster_version(verbose)
|
||||
version = self.__get_airtime_version(verbose)
|
||||
if (version == 0 or version == False):
|
||||
if (verbose):
|
||||
print 'Unable to get Campcaster version number.'
|
||||
print 'Unable to get Airtime version number.'
|
||||
print
|
||||
return False
|
||||
elif (version[0:4] != "1.6."):
|
||||
if (verbose):
|
||||
print 'Campcaster version: ' + str(version)
|
||||
print 'pypo not compatible with this version of Campcaster.'
|
||||
print 'Airtime version: ' + str(version)
|
||||
print 'pypo not compatible with this version of Airtime.'
|
||||
print
|
||||
return False
|
||||
else:
|
||||
if (verbose):
|
||||
print 'Campcaster version: ' + str(version)
|
||||
print 'pypo is compatible with this version of Campcaster.'
|
||||
print 'Airtime version: ' + str(version)
|
||||
print 'pypo is compatible with this version of Airtime.'
|
||||
print
|
||||
return True
|
||||
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
import campcaster_api_client
|
||||
import airtime_api_client
|
||||
import obp_api_client
|
||||
|
||||
def create_api_client(config):
|
||||
if config["api_client"] == "campcaster":
|
||||
return campcaster_api_client.CampcasterApiClient(config)
|
||||
if config["api_client"] == "airtime":
|
||||
return campcaster_api_client.AirtimeApiClient(config)
|
||||
elif config["api_client"] == "obp":
|
||||
return obp_api_client.ObpApiClient(config)
|
||||
|
||||
|
||||
|
|
|
@ -5,9 +5,9 @@
|
|||
# Set the type of client you are using.
|
||||
# Currently supported types:
|
||||
# 1) "obp" = Open Broadcast Platform
|
||||
# 2) "campcaster"
|
||||
# 2) "airtime"
|
||||
#
|
||||
api_client = "campcaster"
|
||||
api_client = "airtime"
|
||||
|
||||
############################################
|
||||
# Directories / Hosts #
|
||||
|
@ -66,7 +66,7 @@ cue_style = 'pre'
|
|||
################################################################################
|
||||
|
||||
#####################
|
||||
# Campcaster Config #
|
||||
# Airtime Config #
|
||||
#####################
|
||||
# Value needed to access the API
|
||||
api_key = 'AAA'
|
||||
|
|
|
@ -1,97 +0,0 @@
|
|||
<?php
|
||||
require_once '../../application/configs/conf.php';
|
||||
require_once 'DB.php';
|
||||
require_once '../../application/models/Playlist.php';
|
||||
require_once '../../application/models/StoredFile.php';
|
||||
require_once(__DIR__.'/../../library/propel/runtime/lib/Propel.php');
|
||||
// Initialize Propel with the runtime configuration
|
||||
Propel::init(__DIR__."/../../application/configs/propel-config.php");
|
||||
// Add the generated 'classes' directory to the include path
|
||||
set_include_path(__DIR__."/../../application/models" . PATH_SEPARATOR . get_include_path());
|
||||
|
||||
$dsn = $CC_CONFIG['dsn'];
|
||||
|
||||
$CC_DBC = DB::connect($dsn, TRUE);
|
||||
if (PEAR::isError($CC_DBC)) {
|
||||
echo "ERROR: ".$CC_DBC->getMessage()." ".$CC_DBC->getUserInfo()."\n";
|
||||
exit(1);
|
||||
}
|
||||
$CC_DBC->setFetchMode(DB_FETCHMODE_ASSOC);
|
||||
|
||||
|
||||
$playlistName = "pypo_playlist_test";
|
||||
$minutesFromNow = 1;
|
||||
|
||||
echo " ************************************************************** \n";
|
||||
echo " This script schedules a playlist to play $minutesFromNow minute(s) from now.\n";
|
||||
echo " This is a utility to help you debug the scheduler.\n";
|
||||
echo " ************************************************************** \n";
|
||||
echo "\n";
|
||||
echo "Deleting playlists with the name '$playlistName'...";
|
||||
// Delete any old playlists
|
||||
$pl2 = Playlist::findPlaylistByName($playlistName);
|
||||
foreach ($pl2 as $playlist) {
|
||||
//var_dump($playlist);
|
||||
$playlist->delete();
|
||||
}
|
||||
echo "done.\n";
|
||||
|
||||
// Create a new playlist
|
||||
echo "Creating new playlist '$playlistName'...";
|
||||
$pl = new Playlist();
|
||||
$pl->create($playlistName);
|
||||
|
||||
// Add a media clip
|
||||
$mediaFile = StoredFile::findByOriginalName("ACDC_-_Back_In_Black-sample.ogg");
|
||||
if (is_null($mediaFile)) {
|
||||
echo "Adding test audio clip to the database.\n";
|
||||
$v = array("filepath" => __DIR__."/../../audio_samples/OpSound/ACDC_-_Back_In_Black-sample.ogg");
|
||||
$mediaFile = StoredFile::Insert($v);
|
||||
if (PEAR::isError($mediaFile)) {
|
||||
var_dump($mediaFile);
|
||||
exit();
|
||||
}
|
||||
}
|
||||
$pl->addAudioClip($mediaFile->getId());
|
||||
|
||||
$mediaFile = StoredFile::findByOriginalName("Peter Rudenko - Opening.mp3");
|
||||
if (is_null($mediaFile)) {
|
||||
echo "Adding test audio clip to the database.\n";
|
||||
$v = array("filepath" => __DIR__."/../../audio_samples/OpSound/Peter Rudenko - Opening.mp3");
|
||||
$mediaFile = StoredFile::Insert($v);
|
||||
if (PEAR::isError($mediaFile)) {
|
||||
var_dump($mediaFile);
|
||||
exit();
|
||||
}
|
||||
}
|
||||
$pl->addAudioClip($mediaFile->getId());
|
||||
echo "done.\n";
|
||||
|
||||
//$pl2 = Playlist::findPlaylistByName("pypo_playlist_test");
|
||||
//var_dump($pl2);
|
||||
|
||||
// Get current time
|
||||
// In the format YYYY-MM-DD HH:MM:SS.nnnnnn
|
||||
$startTime = date("Y-m-d H:i:s");
|
||||
$endTime = date("Y-m-d H:i:s", time()+(60*60));
|
||||
|
||||
echo "Removing everything from the scheduler between $startTime and $endTime...";
|
||||
// Scheduler: remove any playlists for the next hour
|
||||
Schedule::RemoveItemsInRange($startTime, $endTime);
|
||||
// Check for succcess
|
||||
$scheduleClear = Schedule::isScheduleEmptyInRange($startTime, "01:00:00");
|
||||
if (!$scheduleClear) {
|
||||
echo "\nERROR: Schedule could not be cleared.\n\n";
|
||||
var_dump(Schedule::GetItems($startTime, $endTime));
|
||||
exit;
|
||||
}
|
||||
echo "done.\n";
|
||||
|
||||
// Schedule the playlist for two minutes from now
|
||||
echo "Scheduling new playlist...\n";
|
||||
$playTime = date("Y-m-d H:i:s", time()+(60*$minutesFromNow));
|
||||
$scheduleGroup = new ScheduleGroup();
|
||||
$scheduleGroup->add($playTime, null, $pl->getId());
|
||||
|
||||
echo " SUCCESS: Playlist scheduled at $playTime\n\n";
|
||||
?>
|
|
@ -2,25 +2,25 @@
|
|||
#-------------------------------------------------------------------------------
|
||||
# Copyright (c) 2010 Sourcefabric O.P.S.
|
||||
#
|
||||
# This file is part of the Campcaster project.
|
||||
# This file is part of the Airtime project.
|
||||
# http://campcaster.sourcefabric.org/
|
||||
#
|
||||
# Campcaster is free software; you can redistribute it and/or modify
|
||||
# Airtime is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# Campcaster is distributed in the hope that it will be useful,
|
||||
# Airtime is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with Campcaster; if not, write to the Free Software
|
||||
# along with Airtime; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
#
|
||||
#-------------------------------------------------------------------------------
|
||||
#-------------------------------------------------------------------------------
|
||||
# This script cleans audio files in the Campcaster storageServer.
|
||||
# This script cleans audio files in the Airtime storageServer.
|
||||
|
||||
php -q CleanStor.php "$@" || exit 1
|
||||
|
|
|
@ -2,26 +2,26 @@
|
|||
#-------------------------------------------------------------------------------
|
||||
# Copyright (c) 2010 Sourcefabric O.P.S.
|
||||
#
|
||||
# This file is part of the Campcaster project.
|
||||
# This file is part of the Airtime project.
|
||||
# http://campcaster.sourcefabric.org/
|
||||
#
|
||||
# Campcaster is free software; you can redistribute it and/or modify
|
||||
# Airtime is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# Campcaster is distributed in the hope that it will be useful,
|
||||
# Airtime is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with Campcaster; if not, write to the Free Software
|
||||
# along with Airtime; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
#
|
||||
#-------------------------------------------------------------------------------
|
||||
#-------------------------------------------------------------------------------
|
||||
# This script creates a tgz archive of the Campcaster storage.
|
||||
# This script creates a tgz archive of the Airtime storage.
|
||||
#
|
||||
# To get usage help, try the -h option
|
||||
#-------------------------------------------------------------------------------
|
||||
|
@ -44,7 +44,7 @@ destfile="storage$datestr.tar"
|
|||
#-------------------------------------------------------------------------------
|
||||
printUsage()
|
||||
{
|
||||
echo "This script creates a tgz archive of the Campcaster storage.";
|
||||
echo "This script creates a tgz archive of the Airtime storage.";
|
||||
echo "parameters:";
|
||||
echo "";
|
||||
echo " -d, --destination Destination directory [default:$tmpmaindir].";
|
||||
|
@ -91,7 +91,7 @@ tmpdir=`mktemp -d $tmpmaindir/tmp.XXXXXX`
|
|||
echo "Backuping to $destdir/$destfile :"
|
||||
echo "Dumping database ..."
|
||||
cd $phpdir
|
||||
php -q campcaster_backup.php > $tmpdir/$dbxml
|
||||
php -q airtime_backup.php > $tmpdir/$dbxml
|
||||
echo "Packaging stored files ..."
|
||||
cd $phpdir
|
||||
storpath=`php -q getStorPath.php`
|
|
@ -2,26 +2,26 @@
|
|||
#-------------------------------------------------------------------------------
|
||||
# Copyright (c) 2010 Sourcefabric O.P.S.
|
||||
#
|
||||
# This file is part of the Campcaster project.
|
||||
# This file is part of the Airtime project.
|
||||
# http://campcaster.sourcefabric.org/
|
||||
#
|
||||
# Campcaster is free software; you can redistribute it and/or modify
|
||||
# Airtime is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# Campcaster is distributed in the hope that it will be useful,
|
||||
# Airtime is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with Campcaster; if not, write to the Free Software
|
||||
# along with Airtime; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
#
|
||||
#-------------------------------------------------------------------------------
|
||||
#-------------------------------------------------------------------------------
|
||||
# This script imports audio files to the Campcaster storageServer.
|
||||
# This script imports audio files to the Airtime storageServer.
|
||||
#
|
||||
# To get usage help, try the -h option
|
||||
#-------------------------------------------------------------------------------
|
||||
|
@ -40,4 +40,4 @@ invokePwd=$PWD
|
|||
#echo $invokePwd
|
||||
cd $phpdir
|
||||
|
||||
php -q campcaster-import.php --dir "$invokePwd" "$@" || exit 1
|
||||
php -q airtime-import.php --dir "$invokePwd" "$@" || exit 1
|
|
@ -2,7 +2,7 @@
|
|||
/**
|
||||
* Mass import of audio files.
|
||||
*
|
||||
* @package Campcaster
|
||||
* @package Airtime
|
||||
* @subpackage StorageAdmin
|
||||
* @copyright 2010 Sourcefabric O.P.S.
|
||||
* @license http://www.gnu.org/licenses/gpl.txt
|
||||
|
@ -27,7 +27,7 @@ function camp_import_error_handler()
|
|||
function printUsage()
|
||||
{
|
||||
global $CC_CONFIG;
|
||||
echo "There are two ways to import audio files into Campcaster: linking\n";
|
||||
echo "There are two ways to import audio files into Airtime: linking\n";
|
||||
echo "or copying.\n";
|
||||
echo "\n";
|
||||
echo "Linking has the advantage that it will not duplicate any files,\n";
|
||||
|
@ -40,13 +40,13 @@ function printUsage()
|
|||
echo "your files.\n";
|
||||
echo "\n";
|
||||
echo "Usage:\n";
|
||||
echo " campcaster-import [OPTIONS] FILES_OR_DIRS\n";
|
||||
echo " airtime-import [OPTIONS] FILES_OR_DIRS\n";
|
||||
echo "\n";
|
||||
echo "Options:\n";
|
||||
echo " -l, --link Link to specified files.\n";
|
||||
echo " Saves storage space, but you cannot move, delete,\n";
|
||||
echo " or rename the original files, otherwise there will\n";
|
||||
echo " be dead air when Campcaster tries to play the file.\n";
|
||||
echo " be dead air when Airtime tries to play the file.\n";
|
||||
echo "\n";
|
||||
echo " -c, --copy Copy the specified files.\n";
|
||||
echo " This is useful if you are importing from removable media.\n";
|
||||
|
@ -228,7 +228,7 @@ function camp_import_audio_file($p_filepath, $p_importMode = null, $p_testOnly =
|
|||
$DEBUG_IMPORT = false;
|
||||
|
||||
echo "========================\n";
|
||||
echo "Campcaster Import Script\n";
|
||||
echo "Airtime Import Script\n";
|
||||
echo "========================\n";
|
||||
$g_errors = 0;
|
||||
//print_r($argv);
|
||||
|
@ -238,11 +238,11 @@ if ($DEBUG_IMPORT) {
|
|||
$testonly = false;
|
||||
$importMode = "link";
|
||||
$files = array("/path/to/your/test/file.mp3");
|
||||
$dsn = array('username' => 'campcaster',
|
||||
'password' => 'campcaster',
|
||||
$dsn = array('username' => 'airtime',
|
||||
'password' => 'airtime',
|
||||
'hostspec' => 'localhost',
|
||||
'phptype' => 'pgsql',
|
||||
'database' => 'campcaster');
|
||||
'database' => 'airtime');
|
||||
} else {
|
||||
$dsn = $CC_CONFIG['dsn'];
|
||||
}
|
||||
|
@ -350,4 +350,4 @@ if ($g_errors > 0) {
|
|||
echo " *** Total: ".($g_fileCount+$g_duplicates)." files in $time seconds = $speed files/second.\n";
|
||||
echo "==========================================================================\n";
|
||||
|
||||
?>
|
||||
?>
|
|
@ -2,26 +2,26 @@
|
|||
#-------------------------------------------------------------------------------
|
||||
# Copyright (c) 2010 Sourcefabric O.P.S.
|
||||
#
|
||||
# This file is part of the Campcaster project.
|
||||
# This file is part of the Airtime project.
|
||||
# http://campcaster.sourcefabric.org/
|
||||
#
|
||||
# Campcaster is free software; you can redistribute it and/or modify
|
||||
# Airtime is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# Campcaster is distributed in the hope that it will be useful,
|
||||
# Airtime is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with Campcaster; if not, write to the Free Software
|
||||
# along with Airtime; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
#
|
||||
#-------------------------------------------------------------------------------
|
||||
#-------------------------------------------------------------------------------
|
||||
# This script restores the data which was backed up with campcaster-backup.
|
||||
# This script restores the data which was backed up with airtime-backup.
|
||||
#
|
||||
# To get usage help, try the -h option
|
||||
#-------------------------------------------------------------------------------
|
||||
|
@ -42,7 +42,7 @@ tarfile0="xmls.tar"
|
|||
#-------------------------------------------------------------------------------
|
||||
printUsage()
|
||||
{
|
||||
echo "This script restores the data which was backed up with campcaster-backup."
|
||||
echo "This script restores the data which was backed up with airtime-backup."
|
||||
echo "parameters:";
|
||||
echo "";
|
||||
echo " -f, --file File with the backed up data, required.";
|
|
@ -2,22 +2,22 @@
|
|||
#-------------------------------------------------------------------------------
|
||||
# Copyright (c) 2010 Sourcefabric O.P.S.
|
||||
#
|
||||
# This file is part of the Campcaster project.
|
||||
# This file is part of the Airtime project.
|
||||
# http://campcaster.sourcefabric.org/
|
||||
# To report bugs, send an e-mail to bugs@campware.org
|
||||
#
|
||||
# Campcaster is free software; you can redistribute it and/or modify
|
||||
# Airtime is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# Campcaster is distributed in the hope that it will be useful,
|
||||
# Airtime is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with Campcaster; if not, write to the Free Software
|
||||
# along with Airtime; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
#
|
||||
#-------------------------------------------------------------------------------
|
||||
|
|
|
@ -3,22 +3,22 @@
|
|||
#-------------------------------------------------------------------------------
|
||||
# Copyright (c) 2010 Sourcefabric O.P.S.
|
||||
#
|
||||
# This file is part of the Campcaster project.
|
||||
# This file is part of the Airtime project.
|
||||
# http://campcaster.sourcefabric.org/
|
||||
# To report bugs, send an e-mail to bugs@campware.org
|
||||
#
|
||||
# Campcaster is free software; you can redistribute it and/or modify
|
||||
# Airtime is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# Campcaster is distributed in the hope that it will be useful,
|
||||
# Airtime is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with Campcaster; if not, write to the Free Software
|
||||
# along with Airtime; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
#
|
||||
#
|
||||
|
|
Loading…
Reference in New Issue