chamilo/chamilo-lms

View on GitHub
public/main/inc/ajax/dropbox.ajax.php

Summary

Maintainability
A
0 mins
Test Coverage
<?php
/* For licensing terms, see /license.txt */

/**
 * Responses to AJAX calls for the document upload.
 */
use Chamilo\CoreBundle\Component\Utils\StateIcon;

require_once __DIR__.'/../global.inc.php';
require_once api_get_path(SYS_CODE_PATH).'dropbox/dropbox_functions.inc.php';

$action = $_REQUEST['a'];
switch ($action) {
    case 'upload_file':
        api_protect_course_script(true);
        // User access same as upload.php
        $is_allowed_to_edit = api_is_allowed_to_edit(null, true);

        $recipients = isset($_POST['recipients']) ? $_POST['recipients'] : '';
        $id = isset($_GET['id']) ? (int) $_GET['id'] : 0;

        if (empty($recipients) && empty($id)) {
            $resultList[] = ['error' => get_lang('You must select at least one destinee')];
            echo json_encode(['files' => $resultList]);
            exit;
        }
        $work = null;
        if (!empty($id)) {
            $work = new Dropbox_SentWork($id);
            if (empty($work)) {
                $resultList[] = ['error' => get_lang('Error')];
                echo json_encode(['files' => $resultList]);
                exit;
            }
        }

        if (!empty($_FILES)) {
            $files = $_FILES['files'];
            $fileList = [];
            foreach ($files as $name => $array) {
                $counter = 0;
                foreach ($array as $data) {
                    $fileList[$counter][$name] = $data;
                    $counter++;
                }
            }

            $resultList = [];
            foreach ($fileList as $file) {
                $globalFile = [];
                $globalFile['files'] = $file;
                /** @var Dropbox_SentWork $result */
                $result = store_add_dropbox($file, $work);

                $json = [];
                if (!empty($result)) {
                    $json['name'] = Display::url(
                        api_htmlentities($result->title),
                        api_htmlentities(api_get_path(WEB_CODE_PATH).'dropbox/index.php?'.api_get_cidreq()),
                        ['target' => '_blank']
                    );

                    $json['url'] = api_get_path(WEB_CODE_PATH).'dropbox/index.php?'.api_get_cidreq();
                    $json['size'] = format_file_size($result->filesize);
                    $json['type'] = api_htmlentities($file['type']);
                    $json['result'] = Display::getMdiIcon(
                        StateIcon::COMPLETE,
                        'ch-tool-icon',
                        null,
                        ICON_SIZE_SMALL,
                        get_lang('Uploaded.')
                    );
                } else {
                    $json['result'] = Display::getMdiIcon(
                        StateIcon::WARNING,
                        'ch-tool-icon',
                        null,
                        ICON_SIZE_SMALL,
                        get_lang('Error')
                    );
                }
                $resultList[] = $json;
            }

            echo json_encode(['files' => $resultList]);
        }
        exit;
        break;
}
exit;