> ------------------------------------------------------------------------------ See main.inc.php for release information AIP classe => manage integration in administration interface --------------------------------------------------------------------------- */ if (!defined('PHPWG_ROOT_PATH')) { die('Hacking attempt!'); } include_once(PHPWG_PLUGINS_PATH.'AMenuManager/amm_root.class.inc.php'); include_once(PHPWG_ROOT_PATH.'admin/include/tabsheet.class.php'); include_once(PHPWG_PLUGINS_PATH.'grum_plugins_classes-2/css.class.inc.php'); include_once(PHPWG_PLUGINS_PATH.'grum_plugins_classes-2/ajax.class.inc.php'); include_once(PHPWG_PLUGINS_PATH.'grum_plugins_classes-2/genericjs.class.inc.php'); include_once(PHPWG_PLUGINS_PATH.'grum_plugins_classes-2/translate.class.inc.php'); class AMM_AIP extends AMM_root { protected $google_translate; protected $tabsheet; protected $css; //the css object protected $ajax; protected $urls_modes=array(0 => 'new_window', 1 => 'current_window'); function AMM_AIP($prefixeTable, $filelocation) { parent::__construct($prefixeTable, $filelocation); $this->load_config(); $this->init_events(); $this->tabsheet = new tabsheet(); $this->tabsheet->add('setmenu', l10n('g002_setmenu'), $this->page_link.'&fAMM_tabsheet=setmenu'); $this->tabsheet->add('links', l10n('g002_addlinks'), $this->page_link.'&fAMM_tabsheet=links'); $this->tabsheet->add('randompict', l10n('g002_randompict'), $this->page_link.'&fAMM_tabsheet=randompict'); $this->tabsheet->add('personnalblock', l10n('g002_personnalblock'), $this->page_link.'&fAMM_tabsheet=personnalblock'); $this->css = new css(dirname($this->filelocation).'/'.$this->plugin_name_files.".css"); $this->ajax = new Ajax(); $this->google_translate = new translate(); } /* --------------------------------------------------------------------------- Public classe functions --------------------------------------------------------------------------- */ /* manage plugin integration into piwigo's admin interface */ public function manage() { global $template; $template->set_filename('plugin_admin_content', dirname(__FILE__)."/admin/amm_admin.tpl"); $this->return_ajax_content(); $this->init_request(); $this->tabsheet->select($_REQUEST['fAMM_tabsheet']); $this->tabsheet->assign(); $selected_tab=$this->tabsheet->get_selected(); $template->assign($this->tabsheet->get_titlename(), "[".$selected_tab['caption']."]"); $template_plugin["AMM_VERSION"] = "".$this->plugin_name." ".l10n('g002_version').AMM_VERSION; $template_plugin["AMM_PAGE"] = $_REQUEST['fAMM_tabsheet']; $template_plugin["PATH"] = AMM_PATH; $template->assign('plugin', $template_plugin); if(isset($_POST['famm_modeedit'])) { $post_action=$_POST['famm_modeedit']; } else { $post_action=""; } $page_nfo=""; if($_REQUEST['fAMM_tabsheet']=='links') { $page_nfo=l10n('g002_addlinks_nfo'); switch($_REQUEST['action']) { case 'list': $this->display_links_list_page(); break; case 'create': case 'modify': if($post_action==$_REQUEST['action']) { if(!$this->adviser_abort()) { $this->action_create_modify_url(); } $this->display_links_list_page(); } else { ($_REQUEST['action']=='modify')?$urlid=$_REQUEST['fItem']:$urlid=0; $this->display_links_manage_page($_REQUEST['action'], $urlid); } break; case 'config': if($post_action==$_REQUEST['action']) { if(!$this->adviser_abort()) { $this->action_links_modify_config(); } } $this->display_links_config_page(); break; } } elseif($_REQUEST['fAMM_tabsheet']=='randompict') { $page_nfo=l10n('g002_randompict_nfo'); if($post_action=='config') { if(!$this->adviser_abort()) { $this->action_randompic_modify_config(); } } $this->display_randompic_config_page(); } elseif($_REQUEST['fAMM_tabsheet']=='personnalblock') { $page_nfo=l10n('g002_personnalblock_nfo'); switch($_REQUEST['action']) { case 'list': $this->display_personalised_list_page(); break; case 'create': case 'modify': if($post_action==$_REQUEST['action']) { if(!$this->adviser_abort()) { $this->action_create_modify_personalised(); } $this->display_personalised_list_page(); } else { ($_REQUEST['action']=='modify')?$sectionid=$_REQUEST['fItem']:$sectionid=0; $this->display_personalised_manage_page($_REQUEST['action'], $sectionid); } break; } } elseif($_REQUEST['fAMM_tabsheet']=='setmenu') { $page_nfo=l10n('g002_setmenu_nfo'); $this->display_sections_list_page($_REQUEST['action']); } $template->assign('page_nfo', $page_nfo); $template->assign_var_from_handle('ADMIN_CONTENT', 'plugin_admin_content'); } /* initialize events call for the plugin */ public function init_events() { add_event_handler('loc_end_page_header', array(&$this->css, 'apply_CSS')); } /* --------------------------------------------------------------------------- Private classe functions --------------------------------------------------------------------------- */ /* return ajax content */ protected function return_ajax_content() { global $ajax, $template; if(isset($_REQUEST['ajaxfct'])) { //$this->debug("AJAXFCT:".$_REQUEST['ajaxfct']); $result="
".l10n('g002_error_invalid_ajax_call')."
"; switch($_REQUEST['ajaxfct']) { case 'links_list': $result=$this->ajax_amm_links_list(); break; case 'links_permut': $result=$this->ajax_amm_links_permut($_REQUEST['fItem'], $_REQUEST['fPermut']); break; case 'links_delete': $result=$this->ajax_amm_links_delete($_REQUEST['fItem']); break; case 'setmenu_list_sections_list': $result=$this->ajax_amm_setmenu_list_section_list(); break; case 'setmenu_list_sections_position': $result=$this->ajax_amm_setmenu_list_section_position($_REQUEST['fItem'], $_REQUEST['fPosition']); break; case 'setmenu_list_sections_showhide': $result=$this->ajax_amm_setmenu_list_section_showhide($_REQUEST['fItem']); break; case 'setmenu_modmenu_sections_list': $result=$this->ajax_amm_setmenu_mod_section_list('amm_sections_modmenu'); break; case 'setmenu_modmenu_sections_showhide': $result=$this->ajax_amm_setmenu_mod_section_showhide('amm_sections_modmenu', $_REQUEST['fItem']); break; case 'setmenu_modspecial_sections_list': $result=$this->ajax_amm_setmenu_mod_section_list('amm_sections_modspecials'); break; case 'setmenu_modspecial_sections_showhide': $result=$this->ajax_amm_setmenu_mod_section_showhide('amm_sections_modspecials', $_REQUEST['fItem']); break; case 'personalised_list': $result=$this->ajax_amm_personalised_list(); break; case 'personalised_delete': $result=$this->ajax_amm_personalised_delete($_REQUEST['fItem']); break; } //$template-> $this->ajax->return_result($result); } } /* if empty, initialize $_request */ private function init_request() { //initialise $REQUEST values if not defined if(!array_key_exists('fAMM_tabsheet', $_REQUEST)) { $_REQUEST['fAMM_tabsheet']='setmenu'; } if((($_REQUEST['fAMM_tabsheet']=='links') or ($_REQUEST['fAMM_tabsheet']=='personnalblock') or ($_REQUEST['fAMM_tabsheet']=='setmenu')) and !isset($_REQUEST['action'])) { $_REQUEST['action']='list'; } } //init_request /* manage display for urls table page */ private function display_links_list_page() { global $template, $user; $template->set_filename('body_page', dirname($this->filelocation).'/admin/amm_linkslist.tpl'); $tmp=$this->get_count_url(); if($tmp==0) { $tmp=l10n("g002_nolinks"); } elseif($tmp==1) { $tmp="1 ".l10n("g002_link"); } else { $tmp=$tmp." ".l10n("g002_links"); } $template_datas=array( 'lnk_create' => $this->page_link.'&fAMM_tabsheet=links&action=create', 'lnk_config' => $this->page_link.'&fAMM_tabsheet=links&action=config', 'AMM_AJAX_URL_LIST' => $this->page_link."&ajaxfct=", 'nburl' => $tmp ); $template->assign("datas", $template_datas); $template->assign_var_from_handle('AMM_BODY_PAGE', 'body_page'); } /* manage display for urls config page */ private function display_links_config_page() { global $template, $user; $template->set_filename('body_page', dirname($this->filelocation).'/admin/amm_linksconfig.tpl'); $template_datas=array( 'lnk_list' => $this->page_link.'&fAMM_tabsheet=links', 'AMM_AJAX_URL_LIST' => $this->page_link."&ajaxfct=", 'show_icons_selected' => $this->my_config['amm_links_show_icons'], 'lang_selected' => $user['language'], 'fromlang' => substr($user['language'],0,2) ); $template_datas['language_list'] = array(); foreach($this->my_config['amm_links_title'] as $key => $val) { $template_datas['language_list'][] = array( 'LANG' => $key, 'MENUBARTIT' => base64_decode($val) ); } $lang=get_languages(); foreach($lang as $key => $val) { $template_datas['language_list_values'][] = $key; $template_datas['language_list_labels'][] = $val; } $template_datas['yesno_values'] = array('y','n'); $template_datas['yesno_labels'][] = l10n('g002_yesno_y'); $template_datas['yesno_labels'][] = l10n('g002_yesno_n'); $template->assign("datas", $template_datas); $template->assign_var_from_handle('AMM_BODY_PAGE', 'body_page'); } /* manage display for urls create/modify page */ private function display_links_manage_page($modeedit = 'create', $urlid=0) { global $template, $user; $template->set_filename('body_page', dirname($this->filelocation).'/admin/amm_linkslist_edit.tpl'); $extensions_list=array('jpg'=>0,'jpeg'=>0,'gif'=>0,'png'=>0); $template_icons_list=array(); $directory=dir(dirname($this->filelocation).'/links_pictures/'); while($file=$directory->read()) { if(isset($extensions_list[get_extension(strtolower($file))])) { $template_icons_list[]=$file; } } if($modeedit=='modify') { $url=$this->get_url($urlid); $template_datas=array( 'id' => $urlid, 'modeedit' => 'modify', 'label' => htmlentities($url['label'], ENT_QUOTES, 'UTF-8'), 'url' => $url['url'], 'icons_selected' => $url['icon'], 'mode_selected' => $url['mode'], 'visible_selected' => $url['visible'] ); } else { $template_datas=array( 'id' => '', 'modeedit' => 'create', 'label' => '', 'url' => '', 'icons_selected' => $template_icons_list[0], 'mode_selected' => 0, 'visible_selected' => 'y' ); } $template_datas['lnk_list'] = $this->page_link.'&fAMM_tabsheet=links'; $template_datas['icons_img'] = AMM_PATH."links_pictures/".$template_datas['icons_selected']; $template_datas['icons_values'] = array(); foreach($template_icons_list as $key => $val) { $template_datas['icons_values'][] = array( 'img' => AMM_PATH."links_pictures/".$val, 'value' => $val, 'label' => $val ); } $template_datas['mode_values'] = array(0,1); $template_datas['mode_labels'][] = l10n("g002_mode_".$this->urls_modes[0]); $template_datas['mode_labels'][] = l10n("g002_mode_".$this->urls_modes[1]); $template_datas['visible_values'] = array('y','n'); $template_datas['visible_labels'][] = l10n('g002_yesno_y'); $template_datas['visible_labels'][] = l10n('g002_yesno_n'); $template->assign("datas", $template_datas); $template->assign_var_from_handle('AMM_BODY_PAGE', 'body_page'); } /* manage create/modify url into database and display result */ protected function action_create_modify_url() { $datas=array( 'id' => $_POST['famm_id'], 'label' => $_POST['famm_label'], 'url' => $_POST['famm_url'], 'mode' => $_POST['famm_mode'], 'icon' => $_POST['famm_icon'], 'position' => 0, 'visible' => $_POST['famm_visible'] ); switch($_POST['famm_modeedit']) { case 'create': $this->add_url($datas); break; case 'modify': $this->modify_url($datas); } } /* manage urls config save into database */ protected function action_links_modify_config() { $this->my_config['amm_links_show_icons']=$_POST['famm_links_show_icons']; $languages=get_languages(); foreach($languages as $key => $val) { $this->my_config['amm_links_title'][$key]=base64_encode($_POST['famm_links_title_'.$key]); } $this->save_config(); } /* manage randompic config save into database */ protected function action_randompic_modify_config() { $this->my_config['amm_randompicture_showname']=$_POST['famm_randompicture_showname']; $this->my_config['amm_randompicture_showcomment']=$_POST['famm_randompicture_showcomment']; $languages=get_languages(); foreach($languages as $key => $val) { $this->my_config['amm_randompicture_title'][$key]=base64_encode(stripslashes($_POST['famm_randompicture_title_'.$key])); } $this->save_config(); } /* manage display for sections table page */ private function display_sections_list_page($action) { global $template, $user; $template->set_filename('body_page', dirname($this->filelocation).'/admin/amm_sections.tpl'); switch($action) { case 'list': $tmp_list=array( array('separator' => '', 'link' => '', 'label' => 'g002_sectionslist'), array('separator' => ' / ', 'link' => $this->page_link.'&fAMM_tabsheet=setmenu&action=modmenu', 'label' => 'g002_modmenu'), array('separator' => ' / ', 'link' => $this->page_link.'&fAMM_tabsheet=setmenu&action=modspecial', 'label' => 'g002_modspecial') ); break; case 'modmenu': $tmp_list=array( array('separator' => '', 'link' => $this->page_link.'&fAMM_tabsheet=setmenu&action=list', 'label' => 'g002_sectionslist'), array('separator' => ' / ', 'link' => '', 'label' => 'g002_modmenu'), array('separator' => ' / ', 'link' => $this->page_link.'&fAMM_tabsheet=setmenu&action=modspecial', 'label' => 'g002_modspecial') ); break; case 'modspecial': $tmp_list=array( array('separator' => '', 'link' => $this->page_link.'&fAMM_tabsheet=setmenu&action=list', 'label' => 'g002_sectionslist'), array('separator' => ' / ', 'link' => $this->page_link.'&fAMM_tabsheet=setmenu&action=modmenu', 'label' => 'g002_modmenu'), array('separator' => ' / ', 'link' => '', 'label' => 'g002_modspecial') ); break; } $template_datas=array( 'AMM_AJAX_URL_LIST' => $this->page_link."&ajaxfct=setmenu_".$action."_", 'LIST' => $tmp_list ); $template->assign("datas", $template_datas); $template->assign_var_from_handle('AMM_BODY_PAGE', 'body_page'); } /* manage display for randompic config page */ private function display_randompic_config_page() { global $template, $user; $template->set_filename('body_page', dirname($this->filelocation).'/admin/amm_randompicconfig.tpl'); $template_datas=array( 'lnk_list' => $this->page_link.'&fAMM_tabsheet=links', 'showname_selected' => $this->my_config['amm_randompicture_showname'], 'showcomment_selected' => $this->my_config['amm_randompicture_showcomment'], 'lang_selected' => $user['language'], 'fromlang' => substr($user['language'],0,2) ); $template_datas['language_list'] = array(); foreach($this->my_config['amm_randompicture_title'] as $key => $val) { $template_datas['language_list'][] = array( 'LANG' => $key, 'MENUBARTIT' => htmlentities(base64_decode($val), ENT_QUOTES, 'UTF-8') ); } $lang=get_languages(); foreach($lang as $key => $val) { $template_datas['language_list_values'][] = $key; $template_datas['language_list_labels'][] = $val; } $template_datas['yesno_values'] = array('y','n'); $template_datas['yesno_labels'][] = l10n('g002_yesno_y'); $template_datas['yesno_labels'][] = l10n('g002_yesno_n'); $template_datas['show_values'] = array('n', 'o', 'u'); $template_datas['show_labels'][] = l10n('g002_show_n'); $template_datas['show_labels'][] = l10n('g002_show_o'); $template_datas['show_labels'][] = l10n('g002_show_u'); $template->assign("datas", $template_datas); $template->assign_var_from_handle('AMM_BODY_PAGE', 'body_page'); } /* manage display for personalised sections list page */ private function display_personalised_list_page() { global $template, $user; $template->set_filename('body_page', dirname($this->filelocation).'/admin/amm_personalisedlist.tpl'); $sql="SELECT COUNT(DISTINCT ID) as countid FROM ".$this->tables['personalised']; $result=pwg_query($sql); if($result) { $tmp=mysql_fetch_row($result); $tmp=$tmp[0]; } else { $tmp=0; } if($tmp==0) { $tmp=l10n("g002_nosections"); } elseif($tmp==1) { $tmp="1 ".l10n("g002_section"); } else { $tmp=$tmp." ".l10n("g002_sections"); } $template_datas=array( 'lnk_create' => $this->page_link.'&fAMM_tabsheet=personnalblock&action=create', 'AMM_AJAX_URL_LIST' => $this->page_link."&ajaxfct=", 'nbsections' => $tmp ); $template->assign("datas", $template_datas); $template->assign_var_from_handle('AMM_BODY_PAGE', 'body_page'); } /* manage display for personalised sections create/modify page */ private function display_personalised_manage_page($modeedit = 'create', $sectionid=0) { global $template, $user; $template->set_filename('body_page', dirname($this->filelocation).'/admin/amm_personalisedlist_edit.tpl'); $template_datas=array(); $lang=get_languages(); $lang['all']=l10n('g002_all_languages'); foreach($lang as $key => $val) { $template_datas['language_list_values'][] = $key; $template_datas['language_list_labels'][] = $val; $template_datas['language_list'][$key]=array( 'LANG' => $key, 'MENUBARTIT' => '', 'MENUBARCONTENT' => '' ); } if($modeedit=='modify') { $sections=$this->get_personalised($sectionid); $template_datas['id'] = $sectionid; $template_datas['modeedit'] = 'modify'; $template_datas['visible_selected'] = $sections[0]['visible']; $template_datas['nfo'] = htmlentities($sections[0]['nfo'], ENT_QUOTES, 'UTF-8'); foreach($sections as $key => $val) { $lang=($val['lang']=='*')?'all':$val['lang']; $template_datas['language_list'][$lang] = array( 'LANG' => $lang, 'MENUBARTIT' => htmlentities($val['title'], ENT_QUOTES, 'UTF-8'), 'MENUBARCONTENT' => htmlentities($val['content'], ENT_QUOTES, 'UTF-8'), ); } } else { $template_datas['nfo'] = ''; $template_datas['id'] = ''; $template_datas['modeedit'] = 'create'; $template_datas['visible_selected'] = 'y'; } $template_datas['lang_selected'] = $user['language']; $template_datas['personalised_list'] = $this->page_link.'&fAMM_tabsheet=personnalblock'; $template_datas['yesno_values'] = array('y','n'); $template_datas['yesno_labels'][] = l10n('g002_yesno_y'); $template_datas['yesno_labels'][] = l10n('g002_yesno_n'); $template->assign("datas", $template_datas); $template->assign_var_from_handle('AMM_BODY_PAGE', 'body_page'); } /* manage create/modify pesonalised sections into database and display result */ protected function action_create_modify_personalised() { global $user; if($_POST['famm_modeedit']=='create') { $id=$this->get_personalised_id(); } else { $id=$_POST['famm_id']; } $languages=get_languages(); $languages['all']='*'; foreach($languages as $key => $val) { $datas=array( 'id' => $id, 'lang' => ($key=='all')?'*':$key, 'visible' => $_POST['famm_personalised_visible'], 'nfo' => ($_POST['famm_personalised_nfo']=='')?$_POST['famm_personalised_title_'.$user['language']]:$_POST['famm_personalised_nfo'], 'title' => $_POST['famm_personalised_title_'.$key], 'content' => $_POST['famm_personalised_content_'.$key] ); switch($_POST['famm_modeedit']) { case 'create': $this->add_personalised($datas); break; case 'modify': $this->modify_personalised($datas); } } } /* manage adviser profile return true if user is adviser */ protected function adviser_abort() { if(is_adviser()) { $this->display_result(l10n("g002_adviser_not_allowed"), false); return(true); } return(false); } /* --------------------------------------------------------------------------- functions to manage urls tables --------------------------------------------------------------------------- */ // protected function get_urls() // protected function get_count_url() // => defined in root class // return properties of an given url private function get_url($url_id) { $returned=array(); $sql="SELECT * FROM ".$this->tables['urls']." WHERE id = '".$url_id."'"; $result=pwg_query($sql); if($result) { $returned=mysql_fetch_array($result); //$returned['label']=stripslashes($returned['label']); } return($returned); } // permut position of two 2 urls private function permut_url($url_id, $url_permut) { $sql="SELECT id, position FROM ".$this->tables['urls']." WHERE id IN ('".$url_id."','".$url_permut."')"; $result=pwg_query($sql); if($result) { $tmp=array(); while($row=mysql_fetch_array($result)) { $tmp[$row['id']]=$row['position']; } $sql="UPDATE ".$this->tables['urls']." SET position = ".$tmp[$url_id]." WHERE id = '".$url_permut."'"; pwg_query($sql); $sql="UPDATE ".$this->tables['urls']." SET position = ".$tmp[$url_permut]." WHERE id = '".$url_id."'"; pwg_query($sql); } } // delete an url private function delete_url($url_id) { $sql="DELETE FROM ".$this->tables['urls']." WHERE id = '".$url_id."' "; return(pwg_query($sql)); } // add an url private function add_url($datas) { $numurl=$this->get_count_url(); $sql="INSERT INTO ".$this->tables['urls']." (label, url, mode, icon, position, visible) VALUES ('".$datas['label']."', '".$datas['url']."', '".$datas['mode']."', '".$datas['icon']."', '".$numurl."', '".$datas['visible']."')"; return(pwg_query($sql)); } // modify an url private function modify_url($datas) { $sql="UPDATE ".$this->tables['urls']." SET label = '".$datas['label']."', url = '".$datas['url']."', mode = '".$datas['mode']."', icon = '".$datas['icon']."', visible = '".$datas['visible']."' WHERE id = '".$datas['id']."'"; return(pwg_query($sql)); } // just modify url visibility private function set_url_visibility($urlid, $visible) { $sql="UPDATE ".$this->tables['urls']." SET visible = '".$visible."' WHERE id = '".$urlid."'"; return(pwg_query($sql)); } /* --------------------------------------------------------------------------- functions to manage sections tables --------------------------------------------------------------------------- */ // protected function get_sections($only_visible=false, $lang="") // => defined in root class // return properties of a given section (return each languages) private function get_personalised($section_id) { $returned=array(); $sql="SELECT * FROM ".$this->tables['personalised']." WHERE id = '".$section_id."'"; $result=pwg_query($sql); if($result) { while($returned[]=mysql_fetch_array($result)); } return($returned); } // delete a section private function delete_personalised($section_id) { $sql="DELETE FROM ".$this->tables['personalised']." WHERE id = '".$section_id."' "; return(pwg_query($sql)); } // add a section private function add_personalised($datas) { $sql="INSERT INTO ".$this->tables['personalised']." (id, lang, title, content, visible, nfo) VALUES ('".$datas['id']."', '".$datas['lang']."', '".$datas['title']."', '".$datas['content']."', '".$datas['visible']."', '".$datas['nfo']."')"; return(pwg_query($sql)); } // modify a section private function modify_personalised($datas) { $sql="UPDATE ".$this->tables['personalised']." SET title = '".$datas['title']."', content = '".$datas['content']."', visible = '".$datas['visible']."', nfo = '".$datas['nfo']."' WHERE id = '".$datas['id']."' AND lang = '".$datas['lang']."'"; return(pwg_query($sql)); } // return the next personalised id private function get_personalised_id() { $sql='SELECT MAX(ID) FROM '.$this->tables['personalised']; $result=pwg_query($sql); if($result) { $row=mysql_fetch_row($result); if(is_array($row)) { return($row[0]+1); } } return(0); } /* --------------------------------------------------------------------------- ajax functions --------------------------------------------------------------------------- */ // return a html formatted list of urls private function ajax_amm_links_list() { global $template, $user; $local_tpl = new Template(AMM_PATH."admin/", ""); $local_tpl->set_filename('body_page', dirname($this->filelocation).'/admin/amm_linkslist_detail.tpl'); $template_datas['urls']=array(); $urls=$this->get_urls(); for($i=0;$i