Liste..... Datenbank
Forumsregeln
phpBB 2.0 hat das Ende seiner Lebenszeit überschritten
phpBB 2.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 2.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf phpBB 3.0, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
phpBB 2.0 hat das Ende seiner Lebenszeit überschritten
phpBB 2.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 2.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf phpBB 3.0, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Sorry, für die Verspätung.
Ich werde die Fragen morgen beantworten.. da bin ich den ganzen Tag zuhause und hab Zeit.
@Alex
Welche Links wolltest du nochmal zählen.. die der Verzeichnisse und/oder der Einträge?
@femino
Reicht es dir vielleicht auch aus, wenn beim Ändern des Eintrages einfach nur der Name des Autors erhalten bleibt (wäre nur eine kleine Änderung)? Das zusätzliche Anzeigen des Namens von dem User, der den Beitrag geändert hat, würde mehrere grössere Änderungen verlangen..
Ich werde die Fragen morgen beantworten.. da bin ich den ganzen Tag zuhause und hab Zeit.
@Alex
Welche Links wolltest du nochmal zählen.. die der Verzeichnisse und/oder der Einträge?
@femino
Reicht es dir vielleicht auch aus, wenn beim Ändern des Eintrages einfach nur der Name des Autors erhalten bleibt (wäre nur eine kleine Änderung)? Das zusätzliche Anzeigen des Namens von dem User, der den Beitrag geändert hat, würde mehrere grössere Änderungen verlangen..
@ Acid
Ja klar, das würde mir ausreichen. Könnte der Name des Autors dann als Eintrag in ein Feld automatisch übernommen werden?
Wer das ändert, muss überhaupt nicht angezeigt werden. Wie steht's mit der Übernahme der Buttons (z.B. "Email" "private Nachricht" etc.) ? Wirklich nur, wenn der Aufwand nicht zu groß ist. Vorab Danke für deine Mühe.
Gruß
Andreas
Ja klar, das würde mir ausreichen. Könnte der Name des Autors dann als Eintrag in ein Feld automatisch übernommen werden?
Wer das ändert, muss überhaupt nicht angezeigt werden. Wie steht's mit der Übernahme der Buttons (z.B. "Email" "private Nachricht" etc.) ? Wirklich nur, wenn der Aufwand nicht zu groß ist. Vorab Danke für deine Mühe.
Gruß
Andreas
@femino
Das folgende ist nur ein Auszug aus der database.php. Lösche dort den blaumarkierten Teil (auch das Komma)..
Natürlich müsstest du die Variabel {USER} in der database_display_body.tpl anders anordnen... da´s sonst so ausschaut, als hätte der Originalautor dein Eintrag auch geändert, wenn er denn geändert wurde. Was auch deine andere Frage beantworten sollte... du kannst diese Variabel ja in der database_display_body.tpl so anordnen, als würde sie in einem Feld platziert werden.
Zusätzliche Sachen wie ICQ oder Mail-Adresse kannst du natürlich auch anzeigen lassen. Dazu müsstest du in der functions_database.php folgenden Query anpassen (blau markiert)..
###############################################################################################
@Alex
Wenn du die Ansichten der verschiedenen Verzeichnisse zählen willst..
In der database_dir_body.tpl wird´s dann mit {directories.DIR_VIEWS} aufgerufen.
Wenn du die Ansichten der verschiedenen Einträge zählen willst..
In der database_display_body.tpl wird´s dann mit {ENTRY_VIEWS} aufgerufen.
Das mit der Anordnung in der Hauptansicht der Verzeichnisse is ja eigentlich nur reines HTML. Du musst es also nur hin- und herschieben, bis es passt.
Um bestimmten Gruppen Zugang zu gewähren und anderen nicht..
Wo du die Gruppe eintragen kannst, hab ich mit *hier* markiert. Wenn du mehrere Gruppen eintragen willst, musst du diese Zeile duplizieren (und halt die verschiedenen GruppenID´s eintragen).
In der neuen Version des Hacks wird das alles komfortabler einstellbar sein.
###############################################################################################
@wumme
Um eine a-z Sortierung einzubauen (du müsstest deine Änderungen am besten nochmal rückgängig machen und es neu einbauen)..
Die Sortierung funktioniert dann so, das standardmässig beim Klicken auf z.B. "a" nur Feld1 (der Titel) sortiert wird. Wenn du nach dem Klicken auf "a" dann bei dem Dropdown-Menü der eigentlichen Suche ein anderes Feld auswählst (und auf "Go" klickst) werden dann die Einträge deren ausgewählte Felder mit "a" beginnen angezeigt usw. (Is zwar ein wenig umständlich, aber momentan das einzig machbare.)
Wenn es Grossbuchstaben sein sollen, musst du folgende Zeile anpassen (blau markiert)..
Das folgende ist nur ein Auszug aus der database.php. Lösche dort den blaumarkierten Teil (auch das Komma)..
..damit bleibt der Originalautor erhalten.$edit = edit_count + 1;
$sql = "UPDATE ". DATABASE_TABLE ."
SET user_id = '" . $userdata['user_id'] . "', field1 =
Natürlich müsstest du die Variabel {USER} in der database_display_body.tpl anders anordnen... da´s sonst so ausschaut, als hätte der Originalautor dein Eintrag auch geändert, wenn er denn geändert wurde. Was auch deine andere Frage beantworten sollte... du kannst diese Variabel ja in der database_display_body.tpl so anordnen, als würde sie in einem Feld platziert werden.
Zusätzliche Sachen wie ICQ oder Mail-Adresse kannst du natürlich auch anzeigen lassen. Dazu müsstest du in der functions_database.php folgenden Query anpassen (blau markiert)..
In der database.php musst du dann folgende Stellen anpassen (blau markiert)..$sql = "SELECT e.*, u.user_id, u.username, u.user_icq FROM ". DATABASE_TABLE ." e, ". USERS_TABLE ." u WHERE e.user_id = u.user_id AND e.id = $entry_id";
$user = sprintf($lang['By'], '<a href="' . append_sid("profile.$phpEx?mode=viewprofile&" . POST_USERS_URL . "=" . $row['user_id']) . '">' . $row['username'] . '</a>');
$user_icq = ( $row['user_icq'] != '' ) ? $row['user_icq'] : '';
..dann kannst du in der database_display_body.tpl das Feld mit {USER_ICQ} aufrufen.'USER' => $user,
'USER_ICQ' => $user_icq,
###############################################################################################
@Alex
Wenn du die Ansichten der verschiedenen Verzeichnisse zählen willst..
Code: Alles auswählen
#
# ------- [ SQL ] -----------------------
# per phpmyadmin ausführen; auf Prefix (z.B. phpbb_) achten
ALTER TABLE phpbb_database_directories ADD dir_views MEDIUMINT(8) UNSIGNED DEFAULT '0' NOT NULL AFTER dir_order;
#
# ------- [ DATEI ] -----------------------
# database.php
#
# ------- [ FINDE ] -----------------------
#
$template->set_filenames(array(
"body" => "database_body.tpl")
);
#
# ------- [ DARUNTER EINFÜGEN ] -----------------------
# die Ansichten werden dann nur beim normalen Aufrufen eines Verzeichnis gezählt,
# nicht beim Erstellen/Ändern/Löschen eines Eintrages etc.
$sql = "UPDATE ". DATABASE_DIR_TABLE ." SET dir_views = dir_views + 1 WHERE dir_id = $dir_id";
if( !$db->sql_query($sql) )
{
message_die(GENERAL_ERROR, "Could not update dir views.", '', __LINE__, __FILE__, $sql);
}
#
# ------- [ DATEI ] -----------------------
# database_dir.php
#
# ------- [ FINDE ] -----------------------
#
'DIR_DESCRIPTION' => $row['dir_desc'],
#
# ------- [ DARUNTER EINFÜGEN ] -----------------------
#
'DIR_VIEWS' => ( $row['dir_views'] != '0' ) ? $row['dir_views'] : '',
Wenn du die Ansichten der verschiedenen Einträge zählen willst..
Code: Alles auswählen
#
# ------- [ SQL ] -----------------------
# per phpmyadmin ausführen; auf Prefix (z.B. phpbb_) achten
ALTER TABLE phpbb_database_entries ADD entry_views MEDIUMINT(8) UNSIGNED DEFAULT '0' NOT NULL AFTER dir_id;
#
# ------- [ DATEI ] -----------------------
# database.php
#
# ------- [ FINDE ] -----------------------
#
$s_hidden_fields = '<input type="hidden" name="mode" value="' . $newmode .'" /><input type="hidden" name="' . id . '" value="' . $entry_id . '" />';
if ($mode == 'display' )
{
#
# ------- [ DARUNTER EINFÜGEN ] -----------------------
# die Ansichten werden dann nur beim Anschauen eines Eintrages gezählt,
# nicht beim Erstellen/Ändern/Löschen eines Eintrages etc.
$sql = "UPDATE ". DATABASE_TABLE ." SET entry_views = entry_views + 1 WHERE id = $entry_id";
if( !$db->sql_query($sql) )
{
message_die(GENERAL_ERROR, "Could not update entry views.", '', __LINE__, __FILE__, $sql);
}
#
# ------- [ FINDE (nur ein Auszug) ] -----------------------
#
$added_updated
#
# ------- [ DARÜBER! EINFÜGEN ] -----------------------
#
$entry_views = ( $row['entry_views'] != '0' ) ? $row['entry_views'] : '';
#
# ------- [ FINDE ] -----------------------
#
'L_ADDED_UPDATED' => $added_updated,
#
# ------- [ DARÜBER! EINFÜGEN ] -----------------------
#
'ENTRY_VIEWS' => $entry_views,
Das mit der Anordnung in der Hauptansicht der Verzeichnisse is ja eigentlich nur reines HTML. Du musst es also nur hin- und herschieben, bis es passt.

Um bestimmten Gruppen Zugang zu gewähren und anderen nicht..
Code: Alles auswählen
#
# ------- [ DATEI ] -----------------------
# database.php
#
# ------- [ FINDE ] -----------------------
#
if ($mode == 'edit' || $mode == 'add' )
{
#
# ------- [ DARUNTER EINFÜGEN ] -----------------------
#
group_auth();
#
# ------- [ DATEI ] -----------------------
# functions_database.php
#
# ------- [ am Ende vor ?> EINFÜGEN ] -----------------------
#
function group_auth()
{
global $db, $userdata, $lang;
$allowed_u = array();
$allowed_u[] = 'g11'; // <---- hier
$access_allowed = false;
if( in_array($userdata['user_id'],$allowed_u))
{
$access_allowed = true;
}
else
{
$sql = "SELECT g.group_id, g.group_name FROM ". USER_GROUP_TABLE ." ug, ". GROUPS_TABLE ." g
WHERE ug.user_id = '". $userdata['user_id'] ."' AND g.group_id = ug.group_id";
if( !($result = $db->sql_query($sql)) )
{
message_die(GENERAL_ERROR, 'Could not get user group.', '', __LINE__, __FILE__, $sql);
}
$access_allowed = false;
while( list($group_id, $group_name) = $db->sql_fetchrow($result) )
{
if( in_array('g' . $group_id,$allowed_u ))
{
$access_allowed = true;
break;
}
if( in_array('g' . $group_name,$allowed_u))
{
$access_allowed = true;
break;
}
}
if( !$access_allowed )
{
message_die(GENERAL_MESSAGE, $lang['Not_authorized']);
}
}
}
In der neuen Version des Hacks wird das alles komfortabler einstellbar sein.
###############################################################################################
@wumme
Um eine a-z Sortierung einzubauen (du müsstest deine Änderungen am besten nochmal rückgängig machen und es neu einbauen)..
Code: Alles auswählen
#
# ------- [ DATEI ] -----------------------
# database.php
#
# ------- [ FINDE ] -----------------------
#
else
{
$mode = "";
}
#
# ------- [ DARUNTER EINFÜGEN ] -----------------------
#
if( isset($HTTP_POST_VARS['letter']) )
{
$by_letter = ( $HTTP_POST_VARS['letter'] ) ? $HTTP_POST_VARS['letter'] : '';
}
else if( isset($HTTP_GET_VARS['letter']) )
{
$by_letter = ( $HTTP_GET_VARS['letter'] ) ? $HTTP_GET_VARS['letter'] : '';
}
#
# ------- [ FINDE ] -----------------------
#
$search_maximum = ( strtolower($max_results) == 'all' ) ? 99999 : $max_results;
#
# ------- [ DARUNTER EINFÜGEN ] -----------------------
#
$others_sql = '';
$select_letter = '';
for ($i = 97; $i <= 122; $i++)
{
$others_sql .= " AND field1 NOT LIKE '". chr($i) ."%' ";
$select_letter .= ( $by_letter == chr($i) ) ? chr($i) . ' ' : '<a href="'. append_sid("database.$phpEx?dir_id=$dir_id&letter=". chr($i) ."&search=$search&search_type=$search_type&max_results=$max_results") .'">'. chr($i) .'</a> ';
}
$select_letter .= ( $by_letter == 'others' ) ? $lang['Others'] .' ' : '<a href="'. append_sid("database.$phpEx?dir_id=$dir_id&letter=others&mode=$mode&order=$sort_order&start=$start") .'">'. $lang['Others'] .'</a> ';
$field = ( $search_type != '' ) ? $search_type : 'field1';
$letter_string = ( $by_letter != '' ) ? ( $by_letter == 'others' ) ? $others_sql : " AND $field LIKE '$by_letter%'" : '';
#
# ------- [ FINDE 2x ] -----------------------
# auf den Punkt achten; ist in 2 verschiedenen sql-Anweisungen zu finden
.$search_string
#
# ------- [ jeweils DANACH EINFÜGEN ] -----------------------
# auf den Punkt achten
.$letter_string
#
# ------- [ FINDE ] -----------------------
#
$title_sort = "database.$phpEx?dir_id=$dir_id&search=". $search ."&search_type=". $search_type ."&max_results=". $max_results;
#
# ------- [ MIT FOLGENDEM ERSETZEN ] -----------------------
#
$title_sort = "database.$phpEx?dir_id=$dir_id&letter=$by_letter&search=". $search ."&search_type=". $search_type ."&max_results=". $max_results;
#
# ------- [ FINDE 2x ] -----------------------
#
'L_DIRECTORIES' => $lang['Directories'],
#
# ------- [ jeweils DARÜBER EINFÜGEN ] -----------------------
#
'L_SORT_BY_LETTER' => $lang['Sort_by_letter'],
'SORT_BY' => $select_letter,
'S_HIDDEN_FIELDS' => '<input type="hidden" name="letter" value="'. $by_letter .'">',
#
# ------- [ DATEI ] -----------------------
# database_body.tpl
#
# ------- [ dort EINFÜGEN wo´s hin soll ] -----------------------
#
{L_SORT_BY_LETTER}: {SORT_BY}{S_HIDDEN_FIELDS}
#
# ------- [ DATEI ] -----------------------
# lang_database.php
#
# ------- [ vor ?> EINFÜGEN ] -----------------------
#
$lang['Sort_by_letter'] = 'Show only entries starting with';
$lang['Others'] = 'others';
Wenn es Grossbuchstaben sein sollen, musst du folgende Zeile anpassen (blau markiert)..
Hier wird erklärt, wie man ein bestehendes Feld modifizieren kann, z.B. wie man ein Dropdown-Menü daraus machen kann (ich hoffe es ist verständlich).$select_letter .= ( $by_letter == chr($i) ) ? strtoupper(chr($i)) . ' ' : '<a href="'. append_sid("database.$phpEx?dir_id=$dir_id&letter=". chr($i) ."&search=$search&search_type=$search_type&max_results=$max_results") .'">'. strtoupper(chr($i)) .'</a> ';
Grandios, funktioniert prima. Ein ganz großes Danke an dieser Stelle an Acid für deine Mühe.
Kann ich denn eigentlich auch die passenden Buttons für z.B. email, icq, etc. in der database_display_body.tpl anzeigen lassen, so dass man artig draufklicken kann?
Jedenfalls funktioniert das prächtig und ich bin schwer begeistert. Danke nochmal.
Gruß
Andreas
Kann ich denn eigentlich auch die passenden Buttons für z.B. email, icq, etc. in der database_display_body.tpl anzeigen lassen, so dass man artig draufklicken kann?
Jedenfalls funktioniert das prächtig und ich bin schwer begeistert. Danke nochmal.

Gruß
Andreas

nur hab da jetzt ein kleines prob

das suchen funzt nicht mehr
Code: Alles auswählen
#
# ------- [ FINDE 2x ] -----------------------
#
'L_DIRECTORIES' => $lang['Directories'],
#
# ------- [ jeweils DARÜBER EINFÜGEN ] -----------------------
#
'L_SORT_BY_LETTER' => $lang['Sort_by_letter'],
'SORT_BY' => $select_letter,
'S_HIDDEN_FIELDS' => '<input type="hidden" name="letter" value="'. $by_letter .'">',
@femino
Wenn du z.B. die Homepage des Autors anzeigen lassen willst, würde folgende Zeile nach obigem Beispiel wie folgt aussehen..
Daran dürfte es eigentlich nicht liegen.. mit "2x" meinte ich übrigens die unteren 2 male (also die letzten beiden Vorkommnisse).
Poste mal einen Link zu deiner database.php (als *.txt abspeichern).
Wenn du z.B. die Homepage des Autors anzeigen lassen willst, würde folgende Zeile nach obigem Beispiel wie folgt aussehen..
..um dann das www-Icon anzeigen zu lassen, müsste man diese Zeile wie folgt abändern..$user_www = ( $row['user_website'] != '' ) ? $row['user_website'] : '';
@wumme$user_www = ( $row['user_website'] != '' ) ? '<a href="'. $row['user_website'] .'" target="_userwww"><img src="'. $images['icon_www'] .'" alt="'. $lang['Visit_website'] .'" title="'. $lang['Visit_website'] .'" border="0" /></a>' : '';
Daran dürfte es eigentlich nicht liegen.. mit "2x" meinte ich übrigens die unteren 2 male (also die letzten beiden Vorkommnisse).
Poste mal einen Link zu deiner database.php (als *.txt abspeichern).