Ticket #1699: changes.patch

File changes.patch, 170.1 KB (added by jochen, 15 years ago)

Version 2.0 (old files are now deprecated)

  • mythweb/skins/default/music.css

     
     1mp3act {
     2        padding: 22px;
     3        margin:0;
     4        color: #333;
     5        text-align: center;
     6        font: 65% Verdana, Sans-serif;
     7}
     8
     9h2.music{
     10        font-size: 100%;
     11        margin:0;
     12        padding: 0 0 5px 0;
     13
     14}
     15ul.music{
     16        list-style-type: none;
     17}
     18a.music{
     19        color: blue;
     20}
     21
     22a.music:hover{
     23        /*color: #fff;
     24        background: #F21518;
     25        text-decoration: none;*/
     26        color: #F21518;
     27}
     28img{
     29        border: 0;
     30}
     31input,select{
     32        border: 1px solid #ccc;
     33        border-color: #aaa #ccc #ccc #aaa;
     34        background: #f3f3f3;
     35        color: #555;
     36        font-size: 100%;
     37        padding: 2px 3px;
     38        vertical-align: middle;
     39       
     40}
     41input.check{
     42  border:0;
     43  padding:0;
     44  background: transparent;
     45}
     46select{
     47        padding: 2px 0 2px 3px;
     48}
     49input:focus{
     50        border: 1px solid #999;
     51        background: #FBF9D3;
     52        color: #000;
     53        border-color: #777 #bbb #bbb #777;
     54}
     55
     56input.btn,input.redbtn{
     57        background: #244A79;
     58        color: #fff;
     59        padding: 2px;
     60        border-color: #0E2F58;
     61        font: normal 10px sans-serif;
     62}
     63input.redbtn{
     64        background: #F21518;   
     65}
     66input.redbtn:hover{
     67        background: #BE0D0F;
     68}
     69input.btn:hover{
     70        background: #0E2F58;
     71}
     72
     73input.btn2{
     74        font-weight: bold;
     75        padding: 2px;
     76}
     77
     78input.btn2:hover{
     79        background: #eee;
     80        border-color: #888;
     81        color: #222;
     82}
     83
     84.left{
     85        float: left;
     86}
     87.right{
     88        float: right;
     89}
     90.center{
     91        text-align: center;
     92}
     93.clear{
     94  clear: both;
     95}
     96.error{
     97        color: #E63838;
     98        font-weight: bold;
     99}
     100p#error{
     101        color: #f20000;
     102        font-weight: bold;
     103}
     104#breadcrumb{
     105        height: 14px;
     106        padding:2px 0 0 0;
     107}
     108#breadcrumb span{
     109position: relative;
     110}
     111#breadcrumb span:hover ul{
     112        display: block;
     113}
     114#breadcrumb ul{
     115        z-index: 5;
     116        border: 1px solid #333;
     117        display: none;
     118        top:12px;
     119        left:0;
     120        position: absolute;
     121        background: transparent url("./img/libg.png");
     122        color: #fff;
     123        margin:-1px 0 0 0;
     124        padding:0;
     125        width: 150px;
     126       
     127}
     128#breadcrumb ul#letters{
     129        left: -55px;
     130        width: auto;
     131}
     132#breadcrumb span{
     133        padding: 0;
     134        margin:0;
     135}
     136#breadcrumb ul li{
     137width: 100%;
     138        padding:0;
     139        margin:0;
     140        z-index: 6;
     141}
     142#breadcrumb ul li a{
     143        display: block;
     144        padding: 2px 4px;
     145        color: #fff;
     146        margin:0;
     147        z-index: 5;
     148        text-decoration: none;
     149        font-weight: normal;
     150        font-size: 90%;
     151}
     152
     153#breadcrumb ul#letters li{
     154        float: left;
     155
     156}
     157#breadcrumb ul#letters li a{
     158        float: left;
     159       
     160}
     161#breadcrumb ul li a:hover{
     162        background: #FCF7A5;
     163        color: #000;
     164}
     165#breadcrumb ul#letters li a:hover{
     166        background: #FCF7A5;
     167        color: #000;
     168}
     169#topinfo{
     170       
     171        font-size: 90%;
     172        color: #666;
     173        text-align: left;
     174        padding: 0 0 4px 0;
     175       
     176}
     177p.pad{
     178        padding: 0px 8px;
     179}
     180
     181#wrap{
     182        background: #fff;
     183        border: 1px solid #ccc;
     184        text-align: left;
     185        padding: 0px;
     186        margin:0;
     187        position: relative;
     188
     189        color: #333;
     190}
     191
     192#header{
     193        position: relative;
     194        background: #0E2F58;
     195        height: 50px;
     196        color: #fff;
     197        padding: 8px 0 0px 15px;
     198}
     199#header #controls{
     200        float: right;
     201        background: transparent;
     202        height: 48px;
     203        margin-right: 8px;
     204        width: 48%;
     205        font-size: 90%;
     206        line-height: 1.1em;
     207        color: #fff;
     208}
     209
     210#header #controls .buttons{
     211        float: left;
     212        margin: 3px 5px 0 5px;
     213}
     214#header #controls .current{
     215        float: left;
     216        margin-top: 3px;
     217       
     218}
     219#header h1{
     220        color: #9ABEE5;
     221        padding: 0;
     222        margin:0;
     223        font-size: 150%;
     224}
     225ul#nav{
     226        position: absolute;
     227        bottom:0;
     228        list-style-type: none;
     229        margin:0;
     230        padding:0;
     231}
     232ul#nav li{
     233        float: left;
     234        margin-right: 5px;
     235}
     236ul#nav li a{
     237        display: block;
     238        background: #244A79;
     239        padding: 4px 5px;
     240        color: #ccc;
     241        text-decoration: none;
     242        margin:0;
     243}
     244ul#nav li a:hover{
     245        background: #416899;
     246        color: #fff;
     247}
     248ul#nav li a.c{
     249        background: #fff;
     250        color: #F48603;
     251        font-weight: bold;
     252}
     253#loading{
     254        display: none;
     255        position: absolute;
     256        top: 80px;
     257        color: #78B855;
     258        padding: 10px;
     259        background: #CCFF99;
     260        border: 1px solid #78B855;
     261        z-index: 4;
     262        left: 30%;
     263}
     264#loading h1{
     265  font-size: 140%;
     266}
     267#left{
     268        float: left;
     269        width: 48%;
     270        margin: 15px 0 25px 15px;
     271}
     272#right{
     273        float: right;
     274        width: 45%;
     275        margin: 15px 15px 25px 0;
     276
     277}
     278.box{
     279        background: #E0E0E0;
     280        border: 1px solid #ccc;
     281        padding: 0 0 8px 0;
     282        position: relative;
     283}
     284#box_extra{
     285        display: none;
     286        z-index: 2;
     287        position: absolute;
     288        top: 25px;
     289        left:5%;
     290        width: 450px;
     291        height: 190px;
     292        background: transparent url("./img/libg.png");
     293        color: #fff;
     294        font-size: 110%;
     295        padding: 5px;
     296}
     297#box_extra h2{
     298        font-size: 120%;
     299}
     300#box_extra input{
     301        background: #333;
     302        border-color: #999;
     303        color: #fff;
     304}
     305
     306#box_extra select{
     307        background: #333;
     308        border-color: #999;
     309        color: #fff;
     310}
     311
     312.box ul{
     313        margin: 0 10px;
     314        padding: 0px 0px;
     315        background: #f3f3f3;
     316        clear: both;
     317}
     318.box ul li{
     319        padding: 2px 0 1px 4px;
     320        border: 1px solid transparent;
     321        border-width: 1px 0px 1px 0px;
     322        position: relative;
     323        background: #f3f3f3;
     324}
     325
     326.box ul li.alt{
     327        background: #DEE6EC;
     328}
     329.box ul li span.user{
     330        float: left;
     331        width: 200px;
     332}
     333.box ul li small{
     334        color: #888;
     335        letter-spacing: -1px;
     336}
     337
     338.box ul li span.links a{
     339        text-decoration: underline;
     340        color: blue;
     341}
     342.box ul li span.links a:hover{
     343        color: red;
     344}
     345.box ul li:hover{
     346        background: #FCF7A5;
     347        color: #000;
     348        border-color: #999;
     349}
     350.box ul li.currentplay{
     351        background: #96D1EF;
     352        color: #000;
     353        border-color: #666;
     354}
     355
     356.box ul li p{
     357        z-index:5;
     358        display: none;
     359        position: absolute;
     360        top: 7px;
     361        font-size: 90%;
     362        padding: 2px;
     363        right: 15px;
     364        width: 145px;
     365        background: transparent url("./img/libg.png");
     366        color: #fff;
     367}
     368
     369.box ul li:hover p{
     370        display: block;
     371}
     372
     373.box ul li a{
     374        text-decoration: none;
     375        color: #333;
     376}
     377.box ul li a:hover{
     378        color: #000;
     379}
     380.box ul#letters{
     381        height: 18px;
     382        padding-left: 5px;
     383}
     384
     385.box ul#letters li{
     386        float: left;
     387        padding: 2px 2px;
     388        background: none;
     389        border: 1px solid transparent;
     390}
     391
     392.box ul#letters li:hover{
     393        background: #FCF7A5;
     394        border-color: #999;
     395}
     396
     397.box p{
     398        padding: 0 10px;
     399        margin: 8px 0 4px 0;
     400
     401}
     402.box p img{
     403        display: block;
     404        width: 60px;
     405        float: right;
     406        padding: 2px;
     407        background: #f3f3f3;
     408        border: 1px solid #999;
     409        margin-bottom: 4px;     
     410}
     411.box img#bigart{
     412        display: none;
     413        position: absolute;
     414        z-index: 2;
     415        background: #f3f3f3;
     416        padding: 3px;
     417        border: 1px solid #666;
     418        top:10px;
     419        right: 80px;
     420}
     421.box p img:hover{
     422        border-color: #555;
     423        cursor: pointer;
     424}
     425
     426.box .head{
     427        padding: 4px;
     428        background: #ccc;
     429}
     430.box .head a{
     431        background: #244A79;
     432        color: #fff;
     433        padding: 2px;
     434        text-decoration: none;
     435        font: normal 9px sans-serif;
     436}
     437.box .head a:hover{
     438        background: #0E2F58;
     439}
     440.box .head a.red{
     441        background: #F21518;
     442}       
     443.box .head a.red:hover{
     444        background: #BE0D0F;
     445}
     446.box .head h2{
     447        font-size: 120%;
     448        padding: 0;
     449}
     450.box h3{
     451        padding: 0 0 0 0px;
     452        margin: 0 10px 0 10px;
     453        font-size: 120%;
     454        border-bottom: 1px solid #ccc;
     455}
     456
     457.loginbox{
     458        width: 250px;
     459        margin:0 auto;
     460        background: #fff;
     461        border: 1px solid #ccc;
     462        text-align: left;
     463}
     464.loginbox p{
     465        padding: 8px 15px;
     466        margin:0;
     467}
     468.noborder{
     469        background: transparent;
     470        border:0;
     471}
  • mythweb/skins/grey/music.css

    Cannot display: file marked as a binary type.
    svn:mime-type = application/octet-stream
    
    Property changes on: mythweb/skins/default/img/music/ff_big.gif
    ___________________________________________________________________
    Name: svn:mime-type
       + application/octet-stream
    
    Cannot display: file marked as a binary type.
    svn:mime-type = application/octet-stream
    
    Property changes on: mythweb/skins/default/img/music/libg.png
    ___________________________________________________________________
    Name: svn:mime-type
       + application/octet-stream
    
    Cannot display: file marked as a binary type.
    svn:mime-type = application/octet-stream
    
    Property changes on: mythweb/skins/default/img/music/rew_big.gif
    ___________________________________________________________________
    Name: svn:mime-type
       + application/octet-stream
    
    Cannot display: file marked as a binary type.
    svn:mime-type = application/octet-stream
    
    Property changes on: mythweb/skins/default/img/music/paypal_donate.gif
    ___________________________________________________________________
    Name: svn:mime-type
       + application/octet-stream
    
    Cannot display: file marked as a binary type.
    svn:mime-type = application/octet-stream
    
    Property changes on: mythweb/skins/default/img/music/vol.gif
    ___________________________________________________________________
    Name: svn:mime-type
       + application/octet-stream
    
    Cannot display: file marked as a binary type.
    svn:mime-type = application/octet-stream
    
    Property changes on: mythweb/skins/default/img/music/rem.gif
    ___________________________________________________________________
    Name: svn:mime-type
       + application/octet-stream
    
    Cannot display: file marked as a binary type.
    svn:mime-type = application/octet-stream
    
    Property changes on: mythweb/skins/default/img/music/up.gif
    ___________________________________________________________________
    Name: svn:mime-type
       + application/octet-stream
    
    Cannot display: file marked as a binary type.
    svn:mime-type = application/octet-stream
    
    Property changes on: mythweb/skins/default/img/music/play.gif
    ___________________________________________________________________
    Name: svn:mime-type
       + application/octet-stream
    
    Cannot display: file marked as a binary type.
    svn:mime-type = application/octet-stream
    
    Property changes on: mythweb/skins/default/img/music/play_big.gif
    ___________________________________________________________________
    Name: svn:mime-type
       + application/octet-stream
    
    Cannot display: file marked as a binary type.
    svn:mime-type = application/octet-stream
    
    Property changes on: mythweb/skins/default/img/music/stop_big.gif
    ___________________________________________________________________
    Name: svn:mime-type
       + application/octet-stream
    
    Cannot display: file marked as a binary type.
    svn:mime-type = application/octet-stream
    
    Property changes on: mythweb/skins/default/img/music/down.gif
    ___________________________________________________________________
    Name: svn:mime-type
       + application/octet-stream
    
    Cannot display: file marked as a binary type.
    svn:mime-type = application/octet-stream
    
    Property changes on: mythweb/skins/default/img/music/add.gif
    ___________________________________________________________________
    Name: svn:mime-type
       + application/octet-stream
    
    Cannot display: file marked as a binary type.
    svn:mime-type = application/octet-stream
    
    Property changes on: mythweb/skins/default/img/music/progress_bar.gif
    ___________________________________________________________________
    Name: svn:mime-type
       + application/octet-stream
    
    Cannot display: file marked as a binary type.
    svn:mime-type = application/octet-stream
    
    Property changes on: mythweb/skins/default/img/libg.png
    ___________________________________________________________________
    Name: svn:mime-type
       + application/octet-stream
    
     
     1mp3act {
     2        padding: 22px;
     3        margin:0;
     4        color: #333;
     5        text-align: center;
     6        font: 65% Verdana, Sans-serif;
     7}
     8
     9h2.music{
     10        font-size: 100%;
     11        margin:0;
     12        padding: 0 0 5px 0;
     13
     14}
     15ul.music{
     16        list-style-type: none;
     17}
     18a.music{
     19        color: blue;
     20}
     21
     22a.music:hover{
     23        /*color: #fff;
     24        background: #F21518;
     25        text-decoration: none;*/
     26        color: #F21518;
     27}
     28img{
     29        border: 0;
     30}
     31input,select{
     32        border: 1px solid #ccc;
     33        border-color: #aaa #ccc #ccc #aaa;
     34        background: #f3f3f3;
     35        color: #555;
     36        font-size: 100%;
     37        padding: 2px 3px;
     38        vertical-align: middle;
     39       
     40}
     41input.check{
     42  border:0;
     43  padding:0;
     44  background: transparent;
     45}
     46select{
     47        padding: 2px 0 2px 3px;
     48}
     49input:focus{
     50        border: 1px solid #999;
     51        background: #FBF9D3;
     52        color: #000;
     53        border-color: #777 #bbb #bbb #777;
     54}
     55
     56input.btn,input.redbtn{
     57        background: #244A79;
     58        color: #fff;
     59        padding: 2px;
     60        border-color: #0E2F58;
     61        font: normal 10px sans-serif;
     62}
     63input.redbtn{
     64        background: #F21518;   
     65}
     66input.redbtn:hover{
     67        background: #BE0D0F;
     68}
     69input.btn:hover{
     70        background: #0E2F58;
     71}
     72
     73input.btn2{
     74        font-weight: bold;
     75        padding: 2px;
     76}
     77
     78input.btn2:hover{
     79        background: #eee;
     80        border-color: #888;
     81        color: #222;
     82}
     83
     84.left{
     85        float: left;
     86}
     87.right{
     88        float: right;
     89}
     90.center{
     91        text-align: center;
     92}
     93.clear{
     94  clear: both;
     95}
     96.error{
     97        color: #E63838;
     98        font-weight: bold;
     99}
     100p#error{
     101        color: #f20000;
     102        font-weight: bold;
     103}
     104#breadcrumb{
     105        height: 14px;
     106        padding:2px 0 0 0;
     107}
     108#breadcrumb span{
     109position: relative;
     110}
     111#breadcrumb span:hover ul{
     112        display: block;
     113}
     114#breadcrumb ul{
     115        z-index: 5;
     116        border: 1px solid #333;
     117        display: none;
     118        top:12px;
     119        left:0;
     120        position: absolute;
     121        background: transparent url("./img/libg.png");
     122        color: #fff;
     123        margin:-1px 0 0 0;
     124        padding:0;
     125        width: 150px;
     126       
     127}
     128#breadcrumb ul#letters{
     129        left: -55px;
     130        width: auto;
     131}
     132#breadcrumb span{
     133        padding: 0;
     134        margin:0;
     135}
     136#breadcrumb ul li{
     137width: 100%;
     138        padding:0;
     139        margin:0;
     140        z-index: 6;
     141}
     142#breadcrumb ul li a{
     143        display: block;
     144        padding: 2px 4px;
     145        color: #fff;
     146        margin:0;
     147        z-index: 5;
     148        text-decoration: none;
     149        font-weight: normal;
     150        font-size: 90%;
     151}
     152
     153#breadcrumb ul#letters li{
     154        float: left;
     155
     156}
     157#breadcrumb ul#letters li a{
     158        float: left;
     159       
     160}
     161#breadcrumb ul li a:hover{
     162        background: #FCF7A5;
     163        color: #000;
     164}
     165#breadcrumb ul#letters li a:hover{
     166        background: #FCF7A5;
     167        color: #000;
     168}
     169#topinfo{
     170       
     171        font-size: 90%;
     172        color: #666;
     173        text-align: left;
     174        padding: 0 0 4px 0;
     175       
     176}
     177p.pad{
     178        padding: 0px 8px;
     179}
     180
     181#wrap{
     182        background: #fff;
     183        border: 1px solid #ccc;
     184        text-align: left;
     185        padding: 0px;
     186        margin:0;
     187        position: relative;
     188
     189        color: #333;
     190}
     191
     192#header{
     193        position: relative;
     194        background: #0E2F58;
     195        height: 50px;
     196        color: #fff;
     197        padding: 8px 0 0px 15px;
     198}
     199#header #controls{
     200        float: right;
     201        background: transparent;
     202        height: 48px;
     203        margin-right: 8px;
     204        width: 48%;
     205        font-size: 90%;
     206        line-height: 1.1em;
     207        color: #fff;
     208}
     209
     210#header #controls .buttons{
     211        float: left;
     212        margin: 3px 5px 0 5px;
     213}
     214#header #controls .current{
     215        float: left;
     216        margin-top: 3px;
     217       
     218}
     219#header h1{
     220        color: #9ABEE5;
     221        padding: 0;
     222        margin:0;
     223        font-size: 150%;
     224}
     225ul#nav{
     226        position: absolute;
     227        bottom:0;
     228        list-style-type: none;
     229        margin:0;
     230        padding:0;
     231}
     232ul#nav li{
     233        float: left;
     234        margin-right: 5px;
     235}
     236ul#nav li a{
     237        display: block;
     238        background: #244A79;
     239        padding: 4px 5px;
     240        color: #ccc;
     241        text-decoration: none;
     242        margin:0;
     243}
     244ul#nav li a:hover{
     245        background: #416899;
     246        color: #fff;
     247}
     248ul#nav li a.c{
     249        background: #fff;
     250        color: #F48603;
     251        font-weight: bold;
     252}
     253#loading{
     254        display: none;
     255        position: absolute;
     256        top: 80px;
     257        color: #78B855;
     258        padding: 10px;
     259        background: #CCFF99;
     260        border: 1px solid #78B855;
     261        z-index: 4;
     262        left: 30%;
     263}
     264#loading h1{
     265  font-size: 140%;
     266}
     267#left{
     268        float: left;
     269        width: 48%;
     270        margin: 15px 0 25px 15px;
     271}
     272#right{
     273        float: right;
     274        width: 45%;
     275        margin: 15px 15px 25px 0;
     276
     277}
     278.box{
     279        background: #E0E0E0;
     280        border: 1px solid #ccc;
     281        padding: 0 0 8px 0;
     282        position: relative;
     283}
     284#box_extra{
     285        display: none;
     286        z-index: 2;
     287        position: absolute;
     288        top: 25px;
     289        left:5%;
     290        width: 450px;
     291        height: 190px;
     292        background: transparent url("./img/libg.png");
     293        color: #fff;
     294        font-size: 110%;
     295        padding: 5px;
     296}
     297#box_extra h2{
     298        font-size: 120%;
     299}
     300#box_extra input{
     301        background: #333;
     302        border-color: #999;
     303        color: #fff;
     304}
     305
     306#box_extra select{
     307        background: #333;
     308        border-color: #999;
     309        color: #fff;
     310}
     311
     312.box ul{
     313        margin: 0 10px;
     314        padding: 0px 0px;
     315        background: #f3f3f3;
     316        clear: both;
     317}
     318.box ul li{
     319        padding: 2px 0 1px 4px;
     320        border: 1px solid transparent;
     321        border-width: 1px 0px 1px 0px;
     322        position: relative;
     323        background: #f3f3f3;
     324}
     325
     326.box ul li.alt{
     327        background: #DEE6EC;
     328}
     329.box ul li span.user{
     330        float: left;
     331        width: 200px;
     332}
     333.box ul li small{
     334        color: #888;
     335        letter-spacing: -1px;
     336}
     337
     338.box ul li span.links a{
     339        text-decoration: underline;
     340        color: blue;
     341}
     342.box ul li span.links a:hover{
     343        color: red;
     344}
     345.box ul li:hover{
     346        background: #FCF7A5;
     347        color: #000;
     348        border-color: #999;
     349}
     350.box ul li.currentplay{
     351        background: #96D1EF;
     352        color: #000;
     353        border-color: #666;
     354}
     355
     356.box ul li p{
     357        z-index:5;
     358        display: none;
     359        position: absolute;
     360        top: 7px;
     361        font-size: 90%;
     362        padding: 2px;
     363        right: 15px;
     364        width: 145px;
     365        background: transparent url("./img/libg.png");
     366        color: #fff;
     367}
     368
     369.box ul li:hover p{
     370        display: block;
     371}
     372
     373.box ul li a{
     374        text-decoration: none;
     375        color: #333;
     376}
     377.box ul li a:hover{
     378        color: #000;
     379}
     380.box ul#letters{
     381        height: 18px;
     382        padding-left: 5px;
     383}
     384
     385.box ul#letters li{
     386        float: left;
     387        padding: 2px 2px;
     388        background: none;
     389        border: 1px solid transparent;
     390}
     391
     392.box ul#letters li:hover{
     393        background: #FCF7A5;
     394        border-color: #999;
     395}
     396
     397.box p{
     398        padding: 0 10px;
     399        margin: 8px 0 4px 0;
     400
     401}
     402.box p img{
     403        display: block;
     404        width: 60px;
     405        float: right;
     406        padding: 2px;
     407        background: #f3f3f3;
     408        border: 1px solid #999;
     409        margin-bottom: 4px;     
     410}
     411.box img#bigart{
     412        display: none;
     413        position: absolute;
     414        z-index: 2;
     415        background: #f3f3f3;
     416        padding: 3px;
     417        border: 1px solid #666;
     418        top:10px;
     419        right: 80px;
     420}
     421.box p img:hover{
     422        border-color: #555;
     423        cursor: pointer;
     424}
     425
     426.box .head{
     427        padding: 4px;
     428        background: #ccc;
     429}
     430.box .head a{
     431        background: #244A79;
     432        color: #fff;
     433        padding: 2px;
     434        text-decoration: none;
     435        font: normal 9px sans-serif;
     436}
     437.box .head a:hover{
     438        background: #0E2F58;
     439}
     440.box .head a.red{
     441        background: #F21518;
     442}       
     443.box .head a.red:hover{
     444        background: #BE0D0F;
     445}
     446.box .head h2{
     447        font-size: 120%;
     448        padding: 0;
     449}
     450.box h3{
     451        padding: 0 0 0 0px;
     452        margin: 0 10px 0 10px;
     453        font-size: 120%;
     454        border-bottom: 1px solid #ccc;
     455}
     456
     457.loginbox{
     458        width: 250px;
     459        margin:0 auto;
     460        background: #fff;
     461        border: 1px solid #ccc;
     462        text-align: left;
     463}
     464.loginbox p{
     465        padding: 8px 15px;
     466        margin:0;
     467}
     468.noborder{
     469        background: transparent;
     470        border:0;
     471}
  • mythweb/modules/music/mp3act_main.php

    Property changes on: mythweb/skins/grey/music.css
    ___________________________________________________________________
    Name: svn:executable
       + *
    
    Cannot display: file marked as a binary type.
    svn:mime-type = application/octet-stream
    
    Property changes on: mythweb/skins/grey/img/music/ff_big.gif
    ___________________________________________________________________
    Name: svn:executable
       + *
    Name: svn:mime-type
       + application/octet-stream
    
    Cannot display: file marked as a binary type.
    svn:mime-type = application/octet-stream
    
    Property changes on: mythweb/skins/grey/img/music/libg.png
    ___________________________________________________________________
    Name: svn:executable
       + *
    Name: svn:mime-type
       + application/octet-stream
    
    Cannot display: file marked as a binary type.
    svn:mime-type = application/octet-stream
    
    Property changes on: mythweb/skins/grey/img/music/rew_big.gif
    ___________________________________________________________________
    Name: svn:executable
       + *
    Name: svn:mime-type
       + application/octet-stream
    
    Cannot display: file marked as a binary type.
    svn:mime-type = application/octet-stream
    
    Property changes on: mythweb/skins/grey/img/music/paypal_donate.gif
    ___________________________________________________________________
    Name: svn:executable
       + *
    Name: svn:mime-type
       + application/octet-stream
    
    Cannot display: file marked as a binary type.
    svn:mime-type = application/octet-stream
    
    Property changes on: mythweb/skins/grey/img/music/vol.gif
    ___________________________________________________________________
    Name: svn:executable
       + *
    Name: svn:mime-type
       + application/octet-stream
    
    Cannot display: file marked as a binary type.
    svn:mime-type = application/octet-stream
    
    Property changes on: mythweb/skins/grey/img/music/rem.gif
    ___________________________________________________________________
    Name: svn:executable
       + *
    Name: svn:mime-type
       + application/octet-stream
    
    Cannot display: file marked as a binary type.
    svn:mime-type = application/octet-stream
    
    Property changes on: mythweb/skins/grey/img/music/up.gif
    ___________________________________________________________________
    Name: svn:executable
       + *
    Name: svn:mime-type
       + application/octet-stream
    
    Cannot display: file marked as a binary type.
    svn:mime-type = application/octet-stream
    
    Property changes on: mythweb/skins/grey/img/music/play.gif
    ___________________________________________________________________
    Name: svn:executable
       + *
    Name: svn:mime-type
       + application/octet-stream
    
    Cannot display: file marked as a binary type.
    svn:mime-type = application/octet-stream
    
    Property changes on: mythweb/skins/grey/img/music/play_big.gif
    ___________________________________________________________________
    Name: svn:executable
       + *
    Name: svn:mime-type
       + application/octet-stream
    
    Cannot display: file marked as a binary type.
    svn:mime-type = application/octet-stream
    
    Property changes on: mythweb/skins/grey/img/music/stop_big.gif
    ___________________________________________________________________
    Name: svn:executable
       + *
    Name: svn:mime-type
       + application/octet-stream
    
    Cannot display: file marked as a binary type.
    svn:mime-type = application/octet-stream
    
    Property changes on: mythweb/skins/grey/img/music/down.gif
    ___________________________________________________________________
    Name: svn:executable
       + *
    Name: svn:mime-type
       + application/octet-stream
    
    Cannot display: file marked as a binary type.
    svn:mime-type = application/octet-stream
    
    Property changes on: mythweb/skins/grey/img/music/add.gif
    ___________________________________________________________________
    Name: svn:executable
       + *
    Name: svn:mime-type
       + application/octet-stream
    
    Cannot display: file marked as a binary type.
    svn:mime-type = application/octet-stream
    
    Property changes on: mythweb/skins/grey/img/music/progress_bar.gif
    ___________________________________________________________________
    Name: svn:executable
       + *
    Name: svn:mime-type
       + application/octet-stream
    
    Cannot display: file marked as a binary type.
    svn:mime-type = application/octet-stream
    
    Property changes on: mythweb/skins/grey/img/libg.png
    ___________________________________________________________________
    Name: svn:executable
       + *
    Name: svn:mime-type
       + application/octet-stream
    
     
     1<?php
     2/*************************************************************************
     3*  mp3act Digital Music System - A streaming and jukebox solution for your digital music collection
     4*  http://www.mp3act.net
     5*  Copyright (C) 2005 Jon Buda (www.jonbuda.com)
     6
     7*  This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
     8
     9*  This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
     10
     11*  You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
     12*************************************************************************/
     13
     14include_once("mp3act_functions.php");
     15require_once("mp3act_sajax.php");
     16
     17$sajax_remote_uri = 'index.php';
     18$sajax_request_type = "POST";
     19sajax_init();
     20// list of functions to export
     21sajax_export("getCurrentSong","getUser","musicLookup","playlist_rem","playlist_add","playlistInfo","clearPlaylist","buildBreadcrumb","play","playlist_move","searchMusic","editUser","switchMode","viewPlaylist","getDropDown","savePlaylist","getRandItems","randPlay","resetDatabase","createInviteCode","editSettings","deletePlaylist","adminEditUsers","adminAddUser","submitScrobbler");
     22sajax_handle_client_request(); // serve client instances
     23
     24require 'modules/_shared/tmpl/'.tmpl.'/header.php';
     25?>
     26<link rel="Stylesheet" href="<?php echo skin_url ?>music.css" type="text/css" />
     27
     28        <script type="text/javascript">
     29                        var page = 'search';
     30                        var mode = '<?php echo $_SESSION['sess_playmode']; ?>';
     31                        var bc_parenttype = '';
     32                        var bc_parentitem = '';
     33                        var bc_childtype = '';
     34                        var bc_childitem = '';
     35                        var prevpage = '';
     36                        var currentpage = 'search';
     37                        var nowplaying = 0;
     38                        var isplaying = 0;
     39                        var clearbc = 1;
     40                       
     41        <?php sajax_show_javascript(); ?></script>
     42        <script type="text/javascript" src="mp3act_js.js.php"></script>
     43        <script type="text/javascript" src="mp3act_fat.js"></script>
     44
     45<div id="wrap">
     46        <div id="header">
     47                <div id="controls">
     48                       
     49                </div>
     50                <h1 id="pagetitle"></h1>
     51                <ul class="music" id="nav">
     52                        <li><a href="#" id="search_music" onclick="switchPage('search'); return false;" title="Search the Music Database">Search</a></li>
     53                        <li><a href="#" id="browse" onclick="switchPage('browse'); return false;"  title="Browse the Music Database" class="c">Browse</a></li>
     54                        <li><a href="#" id="random" onclick="switchPage('random'); return false;" title="Create Random Mixes">Random</a></li>
     55                        <li><a href="#" id="playlists" onclick="switchPage('playlists'); return false;" title="Load Saved Playlists">Playlists</a></li>
     56                        <li><a href="#" id="stats" onclick="switchPage('stats'); return false;" title="View Server Statistics">Stats</a></li>
     57                </ul>
     58               
     59        </div>
     60        <div id="loading"><h1>LOADING...</h1></div>
     61        <div id="left">
     62                <h2 id="breadcrumb"></h2>
     63                <div class="box" id="info">
     64               
     65                </div>
     66        </div>
     67       
     68        <div id="right">
     69                        <div class="box">
     70                                <div class="head">
     71                                        <div class="right"><a href="#" onclick="play('pl',0); return false;" title="Play This Playlist Now">play</a> <a href="#" onclick="savePL('open',0); return false;" title="Save Current Playlist">save</a> <a href="#" onclick="plclear(); return false;"class="red" title="Clear the Current Playlist">clear</a></div>
     72                                        <h2 id="pl_title"></h2><span id="pl_info"></span>
     73                                </div>
     74                        <ul class="music" id="playlist">
     75                                       
     76                        </ul>
     77                       
     78                        <div id="box_extra"> </div>
     79                        </div>
     80        </div>
     81        <div class="clear"></div>
     82</div>
     83<iframe src="mp3act_hidden.php" frameborder="0" height="0" width="0" id="hidden" name="hidden"></iframe>
     84<?
     85require 'modules/_shared/tmpl/'.tmpl.'/footer.php';
     86?>
  • mythweb/modules/music/handler.php

     
    11<?php
    2 /**
    3  * MythMusic browser
    4  *
    5  * @url         $URL: svn+ssh://xris@cvs.mythtv.org/var/lib/svn/trunk/mythplugins/mythweb/modules/music/init.php $
    6  * @date        $Date$
    7  * @version     $Revision$
    8  * @author      $Author$
    9  * @license     GPL
    10  *
    11  * @package     MythWeb
    12  * @subpackage  Music
    13  *
    14 /**/
    152
    16 // Make sure the music directory exists
    17     if (file_exists('data/music')) {
    18     // File is not a directory or a symlink
    19         if (!is_dir('data/music') && !is_link('data/music')) {
    20             custom_error('An invalid file exists at data/music.  Please remove it in'
    21                         .' order to use the music portions of MythWeb.');
    22         }
    23     }
    24 // Create the symlink, if possible.
    25 //
    26 // NOTE:  Errors have been disabled because if I turn them on, people hosting
    27 //        MythWeb on Windows machines will have issues.  I will turn the errors
    28 //        back on when I find a clean way to do so.
    29 //
    30     else {
    31         $dir = $db->query_col('SELECT data
    32                                  FROM settings
    33                                 WHERE value="MusicLocation" AND hostname=?',
    34                               hostname
    35                              );
    36         if ($dir) {
    37             $ret = @symlink($dir, 'data/music');
    38             if (!$ret) {
    39                 #custom_error("Could not create a symlink to $dir, the local MythMusic directory"
    40                 #            .' for this hostname ('.hostname.').  Please create a symlink to your'
    41                 #            .' MythMusic directory at data/music in order to use the music'
    42                 #            .' portions of MythWeb.');
    43             }
    44         }
    45         else {
    46             #custom_error('Could not find a value in the database for the MythMusic directory'
    47             #            .' for this hostname ('.hostname.').  Please create a symlink to your'
    48             #            .' MythMusic directory at data/music in order to use the music'
    49             #            .' portions of MythWeb.');
    50         }
    51     }
     3    if (tmpl == "compact")
     4        {
     5        require_once("music_handler.php");
     6        }
     7    else
     8        {
     9//        require_once "includes/init.php";
    5210
    53 //
    54 //  Someday, music.php will let us stream
    55 //  entire playlists to any spot on planet earth
    56 //
    57 require_once tmpl_dir.'music.php';
    58 
    59 $mythmusic = new mythMusic();
    60 $mythmusic->display();
    61 
    62 class mythMusic {
    63     var $filterPlaylist;
    64     var $filterArtist;
    65     var $filterAlbum;
    66     var $filterGenre;
    67     var $filterRank;
    68     var $filterSonglist;
    69     var $keepFilters;
    70     var $filter;
    71     var $totalCount;
    72     var $offset;
    73 
    74     var $result;
    75 
    76 
    77     var $intid;
    78     var $artist;
    79     var $album;
    80     var $title;
    81     var $genre;
    82     var $length;
    83     var $rating;
    84     var $filename;
    85     var $urlfilename;
    86 
    87     var $alphalink;
    88     var $alphaoffset;
    89 
    90     function mythMusic()
    91     {
    92         if($_GET['offset'] >=0 )
    93             $this->offset=$_GET['offset'];
    94         else
    95             $this->offset=0;
    96 
    97         /**** If alphalink set, then change offset to new value ****/
    98         if ($_GET['alphalink']) {
    99             $alphalink = $_GET['alphalink'];
    100             $result=mysql_query("select count(1) from musicmetadata where upper(artist) < ".escape($alphalink));
    101             $alphaoffset=mysql_fetch_row($result);
    102             $this->offset=$alphaoffset[0];
    103             mysql_free_result($result);
    104         }
    105 
    106         if($_GET['filterPlaylist'])
    107         {
    108             $this->filterPlaylist=$_GET['filterPlaylist'];
    109             $_GET['filterPlaylist'];
    110         }
    111         else
    112             $this->filterPlaylist="_All_";
    113 
    114         if($_GET['filterArtist'])
    115         {
    116             $this->filterArtist=$_GET['filterArtist'];
    117         }
    118         else
    119             $this->filterArtist="_All_";
    120 
    121         if($_GET['filterAlbum'])
    122         {
    123             $this->filterAlbum=$_GET['filterAlbum'];
    124         }
    125         else
    126             $this->filterAlbum="_All_";
    127         if($_GET['filterGenre'])
    128         {
    129             $this->filterGenre=$_GET['filterGenre'];
    130         }
    131         else
    132             $this->filterGenre="_All_";
    133 
    134 
    135         if($_GET['filterRank'])
    136             $this->filterRank=$_GET['filterRank'];
    137         else
    138             $this->filterRank="_All_";
    139     }
    140 
    141     function readRow()
    142     {
    143 
    144             if($row=mysql_fetch_row($this->result))
    145             {
    146                 $this->intid=$row[0];
    147                 $this->artist=$row[1];
    148                 $this->album=$row[2];
    149                 $this->title=$row[3];
    150                 $this->genre=$row[4];
    151                 $this->length=$row[5];
    152                 $this->rating=$row[6];
    153                 $this->filename=$row[7];
    154 
    155                 $this->urlfilename=root.'data/music';
    156                 global $musicdir;
    157                 foreach (preg_split('/\//', substr($this->filename, strlen($musicdir))) as $dir) {
    158                     if (!$dir) continue;
    159                     $this->urlfilename .= '/'.rawurlencode(utf8tolocal($dir));
    160                 }
    161 
    162                 return(true);
    163             }
    164             return(false);
    165     }
    166 
    167 
    168 
    169     function display()
    170     {
    171         $music = new Theme_music();
    172         $this->init($music->getMaxPerPage());
    173         $music->setOffset($this->offset);
    174         $music->setTotalCount($this->totalCount);
    175 
    176         $music->print_header($this->filterPlaylist,$this->filterArtist,$this->filterAlbum,$this->filterGenre);
    177         if($this->totalCount > 0)
    178         {
    179             while($this->readRow())
    180             {
    181                 $music->printDetail($this->title,$this->length,$this->artist,$this->album,$this->genre,$this->urlfilename);
    182             }
    183         }
    184         else
    185         {
    186             $music->printNoDetail();
    187         }
    188         if($this->result)
    189             mysql_free_result($this->result);
    190 
    191         $music->print_footer();
    192     }
    193 
    194     function prepFilter()
    195     {
    196         $prevFilter=0;
    197         $thisFilter="";
    198 
    199         if($this->filterPlaylist != "_All_")
    200         {
    201             $playlistResult = mysql_query("select playlistid,name,songlist,hostname from musicplaylist where playlistid=".escape($this->filterPlaylist));
    202             if($playlistResult)
    203             {
    204                 if(mysql_num_rows($playlistResult)==1)
    205                 {
    206                     $row=mysql_fetch_row($playlistResult);
    207                     if($row)
    208                     {
    209 
    210                         $this->filterSonglist=$row[2];
    211                         if($prevFilter==1)
    212                             $this->filter=$this->filter . "and intid in (" . $this->filterSonglist . ")";
    213                         else
    214                         {
    215                             $this->filter="intid in (" . $this->filterSonglist . ")";
    216                             $prevFilter=1;
    217                         }
    218 
    219                         $this->keepFilters="&amp;filterPlaylist=" . urlencode($this->filterPlaylist);
    220 
    221                     }
    222                 }
    223             }
    224         }
    225 
    226         if($this->filterArtist != "_All_" )
    227         {
    228             if($prevFilter==1)
    229                 $this->filter=$this->filter . "and artist=".escape($this->filterArtist);
    230             else
    231             {
    232                 $this->filter="artist=".escape($this->filterArtist);
    233                 $prevFilter=1;
    234             }
    235 
    236             $this->keepFilters="&amp;filterArtist=" . urlencode($this->filterArtist);
    237 
    238         }
    239         if($this->filterAlbum != "_All_")
    240         {
    241             if($prevFilter==1)
    242             {
    243                 $this->filter= $this->filter . "and album=\"" . $this->filterAlbum . "\"";
    244             }
    245             else
    246             {
    247                 $this->filter="album=\"" . $this->filterAlbum . "\"";
    248                 $prevFilter=1;
    249             }
    250             $this->keepFilters =$this->keepFilters . "&amp;filterAlbum=" . urlencode($this->filterAlbum) ;
    251 
    252         }
    253         if($this->filterGenre != "_All_")
    254         {
    255             if($prevFilter==1)
    256             {
    257                 $this->filter= $this->filter . "and genre=" . $this->filterGenre ;
    258             }
    259             else
    260             {
    261                 $this->filter="genre=\"" . $this->filterGenre . "\"";
    262                 $prevFilter=1;
    263             }
    264             $this->keepFilters =$this->keepFilters . "&amp;filterGenre=" . urlencode($this->filterGenre);
    265 
    266         }
    267 
    268         if($this->filterRank != "_All_")
    269         {
    270             if($prevFilter==1)
    271             {
    272                 $this->filter=$this->filter . "and rank=" . $this->filterRank;
    273             }
    274             else
    275             {
    276                 $this->filter="rank=" . $this->filterRank;
    277                 $prevFilter=1;
    278             }
    279             $this->keepFilters =$this->keepFilters . "&amp;filterRank=" . urlencode($this->filterRank);
    280         }
    281 
    282 
    283 
    284     }
    285 
    286     function init($maxPerPage) {
    287         global $db;
    288         $this->prepFilter();
    289         if (empty($this->filter))
    290             $this->totalCount = $db->query_col('SELECT COUNT(*) FROM musicmetadata');
    291         else
    292             $this->totalCount = $db->query_col('SELECT COUNT(*) FROM musicmetadata WHERE '.$this->filter);
    293 
    294         if ($this->totalCount > 0) {
    295             if($this->offset > 0) {
    296                 $limitText='LIMIT ' . $this->offset . ',' . $maxPerPage;
    297             }
    298             else
    299                 $limitText='LIMIT ' . $maxPerPage;
    300 
    301             if (empty($this->filter))
    302                 $this->result=mysql_query("select intid,artist,album,title,genre,length,rating,filename from musicmetadata order by artist,album,tracknum " . $limitText);
    303             else
    304                 $this->result=mysql_query("select intid,artist,album,title,genre,length,rating,filename from musicmetadata where $this->filter order by artist,album,tracknum $limitText");
    305         }
    306     }
    307 }
    308 
    309 
     11        if (in_array($Path[1], array('mp3act_js.js.php', 'mp3act_fat.js', 'mp3act_hidden.php')))
     12            {
     13            require_once 'modules/music/'.$Path[1];
     14            exit();
     15                }
     16        if (strstr($Path[1],"mp3act_playstream.php") != false)
     17            {
     18            require_once 'modules/music/mp3act_playstream.php';
     19            exit();
     20            }
     21   
     22        require_once 'modules/music/mp3act_main.php';
     23        }
     24?>   
     25 No newline at end of file
  • mythweb/modules/music/music_handler.php

     
     1<?php
     2/**
     3 * MythMusic browser
     4 *
     5 * @url         $URL: svn+ssh://xris@cvs.mythtv.org/var/lib/svn/trunk/mythplugins/mythweb/modules/music/init.php $
     6 * @date        $Date: 2006-03-26 12:09:14 +0200 (So, 26 MÀr 2006) $
     7 * @version     $Revision: 9493 $
     8 * @author      $Author: xris $
     9 * @license     GPL
     10 *
     11 * @package     MythWeb
     12 * @subpackage  Music
     13 *
     14/**/
     15
     16// Make sure the music directory exists
     17    if (file_exists('data/music')) {
     18    // File is not a directory or a symlink
     19        if (!is_dir('data/music') && !is_link('data/music')) {
     20            custom_error('An invalid file exists at data/music.  Please remove it in'
     21                        .' order to use the music portions of MythWeb.');
     22        }
     23    }
     24// Create the symlink, if possible.
     25//
     26// NOTE:  Errors have been disabled because if I turn them on, people hosting
     27//        MythWeb on Windows machines will have issues.  I will turn the errors
     28//        back on when I find a clean way to do so.
     29//
     30    else {
     31        $dir = $db->query_col('SELECT data
     32                                 FROM settings
     33                                WHERE value="MusicLocation" AND hostname=?',
     34                              hostname
     35                             );
     36        if ($dir) {
     37            $ret = @symlink($dir, 'data/music');
     38            if (!$ret) {
     39                #custom_error("Could not create a symlink to $dir, the local MythMusic directory"
     40                #            .' for this hostname ('.hostname.').  Please create a symlink to your'
     41                #            .' MythMusic directory at data/music in order to use the music'
     42                #            .' portions of MythWeb.');
     43            }
     44        }
     45        else {
     46            #custom_error('Could not find a value in the database for the MythMusic directory'
     47            #            .' for this hostname ('.hostname.').  Please create a symlink to your'
     48            #            .' MythMusic directory at data/music in order to use the music'
     49            #            .' portions of MythWeb.');
     50        }
     51    }
     52
     53//
     54//  Someday, music.php will let us stream
     55//  entire playlists to any spot on planet earth
     56//
     57require_once tmpl_dir.'music.php';
     58
     59$mythmusic = new mythMusic();
     60$mythmusic->display();
     61
     62class mythMusic {
     63    var $filterPlaylist;
     64    var $filterArtist;
     65    var $filterAlbum;
     66    var $filterGenre;
     67    var $filterRank;
     68    var $filterSonglist;
     69    var $keepFilters;
     70    var $filter;
     71    var $totalCount;
     72    var $offset;
     73
     74    var $result;
     75
     76
     77    var $intid;
     78    var $artist;
     79    var $album;
     80    var $title;
     81    var $genre;
     82    var $length;
     83    var $rating;
     84    var $filename;
     85    var $urlfilename;
     86
     87    var $alphalink;
     88    var $alphaoffset;
     89
     90    function mythMusic()
     91    {
     92        if($_GET['offset'] >=0 )
     93            $this->offset=$_GET['offset'];
     94        else
     95            $this->offset=0;
     96
     97        /**** If alphalink set, then change offset to new value ****/
     98        if ($_GET['alphalink']) {
     99            $alphalink = $_GET['alphalink'];
     100           
     101            $result=mysql_query("SELECT count(1) FROM music_songs INNER JOIN music_artists ON music_songs.artist_id = music_artists.artist_id WHERE (((UPPER(music_artists.artist_name))< \"".$alphalink."\")) ORDER BY music_artists.artist_name;");
     102            $alphaoffset=mysql_fetch_row($result);
     103            $this->offset=$alphaoffset[0];
     104            mysql_free_result($result);
     105        }
     106
     107        if($_GET['filterPlaylist'])
     108        {
     109            $this->filterPlaylist=$_GET['filterPlaylist'];
     110            $_GET['filterPlaylist'];
     111        }
     112        else
     113            $this->filterPlaylist="_All_";
     114
     115        if($_GET['filterArtist'])
     116        {
     117            $this->filterArtist=$_GET['filterArtist'];
     118        }
     119        else
     120            $this->filterArtist="_All_";
     121
     122        if($_GET['filterAlbum'])
     123        {
     124            $this->filterAlbum=$_GET['filterAlbum'];
     125        }
     126        else
     127            $this->filterAlbum="_All_";
     128        if($_GET['filterGenre'])
     129        {
     130            $this->filterGenre=$_GET['filterGenre'];
     131        }
     132        else
     133            $this->filterGenre="_All_";
     134
     135
     136        if($_GET['filterRank'])
     137            $this->filterRank=$_GET['filterRank'];
     138        else
     139            $this->filterRank="_All_";
     140    }
     141
     142    function readRow()
     143    {
     144
     145            if($row=mysql_fetch_row($this->result))
     146            {
     147                $this->intid=$row[0];
     148                $this->artist=$row[1];
     149                $this->album=$row[2];
     150                $this->title=$row[3];
     151                $this->genre=$row[4];
     152                $this->length=$row[5];
     153                $this->rating=$row[6];
     154                $this->filename=$row[7];
     155
     156                $this->urlfilename=root.'data/music';
     157                global $musicdir;
     158                foreach (preg_split('/\//', substr($this->filename, strlen($musicdir))) as $dir) {
     159                    if (!$dir) continue;
     160                    $this->urlfilename .= '/'.rawurlencode(utf8tolocal($dir));
     161                }
     162
     163                return(true);
     164            }
     165            return(false);
     166    }
     167
     168
     169
     170    function display()
     171    {
     172        $music = new Theme_music();
     173        $this->init($music->getMaxPerPage());
     174        $music->setOffset($this->offset);
     175        $music->setTotalCount($this->totalCount);
     176
     177        $music->print_header($this->filterPlaylist,$this->filterArtist,$this->filterAlbum,$this->filterGenre);
     178        if($this->totalCount > 0)
     179        {
     180            while($this->readRow())
     181            {
     182                $music->printDetail($this->title,$this->length,$this->artist,$this->album,$this->genre,$this->urlfilename);
     183            }
     184        }
     185        else
     186        {
     187            $music->printNoDetail();
     188        }
     189        if($this->result)
     190            mysql_free_result($this->result);
     191
     192        $music->print_footer();
     193    }
     194
     195    function prepFilter()
     196    {
     197        $prevFilter=0;
     198        $thisFilter="";
     199
     200        if($this->filterPlaylist != "_All_")
     201        {
     202            $playlistResult = mysql_query("select playlistid,name,songlist,hostname from musicplaylist where playlistid=".escape($this->filterPlaylist));
     203            if($playlistResult)
     204            {
     205                if(mysql_num_rows($playlistResult)==1)
     206                {
     207                    $row=mysql_fetch_row($playlistResult);
     208                    if($row)
     209                    {
     210
     211                        $this->filterSonglist=$row[2];
     212                        if($prevFilter==1)
     213                            $this->filter=$this->filter . "and song_id in (" . $this->filterSonglist . ")";
     214                        else
     215                        {
     216                            $this->filter="song_id in (" . $this->filterSonglist . ")";
     217                            $prevFilter=1;
     218                        }
     219
     220                        $this->keepFilters="&amp;filterPlaylist=" . urlencode($this->filterPlaylist);
     221
     222                    }
     223                }
     224            }
     225        }
     226
     227        if($this->filterArtist != "_All_" )
     228        {
     229            if($prevFilter==1)
     230                $this->filter=$this->filter . "and artist_name=".escape($this->filterArtist);
     231            else
     232            {
     233                $this->filter="artist_name=".escape($this->filterArtist);
     234                $prevFilter=1;
     235            }
     236
     237            $this->keepFilters="&amp;filterArtist=" . urlencode($this->filterArtist);
     238
     239        }
     240        if($this->filterAlbum != "_All_")
     241        {
     242            if($prevFilter==1)
     243            {
     244                $this->filter= $this->filter . "and album_name=\"" . $this->filterAlbum . "\"";
     245            }
     246            else
     247            {
     248                $this->filter="album_name=\"" . $this->filterAlbum . "\"";
     249                $prevFilter=1;
     250            }
     251            $this->keepFilters =$this->keepFilters . "&amp;filterAlbum=" . urlencode($this->filterAlbum) ;
     252
     253        }
     254        if($this->filterGenre != "_All_")
     255        {
     256            if($prevFilter==1)
     257            {
     258                $this->filter= $this->filter . "and genre=" . $this->filterGenre ;
     259            }
     260            else
     261            {
     262                $this->filter="genre=\"" . $this->filterGenre . "\"";
     263                $prevFilter=1;
     264            }
     265            $this->keepFilters =$this->keepFilters . "&amp;filterGenre=" . urlencode($this->filterGenre);
     266
     267        }
     268
     269        if($this->filterRank != "_All_")
     270        {
     271            if($prevFilter==1)
     272            {
     273                $this->filter=$this->filter . "and rank=" . $this->filterRank;
     274            }
     275            else
     276            {
     277                $this->filter="rank=" . $this->filterRank;
     278                $prevFilter=1;
     279            }
     280            $this->keepFilters =$this->keepFilters . "&amp;filterRank=" . urlencode($this->filterRank);
     281        }
     282
     283
     284
     285    }
     286
     287    function init($maxPerPage) {
     288        global $db;
     289        $this->prepFilter();
     290        if (empty($this->filter))
     291            $this->totalCount = $db->query_col('SELECT COUNT(*) FROM music_songs');
     292        else
     293            $this->totalCount = $db->query_col('SELECT COUNT(*) FROM ((music_songs INNER JOIN music_artists ON music_songs.artist_id = music_artists.artist_id) INNER JOIN music_albums ON music_songs.album_id = music_albums.album_id) INNER JOIN music_genres ON music_songs.genre_id = music_genres.genre_id WHERE '.$this->filter);
     294        if ($this->totalCount > 0) {
     295            if($this->offset > 0) {
     296                $limitText='LIMIT ' . $this->offset . ',' . $maxPerPage;
     297            }
     298            else
     299                $limitText='LIMIT ' . $maxPerPage;
     300
     301            if (empty($this->filter))
     302           
     303                $this->result=mysql_query("SELECT music_songs.song_id, music_artists.artist_name, music_albums.album_name, music_songs.name, music_genres.genre, music_songs.length, music_songs.rating, music_songs.filename FROM ((music_songs INNER JOIN music_artists ON music_songs.artist_id = music_artists.artist_id) INNER JOIN music_albums ON music_songs.album_id = music_albums.album_id) INNER JOIN music_genres ON music_songs.genre_id = music_genres.genre_id order by artist_name,album_name,track " . $limitText);
     304                //$this->result=mysql_query("select intid,artist,album,title,genre,length,rating,filename from music_songs order by artist,album,tracknum " . $limitText);
     305            else
     306                $this->result=mysql_query("SELECT music_songs.song_id, music_artists.artist_name, music_albums.album_name, music_songs.name, music_genres.genre, music_songs.length, music_songs.rating, music_songs.filename FROM ((music_songs INNER JOIN music_artists ON music_songs.artist_id = music_artists.artist_id) INNER JOIN music_albums ON music_songs.album_id = music_albums.album_id) INNER JOIN music_genres ON music_songs.genre_id = music_genres.genre_id where $this->filter order by artist_name,album_name,track " . $limitText);
     307                //$this->result=mysql_query("select intid,artist,album,title,genre,length,rating,filename from music_songs where $this->filter order by artist,album,tracknum $limitText");
     308        }
     309    }
     310}
     311
     312
  • mythweb/modules/music/mp3act_sajax.php

     
     1<?php   
     2if (!isset($SAJAX_INCLUDED)) {
     3
     4        /* 
     5         * GLOBALS AND DEFAULTS
     6         *
     7         */
     8        $sajax_debug_mode = 0;
     9        $sajax_export_list = array();
     10        $sajax_request_type = "GET";
     11        $sajax_remote_uri = "";
     12       
     13        /*
     14         * CODE
     15         *
     16         */
     17         
     18        //
     19        // Initialize the Sajax library.
     20        //
     21        function sajax_init() {
     22        }
     23       
     24        //
     25        // Helper function to return the script's own URI.
     26        //
     27        function sajax_get_my_uri() {
     28                global $REQUEST_URI;
     29               
     30                return $REQUEST_URI;
     31        }
     32        $sajax_remote_uri = sajax_get_my_uri();
     33       
     34        //
     35        // Helper function to return an eval()-usable representation
     36        // of an object in JavaScript.
     37        //
     38        function sajax_get_js_repr($value) {
     39                $type = gettype($value);
     40               
     41                if ($type == "boolean" ||
     42                        $type == "integer") {
     43                        return "parseInt($value)";
     44                }
     45                elseif ($type == "double") {
     46                        return "parseFloat($value)";
     47                }
     48                elseif ($type == "array" || $type == "object" ) {
     49                        //
     50                        // XXX Arrays with non-numeric indices are not
     51                        // permitted according to ECMAScript, yet everyone
     52                        // uses them.. We'll use an object.
     53                        //
     54                        $s = "{ ";
     55                        if ($type == "object") {
     56                                $value = get_object_vars($value);
     57                        }
     58                        foreach ($value as $k=>$v) {
     59                                $esc_key = sajax_esc($k);
     60                                if (is_numeric($k))
     61                                        $s .= "$k: " . sajax_get_js_repr($v) . ", ";
     62                                else
     63                                        $s .= "\"$esc_key\": " . sajax_get_js_repr($v) . ", ";
     64                        }
     65                        return substr($s, 0, -2) . " }";
     66                }
     67                else {
     68                        $esc_val = sajax_esc($value);
     69                        $s = "\"$esc_val\"";
     70                        return $s;
     71                }
     72        }
     73
     74        function sajax_handle_client_request() {
     75                global $sajax_export_list;
     76               
     77                $mode = "";
     78               
     79                if (! empty($_GET["rs"]))
     80                        $mode = "get";
     81               
     82                if (!empty($_POST["rs"]))
     83                        $mode = "post";
     84                       
     85                if (empty($mode))
     86                        return;
     87
     88                $target = "";
     89               
     90                if ($mode == "get") {
     91                        // Bust cache in the head
     92                        header ("Expires: Mon, 26 Jul 1997 05:00:00 GMT");    // Date in the past
     93                        header ("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
     94                        // always modified
     95                        header ("Cache-Control: no-cache, must-revalidate");  // HTTP/1.1
     96                        header ("Pragma: no-cache");                          // HTTP/1.0
     97                        $func_name = $_GET["rs"];
     98                        if (! empty($_GET["rsargs"]))
     99                                $args = $_GET["rsargs"];
     100                        else
     101                                $args = array();
     102                }
     103                else {
     104                        $func_name = $_POST["rs"];
     105                        if (! empty($_POST["rsargs"]))
     106                                $args = $_POST["rsargs"];
     107                        else
     108                                $args = array();
     109                }
     110               
     111                if (! in_array($func_name, $sajax_export_list))
     112                        echo "-:$func_name not callable";
     113                else {
     114                        echo "+:";
     115                        $result = call_user_func_array($func_name, $args);
     116                        echo "var res = " . sajax_get_js_repr($result) . "; res;";
     117                }
     118                exit;
     119        }
     120       
     121        function sajax_get_common_js() {
     122                global $sajax_debug_mode;
     123                global $sajax_request_type;
     124                global $sajax_remote_uri;
     125               
     126                $t = strtoupper($sajax_request_type);
     127                if ($t != "" && $t != "GET" && $t != "POST")
     128                        return "// Invalid type: $t.. \n\n";
     129               
     130                ob_start();
     131                ?>
     132               
     133                // remote scripting library
     134                // (c) copyright 2005 modernmethod, inc
     135                var sajax_debug_mode = <?php echo $sajax_debug_mode ? "true" : "false"; ?>;
     136                var sajax_request_type = "<?php echo $t; ?>";
     137                var sajax_target_id = "";
     138               
     139                function sajax_debug(text) {
     140                        if (sajax_debug_mode)
     141                                alert("RSD: " + text)
     142                }
     143                function sajax_init_object() {
     144                        sajax_debug("sajax_init_object() called..")
     145                       
     146                        var A;
     147                        try {
     148                                A=new ActiveXObject("Msxml2.XMLHTTP");
     149                        } catch (e) {
     150                                try {
     151                                        A=new ActiveXObject("Microsoft.XMLHTTP");
     152                                } catch (oc) {
     153                                        A=null;
     154                                }
     155                        }
     156                        if(!A && typeof XMLHttpRequest != "undefined")
     157                                A = new XMLHttpRequest();
     158                        if (!A)
     159                                sajax_debug("Could not create connection object.");
     160                        return A;
     161                }
     162                function sajax_do_call(func_name, args) {
     163                        var i, x, n;
     164                        var uri;
     165                        var post_data;
     166                        var target_id;
     167                       
     168                        sajax_debug("in sajax_do_call().." + sajax_request_type + "/" + sajax_target_id);
     169                        target_id = sajax_target_id;
     170                        if (sajax_request_type == "")
     171                                sajax_request_type = "GET";
     172                       
     173                        uri = "<?php echo $sajax_remote_uri; ?>";
     174                        if (sajax_request_type == "GET") {
     175                       
     176                                if (uri.indexOf("?") == -1)
     177                                        uri += "?rs=" + escape(func_name);
     178                                else
     179                                        uri += "&rs=" + escape(func_name);
     180                                uri += "&rst=" + escape(sajax_target_id);
     181                                uri += "&rsrnd=" + new Date().getTime();
     182                               
     183                                for (i = 0; i < args.length-1; i++)
     184                                        uri += "&rsargs[]=" + escape(args[i]);
     185
     186                                post_data = null;
     187                        }
     188                        else if (sajax_request_type == "POST") {
     189                                post_data = "rs=" + escape(func_name);
     190                                post_data += "&rst=" + escape(sajax_target_id);
     191                                post_data += "&rsrnd=" + new Date().getTime();
     192                               
     193                                for (i = 0; i < args.length-1; i++)
     194                                        post_data = post_data + "&rsargs[]=" + escape(args[i]);
     195                        }
     196                        else {
     197                                alert("Illegal request type: " + sajax_request_type);
     198                        }
     199                       
     200                        x = sajax_init_object();
     201                        x.open(sajax_request_type, uri, true);
     202                       
     203                        if (sajax_request_type == "POST") {
     204                                x.setRequestHeader("Method", "POST " + uri + " HTTP/1.1");
     205                                x.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
     206                        }
     207                       
     208                        x.onreadystatechange = function() {
     209                                if (x.readyState != 4)
     210                                        return;
     211
     212                                sajax_debug("received " + x.responseText);
     213                               
     214                                var status;
     215                                var data;
     216                                status = x.responseText.charAt(0);
     217                                data = x.responseText.substring(2);
     218                                if (status == "-")
     219                                        alert("Error: " + data);
     220                                else {
     221                                        if (target_id != "")
     222                                                document.getElementById(target_id).innerHTML = eval(data);
     223                                        else
     224                                                args[args.length-1](eval(data));
     225                                }
     226                        }
     227                        sajax_debug(func_name + " uri = " + uri + "/post = " + post_data);
     228                        x.send(post_data);
     229                        sajax_debug(func_name + " waiting..");
     230                        delete x;
     231                        return true;
     232                }
     233               
     234                <?php
     235                $html = ob_get_contents();
     236                ob_end_clean();
     237                return $html;
     238        }
     239       
     240        function sajax_show_common_js() {
     241                echo sajax_get_common_js();
     242        }
     243       
     244        // javascript escape a value
     245        function sajax_esc($val)
     246        {
     247                $val = str_replace("\\", "\\\\", $val);
     248                $val = str_replace("\r", "\\r", $val);
     249                $val = str_replace("\n", "\\n", $val);
     250                return str_replace('"', '\\"', $val);
     251        }
     252
     253        function sajax_get_one_stub($func_name) {
     254                ob_start();     
     255                ?>
     256               
     257                // wrapper for <?php echo $func_name; ?>
     258               
     259                function x_<?php echo $func_name; ?>() {
     260                        sajax_do_call("<?php echo $func_name; ?>",
     261                                x_<?php echo $func_name; ?>.arguments);
     262                }
     263               
     264                <?php
     265                $html = ob_get_contents();
     266                ob_end_clean();
     267                return $html;
     268        }
     269       
     270        function sajax_show_one_stub($func_name) {
     271                echo sajax_get_one_stub($func_name);
     272        }
     273       
     274        function sajax_export() {
     275                global $sajax_export_list;
     276               
     277                $n = func_num_args();
     278                for ($i = 0; $i < $n; $i++) {
     279                        $sajax_export_list[] = func_get_arg($i);
     280                }
     281        }
     282       
     283        $sajax_js_has_been_shown = 0;
     284        function sajax_get_javascript()
     285        {
     286                global $sajax_js_has_been_shown;
     287                global $sajax_export_list;
     288               
     289                $html = "";
     290                if (! $sajax_js_has_been_shown) {
     291                        $html .= sajax_get_common_js();
     292                        $sajax_js_has_been_shown = 1;
     293                }
     294                foreach ($sajax_export_list as $func) {
     295                        $html .= sajax_get_one_stub($func);
     296                }
     297                return $html;
     298        }
     299       
     300        function sajax_show_javascript()
     301        {
     302                echo sajax_get_javascript();
     303        }
     304
     305       
     306        $SAJAX_INCLUDED = 1;
     307}
     308?>
  • mythweb/modules/music/mp3act_functions.php

     
     1<?php
     2/******************************************
     3*       mp3act functions
     4*       http://www.mp3act.net
     5*       Stripped, because not all this funcionality is needed in MythWEB
     6*
     7******************************************/
     8
     9$akuserid = '1';
     10
     11function mp3act_connect() {
     12        return 1;
     13}
     14
     15function switchMode($mode){
     16        $_SESSION['sess_playmode'] = $mode;
     17        return $mode;
     18}
     19
     20function setCurrentSong($song_id,$pl_id,$rand=0){
     21        mp3act_connect();
     22        $query = "DELETE FROM music_currentsong";
     23        mysql_query($query);
     24        $query = "INSERT INTO music_currentsong VALUES ($song_id,$pl_id,$rand)";
     25        mysql_query($query);
     26}
     27
     28function getCurrentSong($curArtist, $curSong){
     29        $data = array();
     30
     31        mp3act_connect();
     32        $query = "SELECT music_currentsong.random,music_currentsong.pl_id,music_artists.artist_name,music_artists.prefix, music_songs.name FROM music_artists,music_songs,music_currentsong WHERE music_currentsong.song_id=music_songs.song_id AND music_songs.artist_id=music_artists.artist_id";
     33        $result = mysql_query($query);
     34        if(mysql_num_rows($result) == 0){
     35                $data[] = "<strong>No Songs Playing</strong><span id='artist'></span><span id='song'></span>";
     36                $data[] = 0;
     37                $data[] = 0;
     38                return $data;
     39        }
     40        $row = mysql_fetch_array($result);
     41        if($row['artist_name'] == $curArtist && $row['name'] == $curSong){
     42                $data[] = 1;
     43                $data[] = $row['pl_id'];
     44                $data[] = 1;
     45                return $data;
     46        }
     47       
     48        $data[] = "<strong>Currently Playing".($row['random'] ? " (Random Mix)" : "")."</strong><br/><span id='artist'>$row[prefix] $row[artist_name]</span><br/><span id='song'>$row[name]</span>\n";
     49        $data[] = $row['pl_id'];
     50        $data[] = 1;
     51        return $data;
     52}
     53
     54
     55function genreform(){
     56  mp3act_connect();
     57  $query = "SELECT * FROM music_genres ORDER BY genre";
     58  $result = mysql_query($query);
     59 
     60  $output = "<select id=\"genre\" name=\"genre\" onchange=\"updateBox('genre',this.options[selectedIndex].value); return false;\">
     61    <option value=\"\" selected>Choose Genre..";
     62 
     63  while($genre = mysql_fetch_array($result)){
     64    $output .= "  <option value=\"$genre[genre]\">$genre[genre]\n";
     65  }
     66  $output .= "</select>";
     67 
     68  return $output;
     69}
     70
     71function letters(){
     72        $output = "<ul class=\"music\" id=\"letters\">";
     73        $letters = array('#','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z');
     74       
     75        foreach($letters as $letter){
     76                $output .= "<li><a class=music href=\"#\" onclick=\"updateBox('letter','$letter'); return false;\">".strtoupper($letter)."</a></li>\n";
     77        }
     78        $output .= "</ul>";
     79        return $output;
     80}
     81
     82function getDropDown($type, $id){
     83        $dropdown = "";
     84        return $dropdown;
     85}
     86
     87function buildBreadcrumb($page,$parent,$parentitem,$child,$childitem){
     88        mp3act_connect();
     89        $childoutput='';
     90        $parentoutput ='';
     91        if($page == 'browse' && $child != ''){
     92                $output = "<a class=music href=\"#\" onclick=\"updateBox('browse',0); return false;\">Browse</a> &#187; ";
     93        }
     94        switch($child){
     95                case 'album':
     96                        $query = "SELECT music_albums.album_name,music_artists.artist_name,music_artists.artist_id,music_artists.prefix FROM music_albums,music_artists WHERE music_albums.artist_id=music_artists.artist_id AND music_albums.album_id=$childitem";
     97                        $result = mysql_query($query);
     98                        $row = mysql_fetch_array($result);
     99                        $albums = '';
     100                        $query = "SELECT album_name,album_id FROM music_albums WHERE artist_id=$row[artist_id] ORDER BY album_name";
     101                        $result = mysql_query($query);
     102                        while($row2 = mysql_fetch_array($result)){
     103                                $albums .= "<li><a class=music href=\"#\" onclick=\"updateBox('album',$row2[album_id]); return false;\" title=\"View Details of $row2[album_name]\">$row2[album_name]</a></li>";
     104                        }
     105                        $childoutput .= "<span><a class=music href=\"#\" onclick=\"updateBox('artist'," . $row['artist_id'] . "); return false;\">" . $row['prefix'] . " " . $row['artist_name'] . "</a><ul class=\"music\">$albums</ul></span> &#187; " . htmlentities($row['album_name']);
     106                break;
     107                case 'artist':
     108                        $query = "SELECT artist_name,prefix FROM music_artists WHERE artist_id=$childitem";
     109                        $result = mysql_query($query);
     110                        $row = mysql_fetch_array($result);
     111                        $albums = '';
     112                        echo "aa".$childitem."bb";
     113                        $query = "SELECT music_albums.album_name, music_albums.album_id FROM music_songs INNER JOIN music_albums ON music_songs.album_id = music_albums.album_id GROUP BY music_albums.album_name, music_albums.album_id, music_songs.artist_id HAVING (((music_songs.artist_id)=$childitem));";
     114                        //$query = "SELECT album_name,album_id FROM music_albums WHERE artist_id=$childitem ORDER BY album_name";
     115                        $result = mysql_query($query);
     116                        while($row2 = mysql_fetch_array($result)){
     117                                $albums .= "<li><a class=music href=\"#\" onclick=\"updateBox('album',$row2[album_id]); return false;\" title=\"View Details of $row2[album_name]\">$row2[album_name]</a></li>";
     118                        }
     119                        $childoutput .= "<span><a class=music href=\"#\" onclick=\"updateBox('artist',$childitem); return false;\">$row[prefix] $row[artist_name]</a><ul class=\"music\">$albums</ul></span>";
     120                break;
     121                case 'letter':
     122                        $childoutput .= "<span><a class=music href=\"#\" onclick=\"updateBox('letter','$childitem'); return false;\">".strtoupper($childitem)."</a>".letters()."</span>";
     123                break;
     124                case 'genre':
     125                        $childoutput .=  $childitem;
     126                break;
     127                case 'all':
     128                        $childoutput .=  $childitem;
     129                break;
     130       
     131        }
     132        switch($parent){
     133       
     134                case 'letter':
     135                        $parentoutput .= "<span><a class=music href=\"#\" onclick=\"updateBox('letter','$parentitem'); return false;\">".strtoupper($parentitem)."</a>".letters()."</span> &#187; ";
     136                break;
     137                case 'genre':
     138                        $query = "SELECT album_name FROM music_albums WHERE album_id=$childitem";
     139                        $result = mysql_query($query);
     140                        $row = mysql_fetch_array($result);
     141                        $parentoutput .= "<a class=music href=\"#\" onclick=\"updateBox('genre','$parentitem'); return false;\">$parentitem</a> &#187; ";
     142                break;
     143                case 'all':
     144                        $parentoutput .=  "<a class=music href=\"#\" onclick=\"updateBox('all','$parentitem'); return false;\">$parentitem</a> &#187; ";
     145                break;
     146       
     147        }
     148        if (isset($output)) {
     149          return $output.$parentoutput.$childoutput;
     150        } else {
     151          return '';
     152        }       
     153}
     154
     155function musicLookup($type,$itemid){
     156        mp3act_connect();
     157        switch($type){
     158        case 'browse':
     159    $output = "<div class=\"head\">";
     160                        $output .= "<h2 class=music>Browse the Music Database</h2></div>";
     161                        $output .= "<p>";
     162                        $output .= "<strong>By Artist Beginning With</strong><br/>".letters()."<br/></p>\n";
     163                        $output .= "<p><strong>By Genre</strong><br/>\n";
     164                        $output .= genreForm()."<br/><br/>\n";
     165                        $output .= "<input type='button' value='Browse All Albums' onclick=\"updateBox('all','All'); return false;\" class='btn2' />\n";
     166        $output .= "</p>\n";
     167
     168        break;
     169        case 'search':
     170    $output = "<div class=\"head\">";
     171                        $output .= "<h2 class=music>Search the Music Database</h2></div>";
     172                        $output .= "<form onsubmit='return searchMusic(this)' method='get' action=''>\n";
     173                        $output .= "<p>
     174                                <strong>Keywords</strong><br/>
     175                                <input type='text' onfocus='this.select()' name='searchbox' size='35' id='searchbox' value='[enter your search terms]' />
     176                <br/><br/>
     177                <strong>Narrow Your Search</strong>
     178                <br/>
     179                <select name='search_options' size='1'>
     180                        <option value='all'>All Fields</option>
     181                        <option value='artists'>Artists</option>
     182                        <option value='albums'>Albums</option>
     183                        <option value='songs'>Songs</option>
     184                </select><br/><br/>
     185                <input type='submit' value='submit search' class='btn' /></form>";
     186                                $output .= "</p>\n";
     187
     188        break;
     189        case 'letter':
     190        if($itemid == "#"){
     191      $query = "SELECT * FROM music_artists
     192                WHERE artist_name
     193                LIKE '0%'
     194                OR artist_name LIKE '1%'
     195                OR artist_name LIKE '2%'
     196                OR artist_name LIKE '3%'
     197                OR artist_name LIKE '4%'
     198                OR artist_name LIKE '5%'
     199                OR artist_name LIKE '6%'
     200                OR artist_name LIKE '7%'
     201                OR artist_name LIKE '8%'
     202                OR artist_name LIKE '9%'
     203                ORDER BY artist_name";
     204    }else{
     205        $query = "SELECT * FROM music_artists
     206                WHERE artist_name LIKE '$itemid%'
     207                ORDER BY artist_name";
     208    }
     209    $result = mysql_query($query);
     210    $output = "<div class=\"head\">";
     211                        $output .= "<h2 class=music>Artists Beginning with '".strtoupper($itemid)."'</h2></div>";
     212                        $output .= "<p>
     213                                <strong>Artist Listing</strong></p>
     214                                <ul class=\"music\">";
     215                                        $count =1;
     216    while($row = mysql_fetch_array($result)){
     217    ($count%2 == 0 ? $alt = "class=\"alt\"" : $alt = '');
     218                        $output .= "<li $alt><a class=music href=\"#\" onclick=\"updateBox('artist',$row[artist_id]); return false;\" title=\"View Albums for $row[prefix] $row[artist_name]\">$row[prefix] $row[artist_name]</a></li>\n";
     219                        $count++;
     220                }
     221                                $output .= "</ul>\n";
     222
     223        break;
     224       
     225        case 'all':
     226                        $output = "<div class=\"head\">";
     227                        //$output .= "<div class=\"right\"><a class=music href='#' onclick=\"updateBox('all',$itemid-30); return false;\">Prev Page</a> <a class=music href='#' onclick=\"updateBox('all',$itemid+30); return false;\">Next Page</a> </div>";
     228                        $output .= "<h2 class=music>All Albums</h2></div> ";
     229                        $output .= "<p>
     230                                <strong>Allbum Listing</strong></p>
     231                                <ul class=\"music\">";
     232                $start = $itemid;
     233                $query = "SELECT music_artists.artist_name,music_artists.prefix,music_albums.* FROM music_albums,music_artists WHERE music_albums.artist_id=music_artists.artist_id ORDER BY artist_name,album_name"; /* LIMIT $start,30"; */
     234                $result = mysql_query($query);
     235                        $count = 1;
     236                while($row = mysql_fetch_array($result)){
     237                        ($count%2 == 0 ? $alt = "class=\"alt\"" : $alt = '');
     238                        $output .= "<li $alt><a class=music href=\"#\" onclick=\"pladd('album'," . $row['album_id'] . "); return false;\" title=\"Add Album to Current Playlist\"><img src=\"".skin_url."/img/music/add.gif\" /></a> <a class=music href=\"#\" onclick=\"play('album'," . $row['album_id'] . "); return false;\" title=\"Play this Album Now\"><img src=\"".skin_url."/img/music/play.gif\" /></a> <a class=music href=\"#\" onclick=\"updateBox('album'," . $row['album_id'] . "); return false;\" title=\"View Details of " . $row['album_name'] . "\">" . $row['prefix'] . " " . $row['artist_name'] . " - " . $row['album_name'] . " " . (($row['album_year'] != 0) ? ("<em>(" . $row['album_year'] . ")</em>") : ("")) . "</a></li>\n";
     239                       
     240                        $count++;
     241                }
     242                $output .= "</ul>\n";
     243        break;
     244       
     245        case 'album':
     246                //$query = "SELECT music_albums.*,music_artists.artist_name,music_artists.prefix,COUNT(music_songs.song_id) as tracks,SEC_TO_TIME(SUM(music_songs.length)) as time FROM music_albums,music_artists,music_songs WHERE music_albums.album_id=$itemid AND music_albums.artist_id=music_artists.artist_id AND music_songs.album_id=$itemid GROUP BY music_songs.album_id";
     247                $query="SELECT music_albums.*, Count(music_songs.song_id) AS tracks, SEC_TO_TIME(Sum(music_songs.length)) AS time FROM (music_songs INNER JOIN music_albums ON music_songs.album_id = music_albums.album_id) INNER JOIN music_artists ON music_songs.artist_id = music_artists.artist_id GROUP BY music_albums.album_id, music_albums.album_name, music_albums.album_art HAVING (((music_albums.album_id)=$itemid));";         
     248                $result = mysql_query($query);
     249                $row = mysql_fetch_array($result);
     250                       
     251                        $album_art='';
     252                       
     253                       
     254                        if($row['album_art'] == ""){
     255                                $row['album_art'] = art_insert($row['album_id'],$row['artist_name'],$row['album_name']);
     256                                if($row['album_art'] != ''){
     257                                        $album_art = "<img onmouseover=\"showAlbumArt('block'); return false;\" onmouseout=\"showAlbumArt('none'); return false;\" src=\"art/$row[album_art]\" />\n";
     258                                }
     259                        }elseif($row['album_art'] != "fail"){
     260                                $album_art = "<img onmouseover=\"showAlbumArt('block'); return false;\" onmouseout=\"showAlbumArt('none'); return false;\" src=\"art/$row[album_art]\" />\n";
     261                        }
     262                        $output = "<div class=\"head\">";
     263                        $output .= "<div class=\"right\"><a class=music href=\"#\" onclick=\"play('album',".$row['album_id']."); return false;\" title=\"Play this Album Now\">play</a> <a class=music href=\"#\" onclick=\"pladd('album',$row[album_id]); return false;\" title=\"Add Album to Current Playlist\">add</a> "."<a class=music href=\"#\" onclick=\"newWindow('download',$row[album_id]); return false;\" title=\"Download this Album Now\">download</a>"."</div>";
     264                        $output .= "<h2 class=music>".$row['album_name']."</h2></div>";
     265                        $output .= "<p>$album_art\n";
     266                        $output .= "    <strong>Tracks:</strong> $row[tracks]<br/>\n";
     267                        $output .= (($row['album_year'] != 0) ? ("<strong>Year:</strong> " . $row['album_year'] . "<br/>\n") : (""));
     268                        //$output .= "  <strong>Genre:</strong> <a class=music href=\"#\" onclick=\"updateBox('genre','$row[album_genre]'); return false;\" title=\"View Artists from $row[album_genre] Genre\">$row[album_genre]</a><br/>\n";
     269                        $output .= "    <strong>Play Time:</strong> $row[time]\n";
     270                        $output .= "    <br/><br/>\n";
     271                        $output .= "    <strong>Album Tracks</strong></p>\n";
     272                        $output .= "<ul class=\"music\">\n";
     273                        $output .= "<img id='bigart' src=\"art/$row[album_art]\" />\n";
     274                $query = "SELECT music_songs.*,SEC_TO_TIME(music_songs.length) as length , music_artists.artist_name FROM music_songs INNER JOIN music_artists ON music_songs.artist_id = music_artists.artist_id WHERE album_id=$itemid ORDER BY track";
     275                $result = mysql_query($query);
     276                $count=1;
     277                while($row = mysql_fetch_array($result)){
     278                        ($count%2 == 0 ? $alt = "class=\"alt\"" : $alt = '');
     279                        $output .= "<li $alt ondblclick=\"pladd('song',$row[song_id]); return false;\" ><a class=music href=\"#\" onclick=\"pladd('song',$row[song_id]); return false;\" title=\"Add Song to Current Playlist\"><img src=\"".skin_url."/img/music/add.gif\" /></a> <a class=music href=\"#\" onclick=\"play('song',$row[song_id]); return false;\" title=\"Play this Song Now\"><img src=\"".skin_url."/img/music/play.gif\" /></a> $row[track]. $row[artist_name] - $row[name]<p>$row[numplays] Plays<br/><em>$row[length]</em></p></li>\n";
     280                        $count++;
     281                }
     282               
     283                $output .= "</ul>\n";
     284        break;
     285        case 'genre':
     286                $query = "SELECT music_artists.artist_id,music_artists.artist_name,music_artists.prefix FROM music_artists,music_albums WHERE music_albums.album_genre='$itemid' AND music_artists.artist_id=music_albums.artist_id GROUP BY music_artists.artist_id ORDER BY music_artists.artist_name";
     287                $result = mysql_query($query);
     288                $row = mysql_fetch_array($result);
     289               
     290                        $output = "<div class=\"head\">";
     291                        $output .= "<h2 class=\"music\">Artists for Genre '$itemid'</h2></div>";
     292                        $output .= "<p>
     293                                <strong>Artist Listing</strong></p>
     294                                <ul class=\"music\">";
     295                       
     296                $result = mysql_query($query);
     297               
     298                $count=1;
     299                while($row = mysql_fetch_array($result)){
     300                        ($count%2 == 0 ? $alt = "class=\"alt\"" : $alt = '');
     301                        $output .= "<li $alt><a class=music href=\"#\" onclick=\"updateBox('artist',$row[artist_id]); return false;\" title=\"View Albums for $row[artist_name]\">$row[prefix] $row[artist_name]</a></li>\n";
     302                        $count++;
     303                }
     304                $output .= "</ul>\n";
     305        break;
     306        case 'artist':
     307                $query = "SELECT artist_id,artist_name,prefix FROM music_artists WHERE artist_id=$itemid";
     308                $result = mysql_query($query);
     309                $row = mysql_fetch_array($result);
     310                       
     311               
     312                        $artist = $row[artist_name];
     313                       
     314                        $output = "<div class=\"head\">";
     315                        $output .= "<h2 class=\"music\">$row[prefix] $row[artist_name] </h2></div>";
     316                        $output .= "<p>\n";
     317                        $output .= "<strong>Songs</strong></p>\n";
     318                        $output .= "<ul class=\"music\">\n";
     319
     320                $query = "SELECT music_songs.*,SEC_TO_TIME(music_songs.length) as length , music_artists.artist_name FROM music_songs INNER JOIN music_artists ON music_songs.artist_id = music_artists.artist_id WHERE music_songs.artist_id=$itemid;";
     321                $result = mysql_query($query);
     322                $count=1;
     323                while($row = mysql_fetch_array($result)){
     324                        ($count%2 == 0 ? $alt = "class=\"alt\"" : $alt = '');
     325                        $output .= "<li $alt ondblclick=\"pladd('song',$row[song_id]); return false;\" ><a class=music href=\"#\" onclick=\"pladd('song',$row[song_id]); return false;\" title=\"Add Song to Current Playlist\"><img src=\"".skin_url."/img/music/add.gif\" /></a> <a class=music href=\"#\" onclick=\"play('song',$row[song_id]); return false;\" title=\"Play this Song Now\"><img src=\"".skin_url."/img/music/play.gif\" /></a> $row[name]<p>$row[numplays] Plays<br/><em>$row[length]</em></p></li>\n";
     326                        $count++;
     327                }
     328                $output .= "</ul><br />\n";
     329
     330                        $output .= "<p>\n";
     331                        $output .= "<strong>Album's with songs from <i>$artist</i></strong></p>\n";
     332                        $output .= "<ul class=\"music\">\n";
     333
     334                $query = "SELECT music_albums.album_name, music_albums.album_id FROM music_songs INNER JOIN music_albums ON music_songs.album_id = music_albums.album_id GROUP BY music_albums.album_name, music_albums.album_id, music_songs.artist_id HAVING (((music_songs.artist_id)=$itemid));";
     335                       
     336                //$query = "SELECT music_albums.* FROM music_albums WHERE music_albums.artist_id=$itemid ORDER BY music_albums.album_name";
     337                $result = mysql_query($query);
     338                $count=1;
     339                while($row = mysql_fetch_array($result)){
     340                        ($count%2 == 0 ? $alt = "class=\"alt\"" : $alt = '');
     341                        $output .= "<li $alt><a class=music href=\"#\" onclick=\"pladd('album'," . $row['album_id'] . "); return false;\" title=\"Add Album to Current Playlist\"><img src=\"".skin_url."/img/music/add.gif\" /></a> <a class=music href=\"#\" onclick=\"play('album'," . $row['album_id'] . "); return false;\" title=\"Play this Album Now\"><img src=\"".skin_url."/img/music/play.gif\" /></a> <a class=music href=\"#\" onclick=\"updateBox('album'," . $row['album_id'] . "); return false;\" title=\"View Details of " . $row['album_name'] . "\">" . $row['album_name'] . " " . (($row['album_year'] != 0) ? ("<em>(" . $row['album_year'] . ")</em>") : (""))."</a></li>\n";
     342                        $count++;
     343                }
     344                $output .= "</ul>\n";
     345        break;
     346        case 'random':
     347                        $output = "<div class=\"head\">";
     348                        $output .= "<h2 class=\"music\">Random Mix Maker</h2></div>";
     349                        $output .= "<form onsubmit='return randPlay(this)' method='get' action=''>\n<p>";
     350                        //if($_SESSION['sess_playmode'] == "streaming"){
     351                                $output .= "<strong>Number of Songs</strong><br/>\n
     352                                <select name='random_count'>
     353                                <option value=10>10 </option>
     354                                <option value=20>20 </option>
     355                                <option value=30>30 </option>
     356                                <option value=40>40 </option>
     357                                <option value=50>50 </option>
     358         </select><br/>\n";
     359//        }
     360                        $output .= "<strong>Random Type</strong><br/>\n
     361                                <select name='random_type' onchange=\"getRandItems(this.options[selectedIndex].value); return false;\" >
     362                                <option value='' >Choose Type...</option>
     363                                <option value='artists' >Artists</option>
     364                                <option value='genre' >Genre</option>
     365                                <option value='albums' >Albums</option>
     366                                <option value='all' >Everything</option>
     367         </select><br/>\n";
     368                        $output .= "<strong>Random Items</strong>\n<span id='rand_items'></span>
     369                        <br/><br/>";
     370                        $output .= "<input type='submit' value='play mix' class='btn' />";
     371                        $output .= "</form></p>\n";
     372        break;
     373        case 'playlists':
     374                        $query = "SELECT *,SEC_TO_TIME(time) AS time2 FROM music_saved_playlists";
     375                        $result = mysql_query($query);
     376                       
     377                        $output = "<div class=\"head\">";
     378                        $output .= "<h2 class=\"music\">Saved Playlists</h2></div>";
     379                        $output .= "<p><strong>Public Playlists</strong></p>\n";
     380                        $output .= "<ul class=\"music\">\n";
     381                        if(mysql_num_rows($result) == 0)
     382                                $output .= "No Public Playlists";
     383                        while ($row = mysql_fetch_array($result)){
     384                                if ($row["hostname"] == "")
     385                                    $output .= "<li><a class=music href=\"#\" onclick=\"pladd('playlist',$row[playlist_id]); return false;\" title='Load this Saved Playlist'><img src=\"".skin_url."/img/music/add.gif\" /></a> "."<a class=music href=\"#\" onclick=\"deletePlaylist($row[playlist_id]); return false;\" title='DELETE this Saved Playlist'><img src=\"".skin_url."/img/music/rem.gif\" /></a>"." <a onclick=\"updateBox('saved_pl',$row[playlist_id]); \" title='Click to View Playlist' href='#'>$row[playlist_name] - $row[songcount] Songs ($row[time2])</a></li>";
     386                                else
     387                                    $output .= "<li><a class=music href=\"#\" onclick=\"pladd('playlist',$row[playlist_id]); return false;\" title='Load this Saved Playlist'><img src=\"".skin_url."/img/music/add.gif\" /></a> "."<a class=music href=\"#\" onclick=\"deletePlaylist($row[playlist_id]); return false;\" title='DELETE this Saved Playlist'><img src=\"".skin_url."/img/music/rem.gif\" /></a>"." <a onclick=\"updateBox('saved_pl',$row[playlist_id]); \" title='Click to View Playlist' href='#'>$row[playlist_name] @ $row[hostname] - $row[songcount] Songs ($row[time2])</a></li>";
     388                        }
     389                        $output .= "</ul>\n";
     390        break;
     391        case 'saved_pl':
     392                        $query = "SELECT *,SEC_TO_TIME(time) AS time2 FROM music_saved_playlists WHERE playlist_id=$itemid";
     393                        $result = mysql_query($query);
     394                        $row = mysql_fetch_array($result);
     395                        $output = "<div class=\"head\">";
     396                        $output .= "<div class=\"right\"><a class=music href=\"#\" onclick=\"pladd('playlist',$row[playlist_id]); return false;\" title=\"Load Playlist\">load playlist</a></div>";
     397
     398                        $output .= "<h2 class=\"music\">View Saved Playlist</h2></div>";
     399                        $output .= "<p><strong>Playlist Info</strong><br/>$row[songcount] Songs<br/>$row[time2]</p>\n";
     400                        $output .= "<p><strong>Playlist Songs</strong></p>\n";
     401                        $output .= "<ul class=\"music\">\n";
     402                        $songs = explode(",",$row['playlist_songs']);
     403                        if (strlen($row['playlist_songs']) != 0)
     404                        {
     405                $count = 0;
     406                foreach($songs as $song){
     407                        $query = "SELECT music_songs.*,SEC_TO_TIME(music_songs.length) AS length,music_artists.artist_name FROM music_artists,music_songs WHERE music_songs.song_id=$song AND music_artists.artist_id=music_songs.artist_id";
     408                        $result = mysql_query($query);
     409                        $row = mysql_fetch_array($result);
     410        ($count%2 == 0 ? $alt = "class=\"alt\"" : $alt = '');
     411                        $output .= "<li $alt>$row[artist_name] - $row[name]<p>$row[numplays] Plays<br/><em>$row[length]</em></p></li>";
     412                        $count++;
     413                }
     414                        }
     415                        else
     416                        $output = " <b>There are no songs in that Playlist!</b>";
     417                        $output .= "</ul>\n";
     418                       
     419        break;
     420        case 'stats':
     421                $query = "SELECT * FROM music_stats";
     422                        $result = mysql_query($query);
     423                        $row = mysql_fetch_array($result);
     424                        $query = "SELECT COUNT(play_id) AS songs FROM music_playhistory";
     425                        $result = mysql_query($query);
     426                        $row3 = mysql_fetch_array($result);
     427                       
     428                        $output = "<div class=\"head\">";
     429                        $output .= "<h2 class=\"music\">Server Statistics</h2></div>";
     430                        $output .= "<p>\n";
     431                        $output .= "<a class=music href='#' onclick=\"updateBox('recentadd',0); return false;\" >Recently Added Albums</a><br/>";
     432                        $output .= "<a class=music href='#' onclick=\"updateBox('recentplay',0); return false;\" >Recently Played Songs</a><br/>";
     433                        $output .= "<a class=music href='#' onclick=\"updateBox('topplay',0); return false;\" >Top Played Songs</a><br/>";
     434
     435
     436                        $output .= "</p>\n";
     437                                $output .= "<h3>Local Server Statistics</h3>\n";
     438                          $result = mysql_query("SELECT song_id from music_songs;");   
     439                        $output .= "<p><strong>Songs:</strong> ". mysql_num_rows($result)."<br/>\n";
     440                          $result = mysql_query("SELECT album_id from music_albums;"); 
     441                        $output .= "<strong>Albums:</strong> ". mysql_num_rows($result)."<br/>\n";
     442                          $result = mysql_query("SELECT artist_id from music_artists;");       
     443                        $output .= "<strong>Artists:</strong> ". mysql_num_rows($result)."<br/>\n";
     444                          $result = mysql_query("SELECT genre_id from music_genres;"); 
     445                        $output .= "<strong>Genres:</strong> ". mysql_num_rows($result)."<br/><br/>\n";
     446//                      $output .= "<strong>Total Time:</strong> $row[total_time]<br/>\n";
     447//                      $output .= "<strong>Total Size:</strong> $row[total_size]<br/><br/>\n";
     448                        $output .= "<strong>Songs Played:</strong> $row3[songs]<br/></p>\n";
     449
     450        break;
     451        case 'recentadd':                       
     452                        $query = "SELECT music_albums.album_name,music_albums.album_id,
     453                        music_artists.artist_name,
     454                        DATE_FORMAT(music_songs.date_entered,'%m.%d.%Y') as pubdate   
     455                        FROM music_songs,music_albums,music_artists
     456                        WHERE music_songs.album_id=music_albums.album_id
     457                        AND music_artists.artist_id=music_songs.artist_id
     458                        GROUP BY music_songs.album_id ORDER BY music_songs.date_entered DESC LIMIT 40";
     459                        $result = mysql_query($query);
     460                       
     461                        $output = "<div class=\"head\">";
     462                        $output .= "<div class=\"right\"><a class=music href=\"#\" onclick=\"switchPage('stats'); return false;\" title=\"Return to Statistics Page\">back</a></div>";
     463                        $output .= "<h2 class=\"music\">Recently Added Albums</h2></div><ul class=\"music\">";
     464                        $count=1;
     465                while($row = mysql_fetch_array($result)){
     466                        ($count%2 == 0 ? $alt = "class=\"alt\"" : $alt = '');
     467                        $output .= "<li $alt><small>$row[pubdate]</small> <a class=music href=\"#\" onclick=\"pladd('album',$row[album_id]); return false;\" title=\"Add Album to Current Playlist\"><img src=\"".skin_url."/img/music/add.gif\" /></a> <a class=music href=\"#\" onclick=\"play('album',$row[album_id]); return false;\" title=\"Play this Album Now\"><img src=\"".skin_url."/img/music/play.gif\" /></a> <a class=music href=\"#\" onclick=\"updateBox('album',$row[album_id]); return false;\" title=\"View Details of $row[album_name]\"><em>$row[artist_name]</em> - $row[album_name]</a></li>";         
     468                        $count++;
     469                }
     470                $output .= "</ul>";
     471                       
     472
     473        break;
     474        case 'topplay':                 
     475                        $query = "SELECT music_albums.album_name, music_songs.numplays, music_songs.name,
     476                        music_artists.artist_name,music_songs.song_id
     477                        FROM music_songs,music_albums,music_artists
     478                        WHERE music_songs.album_id=music_albums.album_id
     479                        AND music_artists.artist_id=music_songs.artist_id
     480                        AND music_songs.numplays > 0
     481                        ORDER BY music_songs.numplays DESC LIMIT 40";
     482                        $result = mysql_query($query);
     483                       
     484                        $output = "<div class=\"head\">";
     485                        $output .= "<div class=\"right\"><a class=music href=\"#\" onclick=\"switchPage('stats'); return false;\" title=\"Return to Statistics Page\">back</a></div>";
     486                        $output .= "<h2 class=\"music\">Top Played Songs</h2></div><ul class=\"music\">";
     487                        $count=1;
     488                while($row = mysql_fetch_array($result)){
     489                        ($count%2 == 0 ? $alt = "class=\"alt\"" : $alt = '');
     490                        $output .= "<li $alt><small>$row[numplays] Plays</small> <a class=music href=\"#\" onclick=\"pladd('song',$row[song_id]); return false;\" title=\"Add Song to Current Playlist\"><img src=\"".skin_url."/img/music/add.gif\" /></a> <a class=music href=\"#\" onclick=\"play('song',$row[song_id]); return false;\" title=\"Play this Song Now\"><img src=\"".skin_url."/img/music/play.gif\" /></a> <em>$row[artist_name]</em> - $row[name]</li>";             
     491                        $count++;
     492                }
     493                $output .= "</ul>";
     494        break;
     495        case 'recentplay':                     
     496                        $query = "SELECT music_songs.name, music_songs.song_id,
     497                        music_artists.artist_name,
     498                        DATE_FORMAT(music_playhistory.date_played,'%m.%d.%Y') as playdate
     499                        FROM music_songs,music_artists,music_playhistory
     500                        WHERE music_songs.song_id=music_playhistory.song_id
     501                        AND music_artists.artist_id=music_songs.artist_id
     502                        ORDER BY music_playhistory.play_id DESC LIMIT 40";
     503                        $result = mysql_query($query);
     504                       
     505                        $output = "<div class=\"head\">";
     506                        $output .= "<div class=\"right\"><a class=music href=\"#\" onclick=\"switchPage('stats'); return false;\" title=\"Return to Statistics Page\">back</a></div>";
     507                        $output .= "<h2 class=\"music\">Recently Played Songs</h2></div><ul class=\"music\">";
     508                        $count=1;
     509                while($row = mysql_fetch_array($result)){
     510                        ($count%2 == 0 ? $alt = "class=\"alt\"" : $alt = '');
     511                        $output .= "<li $alt><small>$row[playdate]</small> <a class=music href=\"#\" onclick=\"pladd('song',$row[song_id]); return false;\" title=\"Add Song to Current Playlist\"><img src=\"".skin_url."/img/music/add.gif\" /></a> <a class=music href=\"#\" onclick=\"play('song',$row[song_id]); return false;\" title=\"Play this Song Now\"><img src=\"".skin_url."/img/music/play.gif\" /></a> <em>$row[artist_name]</em> - $row[name]</li>";           
     512                        $count++;
     513                }
     514                $output .= "</ul>";
     515                       
     516
     517        break;
     518        }
     519       
     520        return $output;
     521               
     522}
     523
     524function getRandItems($type){
     525        mp3act_connect();
     526        $options = '';
     527        switch($type){
     528                case 'artists':
     529                        $query = "SELECT * FROM music_artists ORDER BY artist_name";
     530                        $result = mysql_query($query);
     531                        while($row = mysql_fetch_array($result)){
     532                                $options .= "<option value=$row[artist_id]>$row[prefix] $row[artist_name]</option>\n";
     533                        }
     534                break;
     535                case 'genre':
     536                        $query = "SELECT genre_id,genre FROM music_genres ORDER BY genre";
     537                        $result = mysql_query($query);
     538                        while($row = mysql_fetch_array($result)){
     539                                $options .= "<option value=$row[genre_id]>$row[genre]</option>\n";
     540                        }
     541                break;
     542                case 'albums':
     543                        $query = "SELECT music_artists.artist_name,music_artists.prefix,music_albums.album_id,music_albums.album_name FROM music_albums,music_artists WHERE music_albums.artist_id=music_artists.artist_id ORDER BY artist_name,album_name";
     544                        $result = mysql_query($query);
     545                        while($row = mysql_fetch_array($result)){
     546                                $options .= "<option value=$row[album_id]>$row[prefix] $row[artist_name] - $row[album_name]</option>\n";
     547                        }
     548                break;
     549                case 'all':
     550                        return "<br/>All Songs";
     551                break;
     552        }
     553       
     554        return "<select name='random_items' multiple size='12' style='width: 90%;'>$options</select>";
     555
     556}
     557
     558function searchMusic($terms,$option){
     559        mp3act_connect();
     560        $query="SELECT music_songs.song_id, music_albums.album_name,music_songs.track,music_artists.artist_name,music_artists.prefix,music_songs.name,SEC_TO_TIME(music_songs.length) as length
     561                                                FROM music_songs,music_artists,music_albums WHERE music_songs.artist_id=music_artists.artist_id AND music_albums.album_id=music_songs.album_id AND ";
     562        if($option == 'all')
     563                $query .= "(music_songs.name LIKE '%$terms%' OR music_artists.artist_name LIKE '%$terms%' OR music_albums.album_name LIKE '%$terms%')";
     564        elseif($option == 'artists')
     565                $query .= "(music_artists.artist_name LIKE '%$terms%')";
     566        elseif($option == 'albums')
     567                $query .= "(music_albums.album_name LIKE '%$terms%')";
     568        elseif($option == 'songs')
     569                $query .= "(music_songs.name LIKE '%$terms%')";
     570
     571        $query .= " ORDER BY music_artists.artist_name,music_albums.album_name,music_songs.track";
     572       
     573        $result = mysql_query($query);
     574        $count = mysql_num_rows($result);
     575
     576                        $output = "<div class=\"head\">";
     577                        $output .= "<div class=\"right\"><a class=music href=\"#\" onclick=\"switchPage('search'); return false;\" title=\"Begin a New Search\">new search</a></div>";
     578                        $output .= "<h2 class=\"music\">Found $count Results for '$terms'</h2></div>"; 
     579                        $output .= "<ul class=\"music\">\n";
     580                if($count>0){
     581                        $count=1;
     582                        while($row = mysql_fetch_array($result)){
     583                                ($count%2 == 0 ? $alt = "class=\"alt\"" : $alt = '');
     584                                $output .= "<li $alt><a class=music href=\"#\" onclick=\"pladd('song',$row[song_id]); return false;\" title=\"Add Song to Current Playlist\"><img src=\"".skin_url."/img/music/add.gif\" /></a> <a class=music href=\"#\" onclick=\"play('song',$row[song_id]); return false;\" title=\"Play this Song Now\"><img src=\"".skin_url."/img/music/play.gif\" /></a> $row[prefix] $row[artist_name] - $row[name]<p>Album: $row[album_name]<br/>Track: $row[track]<br/><em>$row[length]</em></p></li>\n";
     585                                $count++;
     586                        }
     587                }
     588                $output .= "</ul>\n";
     589                return $output;
     590}
     591
     592function viewPlaylist(){
     593        mp3act_connect();
     594        $output = '';
     595        $query = "SELECT music_playlist.*, music_artists.artist_name,music_artists.prefix, music_songs.name,music_albums.album_name,music_songs.track,SEC_TO_TIME(music_songs.length) AS time FROM music_playlist,music_artists,music_songs,music_albums WHERE music_playlist.song_id=music_songs.song_id AND music_artists.artist_id=music_songs.artist_id AND music_songs.album_id=music_albums.album_id ORDER BY music_playlist.pl_id";
     596       
     597        $result=mysql_query($query);
     598       
     599        while($row = mysql_fetch_array($result)){
     600                        $output .= "<li id=\"pl$row[pl_id]\" onmouseover=\"setBgcolor('pl".$row['pl_id']."','#FCF7A5'); return false;\" onmouseout=\"setBgcolor('pl".$row['pl_id']."','#f3f3f3'); return false;\"><a class=music href=\"#\" onclick=\"movePLItem('up',this.parentNode); return false;\" title=\"Move Song Up in Playlist\"><img src=\"".skin_url."/img/music/up.gif\" /></a> <a class=music href=\"#\" onclick=\"movePLItem('down',this.parentNode); return false;\" title=\"Move Song Down in Playlist\"><img src=\"".skin_url."/img/music/down.gif\" /></a> <a class=music href=\"#\" onclick=\"plrem(this.parentNode.id); return false;\" title=\"Remove Song from Playlist\"><img src=\"".skin_url."/img/music/rem.gif\" /></a> $row[prefix] $row[artist_name] - $row[name]<p>Album: $row[album_name]<br/>Track: $row[track]<br/>$row[time]</p></li>";
     601                }
     602        if (isset($output)) {
     603                return $output;
     604        } else {
     605          return '';
     606        }
     607}
     608function savePlaylist($pl_name, $newpl){
     609        global $akuserid;
     610
     611        $songs = array();
     612        $time=0;
     613        $query = "SELECT music_playlist.song_id,music_songs.length FROM music_playlist,music_songs WHERE music_songs.song_id=music_playlist.song_id ORDER BY music_playlist.pl_id";
     614        $result = mysql_query($query);
     615        while($row = mysql_fetch_array($result)){
     616                $songs[] = $row['song_id'];
     617                $time += $row['length'];
     618        }
     619        $songslist = implode(",",$songs);
     620        if ($newpl == 0)
     621            {
     622            $query = "INSERT INTO music_saved_playlists (playlist_name, playlist_songs, date_created, time, songcount) VALUES (\"$pl_name\",\"$songslist\",NOW(),$time,".count($songs).")";
     623            mysql_query($query);
     624            return "<h2 class=\"music\">Playlist Saved as '".$pl_name."'</h2>";
     625            }
     626        else
     627            {
     628            $arr = explode("@",$pl_name);
     629            //if ($arr[1] == "")
     630            //      $query = "UPDATE music_saved_playlists SET playlist_songs = \"$songslist\", date_created = NOW(), time = $time, songcount = ".count($songs)." WHERE playlist_name = \"".$arr[0]."\"";                                                                       
     631            //else
     632                    $query = "UPDATE music_saved_playlists SET playlist_songs = \"$songslist\", date_created = NOW(), time = $time, songcount = ".count($songs)." WHERE playlist_name = \"".$arr[0]."\" AND hostname = \"".$arr[1]."\"";                                                                       
     633            mysql_query($query);
     634            return "<h2 class=\"music\">Playlist '".$pl_name."' has been updated</h2>";
     635            }
     636
     637}
     638
     639function clearPlaylist(){
     640        mp3act_connect();
     641        $query = "DELETE FROM music_playlist";
     642/*      if($_SESSION['sess_playmode'] == 'streaming'){
     643                $query .= " WHERE user_id=$_SESSION[sess_userid] AND private=1";
     644        }
     645        else{
     646                $query .= " WHERE private=0";
     647        }*/
     648        mysql_query($query);
     649        return "Playlist is empty";
     650}
     651function deletePlaylist($id){
     652        mp3act_connect();
     653        $query = "DELETE FROM music_saved_playlists WHERE playlist_id=$id";
     654        mysql_query($query);
     655        return 1;
     656}
     657
     658function playlistInfo(){
     659        global $akuserid;
     660        $query = "SELECT COUNT(music_playlist.pl_id) as count, SEC_TO_TIME(SUM(music_songs.length)) as time FROM music_playlist,music_songs WHERE music_playlist.song_id=music_songs.song_id";
     661        $result = mysql_query($query);
     662        $row = mysql_fetch_array($result);
     663        if($row['count'] == 0){
     664                return "Playlist is empty";
     665        }
     666        return "$row[count] Songs - $row[time]";
     667}
     668
     669function playlist_rem($itemid){
     670        $id = substr($itemid, 2);
     671        $query = "DELETE FROM music_playlist WHERE pl_id=$id";
     672        mysql_query($query);
     673        return $itemid;
     674}
     675
     676function playlist_move($item1,$item2){
     677        mp3act_connect();
     678        $item1 = substr($item1, 2);
     679        $item2 = substr($item2, 2);
     680        $row = array();
     681        $query = "SELECT pl_id,song_id FROM music_playlist WHERE pl_id=$item1 OR pl_id=$item2";
     682        $result = mysql_query($query);
     683        while($row[] = mysql_fetch_array($result)){
     684               
     685        }
     686        $query = "UPDATE music_playlist SET song_id=" . $row[0]['song_id'] . " WHERE pl_id=" . $row[1]['pl_id'];
     687                mysql_query($query);
     688                $query = "UPDATE music_playlist SET song_id=" . $row[1]['song_id'] . " WHERE pl_id=" . $row[0]['pl_id'];
     689
     690        mysql_query($query);
     691}
     692
     693function playlist_add($type,$itemid){
     694        global $akuserid;
     695       
     696        switch($type){
     697        case 'song':
     698                $query = "INSERT INTO music_playlist VALUES (NULL,$itemid,$akuserid,0)";
     699                mysql_query($query);
     700                $id = mysql_insert_id();
     701                $query = "SELECT music_artists.artist_name, music_artists.prefix,music_albums.album_name,SEC_TO_TIME(music_songs.length) AS length,music_songs.name,music_songs.track FROM music_artists,music_songs,music_albums WHERE music_songs.song_id=$itemid AND music_artists.artist_id=music_songs.artist_id AND music_albums.album_id=music_songs.album_id";
     702                $result = mysql_query($query);
     703                $row = mysql_fetch_array($result);
     704               
     705                $output[] = "<li id=\"pl$id\" onmouseover=\"setBgcolor('pl".$id."','#FCF7A5'); return false;\" onmouseout=\"setBgcolor('pl".$id."','#f3f3f3'); return false;\"><a class=music href=\"#\" onclick=\"movePLItem('up',this.parentNode); return false;\" title=\"Move Song Up in Playlist\"><img src=\"".skin_url."/img/music/up.gif\" /></a> <a class=music href=\"#\" onclick=\"movePLItem('down',this.parentNode); return false;\" title=\"Move Song Down in Playlist\"><img src=\"".skin_url."/img/music/down.gif\" /></a> <a class=music href=\"#\" onclick=\"plrem(this.parentNode.id); return false;\" title=\"Remove Song from Playlist\"><img src=\"".skin_url."/img/music/rem.gif\" /></a> $row[prefix] $row[artist_name] - $row[name]<p>Album: $row[album_name]<br/>Track: $row[track]<br/>$row[length]</p></li>";
     706                $output[] = 1;
     707                $output[] = 'pl'.$id;
     708                return $output;
     709        break;
     710        case 'album':
     711                $items='';
     712                $output = array();
     713                $query = "SELECT music_songs.song_id,music_songs.name,music_artists.artist_name,music_artists.prefix,music_albums.album_name,SEC_TO_TIME(music_songs.length) AS length,music_songs.name,music_songs.track FROM music_songs,music_artists,music_albums WHERE music_songs.album_id=$itemid AND music_songs.artist_id=music_artists.artist_id AND music_albums.album_id=music_songs.album_id ORDER BY track";
     714                $result = mysql_query($query);
     715                while($row = mysql_fetch_array($result)){
     716                  $query = "INSERT INTO music_playlist VALUES(NULL," . $row['song_id'] . "," . $akuserid . ", 0)";
     717                        mysql_query($query);
     718                        $id = mysql_insert_id();
     719                        $output[] = 'pl'.$id;
     720                        $items .= "<li id=\"pl$id\" onmouseover=\"setBgcolor('pl".$id."','#FCF7A5'); return false;\" onmouseout=\"setBgcolor('pl".$id."','#f3f3f3'); return false;\"><a class=music href=\"#\" onclick=\"movePLItem('up',this.parentNode); return false;\" title=\"Move Song Up in Playlist\"><img src=\"".skin_url."/img/music/up.gif\" /></a> <a class=music href=\"#\" onclick=\"movePLItem('down',this.parentNode); return false;\" title=\"Move Song Down in Playlist\"><img src=\"".skin_url."/img/music/down.gif\" /></a> <a class=music href=\"#\" onclick=\"plrem(this.parentNode.id); return false;\" title=\"Remove Song from Playlist\"><img src=\"".skin_url."/img/music/rem.gif\" /></a> $row[prefix] $row[artist_name] - $row[name]<p>Album: $row[album_name]<br/>Track: $row[track]<br/>$row[length]</p></li>";
     721                }
     722                $text[] = $items;
     723                $num[] = count($output);
     724                $text = array_merge($text,$num);
     725                $output = array_merge($text,$output);
     726                return $output;
     727
     728        break;
     729        case 'playlist':
     730                clearPlaylist();
     731                $query = "SELECT * FROM music_saved_playlists WHERE playlist_id=$itemid LIMIT 1";
     732                $result = mysql_query($query);
     733                $row = mysql_fetch_array($result);
     734                $songs = explode(",",$row['playlist_songs']);
     735               
     736                foreach($songs as $song){
     737                        $query = "INSERT INTO music_playlist VALUES(NULL,$song,$akuserid,0)";
     738                        mysql_query($query);
     739                }
     740                $output[0] = 1;
     741                return $output;
     742
     743        break;
     744        }
     745}
     746function randPlay($mode,$type,$num=0,$items){
     747                mp3act_connect();
     748                $tmp = '';
     749                $query = '';
     750                $items2 = explode(" ",$items);
     751                $items = '';
     752               
     753        if($mode == 'streaming'){
     754       
     755                session_cache_limiter('nocache');
     756    header("Content-Type: audio/mpegurl;");
     757        header("Content-Disposition: inline; filename=\"playlist.m3u\"");
     758        header("Expires: 0");
     759        header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
     760        header("Pragma: nocache");
     761                $tmp .= "#EXTM3U\n";
     762                switch($type){
     763                        case 'artists':
     764                                foreach($items2 as $item){
     765                                        $items .= " music_songs.artist_id=$item OR";
     766                                }
     767                                $items = preg_replace("/OR$/","",$items);
     768                                $query = "SELECT music_songs.song_id,music_artists.artist_name,music_songs.name,music_songs.length FROM music_songs,music_artists WHERE music_artists.artist_id=music_songs.artist_id AND (".$items.") ORDER BY rand()+0 LIMIT $num";
     769                        break;
     770                        case 'genre':
     771                                foreach($items2 as $item){
     772                                        $items .= " music_genres.genre_id=$item OR";
     773                                }
     774                                $items = preg_replace("/OR$/","",$items);
     775                                $query = "SELECT music_songs.song_id,music_artists.artist_name,music_songs.name,music_songs.length FROM music_songs,music_artists,music_genres,music_albums WHERE music_albums.album_id=music_songs.album_id AND music_albums.album_genre=music_genres.genre AND music_artists.artist_id=music_songs.artist_id AND (".$items.") ORDER BY rand()+0 LIMIT $num";
     776                        break;
     777                        case 'albums':
     778                        foreach($items2 as $item){
     779                                        $items .= " music_songs.album_id=$item OR";
     780                                }
     781                                $items = preg_replace("/OR$/","",$items);
     782                                $query = "SELECT music_songs.song_id,music_artists.artist_name,music_songs.name,music_songs.length FROM music_songs,music_artists WHERE music_artists.artist_id=music_songs.artist_id AND (".$items.") ORDER BY rand()+0 LIMIT $num";
     783                       
     784                        break;
     785                        case 'all':
     786                                $query = "SELECT music_songs.song_id,music_artists.artist_name,music_songs.name,music_songs.length FROM music_songs,music_artists WHERE music_artists.artist_id=music_songs.artist_id ORDER BY rand()+0 LIMIT $num";
     787                        break;
     788                }
     789                $result = mysql_query($query);
     790                       
     791                        while($row = mysql_fetch_array($result)){
     792                                $tmp .= "#EXTINF:$row[length],$row[artist_name] - $row[name]\n";
     793                                $tmp .= "$GLOBALS[http_url]$GLOBALS[uri_path]/mp3act_playstream.php?i=$row[song_id]&u=$_SESSION[sess_usermd5]&b=$_SESSION[sess_bitrate]&s=$_SESSION[sess_stereo]\n";
     794                        }
     795                return $tmp;   
     796                exit;
     797        }
     798}
     799
     800function play($mode,$type,$id){
     801                mp3act_connect();
     802                $tmp = '';
     803                $query = '';
     804               
     805        global $akuserid;
     806       
     807        if($mode == 'streaming'){
     808       
     809                session_cache_limiter('nocache');
     810    header("Content-Type: audio/mpegurl;");
     811        header("Content-Disposition: inline; filename=\"playlist.m3u\"");
     812        header("Expires: 0");
     813        header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
     814        header("Pragma: nocache");
     815                $tmp .= "#EXTM3U\n";
     816               
     817                if($type=='song'){             
     818                        $query = "SELECT music_songs.song_id,music_artists.artist_name,music_artists.prefix,music_songs.name,music_songs.length FROM music_songs,music_artists WHERE music_songs.song_id=$id AND music_artists.artist_id=music_songs.artist_id";
     819                }
     820                elseif($type=='album'){
     821                        $query = "SELECT music_songs.song_id,music_artists.artist_name,music_songs.name,music_artists.prefix,music_songs.length FROM music_songs,music_artists WHERE music_artists.artist_id=music_songs.artist_id AND music_songs.album_id=$id ORDER BY music_songs.track";
     822                }
     823                 elseif($type=='pl'){
     824                        $query = "SELECT music_songs.song_id,music_artists.artist_name,music_songs.name,music_artists.prefix,music_songs.length FROM music_songs,music_artists,music_playlist WHERE music_artists.artist_id=music_songs.artist_id AND music_songs.song_id=music_playlist.song_id AND music_playlist.user_id=$akuserid ORDER BY music_playlist.pl_id";                   
     825                }       
     826                       
     827                        $result = mysql_query($query);
     828                        while($row = mysql_fetch_array($result)){
     829                                $length = $row['length'];
     830                                if($GLOBALS[sample_mode] == 1){
     831                                        $length = floor($row['length']/4);
     832                                }
     833                                $tmp .= "#EXTINF:$length,$row[prefix] $row[artist_name] - $row[name]\n";
     834                                $tmp .= "$GLOBALS[http_url]$GLOBALS[uri_path]/mp3act_playstream.php?i=$row[song_id]&u=$_SESSION[sess_usermd5]&b=$_SESSION[sess_bitrate]&s=$_SESSION[sess_stereo]\n";
     835                        }                       
     836                        return $tmp;   
     837                        exit;
     838        }
     839/*      // JUKEBOX MODE
     840        else{
     841                        switch($type){
     842                                case 'stop':
     843                                        //exec("killall -c ".basename(getSystemSetting("phpbin"))." > /dev/null 2>&1 &");
     844                                         //exec("killall -c ".basename(getSystemSetting("mp3bin"))." > /dev/null 2>&1 &");
     845                                         killCmd("play.php");
     846                                         killCmd(basename(getSystemSetting("mp3bin")));
     847                                         //submitScrobbler($_SESSION['sess_userid']);
     848                                         
     849                                        if(file_exists("/tmp/mp3act")){
     850                                                unlink("/tmp/mp3act");
     851                                        }
     852                                        $query = "UPDATE music_songs SET random=0";
     853                                        mysql_query($query);
     854                                        $query = "DELETE FROM music_currentsong";
     855                                        mysql_query($query);
     856                                break;
     857                                case 'prev':
     858                                                // PREV is not working...
     859                                         /*exec("killall ".getSystemSetting("phpbin")." > /dev/null 2>&1 &");
     860                                         exec("killall ".getSystemSetting("mp3bin")." > /dev/null 2>&1 &");
     861                                         $query = "DELETE FROM music_currentsong";
     862                                                mysql_query($query);
     863                                         exec(getSystemSetting("phpbin")." includes/play.php 3 $id > /dev/null 2>&1 &");
     864                                         
     865                                break;
     866                                case 'next':
     867                                         //exec("killall -c ".basename(getSystemSetting("mp3bin"))." > /dev/null 2>&1 &");
     868                                         //killCmd(basename(getSystemSetting("mp3bin")));
     869                                break;
     870                                case 'song':
     871                                /*      if(!file_exists("/tmp/mp3act")){
     872                                        touch("/tmp/mp3act");
     873                                 exec(getSystemSetting("phpbin")." includes/play.php 1 $_SESSION[sess_userid] $id > /dev/null 2>&1 &");
     874                                        }
     875                                break;
     876                                case 'album':
     877                                /*      if(!file_exists("/tmp/mp3act")){
     878                                        touch("/tmp/mp3act");
     879                                 exec(getSystemSetting("phpbin")." includes/play.php 2 $_SESSION[sess_userid] $id > /dev/null 2>&1 &");
     880                                        }
     881                                break;
     882                                case 'pl':
     883                                /*      if(!file_exists("/tmp/mp3act")){
     884                                        touch("/tmp/mp3act");
     885                                 exec(getSystemSetting("phpbin")." includes/play.php 3 $id > /dev/null 2>&1 &");
     886                                        }
     887                                break;
     888                        }// END JUKEBOX MODE
     889        }*/
     890}
     891/*
     892function killCmd($cmd){
     893  $pids =  shell_exec("ps A | grep '$cmd' | awk -- '{print $1}'");
     894  $pids = explode("\n",$pids);
     895  exec("kill $pids[0] $pids[1] > /dev/null 2>&1 &");
     896}
     897*/
     898/*
     899function playLocal($file){
     900/*      $mp3player = getSystemSetting("mp3bin");
     901        $command = "$mp3player ".escapeshellarg(stripslashes($file));
     902        $pid = shell_exec("nohup $command > /dev/null 2>&1");
     903        //setPid($pid);
     904  //$tmp=exec("$mp3player ".escapeshellarg(stripslashes($file))." ");*/
     905//}*/
     906/*
     907function setPid($pid){
     908  if(file_exists("/tmp/mp3act") && is_writable("/tmp/mp3act")){
     909    $handle = fopen("/tmp/mp3act", "w");
     910    fwrite($handle, $pid);
     911    fclose($handle);
     912  }
     913}*/
     914
     915function download($album){
     916        mp3act_connect();
     917        $query = "SELECT music_songs.filename,
     918        music_artists.artist_name,
     919        music_albums.album_name
     920        FROM music_songs,music_artists,music_albums
     921        WHERE music_songs.album_id=$album
     922        AND music_songs.album_id=music_albums.album_id
     923        AND music_songs.artist_id=music_artists.artist_id LIMIT 1";
     924       
     925        $result = mysql_query($query);
     926        $row = mysql_fetch_array($result);
     927        $dir = dirname($row['filename']);
     928       
     929        $test = new zip_file("/tmp/album_$album.zip");
     930        $test->set_options(array('inmemory'=>0,'storepaths'=>0,'level'=>0,'method'=>0,'prepend'=>"$row[artist_name] - $row[album_name]"));
     931        $test->add_files($dir);
     932       
     933        $test->store_files($dir);
     934        $test->create_archive();
     935       
     936        header("Content-type:application/zip");
     937
     938        $header = "Content-disposition: attachment; filename=\"";
     939        $header .= "album_$album.zip";
     940        $header .= "\"";
     941        header($header);
     942        header("Content-length: " . filesize("/tmp/album_$album.zip"));
     943        header("Content-transfer-encoding: binary");
     944        header("Pragma: no-cache");
     945        header("Expires: 0");
     946        $chunksize = 1*(1024*1024); // how many bytes per chunk
     947  $buffer = '';
     948  $handle = fopen("/tmp/album_$album.zip", 'rb');
     949  if ($handle === false) {
     950   return false;
     951  }
     952  while (!feof($handle)) {
     953   $buffer = fread($handle, $chunksize);
     954   print $buffer;
     955  }
     956  fclose($handle);
     957  //readfile("/tmp/album_$album.zip");
     958        unlink("/tmp/album_$album.zip");
     959        //$test->download_file();
     960}
     961
     962/*function verifyIP($user_md5,$ip){
     963  mp3act_connect();
     964  $query = "SELECT user_id FROM mp3act_users WHERE md5=\"$user_md5\" AND last_ip=\"$ip\"";
     965  $result = mysql_query($query);
     966  if(mysql_num_rows($result) > 0){
     967        return true;
     968  }
     969  return false;
     970}*/
     971
     972
     973function updateNumPlays($num,$r=0,$user='',$mode='jukebox'){
     974        mp3act_connect();
     975        $query = "UPDATE music_songs SET numplays=numplays+1";
     976        if($r==1){
     977         $query .= ",random=1";
     978        }
     979        $query .= " WHERE song_id=$num";
     980  mysql_query($query);
     981 
     982  if(!empty($user)){
     983        if($mode == 'streaming'){
     984                        $query = "SELECT user_id FROM mp3act_users WHERE md5=\"$user\"";       
     985                        $result = mysql_query($query);
     986                        $row = mysql_fetch_array($result);
     987                        $user = $row['user_id'];
     988                       
     989        }
     990        $query = "INSERT INTO music_playhistory VALUES (NULL,$user,$num,NOW())";
     991//      insertScrobbler($num,$user,$mode);
     992        mysql_query($query);
     993  }
     994}
     995
     996function streamPlay($id, $rate=0, $stereo="s",$user='',$ip=''){
     997  mp3act_connect();
     998  // check to see if IP is in the verified IP DB for that user
     999  //if(verifyIP($user,$ip)){
     1000 
     1001  $query = "SELECT music_artists.artist_name,
     1002  music_songs.name,
     1003  music_songs.bitrate,
     1004  music_songs.length as length,
     1005  music_songs.filename as filename,
     1006  music_songs.size as size
     1007  FROM music_songs,music_artists
     1008  WHERE music_songs.song_id=$id
     1009  AND music_artists.artist_id=music_songs.artist_id";
     1010 
     1011  $result=mysql_query($query);
     1012  $row = mysql_fetch_array($result);
     1013        updateNumPlays($id,0,$user,'streaming');
     1014        clearstatcache(); // flush buffer
     1015 
     1016        $file['name'] = basename($row['filename']);
     1017        $mp3out = '';
     1018        /*if(getSystemSetting("lamebin") != "" && $rate != 0){
     1019                        $row['size'] = (($row['length'] + 1) * $rate * 1000)/8;
     1020                        $mp3out = getSystemSetting("lamebin")." -b $rate -s $stereo --silent --nores --mp3input -h \"".stripslashes($row['filename'])."\" -";
     1021        }else{*/
     1022                $mp3out = stripslashes($row['filename']);
     1023       
     1024        //}
     1025        $size=$row['size'];
     1026        $mode = $GLOBALS[sample_mode];
     1027        //$mode = getSystemSetting("sample_mode");
     1028        if($mode == 1){
     1029                $size = floor($row['size']/4);
     1030        }
     1031        header("Content-Type: audio/mpeg");
     1032        header("Content-Length: $size");
     1033  header("Content-Disposition: filename=$row[artist_name] - $row[name]");
     1034       
     1035        // Run the command, and read back the results at the bitrate size + 1K.
     1036        $blocksize=($row['bitrate']*1024)+1024;
     1037        $totaldata=0;
     1038        if($rate!=0 && $mode==1){
     1039                $temp = @popen($mp3out, "r");
     1040                while (($data = @fread($temp, $blocksize )) && ($totaldata <= $size ) )
     1041                        {echo $data; $totaldata+=$blocksize; }
     1042                pclose($temp);
     1043        }
     1044        elseif($rate!=0 ){
     1045                $temp = @popen($mp3out, "r");
     1046                while ($data = @fread($temp, $blocksize) )
     1047                        {echo $data; }
     1048                pclose($temp);
     1049        }
     1050        elseif($mode==1 ){
     1051                $temp = @fopen($mp3out, "r");
     1052                while (!feof($temp)  && ($totaldata <= $size ) )
     1053                        {$data = @fread($temp, $blocksize); echo $data; $totaldata+=$blocksize; }
     1054                fclose($temp);
     1055        }
     1056        else{
     1057                $temp = @fopen($mp3out, "r");
     1058                while (!feof($temp) )
     1059                        {$data = @fread($temp, $blocksize); echo $data; }
     1060                fclose($temp);
     1061        }
     1062        //} // end IF for verify IP
     1063        exit;
     1064}
     1065
     1066function art_insert($album_id, $artist, $album){
     1067                mp3act_connect();
     1068                $query ='';
     1069                $image = art_query($artist,$album);
     1070                if($image != ""){
     1071                        $query = "UPDATE music_albums SET album_art=\"$album_id.jpg\" WHERE album_id=$album_id";
     1072                        mysql_query($query);
     1073
     1074                        $tmpimg = http_get($image);
     1075                        $path = $GLOBALS['abs_path']."/art/";
     1076                       
     1077                        $file = "$album_id.jpg";
     1078                        $filename = $path.$file;
     1079                        touch($filename);
     1080                       
     1081                        // Let's make sure the art directory is writable first.
     1082                        if (is_writable($filename)) {
     1083
     1084                                 if (!$handle = fopen($filename, 'a')) {
     1085                                                         echo "Cannot open file ($filename)";
     1086                                                         exit;
     1087                                 }
     1088                       
     1089                                 // Write $somecontent to our opened file.
     1090                                 if (fwrite($handle, $tmpimg) === FALSE) {
     1091                                                 echo "Cannot write to file ($filename)";
     1092                                                 exit;
     1093                                 }
     1094                                                               
     1095                                 fclose($handle);
     1096                       
     1097                        } else {
     1098                                 echo "The file $filename is not writable";
     1099                        }
     1100                       
     1101                        return $file;
     1102                }
     1103                else{
     1104                        $query = "UPDATE music_albums SET album_art=\"fail\" WHERE album_id=$album_id";
     1105                        mysql_query($query);
     1106                }
     1107
     1108}
     1109
     1110function art_query ($artist, $album) {
     1111/*  $amazon_api_id = getSystemSetting("amazonid");
     1112  if(!empty($amazon_api_id)){
     1113        $album = preg_replace( '!\(.+\)!', '', $album );
     1114                $theq = "$artist, $album";
     1115                $query = urlencode($theq);
     1116               
     1117                $file = "http://xml.amazon.com/onca/xml3?t=blah&dev-t=";
     1118                $file .= $amazon_api_id;
     1119                $file .= "&mode=music&type=lite&page=1&f=xml&KeywordSearch=";
     1120                $file .= $query;
     1121                $fp = fopen($file, "r");
     1122                $contentStart = fread($fp, 200000);
     1123
     1124                $content = ereg_replace("<?xml.*\">.*<ProductInfo.*\">","",$contentStart);
     1125
     1126                $items = explode("</Details>",$content);
     1127                $maxlinks2 = "1";
     1128
     1129                for ($i = 0; $i < $maxlinks2; $i++) {
     1130                                               
     1131                                //$artSmall = ereg_replace(".*<ImageUrlSmall>","",$items[$i]);
     1132                                //$artSmall = ereg_replace("</ImageUrlSmall>.*","",$artSmall);
     1133                                $artMedium = ereg_replace(".*<ImageUrlMedium>","",$items[$i]);
     1134                                $artMedium = ereg_replace("</ImageUrlMedium>.*","",$artMedium);
     1135                                //$artLarge = ereg_replace(".*<ImageUrlLarge>","",$items[$i]);
     1136                                //$artLarge = ereg_replace("</ImageUrlLarge>.*","",$artLarge);
     1137                               
     1138                                if (strstr($artMedium, "amazon.com") == true) {
     1139                               
     1140                                                //$small_size = getimagesize($artSmall);
     1141                                                                //if($small_size[0] > 2) { $small_okay = "yes"; } else { $small_okay = "no"; }
     1142                                         /* $medium_size = getimagesize($artMedium);
     1143                                                                if($medium_size[0] > 2) { $medium_okay = "yes"; } else { $medium_okay = "no"; }
     1144                                                $large_size = getimagesize($artLarge);
     1145                                                                if($large_size[0] > 2) { $large_okay = "yes"; } else { $large_okay = "no"; }
     1146                                                       
     1147                                                //return $artSmall; 
     1148                                                return $artMedium;
     1149                               
     1150                                } else {
     1151                                                return '';
     1152                                }
     1153                               
     1154                }
     1155  }
     1156  else{
     1157        return '';
     1158  }*/
     1159
     1160  }
     1161
     1162// Grab an image over the web and save it locally
     1163function http_get($url)
     1164{
     1165
     1166   $url_stuff = parse_url($url);
     1167   $port = isset($url_stuff['port']) ? $url_stuff['port'] : 80;
     1168
     1169   $fp = fsockopen($url_stuff['host'], $port);
     1170   $buffer = '';
     1171   $query  = 'GET ' . $url_stuff['path'] . " HTTP/1.0\n";
     1172   $query .= 'Host: ' . $url_stuff['host'];
     1173   $query .= "\n\n";
     1174
     1175   fwrite($fp, $query);
     1176
     1177   while ($tmp = fread($fp, 1024))
     1178   {
     1179       $buffer .= $tmp;
     1180   }
     1181
     1182   preg_match('/Content-Length: ([0-9]+)/', $buffer, $parts);
     1183   return substr($buffer, - $parts[1]);
     1184
     1185
     1186}
     1187?>
     1188 No newline at end of file
  • mythweb/modules/music/mp3act_hidden.php

     
     1<?php
     2// hidden iframe to process streaming
     3include("mp3act_functions.php");
     4
     5// Play the Music
     6if(isset($_GET['type'])){
     7        if($_GET['type'] == 'artists' || $_GET['type'] == 'genre' || $_GET['type'] == 'albums' || $_GET['type'] == 'all'){
     8//              echo "rand";
     9                echo randPlay('streaming',$_GET['type'],$_GET['num'],$_GET['items']);
     10        }
     11        else{
     12//              echo "play";
     13                echo play('streaming',$_GET['type'],$_GET['id']);
     14//              play($_SESSION['sess_playmode'],$_GET['type'],$_GET['id']);
     15        }
     16}
     17?>
  • mythweb/modules/music/init.php

     
    1616// First, we should check to see that MythMusic is configured.
    1717// Make sure to turn off fatal errors in case the table isn't there.
    1818    $db->disable_fatal_errors();
    19     $has_music = $db->query_col('SELECT COUNT(*) FROM musicmetadata');
     19    $has_music = $db->query_col('SELECT COUNT(*) FROM music_songs');
    2020    $db->enable_fatal_errors();
    2121    $db->error(false);
    2222
  • mythweb/modules/music/mp3act_fat.js

     
     1var Fat = {
     2        make_hex : function (r,g,b)
     3        {
     4                r = r.toString(16); if (r.length == 1) r = '0' + r;
     5                g = g.toString(16); if (g.length == 1) g = '0' + g;
     6                b = b.toString(16); if (b.length == 1) b = '0' + b;
     7                return "#" + r + g + b;
     8        },
     9        fade_all : function ()
     10        {
     11                var a = document.getElementsByTagName("*");
     12                for (var i = 0; i < a.length; i++)
     13                {
     14                        var o = a[i];
     15                        var r = /fade-?(\w{3,6})?/.exec(o.className);
     16                        if (r)
     17                        {
     18                                if (!r[1]) r[1] = "";
     19                                if (o.id) Fat.fade_element(o.id,null,null,"#"+r[1]);
     20                        }
     21                }
     22        },
     23        fade_element : function (id, fps, duration, from, to)
     24        {
     25                if (!fps) fps = 30;
     26                if (!duration) duration = 3000;
     27                if (!from || from=="#") from = "#FFFF33";
     28                if (!to) to = this.get_bgcolor(id);
     29               
     30                var frames = Math.round(fps * (duration / 1000));
     31                var interval = duration / frames;
     32                var delay = interval;
     33                var frame = 0;
     34               
     35                if (from.length < 7) from += from.substr(1,3);
     36                if (to.length < 7) to += to.substr(1,3);
     37               
     38                var rf = parseInt(from.substr(1,2),16);
     39                var gf = parseInt(from.substr(3,2),16);
     40                var bf = parseInt(from.substr(5,2),16);
     41                var rt = parseInt(to.substr(1,2),16);
     42                var gt = parseInt(to.substr(3,2),16);
     43                var bt = parseInt(to.substr(5,2),16);
     44               
     45                var r,g,b,h;
     46                while (frame < frames)
     47                {
     48                        r = Math.floor(rf * ((frames-frame)/frames) + rt * (frame/frames));
     49                        g = Math.floor(gf * ((frames-frame)/frames) + gt * (frame/frames));
     50                        b = Math.floor(bf * ((frames-frame)/frames) + bt * (frame/frames));
     51                        h = this.make_hex(r,g,b);
     52               
     53                        setTimeout("Fat.set_bgcolor('"+id+"','"+h+"')", delay);
     54
     55                        frame++;
     56                        delay = interval * frame;
     57                }
     58                setTimeout("Fat.set_bgcolor('"+id+"','"+to+"')", delay);
     59        },
     60        set_bgcolor : function (id, c)
     61        {
     62                var o = document.getElementById(id);
     63                o.style.backgroundColor = c;
     64        },
     65        get_bgcolor : function (id)
     66        {
     67                var o = document.getElementById(id);
     68                while(o)
     69                {
     70                        var c;
     71                        if (window.getComputedStyle) c = window.getComputedStyle(o,null).getPropertyValue("background-color");
     72                        if (o.currentStyle) c = o.currentStyle.backgroundColor;
     73                        if ((c != "" && c != "transparent") || o.tagName == "BODY") { break; }
     74                        o = o.parentNode;
     75                }
     76                if (c == undefined || c == "" || c == "transparent") c = "#FFFFFF";
     77                var rgb = c.match(/rgb\s*\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*\)/);
     78                if (rgb) c = this.make_hex(parseInt(rgb[1]),parseInt(rgb[2]),parseInt(rgb[3]));
     79                return c;
     80        }
     81}
     82 No newline at end of file
  • mythweb/modules/music/mp3act_js.js

     
     1        window.onload=function(){ init(); };
     2       
     3        function init(){
     4                mode = 'streaming';
     5                setPageTitle();
     6                x_viewPlaylist(viewPlaylist_cb);
     7                x_playlistInfo(plinfo_cb);
     8                setPLTitle();
     9                setCurrentPage();
     10                setControls();
     11                updateBox(page,0);
     12        }
     13        function empty_cb(new_data){
     14         
     15        }
     16       
     17        function newWindow(type,id){
     18                if(type == 'add')
     19                        newwindow = window.open('add.php','addmusic','height=400,width=500,scrollbars=yes,resizable=yes');
     20                else if(type == 'download')
     21                        newwindow = window.open('download.php?id='+id,'download','height=200,width=350,scrollbars=yes,resizable=yes');
     22
     23                if (window.focus) {newwindow.focus()}
     24        }
     25       
     26        function setPageNav(){
     27                //document.getElementById("breadcrumb").innerHTML = prevpage;
     28        }
     29   
     30        function switchPage(newpage){
     31                prevpage = page;
     32                page = newpage;
     33       
     34                updateBox(page,0);
     35                setPageTitle();
     36                setCurrentPage();
     37                //setPageNav();
     38        }
     39       
     40        function switchMode(newmode){
     41                if(newmode == mode){ //do nothing
     42                }
     43                else{
     44                        x_switchMode(newmode,switchMode_cb);
     45                }
     46        }
     47       
     48        function setPLTitle(){
     49                if(mode == 'streaming')
     50                        newmode = 'Streaming';
     51                                if(mode == 'jukebox')
     52                        newmode = 'Jukebox';
     53//              newmode = 'Streaming';
     54                document.getElementById("pl_title").innerHTML = newmode + " Playlist";
     55        }
     56       
     57        function viewPlaylist_cb(new_data){
     58                document.getElementById("playlist").innerHTML = new_data;
     59        }
     60       
     61        function switchMode_cb(new_data){
     62                mode = new_data;
     63                setControls();
     64                setPLTitle();
     65                x_playlistInfo(plinfo_cb);
     66                x_viewPlaylist(viewPlaylist_cb);
     67        }
     68       
     69        function setCurrentPage(){
     70                var x = document.getElementById('nav');
     71                var y = x.getElementsByTagName('a');
     72                for (var i=0;i<y.length;i++){
     73                                        y[i].removeAttribute("class");
     74                                        if(y[i].id == page)
     75                                                y[i].setAttribute('class','c');
     76                                }
     77        }
     78       
     79        function getDropDown(type,id){
     80                x_getDropDown(type,id,getDropDown_cb);
     81        }
     82       
     83        function getDropDown_cb(new_data){
     84                ul = document.getElementById("browse_ul");
     85                ul.innerHTML = new_data;
     86                ul.style.display = 'block';
     87        }
     88       
     89        function closeDropDown(){
     90                ul = document.getElementById("browse_ul");
     91                ul.style.display = 'none';
     92                ul.innerHTML = '';
     93        }
     94       
     95        function setControls(){
     96                if(mode=='streaming')
     97                                document.getElementById("controls").innerHTML = '<div class="current" id="current">&nbsp;<strong class="right">Streaming Mode Active</strong></div>';
     98                                else{
     99                                        document.getElementById("controls").innerHTML = '<div class="buttons"><a href="#" onclick="play(\'prev\',nowplaying); return false;" title="Previous Song"><img src="img/rew_big.gif" /></a><a href="#" id="play" onclick="play(\'pl\',0); return false;" title="Play Playlist"><img src="img/play_big.gif" /></a><a href="#" id="stop" onclick="play(\'stop\',0); return false;" title="Stop Music"><img src="img/stop_big.gif" /></a><a href="#" onclick="play(\'next\',0); return false;" title="Next Song"><img src="img/ff_big.gif" /></a><br/><!--<img src="img/vol.gif" />--></div><div class="current" id="current"><span id="artist"></span><span id="song"></span></div>';
     100                                        refresh();
     101                                        setTimeout("refresh()", 10000);
     102                                }
     103        }
     104       
     105        function savePL(type,data){
     106                if(type=='open'){
     107                        var save_form = "<h2>Save Playlist</h2><form onsubmit='return savePL(\"save\",this)' method='get' action=''><strong>Playlist Name</strong><br/><input type='text' name='save_pl_name' id='save_pl_name' size='25' /><br/><input type='checkbox' name='pl_private' id='pl_private' /> Private Playlist<br/><br/><input type='submit' value='save' /> <input type='button' onclick=\"savePL('close',0); return false;\" value='cancel' /></form> ";
     108                        document.getElementById("box_extra").innerHTML = save_form;
     109                        document.getElementById("box_extra").style.display = 'block';
     110                }
     111                else if(type=='save'){
     112                        var pl_name = data.save_pl_name.value;
     113                        var prvt = 0;
     114                        if(data.pl_private.checked==true)
     115                                prvt = 1;
     116                        x_savePlaylist(pl_name,prvt,save_Playlist_cb);
     117                        return false;
     118                }
     119                else if(type=='close')
     120                        document.getElementById("box_extra").style.display = 'none';
     121        }
     122       
     123        function save_Playlist_cb(new_data){
     124                box = document.getElementById("box_extra");
     125                box.innerHTML = new_data;
     126                setTimeout("box.style.display='none'","1250");
     127        }
     128       
     129        function movePLItem(direction,item){
     130                                var y;
     131                                var temp;
     132                if(direction == "up")
     133                        y = item.previousSibling;
     134                else if(direction == "down")
     135                                        y = item.nextSibling;
     136                                       
     137                                if(y && y.nodeName == 'LI'){   
     138                        pl_move(y.id,item.id);
     139                       
     140                        var temp = y.innerHTML;
     141                        y.innerHTML = item.innerHTML;
     142                        item.innerHTML = temp;
     143                        Fat.fade_element(y.id,null,900,'#ffcc99','#f3f3f3');
     144                }
     145        }
     146       
     147        function setBgcolor(id, c)
     148                        {
     149                                if(id != ('pl'+nowplaying)){
     150                                var o = document.getElementById(id);
     151                                o.style.backgroundColor = c;
     152                                }
     153                        }
     154                       
     155        function refresh_cb(new_data) {
     156                if(new_data[0] == 1){
     157                }       
     158                else{
     159                        document.getElementById("current").innerHTML = new_data[0];
     160                        isplaying = new_data[2];
     161                        if(new_data[1] > 0){
     162                               
     163                                // highlight current song
     164                                oldsong = nowplaying;
     165                                nowplaying = new_data[1];
     166                                if(oldsong != 0 && oldsong != new_data[1]){
     167                                                var old = document.getElementById('pl'+oldsong);
     168                                                                old.removeAttribute('class');
     169                                                                Fat.fade_element('pl'+oldsong,null,null,'#96D1EF','#f3f3f3');
     170                                                               
     171                                                                Fat.fade_element('pl'+new_data[1],null,1400,'#f3f3f3','#96D1EF');
     172                                }
     173                                var current = document.getElementById('pl'+new_data[1]);
     174                               
     175                                current.setAttribute('class','currentplay');
     176                                document.getElementById('stop').style.display = 'inline';
     177                                document.getElementById('play').style.display = 'none';
     178                               
     179                        }else if(nowplaying!=0 && isplaying==0){
     180                                document.getElementById('pl'+nowplaying).removeAttribute('class');
     181                                Fat.fade_element('pl'+nowplaying,null,null,'#96D1EF','#f3f3f3');
     182                                nowplaying = 0;
     183                                document.getElementById('stop').style.display = 'none';
     184                                document.getElementById('play').style.display = 'inline';
     185                        }
     186                        else if(isplaying==0){
     187                                document.getElementById('stop').style.display = 'none';
     188                                document.getElementById('play').style.display = 'inline';
     189                        }
     190                        else if(isplaying==1){
     191                                        document.getElementById('stop').style.display = 'inline';
     192                                document.getElementById('play').style.display = 'none';
     193                        }
     194                }
     195                                setTimeout("refresh()", 20000);
     196                        }
     197       
     198                        function refresh(){
     199                                if(mode=='jukebox'){
     200                                        var artist = document.getElementById("artist").innerHTML;
     201                                        var song = document.getElementById("song").innerHTML;
     202                                        x_getCurrentSong(artist,song,refresh_cb);
     203                                }
     204                        }
     205               
     206                        function setPageTitle(){
     207                                var pages= new Array()
     208                                pages["browse"]="Browse Music";
     209                                pages["search"]="Search Music";
     210                                pages["prefs"]="User Account Preferences";
     211                                pages["random"]="Create a Random Mix";
     212                                pages["playlists"]="Load a Saved Playlist";
     213                                pages["stats"]="Server Statistics";
     214                                pages["admin"]="mp3act Administration";
     215                                pages["about"]="About mp3act";
     216                                document.getElementById("pagetitle").innerHTML = pages[page];
     217                               
     218                        }
     219                       
     220                        function getRandItems(type){
     221                          document.getElementById("breadcrumb").innerHTML = '';
     222                                x_getRandItems(type,getRandItems_cb);
     223                        }
     224                       
     225                        function getRandItems_cb(new_data){
     226                                document.getElementById("rand_items").innerHTML = new_data;
     227                        }
     228                       
     229                        function updateBox_cb(new_data){
     230                                document.getElementById("info").innerHTML = new_data;
     231                                document.getElementById("loading").style.display = 'none';
     232                               
     233                                if(clearbc==1)
     234                                        breadcrumb();
     235                                clearbc = 1;
     236                       
     237                        }
     238                       
     239                        function updateBox(type,itemid){
     240                                document.getElementById("loading").style.display = 'block';
     241                                x_musicLookup(type,itemid,updateBox_cb);
     242                               
     243                                if(type == 'genre' || type == 'letter'){
     244                                        bc_parenttype = '';
     245                                        bc_parentitem = '';
     246                                }
     247                                else if(type == 'album' || (type == 'artist' && bc_parenttype != '')){
     248                                        if(bc_childtype == 'all'){
     249                                                bc_parenttype = bc_childtype;
     250                                                bc_parentitem = bc_childitem;
     251                                        }
     252                                }
     253                                else if(type == 'browse' || type == 'search' || type == 'about' || type == 'prefs' || type == 'random' || type == 'admin' || type == 'playlists' || type == 'stats'){
     254
     255                                        bc_parenttype = '';
     256                                        bc_parentitem = '';
     257                                        itemid='';
     258                                        type='';
     259                                }
     260                                else{
     261                                        bc_parenttype = bc_childtype;
     262                                        bc_parentitem = bc_childitem;
     263                                }
     264                               
     265                                bc_childitem = itemid;
     266                                bc_childtype = type;
     267                               
     268                       
     269                               
     270                                       
     271                        }
     272                       
     273                        function deletePlaylist(id){
     274                                if(confirm("Are you sure you want to DELETE THIS SAVED PLAYLIST?")){
     275                                        x_deletePlaylist(id,deletePlaylist_cb);
     276                                }
     277                        }
     278                       
     279                        function deletePlaylist_cb(new_data){
     280                                // reload saved PL page
     281                                clearbc = 0;
     282                                x_musicLookup('playlists',0,updateBox_cb);
     283                                setMsgText("Saved Playlist Successfully Deleted");
     284                        }
     285                       
     286                        function plrem(item){
     287                                x_playlist_rem(item,plrem_cb);
     288                        }
     289                       
     290                        function plrem_cb(rem){
     291                                p = document.getElementById("playlist");
     292                                d_nested = document.getElementById(rem);
     293                                throwaway_node = p.removeChild(d_nested);
     294                                x_playlistInfo(plinfo_cb);
     295                        }
     296                       
     297                        function pladd(type,id){
     298                                x_playlist_add(type,id,pladd_cb);
     299                        }
     300                       
     301                        function pladd_cb(new_data){
     302                               
     303                                if(new_data[0] == 1){
     304                                        x_viewPlaylist(viewPlaylist_cb);
     305                        x_playlistInfo(plinfo_cb);
     306                                }
     307                                else{
     308                                        document.getElementById("playlist").innerHTML += new_data[0];
     309                                       
     310                                        for(var i=2; i<new_data[1]+2; i++){
     311                                                Fat.fade_element(new_data[i],null,1400,'#B4EAA2','#f3f3f3');
     312                                        }
     313                                        x_playlistInfo(plinfo_cb);
     314                                }
     315                        }
     316                       
     317                        function pl_move(item1,item2){
     318                                x_playlist_move(item1,item2,pl_move_cb);
     319                        }
     320                       
     321                        function pl_move_cb(){
     322                                        // do nothing
     323                        }
     324                       
     325                        function plclear(){
     326                                x_clearPlaylist(plinfo_cb);
     327                                document.getElementById("playlist").innerHTML = "";
     328                        }
     329                       
     330                        function plinfo_cb(new_data){
     331                                document.getElementById("pl_info").innerHTML = new_data;
     332                        }
     333                       
     334                        function breadcrumb(){
     335                                        x_buildBreadcrumb(page,bc_parenttype,bc_parentitem,bc_childtype,bc_childitem,breadcrumb_cb);
     336                        }
     337                       
     338                        function breadcrumb_cb(new_data){
     339                                //if(new_data!="")
     340                                        document.getElementById("breadcrumb").innerHTML = new_data;
     341                        }
     342                       
     343                        function play(type,id){
     344                                //alert (mode);
     345                                if(mode == 'streaming'){
     346                                        document.getElementById('hidden').src = null;
     347                                        document.getElementById("hidden").src = "hidden.php?type="+type+"&id="+id;
     348                                        //alert(document.getElementById("hidden").src);
     349                                }
     350                                else{
     351                                                x_play(mode,type,id,play_cb);
     352                                }
     353                        }
     354                       
     355                        function randPlay(data){
     356                         
     357                                var type = data.random_type.value;
     358                                if(type == ""){
     359                                        setMsgText("You must choose a random type");
     360                                        return false;
     361                                }
     362                                var num=0;
     363                                if(mode == 'streaming')
     364                                        num = data.random_count.value;
     365                                var items ='';
     366                                if(type != 'all'){
     367                                        for(var i=0;i<data.random_items.options.length;i++){
     368                                                if(data.random_items.options[i].selected == true)
     369                                                 items += data.random_items.options[i].value+" ";
     370                                        }
     371                                       
     372                                        if(items == ""){
     373                                          setMsgText("You must choose at least one random item");
     374                                          return false;
     375                                        }
     376                                }
     377                                if(mode == 'streaming'){
     378                                        document.getElementById('hidden').src = null;
     379                                        document.getElementById("hidden").src = "hidden.php?type="+type+"&num="+num+"&items="+items;
     380                                }
     381                                else{
     382                                                x_randPlay(mode,type,num,items,play_cb);
     383                                }
     384                                return false;
     385
     386                        }
     387                       
     388                        function play_cb(new_data){
     389                                refresh();
     390                        }
     391                       
     392                        function showAlbumArt(mode){
     393                                document.getElementById('bigart').style.display = mode;
     394                        }
     395                       
     396                        function download(id){
     397                                document.getElementById('hidden').src = null;
     398                                document.getElementById("hidden").src = "hidden.php?type=dl"+"&id="+id;
     399                        }
     400                       
     401                        function addmusic(form){
     402                                document.getElementById("current").innerHTML = form.musicpath.value;
     403                                return false;
     404                        }
     405               
     406                          function adminAddUser(form){
     407                                document.getElementById("breadcrumb").innerHTML = "";
     408               
     409              if(form!=""){
     410                if(form.firstname.value == '' || form.lastname.value == '' || form.username.value == '' || form.password.value == '' || form.password2.value == '' || form.email.value == ''){
     411                  setMsgText("Required Fields Are Empty");
     412                  return false;
     413                }
     414               
     415                if(form.password.value != form.password2.value){
     416                  setMsgText("Password Do Not Match");
     417                  document.getElementById("password").value = "";
     418                  document.getElementById("password2").value = "";
     419                  return false;
     420                }
     421                if(form.email.value.indexOf(".") <= 2 && form.email.value.indexOf("@") <= 0){
     422                  setMsgText("Email Address is Invalid");
     423                  document.getElementById("email").focus();
     424                  return false;
     425          }
     426                  x_adminAddUser(form.firstname.value,form.lastname.value,form.username.value,form.email.value,form.perms.value,form.password.value,adminAddUser_cb);
     427                  return false;
     428               
     429              }
     430              else{
     431                x_adminAddUser('','','','','','',updateBox_cb);
     432              }
     433                                       
     434                       
     435                                return false;
     436                        }
     437
     438                        function adminAddUser_cb(new_data){
     439                                clearbc=0;
     440                                if(new_data==1){
     441                                  updateBox('admin',0);
     442                                        setMsgText("User Successfully Added");
     443                                }else{
     444                                  setMsgText("Username is Already Taken. Try Another.");
     445                                  document.getElementById("username").value = "";
     446                                  document.getElementById("username").focus();
     447                                }
     448                        }
     449                       
     450                        function adminEditUsers(user,action,form){
     451                                document.getElementById("breadcrumb").innerHTML = "";
     452                                if(user!=0){
     453                                        if(action == 'del'){
     454                                                if(confirm('Are you Sure you want to DELETE THE USER?')){
     455                                                        x_adminEditUsers(user,action,adminEditUsers_cb);
     456                                                }
     457                                       
     458                                        }
     459                                        else if(action == 'mod'){
     460                                                x_adminEditUsers(user,'mod',form.active.value,form.perms.value,adminEditUsers_cb);
     461                                        }else{
     462                                                x_adminEditUsers(user,'user',updateBox_cb);
     463                                        }                       
     464                                }
     465                                else{
     466                                        x_adminEditUsers(updateBox_cb);
     467                                }
     468                                return false;
     469                        }
     470                       
     471                        function adminEditUsers_cb(new_data){
     472                                clearbc=0;
     473                                x_adminEditUsers(updateBox_cb);
     474                                if(new_data==1){
     475                                        setMsgText("User Successfully Deleted");
     476                                               
     477                                }
     478                                if(new_data==2){
     479                                        setMsgText("User Successfully Updated");
     480                                }
     481                        }
     482                       
     483                        function setMsgText(text){
     484                                        document.getElementById("breadcrumb").innerHTML = "<span class='error'>"+text+"</span>";
     485                                        Fat.fade_element('breadcrumb',null,2000,'#F5C2C2','#ffffff');
     486                        }
     487                       
     488                        function editSettings_cb(new_data){
     489                                if(new_data == 1){
     490                                        clearbc = 0;
     491                                        updateBox('admin',0);
     492                                        setMsgText("New Settings Saved");
     493                                }
     494                        }
     495                       
     496                        function editSettings(form){
     497                                if(form != 0){
     498                                        x_editSettings(1,form.invite.value,form.downloads.value,form.amazonid.value,form.upload_path.value,form.sample_mode.value,form.mp3bin.value,form.lamebin.value,form.phpbin.value,editSettings_cb);
     499                                }
     500                                else{
     501                                        x_editSettings(0,'','','','','','','','',updateBox_cb);
     502                                }
     503                                return false;
     504                        }
     505                       
     506                        function editUser_cb(new_data){
     507                                if(new_data == 1){
     508                                        clearbc = 0;
     509                                        updateBox('prefs',0);
     510                                       
     511                                        setMsgText("New Settings Saved");
     512                                }
     513                               
     514                        }
     515                       
     516                        function editUser(type,form){
     517                                if(form != 0){
     518                                        if(type == 'info'){
     519                                                x_editUser(type,form.firstname.value,form.lastname.value,form.email.value,0,'','','',editUser_cb);
     520                                        }
     521                                        else if(type == 'settings'){
     522                                                x_editUser(type,form.default_playmode.value,form.default_bitrate.value,form.default_stereo.value,form.theme_id.value,form.as_username.value,form.as_password.value,form.as_type.value,editUser_cb);
     523                                        }
     524                                        else if(type == 'pass'){
     525                                                if(form.new_password.value != form.new_password2.value){
     526                                                                setMsgText("New Passwords Do Not Match");
     527                                                }else{
     528                                                        document.getElementById("breadcrumb").innerHTML = "";
     529                                                        x_editUser(type,form.old_password.value,form.new_password.value,'',0,'','','',editUser_cb);
     530                                                }
     531                                        }
     532                                }else{
     533                                        x_editUser(type,'','','',0,'','','',updateBox_cb);
     534                                }
     535                                return false;
     536                        }
     537                       
     538                        function searchMusic(form){
     539                                if(form.searchbox.value == '' || form.searchbox.value == '[enter your search terms]'){
     540                                        setMsgText("You Must Enter Something to Search For");
     541                                }
     542                                else{
     543                                        document.getElementById("breadcrumb").innerHTML = "";
     544                                        x_searchMusic(form.searchbox.value,form.search_options.value,updateBox_cb);
     545                                }
     546                                return false;
     547                        }
     548                       
     549                        function clearDB_cb(new_data){
     550                                if(new_data == 1)
     551                                        setMsgText("Database Successfully Cleared");
     552                        }
     553                       
     554                        function clearDB(){
     555                        if(confirm("Are you sure you want to RESET THE MUSIC DATABASE? This will remove all data regarding music and music stastics.")){
     556                                x_resetDatabase(clearDB_cb);
     557                                }
     558                        }
     559                       
     560                        function sendInvite(form){
     561                                x_createInviteCode(form.email.value,sendInvite_cb);
     562                                return false;
     563                        }
     564                       
     565                        function sendInvite_cb(new_data){
     566                                if(new_data == 1){
     567                                  setMsgText("Invitation Successfully Sent");
     568                                  document.getElementById("email").value = "";
     569                                }
     570                        }
     571                       
     572                        function submitScrobbler(userid){
     573                          x_submitScrobbler(userid,empty_cb);
     574                          setMsgText("AudioScrobbler Submission Attempted");
     575                          return false;
     576                        }
     577 No newline at end of file
  • mythweb/modules/music/mp3act_playstream.php

     
     1<?php
     2include_once("mp3act_functions.php");
     3set_time_limit(0);
     4streamPlay($_GET['i'],$_GET['b'],$_GET['s'],$_GET['u'],$_SERVER['REMOTE_ADDR'])
     5?>
     6 No newline at end of file
  • mythmusic/mythmusic/metadata.cpp

     
    6262void Metadata::persist()
    6363{
    6464    MSqlQuery query(MSqlQuery::InitCon());
    65     query.prepare("UPDATE musicmetadata set rating = :RATING , "
    66                   "playcount = :PLAYCOUNT , lastplay = :LASTPLAY "
    67                   "where intid = :ID ;");
     65    query.prepare("UPDATE music_songs set rating = :RATING , "
     66                  "numplays = :PLAYCOUNT , lastplay = :LASTPLAY "
     67                  "where song_id = :ID ;");
    6868    query.bindValue(":RATING", rating);
    6969    query.bindValue(":PLAYCOUNT", playcount);
    7070    query.bindValue(":LASTPLAY", lastplay);
     
    9898    QString sqlfilename = filename.remove(0, m_startdir.length());
    9999
    100100    MSqlQuery query(MSqlQuery::InitCon());
    101     query.prepare("SELECT artist,compilation_artist,album,title,genre,year,tracknum,"
    102                   "length,intid,rating,playcount,lastplay,compilation,format FROM "
    103                   "musicmetadata WHERE filename = :FILENAME ;");
     101    query.prepare("SELECT music_artists.artist_name, music_artists_1.artist_name AS compilation_artist, "
     102                  "music_albums.album_name, music_songs.name, music_genres.genre, music_songs.year, "
     103                  "music_songs.track, music_songs.length, music_songs.song_id, music_songs.rating, "
     104                  "music_songs.numplays, music_songs.lastplay, music_songs.compilation, "
     105                  "music_songs.format FROM (((music_songs INNER JOIN music_artists ON "
     106                  "music_songs.artist_id = music_artists.artist_id) INNER JOIN music_albums ON "
     107                  "music_songs.album_id = music_albums.album_id) INNER JOIN music_genres ON "
     108                  "music_songs.genre_id = music_genres.genre_id) INNER JOIN music_artists AS "
     109                  "music_artists_1 ON music_albums.artist_id = music_artists_1.artist_id WHERE "
     110                  "(((music_songs.filename)= :FILENAME ));");
    104111    query.bindValue(":FILENAME", sqlfilename.utf8());
    105112
    106113    if (query.exec() && query.isActive() && query.size() > 0)
     
    146153    // Don't update the database if a song with the exact same
    147154    // metadata is already there
    148155    MSqlQuery query(MSqlQuery::InitCon());
    149     query.prepare("SELECT filename FROM musicmetadata WHERE "
    150                   "( ( artist = :ARTIST ) AND "
    151                   "( compilation_artist = :COMPILATION_ARTIST ) "
    152                   "( album = :ALBUM ) AND ( title = :TITLE ) "
    153                   "AND ( genre = :GENRE ) AND "
    154                   "( year = :YEAR ) AND ( tracknum = :TRACKNUM ) "
    155                   "AND ( length = :LENGTH ) "
    156                   "AND ( format = :FORMAT) );");
     156    query.prepare("SELECT music_songs.filename FROM (((music_songs "
     157                  "INNER JOIN music_artists ON music_songs.artist_id = "
     158                  "music_artists.artist_id) INNER JOIN music_albums ON "
     159                  "music_songs.album_id = music_albums.album_id) INNER "
     160                  "JOIN music_artists AS music_artists_1 ON music_albums.compilationartist_id "
     161                  "= music_artists_1.artist_id) INNER JOIN music_genres ON "
     162                  "music_songs.genre_id = music_genres.genre_id WHERE "
     163                  "(((music_artists.artist_name)=:ARTIST) AND "
     164                  "((music_artists_1.artist_id)=:COMPILATION_ARTIST) "
     165                  "AND ((music_albums.album_name)=:ALBUM) AND "
     166                  "((music_songs.name)=:TITLE) AND "
     167                  "((music_genres.genre)=:GENRE) AND ((music_songs.year)=:YEAR) "
     168                  "AND ((music_songs.track)=:TRACKNUM) AND "
     169                  "((music_songs.length)=:LENGTH) AND "
     170                  "((music_songs.format)=:FORMAT));");
     171   
    157172    query.bindValue(":ARTIST", artist.utf8());
    158173    query.bindValue(":COMPILATION_ARTIST", compilation_artist.utf8());
    159174    query.bindValue(":ALBUM", album.utf8());
     
    167182    if (query.exec() && query.isActive() && query.size() > 0)
    168183        return;
    169184
    170     query.prepare("INSERT INTO musicmetadata "
    171                   "(artist,   compilation_artist, album,      title,  "
    172                   " genre,    year,               tracknum,   length, "
    173                   " filename, compilation,        date_added, date_modified, "
     185//Genrecheck
     186//Albumcheck
     187//Artist
     188    int ArtistID;
     189    query.prepare("SELECT music_artists.artist_id FROM music_artists "
     190                  " WHERE (((music_artists.artist_name)=:ARTIST));");
     191    query.bindValue(":ARTIST", artist.utf8());
     192    query.exec();
     193//    cout << query.executedQuery() << endl;
     194    if (query.size() > 0)
     195        {
     196        query.next();
     197        ArtistID = query.value(0).toInt();
     198        }
     199    else
     200        {
     201        query.prepare("INSERT INTO music_artists (artist_name) VALUES (:ARTIST);");
     202        query.bindValue(":ARTIST", artist.utf8());
     203        query.exec();
     204//      cout << query.executedQuery() << endl;
     205        query.prepare("SELECT music_artists.artist_id FROM music_artists "
     206                  " WHERE (((music_artists.artist_name)=:ARTIST));");
     207        query.bindValue(":ARTIST", artist.utf8());
     208        query.exec();
     209//      cout << query.executedQuery() << endl;
     210        query.next();
     211        ArtistID = query.value(0).toInt();     
     212        }
     213
     214//Compilation Artist   
     215    int CoArtistID;
     216    query.prepare("SELECT music_artists.artist_id FROM music_artists "
     217                  " WHERE (((music_artists.artist_name)=:ARTIST));");
     218    query.bindValue(":ARTIST", compilation_artist.utf8());
     219    query.exec();
     220//    cout << query.executedQuery() << endl;
     221    if (query.size() > 0)
     222        {
     223        query.next();
     224        CoArtistID = query.value(0).toInt();
     225        }
     226    else
     227        {
     228        query.prepare("INSERT INTO music_artists (artist_name) VALUES (:ARTIST);");
     229        query.bindValue(":ARTIST", compilation_artist.utf8());
     230        query.exec();
     231//      cout << query.executedQuery() << endl;
     232        query.prepare("SELECT music_artists.artist_id FROM music_artists "
     233                  " WHERE (((music_artists.artist_name)=:ARTIST));");
     234        query.bindValue(":ARTIST", compilation_artist.utf8());
     235        query.exec();
     236//      cout << query.executedQuery() << endl;
     237        query.next();
     238        CoArtistID = query.value(0).toInt();   
     239        }
     240
     241//Album
     242    int AlbumID;
     243    query.prepare("SELECT music_albums.album_id FROM music_albums "
     244                  " WHERE (((music_albums.album_name)=:ALBUM));");
     245    query.bindValue(":ALBUM", album.utf8());
     246    query.exec();
     247//    cout << query.executedQuery() << endl;
     248    if (query.size() > 0)
     249        {
     250        query.next();
     251        AlbumID = query.value(0).toInt();
     252        }
     253    else
     254        {
     255        query.prepare("INSERT INTO music_albums (album_name) VALUES (:ALBUM);");
     256        query.bindValue(":ALBUM", album.utf8());
     257        query.exec();
     258//      cout << query.executedQuery() << endl;
     259       
     260        query.prepare("SELECT music_albums.album_id FROM music_albums "
     261                  " WHERE (((music_albums.album_name)=:ALBUM));");
     262        query.bindValue(":ALBUM", album.utf8());
     263        query.exec();
     264//      cout << query.executedQuery() << endl;
     265        query.next();
     266
     267        AlbumID = query.value(0).toInt();       
     268        }
     269
     270//Genres
     271    int GenreID;
     272    query.prepare("SELECT music_genres.genre_id FROM music_genres "
     273                  " WHERE (((music_genres.genre)=:GENRE));");
     274    query.bindValue(":GENRE", genre.utf8());
     275    query.exec();
     276//    cout << query.executedQuery() << endl;
     277    if (query.size() > 0)
     278        {
     279        query.next();
     280        GenreID = query.value(0).toInt();
     281        }
     282    else
     283        {
     284        query.prepare("INSERT INTO music_genres (genre) VALUES (:GENRE);");
     285        query.bindValue(":GENRE", genre.utf8());
     286        query.exec();
     287//        cout << query.executedQuery() << endl;
     288       
     289        query.prepare("SELECT music_genres.genre_id FROM music_genres "
     290                  " WHERE (((music_genres.genre)=:GENRE));");
     291        query.bindValue(":GENRE", genre.utf8());
     292        query.exec();
     293//      cout << query.executedQuery() << endl;
     294        query.next();
     295        GenreID = query.value(0).toInt();       
     296        }
     297
     298//Song hinzufgen
     299
     300   query.prepare("INSERT INTO music_songs "
     301                  "(artist_id,   album_id, compilationartist_id,     name,  "
     302                  " genre_id,    year,               track,   length, "
     303                  " filename, compilation,        date_entered, date_modified, "
    174304                  " format ) "
    175305                  "VALUES "
    176                   "(:ARTIST,  :COMPILATION_ARTIST,:ALBUM,     :TITLE,   "
     306                  "(:ARTIST,  :ALBUM, :COMPILATION_ARTIST,    :TITLE,   "
    177307                  " :GENRE,   :YEAR,              :TRACKNUM,  :LENGTH,  "
    178308                  " :FILENAME,:COMPILATION,       :DATE_ADDED,:DATE_MOD,"
    179309                  " :FORMAT)");
    180     query.bindValue(":ARTIST", artist.utf8());
    181     query.bindValue(":COMPILATION_ARTIST", compilation_artist.utf8());
    182     query.bindValue(":ALBUM", album.utf8());
     310    query.bindValue(":ARTIST", ArtistID);
     311    query.bindValue(":COMPILATION_ARTIST", CoArtistID);
     312    query.bindValue(":ALBUM", AlbumID);
    183313    query.bindValue(":TITLE", title.utf8());
    184     query.bindValue(":GENRE", genre.utf8());
     314    query.bindValue(":GENRE", GenreID);
    185315    query.bindValue(":YEAR", year);
    186316    query.bindValue(":TRACKNUM", tracknum);
    187317    query.bindValue(":LENGTH", length);
     
    192322    query.bindValue(":FORMAT", format);
    193323   
    194324    query.exec();
    195 
     325//    cout << query.executedQuery() << endl;
    196326    // easiest way to ensure we've got 'id' filled.
    197327    fillData();
    198328}
     
    341471
    342472    MSqlQuery query(MSqlQuery::InitCon());
    343473
    344     query.prepare("UPDATE musicmetadata    "
     474    query.prepare("UPDATE music_songs    "
    345475                  "SET artist   = :ARTIST,   "
    346476                  "    album    = :ALBUM,    "
    347477                  "    title    = :TITLE,    "
     
    353483                  "    compilation        = :COMPILATION,   "
    354484                  "    compilation_artist = :COMPILATION_ARTIST, "
    355485                  "    format             = :FORMAT "
    356                   "WHERE intid = :ID;");
     486                  "WHERE song_id = :ID;");
    357487    query.bindValue(":ARTIST",             artist.utf8());
    358488    query.bindValue(":ALBUM",              album.utf8());
    359489    query.bindValue(":TITLE",              title.utf8());
     
    427557    if (title == "")
    428558        return;
    429559
    430     QString thequery = "SELECT artist,compilation_artist,album,title,genre,year,tracknum,length,"
    431                        "filename,intid,rating,playcount,lastplay,compilation,format "
    432                        "FROM musicmetadata WHERE title = :TITLE";
     560//    QString thequery = "SELECT artist,compilation_artist,album,title,genre,year,tracknum,length,"
     561//                       "filename,song_id,rating,playcount,lastplay,compilation,format "
     562//                       "FROM musicmetadata WHERE title = :TITLE";
     563    QString thequery = "SELECT music_artists.artist_name, music_artists_1.artist_name AS compilation_artist, "
     564                       "music_albums.album_name, music_songs.name, music_genres.genre, music_songs.year, "
     565                       "music_songs.track, music_songs.length, music_songs.filename, music_songs.song_id, "
     566                       "music_songs.rating, music_songs.numplays, music_songs.lastplay, music_songs.compilation, "
     567                       "music_songs.format FROM music_artists AS music_artists_1 INNER JOIN (((music_songs INNER "
     568                       "JOIN music_artists ON music_songs.artist_id = music_artists.artist_id) INNER JOIN "
     569                       "music_albums ON music_songs.album_id = music_albums.album_id) INNER JOIN "
     570                       "music_genres ON music_songs.genre_id = music_genres.genre_id) ON "
     571                       "music_artists_1.artist_id = music_songs.compilationartist_id WHERE name = :TITLE";
    433572
    434573    if (album != "")
    435         thequery += " AND album = :ALBUM";
     574        thequery += " AND album_name = :ALBUM";
    436575    if (artist != "")
    437         thequery += " AND artist = :ARTIST";
     576        thequery += " AND artist_name = :ARTIST";
    438577    if (compilation_artist != "")
    439578        thequery += " AND compilation_artist = :COMPILATION_ARTIST";
    440579
     
    478617        return;
    479618       
    480619    MSqlQuery query(MSqlQuery::InitCon());
    481     query.prepare("SELECT title,artist,compilation_artist,album,title,genre,year,tracknum,"
    482                   "length,filename,rating,playcount,lastplay,compilation,format FROM "
    483                   "musicmetadata WHERE intid = :ID ;");
     620//    query.prepare("SELECT title,artist,compilation_artist,album,title,genre,year,tracknum,"
     621//                  "length,filename,rating,playcount,lastplay,compilation,format FROM "
     622//                  "musicmetadata WHERE song_id = :ID ;");
     623    query.prepare("SELECT music_songs.name, music_artists.artist_name, music_artists_1.artist_name AS "
     624                  "compilation_artist, music_albums.album_name, music_genres.genre, music_songs.year, "
     625                  "music_songs.track, music_songs.length, music_songs.filename, music_songs.rating, "
     626                  "music_songs.numplays, music_songs.lastplay, music_songs.compilation, music_songs.format "
     627                  "FROM music_artists AS music_artists_1 INNER JOIN (((music_songs INNER JOIN music_artists "
     628                  "ON music_songs.artist_id = music_artists.artist_id) INNER JOIN music_albums ON "
     629                  "music_songs.album_id = music_albums.album_id) INNER JOIN music_genres ON "
     630                  "music_songs.genre_id = music_genres.genre_id) ON music_artists_1.artist_id = "
     631                  "music_songs.compilationartist_id WHERE (((music_songs.song_id) = :ID ));");           
    484632    query.bindValue(":ID", id);
    485633       
    486634    if (query.exec() && query.isActive() && query.numRowsAffected() > 0)
     
    491639        artist = QString::fromUtf8(query.value(1).toString());
    492640        compilation_artist = QString::fromUtf8(query.value(2).toString());
    493641        album = QString::fromUtf8(query.value(3).toString());
    494         title = QString::fromUtf8(query.value(4).toString());
    495         genre = QString::fromUtf8(query.value(5).toString());
    496         year = query.value(6).toInt();
    497         tracknum = query.value(7).toInt();
    498         length = query.value(8).toInt();
    499         filename = QString::fromUtf8(query.value(9).toString());
    500         rating = query.value(10).toInt();
    501         playcount = query.value(11).toInt();
    502         lastplay = query.value(12).toString();
    503         compilation = (query.value(13).toInt() > 0);
    504         format = query.value(14).toString();
     642        genre = QString::fromUtf8(query.value(4).toString());
     643        year = query.value(5).toInt();
     644        tracknum = query.value(6).toInt();
     645        length = query.value(7).toInt();
     646        filename = QString::fromUtf8(query.value(8).toString());
     647        rating = query.value(9).toInt();
     648        playcount = query.value(10).toInt();
     649        lastplay = query.value(11).toString();
     650        compilation = (query.value(12).toInt() > 0);
     651        format = query.value(13).toString();
    505652
    506653        if (!filename.contains("://"))
    507654            filename = m_startdir + filename;
     
    644791void AllMusic::resync()
    645792{
    646793    done_loading = false;
    647     QString aquery =    "SELECT intid, artist, compilation_artist, album, title, genre, "
    648                         "year, tracknum, length, filename, rating, "
    649                         "lastplay, playcount, compilation, format "
    650                         "FROM musicmetadata "
    651                         "ORDER BY intid;";
     794//    QString aquery =    "SELECT song_id, artist, compilation_artist, album, title, genre, "
     795//                        "year, tracknum, length, filename, rating, "
     796//                        "lastplay, playcount, compilation, format "
     797//                        "FROM music_songs "
     798//                        "ORDER BY song_id;";
    652799
     800    QString aquery =    "SELECT music_songs.song_id, music_artists.artist_name, "
     801                        "music_artists_1.artist_name AS compilation_artist, music_albums.album_name, "
     802                        "music_songs.name, music_genres.genre, music_songs.year, music_songs.track, "
     803                        "music_songs.length, music_songs.filename, music_songs.rating, "
     804                        "music_songs.lastplay, music_songs.numplays, music_songs.compilation, "
     805                        "music_songs.format FROM music_artists AS music_artists_1 INNER JOIN "
     806                        "(((music_songs INNER JOIN music_artists ON music_songs.artist_id = "
     807                        "music_artists.artist_id) INNER JOIN music_genres ON music_songs.genre_id = "
     808                        "music_genres.genre_id) INNER JOIN music_albums ON music_songs.album_id = "
     809                        "music_albums.album_id) ON music_artists_1.artist_id = "
     810                        "music_songs.compilationartist_id ORDER BY music_songs.song_id;";
     811
     812
    653813    QString filename, artist, album, title;
    654814
    655815    MSqlQuery query(MSqlQuery::InitCon());
  • mythmusic/mythmusic/dbcheck.cpp

     
    99#include "mythtv/mythcontext.h"
    1010#include "mythtv/mythdbcon.h"
    1111
    12 const QString currentDatabaseVersion = "1005";
     12const QString currentDatabaseVersion = "1006";
    1313
    1414static void UpdateDBVersionNumber(const QString &newnumber)
    1515{
     
    323323
    324324        performActualUpdate(updates, "1005", dbver);
    325325    }
     326   
     327   
     328        if (dbver == "1005")
     329            {
     330            const QString updates[] = {
     331"DROP TABLE musicmetadata;",
     332"DROP TABLE musicplaylist;",
     333"CREATE TABLE music_albums (album_id int(11) NOT NULL auto_increment, album_name varchar(255) NOT NULL default '', album_art text NOT NULL, PRIMARY KEY  (album_id));",
     334"CREATE TABLE music_artists (artist_id int(11) NOT NULL auto_increment, artist_name varchar(255) default NULL, prefix varchar(7) NOT NULL default '', PRIMARY KEY  (artist_id));",
     335"CREATE TABLE music_currentsong (song_id int(11) NOT NULL default '0', pl_id int(11) NOT NULL default '0', random tinyint(3) NOT NULL default '0');",
     336"CREATE TABLE music_genres (genre_id int(11) NOT NULL auto_increment, genre varchar(25) NOT NULL default '', PRIMARY KEY  (genre_id));",
     337"CREATE TABLE music_playhistory (play_id int(11) NOT NULL auto_increment, user_id int(6) default NULL, song_id int(11) default NULL, date_played datetime default NULL, PRIMARY KEY  (play_id));",
     338"CREATE TABLE music_playlist (pl_id int(11) NOT NULL auto_increment, song_id int(11) default NULL, user_id int(11) NOT NULL default '0', PRIMARY KEY  (pl_id));",
     339"CREATE TABLE music_saved_playlists (playlist_id int(11) NOT NULL auto_increment, playlist_name varchar(255) default NULL, playlist_songs text, date_created datetime default NULL, time int(11) default NULL, songcount smallint(8) default NULL, hostname VARCHAR(255) PRIMARY KEY (playlist_id));",
     340"CREATE TABLE music_songs (song_id int(11) NOT NULL auto_increment, artist_id int(11) NOT NULL default '0', compilationartist_id int(11) NOT NULL default '0', album_id int(11) NOT NULL default '0', genre_id int(11) NOT NULL default '0', year smallint(6) NOT NULL default '0', lastplay datetime default NULL, date_entered datetime default NULL, date_modified datetime default NULL, name varchar(255) default NULL, track smallint(6) NOT NULL default '0', length int(11) NOT NULL default '0', size int(11) NOT NULL default '0', bitrate smallint(6) NOT NULL default '0', type varchar(4) default NULL, numplays int(11) NOT NULL default '0', rating tinyint(4) NOT NULL default '0', filename text, random tinyint(4) NOT NULL default '0', format varchar(4) NOT NULL default '0', compilation tinyint default 0, PRIMARY KEY  (song_id));",
     341"CREATE TABLE music_stats (num_artists smallint(5) unsigned NOT NULL default '0', num_albums smallint(5) unsigned NOT NULL default '0', num_songs mediumint(8) unsigned NOT NULL default '0', num_genres tinyint(3) unsigned NOT NULL default '0', total_time varchar(12) NOT NULL default '0', total_size varchar(10) NOT NULL default '0');",
     342"RENAME TABLE smartplaylist TO music_smartplaylist;"
     343"RENAME TABLE smartplaylistitem TO music_smartplaylistitem;"
     344"RENAME TABLE smartplaylistcategory TO music_smartplaylistcategory;"
     345""
     346};
     347        performActualUpdate(updates, "1006", dbver);
     348    }
    326349}
    327350
  • mythmusic/mythmusic/playlist.cpp

     
    326326    all_other_playlists->clear();
    327327
    328328    MSqlQuery query(MSqlQuery::InitCon());
    329     query.prepare("SELECT playlistid FROM musicplaylist "
    330                   "WHERE name != :DEFAULT  "
    331                   "AND name != :BACKUP  "
    332                   "AND hostname = :HOST ORDER BY playlistid ;");
     329//    query.prepare("SELECT playlistid FROM musicplaylist "
     330//                  "WHERE name != :DEFAULT  "
     331//                  "AND name != :BACKUP  "
     332//                  "AND hostname = :HOST ORDER BY playlistid ;");
     333//    query.bindValue(":DEFAULT", "default_playlist_storage");
     334//    query.bindValue(":BACKUP", "backup_playlist_storage");
     335//    query.bindValue(":HOST", my_host);
     336    query.prepare("SELECT playlist_id FROM music_saved_playlists WHERE playlist_name != :DEFAULT AND playlist_name != :BACKUP ORDER BY playlist_id;");
    333337    query.bindValue(":DEFAULT", "default_playlist_storage");
    334338    query.bindValue(":BACKUP", "backup_playlist_storage");
    335     query.bindValue(":HOST", my_host);
    336339
    337340    if (query.exec() && query.isActive() && query.size() > 0)
    338341    {
     
    468471    }
    469472   
    470473    MSqlQuery query(MSqlQuery::InitCon());
    471     query.prepare("SELECT playlistid, name, songlist FROM "
    472                   "musicplaylist WHERE name = :NAME AND "
    473                   "hostname = :HOST ;");
    474     query.bindValue(":NAME", a_name);
    475     query.bindValue(":HOST", a_host);
    476474
     475    if (name == "default_playlist_storage" || name == "backup_playlist_storage")
     476    {
     477        query.prepare("SELECT playlist_id, playlist_name, playlist_songs FROM "
     478                      "music_saved_playlists WHERE playlist_name = :NAME AND hostname = :HOST;");
     479        query.bindValue(":NAME", a_name);
     480        query.bindValue(":HOST", a_host);
     481    }
     482    else
     483    {
     484        query.prepare("SELECT playlist_id, playlist_name, playlist_songs FROM "
     485                      "music_saved_playlists WHERE playlist_name = :NAME;");
     486        query.bindValue(":NAME", a_name);
     487    }
     488
    477489    if (query.exec() && query.size() > 0)
    478490    {
    479491        while (query.next())
     
    498510void Playlist::loadPlaylistByID(int id, QString a_host)
    499511{
    500512    MSqlQuery query(MSqlQuery::InitCon());
    501     query.prepare("SELECT playlistid, name, songlist FROM "
    502                   "musicplaylist WHERE playlistid = :ID AND "
    503                   "hostname = :HOST ;");
     513    query.prepare("SELECT playlist_id, playlist_name, playlist_songs FROM "
     514                  "music_saved_playlists WHERE playlist_id = :ID;");
    504515    query.bindValue(":ID", id);
    505     query.bindValue(":HOST", a_host);
     516//    query.bindValue(":HOST", a_host);
    506517
    507518    query.exec();
    508519
     
    603614
    604615    QString theQuery;
    605616
    606     theQuery = "SELECT intid FROM musicmetadata ";
     617    theQuery = "SELECT song_id FROM music_songs ";
    607618
    608619    if (whereClause.length() > 0)
    609620      theQuery += whereClause;
     
    717728    QString orderBy;
    718729    int limitTo;
    719730   
    720     query.prepare("SELECT smartplaylistid, matchtype, orderby, limitto "
     731    query.prepare("SELECT music_smartplaylistid, matchtype, orderby, limitto "
    721732                  "FROM smartplaylist WHERE categoryid = :CATEGORYID AND name = :NAME;");
    722733    query.bindValue(":NAME", name.utf8());
    723734    query.bindValue(":CATEGORYID", categoryID);
     
    748759    QString whereClause = "WHERE ";
    749760   
    750761    query.prepare("SELECT field, operator, value1, value2 "
    751                   "FROM smartplaylistitem WHERE smartplaylistid = :ID;");
     762                  "FROM music_smartplaylistitem WHERE smartplaylistid = :ID;");
    752763    query.bindValue(":ID", ID);
    753764    query.exec();
    754765    if (query.isActive() && query.numRowsAffected() > 0)
     
    789800    fillSonglistFromSongs();
    790801
    791802    MSqlQuery query(MSqlQuery::InitCon());
    792     query.prepare("SELECT NULL FROM musicplaylist WHERE playlistid = :ID ;");
     803    query.prepare("SELECT NULL FROM music_saved_playlists WHERE playlist_id = :ID ;");
    793804    query.bindValue(":ID", playlistid);
    794805
    795806    if (query.exec() && query.isActive() && query.size() > 0)
    796807    {
    797         query.prepare("UPDATE musicplaylist SET songlist = :LIST , "
    798                       "name = :NAME WHERE playlistid = :ID ;");
     808        query.prepare("UPDATE music_saved_playlists SET playlist_songs = :LIST , "
     809                      "playlist_name = :NAME WHERE playlist_id = :ID ;");
    799810        query.bindValue(":LIST", raw_songlist);
    800811        query.bindValue(":NAME", a_name.utf8());
    801812        query.bindValue(":ID", playlistid);
    802813    }
    803814    else
    804815    {
    805         query.prepare("INSERT INTO musicplaylist (name,songlist) "
     816        query.prepare("INSERT INTO music_saved_playlists (playlist_name,playlist_songs) "
    806817                      "VALUES(:NAME, :LIST);");
    807818        query.bindValue(":LIST", raw_songlist);
    808819        query.bindValue(":NAME", a_name.utf8());
     
    829840    fillSonglistFromSongs();
    830841   
    831842    MSqlQuery query(MSqlQuery::InitCon());
    832     query.prepare("INSERT musicplaylist (name, hostname) "
     843    query.prepare("INSERT music_saved_playlists (playlist_name, hostname) "
    833844                  "VALUES(:NAME, :HOST);");
    834845    query.bindValue(":NAME", name.utf8());
    835846    query.bindValue(":HOST", a_host);
    836847
    837848    query.exec();
    838849
    839     query.prepare("SELECT playlistid FROM musicplaylist WHERE "
    840                   "name = :NAME AND hostname = :HOST ;");
     850    query.prepare("SELECT playlist_id FROM music_saved_playlists WHERE "
     851                  "playlist_name = :NAME AND hostname = :HOST;");
    841852    query.bindValue(":NAME", name.utf8());
    842853    query.bindValue(":HOST", a_host);
    843854
     
    12101221    }
    12111222
    12121223    MSqlQuery query(MSqlQuery::InitCon());
    1213     query.prepare("DELETE FROM musicplaylist WHERE playlistid = :ID ;");
     1224    query.prepare("DELETE FROM music_saved_playlists WHERE playlist_id = :ID ;");
    12141225    query.bindValue(":ID", kill_me);
    12151226
    12161227    if (query.exec() || query.size() < 1)
  • mythmusic/mythmusic/smartplaylist.cpp

     
    3333static SmartPLField SmartPLFields[] =
    3434{
    3535    { "",              "",                               ftString,   0,    0,    0 },
    36     { "Artist",        "artist",                         ftString,   0,    0,    0 },
    37     { "Album",         "album",                          ftString,   0,    0,    0 },
    38     { "Title",         "title",                          ftString,   0,    0,    0 },
     36    { "Artist",        "music_artists.artist_name",                         ftString,   0,    0,    0 },
     37    { "Album",         "album_name",                          ftString,   0,    0,    0 },
     38    { "Title",         "name",                          ftString,   0,    0,    0 },
    3939    { "Genre",         "genre",                          ftString,   0,    0,    0 },
    4040    { "Year",          "year",                           ftNumeric,  1900, 2099, 2000 },
    41     { "Track No.",     "tracknum",                       ftNumeric,  0,    99,   0 },
     41    { "Track No.",     "track",                       ftNumeric,  0,    99,   0 },
    4242    { "Rating",        "rating",                         ftNumeric,  0,    10,   0 },
    43     { "Play Count",    "playcount",                      ftNumeric,  0,    9999, 0 },
     43    { "Play Count",    "numplays",                      ftNumeric,  0,    9999, 0 },
    4444    { "Compilation",   "compilation",                    ftBoolean,  0,    0,    0 },
    45     { "Comp. Artist",  "compilation_artist",             ftString,   0,    0,    0 },
     45    { "Comp. Artist",  "music_artists_1.artist_name",             ftString,   0,    0,    0 },
    4646    { "Last Play",     "FROM_DAYS(TO_DAYS(lastplay))",   ftDate,     0,    0,    0 },
    4747    { "Date Imported", "FROM_DAYS(TO_DAYS(date_added))", ftDate,     0,    0,    0 },
    4848};       
     
    656656   
    657657    MSqlQuery query(MSqlQuery::InitCon());
    658658    QString querystr;
    659     querystr = QString("SELECT DISTINCT %1 FROM musicmetadata ORDER BY %2").arg(field).arg(field);
     659    querystr = QString("SELECT DISTINCT %1 FROM FROM music_artists AS music_artists_1 INNER JOIN (((music_songs INNER JOIN music_albums ON music_songs.album_id = music_albums.album_id) INNER JOIN music_artists ON music_songs.artist_id = music_artists.artist_id) INNER JOIN music_genres ON music_songs.genre_id = music_genres.genre_id) ON music_artists_1.artist_id = music_songs.compilationartist_id ORDER BY %2").arg(field).arg(field);
    660660       
    661661    query.exec(querystr);
    662662    if (query.isActive() && query.numRowsAffected())
     
    815815    }
    816816   
    817817    MSqlQuery query(MSqlQuery::InitCon());
    818     query.prepare("INSERT INTO smartplaylistitem (smartplaylistid, field, operator,"
     818    query.prepare("INSERT INTO music_smartplaylistitem (smartplaylistid, field, operator,"
    819819                  " value1, value2)"
    820820                  "VALUES (:SMARTPLAYLISTID, :FIELD, :OPERATOR, :VALUE1, :VALUE2);");
    821821    query.bindValue(":SMARTPLAYLISTID", smartPlaylistID);
     
    11301130{
    11311131    bPlaylistIsValid = true;
    11321132   
    1133     QString sql = "select count(*) from musicmetadata ";
     1133    QString sql = "select count(*) from music_songs ";
    11341134    sql += getWhereClause();
    11351135   
    11361136    MSqlQuery query(MSqlQuery::InitCon());
     
    11771177   
    11781178    MSqlQuery query(MSqlQuery::InitCon());
    11791179    // insert new smartplaylist
    1180     query.prepare("INSERT INTO smartplaylist (name, categoryid, matchtype, orderby, limitto) "
     1180    query.prepare("INSERT INTO music_smartplaylist (name, categoryid, matchtype, orderby, limitto) "
    11811181                "VALUES (:NAME, :CATEGORYID, :MATCHTYPE, :ORDERBY, :LIMIT);");
    11821182    query.bindValue(":NAME", name.utf8());
    11831183    query.bindValue(":CATEGORYID", categoryid);
     
    11931193   
    11941194    // get smartplaylistid
    11951195    int ID;
    1196     query.prepare("SELECT smartplaylistid FROM smartplaylist "
     1196    query.prepare("SELECT smartplaylistid FROM music_smartplaylist "
    11971197                  "WHERE categoryid = :CATEGORYID AND name = :NAME;");
    11981198    query.bindValue(":CATEGORYID", categoryid);
    11991199    query.bindValue(":NAME", name.utf8());
     
    12531253    int ID;
    12541254   
    12551255    query.prepare("SELECT smartplaylistid, name, categoryid, matchtype, orderby, limitto "
    1256                   "FROM smartplaylist WHERE name = :NAME AND categoryid = :CATEGORYID;");
     1256                  "FROM music_smartplaylist WHERE name = :NAME AND categoryid = :CATEGORYID;");
    12571257    query.bindValue(":NAME", name.utf8());
    12581258    query.bindValue(":CATEGORYID", categoryid);
    12591259    if (query.exec())
     
    12851285    uint rowCount;
    12861286   
    12871287    query.prepare("SELECT field, operator, value1, value2 "
    1288                   "FROM smartplaylistitem WHERE smartplaylistid = :ID "
     1288                  "FROM music_smartplaylistitem WHERE smartplaylistid = :ID "
    12891289                  "ORDER BY smartplaylistitemid;");
    12901290    query.bindValue(":ID", ID);
    12911291    if (!query.exec())
     
    13921392    // insert new smartplaylistcategory
    13931393
    13941394    MSqlQuery query(MSqlQuery::InitCon());
    1395     query.prepare("INSERT INTO smartplaylistcategory (name) "
     1395    query.prepare("INSERT INTO music_smartplaylistcategory (name) "
    13961396                "VALUES (:NAME);");
    13971397    query.bindValue(":NAME", categoryEdit->text().utf8());
    13981398   
     
    14381438       
    14391439    // change the category     
    14401440    MSqlQuery query(MSqlQuery::InitCon());
    1441     query.prepare("UPDATE smartplaylistcategory SET name = :NEW_CATEGORY "
     1441    query.prepare("UPDATE music_smartplaylistcategory SET name = :NEW_CATEGORY "
    14421442                  "WHERE name = :OLD_CATEGORY;");
    14431443    query.bindValue(":OLD_CATEGORY", categoryCombo->currentText().utf8());
    14441444    query.bindValue(":NEW_CATEGORY", categoryEdit->text().utf8());
     
    14591459{
    14601460    QString sql, whereClause, orderByClause, limitClause;
    14611461   
    1462     sql = "SELECT " + fields + " FROM musicmetadata ";
     1462    sql = "SELECT " + fields + " FROM music_artists AS music_artists_1 INNER JOIN (((music_songs INNER JOIN music_albums ON music_songs.album_id = music_albums.album_id) INNER JOIN music_artists ON music_songs.artist_id = music_artists.artist_id) INNER JOIN music_genres ON music_songs.genre_id = music_genres.genre_id) ON music_artists_1.artist_id = music_songs.compilationartist_id ";
    14631463    whereClause = getWhereClause();
    14641464    orderByClause = getOrderByClause();
    14651465    if (limitSpinEdit->value() > 0)
     
    15061506
    15071507void SmartPlaylistEditor::showResultsClicked(void)
    15081508{
    1509     QString sql = getSQL("intid, artist, album, title, genre, year, tracknum");
     1509    QString sql = getSQL("song_id, artist_name, album_name, name, genre, year, track");
    15101510   
    15111511    SmartPLResultViewer *resultViewer = new SmartPLResultViewer(gContext->GetMainWindow(), "resultviewer");
    15121512    resultViewer->setSQL(sql);
     
    15351535    categoryCombo->clear();
    15361536    MSqlQuery query(MSqlQuery::InitCon());
    15371537
    1538     if (query.exec("SELECT name FROM smartplaylistcategory ORDER BY name;"))
     1538    if (query.exec("SELECT name FROM music_smartplaylistcategory ORDER BY name;"))
    15391539    {
    15401540        if (query.isActive() && query.numRowsAffected() > 0)
    15411541        {
     
    15631563   
    15641564    // get playlist ID
    15651565    int ID;
    1566     query.prepare("SELECT smartplaylistid FROM smartplaylist WHERE name = :NAME "
     1566    query.prepare("SELECT smartplaylistid FROM music_smartplaylist WHERE name = :NAME "
    15671567                  "AND categoryid = :CATEGORYID;");
    15681568    query.bindValue(":NAME", name.utf8());
    15691569    query.bindValue(":CATEGORYID", categoryid);
     
    15881588    }
    15891589   
    15901590    //delete smartplaylist items
    1591     query.prepare("DELETE FROM smartplaylistitem WHERE smartplaylistid = :ID;");
     1591    query.prepare("DELETE FROM music_smartplaylistitem WHERE smartplaylistid = :ID;");
    15921592    query.bindValue(":ID", ID);
    15931593    if (!query.exec())
    15941594        MythContext::DBError("Delete smartplaylist items", query);
    15951595
    15961596    //delete smartplaylist
    1597     query.prepare("DELETE FROM smartplaylist WHERE smartplaylistid = :ID;");
     1597    query.prepare("DELETE FROM music_smartplaylist WHERE smartplaylistid = :ID;");
    15981598    query.bindValue(":ID", ID);
    15991599    if (!query.exec())
    16001600        MythContext::DBError("Delete smartplaylist", query);
     
    16101610    MSqlQuery query(MSqlQuery::InitCon());
    16111611   
    16121612    //delete all smartplaylists with the selected category
    1613     query.prepare("SELECT name FROM smartplaylist "
     1613    query.prepare("SELECT name FROM music_smartplaylist "
    16141614                  "WHERE categoryid = :CATEGORYID;");
    16151615    query.bindValue(":CATEGORYID", categoryid);
    16161616    if (!query.exec())
     
    16291629    }
    16301630   
    16311631    // delete the category
    1632     query.prepare("DELETE FROM smartplaylistcategory WHERE categoryid = :ID;");
     1632    query.prepare("DELETE FROM music_smartplaylistcategory WHERE categoryid = :ID;");
    16331633    query.bindValue(":ID", categoryid);
    16341634    if (!query.exec())
    16351635        MythContext::DBError("Delete smartplaylist category", query);
     
    16421642{   
    16431643    int ID;
    16441644    MSqlQuery query(MSqlQuery::InitCon());
    1645     query.prepare("SELECT categoryid FROM smartplaylistcategory "
     1645    query.prepare("SELECT categoryid FROM music_smartplaylistcategory "
    16461646                  "WHERE name = :CATEGORY;");
    16471647    query.bindValue(":CATEGORY", category.utf8());
    16481648
     
    20232023    categoryCombo->clear();
    20242024    MSqlQuery query(MSqlQuery::InitCon());
    20252025
    2026     if (query.exec("SELECT name FROM smartplaylistcategory ORDER BY name;"))
     2026    if (query.exec("SELECT name FROM music_smartplaylistcategory ORDER BY name;"))
    20272027    {
    20282028        if (query.isActive() && query.numRowsAffected() > 0)
    20292029        {
     
    20452045    listbox->clear();
    20462046
    20472047    MSqlQuery query(MSqlQuery::InitCon());   
    2048     query.prepare("SELECT name FROM smartplaylist WHERE categoryid = :CATEGORYID "
     2048    query.prepare("SELECT name FROM music_smartplaylist WHERE categoryid = :CATEGORYID "
    20492049                  "ORDER BY name;");
    20502050    query.bindValue(":CATEGORYID", categoryid);
    20512051                   
  • mythmusic/mythmusic/main.cpp

     
    9090    QString name(filename);
    9191    name.remove(0, directory.length());
    9292    MSqlQuery query(MSqlQuery::InitCon());
    93     query.prepare("DELETE FROM musicmetadata WHERE "
     93    query.prepare("DELETE FROM music_songs WHERE "
    9494                  "filename = :NAME ;");
    9595    query.bindValue(":NAME", filename.utf8());
    9696    query.exec();
     
    260260
    261261    MSqlQuery query(MSqlQuery::InitCon());
    262262    query.exec("SELECT filename, date_modified "
    263                "FROM musicmetadata "
     263               "FROM music_songs "
    264264               "WHERE filename NOT LIKE ('%://%')");
    265265
    266266    int counter = 0;
     
    558558
    559559
    560560    MSqlQuery count_query(MSqlQuery::InitCon());
    561     count_query.exec("SELECT COUNT(*) FROM musicmetadata;");
     561    count_query.exec("SELECT COUNT(*) FROM music_songs;");
    562562
    563563    bool musicdata_exists = false;
    564564    if (count_query.isActive())