HEX
Server: Apache
System: Linux www3.pit.tblive.com 5.14.0-687.38.1.el9_8.x86_64 #1 SMP PREEMPT_DYNAMIC Wed Aug 12 17:19:12 EDT 2026 x86_64
User: awaldron (1020)
PHP: 8.1.34
Disabled: exec,passthru,shell_exec,system
Upload Files
File: /home/awaldron/public_html/archive/demo/functions/_event.php
<?php

function schedule_recurrance($rid,$eid) {
	$r = quickROW("SELECT * FROM event_recur WHERE recur_id=".$rid);
	$e = quickROW("SELECT * FROM event WHERE event_id=".$eid);
	$rp = explode("||",$r[recur_pattern]);
	pre_print_r($rp);
	$start = $r[recur_start];
	$d = getdate($start);
	$time = $start % 86400;
	
	$sql_pref = "INSERT INTO event_sched (event_id,recur_id,eid,sched_title,venue_id,sched_venue_oth,sched_time,sched_dur) VALUES (";
	$sql_pref .= $eid.",".$rid.",".$_SESSION[eid].",'".addslashes($e[event_title])."',".$e[venue_id].",'".addslashes($e[event_venue_oth])."',";
	$sql_suff = ",".$r[recur_dur].")";
	
	if ($rp[0] == 1) {
		// DAILY RECURRENCE
		if ($rp[1] == 1) $incr = 86400 * $rp[2];
		else if ($rp[1] == 2) $incr = 86400;
		//else return false;
		
		$sched_time = $start;
		while ($sched_time <= $r[recur_expire]) {
			//quickUPDATE($sql_pref.$sched_time.$sql_suff);
			echo "<br>DATE ".++$i.": ".date("m/d/Y H:i:s",$sched_time);
			$sched_time += $incr;
		}
		
	} else if ($rp[0] == 2) {
		// WEEKLY RECURRENCE
		$days = string_split($rp[2]);
		$wk_incr = $rp[1];
		// FIND SUNDAY OF EVERY WEEK INCREMENT STARTING WITH THE WEEK OF THE START DATE
		$sched_time = $start;
		$sun_time = $start - ($d[wday] * 86400);
		$sun_date = getdate($sun_time);
		
		//quickUPDATE($sql_pref.$sched_time.$sql_suff);
		echo "<br>DATE ".++$j.": ".date("m/d/Y H:i:s",$sched_time);
		
		while ($sched_time <= $r[recur_expire]) {
			for ($i=0; $i < 7; $i++) {
				if (in_array($i,$days)) {
					$sched_time = $sun_time + ($i * 86400);
					if ($sched_time > $start) {
						//quickUPDATE($sql_pref.$sched_time.$sql_suff);
						echo "<br>DATE ".++$j.": ".date("m/d/Y H:i:s (I)",$sched_time)." || ".date_std($sched_time)." ".date_time($sched_time);
					}
				}
			}
			$sun_time += ($wk_incr * 604800);
		}
		
	} else if ($rp[0] == 3) {
		// MONTHLY RECURRENCE
		if ($rp[1] == 1) {
			$sched_time = $start;
			while ($sched_time <= $r[recur_expire]) {
				//quickUPDATE($sql_pref.$sched_time.$sql_suff);
				echo "<br>DATE ".++$i.": ".date("m/d/Y H:i:s",$sched_time);
				$sched_time = next_monthly_1($sched_time,$rp[2],$rp[3],$d[hours],$d[minutes],$d[seconds]);
			}
		} else if ($rp[1] == 2) {
			$sched_time = $start;
			while ($sched_time <= $r[recur_expire]) {
				//quickUPDATE($sql_pref.$sched_time.$sql_suff);
				echo "<br>DATE ".++$i.": ".date("m/d/Y H:i:s",$sched_time);
				$sched_time = next_monthly_2($sched_time,$rp[2],$rp[3],$rp[4],$d[hours],$d[minutes],$d[seconds]);
			}
		}
		
	} else if ($rp[0] == 4) {
		// ANNUAL RECURRENCE
		if ($rp[1] == 1) {
			$sched_time = $start;
			while ($sched_time <= $r[recur_expire]) {
				//quickUPDATE($sql_pref.$sched_time.$sql_suff);
				echo "<br>DATE ".++$i.": ".date("m/d/Y H:i:s",$sched_time);
				$sched_date = getdate($sched_time);
				$sched_time = mktime($sched_date[hours],$sched_date[minutes],$sched_date[seconds],$rp[2],$rp[3],($sched_date[year]+1));
			}
		} else if ($rp[1] == 2) {
			$sched_time = $start;
			while ($sched_time <= $r[recur_expire]) {
				//quickUPDATE($sql_pref.$sched_time.$sql_suff);
				echo "<br>DATE ".++$i.": ".date("m/d/Y H:i:s",$sched_time);
				$sched_time = next_annual_2($sched_time,$rp[2],$rp[3],$rp[4],$d[hours],$d[minutes],$d[seconds]);
			}
		}
	}
}







