$value) {
if ($key != "searchEngine")
$settings[$key] = $value;
}
if (count($settings) > 0) {
saveSettings('tf_settings', $settings);
AuditAction($cfg["constants"]["admin"], "Updating Search Settings");
}
$searchEngine = tfb_getRequestVar('searchEngine');
if (empty($searchEngine))
$searchEngine = $cfg["searchEngine"];
@header("location: admin.php?op=searchSettings&searchEngine=".$searchEngine);
exit();
}
/**
* addLink
*/
function admin_addLink() {
global $cfg;
$newLink = tfb_getRequestVarRaw('newLink');
$newSite = tfb_getRequestVarRaw('newSite');
if (!empty($newLink)){
if (strpos($newLink, "http://" ) !== 0 && strpos($newLink, "https://" ) !== 0 && strpos($newLink, "ftp://" ) !== 0)
$newLink = "http://".$newLink;
empty($newSite) && $newSite = $newLink;
addNewLink($newLink, $newSite);
AuditAction($cfg["constants"]["admin"], "New ".$cfg['_LINKS_MENU'].": ".addslashes($newSite)." [".addslashes($newLink)."]");
}
@header("location: admin.php?op=editLinks");
exit();
}
/**
* editLink
*/
function admin_editLink() {
global $cfg;
$lid = tfb_getRequestVar('lid');
$newLink = tfb_getRequestVarRaw('editLink');
$newSite = tfb_getRequestVarRaw('editSite');
if (!empty($newLink)){
if(strpos($newLink, "http://" ) !== 0 && strpos($newLink, "https://" ) !== 0 && strpos($newLink, "ftp://" ) !== 0)
$newLink = "http://".$newLink;
empty($newSite) && $newSite = $newLink;
$oldLink = getLink($lid);
$oldSite = getSite($lid);
alterLink($lid, $newLink, $newSite);
AuditAction($cfg["constants"]["admin"], "Change Link: ".addslashes($oldSite)." [".addslashes($oldLink)."] -> ".addslashes($newSite)." [".addslashes($newLink)."]");
}
@header("location: admin.php?op=editLinks");
exit();
}
/**
* moveLink
*/
function admin_moveLink() {
global $db;
$lid = tfb_getRequestVar('lid');
$direction = tfb_getRequestVar('direction');
if (!isset($lid) && !isset($direction) && $direction !== "up" && $direction !== "down") {
@header("location: admin.php?op=editLinks");
exit();
}
$idx = getLinkSortOrder($lid);
$position = array("up"=>-1, "down"=>1);
$new_idx = $idx + $position[$direction];
$sql = "UPDATE tf_links SET sort_order = ".$db->qstr($idx)." WHERE sort_order = ".$db->qstr($new_idx);
$db->Execute($sql);
if ($db->ErrorNo() != 0) dbError($sql);
$sql = "UPDATE tf_links SET sort_order = ".$db->qstr($new_idx)." WHERE lid = ".$db->qstr($lid);
$db->Execute($sql);
if ($db->ErrorNo() != 0) dbError($sql);
// flush session-cache
cacheFlush();
@header("Location: admin.php?op=editLinks");
exit();
}
/**
* deleteLink
*/
function admin_deleteLink() {
global $cfg;
$lid = tfb_getRequestVar('lid');
AuditAction($cfg["constants"]["admin"], $cfg['_DELETE']." Link: ".getSite($lid)." [".getLink($lid)."]");
deleteOldLink($lid);
// flush session-cache
cacheFlush();
@header("location: admin.php?op=editLinks");
exit();
}
/**
* addRSS
*/
function admin_addRSS() {
global $cfg;
$newRSS = tfb_getRequestVarRaw('newRSS');
if(!empty($newRSS)){
addNewRSS($newRSS);
AuditAction($cfg["constants"]["admin"], "New RSS: ".addslashes($newRSS));
}
@header("location: admin.php?op=editRSS");
exit();
}
/**
* deleteRSS
*/
function admin_deleteRSS() {
global $cfg;
$rid = tfb_getRequestVar('rid');
AuditAction($cfg["constants"]["admin"], $cfg['_DELETE']." RSS: ".getRSS($rid));
deleteOldRSS($rid);
@header("location: admin.php?op=editRSS");
exit();
}
/**
* deleteUser
*/
function admin_deleteUser() {
global $cfg;
$user_id = tfb_getRequestVar('user_id');
if (!IsSuperAdmin($user_id)) {
DeleteThisUser($user_id);
AuditAction($cfg["constants"]["admin"], $cfg['_DELETE']." ".$cfg['_USER'].": ".$user_id);
}
@header("location: admin.php");
exit();
}
/**
* setUserState
*/
function admin_setUserState() {
setUserState();
@header("location: admin.php?op=showUsers");
exit();
}
/**
* admin menu
*/
function tmplSetAdminMenu() {
global $cfg, $tmpl;
$tmpl->setvar('_SETTINGS_MENU', $cfg['_SETTINGS_MENU']);
$tmpl->setvar('_FLUXD_MENU', $cfg['_FLUXD_MENU']);
$tmpl->setvar('_SEARCHSETTINGS_MENU', $cfg['_SEARCHSETTINGS_MENU']);
$tmpl->setvar('_LINKS_MENU', $cfg['_LINKS_MENU']);
$tmpl->setvar('_ACTIVITY_MENU', $cfg['_ACTIVITY_MENU']);
$tmpl->setvar('table_admin_border', $cfg["table_admin_border"]);
// superadmin
if (IsSuperAdmin()) {
$tmpl->setvar('is_superadmin', 1);
$tmpl->setvar('adminmenu_superAdminLink', getSuperAdminLink('','superadmin'));
}
}
/**
* get Activity
*
* @param $min
* @param $user
* @param $srchFile
* @param $srchAction
*/
function tmplSetActivity($min = 0, $user = "", $srchFile = "", $srchAction = "") {
global $cfg, $db, $tmpl;
$sqlForSearch = "";
$userdisplay = $user;
if ($user != "")
$sqlForSearch .= "user_id=".$db->qstr($user)." AND ";
else
$userdisplay = $cfg['_ALLUSERS'];
if ($srchFile != "")
$sqlForSearch .= "file like ".$db->qstr("%".$srchFile."%")." AND ";
if ($srchAction != "")
$sqlForSearch .= "action like ".$db->qstr("%".$srchAction."%")." AND ";
$offset = 50;
$inx = 0;
if (!isset($min))
$min=0;
$max = $min + $offset;
$sql = "SELECT user_id, file, action, ip, ip_resolved, user_agent, time FROM tf_log WHERE ".$sqlForSearch."action!=".$db->qstr($cfg["constants"]["hit"])." ORDER BY time desc";
$result = $db->SelectLimit($sql, $offset, $min);
if ($db->ErrorNo() != 0) dbError($sql);
$act_list = array();
while (list($user_id, $file, $action, $ip, $ip_resolved, $user_agent, $time) = $result->FetchRow()) {
$user_icon = (IsOnline($user_id))
? "themes/".$cfg['theme']."/images/user.gif"
: "themes/".$cfg['theme']."/images/user_offline.gif";
$is_superuser = (IsUser($user_id)) ? 1 : 0;
array_push($act_list, array(
'is_superuser' => $is_superuser,
'user_id' => $user_id,
'user_icon' => $user_icon,
'action' => htmlentities($action, ENT_QUOTES),
'file' => htmlentities($file, ENT_QUOTES),
'ip_resolved' => htmlentities($ip_resolved, ENT_QUOTES),
'user_agent' => htmlentities($user_agent, ENT_QUOTES),
'ip' => htmlentities($ip, ENT_QUOTES),
'date' => date($cfg['_DATETIMEFORMAT'], $time)
)
);
$inx++;
}
$prev = ($min - $offset);
$selected = "";
$action_list = array();
foreach ($cfg["constants"] as $action) {
if ($action != $cfg["constants"]["hit"]) {
array_push($action_list, array(
'action' => htmlentities($action, ENT_QUOTES),
'selected' => ($srchAction == $action) ? "selected" : ""
)
);
}
}
$user_list = array();
$selected = "";
for ($inx2 = 0; $inx2 < sizeof($cfg['users']); $inx2++) {
array_push($user_list, array(
'user' => htmlentities($cfg['users'][$inx2], ENT_QUOTES),
'selected' => ($user == $cfg['users'][$inx2]) ? "selected" : ""
)
);
}
// set vars
$tmpl->setvar('_USER', $cfg['_USER']);
$tmpl->setvar('_ACTION', $cfg['_ACTION']);
$tmpl->setvar('_FILE', $cfg['_FILE']);
$tmpl->setvar('_IP', $cfg['_IP']);
$tmpl->setvar('_TIMESTAMP', $cfg['_TIMESTAMP']);
$tmpl->setvar('_NORECORDSFOUND', $cfg['_NORECORDSFOUND']);
$tmpl->setvar('_SENDMESSAGETO', $cfg['_SENDMESSAGETO']);
$tmpl->setvar('_ACTIVITYSEARCH', $cfg['_ACTIVITYSEARCH']);
$tmpl->setvar('_FILE', $cfg['_FILE']);
$tmpl->setvar('_SHOWPREVIOUS', $cfg['_SHOWPREVIOUS']);
$tmpl->setvar('_SHOWMORE', $cfg['_SHOWMORE']);
$tmpl->setvar('_ALL', $cfg['_ALL']);
$tmpl->setvar('_DAYS', $cfg['_DAYS']);
$tmpl->setvar('_SEARCH', $cfg['_SEARCH']);
$tmpl->setvar('_ACTIVITYLOG', $cfg['_ACTIVITYLOG']);
$tmpl->setvar('table_admin_border', $cfg["table_admin_border"]);
$tmpl->setloop('activity_act_list', $act_list);
$tmpl->setloop('activity_action_list', $action_list);
$tmpl->setloop('activity_user_list', $user_list);
$tmpl->setvar('activity_srchFile', $srchFile);
$tmpl->setvar('activity_srchAction', $srchAction);
$tmpl->setvar('activity_prev', $prev);
$tmpl->setvar('activity_user', $user);
$tmpl->setvar('activity_min', $min);
$tmpl->setvar('activity_max', $max);
$tmpl->setvar('activity_days_to_keep', $cfg["days_to_keep"]);
$tmpl->setvar('activity_userdisplay', $userdisplay);
if ($prev >= 0)
$tmpl->setvar('activity_is_prev', 1);
if ($inx>=$offset)
$tmpl->setvar('activity_is_more', 1);
if ($prev >= 0 || $inx>=$offset)
$tmpl->setvar('activity_both_set', 1);
}
/**
* sets vars for the user section
*/
function tmplSetUserSection() {
global $cfg, $db, $tmpl;
// xfer-prepare
$tmpl->setvar('enable_xfer', $cfg["enable_xfer"]);
if ($cfg['enable_xfer'] == 1) {
$tmpl->setvar('userSection_colspan', 8);
// getTransferListArray to update xfer-stats
// xfer-init
if ($cfg['xfer_realtime'] == 0) {
$cfg['xfer_realtime'] = 1;
// set xfer-newday
Xfer::setNewday();
}
@getTransferListArray();
} else {
$tmpl->setvar('userSection_colspan', 7);
}
// activity-prepare
$total_activity = GetActivityCount();
$sql = "SELECT user_id, hits, last_visit, time_created, user_level, state FROM tf_users ORDER BY user_id";
$result = $db->Execute($sql);
if ($db->ErrorNo() != 0) dbError($sql);
// user-details
$user_details_list = array();
while (list($user_id, $hits, $last_visit, $time_created, $user_level, $user_state) = $result->FetchRow()) {
// disk-usage
$disk_usage = "0";
$tDir = $cfg["path"].$user_id."/";
if (is_dir($tDir)) {
switch ($cfg["_OS"]) {
case 1: //Linux
$dudir = shell_exec($cfg['bin_du']." -sk -h -D ".tfb_shellencode($tDir));
break;
case 2: //BSD
$dudir = shell_exec($cfg['bin_du']." -sk -h -L ".tfb_shellencode($tDir));
break;
}
$dusize = explode("\t", $dudir);
$disk_usage = array_shift($dusize);
}
// xfer-usage
$xfer_usage = ($cfg['enable_xfer'] == 1)
? Xfer::getUsage($user_id)
: 0;
// activity
$user_activity = GetActivityCount($user_id);
$user_percent = ($user_activity == 0)
? 0
: number_format(($user_activity / $total_activity) * 100);
// online
$user_icon = "themes/".$cfg['theme']."/images/user_offline.gif";
if (IsOnline($user_id))
$user_icon = "themes/".$cfg['theme']."/images/user.gif";
// level
$user_image = "themes/".$cfg['theme']."/images/user.gif";
$type_user = $cfg['_NORMALUSER'];
if ($user_level == 1) {
$user_image = "themes/".$cfg['theme']."/images/admin_user.gif";
$type_user = $cfg['_ADMINISTRATOR'];
}
if ($user_level == 2) {
$user_image = "themes/".$cfg['theme']."/images/superadmin.gif";
$type_user = $cfg['_SUPERADMIN'];
}
$is_superadmin = ($user_level <= 1 || IsSuperAdmin()) ? 1 : 0;
// add to list
array_push($user_details_list, array(
'is_user' => IsUser($user_id),
'user_id' => $user_id,
'user_icon' => $user_icon,
'hits' => $hits,
'disk_usage' => $disk_usage,
'xfer_usage' => $xfer_usage,
'user_percent' => $user_percent,
'user_percent2' => $user_percent*2,
'user_percent3' => (200 - ($user_percent*2)),
'time_created' => date($cfg['_DATEFORMAT'], $time_created),
'last_visit' => date($cfg['_DATETIMEFORMAT'], $last_visit),
'user_image' => $user_image,
'type_user' => $type_user,
'user_level' => $user_level,
'user_state' => $user_state,
'is_superadmin' => $is_superadmin
)
);
}
// set vars
$tmpl->setvar('_USERDETAILS', $cfg['_USERDETAILS']);
$tmpl->setvar('_USER', $cfg['_USER']);
$tmpl->setvar('_HITS', $cfg['_HITS']);
$tmpl->setvar('_UPLOADACTIVITY', $cfg['_UPLOADACTIVITY']);
$tmpl->setvar('_JOINED', $cfg['_JOINED']);
$tmpl->setvar('_LASTVISIT', $cfg['_LASTVISIT']);
$tmpl->setvar('_ADMIN', $cfg['_ADMIN']);
$tmpl->setvar('_DAYS', $cfg['_DAYS']);
$tmpl->setvar('_SENDMESSAGETO', $cfg['_SENDMESSAGETO']);
$tmpl->setvar('_WARNING', $cfg['_WARNING']);
$tmpl->setvar('_ABOUTTODELETE', $cfg['_ABOUTTODELETE']);
$tmpl->setvar('_USERSACTIVITY', $cfg['_USERSACTIVITY']);
$tmpl->setvar('_EDIT', $cfg['_EDIT']);
$tmpl->setvar('_DELETE', $cfg['_DELETE']);
$tmpl->setvar('table_admin_border', $cfg["table_admin_border"]);
$tmpl->setvar('days_to_keep', $cfg["days_to_keep"]);
$tmpl->setloop('user_details_list', $user_details_list);
}
/**
* shell_exec php binary with given command-line,
* taking necessary precautions in case binary
* it is not really a php-cli
*
* @param $php string
* @param $args string
* @return string
*/
function safePhpCli($php, $args) {
# Need to be careful in order to avoid problems with cgi-fcgi SAPI php's:
# - they detect whether they are in fcgi mode by testing whether their stdin is
# a socket -- so if this code is run by a fcgi php (whose stdin is a socket),
# child will inherit the same stdin and thus believe it is invoked in fcgi mode
# => '< /dev/null'
# - they detect whether they are in cgi mode by testing the presence of environment
# variables -- so if this code is run by a cgi php (with those env. vars set),
# child will inherit those and thus believe it is invoked in cgi mode
# => 'unset ...'
$cmd = 'unset SERVER_SOFTWARE SERVER_NAME GATEWAY_INTERFACE REQUEST_METHOD ; ';
$cmd .= $php . ' ' . $args . ' < /dev/null';
return shell_exec($cmd);
}
/**
* Returns the status image after a validation
*
* @param $ok bool
* @param $msg string
* @return string
*/
function validationMsg($ok, $msg = null) {
global $cfg;
return
'
'.
(empty($msg) ? '' : ('
'.$msg.''));
}
/**
* Validates the existence of a file and returns the status image
*
* @param $the_file
* @return string
*/
function validateFile($the_file) {
if (!isFile($the_file))
return validationMsg(false, 'Path is not valid');
return validationMsg(true);
}
/**
* Validates existence + exec of a file and returns the status image
*
* @param $the_file
* @return string
*/
function validateBinary($the_file) {
if (!isFile($the_file))
return validationMsg(false, 'Path is not valid');
if (!is_executable($the_file))
return validationMsg(false, 'File exists but is not executable');
return validationMsg(true);
}
/**
* Validates existence + exec + valid version of PHP-cli and returns the status image
*
* @param $the_file
* @return string
*/
function validatePhpCli($the_file) {
if (!isFile($the_file))
return validationMsg(false, 'Path is not valid');
if (!is_executable($the_file))
return validationMsg(false, 'File exists but is not executable');
$phpVersion = safePhpCli($the_file, '-v');
if ((strpos($phpVersion, 'PHP')) === false || (strpos($phpVersion, '(cli)')) === false)
return validationMsg(false, 'Executable is not PHP-CLI');
return validationMsg(true);
}
/**
* Validates existence + exec + valid version of transmissioncli and returns the status image
*
* @param $the_file
* @return string
*/
function validateTransmissionCli($the_file) {
global $cfg;
if (!isFile($the_file))
return validationMsg(false, 'Path is not valid');
if (!is_executable($the_file))
return validationMsg(false, 'File exists but is not executable');
$transmissionHelp = strtolower(shell_exec("HOME=".tfb_shellencode($cfg["path"])."; export HOME; ".$the_file.' --help'));
return (
strpos($transmissionHelp, 'transmission') === false ||
((strpos($transmissionHelp, 'tfcli') === false) &&
(strpos($transmissionHelp, 'torrentflux') === false))
)
? validationMsg(false, 'Executable is not TorrentFlux-bundled transmissioncli')
: validationMsg(true);
}
/**
* setUserState
*/
function setUserState() {
global $cfg, $db;
$user_id = tfb_getRequestVar('user_id');
$user_state = tfb_getRequestVar('state');
// check params
if (!(isset($user_id)) && (isset($user_state)))
return false;
// sanity-check, don't allow setting state of superadmin to 0
if (($user_state == 0) && (IsSuperAdmin($user_id))) {
AuditAction($cfg["constants"]["error"], "Invalid try to deactivate superadmin account.");
return false;
}
// set new state
$sql = "SELECT * FROM tf_users WHERE user_id = ".$db->qstr($user_id);
$rs = $db->Execute($sql);
if ($db->ErrorNo() != 0) dbError($sql);
$rec = array('state'=>$user_state);
$sql = $db->GetUpdateSQL($rs, $rec);
$result = $db->Execute($sql);
if ($db->ErrorNo() != 0) dbError($sql);
switch ($user_state) {
case 0:
AuditAction($cfg["constants"]["admin"], "User ".$user_id." deactivated.");
break;
case 1:
AuditAction($cfg["constants"]["admin"], "User ".$user_id." activated.");
break;
}
return true;
}
/**
* Add New Link
*
* @param $newLink
* @param $newSite
*/
function addNewLink($newLink,$newSite) {
global $db;
//$rec = array('url'=>$newLink);
// Link sort order index:
$idx = -1;
// Get current highest link index:
$sql = "SELECT sort_order FROM tf_links ORDER BY sort_order DESC";
$result = $db->SelectLimit($sql, 1);
if ($db->ErrorNo() != 0) dbError($sql);
$idx = ($result->fields === false)
? 0 /* No links currently in db */
: $result->fields["sort_order"] + 1;
$rec = array(
'url' => $newLink,
'sitename' => $newSite,
'sort_order' => $idx
);
$sTable = 'tf_links';
$sql = $db->GetInsertSql($sTable, $rec);
$db->Execute($sql);
if ($db->ErrorNo() != 0) dbError($sql);
// flush session-cache
cacheFlush();
}
/**
* This function updates the database and alters the selected links values
*
* @param $lid
* @param $newLink
* @param $newSite
*/
function alterLink($lid,$newLink,$newSite) {
global $cfg, $db;
$sql = "UPDATE tf_links SET url=".$db->qstr($newLink).",sitename=".$db->qstr($newSite)." WHERE lid = ".$db->qstr($lid);
$db->Execute($sql);
if ($db->ErrorNo() != 0) dbError($sql);
// flush session-cache
cacheFlush();
}
/**
* get link
*
* @param $lid
* @return string
*/
function getLink($lid) {
global $cfg, $db;
$rtnValue = "";
$sql = "SELECT url FROM tf_links WHERE lid=".$db->qstr($lid);
$rtnValue = $db->GetOne($sql);
return $rtnValue;
}
/**
* Delete Link
*
* @param $lid
*/
function deleteOldLink($lid) {
global $db;
// Link Mod
//$sql = "delete from tf_links where lid=".$lid;
// Get Current sort order index of link with this link id:
$idx = getLinkSortOrder($lid);
// Fetch all link ids and their sort orders where the sort order is greater
// than the one we're removing - we need to shuffle each sort order down
// one:
$sql = "SELECT sort_order, lid FROM tf_links ";
$sql .= "WHERE sort_order > ".$db->qstr($idx)." ORDER BY sort_order ASC";
$result = $db->Execute($sql);
if ($db->ErrorNo() != 0) dbError($sql);
$arLinks = $result->GetAssoc();
// Decrement the sort order of each link:
foreach ($arLinks as $sid=>$this_lid) {
$sql = "UPDATE tf_links SET sort_order=sort_order-1 WHERE lid=".$db->qstr($this_lid);
$db->Execute($sql);
if ($db->ErrorNo() != 0) dbError($sql);
}
// Finally delete the link:
$sql = "DELETE FROM tf_links WHERE lid=".$db->qstr($lid);
$result = $db->Execute($sql);
if ($db->ErrorNo() != 0) dbError($sql);
// flush session-cache
cacheFlush();
}
/**
* get Link Sort Order
*
* @param $lid
* @return string
*/
function getLinkSortOrder($lid) {
global $db;
// Get Current sort order index of link with this link id:
$sql="SELECT sort_order FROM tf_links WHERE lid=".$db->qstr($lid);
$rtnValue=$db->GetOne($sql);
if ($db->ErrorNo() != 0) dbError($sql);
return $rtnValue;
}
/**
* get Site
*
* @param $lid
* @return string
*/
function getSite($lid) {
global $cfg, $db;
$rtnValue = "";
$sql = "SELECT sitename FROM tf_links WHERE lid=".$db->qstr($lid);
$rtnValue = $db->GetOne($sql);
return $rtnValue;
}
/**
* Add New RSS Link
*
* @param $newRSS
*/
function addNewRSS($newRSS) {
global $db;
$rec = array('url'=>$newRSS);
$sTable = 'tf_rss';
$sql = $db->GetInsertSql($sTable, $rec);
$db->Execute($sql);
if ($db->ErrorNo() != 0) dbError($sql);
}
/**
* Delete RSS
*
* @param $rid
*/
function deleteOldRSS($rid) {
global $db;
$sql = "delete from tf_rss where rid=".$db->qstr($rid);
$result = $db->Execute($sql);
if ($db->ErrorNo() != 0) dbError($sql);
}
/**
* get RSS
*
* @param $rid
* @return string
*/
function getRSS($rid) {
global $cfg, $db;
$rtnValue = "";
$sql = "SELECT url FROM tf_rss WHERE rid=".$db->qstr($rid);
$rtnValue = $db->GetOne($sql);
return $rtnValue;
}
/**
* Delete User
*
* @param $user_id
*/
function DeleteThisUser($user_id) {
global $db;
$sql = "SELECT uid FROM tf_users WHERE user_id = ".$db->qstr($user_id);
$uid = $db->GetOne( $sql );
if ($db->ErrorNo() != 0) dbError($sql);
// delete any cookies this user may have had
//$sql = "DELETE tf_cookies FROM tf_cookies, tf_users WHERE (tf_users.uid = tf_cookies.uid) AND tf_users.user_id=".$db->qstr($user_id);
$sql = "DELETE FROM tf_cookies WHERE uid=".$db->qstr($uid);
$result = $db->Execute($sql);
if ($db->ErrorNo() != 0) dbError($sql);
// Now cleanup any message this person may have had
$sql = "DELETE FROM tf_messages WHERE to_user=".$db->qstr($user_id);
$result = $db->Execute($sql);
if ($db->ErrorNo() != 0) dbError($sql);
// now delete the user from the table
$sql = "DELETE FROM tf_users WHERE user_id=".$db->qstr($user_id);
$result = $db->Execute($sql);
if ($db->ErrorNo() != 0) dbError($sql);
// flush session-cache
cacheFlush();
}
/**
* Update User -- used by admin
*
* @param $user_id
* @param $org_user_id
* @param $pass1
* @param $userType
* @param $hideOffline
*/
function updateThisUser($user_id, $org_user_id, $pass1, $userType, $hideOffline) {
global $db;
$user_id = strtolower($user_id);
if ($hideOffline == "")
$hideOffline = 0;
$sql = "select * from tf_users where user_id = ".$db->qstr($org_user_id);
$rs = $db->Execute($sql);
if ($db->ErrorNo() != 0) dbError($sql);
$rec = array();
$rec['user_id'] = $user_id;
$rec['user_level'] = $userType;
$rec['hide_offline'] = $hideOffline;
if ($pass1 != "")
$rec['password'] = md5($pass1);
$sql = $db->GetUpdateSQL($rs, $rec);
if ($sql != "") {
$result = $db->Execute($sql);
if ($db->ErrorNo() != 0) dbError($sql);
}
// if the original user id and the new id do not match, we need to update messages and log
if ($user_id != $org_user_id) {
$sql = "UPDATE tf_messages SET to_user=".$db->qstr($user_id)." WHERE to_user=".$db->qstr($org_user_id);
$result = $db->Execute($sql);
if ($db->ErrorNo() != 0) dbError($sql);
$sql = "UPDATE tf_messages SET from_user=".$db->qstr($user_id)." WHERE from_user=".$db->qstr($org_user_id);
$result = $db->Execute($sql);
if ($db->ErrorNo() != 0) dbError($sql);
$sql = "UPDATE tf_log SET user_id=".$db->qstr($user_id)." WHERE user_id=".$db->qstr($org_user_id);
$result = $db->Execute($sql);
if ($db->ErrorNo() != 0) dbError($sql);
// flush session-cache
cacheFlush();
}
}
/**
* Change User Level
*
* @param $user_id
* @param $level
*/
function changeUserLevel($user_id, $level) {
global $db;
$sql = "select * from tf_users where user_id = ".$db->qstr($user_id);
$rs = $db->Execute($sql);
if ($db->ErrorNo() != 0) dbError($sql);
$rec = array('user_level'=>$level);
$sql = $db->GetUpdateSQL($rs, $rec);
$result = $db->Execute($sql);
if ($db->ErrorNo() != 0) dbError($sql);
}
/**
* sets webapp-lock
*
* @param $lock 1|0
* @return true or function exits with error
*/
function setWebappLock($lock) {
global $db;
$db->Execute("UPDATE tf_settings SET tf_value = ".$db->qstr($lock)." WHERE tf_key = 'webapp_locked'");
// flush session-cache
cacheFlush();
// return
return ($db->ErrorNo() == 0)
? true
: $db->ErrorMsg();
}
/**
* reset transfer-Totals
*
* @return true or function exits with error
*/
function resetAllTransferTotals() {
global $db;
$db->Execute("DELETE FROM tf_transfer_totals");
// set transfers-cache
cacheTransfersSet();
return ($db->ErrorNo() == 0)
? true
: $db->ErrorMsg();
}
?>