Jump to content
  • Checkout
  • Login
  • Get in touch

osCommerce

The e-commerce.

[Contribution] SEO-G


Guest

Recommended Posts

did you clear the reports page after you upgraded? If not, clear them and retry. And also I need to see your configure.php file to see if there is a difference between the secure/non-secure settings. If you post it exclude the dbase info.

 

And try the recommendation from post #306 in this thread. It should take care of the create-account/login issue. For the advanced search I believe something is going on with the recorded urls. When I try it here, it works. As the last option you could use the exclusion list and exclude the advanced_search script from SEO-G. Although I doubt is the root of the problem.

 

 

<?php

/*

$Id: configure.php,v 1.14 2003/02/21 16:55:24 dgw_ Exp $

 

osCommerce, Open Source E-Commerce Solutions

http://www.oscommerce.com

 

Copyright © 2002 osCommerce

 

Released under the GNU General Public License

*/

 

// Define the webserver and path parameters

// * DIR_FS_* = Filesystem directories (local/physical)

// * DIR_WS_* = Webserver directories (virtual/URL)

define('HTTP_SERVER', 'http://www.fantasyfestival.com'); // eg, http://localhost - should not be empty for productive servers

define('HTTP_CATALOG_SERVER', 'http://www.fantasyfestival.com');

define('HTTPS_CATALOG_SERVER', 'https://www.fantasyfestval.com');

define('ENABLE_SSL_CATALOG', 'true'); // secure webserver for catalog module

define('DIR_FS_DOCUMENT_ROOT', '/home/cust1/user1397644/html/catalog/'); // where the pages are located on the server

define('DIR_WS_ADMIN', '/catalog/admin/'); // absolute path required

define('DIR_FS_ADMIN', '/home/cust1/user1397644/html/catalog/admin/'); // absolute pate required

define('DIR_WS_CATALOG', '/catalog/'); // absolute path required

define('DIR_FS_CATALOG', '/home/cust1/user1397644/html/catalog/'); // absolute path required

define('DIR_WS_IMAGES', 'images/');

define('DIR_WS_ICONS', DIR_WS_IMAGES . 'icons/');

define('DIR_WS_CATALOG_IMAGES', DIR_WS_CATALOG . 'images/');

define('DIR_WS_INCLUDES', 'includes/');

define('DIR_WS_BOXES', DIR_WS_INCLUDES . 'boxes/');

define('DIR_WS_FUNCTIONS', DIR_WS_INCLUDES . 'functions/');

define('DIR_WS_CLASSES', DIR_WS_INCLUDES . 'classes/');

define('DIR_WS_MODULES', DIR_WS_INCLUDES . 'modules/');

define('DIR_WS_LANGUAGES', DIR_WS_INCLUDES . 'languages/');

define('DIR_WS_CATALOG_LANGUAGES', DIR_WS_CATALOG . 'includes/languages/');

define('DIR_FS_CATALOG_LANGUAGES', DIR_FS_CATALOG . 'includes/languages/');

define('DIR_FS_CATALOG_IMAGES', DIR_FS_CATALOG . 'images/');

define('DIR_FS_CATALOG_MODULES', DIR_FS_CATALOG . 'includes/modules/');

define('DIR_FS_BACKUP', DIR_FS_ADMIN . 'backups/');

 

// define our database connection

Link to comment
Share on other sites

  • Replies 1.1k
  • Created
  • Last Reply

Top Posters In This Topic

You need to post the configure.php from the catalog end. (not the admin).

OOPS

<?php
/*

 osCommerce, Open Source E-Commerce Solutions
 [url="http://www.oscommerce.com"]http://www.oscommerce.com[/url]

 Copyright © 2003 osCommerce

 Released under the GNU General Public License
*/

