source: extensions/music_player/admin/admin.php

Last change on this file was 21048, checked in by flop25, 11 years ago

-compatibility 2.5 (only)

File size: 17.0 KB
Line 
1<?php
2
3if (!defined('PHPWG_ROOT_PATH')) die('Hacking attempt!');
4$m_p = get_plugin_data('music_player');
5
6global $conf, $template, $lang, $page, $prefixeTable;
7load_language('plugin.lang', $m_p->plugin_path);
8
9$template->assign(array(
10        'PLUGIN_PATH'                   => $m_p->plugin_path, 
11        ));
12
13// +-----------------------------------------------------------------------+
14// |                envoi d'une synchro                                     |
15// +-----------------------------------------------------------------------+
16if (isset($_POST['envoi']) and $_POST['envoi'] == "synchro")
17{
18 $template->set_filename('envoi', $m_p->plugin_path.'template/admin_envoi.tpl');
19
20 $repertoire='./plugins/music_player/music';
21 $dossier = array();
22       
23 if (is_dir($repertoire)){
24   
25   $dir = opendir($repertoire); //ouvre le repertoire courant désigné par la variable
26   while(false!==($folder = readdir($dir))){ //on lit tout et on récupere tout les dossiers dans $folder
27     if(is_file($folder)) { continue; }
28   
29     if(!in_array($folder, array('.','..'))){ //on eleve le parent et le courant '. et ..'
30       if($folder != 'externe') { //On ne prend que les mp3 -- A tester : mid, wav...
31         array_push($dossier, $folder);
32            }
33      }//fin if in array
34   }//while
35 }
36   
37 natcasesort($dossier);
38 
39 //////////////[ recherche des nouveaux dossier ]
40 $n=0;
41 foreach($dossier as $value) {
42 $n++;
43
44           ///on vérife si ils n'existe pas déjà
45           $rep = pwg_query('SELECT COUNT(*) AS result FROM '.MP_PLAYLIST.' WHERE url IN (\''.$value.'\') ;');
46       $res = pwg_db_fetch_array($rep);
47           if ($res['result']!=0)
48           {
49                   $n--;
50              continue;
51           }
52           
53           ///[ récup de la music juste pour info
54     $fichier = array();
55     $dir_2 = opendir('./plugins/music_player/music/'.$value); //ouvre le repertoire courant désigné par la variable
56     while(false!==($file = readdir($dir_2))){ //on lit tout et on récupere tout les dossiers dans $folder
57   
58       if(!in_array($file, array('.','..'))){ //on eleve le parent et le courant '. et ..'
59         if(is_file($file)) { continue; }
60         $pg = $file; //sort l'extension du fichier
61     $pg = explode('.', $pg);
62     $nb = count($pg);
63     $nom_fichier = $pg[0];
64     for ($i = 1; $i < $nb-1; $i++){
65     $nom_fichier .= '.'.$pg[$i];
66     }
67     if(isset($pg[1])){
68     $ext_fichier = $pg[$nb-1];
69     }
70     else {
71     $ext_fichier = '';
72     }
73   
74     if($ext_fichier == 'mp3') { //On ne prend que les mp3 -- A tester : mid, wav...
75     array_push($fichier, $file);
76     } 
77                }//fin if in array
78     }//while
79   $fichier = implode(",", $fichier);
80
81   $template->append('syn',
82    array('RESULT' => $value,
83          'RESULT_M' => $fichier,//Ne sert que pour avoir un aperçu
84          'NBR' => $n,
85                  ));
86
87
88 }//foreach 
89
90if ($n ==0)
91{
92  array_push($page['infos'], l10n('mp_msg_admin1'));
93}
94else
95{
96$template->assign(
97  array(
98    'NBR_TT' => $n,
99    ));
100$template->assign_var_from_handle('ENVOI', 'envoi');
101}
102
103/////////////////////[ Xml 'pour tous' ? : v1.2 => plus pour tous seulement pour si nouveau
104
105 foreach($dossier as $value) {
106
107  $filename="./plugins/music_player/music/".$value."/".$value.".xml";
108  if (file_exists($filename)) {
109    continue; // si il existe on passe, la synchro des pistes se fait individuellement par soucis d'optimisation
110  }
111  /// v 1.2 on ne cree que pour les nouveaux
112  $rep = pwg_query('SELECT COUNT(*) AS result FROM '.MP_PLAYLIST.' WHERE url IN (\''.$value.'\') ;');
113  $res = pwg_db_fetch_array($rep);
114  if ($res['result']!=0)
115  {
116    continue;
117  }
118
119    ///[ recup music
120         $fichier = array();
121     $dir_2 = opendir('./plugins/music_player/music/'.$value); //ouvre le repertoire courant désigné par la variable
122     while(false!==($file = readdir($dir_2))){ //on lit tout et on récupere tout les dossiers dans $folder
123   
124       if(!in_array($file, array('.','..'))){ //on eleve le parent et le courant '. et ..'
125         if(is_file($file)) { continue; }
126         $pg = $file; //sort l'extension du fichier
127     $pg = explode('.', $pg);
128     $nb = count($pg);
129     $nom_fichier = $pg[0];
130     for ($i = 1; $i < $nb-1; $i++){
131     $nom_fichier .= '.'.$pg[$i];
132     }
133     if(isset($pg[1])){
134     $ext_fichier = $pg[$nb-1];
135     }
136     else {
137     $ext_fichier = '';
138     }
139   
140     if($ext_fichier == 'mp3') { //On ne prend que les mp3 -- A tester : mid, wav...
141     array_push($fichier, $file);
142     } 
143                }//fin if in array
144     }//while
145     natcasesort($fichier); //la fonction natcasesort( ) est la fonction de tri standard sauf qu'elle ignore la casse
146  /*$fichier_sql = implode("/", $fichier);
147  $fichier_sql = addslashes($fichier_sql);
148  ////[ maj de la bdd
149  $result = pwg_query('SELECT id FROM '.MP_PLAYLIST.' WHERE url IN (\''.$value.'\') ;');
150  $data = pwg_db_fetch_array($result);
151  $query = '
152UPDATE '.MP_PLAYLIST.'
153  SET music=\''.$fichier_sql.'\'
154  WHERE id IN (\''.$data['id'].'\')
155   ;';
156        pwg_query($query);*/
157
158//////////////////////Création XML 
159      $_xml ="<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n";
160      $_xml .="<playlist version=\"1\" xmlns=\"http://xspf.org/ns/0/\">\r\n";
161      $_xml .="\t<trackList>\r\n";
162         
163          /*$p_url = explode('/', $_SERVER['PHP_SELF']);
164      $count = count($p_url);
165          $url = str_replace($p_url[$count-1], '', 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF']);*/
166         
167      foreach($fichier as $file) {
168           ///on va trouver le nom du fichier
169      $pg = $file;
170      $pg = explode('.', $pg);
171      $nb = count($pg);
172      $nom_fichier = $pg[0];
173       for ($i = 1; $i < $nb-1; $i++){
174         $nom_fichier .= '.'.$pg[$i];
175       }
176      $_xml .="\t\t<track>\r\n";
177      $_xml .="\t\t\t<title>".$nom_fichier."</title>\r\n";
178      $_xml .="\t\t\t<location>music/".$value."/".$file."</location>\r\n";
179      $_xml .="\t\t\t<image>music/".$value."/".$value.".jpg</image>\r\n";
180      $_xml .="\t\t</track>\r\n";
181          }//fin foreach
182         
183      $_xml .="\t</trackList>\r\n";
184      $_xml .="</playlist>";
185          $file= fopen($filename, "w");
186        if (!is_writable($filename) ) {
187         die("Le fichier est inaccessible en écriture");
188         }
189      fwrite($file, $_xml);
190
191  array_push($page['infos'], l10n('mp_msg_admin_3_1').$value.'/'.$value.'.xml'.l10n('mp_msg_admin_3_2'));
192 }
193}//fin post
194
195// +-----------------------------------------------------------------------+
196// |                envoi des noms après synchro                           |
197// +-----------------------------------------------------------------------+
198if (isset($_POST['envoi']) and $_POST['envoi'] == "texte")
199{
200  for ($n = 1; $n <= $_POST['nbr']; $n++)
201  {
202     if($_POST['texte_'.$n.'']=="")
203         { continue; }
204         ///[ creation pl
205     $texte = addslashes($_POST['texte_'.$n.'']);
206     $query = '
207INSERT INTO '.MP_PLAYLIST.'
208  (type, url, texte)
209  VALUES
210  (\'local\', \''.$_POST['url_'.$n.''].'\', \''.$texte.'\')
211;';
212     pwg_query($query);
213
214         ///[ listage fichier
215         $fichier = array();
216     $dir_2 = opendir('./plugins/music_player/music/'.$_POST['url_'.$n.'']); //ouvre le repertoire courant désigné par la variable
217     while(false!==($file = readdir($dir_2))){ //on lit tout et on récupere tout les dossiers dans $folder
218   
219     if(!in_array($file, array('.','..'))){ //on eleve le parent et le courant '. et ..'
220          if(is_file($file)) { continue; }
221          $pg = $file; //sort l'extension du fichier
222      $pg = explode('.', $pg);
223      $nb = count($pg);
224      $nom_fichier = $pg[0];
225      for ($i = 1; $i < $nb-1; $i++){
226       $nom_fichier .= '.'.$pg[$i];
227      }
228      if(isset($pg[1])){
229       $ext_fichier = $pg[$nb-1];
230      }
231      else {
232       $ext_fichier = '';
233      }
234   
235      if($ext_fichier == 'mp3') { //On ne prend que les mp3 -- A tester : mid, wav...
236       array_push($fichier, $file);
237      }
238         }//fin if in array
239     }//while
240    natcasesort($fichier); //la fonction natcasesort( ) est la fonction de tri standard sauf qu'elle ignore la casse
241
242    $result = pwg_query('SELECT id FROM '.MP_PLAYLIST.' WHERE url IN (\''.$_POST['url_'.$n.''].'\') ;');
243    $data_pl = pwg_db_fetch_assoc($result);
244        $rang=1;
245
246        foreach($fichier as $file) {
247       
248        $pg = $file; //sort nom_fichier
249    $pg = explode('.', $pg);
250    $nb = count($pg);
251    $nom_fichier = $pg[0];
252
253     $file = addslashes($file);
254     $nom_fichier = addslashes($nom_fichier);
255         $query = '
256  INSERT INTO '.MP_MUSIC.'
257  (pl_id, rang, url, nom)
258  VALUES
259  (\''.$data_pl['id'].'\', \''.$rang.'\', \'music/'.$_POST['url_'.$n.''].'/'.$file.'\', \''.$nom_fichier.'\' )
260;';
261     pwg_query($query);
262        $rang++;
263        }
264  array_push($page['infos'], l10n('mp_msg_admin_4').' '.$_POST['url_'.$n]);
265 }//fin for
266}
267// +------------------------------------------------------------+
268// |                Nouveau externe                             |
269// +------------------------------------------------------------+
270if (isset($_POST['envoi']) and $_POST['envoi'] == "externe" )
271{
272 if ($_POST['texte'] != "" )
273 {
274     $texte = addslashes($_POST['texte']);
275     $url = addslashes($_POST['url']);
276     $query = '
277INSERT INTO '.MP_PLAYLIST.'
278  (type, url, texte)
279  VALUES
280  (\'externe\', \''.$url.'\', \''.$texte.'\')
281;';
282     pwg_query($query);
283         
284     $result = pwg_query('SELECT id FROM '.MP_PLAYLIST.' WHERE url=\''.$url.'\' ;');
285     $data_pl = pwg_db_fetch_assoc($result);
286         
287     $filename="./plugins/music_player/music/externe/".$data_pl['id'].".php";
288     $rep="./plugins/music_player/music/externe";
289         if ( !is_dir($rep) ) {    //    le répertoire existe t-il ?
290       mkdir ($rep);
291     }
292     
293         $_php ='<?php ';
294         $_php .='header("content-type:text/xml;charset=utf-8"); ';
295         $_php .='readfile(\''.$url.'\'); ';
296         $_php .='exit(); ';
297         $_php .='?>';
298      $file= fopen($filename, "w");
299     if (!is_writable($filename) ) {
300           die("Le fichier est inaccessible en écriture");
301         }
302     fwrite($file, $_php);
303 }
304 else
305 { //$mp_msgs[] = $lang['mp_msg_err_aj2'] ;
306 array_push($page['errors'], l10n('mp_msg_err_aj2')); } 
307}
308// +-----------------------------------------------------------------------+
309// |              défaut : affichage des playlist existante                |
310// +-----------------------------------------------------------------------+
311$playlist = array();
312$query = 'SELECT id, url, texte FROM '.MP_PLAYLIST.' WHERE type IN (\'local\') ORDER BY id ;';
313$result = pwg_query($query);
314while ($row = pwg_db_fetch_assoc($result)) {
315    array_push($playlist, $row);
316}
317
318foreach ($playlist as $list) {
319
320    $txt = stripslashes($list['texte']);
321    $template->append('list',
322        array('URL' => $list['url'],
323              'TEXTE' => $txt,
324              'ID' => $list['id'],
325                  ));
326    $template->append('list2',
327        array('URL' => $list['url'],
328              'TEXTE' => $txt,
329              'ID' => $list['id'],
330                  ));
331}
332$playlist = array();
333$query = 'SELECT id, url, texte FROM '.MP_PLAYLIST.' WHERE type IN (\'externe\') ORDER BY id ;';
334$result = pwg_query($query);
335while ($row = pwg_db_fetch_assoc($result)) {
336    array_push($playlist, $row);
337}
338
339foreach ($playlist as $list) {
340
341    $txt = stripslashes($list['texte']);
342    $template->append('list_ex',
343        array('URL' => $list['url'],
344              'TEXTE' => $txt,
345              'ID' => $list['id'],
346                  ));
347}
348
349
350$conf_lecteur = explode("," , $conf['mp_lecteur']);
351$conf_plugin = explode("," , $conf['mp_plugin']);
352
353// +-----------------------------------------------------------------------+
354// |                         changement de config                          |
355// +-----------------------------------------------------------------------+
356if (isset($_POST['envoi_config']) ){
357if ($_POST['envoi_config']=='lecteur')
358{
359  if (isset($_POST['style']) and $_POST['style']=='NULL')
360  {
361          $style=$conf_lecteur['9'];
362  }
363  else
364  {
365          $style=$_POST['style'];
366  }
367 
368  if (isset($_POST['mp_miniature']) and $_POST['mp_miniature']=="true")
369  { 
370      $h = $_POST['h_tt'];
371  } 
372  else
373  {
374      $h = $_POST['h_tt'] - 20;//pour un affichage correct la playlist doit faire la hauteur totale moins les 20px de la barre
375  }   
376
377        $newconf_lecteur = (isset($_POST['h_tt']) and !empty($_POST['h_tt'])) ? $_POST['h_tt'] : '148';
378        $newconf_lecteur .= (isset($_POST['l_tt']) and !empty($_POST['l_tt'])) ? ','.$_POST['l_tt'] : ',300';
379        $newconf_lecteur .= (isset($_POST['h_tt']) and !empty($_POST['h_tt'])) ? ','.$h : ',128';
380        $newconf_lecteur .= (isset($_POST['mp_miniature'])) ? ',true' : ',false';
381        if (!isset($_POST['l']) or empty($_POST['l']))
382        {
383                $newconf_lecteur .= ',128';
384        }
385        elseif (isset($_POST['mp_miniature']) and $_POST['mp_miniature']=="true")
386        {
387                $newconf_lecteur .= ','.$_POST['l'];
388        }
389        else
390        {
391                $newconf_lecteur .= ',0';
392        }
393        $newconf_lecteur .= (isset($_POST['mp_shuffle'])) ? ',true' : ',false';
394        $newconf_lecteur .= (isset($_POST['mp_repeat'])) ? ',true' : ',false';
395        $newconf_lecteur .= ','.$_POST['mp_autostart'];
396        $newconf_lecteur .= (isset($_POST['mp_autoscroll'])) ? ',true' : ',false';
397        $newconf_lecteur .= ','.$style;
398        $newconf_lecteur .= (isset($_POST['various_style'])) ? ',true' : ',false';
399  $query = '
400    UPDATE '.CONFIG_TABLE.'
401    SET value="'.$newconf_lecteur.'"
402    WHERE param="mp_lecteur"
403    LIMIT 1';
404  pwg_query($query);
405       
406array_push($page['infos'], l10n('mp_msg_admin_5'));
407}}
408if (isset($_POST['envoi_config']) ){
409if ($_POST['envoi_config']=='plugin' or isset($_POST['foot']))
410{
411        $newconf_plugin = (isset($_POST['evidence'])) ? 'true' : 'false';
412        $newconf_plugin .= (isset($_POST['head'])) ? ',true' : ',false';
413        $newconf_plugin .= (isset($_POST['foot'])) ? ',true' : ',false';
414        $newconf_plugin .= (isset($_POST['h_pop']) and !empty($_POST['h_pop'])) ? ','.$_POST['h_pop'] : ',260';
415        $newconf_plugin .= (isset($_POST['l_pop']) and !empty($_POST['l_pop'])) ? ','.$_POST['l_pop'] : ',400';
416  $query = '
417    UPDATE '.CONFIG_TABLE.'
418    SET value="'.$newconf_plugin.'"
419    WHERE param="mp_plugin"
420    LIMIT 1';
421  pwg_query($query);
422       
423  array_push($page['infos'], l10n('mp_msg_admin_6'));
424}
425}
426load_conf_from_db();
427$conf_lecteur = explode("," , $conf['mp_lecteur']);
428$conf_plugin = explode("," , $conf['mp_plugin']);
429$check='checked="checked"';
430if ($conf_lecteur[3]=='true') { $miniature=$check; } else { $miniature=NULL; } 
431if ($conf_lecteur[5]=='true') { $shuffle=$check; } else { $shuffle=NULL; }
432if ($conf_lecteur[6]=='true') { $repeat=$check; } else { $repeat=NULL; }
433if ($conf_lecteur[8]=='true') { $autoscroll=$check; } else { $autoscroll=NULL; }
434if ($conf_lecteur[10]=='true') { $various_style=$check; } else { $various_style=NULL; }
435
436if ($conf_lecteur[7]!='0')
437{
438        $rep = pwg_query('SELECT texte FROM '.MP_PLAYLIST.' WHERE id IN (\''.$conf_lecteur[7].'\') ;');
439        $pl = pwg_db_fetch_array($rep);
440        $txt=$pl['texte'];
441}
442else {$txt="Defaut"; }
443
444if ($conf_plugin[0]=='true') { $evidence=$check; } else { $evidence=NULL; }
445if ($conf_plugin[1]=='true') { $head=$check; } else { $head=NULL; }
446if ($conf_plugin[2]=='true') { $foot=$check; } else { $foot=NULL; }
447
448////////////////////////////////////////////////
449////////[ liste des styles globaux //////////
450////////////////////////////////////////////////
451
452function recursive_readdir ($dir) {
453        global $conf, $template;
454
455        $conf_lecteur = explode("," , $conf['mp_lecteur']);
456        $dh = opendir ($dir); // on l'ouvre
457        while (($file = readdir ($dh)) !== false ) { //boucle pour parcourir le repertoire
458                if ($file !== '.' && $file !== '..') {
459                        $path =$dir.'/'.$file; // construction d'un joli chemin...
460                        if (is_dir ($path)) { //si on tombe sur un sous-repertoire
461                                recursive_readdir ($path);
462                        }
463                        else
464                        {
465                          $pg = explode('.', $file);
466                          $nb = count($pg);
467                          $nom_fichier = $pg[0];
468                          for ($i = 1; $i < $nb-1; $i++){
469                           $nom_fichier .= '.'.$pg[$i];
470                          }
471                          if(isset($pg[1])){
472                           $ext_fichier = $pg[$nb-2].'.'.$pg[$nb-1];
473                          }
474                          else {
475                           $ext_fichier = '';
476                          }
477                       
478                          if($ext_fichier == 'conf.php') { //On ne prend que les .conf.php
479                                  $path = str_replace("/plugins/music_player", "", $path);
480                                  if ($conf_lecteur[9]==$path)
481                                  {
482                                          $template->append('list_style',
483                                                  array('FILE' => $path,
484                                                                'TEXTE' => ' --> '.$path,
485                                                                ));
486                                  }
487                                  else
488                                  {
489                                          $template->append('list_style',
490                                          array('FILE' => $path,
491                                                        'TEXTE' => $path,
492                                                        ));
493                                  }
494                          }
495                        }
496                }
497        }
498        closedir ($dh); // on ferme le repertoire courant
499}       
500recursive_readdir ('./plugins/music_player/template/style');
501       
502
503
504////assignement des valeurs
505        $template->assign(
506                array(
507                  'MP_EVIDENCE' => $evidence,
508                  'MP_HEAD' => $head,
509                  'MP_FOOT' => $foot,
510                  'MP_H_POP' => 'value="'.$conf_plugin[3].'"',
511                  'MP_L_POP' => 'value="'.$conf_plugin[4].'"',
512                 
513                  'MP_H_TT' => 'value="'.$conf_lecteur[0].'"',
514                  'MP_L_TT' => 'value="'.$conf_lecteur[1].'"',
515                  'MP_H' => 'value="'.$conf_lecteur[2].'"',
516                  'MP_MINIATURE_ACTIVATED' =>   $miniature,
517                  'MP_L' => 'value="'.$conf_lecteur[4].'"',
518                  'MP_SHUFFLE_ACTIVATED' => $shuffle,
519                  'MP_REPEAT_ACTIVATED' => $repeat,
520                  'AUTOSTART' => $conf_lecteur[7],
521                  'AUTOSTART_T' => $txt,
522                  'MP_AUTOSCROLL_ACTIVATED' => $autoscroll,
523                  'MP_VARIOUS_STYLE' => $various_style,
524                )
525          );
526
527// +-----------------------------------------------------------------------+
528// |               affichage des msg                                       |
529// +-----------------------------------------------------------------------+
530
531$template->set_filename('plugin_admin_content', $m_p->plugin_path.'template/admin.tpl');
532$template->assign_var_from_handle('ADMIN_CONTENT', 'plugin_admin_content');
533
534?>
Note: See TracBrowser for help on using the repository browser.