source: extensions/lmt/lmt_aip.class.inc.php @ 6272

Revision 6272, 33.6 KB checked in by grum, 10 years ago (diff)

Version 1.2.2
fix bug:1670

  • Property svn:executable set to *
Line 
1<?php
2/* -----------------------------------------------------------------------------
3  Plugin     : LMT
4  Author     : Grum
5    email    : grum@piwigo.org
6    website  : http://photos.grum.fr
7
8    << May the Little SpaceFrog be with you ! >>
9  ------------------------------------------------------------------------------
10  See main.inc.php for release information
11
12  LMT_AIP : classe to manage plugin admin pages
13
14  --------------------------------------------------------------------------- */
15
16include_once('lmt_root.class.inc.php');
17include_once(PHPWG_PLUGINS_PATH.'GrumPluginClasses/classes/GPCTranslate.class.inc.php');
18include_once(PHPWG_PLUGINS_PATH.'GrumPluginClasses/classes/GPCTables.class.inc.php');
19include_once(PHPWG_PLUGINS_PATH.'GrumPluginClasses/classes/genericjs.class.inc.php');
20include_once(PHPWG_PLUGINS_PATH.'GrumPluginClasses/classes/GPCPagesNavigation.class.inc.php');
21include_once(PHPWG_ROOT_PATH.'admin/include/tabsheet.class.php');
22
23class LMT_AIP extends LMT_root
24{
25  protected $google_translate;
26  protected $tabsheet;
27
28  public function __construct($prefixeTable, $filelocation)
29  {
30    parent::__construct($prefixeTable, $filelocation);
31    $this->loadConfig();
32    $this->initEvents();
33
34    $this->tabsheet = new tabsheet();
35    $this->tabsheet->add('list',
36                          l10n('lmt_list'),
37                          $this->getAdminLink()."&amp;f_tabsheet=list");
38    $this->tabsheet->add('manage',
39                          l10n('lmt_manage'),
40                          $this->getAdminLink()."&amp;f_tabsheet=manage");
41    $this->tabsheet->add('manageaut',
42                          l10n('lmt_manageaut'),
43                          $this->getAdminLink()."&amp;f_tabsheet=manageaut");
44    $this->tabsheet->add('config',
45                          l10n('lmt_config'),
46                          $this->getAdminLink()."&amp;f_tabsheet=config");
47    $this->tabsheet->add('help',
48                          l10n('lmt_help'),
49                          $this->getAdminLink()."&amp;f_tabsheet=help");
50
51
52    // don't create the google_translate object everytime, otherwise google's js
53    // code is always included in the header even if translation functionalities
54    // aren't needed
55    // translation is needed only if we are in a ajax request
56    /*if((isset($_POST['fmypolls_gomodify_translation'])||isset($_POST['fmypolls_goadd_translation'])))
57    {
58      $this->google_translate = new GPCTranslate();
59    }
60    */
61  }
62
63  public function __destruct()
64  {
65    unset($this->google_translate);
66    unset($this->tabsheet);
67    parent::__destruct();
68  }
69
70  /*
71    initialize events call for the plugin
72  */
73  public function initEvents()
74  {
75    parent::initEvents();
76    add_event_handler('loc_end_page_header', array(&$this->css, 'applyCSS'));
77    add_event_handler('loc_end_page_header', array(&$this->css_icn, 'applyCSS'));
78  }
79
80  /*
81    display administration page
82  */
83  public function manage()
84  {
85    global $template;
86
87    $this->return_ajax_content();
88
89    $template->set_filename('plugin_admin_content', dirname(__FILE__)."/admin/lmt_admin.tpl");
90
91    if(!isset($_REQUEST['f_tabsheet']))
92    {
93      $_REQUEST['f_tabsheet']='list';
94    }
95
96    switch($_REQUEST['f_tabsheet'])
97    {
98      case 'list':
99        $this->display_list_page();
100        break;
101      case 'manage':
102        $this->display_manage_page();
103        break;
104      case 'manageaut':
105        $this->display_manageaut_page();
106        break;
107      case 'managedoc':
108        $this->display_managedoc_page();
109        break;
110      case 'help':
111        $this->display_help_page();
112        break;
113      case 'config':
114        $this->display_config_page();
115        break;
116    }
117
118    $this->tabsheet->select($_REQUEST['f_tabsheet']);
119    $this->tabsheet->assign();
120    $selected_tab=$this->tabsheet->get_selected();
121    $template->assign($this->tabsheet->get_titlename(), "[".$selected_tab['caption']."]");
122
123    $template_plugin["LMT_VERSION"] = "<i>".$this->getPluginName()."</i> ".l10n('lmt_release').LMT_VERSION;
124    $template_plugin["LMT_PAGE"] = $_REQUEST['f_tabsheet'];
125    $template_plugin["LMT_TITLE"] = "";
126
127    $template->assign('plugin', $template_plugin);
128    $template->assign_var_from_handle('ADMIN_CONTENT', 'plugin_admin_content');
129  }
130
131
132  /*
133    return ajax content
134  */
135  protected function return_ajax_content()
136  {
137    global $ajax, $template;
138
139    if(isset($_REQUEST['ajaxfct']))
140    {
141      //$this->debug("AJAXFCT:".$_REQUEST['ajaxfct']);
142      $result="<p class='errors'>An error has occured</p>";
143      switch($_REQUEST['ajaxfct'])
144      {
145        case 'img_list':
146          $result=$this->ajax_img_list($_REQUEST['numpage']);
147          break;
148        case 'manage_list':
149          $result=$this->ajax_manage_list($_REQUEST['numpage']);
150          break;
151      }
152      GPCAjax::returnResult($result);
153    }
154  }
155
156
157  /*
158    manage display of config page & save config
159  */
160  protected function display_config_page()
161  {
162    $languages=get_languages();
163    if(!$this->adviser_abort())
164    {
165
166      if(isset($_POST['submit_save_config']))
167      {
168        foreach($this->config as $key => $val)
169        {
170          if(is_array($val))
171          {
172            foreach($languages as $key2 => $val2)
173            {
174              if(isset($_REQUEST[str2url('f_'.$key.'_'.$key2)]))
175              {
176                $this->config[$key][$key2] = htmlspecialchars(stripslashes($_REQUEST[str2url('f_'.$key.'_'.$key2)]), ENT_QUOTES);
177              }
178            }
179          }
180          else
181          {
182            if(isset($_REQUEST['f_'.$key]))
183            {
184              $this->config[$key] = $_REQUEST['f_'.$key];
185            }
186          }
187
188        }
189        $this->displayResult(l10n('lmt_save_config'), $this->saveConfig());
190      }
191    }
192    $this->display_config();
193  }
194
195
196  /*
197
198  */
199  protected function display_help_page()
200  {
201    global $template;
202
203    $template->set_filename('body_page',
204                dirname($this->getFileLocation()).'/admin/plugin_admin_help.tpl');
205
206    $template->assign('imgdir', LMT_PATH."img/");
207
208    $template->assign_var_from_handle('LMT_BODY_PAGE', 'body_page');
209  }
210
211  /*
212  */
213  protected function display_list_page()
214  {
215    global $template, $conf, $user;
216
217    $template->set_filename('body_page',
218                dirname($this->getFileLocation()).'/admin/plugin_admin_list.tpl');
219
220    if(!isset($_REQUEST['filter']) ||
221       !($_REQUEST['filter']=="BY" ||
222         $_REQUEST['filter']=="BY-SA" ||
223         $_REQUEST['filter']=="BY-ND" ||
224         $_REQUEST['filter']=="BY-NC-ND" ||
225         $_REQUEST['filter']=="BY-NC-SA" ||
226         $_REQUEST['filter']=="BY-NC" ||
227         $_REQUEST['filter']=="CRIGHT" ||
228         $_REQUEST['filter']=="CLEFT"
229      ))
230    {
231      $_REQUEST['filter']='';
232    }
233
234    $datas=array(
235      "LMT_AJAX_URL_LIST" =>  $this->getAdminLink().'&ajaxfct=img_list&numpage='
236    );
237
238    $filter_list_selected = '';
239    $filter_list_values = array_slice($this->licences,0,count($this->licences)-1);
240    $filter_list_labels = array();
241    foreach($filter_list_values as $key=>$val)
242    {
243      $filter_list_labels[] = "[".l10n("lmt_lbl_cc_s-".strtolower($val))."] ".l10n("lmt_lbl_cc-".strtolower($val));
244      if($val==$_REQUEST['filter'])
245      {
246        $filter_list_selected = $val;
247      }
248    }
249
250    $filter_list_values = array_merge(array(''), $filter_list_values);
251    $filter_list_labels = array_merge(array(l10n('lmt_nofilter')), $filter_list_labels);
252    $default_licence = l10n("lmt_lbl_cc-".strtolower($this->config['lmt_licence_default']));
253    $default_licence_img =LMT_PATH."img/".strtolower($this->config['lmt_licence_default'])."_80x15.png";
254
255    $results=true;
256    if(isset($_POST["submit_replace_caddie"]))
257    {
258      $sql="DELETE FROM ".CADDIE_TABLE." WHERE user_id='".$user['id']."'";
259      $result=pwg_query($sql);
260      ($result)?$results=true:$results=false;
261    }
262
263    if(isset($_POST["submit_add_to_caddie"]) || isset($_POST["submit_replace_caddie"]))
264    {
265
266      $sql="REPLACE INTO ".CADDIE_TABLE."
267        SELECT '".$user['id']."', it.id FROM ".IMAGES_TABLE." it, ".$this->tables["images"]." lmti
268        WHERE it.id = lmti.image_id";
269      if($_REQUEST['filter']!="")
270      {
271        $sql.=" AND lmti.licence_type='".$_REQUEST['filter']."'";
272      }
273
274      $result=pwg_query($sql);
275      if((!$results)||(!$result))
276      {
277        $this->displayResult(l10n("lmt_caddie_not_updated"), false);
278      }
279      else
280      {
281        $this->displayResult(l10n("lmt_caddie_updated"), true);
282      }
283    }
284
285    $template->assign('datas', $datas);
286    $template->assign('default_licence', $default_licence);
287    $template->assign('default_licence_img', $default_licence_img);
288    $template->assign('filter_list_values', $filter_list_values);
289    $template->assign('filter_list_labels', $filter_list_labels);
290    $template->assign('filter_list_selected', $filter_list_selected);
291    $template->assign_var_from_handle('LMT_BODY_PAGE', 'body_page');
292  }
293
294
295  /*
296  */
297  protected function display_manage_page()
298  {
299    global $template, $conf, $user;
300
301    /*
302      apply licence
303    */
304    if(isset($_POST['submit_apply_licence']))
305    {
306      $results=array("", "");
307      $lst=array();
308      foreach($_POST as $key => $val)
309      {
310        if((substr($key,0,2)=="fn")&&($val=="1")) $lst[]=substr($key,2);
311      }
312
313      if(count($lst)>0)
314      {
315        if($_POST['manage_caddie']!="napp_clear_selected")
316        {
317          if($_POST['licence']=='DEFAULT')
318          {
319            $sql="DELETE FROM ".$this->tables['images']."
320                    WHERE image_id IN (".implode(",", $lst).")";
321          }
322          else
323          {
324            $sql="REPLACE INTO ".$this->tables['images']."
325                    SELECT id, '".$_POST['licence']."', '".$_POST['author']."'
326                    FROM ".IMAGES_TABLE."
327                    WHERE id IN (".implode(",", $lst).")";
328          }
329          $result=pwg_query($sql);
330          ($result)?$results[0].=l10n("lmt_add_licence_ok")."<br/>":$results[1].=l10n("lmt_add_licence_ko")."<br/>";
331        }
332
333        switch($_POST['manage_caddie'])
334        {
335          case 'app_clear':
336            $sql="DELETE FROM ".CADDIE_TABLE." WHERE user_id = '".$user['id']."'";
337            $result=pwg_query($sql);
338            ($result)?$results[0].=l10n("lmt_clear_caddie_ok")."<br/>":$results[1].=l10n("lmt_clear_caddie_ko")."<br/>";
339            break;
340          case 'app_clear_selected':
341          case 'napp_clear_selected':
342            $sql="DELETE FROM ".CADDIE_TABLE."
343                  WHERE user_id = '".$user['id']."'
344                  AND element_id IN (".implode(",", $lst).")";
345            $result=pwg_query($sql);
346            ($result)?$results[0].=l10n("lmt_clear_si_caddie_ok")."<br/>":$results[1].=l10n("lmt_clear_si_caddie_ko")."<br/>";
347            break;
348        }
349
350        if($results[0]!="")
351        {
352          $this->displayResult($results[0], true);
353        }
354
355        if($results[1]!="")
356        {
357          $this->displayResult($results[1], false);
358        }
359      }
360      else
361      {
362        $this->displayResult(l10n("lmt_no_element_selected"), false);
363      }
364    }
365
366
367    $template->set_filename('body_page',
368                dirname($this->getFileLocation()).'/admin/plugin_admin_manage.tpl');
369
370    $datas=array(
371      "LMT_AJAX_URL_LIST" =>  $this->getAdminLink().'&ajaxfct=manage_list&numpage='
372    );
373
374    if(!isset($_REQUEST['select']))
375    {
376      $_REQUEST['select']="caddie";
377    }
378
379    $sql="SELECT count(element_id) FROM ".CADDIE_TABLE." WHERE user_id = '".$user['id']."'";
380    $result=pwg_query($sql);
381    $nbphotos=pwg_db_fetch_row($result);
382
383    $author_list_values = array(0);
384    $author_list_labels = array(l10n("lmt_no_author"));
385    $sql="SELECT * FROM ".$this->tables["licence_author"]." ORDER BY id";
386    $result=pwg_query($sql);
387    if($result)
388    {
389      while($row=pwg_db_fetch_assoc($result))
390      {
391        $author_list_values[]=$row['id'];
392        $author_list_labels[]=$row['text1']."&nbsp;".$row['text2'];
393      }
394    }
395
396    $licences_list_values = array();
397    $licences_list_values = $this->licences;
398    $licences_list_labels = array();
399    foreach($licences_list_values as $key=>$val)
400    {
401      $licences_list_labels[] = "[".l10n("lmt_lbl_cc_s-".strtolower($val))."] ".l10n("lmt_lbl_cc-".strtolower($val));
402    }
403
404/*    $licences_list_values = array_merge(array('DEFAULT'), $licences_list_values);
405    $licences_list_labels = array_merge(array(l10n('lmt_bydefault')), $licences_list_labels);*/
406
407    $selectlist_list_values=array("-", "all", "none", "invert");
408    $selectlist_list_values=array_merge($selectlist_list_values, $licences_list_values);
409
410    $selectlist_list_labels=array(
411        l10n("lmt_choose_select"),
412        l10n("lmt_select_all"),
413        l10n("lmt_select_none"),
414        l10n("lmt_select_invert")
415    );
416    $selectlist_list_labels=array_merge($selectlist_list_labels, $licences_list_labels);
417
418    $template->assign('datas', $datas);
419    $template->assign('nbphotos', $nbphotos[0]);
420    $template->assign('selectlist_list_values', $selectlist_list_values);
421    $template->assign('selectlist_list_labels', $selectlist_list_labels);
422    $template->assign('filter_list_selected', "");
423    $template->assign('licences_list_values', $licences_list_values);
424    $template->assign('licences_list_labels', $licences_list_labels);
425    $template->assign('licences_list_selected', "");
426    $template->assign('author_list_values', $author_list_values);
427    $template->assign('author_list_labels', $author_list_labels);
428    $template->assign_var_from_handle('LMT_BODY_PAGE', 'body_page');
429  }
430
431
432  /*
433    display config page
434  */
435  protected function display_config()
436  {
437    global $template, $lang;
438
439    $template->set_filename('body_page',
440                dirname($this->getFileLocation()).'/admin/plugin_admin_config.tpl');
441
442
443    $datas=array(
444      "img_directory" => LMT_PATH."img/"
445    );
446    foreach($this->config as $key => $val)
447    {
448      if(!is_array($val))
449      {
450        $datas[$key]=$val;
451      }
452    }
453
454    $lmt_yesno_values=array("y", "n");
455    $lmt_yesno_labels=array(l10n("lmt_yesno_y"), l10n("lmt_yesno_n"));
456
457    $lmt_licence_logo_values=array("80x15", "88x31", "text");
458    $lmt_licence_logo_labels=array(l10n("lmt_icon_80x15"), l10n("lmt_icon_88x31"), l10n("lmt_icon_text"));
459
460    $datas['lmt_redirect_urls']=array();
461    $lmt_licence_default_values = array_slice($this->licences,0,count($this->licences)-1);
462    $lmt_licence_default_labels = array();
463
464    $tmp=array();
465    foreach($lmt_licence_default_values as $key=>$val)
466    {
467      $lmt_licence_default_labels[] = "[".l10n("lmt_lbl_cc_s-".strtolower($val))."] ".l10n("lmt_lbl_cc-".strtolower($val));
468
469      $tmp[]="'".str2url("ilmt_redirect_url-".strToLower($val))."'";
470      $datas['lmt_redirect_urls'][str2url('lmt_redirect_url-'.strToLower($val))]=array(
471        'text' => l10n("lmt_lbl_cc_s-".strToLower($val)),
472        'langs' => array()
473      );
474    }
475    $datas['objnames2'] = implode(",", $tmp);
476
477
478    //langs list & texts
479    $datas['lmt_warning_texts']=array();
480
481    $lmt_language_list=array();
482    $lmt_language_list_values=array();
483    $lmt_language_list_labels=array();
484    $lmt_language_selected=str2url(get_default_language());
485    $languages=get_languages();
486
487    foreach($languages as $key => $val)
488    {
489      $lmt_language_list_values[]=str2url($key);
490      $lmt_language_list_labels[]=$val;
491
492      $datas['lmt_warning_texts'][]=array(
493        'lang' => str2url($key),
494        'text' => $this->config['lmt_warning_texts'][$key]
495      );
496
497      foreach($lmt_licence_default_values as $key2 => $val2)
498      {
499        $datas['lmt_redirect_urls'][str2url('lmt_redirect_url-'.strToLower($val2))]['langs'][str2url($key)]=
500            $this->config['lmt_redirect_url-'.strToLower($val2)][$key];
501      }
502    }
503
504    $datas['help']=array();
505    foreach($lang["lmt_help_config"] as $key => $val)
506    {
507      $datas['help']['hlp'.$key]=addslashes($val);
508    }
509
510    $lmt_licence_default_author_values=array(0);
511    $lmt_licence_default_author_labels=array(l10n("lmt_no_author"));
512    $sql="SELECT * FROM ".$this->tables['licence_author']." ORDER BY id";
513    $result=pwg_query($sql);
514    if($result)
515    {
516      while($row=pwg_db_fetch_assoc($result))
517      {
518        $lmt_licence_default_author_values[]=$row['id'];
519        $lmt_licence_default_author_labels[]=$row['text1']." ".$row['text2'];
520      }
521    }
522
523    $template->assign('datas', $datas);
524    $template->assign('extended_code', $this->generate_js_licence_author());
525    $template->assign('lmt_yesno_values', $lmt_yesno_values);
526    $template->assign('lmt_yesno_labels', $lmt_yesno_labels);
527    $template->assign('lmt_licence_logo_values', $lmt_licence_logo_values);
528    $template->assign('lmt_licence_logo_labels', $lmt_licence_logo_labels);
529    $template->assign('lmt_licence_default_values', $lmt_licence_default_values);
530    $template->assign('lmt_licence_default_labels', $lmt_licence_default_labels);
531    $template->assign('lmt_licence_default_author_values', $lmt_licence_default_author_values);
532    $template->assign('lmt_licence_default_author_labels', $lmt_licence_default_author_labels);
533    $template->assign('lmt_language_list_values', $lmt_language_list_values);
534    $template->assign('lmt_language_list_labels', $lmt_language_list_labels);
535    $template->assign('lmt_language_selected', $lmt_language_selected);
536    $template->assign_var_from_handle('LMT_BODY_PAGE', 'body_page');
537
538  } //display_config
539
540
541
542
543  /*
544  */
545  protected function display_manageaut_page()
546  {
547    global $template, $conf, $user;
548
549    if(!isset($_REQUEST['action']))
550    {
551      $_REQUEST['action']="list";
552    }
553    if(!isset($_REQUEST['id']))
554    {
555      $_REQUEST['id']="";
556    }
557
558
559    /* ------------------------------------------------------------------------
560     * Add an author
561     * ---------------------------------------------------------------------- */
562    if(isset($_POST['submit_add_author']))
563    {
564      if($_POST["text1"]!="")
565      {
566        $sql="INSERT INTO ".$this->tables["licence_author"]." VALUES('', '". addslashes($_POST["text1"])."', '".addslashes($_POST["text2"])."')";
567        $result=pwg_query($sql);
568        if($result)
569        {
570          $this->displayResult(l10n("lmt_author_added"), true);
571          $_REQUEST['action']="list";
572        }
573        else
574        {
575          $this->displayResult(l10n("lmt_cannot_add_author"), false);
576        }
577      }
578      else
579      {
580        $this->displayResult(l10n("lmt_no_text"), false);
581      }
582    }
583
584    /* ------------------------------------------------------------------------
585     * Modify an author
586     * ---------------------------------------------------------------------- */
587    if(isset($_POST['submit_modify_author']))
588    {
589      if($_POST["text1"]!="")
590      {
591        $sql="UPDATE ".$this->tables["licence_author"]."
592              SET text1 = '". addslashes($_POST["text1"])."',
593                  text2 = '".addslashes($_POST["text2"])."'
594              WHERE id = '".$_POST["id"]."'";
595        $result=pwg_query($sql);
596        if($result)
597        {
598          $this->displayResult(l10n("lmt_author_modified"), true);
599          $_REQUEST['action']="list";
600        }
601        else
602        {
603          $this->displayResult(l10n("lmt_cannot_modify_author"), false);
604        }
605      }
606      else
607      {
608        $this->displayResult(l10n("lmt_no_text"), false);
609      }
610    }
611
612    /* ------------------------------------------------------------------------
613     * delete an author
614     * ---------------------------------------------------------------------- */
615    if($_REQUEST['action']=="delete")
616    {
617      $sql="DELETE FROM ".$this->tables['licence_author']." WHERE id = '".$_REQUEST['id']."'";
618      $result=pwg_query($sql);
619      if($result)
620      {
621        if(pwg_db_changes()==1)
622        {
623          $this->displayResult(l10n("lmt_author_deleted"), true);
624
625          $sql="UPDATE ".$this->tables["images"]." SET author_id = NULL
626                WHERE author_id = '".$_REQUEST['id']."'";
627          $result=pwg_query($sql);
628          if($result)
629          {
630            $nbimages=pwg_db_changes();
631            if($nbimages>0)
632            {
633              $this->displayResult($nbimages."&nbsp;".l10n("lmt_author_nb_images_updated"), true);
634            }
635          }
636          else
637          {
638            $this->displayResult(l10n("lmt_cannot_delete_author"), false);
639          }
640        }
641        else
642        {
643          $this->displayResult(l10n("lmt_cannot_delete_author"), false);
644        }
645      }
646      else
647      {
648        $this->displayResult(l10n("lmt_cannot_delete_author"), false);
649      }
650      $this->display_manageaut_page_list();
651    }
652    elseif($_REQUEST['action']=="add")
653    {
654      $this->display_manageaut_page_add_modify("add");
655    }
656    elseif($_REQUEST['action']=="edit")
657    {
658      $this->display_manageaut_page_add_modify("edit");
659    }
660    else
661    {
662      // list
663      $this->display_manageaut_page_list();
664    }
665  } //display_manageaut
666
667  protected function display_manageaut_page_list()
668  {
669    global $template;
670
671    $template->set_filename('body_page',
672                dirname($this->getFileLocation()).'/admin/plugin_admin_manageaut.tpl');
673
674    $datas=array(
675      "author_list" => array(),
676      "img_directory" => LMT_PATH."img/",
677      "default_licencepublished" => l10n("lmt_lbl_under-".strToLower($this->config['lmt_licence_default'])),
678      "default_licenceL" => strToLower($this->config['lmt_licence_default']),
679      "default_licenceU" => l10n("lmt_lbl_cc_s-".strToLower($this->config['lmt_licence_default'])),
680      "lmt_licence_logo" => $this->config['lmt_licence_logo'],
681      "nbauthor" => 0,
682      "add_link" => $this->getAdminLink().'&amp;f_tabsheet=manageaut&amp;action=add'
683    );
684
685    $sql="SELECT * FROM ".$this->tables['licence_author']." ORDER BY id";
686    $result=pwg_query($sql);
687    if($result)
688    {
689      while($row=pwg_db_fetch_assoc($result))
690      {
691        $datas["author_list"][]=array(
692          "id" => $row['id'],
693          "text1" => $row['text1'],
694          "text2" => $row['text2'],
695          "lnk_delete" => $this->getAdminLink().'&amp;f_tabsheet=manageaut&amp;action=delete&amp;id='.$row['id'],
696          "lnk_edit" => $this->getAdminLink().'&amp;f_tabsheet=manageaut&amp;action=edit&amp;id='.$row['id']
697        );
698      }
699      $datas["nbauthor"] = count($datas["author_list"]);
700    }
701
702    $template->assign('datas', $datas);
703    //$template->assign('extended_code', $this->generate_js_licence_author());
704    $template->assign_var_from_handle('LMT_BODY_PAGE', 'body_page');
705  }
706
707  protected function display_manageaut_page_add_modify()
708  {
709    global $template;
710
711    $template->set_filename('body_page',
712                dirname($this->getFileLocation()).'/admin/plugin_admin_manageaut_edit.tpl');
713
714    if($_REQUEST["action"]=="edit")
715    {
716      $sql="SELECT * FROM ".$this->tables['licence_author']." WHERE id = '".$_REQUEST['id']."'";
717      $result = pwg_query($sql);
718      if($result)
719      {
720        while($row=pwg_db_fetch_assoc($result))
721        {
722          $datas=array(
723            "action" => "modify",
724            "id" => $_REQUEST['id'],
725            "text1" => $row["text1"],
726            "text2" => $row["text2"]
727          );
728        }
729      }
730      else
731      {
732        $datas=array(
733          "action" => "add",
734          "id" => "",
735          "text1" => "",
736          "text2" => "",
737        );
738      }
739    }
740    else
741    {
742      $datas=array(
743        "action" => "add",
744        "id" => "",
745        "text1" => "",
746        "text2" => "",
747      );
748    }
749
750    $datas["urllist"] = $this->getAdminLink().'&f_tabsheet=manageaut';
751
752    $template->assign('datas', $datas);
753    //$template->assign('extended_code', $this->generate_js_licence_author());
754    $template->assign_var_from_handle('LMT_BODY_PAGE', 'body_page');
755  }
756
757
758  /*
759    manage adviser profile
760      return true if user is adviser
761  */
762  protected function adviser_abort()
763  {
764    if(is_adviser())
765    {
766      $this->displayResult(l10n("lmt_adviser_not_allowed"), false);
767      return(true);
768    }
769    return(false);
770  }
771
772
773  /*
774    this function return a js to manage licence text
775  */
776  protected function generate_js_licence_author()
777  {
778    $local_tpl = new Template(LMT_PATH."admin/", "");
779    $local_tpl->set_filename('body_page',
780                  dirname($this->getFileLocation()).'/admin/lmt_js.tpl');
781
782    $lmt_licence_default_values=array_slice($this->licences,0,count($this->licences)-1);
783    $datas['shortlicencetext']=array();
784    foreach($lmt_licence_default_values as $key=>$val)
785    {
786      $datas['shortlicencetext'][$val] = array(
787        "txt" => l10n("lmt_lbl_cc_s-".strtolower($val)),
788        "published" => l10n("lmt_lbl_under-".strtolower($val))
789      );
790    }
791
792    $local_tpl->assign("datas",$datas);
793
794    return($local_tpl->parse('body_page', true));
795  }
796
797  protected function make_image_data($tmp)
798  {
799    $tmp2=array();
800    for($i=0;$i<count($tmp['id']);$i++)
801    {
802      $tmp2[]=array(
803        'id' => $tmp['id'][$i],
804        'name' => $tmp['name'][$i],
805        'type' => $tmp['type'][$i],
806        'plinks' => $tmp['plinks'][$i],
807        'link'=> make_index_url(
808                          array(
809                            'category' => array(
810                              'id' => $tmp['id'][$i],
811                              'name' => $tmp['name'][$i],
812                              'permalink' => $tmp['plinks'][$i])
813                          )
814                        )
815      );
816    }
817    return($tmp2);
818  }
819
820  /* ---------------------------------------------------------------------------
821    function to manage database manipulation
822  --------------------------------------------------------------------------- */
823
824
825
826
827
828  /* ---------------------------------------------------------------------------
829    ajax functions
830  --------------------------------------------------------------------------- */
831
832  protected function ajax_img_list($pagenum)
833  {
834    global $conf;
835
836    $local_tpl = new Template(LMT_PATH."admin/", "");
837    $local_tpl->set_filename('body_page',
838                  dirname($this->getFileLocation()).'/admin/plugin_admin_listitems.tpl');
839
840    if(!isset($_REQUEST['filter']) ||
841       !($_REQUEST['filter']=="BY" ||
842         $_REQUEST['filter']=="BY-SA" ||
843         $_REQUEST['filter']=="BY-ND" ||
844         $_REQUEST['filter']=="BY-NC-ND" ||
845         $_REQUEST['filter']=="BY-NC-SA" ||
846         $_REQUEST['filter']=="BY-NC" ||
847         $_REQUEST['filter']=="CRIGHT" ||
848         $_REQUEST['filter']=="CLEFT"
849      ))
850    {
851      $_REQUEST['filter']='';
852    }
853
854    $img_ids=array();
855    $img_liste = array();
856    $sql="SELECT SQL_CALC_FOUND_ROWS lmti.*, img.file, img.path, img.tn_ext,
857                  GROUP_CONCAT(cat.id) AS catid,
858                  GROUP_CONCAT(CASE WHEN cat.name IS NULL THEN '' ELSE cat.name END SEPARATOR '@sep@') AS catname,
859                  GROUP_CONCAT(CASE WHEN cat.permalink IS NULL THEN '' ELSE cat.permalink END SEPARATOR '@sep@') AS catpermalink,
860                  GROUP_CONCAT(CASE WHEN cat.dir IS NULL THEN 'V' ELSE 'P' END) AS cattype,
861                  lmtla.text1, lmtla.text2
862          FROM ".$this->tables["images"]." lmti
863                  LEFT OUTER JOIN ".$this->tables["licence_author"]." lmtla ON lmtla.id = lmti.author_id,
864               ".IMAGES_TABLE." img
865                  LEFT OUTER JOIN ".IMAGE_CATEGORY_TABLE." imgcat ON img.id = imgcat.image_id
866                  LEFT OUTER JOIN ".CATEGORIES_TABLE." cat ON imgcat.category_id = cat.id
867          WHERE lmti.image_id = img.id ";
868    if($_REQUEST['filter']!="")
869    {
870      $sql.=" AND lmti.licence_type='".$_REQUEST['filter']."'";
871    }
872
873    $sql.=" GROUP BY lmti.image_id ORDER BY cat.id, img.id ";
874
875    if($this->config['lmt_list_maxitems']>0)
876    {
877      $refdbt = ($pagenum-1)*$this->config['lmt_list_maxitems'];
878      $sql.=" LIMIT ".$refdbt.", ".$this->config['lmt_list_maxitems'];
879    }
880
881    $result=pwg_query($sql);
882    if($result)
883    {
884      while($row = pwg_db_fetch_assoc($result))
885      {
886        $filenfo = pathinfo($row['path']);
887        preg_match("/(.*)\./i", $filenfo["basename"], $tmp);
888        $filenfo['filename'] = $tmp[1];
889
890        $tmp=array(
891              'id'=>explode(',',$row['catid']),
892              'name'=>explode('@sep@',$row['catname']),
893              'type'=>explode(',',$row['cattype']),
894              'plinks'=>explode('@sep@',$row['catpermalink']),
895              'link'=>array()
896            );
897        $tmpcat=$this->make_image_data($tmp);
898
899        $img_ids[]=$row['image_id'];
900        $img_liste[]=array(
901          'id' => $row['image_id'],
902          'licence' => ($row['licence_type']=="CRIGHT")?l10n("lmt_lbl_cc_s-".strtolower($row['licence_type'])):"",
903          'licencei' => LMT_PATH."img/".strtolower($row['licence_type'])."_80x15.png",
904          'aut_text1' => $row['text1'],
905          'aut_text2' => $row['text2'],
906          'file' => $row['file'],
907          'cat' => $tmpcat,
908          'imglink' => make_picture_url(
909                          array(
910                            'image_id' => $row['image_id'],
911                            'category' => array(
912                              'id' => $tmp['id'][0],
913                              'name' => $tmp['name'][0],
914                              'permalink' => $tmp['plinks'][0])
915                          )
916                        ),
917          'thumb' => $filenfo["dirname"]."/thumbnail/".$conf["prefix_thumbnail"].$filenfo["filename"].".".$row["tn_ext"]
918        );
919      }
920    }
921
922    $sql="select FOUND_ROWS()";
923    $result=pwg_query($sql);
924    $nb=pwg_db_fetch_row($result);
925
926    $GPCPagesNavigation = new GPCPagesNavigation();
927    $GPCPagesNavigation->setNbItems($nb[0]);
928    $GPCPagesNavigation->setNbItemsPerPage($this->config['lmt_list_maxitems']);
929    $GPCPagesNavigation->setCurrentPage($pagenum);
930    $GPCPagesNavigation->setOptions(array(
931      "text_prev" => l10n("lmt_nav_prev"),
932      "text_next" => l10n("lmt_nav_next"),
933      "text_first" => l10n("lmt_nav_first"),
934      "text_last" => l10n("lmt_nav_last")
935    ));
936    $navbar=$GPCPagesNavigation->makeNavigation("loadpage");
937    if($navbar!="")
938    {
939      $navbar=", ".$navbar;
940    }
941
942    $local_tpl->assign('imgliste', $img_liste);
943    return($nb[0]."&nbsp;".l10n("lmt_lst_nb_photos").$navbar."#".$local_tpl->parse('body_page', true));
944  }
945
946  protected function ajax_manage_list($pagenum)
947  {
948    global $conf, $user;
949
950    $local_tpl = new Template(LMT_PATH."admin/", "");
951    $local_tpl->set_filename('body_page',
952                  dirname($this->getFileLocation()).'/admin/plugin_admin_manageitems.tpl');
953
954    if(!isset($_REQUEST['select']))
955    {
956      $_REQUEST['select']="caddie";
957    }
958
959    $img_liste = array();
960    $sql="SELECT SQL_CALC_FOUND_ROWS img.id as image_id, img.file, img.path, img.tn_ext,
961                  GROUP_CONCAT(cat.id) AS catid,
962                  GROUP_CONCAT(CASE WHEN cat.name IS NULL THEN '' ELSE cat.name END SEPARATOR '@sep@') AS catname,
963                  GROUP_CONCAT(CASE WHEN cat.permalink IS NULL THEN '' ELSE cat.permalink END SEPARATOR '@sep@') AS catpermalink,
964                  GROUP_CONCAT(CASE WHEN cat.dir IS NULL THEN 'V' ELSE 'P' END) AS cattype,
965                 lmti.licence_type, lmtla.text1, lmtla.text2
966          FROM ".CADDIE_TABLE." caddie,
967              (".IMAGES_TABLE." img
968                  LEFT OUTER JOIN ".IMAGE_CATEGORY_TABLE." imgcat ON img.id = imgcat.image_id
969                  LEFT OUTER JOIN ".CATEGORIES_TABLE." cat ON imgcat.category_id = cat.id)
970                LEFT OUTER JOIN ".$this->tables["images"]." AS lmti ON img.id = lmti.image_id
971                LEFT OUTER JOIN ".$this->tables["licence_author"]." lmtla  ON lmtla.id = lmti.author_id
972          WHERE img.id = caddie.element_id
973            AND caddie.user_id = '".$user['id']."'
974          GROUP BY img.id
975          ORDER BY cat.id, img.id ";
976
977    if($this->config['lmt_list_maxitems']>0)
978    {
979      $refdbt = ($pagenum-1)*$this->config['lmt_list_maxitems'];
980      $sql.=" LIMIT ".$refdbt.", ".$this->config['lmt_list_maxitems'];
981    }
982
983    $result=pwg_query($sql);
984
985    if($result)
986    {
987      while($row = pwg_db_fetch_assoc($result))
988      {
989        $filenfo = pathinfo($row['path']);
990        preg_match("/(.*)\./i", $filenfo["basename"], $tmp);
991        $filenfo['filename'] = $tmp[1];
992
993        $tmp=array(
994              'id'=>explode(',',$row['catid']),
995              'name'=>explode('@sep@',$row['catname']),
996              'type'=>explode(',',$row['cattype']),
997              'plinks'=>explode('@sep@',$row['catpermalink']),
998              'link'=>array()
999            );
1000        $tmpcat=$this->make_image_data($tmp);
1001
1002        $img_liste[]=array(
1003          'id' => $row['image_id'],
1004          'licence' => ($row['licence_type']=="")?"DEFAULT":$row['licence_type'],
1005          'licencei' => ($row['licence_type']=="")?"":LMT_PATH."img/".strtolower($row['licence_type'])."_80x15.png",
1006          'aut_text1' => $row['text1'],
1007          'aut_text2' => $row['text2'],
1008          'file' => $row['file'],
1009          'cat' => $tmpcat,
1010          'imglink' => make_picture_url(
1011                          array(
1012                            'image_id' => $row['image_id'],
1013                            'category' => array(
1014                              'id' => $tmp['id'][0],
1015                              'name' => $tmp['name'][0],
1016                              'permalink' => $tmp['plinks'][0])
1017                          )
1018                        ),
1019          'thumb' => $filenfo["dirname"]."/thumbnail/".$conf["prefix_thumbnail"].$filenfo["filename"].".".$row["tn_ext"]
1020        );
1021      }
1022    }
1023
1024    $sql="select FOUND_ROWS()";
1025    $result=pwg_query($sql);
1026    $nb=pwg_db_fetch_row($result);
1027
1028    $GPCPagesNavigation = new GPCPagesNavigation();
1029    $GPCPagesNavigation->setNbItems($nb[0]);
1030    $GPCPagesNavigation->setNbItemsPerPage($this->config['lmt_list_maxitems']);
1031    $GPCPagesNavigation->setCurrentPage($pagenum);
1032    $GPCPagesNavigation->setOptions(array(
1033      "text_prev" => l10n("lmt_nav_prev"),
1034      "text_next" => l10n("lmt_nav_next"),
1035      "text_first" => l10n("lmt_nav_first"),
1036      "text_last" => l10n("lmt_nav_last")
1037    ));
1038    $navbar=$GPCPagesNavigation->makeNavigation("loadpage");
1039    if($navbar!="")
1040    {
1041      $navbar=", ".$navbar;
1042    }
1043
1044    $local_tpl->assign('imgliste', $img_liste);
1045    return($nb[0]."&nbsp;".l10n("lmt_lst_nb_photos").$navbar."#".$local_tpl->parse('body_page', true));
1046  }
1047
1048} //class
1049
1050
1051?>
Note: See TracBrowser for help on using the repository browser.