<?php
class Andy_ChangeDate_ControllerPublic_Post extends XFCP_Andy_ChangeDate_ControllerPublic_Post
{
public function actionChangedate()
{
$post['post_id'] = $this->_input->filterSingle('post_id', XenForo_Input::UINT);
$viewParams = array('post' => $post);
if (XenForo_Visitor::getInstance()->isSuperAdmin())
{
return $this->responseView('Andy_DateChange_ViewPublic_Post','andy_changedate',$viewParams);
}
}
public function actionChangedatesave()
{
$this->_assertPostOnly();
// if you are not a super admin, you will get an error
if (!XenForo_Visitor::getInstance()->isSuperAdmin())
{
return;
}
$postId= $this->_input->filterSingle('post_id', XenForo_Input::UINT);
// get input text from template
$newPostDate = $this->_input->filterSingle('new_post_date', XenForo_Input::STRING);
if ($newPostDate == '')
{
return $this->responseError(new XenForo_Phrase('date_missing'));
}
// get input text from template
$newPostTime = $this->_input->filterSingle('new_post_time', XenForo_Input::STRING);
if ($newPostTime == '')
{
return $this->responseError(new XenForo_Phrase('time_missing'));
}
// convert to unix timestamp
date_default_timezone_set('America/Los_Angeles');
$date = $newPostDate . ' ' . $newPostTime;
$dateline = strtotime($date);
if ($dateline == '')
{
return $this->responseError(new XenForo_Phrase('date_or_time_format_incorrect'));
}
//########################################
// start database operations
//########################################
// update the xf_post.post_date
$dw = XenForo_DataWriter::create('XenForo_DataWriter_DiscussionMessage_Post');
$dw->setExistingData($postId);
$dw->set('post_date', $dateline);
$dw->save();
// update the xf_post.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
//########################################
// this variable is needed the line below (XenForo_Link::buildPublicLink)
$post['post_id'] = $postId;
return $this->responseRedirect(
XenForo_ControllerResponse_Redirect::SUCCESS,
XenForo_Link::buildPublicLink('posts', $post),'Post Date Changed');
}
}
?>