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")); }