1<?
php declare(strict_types=1);
45 $this->
http = $DIC->http();
46 $this->ctrl =
$DIC[
'ilCtrl'];
47 $this->
user = $DIC[
'ilUser'];
48 $this->lng =
$DIC[
'lng'];
53 $this->lng->loadLanguageModule(
'buddysystem');
65 !
$DIC->user()->isAnonymous() &&
66 !self::$isFrontendInitialized
68 $DIC->language()->loadLanguageModule(
'buddysystem');
70 $page->addJavascript(
'./Services/Contact/BuddySystem/js/buddy_system.js');
73 $config->http_post_url =
$DIC->ctrl()->getFormActionByClass([
74 'ilUIPluginRouterGUI',
76 ],
'',
'',
true,
false);
77 $config->transition_state_cmd =
'transitionAsync';
80 $btn_config =
new stdClass();
81 $btn_config->bnt_class =
'ilBuddySystemLinkWidget';
83 $page->
addOnLoadCode(
"il.BuddySystemButton.setConfig(" . json_encode($btn_config) .
");");
86 self::$isFrontendInitialized =
true;
95 if ($this->
user->isAnonymous()) {
96 throw new RuntimeException(
'This controller only accepts requests of logged in users');
99 $nextClass = $this->ctrl->getNextClass($this);
100 $cmd = $this->ctrl->getCmd();
102 switch ($nextClass) {
124 return isset(
$_GET[$key]) && strlen(
$_GET[$key]);
139 throw new ilException(
"The requested user does not want to get contact requests");
167 string $positiveFeedbackLanguageId,
168 callable $onBeforeExecute =
null
172 $this->ctrl->returnToParent($this);
178 if (
null !== $onBeforeExecute) {
179 $onBeforeExecute($relation);
183 ilUtil::sendSuccess($this->lng->txt($positiveFeedbackLanguageId),
true);
186 $this->lng->txt(
$e->getMessage()),
191 $this->lng->txt(
$e->getMessage()),
198 $this->redirectToReferer();
206 if (!$this->ctrl->isAsynch()) {
210 if (!isset(
$_POST[
'usr_id']) || !is_numeric(
$_POST[
'usr_id'])) {
214 if (!isset(
$_POST[
'action']) || !strlen(
$_POST[
'action'])) {
222 $usr_id = (int)
$_POST[
'usr_id'];
227 "You cannot perform a state transition for the anonymous user (id: %s)",
234 "You cannot perform a state transition for a non existing user (id: %s)",
239 $relation = $this->buddyList->getRelationByUserId($usr_id);
243 $relation->isUnlinked() &&
246 throw new ilException(
"The requested user does not want to get contact requests");
250 $this->buddyList->{$action}($relation);
256 }
catch (Exception
$e) {
257 $response->message = $this->lng->txt(
'buddy_bs_action_not_possible');
260 $response->state = get_class($relation->getState());
261 $response->state_html = $this->stateFactory->getStateButtonRendererByOwnerAndRelation(
262 $this->buddyList->getOwnerId(),
265 }
catch (Exception
$e) {
266 $response->message = $this->lng->txt(
'buddy_bs_action_not_possible');
275 if (isset($this->
http->request()->getServerParams()[
'HTTP_REFERER'])) {
276 $redirectUrl = $this->
http->request()->getServerParams()[
'HTTP_REFERER'];
277 $urlParts = parse_url($redirectUrl);
279 if (isset($urlParts[
'path'])) {
280 $script = basename($urlParts[
'path'],
'.php');
281 if ($script ===
'login') {
282 $this->ctrl->returnToParent($this);
284 $redirectUrl = ltrim(basename($urlParts[
'path']),
'/');
285 if (isset($urlParts[
'query'])) {
286 $redirectUrl .=
'?' . $urlParts[
'query'];
291 if ($redirectUrl !==
'') {
292 $this->ctrl->redirectToURL($redirectUrl);
296 $this->ctrl->returnToParent($this);
An exception for terminatinating execution or to throw for unit testing.
Provides an interface to the ILIAS HTTP services.
static getInstanceByGlobalUser()
Class ilBuddySystemException.
const BS_REQUEST_HTTP_GET
transitionCommand(string $cmd, string $positiveFeedbackLanguageId, callable $onBeforeExecute=null)
isRequestParameterGiven(string $key, int $type)
static $isFrontendInitialized
transitionAsyncCommand()
Performs a state transition based on the request action.
__construct()
ilBuddySystemGUI constructor.
const BS_REQUEST_HTTP_POST
static initializeFrontend(ilGlobalTemplateInterface $page)
Class ilBuddySystemRelationStateAlreadyGivenException.
static getInstance(?ilLanguage $lng=null)
Class ilBuddySystemRelationStateTransitionException.
Class ilBuddySystemRelation.
Base class for ILIAS Exception handling.
static _lookupPref($a_usr_id, $a_keyword)
static _lookupLogin($a_user_id)
lookup login
static _isAnonymous($usr_id)
static stripSlashes($a_str, $a_strip_html=true, $a_allow="")
strip slashes if magic qoutes is enabled
static yn2tf($a_yn)
convert "y"/"n" to true/false
static sendInfo($a_info="", $a_keep=false)
Send Info Message to Screen.
if(!file_exists(getcwd() . '/ilias.ini.php'))
registration confirmation script for ilias
addOnLoadCode($a_code, $a_batch=2)
Add on load code.
static http()
Fetches the global http state from ILIAS.