Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
73 changes: 73 additions & 0 deletions .github/workflows/oci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
name: PHPUnit

on:
pull_request:
push:
branches:
- master
- stable*

env:
APP_NAME: spreed

jobs:
oci:
runs-on: ubuntu-latest

strategy:
# do not stop on another job's failure
fail-fast: false
matrix:
php-versions: ['7.4']
databases: ['oci']
server-versions: ['master']

name: php${{ matrix.php-versions }}-${{ matrix.databases }}

services:
oracle:
image: deepdiver/docker-oracle-xe-11g # "wnameless/oracle-xe-11g-r2"
ports:
- "1521:1521"

steps:
- name: Checkout server
uses: actions/checkout@v2
with:
repository: nextcloud/server
ref: ${{ matrix.server-versions }}

- name: Checkout submodules
shell: bash
run: |
auth_header="$(git config --local --get http.https://github.com/.extraheader)"
git submodule sync --recursive
git -c "http.extraheader=$auth_header" -c protocol.version=2 submodule update --init --force --recursive --depth=1

- name: Checkout app
uses: actions/checkout@v2
with:
path: apps/${{ env.APP_NAME }}

- name: Set up php ${{ matrix.php-versions }}
uses: "shivammathur/setup-php@v2"
with:
php-version: ${{ matrix.php-versions }}
extensions: mbstring, iconv, fileinfo, intl, oci8
tools: phpunit:8.5.2
coverage: none

- name: Set up PHPUnit
working-directory: apps/${{ env.APP_NAME }}
run: composer i

- name: Set up Nextcloud
run: |
mkdir data
./occ maintenance:install --verbose --database=oci --database-name=XE --database-host=127.0.0.1 --database-port=1521 --database-user=autotest --database-pass=owncloud --admin-user admin --admin-pass admin
php -f index.php
./occ app:enable --force ${{ env.APP_NAME }}

