" . PHP_EOL .
"" . PHP_EOL .
"
" . PHP_EOL .
" " . PHP_EOL .
" " . PHP_EOL .
" " . PHP_EOL .
" " . PHP_EOL .
" " . $title . "" . PHP_EOL .
" " . PHP_EOL .
" " . PHP_EOL;
$post =
" " . PHP_EOL .
"" . PHP_EOL;
$html5 = $pre . $html_data . $post;
return $html5;
}
/*
* Writes HTML table with the following info:
* Token + shortened pubkey | Name | Description | Users | View Links(?) | Join URL
*/
function get_table_html($info_arrays) {
$table_lines = array();
foreach($info_arrays as $id => $content) {
/*
* $id is "room token+shortened_pubkey", e.g. "example+09af"
* Each $content looks like this:
* $info_array = array(
* "name" => "Name of the room",
* "language" => "🇩🇪",
* "description" => "Some text that describes the community",
* "active_users" => 1234,
* "preview_link" => "https://example.com/r/example",
* "join_link" => "https://example.com/example?public_key=[64_hex_chars]"
* );
*/
$exploded = explode("/", $content["join_link"]); // https: + "" + 1.2.3.4:56789 + token?public_key=0123456789abcdef
$server_url = $exploded[0] . "//" . $exploded[2]; // extract server_url
$token = explode("?", $exploded[3])[0]; // extract token
$line =
" " . PHP_EOL .
" " . $id . " | " . PHP_EOL .
" " . $content["language"] . " | " . PHP_EOL .
" " . $content["name"] . " | " . PHP_EOL .
" " . $content["description"] . " | " . PHP_EOL .
" " . $content["active_users"] . " | " . PHP_EOL .
" " . $content["preview_link"] . " | " . PHP_EOL .
"  | " . PHP_EOL .
" " . $content["join_link"] . " | " . PHP_EOL .
"
" . PHP_EOL;
$table_lines[] = $line;
}
// prefix
$prefix =
"Session Communities
" . PHP_EOL .
"" . PHP_EOL .
" " . PHP_EOL .
" Identifier | " . PHP_EOL .
" L | " . PHP_EOL .
" Name | " . PHP_EOL .
" Description | " . PHP_EOL .
" Users | " . PHP_EOL .
" Preview | " . PHP_EOL .
" QR | " . PHP_EOL .
" Join URL | " . PHP_EOL .
"
" . PHP_EOL;
// suffix
$suffix =
"
" . PHP_EOL .
"" . PHP_EOL;
// concatenate html
$html = $prefix;
foreach($table_lines as $line) {
$html = $html . $line;
}
$html = $html . $suffix;
return $html;
}
/*
* Needed until all Community servers reliably generate QR codes again
*/
function get_qr_img_element_from_join_url($join_url) {
$data = get_base64_qr_code_from_join_url($join_url);
$mime = "image/png";
$src = "data:" . $mime . ";base64," . $data;
$result =
"
";
// echo($result . PHP_EOL);
return $result;
}
/*
* Use Google API to generate QR codes and encode them as base64
*/
function get_base64_qr_code_from_join_url($join_url) {
// https://developers.google.com/chart/infographics/docs/qr_codes
$data = urlencode($join_url);
$size = "512x512";
//$error_correction_level = ""; // "chld=" L = 7%, M = 15%, Q = 25%, H = 30%
$api_url =
"https://chart.googleapis.com/chart?cht=qr" .
"&chs=" . $size .
"&chl=" . $data;
$img_base64 = base64_encode(file_get_contents($api_url));
// echo($img_base64 . PHP_EOL);
return $img_base64;
}
/*
* TODO: Description
*/
function create_qr_code_modals_html($info_arrays) {
$html = "";
foreach($info_arrays as $id => $content) {
/*
* $id is "room token+shortened_pubkey", e.g. "example+09af"
* Each $content looks like this:
* $info_array = array(
* "name" => "Name of the room",
* "language" => "🇩🇪",
* "description" => "Some text that describes the community",
* "active_users" => 1234,
* "preview_link" => "https://example.com/r/example",
* "join_link" => "https://example.com/example?public_key=[64_hex_chars]"
* );
*/
$img_elem = get_qr_img_element_from_join_url($content["join_link"]); // TODO: incorporate ID to use in js function
$modal_html =
"" . PHP_EOL .
"
" . PHP_EOL .
" ×" . PHP_EOL .
" " . $img_elem . PHP_EOL .
"
" . PHP_EOL .
"
" . PHP_EOL;
$html = $html . $modal_html;
}
return $html;
}
/*
* TODO: Description
*/
function generateHTML($timestamp, $info_arrays) {
$title = "Self-updating list of active Session Communities";
$modal_html = create_qr_code_modals_html($info_arrays);
$table_html = get_table_html($info_arrays);
$html =
$modal_html . PHP_EOL .
$table_html . PHP_EOL;
$final_html = create_html_page_from_html_data($html, $title, $timestamp);
return $final_html;
}
?>