mirror of
https://github.com/e107inc/e107.git
synced 2025-01-18 05:09:05 +01:00
322 lines
10 KiB
PHP
322 lines
10 KiB
PHP
<?php
|
|
/*
|
|
+ ----------------------------------------------------------------------------+
|
|
| e107 website system
|
|
|
|
|
| ©Steve Dunstan 2001-2002
|
|
| http://e107.org
|
|
| jalist@e107.org
|
|
|
|
|
| Released under the terms and conditions of the
|
|
| GNU General Public License (http://gnu.org).
|
|
|
|
|
| $Source: /cvs_backup/e107_0.8/e107_handlers/userclass_class.php,v $
|
|
| $Revision: 1.4 $
|
|
| $Date: 2006-12-05 09:24:46 $
|
|
| $Author: mrpete $
|
|
+----------------------------------------------------------------------------+
|
|
*/
|
|
|
|
if (!defined('e107_INIT')) { exit; }
|
|
|
|
@include_once(e_LANGUAGEDIR.e_LANGUAGE."/lan_userclass.php");
|
|
@include_once(e_LANGUAGEDIR."English/lan_userclass.php");
|
|
|
|
/*
|
|
With $optlist you can now specify which classes are shown in the dropdown.
|
|
All or none can be included, separated by comma (or whatever).
|
|
Valid options are:
|
|
public
|
|
guest
|
|
nobody
|
|
member
|
|
readonly
|
|
admin
|
|
main - main admin
|
|
classes - shows all classes
|
|
matchclass - if 'classes' is set, this option will only show the classes that the user is a member of
|
|
language - list of languages.
|
|
|
|
*/
|
|
|
|
function r_userclass($fieldname, $curval = 0, $mode = "off", $optlist = "") {
|
|
global $pref;
|
|
|
|
$text = "<select class='tbox' name='{$fieldname}'>\n";
|
|
if (!$optlist || strpos($optlist, "public") !== FALSE) {
|
|
$s = ($curval == e_UC_PUBLIC) ? "selected='selected'" : "";
|
|
$text .= "<option value='".e_UC_PUBLIC."' ".$s.">".UC_LAN_0."</option>\n";
|
|
}
|
|
|
|
if (!$optlist || strpos($optlist, "guest") !== FALSE) {
|
|
$s = ($curval == e_UC_GUEST) ? "selected='selected'" : "";
|
|
$text .= "<option value='".e_UC_GUEST."' ".$s.">".UC_LAN_1."</option>\n";
|
|
}
|
|
if (!$optlist || strpos($optlist, "nobody") !== FALSE) {
|
|
$s = ($curval == e_UC_NOBODY) ? "selected='selected'" : "";
|
|
$text .= "<option value='".e_UC_NOBODY."' ".$s.">".UC_LAN_2."</option>\n";
|
|
}
|
|
if (!$optlist || strpos($optlist, "member") !== FALSE) {
|
|
$s = ($curval == e_UC_MEMBER) ? "selected='selected'" : "";
|
|
$text .= "<option value='".e_UC_MEMBER."' ".$s.">".UC_LAN_3."</option>\n";
|
|
}
|
|
if ($mode != "off" || strpos($optlist, "admin") !== FALSE)
|
|
{
|
|
$s = ($curval == e_UC_ADMIN) ? "selected='selected'" : "";
|
|
$text .= "<option value='".e_UC_ADMIN."' ".$s.">".UC_LAN_5."</option>\n";
|
|
}
|
|
if ($mode != "off" || strpos($optlist, "main") !== FALSE)
|
|
{
|
|
$s = ($curval == e_UC_MAINADMIN) ? "selected='selected'" : "";
|
|
$text .= "<option value='".e_UC_MAINADMIN."' ".$s.">".UC_LAN_6."</option>\n";
|
|
}
|
|
if (!$optlist || strpos($optlist, "classes") !== FALSE)
|
|
{
|
|
$classList = get_userclass_list();
|
|
foreach($classList as $row)
|
|
{
|
|
if (strpos($optlist, "matchclass") === FALSE || getperms("0") || check_class($userclass_id))
|
|
{
|
|
$s = ($row['userclass_id'] == $curval) ? "selected='selected'" : "";
|
|
$text .= "<option value='{$row['userclass_id']}' ".$s.">".$row['userclass_name'] ."</option>\n";
|
|
}
|
|
}
|
|
}
|
|
if (($mode != "off" && $mode != "admin") || strpos($optlist, "readonly") !== FALSE)
|
|
{
|
|
$s = ($curval == e_UC_READONLY) ? "selected='selected'" : "";
|
|
$text .= "<option value='".e_UC_READONLY."' ".$s.">".UC_LAN_4."</option>\n";
|
|
}
|
|
|
|
if (strpos($optlist, "language") !== FALSE && $pref['multilanguage']) {
|
|
$text .= "<option value=''> ------ </option>\n";
|
|
$tmpl = explode(",",e_LANLIST);
|
|
foreach($tmpl as $lang){
|
|
$s = ($curval == $lang) ? " selected='selected'" : "";
|
|
$text .= "<option value='$lang' ".$s.">".$lang."</option>\n";
|
|
}
|
|
}
|
|
|
|
|
|
$text .= "</select>\n";
|
|
return $text;
|
|
}
|
|
|
|
function r_userclass_radio($fieldname, $curval = '')
|
|
{
|
|
($curval == e_UC_PUBLIC) ? $c = " checked" : $c = "";
|
|
$text = "<input type='radio' name='{$fieldname}' value='".e_UC_PUBLIC."' ".$c." />".UC_LAN_0."<br />";
|
|
($curval == e_UC_NOBODY) ? $c = " checked" : $c = "";
|
|
$text .= "<input type='radio' name='{$fieldname}' value='".e_UC_NOBODY."' ".$c." />".UC_LAN_2."<br />";
|
|
($curval == e_UC_GUEST) ? $c = " checked" : $c = "";
|
|
$text .= "<input type='radio' name='{$fieldname}' value='".e_UC_GUEST."' ".$c." />".UC_LAN_1."<br />";
|
|
($curval == e_UC_MEMBER) ? $c = " checked" : $c = "";
|
|
$text .= "<input type='radio' name='{$fieldname}' value='".e_UC_MEMBER."' ".$c." />".UC_LAN_3."<br />";
|
|
$classList = get_userclass_list();
|
|
foreach($classList as $row)
|
|
{
|
|
($row['userclass_id'] == $curval) ? $c = " checked" : $c = "";
|
|
$text .= "<input type='radio' name='{$fieldname}' value='{$row['userclass_id']}' ".$c." />{$row['userclass_name']}<br />";
|
|
}
|
|
return $text;
|
|
}
|
|
|
|
function r_userclass_check($fieldname, $curval = '', $optlist = "", $divheight = 58)
|
|
{
|
|
global $pref;
|
|
$curArray = explode(",", $curval);
|
|
$ret = "";
|
|
if($divheight > 0)
|
|
{
|
|
$ret .= "<div class='tbox' style='margin-left:0px;margin-right:auto;width:60%;height:{$divheight}px;overflow:auto'>";
|
|
}
|
|
if (!$optlist || strpos($optlist, "public") !== FALSE)
|
|
{
|
|
$c = (in_array(e_UC_PUBLIC, $curArray)) ? " checked='checked' " : "";
|
|
$ret .= "<label><input type='checkbox' name='{$fieldname}[".e_UC_PUBLIC."]' value='1' {$c} /> ".UC_LAN_0."</label><br />";
|
|
}
|
|
|
|
if (!$optlist || strpos($optlist, "guest") !== FALSE)
|
|
{
|
|
$c = (in_array(e_UC_GUEST, $curArray)) ? " checked='checked' " : "";
|
|
$ret .= "<label><input type='checkbox' name='{$fieldname}[".e_UC_GUEST."]' value='1' {$c} /> ".UC_LAN_1."</label><br />";
|
|
}
|
|
|
|
if (!$optlist || strpos($optlist, "nobody") !== FALSE)
|
|
{
|
|
$c = (in_array(e_UC_NOBODY, $curArray)) ? " checked='checked' " : "";
|
|
$ret .= "<label><input type='checkbox' name='{$fieldname}[".e_UC_NOBODY."]' value='1' {$c} /> ".UC_LAN_2."</label><br />";
|
|
}
|
|
|
|
if (!$optlist || strpos($optlist, "member") !== FALSE)
|
|
{
|
|
$c = (in_array(e_UC_MEMBER, $curArray)) ? " checked='checked' " : "";
|
|
$ret .= "<label><input type='checkbox' name='{$fieldname}[".e_UC_MEMBER."]' value='1' {$c} /> ".UC_LAN_3."</label><br />";
|
|
}
|
|
|
|
if (!$optlist || strpos($optlist, "admin") !== FALSE)
|
|
{
|
|
$c = (in_array(e_UC_ADMIN, $curArray)) ? " checked='checked' " : "";
|
|
$ret .= "<label><input type='checkbox' name='{$fieldname}[".e_UC_ADMIN."]' value='1' {$c} /> ".UC_LAN_5."</label><br />";
|
|
}
|
|
|
|
if (!$optlist || strpos($optlist, "readonly") !== FALSE)
|
|
{
|
|
$c = (in_array(e_UC_READONLY, $curArray)) ? " checked='checked' " : "";
|
|
$ret .= "<label><input type='checkbox' name='{$fieldname}[".e_UC_READONLY."]' value='1' {$c} /> ".UC_LAN_4."</label><br />";
|
|
}
|
|
|
|
if (!$optlist || strpos($optlist, "classes") !== FALSE)
|
|
{
|
|
$classList = get_userclass_list();
|
|
foreach($classList as $row)
|
|
{
|
|
if (strpos($optlist, "matchclass") === FALSE || getperms("0") || check_class($row['userclass_id'])) {
|
|
$c = (in_array($row['userclass_id'], $curArray)) ? " checked='checked' " : "";
|
|
$ret .= "<label><input type='checkbox' name='{$fieldname}[{$row['userclass_id']}]' value='1' {$c} /> {$row['userclass_name']}</label><br />";
|
|
}
|
|
}
|
|
}
|
|
|
|
if (strpos($optlist, "language") !== FALSE && $pref['multilanguage']) {
|
|
$ret .= "<hr />\n";
|
|
$tmpl = explode(",",e_LANLIST);
|
|
foreach($tmpl as $lang){
|
|
$c = (in_array($lang, $curArray)) ? " checked='checked' " : "";
|
|
$ret .= "<label><input type='checkbox' name='{$fieldname}[{$lang}]' value='1' {$c} /> {$lang}</label><br />";
|
|
}
|
|
}
|
|
|
|
if($divheight > 0)
|
|
{
|
|
$ret .= "</div>";
|
|
}
|
|
return $ret;
|
|
}
|
|
|
|
function get_userclass_list()
|
|
{
|
|
if($classList = getcachedvars('uclass_list'))
|
|
{
|
|
return $classList;
|
|
}
|
|
else
|
|
{
|
|
global $sql;
|
|
$sql->db_Select('userclass_classes', "*", "ORDER BY userclass_name", "nowhere");
|
|
$classList = $sql->db_getList();
|
|
cachevars('uclass_list', $classList);
|
|
return $classList;
|
|
}
|
|
}
|
|
|
|
function r_userclass_name($id) {
|
|
$class_names = getcachedvars('userclass_names');
|
|
if(!is_array($class_names))
|
|
{
|
|
$sql = new db;
|
|
$class_names[e_UC_PUBLIC] = UC_LAN_0;
|
|
$class_names[e_UC_GUEST] = UC_LAN_1;
|
|
$class_names[e_UC_NOBODY] = UC_LAN_2;
|
|
$class_names[e_UC_MEMBER] = UC_LAN_3;
|
|
$class_names[e_UC_READONLY] = UC_LAN_4;
|
|
$class_names[e_UC_ADMIN] = UC_LAN_5;
|
|
if ($sql->db_Select("userclass_classes", "userclass_id, userclass_name", "ORDER BY userclass_name", "nowhere"))
|
|
{
|
|
while($row = $sql->db_Fetch())
|
|
{
|
|
$class_names[$row['userclass_id']] = $row['userclass_name'];
|
|
}
|
|
}
|
|
cachevars('userclass_names', $class_names);
|
|
}
|
|
return $class_names[$id];
|
|
}
|
|
|
|
class e_userclass {
|
|
function class_add($cid, $uinfoArray)
|
|
{
|
|
global $tp;
|
|
$sql2 = new db;
|
|
foreach($uinfoArray as $uid => $curclass)
|
|
{
|
|
if ($curclass)
|
|
{
|
|
$newarray = array_unique(array_merge(explode(',', $curclass), array($cid)));
|
|
$new_userclass = implode(',', $newarray);
|
|
}
|
|
else
|
|
{
|
|
$new_userclass = $cid;
|
|
}
|
|
$sql2->db_Update('user', "user_class='".$tp -> toDB($new_userclass, true)."' WHERE user_id=".intval($uid));
|
|
}
|
|
}
|
|
|
|
function class_remove($cid, $uinfoArray)
|
|
{
|
|
global $tp;
|
|
$sql2 = new db;
|
|
foreach($uinfoArray as $uid => $curclass)
|
|
{
|
|
$newarray = array_diff(explode(',', $curclass), array('', $cid));
|
|
if (count($newarray) > 1)
|
|
{
|
|
$new_userclass = implode(',', $newarray);
|
|
}
|
|
else
|
|
{
|
|
$new_userclass = $newarray[0];
|
|
}
|
|
$sql2->db_Update('user', "user_class='".$tp -> toDB($new_userclass, true)."' WHERE user_id=".intval($uid));
|
|
}
|
|
}
|
|
|
|
function class_create($ulist, $class_prefix = "NEW_CLASS_", $num = 0)
|
|
{
|
|
global $sql;
|
|
$varname = "uc_".$ulist;
|
|
if($ret = getcachedvars($varname))
|
|
{
|
|
return $ret;
|
|
}
|
|
$ul = explode(",", $ulist);
|
|
array_walk($ul, array($this, 'munge'));
|
|
$qry = "
|
|
SELECT user_id, user_class from #user AS u
|
|
WHERE user_name = ".implode(" OR user_name = ", $ul);
|
|
if($sql->db_Select_gen($qry))
|
|
{
|
|
while($row = $sql->db_Fetch())
|
|
{
|
|
$idList[$row['user_id']] = $row['user_class'];
|
|
|
|
}
|
|
while($sql->db_Count("userclass_classes","(*)","WHERE userclass_name = '".strtoupper($class_prefix.$num)."'"))
|
|
{
|
|
$num++;
|
|
}
|
|
$newname = strtoupper($class_prefix.$num);
|
|
$i = 1;
|
|
while ($sql->db_Select('userclass_classes', '*', "userclass_id='".intval($i)."' ") && $i < 255)
|
|
{
|
|
$i++;
|
|
}
|
|
if ($i < 255)
|
|
{
|
|
$sql->db_Insert("userclass_classes", "{$i}, '{$newname}', 'Auto_created_class', 254");
|
|
$this->class_add($i, $idList);
|
|
cachevars($varname, $i);
|
|
return $i;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
function munge(&$value, &$key)
|
|
{
|
|
$value = "'".trim($value)."'";
|
|
}
|
|
}
|
|
|
|
?>
|