Entwickler.Sichtbarkeit History

Hide minor edits - Show changes to markup

 
 
April 01, 2011, at 11:52 PM by tthelen -
Added lines 1-2:

(:redirect 'http://docs.studip.de/develop/Entwickler/Sichtbarkeit':)

 
 
July 12, 2010, at 11:09 AM by gratch -
Added lines 2-3:

Erweiterte Möglichkeiten zur Festlegung der persönlichen Privatsphäre und Sichtbarkeiten stehen ab der Stud.IP-Version 2.0 zur Verfügung.

 
 
July 12, 2010, at 10:52 AM by gratch -
Changed lines 11-28 from:

Soll die Sichtbarkeit einer Kennung abgefragt werden, so gibt es dafür die Methoden get_visibility_by_id bzw. get_visibility_by_username bzw. get_visibility_by_state. Um explizit die globale Sichtbarkeit, unabhängig von Root-Rechten o.ä. abfragen zu können, existieren die Methoden get_global_visibility_by_id und get_global_visibililty_by_username, die als Parameter die User-ID bzw. den Usernamen erhalten und die in der Datenbank hinterlegte Sichtbarkeit zurückgeben.

to:

Soll die Sichtbarkeit einer Kennung abgefragt werden, so gibt es dafür die Methoden get_visibility_by_id bzw. get_visibility_by_username bzw. get_visibility_by_state.

(:source lang=php:)
// Liefert true oder false, je nach Sichtbarkeit der Kennung
$visibility = get_visibility_by_username('tester');

/*
 * Liegt die in der Datenbank hinterlegte Sichtbarkeit
 * bereits vor, so kann wie folgt abgefragt werden:
 */
// Sei die Sichtbarkeit gleich 'yes'
$db_vis = 'yes'

$visibility = get_visibility_by_state($db_vis, get_userid('tester'));

Hier kommt als Ergebnis also heraus: "Darf ich die Kennung sehen?", das hängt nicht nur von den Sichtbarkeitsinstellungen der Kennung ab, sondern auch von meinen eigenen Rechten (Root sieht alles).

Um explizit die globale Sichtbarkeit, unabhängig von Root-Rechten o.ä. abfragen zu können, existieren die Methoden get_global_visibility_by_id und get_global_visibililty_by_username, die als Parameter die User-ID bzw. den Usernamen erhalten und die in der Datenbank hinterlegte Sichtbarkeit zurückgeben. Hier kommt also ein Wert aus der Menge {'yes', 'no', 'always', 'never', 'unknown', 'global'} heraus

 
 
July 12, 2010, at 10:45 AM by gratch -
Added lines 21-39:

Will man z.B. wissen, ob der User mit dem Usernamen 'tester' über die Personensuche auffindbar ist, so kann dies so abgefragt werden:

(:source lang=php:)
$search_visibility = get_local_visibility_by_username('tester', 'search');

Besonders auf externen Seiten ist es noch nützlich, auch zu wissen, welche Berechtigung der abzufragende User im System hat. Daher kann optional auch angegeben werden, dass diese Berechtigung mit zurückgegeben werden soll:

(:source lang=php:)
$search_visibility = get_local_visibility_by_username('tester', 'search', true);

führt dann zur Ausgabe

(:source lang=php:)
$search_visibility = Array(
  'perms' => 'dozent', 
  'search' => true
);
Added lines 46-61:

Im Code sieht das so aus:

(:source lang=php:)
// Der "Besitzer" der Homepage hat die ID '12345'
$visibilities = get_local_visibility_by_id('12345', 'homepage');
// Der Besucher der Homepage hat die ID 'abcde'
$private_phone = is_element_visible_for_user('abcde', '12345', $visibilities['private_phone']);

Geht es nur um einzelne Elemente der Homepage, so kann man auch explizit deren Sichtbarkeit abfragen:

(:source lang=php:)
// Wieder Homepagebesitzer-ID '12345'
$private_phone_visibility = get_homepage_element_visibility('12345', 'private_phone');

Aus Performancegründen wird für eine gesamte Homepage nur die erste Variante ausgeführt, wo alle Sichtbarkeiten auf einmal geladen werden.

 
 
July 09, 2010, at 11:08 AM by gratch -
Changed lines 26-28 from:

Hierzu ein Beispiel:

Aus der Datenbank wurde geladen, dass das Element „private_phone“ (also die private Telefonnummer) die Sichtbarkeit 1 (=VISIBILITY_ME) hat, also nur für den Besitzer der Homepage selbst angezeigt werden soll. Die Methode is_element_visible_for_user bekommt nun als Parameter die ID des aktuellen Users, die ID des Users, zu dem die gerade besuchte Homepage gehört und den Wert der Sichtbarkeit, also 1. Daraus wird nun ermittelt, ob die Telefonnummer angezeigt werden soll oder nicht.

to:

