<?php
/**
* @package XenCentral Feedback System
* @author DNF Technology
* @copyright Drnoyan & Nalyan LDA, Portugal, EU
* @license http://dnf.technology/terms/
* @link http://customers.dnf.technology
* @version 2.0.0 Beta 10
* @revision 12
*/
namespace XenCentral\Feedback\Admin\Controller;
use XF\Admin\Controller\AbstractController;
use XF\Mvc\FormAction;
use XF\Mvc\ParameterBag;
class Main extends AbstractController
{
public function actionIndex()
{
return $this->actionUpdate();
}
public function actionUpdate()
{
return $this->view('XenCentral\Feedback:UpdateUsers', 'xcfs_update_users');
}
public function actionDoUpdate()
{
$input = $this->filter(array(
'position' => 'uint',
'perpage' => 'uint',
'delay' => 'uint',
'process' => 'uint'
));
if ($input['delay']) {
sleep($input['delay']);
}
if (!$this->_getUserModel()->rebuild($input['position'], $input['perpage'])) {
return $this->redirect(\XF::app()->router('admin')->buildLink('feedback/update'), \XF::phrase('xcfs_rebuild_completed'));
}
$elements = array();
$elements['position'] = $input['position'] + $input['perpage'];
$elements['perpage'] = $input['perpage'];
$elements['delay'] = $input['delay'];
$viewParams = array(
'elements' => $elements,
'detailedMessage' => \XF::phrase('xcfs_user_x', array(
'x' => $elements['position']
)),
'rebuildMessage' => "",
'showExitLink' => true
);
return $this->view('XenCentral\Feedback:Rebuild', 'xcfs_update_users_redirect', $viewParams);
}
public function actionImport()
{
return $this->view('XenCentral\Feedback:ImportData', 'xcfs_import', array('importers' => $this->_getImportModel()->getImporterList()));
}
public function actionDoImport()
{
$input = $this->filter(array(
'position' => 'uint',
'perpage' => 'uint',
'delay' => 'uint',
'restart' => 'uint',
'importer' => 'str',
'host' => 'str',
'port' => 'str',
'username' => 'str',
'password' => 'str',
'dbname' => 'str',
'prefix' => 'str',
'archive_table' => 'str',
'charset' => 'str',
'complete' => 'uint',
'successFeedback' => 'uint',
'successComments' => 'uint',
'failFeedback' => 'uint',
'failComments' => 'uint'
));
if ($input['complete']) {
if ($input['delay']) {
sleep($input['delay']);
}
return $this->redirect(\XF::app()->router('admin')->buildLink('feedback/update'), \XF::phrase('xcfs_data_imported'));
}
if ($errors = $this->_getImportModel()->validateConfiguration($input)) {
$errorText = array();
foreach ($errors as $error)
{
$errorText[] = strval($error);
}
// errors occurred
return $this->message(implode('<br />', $errorText));
}
$this->_getImportModel()->init($input);
if (!$input['restart']) {
// delete old data
$input['restart'] = 1;
$this->_getImportModel()->restart();
$viewParams = array(
'elements' => $input,
'detailedMessage' => \XF::phrase('xcfs_deleting_old_data'),
'rebuildMessage' => "",
'showExitLink' => true
);
return $this->view('XenCentral\Feedback:Import', 'xcfs_import_redirect', $viewParams);
}
if ($input['delay']) {
sleep($input['delay']);
}
if (!$this->_getImportModel()->import($input['position'], $input['perpage'])) {
$input['complete'] = true;
$viewParams = array(
'elements' => $input,
'detailedMessage' => \XF::phrase('xcfs_data_is_imported', array(
'successFeedback' => $this->_getImportModel()->getSuccessFeedback(),
'successComments' => $this->_getImportModel()->getSuccessComments(),
'failFeedback' => $this->_getImportModel()->getFailFeedback(),
'failComments' => $this->_getImportModel()->getFailComments()
), false),
'rebuildMessage' => "",
'showExitLink' => true
);
return $this->view('XenCentral\Feedback:Import', 'xcfs_import_redirect', $viewParams);
}
$input['position'] = $input['position'] + $input['perpage'];
$input['successFeedback'] = $this->_getImportModel()->getSuccessFeedback();
$input['successComments'] = $this->_getImportModel()->getSuccessComments();
$input['failFeedback'] = $this->_getImportModel()->getFailFeedback();
$input['failComments'] = $this->_getImportModel()->getFailComments();
$viewParams = array(
'elements' => $input,
'detailedMessage' => \XF::phrase('xcfs_data_import_status', array(
'successFeedback' => $this->_getImportModel()->getSuccessFeedback(),
'successComments' => $this->_getImportModel()->getSuccessComments(),
'failFeedback' => $this->_getImportModel()->getFailFeedback(),
'failComments' => $this->_getImportModel()->getFailComments()
), false),
'rebuildMessage' => $this->_getImportModel()->getErrors(),
'showExitLink' => true
);
return $this->view('XenCentral\Feedback:Import', 'xcfs_import_redirect', $viewParams);
}
/**
* Get import model
* @return XenCentral_Feedback_Model_Import
*/
protected function _getImportModel()
{
return \XF::repository('XenCentral\Feedback:Import');
}
/**
* Get user model
* @return XenCentral_Feedback_Model_User
*/
protected function _getUserModel()
{
return \XF::repository('XenCentral\Feedback:User');
}
}