Jump to content

post delete option on only my comments


ricktee76

Recommended Posts

this loops through comments made and shows them all, i cant work out how to get a delete option to appear on the comments i have made.

 

where xxxxxx is my id but i cant get it to show delete on only my comments it either shows on all or none

 

 

	$mycomment = myQ("SELECT * FROM `[x]comments` WHERE `postby`='xxxxxx'");
	if (myNum($mycomment) > 0) {


$tpl -> Zone("pictureDelete", "disabled");

}
else
$tpl -> Zone("pictureDelete", "enabled");

 

here it is in context with the whole page

 


/* Check Structure Availability */
if (!defined("CORE_STRAP")) die("Out of structure call");

// TEMPLATE HANDLING //////////////////////////////////////////////////////////////
/*
	Initialize the template engine & load the
	template file into the buffer
*/
$tpl = new template;
$tpl -> Load("blog");
$tpl -> GetObjects();


// LOAD UP THE BLOG DATA ROW //////////////////////////////////////////////////////
/* 
	This switch swaps from a provided user ID 
	to a provided blog article ID, it will load
	the latest blog article data for this user or
	for the given blog article ID.
*/
if (isset($_GET["id"]) && is_numeric($_GET["id"])) {
	/*
		We got a user ID, this will load the
		latest blog entry for the given user
	*/
	$row = myF(myQ("SELECT * FROM `[x]blogs` WHERE `user`='{$_GET["id"]}' ORDER BY DATE DESC LIMIT 1"));

	/*
		Lets tell the template to use the
		"latest blog article" string.
	*/
	$tpl -> Zone("blogGetMethod", "latestArticle");
	$tpl -> Zone("blogArticleBlock", "enabled");

	/*
		We somehow have to compute the latest blog
		article date, since we're loading it now, 
		let's set that variable
	*/
	$lastBlogArticleDate = $row["date"];

	/*
		Keep a record of the article and user ID entry as well 
		as the total comments on this article for future 
		reference later in the code
	*/
	$thisArticleID = $row["id"];
	$thisUserID = $row["user"];
	$thisTotalComments = $row["comments"];

	/*
		No article to show
	*/
	if (!$row["id"]) {
		$tpl -> LoadThis($GLOBALS["OBJ"]["blogEmpty"]);
		_fnc("reload", 5, "?L=users.desktop");
	}


} elseif (isset($_GET["article"]) && is_numeric($_GET["article"])) {
	/*
		We got an article ID, this loads it
	*/
	$row = myF(myQ("SELECT * FROM `[x]blogs` WHERE `id`='{$_GET["article"]}' LIMIT 1"));

	/*
		Lets tell the template to use the
		"blog article by ..." string.
	*/
	$tpl -> Zone("blogGetMethod", "givenArticle");

	/*
		Keep a record of the article and user ID entry as well 
		as the total comments on this article for future 
		reference later in the code
	*/
	$thisArticleID = $row["id"];
	$thisUserID = $row["user"];
	$thisTotalComments = $row["comments"];
	$MyComments = $row["postby"];

	/*
		Since we only have an article ID, we will
		also have to load the last article date
		as it is required in the template
	*/
	$lastArticle = myF(myQ("SELECT `date` FROM `[x]blogs` WHERE `user`='{$row["user"]}' ORDER BY DATE DESC LIMIT 1"));
	$lastBlogArticleDate = $lastArticle["date"];
	unset($lastArticle);

} else {
	/* 
		Nothing to load ... throw an error 
	*/
	die("No USER / ARTICLE id provided. Unable to act");
	_fnc("reload", 3, "?L=users.deskop");
}

// INCREMENT VIEWS COUNTER ////////////////////////////////////////////////////////
/* 
	No! Reloading the same page over and over won't
	force the views counter to increment  - We will
	set a temporary value for this user and check if
	we will increment the counter or not.
*/
if (!isset($_SESSION["LAST_BLOG_ARTICLE_ID"]) || $_SESSION["LAST_BLOG_ARTICLE_ID"] != $thisArticleID) {
	/*
		Create the blog article view pointer so
		we don't increment if the user reload the page
	*/
	$_SESSION["LAST_BLOG_ARTICLE_ID"] = $thisArticleID;
	/*
		Update the database views count entry
	*/
	if ($row["id"]) myQ("UPDATE `[x]blogs` SET `views`='".++$row["views"]."' WHERE `id`='{$thisArticleID}'");
}

