"; 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 .= ""; } $ret .= ""; } $ret .= "
" . $row[$key] . "
"; 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