// Define the webserver and path parameters
// * DIR_FS_* = Filesystem directories (local/physical)
// * DIR_WS_* = Webserver directories (virtual/URL)
 define('HTTP_SERVER', 'http://www.fantasyfestival.com'); // eg, [url="http://localhost"]http://localhost[/url] - should not be empty for productive servers
 define('HTTPS_SERVER', 'https://www.fantasyfestival.com'); // eg, [url="https://localhost"]https://localhost[/url] - should not be empty for productive servers
 define('ENABLE_SSL', true); // secure webserver for checkout procedure?
 define('HTTP_COOKIE_DOMAIN', 'www.fantasyfestival.com');
 define('HTTPS_COOKIE_DOMAIN', 'www.fantasyfestival.com');
 define('HTTP_COOKIE_PATH', '/ffcmc/');
 define('HTTPS_COOKIE_PATH', '/ffcmc/');
 define('DIR_WS_HTTP_CATALOG', '/catalog/');
 define('DIR_WS_HTTPS_CATALOG', '/catalog/');
 define('DIR_WS_IMAGES', 'images/');
 define('DIR_WS_ICONS', DIR_WS_IMAGES . 'icons/');
 define('DIR_WS_INCLUDES', 'includes/');
 define('DIR_WS_BOXES', DIR_WS_INCLUDES . 'boxes/');
 define('DIR_WS_FUNCTIONS', DIR_WS_INCLUDES . 'functions/');
 define('DIR_WS_CLASSES', DIR_WS_INCLUDES . 'classes/');
 define('DIR_WS_MODULES', DIR_WS_INCLUDES . 'modules/');
 define('DIR_WS_LANGUAGES', DIR_WS_INCLUDES . 'languages/');

 define('DIR_WS_DOWNLOAD_PUBLIC', 'pub/');
 define('DIR_FS_CATALOG', '/home/cust1/user1397644/html/catalog/');
 define('DIR_FS_DOWNLOAD', DIR_FS_CATALOG . 'download/');
 define('DIR_FS_DOWNLOAD_PUBLIC', DIR_FS_CATALOG . 'pub/');

// define our database connection

Link to comment
Share on other sites

yea ok, you should take care of the cookie paths, what's the point of the ffcmc? It does not exist as far I can tell why you're trying to use that path for cookies? You should use /catalog/ where your osc root is.

Link to comment
Share on other sites

yea ok, you should take care of the cookie paths, what's the point of the ffcmc? It does not exist as far I can tell why you're trying to use that path for cookies? You should use /catalog/ where your osc root is.

 

I thought that the cookie directory was on the client, changed it to /catalog/ and the log in works just fine. Did the change in #306 and still no search. Even excluded the advanced search and results and still nothing. I'm looking elsewhere justincase I messed something else up too.

Thanx for all of the help and the contribution, really thank you.

C :thumbsup:

Link to comment
Share on other sites

I thought that the cookie directory was on the client, changed it to /catalog/ and the log in works just fine. Did the change in #306 and still no search. Even excluded the advanced search and results and still nothing. I'm looking elsewhere justincase I messed something else up too.

Thanx for all of the help and the contribution, really thank you.

C :thumbsup:

ok, so if you switch off seo-g the advanced search works? I will be surprized if it does I tried different methods here and I cannot replicate this problem.

 

PS: the #306 post is applicable to shared servers where the secure path is different than the non-secure one. Your store seems to run with a dedicated ssl so it makes no difference really but of course there is no much point offering seo for secure pages.

Edited by enigma1
Link to comment
Share on other sites

Recently, I have been looking into the database queries from my site. I noticed that a large amount of queries come from each page because of the SEO Url generation from tep_href_link. As my urls are already processed they are selected from the database each time. This has increased my parse times to 0.5 seconds on my all products page with 50 products.. up from 0.1. These timings are from a store with page cache disabled.

 

It made me think, wouldn't it make more sense to cache processed URLs so they can be accessed quicker. I quickly got aquainted with chemos advanced cache class and used it to make a compressed array cache of all the processed urls with original urls as array keys, which was loaded on each page. I then modified the seo url class to retrieve these urls from the array instead of the database. I was able to much improve parse time, just slightly over the original timings.

 

This is my very primitive poorly implemented proof of concept code, which should give you some idea of what I was trying to achieve:

 

Application top just under

// include the language translations
 require(DIR_WS_LANGUAGES . $language . '.php');

 

  // check to see if it's seo urls cached 
