diff options
Diffstat (limited to 'includes/model/AngelType_model.php')
-rw-r--r-- | includes/model/AngelType_model.php | 334 |
1 files changed, 162 insertions, 172 deletions
diff --git a/includes/model/AngelType_model.php b/includes/model/AngelType_model.php index 8d6a89b3..1f2c8c63 100644 --- a/includes/model/AngelType_model.php +++ b/includes/model/AngelType_model.php @@ -1,236 +1,226 @@ <?php + +use Engelsystem\Database\DB; use Engelsystem\ValidationResult; /** * Returns an array containing the basic attributes of angeltypes. * FIXME! This is the big sign for needing entity objects */ -function AngelType_new() { - return [ - 'id' => null, - 'name' => "", - 'restricted' => false, - 'no_self_signup' => false, - 'description' => '', - 'requires_driver_license' => false, - 'contact_user_id' => null, - 'contact_name' => null, - 'contact_dect' => null, - 'contact_email' => null - ]; -} - -/** - * Validates the contact user - * - * @param Angeltype $angeltype - * The angeltype - * @return ValidationResult - */ -function AngelType_validate_contact_user_id($angeltype) { - if (! isset($angeltype['contact_user_id'])) { - return new ValidationResult(true, null); - } - if (isset($angeltype['contact_name']) || isset($angeltype['contact_dect']) || isset($angeltype['contact_email'])) { - return new ValidationResult(false, $angeltype['contact_user_id']); - } - if (User($angeltype['contact_user_id']) == null) { - return new ValidationResult(false, $angeltype['contact_user_id']); - } - return new ValidationResult(true, $angeltype['contact_user_id']); +function AngelType_new() +{ + return [ + 'id' => null, + 'name' => '', + 'restricted' => false, + 'no_self_signup' => false, + 'description' => '', + 'requires_driver_license' => false, + 'contact_name' => null, + 'contact_dect' => null, + 'contact_email' => null + ]; } /** - * Returns contact data (name, dect, email) for given angeltype or null - * + * Checks if the angeltype has any contact information. + * * @param Angeltype $angeltype - * The angeltype + * @return bool */ -function AngelType_contact_info($angeltype) { - if (isset($angeltype['contact_user_id'])) { - $contact_user = User($angeltype['contact_user_id']); - $contact_data = [ - 'contact_name' => $contact_user['Nick'], - 'contact_dect' => $contact_user['DECT'] - ]; - if ($contact_user['email_by_human_allowed']) { - $contact_data['contact_email'] = $contact_user['email']; - } - return $contact_data; - } - if (isset($angeltype['contact_name'])) { - return [ - 'contact_name' => $angeltype['contact_name'], - 'contact_dect' => $angeltype['contact_dect'], - 'contact_email' => $angeltype['contact_email'] - ]; - } - return null; +function AngelType_has_contact_info($angeltype) { + return !empty($angeltype['contact_name']) + || !empty($angeltype['contact_dect']) + || !empty($angeltype['contact_email']); } /** * Delete an Angeltype. * - * @param Angeltype $angeltype + * @param array $angeltype */ -function AngelType_delete($angeltype) { - $result = sql_query(" - DELETE FROM `AngelTypes` - WHERE `id`='" . sql_escape($angeltype['id']) . "' - LIMIT 1"); - if ($result === false) { - engelsystem_error("Unable to delete angeltype."); - } - engelsystem_log("Deleted angeltype: " . AngelType_name_render($angeltype)); - return $result; +function AngelType_delete($angeltype) +{ + DB::delete(' + DELETE FROM `AngelTypes` + WHERE `id`=? + LIMIT 1 + ', [$angeltype['id']]); + engelsystem_log('Deleted angeltype: ' . AngelType_name_render($angeltype)); } /** * Update Angeltype. * - * @param Angeltype $angeltype - * The angeltype + * @param array $angeltype The angeltype */ -function AngelType_update($angeltype) { - $result = sql_query(" - UPDATE `AngelTypes` SET - `name`='" . sql_escape($angeltype['name']) . "', - `restricted`=" . sql_bool($angeltype['restricted']) . ", - `description`='" . sql_escape($angeltype['description']) . "', - `requires_driver_license`=" . sql_bool($angeltype['requires_driver_license']) . ", - `no_self_signup`=" . sql_bool($angeltype['no_self_signup']) . ", - `contact_user_id`=" . sql_null($angeltype['contact_user_id']) . ", - `contact_name`=" . sql_null($angeltype['contact_name']) . ", - `contact_dect`=" . sql_null($angeltype['contact_dect']) . ", - `contact_email`=" . sql_null($angeltype['contact_email']) . " - WHERE `id`='" . sql_escape($angeltype['id']) . "'"); - if ($result === false) { - engelsystem_error("Unable to update angeltype."); - } - engelsystem_log("Updated angeltype: " . $angeltype['name'] . ($angeltype['restricted'] ? ", restricted" : "") . ($angeltype['no_self_signup'] ? ", no_self_signup" : "") . ($angeltype['requires_driver_license'] ? ", requires driver license" : "")); - return $result; +function AngelType_update($angeltype) +{ + DB::update(' + UPDATE `AngelTypes` SET + `name` = ?, + `restricted` = ?, + `description` = ?, + `requires_driver_license` = ?, + `no_self_signup` = ?, + `contact_name` = ?, + `contact_dect` = ?, + `contact_email` = ? + WHERE `id` = ?', + [ + $angeltype['name'], + (int)$angeltype['restricted'], + $angeltype['description'], + (int)$angeltype['requires_driver_license'], + (int)$angeltype['no_self_signup'], + $angeltype['contact_name'], + $angeltype['contact_dect'], + $angeltype['contact_email'], + $angeltype['id'], + ] + ); + + engelsystem_log( + 'Updated angeltype: ' . $angeltype['name'] . ($angeltype['restricted'] ? ', restricted' : '') + . ($angeltype['no_self_signup'] ? ', no_self_signup' : '') + . ($angeltype['requires_driver_license'] ? ', requires driver license' : '') . ', ' + . $angeltype['contact_name'] . ', ' + . $angeltype['contact_dect'] . ', ' + . $angeltype['contact_email'] + ); } /** * Create an Angeltype. * - * @param Angeltype $angeltype - * The angeltype - * @return the created angeltype + * @param array $angeltype The angeltype + * @return array the created angeltype */ -function AngelType_create($angeltype) { - $result = sql_query(" - INSERT INTO `AngelTypes` SET - `name`='" . sql_escape($angeltype['name']) . "', - `restricted`=" . sql_bool($angeltype['restricted']) . ", - `description`='" . sql_escape($angeltype['description']) . "', - `requires_driver_license`=" . sql_bool($angeltype['requires_driver_license']) . ", - `no_self_signup`=" . sql_bool($angeltype['no_self_signup']) . ", - `contact_user_id`=" . sql_null($angeltype['contact_user_id']) . ", - `contact_name`=" . sql_null($angeltype['contact_name']) . ", - `contact_dect`=" . sql_null($angeltype['contact_dect']) . ", - `contact_email`=" . sql_null($angeltype['contact_email'])); - if ($result === false) { - engelsystem_error("Unable to create angeltype."); - } - $angeltype['id'] = sql_id(); - engelsystem_log("Created angeltype: " . $angeltype['name'] . ($angeltype['restricted'] ? ", restricted" : "") . ($angeltype['requires_driver_license'] ? ", requires driver license" : "")); - return $angeltype; +function AngelType_create($angeltype) +{ + DB::insert(' + INSERT INTO `AngelTypes` ( + `name`, + `restricted`, + `description`, + `requires_driver_license`, + `no_self_signup`, + `contact_name`, + `contact_dect`, + `contact_email` + ) + VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?) + ', + [ + $angeltype['name'], + (int)$angeltype['restricted'], + $angeltype['description'], + (int)$angeltype['requires_driver_license'], + (int)$angeltype['no_self_signup'], + $angeltype['contact_name'], + $angeltype['contact_dect'], + $angeltype['contact_email'], + ] + ); + + $angeltype['id'] = DB::getPdo()->lastInsertId(); + engelsystem_log( + 'Created angeltype: ' . $angeltype['name'] + . ($angeltype['restricted'] ? ', restricted' : '') + . ($angeltype['requires_driver_license'] ? ', requires driver license' : '') . ', ' + . $angeltype['contact_name'] . ', ' + . $angeltype['contact_dect'] . ', ' + . $angeltype['contact_email'] + ); + return $angeltype; } /** * Validates a name for angeltypes. * Returns ValidationResult containing validation success and validated name. * - * @param string $name - * Wanted name for the angeltype - * @param AngelType $angeltype - * The angeltype the name is for + * @param string $name Wanted name for the angeltype + * @param array $angeltype The angeltype the name is for + * * @return ValidationResult result and validated name */ -function AngelType_validate_name($name, $angeltype) { - $name = strip_item($name); - if ($name == "") { - return new ValidationResult(false, ""); - } - if ($angeltype != null && isset($angeltype['id'])) { - $valid = sql_num_query(" - SELECT * - FROM `AngelTypes` - WHERE `name`='" . sql_escape($name) . "' - AND NOT `id`='" . sql_escape($angeltype['id']) . "' - LIMIT 1") == 0; +function AngelType_validate_name($name, $angeltype) +{ + $name = strip_item($name); + if ($name == '') { + return new ValidationResult(false, ''); + } + if ($angeltype != null && isset($angeltype['id'])) { + $valid = (count(DB::select(' + SELECT `id` + FROM `AngelTypes` + WHERE `name`=? + AND NOT `id`=? + LIMIT 1 + ', [$name, $angeltype['id']])) == 0); + return new ValidationResult($valid, $name); + } + $valid = (count(DB::select(' + SELECT `id` + FROM `AngelTypes` + WHERE `name`=? + LIMIT 1', [$name])) == 0); return new ValidationResult($valid, $name); - } - $valid = sql_num_query(" - SELECT `id` - FROM `AngelTypes` - WHERE `name`='" . sql_escape($name) . "' - LIMIT 1") == 0; - return new ValidationResult($valid, $name); } /** * Returns all angeltypes and subscription state to each of them for given user. * - * @param User $user + * @param array $user + * @return array */ -function AngelTypes_with_user($user) { - $result = sql_select(" - SELECT `AngelTypes`.*, - `UserAngelTypes`.`id` as `user_angeltype_id`, +function AngelTypes_with_user($user) +{ + return DB::select(' + SELECT `AngelTypes`.*, + `UserAngelTypes`.`id` AS `user_angeltype_id`, `UserAngelTypes`.`confirm_user_id`, `UserAngelTypes`.`supporter` - FROM `AngelTypes` - LEFT JOIN `UserAngelTypes` ON `AngelTypes`.`id`=`UserAngelTypes`.`angeltype_id` - AND `UserAngelTypes`.`user_id`=" . $user['UID'] . " - ORDER BY `name`"); - if ($result === false) { - engelsystem_error("Unable to load angeltypes."); - } - return $result; + FROM `AngelTypes` + LEFT JOIN `UserAngelTypes` ON `AngelTypes`.`id`=`UserAngelTypes`.`angeltype_id` + AND `UserAngelTypes`.`user_id` = ? + ORDER BY `name`', [$user['UID']]); } /** * Returns all angeltypes. + * + * @return array */ -function AngelTypes() { - $result = sql_select(" - SELECT * - FROM `AngelTypes` - ORDER BY `name`"); - if ($result === false) { - engelsystem_error("Unable to load angeltypes."); - } - return $result; +function AngelTypes() +{ + return DB::select(' + SELECT * + FROM `AngelTypes` + ORDER BY `name`'); } /** * Returns AngelType id array + * + * @return array */ -function AngelType_ids() { - $result = sql_select("SELECT `id` FROM `AngelTypes`"); - if ($result === false) { - engelsystem_error("Unable to load angeltypes."); - } - return select_array($result, 'id', 'id'); +function AngelType_ids() +{ + $result = DB::select('SELECT `id` FROM `AngelTypes`'); + return select_array($result, 'id', 'id'); } /** * Returns angelType by id. * - * @param $angeltype_id angelType - * ID + * @param int $angeltype_id angelType ID + * @return array|null */ -function AngelType($angeltype_id) { - $angelType_source = sql_select("SELECT * FROM `AngelTypes` WHERE `id`='" . sql_escape($angeltype_id) . "'"); - if ($angelType_source === false) { - engelsystem_error("Unable to load angeltype."); - } - if (count($angelType_source) > 0) { - return $angelType_source[0]; - } - return null; +function AngelType($angeltype_id) +{ + return DB::selectOne( + 'SELECT * FROM `AngelTypes` WHERE `id`=?', + [$angeltype_id] + ); } - -?> |