Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Plugin blokowanie PW #171

Draft
wants to merge 8 commits into
base: master
Choose a base branch
from
Draft

Plugin blokowanie PW #171

wants to merge 8 commits into from

Conversation

Mariusz08
Copy link
Member

Finalnie udało się to przenieść na plugin unikając zmian w silniku. Z tamtego PRa zrezygnowałem żeby nie mieszać. Wydaje mi się że wszystko działa, ale jeszcze potestuje.

Copy link
Member

@event15 event15 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Na razie przejrzałem sam kod - zaraz sprawdzę działanie.

forum/qa-plugin/block-pw/qa-plugin.php Outdated Show resolved Hide resolved
forum/qa-plugin/block-pw/qa-plugin.php Show resolved Hide resolved
forum/qa-plugin/block-pw/qa-plugin.php Show resolved Hide resolved
forum/qa-plugin/block-pw/metadata.json Outdated Show resolved Hide resolved
forum/qa-plugin/block-pw/metadata.json Outdated Show resolved Hide resolved
forum/qa-plugin/block-pw/block-pw-user-list-page.php Outdated Show resolved Hide resolved
forum/qa-plugin/block-pw/block-pw-user-list-page.php Outdated Show resolved Hide resolved
forum/qa-plugin/block-pw/block-pw-user-list-page.php Outdated Show resolved Hide resolved
forum/qa-plugin/block-pw/block-pw-user-list-page.php Outdated Show resolved Hide resolved
forum/qa-plugin/block-pw/block-pw-user-list-page.php Outdated Show resolved Hide resolved
@event15
Copy link
Member

event15 commented Mar 17, 2020

Domerguj tu mastera

@event15
Copy link
Member

event15 commented Mar 18, 2020

Ok, to teraz więcej mogę powiedzieć.
Należy dodać plik block-pq-admin.php: https://gist.github.com/event15/f133698fdaff6ae4819cd6cd12d5a7cd

  1. Znikła strona: http://forum.pasja-informatyki.local/messages
  2. W changePrivateMessageButton trzeba dodać (wtedy zaczyna działać powyższe):
if (is_null($profileUser)) {
    return;
}
  1. User może zablokować sam siebie ;)
  2. Mi blokada wysyłki w ogóle nie blokuje tej wysyłki.

@event15
Copy link
Member

event15 commented Mar 18, 2020

Cofam - jednak działa.
Jednak jest potrzebna poprawka na Widoku zablokowanego użytkownika :)
http://forum.pasja-informatyki.local/user/user

Plugin pozwala na wysyłkę postów na wall -> może warto rozważyć blokadę? :)

@@ -0,0 +1,17 @@
<?php
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

podałem Ci rozwiązanie - czemu nie chcesz z niego skoryzstać?
Dostałeś rozwiązanie z qa_opt(), które pozwala na weryfikację czy plugin jest w ogóle włączony. Przecież powinna być opcja wygodnego włączenia czy wyłączenia pluginu, bez usuwania go z serwera.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Wydaje mi się że nie ma sensu włączania/wyłączania pluginu który służy tylko do blokowania użytkowników co też wyjaśniliśmy na Discordzie.

@@ -20,7 +18,7 @@ public function nav_list($navigation, $class, $level=null) // cannot use `: void
parent::nav_list($navigation, $class, $level);
}

private function performFormAction($loggedInId, $profileUserId): void
private function performFormAction(int $loggedInId, int $profileUserId): void
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

posprawdzaj - ja wczoraj miałem trochę z tym zabawy - czasami powinienbyć ?int pozwalający na nullowanie argumentu. Dziś już nie pamiętam gdzie dokładnie się pojawiało, ale warto sprawdzić.

$allowedToSeeButtons = $dbUser['handle'] !== qa_get_logged_in_handle() && strpos(qa_request(), 'user/') !== false && count(qa_request_parts()) === 2;

if (!empty($dbUser)
&& $dbUser['level'] == QA_USER_LEVEL_BASIC // cannot use `===` - $dbUser['level'] is string, const is int
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

można castować zmienne :)

@@ -22,7 +21,7 @@ function qa_get_request_content(): ?array
return qa_get_request_content_base();
}

function qa_user_permit_error($permitoption=null, $limitaction=null, $userlevel=null, $checkblocks=true)
function qa_user_permit_error(string $permitoption=null, string $limitaction=null, string $userlevel=null, bool $checkblocks=true)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

przeszło Ci to? mi wywalało forum jak tak zrobiłem

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Działa :v

@@ -17,16 +18,16 @@ public function match_request(string $request): bool
return $request === 'blocked-users';
}

public function process_request(string $request): ?array
public function process_request(): ?array
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

czyli nie czujesz potrzeby weryfikacji, czy przychodzi poprawny request?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Jeśli dobrze rozumiem filozofię q2a, linijkę wyżej sprawdzam czy to jest request który mnie interesuje - return $request === 'blocked-users';. Jeśli odpala się process_request() to znaczy, że match_request() zwróciło true więc ten request chce przechwycić - sprawdzanie w kolejnej funkcji nie ma sensu.


/**
* Parameters order does not matter.
*/
function checkIfUserIsBlocked($fromUserId, $toUserId): bool
function ifUserIsBlocked(int $fromUserId, int $toUserId): bool
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

to może sprawić jednak problem - upewniłbym się czy na przykład po wylogowaniu nie rzuca Ci błędami :) - szczególnie jak próbujesz się ponowaine zalogować.

event15
event15 previously approved these changes Mar 18, 2020
@awaluk
Copy link
Member

awaluk commented Mar 19, 2020

Pobrałem zmiany, zainstalowałem plugin i przy wejściu na stronę wysyłania wiadomości do innego użytkownika (/message/user) mam od razu fatala

Fatal error: Uncaught TypeError: Argument 2 passed to ifUserIsBlocked() must be of the type integer, array given, called in /vagrant/forum/qa-plugin/block-pw/block-pm-page.php on line 45 and defined in /vagrant/forum/qa-plugin/block-pw/qa-plugin.php on line 45

Idę więc na listę zablokowanych w profilu aktualnie zalogowanego

Fatal error: Uncaught TypeError: Argument 1 passed to block_pm_user_list_page::prepareBlockedList() must be of the type string, integer given, called in /vagrant/forum/qa-plugin/block-pw/block-pm-user-list-page.php on line 39 and defined in /vagrant/forum/qa-plugin/block-pw/block-pm-user-list-page.php on line 46

Dalej nie ma jak sprawdzać.

@event15 event15 dismissed their stale review March 19, 2020 19:10

fatale

Copy link
Member

@event15 event15 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

jednak są fatale - tak jak pisałem w komentarzach, że może to sprawić problemy

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants