View file upload/src/addons/XenCentral/Feedback/Admin/Controller/Main.php

File size: 6.12Kb
<?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');
    }
}