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

Last change on this file since 3557 was 3557, checked in by flop25, 15 years ago

add .tpl for 'personalisation'

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