256) { $content_has_error = true; $content_error_message_key = "error.content.tags.length"; goto content_end; } // Extracting the additional tags safely $raw_additional_tags_exploded = explode(";", $raw_additional_tags); for($i = 0; $i < count($raw_additional_tags_exploded); $i++) { if(strlen($raw_additional_tags_exploded[$i]) > 0) { if(ctype_alnum($raw_additional_tags_exploded[$i])) { $requested_tags[] = $raw_additional_tags_exploded[$i]; } else { $content_has_error = true; $content_error_message_key = "error.content.tags.alphanumeric"; goto content_end; } } } unset($raw_additional_tags_exploded); } // Loading the content index. $content_json = file_get_contents(realpath($dir_content . "/index.json")); $content_index_data = json_decode($content_json, true); unset($content_json); // Filtering out unwanted entries. $filtered_content_index_data = array(); for($i = 0; $i < count($content_index_data); $i++) { if(count(array_intersect($content_index_data[$i]["tags"], $requested_tags)) == count($requested_tags)) { $filtered_content_index_data[] = $content_index_data[$i]; } } // Cleaning some variables. unset($content_index_data); unset($content_json); // Checking if we found content for the user. if(count($filtered_content_index_data) == 0) { // No relevant article/page were found for the given tags. $content_has_error = true; $content_error_message_key = "error.content.detect.empty"; goto content_end; } } else if($requested_content_display_type == ContentDisplayType::CONTENT) { // Sanitizing the requested ID. if(!ctype_alnum(str_replace("-", "", $content_requested_url_part))) { $content_has_error = true; $content_error_message_key = "error.content.id.alphanumeric"; goto content_end; } // Loading the content's data $content_file_path = get_content_file_path($content_requested_url_part); if(is_null($content_file_path)) { // File doesn't exist ! $content_has_error = true; $content_error_message_key = "error.content.data.not.exist"; unset($content_file_path); goto content_end; } else { $content = load_content_by_file_path($content_file_path); if(is_null($content)) { $content_has_error = true; $content_error_message_key = "error.content.cannot.load"; unset($content_file_path); goto content_end; } } unset($content_file_path); } content_end: // TODO: Create error thingy $content_error_message = localize($content_error_message_key); // These functions are placed here to prevent the main file from becoming impossible to read. function start_content_card($iconClasses, $title, $subTitle) { echo('
Not array node !
'); return; } if(!array_key_exists("type", $elementNode)) { echo('No "type" member found in node !
'); return; } switch($elementNode["type"]) { case "spacer": // Defining the font size. $_spacerSize = 1; if(array_key_exists("size", $elementNode)) { $_spacerSize = $elementNode["size"]; } // Adding element. echo(''); break; case "hr": // Reading and processing the modifiers. $_modIsSubtle = false; if(array_key_exists("modifiers", $elementNode)) { for ($i = 0; $i < count($elementNode["modifiers"]); $i++) { if ($elementNode["modifiers"][$i] == "subtle") { $_modIsSubtle = true; } } } if($_modIsSubtle) { echo(''); // Adding content. processStandardContentSubNode($elementNode); // Closing paragraph. echo('
'); break; case "code": // Parsing properties. $_indentLevel = 0; if(array_key_exists("indent", $elementNode)) { $_indentLevel = $elementNode["indent"]; } // Reading and processing the modifiers. $_modNoTopMargin = false; $_modFullWidth = false; $_modHorizontalScroll = false; if(array_key_exists("modifiers", $elementNode)) { for ($i = 0; $i < count($elementNode["modifiers"]); $i++) { switch($elementNode["modifiers"][$i]) { case "no-top-margin": $_modNoTopMargin = true; break; case "full-width": $_modFullWidth = true; break; case "horizontal-scroll": $_modHorizontalScroll = true; break; } } } // Opening code element. echo(' '); break; case "container": // Grabbing the global padding. $_containerPadding = "10"; if(array_key_exists("padding", $elementNode)) { $_containerPadding = $elementNode["padding"]; } // Reading and processing the modifiers. $_modIsCard = false; $_modNoTopMargin = false; $_modNoTopPadding = false; $_modNoBottomPadding = false; $_modNoSizePadding = false; $_modHorizontalScroll = false; if(array_key_exists("modifiers", $elementNode)) { for ($i = 0; $i < count($elementNode["modifiers"]); $i++) { switch($elementNode["modifiers"][$i]) { case "card": $_modIsCard = true; $_modNoTopMargin = true; break; case "no-top-margin": $_modNoTopMargin = true; break; case "no-top-padding": $_modNoTopPadding = true; break; case "no-bottom-padding": $_modNoBottomPadding = true; break; case "no-side-padding": $_modNoSizePadding = true; break; case "horizontal-scroll": $_modHorizontalScroll = true; break; } } } // Opening container. echo(' '); break; case "button": // Reading and processing the modifiers. $_modRawStyle = false; $_modThinStyle = false; $_modThickStyle = false; $_modRoundShape = false; $_modCircleShape = false; if(array_key_exists("modifiers", $elementNode)) { for ($i = 0; $i < count($elementNode["modifiers"]); $i++) { switch($elementNode["modifiers"][$i]) { case "raw": $_modRawStyle = true; break; case "thin": $_modThinStyle = true; break; case "thick": $_modThickStyle = true; break; case "rounded": $_modRoundShape = true; break; case "circle": $_modCircleShape = true; break; } } } // Adding link if needed. if(array_key_exists("link", $elementNode)) { echo(''); } // Opening button. echo(''); if(array_key_exists("link", $elementNode)) { echo(''); } break; case "table": // Reading and processing the modifiers. $_modNoOuterPadding = false; $_modStriped = false; $_modHover = false; $_modInnerBordered = false; $_modOuterBordered = false; if(array_key_exists("modifiers", $elementNode)) { for ($i = 0; $i < count($elementNode["modifiers"]); $i++) { switch($elementNode["modifiers"][$i]) { case "no-outer-padding": $_modNoOuterPadding = true; break; case "striped": $_modStriped = true; break; case "hover": $_modHover = true; break; case "inner-bordered": $_modInnerBordered = true; break; case "outer-bordered": $_modOuterBordered = true; break; } } } // Preparing table. echo(''); if(array_key_exists("parts", $elementNode["head"][$iTableHead])) { for ($iPart = 0; $iPart < count($elementNode["head"][$iTableHead]["parts"]); $iPart++) { createElementNode($elementNode["head"][$iTableHead]["parts"][$iPart]); } } else { echo(getContentItemText($elementNode["head"][$iTableHead], false, true)); } echo(' | '); } echo('
---|
1?' colspan="'.$_cellColSpan.'"':'').($_cellRowSpan>1?' rowspan="'.$_cellRowSpan.'"':'').'>'); if(array_key_exists("parts", $elementNode["body"][$iTableBodyRow][$iTableBodyCell])) { for ($iPart = 0; $iPart < count($elementNode["body"][$iTableBodyRow][$iTableBodyCell]["parts"]); $iPart++) { createElementNode($elementNode["body"][$iTableBodyRow][$iTableBodyCell]["parts"][$iPart]); } } else { echo(getContentItemText($elementNode["body"][$iTableBodyRow][$iTableBodyCell], false, true)); } echo(' | '); } echo('