CC-1683 Make sure all metadata fields are supported by the new "files" table

Added all the missing columns.

Fixed minor bug in the install where it gave you an error if the Postgres
scripting language was already installed.
This commit is contained in:
paul.baranowski 2010-09-27 17:05:26 -04:00
parent 32368e794c
commit dd114a5fec
8 changed files with 196 additions and 90 deletions

View File

@ -51,6 +51,70 @@ ALTER TABLE cc_files
ADD COLUMN channels integer;
ALTER TABLE cc_files
ADD COLUMN url character varying(1024);
ALTER TABLE cc_files
ADD COLUMN bpm character varying(8);
ALTER TABLE cc_files
ADD COLUMN rating character varying(8);
ALTER TABLE cc_files
ADD COLUMN encoded_by character varying(255);
ALTER TABLE cc_files
ADD COLUMN disc_number character varying(8);
ALTER TABLE cc_files
ADD COLUMN mood character varying(64);
ALTER TABLE cc_files
ADD COLUMN label character varying(512);
ALTER TABLE cc_files
ADD COLUMN composer character varying(512);
ALTER TABLE cc_files
ADD COLUMN encoder character varying(64);
ALTER TABLE cc_files
ADD COLUMN checksum character varying(256);
ALTER TABLE cc_files
ADD COLUMN lyrics text;
ALTER TABLE cc_files
ADD COLUMN orchestra character varying(512);
ALTER TABLE cc_files
ADD COLUMN conductor character varying(512);
ALTER TABLE cc_files
ADD COLUMN lyricist character varying(512);
ALTER TABLE cc_files
ADD COLUMN original_lyricist character varying(512);
ALTER TABLE cc_files
ADD COLUMN radio_station_name character varying(512);
ALTER TABLE cc_files
ADD COLUMN info_url character varying(512);
ALTER TABLE cc_files
ADD COLUMN artist_url character varying(512);
ALTER TABLE cc_files
ADD COLUMN audio_source_url character varying(512);
ALTER TABLE cc_files
ADD COLUMN radio_station_url character varying(512);
ALTER TABLE cc_files
ADD COLUMN buy_this_url character varying(512);
ALTER TABLE cc_files
ADD COLUMN isrc_number character varying(512);
ALTER TABLE cc_files
ADD COLUMN catalog_number character varying(512);
ALTER TABLE cc_files
ADD COLUMN original_artist character varying(512);
ALTER TABLE cc_files
ADD COLUMN copyright character varying(512);
ALTER TABLE cc_files
ADD COLUMN report_datetime character varying(32);
ALTER TABLE cc_files
ADD COLUMN report_location character varying(512);
ALTER TABLE cc_files
ADD COLUMN report_organization character varying(512);
ALTER TABLE cc_files
ADD COLUMN subject character varying(512);
ALTER TABLE cc_files
ADD COLUMN contributor character varying(512);
ALTER TABLE cc_files
ADD COLUMN language character varying(512);
ALTER TABLE cc_schedule RENAME playlist TO playlist_id;
ALTER TABLE cc_schedule ALTER playlist_id TYPE integer;

View File