// SET COUNTERS VALUES ////////////////////////////////////////////////////////////
/*
	The page template offer some basic "count" data
	for the given user. We already saved the last post
	date earlier, we also will get total articles.
	The first thing to do is to check if the date is 
	valid so we don't print something like "last article
	wrote in 1969"  This will also tell us if we will
	continue processing as if the last post date is
	zero, it also means the user never posted an 
	article so all the other counter values are zeros.
*/
if ($lastBlogArticleDate > 0) {
	$lastBlogArticleDateRender = date($CONF["LOCALE_SHORT_DATE"], $lastBlogArticleDate);

	/* 
		Get the total number of articles the user 
		wrote and the total comments he/she got for
		all the articles together.
	*/
	$counters = myF(myQ("
		SELECT 
			SUM(`comments`) as `totalComments`, 
			COUNT(`id`) as `totalCount` 
		FROM `[x]blogs` 
		WHERE `user`='{$row["user"]}'"
	));

	/*
		Assign the values to the template engine
	*/
	$tpl->AssignArray(
		array(
			"count.articles"=>$counters["totalCount"],
			"count.comments"=>$counters["totalComments"],
			"count.lastarticle"=>$lastBlogArticleDateRender
		)
	);
}

/*
	The last posted article date was zero so all the 
	counters are supposed to be zero (the user never
	wrote an article) - Let's pass zeros to the 
	template engine
*/		
else $tpl->AssignArray(array("count.articles"=>0,"count.comments"=>0,"count.lastarticle"=>0));

// TEMPLATE - BLOG DATA ROW CONVERSION ////////////////////////////////////////////
/*
	We will convert some variable data before we
	pass the row to the template engine so the
	output data is formatted correctly.
*/
$row["date"] = date($CONF["LOCALE_LONG_DATE_TIME"], $row["date"]);
//	if (isset($row["body"])) $row["body"] =  $row["body"]);

/* 
	Assign the blog database entry row for replacement 
*/
$tpl->AssignRow("blog", $row);

// TEMPLATE - USER DATA ROW CONVERSION ////////////////////////////////////////////
/*
	Assign the user for replacement (as this is
	a switching system between two tables, we
	will use the blog' user entry as it is
	safer.
*/
if (isset($row["user"])) $tpl->AssignUser($row["user"]);

// ADD TO FAVORITES //////////////////////////////////////////////////////////////
/* 
	Load the visitor's blog favorites data. We
	will only allow the "add to favorite" link
	to work if the user's ID is not the same
	as the blog's author ID.
*/
if ($thisUserID != me("id") && me("id") != "") {

	$myFav = unpk(me("favorites"));
	if ((is_array($myFav["BLOGS"]) && !in_array($thisUserID, $myFav["BLOGS"])) || (!is_array($myFav["BLOGS"]))) {

		/* 
			We got a request to add this blog to
			the favorites list. Actually a favorite
			blog entry is the author's user ID.
		*/
		if (isset($_GET["fav"])) {
			$myFav["BLOGS"][] = $thisUserID;
			myQ("UPDATE `[x]users` SET `favorites`='".pk($myFav)."' WHERE `id`='".me('id')."'");
		} 

		/*
			We didnt got a request, but we know
			that his user is not the author, and
			that this blog entry is NOT in the
			selfuser's favorites array. We will
			tell the template engine to show the
			"add to favotires" link.
		*/			
		else $tpl->Zone("addToFavorites", "enabled");
	}
}

// BLOG CONTROL LINKS ////////////////////////////////////////////////////////////
/*
	We will show blog control links (edit and delete) to
	the article author and to the administrator(s). 
*/
if ($thisUserID == me("id") || me("is_administrator") || me("is_superadministrator")) {
	$tpl -> Zone("blogControlLinks", "enabled");
}


// NEW BIT ////////////////////////////
$mycomment = myQ("SELECT * FROM `[x]comments` WHERE `postby`='2'");
	if (myNum($mycomment) > 0) {

	/*
		Let's first activate the comment deletion
		zone in the template
	*/
$tpl -> Zone("pictureDelete", "disabled");

}
else
$tpl -> Zone("pictureDelete", "enabled");


// LAST 10 BLOGS ARTICLES ////////////////////////////////////////////////////////
/* 
	Get latest 10 blog articles from the same author. We 
	will order this by date, limit the query to 10 items, and
	exclude the article we're currently reading!

*/
$select = myQ("SELECT * FROM `[x]blogs` WHERE `user`='{$thisUserID}' AND `id`!='{$thisArticleID}' ORDER BY `date` DESC LIMIT 10");

