Пример #1
0
function pleio_api_save_file($data = "", $file_name = "", $title = "", $description = "", $tags = "", $file_id = null, $folder_id = 0, $group_id = 0, $access_id = "", $wiki_id = "", $mimetype = "")
{
    $file_id = $file_id ? $file_id : null;
    $user = elgg_get_logged_in_user_entity();
    $user_id = $user !== false ? $user->guid : 0;
    if (!$data && !$file_id) {
        return new ErrorResult(elgg_echo("file:uploadfailed"));
    }
    $swordfish_group = $group_id ? pleio_api_swordfish_group($group_id) : false;
    if ($swordfish_group) {
        $group = get_entity($group_id);
        $url = pleio_api_swordfish_baseurl($group->site_guid) . "post-file";
        $swordfish_name = pleio_api_swordfish_username($user->username);
        $params = array("data" => $data, "title" => $title);
        if ($file_id) {
            $params["fileId"] = $file_id;
        } elseif ($folder_id) {
            $params["folderId"] = $folder_id;
        } elseif ($group_id) {
            $params["groupId"] = $swordfish_group;
        } else {
            return new ErrorResult("Vul minimaal een bestand, folder of groep in");
        }
        if ($wiki_id) {
            $params["wikiId"] = $wiki_id;
        }
        if ($access_id != ACCESS_PRIVATE) {
            $params["visibility"] = "internally_published";
        } else {
            $params["visibility"] = "private";
        }
        $params["filename"] = $file_name;
        $result = pleio_api_call_swordfish_api($swordfish_name, $url, "POST", $params);
        if ($result->ok) {
            if (strpos($result->headers["CONTENT-TYPE"], "json")) {
                $response = json_decode($result->response);
                return new SaveSuccessResult(elgg_echo("file:saved"), $response->id);
            } else {
                return new ErrorResult($result->headers["BOBO-EXCEPTION-VALUE"]);
            }
        } else {
            return new ErrorResult($result->headers["BOBO-EXCEPTION-VALUE"]);
        }
    } else {
        if ($file_id) {
            $file = get_entity($file_id);
        }
        if (!$file) {
            $file = new ElggFile();
            $file->owner_guid = $user_id;
        }
        if ($title) {
            $file->title = $title;
        }
        if ($description) {
            $file->setDescription($description);
        }
        if ($tags) {
            $file->setMetaData("tags", $tags);
        }
        if ($group_id) {
            $file->setContainerGUID($group_id);
        }
        if ($access_id) {
            $file->access_id = $access_id;
        }
        if ($data) {
            $file->setFilename(basename($file_name));
            $data = base64_decode($data);
            $fh = $file->open("write");
            if ($fh) {
                $file->write($data);
                $file->close();
            }
            if (!$mimetype) {
                $mimetype = $file->detectMimeType($file->getFilenameOnFilestore());
            }
            $file->setMimeType($mimetype);
            $file->simpletype = file_get_simple_type($mimetype);
        }
        if (!$file->save()) {
            return new ErrorResult(elgg_echo("file:uploadfailed"));
        }
        if ($folder_id) {
            remove_entity_relationships($file->guid, "folder_of", 1);
            add_entity_relationship($folder_id, "folder_of", $file->guid);
        }
        if (!$file_id) {
            add_to_river('river/object/file/create', 'create', $user_id, $file->guid);
        }
        return new SaveSuccessResult(elgg_echo("file:saved"), $file->guid);
    }
    return new ErrorResult(elgg_echo("file:uploadfailed"));
}