dried code by introducing selectOne for select queries with only one result line expected

This commit is contained in:
msquare 2017-07-28 20:11:09 +02:00
parent 69a1ee2bfe
commit f82e5456d2
25 changed files with 83 additions and 173 deletions

View File

@ -43,7 +43,7 @@ function shift_entry_add_controller()
$type = AngelType($type_id);
} else {
// TODO: Move queries to model
$type = DB::select('
$type = DB::selectOne('
SELECT *
FROM `UserAngelTypes`
JOIN `AngelTypes` ON (`UserAngelTypes`.`angeltype_id` = `AngelTypes`.`id`)
@ -56,7 +56,6 @@ function shift_entry_add_controller()
)
)
', [$type_id, $user['UID']]);
$type = array_shift($type);
}
if (empty($type)) {
@ -241,7 +240,7 @@ function shift_entry_delete_controller()
}
$entry_id = $request->input('entry_id');
$shift_entry_source = DB::select('
$shift_entry_source = DB::selectOne('
SELECT
`User`.`Nick`,
`ShiftEntry`.`Comment`,
@ -260,9 +259,7 @@ function shift_entry_delete_controller()
WHERE `ShiftEntry`.`id`=?',
[$entry_id]
);
if (count($shift_entry_source) > 0) {
$shift_entry_source = array_shift($shift_entry_source);
if (!empty($shift_entry_source)) {
if (!in_array('user_shifts_admin', $privileges) && (!in_array('shiftentry_edit_angeltype_supporter',
$privileges) || !User_is_AngelType_supporter($user, AngelType($shift_entry_source['angeltype_id'])))
) {

View File

@ -256,14 +256,8 @@ function AngelType_ids()
*/
function AngelType($angeltype_id)
{
$angelType_source = DB::select(
return DB::selectOne(
'SELECT * FROM `AngelTypes` WHERE `id`=?',
[$angeltype_id]
);
if (empty($angelType_source)) {
return null;
}
return array_shift($angelType_source);
}

View File

@ -9,13 +9,7 @@ use Engelsystem\Database\DB;
*/
function EventConfig()
{
$event_config = DB::select('SELECT * FROM `EventConfig` LIMIT 1');
if (empty($event_config)) {
return null;
}
return array_shift($event_config);
return DB::selectOne('SELECT * FROM `EventConfig` LIMIT 1');
}
/**

View File

@ -20,11 +20,7 @@ function Message_ids()
*/
function Message($message_id)
{
$message_source = DB::select('SELECT * FROM `Messages` WHERE `id`=? LIMIT 1', [$message_id]);
if (empty($message_source)) {
return null;
}
return array_shift($message_source);
return DB::selectOne('SELECT * FROM `Messages` WHERE `id`=? LIMIT 1', [$message_id]);
}
/**

View File

@ -58,17 +58,11 @@ function Room_create($name, $from_frab, $public, $number = null)
*/
function Room($room_id, $onlyVisible = true)
{
$room_source = DB::select('
return DB::selectOne('
SELECT *
FROM `Room`
WHERE `RID` = ?
' . ($onlyVisible ? 'AND `show` = \'Y\'' : ''),
[$room_id]
);
if (empty($room_source)) {
return null;
}
return array_shift($room_source);
}

View File

@ -28,10 +28,9 @@ function ShiftEntry_new()
*/
function ShiftEntries_freeleaded_count()
{
$result = DB::select('SELECT COUNT(*) FROM `ShiftEntry` WHERE `freeloaded` = 1');
$result = array_shift($result);
$result = DB::selectOne('SELECT COUNT(*) FROM `ShiftEntry` WHERE `freeloaded` = 1');
if (!is_array($result)) {
if (empty($result)) {
return 0;
}
@ -129,13 +128,7 @@ function ShiftEntry_update($shift_entry)
*/
function ShiftEntry($shift_entry_id)
{
$shift_entry = DB::select('SELECT * FROM `ShiftEntry` WHERE `id` = ?', [$shift_entry_id]);
if (empty($shift_entry)) {
return null;
}
return $shift_entry[0];
return DB::selectOne('SELECT * FROM `ShiftEntry` WHERE `id` = ?', [$shift_entry_id]);
}
/**

View File

@ -70,13 +70,7 @@ function ShiftType_create($name, $angeltype_id, $description)
*/
function ShiftType($shifttype_id)
{
$shifttype = DB::select('SELECT * FROM `ShiftTypes` WHERE `id`=?', [$shifttype_id]);
if (empty($shifttype)) {
return null;
}
return array_shift($shifttype);
return DB::selectOne('SELECT * FROM `ShiftTypes` WHERE `id`=?', [$shifttype_id]);
}
/**

View File

@ -112,7 +112,7 @@ function NeededAngeltypes_by_ShiftsFilter(ShiftsFilter $shiftsFilter)
*/
function NeededAngeltype_by_Shift_and_Angeltype($shift, $angeltype)
{
$result = DB::select('
return DB::selectOne('
SELECT
`NeededAngelTypes`.*,
`Shifts`.`SID`,
@ -150,12 +150,6 @@ function NeededAngeltype_by_Shift_and_Angeltype($shift, $angeltype)
$angeltype['id']
]
);
if (empty($result)) {
return null;
}
return $result[0];
}
/**
@ -453,13 +447,13 @@ function Shift_update($shift)
*/
function Shift_update_by_psid($shift)
{
$shift_source = DB::select('SELECT `SID` FROM `Shifts` WHERE `PSID`=?', [$shift['PSID']]);
$shift_source = DB::selectOne('SELECT `SID` FROM `Shifts` WHERE `PSID`=?', [$shift['PSID']]);
if (empty($shift_source)) {
throw new Exception('Shift not found.');
}
$shift['SID'] = $shift_source[0]['SID'];
$shift['SID'] = $shift_source['SID'];
return Shift_update($shift);
}
@ -537,18 +531,16 @@ function Shifts_by_user($user, $include_freeload_comments = false)
*/
function Shift($shift_id)
{
$shifts_source = DB::select('
$result = DB::selectOne('
SELECT `Shifts`.*, `ShiftTypes`.`name`
FROM `Shifts`
JOIN `ShiftTypes` ON (`ShiftTypes`.`id` = `Shifts`.`shifttype_id`)
WHERE `SID`=?', [$shift_id]);
if (empty($shifts_source)) {
if (empty($result)) {
return null;
}
$result = $shifts_source[0];
$shiftsEntry_source = DB::select('
SELECT `id`, `TID` , `UID` , `freeloaded`
FROM `ShiftEntry`

View File

@ -197,17 +197,11 @@ function UserAngelType_create($user, $angeltype)
*/
function UserAngelType($user_angeltype_id)
{
$angeltype = DB::select('
return DB::selectOne('
SELECT *
FROM `UserAngelTypes`
WHERE `id`=?
LIMIT 1', [$user_angeltype_id]);
if (empty($angeltype)) {
return null;
}
return $angeltype[0];
}
/**
@ -219,7 +213,7 @@ function UserAngelType($user_angeltype_id)
*/
function UserAngelType_by_User_and_AngelType($user, $angeltype)
{
$angeltype = DB::select('
return DB::selectOne('
SELECT *
FROM `UserAngelTypes`
WHERE `user_id`=?
@ -231,10 +225,4 @@ function UserAngelType_by_User_and_AngelType($user, $angeltype)
$angeltype['id']
]
);
if (empty($angeltype)) {
return null;
}
return array_shift($angeltype);
}

View File

@ -45,16 +45,10 @@ function UserDriverLicense_valid($user_driver_license)
*/
function UserDriverLicense($user_id)
{
$user_driver_license = DB::select('
return DB::selectOne('
SELECT *
FROM `UserDriverLicenses`
WHERE `user_id`=?', [$user_id]);
if (empty($user_driver_license)) {
return null;
}
return array_shift($user_driver_license);
}
/**

View File

@ -87,8 +87,7 @@ function User_update($user)
*/
function User_force_active_count()
{
$result = DB::select('SELECT COUNT(*) FROM `User` WHERE `force_active` = 1');
$result = array_shift($result);
$result = DB::selectOne('SELECT COUNT(*) FROM `User` WHERE `force_active` = 1');
if (empty($result)) {
return 0;
@ -102,8 +101,7 @@ function User_force_active_count()
*/
function User_active_count()
{
$result = DB::select('SELECT COUNT(*) FROM `User` WHERE `Aktiv` = 1');
$result = array_shift($result);
$result = DB::selectOne('SELECT COUNT(*) FROM `User` WHERE `Aktiv` = 1');
if (empty($result)) {
return 0;
@ -117,8 +115,7 @@ function User_active_count()
*/
function User_got_voucher_count()
{
$result = DB::select('SELECT SUM(`got_voucher`) FROM `User`');
$result = array_shift($result);
$result = DB::selectOne('SELECT SUM(`got_voucher`) FROM `User`');
if (empty($result)) {
return 0;
@ -132,8 +129,7 @@ function User_got_voucher_count()
*/
function User_arrived_count()
{
$result = DB::select('SELECT COUNT(*) FROM `User` WHERE `Gekommen` = 1');
$result = array_shift($result);
$result = DB::selectOne('SELECT COUNT(*) FROM `User` WHERE `Gekommen` = 1');
if (empty($result)) {
return 0;
@ -147,8 +143,7 @@ function User_arrived_count()
*/
function User_tshirts_count()
{
$result = DB::select('SELECT COUNT(*) FROM `User` WHERE `Tshirt` = 1');
$result = array_shift($result);
$result = DB::selectOne('SELECT COUNT(*) FROM `User` WHERE `Tshirt` = 1');
if (empty($result)) {
return 0;
@ -382,13 +377,7 @@ function User_validate_planned_departure_date($planned_arrival_date, $planned_de
*/
function User($user_id)
{
$user_source = DB::select('SELECT * FROM `User` WHERE `UID`=? LIMIT 1', [$user_id]);
if (empty($user_source)) {
return null;
}
return array_shift($user_source);
return DB::selectOne('SELECT * FROM `User` WHERE `UID`=? LIMIT 1', [$user_id]);
}
/**
@ -400,13 +389,7 @@ function User($user_id)
*/
function User_by_api_key($api_key)
{
$user = DB::select('SELECT * FROM `User` WHERE `api_key`=? LIMIT 1', [$api_key]);
if (empty($user)) {
return null;
}
return $user[0];
return DB::selectOne('SELECT * FROM `User` WHERE `api_key`=? LIMIT 1', [$api_key]);
}
/**
@ -417,30 +400,18 @@ function User_by_api_key($api_key)
*/
function User_by_email($email)
{
$user = DB::select('SELECT * FROM `User` WHERE `email`=? LIMIT 1', [$email]);
if (empty($user)) {
return null;
}
return array_shift($user);
return DB::selectOne('SELECT * FROM `User` WHERE `email`=? LIMIT 1', [$email]);
}
/**
* Returns User by password token.
*
* @param string $token
* @return array|null Matching user, null or false on error
* @return array|null Matching user, null when not found
*/
function User_by_password_recovery_token($token)
{
$user = DB::select('SELECT * FROM `User` WHERE `password_recovery_token`=? LIMIT 1', [$token]);
if (empty($user)) {
return null;
}
return array_shift($user);
return DB::selectOne('SELECT * FROM `User` WHERE `password_recovery_token`=? LIMIT 1', [$token]);
}
/**

View File

@ -210,19 +210,17 @@ function admin_active()
$shirt_statistics = [];
foreach (array_keys($tshirt_sizes) as $size) {
if (!empty($size)) {
$sc = DB::select(
$sc = DB::selectOne(
'SELECT count(*) FROM `User` WHERE `Size`=? AND `Gekommen`=1',
[$size]
);
$sc = array_shift($sc);
$sc = array_shift($sc);
$gc = DB::select(
$gc = DB::selectOne(
'SELECT count(*) FROM `User` WHERE `Size`=? AND `Tshirt`=1',
[$size]
);
$gc = array_shift($gc);
$gc = array_shift($gc);
$shirt_statistics[] = [
'size' => $size,
@ -232,8 +230,7 @@ function admin_active()
}
}
$uc = DB::select('SELECT count(*) FROM `User` WHERE `Tshirt`=1');
$uc = array_shift($uc);
$uc = DB::selectOne('SELECT count(*) FROM `User` WHERE `Tshirt`=1');
$uc = array_shift($uc);
$shirt_statistics[] = [

View File

@ -107,23 +107,21 @@ function admin_groups()
return error('Incomplete call, missing Groups ID.', true);
}
$group = DB::select('SELECT * FROM `Groups` WHERE `UID`=? LIMIT 1', [$group_id]);
$group = DB::selectOne('SELECT * FROM `Groups` WHERE `UID`=? LIMIT 1', [$group_id]);
$privileges = $request->get('privileges');
if (!is_array($privileges)) {
$privileges = [];
}
if (!empty($group)) {
$group = array_shift($group);
DB::delete('DELETE FROM `GroupPrivileges` WHERE `group_id`=?', [$group_id]);
$privilege_names = [];
foreach ($privileges as $privilege) {
if (preg_match('/^\d{1,}$/', $privilege)) {
$group_privileges_source = DB::select(
$group_privileges_source = DB::selectOne(
'SELECT `name` FROM `Privileges` WHERE `id`=? LIMIT 1',
[$privilege]
);
if (!empty($group_privileges_source)) {
$group_privileges_source = array_shift($group_privileges_source);
DB::insert(
'INSERT INTO `GroupPrivileges` (`group_id`, `privilege_id`) VALUES (?, ?)',
[$group_id, $privilege]

View File

@ -21,14 +21,13 @@ function admin_news()
return error('Incomplete call, missing News ID.', true);
}
$news = DB::select('SELECT * FROM `News` WHERE `ID`=? LIMIT 1', [$news_id]);
$news = DB::selectOne('SELECT * FROM `News` WHERE `ID`=? LIMIT 1', [$news_id]);
if (empty($news)) {
return error('No News found.', true);
}
switch ($request->input('action')) {
case 'edit':
$news = array_shift($news);
$user_source = User($news['UID']);
$html .= form([
@ -70,7 +69,6 @@ function admin_news()
break;
case 'delete':
$news = array_shift($news);
DB::delete('DELETE FROM `News` WHERE `ID`=? LIMIT 1', [$news_id]);
engelsystem_log('News deleted: ' . $news['Betreff']);
success(_('News entry deleted.'));

View File

@ -105,11 +105,11 @@ function admin_questions()
return error('Incomplete call, missing Question ID.', true);
}
$question = DB::select(
$question = DB::selectOne(
'SELECT * FROM `Questions` WHERE `QID`=? LIMIT 1',
[$question_id]
);
if (count($question) > 0 && $question[0]['AID'] == null) {
if (!empty($question) && $question['AID'] == null) {
$answer = trim(
preg_replace("/([^\p{L}\p{P}\p{Z}\p{N}\n]{1,})/ui",
'',
@ -129,7 +129,7 @@ function admin_questions()
$question_id,
]
);
engelsystem_log('Question ' . $question[0]['Question'] . ' answered: ' . $answer);
engelsystem_log('Question ' . $question['Question'] . ' answered: ' . $answer);
redirect(page_link_to('admin_questions'));
} else {
return error('Enter an answer!', true);
@ -145,13 +145,13 @@ function admin_questions()
return error('Incomplete call, missing Question ID.', true);
}
$question = DB::select(
$question = DB::selectOne(
'SELECT * FROM `Questions` WHERE `QID`=? LIMIT 1',
[$question_id]
);
if (count($question) > 0) {
if (!empty($question)) {
DB::delete('DELETE FROM `Questions` WHERE `QID`=? LIMIT 1', [$question_id]);
engelsystem_log('Question deleted: ' . $question[0]['Question']);
engelsystem_log('Question deleted: ' . $question['Question']);
redirect(page_link_to('admin_questions'));
} else {
return error('No question found.', true);

View File

@ -325,7 +325,7 @@ function admin_shifts()
);
foreach ($_SESSION['admin_shifts_types'] as $type_id => $count) {
$angel_type_source = DB::select('
$angel_type_source = DB::selectOne('
SELECT *
FROM `AngelTypes`
WHERE `id` = ?
@ -341,7 +341,7 @@ function admin_shifts()
$count
]
);
$needed_angel_types_info[] = $angel_type_source[0]['name'] . ': ' . $count;
$needed_angel_types_info[] = $angel_type_source['name'] . ': ' . $count;
}
}
}

View File

@ -116,20 +116,20 @@ function admin_user()
$html .= '<hr />';
$my_highest_group = DB::select(
$my_highest_group = DB::selectOne(
'SELECT group_id FROM `UserGroups` WHERE `uid`=? ORDER BY `group_id` LIMIT 1',
[$user['UID']]
);
if (count($my_highest_group) > 0) {
$my_highest_group = $my_highest_group[0]['group_id'];
if (!empty($my_highest_group)) {
$my_highest_group = $my_highest_group['group_id'];
}
$his_highest_group = DB::select(
$his_highest_group = DB::selectOne(
'SELECT `group_id` FROM `UserGroups` WHERE `uid`=? ORDER BY `group_id` LIMIT 1',
[$user_id]
);
if (count($his_highest_group) > 0) {
$his_highest_group = $his_highest_group[0]['group_id'];
if (!empty($his_highest_group)) {
$his_highest_group = $his_highest_group['group_id'];
}
if ($user_id != $user['UID'] && $my_highest_group <= $his_highest_group) {
@ -188,7 +188,7 @@ function admin_user()
count($my_highest_group) > 0
&& (
count($his_highest_group) == 0
|| ($my_highest_group[0]['group_id'] <= $his_highest_group[0]['group_id'])
|| ($my_highest_group['group_id'] <= $his_highest_group['group_id'])
)
) {
$groups_source = DB::select('
@ -203,7 +203,7 @@ function admin_user()
',
[
$user_id,
$my_highest_group[0]['group_id'],
$my_highest_group['group_id'],
]
);
$groups = [];

View File

@ -399,9 +399,8 @@ function guest_login()
if ($request->has('submit')) {
if ($request->has('nick') && strlen(User_validate_Nick($request->input('nick'))) > 0) {
$nick = User_validate_Nick($request->input('nick'));
$login_user = DB::select('SELECT * FROM `User` WHERE `Nick`=?', [$nick]);
if (count($login_user) > 0) {
$login_user = $login_user[0];
$login_user = DB::selectOne('SELECT * FROM `User` WHERE `Nick`=?', [$nick]);
if (!empty($login_user)) {
if ($request->has('password')) {
if (!verify_password($request->post('password'), $login_user['Passwort'], $login_user['UID'])) {
$valid = false;

View File

@ -17,13 +17,12 @@ function guest_stats()
list($arrived_user_count) = DB::select('SELECT count(*) AS `user_count` FROM `User` WHERE `Gekommen`=1');
$stats['arrived_user_count'] = $arrived_user_count['user_count'];
$done_shifts_seconds = DB::select('
$done_shifts_seconds = DB::selectOne('
SELECT SUM(`Shifts`.`end` - `Shifts`.`start`)
FROM `ShiftEntry`
JOIN `Shifts` USING (`SID`)
WHERE `Shifts`.`end` < UNIX_TIMESTAMP()
');
$done_shifts_seconds = array_shift($done_shifts_seconds);
$done_shifts_seconds = (int)array_shift($done_shifts_seconds);
$stats['done_work_hours'] = round($done_shifts_seconds / (60 * 60), 0);

View File

@ -130,11 +130,11 @@ function user_messages()
return error(_('Incomplete call, missing Message ID.'), true);
}
$message = DB::select(
$message = DB::selectOne(
'SELECT `RUID` FROM `Messages` WHERE `id`=? LIMIT 1',
[$message_id]
);
if (count($message) > 0 && $message[0]['RUID'] == $user['UID']) {
if (!empty($message) && $message['RUID'] == $user['UID']) {
DB::update(
'UPDATE `Messages` SET `isRead`=\'Y\' WHERE `id`=? LIMIT 1',
[$message_id]
@ -152,11 +152,11 @@ function user_messages()
return error(_('Incomplete call, missing Message ID.'), true);
}
$message = DB::select(
$message = DB::selectOne(
'SELECT `SUID` FROM `Messages` WHERE `id`=? LIMIT 1',
[$message_id]
);
if (count($message) > 0 && $message[0]['SUID'] == $user['UID']) {
if (!empty($message) && $message['SUID'] == $user['UID']) {
DB::delete('DELETE FROM `Messages` WHERE `id`=? LIMIT 1', [$message_id]);
redirect(page_link_to('user_messages'));
} else {

View File

@ -31,8 +31,7 @@ function user_myshifts()
$user_id = $user['UID'];
}
$shifts_user = DB::select('SELECT * FROM `User` WHERE `UID`=? LIMIT 1', [$user_id]);
$shifts_user = array_shift($shifts_user);
$shifts_user = DB::selectOne('SELECT * FROM `User` WHERE `UID`=? LIMIT 1', [$user_id]);
if ($request->has('reset')) {
if ($request->input('reset') == 'ack') {
@ -49,7 +48,7 @@ function user_myshifts()
]);
} elseif ($request->has('edit') && preg_match('/^\d*$/', $request->input('edit'))) {
$user_id = $request->input('edit');
$shift = DB::select('
$shift = DB::selectOne('
SELECT
`ShiftEntry`.`freeloaded`,
`ShiftEntry`.`freeload_comment`,
@ -74,7 +73,6 @@ function user_myshifts()
]
);
if (count($shift) > 0) {
$shift = array_shift($shift);
$freeloaded = $shift['freeloaded'];
$freeload_comment = $shift['freeload_comment'];
@ -128,7 +126,7 @@ function user_myshifts()
}
} elseif ($request->has('cancel') && preg_match('/^\d*$/', $request->input('cancel'))) {
$user_id = $request->input('cancel');
$shift = DB::select('
$shift = DB::selectOne('
SELECT *
FROM `Shifts`
INNER JOIN `ShiftEntry` USING (`SID`)
@ -140,7 +138,6 @@ function user_myshifts()
]
);
if (count($shift) > 0) {
$shift = array_shift($shift);
if (
($shift['start'] > time() + config('last_unsubscribe') * 3600)
|| in_array('user_shifts_admin', $privileges)

View File

@ -126,8 +126,7 @@ function user_news_comments()
&& count(DB::select('SELECT `ID` FROM `News` WHERE `ID`=? LIMIT 1', [$request->input('nid')])) > 0
) {
$nid = $request->input('nid');
$news = DB::select('SELECT * FROM `News` WHERE `ID`=? LIMIT 1', [$nid]);
$news = array_shift($news);
$news = DB::selectOne('SELECT * FROM `News` WHERE `ID`=? LIMIT 1', [$nid]);
if ($request->has('text')) {
$text = preg_replace("/([^\p{L}\p{P}\p{Z}\p{N}\n]{1,})/ui", '', strip_tags($request->input('text')));
DB::insert('

View File

@ -61,11 +61,11 @@ function user_questions()
return error(_('Incomplete call, missing Question ID.'), true);
}
$question = DB::select(
$question = DB::selectOne(
'SELECT `UID` FROM `Questions` WHERE `QID`=? LIMIT 1',
[$question_id]
);
if (count($question) > 0 && $question[0]['UID'] == $user['UID']) {
if (!empty($question) && $question['UID'] == $user['UID']) {
DB::delete(
'DELETE FROM `Questions` WHERE `QID`=? LIMIT 1',
[$question_id]

View File

@ -11,10 +11,9 @@ function load_auth()
$user = null;
if (isset($_SESSION['uid'])) {
$user = DB::select('SELECT * FROM `User` WHERE `UID`=? LIMIT 1', [$_SESSION['uid']]);
if (count($user) > 0) {
$user = DB::selectOne('SELECT * FROM `User` WHERE `UID`=? LIMIT 1', [$_SESSION['uid']]);
if (!empty($user)) {
// User ist eingeloggt, Datensatz zur Verfügung stellen und Timestamp updaten
$user = array_shift($user);
DB::update('
UPDATE `User`
SET `lastLogIn` = ?

View File

@ -80,6 +80,23 @@ class Db
return self::$stm->fetchAll(PDO::FETCH_ASSOC);
}
/**
* Run a select query and return only the first result or null if no result is found.
* @param string $query
* @param array $bindings
* @return array|null
*/
public static function selectOne($query, array $bindings = [])
{
$result = self::select($query);
if(empty($result)) {
return null;
}
return array_shift($result);
}
/**
* Run an insert query
*