@ -36,7 +36,7 @@ $relations = array(
'ls:artisturl' => 'Artist web page',
'ls:audiosourceurl' => 'Audio source web page',
'ls:radiostationurl' => 'Radio station web page',
'ls:buycdurl' => 'Buy CD web page',
'ls:buycdurl' => '"Buy This Music" page',
'ls:isrcnumber' => 'ISRC number',
'ls:catalognumber' => 'Catalog number',
'ls:originalartist' => 'Original artist',

View File

@ -500,7 +500,7 @@ class uiBase
$res = $CC_DBC->query("SELECT to_hex($gunid)");
$row = $res->fetchRow();
return $row['to_hex'];
} // fn toHex
}
public function toInt8($gunid)
@ -509,7 +509,7 @@ class uiBase
$res = $CC_DBC->query("SELECT x'$gunid'::bigint");
$row = $res->fetchRow();
return $row['int8'];
} // fn toInt8
}
/**
@ -524,10 +524,10 @@ class uiBase
}
$args = func_get_args();
$_SESSION['alertMsg'] .= call_user_func_array('tra', $args).'\n';
} // fn _retMsg
}
public function getPLMetaInfo($id)
public function getPLMetaInfo($id)
{
$data = array('id' => $id,
'title' => $this->gb->getPLMetadataValue($id, UI_MDATA_KEY_TITLE),
@ -535,9 +535,9 @@ class uiBase
'duration' => $this->gb->getPLMetadataValue($id, UI_MDATA_KEY_DURATION),
'type' => 'playlist',
);
return ($data);
return ($data);
}
public function getMetaInfo($id)
{
$type = strtolower(GreenBox::getFileType($id));
@ -553,7 +553,7 @@ class uiBase
'sampleRate' => $type == 'audioclip' ? $this->getMetadataValue($id, UI_MDATA_KEY_SAMPLERATE) : NULL,
);
return ($data);
} // fn getMetaInfo
}
public function getMetadataValue($id, $key, $langid=NULL, $deflangid=UI_DEFAULT_LANGID)
@ -566,37 +566,16 @@ class uiBase
}
return $this->gb->getMetadataValue($id, $key, $this->sessid, $langid, $deflangid);
} // fn getMetadataValue
}
public function setMetadataValue($id, $key, $value, $langid=NULL)
public function setMetadataValue($id, $key, $value)
{
if (!$langid) {
$langid = UI_DEFAULT_LANGID;
}
// if (ini_get('magic_quotes_gpc')) {
// $value = str_replace("\'", "'", $value);
// }
if ($this->gb->setMetadataValue($id, $key, $this->sessid, $value, $langid)) {
if ($this->gb->setMetadataValue($id, $key, $this->sessid, $value)) {
return TRUE;
}
return FALSE;
} // fn setMetadataValue
/**
* @param unknown_type $id
* @return string/FALSE
*/
// private function _getFileTitle($id)
// {
// if (is_array($arr = GreenBox::GetPath($id))) {
// $file = array_pop($arr);
// return $file['name'];
// }
// return FALSE;
// } // fn _getFileTitle
}
public static function formElementEncode($str)
@ -604,7 +583,7 @@ class uiBase
$str = str_replace(':', '__', $str);
#$str = str_replace('.', '_', $str);
return $str;
} // fn formElementEncode
}
public static function formElementDecode($str)
@ -612,7 +591,7 @@ class uiBase
$str = str_replace('__', ':', $str);
#$str = str_replace('_', '.', $str);
return $str;
} // fn formElementDecode
}
} // class uiBase
?>

View File

