source: extensions/music_player/admin/admin.php @ 6985

Last change on this file since 6985 was 6985, checked in by flop25, 14 years ago

v moved to 2.1.5
conf reloaded if modified

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