4images Forum & Community
4images Modifications / Modifikationen => Mods & Plugins (Requests & Discussions) => Topic started by: tmacisnbr1 on May 29, 2003, 07:49:50 PM
-
I know there is the mod to keep track of what each user has downloaded, but what about a mod that does the following:
Click on the image, and it shows a list of all the users that have downloaded the skins.
Would this be possible?
Thanks, Alex
-
http://www.4homepages.de/forum/index.php?topic=4606.msg19320
-
*ausgrab*...
Würde mich auch intressieren.
Mod] Keep Track Of What Each User Has Downloaded ... zeigt ja nur an was der einzelne User gezogen hat, aber eine Anzeige wer ein bestimmtes Bild runtergeladen hat wäre sicher auch sehr Intressant
Ein mod dazu würde mich sehr freuen :)
-
Ich habe diese Funktion laufen...
BACKUP YOUR DATABASE
Step 1 - Tabelle in MySQL anlegen:
CREATE TABLE `4images_dllog` (
`dllog_id` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
`dllog_images_id` INTEGER(10) UNSIGNED NOT NULL,
`dllog_user_id` INTEGER(11) UNSIGNED NOT NULL,
`dllog_date` INTEGER(11) UNSIGNED NOT NULL,
`dllog_user_ip` VARCHAR(16) NOT NULL,
PRIMARY KEY(`dllog_id`)
)
Step 2
Edit {root}/includes/constants.php
Finde:
define('WORDMATCH_TABLE', $table_prefix.'wordmatch');
Add after:
define('DOWNLOAD_TABLE', $table_prefix.'dllog');
Step 3:
Edit download.php
Find:
if (empty($file_data)) {
if (ereg("^\/", $file_path)) {
preg_match("/^(http:\/\/[^\/]+)/i", $script_url, $regs);
$script_url = $regs[1];
}
$file_data = get_remote_file($script_url."/".$file_path);
}
return (!empty($file_data)) ? $file_data : 0;
}
Add after:
function get_user_ip() {
global $HTTP_SERVER_VARS, $HTTP_ENV_VARS;
$ip = (!empty($HTTP_SERVER_VARS['REMOTE_ADDR'])) ? $HTTP_SERVER_VARS['REMOTE_ADDR'] : ((!empty($HTTP_ENV_VARS['REMOTE_ADDR'])) ? $HTTP_ENV_VARS['REMOTE_ADDR'] : getenv("REMOTE_ADDR"));
$ip = preg_replace("/[^\.0-9]+/", "", $ip);
return substr($ip, 0, 50);
}
Find:
if ($user_info['user_level'] != ADMIN) {
$sql = "UPDATE ".IMAGES_TABLE."
SET image_downloads = image_downloads + 1
WHERE image_id = $image_id";
$site_db->query($sql);
}
Add after:
if ($user_info['user_level'] != ADMIN) {
$current_time = time();
$dl_user_ip = $_SERVER['REMOTE_ADDR'];
$sql = "INSERT INTO ".DOWNLOAD_TABLE."
(dllog_images_id, dllog_user_id, dllog_date, dllog_user_ip)
VALUES
($image_id, ".$user_info['user_id'].", '$current_time', '$dl_user_ip')";
$site_db->query($sql);
}
Step 4:
Create picdls.php in root
<?php
$main_template = 'picdls';
define('GET_CACHES', 1);
define('ROOT_PATH', './');
define('GET_USER_ONLINE', 1);
include(ROOT_PATH.'global.php');
require(ROOT_PATH.'includes/sessions.php');
$user_access = get_permission();
include(ROOT_PATH.'includes/page_header.php');
  $sql = "SELECT a.dllog_images_id, a.dllog_user_id, a.dllog_date, a.dllog_user_ip, u.user_id, u.user_name   
          FROM ".DOWNLOAD_TABLE." a
  LEFT JOIN ".USERS_TABLE." u ON (".get_user_table_field("u.", "user_id")." = a.dllog_user_id)
  WHERE $image_id = a.dllog_images_id AND u.user_id = a.dllog_user_id";
  $result = $site_db->query($sql);
  $downloads_row = array(); 
 
  $dllist = "";
 
  $dllist ="<table width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\" align=\"center\"><tr><td class=\"bordercolor\">";
  $dllist .="<table width=\"100%\" border=\"0\" cellpadding=\"2\" cellspacing=\"1\">";
  $dllist .="<tr><td class=\"head2\" align=\"left\">".$lang['picdll_from']."</td>";
  $dllist .="<td class=\"head2\" align=\"left\">".$lang['picdll_button']."</td>";
  $dllist .="<td class=\"head2\" align=\"center\">".$lang['picdll_status']."</td>";
  $dllist .="<td class=\"head2\" align=\"left\">".$lang['picdll_homepage']."</td>";
  $dllist .="<td class=\"head2\" align=\"left\">".$lang['picdll_date']."</td>";
  $dllist .="<td class=\"head2\" align=\"center\">".$lang['picdll_ip']."</td></tr>";
  $bgcounter = 0;
  while ($row = $site_db->fetch_array($result)) {
    $downloads_row[] = $row;
  }
  $site_db->free_result($result);
  $num_downloads = sizeof($downloads_row);
   
  for ($i = 0; $i < $num_downloads; $i++) {
    $row_bg_number = ($bgcounter++ % 2 == 0) ? 1 : 2;
    $download_user_email = "";
    $download_user_email_save = "";
    $download_user_mailform_link = "";
    $download_user_email_button = "";
    $download_user_homepage_button = "";
    $download_user_profile_button = "";
    $download_user_status_img = REPLACE_EMPTY;
    $download_user_name = format_text($downloads_row[$i]['downloads_user_name'], 2);
    $download_user_info = $lang['userlevel_guest'];
$download_user_ip = "";
    $download_date = format_date($config['date_format']." ".$config['time_format'], $downloads_row[$i]['dllog_date']);
    $download_user_id = $downloads_row[$i]['user_id'];
if ($user_info['user_level'] == ADMIN) {
  $download_user_ip = $downloads_row[$i]['dllog_user_ip'];
    }
else {
  $download_user_ip = "<a href=\"contact.php\">Adminanfrage</a>";
}
$download_user_name = format_text($downloads_row[$i][$user_table_fields['user_name']], 2);
    $download_user_profile_link = !empty($url_show_profile) ? $site_sess->url(preg_replace("/{user_id}/", $download_user_id, $url_show_profile)) : $site_sess->url(ROOT_PATH."member.php?action=showprofile&".URL_USER_ID."=".$download_user_id);
$download_user_profile_button = "<a href=\"".$download_user_profile_link."\"><img src=\"".get_gallery_image("profile.gif")."\" border=\"0\" alt=\"".$download_user_name."\" /></a>";
    $download_user_status_img = ($downloads_row[$i][$user_table_fields['user_lastaction']] >= (time() - 300) && ((isset($downloads_row[$i][$user_table_fields['user_invisible']]) && $downloads_row[$i][$user_table_fields['user_invisible']] == 0) || $user_info['user_level'] == ADMIN)) ? "<img src=\"".get_gallery_image("user_online.gif")."\" border=\"0\" alt=\"Online\" />" : "<img src=\"".get_gallery_image("user_offline.gif")."\" border=\"0\" alt=\"Offline\" />";
    $download_user_homepage = (isset($downloads_row[$i][$user_table_fields['user_homepage']])) ? format_url($downloads_row[$i][$user_table_fields['user_homepage']]) : "";
if (!empty($download_user_homepage)) {
      $download_user_homepage_button = "<a href=\"".$download_user_homepage."\" target=\"_blank\"><img src=\"".get_gallery_image("homepage.gif")."\" border=\"0\" alt=\"".$download_user_homepage."\" /></a>";
    }
    if ($count == 0) {
      $row_bg_number = ($bgcounter++ % 2 == 0) ? 1 : 2;
      $dllist .= "<tr class=\"imagerow".$row_bg_number."\">\n";
    }  
$dllist .= "<td valign=\"top\" align=\"center\">".$download_user_name."</td>";
$dllist .= "<td valign=\"top\" align=\"center\">".$download_user_profile_button."</td>";
$dllist .= "<td valign=\"top\" align=\"center\">".$download_user_status_img."</td>";
$dllist .= "<td valign=\"top\" align=\"center\">".$download_user_homepage."</td>";
$dllist .= "<td valign=\"top\" align=\"center\">".$download_date."</td>";
$dllist .= "<td valign=\"top\" align=\"center\">".$download_user_ip."</td>";
$dllist .= "</tr>";
  }
  $dllist .= "</tr>";
  $dllist .= "</table>";
  $dllist .= "</td></tr></table>";
  $site_template->register_vars("dllist", $dllist);
  unset($dllist);
 