/*
	If there was a result for this query,
	we will pass this new row to the template
	engine for replacement.
*/
if (myNum($select) > 0) {

	/*
		Let's first activate the latest articles
		zone in the template
	*/
	$tpl -> Zone("latestBlogArticles","enabled");

	/*
		Loop inside the results, pass the data to 
		the looping engine
	*/
	$i=0;
	while ($blogRow = myF($select)) {

		$latestBlogArticleArray[$i]["latest.title"] = _fnc("strtrim", $blogRow["title"], 20);
		$latestBlogArticleArray[$i]["latest.id"] = $blogRow["id"];
		$latestBlogArticleArray[$i]["latest.date"] = date($CONF["LOCALE_SHORT_DATE"], $blogRow["date"]);
		$latestBlogArticleArray[$i]["latest.views"] = $blogRow["views"];
		$latestBlogArticleArray[$i]["latest.comments"] = $blogRow["comments"];

		$i++;
	}

	/* 
		Assign the latest blog articles array to the
		looping zone in the template engine
	*/		
	$tpl -> Loop("latestBlogArticlesLoop", $latestBlogArticleArray);
} 

/*
	There was no more "latest blog articles" found
	in the database. We will set the template zone
	accordinately
*/
else $tpl -> Zone("latestBlogArticles","disabled");

// BLOGS ARTICLES CALENDAR //////////////////////////////////////////////////////
if (!function_exists("calendar")) include_once("system/functions/classes/calendar.class.php");

/*
	Generate the two main "archived articles" calendar
	grids and inject past posts into those.
*/
$thisMonthCalendar = new calendar();
$lastMonthCalendar = new calendar(date("m")-1);

