# Miscellaneous UBB routines

sub lost_password {
	%vars_style = &LoadStyleTemplate($template_match{transition});

	&set_page_elements;

	&LoadTemplate("public_lost_pw");
}    # end lost_password

sub find_lost {
	local ($row_email, $lc_row_email, $row_un, @matches, $match_total, $html_message, $confirm, $email_message, @user_profile, $match_results, $match_results_html);

	#validate
	my @ValidateArray = ("email");
	&Validate(@ValidateArray);

	# get list of registered emails
	my @email_list = &OpenFileAsArray("$vars_config{MembersPath}/emailfile.cgi");

	#lowercase the input
	my $lc_email = lc($in{email});

	# find matches
	foreach (@email_list) {
		($row_email, $row_un) = split (/\|\|/, $_);
		$lc_row_email = lc($row_email);
		if ($lc_row_email eq "$lc_email") {
			chomp($row_un);
			push (@matches, $row_un);
		}
	}

	# now we have matches
	$match_total = @matches;

	# prepare for onscreen display & possible email display
	&set_page_elements;

	# email confirmation- if we have a match
	if ($match_total > 0) {

		# require mail routines--
		&RequireVars("$vars_config{VariablesPath}/vars_wordlets_email.cgi");
		&RequireCode("$vars_config{CGIPath}/ubb_lib_mail.cgi");

		# onscreen wording
		$confirm = "$vars_wordlets{lost_pw_match} $in{email}";

		# assemble match data
		foreach (@matches) {
			@user_profile = &OpenProfile("$_");
			chomp($user_profile[0]);
			chomp($user_profile[1]);

			$match_results .= qq!
$vars_wordlets{login_name}: $user_profile[0]
$vars_wordlets{password_field}: $user_profile[1]

!;

			$match_results_html .= qq!
$vars_wordlets{login_name}: <b>$user_profile[0]</b><br />
$vars_wordlets{password_field}: <b>$user_profile[1]</b>
<p> </p>
!;

		}


		if ($vars_email{email_format} ne 'html') {
			$email_message = qq!$vars_wordlets_email{lost_pw_intro}\n\r\n$match_results$vars_wordlets_email{signature_text}!;
		} else {
			$email_message = '';
		}

		if ($vars_email{email_format} ne "ascii") {
			my $html_body = qq!<font face="$vars_style{FontFace}" size="$vars_style{TextSize}">! . "$vars_wordlets_email{lost_pw_intro_html}" . "<p>$match_results_html</p><p>" . "$vars_wordlets_email{signature_html}</p>" . qq!</font>!;

			# set email template
			%vars_style = &LoadStyleTemplate($template_match{email});
			&set_page_elements;

			$html_message = "$EmailHeader $html_body $Footer";
		} else {
			$html_message = '';
		}

		&ubb_mail("$in{email}", "$vars_display{BBEmail}", "$vars_display{BBEmail}", "", "$vars_wordlets_email{lost_pw_subject}", "$email_message", "$html_message", "");
	} else {

		# onscreen wording
		$confirm = "$vars_wordlets{lost_pw_no_match}";

	}

	# send onscreen confirmation
	%vars_style = &LoadStyleTemplate($template_match{transition});

	&set_page_elements;
	&LoadTemplate("public_found_pw");

}    # end find_lost

sub ubb_code_page {
	local (*FILE);

	&ServeFromCache("ubb_files/misc/ubb_code_page.cgi");

	# get assigned style template!
	%vars_style = &LoadStyleTemplate($template_match{ubb_code});
	&set_page_elements;


	&LoadTemplate("public_ubb_code_page");

	$ThisHTML = $Header;

	$ThisHTML .= &ubb_code_body;
	$ThisHTML .= $Footer;


	# is ubb_files/misc directory created?
	unless (-d "$vars_config{NonCGIPath}/cache-$cache_cookie/ubb_files/misc") {

		mkdir("$vars_config{NonCGIPath}/cache-$cache_cookie/ubb_files/misc", 0777);
		chmod(0777, "$vars_config{NonCGIPath}/cache-$cache_cookie/ubb_files/misc");

	}

	unless (-w "$vars_config{NonCGIPath}/cache-$cache_cookie/ubb_files/misc/ubb_code_page.cgi") {
		unlink "$vars_config{NonCGIPath}/cache-$cache_cookie/ubb_files/misc/ubb_code_page.cgi";
	}

	&WriteFileAsString("$vars_config{NonCGIPath}/cache-$cache_cookie/ubb_files/misc/ubb_code_page.cgi", $ThisHTML);
	chmod(0777, "$vars_config{NonCGIPath}/cache-$cache_cookie/ubb_files/misc/ubb_code_page.cgi");

	print "$ThisHTML";
	exit(0);

}    # end ubb code page