$cache->is_cached('seo_urls', $is_cached, $is_expired); // Notice that $is_cached and $is_expired is passed by reference! 

 if ( !$is_cached || $is_expired ){ // must not be cached or is expired 

$cache_array = array();
$url_check_query = tep_db_query("select seo_url_get, seo_url_org from " . TABLE_SEO_URL);
while ($url_check_result = tep_db_fetch_array($url_check_query)) {
  $cache_array[$url_check_result['seo_url_org']] = $url_check_result['seo_url_get'];
}

 //save the cache data 
 $cache->save_cache('seo_urls', $cache_array, 'ARRAY', 1, 0, '1/months'); 
 } 

 $url_check = $cache->get_cache('seo_urls','ARRAY');

 

Handles basic cache creation and loads the array on every page.

 

SEO URL Class

	function get_seo_url($url, &$separator, $store=true) {
global $url_check;

 

	  // Check if the url is recorded, if so skip processing
  /*$check_query = tep_db_query("select seo_url_get from " . TABLE_SEO_URL . " where seo_url_org = '" . tep_db_input(tep_db_prepare_input($url)) . "'");
  if( $seo_array = tep_db_fetch_array($check_query) ) {
	$separator = '?';
	return $seo_array['seo_url_get'];
  }*/

  if ($url_check[$url] !== NULL) {
	$seperator = '?';
	return $url_check[$url];
  }

  return false;

 

I have commented out the original db checking, and then quickly got the url from the array, I then returned false after so I was sure the urls were from the array.

 

Let me know if you have any suggestions.

 

Scott.

Edited by AoM_Scott

no outside links please

Link to comment
Share on other sites

Recently, I have been looking into the database queries from my site. I noticed that a large amount of queries come from each page because of the SEO Url generation from tep_href_link. As my urls are already processed they are selected from the database each time. This has increased my parse times to 0.5 seconds on my all products page with 50 products.. up from 0.1. These timings are from a store with page cache disabled.

 

It made me think, wouldn't it make more sense to cache processed URLs so they can be accessed quicker. I quickly got aquainted with chemos advanced cache class and used it to make a compressed array cache of all the processed urls with original urls as array keys, which was loaded on each page. I then modified the seo url class to retrieve these urls from the array instead of the database. I was able to much improve parse time, just slightly over the original timings.

 

This is my very primitive poorly implemented proof of concept code, which should give you some idea of what I was trying to achieve:

 

Hi Scott, it is excellent thanks, but it assumes you have Bobby's sql cache installed. I have it installed with my stores and utilize it of course and I do recommend it in the documentation along with the 304 html cache. (item-12 in the readme of v1.15).

 

But if I include it the code with the contribution there will be a problem for people who do not use it. However I will make a reference to your post so if they will have this option.

 

And I am sure the seo-g url processing can be further optimized. I need to make it as stable as possible first and add more classes for the information pages and links manager that are quite popular and useful for seo. If you see, the seo-g tables for names they're not optimized. The seo_types_id column is not useful there. Originally I was planning to use one table for all names and added the type but then I had difficulties to make all tables compatible (using the same format) and changed course.

Link to comment
Share on other sites

ok, so if you switch off seo-g the advanced search works? I will be surprized if it does I tried different methods here and I cannot replicate this problem.

 

PS: the #306 post is applicable to shared servers where the secure path is different than the non-secure one. Your store seems to run with a dedicated ssl so it makes no difference really but of course there is no much point offering seo for secure pages.

 

 

Well then be surprised, it works just fine when I turn SEO-G off.

If you'd like, e-mail me ( livewire at fantasyfestival dot com) and I'll give you access to anything you'd like to look at. I'll bang my head against it from this side too.

Link to comment
Share on other sites

Well then be surprised, it works just fine when I turn SEO-G off.

If you'd like, e-mail me ( livewire at fantasyfestival dot com) and I'll give you access to anything you'd like to look at. I'll bang my head against it from this side too.

 

I fixed the search, but I am not sure exactly how. But I think it was when I copied the seo-g .htaccess stuff from the root to the catalog.

Link to comment
Share on other sites

I fixed the search, but I am not sure exactly how. But I think it was when I copied the seo-g .htaccess stuff from the root to the catalog.

 

Allright, I am going to make a note with the next version, basically after installing SEO-G one of the important things to test will be the forms. The advanced/quick search passes the parameters via the GET array. The other forms like the login/create_account etc can also be affected if the configure.php or SEO-G settings are incorrect.

Edited by enigma1
Link to comment
Share on other sites

Allright, I am going to make a note with the next version, basically after installing SEO-G one of the important things to test will be the forms. The advanced/quick search passes the parameters via the GET array. The other forms like the login/create_account etc can also be affected if the configure.php or SEO-G settings are incorrect.

I've installed SEO G 1.15 and everything is working great. The only problem is that when my product links are clicked, the user is taken to the regular OSC url. If I manually enter the SEO G url, it works, but the user isn't automatically taken to it. I have ensured that all my links go through the tep_href_link function and that I've followed all the installation steps. Any help is very appreciated. Here is a link with some test products I've entered.

Link to comment
Share on other sites

I have ensured that all my links go through the tep_href_link function and that I've followed all the installation steps

 

Seems like you're having some code that encodes the urls. Whatever that code is, should take place after the SEO-G processes the urls. (Not before).

 

to test it, try in the catalog\includes\classes\seo_url.php before this code:

 

$url = trim($url, '&');

 

add

$url = str_replace('&', '&', $url);

 

If that works then you need to find where your code does the initial encoding and remove it. Because I've no idea what side effects it will cause, encoding urls before the seo-g processes them.

 

If it doesn't work check the pages, if they have separate code that process the urls. When you add items to the cart the urls seem ok. But it could be the earlier issue with the encoding. That may be triggered when 2 or more arguments are present with the url.

Link to comment
Share on other sites

Seems like you're having some code that encodes the urls. Whatever that code is, should take place after the SEO-G processes the urls. (Not before).

 

to test it, try in the catalog\includes\classes\seo_url.php before this code:

 

$url = trim($url, '&');

 

add

$url = str_replace('&', '&', $url);

 

If that works then you need to find where your code does the initial encoding and remove it. Because I've no idea what side effects it will cause, encoding urls before the seo-g processes them.

 

If it doesn't work check the pages, if they have separate code that process the urls. When you add items to the cart the urls seem ok. But it could be the earlier issue with the encoding. That may be triggered when 2 or more arguments are present with the url.

Wow, now it works perfectly! You said I needed to find the initial encoding and remove it, so how do I do that? Thanks so much for your help already.

Link to comment
Share on other sites

Wow, now it works perfectly! You said I needed to find the initial encoding and remove it, so how do I do that? Thanks so much for your help already.

I don't know because your store is custom. Doesn't happen with the stock osc. So you need to debug it.

 

The code I posted isn't a solution since there is processing of parameters/strings that remain encoded and that may lead to invalid links stored. The URL needs to be passed un-encoded, not only for SEO-G but even for the stock oscommerce when it processes it via the tep_href_link function. So someone did that change in your store and you need to find it and remove it.

Link to comment
Share on other sites

404 PROBLEMS AND GENERAL .HTACCESS PROBLEM POSSIBLE SOLUTION

 

you may cry noob but I feel this may help others. I spent six hours dicking around with code till i realised the problem.

You have to edit the .htaccess so it points at the right directory on the site, so i did this and nothing worked, my index worked but everything else was 404'ing etc. I eventually tracked down the problem .... DO NOT USE DREAMWEAVER to edit the file when you save it up the encoding or something gets screwed, i tested the theory out on a site exactly same code on both applications screens (Dreamweaver and TextEdit), however the textedit version worked perfectly. It might just work for you if you are at the end of your tether.

 

If you have already messed the htaccess file in dreamweaver start again with the one provided in the download but dont let dreamweaver touch it.

My mac wouldnt register the file in the finder window so you have to open dreamweaver but then right click and "open with" (or the pc equiv) when you save in the the textedit program save as a .txt then upload then change the name to .htaccess. This frustrated the hell out of me as it wasnt a strictly tech problem so none of the solutions thus far worked for me, maybe that will help you to!!

 

oh simon, i want to hug u!

 

i hv been haemorhaging over the the same prob for the past !@^$ 4 days. like u, i m on mac + dreamweaver. yr soln SOLVED the prob, and my site is finally (gawd~~how weary) on its googlely way!

 

but, for me, i used the cpanel file manager to browse to my .htaccess, and use the file editor.

Link to comment
Share on other sites

I don't know because your store is custom. Doesn't happen with the stock osc. So you need to debug it.

 

The code I posted isn't a solution since there is processing of parameters/strings that remain encoded and that may lead to invalid links stored. The URL needs to be passed un-encoded, not only for SEO-G but even for the stock oscommerce when it processes it via the tep_href_link function. So someone did that change in your store and you need to find it and remove it.

I'm sure I changed it at some point without realizing what it would cause, but I can't find where. Could you possibly give me a hint as to where to look? It's not in html_output.php. Thanks so much.

Link to comment
Share on other sites

I'm sure I changed it at some point without realizing what it would cause, but I can't find where. Could you possibly give me a hint as to where to look? It's not in html_output.php. Thanks so much.

I don't know either, as I mentioned your store is custom. Goto your product listing file (don't know if it's still a module or something else like a root file) and track the parameters passed to the tep_href_link function from there.

Link to comment
Share on other sites

oh simon, i want to hug u!

 

i hv been haemorhaging over the the same prob for the past !@^$ 4 days. like u, i m on mac + dreamweaver. yr soln SOLVED the prob, and my site is finally (gawd~~how weary) on its googlely way!

 

but, for me, i used the cpanel file manager to browse to my .htaccess, and use the file editor.

 

You should use a regular editor to edit the code files. Each tool has its uses so do not abuse it. The older version of the file manager some ppl used it to edit files had problems with the line-feeds and carriage returns.

 

A working approach would be to download the file to your local system (back it up), then edit it using a regular editor, and finally re-upload it to the server.

Link to comment
Share on other sites

I am looking in the SEO-G report and I see entry's like this:

 

http://domain.com/product_info.php?cPath=7...roducts_id=1276

 

translating to this:

 

http://domain.com/name-of-product/cpath-76_77.html

 

 

Looks like the category does not get translated. Also I put in the G-Type:

 

Linkage for manufacturers = 3, Sort Order 1

Linkage for categories = 2, Sort Order 2

Linkage for products = 1, Sort Order 3

 

What am I doing wrong? Is it better to translate to http://domain.com/category/product.html or just http://domain.com/product.html

Link to comment
Share on other sites

I am looking in the SEO-G report and I see entry's like this:

 

http://domain.com/product_info.php?cPath=7...roducts_id=1276

 

translating to this:

 

http://domain.com/name-of-product/cpath-76_77.html

Looks like the category does not get translated. Also I put in the G-Type:

 

Linkage for manufacturers = 3, Sort Order 1

Linkage for categories = 2, Sort Order 2

Linkage for products = 1, Sort Order 3

 

What am I doing wrong? Is it better to translate to http://domain.com/category/product.html or just http://domain.com/product.html

 

Well make sure you did the configuration steps as the readme states for the g-controller. And use v1.15 that includes the auto-builder. Also make sure link-parameters passed to the tep_href_link function are not encoded. Failure to do this will create problems with the links generation in general not only with SEO-G.

 

And according to these settings you posted for the linkage the url will be:

domain.com/product.html

 

If you're on a local server you could install it with a stock osc and see how the links show.

Edited by enigma1
Link to comment
Share on other sites

Well make sure you did the configuration steps as the readme states for the g-controller. And use v1.15 that includes the auto-builder. Also make sure link-parameters passed to the tep_href_link function are not encoded. Failure to do this will create problems with the links generation in general not only with SEO-G.

 

And according to these settings you posted for the linkage the url will be:

domain.com/product.html

 

If you're on a local server you could install it with a stock osc and see how the links show.

 

 

 

 

 

 

Hi Mark,

 

Thanks for your efforts.

 

I am a newbie in osCcommerce trying to setup my ebook store, I don’t have php knowledge, my site is live and when istalling the SEO-G 1.5 have the following error :

 

Fatal error: Cannot redeclare class seourl in /home/alkhataa/public_html/includes/classes/seo_url.php on line 19

 

This is the seo_url.php

 

<?php

/*

//----------------------------------------------------------------------------

// Copyright © 2006-2007 Asymmetric Software - Innovation & Excellence

// Author: Mark Samios

// http://www.asymmetrics.com

// SEO-G URL class

// Processes SEO tables and urls, generates seo links

//----------------------------------------------------------------------------

// Script is intended to be used with:

// osCommerce, Open Source E-Commerce Solutions

// http://www.oscommerce.com

// Copyright © 2003 osCommerce

//----------------------------------------------------------------------------

// Released under the GNU General Public License

//----------------------------------------------------------------------------

*/

 

class seoURL {

var $path, $query, $params_array, $error_level;

function seoURL() {

$this->path = $this->query = '';

$this->params_array = array();

$this->query_array = array();

$this->error_level = 0;

}

 

function create_safe_string($string, $separator=SEO_DEFAULT_WORDS_SEPARATOR) {

$string = preg_replace('/\s\s+/', ' ', trim($string));

$string = preg_replace("/[^0-9a-z\-_\/]+/i", $separator, strtolower($string));

$string = trim($string, $separator);

$string = str_replace($separator . $separator . $separator, $separator, $string);

return $string;

}

 

function create_safe_name($string, $separator=SEO_DEFAULT_WORDS_SEPARATOR) {

$string = preg_replace('/\s\s+/', ' ', trim($string));

$string = preg_replace("/[^0-9a-z\-_]+/i", $separator, strtolower($string));

$string = trim($string, $separator);

$string = str_replace($separator . $separator . $separator, $separator, $string);

if(SEO_DEFAULT_WORD_LENGTH > 1) {

$words_array = explode($separator, $string);

for($i=0, $j=count($words_array); $i<$j; $i++) {

if(strlen($words_array[$i]) < SEO_DEFAULT_WORD_LENGTH) {

unset($words_array[$i]);

}

 

 

I copied the files and made the changes but I was stuck and lost track starting at step #9 from the following message on the readme file :

 

Also note, you need to port any custom modifications you have in that particular section of the application_top.php (now enclosed with the SEO-G tags) into the catalog\root.php. The included root.php uses part of the stock osC application_top.php file. Markers are placed in the included root.php file to help you compare and place if necessary the equivalent code from application_top.php. If you copy the exact potion of the application_top.php into the root.php make sure the root.php includes the following:

 

 

Can you kindly assist what is the problem.

 

Thanks again

Ahmed

Link to comment
Share on other sites

Hi Mark,

 

Thanks for your efforts.

 

I am a newbie in osCcommerce trying to setup my ebook store, I don’t have php knowledge, my site is live and when istalling the SEO-G 1.5 have the following error :

 

Fatal error: Cannot redeclare class seourl in /home/alkhataa/public_html/includes/classes/seo_url.php on line 19

 

This is the seo_url.php

 

use a difference/merging tool like winmerge

http://winmerge.org/

 

Compare the application_top.php from the contribution archive to the original one you have. Merge these differences and try it. The current error may appear because you did not apply the application_top.php changes.

 

Always keep backups

Link to comment
Share on other sites

use a difference/merging tool like winmerge

http://winmerge.org/

 

Compare the application_top.php from the contribution archive to the original one you have. Merge these differences and try it. The current error may appear because you did not apply the application_top.php changes.

 

Always keep backups

 

 

Mark,

 

Thanks for the note

 

I have checked all the files and done some changes, but ended with an error on the same line (19) but different from the earlier one.

the error message as following :

 

 

Parse error: syntax error, unexpected '{' in /home/alkhataa/public_html/includes/classes/seo_url.php on line 19

 

 

This is what I have on the line 19

 

new seoURL {

 

and that is the whole Parag.

 

new seoURL {

var $path, $query, $params_array, $error_level;

function seoURL() {

$this->path = $this->query = '';

$this->params_array = array();

$this->query_array = array();

$this->error_level = 0;

}

 

 

Any Advise ?

 

Thanks for your support

Best wishes

Ahmed

Edited by alkhataat
Link to comment
Share on other sites

Mark,

 

Thanks for the note

 

I have checked all the files and done some changes, but ended with an error on the same line (19) but different from the earlier one.

the error message as following :

Parse error: syntax error, unexpected '{' in /home/alkhataa/public_html/includes/classes/seo_url.php on line 19

This is what I have on the line 19

 

new seoURL {

 

and that is the whole Parag.

 

new seoURL {

var $path, $query, $params_array, $error_level;

function seoURL() {

$this->path = $this->query = '';

$this->params_array = array();

$this->query_array = array();

$this->error_level = 0;

}

Any Advise ?

 

Thanks for your support

Best wishes

Ahmed

 

The only thing is to re-check the installation and instructions. There is no syntax error with the default seourl.php file so something else is going on.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...