ConLite/conlite/includes/include.frontend.group_edit...

301 Zeilen
10 KiB
PHP

<?php
/**
* Project:
* Contenido Content Management System
*
* Description:
* Frontend group editor
*
* Requirements:
* @con_php_req 5.0
*
*
* @package Contenido Backend includes
* @version 1.2.1
* @author unknown
* @copyright four for business AG <www.4fb.de>
* @license http://www.contenido.org/license/LIZENZ.txt
* @link http://www.4fb.de
* @link http://www.contenido.org
* @since file available since contenido release <= 4.6
*
* {@internal
* created unknown
* modified 2007-06-16, Holger Librenz, Hotfix: check for illegal calls added
* modified 2008-06-27, Frederic Schneider, add security fix
* modified 2010-05-20, Murat Purc, removed request check during processing ticket [#CON-307]
*
* $Id$:
* }}
*
*/
if (!defined('CON_FRAMEWORK')) {
die('Illegal call');
}
$page = new cPage;
$fegroups = new FrontendGroupCollection;
if (is_array($cfg['plugins']['frontendgroups']))
{
foreach ($cfg['plugins']['frontendgroups'] as $plugin)
{
plugin_include("frontendgroups", $plugin."/".$plugin.".php");
}
}
$fegroup = new FrontendGroup;
$groupmembers = new FrontendGroupMemberCollection;
$fegroup->loadByPrimaryKey($idfrontendgroup);
$sRefreshRightTopLinkJs = "";
if ($action == "frontendgroup_create" && $perm->have_perm_area_action($area, $action))
{
$fegroup = $fegroups->create(" ".i18n("-- new group --"));
$idfrontendgroup = $fegroup->get("idfrontendgroup");
$sRefreshRightTopLink = $sess->url('main.php?frame=3&area='.$area.'&idfrontendgroup='.$idfrontendgroup);
$sRefreshRightTopLink = "conMultiLink('right_top', '".$sRefreshRightTopLink."')";
$sRefreshRightTopLinkJs = "<script type=\"text/javascript\">".$sRefreshRightTopLink."</script>";
} else if ($action == "frontendgroups_user_delete" && $perm->have_perm_area_action($area, $action)) {
$aDeleteMembers = array();
if (!is_array($_POST['user_in_group'])) {
if ($_POST['user_in_group'] > 0) {
array_push($aDeleteMembers, $_POST['user_in_group']);
}
} else {
$aDeleteMembers = $_POST['user_in_group'];
}
foreach ($aDeleteMembers as $idfrontenduser) {
$groupmembers->remove($idfrontendgroup, $idfrontenduser);
}
# also save other variables
$action = "frontendgroup_save_group";
} else if ($action == "frontendgroup_user_add" && $perm->have_perm_area_action($area, $action)) {
if (count($newmember) > 0)
{
foreach ($newmember as $add)
{
$groupmembers->create($idfrontendgroup, $add);
}
}
# also save other variables
$action = "frontendgroup_save_group";
} else if ($action == "frontendgroup_delete" && $perm->have_perm_area_action($area, $action))
{
$fegroups->delete($idfrontendgroup);
$idfrontendgroup= 0;
$fegroup = new FrontendGroup;
}
if ($action != '') {
$sReloadScript = "<script type=\"text/javascript\">
var left_bottom = parent.parent.frames['left'].frames['left_bottom'];
if (left_bottom) {
var href = left_bottom.location.href;
href = href.replace(/&idfrontendgroup[^&]*/, '');
href = href.replace(/&action[^&]*/, '');
left_bottom.location.href = href+'&idfrontendgroup='+".$idfrontendgroup.";
top.content.left.left_top.refresh();
}
</script>";
} else {
$sReloadScript = '';
}
if ($fegroup->virgin == false && $fegroup->get("idclient") == $client)
{
if ($action == "frontendgroup_save_group" && $perm->have_perm_area_action($area, $action))
{
$messages = array();
if ($fegroup->get("groupname") != stripslashes($groupname))
{
$fegroups->select("groupname = '$groupname' and idclient='$client'");
if ($fegroups->next())
{
$messages[] = i18n("Could not set new group name: Group already exists");
} else {
$fegroup->set("groupname", stripslashes($groupname));
}
}
//Reset all default groups
if ($defaultgroup == 1) {
$sSql = 'UPDATE '.$cfg["tab"]["frontendgroups"].' SET defaultgroup = 0 WHERE idclient='.$client.';';
$db->query($sSql);
}
$fegroup->set("defaultgroup", $defaultgroup);
/* Check out if there are any plugins */
if (is_array($cfg['plugins']['frontendgroups']))
{
foreach ($cfg['plugins']['frontendgroups'] as $plugin)
{
if (function_exists("frontendgroups_".$plugin."_wantedVariables") &&
function_exists("frontendgroups_".$plugin."_store"))
{
$wantVariables = call_user_func("frontendgroups_".$plugin."_wantedVariables");
if (is_array($wantVariables))
{
$varArray = array();
foreach ($wantVariables as $value)
{
$varArray[$value] = stripslashes($GLOBALS[$value]);
}
}
$store = call_user_func("frontendgroups_".$plugin."_store", $varArray);
}
}
}
$fegroup->store();
}
if (is_array($messages) && count($messages) > 0)
{
$notis = $notification->returnNotification("warning", implode("<br>", $messages)) . "<br>";
}
$tpl->reset();
$feusers = new FrontendUserCollection;
$feusers->select("idclient='$client'");
$addedusers = $groupmembers->getUsersInGroup($idfrontendgroup,false);
$addeduserobjects = $groupmembers->getUsersInGroup($idfrontendgroup,true);
$cells = array();
foreach ($addeduserobjects as $addeduserobject)
{
if ((int)$addeduserobject->get("idfrontenduser") != 0 && $addeduserobject->get("username") != '') {
$cells[$addeduserobject->get("idfrontenduser")] = $addeduserobject->get("username");
}
}
asort($cells);
$sInGroupOptions = '';
foreach ($cells as $idfrontenduser => $name)
{
$sInGroupOptions .= '<option value="'.$idfrontenduser.'">'.$name.'</option>'."\n";
}
$tpl->set('s', 'IN_GROUP_OPTIONS', $sInGroupOptions);
$items = array();
while ($feuser = $feusers->next())
{
$idfrontenduser = $feuser->get("idfrontenduser");
$sUsername = $feuser->get("username");
if (!in_array($idfrontenduser,$addedusers))
{
if ((int) $idfrontenduser != 0 && $sUsername != '') {
$items[$idfrontenduser] = $sUsername;
}
}
}
asort($items);
$sNonGroupOptions = '';
foreach ($items as $idfrontenduser => $name)
{
$sNonGroupOptions .= '<option value="'.$idfrontenduser.'">'.$name.'</option>'."\n";
}
$tpl->set('s', 'NON_GROUP_OPTIONS', $sNonGroupOptions);
$groupname = new cHTMLTextbox("groupname", $fegroup->get("groupname"),40);
$defaultgroup = new cHTMLCheckbox("defaultgroup", "1");
$defaultgroup->setChecked($fegroup->get("defaultgroup"));
$tpl->set('d', 'BGCOLOR', $cfg["color"]["table_header"]);
$tpl->set('d', 'BORDERCOLOR', $cfg["color"]["table_border"]);
$tpl->set('d', 'LABEL', i18n("Group name"));
$tpl->set('d', 'INPUT', $groupname->render());
$tpl->next();
$tpl->set('d', 'BGCOLOR', $cfg["color"]["table_header"]);
$tpl->set('d', 'BORDERCOLOR', $cfg["color"]["table_border"]);
$tpl->set('d', 'LABEL', i18n("Default group"));
$tpl->set('d', 'INPUT', $defaultgroup->toHTML(false));
$tpl->next();
$pluginOrder = trim_array(explode(",",getSystemProperty("plugin", "frontendgroups-pluginorder")));
/* Check out if there are any plugins */
if (is_array($pluginOrder))
{
foreach ($pluginOrder as $plugin)
{
if (function_exists("frontendgroups_".$plugin."_getTitle") &&
function_exists("frontendgroups_".$plugin."_display"))
{
$plugTitle = call_user_func("frontendgroups_".$plugin."_getTitle");
$display = call_user_func("frontendgroups_".$plugin."_display", $fegroup);
if (is_array($plugTitle) && is_array($display))
{
foreach ($plugTitle as $key => $value)
{
$tpl->set('d', 'BGCOLOR', $cfg["color"]["table_header"]);
$tpl->set('d', 'BORDERCOLOR', $cfg["color"]["table_border"]);
$tpl->set('d', 'LABEL', $value);
$tpl->set('d', 'INPUT', $display[$key]);
$tpl->next();
}
} else {
if (is_array($plugTitle) || is_array($display))
{
$tpl->set('d', 'BGCOLOR', $cfg["color"]["table_header"]);
$tpl->set('d', 'BORDERCOLOR', $cfg["color"]["table_border"]);
$tpl->set('d', 'LABEL', "WARNING");
$tpl->set('d', 'INPUT', "The plugin $plugin delivered an array for the displayed titles, but did not return an array for the contents.");
$tpl->next();
} else {
$tpl->set('d', 'BGCOLOR', $cfg["color"]["table_header"]);
$tpl->set('d', 'BORDERCOLOR', $cfg["color"]["table_border"]);
$tpl->set('d', 'LABEL', $plugTitle);
$tpl->set('d', 'INPUT', $display);
$tpl->next();
}
}
}
}
}
$tpl->set('s', 'CATNAME', i18n("Edit group"));
$tpl->set('s', 'BGCOLOR', $cfg["color"]["table_header"]);
$tpl->set('s', 'BGCOLOR_CONTENT', $cfg["color"]["table_dark"]);
$tpl->set('s', 'BORDERCOLOR', $cfg["color"]["table_border"]);
$tpl->set('s', 'CATFIELD', "&nbsp;");
$tpl->set('s', 'FORM_ACTION', $sess->url('main.php'));
$tpl->set('s', 'AREA', $area);
$tpl->set('s', 'GROUPID', $idfrontendgroup);
$tpl->set('s', 'FRAME', $frame);
$tpl->set('s', 'IDLANG', $lang);
$tpl->set('s', 'STANDARD_ACTION', 'frontendgroup_save_group');
$tpl->set('s', 'ADD_ACTION', 'frontendgroup_user_add');
$tpl->set('s', 'DELETE_ACTION', 'frontendgroups_user_delete');
$tpl->set('s', 'DISPLAY_OK', 'block');
$tpl->set('s', 'IN_GROUP_VALUE', $_POST['filter_in']);
$tpl->set('s', 'NON_GROUP_VALUE', $_POST['filter_non']);
$tpl->set('s', 'RECORD_ID_NAME', 'idfrontendgroup');
$tpl->set('s', 'RELOADSCRIPT', $sReloadScript.$sRefreshRightTopLinkJs);
$tpl = $tpl->generate($cfg['path']['templates'] . $cfg['templates']['grouprights_memberselect']);
} else {
$page = new UI_Page;
$page->setContent("");
$page->addScript('reload', $sReloadScript);
$page->render();
}
?>