user` (userId, achievementId) VALUES (:userId, :achievementId);", array( ':userId' => array('value'=>$anUserId, 'data_type'=>PDO::PARAM_INT), ':achievementId'=> array('value'=>$anAchievementId, 'data_type'=>PDO::PARAM_INT) ) ); } catch(PDOException $db_error){ print "Error!: " . $db_error->getMessage() . "
queryString: ".$queryString."
"; var_dump($bindArray); } return; } /// einem User ein Achievement entziehen function withdrawUsersAchievement($aDbConnection, $anUserId, $anAchievementId, $limit = NULL){ try{ // Variablen für das Binden an die Query vorbereiten // inklusive Validierung der Werte $bindArray = array(); if( is_positive_integer( $anUserId ) ){ $bindArray[':userId'] = array('value'=>$anUserId, 'data_type'=>PDO::PARAM_INT); } else{ throw new InvalidArgumentException("withdrawUsersAchievement: userId must be positive integer!"); } if( is_positive_integer($anAchievementId) ){ $bindArray[':achievementId'] = array('value'=>$anAchievementId, 'data_type'=>PDO::PARAM_INT); } else{ throw new InvalidArgumentException("withdrawUsersAchievement: anAchievementId must be positive integer"); } if( is_positive_integer( $limit ) ){ $bindArray[':limit'] = array('value' => $limit, 'data_type' => PDO::PARAM_INT); } // Zusammenstellen der Query $queryString = "DELETE FROM `achievements<=>user` ". "WHERE `userId`=:userId ". "AND `achievementId`=:achievementId". (is_positive_integer( $limit )?" LIMIT :limit":""). ";"; echo("queryString: ".$queryString."
"); var_dump($bindArray); dbQuery( $aDbConnection, $queryString, $bindArray ); } catch(PDOException $db_error){ print "Error!: " . $db_error->getMessage() . "
queryString: ".$queryString."
"; var_dump($bindArray); } return; }// Ende withdrawUsersAchievement var_dump($_GET); $actions = ["giveUserAnAchievement", "withdrawUsersAchievement"]; $dbConn = getCwsvJudoDbConn(); $dbConn->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION ); if(isset($_GET['action'])){ switch($_GET['action']){ case "giveUserAnAchievement": try{ giveUserAnAchievment($dbConn, intval($_GET['userId']), intval($_GET['achievementId'])); } catch(Exception $e){ print("UPS: ".$e->getMessage()); } break; case "withdrawUsersAchievement": try{ withdrawUsersAchievement($dbConn, intval($_GET['userId']), intval($_GET['achievementId'])); } catch(Exception $e){ print("UPS: ".$e->getMessage()); } break; default: echo("Ungültige Aktion (".$_GET['action'].") erwünscht!"); break; } } $users = dbQuery( $dbConn, "SELECT * FROM cwsvjudo.wkParticipo_Users;" ); $userAchievements = dbQuery( $dbConn, "SELECT * FROM cwsvjudo.achievements;" ); ?>

Attribute

".$userAchievement["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) $achievedUsers = dbQuery( $dbConn, "SELECT * FROM wkParticipo_Users, `achievements<=>user` WHERE wkParticipo_Users.id = `achievements<=>user`.userId AND `achievements<=>user`.achievementId = :achievementId;", array(":achievementId"=>array('value'=>$userAchievement['id'], 'data_type'=>PDO::PARAM_INT)) ); // Add a withthraw link entry foreach($achievedUsers as $index => $user){ $achievedUsers[$index] += ["withdrawLink" => "withdraw ".$userAchievement["name"].""]; } echo( "

have it

".arrayKeyed2htmlTableString($achievedUsers, ["userId", "name", "vorname", "withdrawLink"]) ); $achievedKeyList = []; foreach($achievedUsers as $user){ $achievedKeyList[] = $user["userId"]; } $unachievedUsers = array(); foreach($users as $user){ if(!in_array($user["id"], $achievedKeyList)){ $unachievedUsers[] = $user; } } // Add a giveAttribute link entry to every user foreach($unachievedUsers as $index => $user){ $unachievedUsers[$index] += ["giveAchievementLink" => "give Attribute ".$userAchievement["name"].""]; } echo( "

give it

".arrayKeyed2htmlTableString($unachievedUsers, ["id", "name", "vorname", "giveAchievementLink"]) ); } ?>

User