<?php
define(&#039;THIS_SCRIPT&#039;, &#039;ft_story_cleanup&#039;);
require_once(&#039;./global.php&#039;);

$secret = &#039;CHANGE_ME_STRONG_KEY&#039;;

$key = isset($_GET[&#039;key&#039;]) ? (string)$_GET[&#039;key&#039;] : &#039;&#039;;
if ($key !== $secret)
{
	header(&#039;HTTP/1.1 403 Forbidden&#039;);
	echo "forbidden";
	exit;
}

$now = TIMENOW;
$limit = 300; // bir çalışmada kaç story temizlensin

// expire olanları al (state=1 ama expire geçmiş)
$res = $db->query_read("
	SELECT storyid
	FROM ft_story
	WHERE expiretime <= $now
	LIMIT $limit
");

$base = @realpath(DIR . &#039;/ft_story_uploads&#039;);
$deletedStories = 0;
$deletedFiles = 0;

while ($s = $db->fetch_array($res))
{
	$storyid = intval($s[&#039;storyid&#039;]);
	if ($storyid <= 0) continue;

	$mres = $db->query_read("
		SELECT filepath, thumbpath
		FROM ft_story_media
		WHERE storyid = $storyid
	");

	$paths = array();
	while ($m = $db->fetch_array($mres))
	{
		if (!empty($m[&#039;filepath&#039;]))  $paths[] = $m[&#039;filepath&#039;];
		if (!empty($m[&#039;thumbpath&#039;])) $paths[] = $m[&#039;thumbpath&#039;];
	}

	foreach ($paths as $rel)
	{
		$rel = ltrim((string)$rel, &#039;/&#039;);

		// sadece bizim klasör
		if (strpos($rel, &#039;ft_story_uploads/&#039;) !== 0)
		{
			continue;
		}

		$abs  = DIR . &#039;/&#039; . $rel;
		$real = @realpath($abs);

		if ($real && $base && strpos($real, $base) === 0 && file_exists($real))
		{
			if (@unlink($real))
			{
				$deletedFiles++;
			}
		}
	}

	// DB temizliği
	$db->query_write("DELETE FROM ft_story_view  WHERE storyid = $storyid");
	$db->query_write("DELETE FROM ft_story_media WHERE storyid = $storyid");
	$db->query_write("DELETE FROM ft_story       WHERE storyid = $storyid LIMIT 1");

	$deletedStories++;
}

echo "ok\n";
echo "deleted_stories=$deletedStories\n";
echo "deleted_files=$deletedFiles\n";

Add a code snippet to your website: www.paste.org