| 2 |
// $Id: audio.install,v 1.18 2007/11/02 05:56:00 drewish Exp $ |
// $Id: audio.install,v 1.18 2007/11/02 05:56:00 drewish Exp $ |
| 3 |
|
|
| 4 |
/** |
/** |
| 5 |
* Install the initial schema. |
* Implementation of hook_install(). |
| 6 |
*/ |
*/ |
| 7 |
function audio_install() { |
function audio_install() { |
| 8 |
switch ($GLOBALS['db_type']) { |
drupal_install_schema('audio'); |
|
case 'mysql': |
|
|
case 'mysqli': |
|
|
db_query(" |
|
|
CREATE TABLE {audio} ( |
|
|
`vid` int(10) unsigned NOT NULL default '0', |
|
|
`nid` int(10) unsigned NOT NULL default '0', |
|
|
`title_format` varchar(128) default '', |
|
|
`play_count` int(10) unsigned NOT NULL default '0', |
|
|
`download_count` int(10) unsigned NOT NULL default '0', |
|
|
`downloadable` tinyint(1) NOT NULL default '1', |
|
|
`file_format` varchar(10) NOT NULL default '', |
|
|
`file_mime` varchar(255) NOT NULL default '', |
|
|
`file_name` varchar(255) NOT NULL default '', |
|
|
`file_path` varchar(255) NOT NULL default '', |
|
|
`file_size` int(10) unsigned NOT NULL default '0', |
|
|
`sample_rate` int(10) unsigned NOT NULL default '0', |
|
|
`channel_mode` varchar(10) NOT NULL default '', |
|
|
`bitrate` float unsigned NOT NULL default '0', |
|
|
`bitrate_mode` varchar(4) NOT NULL default '', |
|
|
`playtime` varchar(10) NOT NULL default '', |
|
|
PRIMARY KEY (`vid`) |
|
|
) /*!40100 DEFAULT CHARACTER SET utf8 */ |
|
|
"); |
|
|
db_query(" |
|
|
CREATE TABLE {audio_metadata} ( |
|
|
`vid` int(10) unsigned NOT NULL default '0', |
|
|
`tag` varchar(45) NOT NULL default '', |
|
|
`value` varchar(255) NOT NULL default '', |
|
|
`clean` varchar(255) NOT NULL default '', |
|
|
PRIMARY KEY (`vid`,`tag`,`value`), |
|
|
KEY `audio_metadata_tags` (`clean`) |
|
|
) /*!40100 DEFAULT CHARACTER SET utf8 */ |
|
|
"); |
|
|
break; |
|
|
|
|
|
case 'pgsql': |
|
|
db_query(" |
|
|
CREATE TABLE {audio} ( |
|
|
vid integer NOT NULL default '0' |
|
|
CHECK (vid >= 0), |
|
|
nid integer NOT NULL default '0' |
|
|
CHECK (nid >= 0), |
|
|
title_format varchar(128) default '', |
|
|
play_count integer NOT NULL default '0' |
|
|
CHECK (play_count >= 0), |
|
|
download_count integer NOT NULL default '0' |
|
|
CHECK (download_count >= 0), |
|
|
downloadable smallint NOT NULL default '1', |
|
|
file_format varchar(10) NOT NULL default '', |
|
|
file_mime varchar(255) NOT NULL default '', |
|
|
file_name varchar(255) NOT NULL default '', |
|
|
file_path varchar(255) NOT NULL default '', |
|
|
file_size integer NOT NULL default '0' |
|
|
CHECK (filesize >= 0), |
|
|
sample_rate integer NOT NULL default '0' |
|
|
CHECK (sample_rate >= 0), |
|
|
channel_mode varchar(10) NOT NULL default '', |
|
|
bitrate float NOT NULL default '0' |
|
|
CHECK (bitrate >= 0), |
|
|
bitrate_mode varchar(4) NOT NULL default '', |
|
|
playtime varchar(10) NOT NULL default '', |
|
|
PRIMARY KEY (vid) |
|
|
); |
|
|
"); |
|
|
db_query(" |
|
|
CREATE TABLE {audio_metadata} ( |
|
|
vid integer NOT NULL default '0' |
|
|
CHECK (vid >= 0), |
|
|
tag varchar(45) NOT NULL default '', |
|
|
value varchar(255) NOT NULL default '', |
|
|
clean varchar(255) NOT NULL default '', |
|
|
PRIMARY KEY (vid, tag, value) |
|
|
); |
|
|
"); |
|
|
break; |
|
|
} |
|
|
|
|
| 9 |
_audio_add_default_perms(); |
_audio_add_default_perms(); |
| 10 |
} |
} |
| 11 |
|
|
| 13 |
* Implementation of hook_uninstall(). |
* Implementation of hook_uninstall(). |
| 14 |
*/ |
*/ |
| 15 |
function audio_uninstall() { |
function audio_uninstall() { |
| 16 |
db_query('DROP TABLE {audio}'); |
drupal_uninstall_schema('audio'); |
|
db_query('DROP TABLE {audio_file}'); |
|
|
db_query('DROP TABLE {audio_metadata}'); |
|
|
|
|
| 17 |
variable_del('audio_allowed_extensions'); |
variable_del('audio_allowed_extensions'); |
| 18 |
variable_del('audio_block_random_n'); |
variable_del('audio_block_random_n'); |
| 19 |
variable_del('audio_default_downloadable'); |
variable_del('audio_default_downloadable'); |
| 25 |
variable_del('audio_teaser_format'); |
variable_del('audio_teaser_format'); |
| 26 |
} |
} |
| 27 |
|
|
| 28 |
|
function audio_schema() { |
| 29 |
|
$schema['audio'] = array( |
| 30 |
|
'description' => t('Main audio table.'), |
| 31 |
|
'fields' => array( |
| 32 |
|
'vid' => array( |
| 33 |
|
'type' => 'int', |
| 34 |
|
'size' => 'medium', |
| 35 |
|
'not null' => TRUE, |
| 36 |
|
), |
| 37 |
|
'nid' => array( |
| 38 |
|
'type' => 'int', |
| 39 |
|
'size' => 'medium', |
| 40 |
|
'not null' => TRUE, |
| 41 |
|
), |
| 42 |
|
'title_format' => array( |
| 43 |
|
'type' => 'varchar', |
| 44 |
|
'length' => 128, |
| 45 |
|
'default' => '', |
| 46 |
|
), |
| 47 |
|
'play_count' => array( |
| 48 |
|
'type' => 'int', |
| 49 |
|
'size' => 'medium', |
| 50 |
|
'not null' => TRUE, |
| 51 |
|
'default' => 0, |
| 52 |
|
), |
| 53 |
|
'download_count' => array( |
| 54 |
|
'type' => 'int', |
| 55 |
|
'size' => 'medium', |
| 56 |
|
'not null' => TRUE, |
| 57 |
|
'default' => 0, |
| 58 |
|
), |
| 59 |
|
'downloadable' => array( |
| 60 |
|
'type' => 'int', |
| 61 |
|
'size' => 'tiny', |
| 62 |
|
'not null' => TRUE, |
| 63 |
|
'default' => 1, |
| 64 |
|
), |
| 65 |
|
'file_format' => array( |
| 66 |
|
'type' => 'varchar', |
| 67 |
|
'length' => 10, |
| 68 |
|
'not null' => TRUE, |
| 69 |
|
'default' => '', |
| 70 |
|
), |
| 71 |
|
'file_mime' => array( |
| 72 |
|
'type' => 'varchar', |
| 73 |
|
'length' => 255, |
| 74 |
|
'not null' => TRUE, |
| 75 |
|
'default' => '', |
| 76 |
|
), |
| 77 |
|
'file_name' => array( |
| 78 |
|
'type' => 'varchar', |
| 79 |
|
'length' => 255, |
| 80 |
|
'not null' => TRUE, |
| 81 |
|
'default' => '', |
| 82 |
|
), |
| 83 |
|
'file_path' => array( |
| 84 |
|
'type' => 'varchar', |
| 85 |
|
'length' => 255, |
| 86 |
|
'not null' => TRUE, |
| 87 |
|
'default' => '', |
| 88 |
|
), |
| 89 |
|
'file_size' => array( |
| 90 |
|
'type' => 'int', |
| 91 |
|
'size' => 'medium', |
| 92 |
|
'not null' => TRUE, |
| 93 |
|
'default' => 0, |
| 94 |
|
), |
| 95 |
|
'sample_rate' => array( |
| 96 |
|
'type' => 'int', |
| 97 |
|
'size' => 'medium', |
| 98 |
|
'not null' => TRUE, |
| 99 |
|
'default' => 0, |
| 100 |
|
), |
| 101 |
|
'channel_mode' => array( |
| 102 |
|
'type' => 'varchar', |
| 103 |
|
'length' => 10, |
| 104 |
|
'not null' => TRUE, |
| 105 |
|
'default' => '', |
| 106 |
|
), |
| 107 |
|
'bitrate' => array( |
| 108 |
|
'type' => 'float', |
| 109 |
|
'size' => 'medium', |
| 110 |
|
'not null' => TRUE, |
| 111 |
|
'default' => 0, |
| 112 |
|
), |
| 113 |
|
'bitrate_mode' => array( |
| 114 |
|
'type' => 'varchar', |
| 115 |
|
'length' => 4, |
| 116 |
|
'not null' => TRUE, |
| 117 |
|
'default' => '', |
| 118 |
|
), |
| 119 |
|
'playtime' => array( |
| 120 |
|
'type' => 'varchar', |
| 121 |
|
'length' => 10, |
| 122 |
|
'not null' => TRUE, |
| 123 |
|
'default' => '', |
| 124 |
|
), |
| 125 |
|
), |
| 126 |
|
'primary key' => array('vid'), |
| 127 |
|
); |
| 128 |
|
$schema['audio_metadata'] = array( |
| 129 |
|
'description' => t('Extended data about audio files.'), |
| 130 |
|
'fields' => array( |
| 131 |
|
'vid' => array( |
| 132 |
|
'type' => 'int', |
| 133 |
|
'size' => 'medium', |
| 134 |
|
'not null' => TRUE, |
| 135 |
|
), |
| 136 |
|
'tag' => array( |
| 137 |
|
'type' => 'varchar', |
| 138 |
|
'length' => 45, |
| 139 |
|
'not null' => TRUE, |
| 140 |
|
'default' => '', |
| 141 |
|
), |
| 142 |
|
'value' => array( |
| 143 |
|
'type' => 'varchar', |
| 144 |
|
'length' => 255, |
| 145 |
|
'not null' => TRUE, |
| 146 |
|
'default' => '', |
| 147 |
|
), |
| 148 |
|
'clean' => array( |
| 149 |
|
'type' => 'varchar', |
| 150 |
|
'length' => 255, |
| 151 |
|
'not null' => TRUE, |
| 152 |
|
'default' => '', |
| 153 |
|
), |
| 154 |
|
), |
| 155 |
|
'primary key' => array('vid', 'tag', 'value'), |
| 156 |
|
'indexes' => array( |
| 157 |
|
'audio_metadata_tags' => array('clean'), |
| 158 |
|
), |
| 159 |
|
); |
| 160 |
|
return $schema; |
| 161 |
|
} |
| 162 |
|
|
| 163 |
/** |
/** |
| 164 |
* Add permission to download and view audio to the anonymous and authenticated |
* Add permission to download and view audio to the anonymous and authenticated |
| 165 |
* roles by default. |
* roles by default. |
| 190 |
*/ |
*/ |
| 191 |
function audio_update_9() { |
function audio_update_9() { |
| 192 |
$ret = array(); |
$ret = array(); |
| 193 |
switch ($GLOBALS['db_type']) { |
db_change_field($ret, 'audio', 'playcount', 'play_count', |
| 194 |
case 'mysql': |
array( |
| 195 |
case 'mysqli': |
'type' => 'int', |
| 196 |
$ret[] = update_sql( |
'size' => 'medium', |
| 197 |
<<<MYSQL_UPDATE |
'not null' => TRUE, |
| 198 |
ALTER TABLE {audio} |
'default' => 0, |
| 199 |
CHANGE COLUMN `playcount` `play_count` INTEGER UNSIGNED NOT NULL DEFAULT 0, |
) |
| 200 |
ADD COLUMN `download_count` INTEGER UNSIGNED NOT NULL DEFAULT 0 AFTER `play_count`; |
); |
| 201 |
MYSQL_UPDATE |
db_add_field($ret, 'audio', 'download_count', |
| 202 |
); |
array( |
| 203 |
break; |
'type' => 'int', |
| 204 |
} |
'size' => 'medium', |
| 205 |
|
'not null' => TRUE, |
| 206 |
|
'default' => 0, |
| 207 |
|
) |
| 208 |
|
); |
| 209 |
return $ret; |
return $ret; |
| 210 |
} |
} |
| 211 |
|
|
| 240 |
*/ |
*/ |
| 241 |
function audio_update_11() { |
function audio_update_11() { |
| 242 |
$ret = array(); |
$ret = array(); |
| 243 |
switch ($GLOBALS['db_type']) { |
db_change_field($ret, 'audio_metadata', 'tag', 'tag', |
| 244 |
case 'mysql': |
array( |
| 245 |
case 'mysqli': |
'type' => 'varchar', |
| 246 |
$ret[] = update_sql( |
'length' => 45, |
| 247 |
<<<MYSQL_UPDATE |
'not null' => TRUE, |
| 248 |
ALTER TABLE {audio_metadata} |
'default' => '', |
| 249 |
MODIFY COLUMN `tag` VARCHAR(45) NOT NULL DEFAULT ''; |
) |
| 250 |
MYSQL_UPDATE |
); |
|
); |
|
|
break; |
|
|
} |
|
|
|
|
| 251 |
return $ret; |
return $ret; |
| 252 |
} |
} |
| 253 |
|
|
| 264 |
*/ |
*/ |
| 265 |
function audio_update_13() { |
function audio_update_13() { |
| 266 |
$ret = array(); |
$ret = array(); |
| 267 |
$ret[] = update_sql("UPDATE {audio_file} SET origname = filename WHERE origname='' OR origname IS NULL"); |
$ret[] = update_sql("UPDATE {audio_file} SET origname = filename WHERE origname='' OR origname IS NULL;"); |
| 268 |
return $ret; |
return $ret; |
| 269 |
} |
} |
| 270 |
|
|
| 325 |
*/ |
*/ |
| 326 |
function audio_update_5200() { |
function audio_update_5200() { |
| 327 |
$ret = array(); |
$ret = array(); |
| 328 |
switch ($GLOBALS['db_type']) { |
$ret[] = update_sql("UPDATE {audio_file} SET filename = origname"); |
| 329 |
case 'mysql': |
db_drop_field($ret, 'audio_file', 'origname'); |
|
case 'mysqli': |
|
|
$ret[] = update_sql("UPDATE {audio_file} SET filename = origname"); |
|
|
$ret[] = update_sql("ALTER TABLE {audio_file} DROP COLUMN `origname`"); |
|
|
break; |
|
|
} |
|
| 330 |
return $ret; |
return $ret; |
| 331 |
} |
} |
| 332 |
|
|
| 378 |
*/ |
*/ |
| 379 |
function audio_update_5202() { |
function audio_update_5202() { |
| 380 |
$ret = array(); |
$ret = array(); |
| 381 |
switch ($GLOBALS['db_type']) { |
db_change_field($ret, 'audio', 'fileformat', 'file_format', |
| 382 |
case 'mysql': |
array( |
| 383 |
case 'mysqli': |
'type' => 'varchar', |
| 384 |
$ret[] = update_sql("ALTER TABLE {audio} |
'length' => 10, |
| 385 |
CHANGE COLUMN `fileformat` `file_format` varchar(10) NOT NULL default '', |
'not null' => TRUE, |
| 386 |
ADD COLUMN `file_mime` varchar(255) NOT NULL default '' AFTER `file_format`, |
'default' => '', |
| 387 |
ADD COLUMN `file_name` varchar(255) NOT NULL default '' AFTER `file_mime`, |
) |
| 388 |
ADD COLUMN `file_path` varchar(255) NOT NULL default '' AFTER `file_name`, |
); |
| 389 |
ADD COLUMN `file_size` INTEGER UNSIGNED NOT NULL default 0 AFTER `file_path`, |
db_add_field($ret, 'audio', 'file_mime', |
| 390 |
ADD COLUMN `remote_url` varchar(255) NOT NULL default '' AFTER `file_size`, |
array( |
| 391 |
ADD COLUMN `remote_size` INTEGER UNSIGNED NOT NULL default 0 AFTER `remote_url` |
'type' => 'varchar', |
| 392 |
"); |
'length' => 255, |
| 393 |
$ret[] = update_sql("UPDATE {audio} a INNER JOIN {audio_file} af ON a.vid = af.vid SET a.file_name = af.filename, a.file_path = af.filepath, a.file_mime = af.filemime, a.file_size = af.filesize"); |
'not null' => TRUE, |
| 394 |
$ret[] = update_sql("DROP TABLE {audio_file}"); |
'default' => '', |
| 395 |
break; |
) |
| 396 |
} |
); |
| 397 |
|
db_add_field($ret, 'audio', 'file_name', |
| 398 |
|
array( |
| 399 |
|
'type' => 'varchar', |
| 400 |
|
'length' => 255, |
| 401 |
|
'not null' => TRUE, |
| 402 |
|
'default' => '', |
| 403 |
|
) |
| 404 |
|
); |
| 405 |
|
db_add_field($ret, 'audio', 'file_path', |
| 406 |
|
array( |
| 407 |
|
'type' => 'varchar', |
| 408 |
|
'length' => 255, |
| 409 |
|
'not null' => TRUE, |
| 410 |
|
'default' => '', |
| 411 |
|
) |
| 412 |
|
); |
| 413 |
|
db_add_field($ret, 'audio', 'file_size', |
| 414 |
|
array( |
| 415 |
|
'type' => 'int', |
| 416 |
|
'size' => 'medium', |
| 417 |
|
'not null' => TRUE, |
| 418 |
|
'default' => 0, |
| 419 |
|
) |
| 420 |
|
); |
| 421 |
|
db_add_field($ret, 'audio', 'remote_size', |
| 422 |
|
array( |
| 423 |
|
'type' => 'varchar', |
| 424 |
|
'length' => 255, |
| 425 |
|
'not null' => TRUE, |
| 426 |
|
'default' => '', |
| 427 |
|
) |
| 428 |
|
); |
| 429 |
|
db_add_field($ret, 'audio', 'remote_size', |
| 430 |
|
array( |
| 431 |
|
'type' => 'int', |
| 432 |
|
'size' => 'medium', |
| 433 |
|
'not null' => TRUE, |
| 434 |
|
'default' => 0, |
| 435 |
|
) |
| 436 |
|
); |
| 437 |
|
$ret[] = update_sql("UPDATE {audio} a INNER JOIN {audio_file} af ON a.vid = af.vid SET a.file_name = af.filename, a.file_path = af.filepath, a.file_mime = af.filemime, a.file_size = af.filesize"); |
| 438 |
|
db_drop_table($ret, 'audio_file'); |
| 439 |
|
|
| 440 |
// Build an array of renamed tokens. |
// Build an array of renamed tokens. |
| 441 |
$tokens = array( |
$tokens = array( |