function next_annual_2($time,$interval,$wday,$mon,$h,$m,$s,$incr_year=0) {
	$d = getdate($time);
	if ($incr_year) $year = ++$d[year];
	else $year = $d[year];
	
	$return_time = 0;
	
	if ($interval == 5) {
		// FIND LAST
		for ($test_mday = 31; $test_mday >= 1; $test_mday--) {
			if (checkdate($mon,$test_mday,$year)) {
				$test_time = mktime($h,$m,$s,$mon,$test_mday,$year);
				$test_date = getdate($test_time);
				if ($wday <= 7) {
					if (($wday - 1) == $test_date[wday]) { $return_time = ($return_time==0?$test_time:$return_time); }
				} else if ($wday == 8) {
					$return_time = ($return_time==0?$test_time:$return_time);
				} else if ($wday == 9) {
					if (($test_date[wday] > 0) && ($test_date[wday] < 6)) { $return_time = ($return_time==0?$test_time:$return_time); }
				} else if ($wday == 10) {
					if (($test_date[wday] == 0) || ($test_date[wday] == 6)) { $return_time = ($return_time==0?$test_time:$return_time); }
				}
			}
		}
		
	} else {
		
		for ($test_mday = 1; (($test_mday <= 31) && ($return_time == 0)); $test_mday++) {
			if (checkdate($mon,$test_mday,$year)) {
				
				$test_time = mktime($h,$m,$s,$mon,$test_mday,$year);
				$test_date = getdate($test_time);
							
				if ($wday <= 7) {
					if (($wday - 1) == $test_date[wday]) { $return_time = $test_time; }
				} else if ($wday == 8) {
					$return_time = $test_time;
				} else if ($wday == 9) {
					if (($test_date[wday] > 0) && ($test_date[wday] < 6)) { 
						if ($interval == 1) $return_time = $test_time; 
						else $return_time = next_weekday($test_time,$interval);
					}
				} else if ($wday == 10) {
					if (($test_date[wday] == 0) || ($test_date[wday] == 6)) { 
						if ($interval == 1) $return_time = $test_time; 
						else $return_time = next_weekendday($test_time,$interval);
					}
				}
			}
		}		
	}
	
	if ($return_time <= $time) return next_annual_2($time,$interval,$wday,$mon,$h,$m,$s,1);
	else return $return_time;
}

function next_monthly_1($time,$mday,$mon_incr,$h,$m,$s) {
	$d = getdate($time);
	$d[mon] = $d[mon] + $mon_incr;
	if ($d[mon] > 12) {
		$d[mon] %= 12;
		$d[year]++;
	}
	return mktime($h,$m,$s,$d[mon],$mday,$d[year]);
}

function next_monthly_2($time,$interval,$wday,$mon_incr,$h,$m,$s,$incr=0) {
	$d = getdate($time);
	if ($incr) {
		$d[mon] = $d[mon] + $mon_incr;
		if ($d[mon] > 12) {  $d[mon] %= 12; $d[year]++;	}
	} 		
	
	$return_time = 0;
	
	if ($interval == 5) {
		// FIND LAST
		for ($test_mday = 31; $test_mday >= 1; $test_mday--) {
			if (checkdate($d[mon],$test_mday,$d[year])) {
				$test_time = mktime($h,$m,$s,$d[mon],$test_mday,$d[year]);
				$test_date = getdate($test_time);
				if ($wday <= 7) {
					if (($wday - 1) == $test_date[wday]) { $return_time = ($return_time==0?$test_time:$return_time); }
				} else if ($wday == 8) {
					$return_time = ($return_time==0?$test_time:$return_time);
				} else if ($wday == 9) {
					if (($test_date[wday] > 0) && ($test_date[wday] < 6)) { $return_time = ($return_time==0?$test_time:$return_time); }
				} else if ($wday == 10) {
					if (($test_date[wday] == 0) || ($test_date[wday] == 6)) { $return_time = ($return_time==0?$test_time:$return_time); }
				}
			}
		}
		
	} else {
		
		for ($test_mday = 1; (($test_mday <= 31) && ($return_time == 0)); $test_mday++) {
			if (checkdate($d[mon],$test_mday,$d[year])) {
				
				$test_time = mktime($h,$m,$s,$d[mon],$test_mday,$d[year]);
				$test_date = getdate($test_time);
							
				if ($wday <= 7) {
					if (($wday - 1) == $test_date[wday]) { $return_time = $test_time; }
				} else if ($wday == 8) {
					$return_time = $test_time;
				} else if ($wday == 9) {
					if (($test_date[wday] > 0) && ($test_date[wday] < 6)) { 
						if ($interval == 1) $return_time = $test_time; 
						else $return_time = next_weekday($test_time,$interval);
					}
				} else if ($wday == 10) {
					if (($test_date[wday] == 0) || ($test_date[wday] == 6)) { 
						if ($interval == 1) $return_time = $test_time; 
						else $return_time = next_weekendday($test_time,$interval);
					}
				}
			}
		}
	}
	
	if ($return_time <= $time) return next_monthly_2($time,$interval,$wday,$mon_incr,$h,$m,$s,1);
	else return $return_time;
}

function next_weekday($time,$int) {
	$i = 1;
	$wday = 0;
	while ($i < $int) {
		$time += 86400;
		$d = getdate($time);
		$wday = $d[wday];
		if (($wday > 0) && ($wday < 6)) $i++;
	}
	return $time;
}

function next_weekendday($time,$int) {
	$i = 1;
	$wday = 0;
	while ($i < $int) {
		$time += 86400;
		//echo $time." : ";
		$d = getdate($time);
		$wday = $d[wday];
		if (($wday == 0) || ($wday == 6)) $i++;
	}
	return $time;
}

function lz($n) {
	// lz is short for Lead Zero
	return ($n < 10 ? "0".$n : $n);
}

function string_split($str, $nr=1){   
	return array_slice(split("-l-", chunk_split($str, $nr, '-l-')), 0, -1);
}

?>