diff --git a/app/controllers/admin/user.php b/app/controllers/admin/user.php index 8932f48d8baac0e0d220e8f17e5857c009a2a473..33d56a5080abbd3edc3e48a238696f6c6d9b2cf5 100644 --- a/app/controllers/admin/user.php +++ b/app/controllers/admin/user.php @@ -891,16 +891,14 @@ class Admin_UserController extends AuthenticatedController } if ($GLOBALS['perm']->have_perm('root')) { - $sql - = "SELECT Institut_id, Name, 1 AS is_fak + $sql = "SELECT Institut_id, Name, 1 AS is_fak FROM Institute WHERE Institut_id=fakultaets_id ORDER BY Name"; $faks = DBManager::get()->query($sql)->fetchAll(PDO::FETCH_ASSOC); $domains = UserDomain::getUserDomains(); } else { - $sql - = "SELECT a.Institut_id, Name, b.Institut_id = b.fakultaets_id AS is_fak + $sql = "SELECT a.Institut_id, Name, b.Institut_id = b.fakultaets_id AS is_fak FROM user_inst a LEFT JOIN Institute b USING (Institut_id) WHERE a.user_id = ? AND a.inst_perms = 'admin' @@ -911,8 +909,7 @@ class Admin_UserController extends AuthenticatedController $domains = UserDomain::getUserDomainsForUser(User::findCurrent()->id); } - $query - = "SELECT Institut_id, Name + $query = "SELECT Institut_id, Name FROM Institute WHERE fakultaets_id = ? AND institut_id != fakultaets_id ORDER BY Name"; diff --git a/app/controllers/course/messenger.php b/app/controllers/course/messenger.php index 8acd24b135e8c83efee327b919cc30e40848ba59..ca0ec3cdada161254fb83a0b1169226f181fbaf8 100644 --- a/app/controllers/course/messenger.php +++ b/app/controllers/course/messenger.php @@ -12,7 +12,9 @@ class Course_MessengerController extends AuthenticatedController public function course_action($thread_id = null) { - PageLayout::setTitle(Context::get()->getFullname() . ' - ' . _('Blubber')); + if (Context::get()) { + PageLayout::setTitle(Context::get()->getFullname() . ' - ' . _('Blubber')); + } if (Navigation::hasItem('/course/blubber')) { Navigation::activateItem('/course/blubber'); diff --git a/app/controllers/jsupdater.php b/app/controllers/jsupdater.php index d0cd7219c5796b6113921c6cf9e6ff89415b4d48..0d657fe66c5cf8d78ab8f4f29cf43fdbffab5f36 100644 --- a/app/controllers/jsupdater.php +++ b/app/controllers/jsupdater.php @@ -262,6 +262,7 @@ class JsupdaterController extends AuthenticatedController private function getCoursewareClipboardUpdates($pageInfo) { - return count(\Courseware\Clipboard::findUsersClipboards($GLOBALS["user"])) != $pageInfo['coursewareclipboard']['counter']; + $counter = $pageInfo['coursewareclipboard']['counter'] ?? 0; + return \Courseware\Clipboard::countByUser_id($GLOBALS['user']->id) != $counter; } } diff --git a/app/controllers/profile.php b/app/controllers/profile.php index 74e0b436c579fd9b4979c82aaf927ae1b2f68f95..a1776172af12e81c209b7e84b41970316648b0c2 100644 --- a/app/controllers/profile.php +++ b/app/controllers/profile.php @@ -28,19 +28,41 @@ class ProfileController extends AuthenticatedController URLHelper::addLinkParam('username', Request::username('username')); PageLayout::setHelpKeyword('Basis.Homepage'); - $this->user = User::findCurrent(); // current logged in user - $this->perm = $GLOBALS['perm']; // perms of current logged in user - $this->current_user = User::findByUsername(Request::username('username', $this->user->username)); // current selected user + // current logged in user + $this->user = User::findCurrent(); + // perms of current logged in user + $this->perm = $GLOBALS['perm']; + // current selected user + $this->current_user = User::findByUsername(Request::username( + 'username', + $this->user ? $this->user->username : null + )); // get additional informations to selected user - $this->profile = new ProfileModel($this->current_user->user_id, $this->user->user_id); + $this->profile = new ProfileModel( + $this->current_user ? $this->current_user->id : null, + $this->user ? $this->user->id : null + ); // set the page title depending on user selection - if ($this->current_user['user_id'] == $this->user->id && !$this->current_user['locked']) { + if ( + $this->user + && $this->current_user->id === $this->user->id + && !$this->current_user->locked + ) { PageLayout::setTitle(_('Mein Profil')); UserConfig::get($this->user->id)->store('PROFILE_LAST_VISIT', time()); - } elseif ($this->current_user['user_id'] && ($this->perm->have_perm('root') || (!$this->current_user['locked'] && get_visibility_by_id($this->current_user['user_id'])))) { + } elseif ( + $this->current_user->id + && ( + $this->perm->have_perm('root') + || ( + !$this->current_user->locked + && get_visibility_by_id($this->current_user->id) + ) + ) + ) { PageLayout::setTitle(_('Profil von') . ' ' . $this->current_user->getFullname()); - object_add_view($this->current_user->user_id); + object_add_view($this->current_user->id); } else { PageLayout::setTitle(_('Profil')); $action = 'not_available'; diff --git a/app/views/admin/user/new.php b/app/views/admin/user/new.php index 49fd9ed29a289783109281cc149e7dac4c454165..8ceb12fe1c8314f8b711a0b020ad71b03428b1ea 100644 --- a/app/views/admin/user/new.php +++ b/app/views/admin/user/new.php @@ -171,16 +171,16 @@ use Studip\Button, Studip\LinkButton; <option value="" class="is-placeholder"> <?= _('-- Bitte Einrichtung auswählen --') ?> </option> - <? foreach ($faks as $fak) : ?> + <? foreach ($faks as $fak) : ?> <option value="<?= $fak['Institut_id'] ?>" <?= ($user['institute'] == $fak['Institut_id']) ? 'selected' : '' ?> class="<?= $fak['is_fak'] ? 'nested-item-header' : 'nested-item'; ?>"> <?= htmlReady($fak['Name']) ?> </option> - <? foreach ($fak['institutes'] as $institute) : ?> + <? foreach ($fak['institutes'] ?? [] as $institute) : ?> <option value="<?= $institute['Institut_id'] ?>" <?= ($user['institute'] == $institute['Institut_id']) ? 'selected' : '' ?> class="nested-item"> <?= htmlReady($institute['Name']) ?> </option> - <? endforeach ?> <? endforeach ?> + <? endforeach ?> </select> </label> diff --git a/app/views/course/ilias_interface/add_object.php b/app/views/course/ilias_interface/add_object.php index 356a82dcb1660f007155b9aa2d4dadfe6269bd20..85503377e0031f0934ba63f6484081a249432c6b 100644 --- a/app/views/course/ilias_interface/add_object.php +++ b/app/views/course/ilias_interface/add_object.php @@ -122,7 +122,7 @@ </table> <? endif ?> <footer data-dialog-button> - <? if ($ilias->isActive() && $submit_text) : ?> + <? if ($ilias && $ilias->isActive() && $submit_text) : ?> <?= Studip\Button::create($submit_text, 'submit', ($dialog && $keep_dialog) ? ['data-dialog' => 'size=auto;reload-on-close'] : []) ?> <? endif ?> <?= Studip\Button::createCancel(_('Schließen'), 'cancel', $dialog ? ['data-dialog' => 'close'] : []) ?> diff --git a/app/views/my_ilias_accounts/add_object.php b/app/views/my_ilias_accounts/add_object.php index e90beea1060ce6bad529a6fac81c182fee222935..21540409d695b4e49724be8e02f234604ae87db1 100644 --- a/app/views/my_ilias_accounts/add_object.php +++ b/app/views/my_ilias_accounts/add_object.php @@ -1,7 +1,7 @@ <form class="default" action="<?= $controller->url_for('my_ilias_accounts/redirect/'.$ilias_index.'/new/'.$ilias_ref_id) ?>" method="post" target="_blank"> <?= CSRFProtection::tokenTag() ?> - <input type="hidden" name="ilias_target" value="new"> - <input type="hidden" name="ilias_ref_id" value="<?=$ilias_ref_id?>"> + <input type="hidden" name="ilias_target" value="new"> + <input type="hidden" name="ilias_ref_id" value="<?=$ilias_ref_id?>"> <label> <span class="required"><?= _('Art des Lernobjekts') ?></span> <select name="ilias_module_type" required> diff --git a/lib/classes/ProfileModel.php b/lib/classes/ProfileModel.php index 663d8ab3ff2d49caec7f8bd8ae9704b83ac5b9ea..6827ba62a4f1e25845a59366b678e162a3c528d0 100644 --- a/lib/classes/ProfileModel.php +++ b/lib/classes/ProfileModel.php @@ -54,7 +54,10 @@ class ProfileModel */ public function getHomepageVisibilities() { - $visibilities = get_local_visibility_by_id($this->current_user->user_id, 'homepage'); + $visibilities = get_local_visibility_by_id( + $this->current_user ? $this->current_user->id : null, + 'homepage' + ); if (is_array(json_decode($visibilities, true))) { return json_decode($visibilities, true); } diff --git a/lib/functions.php b/lib/functions.php index 144b6f580ff53911d199b0e9b9634231528627c9..20066c1cc3b25599f44b8f7e1ac68798f0e01b73 100644 --- a/lib/functions.php +++ b/lib/functions.php @@ -302,21 +302,22 @@ function my_substr($what, $start, $end) */ function get_fullname($user_id = "", $format = "full" , $htmlready = false) { - static $cache; - global $user, $_fullname_sql; + static $cache = []; + + $current_user = User::findCurrent(); if (!$user_id) { - $user_id = $user->id; + $user_id = $current_user ? $current_user->id : null; } - if (User::findCurrent()->id === $user_id) { - $fullname = User::findCurrent()->getFullName($format); + if ($current_user && $current_user->id === $user_id) { + $fullname = $current_user->getFullName($format); return $htmlready ? htmlReady($fullname) : $fullname; } $hash = md5($user_id . $format); if (!isset($cache[$hash])) { - $query = "SELECT {$_fullname_sql[$format]} + $query = "SELECT {$GLOBALS['_fullname_sql'][$format]} FROM auth_user_md5 LEFT JOIN user_info USING (user_id) WHERE user_id = ?"; diff --git a/lib/models/UserDomain.php b/lib/models/UserDomain.php index 8179082a0319a5afeaa05342671fa35eb1e3436d..49abbbc75bace46aac467e3a00171a0478351573 100644 --- a/lib/models/UserDomain.php +++ b/lib/models/UserDomain.php @@ -107,10 +107,14 @@ class UserDomain extends SimpleORMap * Get an array of all user domains for a specific user. * Returns an array of UserDomain objects. */ - public static function getUserDomainsForUser ($user_id) + public static function getUserDomainsForUser($user_id) { - $domains = User::find($user_id)->domains; - return $domains ? $domains->getArrayCopy() : []; + $user = User::find($user_id); + if (!$user) { + return []; + } + + return $user->domains ? $user->domains->getArrayCopy() : []; } /** diff --git a/lib/user_visible.inc.php b/lib/user_visible.inc.php index c6b56860cd6978de856172d2f46e699daa16ebda..fbb64c73820b39bf2dc7a03a5dbd9683e5e60e70 100644 --- a/lib/user_visible.inc.php +++ b/lib/user_visible.inc.php @@ -82,14 +82,15 @@ function get_visibility_by_state ($state, $user_id) { return true; } + $user = User::findCurrent(); $other_user = User::find($user_id); - if (!$other_user) { + if (!$user || !$other_user) { return false; } $same_domain = UserDomain::checkUserVisibility( $other_user->domains, - User::findCurrent()->domains + $user->domains ); switch ($state) {