[mod] link to view an online version of the message

3rd party code for phpList

[mod] link to view an online version of the message

Postby H2B2 » 11:59pm, Tue 25 Mar, 2008

If you want to insert a link in a message, so the users can view an online version of that message, you can either try this mod by BUGabundo or another mod by harty83 in the next post.
The original thread was lost, but I managed to salvage both mods from 'big brother' Google's cache.

-------------------

BUGabundo on 4 july 2006 wrote:I have done a webpage so the mails sent in the PHPlist can be seen on the web.
I'm still working on the login procedures, so u can put this to work without autentication:
Code: Select all
// AUTOR BUGabundo
// email: phplist@BUGabundo.net
// web: http://BrinKadeiraS.BUGabundo.net
// Date: 3/07/2006
<?php
$hostname_phplist = "localhost";
$database_phplist = "BD_phplist";
$username_phplist = "USER_phplist";
$password_phplist = "PASS_phplist";
$phplist = mysql_pconnect($hostname_phplist, $username_phplist, $password_phplist) or trigger_error(mysql_error(),E_USER_ERROR);
?>
<?php require_once('Connections/phplist.php'); ?>
<?php
$currentPage = $_SERVER["PHP_SELF"];

$maxRows_Recordset1 = 3;
$pageNum_Recordset1 = 0;
if (isset($_GET['pageNum_Recordset1'])) {
$pageNum_Recordset1 = $_GET['pageNum_Recordset1'];
}
$startRow_Recordset1 = $pageNum_Recordset1 * $maxRows_Recordset1;

mysql_select_db($database_phplist, $phplist);
$query_Recordset1 = "SELECT p.entered, li.name, p.subject, p.message FROM phplist_message p, phplist_listmessage l, phplist_list li WHERE p.id=l.messageid AND l.listid=li.id ORDER BY p.entered DESC, li.name ASC";
$query_limit_Recordset1 = sprintf("%s LIMIT %d, %d", $query_Recordset1, $startRow_Recordset1, $maxRows_Recordset1);
$Recordset1 = mysql_query($query_limit_Recordset1, $phplist) or die(mysql_error());
$row_Recordset1 = mysql_fetch_assoc($Recordset1);

if (isset($_GET['totalRows_Recordset1'])) {
$totalRows_Recordset1 = $_GET['totalRows_Recordset1'];
} else {
$all_Recordset1 = mysql_query($query_Recordset1);
$totalRows_Recordset1 = mysql_num_rows($all_Recordset1);
}
$totalPages_Recordset1 = ceil($totalRows_Recordset1/$maxRows_Recordset1)-1;

$queryString_Recordset1 = "";
if (!empty($_SERVER['QUERY_STRING'])) {
$params = explode("&", $_SERVER['QUERY_STRING']);
$newParams = array();
foreach ($params as $param) {
if (stristr($param, "pageNum_Recordset1") == false &&
stristr($param, "totalRows_Recordset1") == false) {
array_push($newParams, $param);
}
}
if (count($newParams) != 0) {
$queryString_Recordset1 = "&" . htmlentities(implode("&", $newParams));
}
}
$queryString_Recordset1 = sprintf("&totalRows_Recordset1=%d%s", $totalRows_Recordset1, $queryString_Recordset1);
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Mailinglist</title>
</head>

<body>
<div align="center">Records <?php echo ($startRow_Recordset1 + 1) ?> to <?php echo min($startRow_Recordset1 + $maxRows_Recordset1, $totalRows_Recordset1) ?> of <?php echo $totalRows_Recordset1 ?>
</div>
<table border="0" width="50%" align="center">
<tr>
<td width="23%" align="center"><?php if ($pageNum_Recordset1 > 0) { // Show if not first page ?>
<a href="<?php printf("%s?pageNum_Recordset1=%d%s", $currentPage, 0, $queryString_Recordset1); ?>"><img src="First.gif" border=0></a>
<?php } // Show if not first page ?>
</td>
<td width="31%" align="center"><?php if ($pageNum_Recordset1 > 0) { // Show if not first page ?>
<a href="<?php printf("%s?pageNum_Recordset1=%d%s", $currentPage, max(0, $pageNum_Recordset1 - 1), $queryString_Recordset1); ?>"><img src="Previous.gif" border=0></a>
<?php } // Show if not first page ?>
</td>
<td width="23%" align="center"><?php if ($pageNum_Recordset1 < $totalPages_Recordset1) { // Show if not last page ?>
<a href="<?php printf("%s?pageNum_Recordset1=%d%s", $currentPage, min($totalPages_Recordset1, $pageNum_Recordset1 + 1), $queryString_Recordset1); ?>"><img src="Next.gif" border=0></a>
<?php } // Show if not last page ?>
</td>
<td width="23%" align="center"><?php if ($pageNum_Recordset1 < $totalPages_Recordset1) { // Show if not last page ?>
<a href="<?php printf("%s?pageNum_Recordset1=%d%s", $currentPage, $totalPages_Recordset1, $queryString_Recordset1); ?>"><img src="Last.gif" border=0></a>
<?php } // Show if not last page ?>
</td>
</tr>
</table>

