diff --git a/homepage/machs/auth.php b/homepage/machs/auth.php new file mode 100644 index 0000000..1ab0da4 --- /dev/null +++ b/homepage/machs/auth.php @@ -0,0 +1,16 @@ +". + "Datum: ".date("Y-m-d")."
". + "Angemeldet als ".htmlspecialchars($_SESSION['user']['username'])." angemeldet.
". + "Sitzung beenden". + ""; + } +?> diff --git a/homepage/machs/config.php b/homepage/machs/config.php new file mode 100644 index 0000000..297fb01 --- /dev/null +++ b/homepage/machs/config.php @@ -0,0 +1,8 @@ + diff --git a/homepage/machs/images.d/Judo_Safari.png b/homepage/machs/images.d/Judo_Safari.png new file mode 100644 index 0000000..1f9e678 Binary files /dev/null and b/homepage/machs/images.d/Judo_Safari.png differ diff --git a/homepage/machs/images.d/original_Safari_Adler.jpg b/homepage/machs/images.d/original_Safari_Adler.jpg new file mode 100644 index 0000000..03e6cce Binary files /dev/null and b/homepage/machs/images.d/original_Safari_Adler.jpg differ diff --git a/homepage/machs/images.d/original_Safari_Bär.jpg b/homepage/machs/images.d/original_Safari_Bär.jpg new file mode 100644 index 0000000..d1fd8ce Binary files /dev/null and b/homepage/machs/images.d/original_Safari_Bär.jpg differ diff --git a/homepage/machs/images.d/original_Safari_Fuchs.jpg b/homepage/machs/images.d/original_Safari_Fuchs.jpg new file mode 100644 index 0000000..57bbb47 Binary files /dev/null and b/homepage/machs/images.d/original_Safari_Fuchs.jpg differ diff --git a/homepage/machs/images.d/original_Safari_Känguru.jpg b/homepage/machs/images.d/original_Safari_Känguru.jpg new file mode 100644 index 0000000..4148959 Binary files /dev/null and b/homepage/machs/images.d/original_Safari_Känguru.jpg differ diff --git a/homepage/machs/images.d/original_Safari_Panther.jpg b/homepage/machs/images.d/original_Safari_Panther.jpg new file mode 100644 index 0000000..b1299dc Binary files /dev/null and b/homepage/machs/images.d/original_Safari_Panther.jpg differ diff --git a/homepage/machs/images.d/original_Safari_Schlange.jpg b/homepage/machs/images.d/original_Safari_Schlange.jpg new file mode 100644 index 0000000..13d77d5 Binary files /dev/null and b/homepage/machs/images.d/original_Safari_Schlange.jpg differ diff --git a/homepage/machs/index.php b/homepage/machs/index.php new file mode 100644 index 0000000..d613c98 --- /dev/null +++ b/homepage/machs/index.php @@ -0,0 +1,57 @@ +getMessage() . "
queryString: ".$queryString."
"; var_dump($bindArray); + } + +?> + + + + + + + Achievements + + + + + + + + + +

Achievements

+ + + + diff --git a/homepage/machs/lib/achievementsLib.php b/homepage/machs/lib/achievementsLib.php new file mode 100644 index 0000000..e81bfc7 --- /dev/null +++ b/homepage/machs/lib/achievementsLib.php @@ -0,0 +1,36 @@ +"; + if( !empty($anRetMessage['error']) ){ + $retHtmlString .= "
"; + $retHtmlString .= "ERROR:
"; + $retHtmlString .= $anRetMessage['error']; + $retHtmlString .= "
"; + } + if( !empty($anRetMessage['warning']) ){ + $retHtmlString .= "
"; + $retHtmlString .= "WARNING:
"; + $retHtmlString .= $anRetMessage['warning']; + $retHtmlString .= "
"; + } + if( !empty($anRetMessage['notice']) ){ + $retHtmlString .= "
"; + $retHtmlString .= "Info:
"; + $retHtmlString .= $anRetMessage['notice']; + $retHtmlString .= "
"; + } + if( !empty($anRetMessage['success']) ){ + $retHtmlString .= "
"; + $retHtmlString .= "SUCCESS:
"; + $retHtmlString .= $anRetMessage['success']; + $retHtmlString .= "
"; + } + $retHtmlString .= ""; +} +// print_r($anRetMessage); +return $retHtmlString; +} +?> diff --git a/homepage/machs/local/.htaccess b/homepage/machs/local/.htaccess new file mode 100644 index 0000000..3a42882 --- /dev/null +++ b/homepage/machs/local/.htaccess @@ -0,0 +1 @@ +Deny from all diff --git a/homepage/machs/local/achievementsConf.php b/homepage/machs/local/achievementsConf.php new file mode 100644 index 0000000..3517089 --- /dev/null +++ b/homepage/machs/local/achievementsConf.php @@ -0,0 +1,10 @@ + diff --git a/homepage/machs/local/dbConf.php b/homepage/machs/local/dbConf.php new file mode 100644 index 0000000..97efeba --- /dev/null +++ b/homepage/machs/local/dbConf.php @@ -0,0 +1,8 @@ + diff --git a/homepage/machs/login.php b/homepage/machs/login.php new file mode 100644 index 0000000..214d393 --- /dev/null +++ b/homepage/machs/login.php @@ -0,0 +1,101 @@ +connect_error) { + $message['error'] = 'Datenbankverbindung fehlgeschlagen: ' . $mysqli->connect_error; + } else { + $query = sprintf( + "SELECT id, loginName, pwHash, config FROM wkParticipo_Users WHERE loginName = '%s'", + $mysqli->real_escape_string($_POST['f']['username']) + ); + $result = $mysqli->query($query); + if ($row = $result->fetch_array(MYSQLI_ASSOC)) { + if( password_verify( $_POST['f']['password'], $row['pwHash']) ){ + session_start(); + $_SESSION = array( + 'login' => true, + 'user' => array( + 'username' => $row['loginName'], + 'userId' => $row['id'], + 'userConfig' => json_decode($row['config'], true) + ), + ); + $message['success'] = 'Anmeldung erfolgreich, weiter zum Inhalt.'; + header('Location: http://' . $_SERVER['HTTP_HOST'] . '/achievements?user=' . $_POST['f']['username']); + } else { + sleep(1); + $message['error'] = 'Das Kennwort ist nicht korrekt.'; + } + } + } +return $message; +} + + +if (isset($_SESSION['login'])) { + header('Location: http://' . $_SERVER['HTTP_HOST'] . '/index.php'); +} +else{ + if (!empty($_POST)) { + if ( + empty($_POST['f']['username']) || + empty($_POST['f']['password']) + ) { + $message['error'] = 'Es wurden nicht alle Felder ausgefüllt.'; + } else { + + $message = checkCredentials($_POST['f']['username'], $_POST['f']['password'], $db_server, $db_user, $db_password, $db_name); + if( !isset($message['error']) ) + $message['notice'] = "Achievement-System der Judoka des Chemnitzer WSV"; + } + } +} +?> + + + + + Wettkampfplanung - Login + + + + + + +

Achievementsystem der Judoka des Chemnitzer WSV

+ +
+
+ Benutzerdaten +
+ + /> +
+
+ + +
+
+
+
+ +
+
+
Hinweise + +
+
+ + diff --git a/homepage/machs/machs.php b/homepage/machs/machs.php new file mode 100644 index 0000000..8d293fa --- /dev/null +++ b/homepage/machs/machs.php @@ -0,0 +1,203 @@ +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

+ + +