diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..326c216 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,6 @@ +[submodule "homepage/materialize"] + path = submodules/materialize + url = https://github.com/materializecss/materialize.git +[submodule "homepage/redesign2018/markdownExperiment/zopfli"] + path = submodules/zopfli + url = https://github.com/google/zopfli.git diff --git a/coronaZeit/mdNewsletter.d/2021-05-09-ENDLICH.md b/coronaZeit/mdNewsletter.d/2021-05-09-ENDLICH.md new file mode 100644 index 0000000..8a785cc --- /dev/null +++ b/coronaZeit/mdNewsletter.d/2021-05-09-ENDLICH.md @@ -0,0 +1,34 @@ +--- +title: coronaNewsletter 2021-05-10 +--- + +Hallo liebe Eltern, +Hallo liebe Judoka, + +das erste gemeinsame Training nach so langer Zeit ist sehr gut +angekommen. Natürlich würde ich mich freuen das gemeinsame Training +vor Ort wieder im Trainingsplan zu verankern. Die Einschränkung auf +Gruppen von fünf Kindern stellt allerdings eine Herausforderung dar. +Um den Schlüssel 1:5 aufrecht zu erhalten, wird vorraussichtlich die +Mithilfe von Eltern benötigt. Es würde also sehr helfen, wenn sich +Eltern - wenn möglich abwechselnd - an der Aufsicht während des +Trainings beteiligen. Den für die Aufsicht geforderten Corona Test +würde ich stellen. + +Für die bessere Planung - gerade der Anzahl der nötigen +Aufsichtspersonen - bitte ich für das Freitagstraining ein Einschreiben +in unseren [Planer][1]. + +Für diese Woche wird das Training Mittwoch Online- und Freitag als +Freiluft-Variante stattfinden: + +- Mittwoch, 12.05.2021, 17:00 Uhr + - [Link](https://webroom.hrz.tu-chemnitz.de/gl/nic-s0t-f4i-biq) + - Passwort: 320360 +- Freitag, 14.05.2021, 17:00 Uhr + - [Treppe][2] + +MsG marko + +[1]: http://cwsvjudo.bplaced.net/pages/desktop/wkParticipo +[2]: https://www.openstreetmap.org/?mlat=50.80739&mlon=12.87792#map=17/50.80708/12.87956 diff --git a/coronaZeit/mdNewsletter.d/2021-05-16-TreppeDieDritte.md b/coronaZeit/mdNewsletter.d/2021-05-16-TreppeDieDritte.md new file mode 100644 index 0000000..105656b --- /dev/null +++ b/coronaZeit/mdNewsletter.d/2021-05-16-TreppeDieDritte.md @@ -0,0 +1,31 @@ +--- +title: coronaNewsletter 2021-05-16 +--- + +Hallo liebe Eltern, +Hallo liebe Judoka, + +das Wetter war uns letzten Freitag gerade noch einmal gut gesonnen. Für +den nächsten Freitag sieht es ähnlich aus: Am Nachmittag soll es +freundlich werden. Es wird also spannend, aber diese Woche ist das +Training wieder Mittwoch als Online- und Freitag als Open Air +Veranstaltung geplant: + +- Mittwoch, 19.05.2021, 17:00 Uhr + - [Link](https://webroom.hrz.tu-chemnitz.de/gl/nic-s0t-f4i-biq) + - Passwort: 320360 +- Freitag, 21.05.2021, 17:00 Uhr + - [Treppe][2] + +Ein bisschen stockend ist noch die Anmeldung zu den Präsenztrainings. +Ich muss nochmal darauf hinweisen, dass derzeit für fünf Kinder je ein +Übungsleiter abgestellt werden muss. Damit im Vorfeld genügend +Übungsleiter organisiert werden können, ist die Anzahl der +teilnehmenden Kinder vonnöten. Deshalb hier nochmal die dringende +Bitte, mir Bescheid zugeben (am besten über unseren [Planer][1]), mit +wievielen Kindern gerechnet werden kann. + +MsG marko + +[1]: http://cwsvjudo.bplaced.net/pages/desktop/wkParticipo +[2]: https://www.openstreetmap.org/?mlat=50.80739&mlon=12.87792#map=17/50.80708/12.87956 diff --git a/homepage/machs/index.php b/homepage/machs/index.php index 4daa4dd..f657d9c 100644 --- a/homepage/machs/index.php +++ b/homepage/machs/index.php @@ -1,71 +1,113 @@ - + - - - + + + + - + Achievements - + - + - - - - - - + + Eigene Achievements" ); - echo( "
"); - foreach($achievementGroups as $g){ - echo($g->asHtmlCard($_SESSION['user']['userId'])); - } - echo("
" ); + echo( htmlUsersUploadBox($dbConnection, $_SESSION['user']['userId']) ); + echo(htmlAchievementListForUser( + $dbConnection, + $achievementGroups, + $_SESSION['user']['userId'], + getUsersAchievements($dbConnection, $_SESSION['user']['userId']) + )); } ?> - ".$k['vorname']." ".$k['name']."" ); - echo( "
"); - foreach($achievementGroups as $g){ - echo($g->asHtmlCard($k['kidId'], ['noForm'=>false])); + ".$k['vorname']." ".$k['name']."" ); + echo( htmlUsersUploadBox($dbConnection, $k['kidId']) ); + echo(htmlAchievementListForUser( + $dbConnection, + $achievementGroups, + $k['id'], + getUsersAchievements($dbConnection, $k['id']) + )); } - echo("
" ); } - } ?> - + +Add Achievements"); + echo(htmlAddAchievementBox()); + + echo("

Update Achievements

"); + $achievements = getAchievements($dbConnection); + foreach($achievements as $a){ + echo( htmlUpdateAchievementBox( + $a['id'], + $a['name'], + $a['description'], + $a['rootId'], + $a['level'] + )); + echo("
"); + } + } + ?> + + - diff --git a/homepage/mams/index.php b/homepage/mams/index.php index b6c87d1..63bfa03 100644 --- a/homepage/mams/index.php +++ b/homepage/mams/index.php @@ -1,51 +1,50 @@
- - - - - - - -
+ + + + + + + + + + Corona-Anwesenheitsliste der Judoka des Chemnitzer WSV + -

Corona-Anwesenheitsliste der Judoka des Chemnitzer WSV

-

Anwesenheiten hinzufügen

+ + +

Anwesenheiten hinzufügen

+
@@ -56,7 +55,28 @@ $lastTrainingDay = max($dateLastWendsday, $dateLastFriday);
-

Anwesenheiten

+ +

Corona-Trainee hinzufügen

+ Added user."); + }else{ + echo("
ERROR
"); + } + } + ?> +
+ + + + + + + +
+ +

Anwesenheiten

Sende Anwesenheitsliste an eMail

@@ -86,15 +106,5 @@ $lastTrainingDay = max($dateLastWendsday, $dateLastFriday); echo(""); } ?> -