sub faq {

	# is the page available?
		&ServeFromCache("ubb_files/misc/faq.cgi");

		# get assigned style template!
		%vars_style = &LoadStyleTemplate($template_match{faq});

		&set_page_elements;
		&LoadTemplate("public_faq");

		$ThisHTML = $Header;

		$ThisHTML .= &faq;
		$ThisHTML .= $Footer;


		# is ubb_files/misc directory created?
		unless (-d "$vars_config{NonCGIPath}/cache-$cache_cookie/ubb_files/misc") {
			mkdir("$vars_config{NonCGIPath}/cache-$cache_cookie/ubb_files/misc", 0777);
			chmod(0777, "$vars_config{NonCGIPath}/cache-$cache_cookie/ubb_files/misc");
		}

		unless (-w "$vars_config{NonCGIPath}/cache-$cache_cookie/ubb_files/misc/faq.cgi") {
			unlink "$vars_config{NonCGIPath}/cache-$cache_cookie/ubb_files/misc/faq.cgi";
		}

		&WriteFileAsString("$vars_config{NonCGIPath}/cache-$cache_cookie/ubb_files/misc/faq.cgi", $ThisHTML);

		print "$ThisHTML";
		exit(0);


}    # end faq page

sub clear_cookies {
	local (@all_cookies, @cookies, $counter);

	@all_cookies = cookie();

	$counter = 0;
	foreach (@all_cookies) {
		$counter++;
		$cookies[$counter] = cookie(
			-name    => "$_",
			-value   => [''],
			-path    => '/',
			-expires => '-3y'
		);
	}

	print header(
		-cookie  => [@cookies],
		-charset => "$masterCharset",
		-type    => "text/html",
	);


	%vars_style = &LoadStyleTemplate($template_match{transition});

	&set_page_elements;


	# take viewer back to topic
	&StandardHTML(qq!$vars_wordlets{cookies_cleared}<p><a href="$vars_config{CGIURL}/ultimatebb.cgi">$vars_config{BBName}</a></p>!);

	exit(0);
}    # end clear_cookies



sub mark_all_read {
	my ($last_login_dt, $last_login_j, $session_login_dt, $session_login_j);
	my (@login,         @session);

	@login = cookie("login$vars_config{Cookie_Number}");
	if ($login[0] ne '') { $last_login_dt = $login[0]; }
	if ($login[1] ne '') { $last_login_j  = $login[1]; }

	@session = cookie("session$vars_config{Cookie_Number}");
	if ($session[0] ne '') { $session_login_dt = $session[0]; }
	if ($session[1] ne '') { $session_login_j  = $session[1]; }

	# in case this is a new visitor!
	if ($last_login_dt eq '') { $last_login_dt = 'NEW'; }

	# set session cookie:
	# this is a temp cookie that stores previous last login

	my $cookie1 = cookie(
		-name  => "session$vars_config{Cookie_Number}",
		-value => [$last_login_dt, $last_login_j],
		-path  => '/'
	);

	# set new last login
	my $cookie2 = cookie(
		-name    => "login$vars_config{Cookie_Number}",
		-value   => [$GotTime{LastLoginDT}, $GotTime{LastLoginJulian}],
		-path    => '/',
		-expires => '+1y'
	);

	my $cookie3;

	# reconfirm user data- in case profile details were changed
	if ($username ne '') {
		my @this_profile = &verify_id_num_2($username, $password, $user_number);
		foreach (@this_profile) { chomp; }
		if (!$this_profile[15]) {
			$this_profile[15] = "$this_profile[0]";
		}
		$cookie3 = cookie(
			-name    => "ubber$vars_config{Cookie_Number}",
			-value   => [$this_profile[0], $this_profile[1], $this_profile[15], $this_profile[21], $user_number],
			-path    => '/',
			-expires => '+2y'
		);
	}


	#print header(-cookie=>[$cookie1, $cookie2, $cookie3]);
	print header(
		-cookie  => [$cookie1,      $cookie2, $cookie3],
		-charset => "$masterCharset"
	);

	&Transition("$vars_config{CGIURL}/ultimatebb.cgi", "$vars_wordlets{updated_post_icons}", "$vars_config{CGIURL}/ultimatebb.cgi");

	exit(0);

}    #endsub



# DANGER: Do not remove the next line!
1;