//-----------------------------------------------------
//--- Clickstream -------------------------------------
//-----------------------------------------------------
  $clickstream = "<span class=\"clickstream\"><a href=\"".$site_sess->url(ROOT_PATH."index.php")."\" class=\"clickstream\">".$lang['home']."</a>".$config['category_separator'];
  $clickstream .= $lang['picdll_title'];
  $clickstream .= $config['category_separator'];
  $clickstream .= "<a href=\"javascript:history.back()\">".$lang['picdll_back']."</a></span>";
//-----------------------------------------------------
//--- Print Out ---------------------------------------
//-----------------------------------------------------
$site_template->register_vars(array(
  "msg" => $msg,
  "clickstream" => $clickstream,
  "picdll_title" => $lang['picdll_title']
));
$site_template->print_template($site_template->parse_template($main_template));
  include(ROOT_PATH.'includes/page_footer.php');
?>
Step 5:
Use error.html, open and save as picdls.html in your template folder:
Find:
<b class="title">{lang_error}</b>
<hr size="1" />
<p>{error_msg}</p>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td>{category_dropdown_form}</td>
<td align="right">{setperpage_dropdown_form}</td>
</tr>
</table>
<p> </p>
Replace with:
<br />
<span class="title">{picdll_title}</span>
<br />
<hr size="1" />
<br />
{paging_stats}
<br />
<br />
{if dllist}
<table width="100%" border="0" cellspacing="0" cellpadding="1">
<tr>
<td class="head1">
<table width="100%" border="0" cellspacing="0" cellpadding="3">
<tr>
<td class="row1" valign="top">{dllist}</td>
</tr>
</table>
</td>
</tr>
</table>
{endif dllist}
<br />
<br />
{paging}
<br />
<br />
<p> </p>
Step 6:
Create an admin-link:
Open detail.php
Find:
$admin_links .= "<a href=\"".$site_sess->url(ROOT_PATH."admin/index.php?goto=".urlencode("images.php?action=removeimage&image_id=".$image_id))."\" target=\"_blank\">".$lang['delete']."</a> ";
Add after:
$admin_links .= "<a href=\"".$site_sess->url(ROOT_PATH."picdll.php?image_id=".$image_id)."\" >".$lang['picdll_title']."</a>";
...ich werde die Sache noch ausbauen bzw. hier einfacher erklären. Oder hat jemand Zeit und kann das übernehmen?
vg CanonInk
-
@CanonInk
... im Step3 ... nach dem zweiten "Find:" ... fehlt sicher noch Code der eingefügt werden soll ... z.B."Add after:" ...
... ansonsten ... nette Erweiterung ...
... nur mühselig mit PhpMyAdmin zu updaten, wenn die Galerie schon einige Jahre läuft und die DB aktualisiert werden soll ...
... wozu wird hier die Download_Log_User_IP benötigt ... ?
-
@CanonInk
... im Step3 ... nach dem zweiten "Find:" ... fehlt sicher noch Code der eingefügt werden soll ... z.B."Add after:" ...
... ansonsten ... nette Erweiterung ...
... nur mühselig mit PhpMyAdmin zu updaten, wenn die Galerie schon einige Jahre läuft und die DB aktualisiert werden soll ...
... wozu wird hier die Download_Log_User_IP benötigt ... ?
..Step 3 ist geändert
...Danke :P
...die Erweiterung läuft halt nur ab dem Zeitpunkt nach den Änderungen
...die IP-Adresse wird ebenfalls geloggt, sofern der Downloader bestreiten sollten, das Bild herunter geladen zu haben. In meinem System wird die aktuelle IP-Adresse auch bei einer User-Registrierung geloggt und auch beim Bild-Upload wird die IP in die Tabelle 4images_images geschrieben
-
mhm funktioniert leider gar nicht... die picls.php musste ich erst bearbeiten und alle 160; und &# entfernen... jetzt hat er Probleme mit der Datenbank :(
-
Hi!
mhm funktioniert leider gar nicht...
tröste dich, im moment stehe ich auch auf der leitung.
weder der admin link funktioniert noch sonst was, ich habe da ehrlich gesagt auch keine ahnung wie das ganze funktionieren soll.
mfg Andi
-
Ich habe mir meinen Code angesehen und die Funktion getestet. Auf meinem System keinen Fehler festgestellt :roll:
Hier ein Teil der SQL-Tabelle:
(http://www.ruebenberger-bilder.de/tmp/picdls-forum-1.jpg)
...hier die Tabelle für ein Bild:
(http://www.ruebenberger-bilder.de/tmp/picdls-forum-2.jpg)
Alles unter 4Images 1.7.4 eingebaut und ohne weitere Änderungen in 1.7.6 gelaufen.
Natürlich nur für Admins sichtbar, weil Downloads nicht (mehr) möglich sind.
-
kannst du den Code der picdls.php nochmal posten?
Ich glaub daran liegts ... weil oben der sieht sehr merkwürdig aus
edit:
hab all die " " aus der .php gelöscht
So nun klappt das immerhin ein wenig. Leider nur ein wenig.
Du hast Codeschnipsel aufjedenfall vergessen... Sprachdatei wird bei admin_links verwendet, wird aber nirgendwo angegeben. Dazu ist der admin_link auch zur falschen .php verlinkt. Und ansonsten wenn ich dann auf den Link klicke wird mir nix angezeigt dort ... mhm :|
edit 2: nun sehe ich was auf dem Link - ein Download fehlte... mhm funktioniert... das mit der sprachdatei werd ich manuell machen müssen, aber sont sehr gut
-
hi!
Ich habe mir meinen Code angesehen und die Funktion getestet. Auf meinem System keinen Fehler festgestellt :roll:
...
Alles unter 4Images 1.7.4 eingebaut und ohne weitere Änderungen in 1.7.6 gelaufen.
Natürlich nur für Admins sichtbar, weil Downloads nicht (mehr) möglich sind.
unter 1.7.6 gibt es die php codes in step 3 und 6 in dieser art nicht.
vielleicht habe ich dort irgendwo den fehler.
der admin link, soll der falls er funktionert im ACP sichtbar sein?
mfg Andi
-
hi!
Ich habe mir meinen Code angesehen und die Funktion getestet. Auf meinem System keinen Fehler festgestellt :roll:
...
Alles unter 4Images 1.7.4 eingebaut und ohne weitere Änderungen in 1.7.6 gelaufen.
Natürlich nur für Admins sichtbar, weil Downloads nicht (mehr) möglich sind.
unter 1.7.6 gibt es die php codes in step 3 und 6 in dieser art nicht.
vielleicht habe ich dort irgendwo den fehler.
der admin link, soll der falls er funktionert im ACP sichtbar sein?
mfg Andi
Step 3 gibts eine realtiv ähnliche die hab ich verwendet bei 1.7.6 , Step6 gibts bei mir ?!
Ist bei der details.php relativ weit unten , such nach "admin_links".
Der Link ist dann unter den Bildern neben "Bearbeiten" und "Löschen" zu sehen
-
Ich vestehe es nicht :oops: Heute ist der Code von picdls.php hier im Forum geändert, danach keine ...&...-Zeichen vorhanden und jetzt sind wieder welche dort :roll: Kann mit jemand sagen, wie das kommt?
Hier der Code:
<?php
$main_template = 'picdls';
define('GET_CACHES', 1);
define('ROOT_PATH', './');
define('GET_USER_ONLINE', 1);
include(ROOT_PATH.'global.php');
require(ROOT_PATH.'includes/sessions.php');
$user_access = get_permission();
include(ROOT_PATH.'includes/page_header.php');
$sql = "SELECT a.dllog_images_id, a.dllog_user_id, a.dllog_date, a.dllog_user_ip, u.user_id, u.user_name
FROM ".DOWNLOAD_TABLE." a
LEFT JOIN ".USERS_TABLE." u ON (".get_user_table_field("u.", "user_id")." = a.dllog_user_id)
WHERE $image_id = a.dllog_images_id AND u.user_id = a.dllog_user_id";
$result = $site_db->query($sql);
$downloads_row = array();
$dllist = "";
$dllist ="<table width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\" align=\"center\"><tr><td class=\"bordercolor\">";
$dllist .="<table width=\"100%\" border=\"0\" cellpadding=\"2\" cellspacing=\"1\">";
$dllist .="<tr><td class=\"head2\" align=\"left\">".$lang['picdll_from']."</td>";
$dllist .="<td class=\"head2\" align=\"left\">".$lang['picdll_button']."</td>";
$dllist .="<td class=\"head2\" align=\"center\">".$lang['picdll_status']."</td>";
$dllist .="<td class=\"head2\" align=\"left\">".$lang['picdll_homepage']."</td>";
$dllist .="<td class=\"head2\" align=\"left\">".$lang['picdll_date']."</td>";
$dllist .="<td class=\"head2\" align=\"center\">".$lang['picdll_ip']."</td></tr>";
$bgcounter = 0;
while ($row = $site_db->fetch_array($result)) {
$downloads_row[] = $row;
}
$site_db->free_result($result);
$num_downloads = sizeof($downloads_row);
for ($i = 0; $i < $num_downloads; $i++) {
$row_bg_number = ($bgcounter++ % 2 == 0) ? 1 : 2;
$download_user_email = "";
$download_user_email_save = "";
$download_user_mailform_link = "";
$download_user_email_button = "";
$download_user_homepage_button = "";
$download_user_profile_button = "";
$download_user_status_img = REPLACE_EMPTY;
$download_user_name = format_text($downloads_row[$i]['downloads_user_name'], 2);
$download_user_info = $lang['userlevel_guest'];
$download_user_ip = "";
$download_date = format_date($config['date_format']." ".$config['time_format'], $downloads_row[$i]['dllog_date']);
$download_user_id = $downloads_row[$i]['user_id'];
if ($user_info['user_level'] == ADMIN) {
$download_user_ip = $downloads_row[$i]['dllog_user_ip'];
}
else {
$download_user_ip = "<a href=\"contact.php\">Adminanfrage</a>";
}
$download_user_name = format_text($downloads_row[$i][$user_table_fields['user_name']], 2);
$download_user_profile_link = !empty($url_show_profile) ? $site_sess->url(preg_replace("/{user_id}/", $download_user_id, $url_show_profile)) : $site_sess->url(ROOT_PATH."member.php?action=showprofile&".URL_USER_ID."=".$download_user_id);
$download_user_profile_button = "<a href=\"".$download_user_profile_link."\"><img src=\"".get_gallery_image("profile.gif")."\" border=\"0\" alt=\"".$download_user_name."\" /></a>";
$download_user_status_img = ($downloads_row[$i][$user_table_fields['user_lastaction']] >= (time() - 300) && ((isset($downloads_row[$i][$user_table_fields['user_invisible']]) && $downloads_row[$i][$user_table_fields['user_invisible']] == 0) || $user_info['user_level'] == ADMIN)) ? "<img src=\"".get_gallery_image("user_online.gif")."\" border=\"0\" alt=\"Online\" />" : "<img src=\"".get_gallery_image("user_offline.gif")."\" border=\"0\" alt=\"Offline\" />";
$download_user_homepage = (isset($downloads_row[$i][$user_table_fields['user_homepage']])) ? format_url($downloads_row[$i][$user_table_fields['user_homepage']]) : "";
if (!empty($download_user_homepage)) {
$download_user_homepage_button = "<a href=\"".$download_user_homepage."\" target=\"_blank\"><img src=\"".get_gallery_image("homepage.gif")."\" border=\"0\" alt=\"".$download_user_homepage."\" /></a>";
}
if ($count == 0) {
$row_bg_number = ($bgcounter++ % 2 == 0) ? 1 : 2;
$dllist .= "<tr class=\"imagerow".$row_bg_number."\">\n";
}
$dllist .= "<td valign=\"top\" align=\"center\">".$download_user_name."</td>";
$dllist .= "<td valign=\"top\" align=\"center\">".$download_user_profile_button."</td>";
$dllist .= "<td valign=\"top\" align=\"center\">".$download_user_status_img."</td>";
$dllist .= "<td valign=\"top\" align=\"center\">".$download_user_homepage."</td>";
$dllist .= "<td valign=\"top\" align=\"center\">".$download_date."</td>";
$dllist .= "<td valign=\"top\" align=\"center\">".$download_user_ip."</td>";
$dllist .= "</tr>";
}
$dllist .= "</tr>";
$dllist .= "</table>";
$dllist .= "</td></tr></table>";
$site_template->register_vars("dllist", $dllist);
unset($dllist);
//-----------------------------------------------------
//--- Clickstream -------------------------------------
//-----------------------------------------------------
$clickstream = "<span class=\"clickstream\"><a href=\"".$site_sess->url(ROOT_PATH."index.php")."\" class=\"clickstream\">".$lang['home']."</a>".$config['category_separator'];
$clickstream .= $lang['picdll_title'];
$clickstream .= $config['category_separator'];
$clickstream .= "<a href=\"javascript:history.back()\">".$lang['picdll_back']."</a></span>";
//-----------------------------------------------------
//--- Print Out ---------------------------------------
//-----------------------------------------------------
$site_template->register_vars(array(
"msg" => $msg,
"clickstream" => $clickstream,
"picdll_title" => $lang['picdll_title']
));
$site_template->print_template($site_template->parse_template($main_template));
include(ROOT_PATH.'includes/page_footer.php');
?>
...mal sehen, was passiert.
Take care,
CanonInk
-
Ich vestehe es nicht :oops: Heute ist der Code von picdls.php hier im Forum geändert, danach keine ...&...-Zeichen vorhanden und jetzt sind wieder welche dort :roll: Kann mit jemand sagen, wie das kommt?
...
stimmt ich habe mich auch gewundert, den nach dem du sie richtig gestellt hast habe ich sie rauskopiert.
und jetzt ists wieder der alte?
und ich denk mir noch was macht den der da. :)
mfg Andi
-
Moin!
Hab gerade versucht den MOD einzubauen.
Allerdings hänge ich im Step 3.1 fest...
Step 3:
Edit download.php
Find:
if (empty($file_data)) {
if (ereg("^\/", $file_path)) {
preg_match("/^(http:\/\/[^\/]+)/i", $script_url, $regs);
$script_url = $regs[1];
}
$file_data = get_remote_file($script_url."/".$file_path);
}
return (!empty($file_data)) ? $file_data : 0;
}
Hab ich nicht in der downloads.php stehen... 8O
-
Hab ich nicht in der downloads.php stehen... 8O
Welche Script-Version?
-
1.7.7
steht nicht drin!
-
versuchs mal nach:
if (!empty($file['file_path'])) {
@set_time_limit(120);
if ($remote_url) {
redirect($file['file_path']);
}
oder vor: function fix_file_path($file_path)
-
Das geht zwar, aber der Download (Orginal-Größe) geht weder als Download, noch al zip :( :?
-
Funktioniert perfekt mit den genannten nachträglichen Änderungen auch in Version 1.7.10!
Tausend Dank dafür!
Was mir noch fehlt, ist eine Übersicht von Downloads des jeweiligen Users.
Werde da mal was bauen, damit man sich im ACP zum jeweiligen User auch den Download Verlauf anschauen kann.
Hier noch die Spracheinträge:
Für die: \lang\deutsch\main.php
//-----------------------------------------------------
//--- Download Counter -------------------------------------
//-----------------------------------------------------
$lang['picdll_title'] = "Download History";
$lang['picdll_back'] = "Zurück";
$lang['picdll_from'] = "Von";
$lang['picdll_button'] = "Profil";
$lang['picdll_status'] = "Status";
$lang['picdll_homepage'] = "Homepage";
$lang['picdll_date'] = "Datum";
$lang['picdll_ip'] = "IP Adresse";
Gruß Daniel