<table border="1" align="center" id="tabela">
<tr align="center">
<th width="85"><div align="center">Data</div></th>
<th width="150"><div align="center">Lista</div></th>
<th width="200"><div align="center">Assunto</div></th>
<th><div align="center">Mensagem</div></th>
</tr>
<?php do { ?>
<tr valign="top">
<td width="85" align="center"><div align="center"><?php echo $row_Recordset1['entered']; ?></div></td>
<td width="150" align="center"><div align="center"><?php echo $row_Recordset1['name']; ?></div></td>
<td width="200" align="center"><div align="center"><?php echo $row_Recordset1['subject']; ?></div></td>
<td><blockquote>
<p><?php echo $row_Recordset1['message']; ?></p>
</blockquote></td>
</tr>
<?php } while ($row_Recordset1 = mysql_fetch_assoc($Recordset1)); ?>
</table>

<table border="0" width="50%" align="center">
<tr>
<td width="23%" align="center"><?php if ($pageNum_Recordset1 > 0) { // Show if not first page ?>
<a href="<?php printf("%s?pageNum_Recordset1=%d%s", $currentPage, 0, $queryString_Recordset1); ?>"><img src="First.gif" border=0></a>
<?php } // Show if not first page ?>
</td>
<td width="31%" align="center"><?php if ($pageNum_Recordset1 > 0) { // Show if not first page ?>
<a href="<?php printf("%s?pageNum_Recordset1=%d%s", $currentPage, max(0, $pageNum_Recordset1 - 1), $queryString_Recordset1); ?>"><img src="Previous.gif" border=0></a>
<?php } // Show if not first page ?>
</td>
<td width="23%" align="center"><?php if ($pageNum_Recordset1 < $totalPages_Recordset1) { // Show if not last page ?>
<a href="<?php printf("%s?pageNum_Recordset1=%d%s", $currentPage, min($totalPages_Recordset1, $pageNum_Recordset1 + 1), $queryString_Recordset1); ?>"><img src="Next.gif" border=0></a>
<?php } // Show if not last page ?>
</td>
<td width="23%" align="center"><?php if ($pageNum_Recordset1 < $totalPages_Recordset1) { // Show if not last page ?>
<a href="<?php printf("%s?pageNum_Recordset1=%d%s", $currentPage, $totalPages_Recordset1, $queryString_Recordset1); ?>"><img src="Last.gif" border=0></a>
<?php } // Show if not last page ?>
</td>
</tr>
</table>

<div align="center">Records <?php echo ($startRow_Recordset1 + 1) ?> to <?php echo min($startRow_Recordset1 + $maxRows_Recordset1, $totalRows_Recordset1) ?> of <?php echo $totalRows_Recordset1 ?>
</div>
</body>
</html>
<?php
mysql_free_result($Recordset1);
?>



BUGabundo wrote:If anybody is in anyway familiried with phplist config, they will install this just as quick.

here is all u need:

creat a PHP file on your host (any where u like) and copy this code.
change this for your configuration:
Code:
$hostname_phplist = "localhost";
$database_phplist = "BD_phplist";
$username_phplist = "USER_phplist";
$password_phplist = "PASS_phplist";


and open it on a web browser: http://YOURDOMAIN/emails.php

