replaceDefaultThings( $website );
$website = $this->setScore( $website );
return $website;
} catch( Exception $e )
{
throw new RuntimeException( 'Cannot load the score file', 201 );
}
}
public function buildWebsite(): string
{
try
{
$website = file_get_contents( __DIR__ . '/website.html' );
$website = $this->replaceDefaultThings( $website );
$website = $this->setQuestions( $website );
return $website;
} catch( Exception $e )
{
if( ( $code = $e->getCode() ) === 202 || $code === 203 )
{
throw new RuntimeException( $e->getMessage(), $code );
}
throw new RuntimeException( 'Cannot load the website.html file', 201 );
}
}
private function replaceDefaultThings( $website )
{
if( !isset( language::$lang_file[language::TITLE],
language::$lang_file[language::MAIN_TITLE],
language::$lang_file[language::DESCRIPTION],
language::$lang_file[language::SCORE_FINISHED],
language::$lang_file[language::PROJECT_DESCRIPTION],
language::$lang_file[language::HELP_US],
language::$lang_file[language::REQUEST_MORE],
language::$lang_file[language::LANGUAGE_CHOOSE],
language::$lang_file[language::JOIN_DISCORD] ) )
{
throw new RuntimeException( 'Cannot load default langauge replacements', 202 );
}
$website = str_replace(
array(
'[LANG]', '[TITLE]', '[MAIN_TITLE]', '[DESCRIPTION]', '[SCORE_FINISHED]', '[PROJECT_DESCRIPTION]', '[HELP_US]', '[REQUEST_MORE]','[LANGUAGE_CHOOSE]', '[JOIN_DISCORD]' ),
array(
substr( language::$lang, 0, 2 ),
language::$lang_file[language::TITLE],
language::$lang_file[language::MAIN_TITLE],
language::$lang_file[language::DESCRIPTION],
language::$lang_file[language::SCORE_FINISHED],
language::$lang_file[language::PROJECT_DESCRIPTION],
language::$lang_file[language::HELP_US],
language::$lang_file[language::REQUEST_MORE],
language::$lang_file[language::LANGUAGE_CHOOSE],
language::$lang_file[language::JOIN_DISCORD]
), $website );
$languages = '';
foreach( language::$languages as $code => $language )
{
$languages .= <<$language
HTML;
}
$website = str_replace( '[LANGUAGES]', $languages, $website );
return $website;
}
private function setQuestions( $website ) : string
{
$website = str_replace( '[EXPLANATION]', language::$lang_file[language::EXPLANATION_QUESTIONS], $website );
if( !isset( language::$lang_file['questions'] ) )
{
throw new RuntimeException( 'Error while reading the questions in langauge file', 203 );
}
$questions = '';
foreach( language::$lang_file['questions'] as $number => $question )
{
$questions .= <<
$question
CHECKBOX;
}
$form_start = <<
HTML;
$submit = language::$lang_file[language::CALCULATE];
$form_end = <<
HTML;
$questions = $form_start . $questions . $form_end;
$website = str_replace( '[CONTENT]', $questions, $website );
return $website;
}
private function calculateScore() : int
{
$score = count( language::$lang_file['questions'] );
foreach( language::$lang_file['questions'] as $number => $question )
{
if( isset( $_POST["question_$number"] ) && $_POST["question_$number"] === 'on' )
{
$score--;
}
}
return $score;
}
private function setScore ( string $a_website ): string
{
$a_website = str_replace( '[EXPLANATION]', language::$lang_file[language::EXPLANATION_SCORE], $a_website );
$score = $this->calculateScore();
$max = count( language::$lang_file['questions'] );
$back = language::$lang_file['BACK'];
$html = <<
HTML;
$html = str_replace( ['[SCORE_TITLE]', '[SCORE_DESCRIPTION]', '[SCORE_SHARE]', '[SCORE_SAVE]'], [language::$lang_file['SCORE_TITLE'], language::$lang_file['SCORE_DESCRIPTION'], language::$lang_file['SCORE_SHARE'], language::$lang_file['SCORE_SAVE']], $html );
$script = <<