fossasia/engelsystem

View on GitHub
includes/model/UserAngelTypes_model.php

Summary

Maintainability
A
0 mins
Test Coverage
<?php
/**
* User angeltypes model
*/
 
/**
* List users angeltypes.
*
* @param User $user
*/
function User_angeltypes($user) {
return sql_select("
SELECT `AngelTypes`.*, `UserAngelTypes`.`confirm_user_id`, `UserAngelTypes`.`coordinator`
FROM `UserAngelTypes`
JOIN `AngelTypes` ON `UserAngelTypes`.`angeltype_id` = `AngelTypes`.`id`
WHERE `UserAngelTypes`.`user_id`='" . sql_escape($user['UID']) . "'
");
}
 
/**
* Gets unconfirmed user angeltypes for angeltypes of which the given user is a coordinator.
*
* @param User $user
*/
function User_unconfirmed_AngelTypes($user) {
return sql_select("
SELECT
`UserAngelTypes`.*,
`AngelTypes`.`name`,
count(`UnconfirmedMembers`.`user_id`) as `count`
FROM `UserAngelTypes`
JOIN `AngelTypes` ON `UserAngelTypes`.`angeltype_id`=`AngelTypes`.`id`
JOIN `UserAngelTypes` as `UnconfirmedMembers` ON `UserAngelTypes`.`angeltype_id`=`UnconfirmedMembers`.`angeltype_id`
WHERE `UserAngelTypes`.`user_id`='" . sql_escape($user['UID']) . "'
AND `UserAngelTypes`.`coordinator`=TRUE
AND `AngelTypes`.`restricted`=TRUE
AND `UnconfirmedMembers`.`confirm_user_id` IS NULL
GROUP BY `UserAngelTypes`.`angeltype_id`
ORDER BY `AngelTypes`.`name`");
}
 
/**
* Returns true if user is angeltype coordinator or has privilege admin_user_angeltypes.
*
* @param User $user
* @param AngelType $angeltype
*/
function User_is_AngelType_coordinator($user, $angeltype) {
return (sql_num_query("
SELECT `id`
FROM `UserAngelTypes`
WHERE `user_id`='" . sql_escape($user['UID']) . "'
AND `angeltype_id`='" . sql_escape($angeltype['id']) . "'
AND `coordinator`=TRUE
LIMIT 1") > 0) || in_array('admin_user_angeltypes', privileges_for_user($user['UID']));
}
 
/**
* Add or remove coordinator rights.
*
* @param int $user_angeltype_id
* @param bool $coordinator
*/
function UserAngelType_update($user_angeltype_id, $coordinator) {
return sql_query("
UPDATE `UserAngelTypes`
SET `coordinator`=" . sql_bool($coordinator) . "
WHERE `id`='" . sql_escape($user_angeltype_id) . "'
LIMIT 1");
}
 
/**
* Delete all unconfirmed UserAngelTypes for given Angeltype.
*
* @param int $angeltype_id
*/
function UserAngelTypes_delete_all($angeltype_id) {
return sql_query("
DELETE FROM `UserAngelTypes`
WHERE `angeltype_id`='" . sql_escape($angeltype_id) . "'
AND `confirm_user_id` IS NULL");
}
 
/**
* Confirm all unconfirmed UserAngelTypes for given Angeltype.
*
* @param int $angeltype_id
* @param User $confirm_user
*/
function UserAngelTypes_confirm_all($angeltype_id, $confirm_user) {
return sql_query("
UPDATE `UserAngelTypes`
SET `confirm_user_id`='" . sql_escape($confirm_user['UID']) . "'
WHERE `angeltype_id`='" . sql_escape($angeltype_id) . "'
AND `confirm_user_id` IS NULL");
}
 
/**
* Confirm an UserAngelType with confirming user.
*
* @param int $user_angeltype_id
* @param User $confirm_user
*/
function UserAngelType_confirm($user_angeltype_id, $confirm_user) {
return sql_query("
UPDATE `UserAngelTypes`
SET `confirm_user_id`='" . sql_escape($confirm_user['UID']) . "'
WHERE `id`='" . sql_escape($user_angeltype_id) . "'
LIMIT 1");
}
 
/**
* Delete an UserAngelType.
*
* @param UserAngelType $user_angeltype
*/
function UserAngelType_delete($user_angeltype) {
return sql_query("
DELETE FROM `UserAngelTypes`
WHERE `id`='" . sql_escape($user_angeltype['id']) . "'
LIMIT 1");
}
 
/**
* Create an UserAngelType.
*
* @param User $user
* @param Angeltype $angeltype
*/
function UserAngelType_create($user, $angeltype) {
$result = sql_query("
INSERT INTO `UserAngelTypes` SET
`user_id`='" . sql_escape($user['UID']) . "',
`angeltype_id`='" . sql_escape($angeltype['id']) . "'");
if ($result === false)
return false;
return sql_id();
}
 
/**
* Get an UserAngelType by its id.
*
* @param int $user_angeltype_id
*/
function UserAngelType($user_angeltype_id) {
$angeltype = sql_select("
SELECT *
FROM `UserAngelTypes`
WHERE `id`='" . sql_escape($user_angeltype_id) . "'
LIMIT 1");
if ($angeltype === false)
return false;
if (count($angeltype) == 0)
return null;
return $angeltype[0];
}
 
/**
* Get an UserAngelType by user and angeltype.
*
* @param User $user
* @param Angeltype $angeltype
*/
function UserAngelType_by_User_and_AngelType($user, $angeltype) {
$angeltype = sql_select("
SELECT *
FROM `UserAngelTypes`
WHERE `user_id`='" . sql_escape($user['UID']) . "'
AND `angeltype_id`='" . sql_escape($angeltype['id']) . "'
LIMIT 1");
if ($angeltype === false)
return false;
if (count($angeltype) == 0)
return null;
return $angeltype[0];
}
 
/**
* Create an UserAngelType.
*
* @param User $user_id
* @param Angeltype $selected_angel_type_id
*/
function insert_UserAngelTypes($user_id, $selected_angel_type_id) {
return sql_query("INSERT INTO `UserAngelTypes` SET `user_id`='" . sql_escape($user_id) . "', `angeltype_id`='" . sql_escape($selected_angel_type_id) . "'");
}
 
/**
* Insert an UserAngelType.
*
* @param User $user_id
* @param Angeltype $selected_type_id
*/
function inserts_user_angeltype($user_id, $selected_type_id) {
return sql_query("INSERT INTO `UserAngelTypes` (`user_id`, `angeltype_id`) VALUES ('" . sql_escape($user_id) . "', '" . sql_escape($selected_type_id) . "')");
}
 
/**
* Return Count of UserAngelType.
*
* @param Angeltype $selected_type_id
* @param User $user_id
*/
function counts_user_angeltype($selected_type_id, $user_id) {
return sql_num_query("SELECT * FROM `UserAngelTypes` INNER JOIN `AngelTypes` ON `AngelTypes`.`id` = `UserAngelTypes`.`angeltype_id` WHERE `angeltype_id` = '" . sql_escape($selected_type_id) . "' AND `user_id` = '" . sql_escape($user_id) . "' ");
}
 
/**
* Return UserAngelType.
*
* @param Angeltype $type_id
* @param User $uid
*/
function selects_user_angeltype($type_id, $uid) {
return sql_select("SELECT * FROM `UserAngelTypes` JOIN `AngelTypes` ON (`UserAngelTypes`.`angeltype_id` = `AngelTypes`.`id`) WHERE `AngelTypes`.`id` = '" . sql_escape($type_id) . "' AND (`AngelTypes`.`restricted` = 0 OR (`UserAngelTypes`.`user_id` = '" . sql_escape($uid) . "' AND NOT `UserAngelTypes`.`confirm_user_id` IS NULL)) LIMIT 1");
}
 
?>