@ -472,23 +472,26 @@ class uiHandler extends uiBase {
foreach ($mask['pages'] as $key => $val) {
foreach ($mask['pages'][$key] as $k => $v) {
$formdata[$key.'___'.uiBase::formElementEncode($v['element'])] ? $mData[uiBase::formElementDecode($v['element'])] = $formdata[$key.'___'.uiBase::formElementEncode($v['element'])] : NULL;
$element = uiBase::formElementEncode($v['element']);
if ($formdata[$key.'___'.$element])
$mData[uiBase::formElementDecode($v['element'])] = $formdata[$key.'___'.$element];
}
}
$_SESSION["debug"] = $mData;
if (!count($mData)) {
return;
}
foreach ($mData as $key => $val) {
$r = $this->setMetadataValue($id, $key, $val, $curr_langid);
$r = $this->setMetadataValue($id, $key, $val);
if (PEAR::isError($r)) {
$this->_retMsg('Unable to set "$1" to value "$2".', $key, $val);
}
}
$this->_retMsg('Audioclip metadata has been updated.');
} // fn editMetadata
}
/**

View File

@ -72,7 +72,37 @@ $g_metadata_xml_to_db_mapping = array(
"ls:filename" => "name",
"ls:year" => "year",
"ls:url" => "url",
"ls:track_num" => "track_number");
"ls:track_num" => "track_number",
"ls:mood" => "mood",
"ls:bpm" => "bpm",
"ls:disc_num" => "disc_number",
"ls:rating" => "rating",
"ls:encoded_by" => "encoded_by",
"dc:publisher" => "label",
"ls:composer" => "composer",
"ls:encoder" => "encoder",
"ls:crc" => "checksum",
"ls:lyrics" => "lyrics",
"ls:orchestra" => "orchestra",
"ls:conductor" => "conductor",
"ls:lyricist" => "lyricist",
"ls:originallyricist" => "original_lyricist",
"ls:radiostationname" => "radio_station_name",
"ls:audiofileinfourl" => "info_url",
"ls:artisturl" => "artist_url",
"ls:audiosourceurl" => "audio_source_url",
"ls:radiostationurl" => "radio_station_url",
"ls:buycdurl" => "buy_this_url",
"ls:isrcnumber" => "isrc_number",
"ls:catalognumber" => "catalog_number",
"ls:originalartist" => "original_artist",
"dc:rights" => "copyright",
"dcterms:temporal" => "report_datetime",
"dcterms:spatial" => "report_location",
"dcterms:entity" => "report_organization",
"dc:subject" => "subject",
"dc:contributor" => "contributor",
"dc:language" => "language");
/**
* Core of Campcaster file storage module

View File

@ -87,8 +87,7 @@ class GreenBox extends BasicStor {
return $storedFile;
}
$oid = $storedFile->getId();
$r = $this->bsSetMetadataValue(
$oid, 'ls:url', $url, NULL, NULL, 'metadata');
$r = $this->bsSetMetadataValue($oid, 'ls:url', $url);
if (PEAR::isError($r)) {
return $r;
}
@ -356,18 +355,14 @@ class GreenBox extends BasicStor {
* Session id
* @param string $value
* The value to store, if NULL then delete record
* @param string $lang
* xml:lang value for select language version
* @param int $mid
* (optional on unique elements) Metadata record id
* @return boolean
*/
public function setMetadataValue($id, $category, $sessid, $value, $lang=NULL, $mid=NULL)
public function setMetadataValue($id, $category, $sessid, $value)
{
if (($res = BasicStor::Authorize('write', $id, $sessid)) !== TRUE) {
return $res;
}
return $this->bsSetMetadataValue($id, $category, $value /*, $lang, $mid*/);
return $this->bsSetMetadataValue($id, $category, $value);
} // fn setMetadataValue
@ -474,31 +469,31 @@ class GreenBox extends BasicStor {
{
$pl = new Playlist();
$pl = $pl->create($fname);
return $pl;
} // fn createPlaylist
public function setPLMetadataValue($id, $category, $value, $lang=NULL, $mid=NULL)
{
$pl = Playlist::Recall($id);
if($pl === FALSE)
return FALSE;
$res = $pl->setPLMetaData($category, $value, $lang);
return $res;
}
public function getPLMetadataValue($id, $category, $langId=NULL)
{
$pl = Playlist::Recall($id);
if($pl === FALSE)
return FALSE;
$res = $pl->getPLMetaData($category);
return $res;
}
@ -533,12 +528,12 @@ class GreenBox extends BasicStor {
if ($pl === FALSE) {
return FALSE;
}
$res = $pl->getContents();
if(is_null($res))
return array();
return $res;
} // fn getPlaylistArray
@ -555,10 +550,10 @@ class GreenBox extends BasicStor {
*/
public function lockPlaylistForEdit($id, $sessid) {
$pl = Playlist::Recall($id);
if($pl === FALSE)
return;
$res = $pl->lock($sessid);
}
@ -572,10 +567,10 @@ class GreenBox extends BasicStor {
*/
public function releaseLockedPlaylist($id, $sessid) {
$pl = Playlist::Recall($id);
if($pl === FALSE)
return FALSE;
$res = $pl->unlock($sessid);
return $res;
}
@ -609,9 +604,9 @@ class GreenBox extends BasicStor {
if ($pl === FALSE) {
return FALSE;
}
$res = $pl->addAudioClip($acId, $pos, $fadeIn, $fadeOut, $cliplength, $cueIn, $cueOut);
return $res;
} // fn addAudioClipToPlaylist
@ -632,12 +627,12 @@ class GreenBox extends BasicStor {
if ($pl === FALSE) {
return FALSE;
}
$res = $pl->delAudioClip($pos);
return $res;
}
}
/**
* Move audioClip to the new position in the playlist.
*
@ -658,12 +653,12 @@ class GreenBox extends BasicStor {
if ($pl === FALSE) {
return FALSE;
}
$res = $pl->moveAudioClip($oldPos, $newPos);
return $res;
}
}
/**
* Change fadeInfo values
*
@ -681,12 +676,12 @@ class GreenBox extends BasicStor {
if ($pl === FALSE) {
return FALSE;
}
$res = $pl->changeFadeInfo($pos, $fadeIn, $fadeOut);
return $res;
}
}
/**
* Change cueIn/cueOut values for playlist element
*
@ -707,12 +702,12 @@ class GreenBox extends BasicStor {
if ($pl === FALSE) {
return FALSE;
}
$res = $pl->changeClipLength($pos, $cueIn, $cueOut);
return $res;
}
}
/**
* Delete a Playlist metafile.
*
@ -725,8 +720,8 @@ class GreenBox extends BasicStor {
public function deletePlaylist($id)
{
return Playlist::Delete($id);
}
}
/**
* Find info about clip at specified offset in playlist.
@ -885,7 +880,7 @@ class GreenBox extends BasicStor {
if ($pl === FALSE) {
return FALSE;
}
return TRUE;
} // fn existsPlaylist
@ -908,12 +903,12 @@ class GreenBox extends BasicStor {
if ($pl === FALSE) {
return FALSE;
}
$res = $pl->isEdited();
if($res !== FALSE)
return $res;
return TRUE;
} // fn playlistIsAvailable

View File

@ -195,8 +195,7 @@ class LocStor extends BasicStor {
return $storedFile;
}
$oid = $storedFile->getId();
$r = $this-> bsSetMetadataValue(
$oid, 'ls:url', $url /*, NULL, NULL, 'metadata'*/);
$r = $this-> bsSetMetadataValue($oid, 'ls:url', $url);
if (PEAR::isError($r)) {
return $r;
}

View File

@ -25,8 +25,14 @@ require_once(dirname(__FILE__).'/../GreenBox.php');
require_once(dirname(__FILE__)."/installInit.php");
campcaster_db_connect(true);
$sql = "create language 'plpgsql'";
camp_install_query($sql);
$langIsInstalled = $CC_DBC->GetOne('select count(*) FROM pg_language WHERE lanname = \'plpgsql\'');
if ($langIsInstalled == '0') {
echo " * Installing Postgres scripting language\n";
$sql = "CREATE LANGUAGE 'plpgsql'";
camp_install_query($sql);
} else {
echo " * Postgres scripting language already installed\n";
}
//------------------------------------------------------------------------------
// Install database tables
@ -179,6 +185,36 @@ if (!camp_db_table_exists($CC_CONFIG['filesTable'])) {
track_number integer,
channels integer,
url character varying(1024),
bpm character varying(8),
rating character varying(8),
encoded_by character varying(255),
disc_number character varying(8),
mood character varying(64),
label character varying(512),
composer character varying(512),
encoder character varying(64),
checksum character varying(256),
lyrics text,
orchestra character varying(512),
conductor character varying(512),
lyricist character varying(512),
original_lyricist character varying(512),
radio_station_name character varying(512),
info_url character varying(512),
artist_url character varying(512),
audio_source_url character varying(512),
radio_station_url character varying(512),
buy_this_url character varying(512),
isrc_number character varying(512),
catalog_number character varying(512),
original_artist character varying(512),
copyright character varying(512),
report_datetime character varying(32),
report_location character varying(512),
report_organization character varying(512),
subject character varying(512),
contributor character varying(512),
\"language\" character varying(512),
CONSTRAINT cc_files_pkey PRIMARY KEY (id),
CONSTRAINT cc_files_editedby_fkey FOREIGN KEY (editedby)
REFERENCES cc_subjs (id) MATCH SIMPLE