id = (int)$id; $this->familyName = $familyName; $this->givenName = $givenName; } static function fromArray($member){ $id = $member['id']; $familyName = $member['familyName']; $givenName = $member['givenName']; return new User($id, $familyName, $givenName); } static function getUsers($db, $options = []){ $attributeId = $options["attributeId"] ?? null; $params = []; $query = "SELECT ". "`cwsvjudo`.`wkParticipo_Users`.`id` AS `id`". ", `cwsvjudo`.`wkParticipo_Users`.`vorname` AS `givenName`". ", `cwsvjudo`.`wkParticipo_Users`.`name` AS `familyName`". ", `cwsvjudo`.`wkParticipo_userAttributes`.`name` AS `attributeName`". "FROM `cwsvjudo`.`wkParticipo_Users` ". "JOIN `cwsvjudo`.`wkParticipo_user<=>userAttributes` ". "ON `cwsvjudo`.`wkParticipo_Users`.`id` = `cwsvjudo`.`wkParticipo_user<=>userAttributes`.`userId`". "JOIN `cwsvjudo`.`wkParticipo_userAttributes` ". "ON `cwsvjudo`.`wkParticipo_user<=>userAttributes`.`attributeId` = `cwsvjudo`.`wkParticipo_userAttributes`.`id`"; if($attributeId != null){ $query .= " WHERE `cwsvjudo`.`wkParticipo_userAttributes`.`id` = :attributeId"; $params['attributeId'] = ['value'=>$attributeId, 'data_type'=>PDO::PARAM_INT]; } $query .= ";"; $response = dbQuery($db, $query, $params); $users = []; foreach( $response as $r){ $users[] = User::fromArray($r); } return $users; } static function htmlTable($users){ echo(""); foreach( $users as $u){ echo(""); } echo("
IdNameVorname
".$u->id."".$u->familyName."".$u->givenName."
"); } } /** * Datastructure and interface for attendances */ class Attendance{ private $id = null; //< id in the db private $userId = null; //< user of the attendance private $date = null; //< date of the attendance private $type = null; //< type of attendance static private $Types = [ AttendanceType::Training => "Training" , AttendanceType::Excused => "Entschuldigt" , AttendanceType::Ill => "Krank" , AttendanceType::SpecialTraining => "SonderTraining" , AttendanceType::Competition => "Wettkampf" ]; static private $NameOfMonth = [1=>"Januar", 2=>"Februar", 3=>"März", 4=>"April", 4=>"Mai", 6=>"Juni", 7=>"Juli", 8=>"August", 9=>"September", 10=>"Oktober", 11=>"November", 12=>"Dezember"]; /** * constructor * * @param string/int $id id in the db * @param string/int $userId user of the attendance * @param string $date date of the attendance */ function __construct($id, $userId, $date){ $this->id = (int)$id; $this->userId = (int)$userId; $this->date = DateTime::createFromFormat("Y-m-d", $date); } /** * create an Attendance from an assoziative array * * @param array $member * @return Attendance */ static function constructFromArray($member){ return new Attendance($member['id'], $member['userId'], $member['date']); } /** * request a users attendances from the database * * @param PDO $db * @param int/string $userId * @return array with attendances */ static function getUsersAttendance($db, $userId){ $userId = (int)$userId; $query = "SELECT `id`, `date` FROM `cwsvjudo`.`anwesenheit` WHERE `userId` = :userId"; $response = dbQuery($db, $query, [':userId'=>['value'=>$userId, 'data_type'=>PDO::PARAM_INT]]); $attendances = []; foreach($response as $r){ $attendances[] = new Attendance($r['id'], $userId, $r['date']); } return $attendances; } /** * html table with users attendances * * @param PDO $db * @param string/int $userId * @return string with html code of the attendance table */ static function userAttendanceHtmlTable($db, $userId){ $htmlTableString = ""; $htmlTableString .= ""; return $htmlTableString; } /** * group the attendances by year and month. * * @param list $attendances list of attendances * @return array[int][int](list of int) array with a list of days for every month in every year */ static function groupAttendances($attendances){ $groupedAttendances = []; foreach($attendances as $a){ $year =(int) $a->date->format("Y"); if(!array_key_exists($year, $groupedAttendances)) $groupedAttendances[$year] = []; $month = (int) $a->date->format("m"); if(!array_key_exists($month, $groupedAttendances[$year])) $groupedAttendances[$year][$month] = []; $day = (int) $a->date->format("d"); $groupedAttendances[$year][$month][]=$day; } return $groupedAttendances; } } ?> participo
UserAttribute::InTraining]));?> Eigene Anwesenheiten". Attendance::userAttendanceHtmlTable($dbConnection, $userData['id']) ); require_once("./lib/participoLib/participo.php"); } // ... and kids attendances if (!empty($usersKids)){ echo("

Anwesenheit der Kinder

"); foreach($usersKids as $k){ if($userData['id']==$k['kidId']) continue; echo( "

".$k['vorname']." ".$k['name']."

". Attendance::userAttendanceHtmlTable($dbConnection, $k['kidId']) ); } } ?>