>
------------------------------------------------------------------------------
See main.inc.php for release information
LMT_AIP : classe to manage plugin admin pages
--------------------------------------------------------------------------- */
include_once('lmt_root.class.inc.php');
include_once(PHPWG_PLUGINS_PATH.'GrumPluginClasses/classes/GPCTables.class.inc.php');
include_once(PHPWG_PLUGINS_PATH.'GrumPluginClasses/classes/GPCRequestBuilder.class.inc.php');
include_once(PHPWG_PLUGINS_PATH.'GrumPluginClasses/classes/genericjs.class.inc.php');
include_once(PHPWG_PLUGINS_PATH.'GrumPluginClasses/classes/GPCPagesNavigation.class.inc.php');
include_once(PHPWG_ROOT_PATH.'admin/include/tabsheet.class.php');
class LMT_AIP extends LMT_root
{
protected $tabsheet;
public function __construct($prefixeTable, $filelocation)
{
parent::__construct($prefixeTable, $filelocation);
$this->loadConfig();
$this->initEvents();
$this->tabsheet = new tabsheet();
$this->tabsheet->add('list',
l10n('lmt_list'),
$this->getAdminLink()."-list");
$this->tabsheet->add('manage',
l10n('lmt_manage'),
$this->getAdminLink()."-manage");
$this->tabsheet->add('manageaut',
l10n('lmt_manageaut'),
$this->getAdminLink()."-manageaut");
$this->tabsheet->add('search',
l10n('lmt_search'),
$this->getAdminLink()."-search");
$this->tabsheet->add('config',
l10n('lmt_config'),
$this->getAdminLink()."-config");
$this->tabsheet->add('help',
l10n('lmt_help'),
$this->getAdminLink()."-help");
}
public function __destruct()
{
unset($this->tabsheet);
parent::__destruct();
}
/*
initialize events call for the plugin
*/
public function initEvents()
{
parent::initEvents();
if(isset($_GET['tab']) and $_GET['tab']=='search')
{
// load request builder JS only on the search page
GPCRequestBuilder::loadJSandCSS();
}
}
/*
display administration page
*/
public function manage()
{
global $template;
$template->set_filename('plugin_admin_content', dirname(__FILE__)."/admin/lmt_admin.tpl");
GPCCore::setTemplateToken();
if(!isset($_GET['tab'])) $_GET['tab']='list';
switch($_GET['tab'])
{
case 'list':
$this->display_list_page();
break;
case 'manage':
$this->display_manage_page();
break;
case 'manageaut':
$this->display_manageaut_page();
break;
case 'managedoc':
$this->display_managedoc_page();
break;
case 'search':
$this->displaySearch();
break;
case 'help':
$this->display_help_page();
break;
case 'config':
$this->display_config_page();
break;
}
$this->tabsheet->select($_GET['tab']);
$this->tabsheet->assign();
$selected_tab=$this->tabsheet->get_selected();
$template->assign($this->tabsheet->get_titlename(), "[".$selected_tab['caption']."]");
$template_plugin["LMT_VERSION"] = "".$this->getPluginName()." ".l10n('lmt_release').LMT_VERSION;
$template_plugin["LMT_PAGE"] = $_GET['tab'];
$template_plugin["LMT_TITLE"] = "";
$template->assign('plugin', $template_plugin);
$template->assign_var_from_handle('ADMIN_CONTENT', 'plugin_admin_content');
}
/*
manage display of config page & save config
*/
protected function display_config_page()
{
$languages=get_languages();
GPCCore::addHeaderJS('lmt.config', './plugins/lmt/js/lmtConfig.js', array('jquery'));
GPCCore::addUI('inputNum,simpleTip');
if(!$this->adviser_abort())
{
if(isset($_POST['submit_save_config']))
{
foreach($this->config as $key => $val)
{
if(is_array($val))
{
foreach($languages as $key2 => $val2)
{
if(isset($_REQUEST[str2url('f_'.$key.'_'.$key2)]))
{
$this->config[$key][$key2] = htmlspecialchars(stripslashes($_REQUEST[str2url('f_'.$key.'_'.$key2)]), ENT_QUOTES);
}
}
}
else
{
if(isset($_REQUEST['f_'.$key]))
{
$this->config[$key] = $_REQUEST['f_'.$key];
}
}
}
$this->displayResult(l10n('lmt_save_config'), $this->saveConfig());
}
}
$this->display_config();
}
/*
*/
protected function display_help_page()
{
global $template;
$template->set_filename('body_page',
dirname($this->getFileLocation()).'/admin/plugin_admin_help.tpl');
$template->assign('imgdir', LMT_PATH."img/");
$template->assign_var_from_handle('LMT_BODY_PAGE', 'body_page');
}
/*
*/
protected function display_list_page()
{
global $template, $conf, $user;
$template->set_filename('body_page',
dirname($this->getFileLocation()).'/admin/plugin_admin_list.tpl');
if(!isset($_REQUEST['filter']) ||
!($_REQUEST['filter']=="BY" ||
$_REQUEST['filter']=="BY-SA" ||
$_REQUEST['filter']=="BY-ND" ||
$_REQUEST['filter']=="BY-NC-ND" ||
$_REQUEST['filter']=="BY-NC-SA" ||
$_REQUEST['filter']=="BY-NC" ||
$_REQUEST['filter']=="CRIGHT" ||
$_REQUEST['filter']=="CLEFT" ||
$_REQUEST['filter']=="CC0" ||
$_REQUEST['filter']=="PD"
))
{
$_REQUEST['filter']='';
}
$datas=array(
"LMT_AJAX_URL_LIST" => $this->getAdminLink('ajax')
);
$filter_list_selected = '';
$filter_list_values = array_slice(LMT_root::$licences,0,count(LMT_root::$licences)-1);
$filter_list_labels = array();
foreach($filter_list_values as $key=>$val)
{
$filter_list_labels[] = "[".$this->translateCopyright("lmt_lbl_cc_s-".strtolower($val))."] ".$this->translateCopyright("lmt_lbl_cc-".strtolower($val));
if($val==$_REQUEST['filter'])
{
$filter_list_selected = $val;
}
}
$filter_list_values = array_merge(array(''), $filter_list_values);
$filter_list_labels = array_merge(array(l10n('lmt_nofilter')), $filter_list_labels);
$default_licence = $this->translateCopyright("lmt_lbl_cc-".strtolower($this->config['lmt_licence_default']));
$default_licence_img =LMT_PATH."img/".strtolower($this->config['lmt_licence_default'])."_80x15.png";
$results=true;
if(isset($_POST["submit_replace_caddie"]))
{
$sql="DELETE FROM ".CADDIE_TABLE." WHERE user_id='".$user['id']."'";
$result=pwg_query($sql);
($result)?$results=true:$results=false;
}
if(isset($_POST["submit_add_to_caddie"]) || isset($_POST["submit_replace_caddie"]))
{
$sql="REPLACE INTO ".CADDIE_TABLE."
SELECT '".$user['id']."', it.id FROM ".IMAGES_TABLE." it, ".$this->tables["images"]." lmti
WHERE it.id = lmti.image_id";
if($_REQUEST['filter']!="")
{
$sql.=" AND lmti.licence_type='".$_REQUEST['filter']."'";
}
$result=pwg_query($sql);
if((!$results)||(!$result))
{
$this->displayResult(l10n("lmt_caddie_not_updated"), false);
}
else
{
$this->displayResult(l10n("lmt_caddie_updated"), true);
}
}
$template->assign('datas', $datas);
$template->assign('default_licence', $default_licence);
$template->assign('default_licence_img', $default_licence_img);
$template->assign('filter_list_values', $filter_list_values);
$template->assign('filter_list_labels', $filter_list_labels);
$template->assign('filter_list_selected', $filter_list_selected);
$template->assign_var_from_handle('LMT_BODY_PAGE', 'body_page');
}
/*
*/
protected function display_manage_page()
{
global $template, $conf, $user;
/*
apply licence
*/
if(isset($_POST['submit_apply_licence']))
{
$results=array("", "");
$lst=array();
foreach($_POST as $key => $val)
{
if((substr($key,0,2)=="fn")&&($val=="1")) $lst[]=substr($key,2);
}
if(count($lst)>0)
{
if($_POST['manage_caddie']!="napp_clear_selected")
{
if($_POST['licence']=='DEFAULT')
{
$sql="DELETE FROM ".$this->tables['images']."
WHERE image_id IN (".implode(",", $lst).")";
}
else
{
$sql="REPLACE INTO ".$this->tables['images']."
SELECT id, '".$_POST['licence']."', '".$_POST['author']."'
FROM ".IMAGES_TABLE."
WHERE id IN (".implode(",", $lst).")";
}
$result=pwg_query($sql);
($result)?$results[0].=l10n("lmt_add_licence_ok")."
":$results[1].=l10n("lmt_add_licence_ko")."
";
}
switch($_POST['manage_caddie'])
{
case 'app_clear':
$sql="DELETE FROM ".CADDIE_TABLE." WHERE user_id = '".$user['id']."'";
$result=pwg_query($sql);
($result)?$results[0].=l10n("lmt_clear_caddie_ok")."
":$results[1].=l10n("lmt_clear_caddie_ko")."
";
break;
case 'app_clear_selected':
case 'napp_clear_selected':
$sql="DELETE FROM ".CADDIE_TABLE."
WHERE user_id = '".$user['id']."'
AND element_id IN (".implode(",", $lst).")";
$result=pwg_query($sql);
($result)?$results[0].=l10n("lmt_clear_si_caddie_ok")."
":$results[1].=l10n("lmt_clear_si_caddie_ko")."
";
break;
}
if($results[0]!="")
{
$this->displayResult($results[0], true);
}
if($results[1]!="")
{
$this->displayResult($results[1], false);
}
}
else
{
$this->displayResult(l10n("lmt_no_element_selected"), false);
}
}
$template->set_filename('body_page',
dirname($this->getFileLocation()).'/admin/plugin_admin_manage.tpl');
$datas=array(
"LMT_AJAX_URL_LIST" => $this->getAdminLink('ajax')
);
if(!isset($_REQUEST['select']))
{
$_REQUEST['select']="caddie";
}
$sql="SELECT count(element_id) FROM ".CADDIE_TABLE." WHERE user_id = '".$user['id']."'";
$result=pwg_query($sql);
$nbphotos=pwg_db_fetch_row($result);
$author_list_values = array(0);
$author_list_labels = array(l10n("lmt_no_author"));
$sql="SELECT * FROM ".$this->tables["licence_author"]." ORDER BY id";
$result=pwg_query($sql);
if($result)
{
while($row=pwg_db_fetch_assoc($result))
{
$author_list_values[]=$row['id'];
$author_list_labels[]=$row['text1']." ".$row['text2'];
}
}
$licences_list_values = array();
$licences_list_values = self::$licences;
$licences_list_labels = array();
foreach($licences_list_values as $key=>$val)
{
$licences_list_labels[] = "[".$this->translateCopyright("lmt_lbl_cc_s-".strtolower($val))."] ".$this->translateCopyright("lmt_lbl_cc-".strtolower($val));
}
/* $licences_list_values = array_merge(array('DEFAULT'), $licences_list_values);
$licences_list_labels = array_merge(array(l10n('lmt_bydefault')), $licences_list_labels);*/
$selectlist_list_values=array("-", "all", "none", "invert");
$selectlist_list_values=array_merge($selectlist_list_values, $licences_list_values);
$selectlist_list_labels=array(
l10n("lmt_choose_select"),
l10n("lmt_select_all"),
l10n("lmt_select_none"),
l10n("lmt_select_invert")
);
$selectlist_list_labels=array_merge($selectlist_list_labels, $licences_list_labels);
$template->assign('datas', $datas);
$template->assign('nbphotos', $nbphotos[0]);
$template->assign('selectlist_list_values', $selectlist_list_values);
$template->assign('selectlist_list_labels', $selectlist_list_labels);
$template->assign('filter_list_selected', "");
$template->assign('licences_list_values', $licences_list_values);
$template->assign('licences_list_labels', $licences_list_labels);
$template->assign('licences_list_selected', "");
$template->assign('author_list_values', $author_list_values);
$template->assign('author_list_labels', $author_list_labels);
$template->assign_var_from_handle('LMT_BODY_PAGE', 'body_page');
}
/*
display config page
*/
protected function display_config()
{
global $template, $lang;
$template->set_filename('body_page',
dirname($this->getFileLocation()).'/admin/plugin_admin_config.tpl');
$datas=array(
"img_directory" => LMT_PATH."img/"
);
foreach($this->config as $key => $val)
{
if(!is_array($val))
{
$datas[$key]=$val;
}
}
$lmt_yesno_values=array("y", "n");
$lmt_yesno_labels=array(l10n("lmt_yesno_y"), l10n("lmt_yesno_n"));
$lmt_licence_logo_values=array("80x15", "88x31", "text");
$lmt_licence_logo_labels=array(l10n("lmt_icon_80x15"), l10n("lmt_icon_88x31"), l10n("lmt_icon_text"));
$datas['lmt_redirect_urls']=array();
$lmt_licence_default_values = array_slice(self::$licences,0,count(self::$licences)-1);
$lmt_licence_default_labels = array();
$tmp=array();
foreach($lmt_licence_default_values as $key=>$val)
{
$lmt_licence_default_labels[] = "[".$this->translateCopyright("lmt_lbl_cc_s-".strtolower($val))."] ".$this->translateCopyright("lmt_lbl_cc-".strtolower($val));
$tmp[]="'".str2url("ilmt_redirect_url-".strToLower($val))."'";
$datas['lmt_redirect_urls'][str2url('lmt_redirect_url-'.strToLower($val))]=array(
'text' => $this->translateCopyright("lmt_lbl_cc_s-".strToLower($val)),
'langs' => array()
);
}
$datas['objnames2'] = implode(",", $tmp);
//langs list & texts
$datas['lmt_warning_texts']=array();
$lmt_language_list=array();
$lmt_language_list_values=array();
$lmt_language_list_labels=array();
$lmt_language_selected=str2url(get_default_language());
$languages=get_languages();
foreach($languages as $key => $val)
{
$lmt_language_list_values[]=str2url($key);
$lmt_language_list_labels[]=$val;
$datas['lmt_warning_texts'][]=array(
'lang' => str2url($key),
'text' => $this->config['lmt_warning_texts'][$key]
);
foreach($lmt_licence_default_values as $key2 => $val2)
{
$datas['lmt_redirect_urls'][str2url('lmt_redirect_url-'.strToLower($val2))]['langs'][str2url($key)]=
$this->config['lmt_redirect_url-'.strToLower($val2)][$key];
}
}
$lmt_licence_default_author_values=array(0);
$lmt_licence_default_author_labels=array(l10n("lmt_no_author"));
$sql="SELECT * FROM ".$this->tables['licence_author']." ORDER BY id";
$result=pwg_query($sql);
if($result)
{
while($row=pwg_db_fetch_assoc($result))
{
$lmt_licence_default_author_values[]=$row['id'];
$lmt_licence_default_author_labels[]=$row['text1']." ".$row['text2'];
}
}
$template->assign('datas', $datas);
$template->assign('extended_code', $this->generate_js_licence_author());
$template->assign('lmt_yesno_values', $lmt_yesno_values);
$template->assign('lmt_yesno_labels', $lmt_yesno_labels);
$template->assign('lmt_licence_logo_values', $lmt_licence_logo_values);
$template->assign('lmt_licence_logo_labels', $lmt_licence_logo_labels);
$template->assign('lmt_licence_default_values', $lmt_licence_default_values);
$template->assign('lmt_licence_default_labels', $lmt_licence_default_labels);
$template->assign('lmt_licence_default_author_values', $lmt_licence_default_author_values);
$template->assign('lmt_licence_default_author_labels', $lmt_licence_default_author_labels);
$template->assign('lmt_language_list_values', $lmt_language_list_values);
$template->assign('lmt_language_list_labels', $lmt_language_list_labels);
$template->assign('lmt_language_selected', $lmt_language_selected);
$template->assign_var_from_handle('LMT_BODY_PAGE', 'body_page');
} //display_config
/**
* display the search page
*
*/
protected function displaySearch()
{
global $template;
$template->set_filename('body_page',
dirname($this->getFileLocation()).'/admin/lmt_search.tpl');
$template->assign('lmt_search_page', GPCRequestBuilder::displaySearchPage($this->getPluginName()));
$template->assign_var_from_handle('LMT_BODY_PAGE', 'body_page');
}
/*
*/
protected function display_manageaut_page()
{
global $template, $conf, $user;
if(!isset($_REQUEST['action']))
{
$_REQUEST['action']="list";
}
if(!isset($_REQUEST['id']))
{
$_REQUEST['id']="";
}
/* ------------------------------------------------------------------------
* Add an author
* ---------------------------------------------------------------------- */
if(isset($_POST['submit_add_author']))
{
if($_POST["text1"]!="")
{
$sql="INSERT INTO ".$this->tables["licence_author"]." VALUES('', '". htmlspecialchars($_POST["text1"], ENT_QUOTES)."', '".htmlspecialchars($_POST["text2"], ENT_QUOTES)."')";
$result=pwg_query($sql);
if($result)
{
$this->displayResult(l10n("lmt_author_added"), true);
$_REQUEST['action']="list";
}
else
{
$this->displayResult(l10n("lmt_cannot_add_author"), false);
}
}
else
{
$this->displayResult(l10n("lmt_no_text"), false);
}
}
/* ------------------------------------------------------------------------
* Modify an author
* ---------------------------------------------------------------------- */
if(isset($_POST['submit_modify_author']))
{
if($_POST["text1"]!="")
{
$sql="UPDATE ".$this->tables["licence_author"]."
SET text1 = '". htmlspecialchars($_POST["text1"], ENT_QUOTES)."',
text2 = '".htmlspecialchars($_POST["text2"], ENT_QUOTES)."'
WHERE id = '".$_POST["id"]."'";
$result=pwg_query($sql);
if($result)
{
$this->displayResult(l10n("lmt_author_modified"), true);
$_REQUEST['action']="list";
}
else
{
$this->displayResult(l10n("lmt_cannot_modify_author"), false);
}
}
else
{
$this->displayResult(l10n("lmt_no_text"), false);
}
}
/* ------------------------------------------------------------------------
* delete an author
* ---------------------------------------------------------------------- */
if($_REQUEST['action']=="delete")
{
$sql="DELETE FROM ".$this->tables['licence_author']." WHERE id = '".$_REQUEST['id']."'";
$result=pwg_query($sql);
if($result)
{
if(pwg_db_changes($result)==1)
{
$this->displayResult(l10n("lmt_author_deleted"), true);
$sql="UPDATE ".$this->tables["images"]." SET author_id = NULL
WHERE author_id = '".$_REQUEST['id']."'";
$result=pwg_query($sql);
if($result)
{
$nbimages=pwg_db_changes($result);
if($nbimages>0)
{
$this->displayResult($nbimages." ".l10n("lmt_author_nb_images_updated"), true);
}
}
else
{
$this->displayResult(l10n("lmt_cannot_delete_author"), false);
}
}
else
{
$this->displayResult(l10n("lmt_cannot_delete_author"), false);
}
}
else
{
$this->displayResult(l10n("lmt_cannot_delete_author"), false);
}
$this->display_manageaut_page_list();
}
elseif($_REQUEST['action']=="add")
{
$this->display_manageaut_page_add_modify("add");
}
elseif($_REQUEST['action']=="edit")
{
$this->display_manageaut_page_add_modify("edit");
}
else
{
// list
$this->display_manageaut_page_list();
}
} //display_manageaut
protected function display_manageaut_page_list()
{
global $template;
$template->set_filename('body_page',
dirname($this->getFileLocation()).'/admin/plugin_admin_manageaut.tpl');
$datas=array(
"author_list" => array(),
"img_directory" => LMT_PATH."img/",
"default_licencepublished" => $this->translateCopyright("lmt_lbl_under-".strToLower($this->config['lmt_licence_default'])),
"default_licenceL" => strToLower($this->config['lmt_licence_default']),
"default_licenceU" => $this->translateCopyright("lmt_lbl_cc_s-".strToLower($this->config['lmt_licence_default'])),
"lmt_licence_logo" => $this->config['lmt_licence_logo'],
"nbauthor" => 0,
"add_link" => $this->getAdminLink().'-manageaut&action=add'
);
$sql="SELECT * FROM ".$this->tables['licence_author']." ORDER BY id";
$result=pwg_query($sql);
if($result)
{
while($row=pwg_db_fetch_assoc($result))
{
$datas["author_list"][]=array(
"id" => $row['id'],
"text1" => $row['text1'],
"text2" => $row['text2'],
"lnk_delete" => $this->getAdminLink().'-manageaut&action=delete&id='.$row['id'],
"lnk_edit" => $this->getAdminLink().'-manageaut&action=edit&id='.$row['id']
);
}
$datas["nbauthor"] = count($datas["author_list"]);
}
$template->assign('datas', $datas);
//$template->assign('extended_code', $this->generate_js_licence_author());
$template->assign_var_from_handle('LMT_BODY_PAGE', 'body_page');
}
protected function display_manageaut_page_add_modify()
{
global $template;
$template->set_filename('body_page',
dirname($this->getFileLocation()).'/admin/plugin_admin_manageaut_edit.tpl');
if($_REQUEST["action"]=="edit")
{
$sql="SELECT * FROM ".$this->tables['licence_author']." WHERE id = '".$_REQUEST['id']."'";
$result = pwg_query($sql);
if($result)
{
while($row=pwg_db_fetch_assoc($result))
{
$datas=array(
"action" => "modify",
"id" => $_REQUEST['id'],
"text1" => $row["text1"],
"text2" => $row["text2"]
);
}
}
else
{
$datas=array(
"action" => "add",
"id" => "",
"text1" => "",
"text2" => "",
);
}
}
else
{
$datas=array(
"action" => "add",
"id" => "",
"text1" => "",
"text2" => "",
);
}
$datas["urllist"] = $this->getAdminLink().'-manageaut';
$template->assign('datas', $datas);
//$template->assign('extended_code', $this->generate_js_licence_author());
$template->assign_var_from_handle('LMT_BODY_PAGE', 'body_page');
}
/*
manage adviser profile
return true if user is adviser
*/
protected function adviser_abort()
{
if(is_adviser())
{
$this->displayResult(l10n("lmt_adviser_not_allowed"), false);
return(true);
}
return(false);
}
/*
this function return a js to manage licence text
*/
protected function generate_js_licence_author()
{
$local_tpl = new Template(LMT_PATH."admin/", "");
$local_tpl->set_filename('body_page',
dirname($this->getFileLocation()).'/admin/lmt_js.tpl');
$lmt_licence_default_values=array_slice(self::$licences,0,count(self::$licences)-1);
$datas['shortlicencetext']=array();
foreach($lmt_licence_default_values as $key=>$val)
{
$datas['shortlicencetext'][$val] = array(
"txt" => $this->translateCopyright("lmt_lbl_cc_s-".strtolower($val)),
"published" => $this->translateCopyright("lmt_lbl_under-".strtolower($val))
);
}
$local_tpl->assign("datas",$datas);
return($local_tpl->parse('body_page', true));
}
/* ---------------------------------------------------------------------------
function to manage database manipulation
--------------------------------------------------------------------------- */
} //class
?>