Your IP : 216.73.216.48


Current Path : /hdd/hdd11/www/codedit/modules/editor/controllers/
Upload File :
Current File : /hdd/hdd11/www/codedit/modules/editor/controllers/IndexController.php

<?php

namespace app\modules\editor\controllers;

use Yii;
use yii\filters\AccessControl;
use yii\filters\VerbFilter;
use yii\web\Controller;
use yii\web\Response;
use yii\helpers\Url;
use app\models\FileSystem;
use app\models\Members;
use app\models\forms\AddFtpConnectionForm;
use vendor\custom\MCrypt;

class IndexController extends CommonController {

    public function actionIndex() {
        $request = Yii::$app->request;
        $operation = $request->get('operation');
        $type = $request->get('type');
        $id = $request->get('id');
        $parent = $request->get('parent');
        $text = $request->get('text');
        if ($operation) {
            $fs = new FileSystem($this->currentConnection->host, $this->currentConnection->port, $this->currentConnection->username, $this->currentConnection->password, $this->currentConnection->type, $this->currentConnection->dir);
            try {
                $rslt = null;
                switch ($request->get('operation')) {
                    case 'get_node':
                        $node = isset($id) && $id !== '#' ? $id : '/';
                        $rslt = $fs->lst($node, (isset($id) && $id === '#'));
                        break;
                    case "get_content":
                        $node = isset($id) && $id !== '#' ? $id : '/';
                        $rslt = $fs->data($node);
                        break;
                    case 'create_node':
                        $node = isset($id) && $id !== '#' ? $id : '/';
                        $rslt = $fs->create($node, isset($text) ? $text : '', (!isset($type) || $type !== 'file'));
                        break;
                    case 'rename_node':
                        $node = isset($id) && $id !== '#' ? $id : '/';
                        $rslt = $fs->rename($node, isset($text) ? $text : '');
                        break;
                    case 'delete_node':
                        $node = isset($id) && $id !== '#' ? $id : '/';
                        $rslt = $fs->remove($node);
                        break;
                    case 'move_node':
                        $node = isset($id) && $id !== '#' ? $id : '/';
                        $parn = isset($parent) && $parent !== '#' ? $parent : '/';
                        $rslt = $fs->move($node, $parn);
                        break;
                    case 'copy_node':
                        $node = isset($id) && $id !== '#' ? $id : '/';
                        $parn = isset($parent) && $parent !== '#' ? $parent : '/';
                        $rslt = $fs->copy($node, $parn);
                        break;
                    default:
                        throw new Exception('Unsupported operation: ' . $request->get('operation'));
                        break;
                }
                header('Content-Type: application/json; charset=utf-8');
                echo json_encode($rslt);
            } catch (Exception $e) {
                header($_SERVER['SERVER_PROTOCOL'] . ' 500 Server Error');
                header('Status:  500 Server Error');
                echo $e->getMessage();
            }
            die();
        }
        return $this->render('index', [
                    'currentConnection' => $this->currentConnection,
                    'isConnected' => $this->isConnected,
        ]);
    }

    public function actionEditFile() {
        $request = Yii::$app->request;
        $response = Yii::$app->response;
        $response->format = Response::FORMAT_JSON;
        if ($request->method == 'POST') {
            $filePath = Yii::$app->request->post('filepath');
            $code = Yii::$app->request->post('code-editor');
            $status = $this->serverAccess->editFileContent($this->currentConnection, $filePath, $code);
        } else {
            $this->redirect(Url::toRoute('index'));
        }
        return [
            'status' => $status
        ];
    }

}