Pith - miter
miter/back/panels/panels_edit.php [2.7 kb]
Modified: 17:48:39 114 026 (11 Jul 026)
14 Days Ago
<?php
declare(strict_types=1);
session_start();

if (empty($_SESSION['miter'])) {
	header('Location: ../../index.php');
	exit;
}

// delete file + entry
$panel_del = $_POST["panel_edit_name"] ?? '';
$panel_name = preg_replace('/[^a-zA-Z0-9_-]/', '', substr($panel_del, 1));

if ($panel_name !== '') {
	$txt_file = "../../panels/{$panel_name}.txt";
	if (file_exists($txt_file)) {
		unlink($txt_file);
	}
}

// get title
$panel_title = $_POST["title"] ?? '';

// replace file name space
$title_to_file = str_replace(' ', '_', $panel_title);

$title_to_file = preg_replace('/[<>\:"\/\\\\\|\?\*\'#]/', '_', $title_to_file);
$title_to_file = str_replace(['..', "\0"], '_', $title_to_file);

if ($title_to_file !== $panel_name) {
	// remove line from user/panels.txt
	$panel_dir = '../../user/panels.txt';
	if (file_exists($panel_dir)) {
		$panel_data = array_map('trim', file($panel_dir));
		foreach($panel_data as $panel_key => $panel_line) {
			if($panel_line === $panel_del) {
				unset($panel_data[$panel_key]);
			}
		}
		
		$new_content = empty($panel_data) ? '' : implode("\n", $panel_data) . "\n";
		file_put_contents($panel_dir, $new_content, LOCK_EX);
	}
}

// get post
$panel_post = $_POST["panel"] ?? '';
// get file name
$panel_file = "../../panels/{$title_to_file}.txt";

// errors
include '../admin/otc.php';
$log_file = __DIR__ . '/../admin/log.txt'; 

function log_custom_error(string $message, string $log_file, string $o_date): void {
	error_log("{$o_date} -- {$message}" . PHP_EOL, 3, $log_file);
}

if (empty($title_to_file)) { 
	log_custom_error("Error: File path is empty.", $log_file, $o_date ?? '');
	exit;
}

$panel_fold = dirname($panel_file);
if (!is_dir($panel_fold)) { 
	log_custom_error("Error: Dir {$panel_fold} does not exist.", $log_file, $o_date ?? '');
	exit; 
}
if (!is_writable($panel_fold)) { 
	log_custom_error("Error: Dir {$panel_fold} is not writable.", $log_file, $o_date ?? '');
	exit; 
}

// write file
try {
	$write_result = file_put_contents($panel_file, $panel_post, LOCK_EX);
	if ($write_result === false) { 
		throw new Exception("Failed to open stream."); 
	}
} catch (\Throwable $e) { 
	log_custom_error("Exception: " . $e->getMessage(), $log_file, $o_date ?? '');
}

// write to user/panel
if ($title_to_file !== $panel_name) {
	// get hide title
	// 1 = Show 2 = Hide
	if(isset($_POST["hidetitle"]) && $_POST["hidetitle"] === 'yes') {
		$hide_title = '2';
	} else {
		$hide_title = '1';
	}	
	// create new entry
	$panel_insert = $hide_title . "" . $title_to_file;
	// update user/panels.txt
	file_put_contents("../../user/panels.txt", "\n" . $panel_insert, FILE_APPEND | LOCK_EX);
}

header("Location: ../../index.php?u=panels");
exit;
Updates
Wedge - Android 126.026
Wedge - Linux 124.026
Shim - Android 117.026
Miter - 114.026
Kerf - Android 112.026
Dev
TVShow (227) 'CSA'
TVShow (228) 'APT'
TVProgram (83) 'BXT'
Miter Update(s)
Peen (Messaging)

Menu
Calendar
Project Tin (024/029)
Miter
RSS Feed
User Avatar
@vgmlr
=SUM(parts)