function saction_SetUserStatus() { global $dbHolidays, $dbUsers, $CONFIG, $crlf; // Find users with holidays today who don't have correct status $success = TRUE; $startdate = mktime(0, 0, 0, date('m'), date('d'), date('Y')); $enddate = mktime(23, 59, 59, date('m'), date('d'), date('Y')); $sql = "SELECT * FROM `{$dbHolidays}` "; $sql .= "WHERE `date` >= FROM_UNIXTIME({$startdate}) AND `date` < "; $sql .= "FROM_UNIXTIME({$enddate}) AND (type >='" . HOL_HOLIDAY . "' AND type <= " . HOL_FREE . ") "; $sql .= "AND (approved=" . HOL_APPROVAL_GRANTED . " OR approved=" . HOL_APPROVAL_DENIED; $sql .= " OR approved=" . HOL_APPROVAL_GRANTED_ARCHIVED; $sql .= " OR approved=" . HOL_APPROVAL_DENIED_ARCHIVED . ")"; $result = mysql_query($sql); if (mysql_error()) { $success = FALSE; trigger_error(mysql_error(), E_USER_WARNING); } while ($huser = mysql_fetch_object($result)) { if ($huser->length == 'day' or $huser->length == 'am' and date('H') < 12 or $huser->length == 'pm' and date('H') > 12) { $currentstatus = user_status($huser->userid); $newstatus = $currentstatus; // Only enabled users if ($currentstatus > 0) { if ($huser->type == HOL_HOLIDAY and $currentstatus != USERSTATUS_ON_HOLIDAY) { $newstatus = USERSTATUS_ON_HOLIDAY; } if ($huser->type == HOL_SICKNESS and $currentstatus != USERSTATUS_ABSENT_SICK) { $newstatus = USERSTATUS_ABSENT_SICK; } if ($huser->type == HOL_WORKING_AWAY and ($currentstatus != USERSTATUS_WORKING_FROM_HOME and $currentstatus != USERSTATUS_WORKING_AWAY)) { $newstatus = USERSTATUS_WORKING_AWAY; } if ($huser->type == HOL_TRAINING and $currentstatus != USERSTATUS_ON_TRAINING_COURSE) { $newstatus = USERSTATUS_ON_TRAINING_COURSE; } if ($huser->type == HOL_FREE and ($currentstatus != USERSTATUS_NOT_IN_OFFICE and $currentstatus != USERSTATUS_ABSENT_SICK)) { $newstatus = USERSTATUS_ABSENT_SICK; } // Compassionate } if ($newstatus != $currentstatus) { $accepting = ''; switch ($newstatus) { case USERSTATUS_IN_OFFICE: $accepting = 'Yes'; break; case USERSTATUS_NOT_IN_OFFICE: $accepting = 'No'; break; case USERSTATUS_IN_MEETING: // don't change $accepting = ''; break; case USERSTATUS_AT_LUNCH: $accepting = ''; break; case USERSTATUS_ON_HOLIDAY: $accepting = 'No'; break; case USERSTATUS_WORKING_FROM_HOME: $accepting = 'Yes'; break; case USERSTATUS_ON_TRAINING_COURSE: $accepting = 'No'; break; case USERSTATUS_ABSENT_SICK: $accepting = ' No'; break; case USERSTATUS_WORKING_AWAY: // don't change $accepting = ''; break; default: $accepting = ''; } $usql = "UPDATE `{$dbUsers}` SET status='{$newstatus}'"; if ($accepting != '') { $usql .= ", accepting='{$accepting}'"; } $usql .= " WHERE id='{$huser->userid}' LIMIT 1"; if ($accepting == 'No') { incident_backup_switchover($huser->userid, 'no'); } if ($CONFIG['debug']) { //debug_log(user_realname($huser->userid).': '.userstatus_name($currentstatus).' -> '.userstatus_name($newstatus)); //debug_log($usql); } mysql_query($usql); if (mysql_error()) { $success = FALSE; trigger_error(mysql_error(), E_USER_WARNING); } } } } // Find users who are set away but have no entry in the holiday calendar $sql = "SELECT * FROM `{$dbUsers}` WHERE status=" . USERSTATUS_ON_HOLIDAY . " OR "; $sql .= "status=" . USERSTATUS_ON_TRAINING_COURSE . " OR "; $sql .= "status=" . USERSTATUS_ABSENT_SICK . " OR status=" . USERSTATUS_WORKING_AWAY . " "; $result = mysql_query($sql); if (mysql_error()) { $success = FALSE; trigger_error(mysql_error(), E_USER_WARNING); } return $success; }
/** * Updates the details of a user within SiT! * @author Paul Heaney * @return mixed True if updated sucessfully, String if data validity errors encountered, FALSE otherwise */ function edit() { global $now; $toReturn = false; if (!empty($this->id) and is_number($this > id)) { $sql = "SELECT username, status, accepting FROM `{$GLOBALS['dbUsers']}` WHERE id = {$this->id}"; $result = mysql_query($sql); if (mysql_error()) { trigger_error(mysql_error(), E_USER_WARNING); } if (mysql_num_rows($result) == 1) { // Exists $oldUser = mysql_fetch_object($result); $s = array(); $s[] = "lastseen = NOW()"; $errors = 0; $error_string = ''; if (!empty($this->password)) { $s[] = "password = MD5('{$this->password}')"; } if (!empty($this->realname)) { $s[] = "realname = '{$this->realname}'"; } if (!empty($this->roleid)) { $s[] = "roleid = {$this->roleid}"; } if (!empty($this->group) and !empty($this->group->id)) { $s[] = "groupid = {$this->group->id}"; } if (!empty($this->jobtitle)) { $s[] = "title = '{$this->jobtitle}'"; } if (!empty($this->signature)) { $s[] = "signature = '{$this->signature}'"; } if (!empty($this->email)) { $sql = "SELECT COUNT(id) FROM `{$GLOBALS['dbUsers']}` WHERE status > 0 AND email='{$this->email}' AND id != {$this->id}"; $result = mysql_query($sql); if (mysql_error()) { trigger_error(mysql_error(), E_USER_WARNING); } list($countexisting) = mysql_fetch_row($result); if ($countexisting > 1) { $errors++; $error_string .= "<h5 class='error'>{$GLOBALS['strEmailMustBeUnique']}</h5>\n"; } $s[] = "email = '{$this->email}'"; } if (!empty($this->phone)) { $s[] = "phone = '{$this->phone}'"; } if (!empty($this->mobile)) { $s[] = "mobile = '{$this->mobile}'"; } if (!empty($this->fax)) { $s[] = "fax = '{$this->fax}'"; } if (!empty($this->status)) { if ($oldUser->status != $this->status) { // reassign the users incidents if appropriate if (empty($this->accepting)) { $this->accepting = $oldUser->accepting; } // Set accepting to the DB level if one isn't set' incident_backup_switchover($this->id, $ths->accepting); } $s[] = "status = {$this->status}"; } if (!empty($this->message)) { $s[] = "message = '{$this->message}'"; } if (is_bool($this->accepting)) { if ($this->accepting) { $s[] = "accepting = 'Yes'"; } else { $s[] = "accepting = 'No'"; } } if (!empty($this->holiday_entitlement)) { $s[] = "holiday_entitlement = {$this->holiday_entitlement}"; } if (!empty($this->holiday_resetdate)) { $s[] = "holiday_restdate = '{$this->holiday_resetdate}'"; } if (!empty($this->qualifications)) { $s[] = "qualifications = '{$this->qualifications}'"; } if (!empty($this->incident_refresh) or $this->incident_refresh === 0) { $s[] = "var_incident_refresh = {$this->incident_refresh}"; } if (!empty($this->update_order)) { $s[] = "var_update_order = '{$this->update_order}'"; } if (!empty($this->num_updates_view)) { $s[] = "var_num_updates_view = {$this->num_updates_view}"; } if (!empty($this->style)) { $s[] = "var_style = {$this->style}"; } if (!empty($this->hide_auto_updates)) { $s[] = "var_hideautoupdates = '{$this->hide_auto_updates}'"; } if (!empty($this->hideheader)) { $s[] = "var_hideheader = '{$this->hideheader}'"; } if (!empty($this->monitor)) { $s[] = "var_monitor = '{$this->monitor}'"; } if (!empty($this->i18n)) { $s[] = "var_i18n = '{$this->i18n}'"; } if (!empty($this->utc_offset) or $this->utc_offset === 0) { $s[] = "var_utc_offset = {$this->utc_offset}"; } if (!empty($this->emoticons)) { $s[] = "var_emoticons = '{$this->emoticons}'"; } if (!empty($this->startdate)) { $s[] = "user_startdate = '{$this->startdate}'"; } if (!empty($this->icq)) { $s[] = "icq = '{$this->icq}'"; } if (!empty($this->aim)) { $s[] = "aim = '{$this->aim}'"; } if (!empty($this->msn)) { $s[] = "msn = '{$this->msn}'"; } if ($errors == 0) { $sql = "UPDATE `{$GLOBALS['dbUsers']}` SET " . implode(", ", $s) . " WHERE id = {$this->id}"; $result = mysql_query($sql); if (mysql_error()) { trigger_error(mysql_error(), E_USER_WARNING); } if (mysql_affected_rows() != 1) { trigger_error("Failed to update user", E_USER_WARNING); $toReturn = FALSE; } else { $toReturn = TRUE; } } else { $toReturn = $error_string; } } else { $toReturn = FALSE; } } return $toReturn; }
break; case 9: // Working Away // don't change $accepting = ''; break; } if (!empty($accepting)) { $sql .= ", accepting='{$accepting}'"; } $sql .= " WHERE id='{$sit['2']}' LIMIT 1"; $result = mysql_query($sql); if (mysql_error()) { trigger_error(mysql_error(), E_USER_ERROR); } incident_backup_switchover($sit[2], $accepting); trigger("TRIGGER_USER_CHANGED_STATUS", array('userid' => $sit[2])); header('Location: index.php'); break; case 'setaccepting': $sql = "UPDATE `{$dbUsers}` SET accepting='{$accepting}' "; $sql .= "WHERE id='{$sit['2']}' LIMIT 1"; $result = mysql_query($sql); if (mysql_error()) { trigger_error(mysql_error(), E_USER_ERROR); } header('Location: index.php'); break; case 'return': // dummy entry, just returns user back header('Location: index.php');