diff --git a/airtime_mvc/application/common/FileDataHelper.php b/airtime_mvc/application/common/FileDataHelper.php index d9e8b638a..b7b390064 100644 --- a/airtime_mvc/application/common/FileDataHelper.php +++ b/airtime_mvc/application/common/FileDataHelper.php @@ -431,4 +431,20 @@ class FileDataHelper { } } + /** + * Track Type + * + * @return string Track type key value + */ + public static function saveTrackType() + { + if (isset($_COOKIE['tt_upload'])) { + $tt = $_COOKIE['tt_upload']; + } else { + // Use default track type + $tt = "MUS"; + } + return $tt; + } + } diff --git a/airtime_mvc/application/configs/ACL.php b/airtime_mvc/application/configs/ACL.php index 917e70abc..3cebd512b 100644 --- a/airtime_mvc/application/configs/ACL.php +++ b/airtime_mvc/application/configs/ACL.php @@ -12,6 +12,7 @@ $ccAcl->addRole(new Zend_Acl_Role('G')) $ccAcl->add(new Zend_Acl_Resource('library')) ->add(new Zend_Acl_Resource('index')) ->add(new Zend_Acl_Resource('user')) + ->add(new Zend_Acl_Resource('tracktype')) ->add(new Zend_Acl_Resource('error')) ->add(new Zend_Acl_Resource('login')) ->add(new Zend_Acl_Resource('playlist')) @@ -82,9 +83,10 @@ $ccAcl->allow('G', 'index') ->allow('H', 'showlistenerstat') ->allow('A', 'playouthistorytemplate') ->allow('A', 'user') + ->allow('A', 'tracktype') ->allow('A', 'systemstatus') ->allow('A', 'preference'); - + $aclPlugin = new Zend_Controller_Plugin_Acl($ccAcl); diff --git a/airtime_mvc/application/configs/classmap-airtime-conf.php b/airtime_mvc/application/configs/classmap-airtime-conf.php index 4eb58b161..9f307ae86 100644 --- a/airtime_mvc/application/configs/classmap-airtime-conf.php +++ b/airtime_mvc/application/configs/classmap-airtime-conf.php @@ -85,6 +85,9 @@ return array ( 'BaseCcStreamSetting' => 'airtime/om/BaseCcStreamSetting.php', 'BaseCcStreamSettingPeer' => 'airtime/om/BaseCcStreamSettingPeer.php', 'BaseCcStreamSettingQuery' => 'airtime/om/BaseCcStreamSettingQuery.php', + 'BaseCcTracktypes' => 'airtime/om/BaseCcTracktypes.php', + 'BaseCcTracktypesPeer' => 'airtime/om/BaseCcTracktypesPeer.php', + 'BaseCcTracktypesQuery' => 'airtime/om/BaseCcTracktypesQuery.php', 'BaseCcSubjs' => 'airtime/om/BaseCcSubjs.php', 'BaseCcSubjsPeer' => 'airtime/om/BaseCcSubjsPeer.php', 'BaseCcSubjsQuery' => 'airtime/om/BaseCcSubjsQuery.php', @@ -233,6 +236,10 @@ return array ( 'CcStreamSettingPeer' => 'airtime/CcStreamSettingPeer.php', 'CcStreamSettingQuery' => 'airtime/CcStreamSettingQuery.php', 'CcStreamSettingTableMap' => 'airtime/map/CcStreamSettingTableMap.php', + 'CcTracktypes' => 'airtime/CcTracktypes.php', + 'CcTracktypesPeer' => 'airtime/CcTracktypesPeer.php', + 'CcTracktypesQuery' => 'airtime/CcTracktypesQuery.php', + 'CcTracktypesTableMap' => 'airtime/map/CcTracktypesTableMap.php', 'CcSubjs' => 'airtime/CcSubjs.php', 'CcSubjsPeer' => 'airtime/CcSubjsPeer.php', 'CcSubjsQuery' => 'airtime/CcSubjsQuery.php', diff --git a/airtime_mvc/application/configs/constants.php b/airtime_mvc/application/configs/constants.php index a56a908b5..30901efb0 100644 --- a/airtime_mvc/application/configs/constants.php +++ b/airtime_mvc/application/configs/constants.php @@ -83,6 +83,7 @@ define('MDATA_KEY_CUE_IN' , 'cuein'); define('MDATA_KEY_CUE_OUT' , 'cueout'); define('MDATA_KEY_ARTWORK' , 'artwork'); define('MDATA_KEY_ARTWORK_DATA', 'artwork_data'); +define('MDATA_KEY_TRACK_TYPE' , 'track_type'); define('UI_MDATA_VALUE_FORMAT_FILE' , 'File'); define('UI_MDATA_VALUE_FORMAT_STREAM' , 'live stream'); diff --git a/airtime_mvc/application/configs/navigation.php b/airtime_mvc/application/configs/navigation.php index 47776ff54..0c30ba663 100644 --- a/airtime_mvc/application/configs/navigation.php +++ b/airtime_mvc/application/configs/navigation.php @@ -91,6 +91,12 @@ $pages[] = array( 'controller' => 'user', 'action' => 'add-user', 'resource' => 'user' + ),array( + 'label' => _('Track Types'), + 'module' => 'default', + 'controller' => 'tracktype', + 'action' => 'add-tracktype', + 'resource' => 'tracktype' ), array( 'label' => _('Streams'), @@ -138,7 +144,7 @@ $pages[] = array( 'action' => 'index', 'resource' => 'listenerstat' ), - array( + array( 'label' => _('Show Listener Stats'), 'module' => 'default', 'controller' => 'listenerstat', diff --git a/airtime_mvc/application/controllers/ApiController.php b/airtime_mvc/application/controllers/ApiController.php index 212cd7c8b..4dd5b8c80 100644 --- a/airtime_mvc/application/controllers/ApiController.php +++ b/airtime_mvc/application/controllers/ApiController.php @@ -27,6 +27,7 @@ class ApiController extends Zend_Controller_Action "show-schedules", "show-logo", "track", + "track-types", "stream-m3u" ); @@ -635,6 +636,22 @@ class ApiController extends Zend_Controller_Action } } + public function trackTypesAction() + { + if (Application_Model_Preference::GetAllow3rdPartyApi() || $this->checkAuth()) { + // disable the view and the layout + $this->view->layout()->disableLayout(); + $this->_helper->viewRenderer->setNoRender(true); + + $tracktypes = Application_Model_Tracktype::getTracktypes(); + $this->_helper->json->sendJson($tracktypes); + } else { + header('HTTP/1.0 401 Unauthorized'); + print _('You are not allowed to access this resource. '); + exit; + } + } + /** * API endpoint to provide station metadata */ diff --git a/airtime_mvc/application/controllers/TracktypeController.php b/airtime_mvc/application/controllers/TracktypeController.php new file mode 100644 index 000000000..32d22fa56 --- /dev/null +++ b/airtime_mvc/application/controllers/TracktypeController.php @@ -0,0 +1,109 @@ +_helper->getHelper('AjaxContext'); + $ajaxContext->addActionContext('get-tracktype-data-table-info', 'json') + ->addActionContext('get-tracktype-data', 'json') + ->addActionContext('remove-tracktype', 'json') + ->initContext(); + } + + public function addTracktypeAction() + { + // Start the session to re-open write permission to the session so we can + // create the namespace for our csrf token verification + SessionHelper::reopenSessionForWriting(); + $CC_CONFIG = Config::getConfig(); + + $request = $this->getRequest(); + + Zend_Layout::getMvcInstance()->assign('parent_page', 'Settings'); + + $baseUrl = Application_Common_OsPath::getBaseDir(); + + $js_files = array( + 'js/datatables/js/jquery.dataTables.js?', + 'js/datatables/plugin/dataTables.pluginAPI.js?', + 'js/airtime/tracktype/tracktype.js?' + ); + + foreach ($js_files as $js) { + $this->view->headScript()->appendFile( + $baseUrl.$js.$CC_CONFIG['airtime_version'],'text/javascript'); + } + + $this->view->headLink()->appendStylesheet($baseUrl.'css/tracktypes.css?'.$CC_CONFIG['airtime_version']); + + $form = new Application_Form_AddTracktype(); + + $this->view->successMessage = ""; + + if ($request->isPost()) { + $params = $request->getPost(); + $postData = explode('&', $params['data']); + $formData = array(); + foreach($postData as $k=>$v) { + $v = explode('=', $v); + $formData[$v[0]] = urldecode($v[1]); + } + + if ($form->validateCode($formData)) { + $tracktype = new Application_Model_Tracktype($formData['tracktype_id']); + if (empty($formData['tracktype_id'])) { + $tracktype->setCode($formData['code']); + } + $tracktype->setTypeName($formData['type_name']); + $tracktype->setDescription($formData['description']); + $tracktype->setVisibility($formData['visibility']); + $tracktype->save(); + + $form->reset(); + $this->view->form = $form; + + if (strlen($formData['tracktype_id']) == 0) { + $this->view->successMessage = "
"._("Track Type added successfully!")."
"; + } else { + $this->view->successMessage = "
"._("Track Type updated successfully!")."
"; + } + + $this->_helper->json->sendJson(array("valid"=>"true", "html"=>$this->view->render('tracktype/add-tracktype.phtml'))); + } else { + $this->view->form = $form; + $this->_helper->json->sendJson(array("valid"=>"false", "html"=>$this->view->render('tracktype/add-tracktype.phtml'))); + } + + } + + $this->view->form = $form; + } + + public function getTracktypeDataTableInfoAction() + { + $post = $this->getRequest()->getPost(); + $tracktypes = Application_Model_Tracktype::getTracktypesDataTablesInfo($post); + + $this->_helper->json->sendJson($tracktypes); + } + + public function getTracktypeDataAction() + { + $id = $this->_getParam('id'); + $this->view->entries = Application_Model_Tracktype::GetTracktypeData($id); + } + + public function removeTracktypeAction() + { + // action body + $delId = $this->_getParam('id'); + + $tracktype = new Application_Model_Tracktype($delId); + + # Delete the track type + $this->view->entries = $tracktype->delete(); + } + +} diff --git a/airtime_mvc/application/controllers/downgrade_sql/airtime_3.0.0-alpha.9.2/downgrade.sql b/airtime_mvc/application/controllers/downgrade_sql/airtime_3.0.0-alpha.9.2/downgrade.sql new file mode 100644 index 000000000..1aa658107 --- /dev/null +++ b/airtime_mvc/application/controllers/downgrade_sql/airtime_3.0.0-alpha.9.2/downgrade.sql @@ -0,0 +1,3 @@ +ALTER TABLE cc_files DROP COLUMN IF EXISTS track_type; + +DROP TABLE IF EXISTS "cc_track_types" CASCADE; \ No newline at end of file diff --git a/airtime_mvc/application/controllers/plugins/PageLayoutInitPlugin.php b/airtime_mvc/application/controllers/plugins/PageLayoutInitPlugin.php index bbb538fdd..37cc9202e 100644 --- a/airtime_mvc/application/controllers/plugins/PageLayoutInitPlugin.php +++ b/airtime_mvc/application/controllers/plugins/PageLayoutInitPlugin.php @@ -141,6 +141,14 @@ class PageLayoutInitPlugin extends Zend_Controller_Plugin_Abstract $view->headScript()->appendScript("var COMPANY_NAME = '" . COMPANY_NAME . "';"); //Each page refresh or tab open has uniqID, not to be used for security $view->headScript()->appendScript("var UNIQID = '" . uniqid() . "';"); + + $track_type_options = array(); + $track_types = Application_Model_Tracktype::getTracktypes(); + foreach ($track_types as $key => $tt) { + $track_type_options[$tt['code']] = $tt['type_name']; + } + $ttarr = json_encode($track_type_options, JSON_FORCE_OBJECT); + $view->headScript()->appendScript("var TRACKTYPES = " . $ttarr . ";"); } protected function _initHeadLink() diff --git a/airtime_mvc/application/controllers/upgrade_sql/airtime_3.0.0-alpha.9.2/upgrade.sql b/airtime_mvc/application/controllers/upgrade_sql/airtime_3.0.0-alpha.9.2/upgrade.sql new file mode 100644 index 000000000..eef5afec1 --- /dev/null +++ b/airtime_mvc/application/controllers/upgrade_sql/airtime_3.0.0-alpha.9.2/upgrade.sql @@ -0,0 +1,27 @@ +ALTER TABLE cc_files ADD COLUMN track_type VARCHAR(16); + +CREATE TABLE IF NOT EXISTS "cc_track_types" +( + "id" integer DEFAULT nextval('cc_track_types_id_seq'::regclass) NOT NULL, + "code" VARCHAR(16) NOT NULL, + "type_name" VARCHAR(64), + "description" VARCHAR(255), + "visibility" boolean DEFAULT true NOT NULL, + CONSTRAINT "cc_track_types_pkey" PRIMARY KEY ("id"), + CONSTRAINT "cc_track_types_code_key" UNIQUE ("code") +); + +INSERT INTO cc_track_types VALUES (1, 'MUS', 'Music', 'This is used for tracks containing music.', true); +INSERT INTO cc_track_types VALUES (2, 'SID', 'Station ID', 'This is used for Station IDs', true); +INSERT INTO cc_track_types VALUES (3, 'INT', 'Show Intro', 'This can be used for organizing all the show introductions.', true); +INSERT INTO cc_track_types VALUES (4, 'OUT', 'Show Outro', 'This can be used for organizing all the show outroductions.', true); +INSERT INTO cc_track_types VALUES (5, 'SWP', 'Sweeper', 'This is used for segues between songs.', true); +INSERT INTO cc_track_types VALUES (6, 'JIN', 'Jingle', 'A short song or tune, normally played during commercial breaks. Contains one or more hooks.', true); +INSERT INTO cc_track_types VALUES (7, 'PRO', 'Promo', 'For promotional use.', true); +INSERT INTO cc_track_types VALUES (8, 'SHO', 'Shout Out', 'A message of congratulation, greeting. support, or appreciation. ', true); +INSERT INTO cc_track_types VALUES (9, 'NWS', 'News', 'This is used for noteworthy information, announcements.', true); +INSERT INTO cc_track_types VALUES (10, 'COM', 'Commercial', 'This is used for commerical advertising.', true); +INSERT INTO cc_track_types VALUES (11, 'ITV', 'Interview', 'This is used for radio interviews', true); +INSERT INTO cc_track_types VALUES (12, 'VTR', 'Voice Tracking', 'Also referred as robojock or taped. Make announcements without actually being in the station.', true); + +ALTER SEQUENCE cc_track_types_id_seq RESTART WITH 13; \ No newline at end of file diff --git a/airtime_mvc/application/forms/AddTracktype.php b/airtime_mvc/application/forms/AddTracktype.php new file mode 100644 index 000000000..6cfca6222 --- /dev/null +++ b/airtime_mvc/application/forms/AddTracktype.php @@ -0,0 +1,79 @@ +setAttrib('id', 'tracktype_form'); + + $hidden = new Zend_Form_Element_Hidden('tracktype_id'); + $hidden->setDecorators(array('ViewHelper')); + $this->addElement($hidden); + + $this->addElement('hash', 'csrf', array( + 'salt' => 'unique' + )); + + $typeName = new Zend_Form_Element_Text('type_name'); + $typeName->setLabel(_('Type Name:')); + $typeName->setAttrib('class', 'input_text'); + $typeName->addFilter('StringTrim'); + $this->addElement($typeName); + + $code = new Zend_Form_Element_Text('code'); + $code->setLabel(_('Code:')); + $code->setAttrib('class', 'input_text'); + $code->setAttrib('style', 'width: 40%'); + $code->setRequired(true); + $code->addValidator($notEmptyValidator); + $code->addFilter('StringTrim'); + $this->addElement($code); + + $description = new Zend_Form_Element_Textarea('description'); + $description->setLabel(_('Description:')) + ->setFilters(array('StringTrim')) + ->setValidators(array( + new Zend_Validate_StringLength(array('max' => 200)) + )); + $description->setAttrib('class', 'input_text'); + $description->addFilter('StringTrim'); + $this->addElement($description); + + $visibility = new Zend_Form_Element_Select('visibility'); + $visibility->setLabel(_('Visibility:')); + $visibility->setAttrib('class', 'input_select'); + $visibility->setAttrib('style', 'width: 40%'); + $visibility->setMultiOptions(array( + "0" => _("Disabled"), + "1" => _("Enabled") + )); + //$visibility->getValue(); + $visibility->setRequired(true); + $this->addElement($visibility); + + $saveBtn = new Zend_Form_Element_Button('save_tracktype'); + $saveBtn->setAttrib('class', 'btn right-floated'); + $saveBtn->setIgnore(true); + $saveBtn->setLabel(_('Save')); + $this->addElement($saveBtn); + } + + public function validateCode($data) + { + if (strlen($data['tracktype_id']) == 0) { + $count = CcTracktypesQuery::create()->filterByDbCode($data['code'])->count(); + + if ($count != 0) { + $this->getElement('code')->setErrors(array(_("Code is not unique."))); + + return false; + } + } + + return true; + } + +} diff --git a/airtime_mvc/application/forms/EditAudioMD.php b/airtime_mvc/application/forms/EditAudioMD.php index dda96aa5c..9a00b9fb5 100644 --- a/airtime_mvc/application/forms/EditAudioMD.php +++ b/airtime_mvc/application/forms/EditAudioMD.php @@ -91,6 +91,19 @@ class Application_Form_EditAudioMD extends Zend_Form $owner_id->setMultiOptions($user_options); $this->addelement($owner_id); + // Add track type dropdown + $track_type_options = array(); + $track_types = Application_Model_Tracktype::getTracktypes(); + foreach ($track_types as $key => $tt) { + $track_type_options[$tt['code']] = $tt['type_name']; + } + + $track_type = new Zend_Form_Element_Select('track_type'); + $track_type->class = 'input_text'; + $track_type->setLabel(_('Track Type:')); + $track_type->setMultiOptions($track_type_options); + $this->addelement($track_type); + // Description field $description = new Zend_Form_Element_Textarea('description'); $description->class = 'input_text'; diff --git a/airtime_mvc/application/forms/SmartBlockCriteria.php b/airtime_mvc/application/forms/SmartBlockCriteria.php index e539c551c..e3385bef2 100644 --- a/airtime_mvc/application/forms/SmartBlockCriteria.php +++ b/airtime_mvc/application/forms/SmartBlockCriteria.php @@ -8,6 +8,8 @@ class Application_Form_SmartBlockCriteria extends Zend_Form_SubForm private $timePeriodCriteriaOptions; private $sortOptions; private $limitOptions; + private $isOrNotCriteriaOptions; + private $trackTypeOptions; /* We need to know if the criteria value will be a string * or numeric value in order to populate the modifier @@ -42,7 +44,8 @@ class Application_Form_SmartBlockCriteria extends Zend_Form_SubForm "track_title" => "s", "track_number" => "n", "info_url" => "s", - "year" => "n" + "year" => "n", + "track_type" => "tt" ); private function getCriteriaOptions($option = null) @@ -68,6 +71,7 @@ class Application_Form_SmartBlockCriteria extends Zend_Form_SubForm "mtime" => _("Last Modified"), "lptime" => _("Last Played"), "length" => _("Length"), + "track_type" => _("Track Type"), "mime" => _("Mime"), "mood" => _("Mood"), "owner_id" => _("Owner"), @@ -172,29 +176,52 @@ class Application_Form_SmartBlockCriteria extends Zend_Form_SubForm "random" => _("Randomly"), "newest" => _("Newest"), "oldest" => _("Oldest"), - "mostrecentplay" => ("Most recently played"), - "leastrecentplay" => ("Least recently played") + "mostrecentplay" => _("Most recently played"), + "leastrecentplay" => _("Least recently played") ); } return $this->sortOptions; } + private function getIsNotOptions() + { + if (!isset($this->isOrNotCriteriaOptions)) { + $this->isOrNotCriteriaOptions = array( + "0" => _("Select modifier"), + "is" => _("is"), + "is not" => _("is not") + ); + } + return $this->isOrNotCriteriaOptions; + } + + private function getTracktypeOptions() + { + if (!isset($this->trackTypeOptions)) { + $tracktypes = Application_Model_Tracktype::getTracktypes(); + $names[] = _("Select Track Type"); + foreach($tracktypes as $arr => $a){ + $names[$a["code"]] = $tracktypes[$arr]["type_name"]; + } + } + return $names; + } public function init() { } - + /* * converts UTC timestamp citeria into user timezone strings. */ private function convertTimestamps(&$criteria) { $columns = array("utime", "mtime", "lptime"); - + foreach ($columns as $column) { - + if (isset($criteria[$column])) { - + foreach ($criteria[$column] as &$constraint) { // convert to appropriate timezone timestamps only if the modifier is not a relative time if (!in_array($constraint['modifier'], array('before','after','between'))) { @@ -246,7 +273,7 @@ class Application_Form_SmartBlockCriteria extends Zend_Form_SubForm $bl = new Application_Model_Block($p_blockId); $storedCrit = $bl->getCriteriaGrouped(); Logging::info($storedCrit); - + //need to convert criteria to be displayed in the user's timezone if there's some timestamp type. self::convertTimestamps($storedCrit["crit"]); @@ -337,6 +364,8 @@ class Application_Form_SmartBlockCriteria extends Zend_Form_SubForm $criteriaModifers->setMultiOptions($this->getStringCriteriaOptions()); } elseif ($criteriaType == "d") { $criteriaModifers->setMultiOptions($this->getDateTimeCriteriaOptions()); + } elseif ($criteriaType == "tt") { + $criteriaModifers->setMultiOptions($this->getIsNotOptions()); } else { $criteriaModifers->setMultiOptions($this->getNumericCriteriaOptions()); } @@ -348,11 +377,33 @@ class Application_Form_SmartBlockCriteria extends Zend_Form_SubForm /****************** VALUE ***********/ /* The challenge here is that datetime */ - $criteriaValue = new Zend_Form_Element_Text("sp_criteria_value_" . $i . "_" . $j); - $criteriaValue->setAttrib('class', 'input_text sp_input_text') - ->setDecorators(array('viewHelper')); - if ($i != 0 && !isset($criteriaKeys[$i])) { - $criteriaValue->setAttrib('disabled', 'disabled'); + if (isset($criteriaKeys[$i])) { + $modifierTest = (string)$storedCrit["crit"][$criteriaKeys[$i]][$j]["modifier"]; + if (isset($criteriaType) && $criteriaType == "tt" && + preg_match('/is|is not/', $modifierTest) == 1) { + + $criteriaValue = new Zend_Form_Element_Select("sp_criteria_value_" . $i . "_" . $j); + $criteriaValue->setAttrib('class', 'input_select sp_input_select')->setDecorators(array('viewHelper')); + + if (isset($criteriaKeys[$i]) ) { //do if $relativeTT above + $criteriaValue->setAttrib('enabled', 'enabled'); + } else { + $criteriaValue->setAttrib('disabled', 'disabled'); + } + } else { + $criteriaValue = new Zend_Form_Element_Text("sp_criteria_value_" . $i . "_" . $j); + $criteriaValue->setAttrib('class', 'input_text sp_input_text')->setDecorators(array('viewHelper')); + if ($i != 0 && !isset($criteriaKeys[$i])) { + $criteriaValue->setAttrib('disabled', 'disabled'); + } + } + } else { + + $criteriaValue = new Zend_Form_Element_Text("sp_criteria_value_" . $i . "_" . $j); + $criteriaValue->setAttrib('class', 'input_text sp_input_text')->setDecorators(array('viewHelper')); + if ($i != 0 && !isset($criteriaKeys[$i])) { + $criteriaValue->setAttrib('disabled', 'disabled'); + } } if (isset($criteriaKeys[$i])) { /* @@ -365,8 +416,24 @@ class Application_Form_SmartBlockCriteria extends Zend_Form_SubForm preg_match('/before|after|between/', $modifierTest) == 1) { // set relativeDatetime boolean to true so that the datetime select is displayed below $relativeDateTime = true; - // the criteria value will be a number followed by time unit and ago so set input to number part $criteriaValue->setValue(filter_var($storedCrit["crit"][$criteriaKeys[$i]][$j]["value"], FILTER_SANITIZE_NUMBER_INT)); + } elseif (isset($criteriaType) && $criteriaType == "tt" && + preg_match('/is|is not/', $modifierTest) == 1) { + // set relativeDatetime boolean to true so that the datetime select is displayed below + $relativeDateTime = false; + + $tracktypeSelectValue = preg_replace('/[0-9]+/', '', $storedCrit["crit"][$criteriaKeys[$i]][$j]["value"]); + $tracktypeSelectValue = trim(preg_replace('/\W\w+\s*(\W*)$/', '$1', $tracktypeSelectValue)); + $criteriaValue->setMultiOptions($this->getTracktypeOptions()); + + if ($storedCrit["crit"][$criteriaKeys[$i]][$j]["value"]){ + $criteriaValue->setValue($storedCrit["crit"][$criteriaKeys[$i]][$j]["value"]); + } else { + $criteriaValue->setMultiOptions(array('0' => _('Select track type'))); + $criteriaValue->setMultiOptions($this->getTracktypeOptions()); + $criteriaValue->setValue($tracktypeSelectValue); + } + $criteriaValue->setAttrib('enabled', 'enabled'); } else { $criteriaValue->setValue($storedCrit["crit"][$criteriaKeys[$i]][$j]["value"]); } @@ -470,7 +537,7 @@ class Application_Form_SmartBlockCriteria extends Zend_Form_SubForm $sort->setValue($storedCrit["sort"]["value"]); } $this->addElement($sort); - + $limit = new Zend_Form_Element_Select('sp_limit_options'); $limit->setAttrib('class', 'sp_input_select') ->setDecorators(array('viewHelper')) @@ -552,6 +619,8 @@ class Application_Form_SmartBlockCriteria extends Zend_Form_SubForm $eleMod->setMultiOptions($this->getNumericCriteriaOptions()); } elseif ($criteriaType == "d") { $eleMod->setMultiOptions($this->getDateTimeCriteriaOptions()); + } elseif ($criteriaType == "tt") { + $eleMod->setMultiOptions($this->getIsNotOptions()); } else { $eleMod->setMultiOptions(array('0' => _('Select modifier'))); } @@ -611,6 +680,8 @@ class Application_Form_SmartBlockCriteria extends Zend_Form_SubForm } elseif ($criteriaType == "d") { $criteriaModifers->setMultiOptions($this->getDateTimeCriteriaOptions()); + } elseif ($criteriaType == "tt") { + $criteriaModifers->setMultiOptions($this->getIsNotOptions()); } else { $criteriaModifers->setMultiOptions(array('0' => _('Select modifier'))); } @@ -721,7 +792,8 @@ class Application_Form_SmartBlockCriteria extends Zend_Form_SubForm "sample_rate" => "DbSampleRate", "track_title" => "DbTrackTitle", "track_number" => "DbTrackNumber", - "year" => "DbYear" + "year" => "DbYear", + "track_type" => "DbTrackType" ); // things we need to check diff --git a/airtime_mvc/application/models/Block.php b/airtime_mvc/application/models/Block.php index f40945742..696b0f31c 100644 --- a/airtime_mvc/application/models/Block.php +++ b/airtime_mvc/application/models/Block.php @@ -85,7 +85,8 @@ class Application_Model_Block implements Application_Model_LibraryEditable "sample_rate" => "DbSampleRate", "track_title" => "DbTrackTitle", "track_number" => "DbTrackNumber", - "year" => "DbYear" + "year" => "DbYear", + "track_type" => "DbTrackType" ); public function __construct($id=null, $con=null) @@ -232,12 +233,12 @@ SQL; foreach ($rows as &$row) { $clipSec = Application_Common_DateHelper::playlistTimeToSeconds($row['length']); - + $row['trackSec'] = $clipSec; - + $row['cueInSec'] = Application_Common_DateHelper::playlistTimeToSeconds($row['cuein']); $row['cueOutSec'] = Application_Common_DateHelper::playlistTimeToSeconds($row['cueout']); - + $trackoffset = $row['trackoffset']; $offset += $clipSec; $offset -= $trackoffset; @@ -254,7 +255,7 @@ SQL; $fades = $this->getFadeInfo($row['position']); $row['fadein'] = $fades[0]; $row['fadeout'] = $fades[1]; - + // format the cues in format 00:00:00(.0) // we need to add the '.0' for cues and not fades // because propel takes care of this for us @@ -488,7 +489,7 @@ SQL; Logging::info("Adding to block"); Logging::info("at position {$pos}"); } - + foreach ($p_items as $ac) { //Logging::info("Adding audio file {$ac[0]}"); try { @@ -677,7 +678,7 @@ SQL; return array($fadeIn, $fadeOut); } - + /* * create a crossfade from item in cc_playlist_contents with $id1 to item $id2. * @@ -688,11 +689,11 @@ SQL; public function createCrossfade($id1, $fadeOut, $id2, $fadeIn, $offset) { $this->con->beginTransaction(); - + if (!isset($offset)) { $offset = Application_Model_Preference::GetDefaultCrossfadeDuration(); } - + try { if (isset($id1)) { $this->changeFadeInfo($id1, null, $fadeOut); @@ -700,9 +701,9 @@ SQL; if (isset($id2)) { $this->changeFadeInfo($id2, $fadeIn, null, $offset); } - + $this->con->commit(); - + } catch (Exception $e) { $this->con->rollback(); throw $e; @@ -746,20 +747,20 @@ SQL; ':fade_in' => $fadeIn, ':clip_length' => $clipLength ); - + $result = Application_Common_Database::prepareAndExecute($sql, $params, 'column'); if ($result) { //"Fade In can't be larger than overall playlength."; $fadeIn = $clipLength; } $row->setDbFadein($fadeIn); - + if (!is_null($offset)) { $row->setDbTrackOffset($offset); Logging::info("Setting offset {$offset} on item {$id}"); $row->save($this->con); } - + } if (!is_null($fadeOut)) { @@ -768,7 +769,7 @@ SQL; ':fade_out' => $fadeOut, ':clip_length' => $clipLength ); - + $result = Application_Common_Database::prepareAndExecute($sql, $params, 'column'); if ($result) { //"Fade Out can't be larger than overall playlength."; @@ -909,7 +910,7 @@ SQL; $row->setDbCuein($cueIn); $row->setDBCliplength($cliplength); - + } elseif (!is_null($cueOut)) { if ($cueOut === "") { @@ -1016,8 +1017,8 @@ SQL; public static function getBlockCount() { $sql = 'SELECT count(*) as cnt FROM cc_playlist'; - - $res = Application_Common_Database::prepareAndExecute($sql, array(), + + $res = Application_Common_Database::prepareAndExecute($sql, array(), Application_Common_Database::COLUMN); return $res; @@ -1064,7 +1065,7 @@ SQL; CcBlockQuery::create()->findPKs($p_ids)->delete(); $updateIsPlaylistFlag = true; } - + if ($updateIsPlaylistFlag) { // update is_playlist flag in cc_files Application_Model_StoredFile::setIsPlaylist( @@ -1163,7 +1164,7 @@ SQL; $blockType = $data['etc']['sp_type'] == 0 ? 'dynamic':'static'; $this->saveType($blockType); $this->storeCriteriaIntoDb($data); - + // if the block is dynamic, put null to the length // as it cannot be calculated if ($blockType == 'dynamic') { @@ -1208,7 +1209,7 @@ SQL; if (isset($d['sp_criteria_extra'])) { $extra = $d['sp_criteria_extra']; } if (isset($d['sp_criteria_datetime_select'])) { $datetimeunit = $d['sp_criteria_datetime_select']; } if (isset($d['sp_criteria_extra_datetime_select'])) {$extradatetimeunit = $d['sp_criteria_extra_datetime_select'];} - + if ($field == 'utime' || $field == 'mtime' || $field == 'lptime') { // if the date isn't relative we want to convert the value to a specific UTC date if (!(in_array($modifier,array('before','after','between')))) { @@ -1220,7 +1221,7 @@ SQL; } } - + $qry = new CcBlockcriteria(); $qry->setDbCriteria($field) ->setDbModifier($d['sp_criteria_modifier']) @@ -1228,7 +1229,7 @@ SQL; ->setDbBlockId($this->id); if (isset($d['sp_criteria_extra'])) { - + if ($field == 'utime' || $field == 'mtime' || $field == 'lptime') { // if the date isn't relative we want to convert the value to a specific UTC date if (!(in_array($modifier,array('before','after','between')))) { @@ -1239,7 +1240,7 @@ SQL; } } - + $qry->setDbExtra($extra); } // save the criteria group so separation via new modifiers AND can be preserved vs. lumping @@ -1269,8 +1270,8 @@ SQL; ->setDbValue($p_criteriaData['etc']['sp_limit_value']) ->setDbBlockId($this->id) ->save(); - - + + // insert repeat track option $qry = new CcBlockcriteria(); $qry->setDbCriteria("repeat_tracks") @@ -1347,11 +1348,11 @@ SQL; // this moves the pointer to the first element in the collection $files->getFirst(); $iterator = $files->getIterator(); - + $isBlockFull = false; - + while ($iterator->valid()) { - + $id = $iterator->current()->getDbId(); $fileLength = $iterator->current()->getCueLength(); $length = Application_Common_DateHelper::calculateLengthInSeconds($fileLength); @@ -1384,15 +1385,15 @@ SQL; $iterator->next(); } - + $sizeOfInsert = count($insertList); - + // if block is not full and repeat_track is check, fill up more // additionally still don't overflow the limit while (!$isBlockFull && $repeat == 1 && $sizeOfInsert > 0) { Logging::debug("adding repeated tracks."); Logging::debug("total time = " . $totalTime); - + $randomEleKey = array_rand(array_slice($insertList, 0, $sizeOfInsert)); // this will also allow the overflow of tracks so that time limited smart blocks will schedule until they // are longer than the time limit rather than never scheduling past the time limit @@ -1412,7 +1413,7 @@ SQL; $totalItems++; } } - + if ((!is_null($limit['items']) && $limit['items'] == count($insertList)) || $totalItems > 500 || $totalTime > $limit['time']) { break; } @@ -1451,6 +1452,7 @@ SQL; "mtime" => _("Last Modified"), "lptime" => _("Last Played"), "length" => _("Length"), + "track_type" => _("Track Type"), "mime" => _("Mime"), "mood" => _("Mood"), "owner_id" => _("Owner"), @@ -1550,6 +1552,7 @@ SQL; "mtime" => _("Last Modified"), "lptime" => _("Last Played"), "length" => _("Length"), + "track_type" => _("Track Type"), "mime" => _("Mime"), "mood" => _("Mood"), "owner_id" => _("Owner"), @@ -1796,7 +1799,7 @@ SQL; $limits['items'] = null; } } - + $repeatTracks = 0; $overflowTracks = 0; @@ -1865,9 +1868,9 @@ SQL; SELECT distinct(file_id) FROM cc_blockcontents SQL; - + $files = Application_Common_Database::prepareAndExecute($sql, array()); - + $real_files = array(); foreach ($files as $f) { $real_files[] = $f['file_id']; diff --git a/airtime_mvc/application/models/StoredFile.php b/airtime_mvc/application/models/StoredFile.php index 8e8211378..e0d005391 100644 --- a/airtime_mvc/application/models/StoredFile.php +++ b/airtime_mvc/application/models/StoredFile.php @@ -54,7 +54,8 @@ class Application_Model_StoredFile "cuein" => "DbCueIn", "cueout" => "DbCueOut", "description" => "DbDescription", - "artwork" => "DbArtwork" + "artwork" => "DbArtwork", + "track_type" => "DbTrackType" ); function __construct($file, $con) { @@ -672,7 +673,7 @@ SQL; "bit_rate", "sample_rate", "isrc_number", "encoded_by", "label", "copyright", "mime", "language", "filepath", "owner_id", "conductor", "replay_gain", "lptime", "is_playlist", "is_scheduled", - "cuein", "cueout", "description", "artwork" ); + "cuein", "cueout", "description", "artwork", "track_type" ); } public static function searchLibraryFiles($datatables) diff --git a/airtime_mvc/application/models/Tracktype.php b/airtime_mvc/application/models/Tracktype.php new file mode 100644 index 000000000..632b50254 --- /dev/null +++ b/airtime_mvc/application/models/Tracktype.php @@ -0,0 +1,173 @@ +_tracktypeInstance = $this->createTracktype(); + } else { + $this->_tracktypeInstance = CcTracktypesQuery::create()->findPK($tracktypeId); + + if (is_null($this->_tracktypeInstance)) { + throw new Exception(); + } + } + } + + public function getId() + { + return $this->_tracktypeInstance->getDbId(); + } + + public function setCode($code) + { + $tracktype = $this->_tracktypeInstance; + $tracktype->setDbCode($code); + } + + public function setTypeName($typeName) + { + $tracktype = $this->_tracktypeInstance; + $tracktype->setDbTypeName($typeName); + } + + public function setDescription($description) + { + $tracktype = $this->_tracktypeInstance; + $tracktype->setDbDescription($description); + } + + public function setVisibility($visibility) + { + $tracktype = $this->_tracktypeInstance; + $tracktype->setDbVisibility($visibility); + } + + public function getCode() + { + $tracktype = $this->_tracktypeInstance; + + return $tracktype->getDbCode(); + } + + public function getTypeName() + { + $tracktype = $this->_tracktypeInstance; + + return $tracktype->getDbTypeName(); + } + + public function getDescription() + { + $tracktype = $this->_tracktypeInstance; + + return $tracktype->getDbDescription(); + } + + public function getVisibility() + { + $tracktype = $this->_tracktypeInstance; + + return $tracktype->getDbVisibility(); + } + + public function save() + { + $this->_tracktypeInstance->save(); + } + + public function delete() + { + if (!$this->_tracktypeInstance->isDeleted()) { + $this->_tracktypeInstance->delete(); + } + } + + private function createTracktype() + { + $tracktype = new CcTracktypes(); + + return $tracktype; + } + + public static function getTracktypes($search=null) + { + return Application_Model_Tracktype::getTracktypesData(array(true), $search); + } + + public static function getTracktypesData(array $visible, $search=null) + { + $con = Propel::getConnection(); + + $sql_gen = "SELECT id, code, type_name, description FROM cc_track_types "; + + $visibility = array(); + $params = array(); + for ($i=0; $i &$record){ + if ($record['code'] == $tracktypename) { + $record['delete'] = "self"; + } else { + $record['delete'] = ""; + } + $record = array_map('htmlspecialchars', $record); + } + + $res['aaData'] = array_values($res['aaData']); + + return $res; + } + + public static function getTracktypeData($id) + { + $sql = << $id), 'single'); + } + +} diff --git a/airtime_mvc/application/models/airtime/CcFiles.php b/airtime_mvc/application/models/airtime/CcFiles.php index fcc390a46..b4dfef573 100644 --- a/airtime_mvc/application/models/airtime/CcFiles.php +++ b/airtime_mvc/application/models/airtime/CcFiles.php @@ -150,12 +150,14 @@ class CcFiles extends BaseCcFiles { $importedStorageDir = $storDir->getDirectory() . "imported/" . self::getOwnerId() . "/"; $importedDbPath = "imported/" . self::getOwnerId() . "/"; $artwork = FileDataHelper::saveArtworkData($filePath, $originalFilename, $importedStorageDir, $importedDbPath); + $trackType = FileDataHelper::saveTrackType(); $file->fromArray($fileArray); $file->setDbOwnerId(self::getOwnerId()); $now = new DateTime("now", new DateTimeZone("UTC")); $file->setDbTrackTitle($originalFilename); $file->setDbArtwork($artwork); + $file->setDbTrackType($trackType); $file->setDbUtime($now); $file->setDbHidden(true); $file->save(); diff --git a/airtime_mvc/application/models/airtime/CcTracktypes.php b/airtime_mvc/application/models/airtime/CcTracktypes.php new file mode 100644 index 000000000..76b1757e8 --- /dev/null +++ b/airtime_mvc/application/models/airtime/CcTracktypes.php @@ -0,0 +1,16 @@ +addColumn('filesize', 'DbFilesize', 'INTEGER', true, null, 0); $this->addColumn('description', 'DbDescription', 'VARCHAR', false, 512, null); $this->addColumn('artwork', 'DbArtwork', 'VARCHAR', false, 512, null); + $this->addColumn('track_type', 'DbTrackType', 'VARCHAR', false, 16, null); // validators } // initialize() diff --git a/airtime_mvc/application/models/airtime/map/CcTracktypesTableMap.php b/airtime_mvc/application/models/airtime/map/CcTracktypesTableMap.php new file mode 100644 index 000000000..f79672407 --- /dev/null +++ b/airtime_mvc/application/models/airtime/map/CcTracktypesTableMap.php @@ -0,0 +1,56 @@ +setName('cc_track_types'); + $this->setPhpName('CcTracktypes'); + $this->setClassname('CcTracktypes'); + $this->setPackage('airtime'); + $this->setUseIdGenerator(true); + $this->setPrimaryKeyMethodInfo('cc_track_types_id_seq'); + // columns + $this->addPrimaryKey('id', 'DbId', 'INTEGER', true, null, null); + $this->addColumn('code', 'DbCode', 'VARCHAR', true, 255, ''); + $this->addColumn('visibility', 'DbVisibility', 'BOOLEAN', true, 1, true); + $this->addColumn('type_name', 'DbTypeName', 'VARCHAR', true, 255, ''); + $this->addColumn('description', 'DbDescription', 'VARCHAR', true, 255, ''); + // validators + } // initialize() + + /** + * Build the RelationMap objects for this table relationships + */ + public function buildRelations() + { + + } // buildRelations() + +} // CcTracktypesTableMap diff --git a/airtime_mvc/application/models/airtime/om/BaseCcFiles.php b/airtime_mvc/application/models/airtime/om/BaseCcFiles.php index 7cf46f514..4ff00b069 100644 --- a/airtime_mvc/application/models/airtime/om/BaseCcFiles.php +++ b/airtime_mvc/application/models/airtime/om/BaseCcFiles.php @@ -294,6 +294,12 @@ abstract class BaseCcFiles extends BaseObject implements Persistent */ protected $artwork; + /** + * The value for the track_type field. + * @var string + */ + protected $track_type; + /** * The value for the artist_url field. * @var string @@ -1193,6 +1199,17 @@ abstract class BaseCcFiles extends BaseObject implements Persistent return $this->artwork; } + /** + * Get the [track_type] column value. + * + * @return string + */ + public function getDbTrackType() + { + + return $this->track_type; + } + /** * Get the [artist_url] column value. * @@ -1875,6 +1892,26 @@ abstract class BaseCcFiles extends BaseObject implements Persistent return $this; } // setDbArtwork() + /** + * Set the value of [track_type] column. + * + * @param string $v new value + * @return CcFiles The current object (for fluent API support) + */ + public function setDbTrackType($v) + { + if ($v !== null && is_numeric($v)) { + $v = (string) $v; + } + + if ($this->track_type !== $v) { + $this->track_type = $v; + $this->modifiedColumns[] = CcFilesPeer::TRACK_TYPE; + } + + return $this; + } // setDbTrackType() + /** * Set the value of [artist_name] column. * @@ -3304,6 +3341,7 @@ abstract class BaseCcFiles extends BaseObject implements Persistent $this->filesize = ($row[$startcol + 70] !== null) ? (int) $row[$startcol + 70] : null; $this->description = ($row[$startcol + 71] !== null) ? (string) $row[$startcol + 71] : null; $this->artwork = ($row[$startcol + 72] !== null) ? (string) $row[$startcol + 72] : null; + $this->track_type = ($row[$startcol + 73] !== null) ? (string) $row[$startcol + 73] : null; $this->resetModified(); $this->setNew(false); @@ -3944,6 +3982,9 @@ abstract class BaseCcFiles extends BaseObject implements Persistent if ($this->isColumnModified(CcFilesPeer::ARTWORK)) { $modifiedColumns[':p' . $index++] = '"artwork"'; } + if ($this->isColumnModified(CcFilesPeer::TRACK_TYPE)) { + $modifiedColumns[':p' . $index++] = '"track_type"'; + } $sql = sprintf( 'INSERT INTO "cc_files" (%s) VALUES (%s)', @@ -4174,6 +4215,9 @@ abstract class BaseCcFiles extends BaseObject implements Persistent case '"artwork"': $stmt->bindValue($identifier, $this->artwork, PDO::PARAM_STR); break; + case '"track_type"': + $stmt->bindValue($identifier, $this->track_type, PDO::PARAM_STR); + break; } } $stmt->execute(); @@ -4608,6 +4652,9 @@ abstract class BaseCcFiles extends BaseObject implements Persistent case 72: return $this->getDbArtwork(); break; + case 73: + return $this->getDbTrackType(); + break; default: return null; break; @@ -4710,6 +4757,7 @@ abstract class BaseCcFiles extends BaseObject implements Persistent $keys[70] => $this->getDbFilesize(), $keys[71] => $this->getDbDescription(), $keys[72] => $this->getDbArtwork(), + $keys[73] => $this->getDbTrackType(), ); $virtualColumns = $this->virtualColumns; foreach ($virtualColumns as $key => $virtualColumn) { @@ -5003,6 +5051,9 @@ abstract class BaseCcFiles extends BaseObject implements Persistent case 72: $this->setDbArtwork($value); break; + case 73: + $this->setDbTrackType($value); + break; } // switch() } @@ -5100,6 +5151,7 @@ abstract class BaseCcFiles extends BaseObject implements Persistent if (array_key_exists($keys[70], $arr)) $this->setDbFilesize($arr[$keys[70]]); if (array_key_exists($keys[71], $arr)) $this->setDbDescription($arr[$keys[71]]); if (array_key_exists($keys[72], $arr)) $this->setDbArtwork($arr[$keys[72]]); + if (array_key_exists($keys[73], $arr)) $this->setDbTrackType($arr[$keys[73]]); } /** @@ -5184,6 +5236,7 @@ abstract class BaseCcFiles extends BaseObject implements Persistent if ($this->isColumnModified(CcFilesPeer::FILESIZE)) $criteria->add(CcFilesPeer::FILESIZE, $this->filesize); if ($this->isColumnModified(CcFilesPeer::DESCRIPTION)) $criteria->add(CcFilesPeer::DESCRIPTION, $this->description); if ($this->isColumnModified(CcFilesPeer::ARTWORK)) $criteria->add(CcFilesPeer::ARTWORK, $this->artwork); + if ($this->isColumnModified(CcFilesPeer::TRACK_TYPE)) $criteria->add(CcFilesPeer::TRACK_TYPE, $this->track_type); return $criteria; } @@ -5319,6 +5372,7 @@ abstract class BaseCcFiles extends BaseObject implements Persistent $copyObj->setDbFilesize($this->getDbFilesize()); $copyObj->setDbDescription($this->getDbDescription()); $copyObj->setDbArtwork($this->getDbArtwork()); + $copyObj->setDbTrackType($this->getDbTrackType()); if ($deepCopy && !$this->startCopy) { // important: temporarily setNew(false) because this affects the behavior of @@ -7721,6 +7775,7 @@ abstract class BaseCcFiles extends BaseObject implements Persistent $this->filesize = null; $this->description = null; $this->artwork = null; + $this->track_type = null; $this->alreadyInSave = false; $this->alreadyInValidation = false; $this->alreadyInClearAllReferencesDeep = false; diff --git a/airtime_mvc/application/models/airtime/om/BaseCcFilesPeer.php b/airtime_mvc/application/models/airtime/om/BaseCcFilesPeer.php index 8b61968b2..d6745e607 100644 --- a/airtime_mvc/application/models/airtime/om/BaseCcFilesPeer.php +++ b/airtime_mvc/application/models/airtime/om/BaseCcFilesPeer.php @@ -251,6 +251,9 @@ abstract class BaseCcFilesPeer /** the column name for the artwork field */ const ARTWORK = 'cc_files.artwork'; + /** the column name for the track_type field */ + const TRACK_TYPE = 'cc_files.track_type'; + /** The default string format for model objects of the related table **/ const DEFAULT_STRING_FORMAT = 'YAML'; @@ -270,12 +273,12 @@ abstract class BaseCcFilesPeer * e.g. CcFilesPeer::$fieldNames[CcFilesPeer::TYPE_PHPNAME][0] = 'Id' */ protected static $fieldNames = array ( - BasePeer::TYPE_PHPNAME => array ('DbId', 'DbName', 'DbMime', 'DbFtype', 'DbDirectory', 'DbFilepath', 'DbImportStatus', 'DbCurrentlyaccessing', 'DbEditedby', 'DbMtime', 'DbUtime', 'DbLPtime', 'DbMd5', 'DbTrackTitle', 'DbArtistName', 'DbBitRate', 'DbSampleRate', 'DbFormat', 'DbLength', 'DbAlbumTitle', 'DbGenre', 'DbComments', 'DbYear', 'DbTrackNumber', 'DbChannels', 'DbUrl', 'DbBpm', 'DbRating', 'DbEncodedBy', 'DbDiscNumber', 'DbMood', 'DbLabel', 'DbComposer', 'DbEncoder', 'DbChecksum', 'DbLyrics', 'DbOrchestra', 'DbConductor', 'DbLyricist', 'DbOriginalLyricist', 'DbRadioStationName', 'DbInfoUrl', 'DbArtistUrl', 'DbAudioSourceUrl', 'DbRadioStationUrl', 'DbBuyThisUrl', 'DbIsrcNumber', 'DbCatalogNumber', 'DbOriginalArtist', 'DbCopyright', 'DbReportDatetime', 'DbReportLocation', 'DbReportOrganization', 'DbSubject', 'DbContributor', 'DbLanguage', 'DbFileExists', 'DbSoundcloudId', 'DbSoundcloudErrorCode', 'DbSoundcloudErrorMsg', 'DbSoundcloudLinkToFile', 'DbSoundCloundUploadTime', 'DbReplayGain', 'DbOwnerId', 'DbCuein', 'DbCueout', 'DbSilanCheck', 'DbHidden', 'DbIsScheduled', 'DbIsPlaylist', 'DbFilesize', 'DbDescription', 'DbArtwork', ), - BasePeer::TYPE_STUDLYPHPNAME => array ('dbId', 'dbName', 'dbMime', 'dbFtype', 'dbDirectory', 'dbFilepath', 'dbImportStatus', 'dbCurrentlyaccessing', 'dbEditedby', 'dbMtime', 'dbUtime', 'dbLPtime', 'dbMd5', 'dbTrackTitle', 'dbArtistName', 'dbBitRate', 'dbSampleRate', 'dbFormat', 'dbLength', 'dbAlbumTitle', 'dbGenre', 'dbComments', 'dbYear', 'dbTrackNumber', 'dbChannels', 'dbUrl', 'dbBpm', 'dbRating', 'dbEncodedBy', 'dbDiscNumber', 'dbMood', 'dbLabel', 'dbComposer', 'dbEncoder', 'dbChecksum', 'dbLyrics', 'dbOrchestra', 'dbConductor', 'dbLyricist', 'dbOriginalLyricist', 'dbRadioStationName', 'dbInfoUrl', 'dbArtistUrl', 'dbAudioSourceUrl', 'dbRadioStationUrl', 'dbBuyThisUrl', 'dbIsrcNumber', 'dbCatalogNumber', 'dbOriginalArtist', 'dbCopyright', 'dbReportDatetime', 'dbReportLocation', 'dbReportOrganization', 'dbSubject', 'dbContributor', 'dbLanguage', 'dbFileExists', 'dbSoundcloudId', 'dbSoundcloudErrorCode', 'dbSoundcloudErrorMsg', 'dbSoundcloudLinkToFile', 'dbSoundCloundUploadTime', 'dbReplayGain', 'dbOwnerId', 'dbCuein', 'dbCueout', 'dbSilanCheck', 'dbHidden', 'dbIsScheduled', 'dbIsPlaylist', 'dbFilesize', 'dbDescription', 'dbArtwork', ), - BasePeer::TYPE_COLNAME => array (CcFilesPeer::ID, CcFilesPeer::NAME, CcFilesPeer::MIME, CcFilesPeer::FTYPE, CcFilesPeer::DIRECTORY, CcFilesPeer::FILEPATH, CcFilesPeer::IMPORT_STATUS, CcFilesPeer::CURRENTLYACCESSING, CcFilesPeer::EDITEDBY, CcFilesPeer::MTIME, CcFilesPeer::UTIME, CcFilesPeer::LPTIME, CcFilesPeer::MD5, CcFilesPeer::TRACK_TITLE, CcFilesPeer::ARTIST_NAME, CcFilesPeer::BIT_RATE, CcFilesPeer::SAMPLE_RATE, CcFilesPeer::FORMAT, CcFilesPeer::LENGTH, CcFilesPeer::ALBUM_TITLE, CcFilesPeer::GENRE, CcFilesPeer::COMMENTS, CcFilesPeer::YEAR, CcFilesPeer::TRACK_NUMBER, CcFilesPeer::CHANNELS, CcFilesPeer::URL, CcFilesPeer::BPM, CcFilesPeer::RATING, CcFilesPeer::ENCODED_BY, CcFilesPeer::DISC_NUMBER, CcFilesPeer::MOOD, CcFilesPeer::LABEL, CcFilesPeer::COMPOSER, CcFilesPeer::ENCODER, CcFilesPeer::CHECKSUM, CcFilesPeer::LYRICS, CcFilesPeer::ORCHESTRA, CcFilesPeer::CONDUCTOR, CcFilesPeer::LYRICIST, CcFilesPeer::ORIGINAL_LYRICIST, CcFilesPeer::RADIO_STATION_NAME, CcFilesPeer::INFO_URL, CcFilesPeer::ARTIST_URL, CcFilesPeer::AUDIO_SOURCE_URL, CcFilesPeer::RADIO_STATION_URL, CcFilesPeer::BUY_THIS_URL, CcFilesPeer::ISRC_NUMBER, CcFilesPeer::CATALOG_NUMBER, CcFilesPeer::ORIGINAL_ARTIST, CcFilesPeer::COPYRIGHT, CcFilesPeer::REPORT_DATETIME, CcFilesPeer::REPORT_LOCATION, CcFilesPeer::REPORT_ORGANIZATION, CcFilesPeer::SUBJECT, CcFilesPeer::CONTRIBUTOR, CcFilesPeer::LANGUAGE, CcFilesPeer::FILE_EXISTS, CcFilesPeer::SOUNDCLOUD_ID, CcFilesPeer::SOUNDCLOUD_ERROR_CODE, CcFilesPeer::SOUNDCLOUD_ERROR_MSG, CcFilesPeer::SOUNDCLOUD_LINK_TO_FILE, CcFilesPeer::SOUNDCLOUD_UPLOAD_TIME, CcFilesPeer::REPLAY_GAIN, CcFilesPeer::OWNER_ID, CcFilesPeer::CUEIN, CcFilesPeer::CUEOUT, CcFilesPeer::SILAN_CHECK, CcFilesPeer::HIDDEN, CcFilesPeer::IS_SCHEDULED, CcFilesPeer::IS_PLAYLIST, CcFilesPeer::FILESIZE, CcFilesPeer::DESCRIPTION, CcFilesPeer::ARTWORK, ), - BasePeer::TYPE_RAW_COLNAME => array ('ID', 'NAME', 'MIME', 'FTYPE', 'DIRECTORY', 'FILEPATH', 'IMPORT_STATUS', 'CURRENTLYACCESSING', 'EDITEDBY', 'MTIME', 'UTIME', 'LPTIME', 'MD5', 'TRACK_TITLE', 'ARTIST_NAME', 'BIT_RATE', 'SAMPLE_RATE', 'FORMAT', 'LENGTH', 'ALBUM_TITLE', 'GENRE', 'COMMENTS', 'YEAR', 'TRACK_NUMBER', 'CHANNELS', 'URL', 'BPM', 'RATING', 'ENCODED_BY', 'DISC_NUMBER', 'MOOD', 'LABEL', 'COMPOSER', 'ENCODER', 'CHECKSUM', 'LYRICS', 'ORCHESTRA', 'CONDUCTOR', 'LYRICIST', 'ORIGINAL_LYRICIST', 'RADIO_STATION_NAME', 'INFO_URL', 'ARTIST_URL', 'AUDIO_SOURCE_URL', 'RADIO_STATION_URL', 'BUY_THIS_URL', 'ISRC_NUMBER', 'CATALOG_NUMBER', 'ORIGINAL_ARTIST', 'COPYRIGHT', 'REPORT_DATETIME', 'REPORT_LOCATION', 'REPORT_ORGANIZATION', 'SUBJECT', 'CONTRIBUTOR', 'LANGUAGE', 'FILE_EXISTS', 'SOUNDCLOUD_ID', 'SOUNDCLOUD_ERROR_CODE', 'SOUNDCLOUD_ERROR_MSG', 'SOUNDCLOUD_LINK_TO_FILE', 'SOUNDCLOUD_UPLOAD_TIME', 'REPLAY_GAIN', 'OWNER_ID', 'CUEIN', 'CUEOUT', 'SILAN_CHECK', 'HIDDEN', 'IS_SCHEDULED', 'IS_PLAYLIST', 'FILESIZE', 'DESCRIPTION', 'ARTWORK', ), - BasePeer::TYPE_FIELDNAME => array ('id', 'name', 'mime', 'ftype', 'directory', 'filepath', 'import_status', 'currentlyaccessing', 'editedby', 'mtime', 'utime', 'lptime', 'md5', 'track_title', 'artist_name', 'bit_rate', 'sample_rate', 'format', 'length', 'album_title', 'genre', 'comments', 'year', 'track_number', 'channels', 'url', 'bpm', 'rating', 'encoded_by', 'disc_number', 'mood', 'label', 'composer', 'encoder', 'checksum', 'lyrics', 'orchestra', 'conductor', 'lyricist', 'original_lyricist', 'radio_station_name', 'info_url', 'artist_url', 'audio_source_url', 'radio_station_url', 'buy_this_url', 'isrc_number', 'catalog_number', 'original_artist', 'copyright', 'report_datetime', 'report_location', 'report_organization', 'subject', 'contributor', 'language', 'file_exists', 'soundcloud_id', 'soundcloud_error_code', 'soundcloud_error_msg', 'soundcloud_link_to_file', 'soundcloud_upload_time', 'replay_gain', 'owner_id', 'cuein', 'cueout', 'silan_check', 'hidden', 'is_scheduled', 'is_playlist', 'filesize', 'description', 'artwork', ), - BasePeer::TYPE_NUM => array (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, ) + BasePeer::TYPE_PHPNAME => array ('DbId', 'DbName', 'DbMime', 'DbFtype', 'DbDirectory', 'DbFilepath', 'DbImportStatus', 'DbCurrentlyaccessing', 'DbEditedby', 'DbMtime', 'DbUtime', 'DbLPtime', 'DbMd5', 'DbTrackTitle', 'DbArtistName', 'DbBitRate', 'DbSampleRate', 'DbFormat', 'DbLength', 'DbAlbumTitle', 'DbGenre', 'DbComments', 'DbYear', 'DbTrackNumber', 'DbChannels', 'DbUrl', 'DbBpm', 'DbRating', 'DbEncodedBy', 'DbDiscNumber', 'DbMood', 'DbLabel', 'DbComposer', 'DbEncoder', 'DbChecksum', 'DbLyrics', 'DbOrchestra', 'DbConductor', 'DbLyricist', 'DbOriginalLyricist', 'DbRadioStationName', 'DbInfoUrl', 'DbArtistUrl', 'DbAudioSourceUrl', 'DbRadioStationUrl', 'DbBuyThisUrl', 'DbIsrcNumber', 'DbCatalogNumber', 'DbOriginalArtist', 'DbCopyright', 'DbReportDatetime', 'DbReportLocation', 'DbReportOrganization', 'DbSubject', 'DbContributor', 'DbLanguage', 'DbFileExists', 'DbSoundcloudId', 'DbSoundcloudErrorCode', 'DbSoundcloudErrorMsg', 'DbSoundcloudLinkToFile', 'DbSoundCloundUploadTime', 'DbReplayGain', 'DbOwnerId', 'DbCuein', 'DbCueout', 'DbSilanCheck', 'DbHidden', 'DbIsScheduled', 'DbIsPlaylist', 'DbFilesize', 'DbDescription', 'DbArtwork', 'DbTrackType', ), + BasePeer::TYPE_STUDLYPHPNAME => array ('dbId', 'dbName', 'dbMime', 'dbFtype', 'dbDirectory', 'dbFilepath', 'dbImportStatus', 'dbCurrentlyaccessing', 'dbEditedby', 'dbMtime', 'dbUtime', 'dbLPtime', 'dbMd5', 'dbTrackTitle', 'dbArtistName', 'dbBitRate', 'dbSampleRate', 'dbFormat', 'dbLength', 'dbAlbumTitle', 'dbGenre', 'dbComments', 'dbYear', 'dbTrackNumber', 'dbChannels', 'dbUrl', 'dbBpm', 'dbRating', 'dbEncodedBy', 'dbDiscNumber', 'dbMood', 'dbLabel', 'dbComposer', 'dbEncoder', 'dbChecksum', 'dbLyrics', 'dbOrchestra', 'dbConductor', 'dbLyricist', 'dbOriginalLyricist', 'dbRadioStationName', 'dbInfoUrl', 'dbArtistUrl', 'dbAudioSourceUrl', 'dbRadioStationUrl', 'dbBuyThisUrl', 'dbIsrcNumber', 'dbCatalogNumber', 'dbOriginalArtist', 'dbCopyright', 'dbReportDatetime', 'dbReportLocation', 'dbReportOrganization', 'dbSubject', 'dbContributor', 'dbLanguage', 'dbFileExists', 'dbSoundcloudId', 'dbSoundcloudErrorCode', 'dbSoundcloudErrorMsg', 'dbSoundcloudLinkToFile', 'dbSoundCloundUploadTime', 'dbReplayGain', 'dbOwnerId', 'dbCuein', 'dbCueout', 'dbSilanCheck', 'dbHidden', 'dbIsScheduled', 'dbIsPlaylist', 'dbFilesize', 'dbDescription', 'dbArtwork', 'dbTrackType', ), + BasePeer::TYPE_COLNAME => array (CcFilesPeer::ID, CcFilesPeer::NAME, CcFilesPeer::MIME, CcFilesPeer::FTYPE, CcFilesPeer::DIRECTORY, CcFilesPeer::FILEPATH, CcFilesPeer::IMPORT_STATUS, CcFilesPeer::CURRENTLYACCESSING, CcFilesPeer::EDITEDBY, CcFilesPeer::MTIME, CcFilesPeer::UTIME, CcFilesPeer::LPTIME, CcFilesPeer::MD5, CcFilesPeer::TRACK_TITLE, CcFilesPeer::ARTIST_NAME, CcFilesPeer::BIT_RATE, CcFilesPeer::SAMPLE_RATE, CcFilesPeer::FORMAT, CcFilesPeer::LENGTH, CcFilesPeer::ALBUM_TITLE, CcFilesPeer::GENRE, CcFilesPeer::COMMENTS, CcFilesPeer::YEAR, CcFilesPeer::TRACK_NUMBER, CcFilesPeer::CHANNELS, CcFilesPeer::URL, CcFilesPeer::BPM, CcFilesPeer::RATING, CcFilesPeer::ENCODED_BY, CcFilesPeer::DISC_NUMBER, CcFilesPeer::MOOD, CcFilesPeer::LABEL, CcFilesPeer::COMPOSER, CcFilesPeer::ENCODER, CcFilesPeer::CHECKSUM, CcFilesPeer::LYRICS, CcFilesPeer::ORCHESTRA, CcFilesPeer::CONDUCTOR, CcFilesPeer::LYRICIST, CcFilesPeer::ORIGINAL_LYRICIST, CcFilesPeer::RADIO_STATION_NAME, CcFilesPeer::INFO_URL, CcFilesPeer::ARTIST_URL, CcFilesPeer::AUDIO_SOURCE_URL, CcFilesPeer::RADIO_STATION_URL, CcFilesPeer::BUY_THIS_URL, CcFilesPeer::ISRC_NUMBER, CcFilesPeer::CATALOG_NUMBER, CcFilesPeer::ORIGINAL_ARTIST, CcFilesPeer::COPYRIGHT, CcFilesPeer::REPORT_DATETIME, CcFilesPeer::REPORT_LOCATION, CcFilesPeer::REPORT_ORGANIZATION, CcFilesPeer::SUBJECT, CcFilesPeer::CONTRIBUTOR, CcFilesPeer::LANGUAGE, CcFilesPeer::FILE_EXISTS, CcFilesPeer::SOUNDCLOUD_ID, CcFilesPeer::SOUNDCLOUD_ERROR_CODE, CcFilesPeer::SOUNDCLOUD_ERROR_MSG, CcFilesPeer::SOUNDCLOUD_LINK_TO_FILE, CcFilesPeer::SOUNDCLOUD_UPLOAD_TIME, CcFilesPeer::REPLAY_GAIN, CcFilesPeer::OWNER_ID, CcFilesPeer::CUEIN, CcFilesPeer::CUEOUT, CcFilesPeer::SILAN_CHECK, CcFilesPeer::HIDDEN, CcFilesPeer::IS_SCHEDULED, CcFilesPeer::IS_PLAYLIST, CcFilesPeer::FILESIZE, CcFilesPeer::DESCRIPTION, CcFilesPeer::ARTWORK, CcFilesPeer::TRACK_TYPE, ), + BasePeer::TYPE_RAW_COLNAME => array ('ID', 'NAME', 'MIME', 'FTYPE', 'DIRECTORY', 'FILEPATH', 'IMPORT_STATUS', 'CURRENTLYACCESSING', 'EDITEDBY', 'MTIME', 'UTIME', 'LPTIME', 'MD5', 'TRACK_TITLE', 'ARTIST_NAME', 'BIT_RATE', 'SAMPLE_RATE', 'FORMAT', 'LENGTH', 'ALBUM_TITLE', 'GENRE', 'COMMENTS', 'YEAR', 'TRACK_NUMBER', 'CHANNELS', 'URL', 'BPM', 'RATING', 'ENCODED_BY', 'DISC_NUMBER', 'MOOD', 'LABEL', 'COMPOSER', 'ENCODER', 'CHECKSUM', 'LYRICS', 'ORCHESTRA', 'CONDUCTOR', 'LYRICIST', 'ORIGINAL_LYRICIST', 'RADIO_STATION_NAME', 'INFO_URL', 'ARTIST_URL', 'AUDIO_SOURCE_URL', 'RADIO_STATION_URL', 'BUY_THIS_URL', 'ISRC_NUMBER', 'CATALOG_NUMBER', 'ORIGINAL_ARTIST', 'COPYRIGHT', 'REPORT_DATETIME', 'REPORT_LOCATION', 'REPORT_ORGANIZATION', 'SUBJECT', 'CONTRIBUTOR', 'LANGUAGE', 'FILE_EXISTS', 'SOUNDCLOUD_ID', 'SOUNDCLOUD_ERROR_CODE', 'SOUNDCLOUD_ERROR_MSG', 'SOUNDCLOUD_LINK_TO_FILE', 'SOUNDCLOUD_UPLOAD_TIME', 'REPLAY_GAIN', 'OWNER_ID', 'CUEIN', 'CUEOUT', 'SILAN_CHECK', 'HIDDEN', 'IS_SCHEDULED', 'IS_PLAYLIST', 'FILESIZE', 'DESCRIPTION', 'ARTWORK', 'TRACK_TYPE', ), + BasePeer::TYPE_FIELDNAME => array ('id', 'name', 'mime', 'ftype', 'directory', 'filepath', 'import_status', 'currentlyaccessing', 'editedby', 'mtime', 'utime', 'lptime', 'md5', 'track_title', 'artist_name', 'bit_rate', 'sample_rate', 'format', 'length', 'album_title', 'genre', 'comments', 'year', 'track_number', 'channels', 'url', 'bpm', 'rating', 'encoded_by', 'disc_number', 'mood', 'label', 'composer', 'encoder', 'checksum', 'lyrics', 'orchestra', 'conductor', 'lyricist', 'original_lyricist', 'radio_station_name', 'info_url', 'artist_url', 'audio_source_url', 'radio_station_url', 'buy_this_url', 'isrc_number', 'catalog_number', 'original_artist', 'copyright', 'report_datetime', 'report_location', 'report_organization', 'subject', 'contributor', 'language', 'file_exists', 'soundcloud_id', 'soundcloud_error_code', 'soundcloud_error_msg', 'soundcloud_link_to_file', 'soundcloud_upload_time', 'replay_gain', 'owner_id', 'cuein', 'cueout', 'silan_check', 'hidden', 'is_scheduled', 'is_playlist', 'filesize', 'description', 'artwork', 'track_type', ), + BasePeer::TYPE_NUM => array (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, ) ); /** @@ -285,12 +288,12 @@ abstract class BaseCcFilesPeer * e.g. CcFilesPeer::$fieldNames[BasePeer::TYPE_PHPNAME]['Id'] = 0 */ protected static $fieldKeys = array ( - BasePeer::TYPE_PHPNAME => array ('DbId' => 0, 'DbName' => 1, 'DbMime' => 2, 'DbFtype' => 3, 'DbDirectory' => 4, 'DbFilepath' => 5, 'DbImportStatus' => 6, 'DbCurrentlyaccessing' => 7, 'DbEditedby' => 8, 'DbMtime' => 9, 'DbUtime' => 10, 'DbLPtime' => 11, 'DbMd5' => 12, 'DbTrackTitle' => 13, 'DbArtistName' => 14, 'DbBitRate' => 15, 'DbSampleRate' => 16, 'DbFormat' => 17, 'DbLength' => 18, 'DbAlbumTitle' => 19, 'DbGenre' => 20, 'DbComments' => 21, 'DbYear' => 22, 'DbTrackNumber' => 23, 'DbChannels' => 24, 'DbUrl' => 25, 'DbBpm' => 26, 'DbRating' => 27, 'DbEncodedBy' => 28, 'DbDiscNumber' => 29, 'DbMood' => 30, 'DbLabel' => 31, 'DbComposer' => 32, 'DbEncoder' => 33, 'DbChecksum' => 34, 'DbLyrics' => 35, 'DbOrchestra' => 36, 'DbConductor' => 37, 'DbLyricist' => 38, 'DbOriginalLyricist' => 39, 'DbRadioStationName' => 40, 'DbInfoUrl' => 41, 'DbArtistUrl' => 42, 'DbAudioSourceUrl' => 43, 'DbRadioStationUrl' => 44, 'DbBuyThisUrl' => 45, 'DbIsrcNumber' => 46, 'DbCatalogNumber' => 47, 'DbOriginalArtist' => 48, 'DbCopyright' => 49, 'DbReportDatetime' => 50, 'DbReportLocation' => 51, 'DbReportOrganization' => 52, 'DbSubject' => 53, 'DbContributor' => 54, 'DbLanguage' => 55, 'DbFileExists' => 56, 'DbSoundcloudId' => 57, 'DbSoundcloudErrorCode' => 58, 'DbSoundcloudErrorMsg' => 59, 'DbSoundcloudLinkToFile' => 60, 'DbSoundCloundUploadTime' => 61, 'DbReplayGain' => 62, 'DbOwnerId' => 63, 'DbCuein' => 64, 'DbCueout' => 65, 'DbSilanCheck' => 66, 'DbHidden' => 67, 'DbIsScheduled' => 68, 'DbIsPlaylist' => 69, 'DbFilesize' => 70, 'DbDescription' => 71, 'DbArtwork' => 72, ), - BasePeer::TYPE_STUDLYPHPNAME => array ('dbId' => 0, 'dbName' => 1, 'dbMime' => 2, 'dbFtype' => 3, 'dbDirectory' => 4, 'dbFilepath' => 5, 'dbImportStatus' => 6, 'dbCurrentlyaccessing' => 7, 'dbEditedby' => 8, 'dbMtime' => 9, 'dbUtime' => 10, 'dbLPtime' => 11, 'dbMd5' => 12, 'dbTrackTitle' => 13, 'dbArtistName' => 14, 'dbBitRate' => 15, 'dbSampleRate' => 16, 'dbFormat' => 17, 'dbLength' => 18, 'dbAlbumTitle' => 19, 'dbGenre' => 20, 'dbComments' => 21, 'dbYear' => 22, 'dbTrackNumber' => 23, 'dbChannels' => 24, 'dbUrl' => 25, 'dbBpm' => 26, 'dbRating' => 27, 'dbEncodedBy' => 28, 'dbDiscNumber' => 29, 'dbMood' => 30, 'dbLabel' => 31, 'dbComposer' => 32, 'dbEncoder' => 33, 'dbChecksum' => 34, 'dbLyrics' => 35, 'dbOrchestra' => 36, 'dbConductor' => 37, 'dbLyricist' => 38, 'dbOriginalLyricist' => 39, 'dbRadioStationName' => 40, 'dbInfoUrl' => 41, 'dbArtistUrl' => 42, 'dbAudioSourceUrl' => 43, 'dbRadioStationUrl' => 44, 'dbBuyThisUrl' => 45, 'dbIsrcNumber' => 46, 'dbCatalogNumber' => 47, 'dbOriginalArtist' => 48, 'dbCopyright' => 49, 'dbReportDatetime' => 50, 'dbReportLocation' => 51, 'dbReportOrganization' => 52, 'dbSubject' => 53, 'dbContributor' => 54, 'dbLanguage' => 55, 'dbFileExists' => 56, 'dbSoundcloudId' => 57, 'dbSoundcloudErrorCode' => 58, 'dbSoundcloudErrorMsg' => 59, 'dbSoundcloudLinkToFile' => 60, 'dbSoundCloundUploadTime' => 61, 'dbReplayGain' => 62, 'dbOwnerId' => 63, 'dbCuein' => 64, 'dbCueout' => 65, 'dbSilanCheck' => 66, 'dbHidden' => 67, 'dbIsScheduled' => 68, 'dbIsPlaylist' => 69, 'dbFilesize' => 70, 'dbDescription' => 71, 'dbArtwork' => 72, ), + BasePeer::TYPE_PHPNAME => array ('DbId' => 0, 'DbName' => 1, 'DbMime' => 2, 'DbFtype' => 3, 'DbDirectory' => 4, 'DbFilepath' => 5, 'DbImportStatus' => 6, 'DbCurrentlyaccessing' => 7, 'DbEditedby' => 8, 'DbMtime' => 9, 'DbUtime' => 10, 'DbLPtime' => 11, 'DbMd5' => 12, 'DbTrackTitle' => 13, 'DbArtistName' => 14, 'DbBitRate' => 15, 'DbSampleRate' => 16, 'DbFormat' => 17, 'DbLength' => 18, 'DbAlbumTitle' => 19, 'DbGenre' => 20, 'DbComments' => 21, 'DbYear' => 22, 'DbTrackNumber' => 23, 'DbChannels' => 24, 'DbUrl' => 25, 'DbBpm' => 26, 'DbRating' => 27, 'DbEncodedBy' => 28, 'DbDiscNumber' => 29, 'DbMood' => 30, 'DbLabel' => 31, 'DbComposer' => 32, 'DbEncoder' => 33, 'DbChecksum' => 34, 'DbLyrics' => 35, 'DbOrchestra' => 36, 'DbConductor' => 37, 'DbLyricist' => 38, 'DbOriginalLyricist' => 39, 'DbRadioStationName' => 40, 'DbInfoUrl' => 41, 'DbArtistUrl' => 42, 'DbAudioSourceUrl' => 43, 'DbRadioStationUrl' => 44, 'DbBuyThisUrl' => 45, 'DbIsrcNumber' => 46, 'DbCatalogNumber' => 47, 'DbOriginalArtist' => 48, 'DbCopyright' => 49, 'DbReportDatetime' => 50, 'DbReportLocation' => 51, 'DbReportOrganization' => 52, 'DbSubject' => 53, 'DbContributor' => 54, 'DbLanguage' => 55, 'DbFileExists' => 56, 'DbSoundcloudId' => 57, 'DbSoundcloudErrorCode' => 58, 'DbSoundcloudErrorMsg' => 59, 'DbSoundcloudLinkToFile' => 60, 'DbSoundCloundUploadTime' => 61, 'DbReplayGain' => 62, 'DbOwnerId' => 63, 'DbCuein' => 64, 'DbCueout' => 65, 'DbSilanCheck' => 66, 'DbHidden' => 67, 'DbIsScheduled' => 68, 'DbIsPlaylist' => 69, 'DbFilesize' => 70, 'DbDescription' => 71, 'DbArtwork' => 72, 'DbTrackType' => 73, ), + BasePeer::TYPE_STUDLYPHPNAME => array ('dbId' => 0, 'dbName' => 1, 'dbMime' => 2, 'dbFtype' => 3, 'dbDirectory' => 4, 'dbFilepath' => 5, 'dbImportStatus' => 6, 'dbCurrentlyaccessing' => 7, 'dbEditedby' => 8, 'dbMtime' => 9, 'dbUtime' => 10, 'dbLPtime' => 11, 'dbMd5' => 12, 'dbTrackTitle' => 13, 'dbArtistName' => 14, 'dbBitRate' => 15, 'dbSampleRate' => 16, 'dbFormat' => 17, 'dbLength' => 18, 'dbAlbumTitle' => 19, 'dbGenre' => 20, 'dbComments' => 21, 'dbYear' => 22, 'dbTrackNumber' => 23, 'dbChannels' => 24, 'dbUrl' => 25, 'dbBpm' => 26, 'dbRating' => 27, 'dbEncodedBy' => 28, 'dbDiscNumber' => 29, 'dbMood' => 30, 'dbLabel' => 31, 'dbComposer' => 32, 'dbEncoder' => 33, 'dbChecksum' => 34, 'dbLyrics' => 35, 'dbOrchestra' => 36, 'dbConductor' => 37, 'dbLyricist' => 38, 'dbOriginalLyricist' => 39, 'dbRadioStationName' => 40, 'dbInfoUrl' => 41, 'dbArtistUrl' => 42, 'dbAudioSourceUrl' => 43, 'dbRadioStationUrl' => 44, 'dbBuyThisUrl' => 45, 'dbIsrcNumber' => 46, 'dbCatalogNumber' => 47, 'dbOriginalArtist' => 48, 'dbCopyright' => 49, 'dbReportDatetime' => 50, 'dbReportLocation' => 51, 'dbReportOrganization' => 52, 'dbSubject' => 53, 'dbContributor' => 54, 'dbLanguage' => 55, 'dbFileExists' => 56, 'dbSoundcloudId' => 57, 'dbSoundcloudErrorCode' => 58, 'dbSoundcloudErrorMsg' => 59, 'dbSoundcloudLinkToFile' => 60, 'dbSoundCloundUploadTime' => 61, 'dbReplayGain' => 62, 'dbOwnerId' => 63, 'dbCuein' => 64, 'dbCueout' => 65, 'dbSilanCheck' => 66, 'dbHidden' => 67, 'dbIsScheduled' => 68, 'dbIsPlaylist' => 69, 'dbFilesize' => 70, 'dbDescription' => 71, 'dbArtwork' => 72, 'dbTrackType' => 73, ), BasePeer::TYPE_COLNAME => array (CcFilesPeer::ID => 0, CcFilesPeer::NAME => 1, CcFilesPeer::MIME => 2, CcFilesPeer::FTYPE => 3, CcFilesPeer::DIRECTORY => 4, CcFilesPeer::FILEPATH => 5, CcFilesPeer::IMPORT_STATUS => 6, CcFilesPeer::CURRENTLYACCESSING => 7, CcFilesPeer::EDITEDBY => 8, CcFilesPeer::MTIME => 9, CcFilesPeer::UTIME => 10, CcFilesPeer::LPTIME => 11, CcFilesPeer::MD5 => 12, CcFilesPeer::TRACK_TITLE => 13, CcFilesPeer::ARTIST_NAME => 14, CcFilesPeer::BIT_RATE => 15, CcFilesPeer::SAMPLE_RATE => 16, CcFilesPeer::FORMAT => 17, CcFilesPeer::LENGTH => 18, CcFilesPeer::ALBUM_TITLE => 19, CcFilesPeer::GENRE => 20, CcFilesPeer::COMMENTS => 21, CcFilesPeer::YEAR => 22, CcFilesPeer::TRACK_NUMBER => 23, CcFilesPeer::CHANNELS => 24, CcFilesPeer::URL => 25, CcFilesPeer::BPM => 26, CcFilesPeer::RATING => 27, CcFilesPeer::ENCODED_BY => 28, CcFilesPeer::DISC_NUMBER => 29, CcFilesPeer::MOOD => 30, CcFilesPeer::LABEL => 31, CcFilesPeer::COMPOSER => 32, CcFilesPeer::ENCODER => 33, CcFilesPeer::CHECKSUM => 34, CcFilesPeer::LYRICS => 35, CcFilesPeer::ORCHESTRA => 36, CcFilesPeer::CONDUCTOR => 37, CcFilesPeer::LYRICIST => 38, CcFilesPeer::ORIGINAL_LYRICIST => 39, CcFilesPeer::RADIO_STATION_NAME => 40, CcFilesPeer::INFO_URL => 41, CcFilesPeer::ARTIST_URL => 42, CcFilesPeer::AUDIO_SOURCE_URL => 43, CcFilesPeer::RADIO_STATION_URL => 44, CcFilesPeer::BUY_THIS_URL => 45, CcFilesPeer::ISRC_NUMBER => 46, CcFilesPeer::CATALOG_NUMBER => 47, CcFilesPeer::ORIGINAL_ARTIST => 48, CcFilesPeer::COPYRIGHT => 49, CcFilesPeer::REPORT_DATETIME => 50, CcFilesPeer::REPORT_LOCATION => 51, CcFilesPeer::REPORT_ORGANIZATION => 52, CcFilesPeer::SUBJECT => 53, CcFilesPeer::CONTRIBUTOR => 54, CcFilesPeer::LANGUAGE => 55, CcFilesPeer::FILE_EXISTS => 56, CcFilesPeer::SOUNDCLOUD_ID => 57, CcFilesPeer::SOUNDCLOUD_ERROR_CODE => 58, CcFilesPeer::SOUNDCLOUD_ERROR_MSG => 59, CcFilesPeer::SOUNDCLOUD_LINK_TO_FILE => 60, CcFilesPeer::SOUNDCLOUD_UPLOAD_TIME => 61, CcFilesPeer::REPLAY_GAIN => 62, CcFilesPeer::OWNER_ID => 63, CcFilesPeer::CUEIN => 64, CcFilesPeer::CUEOUT => 65, CcFilesPeer::SILAN_CHECK => 66, CcFilesPeer::HIDDEN => 67, CcFilesPeer::IS_SCHEDULED => 68, CcFilesPeer::IS_PLAYLIST => 69, CcFilesPeer::FILESIZE => 70, CcFilesPeer::DESCRIPTION => 71, CcFilesPeer::DESCRIPTION => 72, ), - BasePeer::TYPE_RAW_COLNAME => array ('ID' => 0, 'NAME' => 1, 'MIME' => 2, 'FTYPE' => 3, 'DIRECTORY' => 4, 'FILEPATH' => 5, 'IMPORT_STATUS' => 6, 'CURRENTLYACCESSING' => 7, 'EDITEDBY' => 8, 'MTIME' => 9, 'UTIME' => 10, 'LPTIME' => 11, 'MD5' => 12, 'TRACK_TITLE' => 13, 'ARTIST_NAME' => 14, 'BIT_RATE' => 15, 'SAMPLE_RATE' => 16, 'FORMAT' => 17, 'LENGTH' => 18, 'ALBUM_TITLE' => 19, 'GENRE' => 20, 'COMMENTS' => 21, 'YEAR' => 22, 'TRACK_NUMBER' => 23, 'CHANNELS' => 24, 'URL' => 25, 'BPM' => 26, 'RATING' => 27, 'ENCODED_BY' => 28, 'DISC_NUMBER' => 29, 'MOOD' => 30, 'LABEL' => 31, 'COMPOSER' => 32, 'ENCODER' => 33, 'CHECKSUM' => 34, 'LYRICS' => 35, 'ORCHESTRA' => 36, 'CONDUCTOR' => 37, 'LYRICIST' => 38, 'ORIGINAL_LYRICIST' => 39, 'RADIO_STATION_NAME' => 40, 'INFO_URL' => 41, 'ARTIST_URL' => 42, 'AUDIO_SOURCE_URL' => 43, 'RADIO_STATION_URL' => 44, 'BUY_THIS_URL' => 45, 'ISRC_NUMBER' => 46, 'CATALOG_NUMBER' => 47, 'ORIGINAL_ARTIST' => 48, 'COPYRIGHT' => 49, 'REPORT_DATETIME' => 50, 'REPORT_LOCATION' => 51, 'REPORT_ORGANIZATION' => 52, 'SUBJECT' => 53, 'CONTRIBUTOR' => 54, 'LANGUAGE' => 55, 'FILE_EXISTS' => 56, 'SOUNDCLOUD_ID' => 57, 'SOUNDCLOUD_ERROR_CODE' => 58, 'SOUNDCLOUD_ERROR_MSG' => 59, 'SOUNDCLOUD_LINK_TO_FILE' => 60, 'SOUNDCLOUD_UPLOAD_TIME' => 61, 'REPLAY_GAIN' => 62, 'OWNER_ID' => 63, 'CUEIN' => 64, 'CUEOUT' => 65, 'SILAN_CHECK' => 66, 'HIDDEN' => 67, 'IS_SCHEDULED' => 68, 'IS_PLAYLIST' => 69, 'FILESIZE' => 70, 'DESCRIPTION' => 71, 'ARTWORK' => 72, ), - BasePeer::TYPE_FIELDNAME => array ('id' => 0, 'name' => 1, 'mime' => 2, 'ftype' => 3, 'directory' => 4, 'filepath' => 5, 'import_status' => 6, 'currentlyaccessing' => 7, 'editedby' => 8, 'mtime' => 9, 'utime' => 10, 'lptime' => 11, 'md5' => 12, 'track_title' => 13, 'artist_name' => 14, 'bit_rate' => 15, 'sample_rate' => 16, 'format' => 17, 'length' => 18, 'album_title' => 19, 'genre' => 20, 'comments' => 21, 'year' => 22, 'track_number' => 23, 'channels' => 24, 'url' => 25, 'bpm' => 26, 'rating' => 27, 'encoded_by' => 28, 'disc_number' => 29, 'mood' => 30, 'label' => 31, 'composer' => 32, 'encoder' => 33, 'checksum' => 34, 'lyrics' => 35, 'orchestra' => 36, 'conductor' => 37, 'lyricist' => 38, 'original_lyricist' => 39, 'radio_station_name' => 40, 'info_url' => 41, 'artist_url' => 42, 'audio_source_url' => 43, 'radio_station_url' => 44, 'buy_this_url' => 45, 'isrc_number' => 46, 'catalog_number' => 47, 'original_artist' => 48, 'copyright' => 49, 'report_datetime' => 50, 'report_location' => 51, 'report_organization' => 52, 'subject' => 53, 'contributor' => 54, 'language' => 55, 'file_exists' => 56, 'soundcloud_id' => 57, 'soundcloud_error_code' => 58, 'soundcloud_error_msg' => 59, 'soundcloud_link_to_file' => 60, 'soundcloud_upload_time' => 61, 'replay_gain' => 62, 'owner_id' => 63, 'cuein' => 64, 'cueout' => 65, 'silan_check' => 66, 'hidden' => 67, 'is_scheduled' => 68, 'is_playlist' => 69, 'filesize' => 70, 'description' => 71, 'artwork' => 72, ), - BasePeer::TYPE_NUM => array (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, ) + BasePeer::TYPE_RAW_COLNAME => array ('ID' => 0, 'NAME' => 1, 'MIME' => 2, 'FTYPE' => 3, 'DIRECTORY' => 4, 'FILEPATH' => 5, 'IMPORT_STATUS' => 6, 'CURRENTLYACCESSING' => 7, 'EDITEDBY' => 8, 'MTIME' => 9, 'UTIME' => 10, 'LPTIME' => 11, 'MD5' => 12, 'TRACK_TITLE' => 13, 'ARTIST_NAME' => 14, 'BIT_RATE' => 15, 'SAMPLE_RATE' => 16, 'FORMAT' => 17, 'LENGTH' => 18, 'ALBUM_TITLE' => 19, 'GENRE' => 20, 'COMMENTS' => 21, 'YEAR' => 22, 'TRACK_NUMBER' => 23, 'CHANNELS' => 24, 'URL' => 25, 'BPM' => 26, 'RATING' => 27, 'ENCODED_BY' => 28, 'DISC_NUMBER' => 29, 'MOOD' => 30, 'LABEL' => 31, 'COMPOSER' => 32, 'ENCODER' => 33, 'CHECKSUM' => 34, 'LYRICS' => 35, 'ORCHESTRA' => 36, 'CONDUCTOR' => 37, 'LYRICIST' => 38, 'ORIGINAL_LYRICIST' => 39, 'RADIO_STATION_NAME' => 40, 'INFO_URL' => 41, 'ARTIST_URL' => 42, 'AUDIO_SOURCE_URL' => 43, 'RADIO_STATION_URL' => 44, 'BUY_THIS_URL' => 45, 'ISRC_NUMBER' => 46, 'CATALOG_NUMBER' => 47, 'ORIGINAL_ARTIST' => 48, 'COPYRIGHT' => 49, 'REPORT_DATETIME' => 50, 'REPORT_LOCATION' => 51, 'REPORT_ORGANIZATION' => 52, 'SUBJECT' => 53, 'CONTRIBUTOR' => 54, 'LANGUAGE' => 55, 'FILE_EXISTS' => 56, 'SOUNDCLOUD_ID' => 57, 'SOUNDCLOUD_ERROR_CODE' => 58, 'SOUNDCLOUD_ERROR_MSG' => 59, 'SOUNDCLOUD_LINK_TO_FILE' => 60, 'SOUNDCLOUD_UPLOAD_TIME' => 61, 'REPLAY_GAIN' => 62, 'OWNER_ID' => 63, 'CUEIN' => 64, 'CUEOUT' => 65, 'SILAN_CHECK' => 66, 'HIDDEN' => 67, 'IS_SCHEDULED' => 68, 'IS_PLAYLIST' => 69, 'FILESIZE' => 70, 'DESCRIPTION' => 71, 'ARTWORK' => 72, 'TRACK_TYPE' => 73, ), + BasePeer::TYPE_FIELDNAME => array ('id' => 0, 'name' => 1, 'mime' => 2, 'ftype' => 3, 'directory' => 4, 'filepath' => 5, 'import_status' => 6, 'currentlyaccessing' => 7, 'editedby' => 8, 'mtime' => 9, 'utime' => 10, 'lptime' => 11, 'md5' => 12, 'track_title' => 13, 'artist_name' => 14, 'bit_rate' => 15, 'sample_rate' => 16, 'format' => 17, 'length' => 18, 'album_title' => 19, 'genre' => 20, 'comments' => 21, 'year' => 22, 'track_number' => 23, 'channels' => 24, 'url' => 25, 'bpm' => 26, 'rating' => 27, 'encoded_by' => 28, 'disc_number' => 29, 'mood' => 30, 'label' => 31, 'composer' => 32, 'encoder' => 33, 'checksum' => 34, 'lyrics' => 35, 'orchestra' => 36, 'conductor' => 37, 'lyricist' => 38, 'original_lyricist' => 39, 'radio_station_name' => 40, 'info_url' => 41, 'artist_url' => 42, 'audio_source_url' => 43, 'radio_station_url' => 44, 'buy_this_url' => 45, 'isrc_number' => 46, 'catalog_number' => 47, 'original_artist' => 48, 'copyright' => 49, 'report_datetime' => 50, 'report_location' => 51, 'report_organization' => 52, 'subject' => 53, 'contributor' => 54, 'language' => 55, 'file_exists' => 56, 'soundcloud_id' => 57, 'soundcloud_error_code' => 58, 'soundcloud_error_msg' => 59, 'soundcloud_link_to_file' => 60, 'soundcloud_upload_time' => 61, 'replay_gain' => 62, 'owner_id' => 63, 'cuein' => 64, 'cueout' => 65, 'silan_check' => 66, 'hidden' => 67, 'is_scheduled' => 68, 'is_playlist' => 69, 'filesize' => 70, 'description' => 71, 'artwork' => 72, 'track_type' => 73, ), + BasePeer::TYPE_NUM => array (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, ) ); /** @@ -437,6 +440,7 @@ abstract class BaseCcFilesPeer $criteria->addSelectColumn(CcFilesPeer::FILESIZE); $criteria->addSelectColumn(CcFilesPeer::DESCRIPTION); $criteria->addSelectColumn(CcFilesPeer::ARTWORK); + $criteria->addSelectColumn(CcFilesPeer::TRACK_TYPE); } else { $criteria->addSelectColumn($alias . '.id'); $criteria->addSelectColumn($alias . '.name'); @@ -511,6 +515,7 @@ abstract class BaseCcFilesPeer $criteria->addSelectColumn($alias . '.filesize'); $criteria->addSelectColumn($alias . '.description'); $criteria->addSelectColumn($alias . '.artwork'); + $criteria->addSelectColumn($alias . '.track_type'); } } diff --git a/airtime_mvc/application/models/airtime/om/BaseCcFilesQuery.php b/airtime_mvc/application/models/airtime/om/BaseCcFilesQuery.php index 6c5afc688..781fe5d6a 100644 --- a/airtime_mvc/application/models/airtime/om/BaseCcFilesQuery.php +++ b/airtime_mvc/application/models/airtime/om/BaseCcFilesQuery.php @@ -79,6 +79,7 @@ * @method CcFilesQuery orderByDbFilesize($order = Criteria::ASC) Order by the filesize column * @method CcFilesQuery orderByDbDescription($order = Criteria::ASC) Order by the description column * @method CcFilesQuery orderByDbArtwork($order = Criteria::ASC) Order by the artwork column + * @method CcFilesQuery orderByDbTrackType($order = Criteria::ASC) Order by the track_type column * * @method CcFilesQuery groupByDbId() Group by the id column * @method CcFilesQuery groupByDbName() Group by the name column @@ -153,6 +154,7 @@ * @method CcFilesQuery groupByDbFilesize() Group by the filesize column * @method CcFilesQuery groupByDbDescription() Group by the description column * @method CcFilesQuery groupByDbArtwork() Group by the artwork column + * @method CcFilesQuery groupByDbTrackType() Group by the track_type column * * @method CcFilesQuery leftJoin($relation) Adds a LEFT JOIN clause to the query * @method CcFilesQuery rightJoin($relation) Adds a RIGHT JOIN clause to the query @@ -277,6 +279,7 @@ * @method CcFiles findOneByDbFilesize(int $filesize) Return the first CcFiles filtered by the filesize column * @method CcFiles findOneByDbDescription(string $description) Return the first CcFiles filtered by the description column * @method CcFiles findOneByDbArtwork(string $artwork) Return the first CcFiles filtered by the artwork column + * @method CcFiles findOneByDbTrackType(string $track_type) Return the first CcFiles filtered by the track_type column * * @method array findByDbId(int $id) Return CcFiles objects filtered by the id column * @method array findByDbName(string $name) Return CcFiles objects filtered by the name column @@ -351,6 +354,7 @@ * @method array findByDbFilesize(int $filesize) Return CcFiles objects filtered by the filesize column * @method array findByDbDescription(string $description) Return CcFiles objects filtered by the description column * @method array findByDbArtwork(string $artwork) Return CcFiles objects filtered by the artwork column + * @method array findByDbTrackType(string $track_type) Return CcFiles objects filtered by the track_type column * * @package propel.generator.airtime.om */ @@ -458,7 +462,7 @@ abstract class BaseCcFilesQuery extends ModelCriteria */ protected function findPkSimple($key, $con) { - $sql = 'SELECT "id", "name", "mime", "ftype", "directory", "filepath", "import_status", "currentlyaccessing", "editedby", "mtime", "utime", "lptime", "md5", "track_title", "artist_name", "bit_rate", "sample_rate", "format", "length", "album_title", "genre", "comments", "year", "track_number", "channels", "url", "bpm", "rating", "encoded_by", "disc_number", "mood", "label", "composer", "encoder", "checksum", "lyrics", "orchestra", "conductor", "lyricist", "original_lyricist", "radio_station_name", "info_url", "artist_url", "audio_source_url", "radio_station_url", "buy_this_url", "isrc_number", "catalog_number", "original_artist", "copyright", "report_datetime", "report_location", "report_organization", "subject", "contributor", "language", "file_exists", "soundcloud_id", "soundcloud_error_code", "soundcloud_error_msg", "soundcloud_link_to_file", "soundcloud_upload_time", "replay_gain", "owner_id", "cuein", "cueout", "silan_check", "hidden", "is_scheduled", "is_playlist", "filesize", "description", "artwork" FROM "cc_files" WHERE "id" = :p0'; + $sql = 'SELECT "id", "name", "mime", "ftype", "directory", "filepath", "import_status", "currentlyaccessing", "editedby", "mtime", "utime", "lptime", "md5", "track_title", "artist_name", "bit_rate", "sample_rate", "format", "length", "album_title", "genre", "comments", "year", "track_number", "channels", "url", "bpm", "rating", "encoded_by", "disc_number", "mood", "label", "composer", "encoder", "checksum", "lyrics", "orchestra", "conductor", "lyricist", "original_lyricist", "radio_station_name", "info_url", "artist_url", "audio_source_url", "radio_station_url", "buy_this_url", "isrc_number", "catalog_number", "original_artist", "copyright", "report_datetime", "report_location", "report_organization", "subject", "contributor", "language", "file_exists", "soundcloud_id", "soundcloud_error_code", "soundcloud_error_msg", "soundcloud_link_to_file", "soundcloud_upload_time", "replay_gain", "owner_id", "cuein", "cueout", "silan_check", "hidden", "is_scheduled", "is_playlist", "filesize", "description", "artwork", "track_type" FROM "cc_files" WHERE "id" = :p0'; try { $stmt = $con->prepare($sql); $stmt->bindValue(':p0', $key, PDO::PARAM_INT); @@ -1970,6 +1974,35 @@ abstract class BaseCcFilesQuery extends ModelCriteria return $this->addUsingAlias(CcFilesPeer::ARTWORK, $dbArtwork, $comparison); } + /** + * Filter the query on the track_type column + * + * Example usage: + * + * $query->filterByDbTrackType('fooValue'); // WHERE track_type = 'fooValue' + * $query->filterByDbTrackType('%fooValue%'); // WHERE track_type LIKE '%fooValue%' + * + * + * @param string $dbTrackType The value to use as filter. + * Accepts wildcards (* and % trigger a LIKE) + * @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL + * + * @return CcFilesQuery The current query, for fluid interface + */ + public function filterByDbTrackType($dbTrackType = null, $comparison = null) + { + if (null === $comparison) { + if (is_array($dbTrackType)) { + $comparison = Criteria::IN; + } elseif (preg_match('/[\%\*]/', $dbTrackType)) { + $dbTrackType = str_replace('*', '%', $dbTrackType); + $comparison = Criteria::LIKE; + } + } + + return $this->addUsingAlias(CcFilesPeer::TRACK_TYPE, $dbTrackType, $comparison); + } + /** * Filter the query on the artist_url column * diff --git a/airtime_mvc/application/models/airtime/om/BaseCcTracktypes.php b/airtime_mvc/application/models/airtime/om/BaseCcTracktypes.php new file mode 100644 index 000000000..2828284b7 --- /dev/null +++ b/airtime_mvc/application/models/airtime/om/BaseCcTracktypes.php @@ -0,0 +1,1037 @@ +code = ''; + $this->visibility = true; + $this->type_name = ''; + $this->description = ''; + } + + /** + * Initializes internal state of BaseCcTracktypes object. + * @see applyDefaults() + */ + public function __construct() + { + parent::__construct(); + $this->applyDefaultValues(); + } + + /** + * Get the [id] column value. + * + * @return int + */ + public function getDbId() + { + + return $this->id; + } + + /** + * Get the [code] column value. + * + * @return string + */ + public function getDbCode() + { + + return $this->code; + } + + /** + * Get the [visibility] column value. + * + * @return string + */ + public function getDbVisibility() + { + + return $this->visibility; + } + + /** + * Get the [type_name] column value. + * + * @return string + */ + public function getDbTypeName() + { + + return $this->type_name; + } + + /** + * Get the [description] column value. + * + * @return string + */ + public function getDbDescription() + { + + return $this->description; + } + + /** + * Set the value of [id] column. + * + * @param int $v new value + * @return CcTracktypes The current object (for fluent API support) + */ + public function setDbId($v) + { + if ($v !== null && is_numeric($v)) { + $v = (int) $v; + } + + if ($this->id !== $v) { + $this->id = $v; + $this->modifiedColumns[] = CcTracktypesPeer::ID; + } + + return $this; + } // setDbId() + + /** + * Set the value of [code] column. + * + * @param string $v new value + * @return CcTracktypes The current object (for fluent API support) + */ + public function setDbCode($v) + { + if ($v !== null && is_numeric($v)) { + $v = (string) $v; + } + + if ($this->code !== $v) { + $this->code = $v; + $this->modifiedColumns[] = CcTracktypesPeer::CODE; + } + + return $this; + } // setDbCode() + + /** + * Set the value of [visibility] column. + * + * @param string $v new value + * @return CcTracktypes The current object (for fluent API support) + */ + public function setDbVisibility($v) + { + if ($v !== null && is_numeric($v)) { + $v = (string) $v; + } + + if ($this->visibility !== $v) { + $this->visibility = $v; + $this->modifiedColumns[] = CcTracktypesPeer::VISIBILITY; + } + + return $this; + } // setDbVisibility() + + /** + * Set the value of [type_name] column. + * + * @param string $v new value + * @return CcTracktypes The current object (for fluent API support) + */ + public function setDbTypeName($v) + { + if ($v !== null && is_numeric($v)) { + $v = (string) $v; + } + + if ($this->type_name !== $v) { + $this->type_name = $v; + $this->modifiedColumns[] = CcTracktypesPeer::TYPE_NAME; + } + + return $this; + } // setDbTypeName() + + /** + * Set the value of [description] column. + * + * @param string $v new value + * @return CcTracktypes The current object (for fluent API support) + */ + public function setDbDescription($v) + { + if ($v !== null && is_numeric($v)) { + $v = (string) $v; + } + + if ($this->description !== $v) { + $this->description = $v; + $this->modifiedColumns[] = CcTracktypesPeer::DESCRIPTION; + } + + return $this; + } // setDbDescription() + + /** + * Indicates whether the columns in this object are only set to default values. + * + * This method can be used in conjunction with isModified() to indicate whether an object is both + * modified _and_ has some values set which are non-default. + * + * @return boolean Whether the columns in this object are only been set with default values. + */ + public function hasOnlyDefaultValues() + { + if ($this->code !== '') { + return false; + } + + if ($this->visibility !== '1') { + return false; + } + + if ($this->type_name !== '') { + return false; + } + + if ($this->description !== '') { + return false; + } + + // otherwise, everything was equal, so return true + return true; + } // hasOnlyDefaultValues() + + /** + * Hydrates (populates) the object variables with values from the database resultset. + * + * An offset (0-based "start column") is specified so that objects can be hydrated + * with a subset of the columns in the resultset rows. This is needed, for example, + * for results of JOIN queries where the resultset row includes columns from two or + * more tables. + * + * @param array $row The row returned by PDOStatement->fetch(PDO::FETCH_NUM) + * @param int $startcol 0-based offset column which indicates which resultset column to start with. + * @param boolean $rehydrate Whether this object is being re-hydrated from the database. + * @return int next starting column + * @throws PropelException - Any caught Exception will be rewrapped as a PropelException. + */ + public function hydrate($row, $startcol = 0, $rehydrate = false) + { + try { + + $this->id = ($row[$startcol + 0] !== null) ? (int) $row[$startcol + 0] : null; + $this->code = ($row[$startcol + 1] !== null) ? (string) $row[$startcol + 1] : null; + $this->visibility = ($row[$startcol + 2] !== null) ? (string) $row[$startcol + 2] : null; + $this->type_name = ($row[$startcol + 3] !== null) ? (string) $row[$startcol + 3] : null; + $this->description = ($row[$startcol + 4] !== null) ? (string) $row[$startcol + 4] : null; + $this->resetModified(); + + $this->setNew(false); + + if ($rehydrate) { + $this->ensureConsistency(); + } + $this->postHydrate($row, $startcol, $rehydrate); + + return $startcol + 5; // 5 = CcTracktypesPeer::NUM_HYDRATE_COLUMNS. + + } catch (Exception $e) { + throw new PropelException("Error populating CcTracktypes object", $e); + } + } + + /** + * Checks and repairs the internal consistency of the object. + * + * This method is executed after an already-instantiated object is re-hydrated + * from the database. It exists to check any foreign keys to make sure that + * the objects related to the current object are correct based on foreign key. + * + * You can override this method in the stub class, but you should always invoke + * the base method from the overridden method (i.e. parent::ensureConsistency()), + * in case your model changes. + * + * @throws PropelException + */ + public function ensureConsistency() + { + + } // ensureConsistency + + /** + * Reloads this object from datastore based on primary key and (optionally) resets all associated objects. + * + * This will only work if the object has been saved and has a valid primary key set. + * + * @param boolean $deep (optional) Whether to also de-associated any related objects. + * @param PropelPDO $con (optional) The PropelPDO connection to use. + * @return void + * @throws PropelException - if this object is deleted, unsaved or doesn't have pk match in db + */ + public function reload($deep = false, PropelPDO $con = null) + { + if ($this->isDeleted()) { + throw new PropelException("Cannot reload a deleted object."); + } + + if ($this->isNew()) { + throw new PropelException("Cannot reload an unsaved object."); + } + + if ($con === null) { + $con = Propel::getConnection(CcTracktypesPeer::DATABASE_NAME, Propel::CONNECTION_READ); + } + + // We don't need to alter the object instance pool; we're just modifying this instance + // already in the pool. + + $stmt = CcTracktypesPeer::doSelectStmt($this->buildPkeyCriteria(), $con); + $row = $stmt->fetch(PDO::FETCH_NUM); + $stmt->closeCursor(); + if (!$row) { + throw new PropelException('Cannot find matching row in the database to reload object values.'); + } + $this->hydrate($row, 0, true); // rehydrate + + } + + /** + * Removes this object from datastore and sets delete attribute. + * + * @param PropelPDO $con + * @return void + * @throws PropelException + * @throws Exception + * @see BaseObject::setDeleted() + * @see BaseObject::isDeleted() + */ + public function delete(PropelPDO $con = null) + { + if ($this->isDeleted()) { + throw new PropelException("This object has already been deleted."); + } + + if ($con === null) { + $con = Propel::getConnection(CcTracktypesPeer::DATABASE_NAME, Propel::CONNECTION_WRITE); + } + + $con->beginTransaction(); + try { + $deleteQuery = CcTracktypesQuery::create() + ->filterByPrimaryKey($this->getPrimaryKey()); + $ret = $this->preDelete($con); + if ($ret) { + $deleteQuery->delete($con); + $this->postDelete($con); + $con->commit(); + $this->setDeleted(true); + } else { + $con->commit(); + } + } catch (Exception $e) { + $con->rollBack(); + throw $e; + } + } + + /** + * Persists this object to the database. + * + * If the object is new, it inserts it; otherwise an update is performed. + * All modified related objects will also be persisted in the doSave() + * method. This method wraps all precipitate database operations in a + * single transaction. + * + * @param PropelPDO $con + * @return int The number of rows affected by this insert/update and any referring fk objects' save() operations. + * @throws PropelException + * @throws Exception + * @see doSave() + */ + public function save(PropelPDO $con = null) + { + if ($this->isDeleted()) { + throw new PropelException("You cannot save an object that has been deleted."); + } + + if ($con === null) { + $con = Propel::getConnection(CcTracktypesPeer::DATABASE_NAME, Propel::CONNECTION_WRITE); + } + + $con->beginTransaction(); + $isInsert = $this->isNew(); + try { + $ret = $this->preSave($con); + if ($isInsert) { + $ret = $ret && $this->preInsert($con); + } else { + $ret = $ret && $this->preUpdate($con); + } + if ($ret) { + $affectedRows = $this->doSave($con); + if ($isInsert) { + $this->postInsert($con); + } else { + $this->postUpdate($con); + } + $this->postSave($con); + CcTracktypesPeer::addInstanceToPool($this); + } else { + $affectedRows = 0; + } + $con->commit(); + + return $affectedRows; + } catch (Exception $e) { + $con->rollBack(); + throw $e; + } + } + + /** + * Performs the work of inserting or updating the row in the database. + * + * If the object is new, it inserts it; otherwise an update is performed. + * All related objects are also updated in this method. + * + * @param PropelPDO $con + * @return int The number of rows affected by this insert/update and any referring fk objects' save() operations. + * @throws PropelException + * @see save() + */ + protected function doSave(PropelPDO $con) + { + $affectedRows = 0; // initialize var to track total num of affected rows + if (!$this->alreadyInSave) { + $this->alreadyInSave = true; + + if ($this->isNew() || $this->isModified()) { + // persist changes + if ($this->isNew()) { + $this->doInsert($con); + } else { + $this->doUpdate($con); + } + $affectedRows += 1; + $this->resetModified(); + } + + $this->alreadyInSave = false; + + } + + return $affectedRows; + } // doSave() + + /** + * Insert the row in the database. + * + * @param PropelPDO $con + * + * @throws PropelException + * @see doSave() + */ + protected function doInsert(PropelPDO $con) + { + $modifiedColumns = array(); + $index = 0; + + $this->modifiedColumns[] = CcTracktypesPeer::ID; + if (null !== $this->id) { + throw new PropelException('Cannot insert a value for auto-increment primary key (' . CcTracktypesPeer::ID . ')'); + } + if (null === $this->id) { + try { + $stmt = $con->query("SELECT nextval('cc_track_types_id_seq')"); + $row = $stmt->fetch(PDO::FETCH_NUM); + $this->id = $row[0]; + } catch (Exception $e) { + throw new PropelException('Unable to get sequence id.', $e); + } + } + + + // check the columns in natural order for more readable SQL queries + if ($this->isColumnModified(CcTracktypesPeer::ID)) { + $modifiedColumns[':p' . $index++] = '"id"'; + } + if ($this->isColumnModified(CcTracktypesPeer::CODE)) { + $modifiedColumns[':p' . $index++] = '"code"'; + } + if ($this->isColumnModified(CcTracktypesPeer::VISIBILITY)) { + $modifiedColumns[':p' . $index++] = '"visibility"'; + } + if ($this->isColumnModified(CcTracktypesPeer::TYPE_NAME)) { + $modifiedColumns[':p' . $index++] = '"type_name"'; + } + if ($this->isColumnModified(CcTracktypesPeer::DESCRIPTION)) { + $modifiedColumns[':p' . $index++] = '"description"'; + } + + $sql = sprintf( + 'INSERT INTO "cc_track_types" (%s) VALUES (%s)', + implode(', ', $modifiedColumns), + implode(', ', array_keys($modifiedColumns)) + ); + + try { + $stmt = $con->prepare($sql); + foreach ($modifiedColumns as $identifier => $columnName) { + switch ($columnName) { + case '"id"': + $stmt->bindValue($identifier, $this->id, PDO::PARAM_INT); + break; + case '"code"': + $stmt->bindValue($identifier, $this->code, PDO::PARAM_STR); + break; + case '"visibility"': + $stmt->bindValue($identifier, $this->visibility, PDO::PARAM_BOOL); + break; + case '"type_name"': + $stmt->bindValue($identifier, $this->type_name, PDO::PARAM_STR); + break; + case '"description"': + $stmt->bindValue($identifier, $this->description, PDO::PARAM_STR); + break; + } + } + $stmt->execute(); + } catch (Exception $e) { + Propel::log($e->getMessage(), Propel::LOG_ERR); + throw new PropelException(sprintf('Unable to execute INSERT statement [%s]', $sql), $e); + } + + $this->setNew(false); + } + + /** + * Update the row in the database. + * + * @param PropelPDO $con + * + * @see doSave() + */ + protected function doUpdate(PropelPDO $con) + { + $selectCriteria = $this->buildPkeyCriteria(); + $valuesCriteria = $this->buildCriteria(); + BasePeer::doUpdate($selectCriteria, $valuesCriteria, $con); + } + + /** + * Array of ValidationFailed objects. + * @var array ValidationFailed[] + */ + protected $validationFailures = array(); + + /** + * Gets any ValidationFailed objects that resulted from last call to validate(). + * + * + * @return array ValidationFailed[] + * @see validate() + */ + public function getValidationFailures() + { + return $this->validationFailures; + } + + /** + * Validates the objects modified field values and all objects related to this table. + * + * If $columns is either a column name or an array of column names + * only those columns are validated. + * + * @param mixed $columns Column name or an array of column names. + * @return boolean Whether all columns pass validation. + * @see doValidate() + * @see getValidationFailures() + */ + public function validate($columns = null) + { + $res = $this->doValidate($columns); + if ($res === true) { + $this->validationFailures = array(); + + return true; + } + + $this->validationFailures = $res; + + return false; + } + + /** + * This function performs the validation work for complex object models. + * + * In addition to checking the current object, all related objects will + * also be validated. If all pass then true is returned; otherwise + * an aggregated array of ValidationFailed objects will be returned. + * + * @param array $columns Array of column names to validate. + * @return mixed true if all validations pass; array of ValidationFailed objects otherwise. + */ + protected function doValidate($columns = null) + { + if (!$this->alreadyInValidation) { + $this->alreadyInValidation = true; + $retval = null; + + $failureMap = array(); + + + if (($retval = CcTracktypesPeer::doValidate($this, $columns)) !== true) { + $failureMap = array_merge($failureMap, $retval); + } + + $this->alreadyInValidation = false; + } + + return (!empty($failureMap) ? $failureMap : true); + } + + /** + * Retrieves a field from the object by name passed in as a string. + * + * @param string $name name + * @param string $type The type of fieldname the $name is of: + * one of the class type constants BasePeer::TYPE_PHPNAME, BasePeer::TYPE_STUDLYPHPNAME + * BasePeer::TYPE_COLNAME, BasePeer::TYPE_FIELDNAME, BasePeer::TYPE_NUM. + * Defaults to BasePeer::TYPE_PHPNAME + * @return mixed Value of field. + */ + public function getByName($name, $type = BasePeer::TYPE_PHPNAME) + { + $pos = CcTracktypesPeer::translateFieldName($name, $type, BasePeer::TYPE_NUM); + $field = $this->getByPosition($pos); + + return $field; + } + + /** + * Retrieves a field from the object by Position as specified in the xml schema. + * Zero-based. + * + * @param int $pos position in xml schema + * @return mixed Value of field at $pos + */ + public function getByPosition($pos) + { + switch ($pos) { + case 0: + return $this->getDbId(); + break; + case 1: + return $this->getDbCode(); + break; + case 2: + return $this->getDbVisibility(); + break; + case 3: + return $this->getDbTypeName(); + break; + case 4: + return $this->getDbDescription(); + break; + default: + return null; + break; + } // switch() + } + + /** + * Exports the object as an array. + * + * You can specify the key type of the array by passing one of the class + * type constants. + * + * @param string $keyType (optional) One of the class type constants BasePeer::TYPE_PHPNAME, BasePeer::TYPE_STUDLYPHPNAME, + * BasePeer::TYPE_COLNAME, BasePeer::TYPE_FIELDNAME, BasePeer::TYPE_NUM. + * Defaults to BasePeer::TYPE_PHPNAME. + * @param boolean $includeLazyLoadColumns (optional) Whether to include lazy loaded columns. Defaults to true. + * @param array $alreadyDumpedObjects List of objects to skip to avoid recursion + * @param boolean $includeForeignObjects (optional) Whether to include hydrated related objects. Default to FALSE. + * + * @return array an associative array containing the field names (as keys) and field values + */ + public function toArray($keyType = BasePeer::TYPE_PHPNAME, $includeLazyLoadColumns = true, $alreadyDumpedObjects = array(), $includeForeignObjects = false) + { + if (isset($alreadyDumpedObjects['CcTracktypes'][$this->getPrimaryKey()])) { + return '*RECURSION*'; + } + $alreadyDumpedObjects['CcTracktypes'][$this->getPrimaryKey()] = true; + $keys = CcTracktypesPeer::getFieldNames($keyType); + $result = array( + $keys[0] => $this->getDbId(), + $keys[1] => $this->getDbCode(), + $keys[2] => $this->getDbVisibility(), + $keys[3] => $this->getDbTypeName(), + $keys[4] => $this->getDbDescription(), + ); + $virtualColumns = $this->virtualColumns; + foreach ($virtualColumns as $key => $virtualColumn) { + $result[$key] = $virtualColumn; + } + + return $result; + } + + /** + * Sets a field from the object by name passed in as a string. + * + * @param string $name peer name + * @param mixed $value field value + * @param string $type The type of fieldname the $name is of: + * one of the class type constants BasePeer::TYPE_PHPNAME, BasePeer::TYPE_STUDLYPHPNAME + * BasePeer::TYPE_COLNAME, BasePeer::TYPE_FIELDNAME, BasePeer::TYPE_NUM. + * Defaults to BasePeer::TYPE_PHPNAME + * @return void + */ + public function setByName($name, $value, $type = BasePeer::TYPE_PHPNAME) + { + $pos = CcTracktypesPeer::translateFieldName($name, $type, BasePeer::TYPE_NUM); + + $this->setByPosition($pos, $value); + } + + /** + * Sets a field from the object by Position as specified in the xml schema. + * Zero-based. + * + * @param int $pos position in xml schema + * @param mixed $value field value + * @return void + */ + public function setByPosition($pos, $value) + { + switch ($pos) { + case 0: + $this->setDbId($value); + break; + case 1: + $this->setDbCode($value); + break; + case 2: + $this->setDbVisibility($value); + break; + case 3: + $this->setDbTypeName($value); + break; + case 4: + $this->setDbDescription($value); + break; + } // switch() + } + + /** + * Populates the object using an array. + * + * This is particularly useful when populating an object from one of the + * request arrays (e.g. $_POST). This method goes through the column + * names, checking to see whether a matching key exists in populated + * array. If so the setByName() method is called for that column. + * + * You can specify the key type of the array by additionally passing one + * of the class type constants BasePeer::TYPE_PHPNAME, BasePeer::TYPE_STUDLYPHPNAME, + * BasePeer::TYPE_COLNAME, BasePeer::TYPE_FIELDNAME, BasePeer::TYPE_NUM. + * The default key type is the column's BasePeer::TYPE_PHPNAME + * + * @param array $arr An array to populate the object from. + * @param string $keyType The type of keys the array uses. + * @return void + */ + public function fromArray($arr, $keyType = BasePeer::TYPE_PHPNAME) + { + $keys = CcTracktypesPeer::getFieldNames($keyType); + + if (array_key_exists($keys[0], $arr)) $this->setDbId($arr[$keys[0]]); + if (array_key_exists($keys[1], $arr)) $this->setDbCode($arr[$keys[1]]); + if (array_key_exists($keys[3], $arr)) $this->setDbVisibility($arr[$keys[2]]); + if (array_key_exists($keys[4], $arr)) $this->setDbTypeName($arr[$keys[3]]); + if (array_key_exists($keys[5], $arr)) $this->setDbDescription($arr[$keys[4]]); + } + + /** + * Build a Criteria object containing the values of all modified columns in this object. + * + * @return Criteria The Criteria object containing all modified values. + */ + public function buildCriteria() + { + $criteria = new Criteria(CcTracktypesPeer::DATABASE_NAME); + + if ($this->isColumnModified(CcTracktypesPeer::ID)) $criteria->add(CcTracktypesPeer::ID, $this->id); + if ($this->isColumnModified(CcTracktypesPeer::CODE)) $criteria->add(CcTracktypesPeer::CODE, $this->code); + if ($this->isColumnModified(CcTracktypesPeer::VISIBILITY)) $criteria->add(CcTracktypesPeer::VISIBILITY, $this->visibility); + if ($this->isColumnModified(CcTracktypesPeer::TYPE_NAME)) $criteria->add(CcTracktypesPeer::TYPE_NAME, $this->type_name); + if ($this->isColumnModified(CcTracktypesPeer::DESCRIPTION)) $criteria->add(CcTracktypesPeer::DESCRIPTION, $this->description); + + return $criteria; + } + + /** + * Builds a Criteria object containing the primary key for this object. + * + * Unlike buildCriteria() this method includes the primary key values regardless + * of whether or not they have been modified. + * + * @return Criteria The Criteria object containing value(s) for primary key(s). + */ + public function buildPkeyCriteria() + { + $criteria = new Criteria(CcTracktypesPeer::DATABASE_NAME); + $criteria->add(CcTracktypesPeer::ID, $this->id); + + return $criteria; + } + + /** + * Returns the primary key for this object (row). + * @return int + */ + public function getPrimaryKey() + { + return $this->getDbId(); + } + + /** + * Generic method to set the primary key (id column). + * + * @param int $key Primary key. + * @return void + */ + public function setPrimaryKey($key) + { + $this->setDbId($key); + } + + /** + * Returns true if the primary key for this object is null. + * @return boolean + */ + public function isPrimaryKeyNull() + { + + return null === $this->getDbId(); + } + + /** + * Sets contents of passed object to values from current object. + * + * If desired, this method can also make copies of all associated (fkey referrers) + * objects. + * + * @param object $copyObj An object of CcTracktypes (or compatible) type. + * @param boolean $deepCopy Whether to also copy all rows that refer (by fkey) to the current row. + * @param boolean $makeNew Whether to reset autoincrement PKs and make the object new. + * @throws PropelException + */ + public function copyInto($copyObj, $deepCopy = false, $makeNew = true) + { + $copyObj->setDbCode($this->getDbCode()); + $copyObj->setDbVisibility($this->getDbVisibility()); + $copyObj->setDbTypeName($this->getDbTypeName()); + $copyObj->setDbDescription($this->getDbDescription()); + + if ($deepCopy && !$this->startCopy) { + // important: temporarily setNew(false) because this affects the behavior of + // the getter/setter methods for fkey referrer objects. + $copyObj->setNew(false); + // store object hash to prevent cycle + $this->startCopy = true; + + //unflag object copy + $this->startCopy = false; + } // if ($deepCopy) + + if ($makeNew) { + $copyObj->setNew(true); + $copyObj->setDbId(NULL); // this is a auto-increment column, so set to default value + } + } + + /** + * Makes a copy of this object that will be inserted as a new row in table when saved. + * It creates a new object filling in the simple attributes, but skipping any primary + * keys that are defined for the table. + * + * If desired, this method can also make copies of all associated (fkey referrers) + * objects. + * + * @param boolean $deepCopy Whether to also copy all rows that refer (by fkey) to the current row. + * @return CcTracktypes Clone of current object. + * @throws PropelException + */ + public function copy($deepCopy = false) + { + // we use get_class(), because this might be a subclass + $clazz = get_class($this); + $copyObj = new $clazz(); + $this->copyInto($copyObj, $deepCopy); + + return $copyObj; + } + + /** + * Returns a peer instance associated with this om. + * + * Since Peer classes are not to have any instance attributes, this method returns the + * same instance for all member of this class. The method could therefore + * be static, but this would prevent one from overriding the behavior. + * + * @return CcTracktypesPeer + */ + public function getPeer() + { + if (self::$peer === null) { + self::$peer = new CcTracktypesPeer(); + } + + return self::$peer; + } + + /** + * Clears the current object and sets all attributes to their default values + */ + public function clear() + { + $this->id = null; + $this->code = null; + $this->visibility = false; + $this->type_name = null; + $this->description = null; + $this->alreadyInSave = false; + $this->alreadyInValidation = false; + $this->alreadyInClearAllReferencesDeep = false; + $this->clearAllReferences(); + $this->applyDefaultValues(); + $this->resetModified(); + $this->setNew(true); + $this->setDeleted(false); + } + + /** + * Resets all references to other model objects or collections of model objects. + * + * This method is a user-space workaround for PHP's inability to garbage collect + * objects with circular references (even in PHP 5.3). This is currently necessary + * when using Propel in certain daemon or large-volume/high-memory operations. + * + * @param boolean $deep Whether to also clear the references on all referrer objects. + */ + public function clearAllReferences($deep = false) + { + + } + + /** + * return the string representation of this object + * + * @return string + */ + public function __toString() + { + return (string) $this->exportTo(CcTracktypesPeer::DEFAULT_STRING_FORMAT); + } + + /** + * return true is the object is in saving state + * + * @return boolean + */ + public function isAlreadyInSave() + { + return $this->alreadyInSave; + } + +} diff --git a/airtime_mvc/application/models/airtime/om/BaseCcTracktypesPeer.php b/airtime_mvc/application/models/airtime/om/BaseCcTracktypesPeer.php new file mode 100644 index 000000000..583344f1f --- /dev/null +++ b/airtime_mvc/application/models/airtime/om/BaseCcTracktypesPeer.php @@ -0,0 +1,780 @@ + array ('DbId', 'DbCode', 'DbVisibility', 'DbTypeName', 'DbDescription', ), + BasePeer::TYPE_STUDLYPHPNAME => array ('dbId', 'dbCode', 'dbVisibility', 'dbTypeName', 'dbDescription', ), + BasePeer::TYPE_COLNAME => array (CcTracktypesPeer::ID, CcTracktypesPeer::CODE, CcTracktypesPeer::VISIBILITY, CcTracktypesPeer::TYPE_NAME, CcTracktypesPeer::DESCRIPTION, ), + BasePeer::TYPE_RAW_COLNAME => array ('ID', 'CODE', 'VISIBILITY', 'TYPE_NAME', 'DESCRIPTION', ), + BasePeer::TYPE_FIELDNAME => array ('id', 'code', 'visibility', 'type_name', 'description', ), + BasePeer::TYPE_NUM => array (0, 1, 2, 3, 4, ) + ); + + /** + * holds an array of keys for quick access to the fieldnames array + * + * first dimension keys are the type constants + * e.g. CcTracktypesPeer::$fieldNames[BasePeer::TYPE_PHPNAME]['Id'] = 0 + */ + protected static $fieldKeys = array ( + BasePeer::TYPE_PHPNAME => array ('DbId' => 0, 'DbCode' => 1, 'DbVisibility' => 2, 'DbTypeName' => 3, 'DbDescription' => 4, ), + BasePeer::TYPE_STUDLYPHPNAME => array ('dbId' => 0, 'dbCode' => 1, 'dbVisibility' => 2, 'dbTypeName' => 3, 'dbDescription' => 4, ), + BasePeer::TYPE_COLNAME => array (CcTracktypesPeer::ID => 0, CcTracktypesPeer::CODE => 1, CcTracktypesPeer::VISIBILITY => 2, CcTracktypesPeer::TYPE_NAME => 3, CcTracktypesPeer::DESCRIPTION => 4, ), + BasePeer::TYPE_RAW_COLNAME => array ('ID' => 0, 'CODE' => 1, 'VISIBILITY' => 2, 'TYPE_NAME' => 3, 'DESCRIPTION' => 4, ), + BasePeer::TYPE_FIELDNAME => array ('id' => 0, 'code' => 1, 'visibility' => 2, 'type_name' => 3, 'description' => 4, ), + BasePeer::TYPE_NUM => array (0, 1, 2, 3, 4, ) + ); + + /** + * Translates a fieldname to another type + * + * @param string $name field name + * @param string $fromType One of the class type constants BasePeer::TYPE_PHPNAME, BasePeer::TYPE_STUDLYPHPNAME + * BasePeer::TYPE_COLNAME, BasePeer::TYPE_FIELDNAME, BasePeer::TYPE_NUM + * @param string $toType One of the class type constants + * @return string translated name of the field. + * @throws PropelException - if the specified name could not be found in the fieldname mappings. + */ + public static function translateFieldName($name, $fromType, $toType) + { + $toNames = CcTracktypesPeer::getFieldNames($toType); + $key = isset(CcTracktypesPeer::$fieldKeys[$fromType][$name]) ? CcTracktypesPeer::$fieldKeys[$fromType][$name] : null; + if ($key === null) { + throw new PropelException("'$name' could not be found in the field names of type '$fromType'. These are: " . print_r(CcTracktypesPeer::$fieldKeys[$fromType], true)); + } + + return $toNames[$key]; + } + + /** + * Returns an array of field names. + * + * @param string $type The type of fieldnames to return: + * One of the class type constants BasePeer::TYPE_PHPNAME, BasePeer::TYPE_STUDLYPHPNAME + * BasePeer::TYPE_COLNAME, BasePeer::TYPE_FIELDNAME, BasePeer::TYPE_NUM + * @return array A list of field names + * @throws PropelException - if the type is not valid. + */ + public static function getFieldNames($type = BasePeer::TYPE_PHPNAME) + { + if (!array_key_exists($type, CcTracktypesPeer::$fieldNames)) { + throw new PropelException('Method getFieldNames() expects the parameter $type to be one of the class constants BasePeer::TYPE_PHPNAME, BasePeer::TYPE_STUDLYPHPNAME, BasePeer::TYPE_COLNAME, BasePeer::TYPE_FIELDNAME, BasePeer::TYPE_NUM. ' . $type . ' was given.'); + } + + return CcTracktypesPeer::$fieldNames[$type]; + } + + /** + * Convenience method which changes table.column to alias.column. + * + * Using this method you can maintain SQL abstraction while using column aliases. + * + * $c->addAlias("alias1", TablePeer::TABLE_NAME); + * $c->addJoin(TablePeer::alias("alias1", TablePeer::PRIMARY_KEY_COLUMN), TablePeer::PRIMARY_KEY_COLUMN); + * + * @param string $alias The alias for the current table. + * @param string $column The column name for current table. (i.e. CcTracktypesPeer::COLUMN_NAME). + * @return string + */ + public static function alias($alias, $column) + { + return str_replace(CcTracktypesPeer::TABLE_NAME.'.', $alias.'.', $column); + } + + /** + * Add all the columns needed to create a new object. + * + * Note: any columns that were marked with lazyLoad="true" in the + * XML schema will not be added to the select list and only loaded + * on demand. + * + * @param Criteria $criteria object containing the columns to add. + * @param string $alias optional table alias + * @throws PropelException Any exceptions caught during processing will be + * rethrown wrapped into a PropelException. + */ + public static function addSelectColumns(Criteria $criteria, $alias = null) + { + if (null === $alias) { + $criteria->addSelectColumn(CcTracktypesPeer::ID); + $criteria->addSelectColumn(CcTracktypesPeer::CODE); + $criteria->addSelectColumn(CcTracktypesPeer::VISIBILITY); + $criteria->addSelectColumn(CcTracktypesPeer::TYPE_NAME); + $criteria->addSelectColumn(CcTracktypesPeer::DESCRIPTION); + } else { + $criteria->addSelectColumn($alias . '.id'); + $criteria->addSelectColumn($alias . '.code'); + $criteria->addSelectColumn($alias . '.visibility'); + $criteria->addSelectColumn($alias . '.type_name'); + $criteria->addSelectColumn($alias . '.description'); + } + } + + /** + * Returns the number of rows matching criteria. + * + * @param Criteria $criteria + * @param boolean $distinct Whether to select only distinct columns; deprecated: use Criteria->setDistinct() instead. + * @param PropelPDO $con + * @return int Number of matching rows. + */ + public static function doCount(Criteria $criteria, $distinct = false, PropelPDO $con = null) + { + // we may modify criteria, so copy it first + $criteria = clone $criteria; + + // We need to set the primary table name, since in the case that there are no WHERE columns + // it will be impossible for the BasePeer::createSelectSql() method to determine which + // tables go into the FROM clause. + $criteria->setPrimaryTableName(CcTracktypesPeer::TABLE_NAME); + + if ($distinct && !in_array(Criteria::DISTINCT, $criteria->getSelectModifiers())) { + $criteria->setDistinct(); + } + + if (!$criteria->hasSelectClause()) { + CcTracktypesPeer::addSelectColumns($criteria); + } + + $criteria->clearOrderByColumns(); // ORDER BY won't ever affect the count + $criteria->setDbName(CcTracktypesPeer::DATABASE_NAME); // Set the correct dbName + + if ($con === null) { + $con = Propel::getConnection(CcTracktypesPeer::DATABASE_NAME, Propel::CONNECTION_READ); + } + // BasePeer returns a PDOStatement + $stmt = BasePeer::doCount($criteria, $con); + + if ($row = $stmt->fetch(PDO::FETCH_NUM)) { + $count = (int) $row[0]; + } else { + $count = 0; // no rows returned; we infer that means 0 matches. + } + $stmt->closeCursor(); + + return $count; + } + + /** + * Selects one object from the DB. + * + * @param Criteria $criteria object used to create the SELECT statement. + * @param PropelPDO $con + * @return CcTracktypes + * @throws PropelException Any exceptions caught during processing will be + * rethrown wrapped into a PropelException. + */ + public static function doSelectOne(Criteria $criteria, PropelPDO $con = null) + { + $critcopy = clone $criteria; + $critcopy->setLimit(1); + $objects = CcTracktypesPeer::doSelect($critcopy, $con); + if ($objects) { + return $objects[0]; + } + + return null; + } + + /** + * Selects several row from the DB. + * + * @param Criteria $criteria The Criteria object used to build the SELECT statement. + * @param PropelPDO $con + * @return array Array of selected Objects + * @throws PropelException Any exceptions caught during processing will be + * rethrown wrapped into a PropelException. + */ + public static function doSelect(Criteria $criteria, PropelPDO $con = null) + { + return CcTracktypesPeer::populateObjects(CcTracktypesPeer::doSelectStmt($criteria, $con)); + } + + /** + * Prepares the Criteria object and uses the parent doSelect() method to execute a PDOStatement. + * + * Use this method directly if you want to work with an executed statement directly (for example + * to perform your own object hydration). + * + * @param Criteria $criteria The Criteria object used to build the SELECT statement. + * @param PropelPDO $con The connection to use + * @throws PropelException Any exceptions caught during processing will be + * rethrown wrapped into a PropelException. + * @return PDOStatement The executed PDOStatement object. + * @see BasePeer::doSelect() + */ + public static function doSelectStmt(Criteria $criteria, PropelPDO $con = null) + { + if ($con === null) { + $con = Propel::getConnection(CcTracktypesPeer::DATABASE_NAME, Propel::CONNECTION_READ); + } + + if (!$criteria->hasSelectClause()) { + $criteria = clone $criteria; + CcTracktypesPeer::addSelectColumns($criteria); + } + + // Set the correct dbName + $criteria->setDbName(CcTracktypesPeer::DATABASE_NAME); + + // BasePeer returns a PDOStatement + return BasePeer::doSelect($criteria, $con); + } + + /** + * Adds an object to the instance pool. + * + * Propel keeps cached copies of objects in an instance pool when they are retrieved + * from the database. In some cases -- especially when you override doSelect*() + * methods in your stub classes -- you may need to explicitly add objects + * to the cache in order to ensure that the same objects are always returned by doSelect*() + * and retrieveByPK*() calls. + * + * @param CcTracktypes $obj A CcTracktypes object. + * @param string $key (optional) key to use for instance map (for performance boost if key was already calculated externally). + */ + public static function addInstanceToPool($obj, $key = null) + { + if (Propel::isInstancePoolingEnabled()) { + if ($key === null) { + $key = (string) $obj->getDbId(); + } // if key === null + CcTracktypesPeer::$instances[$key] = $obj; + } + } + + /** + * Removes an object from the instance pool. + * + * Propel keeps cached copies of objects in an instance pool when they are retrieved + * from the database. In some cases -- especially when you override doDelete + * methods in your stub classes -- you may need to explicitly remove objects + * from the cache in order to prevent returning objects that no longer exist. + * + * @param mixed $value A CcTracktypes object or a primary key value. + * + * @return void + * @throws PropelException - if the value is invalid. + */ + public static function removeInstanceFromPool($value) + { + if (Propel::isInstancePoolingEnabled() && $value !== null) { + if (is_object($value) && $value instanceof CcTracktypes) { + $key = (string) $value->getDbId(); + } elseif (is_scalar($value)) { + // assume we've been passed a primary key + $key = (string) $value; + } else { + $e = new PropelException("Invalid value passed to removeInstanceFromPool(). Expected primary key or CcTracktypes object; got " . (is_object($value) ? get_class($value) . ' object.' : var_export($value,true))); + throw $e; + } + + unset(CcTracktypesPeer::$instances[$key]); + } + } // removeInstanceFromPool() + + /** + * Retrieves a string version of the primary key from the DB resultset row that can be used to uniquely identify a row in this table. + * + * For tables with a single-column primary key, that simple pkey value will be returned. For tables with + * a multi-column primary key, a serialize()d version of the primary key will be returned. + * + * @param string $key The key (@see getPrimaryKeyHash()) for this instance. + * @return CcTracktypes Found object or null if 1) no instance exists for specified key or 2) instance pooling has been disabled. + * @see getPrimaryKeyHash() + */ + public static function getInstanceFromPool($key) + { + if (Propel::isInstancePoolingEnabled()) { + if (isset(CcTracktypesPeer::$instances[$key])) { + return CcTracktypesPeer::$instances[$key]; + } + } + + return null; // just to be explicit + } + + /** + * Clear the instance pool. + * + * @return void + */ + public static function clearInstancePool($and_clear_all_references = false) + { + if ($and_clear_all_references) { + foreach (CcTracktypesPeer::$instances as $instance) { + $instance->clearAllReferences(true); + } + } + CcTracktypesPeer::$instances = array(); + } + + /** + * Method to invalidate the instance pool of all tables related to cc_track_types + * by a foreign key with ON DELETE CASCADE + */ + public static function clearRelatedInstancePool() + { + + } + + /** + * Retrieves a string version of the primary key from the DB resultset row that can be used to uniquely identify a row in this table. + * + * For tables with a single-column primary key, that simple pkey value will be returned. For tables with + * a multi-column primary key, a serialize()d version of the primary key will be returned. + * + * @param array $row PropelPDO resultset row. + * @param int $startcol The 0-based offset for reading from the resultset row. + * @return string A string version of PK or null if the components of primary key in result array are all null. + */ + public static function getPrimaryKeyHashFromRow($row, $startcol = 0) + { + // If the PK cannot be derived from the row, return null. + if ($row[$startcol] === null) { + return null; + } + + return (string) $row[$startcol]; + } + + /** + * Retrieves the primary key from the DB resultset row + * For tables with a single-column primary key, that simple pkey value will be returned. For tables with + * a multi-column primary key, an array of the primary key columns will be returned. + * + * @param array $row PropelPDO resultset row. + * @param int $startcol The 0-based offset for reading from the resultset row. + * @return mixed The primary key of the row + */ + public static function getPrimaryKeyFromRow($row, $startcol = 0) + { + + return (int) $row[$startcol]; + } + + /** + * The returned array will contain objects of the default type or + * objects that inherit from the default. + * + * @throws PropelException Any exceptions caught during processing will be + * rethrown wrapped into a PropelException. + */ + public static function populateObjects(PDOStatement $stmt) + { + $results = array(); + + // set the class once to avoid overhead in the loop + $cls = CcTracktypesPeer::getOMClass(); + // populate the object(s) + while ($row = $stmt->fetch(PDO::FETCH_NUM)) { + $key = CcTracktypesPeer::getPrimaryKeyHashFromRow($row, 0); + if (null !== ($obj = CcTracktypesPeer::getInstanceFromPool($key))) { + // We no longer rehydrate the object, since this can cause data loss. + // See http://www.propelorm.org/ticket/509 + // $obj->hydrate($row, 0, true); // rehydrate + $results[] = $obj; + } else { + $obj = new $cls(); + $obj->hydrate($row); + $results[] = $obj; + CcTracktypesPeer::addInstanceToPool($obj, $key); + } // if key exists + } + $stmt->closeCursor(); + + return $results; + } + + /** + * Populates an object of the default type or an object that inherit from the default. + * + * @param array $row PropelPDO resultset row. + * @param int $startcol The 0-based offset for reading from the resultset row. + * @throws PropelException Any exceptions caught during processing will be + * rethrown wrapped into a PropelException. + * @return array (CcTracktypes object, last column rank) + */ + public static function populateObject($row, $startcol = 0) + { + $key = CcTracktypesPeer::getPrimaryKeyHashFromRow($row, $startcol); + if (null !== ($obj = CcTracktypesPeer::getInstanceFromPool($key))) { + // We no longer rehydrate the object, since this can cause data loss. + // See http://www.propelorm.org/ticket/509 + // $obj->hydrate($row, $startcol, true); // rehydrate + $col = $startcol + CcTracktypesPeer::NUM_HYDRATE_COLUMNS; + } else { + $cls = CcTracktypesPeer::OM_CLASS; + $obj = new $cls(); + $col = $obj->hydrate($row, $startcol); + CcTracktypesPeer::addInstanceToPool($obj, $key); + } + + return array($obj, $col); + } + + /** + * Returns the TableMap related to this peer. + * This method is not needed for general use but a specific application could have a need. + * @return TableMap + * @throws PropelException Any exceptions caught during processing will be + * rethrown wrapped into a PropelException. + */ + public static function getTableMap() + { + return Propel::getDatabaseMap(CcTracktypesPeer::DATABASE_NAME)->getTable(CcTracktypesPeer::TABLE_NAME); + } + + /** + * Add a TableMap instance to the database for this peer class. + */ + public static function buildTableMap() + { + $dbMap = Propel::getDatabaseMap(BaseCcTracktypesPeer::DATABASE_NAME); + if (!$dbMap->hasTable(BaseCcTracktypesPeer::TABLE_NAME)) { + $dbMap->addTableObject(new \CcTracktypesTableMap()); + } + } + + /** + * The class that the Peer will make instances of. + * + * + * @return string ClassName + */ + public static function getOMClass($row = 0, $colnum = 0) + { + return CcTracktypesPeer::OM_CLASS; + } + + /** + * Performs an INSERT on the database, given a CcTracktypes or Criteria object. + * + * @param mixed $values Criteria or CcTracktypes object containing data that is used to create the INSERT statement. + * @param PropelPDO $con the PropelPDO connection to use + * @return mixed The new primary key. + * @throws PropelException Any exceptions caught during processing will be + * rethrown wrapped into a PropelException. + */ + public static function doInsert($values, PropelPDO $con = null) + { + if ($con === null) { + $con = Propel::getConnection(CcTracktypesPeer::DATABASE_NAME, Propel::CONNECTION_WRITE); + } + + if ($values instanceof Criteria) { + $criteria = clone $values; // rename for clarity + } else { + $criteria = $values->buildCriteria(); // build Criteria from CcTracktypes object + } + + if ($criteria->containsKey(CcTracktypesPeer::ID) && $criteria->keyContainsValue(CcTracktypesPeer::ID) ) { + throw new PropelException('Cannot insert a value for auto-increment primary key ('.CcTracktypesPeer::ID.')'); + } + + + // Set the correct dbName + $criteria->setDbName(CcTracktypesPeer::DATABASE_NAME); + + try { + // use transaction because $criteria could contain info + // for more than one table (I guess, conceivably) + $con->beginTransaction(); + $pk = BasePeer::doInsert($criteria, $con); + $con->commit(); + } catch (Exception $e) { + $con->rollBack(); + throw $e; + } + + return $pk; + } + + /** + * Performs an UPDATE on the database, given a CcTracktypes or Criteria object. + * + * @param mixed $values Criteria or CcTracktypes object containing data that is used to create the UPDATE statement. + * @param PropelPDO $con The connection to use (specify PropelPDO connection object to exert more control over transactions). + * @return int The number of affected rows (if supported by underlying database driver). + * @throws PropelException Any exceptions caught during processing will be + * rethrown wrapped into a PropelException. + */ + public static function doUpdate($values, PropelPDO $con = null) + { + if ($con === null) { + $con = Propel::getConnection(CcTracktypesPeer::DATABASE_NAME, Propel::CONNECTION_WRITE); + } + + $selectCriteria = new Criteria(CcTracktypesPeer::DATABASE_NAME); + + if ($values instanceof Criteria) { + $criteria = clone $values; // rename for clarity + + $comparison = $criteria->getComparison(CcTracktypesPeer::ID); + $value = $criteria->remove(CcTracktypesPeer::ID); + if ($value) { + $selectCriteria->add(CcTracktypesPeer::ID, $value, $comparison); + } else { + $selectCriteria->setPrimaryTableName(CcTracktypesPeer::TABLE_NAME); + } + + } else { // $values is CcTracktypes object + $criteria = $values->buildCriteria(); // gets full criteria + $selectCriteria = $values->buildPkeyCriteria(); // gets criteria w/ primary key(s) + } + + // set the correct dbName + $criteria->setDbName(CcTracktypesPeer::DATABASE_NAME); + + return BasePeer::doUpdate($selectCriteria, $criteria, $con); + } + + /** + * Deletes all rows from the cc_track_types table. + * + * @param PropelPDO $con the connection to use + * @return int The number of affected rows (if supported by underlying database driver). + * @throws PropelException + */ + public static function doDeleteAll(PropelPDO $con = null) + { + if ($con === null) { + $con = Propel::getConnection(CcTracktypesPeer::DATABASE_NAME, Propel::CONNECTION_WRITE); + } + $affectedRows = 0; // initialize var to track total num of affected rows + try { + // use transaction because $criteria could contain info + // for more than one table or we could emulating ON DELETE CASCADE, etc. + $con->beginTransaction(); + $affectedRows += BasePeer::doDeleteAll(CcTracktypesPeer::TABLE_NAME, $con, CcTracktypesPeer::DATABASE_NAME); + // Because this db requires some delete cascade/set null emulation, we have to + // clear the cached instance *after* the emulation has happened (since + // instances get re-added by the select statement contained therein). + CcTracktypesPeer::clearInstancePool(); + CcTracktypesPeer::clearRelatedInstancePool(); + $con->commit(); + + return $affectedRows; + } catch (Exception $e) { + $con->rollBack(); + throw $e; + } + } + + /** + * Performs a DELETE on the database, given a CcTracktypes or Criteria object OR a primary key value. + * + * @param mixed $values Criteria or CcTracktypes object or primary key or array of primary keys + * which is used to create the DELETE statement + * @param PropelPDO $con the connection to use + * @return int The number of affected rows (if supported by underlying database driver). This includes CASCADE-related rows + * if supported by native driver or if emulated using Propel. + * @throws PropelException Any exceptions caught during processing will be + * rethrown wrapped into a PropelException. + */ + public static function doDelete($values, PropelPDO $con = null) + { + if ($con === null) { + $con = Propel::getConnection(CcTracktypesPeer::DATABASE_NAME, Propel::CONNECTION_WRITE); + } + + if ($values instanceof Criteria) { + // invalidate the cache for all objects of this type, since we have no + // way of knowing (without running a query) what objects should be invalidated + // from the cache based on this Criteria. + CcTracktypesPeer::clearInstancePool(); + // rename for clarity + $criteria = clone $values; + } elseif ($values instanceof CcTracktypes) { // it's a model object + // invalidate the cache for this single object + CcTracktypesPeer::removeInstanceFromPool($values); + // create criteria based on pk values + $criteria = $values->buildPkeyCriteria(); + } else { // it's a primary key, or an array of pks + $criteria = new Criteria(CcTracktypesPeer::DATABASE_NAME); + $criteria->add(CcTracktypesPeer::ID, (array) $values, Criteria::IN); + // invalidate the cache for this object(s) + foreach ((array) $values as $singleval) { + CcTracktypesPeer::removeInstanceFromPool($singleval); + } + } + + // Set the correct dbName + $criteria->setDbName(CcTracktypesPeer::DATABASE_NAME); + + $affectedRows = 0; // initialize var to track total num of affected rows + + try { + // use transaction because $criteria could contain info + // for more than one table or we could emulating ON DELETE CASCADE, etc. + $con->beginTransaction(); + + $affectedRows += BasePeer::doDelete($criteria, $con); + CcTracktypesPeer::clearRelatedInstancePool(); + $con->commit(); + + return $affectedRows; + } catch (Exception $e) { + $con->rollBack(); + throw $e; + } + } + + /** + * Validates all modified columns of given CcTracktypes object. + * If parameter $columns is either a single column name or an array of column names + * than only those columns are validated. + * + * NOTICE: This does not apply to primary or foreign keys for now. + * + * @param CcTracktypes $obj The object to validate. + * @param mixed $cols Column name or array of column names. + * + * @return mixed TRUE if all columns are valid or the error message of the first invalid column. + */ + public static function doValidate($obj, $cols = null) + { + $columns = array(); + + if ($cols) { + $dbMap = Propel::getDatabaseMap(CcTracktypesPeer::DATABASE_NAME); + $tableMap = $dbMap->getTable(CcTracktypesPeer::TABLE_NAME); + + if (! is_array($cols)) { + $cols = array($cols); + } + + foreach ($cols as $colName) { + if ($tableMap->hasColumn($colName)) { + $get = 'get' . $tableMap->getColumn($colName)->getPhpName(); + $columns[$colName] = $obj->$get(); + } + } + } else { + + } + + return BasePeer::doValidate(CcTracktypesPeer::DATABASE_NAME, CcTracktypesPeer::TABLE_NAME, $columns); + } + + /** + * Retrieve a single object by pkey. + * + * @param int $pk the primary key. + * @param PropelPDO $con the connection to use + * @return CcTracktypes + */ + public static function retrieveByPK($pk, PropelPDO $con = null) + { + + if (null !== ($obj = CcTracktypesPeer::getInstanceFromPool((string) $pk))) { + return $obj; + } + + if ($con === null) { + $con = Propel::getConnection(CcTracktypesPeer::DATABASE_NAME, Propel::CONNECTION_READ); + } + + $criteria = new Criteria(CcTracktypesPeer::DATABASE_NAME); + $criteria->add(CcTracktypesPeer::ID, $pk); + + $v = CcTracktypesPeer::doSelect($criteria, $con); + + return !empty($v) > 0 ? $v[0] : null; + } + + /** + * Retrieve multiple objects by pkey. + * + * @param array $pks List of primary keys + * @param PropelPDO $con the connection to use + * @return CcTracktypes[] + * @throws PropelException Any exceptions caught during processing will be + * rethrown wrapped into a PropelException. + */ + public static function retrieveByPKs($pks, PropelPDO $con = null) + { + if ($con === null) { + $con = Propel::getConnection(CcTracktypesPeer::DATABASE_NAME, Propel::CONNECTION_READ); + } + + $objs = null; + if (empty($pks)) { + $objs = array(); + } else { + $criteria = new Criteria(CcTracktypesPeer::DATABASE_NAME); + $criteria->add(CcTracktypesPeer::ID, $pks, Criteria::IN); + $objs = CcTracktypesPeer::doSelect($criteria, $con); + } + + return $objs; + } + +} // BaseCcTracktypesPeer + +// This is the static code needed to register the TableMap for this table with the main Propel class. +// +BaseCcTracktypesPeer::buildTableMap(); + diff --git a/airtime_mvc/application/models/airtime/om/BaseCcTracktypesQuery.php b/airtime_mvc/application/models/airtime/om/BaseCcTracktypesQuery.php new file mode 100644 index 000000000..104a0ef00 --- /dev/null +++ b/airtime_mvc/application/models/airtime/om/BaseCcTracktypesQuery.php @@ -0,0 +1,407 @@ +mergeWith($criteria); + } + + return $query; + } + + /** + * Find object by primary key. + * Propel uses the instance pool to skip the database if the object exists. + * Go fast if the query is untouched. + * + * + * $obj = $c->findPk(12, $con); + * + * + * @param mixed $key Primary key to use for the query + * @param PropelPDO $con an optional connection object + * + * @return CcTracktypes|CcTracktypes[]|mixed the result, formatted by the current formatter + */ + public function findPk($key, $con = null) + { + if ($key === null) { + return null; + } + if ((null !== ($obj = CcTracktypesPeer::getInstanceFromPool((string) $key))) && !$this->formatter) { + // the object is already in the instance pool + return $obj; + } + if ($con === null) { + $con = Propel::getConnection(CcTracktypesPeer::DATABASE_NAME, Propel::CONNECTION_READ); + } + $this->basePreSelect($con); + if ($this->formatter || $this->modelAlias || $this->with || $this->select + || $this->selectColumns || $this->asColumns || $this->selectModifiers + || $this->map || $this->having || $this->joins) { + return $this->findPkComplex($key, $con); + } else { + return $this->findPkSimple($key, $con); + } + } + + /** + * Alias of findPk to use instance pooling + * + * @param mixed $key Primary key to use for the query + * @param PropelPDO $con A connection object + * + * @return CcTracktypes A model object, or null if the key is not found + * @throws PropelException + */ + public function findOneByDbId($key, $con = null) + { + return $this->findPk($key, $con); + } + + /** + * Find object by primary key using raw SQL to go fast. + * Bypass doSelect() and the object formatter by using generated code. + * + * @param mixed $key Primary key to use for the query + * @param PropelPDO $con A connection object + * + * @return CcTracktypes A model object, or null if the key is not found + * @throws PropelException + */ + protected function findPkSimple($key, $con) + { + $sql = 'SELECT "id", "code", "visibility", "type_name", "description" FROM "cc_track_types" WHERE "id" = :p0'; + try { + $stmt = $con->prepare($sql); + $stmt->bindValue(':p0', $key, PDO::PARAM_INT); + $stmt->execute(); + } catch (Exception $e) { + Propel::log($e->getMessage(), Propel::LOG_ERR); + throw new PropelException(sprintf('Unable to execute SELECT statement [%s]', $sql), $e); + } + $obj = null; + if ($row = $stmt->fetch(PDO::FETCH_NUM)) { + $obj = new CcTracktypes(); + $obj->hydrate($row); + CcTracktypesPeer::addInstanceToPool($obj, (string) $key); + } + $stmt->closeCursor(); + + return $obj; + } + + /** + * Find object by primary key. + * + * @param mixed $key Primary key to use for the query + * @param PropelPDO $con A connection object + * + * @return CcTracktypes|CcTracktypes[]|mixed the result, formatted by the current formatter + */ + protected function findPkComplex($key, $con) + { + // As the query uses a PK condition, no limit(1) is necessary. + $criteria = $this->isKeepQuery() ? clone $this : $this; + $stmt = $criteria + ->filterByPrimaryKey($key) + ->doSelect($con); + + return $criteria->getFormatter()->init($criteria)->formatOne($stmt); + } + + /** + * Find objects by primary key + * + * $objs = $c->findPks(array(12, 56, 832), $con); + * + * @param array $keys Primary keys to use for the query + * @param PropelPDO $con an optional connection object + * + * @return PropelObjectCollection|CcTracktypes[]|mixed the list of results, formatted by the current formatter + */ + public function findPks($keys, $con = null) + { + if ($con === null) { + $con = Propel::getConnection($this->getDbName(), Propel::CONNECTION_READ); + } + $this->basePreSelect($con); + $criteria = $this->isKeepQuery() ? clone $this : $this; + $stmt = $criteria + ->filterByPrimaryKeys($keys) + ->doSelect($con); + + return $criteria->getFormatter()->init($criteria)->format($stmt); + } + + /** + * Filter the query by primary key + * + * @param mixed $key Primary key to use for the query + * + * @return CcTracktypesQuery The current query, for fluid interface + */ + public function filterByPrimaryKey($key) + { + + return $this->addUsingAlias(CcTracktypesPeer::ID, $key, Criteria::EQUAL); + } + + /** + * Filter the query by a list of primary keys + * + * @param array $keys The list of primary key to use for the query + * + * @return CcTracktypesQuery The current query, for fluid interface + */ + public function filterByPrimaryKeys($keys) + { + + return $this->addUsingAlias(CcTracktypesPeer::ID, $keys, Criteria::IN); + } + + /** + * Filter the query on the id column + * + * Example usage: + * + * $query->filterByDbId(1234); // WHERE id = 1234 + * $query->filterByDbId(array(12, 34)); // WHERE id IN (12, 34) + * $query->filterByDbId(array('min' => 12)); // WHERE id >= 12 + * $query->filterByDbId(array('max' => 12)); // WHERE id <= 12 + * + * + * @param mixed $dbId The value to use as filter. + * Use scalar values for equality. + * Use array values for in_array() equivalent. + * Use associative array('min' => $minValue, 'max' => $maxValue) for intervals. + * @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL + * + * @return CcTracktypesQuery The current query, for fluid interface + */ + public function filterByDbId($dbId = null, $comparison = null) + { + if (is_array($dbId)) { + $useMinMax = false; + if (isset($dbId['min'])) { + $this->addUsingAlias(CcTracktypesPeer::ID, $dbId['min'], Criteria::GREATER_EQUAL); + $useMinMax = true; + } + if (isset($dbId['max'])) { + $this->addUsingAlias(CcTracktypesPeer::ID, $dbId['max'], Criteria::LESS_EQUAL); + $useMinMax = true; + } + if ($useMinMax) { + return $this; + } + if (null === $comparison) { + $comparison = Criteria::IN; + } + } + + return $this->addUsingAlias(CcTracktypesPeer::ID, $dbId, $comparison); + } + + /** + * Filter the query on the code column + * + * Example usage: + * + * $query->filterByDbCode('fooValue'); // WHERE code = 'fooValue' + * $query->filterByDbCode('%fooValue%'); // WHERE code LIKE '%fooValue%' + * + * + * @param string $dbCode The value to use as filter. + * Accepts wildcards (* and % trigger a LIKE) + * @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL + * + * @return CcTracktypesQuery The current query, for fluid interface + */ + public function filterByDbCode($dbCode = null, $comparison = null) + { + if (null === $comparison) { + if (is_array($dbCode)) { + $comparison = Criteria::IN; + } elseif (preg_match('/[\%\*]/', $dbCode)) { + $dbCode = str_replace('*', '%', $dbCode); + $comparison = Criteria::LIKE; + } + } + + return $this->addUsingAlias(CcTracktypesPeer::CODE, $dbCode, $comparison); + } + + /** + * Filter the query on the visibility column + * + * Example usage: + * + * $query->filterByDbVisibility('fooValue'); // WHERE visibility = 'fooValue' + * $query->filterByDbVisibility('%fooValue%'); // WHERE visibility LIKE '%fooValue%' + * + * + * @param string $dbVisibility The value to use as filter. + * Accepts wildcards (* and % trigger a LIKE) + * @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL + * + * @return CcTracktypesQuery The current query, for fluid interface + */ + public function filterByDbVisibility($dbVisibility = null, $comparison = null) + { + if (null === $comparison) { + if (is_array($dbVisibility)) { + $comparison = Criteria::IN; + } elseif (preg_match('/[\%\*]/', $dbVisibility)) { + $dbVisibility = str_replace('*', '%', $dbVisibility); + $comparison = Criteria::LIKE; + } + } + + return $this->addUsingAlias(CcTracktypesPeer::VISIBILITY, $dbVisibility, $comparison); + } + + /** + * Filter the query on the first_name column + * + * Example usage: + * + * $query->filterByDbTypeName('fooValue'); // WHERE type_name = 'fooValue' + * $query->filterByDbTypeName('%fooValue%'); // WHERE type_name LIKE '%fooValue%' + * + * + * @param string $dbFirstName The value to use as filter. + * Accepts wildcards (* and % trigger a LIKE) + * @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL + * + * @return CcTracktypesQuery The current query, for fluid interface + */ + public function filterByDbFirstName($dbFirstName = null, $comparison = null) + { + if (null === $comparison) { + if (is_array($dbFirstName)) { + $comparison = Criteria::IN; + } elseif (preg_match('/[\%\*]/', $dbFirstName)) { + $dbFirstName = str_replace('*', '%', $dbFirstName); + $comparison = Criteria::LIKE; + } + } + + return $this->addUsingAlias(CcTracktypesPeer::FIRST_NAME, $dbFirstName, $comparison); + } + + /** + * Filter the query on the last_name column + * + * Example usage: + * + * $query->filterByDbLastName('fooValue'); // WHERE last_name = 'fooValue' + * $query->filterByDbLastName('%fooValue%'); // WHERE last_name LIKE '%fooValue%' + * + * + * @param string $dbLastName The value to use as filter. + * Accepts wildcards (* and % trigger a LIKE) + * @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL + * + * @return CcTracktypesQuery The current query, for fluid interface + */ + public function filterByDbLastName($dbLastName = null, $comparison = null) + { + if (null === $comparison) { + if (is_array($dbLastName)) { + $comparison = Criteria::IN; + } elseif (preg_match('/[\%\*]/', $dbLastName)) { + $dbLastName = str_replace('*', '%', $dbLastName); + $comparison = Criteria::LIKE; + } + } + + return $this->addUsingAlias(CcTracktypesPeer::LAST_NAME, $dbLastName, $comparison); + } + + /** + * Exclude object from result + * + * @param CcTracktypes $ccTracktypes Object to remove from the list of results + * + * @return CcTracktypesQuery The current query, for fluid interface + */ + public function prune($ccTracktypes = null) + { + if ($ccTracktypes) { + $this->addUsingAlias(CcTracktypesPeer::ID, $ccTracktypes->getDbId(), Criteria::NOT_EQUAL); + } + + return $this; + } + +} diff --git a/airtime_mvc/application/services/HistoryService.php b/airtime_mvc/application/services/HistoryService.php index 4ac58e2ed..e85dc4ab7 100644 --- a/airtime_mvc/application/services/HistoryService.php +++ b/airtime_mvc/application/services/HistoryService.php @@ -516,41 +516,41 @@ class Application_Service_HistoryService return $filteredShows; } - + public function insertWebstreamMetadata($schedId, $startDT, $data) { - + $this->con->beginTransaction(); - + try { - + $item = CcScheduleQuery::create()->findPK($schedId, $this->con); - + //TODO figure out how to combine these all into 1 query. $showInstance = $item->getCcShowInstances($this->con); $show = $showInstance->getCcShow($this->con); - + $webstream = $item->getCcWebstream($this->con); - + $metadata = array(); $metadata["showname"] = $show->getDbName(); $metadata[MDATA_KEY_TITLE] = $data->title; $metadata[MDATA_KEY_CREATOR] = $webstream->getDbName(); - + $history = new CcPlayoutHistory(); $history->setDbStarts($startDT); $history->setDbEnds(null); $history->setDbInstanceId($item->getDbInstanceId()); - + foreach ($metadata as $key => $val) { $meta = new CcPlayoutHistoryMetaData(); $meta->setDbKey($key); $meta->setDbValue($val); - + $history->addCcPlayoutHistoryMetaData($meta); } - + $history->save($this->con); - + $this->con->commit(); } catch (Exception $e) { @@ -586,36 +586,36 @@ class Application_Service_HistoryService $itemEnd = $item->getDbEnds(null); $recordStart = $item->getDbStarts(null); $recordEnd = ($instanceEnd < $itemEnd) ? $instanceEnd : $itemEnd; - + //first check if this is a duplicate // (caused by restarting liquidsoap) - + $prevRecord = CcPlayoutHistoryQuery::create() ->filterByDbStarts($recordStart) ->filterByDbEnds($recordEnd) ->filterByDbFileId($fileId) ->findOne($this->con); - + if (empty($prevRecord)) { - + $history = new CcPlayoutHistory(); $history->setDbFileId($fileId); $history->setDbStarts($recordStart); $history->setDbEnds($recordEnd); $history->setDbInstanceId($item->getDbInstanceId()); - + foreach ($metadata as $key => $val) { $meta = new CcPlayoutHistoryMetaData(); $meta->setDbKey($key); $meta->setDbValue($val); - + $history->addCcPlayoutHistoryMetaData($meta); } - + $history->save($this->con); $this->con->commit(); - } - } + } + } } catch (Exception $e) { $this->con->rollback(); @@ -1126,6 +1126,7 @@ class Application_Service_HistoryService array("name"=> MDATA_KEY_TRACKNUMBER, "label"=> _("Track"), "type"=> TEMPLATE_INT), array("name"=> MDATA_KEY_CONDUCTOR, "label"=> _("Conductor"), "type"=> TEMPLATE_STRING), array("name"=> MDATA_KEY_LANGUAGE, "label"=> _("Language"), "type"=> TEMPLATE_STRING), + array("name"=> MDATA_KEY_TRACK_TYPE, "label"=> _("Track Type"), "type"=> TEMPLATE_STRING), ); return $fileMD; diff --git a/airtime_mvc/application/upgrade/Upgrades.php b/airtime_mvc/application/upgrade/Upgrades.php index facc3b935..8c8742187 100644 --- a/airtime_mvc/application/upgrade/Upgrades.php +++ b/airtime_mvc/application/upgrade/Upgrades.php @@ -613,4 +613,15 @@ class AirtimeUpgrader300alpha9_1 extends AirtimeUpgrader } } +class AirtimeUpgrader300alpha9_2 extends AirtimeUpgrader +{ + protected function getSupportedSchemaVersions() { + return array( + '3.0.0-alpha.9.1' + ); + } + public function getNewVersion() { + return '3.0.0-alpha.9.2'; + } +} diff --git a/airtime_mvc/application/views/scripts/library/get-file-metadata.ajax.phtml b/airtime_mvc/application/views/scripts/library/get-file-metadata.ajax.phtml index 31d873803..ed61cc420 100644 --- a/airtime_mvc/application/views/scripts/library/get-file-metadata.ajax.phtml +++ b/airtime_mvc/application/views/scripts/library/get-file-metadata.ajax.phtml @@ -26,6 +26,7 @@ foreach ($this->md as $key => &$value) { md["MDATA_KEY_ARTWORK"]);?> md["MDATA_KEY_ARTWORK_DATA"]);?> md["MDATA_KEY_LANGUAGE"]);?> +md["MDATA_KEY_TRACK_TYPE"]);?> md["MDATA_KEY_FILEPATH"]);?> diff --git a/airtime_mvc/application/views/scripts/plupload/index.phtml b/airtime_mvc/application/views/scripts/plupload/index.phtml index bdf6a485e..051c6158f 100644 --- a/airtime_mvc/application/views/scripts/plupload/index.phtml +++ b/airtime_mvc/application/views/scripts/plupload/index.phtml @@ -13,9 +13,60 @@ $disk = $partitions[0]; $used = $disk->totalSpace-$disk->totalFreeSpace; $total = $disk->totalSpace; + $tracktypes = Application_Model_Tracktype::getTracktypes(); + if(count($tracktypes) == 0) { + $hasTracktypes = "disabled"; + $showTracktypesDropdown = false; + } else { + $hasTracktypes = ""; + $showTracktypesDropdown = true; + } ?> + +
-

Upload Audio Files

+ +
+
+ + + +
+
+ + $tt) { + if ($ttsaved == $tt['code']) { + $ttTitle = $tt['type_name']; + } + } + } + ?> +