advanced: if u like u can change $maxRows_Recordset1 = 3 to any other value.
I only use 3 cause it would take longer to process more, and since many of may mails tend to be quite big, they would fill a big webpage.
H2B2
Moderator
 
Posts: 7188
Joined: 1:51am, Wed 15 Mar, 2006

[mod] link to view an online version of the message [2]

Postby H2B2 » 12:02am, Wed 26 Mar, 2008

If you want to insert a link in a message, so the users can view an online version of that message, you can also try this mod by harty83:
harty83 on 23 july 2006 wrote:did this by doing the following

Somewhere around line 487 of sendemaillib.php I added:
Code: Select all
 
# check that the HTML message as proper <head> </head> and <body> </body> tags
  # some readers fail when it doesn't
  if (!preg_match("#<body.*</body>#ims",$htmlmessage)) {
   if ($GLOBALS["generate_static"] == 1){
      $htmlmessage = '<body><div>If you are having trouble viewing this message, <a>click here</a>.<br>'.$htmlmessage.'</body>';
   }else{   
      $htmlmessage = '<body>'.$htmlmessage.'</body>';
   }
  }


Then below that right after
Code: Select all
  if (!preg_match("#<html>.*</html>#ims",$htmlmessage)) {
   $htmlmessage = '<html>'.$htmlmessage.'</html>';
  }


I put
Code: Select all
#write to static file here
  if ($GLOBALS["generate_static"] == 1){
   $static = '../static/'.$messageid.'.html';
   $statichandle = fopen($static, 'w');
   fwrite($statichandle, $htmlmessage);
   fclose($statichandle);
}


I wanted a way to easily turn it off if I need to so I added to my config file:
Code: Select all
$generate_static = 1;


Make sure that you have a folder /lists/static that is writable by the webserver.



EDIT - related feature request: http://mantis.phplist.com/view.php?id=15553
H2B2
Moderator
 
Posts: 7188
Joined: 1:51am, Wed 15 Mar, 2006

Postby wookee » 1:04am, Thu 05 Jun, 2008

I tried the mod by Harty and now I can't send any emails.

I copied and pasted exactly the code suggested into exactly the positions indicated in sendemaillib.php and created the extra bit of code in config.php and created a writeable folder called static in the appropriate place.....uploaded it all, went to send a test email and instead of coming back with "test email has been sent to....blah blah" it just says "message saved" and does nothing.

Has anyone had success using this mod?

Thanks
Dan.
wookee
phpLister
 
Posts: 6
Joined: 5:32am, Tue 03 Jun, 2008
Location: Australia

Postby Ernesto » 11:08pm, Thu 05 Jun, 2008

A low tech solution (no mods) is decribed in this thread: http://forums.phplist.com/viewtopic.php?t=17183
Search first, Ask questions later...
Ernesto
PL Freak!
 
Posts: 592
Joined: 2:25am, Thu 08 Jun, 2006

Postby wookee » 11:35pm, Thu 05 Jun, 2008

Gracias Ernesto.

I had actually already read that thread that you recommended however the newsletter that I'm setting up is for a non-tech-savvy client so I want everything to be as automated as possible.

If I went for the method described in that thread, I'd have to do it for her (the client) every month.

Thanks anyway.

Dan.
wookee
phpLister
 
Posts: 6
Joined: 5:32am, Tue 03 Jun, 2008
Location: Australia

Postby Stuff4Toys » 9:28pm, Tue 17 Jun, 2008

Here's my version of BUGabundo's mod as posted above. I didn't change much of the coding at all, just a little prettier than the original. I included buttons for page navigation in the .zip file.

You will have to open it in a text editor and make a few changes to suit your location. Set your mySQL server host, database name, username and password.

Upload it to a public folder on your host with the images.

I made a few changes to include our header image, if you don't want to do that just take out the sections from <td> to </td> with the header image.

You can see mine at: http://www.liberty-flag.com/email.php

After reading the comments in the top of the file, Post questions here.
JOhn ><>

Don't know if the attachment worked, you can download it here: http://www.stuff4toys.com/john/phplist_view_email.zip

USE AT YOUR OWN RISK!
phplist_view_email.zip
(5.99 KiB) Downloaded 406 times
Stuff4Toys
PL Nut
 