Trainee hinzufügen

- - - - - - - - -
diff --git a/homepage/mams/lib/api.php b/homepage/mams/lib/api.php index 3b54862..6cd3bdf 100644 --- a/homepage/mams/lib/api.php +++ b/homepage/mams/lib/api.php @@ -9,14 +9,31 @@ function processPostData($db, $post, $redirectLocation = "."){ updateCoronaData($db, $post['userId'], $post['columnName'], $post['columnValue']); } if($post['action'] == "addCoronaUser"){ - addCoronaUser( - $db, - $post['name'], - $post['vorname'], - $post['corona_PLZ'], - $post['corona_telephon'], - $post['corona_eMail'] - ); + if( + array_keys_exist( + $post, + ['name', 'vorname', 'corona_PLZ', 'corona_telephon', 'corona_eMail'] + ) + && isValid($post['corona_PLZ'], "plz") + && isValid($post['corona_telephon'], "phonenumber") + && isValid($post['corona_eMail'], "email") + // && isValid($post['name'], "name") + // && isValid($post['vorname'], "name") + ){ + addCoronaUser( + $db, + $post['name'], + $post['vorname'], + $post['corona_PLZ'], + $post['corona_telephon'], + $post['corona_eMail'] + ); + $redirectLocation .= "?addCoronaUserSuccess=true"; + } + else{ + $redirectLocation .= "?addCoronaUserSuccess=false"; + } + $redirectLocation .= "#addCoronaUser"; } if($post['action'] == "sendAttandeesPerEmail"){ sendEmail( @@ -78,4 +95,60 @@ function attendancesAssocArray2mdList($attendancesAssocArray, $date=null){ } return $ret; } + +/// Validaing a phone number +/// true if it validates, false if not +function validate_phone_number($phone) +{ + // Allow +, - and . in phone number + $filtered_phone_number = filter_var($phone, FILTER_SANITIZE_NUMBER_INT); + // Remove "-" from number + $phone_to_check = str_replace("-", "", $filtered_phone_number); + // Check the lenght of number + // This can be customized if you want phone number from a specific country + if (strlen($phone_to_check) < 10 || strlen($phone_to_check) > 14) { + return false; + } else { + return true; + } +} + +/// validate different types of input +function isValid($toValidate, $type){ + // for now we disable the name validation: what do i know how people can be called! + // $regexName="/^[A-Z][a-zA-Z]*$/"; + $regexPlz ="/^[0-9]{5}$/"; + switch( $type ){ + case "plz": + return preg_match($regexPlz, $toValidate) > 0; + case "phonenumber": + return validate_phone_number($toValidate); + case "email": + return filter_var($toValidate, FILTER_VALIDATE_EMAIL); + default: + return false; + } + return false; +} + +//! Checks if multiple keys exist in an array +//! +//! @param array $array array to check for key +//! @param array|string $keys keys to check for +//! +//! @return bool true, if *all* keys are set in the array +function array_keys_exist( array $array, $keys ) { + if ( ! is_array( $keys ) ) { + $keys = func_get_args(); + array_shift( $keys ); + } + $count = 0; + foreach ( $keys as $key ) { + if ( isset( $array[$key] ) || array_key_exists( $key, $array ) ) { + $count++; + } + } + + return count( $keys ) === $count; +} ?> diff --git a/homepage/mams/lib/db.php b/homepage/mams/lib/db.php index 9200ae9..cee7aa9 100644 --- a/homepage/mams/lib/db.php +++ b/homepage/mams/lib/db.php @@ -57,8 +57,8 @@ if( empty($someOptions['dontFetch' ]) ) $someOptions['dontFetch' ] = false; $pdoResult = $pdoStatement->execute(); if(!$pdoResult){ echo("Error during dbQuery!\n"); - echo($aDbConnection->errorInfo(); - echo(PDOStatement::errorInfo(); + echo($aDbConnection->errorInfo()); + echo(PDOStatement::errorInfo()); } if($someOptions['dontFetch']){ $ret = NULL; @@ -83,9 +83,6 @@ if( empty($someOptions['dontFetch' ]) ) $someOptions['dontFetch' ] = false; ); } } -//var_dump($ret); -//var_dump($aQueryString); -//var_dump($aBindArray); return $ret; } diff --git a/homepage/mams/lib/mams/materializeInit.php b/homepage/mams/lib/mams/materializeInit.php new file mode 100644 index 0000000..62f5524 --- /dev/null +++ b/homepage/mams/lib/mams/materializeInit.php @@ -0,0 +1,11 @@ + diff --git a/homepage/mams/lib/mams/sidenav.php b/homepage/mams/lib/mams/sidenav.php new file mode 100644 index 0000000..6ca1209 --- /dev/null +++ b/homepage/mams/lib/mams/sidenav.php @@ -0,0 +1,6 @@ + +☰ mams diff --git a/homepage/redesign2018/markdownExperiment/phpLib/cwsvJudo/miscAssis.php b/homepage/redesign2018/markdownExperiment/phpLib/cwsvJudo/miscAssis.php index e89e127..c902b11 100644 --- a/homepage/redesign2018/markdownExperiment/phpLib/cwsvJudo/miscAssis.php +++ b/homepage/redesign2018/markdownExperiment/phpLib/cwsvJudo/miscAssis.php @@ -7,8 +7,8 @@ return (is_numeric($str) && $str > 0 && $str == round($str)); function getPdoDbConnection($hostname, $dbName, $user, $password){ try{ $dbConnection = new PDO( - 'mysql:host='.$hostname.';dbname='.$dbName, - $user, + 'mysql:host='.$hostname.';dbname='.$dbName, + $user, $password ); } @@ -23,8 +23,8 @@ global $cwsvJudoConfig; // Datenbankverbindung bereit stellen try{ $db_connection = new PDO( - 'mysql:host='.$cwsvJudoConfig["db"]["host"].';dbname='.$cwsvJudoConfig["db"]["name"],//.';charset=utf8', - $cwsvJudoConfig["db"]["user"], + 'mysql:host='.$cwsvJudoConfig["db"]["host"].';dbname='.$cwsvJudoConfig["db"]["name"],//.';charset=utf8', + $cwsvJudoConfig["db"]["user"], $cwsvJudoConfig["db"]["password"] ); } @@ -47,7 +47,7 @@ if (is_array($somePossibleEmptyStuff) || $somePossibleEmptyStuff instanceof Trav return null; } -/// Eine als String gegebene Liste kommagetrennter key=value Paare in +/// Eine als String gegebene Liste kommagetrennter key=value Paare in /// ein assoziatives Array überführen function getKeyValueArray($aKeyValueStringList){ $retKeyValueArray = array(); @@ -87,7 +87,7 @@ if( empty($optionsArray['outCharset']) ) $optionsArray['outCharset'] = "UTF-8"; ); $pdoStatementForQuerryingZitat->execute(); $retZitat = $pdoStatementForQuerryingZitat->fetchAll(PDO::FETCH_ASSOC); - + // Zeichensatzkonvertierung foreach($retZitat as &$entry){ array_walk( @@ -127,8 +127,8 @@ if( !file_exists($aJsonFileName) ) return null; if( !(is_array( $someLinkNames ) || is_object( $someLinkNames )) ) return null; return arrayKeyFilter( - json_decode( - file_get_contents($aJsonFileName), + json_decode( + file_get_contents($aJsonFileName), true ), $someLinkNames @@ -162,14 +162,14 @@ function toAscii($str, $replace=array(), $delimiter='-') { return $clean; } +/// Wrapper function for a query to the +/// $aDbConnection connection to a db function dbQuery($aDbConnection, $aQueryString, $aBindArray = array(), $someOptions = array( "dbCharset" => "ISO-8859-1", "outCharset" => "UTF-8" ) ){ -//echo("Doing ".$aQueryString); -var_dump($aBindArray); if( empty($someOptions['dbCharset']) ) $someOptions['dbCharset'] = "ISO-8859-1"; if( empty($someOptions['outCharset']) ) $someOptions['outCharset'] = "UTF-8"; -/// @toDo: Bisher wird nur die Rückgabe konvertiert. Eigentlich muss -/// doch auch die Eingabe konvertiert werden. Aber das jetzt -/// umzustellen wird schwer! Die User m Wettkampfplaner sind ja z.B. +/// @toDo: Bisher wird nur die Rückgabe konvertiert. Eigentlich muss +/// doch auch die Eingabe konvertiert werden. Aber das jetzt +/// umzustellen wird schwer! Die User m Wettkampfplaner sind ja z.B. /// als UTF8 in latin1(?) gespeichert. try{ $pdoStatement = $aDbConnection->prepare( $aQueryString ); @@ -187,7 +187,7 @@ if( empty($someOptions['outCharset']) ) $someOptions['outCharset'] = "UTF-8"; print "Error!: " . $db_error->getMessage() . "
"; return null; } - //var_dump($ret); + // Zeichensatzkonvertierung if( is_array($ret) ){ foreach($ret as &$entry){ diff --git a/homepage/redesign2018/markdownExperiment/phpLib/phpcount b/homepage/redesign2018/markdownExperiment/phpLib/phpcount deleted file mode 160000 index f1d3b54..0000000 --- a/homepage/redesign2018/markdownExperiment/phpLib/phpcount +++ /dev/null @@ -1 +0,0 @@ -Subproject commit f1d3b543d2175a81e95d1233c249cbaba6fd34d4 diff --git a/homepage/redesign2018/markdownExperiment/zopfli b/homepage/redesign2018/markdownExperiment/zopfli deleted file mode 160000 index ae43a8b..0000000 --- a/homepage/redesign2018/markdownExperiment/zopfli +++ /dev/null @@ -1 +0,0 @@ -Subproject commit ae43a8b73827577c4b19b005b6eed81f5cf9bbac diff --git a/homepage/wkParticipo/achievements.php b/homepage/wkParticipo/achievements.php new file mode 100644 index 0000000..6cb9a87 --- /dev/null +++ b/homepage/wkParticipo/achievements.php @@ -0,0 +1,46 @@ +userAttributes` (userId, attributeId) VALUES (:userId, :attributeId);", + "SELECT * FROM cwsvjudo.achievements;" + //array( + // ':userId' => array('value'=>$anUserId, 'data_type'=>PDO::PARAM_INT), + // ':attributeId'=> array('value'=>$anAttributeId, 'data_type'=>PDO::PARAM_INT) + //) + ); + } + catch(PDOException $db_error){ + print "Error!: " . $db_error->getMessage() . "
queryString: ".$queryString."
"; var_dump($bindArray); + } + + +// $query = "WITH SortedList (id, previousId, name, Level) AS ( SELECT Id, ParentId, SomeData, 0 as Level FROM cwsvjudo.achievements WHERE `id` IS 1 UNION ALL SELECT ll.id, ll.previousId, ll.name, Level+1 as Level FROM cwsvjudo.achievements ll INNER JOIN SortedList as s ON ll.previousId = s.Id ); SELECT id, previousId, name FROM SortedList ORDER BY Level "; +// $query = "SELECT (id, name, rootId, level) FROM cwsvjudo.achievements WHERE `id` = 1 ORDER BY `level`;"; +// $query = "SELECT * FROM cwsvjudo.achievements;"; +// $results = $mysqlConn->query($query); + +// var_dump($results); +?> + + + + + + diff --git a/homepage/wkParticipo/index.php b/homepage/wkParticipo/index.php index 7a6000e..2b3a7d0 100644 --- a/homepage/wkParticipo/index.php +++ b/homepage/wkParticipo/index.php @@ -18,6 +18,31 @@ setlocale (LC_ALL, 'de_DE@euro', 'de_DE', 'de', 'ge'); if ($mysqlConn->connect_error) { $sqlMessage['error'] .= 'Datenbankverbindung fehlgeschlagen: ' . $mysqlConn->connect_error; } +// var_dump($_SESSION); + +/// Stellt den cssCode mit den Variablendefinitionen bereit +/* +function colorThemeCss($colorArray = array('backgroundColor'=>"#FFAE00", 'highlightColor'=>"#FF8100", 'buttonColor'=>"#291670")){ +//$colorTypes = ["backgroundColor", "highlightColor", "buttonColor"]; +$defaultColors =['backgroundColor'=> "#FFAE00", 'highlightColor'=>"#FF8100", 'buttonColor'=>"#291670"]; + +//echo("DBG: colorArray:"); var_dump($colorArray); + +// Inputdatenvalidierung + foreach($defaultColors as $key=>$value){ + if( !preg_match("/^#(?:[0-9a-fA-F]{3}){1,2}$/", $colorArray[$key]) ){ + $colorArray[$key] = $defaultColors[$key]; + } + } + + $ret = ":root{"; + + foreach($colorArray as $key=>$value){ + $ret .= "--".$key.": ".$value."; "; + } + $ret .= "}"; +return $ret; +}*/ ?> @@ -47,6 +72,7 @@ setlocale (LC_ALL, 'de_DE@euro', 'de_DE', 'de', 'ge');