Jump to content
Latest News: (loading..)
bumbarash

[Contribution] iOSC - mobile version of OSC on your iPhone

Recommended Posts

Upgraded to v7 from v5.4, all I can say is nice work! One problem I am having is my product images have vanished in mobile view. I tried changing the new settings in configure.php with no luck. I have TiM image cache installed. in case anyone has any clue any help much appreciated

http://www.isorm.com/mobile/

Share this post


Link to post
Share on other sites

Version 7 is looking so improved, great work. Has anyone figured out how to make it work with SEO URL 5 pro?

 

Hello Nick @@papalevies,

 

Thank you.

You need to add the support for SEO URL 5 which is included here:

Contribution support for iOSC 5.x

http://addons.oscommerce.com/info/8578

 

See also: Add-On Support.doc

 

kind regards

Rainer

Share this post


Link to post
Share on other sites

Upgraded to v7 from v5.4, all I can say is nice work! One problem I am having is my product images have vanished in mobile view. I tried changing the new settings in configure.php with no luck. I have TiM image cache installed. in case anyone has any clue any help much appreciated

http://www.isorm.com/mobile/

 

 

Hello Matthew @@mrossi,

 

 

Thank you.

If your image thumbnail add-on is this one:

[TiM's osC Solutions] - Cached image thumbnails:

http://addons.oscommerce.com/info/6867

 

it should work without any additional modifications.

 

Please post your includes/configure.php (without the database details at the bottom) and I'll check it.

You can send me a private message if you prefer.

 

You can also try to switch Ajax page loading off in Admin : Configuration : Mobile Site

See also Add-On Support.doc Step 11

 

regards

Rainer

Edited by raiwa

Share this post


Link to post
Share on other sites

Minor issue with my mobile shop www.lyonsperformance.com/mobile

The store logo no longer appears at the top of the page. I'm sure this is a minor glitch but if you could direct me on how to fix it I would appreciate it.

Thanks!

osc 2.2rc2


If the only tool you have is a hammer, all your problems look like nails

Share this post


Link to post
Share on other sites

Also, just a suggestion, but a cheatsheet on how and where to change colors, fonts and text alignment would be nice.


If the only tool you have is a hammer, all your problems look like nails

Share this post


Link to post
Share on other sites

Minor issue with my mobile shop www.lyonsperformance.com/mobile

The store logo no longer appears at the top of the page. I'm sure this is a minor glitch but if you could direct me on how to fix it I would appreciate it.

Thanks!

osc 2.2rc2

 

 

Looks like there is something wrong with the header tags installation

it also looks like you have the old header_title.php from version 6

 

please post your

mobile/includes/header.php

mobile/includes/header_with_htseo.php

mobile/includes/header_with_products_htseo.php

 

For the colors etc:

The mobile_stylesheet is commented, ok it can be improved

There are some instructions inluded in the install doc step 3

Edited by raiwa

Share this post


Link to post
Share on other sites

mobile/includes/header.php

<!DOCTYPE html>
<head>
<?php
/*** Begin Header Tags SEO ***/
if ( file_exists(DIR_WS_INCLUDES . 'header_tags.php') ) {
 require(DIR_WS_INCLUDES . 'header_tags.php');
} else {
?>
<meta charset="<?php echo ((CHARSET == 'utf-8')? CHARSET : MOBILE_CHARSET); ?>" />
<?php
if (HEADER_TAGS_DISPLAY_PAGE_TOP_TITLE == 'true') {
echo '<title>' . $header_tags_array['title'] . '</title>';
} else {
echo '<title>' . $headerTitleText = $breadcrumb->_trail[sizeof($breadcrumb->_trail) - 1]['title'] . '</title>';
}
}
/*** End Header Tags SEO ***/
?>
<meta name="viewport"
content="width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
<meta name="HandheldFriendly" content="True">
<meta name="MobileOptimized" content="" />
<meta name="apple-mobile-web-app-capable"
	 content="yes" />
<meta name="apple-mobile-web-app-status-bar-style"
	 content="default" />
<?php
if (strpos($PHP_SELF,'checkout') || strpos($PHP_SELF,'shopping_cart') || strpos($PHP_SELF,'account') || strpos($PHP_SELF,'log') ) {
?>
<meta name="googlebot"
  content="noindex, nofollow">
<meta name="robots"
  content="noindex, nofollow">
<?php
}
?>
<base href="<?php echo (($request_type == 'SSL') ? HTTPS_MOBILE_SERVER . DIR_WS_HTTPS_MOBILE : HTTP_MOBILE_SERVER . DIR_WS_HTTP_MOBILE); ?>" />
<style type="text/css" media="screen">
@[member='import'] "<?php echo (($request_type == 'SSL') ? HTTPS_MOBILE_SERVER . DIR_WS_HTTPS_MOBILE : HTTP_MOBILE_SERVER . DIR_WS_HTTP_MOBILE) . DIR_MOBILE_INCLUDES; ?>mobile_stylesheet.css?<?php echo time()?>";
</style>
<!--Include JQM-->
<link rel="stylesheet" href="ext/css/theme-<?php echo CSS;?>-min.css?time=<?php echo time()?>" />
<link rel="stylesheet" href="ext/jquery/mobile/jquery.mobile.structure-1.3.2.min.css" />
<link rel="stylesheet" href="ext/css/custom-bar.css" />
<script src="ext/jquery/jquery-1.10.2.min.js"></script>
<link rel="stylesheet" type="text/css" href="ext/jquery/fancybox/jquery.fancybox-2.1.5.css">
<script type="text/javascript" src="ext/jquery/fancybox/jquery.fancybox.pack-2.1.5.js"></script>
<?php
/* Desactivate Ajax for the checkout and catalog_mb pages !*/
if (AJAX_ENABLED != 'true' || substr(basename($PHP_SELF), 0, 8) == 'checkout' || substr(basename($PHP_SELF), 0, 10) == 'catalog_mb' || substr(basename($PHP_SELF), 0, 7) == 'account' || substr(basename($PHP_SELF), 0, 12) == 'address_book' || substr(basename($PHP_SELF), 0, 5) == 'login')
echo '<script type="text/javascript">
$(document).bind("mobileinit", function () {
   $.mobile.ajaxEnabled = false;
});
</script>';
?>
<script src="ext/jquery/mobile/jquery.mobile-1.3.2.min.js"></script>
<script src="ext/js/jquery.validate.js"></script>
</head>
<body>
<!-- header //-->
<div data-role="page" class="ui-page" data-dom-cache="false">
<div id="errorMsg">
<?php
if ($messageStack->size('header') > 0) {
echo $messageStack->output('header');
}
?>
</div>
<!-- error msg -->
<?php
echo '<div data-role="header" class="nav-glyphish-example" data-tap-toggle="false" data-hide-during-focus="">
<div id="headerLogo"><a href="' . tep_mobile_link(FILENAME_DEFAULT) . '">' . tep_image(DIR_WS_HTTP_MOBILE . DIR_MOBILE_IMAGES . 'homepage_02.jpg', STORE_NAME, 0,30) . '</a></div>
   <div data-role="navbar" class="nav-glyphish-example" data-grid="d" data-hide-during-focus="">
   <ul>
    <li>'.tep_button_jquery( TEXT_HOME, tep_mobile_link(FILENAME_DEFAULT), 'a' , '' , 'id="homes" data-icon="custom"' ).'</li>
<li>'.tep_button_jquery( TEXT_SHOP, tep_mobile_link(FILENAME_CATALOG_MB), 'a' , '' , 'id="boutique" data-icon="custom"' ).'</li>
    <li>'.tep_button_jquery( TEXT_ACCOUNT, tep_mobile_link(FILENAME_ACCOUNT, '', 'SSL'), 'a' , '' , 'id="compte" data-icon="custom"' ).'</li>
<li>'.tep_button_jquery( IMAGE_BUTTON_SEARCH, tep_mobile_link(FILENAME_SEARCH), 'a' , '' , 'id="search" data-icon="custom"' ).'</li>
<li>'.tep_button_jquery( TEXT_ABOUT, tep_mobile_link(FILENAME_ABOUT), 'a' , '' , 'id="about" data-icon="custom"' ).'</li>
   </ul>
   </div>
</div>';
?>
<div id="header">
<?php
   if(sizeof($breadcrumb->_trail) > 0)
 $headerTitleText = $breadcrumb->_trail[sizeof($breadcrumb->_trail) - 1]['title'];
   if (isset($HTTP_GET_VARS['error_message']) && tep_not_null($HTTP_GET_VARS['error_message']))
echo htmlspecialchars(stripslashes(urldecode($HTTP_GET_VARS['error_message'])));
?>
</div>

 

mobile/includes/header_with_htseo.php

<?php if(isset($HTTP_GET_VARS['ajax']) == false) { ?>
<!DOCTYPE html>
<head>
<?php
/*** Begin Header Tags SEO ***/
if ( file_exists(DIR_WS_INCLUDES . 'header_tags.php') ) {
 require(DIR_WS_INCLUDES . 'header_tags.php');
} else {
?>
<meta charset="<?php echo ((CHARSET == 'utf-8')? CHARSET : MOBILE_CHARSET); ?>" />
<?php
if (HEADER_TAGS_DISPLAY_PAGE_TOP_TITLE == 'true') {
echo '<title>' . $header_tags_array['title'] . '</title>';
} else {
echo '<title>' . $headerTitleText = $breadcrumb->_trail[sizeof($breadcrumb->_trail) - 1]['title'] . '</title>';
}
}
/*** End Header Tags SEO ***/
?>
<meta name="viewport"
content="width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
<meta name="apple-mobile-web-app-capable"
  content="yes" />
<meta name="apple-mobile-web-app-status-bar-style"
	 content="default" />
<?php
if (strpos($PHP_SELF,'checkout') || strpos($PHP_SELF,'shopping_cart') || strpos($PHP_SELF,'account') || strpos($PHP_SELF,'log') ) {
?>
<meta name="googlebot"
  content="noindex, nofollow">
<meta name="robots"
  content="noindex, nofollow">
<?php
}
?>
<base href="<?php echo (($request_type == 'SSL') ? HTTPS_MOBILE_SERVER . DIR_WS_HTTPS_MOBILE : HTTP_MOBILE_SERVER . DIR_WS_HTTP_MOBILE); ?>" />
<style type="text/css" media="screen">
@[member='import'] "<?php echo (($request_type == 'SSL') ? HTTPS_MOBILE_SERVER . DIR_WS_HTTPS_MOBILE : HTTP_MOBILE_SERVER . DIR_WS_HTTP_MOBILE) . DIR_MOBILE_INCLUDES; ?>mobile_stylesheet.css?<?php echo time()?>";
</style>
<!--Include JQM-->
<link rel="stylesheet" href="ext/css/theme-<?php echo CSS;?>-min.css?time=<?php echo time()?>" />
<link rel="stylesheet" href="ext/jquery/mobile/jquery.mobile.structure-1.3.2.min.css" />
<link rel="stylesheet" href="ext/css/custom-bar.css" />
<script src="ext/jquery/jquery-1.10.2.min.js"></script>
<link rel="stylesheet" type="text/css" href="ext/jquery/fancybox/jquery.fancybox-2.1.5.css">
<script type="text/javascript" src="ext/jquery/fancybox/jquery.fancybox.pack-2.1.5.js"></script>
<?php
/* Desactivate Ajax for the checkout and catalog_mb pages !*/
if (AJAX_ENABLED != 'true' || substr(basename($PHP_SELF), 0, 8) == 'checkout' || substr(basename($PHP_SELF), 0, 10) == 'catalog_mb' || substr(basename($PHP_SELF), 0, 7) == 'account' || substr(basename($PHP_SELF), 0, 12) == 'address_book')
echo '<script type="text/javascript">
$(document).bind("mobileinit", function () {
   $.mobile.ajaxEnabled = false;
});
</script>';
?>
<script src="ext/jquery/mobile/jquery.mobile-1.3.2.min.js"></script>
<script src="ext/js/jquery.validate.js"></script>
</head>
<body>
<!-- header //-->
<div data-role="page" class="ui-page" data-dom-cache="false">
<div id="errorMsg">
<?php
if ($messageStack->size('header') > 0) {
echo $messageStack->output('header');
}
?>
</div>
<!-- error msg -->
<?php
echo '<div data-role="header" class="nav-glyphish-example" data-tap-toggle="false" data-hide-during-focus="">
<div id="headerLogo"><a href="' . tep_mobile_link(FILENAME_DEFAULT) . '">' . tep_image(DIR_WS_HTTP_MOBILE . DIR_MOBILE_IMAGES . 'homepage_02.jpg', STORE_NAME, 0,30) . '</a></div>
   <div data-role="navbar" class="nav-glyphish-example" data-grid="d" data-hide-during-focus="">
   <ul>
    <li>'.tep_button_jquery( TEXT_HOME, tep_mobile_link(FILENAME_DEFAULT), 'a' , '' , 'id="homes" data-icon="custom"' ).'</li>
<li>'.tep_button_jquery( TEXT_SHOP, tep_mobile_link(FILENAME_CATALOG_MB), 'a' , '' , 'id="boutique" data-icon="custom"' ).'</li>
    <li>'.tep_button_jquery( TEXT_ACCOUNT, tep_mobile_link(FILENAME_ACCOUNT, '', 'SSL'), 'a' , '' , 'id="compte" data-icon="custom"' ).'</li>
<li>'.tep_button_jquery( IMAGE_BUTTON_SEARCH, tep_mobile_link(FILENAME_SEARCH), 'a' , '' , 'id="search" data-icon="custom"' ).'</li>
<li>'.tep_button_jquery( TEXT_ABOUT, tep_mobile_link(FILENAME_ABOUT), 'a' , '' , 'id="about" data-icon="custom"' ).'</li>
   </ul>
   </div>
</div>';
?>
<div id="header">
<?php
   if(sizeof($breadcrumb->_trail) > 0)
 $headerTitleText = $breadcrumb->_trail[sizeof($breadcrumb->_trail) - 1]['title'];
   if (isset($HTTP_GET_VARS['error_message']) && tep_not_null($HTTP_GET_VARS['error_message']))
echo htmlspecialchars(stripslashes(urldecode($HTTP_GET_VARS['error_message'])));
?>
</div>

 

mobile/includes/header_with_products_htseo.php

<!DOCTYPE html>
<head>
<?php
/*** Begin Header Tags SEO ***/
if ( file_exists(DIR_WS_INCLUDES . 'header_tags.php') ) {
 require(DIR_WS_INCLUDES . 'header_tags.php');
} else {
?>
<meta charset="<?php echo ((CHARSET == 'utf-8')? CHARSET : MOBILE_CHARSET); ?>" />
<?php
if (HEADER_TAGS_DISPLAY_PAGE_TOP_TITLE == 'true') {
echo '<title>' . $header_tags_array['title'] . '</title>';
} else {
echo '<title>' . $headerTitleText = $breadcrumb->_trail[sizeof($breadcrumb->_trail) - 1]['title'] . '</title>';
}
}
/*** End Header Tags SEO ***/
?>
<meta name="viewport"
content="width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
<meta name="HandheldFriendly" content="True">
<meta name="MobileOptimized" content="" />
<meta name="apple-mobile-web-app-capable"
  content="yes" />
<meta name="apple-mobile-web-app-status-bar-style"
	 content="default" />
<base href="<?php echo (($request_type == 'SSL') ? HTTPS_MOBILE_SERVER . DIR_WS_HTTPS_MOBILE : HTTP_MOBILE_SERVER . DIR_WS_HTTP_MOBILE); ?>" />
<style type="text/css" media="screen">
@[member='import'] "<?php echo (($request_type == 'SSL') ? HTTPS_MOBILE_SERVER . DIR_WS_HTTPS_MOBILE : HTTP_MOBILE_SERVER . DIR_WS_HTTP_MOBILE) . DIR_MOBILE_INCLUDES; ?>mobile_stylesheet.css?<?php echo time()?>";
</style>
<!--Include JQM-->
<link rel="stylesheet" href="ext/css/theme-<?php echo CSS;?>-min.css?time=<?php echo time()?>" />
<link rel="stylesheet" href="ext/jquery/mobile/jquery.mobile.structure-1.3.2.min.css" />
<link rel="stylesheet" href="ext/css/custom-bar.css" />
<script src="ext/jquery/jquery-1.10.2.min.js"></script>
<link rel="stylesheet" type="text/css" href="ext/jquery/fancybox/jquery.fancybox-2.1.5.css">
<script type="text/javascript" src="ext/jquery/fancybox/jquery.fancybox.pack-2.1.5.js"></script>
<?php
/* Desactivate Ajax for the checkout and catalog_mb pages !*/
if (AJAX_ENABLED != 'true' || substr(basename($PHP_SELF), 0, 8) == 'checkout' || substr(basename($PHP_SELF), 0, 10) == 'catalog_mb' || substr(basename($PHP_SELF), 0, 7) == 'account' || substr(basename($PHP_SELF), 0, 12) == 'address_book')
echo '<script type="text/javascript">
$(document).bind("mobileinit", function () {
   $.mobile.ajaxEnabled = false;
});
</script>';
?>
<script src="ext/jquery/mobile/jquery.mobile-1.3.2.min.js"></script>
<script src="ext/js/jquery.validate.js"></script>
</head>
<body>
<!-- header //-->
<div data-role="page" class="ui-page" data-dom-cache="false">
<div id="errorMsg">
<?php
if ($messageStack->size('header') > 0) {
echo $messageStack->output('header');
}
?>
</div>
<!-- error msg -->
<?php
echo '<div data-role="header" class="nav-glyphish-example" data-tap-toggle="false" data-hide-during-focus="">
<div id="headerLogo"><a href="' . tep_mobile_link(FILENAME_DEFAULT) . '">' . tep_image(DIR_WS_HTTP_MOBILE . DIR_MOBILE_IMAGES . 'homepage_02.jpg', STORE_NAME, 0,30) . '</a></div>
   <div data-role="navbar" class="nav-glyphish-example" data-grid="d" data-hide-during-focus="">
   <ul>
    <li>'.tep_button_jquery( TEXT_HOME, tep_mobile_link(FILENAME_DEFAULT), 'a' , '' , 'id="homes" data-icon="custom"' ).'</li>
<li>'.tep_button_jquery( TEXT_SHOP, tep_mobile_link(FILENAME_CATALOG_MB), 'a' , '' , 'id="boutique" data-icon="custom"' ).'</li>
    <li>'.tep_button_jquery( TEXT_ACCOUNT, tep_mobile_link(FILENAME_ACCOUNT, '', 'SSL'), 'a' , '' , 'id="compte" data-icon="custom"' ).'</li>
<li>'.tep_button_jquery( IMAGE_BUTTON_SEARCH, tep_mobile_link(FILENAME_SEARCH), 'a' , '' , 'id="search" data-icon="custom"' ).'</li>
<li>'.tep_button_jquery( TEXT_ABOUT, tep_mobile_link(FILENAME_ABOUT), 'a' , '' , 'id="about" data-icon="custom"' ).'</li>
   </ul>
   </div>
</div>';
?>
<div id="header">
<?php
   if(sizeof($breadcrumb->_trail) > 0)
 $headerTitleText = $breadcrumb->_trail[sizeof($breadcrumb->_trail) - 1]['title'];
   if (isset($HTTP_GET_VARS['error_message']) && tep_not_null($HTTP_GET_VARS['error_message']))
echo htmlspecialchars(stripslashes(urldecode($HTTP_GET_VARS['error_message'])));
?>
</div>


If the only tool you have is a hammer, all your problems look like nails

Share this post


Link to post
Share on other sites

mobile/includes/header.php

<!DOCTYPE html>
<head>
<?php
/*** Begin Header Tags SEO ***/
if ( file_exists(DIR_WS_INCLUDES . 'header_tags.php') ) {
require(DIR_WS_INCLUDES . 'header_tags.php');
} else {
?>
<meta charset="<?php echo ((CHARSET == 'utf-8')? CHARSET : MOBILE_CHARSET); ?>" />
<?php
if (HEADER_TAGS_DISPLAY_PAGE_TOP_TITLE == 'true') {
echo '<title>' . $header_tags_array['title'] . '</title>';
} else {
echo '<title>' . $headerTitleText = $breadcrumb->_trail[sizeof($breadcrumb->_trail) - 1]['title'] . '</title>';
}
}
/*** End Header Tags SEO ***/
?>
<meta name="viewport"
content="width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
<meta name="HandheldFriendly" content="True">
<meta name="MobileOptimized" content="" />
<meta name="apple-mobile-web-app-capable"
	 content="yes" />
<meta name="apple-mobile-web-app-status-bar-style"
	 content="default" />
<?php
if (strpos($PHP_SELF,'checkout') || strpos($PHP_SELF,'shopping_cart') || strpos($PHP_SELF,'account') || strpos($PHP_SELF,'log') ) {
?>
<meta name="googlebot"
content="noindex, nofollow">
<meta name="robots"
content="noindex, nofollow">
<?php
}
?>
<base href="<?php echo (($request_type == 'SSL') ? HTTPS_MOBILE_SERVER . DIR_WS_HTTPS_MOBILE : HTTP_MOBILE_SERVER . DIR_WS_HTTP_MOBILE); ?>" />
<style type="text/css" media="screen">
@[member='import'] "<?php echo (($request_type == 'SSL') ? HTTPS_MOBILE_SERVER . DIR_WS_HTTPS_MOBILE : HTTP_MOBILE_SERVER . DIR_WS_HTTP_MOBILE) . DIR_MOBILE_INCLUDES; ?>mobile_stylesheet.css?<?php echo time()?>";
</style>
<!--Include JQM-->
<link rel="stylesheet" href="ext/css/theme-<?php echo CSS;?>-min.css?time=<?php echo time()?>" />
<link rel="stylesheet" href="ext/jquery/mobile/jquery.mobile.structure-1.3.2.min.css" />
<link rel="stylesheet" href="ext/css/custom-bar.css" />
<script src="ext/jquery/jquery-1.10.2.min.js"></script>
<link rel="stylesheet" type="text/css" href="ext/jquery/fancybox/jquery.fancybox-2.1.5.css">
<script type="text/javascript" src="ext/jquery/fancybox/jquery.fancybox.pack-2.1.5.js"></script>
<?php
/* Desactivate Ajax for the checkout and catalog_mb pages !*/
if (AJAX_ENABLED != 'true' || substr(basename($PHP_SELF), 0, 8) == 'checkout' || substr(basename($PHP_SELF), 0, 10) == 'catalog_mb' || substr(basename($PHP_SELF), 0, 7) == 'account' || substr(basename($PHP_SELF), 0, 12) == 'address_book' || substr(basename($PHP_SELF), 0, 5) == 'login')
echo '<script type="text/javascript">
$(document).bind("mobileinit", function () {
$.mobile.ajaxEnabled = false;
});
</script>';
?>
<script src="ext/jquery/mobile/jquery.mobile-1.3.2.min.js"></script>
<script src="ext/js/jquery.validate.js"></script>
</head>
<body>
<!-- header //-->
<div data-role="page" class="ui-page" data-dom-cache="false">
<div id="errorMsg">
<?php
if ($messageStack->size('header') > 0) {
echo $messageStack->output('header');
}
?>
</div>
<!-- error msg -->
<?php
echo '<div data-role="header" class="nav-glyphish-example" data-tap-toggle="false" data-hide-during-focus="">
<div id="headerLogo"><a href="' . tep_mobile_link(FILENAME_DEFAULT) . '">' . tep_image(DIR_WS_HTTP_MOBILE . DIR_MOBILE_IMAGES . 'homepage_02.jpg', STORE_NAME, 0,30) . '</a></div>
<div data-role="navbar" class="nav-glyphish-example" data-grid="d" data-hide-during-focus="">
<ul>
 <li>'.tep_button_jquery( TEXT_HOME, tep_mobile_link(FILENAME_DEFAULT), 'a' , '' , 'id="homes" data-icon="custom"' ).'</li>
<li>'.tep_button_jquery( TEXT_SHOP, tep_mobile_link(FILENAME_CATALOG_MB), 'a' , '' , 'id="boutique" data-icon="custom"' ).'</li>
 <li>'.tep_button_jquery( TEXT_ACCOUNT, tep_mobile_link(FILENAME_ACCOUNT, '', 'SSL'), 'a' , '' , 'id="compte" data-icon="custom"' ).'</li>
<li>'.tep_button_jquery( IMAGE_BUTTON_SEARCH, tep_mobile_link(FILENAME_SEARCH), 'a' , '' , 'id="search" data-icon="custom"' ).'</li>
<li>'.tep_button_jquery( TEXT_ABOUT, tep_mobile_link(FILENAME_ABOUT), 'a' , '' , 'id="about" data-icon="custom"' ).'</li>
</ul>
</div>
</div>';
?>
<div id="header">
<?php
if(sizeof($breadcrumb->_trail) > 0)
$headerTitleText = $breadcrumb->_trail[sizeof($breadcrumb->_trail) - 1]['title'];
if (isset($HTTP_GET_VARS['error_message']) && tep_not_null($HTTP_GET_VARS['error_message']))
echo htmlspecialchars(stripslashes(urldecode($HTTP_GET_VARS['error_message'])));
?>
</div>

 

mobile/includes/header_with_htseo.php

<?php if(isset($HTTP_GET_VARS['ajax']) == false) { ?>
<!DOCTYPE html>
<head>
<?php
/*** Begin Header Tags SEO ***/
if ( file_exists(DIR_WS_INCLUDES . 'header_tags.php') ) {
require(DIR_WS_INCLUDES . 'header_tags.php');
} else {
?>
<meta charset="<?php echo ((CHARSET == 'utf-8')? CHARSET : MOBILE_CHARSET); ?>" />
<?php
if (HEADER_TAGS_DISPLAY_PAGE_TOP_TITLE == 'true') {
echo '<title>' . $header_tags_array['title'] . '</title>';
} else {
echo '<title>' . $headerTitleText = $breadcrumb->_trail[sizeof($breadcrumb->_trail) - 1]['title'] . '</title>';
}
}
/*** End Header Tags SEO ***/
?>
<meta name="viewport"
content="width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
<meta name="apple-mobile-web-app-capable"
 content="yes" />
<meta name="apple-mobile-web-app-status-bar-style"
	 content="default" />
<?php
if (strpos($PHP_SELF,'checkout') || strpos($PHP_SELF,'shopping_cart') || strpos($PHP_SELF,'account') || strpos($PHP_SELF,'log') ) {
?>
<meta name="googlebot"
content="noindex, nofollow">
<meta name="robots"
content="noindex, nofollow">
<?php
}
?>
<base href="<?php echo (($request_type == 'SSL') ? HTTPS_MOBILE_SERVER . DIR_WS_HTTPS_MOBILE : HTTP_MOBILE_SERVER . DIR_WS_HTTP_MOBILE); ?>" />
<style type="text/css" media="screen">
@[member='import'] "<?php echo (($request_type == 'SSL') ? HTTPS_MOBILE_SERVER . DIR_WS_HTTPS_MOBILE : HTTP_MOBILE_SERVER . DIR_WS_HTTP_MOBILE) . DIR_MOBILE_INCLUDES; ?>mobile_stylesheet.css?<?php echo time()?>";
</style>
<!--Include JQM-->
<link rel="stylesheet" href="ext/css/theme-<?php echo CSS;?>-min.css?time=<?php echo time()?>" />
<link rel="stylesheet" href="ext/jquery/mobile/jquery.mobile.structure-1.3.2.min.css" />
<link rel="stylesheet" href="ext/css/custom-bar.css" />
<script src="ext/jquery/jquery-1.10.2.min.js"></script>
<link rel="stylesheet" type="text/css" href="ext/jquery/fancybox/jquery.fancybox-2.1.5.css">
<script type="text/javascript" src="ext/jquery/fancybox/jquery.fancybox.pack-2.1.5.js"></script>
<?php
/* Desactivate Ajax for the checkout and catalog_mb pages !*/
if (AJAX_ENABLED != 'true' || substr(basename($PHP_SELF), 0, 8) == 'checkout' || substr(basename($PHP_SELF), 0, 10) == 'catalog_mb' || substr(basename($PHP_SELF), 0, 7) == 'account' || substr(basename($PHP_SELF), 0, 12) == 'address_book')
echo '<script type="text/javascript">
$(document).bind("mobileinit", function () {
$.mobile.ajaxEnabled = false;
});
</script>';
?>
<script src="ext/jquery/mobile/jquery.mobile-1.3.2.min.js"></script>
<script src="ext/js/jquery.validate.js"></script>
</head>
<body>
<!-- header //-->
<div data-role="page" class="ui-page" data-dom-cache="false">
<div id="errorMsg">
<?php
if ($messageStack->size('header') > 0) {
echo $messageStack->output('header');
}
?>
</div>
<!-- error msg -->
<?php
echo '<div data-role="header" class="nav-glyphish-example" data-tap-toggle="false" data-hide-during-focus="">
<div id="headerLogo"><a href="' . tep_mobile_link(FILENAME_DEFAULT) . '">' . tep_image(DIR_WS_HTTP_MOBILE . DIR_MOBILE_IMAGES . 'homepage_02.jpg', STORE_NAME, 0,30) . '</a></div>
<div data-role="navbar" class="nav-glyphish-example" data-grid="d" data-hide-during-focus="">
<ul>
 <li>'.tep_button_jquery( TEXT_HOME, tep_mobile_link(FILENAME_DEFAULT), 'a' , '' , 'id="homes" data-icon="custom"' ).'</li>
<li>'.tep_button_jquery( TEXT_SHOP, tep_mobile_link(FILENAME_CATALOG_MB), 'a' , '' , 'id="boutique" data-icon="custom"' ).'</li>
 <li>'.tep_button_jquery( TEXT_ACCOUNT, tep_mobile_link(FILENAME_ACCOUNT, '', 'SSL'), 'a' , '' , 'id="compte" data-icon="custom"' ).'</li>
<li>'.tep_button_jquery( IMAGE_BUTTON_SEARCH, tep_mobile_link(FILENAME_SEARCH), 'a' , '' , 'id="search" data-icon="custom"' ).'</li>
<li>'.tep_button_jquery( TEXT_ABOUT, tep_mobile_link(FILENAME_ABOUT), 'a' , '' , 'id="about" data-icon="custom"' ).'</li>
</ul>
</div>
</div>';
?>
<div id="header">
<?php
if(sizeof($breadcrumb->_trail) > 0)
$headerTitleText = $breadcrumb->_trail[sizeof($breadcrumb->_trail) - 1]['title'];
if (isset($HTTP_GET_VARS['error_message']) && tep_not_null($HTTP_GET_VARS['error_message']))
echo htmlspecialchars(stripslashes(urldecode($HTTP_GET_VARS['error_message'])));
?>
</div>

 

mobile/includes/header_with_products_htseo.php

<!DOCTYPE html>
<head>
<?php
/*** Begin Header Tags SEO ***/
if ( file_exists(DIR_WS_INCLUDES . 'header_tags.php') ) {
require(DIR_WS_INCLUDES . 'header_tags.php');
} else {
?>
<meta charset="<?php echo ((CHARSET == 'utf-8')? CHARSET : MOBILE_CHARSET); ?>" />
<?php
if (HEADER_TAGS_DISPLAY_PAGE_TOP_TITLE == 'true') {
echo '<title>' . $header_tags_array['title'] . '</title>';
} else {
echo '<title>' . $headerTitleText = $breadcrumb->_trail[sizeof($breadcrumb->_trail) - 1]['title'] . '</title>';
}
}
/*** End Header Tags SEO ***/
?>
<meta name="viewport"
content="width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
<meta name="HandheldFriendly" content="True">
<meta name="MobileOptimized" content="" />
<meta name="apple-mobile-web-app-capable"
 content="yes" />
<meta name="apple-mobile-web-app-status-bar-style"
	 content="default" />
<base href="<?php echo (($request_type == 'SSL') ? HTTPS_MOBILE_SERVER . DIR_WS_HTTPS_MOBILE : HTTP_MOBILE_SERVER . DIR_WS_HTTP_MOBILE); ?>" />
<style type="text/css" media="screen">
@[member='import'] "<?php echo (($request_type == 'SSL') ? HTTPS_MOBILE_SERVER . DIR_WS_HTTPS_MOBILE : HTTP_MOBILE_SERVER . DIR_WS_HTTP_MOBILE) . DIR_MOBILE_INCLUDES; ?>mobile_stylesheet.css?<?php echo time()?>";
</style>
<!--Include JQM-->
<link rel="stylesheet" href="ext/css/theme-<?php echo CSS;?>-min.css?time=<?php echo time()?>" />
<link rel="stylesheet" href="ext/jquery/mobile/jquery.mobile.structure-1.3.2.min.css" />
<link rel="stylesheet" href="ext/css/custom-bar.css" />
<script src="ext/jquery/jquery-1.10.2.min.js"></script>
<link rel="stylesheet" type="text/css" href="ext/jquery/fancybox/jquery.fancybox-2.1.5.css">
<script type="text/javascript" src="ext/jquery/fancybox/jquery.fancybox.pack-2.1.5.js"></script>
<?php
/* Desactivate Ajax for the checkout and catalog_mb pages !*/
if (AJAX_ENABLED != 'true' || substr(basename($PHP_SELF), 0, 8) == 'checkout' || substr(basename($PHP_SELF), 0, 10) == 'catalog_mb' || substr(basename($PHP_SELF), 0, 7) == 'account' || substr(basename($PHP_SELF), 0, 12) == 'address_book')
echo '<script type="text/javascript">
$(document).bind("mobileinit", function () {
$.mobile.ajaxEnabled = false;
});
</script>';
?>
<script src="ext/jquery/mobile/jquery.mobile-1.3.2.min.js"></script>
<script src="ext/js/jquery.validate.js"></script>
</head>
<body>
<!-- header //-->
<div data-role="page" class="ui-page" data-dom-cache="false">
<div id="errorMsg">
<?php
if ($messageStack->size('header') > 0) {
echo $messageStack->output('header');
}
?>
</div>
<!-- error msg -->
<?php
echo '<div data-role="header" class="nav-glyphish-example" data-tap-toggle="false" data-hide-during-focus="">
<div id="headerLogo"><a href="' . tep_mobile_link(FILENAME_DEFAULT) . '">' . tep_image(DIR_WS_HTTP_MOBILE . DIR_MOBILE_IMAGES . 'homepage_02.jpg', STORE_NAME, 0,30) . '</a></div>
<div data-role="navbar" class="nav-glyphish-example" data-grid="d" data-hide-during-focus="">
<ul>
 <li>'.tep_button_jquery( TEXT_HOME, tep_mobile_link(FILENAME_DEFAULT), 'a' , '' , 'id="homes" data-icon="custom"' ).'</li>
<li>'.tep_button_jquery( TEXT_SHOP, tep_mobile_link(FILENAME_CATALOG_MB), 'a' , '' , 'id="boutique" data-icon="custom"' ).'</li>
 <li>'.tep_button_jquery( TEXT_ACCOUNT, tep_mobile_link(FILENAME_ACCOUNT, '', 'SSL'), 'a' , '' , 'id="compte" data-icon="custom"' ).'</li>
<li>'.tep_button_jquery( IMAGE_BUTTON_SEARCH, tep_mobile_link(FILENAME_SEARCH), 'a' , '' , 'id="search" data-icon="custom"' ).'</li>
<li>'.tep_button_jquery( TEXT_ABOUT, tep_mobile_link(FILENAME_ABOUT), 'a' , '' , 'id="about" data-icon="custom"' ).'</li>
</ul>
</div>
</div>';
?>
<div id="header">
<?php
if(sizeof($breadcrumb->_trail) > 0)
$headerTitleText = $breadcrumb->_trail[sizeof($breadcrumb->_trail) - 1]['title'];
if (isset($HTTP_GET_VARS['error_message']) && tep_not_null($HTTP_GET_VARS['error_message']))
echo htmlspecialchars(stripslashes(urldecode($HTTP_GET_VARS['error_message'])));
?>
</div>

 

THis looks all correct.

What you could try is to change this line:

 

<div id="headerLogo"><a href="' . tep_mobile_link(FILENAME_DEFAULT) . '">' . tep_image(DIR_WS_HTTP_MOBILE . DIR_MOBILE_IMAGES . 'homepage_02.jpg', STORE_NAME, 0,30) . '</a></div>

 

to this:

 

<div id="headerLogo"><a href="' . tep_mobile_link(FILENAME_DEFAULT) . '">' . tep_image(DIR_MOBILE_IMAGES . 'homepage_02.jpg', STORE_NAME, 0,30) . '</a></div>

 

make also sure your logo is in the right place:

mobile/images/

 

another thing is, I insist, it looks like your mobile/includes/classes/header_title.php is the old one from version 6. If it is like this, check your other files too.

Then when you say "The store logo no longer appears at the top of the page." does this mean that it was there before? What did you change when it disappeared.

Or did it disappear when you changed the generic logo to your logo?

Share this post


Link to post
Share on other sites

I added the mobile/includes/classes/header_title.php from the latest version 7.1.0 which was loacted in the common file folder. It is dated 9/12/13.

 

I have my logo loaded in the mobile/images folder.

The logo used to appear before I upgraded to version 7. After that, there is no logo showing.


If the only tool you have is a hammer, all your problems look like nails

Share this post


Link to post
Share on other sites

I added the mobile/includes/classes/header_title.php from the latest version 7.1.0 which was loacted in the common file folder. It is dated 9/12/13.

 

I have my logo loaded in the mobile/images folder.

The logo used to appear before I upgraded to version 7. After that, there is no logo showing.

 

When I visit your store, I suppose it is this:

 

http://www.lyonsperformance.com

 

I can see at the upper left the text "CLASSIC View" in the header_titel, which is version 6, version 7 shows "options" there.

 

For the logo:

did you try the modification I explained?

The line where the logo is defined is identical in version 6 and 7 except the modification to remove "DIR_WS_HTTP_MOBILE"

 

You can just open your old header.php file from version 6 and copy the line with the logo to the new header.php

Share this post


Link to post
Share on other sites

I just changed the code as suggested in all the header files and it works. Thank you!

As for the classic tag, I went through each file of the new version 7.1.0 and did a compare. I made the required changes where necessary. Maybe some of the 2.2 files didn't get updated?


If the only tool you have is a hammer, all your problems look like nails

Share this post


Link to post
Share on other sites

I just changed the code as suggested in all the header files and it works. Thank you!

As for the classic tag, I went through each file of the new version 7.1.0 and did a compare. I made the required changes where necessary. Maybe some of the 2.2 files didn't get updated?

 

I checked again and the file of the package is correct. Just try again to replace it, it is mobile/includes/classes/header_title.php

You can also check the update doc "Update_osc_2_2_MOsC_7.0.0..doc" step 48

Share this post


Link to post
Share on other sites

Here is what I replaced mobile/includes/classes/header_title.php with:

<?php

 class headerTitle {

   function headerTitle() {
   }

   function write($title = '') {
 global $cart, $classic_site, $language, $currencies; 
 $this->title =  (strlen($title) > 0)? $title : HEADING_TITLE;
  if (substr(basename($_SERVER['REQUEST_URI']), 0, 8) != 'checkout') {
   if (!isset($lng) || (isset($lng) && !is_object($lng))) {
 include_once(DIR_WS_CLASSES . 'language.php');
 $lng = new language;
   }
   reset($lng->catalog_languages);
   if ( ((count($lng->catalog_languages) > 1) || (count($currencies->currencies) > 1) || MOBILE_THEME_ENABLE == 'True') && ((preg_match('/options/', basename($_SERVER['REQUEST_URI'])) != true) && (preg_match('/checkout/', basename($_SERVER['REQUEST_URI'])) != true)) ) {
 $leftButton = tep_button_jquery( TEXT_OPTIONS, tep_mobile_link(FILENAME_OPTIONS), 'a' , 'button' , 'data-icon="gear" data-mini="true" ' );
   } else {
 $leftButton = '<a style="visibility:hidden;" href="options.php">' . TEXT_OPTIONS . '</a>';
   }

   if(sizeof($cart->contents) > 0) {
 $rightButton = '<a id="shopping_cart" data-role="button" data-icon="custom" href="' . tep_mobile_link(FILENAME_SHOPPING_CART) . '">' . TEXT_SHOPPING_CART . '</a>';
   }
  }
  echo '<div data-role="header" data-add-back-btn="true" data-theme="a" data-tap-toggle="false">'
    . $leftButton . '<h1>' . $this->title . '</h1>' . $rightButton .
    '</div>';
   }
 }
?>

And it now shows the options tab.

I believe the file in the latest version is the old code.


If the only tool you have is a hammer, all your problems look like nails

Share this post


Link to post
Share on other sites

Here is what I replaced mobile/includes/classes/header_title.php with:

<?php

class headerTitle {

function headerTitle() {
}

function write($title = '') {
 global $cart, $classic_site, $language, $currencies;
 $this->title = (strlen($title) > 0)? $title : HEADING_TITLE;
if (substr(basename($_SERVER['REQUEST_URI']), 0, 8) != 'checkout') {
if (!isset($lng) || (isset($lng) && !is_object($lng))) {
 include_once(DIR_WS_CLASSES . 'language.php');
 $lng = new language;
}
reset($lng->catalog_languages);
if ( ((count($lng->catalog_languages) > 1) || (count($currencies->currencies) > 1) || MOBILE_THEME_ENABLE == 'True') && ((preg_match('/options/', basename($_SERVER['REQUEST_URI'])) != true) && (preg_match('/checkout/', basename($_SERVER['REQUEST_URI'])) != true)) ) {
 $leftButton = tep_button_jquery( TEXT_OPTIONS, tep_mobile_link(FILENAME_OPTIONS), 'a' , 'button' , 'data-icon="gear" data-mini="true" ' );
} else {
 $leftButton = '<a style="visibility:hidden;" href="options.php">' . TEXT_OPTIONS . '</a>';
}

if(sizeof($cart->contents) > 0) {
 $rightButton = '<a id="shopping_cart" data-role="button" data-icon="custom" href="' . tep_mobile_link(FILENAME_SHOPPING_CART) . '">' . TEXT_SHOPPING_CART . '</a>';
}
}
echo '<div data-role="header" data-add-back-btn="true" data-theme="a" data-tap-toggle="false">'
 . $leftButton . '<h1>' . $this->title . '</h1>' . $rightButton .
 '</div>';
}
}
?>

And it now shows the options tab.

I believe the file in the latest version is the old code.

 

 

As I told you, I checked and it is the correct file in all version 7 packages. It hasn't been changed through Version 7.0.0. to 7.1.0.

Edited by raiwa

Share this post


Link to post
Share on other sites

BTW, those css files are difficult to modify because they are minified.


If the only tool you have is a hammer, all your problems look like nails

Share this post


Link to post
Share on other sites

I just installed the latest version and when I hover over the links for the mobile version it shows http://rubartsgifts-n-electronics.com/HTTP_MOBILE_SERVERDIR_WS_HTTP_MOBILE and of course this shows an error of page not found. What did I Do Wrong?

 

Please Help!

Hello @@beezer26164,

 

Looks like your includes/configure.php is not configured for mobile.

Please check if you did the installation step 12 of the install doc.

 

If you can't figure out the error please post this file without the database details at the bottom or send me a private message.

 

regards

Rainer

Edited by raiwa

Share this post


Link to post
Share on other sites

<?php

/*

$Id$

 

osCommerce, Open Source E-Commerce Solutions

http://www.oscommerce.com

 

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://rubartsgifts-n-electronics.com'); // eg, http://localhost - should not be empty for productive servers

define('HTTPS_SERVER', ''); // eg, https://localhost - should not be empty for productive servers

define('ENABLE_SSL', false); // secure webserver for checkout procedure?

define('HTTP_COOKIE_DOMAIN', '');

define('HTTPS_COOKIE_DOMAIN', '');

define('HTTP_COOKIE_PATH', '');

define('HTTPS_COOKIE_PATH', '');

define('DIR_WS_HTTP_CATALOG', 'home/souther2/public_html/');

define('DIR_WS_HTTPS_CATALOG', '');

//BOF Mobile

define('HTTP_MOBILE_SERVER', HTTP_SERVER);

define('HTTPS_MOBILE_SERVER', HTTPS_SERVER);

define('DIR_WS_HTTP_MOBILE', DIR_WS_HTTP_CATALOG . 'mobile/');

define('DIR_WS_HTTPS_MOBILE', DIR_WS_HTTPS_CATALOG . 'mobile/');

(defined('MOBILE_SESSION') ? define('DIR_WS_IMAGES', HTTP_SERVER . DIR_WS_HTTP_CATALOG . 'images/') : define('DIR_WS_IMAGES', 'images/'));

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

(defined('MOBILE_SESSION') ? define('DIR_WS_INCLUDES', '../includes/') : define('DIR_WS_INCLUDES', 'includes/'));

//EOF Mobile

 

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/');

 

//BOF Mobile

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

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

define('DIR_MOBILE_MODULES', DIR_MOBILE_INCLUDES . 'modules/');

define('DIR_MOBILE_CLASSES', DIR_MOBILE_INCLUDES . 'classes/');

define('DIR_MOBILE_HEADERS', DIR_MOBILE_INCLUDES . 'headers/');

define('DIR_MOBILE_LANGUAGES', DIR_MOBILE_INCLUDES . 'languages/');

//EOF Mobile

 

//BOF Mobile

(defined('MOBILE_SESSION') ? define('DIR_WS_DOWNLOAD_PUBLIC', HTTP_SERVER . DIR_WS_HTTP_CATALOG . 'pub/') : define('DIR_WS_DOWNLOAD_PUBLIC', 'pub/'));

//EOF Mobile;

define('DIR_FS_CATALOG', dirname($HTTP_SERVER_VARS['SCRIPT_FILENAME']) . '/');

//BOF Mobile

define('DIR_FS_MOBILE', DIR_FS_CATALOG . 'mobile/');

//EOF Mobile

 

define('DIR_FS_DOWNLOAD', DIR_FS_CATALOG . 'download/');

define('DIR_FS_DOWNLOAD_PUBLIC', DIR_FS_CATALOG . 'pub/');

 

// define our database connection

define('DB_SERVER', ''); // eg, localhost - should not be empty for productive servers

define('DB_SERVER_USERNAME', '');

define('DB_SERVER_PASSWORD', '');

define('DB_DATABASE', 'osCommerce');

define('USE_PCONNECT', 'false'); // use persistent connections?

define('STORE_SESSIONS', ''); // leave empty '' for default handler or set to 'mysql'

?>

Share this post


Link to post
Share on other sites

<?php

/*

$Id$

 

osCommerce, Open Source E-Commerce Solutions

http://www.oscommerce.com

 

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://rubartsgifts-n-electronics.com'); // eg, http://localhost - should not be empty for productive servers

define('HTTPS_SERVER', ''); // eg, https://localhost - should not be empty for productive servers

define('ENABLE_SSL', false); // secure webserver for checkout procedure?

define('HTTP_COOKIE_DOMAIN', '');

define('HTTPS_COOKIE_DOMAIN', '');

define('HTTP_COOKIE_PATH', '');

define('HTTPS_COOKIE_PATH', '');

define('DIR_WS_HTTP_CATALOG', 'home/souther2/public_html/');

define('DIR_WS_HTTPS_CATALOG', '');

//BOF Mobile

define('HTTP_MOBILE_SERVER', HTTP_SERVER);

define('HTTPS_MOBILE_SERVER', HTTPS_SERVER);

define('DIR_WS_HTTP_MOBILE', DIR_WS_HTTP_CATALOG . 'mobile/');

define('DIR_WS_HTTPS_MOBILE', DIR_WS_HTTPS_CATALOG . 'mobile/');

(defined('MOBILE_SESSION') ? define('DIR_WS_IMAGES', HTTP_SERVER . DIR_WS_HTTP_CATALOG . 'images/') : define('DIR_WS_IMAGES', 'images/'));

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

(defined('MOBILE_SESSION') ? define('DIR_WS_INCLUDES', '../includes/') : define('DIR_WS_INCLUDES', 'includes/'));

//EOF Mobile

 

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/');

 

//BOF Mobile

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

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

define('DIR_MOBILE_MODULES', DIR_MOBILE_INCLUDES . 'modules/');

define('DIR_MOBILE_CLASSES', DIR_MOBILE_INCLUDES . 'classes/');

define('DIR_MOBILE_HEADERS', DIR_MOBILE_INCLUDES . 'headers/');

define('DIR_MOBILE_LANGUAGES', DIR_MOBILE_INCLUDES . 'languages/');

//EOF Mobile

 

//BOF Mobile

(defined('MOBILE_SESSION') ? define('DIR_WS_DOWNLOAD_PUBLIC', HTTP_SERVER . DIR_WS_HTTP_CATALOG . 'pub/') : define('DIR_WS_DOWNLOAD_PUBLIC', 'pub/'));

//EOF Mobile;

define('DIR_FS_CATALOG', dirname($HTTP_SERVER_VARS['SCRIPT_FILENAME']) . '/');

//BOF Mobile

define('DIR_FS_MOBILE', DIR_FS_CATALOG . 'mobile/');

//EOF Mobile

 

define('DIR_FS_DOWNLOAD', DIR_FS_CATALOG . 'download/');

define('DIR_FS_DOWNLOAD_PUBLIC', DIR_FS_CATALOG . 'pub/');

 

// define our database connection

define('DB_SERVER', ''); // eg, localhost - should not be empty for productive servers

define('DB_SERVER_USERNAME', '');

define('DB_SERVER_PASSWORD', '');

define('DB_DATABASE', 'osCommerce');

define('USE_PCONNECT', 'false'); // use persistent connections?

define('STORE_SESSIONS', ''); // leave empty '' for default handler or set to 'mysql'

?>

 

 

Hello@@beezer26164,

 

This line looks very strange, sure that this is correct?:

define('DIR_WS_HTTP_CATALOG', 'home/souther2/public_html/');

 

if you need this there, then you should change the folowing:

 

define('DIR_WS_HTTP_MOBILE', DIR_WS_HTTP_CATALOG . 'mobile/');
define('DIR_WS_HTTPS_MOBILE', DIR_WS_HTTPS_CATALOG . 'mobile/');

 

to:

 

define('DIR_WS_HTTP_MOBILE', 'mobile/');
define('DIR_WS_HTTPS_MOBILE', 'mobile/');

 

supposing that the mobile files are in: mobile/

 

Please check also the changes in includes/functions/general.php and html_output.php and application_top.php

 

regards

Rainer

Edited by raiwa

Share this post


Link to post
Share on other sites

Hello,

 

I can't find anything wrong with the files...I've included them for you to take a look. As for 'home/souther2/public_html/' I didn't need it for my regular store...I added it hoping it would make the mobile version work.

 

Thanks,

Bill

 

html_output:

 

<?php

/*

$Id$

 

osCommerce, Open Source E-Commerce Solutions

http://www.oscommerce.com

 

Copyright © 2010 osCommerce

 

Released under the GNU General Public License

*/

 

////

// The HTML href link wrapper function

function tep_href_link($page = '', $parameters = '', $connection = 'NONSSL', $add_session_id = true, $search_engine_safe = true) {

global $request_type, $session_started, $SID;

 

$page = tep_output_string($page);

 

if (!tep_not_null($page)) {

die('</td></tr></table></td></tr></table><br /><br /><font color="#ff0000"><strong>Error!</strong></font><br /><br /><strong>Unable to determine the page link!<br /><br />');

}

 

defined('MOBILE_SESSION') ? $mobile_directory = HTTP_MOBILE_SERVER . DIR_WS_HTTP_MOBILE : $mobile_directory = HTTP_SERVER . DIR_WS_HTTP_CATALOG;

defined('MOBILE_SESSION') ? $mobile_secure_directory = HTTPS_MOBILE_SERVER . DIR_WS_HTTPS_MOBILE : $mobile_secure_directory = HTTPS_SERVER . DIR_WS_HTTPS_CATALOG;

if ($connection == 'NONSSL') {

$link = $mobile_directory;

} elseif ($connection == 'SSL') {

if (ENABLE_SSL == true) {

$link = $mobile_secure_directory;

} else {

$link = $mobile_directory;

}

} else {

die('</td></tr></table></td></tr></table><br /><br /><font color="#ff0000"><strong>Error!</strong></font><br /><br /><strong>Unable to determine connection method on a link!<br /><br />Known methods: NONSSL SSL</strong><br /><br />');

}

 

if (tep_not_null($parameters)) {

$link .= $page . '?' . tep_output_string($parameters);

$separator = '&';

} else {

$link .= $page;

$separator = '?';

}

 

while ( (substr($link, -1) == '&') || (substr($link, -1) == '?') ) $link = substr($link, 0, -1);

 

// Add the session ID when moving from different HTTP and HTTPS servers, or when SID is defined

if ( ($add_session_id == true) && ($session_started == true) && (SESSION_FORCE_COOKIE_USE == 'False') ) {

if (tep_not_null($SID)) {

$_sid = $SID;

} elseif ( ( ($request_type == 'NONSSL') && ($connection == 'SSL') && (ENABLE_SSL == true) ) || ( ($request_type == 'SSL') && ($connection == 'NONSSL') ) ) {

if (HTTP_COOKIE_DOMAIN != HTTPS_COOKIE_DOMAIN) {

$_sid = tep_session_name() . '=' . tep_session_id();

}

}

}

 

if (isset($_sid)) {

$link .= $separator . tep_output_string($_sid);

}

 

while (strstr($link, '&&')) $link = str_replace('&&', '&', $link);

 

if ( (SEARCH_ENGINE_FRIENDLY_URLS == 'true') && ($search_engine_safe == true) ) {

$link = str_replace('?', '/', $link);

$link = str_replace('&', '/', $link);

$link = str_replace('=', '/', $link);

} else {

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

}

 

return $link;

}

 

////

// The HTML image wrapper function

function tep_image($src, $alt = '', $width = '', $height = '', $parameters = '') {

if ( (empty($src) || ($src == DIR_WS_IMAGES)) && (IMAGE_REQUIRED == 'false') ) {

return false;

}

 

// alt is added to the img tag even if it is null to prevent browsers from outputting

// the image filename as default

$image = '<img src="' . tep_output_string($src) . '" alt="' . tep_output_string($alt) . '"';

 

if (tep_not_null($alt)) {

$image .= ' title="' . tep_output_string($alt) . '"';

}

 

if ( (CONFIG_CALCULATE_IMAGE_SIZE == 'true') && (empty($width) || empty($height)) ) {

if ($image_size = @getimagesize($src)) {

if (empty($width) && tep_not_null($height)) {

$ratio = $height / $image_size[1];

$width = intval($image_size[0] * $ratio);

} elseif (tep_not_null($width) && empty($height)) {

$ratio = $width / $image_size[0];

$height = intval($image_size[1] * $ratio);

} elseif (empty($width) && empty($height)) {

$width = $image_size[0];

$height = $image_size[1];

}

} elseif (IMAGE_REQUIRED == 'false') {

return false;

}

}

 

if (tep_not_null($width) && tep_not_null($height)) {

$image .= ' width="' . tep_output_string($width) . '" height="' . tep_output_string($height) . '"';

}

 

if (tep_not_null($parameters)) $image .= ' ' . $parameters;

 

$image .= ' />';

 

return $image;

}

 

////

// The HTML form submit button wrapper function

// Outputs a button in the selected language

function tep_image_submit($image, $alt = '', $parameters = '') {

global $language;

 

$image_submit = '<input type="image" src="' . tep_output_string(DIR_WS_LANGUAGES . $language . '/images/buttons/' . $image) . '" alt="' . tep_output_string($alt) . '"';

 

if (tep_not_null($alt)) $image_submit .= ' title=" ' . tep_output_string($alt) . ' "';

 

if (tep_not_null($parameters)) $image_submit .= ' ' . $parameters;

 

$image_submit .= ' />';

 

return $image_submit;

}

 

////

// Output a function button in the selected language

function tep_image_button($image, $alt = '', $parameters = '') {

global $language;

 

return tep_image(DIR_WS_LANGUAGES . $language . '/images/buttons/' . $image, $alt, '', '', $parameters);

}

 

////

// Output a separator either through whitespace, or with an image

function tep_draw_separator($image = 'pixel_black.gif', $width = '100%', $height = '1') {

return tep_image(DIR_WS_IMAGES . $image, '', $width, $height);

}

 

////

// Output a form

function tep_draw_form($name, $action, $method = 'post', $parameters = '', $tokenize = false) {

global $sessiontoken;

 

$form = '<form name="' . tep_output_string($name) . '" action="' . tep_output_string($action) . '" method="' . tep_output_string($method) . '"';

 

if (tep_not_null($parameters)) $form .= ' ' . $parameters;

 

$form .= '>';

 

if ( ($tokenize == true) && isset($sessiontoken) ) {

$form .= '<input type="hidden" name="formid" value="' . tep_output_string($sessiontoken) . '" />';

}

 

return $form;

}

 

////

// Output a form input field

function tep_draw_input_field($name, $value = '', $parameters = '', $type = 'text', $reinsert_value = true) {

global $HTTP_GET_VARS, $HTTP_POST_VARS;

 

$field = '<input type="' . tep_output_string($type) . '" name="' . tep_output_string($name) . '"';

 

if ( ($reinsert_value == true) && ( (isset($HTTP_GET_VARS[$name]) && is_string($HTTP_GET_VARS[$name])) || (isset($HTTP_POST_VARS[$name]) && is_string($HTTP_POST_VARS[$name])) ) ) {

if (isset($HTTP_GET_VARS[$name]) && is_string($HTTP_GET_VARS[$name])) {

$value = stripslashes($HTTP_GET_VARS[$name]);

} elseif (isset($HTTP_POST_VARS[$name]) && is_string($HTTP_POST_VARS[$name])) {

$value = stripslashes($HTTP_POST_VARS[$name]);

}

}

 

if (tep_not_null($value)) {

$field .= ' value="' . tep_output_string($value) . '"';

}

 

if (tep_not_null($parameters)) $field .= ' ' . $parameters;

 

$field .= ' />';

 

return $field;

}

 

////

// Output a form password field

function tep_draw_password_field($name, $value = '', $parameters = 'maxlength="40"') {

return tep_draw_input_field($name, $value, $parameters, 'password', false);

}

 

////

// Output a selection field - alias function for tep_draw_checkbox_field() and tep_draw_radio_field()

function tep_draw_selection_field($name, $type, $value = '', $checked = false, $parameters = '') {

global $HTTP_GET_VARS, $HTTP_POST_VARS;

 

$selection = '<input type="' . tep_output_string($type) . '" name="' . tep_output_string($name) . '"';

 

if (tep_not_null($value)) $selection .= ' value="' . tep_output_string($value) . '"';

 

if ( ($checked == true) || (isset($HTTP_GET_VARS[$name]) && is_string($HTTP_GET_VARS[$name]) && (($HTTP_GET_VARS[$name] == 'on') || (stripslashes($HTTP_GET_VARS[$name]) == $value))) || (isset($HTTP_POST_VARS[$name]) && is_string($HTTP_POST_VARS[$name]) && (($HTTP_POST_VARS[$name] == 'on') || (stripslashes($HTTP_POST_VARS[$name]) == $value))) ) {

$selection .= ' checked="checked"';

}

 

if (tep_not_null($parameters)) $selection .= ' ' . $parameters;

 

$selection .= ' />';

 

return $selection;

}

 

////

// Output a form checkbox field

function tep_draw_checkbox_field($name, $value = '', $checked = false, $parameters = '') {

return tep_draw_selection_field($name, 'checkbox', $value, $checked, $parameters);

}

 

////

// Output a form radio field

function tep_draw_radio_field($name, $value = '', $checked = false, $parameters = '') {

return tep_draw_selection_field($name, 'radio', $value, $checked, $parameters);

}

 

////

// Output a form textarea field

// The $wrap parameter is no longer used in the core xhtml template

function tep_draw_textarea_field($name, $wrap, $width, $height, $text = '', $parameters = '', $reinsert_value = true) {

global $HTTP_GET_VARS, $HTTP_POST_VARS;

 

$field = '<textarea name="' . tep_output_string($name) . '" cols="' . tep_output_string($width) . '" rows="' . tep_output_string($height) . '"';

 

if (tep_not_null($parameters)) $field .= ' ' . $parameters;

 

$field .= '>';

 

if ( ($reinsert_value == true) && ( (isset($HTTP_GET_VARS[$name]) && is_string($HTTP_GET_VARS[$name])) || (isset($HTTP_POST_VARS[$name]) && is_string($HTTP_POST_VARS[$name])) ) ) {

if (isset($HTTP_GET_VARS[$name]) && is_string($HTTP_GET_VARS[$name])) {

$field .= tep_output_string_protected(stripslashes($HTTP_GET_VARS[$name]));

} elseif (isset($HTTP_POST_VARS[$name]) && is_string($HTTP_POST_VARS[$name])) {

$field .= tep_output_string_protected(stripslashes($HTTP_POST_VARS[$name]));

}

} elseif (tep_not_null($text)) {

$field .= tep_output_string_protected($text);

}

 

$field .= '</textarea>';

 

return $field;

}

 

////

// Output a form hidden field

function tep_draw_hidden_field($name, $value = '', $parameters = '') {

global $HTTP_GET_VARS, $HTTP_POST_VARS;

 

$field = '<input type="hidden" name="' . tep_output_string($name) . '"';

 

if (tep_not_null($value)) {

$field .= ' value="' . tep_output_string($value) . '"';

} elseif ( (isset($HTTP_GET_VARS[$name]) && is_string($HTTP_GET_VARS[$name])) || (isset($HTTP_POST_VARS[$name]) && is_string($HTTP_POST_VARS[$name])) ) {

if ( (isset($HTTP_GET_VARS[$name]) && is_string($HTTP_GET_VARS[$name])) ) {

$field .= ' value="' . tep_output_string(stripslashes($HTTP_GET_VARS[$name])) . '"';

} elseif ( (isset($HTTP_POST_VARS[$name]) && is_string($HTTP_POST_VARS[$name])) ) {

$field .= ' value="' . tep_output_string(stripslashes($HTTP_POST_VARS[$name])) . '"';

}

}

 

if (tep_not_null($parameters)) $field .= ' ' . $parameters;

 

$field .= ' />';

 

return $field;

}

 

////

// Hide form elements

function tep_hide_session_id() {

global $session_started, $SID;

 

if (($session_started == true) && tep_not_null($SID)) {

return tep_draw_hidden_field(tep_session_name(), tep_session_id());

}

}

 

////

// Output a form pull down menu

function tep_draw_pull_down_menu($name, $values, $default = '', $parameters = '', $required = false) {

global $HTTP_GET_VARS, $HTTP_POST_VARS;

 

$field = '<select name="' . tep_output_string($name) . '"';

 

if (tep_not_null($parameters)) $field .= ' ' . $parameters;

 

$field .= '>';

 

if (empty($default) && ( (isset($HTTP_GET_VARS[$name]) && is_string($HTTP_GET_VARS[$name])) || (isset($HTTP_POST_VARS[$name]) && is_string($HTTP_POST_VARS[$name])) ) ) {

if (isset($HTTP_GET_VARS[$name]) && is_string($HTTP_GET_VARS[$name])) {

$default = stripslashes($HTTP_GET_VARS[$name]);

} elseif (isset($HTTP_POST_VARS[$name]) && is_string($HTTP_POST_VARS[$name])) {

$default = stripslashes($HTTP_POST_VARS[$name]);

}

}

 

for ($i=0, $n=sizeof($values); $i<$n; $i++) {

$field .= '<option value="' . tep_output_string($values[$i]['id']) . '"';

if ($default == $values[$i]['id']) {

$field .= ' selected="selected"';

}

 

$field .= '>' . tep_output_string($values[$i]['text'], array('"' => '"', '\'' => ''', '<' => '<', '>' => '>')) . '</option>';

}

$field .= '</select>';

 

if ($required == true) $field .= TEXT_FIELD_REQUIRED;

 

return $field;

}

 

////

// Creates a pull-down list of countries

function tep_get_country_list($name, $selected = '', $parameters = '') {

$countries_array = array(array('id' => '', 'text' => PULL_DOWN_DEFAULT));

$countries = tep_get_countries();

 

for ($i=0, $n=sizeof($countries); $i<$n; $i++) {

$countries_array[] = array('id' => $countries[$i]['countries_id'], 'text' => $countries[$i]['countries_name']);

}

 

return tep_draw_pull_down_menu($name, $countries_array, $selected, $parameters);

}

 

////

// Output a jQuery UI Button

function tep_draw_button($title = null, $icon = null, $link = null, $priority = null, $params = null) {

static $button_counter = 1;

 

$types = array('submit', 'button', 'reset');

 

if ( !isset($params['type']) ) {

$params['type'] = 'submit';

}

 

if ( !in_array($params['type'], $types) ) {

$params['type'] = 'submit';

}

 

if ( ($params['type'] == 'submit') && isset($link) ) {

$params['type'] = 'button';

}

 

if (!isset($priority)) {

$priority = 'secondary';

}

 

$button = '<span class="tdbLink">';

 

if ( ($params['type'] == 'button') && isset($link) ) {

$button .= '<a id="tdb' . $button_counter . '" href="' . $link . '"';

 

if ( isset($params['newwindow']) ) {

$button .= ' target="_blank"';

}

} else {

$button .= '<button id="tdb' . $button_counter . '" type="' . tep_output_string($params['type']) . '"';

}

 

if ( isset($params['params']) ) {

$button .= ' ' . $params['params'];

}

 

$button .= '>' . $title;

 

if ( ($params['type'] == 'button') && isset($link) ) {

$button .= '</a>';

} else {

$button .= '</button>';

}

 

$button .= '</span><script type="text/javascript">$("#tdb' . $button_counter . '").button(';

 

$args = array();

 

if ( isset($icon) ) {

if ( !isset($params['iconpos']) ) {

$params['iconpos'] = 'left';

}

 

if ( $params['iconpos'] == 'left' ) {

$args[] = 'icons:{primary:"ui-icon-' . $icon . '"}';

} else {

$args[] = 'icons:{secondary:"ui-icon-' . $icon . '"}';

}

}

 

if (empty($title)) {

$args[] = 'text:false';

}

 

if (!empty($args)) {

$button .= '{' . implode(',', $args) . '}';

}

 

$button .= ').addClass("ui-priority-' . $priority . '").parent().removeClass("tdbLink");</script>';

 

$button_counter++;

 

return $button;

}

?>

 

general.php:

 

<?php

/*

$Id$

 

osCommerce, Open Source E-Commerce Solutions

http://www.oscommerce.com

 

Copyright © 2012 osCommerce

 

Released under the GNU General Public License

*/

 

////

// Get the installed version number

function tep_get_version() {

static $v;

 

if (!isset($v)) {

$v = trim(implode('', file(DIR_FS_CATALOG . 'includes/version.php')));

}

 

return $v;

}

 

////

// Stop from parsing any further PHP code

function tep_exit() {

tep_session_close();

exit();

}

 

////

// Redirect to another page or site

function tep_redirect($url) {

if ( (strstr($url, "\n") != false) || (strstr($url, "\r") != false) ) {

tep_redirect(defined('MOBILE_SESSION') ? tep_mobile_link(FILENAME_DEFAULT, '', 'NONSSL', false) : tep_href_link(FILENAME_DEFAULT, '', 'NONSSL', false)); }

 

if ( (ENABLE_SSL == true) && (getenv('HTTPS') == 'on') ) { // We are loading an SSL page

if (defined('MOBILE_SESSION')) { // Mobile Side

if (substr($url, 0, strlen(HTTP_MOBILE_SERVER)) == HTTP_MOBILE_SERVER) { // NONSSL url

$url = HTTPS_MOBILE_SERVER . substr($url, strlen(HTTP_MOBILE_SERVER)); // Change it to SSL

}

} else { // Desktop Side

if (substr($url, 0, strlen(HTTP_SERVER)) == HTTP_SERVER) { // NONSSL url

$url = HTTPS_SERVER . substr($url, strlen(HTTP_SERVER)); // Change it to SSL

}

}

}

 

if ( strpos($url, '&') !== false ) {

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

}

 

header('Location: ' . $url);

 

tep_exit();

}

 

////

// Parse the data used in the html tags to ensure the tags will not break

function tep_parse_input_field_data($data, $parse) {

return strtr(trim($data), $parse);

}

 

function tep_output_string($string, $translate = false, $protected = false) {

if ($protected == true) {

return htmlspecialchars($string);

} else {

if ($translate == false) {

return tep_parse_input_field_data($string, array('"' => '"'));

} else {

return tep_parse_input_field_data($string, $translate);

}

}

}

 

function tep_output_string_protected($string) {

return tep_output_string($string, false, true);

}

 

function tep_sanitize_string($string) {

$patterns = array ('/ +/','/[<>]/');

$replace = array (' ', '_');

return preg_replace($patterns, $replace, trim($string));

}

 

////

// Return a random row from a database query

function tep_random_select($query) {

$random_product = '';

$random_query = tep_db_query($query);

$num_rows = tep_db_num_rows($random_query);

if ($num_rows > 0) {

$random_row = tep_rand(0, ($num_rows - 1));

tep_db_data_seek($random_query, $random_row);

$random_product = tep_db_fetch_array($random_query);

}

 

return $random_product;

}

 

////

// Return a product's name

// TABLES: products

function tep_get_products_name($product_id, $language = '') {

global $languages_id;

 

if (empty($language)) $language = $languages_id;

 

$product_query = tep_db_query("select products_name from " . TABLE_PRODUCTS_DESCRIPTION . " where products_id = '" . (int)$product_id . "' and language_id = '" . (int)$language . "'");

$product = tep_db_fetch_array($product_query);

 

return $product['products_name'];

}

 

////

// Return a product's special price (returns nothing if there is no offer)

// TABLES: products

function tep_get_products_special_price($product_id) {

$product_query = tep_db_query("select specials_new_products_price from " . TABLE_SPECIALS . " where products_id = '" . (int)$product_id . "' and status = 1");

$product = tep_db_fetch_array($product_query);

 

return $product['specials_new_products_price'];

}

 

////

// Return a product's stock

// TABLES: products

function tep_get_products_stock($products_id) {

$products_id = tep_get_prid($products_id);

$stock_query = tep_db_query("select products_quantity from " . TABLE_PRODUCTS . " where products_id = '" . (int)$products_id . "'");

$stock_values = tep_db_fetch_array($stock_query);

 

return $stock_values['products_quantity'];

}

 

////

// Check if the required stock is available

// If insufficent stock is available return an out of stock message

function tep_check_stock($products_id, $products_quantity) {

$stock_left = tep_get_products_stock($products_id) - $products_quantity;

$out_of_stock = '';

 

if ($stock_left < 0) {

$out_of_stock = '<span class="markProductOutOfStock">' . STOCK_MARK_PRODUCT_OUT_OF_STOCK . '</span>';

}

 

return $out_of_stock;

}

 

////

// Break a word in a string if it is longer than a specified length ($len)

function tep_break_string($string, $len, $break_char = '-') {

$l = 0;

$output = '';

for ($i=0, $n=strlen($string); $i<$n; $i++) {

$char = substr($string, $i, 1);

if ($char != ' ') {

$l++;

} else {

$l = 0;

}

if ($l > $len) {

$l = 1;

$output .= $break_char;

}

$output .= $char;

}

 

return $output;

}

 

////

// Return all HTTP GET variables, except those passed as a parameter

function tep_get_all_get_params($exclude_array = '') {

global $HTTP_GET_VARS;

 

if (!is_array($exclude_array)) $exclude_array = array();

 

$get_url = '';

if (is_array($HTTP_GET_VARS) && (sizeof($HTTP_GET_VARS) > 0)) {

reset($HTTP_GET_VARS);

while (list($key, $value) = each($HTTP_GET_VARS)) {

if ( is_string($value) && (strlen($value) > 0) && ($key != tep_session_name()) && ($key != 'error') && (!in_array($key, $exclude_array)) && ($key != 'x') && ($key != 'y') ) {

$get_url .= $key . '=' . rawurlencode(stripslashes($value)) . '&';

}

}

}

 

return $get_url;

}

 

////

// Returns an array with countries

// TABLES: countries

function tep_get_countries($countries_id = '', $with_iso_codes = false) {

$countries_array = array();

if (tep_not_null($countries_id)) {

if ($with_iso_codes == true) {

$countries = tep_db_query("select countries_name, countries_iso_code_2, countries_iso_code_3 from " . TABLE_COUNTRIES . " where countries_id = '" . (int)$countries_id . "' order by countries_name");

$countries_values = tep_db_fetch_array($countries);

$countries_array = array('countries_name' => $countries_values['countries_name'],

'countries_iso_code_2' => $countries_values['countries_iso_code_2'],

'countries_iso_code_3' => $countries_values['countries_iso_code_3']);

} else {

$countries = tep_db_query("select countries_name from " . TABLE_COUNTRIES . " where countries_id = '" . (int)$countries_id . "'");

$countries_values = tep_db_fetch_array($countries);

$countries_array = array('countries_name' => $countries_values['countries_name']);

}

} else {

$countries = tep_db_query("select countries_id, countries_name from " . TABLE_COUNTRIES . " order by countries_name");

while ($countries_values = tep_db_fetch_array($countries)) {

$countries_array[] = array('countries_id' => $countries_values['countries_id'],

'countries_name' => $countries_values['countries_name']);

}

}

 

return $countries_array;

}

 

////

// Alias function to tep_get_countries, which also returns the countries iso codes

function tep_get_countries_with_iso_codes($countries_id) {

return tep_get_countries($countries_id, true);

}

 

////

// Generate a path to categories

function tep_get_path($current_category_id = '') {

global $cPath_array;

 

if (tep_not_null($current_category_id)) {

$cp_size = sizeof($cPath_array);

if ($cp_size == 0) {

$cPath_new = $current_category_id;

} else {

$cPath_new = '';

$last_category_query = tep_db_query("select parent_id from " . TABLE_CATEGORIES . " where categories_id = '" . (int)$cPath_array[($cp_size-1)] . "'");

$last_category = tep_db_fetch_array($last_category_query);

 

$current_category_query = tep_db_query("select parent_id from " . TABLE_CATEGORIES . " where categories_id = '" . (int)$current_category_id . "'");

$current_category = tep_db_fetch_array($current_category_query);

 

if ($last_category['parent_id'] == $current_category['parent_id']) {

for ($i=0; $i<($cp_size-1); $i++) {

$cPath_new .= '_' . $cPath_array[$i];

}

} else {

for ($i=0; $i<$cp_size; $i++) {

$cPath_new .= '_' . $cPath_array[$i];

}

}

$cPath_new .= '_' . $current_category_id;

 

if (substr($cPath_new, 0, 1) == '_') {

$cPath_new = substr($cPath_new, 1);

}

}

} else {

$cPath_new = implode('_', $cPath_array);

}

 

return 'cPath=' . $cPath_new;

}

 

////

// Returns the clients browser

function tep_browser_detect($component) {

global $HTTP_USER_AGENT;

 

return stristr($HTTP_USER_AGENT, $component);

}

 

////

// Alias function to tep_get_countries()

function tep_get_country_name($country_id) {

$country_array = tep_get_countries($country_id);

 

return $country_array['countries_name'];

}

 

////

// Returns the zone (State/Province) name

// TABLES: zones

function tep_get_zone_name($country_id, $zone_id, $default_zone) {

$zone_query = tep_db_query("select zone_name from " . TABLE_ZONES . " where zone_country_id = '" . (int)$country_id . "' and zone_id = '" . (int)$zone_id . "'");

if (tep_db_num_rows($zone_query)) {

$zone = tep_db_fetch_array($zone_query);

return $zone['zone_name'];

} else {

return $default_zone;

}

}

 

////

// Returns the zone (State/Province) code

// TABLES: zones

function tep_get_zone_code($country_id, $zone_id, $default_zone) {

$zone_query = tep_db_query("select zone_code from " . TABLE_ZONES . " where zone_country_id = '" . (int)$country_id . "' and zone_id = '" . (int)$zone_id . "'");

if (tep_db_num_rows($zone_query)) {

$zone = tep_db_fetch_array($zone_query);

return $zone['zone_code'];

} else {

return $default_zone;

}

}

 

////

// Wrapper function for round()

function tep_round($number, $precision) {

if (strpos($number, '.') && (strlen(substr($number, strpos($number, '.')+1)) > $precision)) {

$number = substr($number, 0, strpos($number, '.') + 1 + $precision + 1);

 

if (substr($number, -1) >= 5) {

if ($precision > 1) {

$number = substr($number, 0, -1) + ('0.' . str_repeat(0, $precision-1) . '1');

} elseif ($precision == 1) {

$number = substr($number, 0, -1) + 0.1;

} else {

$number = substr($number, 0, -1) + 1;

}

} else {

$number = substr($number, 0, -1);

}

}

 

return $number;

}

 

////

// Returns the tax rate for a zone / class

// TABLES: tax_rates, zones_to_geo_zones

function tep_get_tax_rate($class_id, $country_id = -1, $zone_id = -1) {

global $customer_zone_id, $customer_country_id;

static $tax_rates = array();

 

if ( ($country_id == -1) && ($zone_id == -1) ) {

if (!tep_session_is_registered('customer_id')) {

$country_id = STORE_COUNTRY;

$zone_id = STORE_ZONE;

} else {

$country_id = $customer_country_id;

$zone_id = $customer_zone_id;

}

}

 

if (!isset($tax_rates[$class_id][$country_id][$zone_id]['rate'])) {

$tax_query = tep_db_query("select sum(tax_rate) as tax_rate from " . TABLE_TAX_RATES . " tr left join " . TABLE_ZONES_TO_GEO_ZONES . " za on (tr.tax_zone_id = za.geo_zone_id) left join " . TABLE_GEO_ZONES . " tz on (tz.geo_zone_id = tr.tax_zone_id) where (za.zone_country_id is null or za.zone_country_id = '0' or za.zone_country_id = '" . (int)$country_id . "') and (za.zone_id is null or za.zone_id = '0' or za.zone_id = '" . (int)$zone_id . "') and tr.tax_class_id = '" . (int)$class_id . "' group by tr.tax_priority");

if (tep_db_num_rows($tax_query)) {

$tax_multiplier = 1.0;

while ($tax = tep_db_fetch_array($tax_query)) {

$tax_multiplier *= 1.0 + ($tax['tax_rate'] / 100);

}

 

$tax_rates[$class_id][$country_id][$zone_id]['rate'] = ($tax_multiplier - 1.0) * 100;

} else {

$tax_rates[$class_id][$country_id][$zone_id]['rate'] = 0;

}

}

 

return $tax_rates[$class_id][$country_id][$zone_id]['rate'];

}

 

////

// Return the tax description for a zone / class

// TABLES: tax_rates;

function tep_get_tax_description($class_id, $country_id, $zone_id) {

static $tax_rates = array();

 

if (!isset($tax_rates[$class_id][$country_id][$zone_id]['description'])) {

$tax_query = tep_db_query("select tax_description from " . TABLE_TAX_RATES . " tr left join " . TABLE_ZONES_TO_GEO_ZONES . " za on (tr.tax_zone_id = za.geo_zone_id) left join " . TABLE_GEO_ZONES . " tz on (tz.geo_zone_id = tr.tax_zone_id) where (za.zone_country_id is null or za.zone_country_id = '0' or za.zone_country_id = '" . (int)$country_id . "') and (za.zone_id is null or za.zone_id = '0' or za.zone_id = '" . (int)$zone_id . "') and tr.tax_class_id = '" . (int)$class_id . "' order by tr.tax_priority");

if (tep_db_num_rows($tax_query)) {

$tax_description = '';

while ($tax = tep_db_fetch_array($tax_query)) {

$tax_description .= $tax['tax_description'] . ' + ';

}

$tax_description = substr($tax_description, 0, -3);

 

$tax_rates[$class_id][$country_id][$zone_id]['description'] = $tax_description;

} else {

$tax_rates[$class_id][$country_id][$zone_id]['description'] = TEXT_UNKNOWN_TAX_RATE;

}

}

 

return $tax_rates[$class_id][$country_id][$zone_id]['description'];

}

 

////

// Add tax to a products price

function tep_add_tax($price, $tax) {

if ( (DISPLAY_PRICE_WITH_TAX == 'true') && ($tax > 0) ) {

return $price + tep_calculate_tax($price, $tax);

} else {

return $price;

}

}

 

// Calculates Tax rounding the result

function tep_calculate_tax($price, $tax) {

return $price * $tax / 100;

}

 

////

// Return the number of products in a category

// TABLES: products, products_to_categories, categories

function tep_count_products_in_category($category_id, $include_inactive = false) {

$products_count = 0;

if ($include_inactive == true) {

$products_query = tep_db_query("select count(*) as total from " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_TO_CATEGORIES . " p2c where p.products_id = p2c.products_id and p2c.categories_id = '" . (int)$category_id . "'");

} else {

$products_query = tep_db_query("select count(*) as total from " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_TO_CATEGORIES . " p2c where p.products_id = p2c.products_id and p.products_status = '1' and p2c.categories_id = '" . (int)$category_id . "'");

}

$products = tep_db_fetch_array($products_query);

$products_count += $products['total'];

 

$child_categories_query = tep_db_query("select categories_id from " . TABLE_CATEGORIES . " where parent_id = '" . (int)$category_id . "'");

if (tep_db_num_rows($child_categories_query)) {

while ($child_categories = tep_db_fetch_array($child_categories_query)) {

$products_count += tep_count_products_in_category($child_categories['categories_id'], $include_inactive);

}

}

 

return $products_count;

}

 

////

// Return true if the category has subcategories

// TABLES: categories

function tep_has_category_subcategories($category_id) {

$child_category_query = tep_db_query("select count(*) as count from " . TABLE_CATEGORIES . " where parent_id = '" . (int)$category_id . "'");

$child_category = tep_db_fetch_array($child_category_query);

 

if ($child_category['count'] > 0) {

return true;

} else {

return false;

}

}

 

////

// Returns the address_format_id for the given country

// TABLES: countries;

function tep_get_address_format_id($country_id) {

$address_format_query = tep_db_query("select address_format_id as format_id from " . TABLE_COUNTRIES . " where countries_id = '" . (int)$country_id . "'");

if (tep_db_num_rows($address_format_query)) {

$address_format = tep_db_fetch_array($address_format_query);

return $address_format['format_id'];

} else {

return '1';

}

}

 

////

// Return a formatted address

// TABLES: address_format

function tep_address_format($address_format_id, $address, $html, $boln, $eoln) {

$address_format_query = tep_db_query("select address_format as format from " . TABLE_ADDRESS_FORMAT . " where address_format_id = '" . (int)$address_format_id . "'");

$address_format = tep_db_fetch_array($address_format_query);

 

$company = tep_output_string_protected($address['company']);

if (isset($address['firstname']) && tep_not_null($address['firstname'])) {

$firstname = tep_output_string_protected($address['firstname']);

$lastname = tep_output_string_protected($address['lastname']);

} elseif (isset($address['name']) && tep_not_null($address['name'])) {

$firstname = tep_output_string_protected($address['name']);

$lastname = '';

} else {

$firstname = '';

$lastname = '';

}

$street = tep_output_string_protected($address['street_address']);

$suburb = tep_output_string_protected($address['suburb']);

$city = tep_output_string_protected($address['city']);

$state = tep_output_string_protected($address['state']);

if (isset($address['country_id']) && tep_not_null($address['country_id'])) {

$country = tep_get_country_name($address['country_id']);

 

if (isset($address['zone_id']) && tep_not_null($address['zone_id'])) {

$state = tep_get_zone_code($address['country_id'], $address['zone_id'], $state);

}

} elseif (isset($address['country']) && tep_not_null($address['country'])) {

$country = tep_output_string_protected($address['country']['title']);

} else {

$country = '';

}

$postcode = tep_output_string_protected($address['postcode']);

$zip = $postcode;

 

if ($html) {

// HTML Mode

$HR = '<hr />';

$hr = '<hr />';

if ( ($boln == '') && ($eoln == "\n") ) { // Values not specified, use rational defaults

$CR = '<br />';

$cr = '<br />';

$eoln = $cr;

} else { // Use values supplied

$CR = $eoln . $boln;

$cr = $CR;

}

} else {

// Text Mode

$CR = $eoln;

$cr = $CR;

$HR = '----------------------------------------';

$hr = '----------------------------------------';

}

 

$statecomma = '';

$streets = $street;

if ($suburb != '') $streets = $street . $cr . $suburb;

if ($state != '') $statecomma = $state . ', ';

 

$fmt = $address_format['format'];

eval("\$address = \"$fmt\";");

 

if ( (ACCOUNT_COMPANY == 'true') && (tep_not_null($company)) ) {

$address = $company . $cr . $address;

}

 

return $address;

}

 

////

// Return a formatted address

// TABLES: customers, address_book

function tep_address_label($customers_id, $address_id = 1, $html = false, $boln = '', $eoln = "\n") {

if (is_array($address_id) && !empty($address_id)) {

return tep_address_format($address_id['address_format_id'], $address_id, $html, $boln, $eoln);

}

 

$address_query = tep_db_query("select entry_firstname as firstname, entry_lastname as lastname, entry_company as company, entry_street_address as street_address, entry_suburb as suburb, entry_city as city, entry_postcode as postcode, entry_state as state, entry_zone_id as zone_id, entry_country_id as country_id from " . TABLE_ADDRESS_BOOK . " where customers_id = '" . (int)$customers_id . "' and address_book_id = '" . (int)$address_id . "'");

$address = tep_db_fetch_array($address_query);

 

$format_id = tep_get_address_format_id($address['country_id']);

 

return tep_address_format($format_id, $address, $html, $boln, $eoln);

}

 

function tep_row_number_format($number) {

if ( ($number < 10) && (substr($number, 0, 1) != '0') ) $number = '0' . $number;

 

return $number;

}

 

function tep_get_categories($categories_array = '', $parent_id = '0', $indent = '') {

global $languages_id;

 

if (!is_array($categories_array)) $categories_array = array();

 

$categories_query = tep_db_query("select c.categories_id, cd.categories_name from " . TABLE_CATEGORIES . " c, " . TABLE_CATEGORIES_DESCRIPTION . " cd where parent_id = '" . (int)$parent_id . "' and c.categories_id = cd.categories_id and cd.language_id = '" . (int)$languages_id . "' order by sort_order, cd.categories_name");

while ($categories = tep_db_fetch_array($categories_query)) {

$categories_array[] = array('id' => $categories['categories_id'],

'text' => $indent . $categories['categories_name']);

 

if ($categories['categories_id'] != $parent_id) {

$categories_array = tep_get_categories($categories_array, $categories['categories_id'], $indent . '  ');

}

}

 

return $categories_array;

}

 

function tep_get_manufacturers($manufacturers_array = '') {

if (!is_array($manufacturers_array)) $manufacturers_array = array();

 

$manufacturers_query = tep_db_query("select manufacturers_id, manufacturers_name from " . TABLE_MANUFACTURERS . " order by manufacturers_name");

while ($manufacturers = tep_db_fetch_array($manufacturers_query)) {

$manufacturers_array[] = array('id' => $manufacturers['manufacturers_id'], 'text' => $manufacturers['manufacturers_name']);

}

 

return $manufacturers_array;

}

 

////

// Return all subcategory IDs

// TABLES: categories

function tep_get_subcategories(&$subcategories_array, $parent_id = 0) {

$subcategories_query = tep_db_query("select categories_id from " . TABLE_CATEGORIES . " where parent_id = '" . (int)$parent_id . "'");

while ($subcategories = tep_db_fetch_array($subcategories_query)) {

$subcategories_array[sizeof($subcategories_array)] = $subcategories['categories_id'];

if ($subcategories['categories_id'] != $parent_id) {

tep_get_subcategories($subcategories_array, $subcategories['categories_id']);

}

}

}

 

// Output a raw date string in the selected locale date format

// $raw_date needs to be in this format: YYYY-MM-DD HH:MM:SS

function tep_date_long($raw_date) {

if ( ($raw_date == '0000-00-00 00:00:00') || ($raw_date == '') ) return false;

 

$year = (int)substr($raw_date, 0, 4);

$month = (int)substr($raw_date, 5, 2);

$day = (int)substr($raw_date, 8, 2);

$hour = (int)substr($raw_date, 11, 2);

$minute = (int)substr($raw_date, 14, 2);

$second = (int)substr($raw_date, 17, 2);

 

return strftime(DATE_FORMAT_LONG, mktime($hour,$minute,$second,$month,$day,$year));

}

 

////

// Output a raw date string in the selected locale date format

// $raw_date needs to be in this format: YYYY-MM-DD HH:MM:SS

// NOTE: Includes a workaround for dates before 01/01/1970 that fail on windows servers

function tep_date_short($raw_date) {

if ( ($raw_date == '0000-00-00 00:00:00') || empty($raw_date) ) return false;

 

$year = substr($raw_date, 0, 4);

$month = (int)substr($raw_date, 5, 2);

$day = (int)substr($raw_date, 8, 2);

$hour = (int)substr($raw_date, 11, 2);

$minute = (int)substr($raw_date, 14, 2);

$second = (int)substr($raw_date, 17, 2);

 

if (@@date('Y', mktime($hour, $minute, $second, $month, $day, $year)) == $year) {

return date(DATE_FORMAT, mktime($hour, $minute, $second, $month, $day, $year));

} else {

return preg_replace('/2037$/', $year, date(DATE_FORMAT, mktime($hour, $minute, $second, $month, $day, 2037)));

}

}

 

////

// Parse search string into indivual objects

function tep_parse_search_string($search_str = '', &$objects) {

$search_str = trim(strtolower($search_str));

 

// Break up $search_str on whitespace; quoted string will be reconstructed later

$pieces = preg_split('/[[:space:]]+/', $search_str);

$objects = array();

$tmpstring = '';

$flag = '';

 

for ($k=0; $k<count($pieces); $k++) {

while (substr($pieces[$k], 0, 1) == '(') {

$objects[] = '(';

if (strlen($pieces[$k]) > 1) {

$pieces[$k] = substr($pieces[$k], 1);

} else {

$pieces[$k] = '';

}

}

 

$post_objects = array();

 

while (substr($pieces[$k], -1) == ')') {

$post_objects[] = ')';

if (strlen($pieces[$k]) > 1) {

$pieces[$k] = substr($pieces[$k], 0, -1);

} else {

$pieces[$k] = '';

}

}

 

// Check individual words

 

if ( (substr($pieces[$k], -1) != '"') && (substr($pieces[$k], 0, 1) != '"') ) {

$objects[] = trim($pieces[$k]);

 

for ($j=0; $j<count($post_objects); $j++) {

$objects[] = $post_objects[$j];

}

} else {

/* This means that the $piece is either the beginning or the end of a string.

So, we'll slurp up the $pieces and stick them together until we get to the

end of the string or run out of pieces.

*/

 

// Add this word to the $tmpstring, starting the $tmpstring

$tmpstring = trim(preg_replace('/"/', ' ', $pieces[$k]));

 

// Check for one possible exception to the rule. That there is a single quoted word.

if (substr($pieces[$k], -1 ) == '"') {

// Turn the flag off for future iterations

$flag = 'off';

 

$objects[] = trim(preg_replace('/"/', ' ', $pieces[$k]));

 

for ($j=0; $j<count($post_objects); $j++) {

$objects[] = $post_objects[$j];

}

 

unset($tmpstring);

 

// Stop looking for the end of the string and move onto the next word.

continue;

}

 

// Otherwise, turn on the flag to indicate no quotes have been found attached to this word in the string.

$flag = 'on';

 

// Move on to the next word

$k++;

 

// Keep reading until the end of the string as long as the $flag is on

 

while ( ($flag == 'on') && ($k < count($pieces)) ) {

while (substr($pieces[$k], -1) == ')') {

$post_objects[] = ')';

if (strlen($pieces[$k]) > 1) {

$pieces[$k] = substr($pieces[$k], 0, -1);

} else {

$pieces[$k] = '';

}

}

 

// If the word doesn't end in double quotes, append it to the $tmpstring.

if (substr($pieces[$k], -1) != '"') {

// Tack this word onto the current string entity

$tmpstring .= ' ' . $pieces[$k];

 

// Move on to the next word

$k++;

continue;

} else {

/* If the $piece ends in double quotes, strip the double quotes, tack the

$piece onto the tail of the string, push the $tmpstring onto the $haves,

kill the $tmpstring, turn the $flag "off", and return.

*/

$tmpstring .= ' ' . trim(preg_replace('/"/', ' ', $pieces[$k]));

 

// Push the $tmpstring onto the array of stuff to search for

$objects[] = trim($tmpstring);

 

for ($j=0; $j<count($post_objects); $j++) {

$objects[] = $post_objects[$j];

}

 

unset($tmpstring);

 

// Turn off the flag to exit the loop

$flag = 'off';

}

}

}

}

 

// add default logical operators if needed

$temp = array();

for($i=0; $i<(count($objects)-1); $i++) {

$temp[] = $objects[$i];

if ( ($objects[$i] != 'and') &&

($objects[$i] != 'or') &&

($objects[$i] != '(') &&

($objects[$i+1] != 'and') &&

($objects[$i+1] != 'or') &&

($objects[$i+1] != ')') ) {

$temp[] = ADVANCED_SEARCH_DEFAULT_OPERATOR;

}

}

$temp[] = $objects[$i];

$objects = $temp;

 

$keyword_count = 0;

$operator_count = 0;

$balance = 0;

for($i=0; $i<count($objects); $i++) {

if ($objects[$i] == '(') $balance --;

if ($objects[$i] == ')') $balance ++;

if ( ($objects[$i] == 'and') || ($objects[$i] == 'or') ) {

$operator_count ++;

} elseif ( ($objects[$i]) && ($objects[$i] != '(') && ($objects[$i] != ')') ) {

$keyword_count ++;

}

}

 

if ( ($operator_count < $keyword_count) && ($balance == 0) ) {

return true;

} else {

return false;

}

}

 

////

// Check date

function tep_checkdate($date_to_check, $format_string, &$date_array) {

$separator_idx = -1;

 

$separators = array('-', ' ', '/', '.');

$month_abbr = array('jan','feb','mar','apr','may','jun','jul','aug','sep','oct','nov','dec');

$no_of_days = array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);

 

$format_string = strtolower($format_string);

 

if (strlen($date_to_check) != strlen($format_string)) {

return false;

}

 

$size = sizeof($separators);

for ($i=0; $i<$size; $i++) {

$pos_separator = strpos($date_to_check, $separators[$i]);

if ($pos_separator != false) {

$date_separator_idx = $i;

break;

}

}

 

for ($i=0; $i<$size; $i++) {

$pos_separator = strpos($format_string, $separators[$i]);

if ($pos_separator != false) {

$format_separator_idx = $i;

break;

}

}

 

if ($date_separator_idx != $format_separator_idx) {

return false;

}

 

if ($date_separator_idx != -1) {

$format_string_array = explode( $separators[$date_separator_idx], $format_string );

if (sizeof($format_string_array) != 3) {

return false;

}

 

$date_to_check_array = explode( $separators[$date_separator_idx], $date_to_check );

if (sizeof($date_to_check_array) != 3) {

return false;

}

 

$size = sizeof($format_string_array);

for ($i=0; $i<$size; $i++) {

if ($format_string_array[$i] == 'mm' || $format_string_array[$i] == 'mmm') $month = $date_to_check_array[$i];

if ($format_string_array[$i] == 'dd') $day = $date_to_check_array[$i];

if ( ($format_string_array[$i] == 'yyyy') || ($format_string_array[$i] == 'aaaa') ) $year = $date_to_check_array[$i];

}

} else {

if (strlen($format_string) == 8 || strlen($format_string) == 9) {

$pos_month = strpos($format_string, 'mmm');

if ($pos_month != false) {

$month = substr( $date_to_check, $pos_month, 3 );

$size = sizeof($month_abbr);

for ($i=0; $i<$size; $i++) {

if ($month == $month_abbr[$i]) {

$month = $i;

break;

}

}

} else {

$month = substr($date_to_check, strpos($format_string, 'mm'), 2);

}

} else {

return false;

}

 

$day = substr($date_to_check, strpos($format_string, 'dd'), 2);

$year = substr($date_to_check, strpos($format_string, 'yyyy'), 4);

}

 

if (strlen($year) != 4) {

return false;

}

 

if (!settype($year, 'integer') || !settype($month, 'integer') || !settype($day, 'integer')) {

return false;

}

 

if ($month > 12 || $month < 1) {

return false;

}

 

if ($day < 1) {

return false;

}

 

if (tep_is_leap_year($year)) {

$no_of_days[1] = 29;

}

 

if ($day > $no_of_days[$month - 1]) {

return false;

}

 

$date_array = array($year, $month, $day);

 

return true;

}

 

////

// Check if year is a leap year

function tep_is_leap_year($year) {

if ($year % 100 == 0) {

if ($year % 400 == 0) return true;

} else {

if (($year % 4) == 0) return true;

}

 

return false;

}

 

////

// Return table heading with sorting capabilities

function tep_create_sort_heading($sortby, $colnum, $heading) {

global $PHP_SELF;

 

$sort_prefix = '';

$sort_suffix = '';

 

if ($sortby) {

$sort_prefix = '<a href="' . tep_href_link(basename($PHP_SELF), tep_get_all_get_params(array('page', 'info', 'sort')) . 'page=1&sort=' . $colnum . ($sortby == $colnum . 'a' ? 'd' : 'a')) . '" title="' . tep_output_string(TEXT_SORT_PRODUCTS . ($sortby == $colnum . 'd' || substr($sortby, 0, 1) != $colnum ? TEXT_ASCENDINGLY : TEXT_DESCENDINGLY) . TEXT_BY . $heading) . '" class="productListing-heading">' ;

$sort_suffix = (substr($sortby, 0, 1) == $colnum ? (substr($sortby, 1, 1) == 'a' ? '+' : '-') : '') . '</a>';

}

 

return $sort_prefix . $heading . $sort_suffix;

}

 

////

// Recursively go through the categories and retreive all parent categories IDs

// TABLES: categories

function tep_get_parent_categories(&$categories, $categories_id) {

$parent_categories_query = tep_db_query("select parent_id from " . TABLE_CATEGORIES . " where categories_id = '" . (int)$categories_id . "'");

while ($parent_categories = tep_db_fetch_array($parent_categories_query)) {

if ($parent_categories['parent_id'] == 0) return true;

$categories[sizeof($categories)] = $parent_categories['parent_id'];

if ($parent_categories['parent_id'] != $categories_id) {

tep_get_parent_categories($categories, $parent_categories['parent_id']);

}

}

}

 

////

// Construct a category path to the product

// TABLES: products_to_categories

function tep_get_product_path($products_id) {

$cPath = '';

 

$category_query = tep_db_query("select p2c.categories_id from " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_TO_CATEGORIES . " p2c where p.products_id = '" . (int)$products_id . "' and p.products_status = '1' and p.products_id = p2c.products_id limit 1");

if (tep_db_num_rows($category_query)) {

$category = tep_db_fetch_array($category_query);

 

$categories = array();

tep_get_parent_categories($categories, $category['categories_id']);

 

$categories = array_reverse($categories);

 

$cPath = implode('_', $categories);

 

if (tep_not_null($cPath)) $cPath .= '_';

$cPath .= $category['categories_id'];

}

 

return $cPath;

}

 

////

// Return a product ID with attributes

function tep_get_uprid($prid, $params) {

if (is_numeric($prid)) {

$uprid = (int)$prid;

 

if (is_array($params) && (sizeof($params) > 0)) {

$attributes_check = true;

$attributes_ids = '';

 

reset($params);

while (list($option, $value) = each($params)) {

if (is_numeric($option) && is_numeric($value)) {

$attributes_ids .= '{' . (int)$option . '}' . (int)$value;

} else {

$attributes_check = false;

break;

}

}

 

if ($attributes_check == true) {

$uprid .= $attributes_ids;

}

}

} else {

$uprid = tep_get_prid($prid);

 

if (is_numeric($uprid)) {

if (strpos($prid, '{') !== false) {

$attributes_check = true;

$attributes_ids = '';

 

// strpos()+1 to remove up to and including the first { which would create an empty array element in explode()

$attributes = explode('{', substr($prid, strpos($prid, '{')+1));

 

for ($i=0, $n=sizeof($attributes); $i<$n; $i++) {

$pair = explode('}', $attributes[$i]);

 

if (is_numeric($pair[0]) && is_numeric($pair[1])) {

$attributes_ids .= '{' . (int)$pair[0] . '}' . (int)$pair[1];

} else {

$attributes_check = false;

break;

}

}

 

if ($attributes_check == true) {

$uprid .= $attributes_ids;

}

}

} else {

return false;

}

}

 

return $uprid;

}

 

////

// Return a product ID from a product ID with attributes

function tep_get_prid($uprid) {

$pieces = explode('{', $uprid);

 

if (is_numeric($pieces[0])) {

return (int)$pieces[0];

} else {

return false;

}

}

 

////

// Return a customer greeting

function tep_customer_greeting() {

global $customer_id, $customer_first_name;

 

if (tep_session_is_registered('customer_first_name') && tep_session_is_registered('customer_id')) {

$greeting_string = sprintf(TEXT_GREETING_PERSONAL, tep_output_string_protected($customer_first_name), tep_href_link(FILENAME_PRODUCTS_NEW));

} else {

$greeting_string = sprintf(TEXT_GREETING_GUEST, tep_href_link(FILENAME_LOGIN, '', 'SSL'), tep_href_link(FILENAME_CREATE_ACCOUNT, '', 'SSL'));

}

 

return $greeting_string;

}

 

////

//! Send email (text/html) using MIME

// This is the central mail function. The SMTP Server should be configured

// correct in php.ini

// Parameters:

// $to_name The name of the recipient, e.g. "Jan Wildeboer"

// $to_email_address The eMail address of the recipient,

// e.g. jan.wildeboer@@gmx526.de

// $email_subject The subject of the eMail

// $email_text The text of the eMail, may contain HTML entities

// $from_email_name The name of the sender, e.g. Shop Administration

// $from_email_adress The eMail address of the sender,

// e.g. info@mytepshop.com

 

function tep_mail($to_name, $to_email_address, $email_subject, $email_text, $from_email_name, $from_email_address) {

if (SEND_EMAILS != 'true') return false;

 

// Instantiate a new mail object

$message = new email(array('X-Mailer: osCommerce'));

 

// Build the text version

$text = strip_tags($email_text);

if (EMAIL_USE_HTML == 'true') {

$message->add_html($email_text, $text);

} else {

$message->add_text($text);

}

 

// Send message

$message->build_message();

$message->send($to_name, $to_email_address, $from_email_name, $from_email_address, $email_subject);

}

 

////

// Check if product has attributes

function tep_has_product_attributes($products_id) {

$attributes_query = tep_db_query("select count(*) as count from " . TABLE_PRODUCTS_ATTRIBUTES . " where products_id = '" . (int)$products_id . "'");

$attributes = tep_db_fetch_array($attributes_query);

 

if ($attributes['count'] > 0) {

return true;

} else {

return false;

}

}

 

////

// Get the number of times a word/character is present in a string

function tep_word_count($string, $needle) {

$temp_array = preg_split('/' . $needle . '/', $string);

 

return sizeof($temp_array);

}

 

function tep_count_modules($modules = '') {

$count = 0;

 

if (empty($modules)) return $count;

 

$modules_array = explode(';', $modules);

 

for ($i=0, $n=sizeof($modules_array); $i<$n; $i++) {

$class = substr($modules_array[$i], 0, strrpos($modules_array[$i], '.'));

 

if (isset($GLOBALS[$class]) && is_object($GLOBALS[$class])) {

if ($GLOBALS[$class]->enabled) {

$count++;

}

}

}

 

return $count;

}

 

function tep_count_payment_modules() {

return tep_count_modules(MODULE_PAYMENT_INSTALLED);

}

 

function tep_count_shipping_modules() {

return tep_count_modules(MODULE_SHIPPING_INSTALLED);

}

 

function tep_create_random_value($length, $type = 'mixed') {

if ( ($type != 'mixed') && ($type != 'chars') && ($type != 'digits')) $type = 'mixed';

 

$chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';

$digits = '0123456789';

 

$base = '';

 

if ( ($type == 'mixed') || ($type == 'chars') ) {

$base .= $chars;

}

 

if ( ($type == 'mixed') || ($type == 'digits') ) {

$base .= $digits;

}

 

$value = '';

 

if (!class_exists('PasswordHash')) {

include(DIR_WS_CLASSES . 'passwordhash.php');

}

 

$hasher = new PasswordHash(10, true);

 

do {

$random = base64_encode($hasher->get_random_bytes($length));

 

for ($i = 0, $n = strlen($random); $i < $n; $i++) {

$char = substr($random, $i, 1);

 

if ( strpos($base, $char) !== false ) {

$value .= $char;

}

}

} while ( strlen($value) < $length );

 

if ( strlen($value) > $length ) {

$value = substr($value, 0, $length);

}

 

return $value;

}

 

function tep_array_to_string($array, $exclude = '', $equals = '=', $separator = '&') {

if (!is_array($exclude)) $exclude = array();

 

$get_string = '';

if (sizeof($array) > 0) {

while (list($key, $value) = each($array)) {

if ( (!in_array($key, $exclude)) && ($key != 'x') && ($key != 'y') ) {

$get_string .= $key . $equals . $value . $separator;

}

}

$remove_chars = strlen($separator);

$get_string = substr($get_string, 0, -$remove_chars);

}

 

return $get_string;

}

 

function tep_not_null($value) {

if (is_array($value)) {

if (sizeof($value) > 0) {

return true;

} else {

return false;

}

} else {

if (($value != '') && (strtolower($value) != 'null') && (strlen(trim($value)) > 0)) {

return true;

} else {

return false;

}

}

}

 

////

// Output the tax percentage with optional padded decimals

function tep_display_tax_value($value, $padding = TAX_DECIMAL_PLACES) {

if (strpos($value, '.')) {

$loop = true;

while ($loop) {

if (substr($value, -1) == '0') {

$value = substr($value, 0, -1);

} else {

$loop = false;

if (substr($value, -1) == '.') {

$value = substr($value, 0, -1);

}

}

}

}

 

if ($padding > 0) {

if ($decimal_pos = strpos($value, '.')) {

$decimals = strlen(substr($value, ($decimal_pos+1)));

for ($i=$decimals; $i<$padding; $i++) {

$value .= '0';

}

} else {

$value .= '.';

for ($i=0; $i<$padding; $i++) {

$value .= '0';

}

}

}

 

return $value;

}

 

////

// Checks to see if the currency code exists as a currency

// TABLES: currencies

function tep_currency_exists($code) {

$code = tep_db_prepare_input($code);

 

$currency_query = tep_db_query("select code from " . TABLE_CURRENCIES . " where code = '" . tep_db_input($code) . "' limit 1");

if (tep_db_num_rows($currency_query)) {

$currency = tep_db_fetch_array($currency_query);

return $currency['code'];

} else {

return false;

}

}

 

function tep_string_to_int($string) {

return (int)$string;

}

 

////

// Parse and secure the cPath parameter values

function tep_parse_category_path($cPath) {

// make sure the category IDs are integers

$cPath_array = array_map('tep_string_to_int', explode('_', $cPath));

 

// make sure no duplicate category IDs exist which could lock the server in a loop

$tmp_array = array();

$n = sizeof($cPath_array);

for ($i=0; $i<$n; $i++) {

if (!in_array($cPath_array[$i], $tmp_array)) {

$tmp_array[] = $cPath_array[$i];

}

}

 

return $tmp_array;

}

 

////

// Return a random value

function tep_rand($min = null, $max = null) {

static $seeded;

 

if (!isset($seeded)) {

$seeded = true;

 

if ( (PHP_VERSION < '4.2.0') ) {

mt_srand((double)microtime()*1000000);

}

}

 

if (isset($min) && isset($max)) {

if ($min >= $max) {

return $min;

} else {

return mt_rand($min, $max);

}

} else {

return mt_rand();

}

}

 

function tep_setcookie($name, $value = '', $expire = 0, $path = '/', $domain = '', $secure = 0) {

setcookie($name, $value, $expire, $path, (tep_not_null($domain) ? $domain : ''), $secure);

}

 

function tep_validate_ip_address($ip_address) {

if (function_exists('filter_var') && defined('FILTER_VALIDATE_IP')) {

return filter_var($ip_address, FILTER_VALIDATE_IP, array('flags' => FILTER_FLAG_IPV4));

}

 

if (preg_match('/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/', $ip_address)) {

$parts = explode('.', $ip_address);

 

foreach ($parts as $ip_parts) {

if ( (intval($ip_parts) > 255) || (intval($ip_parts) < 0) ) {

return false; // number is not within 0-255

}

}

 

return true;

}

 

return false;

}

 

function tep_get_ip_address() {

global $HTTP_SERVER_VARS;

 

$ip_address = null;

$ip_addresses = array();

 

if (isset($HTTP_SERVER_VARS['HTTP_X_FORWARDED_FOR']) && !empty($HTTP_SERVER_VARS['HTTP_X_FORWARDED_FOR'])) {

foreach ( array_reverse(explode(',', $HTTP_SERVER_VARS['HTTP_X_FORWARDED_FOR'])) as $x_ip ) {

$x_ip = trim($x_ip);

 

if (tep_validate_ip_address($x_ip)) {

$ip_addresses[] = $x_ip;

}

}

}

 

if (isset($HTTP_SERVER_VARS['HTTP_CLIENT_IP']) && !empty($HTTP_SERVER_VARS['HTTP_CLIENT_IP'])) {

$ip_addresses[] = $HTTP_SERVER_VARS['HTTP_CLIENT_IP'];

}

 

if (isset($HTTP_SERVER_VARS['HTTP_X_CLUSTER_CLIENT_IP']) && !empty($HTTP_SERVER_VARS['HTTP_X_CLUSTER_CLIENT_IP'])) {

$ip_addresses[] = $HTTP_SERVER_VARS['HTTP_X_CLUSTER_CLIENT_IP'];

}

 

if (isset($HTTP_SERVER_VARS['HTTP_PROXY_USER']) && !empty($HTTP_SERVER_VARS['HTTP_PROXY_USER'])) {

$ip_addresses[] = $HTTP_SERVER_VARS['HTTP_PROXY_USER'];

}

 

$ip_addresses[] = $HTTP_SERVER_VARS['REMOTE_ADDR'];

 

foreach ( $ip_addresses as $ip ) {

if (!empty($ip) && tep_validate_ip_address($ip)) {

$ip_address = $ip;

break;

}

}

 

return $ip_address;

}

 

function tep_count_customer_orders($id = '', $check_session = true) {

global $customer_id, $languages_id;

 

if (is_numeric($id) == false) {

if (tep_session_is_registered('customer_id')) {

$id = $customer_id;

} else {

return 0;

}

}

 

if ($check_session == true) {

if ( (tep_session_is_registered('customer_id') == false) || ($id != $customer_id) ) {

return 0;

}

}

 

$orders_check_query = tep_db_query("select count(*) as total from " . TABLE_ORDERS . " o, " . TABLE_ORDERS_STATUS . " s where o.customers_id = '" . (int)$id . "' and o.orders_status = s.orders_status_id and s.language_id = '" . (int)$languages_id . "' and s.public_flag = '1'");

$orders_check = tep_db_fetch_array($orders_check_query);

 

return $orders_check['total'];

}

 

function tep_count_customer_address_book_entries($id = '', $check_session = true) {

global $customer_id;

 

if (is_numeric($id) == false) {

if (tep_session_is_registered('customer_id')) {

$id = $customer_id;

} else {

return 0;

}

}

 

if ($check_session == true) {

if ( (tep_session_is_registered('customer_id') == false) || ($id != $customer_id) ) {

return 0;

}

}

 

$addresses_query = tep_db_query("select count(*) as total from " . TABLE_ADDRESS_BOOK . " where customers_id = '" . (int)$id . "'");

$addresses = tep_db_fetch_array($addresses_query);

 

return $addresses['total'];

}

 

// nl2br() prior PHP 4.2.0 did not convert linefeeds on all OSs (it only converted \n)

function tep_convert_linefeeds($from, $to, $string) {

if ((PHP_VERSION < "4.0.5") && is_array($from)) {

return preg_replace('/(' . implode('|', $from) . ')/', $to, $string);

} else {

return str_replace($from, $to, $string);

}

}

?>

 

 

Share this post


Link to post
Share on other sites

@@beezer26164

 

this looks correct.

 

please post your includes/application_top.php, but please only the changed parts.

 

Dont't forget to revert the changes you tried, there is no need to modify anything, it should work just doing the mods indicated in the install doc.

Share this post


Link to post
Share on other sites

// load server configuration parameters

if (file_exists('includes/local/configure.php')) { // for developers

include('includes/local/configure.php');

} else {

 

require((defined('MOBILE_SESSION') ? '../includes/configure.php' : 'includes/configure.php'));

 

}

 

if (strlen(DB_SERVER) < 1) {

if (is_dir('install')) {

header('Location: install/index.php');

}

}

 

 

 

 

 

 

// set php_self in the local scope

$PHP_SELF = (((strlen(ini_get('cgi.fix_pathinfo')) > 0) && ((bool)ini_get('cgi.fix_pathinfo') == false)) || !isset($HTTP_SERVER_VARS['SCRIPT_NAME'])) ? basename($HTTP_SERVER_VARS['PHP_SELF']) : basename($HTTP_SERVER_VARS['SCRIPT_NAME']);

 

if ($request_type == 'NONSSL') {

defined('MOBILE_SESSION') ? define('DIR_WS_CATALOG', DIR_WS_HTTP_MOBILE) : define('DIR_WS_CATALOG', DIR_WS_HTTP_CATALOG);

} else {

defined('MOBILE_SESSION') ? define('DIR_WS_CATALOG', DIR_WS_HTTPS_MOBILE) : define('DIR_WS_CATALOG', DIR_WS_HTTPS_CATALOG);

}

 

// include the list of project filenames

require(DIR_WS_INCLUDES . 'filenames.php');

 

 

 

 

$navigation->add_current_page();

 

// action recorder

include(DIR_WS_CLASSES . 'action_recorder.php');

 

 

 

 

// initialize the message stack for output messages

require(DIR_WS_CLASSES . 'message_stack.php');

$messageStack = new messageStack;

 

//BEGIN : MOBILE REDIRECT_SCRIPT

if (MOBILE_SITE=='True'){

if (USU5_ENABLED == 'true' || SEO_ENABLED == 'true'){

$marker_replace_from = array('%' . DIR_WS_HTTP_CATALOG . '%', '/-p-/', '/-c-/', '/-m-/', '/-pr-/', '/-pri-/', '/-pi-/', '/-a-/', '/-au-/', '/-by-/', '/-f-/', '/-fc-/', '/-fri-/', '/-fra-/', '/-i-/', '/-links-/', '/-n-/', '/-nc-/', '/-nri-/', '/-nra-/', '/-pm-/', '/-po-/', '/-t-/');

$marker_replace_to = array('', '-mp-', '-mc-', '-mm-', '-mpr-', '-mpri-', '-mpi-', '-ma-', '-mau-', '-mby-', '-mf-', '-mfc-', '-mfri-', '-mfra-', '-mi-', '-mlinks-', '-mn-', '-mnc-', '-mnri-', '-mnra-', '-mpm-', '-mpo-', '-mt-');

$mobile_site = preg_replace($marker_replace_from, $marker_replace_to, $_SERVER['REQUEST_URI']);

if (strpos($mobile_site, '-mc-') || strpos($mobile_site, '-mm-')) {

$mobile_site = str_replace('index.php', 'catalog_mb.php', $mobile_site);

}

if($mobile_site != $_SERVER['REQUEST_URI']) {

$mobile_url = (($request_type == 'SSL') ? HTTPS_MOBILE_SERVER . DIR_WSS_HTTP_MOBILE : HTTP_MOBILE_SERVER . DIR_WS_HTTP_MOBILE) . $mobile_site;

} else {

$mobile_url = (($request_type == 'SSL') ? HTTPS_MOBILE_SERVER . DIR_WSS_HTTP_MOBILE : HTTP_MOBILE_SERVER . DIR_WS_HTTP_MOBILE) . $_SERVER['REQUEST_URI'];

}

} else {

$mobile_site = basename($PHP_SELF);

if (strpos($_SERVER['REQUEST_URI'], 'index.php') && (strpos($_SERVER['REQUEST_URI'], 'manufacturers_id=') || strpos($_SERVER['REQUEST_URI'], 'cPath='))) {

$mobile_site = str_replace('index.php', 'catalog_mb.php', $mobile_site);

}

if (tep_not_null(tep_get_all_get_params())) {

$mobile_url = (($request_type == 'SSL') ? HTTPS_MOBILE_SERVER . DIR_WS_HTTPS_MOBILE : HTTP_MOBILE_SERVER . DIR_WS_HTTP_MOBILE) . '?' . rtrim (tep_output_string(tep_get_all_get_params()), '&');

} else {

$mobile_url = (($request_type == 'SSL') ? HTTPS_MOBILE_SERVER . DIR_WS_HTTPS_MOBILE : HTTP_MOBILE_SERVER . DIR_WS_HTTP_MOBILE);

}

}

 

require(DIR_FS_MOBILE . 'includes/classes/mobile_redirect.php');

$mobileRedirect = new mobileRedirect;

}

//END : MOBILE REDIRECT_SCRIPT

 

?>

Here it is.

 

Thanks,

Bill

 

Share this post


Link to post
Share on other sites

When i first installed the addon I was unable to connect to my regular store so I contacted my host support dept. and asked them if they could do anything. Well I just checked back with them and they said the following:

 

We could see that there is some PHP coding problem with your website. Earlier, we disabled the line 539 of the file /home/..../public_html/includes/application_top.php to fix the issue. And that has caused http://rubartsgifts-n-electronics.com/mobile/index.php show a blank page. Now, its showing below error logs:

 

================

[16-Oct-2013 20:20:55 America/New_York] PHP Fatal error: require() [<a href='function.require'>function.require</a>]: Failed opening required 'includes/functions/compatibility.php' (include_path='.:/usr/lib/php:/usr/local/lib/php') in /home/..../public_html/includes/application_top.php on line 43

================

 

I'm Lost....Your Help is Greatly Appreciated!!

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×