/** * edit exp entry * * @param integer $id * @param array $data * @return object */ public function expense_edit($id, array $data) { $conn = $this->conn; $data = $this->dbLayer->clean_data($data); $original_array = $this->expense_get($id); $new_array = array(); foreach ($original_array as $key => $value) { if (isset($data[$key]) == true) { $new_array[$key] = $data[$key]; } else { $new_array[$key] = $original_array[$key]; } } $values['projectID'] = MySQL::SQLValue($new_array['projectID'], MySQL::SQLVALUE_NUMBER); $values['designation'] = MySQL::SQLValue($new_array['designation']); $values['comment'] = MySQL::SQLValue($new_array['comment']); $values['commentType'] = MySQL::SQLValue($new_array['commentType'], MySQL::SQLVALUE_NUMBER); $values['timestamp'] = MySQL::SQLValue($new_array['timestamp'], MySQL::SQLVALUE_NUMBER); $values['multiplier'] = MySQL::SQLValue($new_array['multiplier'], MySQL::SQLVALUE_NUMBER); $values['value'] = MySQL::SQLValue($new_array['value'], MySQL::SQLVALUE_NUMBER); $values['refundable'] = MySQL::SQLValue($new_array['refundable'], MySQL::SQLVALUE_NUMBER); $values['cleared'] = MySQL::SQLValue($new_array['cleared'], MySQL::SQLVALUE_NUMBER); $filter['expenseID'] = MySQL::SQLValue($id, MySQL::SQLVALUE_NUMBER); $table = $this->getExpenseTable(); $query = MySQL::BuildSQLUpdate($table, $values, $filter); return $conn->Query($query); }
write_config_file($database, $hostname, $username, $password, $db_layer, $db_type, $prefix, $lang, $salt, $timezone); break; /** * Create the database. */ /** * Create the database. */ case "make_database": $databaseName = $_REQUEST['database']; $hostname = $_REQUEST['hostname']; $username = $_REQUEST['username']; $password = $_REQUEST['password']; $server_type = $_REQUEST['db_type']; $db_layer = $_REQUEST['db_layer']; $db_error = false; $result = false; $database = new Kimai_Database_Mysql($result); $database->connect($hostname, null, $username, $password, true, $server_type); $conn = $database->getConnectionHandler(); $query = "CREATE DATABASE `" . $databaseName . "` DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci"; $result = $conn->Query($query); if ($result !== false) { echo "1"; // <-- hat geklappt } else { echo "0"; // <-- schief gegangen } break; }
} else { if (isset($_COOKIE['kimai_db']) && $_COOKIE['kimai_db'] == true) { $dbnr = $_COOKIE['kimai_db'] - 1; $kga['server_database'] = $server_ext_database[$dbnr]; if ($server_ext_username[$dbnr] != '') { $kga['server_username'] = $server_ext_username[$dbnr]; } if ($server_ext_password[$dbnr] != '') { $kga['server_password'] = $server_ext_password[$dbnr]; } if ($server_ext_prefix[$dbnr] != '') { $kga['server_prefix'] = $server_ext_prefix[$dbnr]; } } } $database = new Kimai_Database_Mysql($kga); $database->connect($kga['server_hostname'], $kga['server_database'], $kga['server_username'], $kga['server_password'], $kga['utf8'], $kga['server_type']); if (!$database->isConnected()) { die('Kimai could not connect to database. Check your autoconf.php.'); } Kimai_Registry::setDatabase($database); global $translations; $translations = new Translations($kga); if ($kga['language'] != 'en') { $translations->load($kga['language']); } $vars = $database->configuration_get_data(); if (!empty($vars)) { $kga['currency_name'] = $vars['currency_name']; $kga['currency_sign'] = $vars['currency_sign']; $kga['show_sensible_data'] = $vars['show_sensible_data'];
date_default_timezone_set($defaultTimezone); Kimai_Registry::setConfig($kga); // ============ global namespace cleanup ============ // remove some variables from the global namespace, that should either be // not accessible or which are available through the kga config object $cleanup = array('server_prefix', 'server_hostname', 'server_database', 'server_username', 'server_password', 'server_charset', 'language', 'password_salt', 'authenticator', 'defaultTimezone', 'billable', 'skin'); foreach ($cleanup as $varName) { if (isset(${$varName})) { unset(${$varName}); } } unset($cleanup); // ============ setup database ============ // we do not unset the $database variable // as it is historically referenced in many places from the global namespace $database = new Kimai_Database_Mysql($kga, true); if (!$database->isConnected()) { die('Kimai could not connect to database. Check your autoconf.php.'); } Kimai_Registry::setDatabase($database); // ============ setup authenticator ============ $authClass = 'Kimai_Auth_' . ucfirst($kga->getAuthenticator()); if (!class_exists($authClass)) { $authClass = 'Kimai_Auth_Kimai'; } $authPlugin = new $authClass($database, $kga); Kimai_Registry::setAuthenticator($authPlugin); unset($authPlugin); // ============ load global configurations ============ $database->initializeConfig($kga); // ============ setup translation object ============
/** * @param Kimai_Database_Mysql $database * @param array $kgaUser * @param bool $viewOtherGroupsAllowed * @return array */ function getEditUserList(Kimai_Database_Mysql $database, $kgaUser, $viewOtherGroupsAllowed) { $users = array(); $showDeletedUsers = get_cookie('adminPanel_extension_show_deleted_users', 0); if ($database->global_role_allows($kgaUser['globalRoleID'], 'core-user-otherGroup-view')) { $dbUsers = $database->get_users($showDeletedUsers); } else { $dbUsers = $database->get_users($showDeletedUsers, $kgaUser['groups']); } $roles = $database->global_roles(); foreach ($dbUsers as $user) { $user['globalRoleName'] = 'Unknown (' . $user['globalRoleID'] . ')'; foreach ($roles as $role) { if ($role['globalRoleID'] == $user['globalRoleID']) { $user['globalRoleName'] = $role['name']; break; } } $user['groups'] = array(); $groups = $database->getGroupMemberships($user['userID']); if (is_array($groups)) { foreach ($groups as $group) { if (!$viewOtherGroupsAllowed && array_search($group, $kgaUser['groups']) === false) { continue; } $groupData = $database->group_get_data($group); $user['groups'][] = $groupData['name']; } } $users[] = $user; } return $users; }