Zum Inhalt springen

Seite pro fe_user

Erstellt am 14. März 2007 · 1 Antwort · letzte Antwort am 5. April 2007

Tags: Frage

xpert911 ·

Ich habe eine kleine Herausforderung und benötige mal Hilfe von Profis... also von euch.

Ich möchte eine Extension schreiben, die im Backoffice die Möglichkeit gibt jedes Content-Element nicht nur einer FE-Gruppe sondern auch einem speziellen FE-User zuzuordnen. Ich möchte in der Folge die Möglichkeit haben einen Inhalt einer Gruppe (dann sehen alle FE-User den Inhalt) oder einem speziellen FE-User anzuzeigen.

Was bisher geschah:

Ich habe eine Extension über den Kickstart erstellt die, die Tabelle tt_content um ein Feld fe_user erweitert und in Beziehung zu fe_user steht. Im Backoffice beim Editieren der Inhalte kann ich auch den FE-User zuornen und Typo3 speichert auch alles sauber in die DB.

Mein Problem:

Wie bekomme ich den Rendering-Prozess dazu, dass er nach der Überprüfung auf die Gruppenberechtigung auch nach der FE-User-Berechtigung fragt und dann entscheidet was er anzeigt?

Ich bin mir sicher, dass nicht nur ich ein solches Problem habe und konnte trotztem keinen Hinweis in anderen Themen finden.

Bin über eure Hilfe sehr dankbar 🙂)

xpert911 ·

Hat niemand eine Idee?

Nun, ich bin zwar etwas weiter gekommen aber nicht wirklich erfolgreich mit der Lösung.
Ich habe herausgefunden das class.tslib_fe.php vermutlich mein Kandidat sein wird und ich habe festgestellt, dass dort die Funktion checkPageGroupAccess für die Berechtigung veratwortlich ist. Quick und sehr dirty habe ich die Funktion direkt mal verändert um zu testen ob ich damit weiterkomme. Leider werden noch immer alle Seiten auch nach der Zuordnung zu einem fe_user allen Usern angezeigt.

Die Funktion wurde so geändert:

function checkPageGroupAccess($row, $groupList=NULL, $userList=NULL) {
		if(is_null($groupList)) {
			$groupList = $this->gr_list;
		}
		
		if(is_null($user)) {
			$userList = $this->fe_user;
		}
		
		if(!is_array($groupList)) {
			$groupList = explode(',', $groupList);
		}
		
		if(!is_array($userList)) {
			$userList = explode(',', $userList);
		}
		
		$right = 0;
		
		$pageUserList = explode(',', $row['tx_page2user_fe_user'] ? $row['tx_page2user_fe_user'] : 0);
		$pageGroupList = explode(',', $row['fe_group'] ? $row['fe_group'] : 0);
		
		if(count(array_intersect($userList, $pageUserList)) > 0)
		{
			return 1;
		}
		elseif(count(array_intersect($groupList, $pageGroupList)) > 0)
		{
			return 1;
		}
		else
		{
			return false;
		}
		
	}

Wäre für eure Hilfe sehr dankbar!