function save($id, $vars, &$errors) { if ($id && $id != $vars['client_id']) { $errors['err'] = _('Internal Error'); } // Check email. if (!$vars['client_email'] || !Validator::is_email($vars['client_email'])) { $errors['email'] = _('Valid email required'); } elseif (Email::getIdByEmail($vars['client_email'])) { $errors['email'] = _('Already in-use system email'); } else { //check if the email is already in-use. $sql = 'SELECT client_id FROM ' . CLIENT_TABLE . ' WHERE client_email=' . db_input($vars['client_email']); if ($id) { $sql .= ' AND client_id!=' . db_input($id); } if (db_num_rows(db_query($sql))) { $errors['email'] = _('Already in-use email'); } } if ($vars['client_phone'] && !Validator::is_phone($vars['client_phone'])) { $errors['phone'] = _('Valid number required'); } if ($vars['client_mobile'] && !Validator::is_phone($vars['client_mobile'])) { $errors['mobile'] = _('Valid number required'); } // Check passwords if ($vars['npassword'] || $vars['vpassword'] || !$id) { if (!$vars['npassword'] && !$id) { $errors['npassword'] = _('Password required'); } elseif ($vars['npassword'] && strcmp($vars['npassword'], $vars['vpassword'])) { $errors['vpassword'] = _('Password(s) do not match'); } elseif ($vars['npassword'] && strlen($vars['npassword']) < 6) { $errors['npassword'] = _('Must be at least 6 characters'); } elseif ($vars['npassword'] && strlen($vars['npassword']) > 128) { $errors['npassword'] = _('Password too long'); } } if (!$errors) { $sql = ' SET client_isactive=' . db_input($vars['client_isactive']) . ',client_email=' . db_input(Format::striptags($vars['client_email'])) . ',client_firstname=' . db_input(Format::striptags($vars['client_firstname'])) . ',client_lastname=' . db_input(Format::striptags($vars['client_lastname'])) . ',client_organization=' . db_input(Format::striptags($vars['client_organization'])) . ',client_phone="' . db_input($vars['client_phone'], false) . '"' . ',client_mobile="' . db_input($vars['client_mobile'], false) . '"'; if ($vars['npassword']) { $hash = PhpassHashedPass::hash($vars['npassword']); $sql .= ',client_password='******'UPDATE ' . CLIENT_TABLE . ' ' . $sql . ' WHERE client_id=' . db_input($id); if (!db_query($sql) || !db_affected_rows()) { $errors['err'] = _('Unable to update the user. Internal error occured'); } if ($vars['old_client_email'] != $vars['client_email']) { // Email changed? Update the tickets! $sql = 'UPDATE ' . TICKET_TABLE . ' SET email=' . db_input(Format::striptags($vars['client_email'])) . ' WHERE email=' . db_input($vars['old_client_email']); if (!db_query($sql)) { $errors['err'] = _('Unable to update the user. Internal error occured'); } //TODO: reverse the previous db operation! } } else { $sql = 'INSERT INTO ' . CLIENT_TABLE . ' ' . $sql . ',client_created=NOW()'; if (db_query($sql) && ($uID = db_insert_id())) { return $uID; } $errors['err'] = _('Unable to create user. Internal error'); } } return $errors ? false : true; }
function save($id, $vars, &$errors) { if ($id && $id != $vars['staff_id']) { $errors['err'] = _('Internal Error'); } if (!$vars['firstname'] || !$vars['lastname']) { $errors['name'] = _('First and last name required'); } if (!$vars['username'] || strlen($vars['username']) < 3) { $errors['username'] = _('Username required'); } else { //check if the username is already in-use. $sql = 'SELECT staff_id FROM ' . STAFF_TABLE . ' WHERE username='******'username']); if ($id) { $sql .= ' AND staff_id!=' . db_input($id); } if (db_num_rows(db_query($sql))) { $errors['username'] = _('Username already in-use'); } } // Check email. if (!$vars['email'] || !Validator::is_email($vars['email'])) { $errors['email'] = _('Valid email required'); } elseif (Email::getIdByEmail($vars['email'])) { $errors['email'] = _('Already in-use system email'); } else { //check if the email is already in-use. $sql = 'SELECT staff_id FROM ' . STAFF_TABLE . ' WHERE email=' . db_input($vars['email']); if ($id) { $sql .= ' AND staff_id!=' . db_input($id); } if (db_num_rows(db_query($sql))) { $errors['email'] = _('Already in-use email'); } } if ($vars['phone'] && !Validator::is_phone($vars['phone'])) { $errors['phone'] = _('Valid number required'); } if ($vars['mobile'] && !Validator::is_phone($vars['mobile'])) { $errors['mobile'] = _('Valid number required'); } // Chek password if ($vars['npassword'] || $vars['vpassword'] || !$id) { if (!$vars['npassword'] && !$id) { $errors['npassword'] = _('Temp password required'); } elseif ($vars['npassword'] && strcmp($vars['npassword'], $vars['vpassword'])) { $errors['vpassword'] = _('Password(s) do not match'); } elseif ($vars['npassword'] && strlen($vars['npassword']) < 6) { $errors['npassword'] = _('Must be at least 6 characters'); } elseif ($vars['npassword'] && strlen($vars['npassword']) > 128) { $errors['npassword'] = _('Password too long'); } } // Check department if (!$vars['dept_id']) { $errors['dept'] = _('Department required'); } elseif ($id && $this->getDeptId() != $vars['dept_id']) { //check if the user is still dept. manager. $sql = 'SELECT dept_name FROM ' . DEPT_TABLE . ' WHERE dept_id=' . db_input($this->getDeptId()) . ' AND manager_id=' . db_input($id); if (db_num_rows(db_query($sql))) { $errors['dept'] = _('The user is currently manager of his/her department'); } } // Check if the role is select and that it remains at least one administrator if (!$vars['role_id']) { $errors['role'] = _('Role required'); } elseif ($vars['role_id'] == "1") { $isadmin = "1"; } elseif ($id && db_count('SELECT COUNT(*) FROM ' . STAFF_TABLE . ' WHERE staff_id = ' . db_input($id) . ' AND isadmin = 1') == 1 && db_count('SELECT COUNT(*) FROM ' . STAFF_TABLE . ' WHERE isadmin = 1') == 1) { $errors['role'] = _('At least an administrator must remain'); } else { $isadmin = "0"; } if (!$errors) { $sql = ' SET updated=NOW() ' . ',isadmin=' . db_input($isadmin) . ',isactive=' . db_input($vars['isactive']) . ',isvisible=' . db_input(isset($vars['isvisible']) ? 1 : 0) . ',onvacation=' . db_input(isset($vars['onvacation']) ? 1 : 0) . ',dept_id=' . db_input($vars['dept_id']) . ',role_id=' . db_input($vars['role_id']) . ',username='******'username'])) . ',firstname=' . db_input(Format::striptags($vars['firstname'])) . ',lastname=' . db_input(Format::striptags($vars['lastname'])) . ',email=' . db_input($vars['email']) . ',phone="' . db_input($vars['phone'], false) . '"' . ',mobile="' . db_input($vars['mobile'], false) . '"' . ',signature=' . db_input(Format::striptags($vars['signature'])); if ($vars['npassword']) { $hash = PhpassHashedPass::hash($vars['npassword']); $sql .= ',passwd=' . db_input($hash); } if (isset($vars['resetpasswd'])) { $sql .= ',change_passwd=1'; } if ($id) { $sql = 'UPDATE ' . STAFF_TABLE . ' ' . $sql . ' WHERE staff_id=' . db_input($id); if (!db_query($sql) || !db_affected_rows()) { $errors['err'] = _('Unable to update the user. Internal error occured'); } } else { $sql = 'INSERT INTO ' . STAFF_TABLE . ' ' . $sql . ',created=NOW()'; if (db_query($sql) && ($uID = db_insert_id())) { return $uID; } $errors['err'] = _('Unable to create user. Internal error'); } } return $errors ? false : true; }
$info = $support; //Rewrite the config file. $configfile = str_replace("define('KTSINSTALLED',FALSE);", "define('KTSINSTALLED',TRUE);", $configfile); $configfile = str_replace('%ADMIN-EMAIL', $_POST['email'], $configfile); $configfile = str_replace('%CONFIG-DBHOST', $_POST['dbhost'], $configfile); $configfile = str_replace('%CONFIG-DBNAME', $_POST['dbname'], $configfile); $configfile = str_replace('%CONFIG-DBUSER', $_POST['dbuser'], $configfile); $configfile = str_replace('%CONFIG-DBPASS', $_POST['dbpass'], $configfile); $configfile = str_replace('%CONFIG-PREFIX', $_POST['prefix'], $configfile); $configfile = str_replace('%CONFIG-SIRI', Misc::randcode(32), $configfile); if (ftruncate($fp, 0) && fwrite($fp, $configfile)) { //Some more configurations. $tzoffset = date("Z") / 3600; //Server's offset. //Create admin user. Dummy first and last name. $sql = 'INSERT INTO ' . PREFIX . 'staff SET created=NOW(), isadmin=1,change_passwd=0,role_id=1,dept_id=1 ' . ',email=' . db_input($_POST['email']) . ',firstname=' . db_input('System') . ',lastname=' . db_input('Administrator') . ',username='******'username']) . ',passwd=' . db_input(PhpassHashedPass::hash($_POST['password'])) . ',timezone_offset=' . db_input($tzoffset); db_query($sql); //Add emails - hopefully the domain is actually valid list($uname, $domain) = explode('@', $_POST['sysemail']); //1 - main support email $sql = 'INSERT INTO ' . PREFIX . 'email SET created=NOW(),updated=NOW(),priority_id=2,dept_id=1' . ',name=' . db_input('Katak-support') . ',email=' . db_input($_POST['sysemail']); db_query($sql); //2 - alert email $sql = 'INSERT INTO ' . PREFIX . 'email SET created=NOW(),updated=NOW(),priority_id=1,dept_id=1' . ',name=' . db_input('Katak-support Alerts') . ',email=' . db_input('alerts@' . $domain); db_query($sql); //3 - noreply email $sql = 'INSERT INTO ' . PREFIX . 'email SET created=NOW(),updated=NOW(),priority_id=1,dept_id=1' . ',name=' . db_input('') . ',email=' . db_input('noreply@' . $domain); db_query($sql); //config info $sql = 'INSERT INTO ' . PREFIX . 'config SET updated=NOW() ' . ',isonline=0,default_email_id=1,alert_email_id=2,default_dept_id=1,default_template_id=1' . ',staff_language=' . db_input($_POST['language']) . ',user_language=' . db_input($_POST['language']) . ',timezone_offset=' . db_input($tzoffset) . ',ktsversion=' . db_input(VERSION) . ',helpdesk_url=' . db_input(URL) . ',helpdesk_title=' . db_input($_POST['title']); db_query($sql);
$errors['npassword'] = _('Must be at least 6 characters'); } if (!$_POST['vpassword']) { $errors['vpassword'] = _('Confirm new password'); } if (!$errors) { if (!$thisuser->check_passwd($_POST['password'])) { $errors['password'] = _('Valid password required'); } elseif (strcmp($_POST['npassword'], $_POST['vpassword'])) { $errors['npassword'] = $errors['vpassword'] = _('New password(s) don\'t match'); } elseif (!strcasecmp($_POST['password'], $_POST['npassword'])) { $errors['npassword'] = _('New password is same as old password'); } } if (!$errors) { $sql = 'UPDATE ' . STAFF_TABLE . ' SET updated=NOW() ' . ',change_passwd=0, passwd=' . db_input(PhpassHashedPass::hash($_POST['npassword'])) . ' WHERE staff_id=' . db_input($thisuser->getId()); if (db_query($sql) && db_affected_rows()) { $msg = _('Password Changed Successfully'); } else { $errors['err'] = _('Unable to complete password change. Internal error.'); } } break; case 'info': //Update profile info if (!$_POST['firstname']) { $errors['firstname'] = _('First name required'); } if (!$_POST['lastname']) { $errors['lastname'] = _('Last name required'); }