class xShop_DataWriter_UserPoints extends XenForo_DataWriter
{
protected function _getFields()
{
return array(
'xshop_points' => array(
'points_id' => array('type' => self::TYPE_UINT, 'autoIncrement' => true),
'user_id' => array('type' => self::TYPE_UINT),
'points_total' => array('type' => self::TYPE_UINT),
'points_earned' => array('type' => self::TYPE_UINT)
)
);
}
protected function _getExistingData($data)
{
if (!$userid = $this->_getExistingPrimaryKey($data, 'member_id'))
{
return false;
}
return array('xshop_points' => $this->getModelFromCache('xShop_Model_Points')->getUserPointsId($userid));
}
protected function _getUpdateCondition($tableName)
{
return 'points_id = ' . $this->_db->quote($this->getExisting('points_id'));
}
/* protected function _postDelete()
{
$model = $this->getModelFromCache('xShop_Model_Stock');
$deletedId = $this->_existingData['xshop_stock']['member_id'];
if ($model->hasData($deletedId))
{
$dw->delete();
}
}*/
public function actionConfirm()
{
$this->_assertPostOnly();
$dwInput = $this->_input->filter(array(
'item_id' => XenForo_Input::UINT,
'item_name' => XenForo_Input::STRING,
'item_cost' => XenForo_Input::UINT,
'points_id' => XenForo_Input::UINT,
'points_total' => XenForo_Input::UINT,
'points_earned' => XenForo_Input::UINT,
'stock_order' => XenForo_Input::UINT,
'member_id' => XenForo_Input::UINT,
'stock_id' => XenForo_Input::UINT
));
$dw = XenForo_DataWriter::create('xShop_DataWriter_UserPoints'); if ($dwInput['points_id']) $dw->setExistingData($dwInput['points_id']);
$new_total = $dwInput['points_total'] - $dwInput['item_cost'];
$dw->set('points_id', $dwInput['points_id']); $dw->set('user_id', $dwInput['user_id']); $dw->set('points_total', $new_total); $dw->save();
$redirectType = ($dwInput['points_id'] ? XenForo_ControllerResponse_Redirect::RESOURCE_UPDATED : XenForo_ControllerResponse_Redirect::RESOURCE_CREATED);
return $this->responseRedirect( $redirectType, XenForo_Link::buildPublicLink('shop') );
}
protected function _getPointsModel()
{
return $this->getModelFromCache('xShop_Model_Points');
}
No controller response from xShop_ControllerPublic_Index_Buy::actionConfirm
XenForo_FrontController->_handleControllerResponse() in XenForo/FrontController.php at line 318
XenForo_FrontController->dispatch() in XenForo/FrontController.php at line 132
XenForo_FrontController->run() in /home/xen/public_html/index.php at line 13
public function actionConfirm()
{
$this->_assertPostOnly();
$dwInput = $this->_input->filter(array(
'item_id' => XenForo_Input::UINT,
'item_name' => XenForo_Input::STRING,
'item_cost' => XenForo_Input::UINT,
'points_id' => XenForo_Input::UINT,
'points_total' => XenForo_Input::UINT,
'points_earned' => XenForo_Input::UINT,
'stock_order' => XenForo_Input::UINT,
'member_id' => XenForo_Input::UINT,
'stock_id' => XenForo_Input::UINT
));
$userId = $dwInput['member_id'];
$new_total = $dwInput['points_total'] - $dwInput['item_cost'];
$pointsModel = $this->_getPointsModel();
$exists = $pointsModel->getUserPoints($userId); // whatever function you use for this
$dw = XenForo_DataWriter::create('xShop_DataWriter_UserPoints');
if ($exists) // update
{
$dw->setExistingData($userId);
}
$vars = array('user_id' => $userId, 'points_total' => $new_total);
$dw->bulkSet($vars);
$dw->preSave();
if ($dw->hasErrors())
{
$errors = $dw->getErrors();
$errorKey = reset($errors);
return false;
}
$dw->save();
$redirectType = ($userId ?
XenForo_ControllerResponse_Redirect::RESOURCE_UPDATED :
XenForo_ControllerResponse_Redirect::RESOURCE_CREATED);
return $this->responseRedirect(
$redirectType,
XenForo_Link::buildAdminLink('shop')
);
}
$points_total = $dw->get('points_total');
$new_total = $points_total - $dwInput['item_cost'];
We use essential cookies to make this site work, and optional cookies to enhance your experience.