Seite 1 von 1

Profile nur innerhalb der eigenen Gruppe einsehbar.

Verfasst: 23.01.2007 21:21
von zebath
Hallo!
Wie kriege ich es hin, dass Profile nur innerhalb der eigenen Gruppe einsehbar sind?

Bin für jeden Hinweis dankbar!

Verfasst: 05.02.2007 11:46
von zebath
ok, dann halt nich...

Verfasst: 05.02.2007 11:54
von Leuchte
Wenn Du noch möchtest, kann ich heut Abend etwas Code ausbrüten

Verfasst: 05.02.2007 16:15
von zebath
hey, das wär echt super!
will hier nicht nach code betteln, aber bin halt kein programmier-gott.

Verfasst: 05.02.2007 22:22
von Leuchte
Wie versprochen
language/lang_german/lang_main.php - FindeFüge davor ein

Code: Alles auswählen

$lang['Profile_not_in_group'] = 'Du bist nicht in der Gruppe des Benutzers und kannst dieses Profil nicht ansehen';
includes/usercp_viewprofile.php - Finde

Code: Alles auswählen

	message_die(GENERAL_MESSAGE, $lang['No_user_id_specified']);
}
Füge danach ein

Code: Alles auswählen

if($userdata['session_logged_in'])
{
  function member_of($group_id) // by saerdnaer
  { 
    global $db;
    $profile = get_userdata($_GET[POST_USERS_URL]);
    $sql = "SELECT count(*) AS num
      FROM " . USER_GROUP_TABLE . " 
      WHERE user_id = '" . $profile['user_id'] . "'
      AND user_pending = '0'
      AND group_id IN ( " . $group_id . " )"; 
    if(!($result = $db->sql_query($sql))) 
    { 
      message_die(GENERAL_ERROR, 'Could not get group auth', '', __LINE__, __FILE__, $sql); 
    } 
    $row = $db->sql_fetchrow($result); 

    if($row['num'] > 0) 
    { 
      return $profile['user_member_of_' . $group_id] = true; 
    } 
    return $profile['user_member_of_' . $group_id] = false; 
  }

  $sql = "SELECT group_id
    FROM " . USER_GROUP_TABLE . " 
    WHERE user_id = '". $userdata['user_id'] ."'
    AND user_pending = '0'"; 
  if(!($result = $db->sql_query($sql))) 
  {
    message_die(GENERAL_ERROR, 'Could not get group ids', '', __LINE__, __FILE__, $sql); 
  }

  $ingroup = "";
  while($row = $db->sql_fetchrow($result))
  {
    if(member_of($row['group_id']))
    {
      $ingroup .= 1;
    }
    else
    {
      $ingroup .= 0;
    }
  }
  if($ingroup == 0)
  {
    message_die(GENERAL_MESSAGE, $lang['Profile_not_in_group']);
  }
}
Somit ist das Profile für alle Tabu, die nicht in der Gruppe des Besitzers sind. Sollen Admins immer zugriff haben muss in der ersten Zeile der Änderung

Code: Alles auswählen

if($userdata['session_logged_in'])
durch

Code: Alles auswählen

if($userdata['session_logged_in'] && $userdata['user_level'] != ADMIN)
ausgetauscht werden

Verfasst: 07.02.2007 08:22
von zebath
vielen dank!