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

Last change on this file since 10294 was 10294, checked in by flop25, 13 years ago

better management of the config : no more notice and defaut value if empty
code a bit cleaner

File size: 17.6 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// +-----------------------------------------------------------------------+
360// |                         changement de config                          |
361// +-----------------------------------------------------------------------+
362if (isset($_POST['envoi_config']) ){
363if ($_POST['envoi_config']=='lecteur')
364{
365  if (isset($_POST['style']) and $_POST['style']=='NULL')
366  {
367          $style=$conf_lecteur['9'];
368  }
369  else
370  {
371          $style=$_POST['style'];
372  }
373 
374  if (isset($_POST['mp_miniature']) and $_POST['mp_miniature']=="true")
375  { 
376      $h = $_POST['h_tt'];
377  } 
378  else
379  {
380      $h = $_POST['h_tt'] - 20;//pour un affichage correct la playlist doit faire la hauteur totale moins les 20px de la barre
381  }   
382
383        $newconf_lecteur = (isset($_POST['h_tt']) and !empty($_POST['h_tt'])) ? $_POST['h_tt'] : '148';
384        $newconf_lecteur .= (isset($_POST['l_tt']) and !empty($_POST['l_tt'])) ? ','.$_POST['l_tt'] : ',300';
385        $newconf_lecteur .= (isset($_POST['h_tt']) and !empty($_POST['h_tt'])) ? ','.$h : ',128';
386        $newconf_lecteur .= (isset($_POST['mp_miniature'])) ? ',true' : ',false';
387        if (!isset($_POST['l']) or empty($_POST['l']))
388        {
389                $newconf_lecteur .= ',128';
390        }
391        elseif (isset($_POST['mp_miniature']) and $_POST['mp_miniature']=="true")
392        {
393                $newconf_lecteur .= ','.$_POST['l'];
394        }
395        else
396        {
397                $newconf_lecteur .= ',0';
398        }
399        $newconf_lecteur .= (isset($_POST['mp_shuffle'])) ? ',true' : ',false';
400        $newconf_lecteur .= (isset($_POST['mp_repeat'])) ? ',true' : ',false';
401        $newconf_lecteur .= ','.$_POST['mp_autostart'];
402        $newconf_lecteur .= (isset($_POST['mp_autoscroll'])) ? ',true' : ',false';
403        $newconf_lecteur .= ','.$style;
404        $newconf_lecteur .= (isset($_POST['various_style'])) ? ',true' : ',false';
405  $query = '
406    UPDATE '.CONFIG_TABLE.'
407    SET value="'.$newconf_lecteur.'"
408    WHERE param="mp_lecteur"
409    LIMIT 1';
410  pwg_query($query);
411       
412//  $mp_msgs[] = $lang['mp_msg_admin_5'];
413array_push($page['infos'], l10n('mp_msg_admin_5'));
414}}
415if (isset($_POST['envoi_config']) ){
416if ($_POST['envoi_config']=='plugin' or isset($_POST['foot']))
417{
418        $newconf_plugin = (isset($_POST['evidence'])) ? 'true' : 'false';
419        $newconf_plugin .= (isset($_POST['head'])) ? ',true' : ',false';
420        $newconf_plugin .= (isset($_POST['foot'])) ? ',true' : ',false';
421        $newconf_plugin .= (isset($_POST['h_pop']) and !empty($_POST['h_pop'])) ? ','.$_POST['h_pop'] : ',260';
422        $newconf_plugin .= (isset($_POST['l_pop']) and !empty($_POST['l_pop'])) ? ','.$_POST['l_pop'] : ',400';
423  $query = '
424    UPDATE '.CONFIG_TABLE.'
425    SET value="'.$newconf_plugin.'"
426    WHERE param="mp_plugin"
427    LIMIT 1';
428  pwg_query($query);
429       
430  //$mp_msgs[] = $lang['mp_msg_admin_6'];
431  array_push($page['infos'], l10n('mp_msg_admin_6'));
432}
433}
434load_conf_from_db();
435$conf_lecteur = explode("," , $conf['mp_lecteur']);
436$conf_plugin = explode("," , $conf['mp_plugin']);
437$check='checked="checked"';
438if ($conf_lecteur[3]=='true') { $miniature=$check; } else { $miniature=NULL; } 
439if ($conf_lecteur[5]=='true') { $shuffle=$check; } else { $shuffle=NULL; }
440if ($conf_lecteur[6]=='true') { $repeat=$check; } else { $repeat=NULL; }
441if ($conf_lecteur[8]=='true') { $autoscroll=$check; } else { $autoscroll=NULL; }
442if ($conf_lecteur[10]=='true') { $various_style=$check; } else { $various_style=NULL; }
443
444if ($conf_lecteur[7]!='0')
445{
446        $rep = pwg_query('SELECT texte FROM '.MP_PLAYLIST.' WHERE id IN (\''.$conf_lecteur[7].'\') ;');
447        $pl = mysql_fetch_array($rep);
448        $txt=$pl['texte'];
449}
450else {$txt="Defaut"; }
451
452if ($conf_plugin[0]=='true') { $evidence=$check; } else { $evidence=NULL; }
453if ($conf_plugin[1]=='true') { $head=$check; } else { $head=NULL; }
454if ($conf_plugin[2]=='true') { $foot=$check; } else { $foot=NULL; }
455
456////////////////////////////////////////////////
457////////[ liste des styles globaux //////////
458////////////////////////////////////////////////
459
460function recursive_readdir ($dir) {
461        global $conf, $template;
462
463        $conf_lecteur = explode("," , $conf['mp_lecteur']);
464        $dh = opendir ($dir); // on l'ouvre
465        while (($file = readdir ($dh)) !== false ) { //boucle pour parcourir le repertoire
466                if ($file !== '.' && $file !== '..') {
467                        $path =$dir.'/'.$file; // construction d'un joli chemin...
468                        if (is_dir ($path)) { //si on tombe sur un sous-repertoire
469                                recursive_readdir ($path);
470                        }
471                        else
472                        {
473                          $page = explode('.', $file);
474                          $nb = count($page);
475                          $nom_fichier = $page[0];
476                          for ($i = 1; $i < $nb-1; $i++){
477                           $nom_fichier .= '.'.$page[$i];
478                          }
479                          if(isset($page[1])){
480                           $ext_fichier = $page[$nb-2].'.'.$page[$nb-1];
481                          }
482                          else {
483                           $ext_fichier = '';
484                          }
485                       
486                          if($ext_fichier == 'conf.php') { //On ne prend que les .conf.php
487                                  $path = str_replace("/plugins/music_player", "", $path);
488                                  if ($conf_lecteur[9]==$path)
489                                  {
490                                          $template->append('list_style',
491                                                  array('FILE' => $path,
492                                                                'TEXTE' => ' --> '.$path,
493                                                                ));
494                                  }
495                                  else
496                                  {
497                                          $template->append('list_style',
498                                          array('FILE' => $path,
499                                                        'TEXTE' => $path,
500                                                        ));
501                                  }
502                          }
503                        }
504                }
505        }
506        closedir ($dh); // on ferme le repertoire courant
507}       
508recursive_readdir ('./plugins/music_player/template/style');
509       
510
511
512////assignement des valeurs
513        $template->assign(
514                array(
515                  'MP_EVIDENCE' => $evidence,
516                  'MP_HEAD' => $head,
517                  'MP_FOOT' => $foot,
518                  'MP_H_POP' => 'value="'.$conf_plugin[3].'"',
519                  'MP_L_POP' => 'value="'.$conf_plugin[4].'"',
520                 
521                  'MP_H_TT' => 'value="'.$conf_lecteur[0].'"',
522                  'MP_L_TT' => 'value="'.$conf_lecteur[1].'"',
523                  'MP_H' => 'value="'.$conf_lecteur[2].'"',
524                  'MP_MINIATURE_ACTIVATED' =>   $miniature,
525                  'MP_L' => 'value="'.$conf_lecteur[4].'"',
526                  'MP_SHUFFLE_ACTIVATED' => $shuffle,
527                  'MP_REPEAT_ACTIVATED' => $repeat,
528                  'AUTOSTART' => $conf_lecteur[7],
529                  'AUTOSTART_T' => $txt,
530                  'MP_AUTOSCROLL_ACTIVATED' => $autoscroll,
531                  'MP_VARIOUS_STYLE' => $various_style,
532                )
533          );
534
535// +-----------------------------------------------------------------------+
536// |               affichage des msg                                       |
537// +-----------------------------------------------------------------------+
538/*
539if (count($mp_msgs) > 0)
540{
541  $template->append('mp_msgs',array());
542  foreach ($mp_msgs as $mp_msg)
543  {
544    $template->append('mp_msgs.mp_msg',
545                                 array('MP_MSG'=>$mp_msg));
546  }
547}
548*/
549$template->set_filename('plugin_admin_content', $m_p->plugin_path.'template/admin.tpl');
550$template->assign_var_from_handle('ADMIN_CONTENT', 'plugin_admin_content');
551
552
553?>
Note: See TracBrowser for help on using the repository browser.