> +

form->getElement('csrf') ?>
@@ -53,7 +104,7 @@ - +

+ +

+
+
+ +
+ +
+ +
+ + + + + + + + + + + +
 
+
+ +
+ successMessage ?> +
+ form ?> +
+
+ diff --git a/airtime_mvc/application/views/scripts/tracktype/get-tracktype-data-table-info.phtml b/airtime_mvc/application/views/scripts/tracktype/get-tracktype-data-table-info.phtml new file mode 100644 index 000000000..e69de29bb diff --git a/airtime_mvc/application/views/scripts/tracktype/get-tracktype-data.phtml b/airtime_mvc/application/views/scripts/tracktype/get-tracktype-data.phtml new file mode 100644 index 000000000..f9696f033 --- /dev/null +++ b/airtime_mvc/application/views/scripts/tracktype/get-tracktype-data.phtml @@ -0,0 +1,3 @@ +entries; +?> diff --git a/airtime_mvc/application/views/scripts/tracktype/index.phtml b/airtime_mvc/application/views/scripts/tracktype/index.phtml new file mode 100644 index 000000000..e69de29bb diff --git a/airtime_mvc/application/views/scripts/tracktype/remove-tracktype.phtml b/airtime_mvc/application/views/scripts/tracktype/remove-tracktype.phtml new file mode 100644 index 000000000..c1d521bb3 --- /dev/null +++ b/airtime_mvc/application/views/scripts/tracktype/remove-tracktype.phtml @@ -0,0 +1,3 @@ +entries; +?> diff --git a/airtime_mvc/build/schema.xml b/airtime_mvc/build/schema.xml index acf54453b..311db484d 100644 --- a/airtime_mvc/build/schema.xml +++ b/airtime_mvc/build/schema.xml @@ -85,6 +85,7 @@ + @@ -101,6 +102,19 @@ + + + + + + + + + + + + +
diff --git a/airtime_mvc/build/sql/schema.sql b/airtime_mvc/build/sql/schema.sql index a148a56da..9d317a3be 100644 --- a/airtime_mvc/build/sql/schema.sql +++ b/airtime_mvc/build/sql/schema.sql @@ -97,6 +97,7 @@ CREATE TABLE "cc_files" "filesize" INTEGER DEFAULT 0 NOT NULL, "description" VARCHAR(512), "artwork" VARCHAR(512), + "track_type" VARCHAR(16), PRIMARY KEY ("id") ); @@ -104,6 +105,24 @@ CREATE INDEX "cc_files_md5_idx" ON "cc_files" ("md5"); CREATE INDEX "cc_files_name_idx" ON "cc_files" ("name"); +----------------------------------------------------------------------- +-- cc_track_types +----------------------------------------------------------------------- + +DROP TABLE IF EXISTS "cc_track_types" CASCADE; + +CREATE TABLE "cc_track_types" +( + "id" serial NOT NULL, + "code" VARCHAR(16) DEFAULT '' NOT NULL, + "type_name" VARCHAR(64) DEFAULT '' NOT NULL, + "description" VARCHAR(255) DEFAULT '' NOT NULL, + "visibility" boolean DEFAULT true NOT NULL, + PRIMARY KEY ("id"), + CONSTRAINT "cc_track_types_id_idx" UNIQUE ("id"), + CONSTRAINT "cc_track_types_code_idx" UNIQUE ("code") +); + ----------------------------------------------------------------------- -- cloud_file ----------------------------------------------------------------------- diff --git a/airtime_mvc/public/css/addmedia.css b/airtime_mvc/public/css/addmedia.css index 3d3d4d753..f8b2f02ef 100644 --- a/airtime_mvc/public/css/addmedia.css +++ b/airtime_mvc/public/css/addmedia.css @@ -640,3 +640,9 @@ table#recent_uploads_table td left: 0; right: 0; } + +#track_type_selection { + position: absolute; + right: 2px; + top: 0; +} diff --git a/airtime_mvc/public/css/media_library.css b/airtime_mvc/public/css/media_library.css index ac397dee9..fbe24b9c4 100644 --- a/airtime_mvc/public/css/media_library.css +++ b/airtime_mvc/public/css/media_library.css @@ -99,7 +99,8 @@ text-align: center; } -.library_year { +.library_year, +.library_track_type { text-align: center; } @@ -141,7 +142,46 @@ tr.lib-selected > td > div.library_actions_btn:hover { color: #eee; } -.library_import { +td.library_track_type +{ + padding: 0px !important; +} + +.library_track_type_btn { + font-weight: 600; + font-size: 13px; + white-space: nowrap; + overflow: hidden; + border: 1px solid #ccc; + border-radius: 1px; + margin: 5px 6px !important; + line-height: 13px !important; + padding: 5px 6px !important; +} + +.library_track_type_btn:hover { + background: #555; +} +tr.lib-selected > td > div.library_track_type_btn { + border-color: #000; +} +tr.lib-selected > td > div.library_track_type_btn:hover { + background: #000; + color: #eee; +} +.track-type-tip{ + overflow: visible; + overflow-y: visible; + margin-left: -30px; + margin-top: -61px; + z-index: 10000 !important; +} + +.track-type-tip.qtip-pos-tl{ + color: #000; +} + +.library_import { padding-bottom: 5px; } @@ -244,7 +284,7 @@ tr.lib-selected > td > div.library_actions_btn:hover { vertical-align: middle; margin: 0 !important; line-height: 16px; - } + } .sb-timerange input { -webkit-box-sizing: border-box; @@ -256,4 +296,4 @@ tr.lib-selected > td > div.library_actions_btn:hover { height: 26px; outline: none; vertical-align: middle !important; - } \ No newline at end of file + } \ No newline at end of file diff --git a/airtime_mvc/public/css/styles.css b/airtime_mvc/public/css/styles.css index 087bb5ba9..104d74dea 100644 --- a/airtime_mvc/public/css/styles.css +++ b/airtime_mvc/public/css/styles.css @@ -1725,11 +1725,13 @@ h2#scheduled_playlist_name span { padding: 4px 0 8px; } -.user-form-label { +.user-form-label, +.tracktype-form-label { width: 30% !important; } -.user-form-element { +.user-form-element, +.tracktype-form-element { width: 65% !important; } @@ -1818,27 +1820,32 @@ button, input { margin-bottom:0; } -#user_details +#user_details, +#tracktype_details { visibility: hidden; } -.user-management { +.user-management, +.tracktype-management { min-width: 910px; min-height: 410px; } -.user-management-expanded { +.user-management-expanded, +.tracktype-management-expanded { width: 910px; } -.user-data { +.user-data, +.tracktype-data { float:right; width:420px; margin-left:10px; } -.user-list-wrapper { +.user-list-wrapper, +.tracktype-list-wrapper { float:left; width:480px; position: absolute; @@ -1846,59 +1853,72 @@ button, input { /*margin-right:10px;*/ } -#users_datatable { +#users_datatable, +#tracktypes_datatable { border: 0; } -#users_datatable_wrapper td { +#users_datatable_wrapper td, +#tracktypes_datatable_wrapper td { vertical-align: middle; } -.user-management div.user-list-wrapper .ui-widget-header:first-child { +.user-management div.user-list-wrapper .ui-widget-header:first-child, +.tracktype-management div.tracktype-list-wrapper .ui-widget-header:first-child { background: none repeat scroll 0 0 transparent; border-width: 0; color: #444444; font-weight: bold; } -.user-list-wrapper .ui-widget-header:first-child .dataTables_filter { +.user-list-wrapper .ui-widget-header:first-child .dataTables_filter, +.tracktype-list-wrapper .ui-widget-header:first-child .dataTables_filter { margin:0; } -.user-management h2 { +.user-management h2, +.tracktype-management h2 { font-size: 1.7em; padding-bottom: 12px; } -.user-management .dataTables_filter input { +.user-management .dataTables_filter input, +.tracktype-management .dataTables_filter input { width: 100%; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; margin-bottom:8px; } -.user-data.simple-formblock dd { +.user-data.simple-formblock dd, +.tracktype-data.simple-formblock dd { width: 73%; } -.user-data fieldset { +.user-data fieldset, +.tracktype-data fieldset { margin-bottom:8px; } -.user-data fieldset:last-child { +.user-data fieldset:last-child, +.tracktype-data fieldset:last-child { margin-bottom:0; } -.user-list-wrapper .button-holder { +.user-list-wrapper .button-holder, +.tracktype-list-wrapper .button-holder { padding:0; height:37px; } -.user-list-wrapper .button-holder .ui-button { +.user-list-wrapper .button-holder .ui-button, +.tracktype-list-wrapper .button-holder .ui-button { margin:0; } -.ui-widget-content .user-list-wrapper .ui-icon.ui-icon-closethick { +.ui-widget-content .user-list-wrapper .ui-icon.ui-icon-closethick, +.ui-widget-content .tracktype-list-wrapper .ui-icon.ui-icon-closethick { background-image:url(redmond/images/ui-icons_666666_256x240.png); cursor:pointer; float:right; margin-right:5px; } -.ui-widget-content .user-list-wrapper .ui-icon.ui-icon-closethick:hover { +.ui-widget-content .user-list-wrapper .ui-icon.ui-icon-closethick:hover, +.ui-widget-content .tracktype-list-wrapper .ui-icon.ui-icon-closethick:hover { background-image:url(redmond/images/ui-icons_ff5d1a_256x240.png); } @@ -3929,12 +3949,14 @@ li .ui-state-hover { flex: 1; } -#user_list_inner_wrapper { +#user_list_inner_wrapper, +#tracktype_list_inner_wrapper { height: 272px; overflow: auto; } -#users_datatable_wrapper { +#users_datatable_wrapper, +#tracktypes_datatable_wrapper { display: -webkit-box; display: -moz-box; display: -ms-flexbox; @@ -3944,11 +3966,13 @@ li .ui-state-hover { flex-flow: column; } -#users_datatable { +#users_datatable, +#tracktypes_datatable { overflow: auto; } -#users_datatable tbody { +#users_datatable tbody, +#tracktypes_datatable tbody { vertical-align: top !important; } diff --git a/airtime_mvc/public/css/tracktypes.css b/airtime_mvc/public/css/tracktypes.css new file mode 100644 index 000000000..e21feea85 --- /dev/null +++ b/airtime_mvc/public/css/tracktypes.css @@ -0,0 +1,9 @@ +@charset "utf-8"; + +.dataTables_filter input { + margin-left: 0; +} + +.dataTables_processing { + top: 20px; +} \ No newline at end of file diff --git a/airtime_mvc/public/js/airtime/library/library.js b/airtime_mvc/public/js/airtime/library/library.js index d4a28373d..01f12e8ad 100644 --- a/airtime_mvc/public/js/airtime/library/library.js +++ b/airtime_mvc/public/js/airtime/library/library.js @@ -54,7 +54,8 @@ var AIRTIME = (function(AIRTIME) { "owner_id" : "s", "info_url" : "s", "replay_gain" : "n", - "artwork" : "s" + "artwork" : "s", + "track_type" : "tt" }; if (AIRTIME.library === undefined) { @@ -591,6 +592,7 @@ var AIRTIME = (function(AIRTIME) { /* Cue Out */ { "sTitle" : $.i18n._("Cue Out") , "mDataProp" : "cueout" , "bVisible" : false , "sClass" : "library_length" , "sWidth" : "80px" }, /* Description */ { "sTitle" : $.i18n._("Description") , "mDataProp" : "description" , "bVisible" : false , "sClass" : "library_description" , "sWidth" : "150px" }, /* Encoded */ { "sTitle" : $.i18n._("Encoded By") , "mDataProp" : "encoded_by" , "bVisible" : false , "sClass" : "library_encoded" , "sWidth" : "150px" }, + /* Track Type */ { "sTitle" : $.i18n._("Type") , "mDataProp" : "track_type" , "sClass" : "library_track_type" , "sWidth" : "60px" }, /* Genre */ { "sTitle" : $.i18n._("Genre") , "mDataProp" : "genre" , "sClass" : "library_genre" , "sWidth" : "100px" }, /* ISRC Number */ { "sTitle" : $.i18n._("ISRC") , "mDataProp" : "isrc_number" , "bVisible" : false , "sClass" : "library_isrc" , "sWidth" : "150px" }, /* Label */ { "sTitle" : $.i18n._("Label") , "mDataProp" : "label" , "bVisible" : false , "sClass" : "library_label" , "sWidth" : "125px" }, @@ -615,7 +617,7 @@ var AIRTIME = (function(AIRTIME) { ); } - var colExclude = onDashboard ? [0, 1, 2, 33] : [0, 1, 2]; + var colExclude = onDashboard ? [0, 1, 2, 3, 34] : [0, 1, 2]; /* ############################################ DATATABLES @@ -764,6 +766,60 @@ var AIRTIME = (function(AIRTIME) { .on('click', function (e) { $(this).contextMenu({x: $(e.target).offset().left, y: $(e.target).offset().top}) }).html("
...
"); + + $(nRow).find('td.library_track_type') + .on('click', function (e) { + + $.getJSON( + baseUrl + "api/track-types", + function(json){ + var type_enabled = false; + $.each(json, function(key, value) { + + if(value['code'] == aData.track_type){ + $("#au_"+aData.id+" td.library_track_type div.library_track_type_btn").qtip({ + overwrite: false, + content: { + text: value['type_name'] + }, + style: { + classes: 'track-type-tip', + widget: true, + def: false, + position: { + target: $("#au_"+aData.id+" td.library_track_type"), // my target + my: 'bottom center', + at: 'top center', + adjust: { + x: 50 + } + }, + tip: { + height: 5, + width: 12, + corner: 'bottom left', + mimic: 'left' + } + }, + show: { + ready: true + }, + hide: { + delay: 200, + fixed: true, + } + }); + + type_enabled = true; + } + }); + + if(type_enabled == false){ + alert("This type is disabled."); + } + }); + + }).html("
"+aData.track_type+"
"); } // add audio preview image/button @@ -852,9 +908,12 @@ var AIRTIME = (function(AIRTIME) { var inputClass = 'filter_column filter_number_text'; var labelStyle = "style='margin-right:35px;'"; - if (libraryColumnTypes[ele.mDataProp] != "s") { + if (libraryColumnTypes[ele.mDataProp] == "n" || libraryColumnTypes[ele.mDataProp] == "i") { inputClass = 'filterColumn filter_number_range'; labelStyle = ""; + } else if (libraryColumnTypes[ele.mDataProp] == "tt") { + inputClass = 'filterColumn filter_track_type_select'; + labelStyle = ""; } if (ele.bVisible) { @@ -873,6 +932,8 @@ var AIRTIME = (function(AIRTIME) { if (libraryColumnTypes[ele.mDataProp] == "s") { var obj = { sSelector: "#"+ele.mDataProp } + } else if (libraryColumnTypes[ele.mDataProp] == "tt") { + var obj = { sSelector: "#"+ele.mDataProp, type: "select" } } else { var obj = { sSelector: "#"+ele.mDataProp, type: "number-range" } } @@ -1597,9 +1658,29 @@ var validationTypes = { "track_number" : "i", "info_url" : "s", "artwork" : "s", + "track_type" : "s", "year" : "i" }; +function airtimeScheduleJsonpError(jqXHR, textStatus, errorThrown){ +} + +function tracktypesJson() { + $(function() { + jQuery.getJSON( + baseUrl + "api/track-types", + function(json){ + var ttSelect = $('#track_type .filter_select .select_filter'); + $.each(json, function(key, value) { + var option = $("