";
foreach ($anArray as $row) {
if (!is_array($anArray)) {
continue;
}
$ret .= "
";
foreach ($row as $entry) {
$ret .= "| {$entry} | ";
}
$ret .= "
";
}
$ret .= "";
return $ret;
}
function arrayKeyed2htmlTableString($anArray, $keyList)
{
$ret = "";
if (!is_array($anArray)) {
return "";
}
$ret .= "";
foreach ($anArray as $row) {
if (!is_array($anArray)) {
continue;
}
$ret .= "";
foreach ($keyList as $key) {
$ret .= "| " . $row[$key] . " | ";
}
$ret .= "
";
}
$ret .= "
";
return $ret;
}
/// einem User ein Attribut zuordnen
///
/// @param $aDbConnection PDO-Datenbankverbindung, die benutzt werden soll
/// @param $anUserId ID des Users, der das Attribut erhalten soll
/// @param $anAttributeId ID des zu vergebenden Attributes
///
/// - Es erfolgt keine Kontrolle, ob:
/// - die AttributId überhaupt existiert,
/// - ob die UserId überhaupt existiert,
/// - ob der User das Attribut bereits hat,
function giveUserAnUserAttributeById($anUserId, $anAttributeId)
{
withdrawUsersAttribute($anUserId, $anAttributeId);
try {
$queryString =
"INSERT INTO `wkParticipo_user<=>userAttributes` (userId, attributeId) VALUES (:userId, :attributeId);";
$bindArray = [
":userId" => [
"value" => $anUserId,
"data_type" => PDO::PARAM_INT,
],
":attributeId" => [
"value" => $anAttributeId,
"data_type" => PDO::PARAM_INT,
],
];
dbConnector::query($queryString, $bindArray);
} catch (PDOException $db_error) {
print "Error!: " .
$db_error->getMessage() .
"
queryString: " .
$queryString .
"
";
var_dump($bindArray);
}
return;
}
/// einem User ein Attribut entziehen
function withdrawUsersAttribute($anUserId, $anAttributeId, $limit = null)
{
try {
// Variablen für das Binden an die Query vorbereiten
// inklusive Validierung der Werte
$bindArray = [];
$anUserId = filterId($anUserId);
if ($anUserId !== null) {
$bindArray[":userId"] = [
"value" => $anUserId,
"data_type" => PDO::PARAM_INT,
];
} else {
throw new InvalidArgumentException(
"withdrawUsersAttribute: userId must be positive integer!",
);
}
$anAttributeId = filterId($anAttributeId);
if ($anAttributeId !== null) {
$bindArray[":attributeId"] = [
"value" => $anAttributeId,
"data_type" => PDO::PARAM_INT,
];
} else {
throw new InvalidArgumentException(
"withdrawUsersAttribute: attributeid must be positive integer",
);
}
$limit = filterCount($limit);
if ($limit !== null) {
$bindArray[":limit"] = [
"value" => $limit,
"data_type" => PDO::PARAM_INT,
];
}
// Zusammenstellen der Query
$queryString =
"DELETE FROM `wkParticipo_user<=>userAttributes` " .
"WHERE `userId`=:userId " .
"AND `attributeId`=:attributeId" .
($limit !== null ? " LIMIT :limit" : "") .
";";
dbConnector::query($queryString, $bindArray);
} catch (PDOException $db_error) {
print "Error!: " .
$db_error->getMessage() .
"
queryString: " .
$queryString .
"
";
var_dump($bindArray);
}
return;
} // Ende withdrawUsersAttribute
$actions = ["giveUserAnUserAttributeById", "withdrawUsersAttribute"];
if (isset($_GET["action"])) {
switch ($_GET["action"]) {
case "giveUserAnUserAttributeById":
try {
giveUserAnUserAttributeById(
intval($_GET["userId"]),
intval($_GET["attributeId"]),
);
} catch (Exception $e) {
print "UPS: " . $e->getMessage();
}
break;
case "withdrawUsersAttribute":
try {
withdrawUsersAttribute(
intval($_GET["userId"]),
intval($_GET["attributeId"]),
);
} catch (Exception $e) {
print "UPS: " . $e->getMessage();
}
break;
default:
echo "Ungültige Aktion (" . $_GET["action"] . ") erwünscht!";
break;
}
}
$users = dbConnector::query("SELECT * FROM wkParticipo_Users;");
$userAttributes = dbConnector::query(
"SELECT * FROM wkParticipo_userAttributes;",
);
?>
Attribute
" . $userAttribute["name"] . "";
// get the users with the attribute by a cross join
// remark: there are two id-columns, from which one gets lost (the one from the user) in the phpArray.
// so we (have to) use the userId from the attribute
// in short attributed => userId, unattributed => id (is the id of the user)
$attributedUsers = dbConnector::query(
"SELECT * FROM wkParticipo_Users, `wkParticipo_user<=>userAttributes` WHERE wkParticipo_Users.id = `wkParticipo_user<=>userAttributes`.userId AND `wkParticipo_user<=>userAttributes`.attributeId = :attributeId;",
[
":attributeId" => [
"value" => $userAttribute["id"],
"data_type" => PDO::PARAM_INT,
],
],
);
// Add a withthraw link entry
foreach ($attributedUsers as $index => $user) {
$attributedUsers[$index] += [
"withdrawLink" =>
"withdraw " .
$userAttribute["name"] .
"",
];
}
echo "have it
" .
arrayKeyed2htmlTableString($attributedUsers, [
"userId",
"name",
"vorname",
"withdrawLink",
]);
$attributedKeyList = [];
foreach ($attributedUsers as $user) {
$attributedKeyList[] = $user["userId"];
}
$unattributedUsers = [];
foreach ($users as $user) {
if (!in_array($user["id"], $attributedKeyList)) {
$unattributedUsers[] = $user;
}
}
// Add a giveAttribute link entry to every user
foreach ($unattributedUsers as $index => $user) {
$unattributedUsers[$index] += [
"giveAttributeLink" =>
"give Attribute " .
$userAttribute["name"] .
"",
];
}
echo "give it
" .
arrayKeyed2htmlTableString($unattributedUsers, [
"id",
"name",
"vorname",
"giveAttributeLink",
]);
} ?>
User