/*
	We will query for all the articles wrote by this 
	author in the last 2 months.
*/
$twoMonthsBehind = date("U", mktime(0,0,0,date("m")-1,1,date("Y")));
if (isset($row["user"])) {
	$archivesSelect = myQ("
		SELECT `date`,`id` 
		FROM `[x]blogs` 
		WHERE `user`='{$row["user"]}' 
		AND `date` >= '{$twoMonthsBehind}'
	");
}

/*
	The oneMonthBehind variable is the "U" date of the
	first day of this month. We will process this here 
	so we don't call the "date" function each time the
	loop cycles.
*/
$oneMonthBehind = date("U", mktime(0,0,0,date("m"),1,date("Y")));
/*
	Loop inside results and attribute the articles to
	their respective calendar.
*/
if (isset($archiveRow)) while ($archiveRow = myF($archivesSelect)) {

	/*
		The article date belongs to this actual
		month, we will attribute it to the first
		calendar
	*/
	if ($archiveRow["date"] >= $oneMonthBehind) {
		$thisMonthCalendar->injectDate(date("j", $archiveRow["date"]), "?L=blogs.blog&article={$archiveRow["id"]}");
	} else {
		/*
			The article belogngs to the previous month
		*/
		$lastMonthCalendar->injectDate(date("j", $archiveRow["date"]), "?L=blogs.blog&article={$archiveRow["id"]}");
	}
}

/*
	Flush the calendar results into the
	template system so they're printed
*/
$tpl->AssignArray(
	array(
		"thisMonthCalendar" => $thisMonthCalendar->makeAndFlush(),
		"lastMonthCalendar" => $lastMonthCalendar->makeAndFlush()
	)
);

/*
	We will give the calendars a month name
	label. This is done through template objects.
*/
$tpl->AssignArray(
	array(
		"thisMonthLabel" => $GLOBALS["OBJ"]["month_".date("n")],
		"lastMonthLabel" => $GLOBALS["OBJ"]["month_".date("n", mktime(0,0,0,date("m")-1,1,date("Y")))]
	)
);

// HANDLE COMMENT REMOVAL ///////////////////////////////////////////////////////
if (isset($_GET["rmcomment"]) and is_mop()) {
	myQ("DELETE FROM `[x]comments` WHERE `id`='{$_GET["rmcomment"]}'");
}

// HANDLE POSTED COMMENTS ///////////////////////////////////////////////////////
/* 
	Only let logged-in non-blocked users
	write comments on blogs.
*/
if (me("id") != "") {

	/*
		A comment has been submitted, if both the title 
		and the body are not null, we will show the
		"posted" message (instead of the "write comment"
		form) and insert the new comment in the database
	*/
	if (isset($_POST["SubmitComment"]) && $_POST["title"] != "" && $_POST["body"] != "") {

		/*
			Show the "posted" zone in the template
		*/		
		$tpl -> Zone("writeComment", "posted");

		/*
			We will check if a temporary comment session chipher
			exists... if so, we won't post that comment again.
			(in the case the user reloads the page right after
			the post and re-post!)
		*/
		if (!isset($_SESSION["LAST_COMMENT_BODYCODE"]) || $_SESSION["LAST_COMMENT_BODYCODE"] != md5($_POST["body"])) {

			/*
				We will set the temporary comment session data so
				the same comment won't be posted twice 
			*/
			$_SESSION["LAST_COMMENT_BODYCODE"] = md5($_POST["body"]);

			/*
				Insert the comment into the database
			*/
			myQ("
				INSERT INTO `[x]comments` 
				(`user`,`date`,`relative`,`type`,`title`,`body`,`polarity`,`postby`)
				VALUES (
					'".me('id')."',
					'".date("U")."',
					'{$thisArticleID}',
					'blog',
					'{$_POST["title"]}',
					'{$_POST["body"]}',
					'{$_POST["polarity"]}',
					'{$_POST["meid"]}'						

				)
			");

			_fnc("reload", 0, "?L=blogs.blog&article={$thisArticleID}");


			/*
				update the blog article data row to reflect the 
				new comments count
			*/
			myQ("UPDATE `[x]blogs` SET `comments`='".++$thisTotalComments."' WHERE `id`='{$thisArticleID}'");
		}

	}
	/* 
		Nothing was submitted but this user
		is not a guest, we will show the "write"
		comment form
	*/
	else $tpl->Zone("writeComment", "enabled");
}

/*
	Guests are not allowed to post comments
	so we will show an error message instead
	of the "write comment" form box.
*/
else $tpl ->Zone("writeComment", "guest");

// SHOW COMMENTS ///////////////////////////////////////////////////////////////
/*
	We will get all the comments left for this
	blog article. Note that this occurs AFTER
	any comment got posted so we're sure we are
	getting the updated and accurate data from
	the database.
*/
$select = myQ("
	SELECT * 
	FROM `[x]comments` 
	WHERE `relative`='{$thisArticleID}' 
	AND `type`='blog'
	ORDER BY `date` DESC
");

/*
	If there was more than zero comments found
	for this article, we will show those on the
	blogs page.
*/
if (myNum($select) > 0) {

	/*
		Enabled the article comments block in the
		template
	*/
	$tpl -> Zone("blogArticleCommentsBlock", "enabled");

	/*
		Loop inside the results and generate the
		comments row array to be passed to the looping
		engine
	*/
	while ($commentRow = myF($select)) {
		$commentRowArray[] = array(
			"comment.id" => $commentRow["id"],
			"comment.username" => _fnc("user", $commentRow["user"], "username"),
			"comment.userid" => $commentRow["user"],
			"comment.usermainpicture" => _fnc("user", $commentRow["user"], "mainpicture"),
			"comment.date" => date($CONF["LOCALE_LONG_DATE_TIME"], $commentRow["date"]),
			"comment.title" => _fnc("strtrim", $commentRow["title"], 40),
			"comment.body" =>  $commentRow["body"],
			"comment.polarity" => $commentRow["polarity"]
		);
	}

	/* 
		If the array exists, we will pass its
		content to the looping engine for replacement.
	*/		
	if (isset($commentRowArray)) $tpl -> Loop("blogArticleComments", $commentRowArray);
} 

/*
	There was no comment for this blog article.
	We will disable the comments block in the
	template
*/
else $tpl -> Zone("blogArticleCommentsBlock", "disabled");

// HANDLE BLOG ARTICLE DELETION /////////////////////////////////////////////////
/*
	We will handle blog deletion if requested - this can
	only be triggered by the blog owner, or by an administrator.
*/
if (isset($_GET["rm"])) {
	if ($thisUserID == me("id") || me("is_administrator") || me("is_superadministrator")) {

		/*
			We will throw the blog article and all the related blog comments
		*/
		myQ("DELETE FROM `[x]blogs` WHERE `id`='{$thisArticleID}' LIMIT 1");
		myQ("DELETE FROM `[x]comments` WHERE `relative`='{$thisArticleID}' AND `type`='blog'");

		_fnc("reload", 0, "?L=blogs.browse");

	}
}

// FEOF FLUSH ///////////////////////////////////////////////////////////////////
/*
	Clear the remaining zones in the theme. 
	This should theorically not be necessary
	but as the error is a human thing... lets
	just don't push our luck! 
*/
$tpl -> CleanZones();

/*
	We're done processing that page. Let's flush
	the template buffer and let the rest of the 
	structure finish processing.
*/
$tpl -> Flush();

 

 

Link to comment
https://forums.phpfreaks.com/topic/97106-post-delete-option-on-only-my-comments/
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.