- name: PHPUnit
working-directory: apps/${{ env.APP_NAME }}/tests/php
run: phpunit -c phpunit.xml
142 changes: 68 additions & 74 deletions lib/Manager.php
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
use OCA\Talk\Exceptions\RoomNotFoundException;
use OCA\Talk\Model\Attendee;
use OCA\Talk\Model\AttendeeMapper;
use OCA\Talk\Model\SelectHelper;
use OCA\Talk\Model\SessionMapper;
use OCA\Talk\Service\ParticipantService;
use OCP\App\IAppManager;
Expand Down Expand Up @@ -120,9 +121,9 @@ public function __construct(IDBConnection $db,

public function forAllRooms(callable $callback): void {
$query = $this->db->getQueryBuilder();
$query->select('*')
->selectAlias('id', 'r_id')
->from('talk_rooms');
$helper = new SelectHelper();
$helper->selectRoomsTable($query);
$query->from('talk_rooms', 'r');

$result = $query->execute();
while ($row = $result->fetch()) {
Expand Down Expand Up @@ -241,9 +242,10 @@ public function loadLastCommentInfo(int $id): ?IComment {

public function resetAssignedSignalingServers(ICache $cache): void {
$query = $this->db->getQueryBuilder();
$query->select('*')
->from('talk_rooms')
->where($query->expr()->isNotNull('assigned_hpb'));
$helper = new SelectHelper();
$helper->selectRoomsTable($query);
$query->from('talk_rooms', 'r')
->where($query->expr()->isNotNull('r.assigned_hpb'));

$result = $query->execute();
while ($row = $result->fetch()) {
Expand All @@ -264,20 +266,20 @@ public function resetAssignedSignalingServers(ICache $cache): void {
*/
public function searchRoomsByToken(string $searchToken = '', int $limit = null, int $offset = null): array {
$query = $this->db->getQueryBuilder();
$query->select('*')
->selectAlias('id', 'r_id')
->from('talk_rooms')
$helper = new SelectHelper();
$helper->selectRoomsTable($query);
$query->from('talk_rooms', 'r')
->setMaxResults(1);

if ($searchToken !== '') {
$query->where($query->expr()->iLike('token', $query->createNamedParameter(
$query->where($query->expr()->iLike('r.token', $query->createNamedParameter(
'%' . $this->db->escapeLikeParameter($searchToken) . '%'
)));
}

$query->setMaxResults($limit)
->setFirstResult($offset)
->orderBy('token', 'ASC');
->orderBy('r.token', 'ASC');
$result = $query->execute();

$rooms = [];
Expand All @@ -301,13 +303,11 @@ public function searchRoomsByToken(string $searchToken = '', int $limit = null,
*/
public function getRoomsForUser(string $userId, bool $includeLastMessage = false): array {
$query = $this->db->getQueryBuilder();
$query->select('r.*')
->addSelect('a.*')
->addSelect('s.*')
->selectAlias('r.id', 'r_id')
->selectAlias('a.id', 'a_id')
->selectAlias('s.id', 's_id')
->from('talk_rooms', 'r')
$helper = new SelectHelper();
$helper->selectRoomsTable($query);
$helper->selectAttendeesTable($query);
$helper->selectSessionsTable($query);
$query->from('talk_rooms', 'r')
->leftJoin('r', 'talk_attendees', 'a', $query->expr()->andX(
$query->expr()->eq('a.actor_id', $query->createNamedParameter($userId)),
$query->expr()->eq('a.actor_type', $query->createNamedParameter(Attendee::ACTOR_USERS)),
Expand Down Expand Up @@ -355,9 +355,9 @@ public function getListedRoomsForUser(string $userId, string $term = ''): array
$allowedListedTypes[] = Room::LISTABLE_USERS;
}
$query = $this->db->getQueryBuilder();
$query->select('r.*')
->selectAlias('r.id', 'r_id')
->from('talk_rooms', 'r')
$helper = new SelectHelper();
$helper->selectRoomsTable($query);
$query->from('talk_rooms', 'r')
->leftJoin('r', 'talk_attendees', 'a', $query->expr()->andX(
$query->expr()->eq('a.actor_id', $query->createNamedParameter($userId)),
$query->expr()->eq('a.actor_type', $query->createNamedParameter(Attendee::ACTOR_USERS)),
Expand Down Expand Up @@ -399,18 +399,16 @@ public function getListedRoomsForUser(string $userId, string $term = ''): array
*/
public function getRoomForUser(int $roomId, ?string $userId): Room {
$query = $this->db->getQueryBuilder();
$query->select('r.*')
->selectAlias('r.id', 'r_id')
->from('talk_rooms', 'r')
$helper = new SelectHelper();
$helper->selectRoomsTable($query);
$query->from('talk_rooms', 'r')
->where($query->expr()->eq('r.id', $query->createNamedParameter($roomId, IQueryBuilder::PARAM_INT)));

if ($userId !== null) {
// Non guest user
$query->addSelect('a.*')
->addSelect('s.*')
->selectAlias('a.id', 'a_id')
->selectAlias('s.id', 's_id')
->leftJoin('r', 'talk_attendees', 'a', $query->expr()->andX(
$helper->selectAttendeesTable($query);
$helper->selectSessionsTable($query);
$query->leftJoin('r', 'talk_attendees', 'a', $query->expr()->andX(
$query->expr()->eq('a.actor_id', $query->createNamedParameter($userId)),
$query->expr()->eq('a.actor_type', $query->createNamedParameter(Attendee::ACTOR_USERS)),
$query->expr()->eq('a.room_id', 'r.id')
Expand Down Expand Up @@ -463,19 +461,17 @@ public function getRoomForUser(int $roomId, ?string $userId): Room {
*/
public function getRoomForUserByToken(string $token, ?string $userId, bool $includeLastMessage = false): Room {
$query = $this->db->getQueryBuilder();
$query->select('r.*')
->selectAlias('r.id', 'r_id')
->from('talk_rooms', 'r')
$helper = new SelectHelper();
$helper->selectRoomsTable($query);
$query->from('talk_rooms', 'r')
->where($query->expr()->eq('r.token', $query->createNamedParameter($token)))
->setMaxResults(1);

if ($userId !== null) {
// Non guest user
$query->addSelect('a.*')
->addSelect('s.*')
->selectAlias('a.id', 'a_id')
->selectAlias('s.id', 's_id')
->leftJoin('r', 'talk_attendees', 'a', $query->expr()->andX(
$helper->selectAttendeesTable($query);
$helper->selectSessionsTable($query);
$query->leftJoin('r', 'talk_attendees', 'a', $query->expr()->andX(
$query->expr()->eq('a.actor_id', $query->createNamedParameter($userId)),
$query->expr()->eq('a.actor_type', $query->createNamedParameter(Attendee::ACTOR_USERS)),
$query->expr()->eq('a.room_id', 'r.id')
Expand Down Expand Up @@ -534,10 +530,10 @@ public function getRoomForUserByToken(string $token, ?string $userId, bool $incl
*/
public function getRoomById(int $roomId): Room {
$query = $this->db->getQueryBuilder();
$query->select('*')
->selectAlias('id', 'r_id')
->from('talk_rooms')
->where($query->expr()->eq('id', $query->createNamedParameter($roomId, IQueryBuilder::PARAM_INT)));
$helper = new SelectHelper();
$helper->selectRoomsTable($query);
$query->from('talk_rooms', 'r')
->where($query->expr()->eq('r.id', $query->createNamedParameter($roomId, IQueryBuilder::PARAM_INT)));

$result = $query->execute();
$row = $result->fetch();
Expand All @@ -564,13 +560,11 @@ public function getRoomById(int $roomId): Room {
*/
public function getRoomByActor(string $token, string $actorType, string $actorId): Room {
$query = $this->db->getQueryBuilder();
$query->select('r.*')
->addSelect('a.*')
->addSelect('s.*')
->selectAlias('a.id', 'a_id')
->selectAlias('s.id', 's_id')
->selectAlias('r.id', 'r_id')
->from('talk_rooms', 'r')
$helper = new SelectHelper();
$helper->selectRoomsTable($query);
$helper->selectAttendeesTable($query);
$helper->selectSessionsTable($query);
$query->from('talk_rooms', 'r')
->leftJoin('r', 'talk_attendees', 'a', $query->expr()->andX(
$query->expr()->eq('a.actor_type', $query->createNamedParameter($actorType)),
$query->expr()->eq('a.actor_id', $query->createNamedParameter($actorId)),
Expand Down Expand Up @@ -615,9 +609,9 @@ public function getRoomByToken(string $token, ?string $preloadUserId = null): Ro
}

$query = $this->db->getQueryBuilder();
$query->select('r.*')
->selectAlias('r.id', 'r_id')
->from('talk_rooms', 'r')
$helper = new SelectHelper();
$helper->selectRoomsTable($query);
$query->from('talk_rooms', 'r')
->where($query->expr()->eq('r.token', $query->createNamedParameter($token)));

$result = $query->execute();
Expand All @@ -644,11 +638,11 @@ public function getRoomByToken(string $token, ?string $preloadUserId = null): Ro
*/
public function getRoomByObject(string $objectType, string $objectId): Room {
$query = $this->db->getQueryBuilder();
$query->select('*')
->selectAlias('id', 'r_id')
->from('talk_rooms')
->where($query->expr()->eq('object_type', $query->createNamedParameter($objectType)))
->andWhere($query->expr()->eq('object_id', $query->createNamedParameter($objectId)));
$helper = new SelectHelper();
$helper->selectRoomsTable($query);
$query->from('talk_rooms', 'r')
->where($query->expr()->eq('r.object_type', $query->createNamedParameter($objectType)))
->andWhere($query->expr()->eq('r.object_id', $query->createNamedParameter($objectId)));

$result = $query->execute();
$row = $result->fetch();
Expand Down Expand Up @@ -678,11 +672,11 @@ public function getRoomForSession(?string $userId, ?string $sessionId): Room {
}

$query = $this->db->getQueryBuilder();
$query->select('*')
->selectAlias('r.id', 'r_id')
->selectAlias('a.id', 'a_id')
->selectAlias('s.id', 's_id')
->from('talk_sessions', 's')
$helper = new SelectHelper();
$helper->selectRoomsTable($query);
$helper->selectAttendeesTable($query);
$helper->selectSessionsTable($query);
$query->from('talk_sessions', 's')
->leftJoin('s', 'talk_attendees', 'a', $query->expr()->eq('a.id', 's.attendee_id'))
->leftJoin('a', 'talk_rooms', 'r', $query->expr()->eq('a.room_id', 'r.id'))
->where($query->expr()->eq('s.session_id', $query->createNamedParameter($sessionId)))
Expand Down Expand Up @@ -734,11 +728,11 @@ public function getOne2OneRoom(string $participant1, string $participant2): Room
$name = json_encode($users);

$query = $this->db->getQueryBuilder();
$query->select('*')
->selectAlias('id', 'r_id')
->from('talk_rooms')
->where($query->expr()->eq('type', $query->createNamedParameter(Room::ONE_TO_ONE_CALL, IQueryBuilder::PARAM_INT)))
->andWhere($query->expr()->eq('name', $query->createNamedParameter($name)));
$helper = new SelectHelper();
$helper->selectRoomsTable($query);
$query->from('talk_rooms', 'r')
->where($query->expr()->eq('r.type', $query->createNamedParameter(Room::ONE_TO_ONE_CALL, IQueryBuilder::PARAM_INT)))
->andWhere($query->expr()->eq('r.name', $query->createNamedParameter($name)));

$result = $query->execute();
$row = $result->fetch();
Expand All @@ -764,11 +758,11 @@ public function getOne2OneRoom(string $participant1, string $participant2): Room
*/
public function getChangelogRoom(string $userId): Room {
$query = $this->db->getQueryBuilder();
$query->select('*')
->selectAlias('id', 'r_id')
->from('talk_rooms')
->where($query->expr()->eq('type', $query->createNamedParameter(Room::CHANGELOG_CONVERSATION, IQueryBuilder::PARAM_INT)))
->andWhere($query->expr()->eq('name', $query->createNamedParameter($userId)));
$helper = new SelectHelper();
$helper->selectRoomsTable($query);
$query->from('talk_rooms', 'r')
->where($query->expr()->eq('r.type', $query->createNamedParameter(Room::CHANGELOG_CONVERSATION, IQueryBuilder::PARAM_INT)))
->andWhere($query->expr()->eq('r.name', $query->createNamedParameter($userId)));

$result = $query->execute();
$row = $result->fetch();
Expand Down Expand Up @@ -953,9 +947,9 @@ protected function getNewToken(): string {
}

$query = $this->db->getQueryBuilder();
$query->select('id')
->from('talk_rooms')
->where($query->expr()->eq('token', $query->createParameter('token')));
$query->select('r.id')
->from('talk_rooms', 'r')
->where($query->expr()->eq('r.token', $query->createParameter('token')));

$i = 0;
while ($i < 1000) {
Expand Down
12 changes: 10 additions & 2 deletions lib/Migration/CreateHelpCommand.php
Original file line number Diff line number Diff line change
Expand Up @@ -44,13 +44,21 @@ public function getName(): string {

public function run(IOutput $output): void {
try {
$this->service->find('', 'help');
$command = $this->service->find('', 'help');
$this->service->update(
$command->getId(),
'help',
'talk',
'help',
Command::RESPONSE_USER,
Command::ENABLED_ALL
);
} catch (DoesNotExistException $e) {
$this->service->create(
'',
'help',
'talk',
'',
'help',
Command::RESPONSE_USER,
Command::ENABLED_ALL
);
Expand Down
9 changes: 7 additions & 2 deletions lib/Model/CommandMapper.php
Original file line number Diff line number Diff line change
Expand Up @@ -85,8 +85,13 @@ public function find(string $app, string $cmd): Command {
$query = $this->db->getQueryBuilder();
$query->select('*')
->from($this->getTableName())
->where($query->expr()->eq('app', $query->createNamedParameter($app)))
->andWhere($query->expr()->eq('command', $query->createNamedParameter($cmd)));
->where($query->expr()->eq('command', $query->createNamedParameter($cmd)));

if ($app === '') {
$query->andWhere($query->expr()->emptyString('app'));
} else {
$query->andWhere($query->expr()->eq('app', $query->createNamedParameter($app)));
}

return $this->findEntity($query);
}
Expand Down
Loading