Hierzu ein Beispiel: Aus der Datenbank wurde geladen, dass das Element „private_phone“ (also die private Telefonnummer) die Sichtbarkeit 1 (=VISIBILITY_ME) hat, also nur für den Besitzer der Homepage selbst angezeigt werden soll. Die Methode is_element_visible_for_user bekommt nun als Parameter die ID des aktuellen Users, die ID des Users, zu dem die gerade besuchte Homepage gehört und den Wert der Sichtbarkeit, also 1. Daraus wird nun ermittelt, ob die Telefonnummer angezeigt werden soll oder nicht.

 
 
July 09, 2010, at 11:08 AM by gratch -
Added line 1:

Sichtbarkeitsstufen

Added line 10:

allgemeine Sichtbarkeit einer Kennung

Added line 21:

Sichtbarkeit der Homepage-Elemente

 
 
July 09, 2010, at 11:06 AM by gratch -
Added lines 1-27:

Die Funktionen zum Abfragen der Sichtbarkeiten sind in lib/user_visible.inc.php definiert. Die vorhandenen Sichtbarkeitsstufen sind dort als Konstanten definiert:

  • VISIBILITY_ME: Nur für den Nutzer selbst (und dessen evtl. Standardvertretungen mit Homepagebearbeitungsrecht)
  • VISIBILITY_BUDDIES: für Buddies aus dem Adressbuch
  • VISIBILITY_DOMAIN: für die eigene(n) Nutzerdomäne(n)
  • VISIBILITY_STUDIP: für alle in Stud.IP eingeloggten Nutzer
  • VISIBILITY_EXTERN: auf externen Seiten

Soll die Sichtbarkeit einer Kennung abgefragt werden, so gibt es dafür die Methoden get_visibility_by_id bzw. get_visibility_by_username bzw. get_visibility_by_state. Um explizit die globale Sichtbarkeit, unabhängig von Root-Rechten o.ä. abfragen zu können, existieren die Methoden get_global_visibility_by_id und get_global_visibililty_by_username, die als Parameter die User-ID bzw. den Usernamen erhalten und die in der Datenbank hinterlegte Sichtbarkeit zurückgeben.

Zur Abfrage der Sichtbarkeit in einem bestimmten Bereich von Stud.IP gibt es die Methoden get_local_visibility_by_id bzw. get_local_visibility_by_username. Hiermit kann durch Angabe der User-ID bzw. des Usernamens und des gewünschten Bereichs die Sichtbarkeit in diesem Bereich abgefragt werden. Gültige Bereiche sind

  • online für die „Wer ist online“-Liste
  • chat für die Sichtbarkeit des eigenen Chatraums
  • search für die Auffindbarkeit in der Personensuche
  • email für die Anzeige der Emailadresse
  • homepage für die Sichtbarkeitseinstellungen der einzelnen Elemente der Profilseite

Auf der Profilseite einer Person werden am Anfang standardmäßig alle Sichtbarkeiten der einzelnen Elemente geladen. Damit wird die Anzahl der Datenbankanfragen minimiert, indem nur eine globale Anfrage für alle Elemente statt eines Queries pro Element ausgeführt werden muss.

Mittels der Funktionen is_element_visibible_for_user und is_element_visible_externally kann dann überprüft werden, ob ein einzelnes Element anhand seiner Sichtbarkeitseinstellungen für den aktuellen Nutzer angezeigt werden soll.

Hierzu ein Beispiel:

Aus der Datenbank wurde geladen, dass das Element „private_phone“ (also die private Telefonnummer) die Sichtbarkeit 1 (=VISIBILITY_ME) hat, also nur für den Besitzer der Homepage selbst angezeigt werden soll. Die Methode is_element_visible_for_user bekommt nun als Parameter die ID des aktuellen Users, die ID des Users, zu dem die gerade besuchte Homepage gehört und den Wert der Sichtbarkeit, also 1. Daraus wird nun ermittelt, ob die Telefonnummer angezeigt werden soll oder nicht.

Über die Methode get_visible_email kann die nach außen sichtbare Emailadresse ermittelt werden. Hat ein Nutzer eingestellt, dass die eigene Emailadresse nicht angezeigt werden soll, so wird stattdessen versucht, über die Einrichtungszuordnung dieser Kennung eine Emailadresse zu ermitteln (nur Zuordnungen mit mindestens Recht „autor“). Dabei wird zuerst die Emailadresse der ersten gefundenen Einrichtung verwendet, sollte es mehrere Einrichtungszuordnungen geben und eine davon als Standardeinrichtung definiert sein, so wird diese Email verwendet. Bei keiner gefundenen Zuordnung wird ein Leerstring als Emailadresse zurückgegeben.

 

 

Source: Basis-Wiki-Hilfe | Last change: April 01, 2011, at 11:52 PM, tthelen | Local view: Basis-Hilfe