Posts: 17
Joined: 12:32am, Wed 16 Jan, 2008
Location: Green Bay Packer Territory

Good Job Stuff4Toys

Postby amilcar » 3:05pm, Fri 20 Jun, 2008

Kudos Stuff4Toys
Finally, somebody did something to really offer a clean easy solution to archives in PhPList !!!

What Stuff4Toys did is that he offered in in zipped downloadable format rather than trying to copy from the browser's window which adds alot of unseen characters and carriage returns that messes up everything for the average user and frustrates everyone !

PhP List guys should offer a direct link to Stuff4Toys's contribution or shall I say smarter update !

Again good job Stuff4Toys and keep up the good work !!
amilcar
phpList newbie
 
Posts: 1
Joined: 11:07am, Wed 20 Feb, 2008

Re: [mod] link to view an online version of the message [2]

Postby lefty4080 » 7:23pm, Mon 14 Jul, 2008

OK I was trying to use this code from above.

One thing I noticed was that the first block of code is mostly there. You just have to add the part:
Code: Select all
if ($GLOBALS["generate_static"] == 1){
      $htmlmessage = '<body><div>If you are having trouble viewing this message, <a>click here</a>.<br>'.$htmlmessage.'</body>';
   }else{
Dont forget the extra { after the block.

Now my problem is that it works great it creates the text it mails and it creates the static form of this.

The problem is there is no code to create the link so a no good link is produced. Any ideas I am working on it myself right now

Thanks




H2B2 wrote:If you want to insert a link in a message, so the users can view an online version of that message, you can also try this mod by harty83:
harty83 on 23 july 2006 wrote:did this by doing the following

Somewhere around line 487 of sendemaillib.php I added:
Code: Select all
 
# check that the HTML message as proper <head> </head> and <body> </body> tags
  # some readers fail when it doesn't
  if (!preg_match("#<body.*</body>#ims",$htmlmessage)) {
   if ($GLOBALS["generate_static"] == 1){
      $htmlmessage = '<body><div>If you are having trouble viewing this message, <a>click here</a>.<br>'.$htmlmessage.'</body>';
   }else{   
      $htmlmessage = '<body>'.$htmlmessage.'</body>';
   }
  }


Then below that right after
Code: Select all
  if (!preg_match("#<html>.*</html>#ims",$htmlmessage)) {
   $htmlmessage = '<html>'.$htmlmessage.'</html>';
  }


I put
Code: Select all
#write to static file here
  if ($GLOBALS["generate_static"] == 1){
   $static = '../static/'.$messageid.'.html';
   $statichandle = fopen($static, 'w');
   fwrite($statichandle, $htmlmessage);
   fclose($statichandle);
}


I wanted a way to easily turn it off if I need to so I added to my config file:
Code: Select all
$generate_static = 1;


Make sure that you have a folder /lists/static that is writable by the webserver.
lefty4080
PL Nut
 
Posts: 26
Joined: 2:22am, Wed 11 Jun, 2008

Re: [mod] link to view an online version of the message [2]

Postby nachotronics » 6:14am, Tue 15 Jul, 2008

You were right on track, I got it working by slightly modifying the code you pointed out then I realized that for some reason unless I disable HTML on my posts this forum is modifying what I type inside CODE tags, so who knows how long has this been solved and working...

edit: after that i found out a new user like me cannot post messages with URLs, which I didn't anyways...
[EDITED by moderator to include nachotronics' fix:]


So this is the ultra simple solution
Code: Select all
## check that the HTML message as proper <head> </head> and <body> </body> tags
  # some readers fail when it doesn't
  if (!preg_match("#<body.*</body>#ims",$htmlmessage)) {
   if ($GLOBALS["generate_static"] == 1){
        $htmlmessage = '<body><div align="center">If you are having trouble viewing this message, <a href="http://www.'.getConfig("domain").'/newsletter/static/'.$messageid.'.html">click here</a>.<br></div>'.$htmlmessage.'</body>';
   }else{   
      $htmlmessage = '<body>'.$htmlmessage.'</body>';
   }
  }



But then, I figured out I didn't want the static link on the actual static page hosted on the server, instead I wanted some "Published on DATEHERE", maybe also add styles to the text, and a title. So here goes instead of the above:

Code: Select all
## check that the HTML message as proper <head> </head> and <body> </body> tags
  # some readers fail when it doesn't
  if (!preg_match("#<body.*</body>#ims",$htmlmessage)) {
   if ($GLOBALS["generate_static"] == 1){
        $htmlmessagestatic = '<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /><title>'.$message["subject"].'</title><body><div align="center" style="color:#003366; font-family: Verdana,Arial,Helvetica,sans-serif; font-size: 12px; font-weight:bold">Message sent on '.date("j, m, Y").'<br></div>'.$htmlmessage.'</body>';
     $htmlmessage = '<body><div align="center" style="color:#003366; font-family: Verdana,Arial,Helvetica,sans-serif; font-size: 12px; font-weight:bold">If you are having trouble viewing this message, <a href="http://www.'.getConfig("domain").'/newsletter/static/'.$messageid.'.html">click here</a>.<br></div>'.$htmlmessage.'</body>';
   }else{   
      $htmlmessage = '<body>'.$htmlmessage.'</body>';
   }
  }

Notice we save two different versions of the same message in two variables

And we need to set the saved file to our static version:

Code: Select all
  #write to static file here
  if ($GLOBALS["generate_static"] == 1){
   $static = '../static/'.$messageid.'.html';
   $statichandle = fopen($static, 'w');
   fwrite($statichandle, $htmlmessagestatic);
   fclose($statichandle);
}


Hope it helps :wink:


lefty4080 wrote:OK I was trying to use this code from above.

One thing I noticed was that the first block of code is mostly there. You just have to add the part:
Code: Select all
if ($GLOBALS["generate_static"] == 1){
      $htmlmessage = '<body><div>If you are having trouble viewing this message, <a>click here</a>.<br>'.$htmlmessage.'</body>';
   }else{
Dont forget the extra { after the block.

Now my problem is that it works great it creates the text it mails and it creates the static form of this.

The problem is there is no code to create the link so a no good link is produced. Any ideas I am working on it myself right now

Thanks
nachotronics
phpLister
 
Posts: 5
Joined: 5:05am, Tue 15 Jul, 2008

Postby lefty4080 » 10:58am, Tue 15 Jul, 2008

NOTE: Using Version 2.10.5

Great! Thanks that worked like a charm for me and looks great. I don't know all the variables very well for this program, so my only problem was that the link was incorrect because my installation of PHPList is installed under http://mydomain/lists and this code reflects http://mydomain/newsletter.

I am not sure if that path in the code ie: href="http://www.'.getConfig("domain").'/newsletter/static/'.$messageid.'.html">click here</a>.<br></div>'.$htmlmessage.'</body>';

Can getConfig("domain").'be changed to a variable that contains the PHPList location instead?

Anyway for now I hope nachotronics does not mind if I put the step by step for us non technical people so we can change it easily:

Step 1:
Create a directory named "static" in your PHPList directory and give it 755 permissions.

Step 2:
Edit the file sendemaillib.php (BACKUP THE ORIGINAL IN CASE YOU HAVE PROBLEMS) it is in the admin directory of your PHPlist.

Find code block:
Code: Select all
## check that the HTML message as proper <head> </head> and <body> </body> tags
  # some readers fail when it doesn't
  if (!preg_match("#<body.*</body>#ims",$htmlmessage)) {
    $htmlmessage = '<body>'.$htmlmessage.'</body>';
  }
  if (!preg_match("#<head>.*</head>#ims",$htmlmessage)) {
    if (!$adddefaultstyle) {
     $defaultstyle = "";
    }
    $htmlmessage = '<head>
        <meta>
        <title></title>'.$defaultstyle.'</head>'.$htmlmessage;
  }
  if (!preg_match("#<html>.*</html>#ims",$htmlmessage)) {
    $htmlmessage = '<html>'.$htmlmessage.'</html>';
  }



Replace it with:
Code: Select all
## check that the HTML message as proper <head> </head> and <body> </body> tags
  # some readers fail when it doesn't
  if (!preg_match("#<body.*</body>#ims",$htmlmessage)) {
   if ($GLOBALS["generate_static"] == 1){
        $htmlmessagestatic = '<meta><title>'.$message["subject"].'</title><body><div>Message sent on '.date("j, m, Y").'<br></div>'.$htmlmessage.'</body>';
     $htmlmessage = '<body><div>If you are having trouble viewing this message, <a>click here</a>.<br></div>'.$htmlmessage.'</body>';
   }else{   
      $htmlmessage = '<body>'.$htmlmessage.'</body>';
   }
  }

#write to static file here
  if ($GLOBALS["generate_static"] == 1){
   $static = '../static/'.$messageid.'.html';
   $statichandle = fopen($static, 'w');
   fwrite($statichandle, $htmlmessagestatic);
   fclose($statichandle);
}


NOTE: Make sure that the path in the code "'/newsletter/static/'" is changed to your PHPList location ie: '/lists/static/' or whatever you have yours installed at. (remove quotes of course)

Save the file

Step 4:
add the following line to your config.php file right before the last "?>" (I know that is basic but as a new person I always needed exact directions) and save the file when done

Code: Select all
## turn on option to create a link in each email to a static copy of the message in case users have a hard time viewing message
$generate_static = 1;


Step 5: Test it out and see if it works! Configure as needed.

Good luck, hope this helps somebody
lefty4080
PL Nut
 
Posts: 26
Joined: 2:22am, Wed 11 Jun, 2008

Postby nachotronics » 12:29am, Thu 17 Jul, 2008

Thank you for you explanation, i was kinda tired and not in the mood for dealing with the forum yesterday :roll: .

Please repost your message with the disable HTML in this post option selected, notice how the <a> part doesn't show up correctly, that might have been the problem in the first place...

Also the variable you can use for installation folder is $GLOBALS["pageroot"] specified in config.php In my case it will return "/newsletter" so you still need to add the '/static/' part.

Maybe you can make your post the definitive one on that. Just check for the code to appear correctly posted.

nacho :wink:
nachotronics
phpLister
 
Posts: 5
Joined: 5:05am, Tue 15 Jul, 2008

Post

Postby lefty4080 » 2:57am, Thu 17 Jul, 2008

Ill post the corrected version in full tomorrow with the fixes. Thanks for the heads up!

Its too bad there just wasnt a direct archive built in so a static message would not be needed anyway.

Thanks for the help
lefty4080
PL Nut
 
Posts: 26
Joined: 2:22am, Wed 11 Jun, 2008

Got another question

Postby lefty4080 » 11:45am, Thu 17 Jul, 2008

I did not want to use this page within the PHP List as I wanted to make a archive page in my site. I am using Joomla so I removed the header information of the archive page. Then I used a wrapper in Joomla to show th e archive.

It worked great but it is not taking on the style of my site. How do I get it to use the style sheet of my joomla site or any style for that matter?

Any help greatly appreciated.

Thanks
lefty4080
PL Nut
 
Posts: 26
Joined: 2:22am, Wed 11 Jun, 2008

Postby JamesH » 2:39pm, Thu 24 Jul, 2008

Hi,

I have two questions and hope someone can help.

Is their away the message.php file could show the user_id and personalized element?

I was thinking it might be message.php?id=[template_id]&uid=[user_id]
So when they click a link to view online it still is personalised for them?

With the method of writing a html file to the static folder, Is their a way to write an individual html file for each recipient of the email and still have it personalized to, and why is it when I use a html template the static file is empty?

Thanks in advance
JamesH
phpList newbie
 
Posts: 1
Joined: 2:05pm, Thu 24 Jul, 2008

Postby pedromau » 12:59pm, Wed 24 Sep, 2008

I'd like to try the "http://www.stuff4toys.com/john/phplist_view_email.zip " but I don't know how to add the permissions to my htacess file :(

I get:
Forbidden
You don't have permission to access /newsletter/email.php on this server.

Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.


here's how my htaccess file looks like:
DirectoryIndex index.php

<FilesMatch>
Order allow,deny
deny from all
</FilesMatch>
<FilesMatch>
Order allow,deny
allow from all
</FilesMatch>
#php_flag magic_quotes_gpc on


can someone help?
pedromau
PL Nut
 
Posts: 30
Joined: 12:58am, Wed 05 Mar, 2008

Next

Return to Contributions: Plug-ins, Add-ons, Mods

Who is online

Users browsing this forum: No registered users and 1 guest