Files
cwsvJudo/homepage/machs/lib/achievementsLib.php
2020-10-31 14:41:22 +01:00

230 lines
7.4 KiB
PHP

<?php
// Eine Fehler/Warnung/Notiz/Erfolgsmeldung als divBox im String zurückgeben
function htmlRetMessage($anRetMessage){
$retHtmlString = "";
if( !empty($anRetMessage) ){
$retHtmlString .= "<div style=\"border: 1px solid;\">";
if( !empty($anRetMessage['error']) ){
$retHtmlString .= "<div style=\"border: 1px solid;\">";
$retHtmlString .= "ERROR:<br />";
$retHtmlString .= $anRetMessage['error'];
$retHtmlString .= "</div>";
}
if( !empty($anRetMessage['warning']) ){
$retHtmlString .= "<div style=\"border: 1px solid;\">";
$retHtmlString .= "WARNING:<br />";
$retHtmlString .= $anRetMessage['warning'];
$retHtmlString .= "</div>";
}
if( !empty($anRetMessage['notice']) ){
$retHtmlString .= "<div style=\"border: 1px solid;\">";
$retHtmlString .= "Info:<br />";
$retHtmlString .= $anRetMessage['notice'];
$retHtmlString .= "</div>";
}
if( !empty($anRetMessage['success']) ){
$retHtmlString .= "<div style=\"border: 1px solid;\">";
$retHtmlString .= "SUCCESS:<br />";
$retHtmlString .= $anRetMessage['success'];
$retHtmlString .= "</div>";
}
$retHtmlString .= "</div>";
}
// print_r($anRetMessage);
return $retHtmlString;
}
// one time only function to convert the list of kids within the user
// table itself to an extra entry in a "vormundschafts" table
function convertToVormundschaft($db){
$query = <<<SQL
SELECT * FROM `cwsvjudo`.`wkParticipo_Users` WHERE `kinder` IS NOT NULL;
SQL;
$users = dbQuery($db, $query);
foreach($users as $user){
$kidIds = explode(",", $user['kinder']);
echo("Processing user ".$user['vorname']." ".$user['name']." with kids ".$kidIds."\n");
foreach($kidIds as $kidId){
$query = <<<SQL
INSERT INTO `cwsvjudo`.`vormundschaft` (userId, kidId) VALUE (:userId, :kidId);
SQL;
echo("Adding kid ".$kidId." to user ".$user['id']."\n");
echo($query."\n");
$params = array(
':userId' => array('value' => $user['id'], 'data_type' => PDO::PARAM_INT),
':kidId' => array('value' => $kidId, 'data_type' => PDO::PARAM_INT),
);
dbQuery($db, $query, $params);
}
}
return;
}
/// get all available achievements
function getAchievementList($db){
$results = null;
try{
$results = dbQuery(
$db,
"SELECT * FROM cwsvjudo.achievements;"
);
}
catch(PDOException $db_error){
print "Error!: " . $db_error->getMessage() . "<br/>queryString: ".$queryString."<br />"; var_dump($bindArray);
}
return $results;
}
function getAchievementGroups($db){
return achievementList2achievementGroups( getAchievementList($db) );
}
function arrayKeyed2htmlTableString($anArray, $keyList, $withCaption = false){
$ret = "";
if( !is_array($anArray) )
return "";
$ret .= "<table>";
if($withCaption) {
$ret .= "<tr>";
foreach( $keyList as $caption ){
$ret .= "<th>".$caption."</th>";
}
$ret .= "</tr>";
}
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;
}
function getUsersAchievements($db, $userId){
$query = <<<SQL
SELECT * FROM `cwsvjudo`.`achievements<=>user` WHERE `userId` = :userId;
SQL;
$params = [':userId' => array('value'=>$userId, 'data_type'=>PDO::PARAM_INT)];
$result = dbQuery($db, $query, $params);
return $result;
}
function achievementList2achievementGroups ( $list ){
$groups = [];
foreach($list as $a){
if(!array_key_exists($a['rootId'], $groups) ){
$groups[ $a['rootId'] ] = array();
}
$groups[ $a['rootId'] ][ $a['level']] = $a;
}
foreach($groups as $key=>$g){
ksort($groups[$key]);
}
ksort($groups);
return $groups;
}
function htmlUsersUploadBox($db, $userId){
$html = "";
$userData = getUserData($db, $userId);
$html .= "<div><dl>";
$html .= "<dt>Upload Link</dt><dd><a href=\"".$userData['machsUploadUrl']."\">".$userData['machsUploadUrl']."</a></dd>";
$html .= "<dt>Upload Passwort</dt><dd>".$userData['machsUploadPw']."</dd>";
$html .= "</dl></div>";
return $html;
}
function htmlAchievementListForUser($db, $achievementGroups, $userId, $usersAchievmentIds){
//var_dump($db, $achievementGroups, $userId, $usersAchievmentIds);
$ids=[];
foreach($usersAchievmentIds as $a){
$ids[]=$a['achievementId'];
}
$retHtml = "";
if(!canUserGetAchievementToday( $db, $userId) ){
$retHtml .= "<div>Heute wurde schon ein Achievement erreicht!</div>";
}
$retHtml .= "<div class=\"row\">";
foreach($achievementGroups as $g){
$retHtml .= "<div class=\"col s12 m6 l4 xl3\">";
$retHtml .= "<ul class=\"card\">";
$imgUrl = null;
foreach($g as $a){
if($a['imgUrl'] != null){
$imgUrl = $a['imgUrl'];
}
if(in_array($a['id'], $ids)){
$retHtml .= "<li>&#10003; ".$a['name'].": ".$a['description'];
$retHtml .= "</li>";
}
else{
$retHtml .= "<li style=\"color:gray\">".$a['name'].": ".$a['description'];
//if(isUserAdmin($db, $_SESSION['user']['userId'])){
if(canUserGetAchievementToday( $db, $userId) ){
$retHtml .= "<form action=\".\" method=\"POST\">";
$retHtml .= "<input name=\"action\" value=\"giveUserAnAchievement\" type=\"hidden\">";
$retHtml .= "<input name=\"userId\" value=\"".$userId."\" type=\"hidden\">";
$retHtml .= "<input name=\"achievementId\" value=\"".$a['id']."\" type=\"hidden\">";
$retHtml .= "<input style=\"width:100%\" name=\"submit\" type=\"submit\" value=\"Achievement ".$a['name']." geben\">";
$retHtml .= "</form>";
}
if( $imgUrl != null )
$retHtml .= " <div class=\"card-image\" ><img src=\"".$imgUrl."\"/></div>";
$retHtml .= "</li>";
break;
}
}
$retHtml .= "</ul>";
$retHtml .= "</div>";
}
$retHtml .= "</div>";
return $retHtml;
}
function htmlAddAchievementBox(){
$html = "";
$html .= "<form action=\".\" method=\"POST\">";
$html .= "<input name=\"action\" type=\"hidden\" value=\"addAchievement\" />";
$html .= "<input name=\"redirectLocation\" type=\"hidden\" value=\"#endOfUpdateAchievementBoxes\" />";
$html .= "<input name=\"name\" type=\"text\" placeholder=\"name\"/>";
$html .= "<input style=\"width:100%;display:block;\" name=\"description\" type=\"textarea\" placeholder=\"mdDescription\"/>";
$html .= "<input type=\"submit\"/>";
$html .= "</form>";
return $html;
}
function htmlUpdateAchievementBox($achievementId, $name, $description, $rootId, $level){
$html = "";
$html .= "<form action=\".\" method=\"POST\">";
$html .= "<input name=\"action\" type=\"hidden\" value=\"updateAchievement\" />";
$html .= "<input name=\"redirectLocation\" type=\"hidden\" value=\"#addAchievementBox\" />";
$html .= "<div > achievementId: ".$achievementId;
$html .= "<input name=\"achievementId\" type=\"hidden\" value=\"".$achievementId."\"/>";
$html .= "<div />";
$html .= "<div >";
$html .= "<label for=\"name\">name</label>";
$html .= "<input style=\"width:100%;display:block;\" name=\"name\" type=\"text\" value=\"".$name."\"/>";
$html .= "<div/>";
$html .= "<div>";
$html .= "<label for=\"description\">description</label>";
$html .= "<input style=\"width:100%;display:block;\" name=\"description\" type=\"textarea\" value=\"".$description."\"/>";
$html .= "<div/>";
$html .= "<div>";
$html .= "<label for=\"rootId\">rootId</label>";
$html .= "<input style=\"width:100%;display:block;\" name=\"rootId\" type=\"text\" value=\"".$rootId."\"/>";
$html .= "<div/>";
$html .= "<div>";
$html .= "<label for=\"level\">level</label>";
$html .= "<input style=\"width:100%;display:block;\" name=\"level\" type=\"text\" value=\"".$level."\"/>";
$html .= "<div/>";
$html .= "<input type=\"submit\"/>";
$html .= "</form>";
return $html;
}
?>