AndyB
Well-known member
Before I upload this add-on to Resources, here is the Post.php files with a few more comments. If anyone sees where the comments might be improved, please let me know.
PHP:
<?php
class Andy_ChangeDate_ControllerPublic_Post extends XFCP_Andy_ChangeDate_ControllerPublic_Post
{
public function actionChangedate()
{
// if you are not a super admin, return
if (!XenForo_Visitor::getInstance()->isSuperAdmin())
{
return;
}
// get post_id from route, example /forums/posts/1859225/changedate
$postId = $this->_input->filterSingle('post_id', XenForo_Input::UINT);
// get all post data variables
$post = $this->getModelFromCache('XenForo_Model_Post')->getPostById($postId);
// format date and time for use in template input
$userLanguage = XenForo_Visitor::getInstance()->getLanguage();
$timeFormat = $userLanguage['date_format'] . ' ' . $userLanguage['time_format'];
$post['formatted_date'] = date($timeFormat, $post['post_date'] + XenForo_Locale::getTimeZoneOffset());
// display andy_changedate template
$viewParams = array('post' => $post);
return $this->responseView('Andy_DateChange_ViewPublic_Post','andy_changedate',$viewParams);
}
public function actionChangedatesave()
{
// make sure data comes from $_POST
$this->_assertPostOnly();
// if you are not a super admin, you will get an error
if (!XenForo_Visitor::getInstance()->isSuperAdmin())
{
return;
}
// get post_id
$post['post_id'] = $this->_input->filterSingle('post_id', XenForo_Input::UINT);
// get new_post_date from input
$newPostDate = $this->_input->filterSingle('new_post_date', XenForo_Input::STRING);
// convert $newPostDate to unix timestamp
$dateline = strtotime($newPostDate ) - XenForo_Locale::getTimeZoneOffset();
// make sure $dateline has a value
if (!$dateline)
{
return $this->responseError(new XenForo_Phrase('incorrect_date_format_entered'));
}
//########################################
// start database operations
//########################################
// update xf_post table (post_date)
$dw = XenForo_DataWriter::create('XenForo_DataWriter_DiscussionMessage_Post');
$dw->setExistingData($post['post_id']);
$dw->set('post_date', $dateline);
$dw->save();
// update xf_post table (position) for each post in the thread
// also updates other tables with first post and last post information
$threadId = $dw->get('thread_id');
$dw = XenForo_DataWriter::create('XenForo_DataWriter_Discussion_Thread');
$dw->setExistingData($threadId);
$dw->rebuildDiscussion();
$dw->save();
//########################################
// return with response redirect
//########################################
return $this->responseRedirect(
XenForo_ControllerResponse_Redirect::SUCCESS,
XenForo_Link::buildPublicLink('posts', $post),'Post Date Changed');
}
}
?>
Last edited: