PageRenderTime 64ms CodeModel.GetById 33ms RepoModel.GetById 0ms app.codeStats 0ms

/branches/mp3act_mpd_p0/install.php

https://github.com/benbruscella/Grammafone
PHP | 424 lines | 383 code | 33 blank | 8 comment | 11 complexity | e63ef2ab3c2c5a0ad5a6f440b8df4549 MD5 | raw file
  1. <?php
  2. include("includes/mp3act_functions.php");
  3. function installed(){
  4. $query = "SELECT user_id FROM mp3act_users";
  5. $result = @mysql_query($query);
  6. if(@mysql_num_rows($result) > 0){
  7. echo "<strong class='error'>It appears that you have already installed mp3act on this computer.</strong><br/><br/>";
  8. echo "<a href=\"$GLOBALS[http_url]$GLOBALS[uri_path]/\">Login to your mp3act server</a><br/>";
  9. return TRUE;
  10. }
  11. return FALSE;
  12. }
  13. ?>
  14. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  15. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  16. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  17. <head>
  18. <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  19. <title><?php echo $GLOBALS['server_title']; ?> | Install Page</title>
  20. </head>
  21. <style>
  22. body{
  23. padding: 22px;
  24. margin:0;
  25. color: #333;
  26. background: #F0F0F0;
  27. text-align: center;
  28. font: 18px Times;
  29. }
  30. h2{
  31. font-size: 100%;
  32. margin:0;
  33. padding: 0 0 5px 0;
  34. }
  35. ul{
  36. list-style-type: none;
  37. }
  38. a{
  39. color: blue;
  40. }
  41. a:hover{
  42. /*color: #fff;
  43. background: #F21518;
  44. text-decoration: none;*/
  45. color: #F21518;
  46. }
  47. img{
  48. border: 0;
  49. }
  50. input,select{
  51. border: 1px solid #ccc;
  52. background: #f3f3f3;
  53. color: #333;
  54. font-size: 100%;
  55. padding: 2px 3px;
  56. }
  57. select{
  58. padding: 2px 0 2px 3px;
  59. }
  60. input:focus{
  61. border: 1px solid #999;
  62. background: #fff;
  63. color: #000;
  64. }
  65. input.btn{
  66. background: #244A79;
  67. color: #fff;
  68. padding: 2px;
  69. border-color: #0E2F58;
  70. font: normal 14px sans-serif;
  71. }
  72. input.btn:hover{
  73. background: #0E2F58;
  74. }
  75. .clear{
  76. clear: both;
  77. }
  78. .error{
  79. color: #E63838;
  80. font-weight: bold;
  81. }
  82. p#error{
  83. color: #f20000;
  84. font-weight: bold;
  85. }
  86. p.pad{
  87. padding: 0px 18px;
  88. }
  89. .right{
  90. float: right;
  91. }
  92. #wrap{
  93. background: #fff;
  94. border: 1px solid #ccc;
  95. text-align: left;
  96. padding: 0px;
  97. margin:0;
  98. }
  99. #header{
  100. position: relative;
  101. background: #0E2F58;
  102. height: 50px;
  103. color: #fff;
  104. padding: 15px 0 0px 15px;
  105. }
  106. #header h1{
  107. color: #9ABEE5;
  108. padding: 0;
  109. margin:0;
  110. font-size: 150%;
  111. }
  112. #topinfo{
  113. font-size: 90%;
  114. color: #666;
  115. text-align: left;
  116. padding: 0 0 4px 0;
  117. }
  118. </style>
  119. <body>
  120. <?php
  121. $step = 1;
  122. if(isset($_GET['step']))
  123. $step = $_GET['step'];
  124. ?>
  125. <div id="topinfo">
  126. <div class="right">Installation Page</div>
  127. <strong>mp3act music box v1.2</strong>
  128. </div>
  129. <div id="wrap">
  130. <div id="header">
  131. <h1>mp3act Quick Install - Step <?php echo $step; ?></h1>
  132. </div>
  133. <p class='pad'>
  134. <?php
  135. switch($step){
  136. case 1:
  137. if(mp3act_connect()){
  138. if(!installed()){
  139. echo "<strong>Welcome to the mp3act installation page</strong><br/><br/>";
  140. echo "This is a very simple and easy installation. You'll be enjoying your music in no time at all. I swear.<br/><br/>";
  141. echo "<a href='install.php?step=2'>Proceed to Step 2 &raquo;</a>";
  142. }
  143. }
  144. else{
  145. echo "<strong class='error'>Unable to establish MySQL connection to database '".$GLOBALS[db_name]."'</strong><br/>";
  146. echo "Please make sure you have created the database and that the database settings in 'mp3act.conf' are correct.";
  147. }
  148. break;
  149. // Test to see if DB and user are set in conf file
  150. // Test DB connection
  151. // If good install Tables
  152. // Give instructions for setting permissions and external programs
  153. // mpg123, lame, Amazon API, php bin
  154. case 2:
  155. mp3act_connect();
  156. if(!installed()){
  157. $querys['albums'] = "CREATE TABLE mp3act_albums (
  158. album_id int(11) NOT NULL auto_increment,
  159. album_name varchar(255) NOT NULL default '',
  160. artist_id int(255) NOT NULL default '0',
  161. album_genre_id int(11) default NULL,
  162. album_year smallint(6) NOT NULL default '0',
  163. album_art text NOT NULL,
  164. PRIMARY KEY (album_id)
  165. ) TYPE=MyISAM";
  166. $querys['artists'] = "CREATE TABLE mp3act_artists (
  167. artist_id int(11) NOT NULL auto_increment,
  168. artist_name varchar(255) default NULL,
  169. prefix varchar(7) NOT NULL default '',
  170. PRIMARY KEY (artist_id)
  171. ) TYPE=MyISAM";
  172. $querys['current'] = "CREATE TABLE mp3act_currentsong (
  173. song_id int(11) NOT NULL default '0',
  174. pl_id int(11) NOT NULL default '0',
  175. random tinyint(3) NOT NULL default '0'
  176. ) TYPE=MyISAM";
  177. $querys['genres'] = "CREATE TABLE mp3act_genres (
  178. genre_id int(11) NOT NULL auto_increment,
  179. genre varchar(25) NOT NULL default '',
  180. PRIMARY KEY (genre_id)
  181. ) TYPE=MyISAM";
  182. $querys['play_history'] = "CREATE TABLE mp3act_playhistory (
  183. play_id int(11) NOT NULL auto_increment,
  184. user_id int(6) default NULL,
  185. song_id int(11) default NULL,
  186. date_played datetime default NULL,
  187. PRIMARY KEY (play_id)
  188. ) TYPE=MyISAM";
  189. $querys['playlist'] = "
  190. CREATE TABLE mp3act_playlist (
  191. pl_id int(11) NOT NULL auto_increment,
  192. song_id int(11) default NULL,
  193. user_id int(11) NOT NULL default '0',
  194. private tinyint(4) NOT NULL default '0',
  195. PRIMARY KEY (pl_id)
  196. ) TYPE=MyISAM";
  197. $querys['playlists'] = "CREATE TABLE mp3act_saved_playlists (
  198. playlist_id int(11) NOT NULL auto_increment,
  199. user_id int(11) default NULL,
  200. private tinyint(3) default NULL,
  201. playlist_name varchar(255) default NULL,
  202. playlist_songs text,
  203. date_created datetime default NULL,
  204. time int(11) default NULL,
  205. songcount smallint(8) default NULL,
  206. PRIMARY KEY (playlist_id)
  207. ) TYPE=MyISAM";
  208. $querys['songs'] = "CREATE TABLE mp3act_songs (
  209. song_id int(11) NOT NULL auto_increment,
  210. artist_id int(11) NOT NULL default '0',
  211. album_id int(11) NOT NULL default '0',
  212. genre_id int(11) default NULL,
  213. date_entered datetime default NULL,
  214. name varchar(255) default NULL,
  215. track smallint(6) NOT NULL default '0',
  216. length int(11) NOT NULL default '0',
  217. size int(11) NOT NULL default '0',
  218. bitrate smallint(6) NOT NULL default '0',
  219. type varchar(4) default NULL,
  220. numplays int(11) NOT NULL default '0',
  221. filename text,
  222. random tinyint(4) NOT NULL default '0',
  223. last_modified int(11) default '0',
  224. PRIMARY KEY (song_id),
  225. INDEX (filename(128))
  226. ) TYPE=MyISAM";
  227. $querys['stats'] = "CREATE TABLE mp3act_stats (
  228. num_artists smallint(5) unsigned NOT NULL default '0',
  229. num_albums smallint(5) unsigned NOT NULL default '0',
  230. num_songs mediumint(8) unsigned NOT NULL default '0',
  231. num_genres tinyint(3) unsigned NOT NULL default '0',
  232. total_time varchar(12) NOT NULL default '0',
  233. total_size varchar(10) NOT NULL default '0'
  234. ) TYPE=MyISAM";
  235. $querys['logins'] ="CREATE TABLE mp3act_logins (
  236. login_id int(11) NOT NULL auto_increment,
  237. user_id int(11) default NULL,
  238. date int(11) default NULL,
  239. md5 varchar(100) NOT NULL default '',
  240. PRIMARY KEY (login_id)
  241. ) TYPE=MyISAM";
  242. $querys['invites'] = "CREATE TABLE mp3act_invites (
  243. invite_id int(11) NOT NULL auto_increment,
  244. email varchar(100) NOT NULL default '',
  245. date_created datetime NOT NULL default '0000-00-00 00:00:00',
  246. invite_code varchar(255) NOT NULL default '',
  247. PRIMARY KEY (invite_id)
  248. ) TYPE=MyISAM";
  249. $querys['themes'] ="CREATE TABLE mp3act_themes (
  250. theme_id smallint(6) NOT NULL auto_increment,
  251. theme_name varchar(25) default NULL,
  252. color1 varchar(11) default NULL,
  253. color2 varchar(11) default NULL,
  254. color3 varchar(11) default NULL,
  255. color4 varchar(11) default NULL,
  256. color5 varchar(11) default NULL,
  257. theme_user_id smallint(6) default NULL,
  258. PRIMARY KEY (theme_id)
  259. ) TYPE=MyISAM";
  260. $querys['theme1'] = "INSERT INTO `mp3act_themes` VALUES (NULL, 'default blue', '#0E2F58', '#244A79', '#416899', '#9ABEE5', '#F48603', 0)";
  261. $querys['theme2'] = "INSERT INTO `mp3act_themes` VALUES (NULL, 'green', '#194904', '#2E6D12', '#60A041', '#89C86E', '#3873A1', 0)";
  262. $querys['theme3'] = "INSERT INTO `mp3act_themes` VALUES (NULL, 'red', '#6D0C11', '#912328', '#B44146', '#CEB78B', '#7A643A', 0)";
  263. $querys['users'] = "CREATE TABLE mp3act_users (
  264. user_id int(11) NOT NULL auto_increment,
  265. username varchar(100) NOT NULL default '',
  266. firstname varchar(100) NOT NULL default '',
  267. lastname varchar(100) NOT NULL default '',
  268. password varchar(255) NOT NULL default '',
  269. accesslevel tinyint(4) NOT NULL default '0',
  270. date_created datetime NOT NULL default '0000-00-00 00:00:00',
  271. active tinyint(4) NOT NULL default '0',
  272. email varchar(255) NOT NULL default '',
  273. default_mode varchar(50) NOT NULL default '',
  274. default_bitrate int(11) NOT NULL default '0',
  275. default_stereo varchar(50) NOT NULL default '',
  276. md5 varchar(255) NOT NULL default '',
  277. last_ip varchar(50) NOT NULL default '',
  278. last_login datetime default NULL,
  279. theme_id smallint(6) NOT NULL default '1',
  280. as_username varchar(20) NOT NULL default '',
  281. as_password varchar(30) NOT NULL default '',
  282. as_lastresult varchar(255) NOT NULL default '',
  283. as_type tinyint(4) NOT NULL default '0',
  284. PRIMARY KEY (user_id)
  285. ) TYPE=MyISAM";
  286. $querys['audioscrobbler'] = "CREATE TABLE IF NOT EXISTS mp3act_audioscrobbler (
  287. as_id int(11) NOT NULL auto_increment,
  288. user_id int(11) NOT NULL default '0',
  289. song_id int(11) NOT NULL default '0',
  290. as_timestamp varchar(100) NOT NULL default '',
  291. PRIMARY KEY (as_id)
  292. ) TYPE=MyISAM";
  293. $querys['settings'] = "CREATE TABLE mp3act_settings (
  294. id int(3) NOT NULL auto_increment,
  295. version varchar(15) NOT NULL default '',
  296. invite_mode tinyint(4) NOT NULL default '0',
  297. upload_path varchar(255) NOT NULL default '',
  298. amazonid varchar(255) NOT NULL default '',
  299. downloads tinyint(4) NOT NULL default '0',
  300. sample_mode tinyint(2) NOT NULL default '0',
  301. mp3bin varchar(100) NOT NULL default '',
  302. lamebin varchar(100) NOT NULL default '',
  303. phpbin varchar(100) NOT NULL default '',
  304. jukemode varchar(16) NOT NULL default '',
  305. mpdserver varchar(255) NOT NULL default '',
  306. mpdport varchar(16) NOT NULL default '',
  307. PRIMARY KEY (id)
  308. ) TYPE=MyISAM";
  309. $querys['settingsinfo'] = "INSERT INTO `mp3act_settings` VALUES (NULL,'1.2',0, '', '', 0,0,'','','','','','')";
  310. echo "<strong>Creating mp3act Database Tables....</strong><br/><br/>";
  311. // CREATE TABLES
  312. $error = 0;
  313. foreach($querys as $key=>$query){
  314. if(mysql_query($query)){
  315. }
  316. else{
  317. $error = 1;
  318. }
  319. }
  320. if(!$error){
  321. echo "<strong>mp3act Databases Installed Successfully</strong<br/><br/>";
  322. }
  323. echo "<a href='install.php?step=3'>Proceed to Step 3 &raquo;</a>";
  324. }
  325. break;
  326. case 3:
  327. mp3act_connect();
  328. if(!installed()){
  329. ?>
  330. <strong class='error'>Take a Moment to Configure Your mp3act Installation.</strong><br/> You don't have to set these now. They are accessible from the Admin menu. However some of the options are neccessary for some features to work.<br/>
  331. <form method='post' action="install.php?step=4">
  332. <p class='pad'>
  333. <strong>Invitation for Registration</strong><br/>(Users are required to be invited to register)<br/><select name='invite'><option value='0' >Not Required</option><option value='1'>Required</option></select><br/><br/>
  334. <strong>Sample Mode</strong><br/>(play 1/4 of each song)<br/><select name='sample_mode'><option value='0'>Sample Mode OFF</option><option value='1' >Sample Mode ON</option></select><br/><br/>
  335. <strong>Music Downloads</strong><br/>(Rules for Users Downloading Music)<br/><select name='downloads'><option value='0' >Not Allowed</option><option value='1' >Allowed for All</option><option value='2' >Allowed with Permission</option></select><br/><br/>
  336. <strong>Amazon API Key</strong><br/>(needed for downloading Album Art) <a href='http://www.amazon.com/webservices/' target='_new'>Obtain Key</a><br/><input type='text' size='30' name='amazonid' /><br/><br/>
  337. <strong>Path to MP3 Player</strong><br/>(ex. /usr/bin/mpg123)<br/><input type='text' size='30' name='mp3bin' /><br/><br/>
  338. <strong>Path to Lame Encoder</strong><br/>(ex. /usr/bin/lame)<br/><input type='text' size='30' name='lamebin' /><br/><br/>
  339. <strong>Path to PHP-CLI Binary</strong><br/>(ex. /usr/bin/php)<br/><input type='text' size='30' name='phpbin' /><br/><br/>
  340. <strong>Jukebox mode</strong><br/><input type='radio' name='jukemode' value='mpd' />MPD mode <input type='radio' name='jukemode' value='local' CHECKED />Local (mpg123) mode<br/><br/>
  341. <strong>MPD server</strong><br/>IP/name <input type='text' size='30' name='mpdserver' />
  342. Port <input type='text' size='10' name='mpdport' /><br/><br/>
  343. <input type='submit' value='save settings and continue &raquo;' class='btn' />
  344. </p>
  345. </form>
  346. <?php
  347. }
  348. break;
  349. case 4:
  350. mp3act_connect();
  351. if(!installed()){
  352. $query = "UPDATE mp3act_settings SET invite_mode=$_POST[invite],sample_mode=$_POST[sample_mode],downloads=$_POST[downloads],amazonid=\"$_POST[amazonid]\",mp3bin=\"$_POST[mp3bin]\",lamebin=\"$_POST[lamebin]\",phpbin=\"$_POST[phpbin]\",jukemode=\"$_POST[jukemode]\",mpdserver=\"$_POST[mpdserver]\",mpdport=\"$_POST[mpdport]\" WHERE id=1";
  353. mysql_query($query);
  354. echo "<strong>Settings Saved....</strong><br/><br/>";
  355. echo "<strong>Installation Successful!</strong><br/><br/>";
  356. if(!ini_get('allow_url_fopen')){
  357. echo "<strong class='error'>WARNING: </strong>Need to Set allow_url_fopen to 'On' in your php.ini file.<br/><br/>";
  358. }
  359. if(!is_writable($GLOBALS['abs_path']."/art/")){
  360. echo "<strong class='error'>WARNING: </strong>The /art/ directory is currently not writable. Please change the permissions on this directory if you wish to use Album Art.<br/><br/>";
  361. }
  362. echo "<a href=\"$GLOBALS[http_url]$GLOBALS[uri_path]/\">Login to your new mp3act server</a><br/>";
  363. $random_password = substr(md5(uniqid(microtime())), 0, 6);
  364. $query = "INSERT INTO `mp3act_users` VALUES (NULL, 'admin', 'Admin', 'User', PASSWORD(\"$random_password\"), 10, NOW(), 1, '', 'streaming', 0, 's', '21232f297a57a5a743894a0e4a801fc3', '', '0000-00-00 00:00:00', 1,'','','',0)";
  365. mysql_query($query);
  366. echo "<br/><strong>Username:</strong> Admin<br/><strong>Password:</strong> $random_password (Please change this password as soon as you login.)<br/><br/>";
  367. echo "To add music to the database, choose the 'Admin' tab and click on 'Add Music to Database'";
  368. }
  369. break;
  370. } // END SWITCH
  371. ?>
  372. </p>
  373. </div>
  374. </body>
  375. </html>