WIP: bring participo back - consistent use of bootstrap - formatting -
phpstan level 0 error free - fixes for kyu subpage - move mams into participo framework - remove legacy `lib/db.php` usage - add attributer admin function - add newsposter - fixing apiKey creation
This commit is contained in:
300
homepage/participo/attributer.php
Normal file
300
homepage/participo/attributer.php
Normal file
@@ -0,0 +1,300 @@
|
||||
<?php
|
||||
require_once "bootstrap.php";
|
||||
|
||||
// libraries
|
||||
require_once "participoLib/participo.php";
|
||||
|
||||
// init the participo framework
|
||||
participo::init($CONFIG["cwsvJudo"], $SECRETS["cwsvJudo"]);
|
||||
|
||||
// this is an admin function: If user is not an admin redirect back to main
|
||||
if (!participo::isUserAdmin()) {
|
||||
header("Location: /participo", true, 301);
|
||||
}
|
||||
|
||||
/// Ein Array als htmlTabelle darstellen
|
||||
function array2htmlTableString($anArray)
|
||||
{
|
||||
$ret = "";
|
||||
if (!is_array($anArray)) {
|
||||
return "";
|
||||
}
|
||||
$ret .= "<table>";
|
||||
foreach ($anArray as $row) {
|
||||
if (!is_array($anArray)) {
|
||||
continue;
|
||||
}
|
||||
$ret .= "<tr>";
|
||||
foreach ($row as $entry) {
|
||||
$ret .= "<td>{$entry}</td>";
|
||||
}
|
||||
$ret .= "</tr>";
|
||||
}
|
||||
$ret .= "</table>";
|
||||
return $ret;
|
||||
}
|
||||
|
||||
function arrayKeyed2htmlTableString($anArray, $keyList)
|
||||
{
|
||||
$ret = "";
|
||||
if (!is_array($anArray)) {
|
||||
return "";
|
||||
}
|
||||
$ret .= "<table>";
|
||||
foreach ($anArray as $row) {
|
||||
if (!is_array($anArray)) {
|
||||
continue;
|
||||
}
|
||||
$ret .= "<tr>";
|
||||
foreach ($keyList as $key) {
|
||||
$ret .= "<td>" . $row[$key] . "</td>";
|
||||
}
|
||||
$ret .= "</tr>";
|
||||
}
|
||||
$ret .= "</table>";
|
||||
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() .
|
||||
"<br/>queryString: " .
|
||||
$queryString .
|
||||
"<br />";
|
||||
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() .
|
||||
"<br/>queryString: " .
|
||||
$queryString .
|
||||
"<br />";
|
||||
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;",
|
||||
);
|
||||
?>
|
||||
<html>
|
||||
<head>
|
||||
</head>
|
||||
<body>
|
||||
<form>
|
||||
<label>Action:
|
||||
<select name="action">
|
||||
<option disabled selected value> -- Aktion auswählen -- </option>
|
||||
<?php foreach ($actions as $action) {
|
||||
echo "<option>{$action}</option>";
|
||||
} ?>
|
||||
</select>
|
||||
</label>
|
||||
<label>User:
|
||||
<select name="userId">
|
||||
<option disabled selected value> -- User auswählen -- </option>
|
||||
<?php foreach ($users as $user) {
|
||||
echo "<option value=\"" .
|
||||
$user["id"] .
|
||||
"\">" .
|
||||
$user["loginName"] .
|
||||
"</option>";
|
||||
} ?>
|
||||
</select>
|
||||
</label>
|
||||
<label>Attribut:
|
||||
<select name="attributeId">
|
||||
<option disabled selected value> -- Attribut auswählen -- </option>
|
||||
<?php foreach ($userAttributes as $userAttribute) {
|
||||
echo "<option value=\"" .
|
||||
$userAttribute["id"] .
|
||||
"\">" .
|
||||
$userAttribute["name"] .
|
||||
"</option>";
|
||||
} ?>
|
||||
</select>
|
||||
</label>
|
||||
<button type="submit">Eingaben absenden</button>
|
||||
</form>
|
||||
<h1>Attribute</h1>
|
||||
<?php echo array2htmlTableString($userAttributes); ?>
|
||||
<?php foreach ($userAttributes as $userAttribute) {
|
||||
echo "<h2>" . $userAttribute["name"] . "</h2>";
|
||||
// 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" =>
|
||||
"<a href=\"?action=withdrawUsersAttribute&userId=" .
|
||||
$user["userId"] .
|
||||
"&attributeId=" .
|
||||
$userAttribute["id"] .
|
||||
"\">withdraw " .
|
||||
$userAttribute["name"] .
|
||||
"</a>",
|
||||
];
|
||||
}
|
||||
echo "<h3>have it</h3>" .
|
||||
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" =>
|
||||
"<a href=\"?action=giveUserAnUserAttributeById&userId=" .
|
||||
$user["id"] .
|
||||
"&attributeId=" .
|
||||
$userAttribute["id"] .
|
||||
"\">give Attribute " .
|
||||
$userAttribute["name"] .
|
||||
"</a>",
|
||||
];
|
||||
}
|
||||
echo "<h3>give it</h3>" .
|
||||
arrayKeyed2htmlTableString($unattributedUsers, [
|
||||
"id",
|
||||
"name",
|
||||
"vorname",
|
||||
"giveAttributeLink",
|
||||
]);
|
||||
} ?>
|
||||
|
||||
<h1>User</h1>
|
||||
<?php echo array2htmlTableString($users); ?>
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user