mirror of https://github.com/sualko/cloud_bbb
feat: Default Presentation
get the direct download from the php api instead of frontendpull/207/head
parent
38da9bda60
commit
9f0f591d7a
|
@ -2,37 +2,49 @@
|
||||||
|
|
||||||
namespace OCA\BigBlueButton\BigBlueButton;
|
namespace OCA\BigBlueButton\BigBlueButton;
|
||||||
|
|
||||||
|
use OCP\Files\IRootFolder;
|
||||||
|
use OCP\Files\File;
|
||||||
use OCP\Files\Storage\IStorage;
|
use OCP\Files\Storage\IStorage;
|
||||||
|
|
||||||
class Presentation {
|
class Presentation
|
||||||
|
{
|
||||||
private $url;
|
private $url;
|
||||||
|
|
||||||
private $filename;
|
/** @var File*/
|
||||||
|
private $file;
|
||||||
|
|
||||||
private $path;
|
/** @var IRootFolder */
|
||||||
|
private $userFolder;
|
||||||
|
|
||||||
/** @var IStorage */
|
/** @var IStorage */
|
||||||
private $storage;
|
private $storage;
|
||||||
|
|
||||||
public function __construct(string $path, IStorage $storage) {
|
public function __construct(string $path, string $userID, IRootFolder $iRootFolder)
|
||||||
$this->storage = $storage;
|
{
|
||||||
$this->path = preg_replace('/^\//', '', $path);
|
$userFolder = $iRootFolder->getUserFolder($userID);
|
||||||
$this->filename = preg_replace('/[^\x20-\x7E]+/','#', $path);
|
$this->file = $userFolder->get($path);
|
||||||
|
$this->storage = $this->file->getStorage();
|
||||||
}
|
}
|
||||||
|
|
||||||
public function generateUrl(): string {
|
public function generateUrl(): string
|
||||||
return $this->storage->getDirectDownload($this->path);
|
{
|
||||||
|
$filePath = $this->file->getInternalPath();
|
||||||
|
[$url] = $this->storage->getDirectDownload($filePath);
|
||||||
|
return $url;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getUrl(): string {
|
public function getUrl(): string
|
||||||
|
{
|
||||||
return $this->url;
|
return $this->url;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getFilename(): string {
|
public function getFilename(): string
|
||||||
return $this->filename;
|
{
|
||||||
|
return $this->file->getName();
|
||||||
}
|
}
|
||||||
|
|
||||||
public function isValid(): bool {
|
public function isValid(): bool
|
||||||
return !empty($this->filename);
|
{
|
||||||
|
return !empty($this->file->getContent());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,7 +14,7 @@ use OCP\AppFramework\Controller;
|
||||||
use OCP\AppFramework\Http\RedirectResponse;
|
use OCP\AppFramework\Http\RedirectResponse;
|
||||||
use OCP\AppFramework\Http\TemplateResponse;
|
use OCP\AppFramework\Http\TemplateResponse;
|
||||||
use OCP\BackgroundJob\IJobList;
|
use OCP\BackgroundJob\IJobList;
|
||||||
use OCP\Files\Storage\IStorage;
|
use OCP\Files\IRootFolder;
|
||||||
use OCP\IRequest;
|
use OCP\IRequest;
|
||||||
use OCP\IURLGenerator;
|
use OCP\IURLGenerator;
|
||||||
use OCP\IUserSession;
|
use OCP\IUserSession;
|
||||||
|
@ -45,8 +45,8 @@ class JoinController extends Controller
|
||||||
/** @var IJobList */
|
/** @var IJobList */
|
||||||
private $jobList;
|
private $jobList;
|
||||||
|
|
||||||
/** @var IStorage */
|
/** @var IRootFolder */
|
||||||
private $storage;
|
private $iRootFolder;
|
||||||
|
|
||||||
public function __construct(
|
public function __construct(
|
||||||
string $appName,
|
string $appName,
|
||||||
|
@ -57,7 +57,7 @@ class JoinController extends Controller
|
||||||
API $api,
|
API $api,
|
||||||
Permission $permission,
|
Permission $permission,
|
||||||
IJobList $jobList,
|
IJobList $jobList,
|
||||||
IStorage $storage
|
IRootFolder $iRootFolder
|
||||||
) {
|
) {
|
||||||
parent::__construct($appName, $request);
|
parent::__construct($appName, $request);
|
||||||
|
|
||||||
|
@ -67,7 +67,7 @@ class JoinController extends Controller
|
||||||
$this->api = $api;
|
$this->api = $api;
|
||||||
$this->permission = $permission;
|
$this->permission = $permission;
|
||||||
$this->jobList = $jobList;
|
$this->jobList = $jobList;
|
||||||
$this->storage = $storage;
|
$this->iRootFolder = $iRootFolder;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function setToken(string $token): void
|
public function setToken(string $token): void
|
||||||
|
@ -117,13 +117,12 @@ class JoinController extends Controller
|
||||||
throw new NoPermissionException();
|
throw new NoPermissionException();
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($this->permission->isAdmin($room, $userId)) {
|
if ($this->permission->isAdmin($room, $userId) && !empty($filename)) {
|
||||||
$presentation = new Presentation($filename, $this->storage);
|
$presentation = new Presentation($filename, $userId, $this->iRootFolder);
|
||||||
}
|
} else if (!$room->running && !empty($room->presentationPath)) {
|
||||||
|
$presentation = new Presentation($room->presentationPath, $room->presentationUserId, $this->iRootFolder);
|
||||||
if (!$room->running && $presentation === null) {
|
|
||||||
$presentation = new Presentation($room->presentationPath, $this->storage);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
} elseif ($room->access === Room::ACCESS_INTERNAL || $room->access === Room::ACCESS_INTERNAL_RESTRICTED) {
|
} elseif ($room->access === Room::ACCESS_INTERNAL || $room->access === Room::ACCESS_INTERNAL_RESTRICTED) {
|
||||||
return new RedirectResponse($this->getLoginUrl());
|
return new RedirectResponse($this->getLoginUrl());
|
||||||
} elseif (empty($displayname) || strlen($displayname) < 3 || ($room->access === Room::ACCESS_PASSWORD && $password !== $room->password)) {
|
} elseif (empty($displayname) || strlen($displayname) < 3 || ($room->access === Room::ACCESS_PASSWORD && $password !== $room->password)) {
|
||||||
|
|
Loading…
Reference in New Issue