Jump to content
  • Checkout
  • Login
  • Get in touch

osCommerce

The e-commerce.

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


bumbarash

Recommended Posts

I've just installed iosc on my cre loaded site.

This has UltimateSEO installed.

I am able to go to /mobile/ however no products are listed.

However on my test server iosc works with ultimateseo turned off.

 

On the live site I've commented out function redirect() and added

function redirect() {

Header("Location: http://www.<mysite>.com/mobile/");

exit();

}

Still no joy.

 

Any ideas

Link to comment
Share on other sites

This is a great contribution...however, I'm having a slight issue. Here's the steps I'm taking...

 

1) First category level...clicking works and takes me to subcategories.

2) I click on a subcategory and I'm taken to a page that says "This site is running TeamViewer." The URL in my browser shows http://localhost/osc/mobile/index.php?cPath=xx (xx varies depending on the cat).

 

This contrib is installed in www.domain.com/mobile. No changes were necessary. Everything else seems to work so far. Thanks!

Link to comment
Share on other sites

Hello,

 

I've the version 1.2 already installed and working fine for me as well. Just to get the checkout continue after confirmation order checkout, Could you please just indicate what code to add and change to get the payment done via paypal express and standard?

Thanks very much for your help.

 

Regards.

did you get your add to cart issue resolved and what was the problem if i may ask

Link to comment
Share on other sites

Hi,

 

I try to create a products _new page.

 

so i do that :

 

<?php
require_once('includes/application_top.php');

   $listing_sql = "select  	p.products_id,  
   						pd.products_name, 
   						p.manufacturers_id, 
   						p.products_price, 
   						p.products_image, 
   						p.products_tax_class_id, 
   						IF(s.status, s.specials_new_products_price, NULL) as specials_new_products_price, 
   						IF(s.status, s.specials_new_products_price, p.products_price) as final_price from " . 
   						TABLE_PRODUCTS_DESCRIPTION . " pd," .
   						TABLE_PRODUCTS . " p left join " . 
   						TABLE_MANUFACTURERS . " m on p.manufacturers_id = m.manufacturers_id left join " . 
   						TABLE_SPECIALS . " s on p.products_id = s.products_id, " . 
   						TABLE_PRODUCTS_TO_CATEGORIES . " p2c 
   						where p.products_status = '1' 
   						and p.products_id = p2c.products_id 
   						and pd.products_id = p2c.products_id 
   						and pd.language_id = '" . (int)$languages_id . "'";


   $listing_sql .= " order by p.products_date_added DESC";
   $PCSITE = DIR_MAIN_HTTP_CATALOG . FILENAME_DEFAULT . '?' . tep_get_all_get_params();
   require(DIR_MOBILE_INCLUDES . 'header.php');
require(DIR_WS_LANGUAGES . $language . '/' . FILENAME_DEFAULT);

$headerTitle->write('Nouveautés');

require(DIR_MOBILE_MODULES . 'products.php');
require(DIR_MOBILE_INCLUDES . 'footer.php'); 
?>

 

everything look fine but when i clik on "show more products" in the bottom of my page nothing happend...

 

someone can help me ?

 

thanks

Edited by regne
Link to comment
Share on other sites

I am getting the following error

 

index.php, search.php, about.php.l languages.php

 

error_reporting(E_ALL & E_NOTICE ); ini_set('display_errors','1');

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /usr/home/tfs/public_html/xxx/mobile/includes/application_top.php:3) in /usr/home/tfs/public_html/xxx/includes/functions/sessions.php on line 102

 

account.php:

 

error_reporting(E_ALL & E_NOTICE ); ini_set('display_errors','1');

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /usr/home/tfs/public_html/xxx/mobile/includes/application_top.php:3) in /usr/home/tfs/public_html/xxx/includes/functions/sessions.php on line 102

 

Warning: Cannot modify header information - headers already sent by (output started at /usr/home/tfs/public_html/xxx/mobile/includes/application_top.php:3) in /usr/home/tfs/public_html/xxx/includes/functions/general.php on line 33

 

In additon, the index.php is blank

 

Any help would be greatly appreciated.

Link to comment
Share on other sites

Magically, the problem I had yesterday is gone and with a few tweaks it's working very well.

 

My questino is...

 

The redirect works fine once a customer gets into the catalog portion of the site, however I have an index.htm at the root level of the site. How do I get the redirect to work from the root level outside of the catalog?

Link to comment
Share on other sites

Why the hell am I getting the normal Site when I access the site with my iPhone??

 

www.iSuit.de

 

It looks like the normal Site, even though the /mobile/ is in the URL.. Also When I view iSuit.de on my iPhone, the language is english instead of german...

 

Does anybody know why???

Link to comment
Share on other sites

Blank page problem - Fix

 

The reason why some of you are getting a blank home page is probably down to a PHP 4 - 5 issue.

 

This contribution contains the PHP function domxml which is no longer supported in PHP5. So for those of you hosting on a PHP5 server do the following.

 

Download this code and save it and upload to your includes directory.

 

For example call it

domxml-php4-to-php5.php

 

 

 

<?php
/*
Requires PHP5, uses built-in DOM extension.
To be used in PHP4 scripts using DOMXML extension: allows PHP4/DOMXML scripts to run on PHP5/DOM.
(Optional: requires PHP5/XSL extension for domxml_xslt functions, PHP>=5.1 for XPath evaluation functions, and PHP>=5.1/libxml for DOMXML error reports)

Version 1.21.1a, 2009-03-13, [url="http://alexandre.alapetite.fr/doc-alex/domxml-php4-php5/"]http://alexandre.alapetite.fr/doc-alex/domxml-php4-php5/[/url]

------------------------------------------------------------------
Written by Alexandre Alapetite, [url="http://alexandre.alapetite.fr/cv/"]http://alexandre.alapetite.fr/cv/[/url]

Copyright 2004-2009, GNU Lesser General Public License,
[url="http://www.gnu.org/licenses/lgpl.html"]http://www.gnu.org/licenses/lgpl.html[/url]

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/lgpl.html>

== Rights and obligations ==
- Attribution: You must give the original author credit.
- Share Alike: If you alter or transform this library,
   you may distribute the resulting library only under the same license GNU/LGPL.
- In case of jurisdiction dispute, the French law is authoritative.
- Any of these conditions can be waived if you get permission from Alexandre Alapetite.
- Not required, but please send to Alexandre Alapetite the modifications you make,
   in order to improve this file for the benefit of everybody.

If you want to distribute this code, please do it as a link to:
[url="http://alexandre.alapetite.fr/doc-alex/domxml-php4-php5/"]http://alexandre.alapetite.fr/doc-alex/domxml-php4-php5/[/url]
*/

define('DOMXML_LOAD_PARSING',0);
define('DOMXML_LOAD_VALIDATING',1);
define('DOMXML_LOAD_RECOVERING',2);
define('DOMXML_LOAD_SUBSTITUTE_ENTITIES',4);
//define('DOMXML_LOAD_COMPLETE_ATTRS',8);
define('DOMXML_LOAD_DONT_KEEP_BLANKS',16);

function domxml_new_doc($version) {return new php4DOMDocument();}
function domxml_new_xmldoc($version) {return new php4DOMDocument();}
function domxml_open_file($filename,$mode=DOMXML_LOAD_PARSING,&$error=null)
{
$dom=new php4DOMDocument($mode);
$errorMode=(func_num_args()>2)&&defined('LIBXML_VERSION');
if ($errorMode) libxml_use_internal_errors(true);
if (!$dom->myDOMNode->load($filename)) $dom=null;
if ($errorMode)
{
	$error=array_map('_error_report',libxml_get_errors());
	libxml_clear_errors();
}
return $dom;
}
function domxml_open_mem($str,$mode=DOMXML_LOAD_PARSING,&$error=null)
{
$dom=new php4DOMDocument($mode);
$errorMode=(func_num_args()>2)&&defined('LIBXML_VERSION');
if ($errorMode) libxml_use_internal_errors(true);
if (!$dom->myDOMNode->loadXML($str)) $dom=null;
if ($errorMode)
{
	$error=array_map('_error_report',libxml_get_errors());
	libxml_clear_errors();
}
return $dom;
}
function html_doc($html_doc,$from_file=false)
{
$dom=new php4DOMDocument();
if ($from_file) $result=$dom->myDOMNode->loadHTMLFile($html_doc);
else $result=$dom->myDOMNode->loadHTML($html_doc);
return $result ? $dom : null;
}
function html_doc_file($filename) {return html_doc($filename,true);}
function xmldoc($str) {return domxml_open_mem($str);}
function xmldocfile($filename) {return domxml_open_file($filename);}
function xpath_eval($xpath_context,$eval_str,$contextnode=null) {return $xpath_context->xpath_eval($eval_str,$contextnode);}
function xpath_new_context($dom_document) {return new php4DOMXPath($dom_document);}
function xpath_register_ns($xpath_context,$prefix,$namespaceURI) {return $xpath_context->myDOMXPath->registerNamespace($prefix,$namespaceURI);}
function _entityDecode($text) {return html_entity_decode(strtr($text,array('''=>'\'')),ENT_QUOTES,'UTF-8');}
function _error_report($error) {return array('errormessage'=>$error->message,'nodename'=>'','line'=>$error->line,'col'=>$error->column)+($error->file==''?array():array('directory'=>dirname($error->file),'file'=>basename($error->file)));}

class php4DOMAttr extends php4DOMNode
{
function __get($name)
{
	if ($name==='name') return $this->myDOMNode->name;
	else return parent::__get($name);
}
function name() {return $this->myDOMNode->name;}
function set_content($text) {}
//function set_value($content) {return $this->myDOMNode->value=htmlspecialchars($content,ENT_QUOTES);}
function specified() {return $this->myDOMNode->specified;}
function value() {return $this->myDOMNode->value;}
}

class php4DOMDocument extends php4DOMNode
{
function php4DOMDocument($mode=DOMXML_LOAD_PARSING)
{
	$this->myDOMNode=new DOMDocument();
	$this->myOwnerDocument=$this;
	if ($mode & DOMXML_LOAD_VALIDATING) $this->myDOMNode->validateOnParse=true;
	if ($mode & DOMXML_LOAD_RECOVERING) $this->myDOMNode->recover=true;
	if ($mode & DOMXML_LOAD_SUBSTITUTE_ENTITIES) $this->myDOMNode->substituteEntities=true;
	if ($mode & DOMXML_LOAD_DONT_KEEP_BLANKS) $this->myDOMNode->preserveWhiteSpace=false;
}
function add_root($name)
{
	if ($this->myDOMNode->hasChildNodes()) $this->myDOMNode->removeChild($this->myDOMNode->firstChild);
	return new php4DOMElement($this->myDOMNode->appendChild($this->myDOMNode->createElement($name)),$this->myOwnerDocument);
}
function create_attribute($name,$value)
{
	$myAttr=$this->myDOMNode->createAttribute($name);
	$myAttr->value=htmlspecialchars($value,ENT_QUOTES);
	return new php4DOMAttr($myAttr,$this);
}
function create_cdata_section($content) {return new php4DOMNode($this->myDOMNode->createCDATASection($content),$this);}
function create_comment($data) {return new php4DOMNode($this->myDOMNode->createComment($data),$this);}
function create_element($name) {return new php4DOMElement($this->myDOMNode->createElement($name),$this);}
function create_element_ns($uri,$name,$prefix=null)
{
	if ($prefix==null) $prefix=$this->myDOMNode->lookupPrefix($uri);
	if (($prefix==null)&&(($this->myDOMNode->documentElement==null)||(!$this->myDOMNode->documentElement->isDefaultNamespace($uri)))) $prefix='a'.sprintf('%u',crc32($uri));
	return new php4DOMElement($this->myDOMNode->createElementNS($uri,$prefix==null ? $name : $prefix.':'.$name),$this);
}
function create_entity_reference($content) {return new php4DOMNode($this->myDOMNode->createEntityReference($content),$this);} //By Walter Ebert 2007-01-22
function create_processing_instruction($target,$data=''){return new php4DomProcessingInstruction($this->myDOMNode->createProcessingInstruction($target,$data),$this);}
function create_text_node($content) {return new php4DOMText($this->myDOMNode->createTextNode($content),$this);}
function document_element() {return parent::_newDOMElement($this->myDOMNode->documentElement,$this);}
function dump_file($filename,$compressionmode=false,$format=false)
{
	$format0=$this->myDOMNode->formatOutput;
	$this->myDOMNode->formatOutput=$format;
	$res=$this->myDOMNode->save($filename);
	$this->myDOMNode->formatOutput=$format0;
	return $res;
}
function dump_mem($format=false,$encoding=false)
{
	$format0=$this->myDOMNode->formatOutput;
	$this->myDOMNode->formatOutput=$format;
	$encoding0=$this->myDOMNode->encoding;
	if ($encoding) $this->myDOMNode->encoding=$encoding;
	$dump=$this->myDOMNode->saveXML();
	$this->myDOMNode->formatOutput=$format0;
	if ($encoding) $this->myDOMNode->encoding= $encoding0=='' ? 'UTF-8' : $encoding0; //UTF-8 is XML default encoding
	return $dump;
}
function free()
{
	if ($this->myDOMNode->hasChildNodes()) $this->myDOMNode->removeChild($this->myDOMNode->firstChild);
	$this->myDOMNode=null;
	$this->myOwnerDocument=null;
}
function get_element_by_id($id) {return parent::_newDOMElement($this->myDOMNode->getElementById($id),$this);}
function get_elements_by_tagname($name)
{
	$myDOMNodeList=$this->myDOMNode->getElementsByTagName($name);
	$nodeSet=array();
	$i=0;
	if (isset($myDOMNodeList))
		while ($node=$myDOMNodeList->item($i++)) $nodeSet[]=new php4DOMElement($node,$this);
	return $nodeSet;
}
function html_dump_mem() {return $this->myDOMNode->saveHTML();}
function root() {return parent::_newDOMElement($this->myDOMNode->documentElement,$this);}
function xinclude() {return $this->myDOMNode->xinclude();}
function xpath_new_context() {return new php4DOMXPath($this);}
}

class php4DOMElement extends php4DOMNode
{
function add_namespace($uri,$prefix)
{
	if ($this->myDOMNode->hasAttributeNS('http://www.w3.org/2000/xmlns/',$prefix)) return false;
	else
	{
		$this->myDOMNode->setAttributeNS('http://www.w3.org/2000/xmlns/','xmlns:'.$prefix,$uri); //By Daniel Walker 2006-09-08
		return true;
	}
}
function get_attribute($name) {return $this->myDOMNode->getAttribute($name);}
function get_attribute_node($name) {return parent::_newDOMElement($this->myDOMNode->getAttributeNode($name),$this->myOwnerDocument);}
function get_elements_by_tagname($name)
{
	$myDOMNodeList=$this->myDOMNode->getElementsByTagName($name);
	$nodeSet=array();
	$i=0;
	if (isset($myDOMNodeList))
		while ($node=$myDOMNodeList->item($i++)) $nodeSet[]=new php4DOMElement($node,$this->myOwnerDocument);
	return $nodeSet;
}
function has_attribute($name) {return $this->myDOMNode->hasAttribute($name);}
function remove_attribute($name) {return $this->myDOMNode->removeAttribute($name);}
function set_attribute($name,$value)
{
	//return $this->myDOMNode->setAttribute($name,$value); //Does not return a DomAttr
	$myAttr=$this->myDOMNode->ownerDocument->createAttribute($name);
	$myAttr->value=htmlspecialchars($value,ENT_QUOTES); //Entity problem reported by AL-DesignWorks 2007-09-07
	$this->myDOMNode->setAttributeNode($myAttr);
	return new php4DOMAttr($myAttr,$this->myOwnerDocument);
}
/*function set_attribute_node($attr)
{
	$this->myDOMNode->setAttributeNode($this->_importNode($attr));
	return $attr;
}*/
function set_name($name)
{
	if ($this->myDOMNode->prefix=='') $newNode=$this->myDOMNode->ownerDocument->createElement($name);
	else $newNode=$this->myDOMNode->ownerDocument->createElementNS($this->myDOMNode->namespaceURI,$this->myDOMNode->prefix.':'.$name);
	$myDOMNodeList=$this->myDOMNode->attributes;
	$i=0;
	if (isset($myDOMNodeList))
		while ($node=$myDOMNodeList->item($i++))
			if ($node->namespaceURI=='') $newNode->setAttribute($node->name,$node->value);
			else $newNode->setAttributeNS($node->namespaceURI,$node->nodeName,$node->value);
	$myDOMNodeList=$this->myDOMNode->childNodes;
	if (isset($myDOMNodeList))
		while ($node=$myDOMNodeList->item(0)) $newNode->appendChild($node);
	$this->myDOMNode->parentNode->replaceChild($newNode,$this->myDOMNode);
	$this->myDOMNode=$newNode;
	return true;
}
function tagname() {return $this->tagname;}
}

class php4DOMNode
{
public $myDOMNode;
public $myOwnerDocument;
function php4DOMNode($aDomNode,$aOwnerDocument)
{
	$this->myDOMNode=$aDomNode;
	$this->myOwnerDocument=$aOwnerDocument;
}
function __get($name)
{
	switch ($name)
	{
		case 'type': return $this->myDOMNode->nodeType;
		case 'tagname': return ($this->myDOMNode->nodeType===XML_ELEMENT_NODE) ? $this->myDOMNode->localName : $this->myDOMNode->tagName; //Avoid namespace prefix for DOMElement
		case 'content': return $this->myDOMNode->textContent;
		case 'value': return $this->myDOMNode->value;
		default:
			$myErrors=debug_backtrace();
			trigger_error('Undefined property: '.get_class($this).'::$'.$name.' ['.$myErrors[0]['file'].':'.$myErrors[0]['line'].']',E_USER_NOTICE);
			return false;
	}
}
function add_child($newnode) {return append_child($newnode);}
function add_namespace($uri,$prefix) {return false;}
function append_child($newnode) {return self::_newDOMElement($this->myDOMNode->appendChild($this->_importNode($newnode)),$this->myOwnerDocument);}
function append_sibling($newnode) {return self::_newDOMElement($this->myDOMNode->parentNode->appendChild($this->_importNode($newnode)),$this->myOwnerDocument);}
function attributes()
{
	$myDOMNodeList=$this->myDOMNode->attributes;
	if (!(isset($myDOMNodeList)&&$this->myDOMNode->hasAttributes())) return null;
	$nodeSet=array();
	$i=0;
	while ($node=$myDOMNodeList->item($i++)) $nodeSet[]=new php4DOMAttr($node,$this->myOwnerDocument);
	return $nodeSet;
}
function child_nodes()
{
	$myDOMNodeList=$this->myDOMNode->childNodes;
	$nodeSet=array();
	$i=0;
	if (isset($myDOMNodeList))
		while ($node=$myDOMNodeList->item($i++)) $nodeSet[]=self::_newDOMElement($node,$this->myOwnerDocument);
	return $nodeSet;
}
function children() {return $this->child_nodes();}
function clone_node($deep=false) {return self::_newDOMElement($this->myDOMNode->cloneNode($deep),$this->myOwnerDocument);}
//dump_node($node) should only be called on php4DOMDocument
function dump_node($node=null) {return $node==null ? $this->myOwnerDocument->myDOMNode->saveXML($this->myDOMNode) : $this->myOwnerDocument->myDOMNode->saveXML($node->myDOMNode);}
function first_child() {return self::_newDOMElement($this->myDOMNode->firstChild,$this->myOwnerDocument);}
function get_content() {return $this->myDOMNode->textContent;}
function has_attributes() {return $this->myDOMNode->hasAttributes();}
function has_child_nodes() {return $this->myDOMNode->hasChildNodes();}
function insert_before($newnode,$refnode) {return self::_newDOMElement($this->myDOMNode->insertBefore($this->_importNode($newnode),$refnode==null?null:$refnode->myDOMNode),$this->myOwnerDocument);}
function is_blank_node() {return ($this->myDOMNode->nodeType===XML_TEXT_NODE)&&preg_match('%^\s*$%',$this->myDOMNode->nodeValue);}
function last_child() {return self::_newDOMElement($this->myDOMNode->lastChild,$this->myOwnerDocument);}
function new_child($name,$content)
{
	$mySubNode=$this->myDOMNode->ownerDocument->createElement($name);
	$mySubNode->appendChild($this->myDOMNode->ownerDocument->createTextNode(_entityDecode($content)));
	$this->myDOMNode->appendChild($mySubNode);
	return new php4DOMElement($mySubNode,$this->myOwnerDocument);
}
function next_sibling() {return self::_newDOMElement($this->myDOMNode->nextSibling,$this->myOwnerDocument);}
function node_name() {return ($this->myDOMNode->nodeType===XML_ELEMENT_NODE) ? $this->myDOMNode->localName : $this->myDOMNode->nodeName;} //Avoid namespace prefix for DOMElement
function node_type() {return $this->myDOMNode->nodeType;}
function node_value() {return $this->myDOMNode->nodeValue;}
function owner_document() {return $this->myOwnerDocument;}
function parent_node() {return self::_newDOMElement($this->myDOMNode->parentNode,$this->myOwnerDocument);}
function prefix() {return $this->myDOMNode->prefix;}
function previous_sibling() {return self::_newDOMElement($this->myDOMNode->previousSibling,$this->myOwnerDocument);}
function remove_child($oldchild) {return self::_newDOMElement($this->myDOMNode->removeChild($oldchild->myDOMNode),$this->myOwnerDocument);}
function replace_child($newnode,$oldnode) {return self::_newDOMElement($this->myDOMNode->replaceChild($this->_importNode($newnode),$oldnode->myDOMNode),$this->myOwnerDocument);}
function replace_node($newnode) {return self::_newDOMElement($this->myDOMNode->parentNode->replaceChild($this->_importNode($newnode),$this->myDOMNode),$this->myOwnerDocument);}
function set_content($text) {return $this->myDOMNode->appendChild($this->myDOMNode->ownerDocument->createTextNode(_entityDecode($text)));} //Entity problem reported by AL-DesignWorks 2007-09-07
//function set_name($name) {return $this->myOwnerDocument->renameNode($this->myDOMNode,$this->myDOMNode->namespaceURI,$name);}
function set_namespace($uri,$prefix=null)
{//Contributions by Daniel Walker 2006-09-08
	$nsprefix=$this->myDOMNode->lookupPrefix($uri);
	if ($nsprefix==null)
	{
		$nsprefix= $prefix==null ? $nsprefix='a'.sprintf('%u',crc32($uri)) : $prefix;
		if ($this->myDOMNode->nodeType===XML_ATTRIBUTE_NODE)
		{
			if (($prefix!=null)&&$this->myDOMNode->ownerElement->hasAttributeNS('http://www.w3.org/2000/xmlns/',$nsprefix)&&
				($this->myDOMNode->ownerElement->getAttributeNS('http://www.w3.org/2000/xmlns/',$nsprefix)!=$uri))
			{//Remove namespace
				$parent=$this->myDOMNode->ownerElement;
				$parent->removeAttributeNode($this->myDOMNode);
				$parent->setAttribute($this->myDOMNode->localName,$this->myDOMNode->nodeValue);
				$this->myDOMNode=$parent->getAttributeNode($this->myDOMNode->localName);
				return;
			}
			$this->myDOMNode->ownerElement->setAttributeNS('http://www.w3.org/2000/xmlns/','xmlns:'.$nsprefix,$uri);
		}
	}
	if ($this->myDOMNode->nodeType===XML_ATTRIBUTE_NODE)
	{
		$parent=$this->myDOMNode->ownerElement;
		$parent->removeAttributeNode($this->myDOMNode);
		$parent->setAttributeNS($uri,$nsprefix.':'.$this->myDOMNode->localName,$this->myDOMNode->nodeValue);
		$this->myDOMNode=$parent->getAttributeNodeNS($uri,$this->myDOMNode->localName);
	}
	elseif ($this->myDOMNode->nodeType===XML_ELEMENT_NODE)
	{
		$NewNode=$this->myDOMNode->ownerDocument->createElementNS($uri,$nsprefix.':'.$this->myDOMNode->localName);
		foreach ($this->myDOMNode->attributes as $n) $NewNode->appendChild($n->cloneNode(true));
		foreach ($this->myDOMNode->childNodes as $n) $NewNode->appendChild($n->cloneNode(true));
		$xpath=new DOMXPath($this->myDOMNode->ownerDocument);
		$myDOMNodeList=$xpath->query('namespace::*[name()!="xml"]',$this->myDOMNode); //Add old namespaces
		foreach ($myDOMNodeList as $n) $NewNode->setAttributeNS('http://www.w3.org/2000/xmlns/',$n->nodeName,$n->nodeValue); 
		$this->myDOMNode->parentNode->replaceChild($NewNode,$this->myDOMNode);
		$this->myDOMNode=$NewNode;
	}
}
function unlink_node()
{
	if ($this->myDOMNode->parentNode!=null)
	{
		if ($this->myDOMNode->nodeType===XML_ATTRIBUTE_NODE) $this->myDOMNode->parentNode->removeAttributeNode($this->myDOMNode);
		else $this->myDOMNode->parentNode->removeChild($this->myDOMNode);
	}
}
protected function _importNode($newnode) {return $this->myOwnerDocument===$newnode->myOwnerDocument ? $newnode->myDOMNode : $this->myOwnerDocument->myDOMNode->importNode($newnode->myDOMNode,true);} //To import DOMNode from another DOMDocument
static function _newDOMElement($aDOMNode,$aOwnerDocument)
{//Check the PHP5 DOMNode before creating a new associated PHP4 DOMNode wrapper
	if ($aDOMNode==null) return null;
	switch ($aDOMNode->nodeType)
	{
		case XML_ELEMENT_NODE: return new php4DOMElement($aDOMNode,$aOwnerDocument);
		case XML_TEXT_NODE: return new php4DOMText($aDOMNode,$aOwnerDocument);
		case XML_ATTRIBUTE_NODE: return new php4DOMAttr($aDOMNode,$aOwnerDocument);
		case XML_PI_NODE: return new php4DomProcessingInstruction($aDOMNode,$aOwnerDocument);
		default: return new php4DOMNode($aDOMNode,$aOwnerDocument);
	}
}
}

class php4DomProcessingInstruction extends php4DOMNode
{
function data() {return $this->myDOMNode->data;}
function target() {return $this->myDOMNode->target;}
}

class php4DOMText extends php4DOMNode
{
function __get($name)
{
	if ($name==='tagname') return '#text';
	else return parent::__get($name);
}
function tagname() {return '#text';}
function set_content($text) {$this->myDOMNode->nodeValue=$text; return true;}
}

if (!defined('XPATH_NODESET'))
{
define('XPATH_UNDEFINED',0);
define('XPATH_NODESET',1);
define('XPATH_BOOLEAN',2);
define('XPATH_NUMBER',3);
define('XPATH_STRING',4);
/*define('XPATH_POINT',5);
define('XPATH_RANGE',6);
define('XPATH_LOCATIONSET',7);
define('XPATH_USERS',8);
define('XPATH_XSLT_TREE',9);*/
}

class php4DOMNodelist
{
private $myDOMNodelist;
public $nodeset;
public $type=XPATH_UNDEFINED;
public $value;
function php4DOMNodelist($aDOMNodelist,$aOwnerDocument)
{
	if (!isset($aDOMNodelist)) return; 
	elseif (is_object($aDOMNodelist)||is_array($aDOMNodelist))
	{
		if ($aDOMNodelist->length>0)
		{
			$this->myDOMNodelist=$aDOMNodelist;
			$this->nodeset=array();
			$this->type=XPATH_NODESET;
			$i=0;
			while ($node=$this->myDOMNodelist->item($i++)) $this->nodeset[]=php4DOMNode::_newDOMElement($node,$aOwnerDocument);
		}
	}
	elseif (is_int($aDOMNodelist)||is_float($aDOMNodelist))
	{
		$this->type=XPATH_NUMBER;
		$this->value=$aDOMNodelist;
	}
	elseif (is_bool($aDOMNodelist))
	{
		$this->type=XPATH_BOOLEAN;
		$this->value=$aDOMNodelist;
	}
	elseif (is_string($aDOMNodelist))
	{
		$this->type=XPATH_STRING;
		$this->value=$aDOMNodelist;
	}
}
}

class php4DOMXPath
{
public $myDOMXPath;
private $myOwnerDocument;
function php4DOMXPath($dom_document)
{
	//TODO: If $dom_document is a DomElement, make that default $contextnode and modify XPath. Ex: '/test'
	$this->myOwnerDocument=$dom_document->myOwnerDocument;
	$this->myDOMXPath=new DOMXPath($this->myOwnerDocument->myDOMNode);
}
function xpath_eval($eval_str,$contextnode=null)
{
	if (method_exists($this->myDOMXPath,'evaluate')) $xp=isset($contextnode->myDOMNode) ? $this->myDOMXPath->evaluate($eval_str,$contextnode->myDOMNode) : $this->myDOMXPath->evaluate($eval_str);
	else $xp=isset($contextnode->myDOMNode) ? $this->myDOMXPath->query($eval_str,$contextnode->myDOMNode) : $this->myDOMXPath->query($eval_str);
	$xp=new php4DOMNodelist($xp,$this->myOwnerDocument);
	return ($xp->type===XPATH_UNDEFINED) ? false : $xp;
}
function xpath_register_ns($prefix,$namespaceURI) {return $this->myDOMXPath->registerNamespace($prefix,$namespaceURI);}
}

if (extension_loaded('xsl'))
{//See also: [url="http://alexandre.alapetite.fr/doc-alex/xslt-php4-php5/"]http://alexandre.alapetite.fr/doc-alex/xslt-php4-php5/[/url]
function domxml_xslt_stylesheet($xslstring) {return new php4DomXsltStylesheet(DOMDocument::loadXML($xslstring));}
function domxml_xslt_stylesheet_doc($dom_document) {return new php4DomXsltStylesheet($dom_document);}
function domxml_xslt_stylesheet_file($xslfile) {return new php4DomXsltStylesheet(DOMDocument::load($xslfile));}
class php4DomXsltStylesheet
{
	private $myxsltProcessor;
	function php4DomXsltStylesheet($dom_document)
	{
		$this->myxsltProcessor=new xsltProcessor();
		$this->myxsltProcessor->importStyleSheet($dom_document);
	}
	function process($dom_document,$xslt_parameters=array(),$param_is_xpath=false)
	{
		foreach ($xslt_parameters as $param=>$value) $this->myxsltProcessor->setParameter('',$param,$value);
		$myphp4DOMDocument=new php4DOMDocument();
		$myphp4DOMDocument->myDOMNode=$this->myxsltProcessor->transformToDoc($dom_document->myDOMNode);
		return $myphp4DOMDocument;
	}
	function result_dump_file($dom_document,$filename)
	{
		$html=$dom_document->myDOMNode->saveHTML();
		file_put_contents($filename,$html);
		return $html;
	}
	function result_dump_mem($dom_document) {return $dom_document->myDOMNode->saveHTML();}
}
}
?>

 

Once you have done this add the following code to your index.php page

 

require(DIR_MOBILE_INCLUDES . 'domxml-php4-to-php5.php');

 

Hope this help.

Link to comment
Share on other sites

I managed to install it in a CRELoaded, and it works, but i get few errors:

 

1. when I'm in the shopping chart I get this error line just on top of the table with the products:

Fatal error: Call to undefined function: checkout_initialization_method() in /var/www/vhosts/cexy.co.uk/httpdocs/mobile/shopping_cart.php on line 160

 

2.On the top bar, I get BOX_HEADING_LANGUAGES, where should I define this?

 

3.When I click About buton on top I get BOX_INFORMATION_CONDITIONS, BOX_INFORMATION_SHIPPING, BOX_INFORMATION_PRIVACY, BOX_INFORMATION_CONTACT and when I click any of the "ERROR"

 

4. When I brouse the store under the description I get BOX_HEADING_REVIEWS, again where do i define this.

 

5. If I click account button on the top and click My Orders I get "1054 - Unknown column 's.public_flag' in 'where clause'

 

select count(*) as total from orders o, orders_total ot, orders_status s where o.customers_id = '12' and o.orders_id = ot.orders_id and ot.class = 'ot_total' and o.orders_status = s.orders_status_id and s.language_id = '1' and s.public_flag = '1'

 

[TEP STOP]

"

 

5. If I click account button on the top one of the option is: BOX_HEADING_NOTIFICATIONS

 

6. If I click Checkout, on the shipping page under the continue I have BOX_HEADING_SHOPPING_CART

Link to comment
Share on other sites

I managed to install it in a CRELoaded, and it works, but i get few errors:

 

1. when I'm in the shopping chart I get this error line just on top of the table with the products:

Fatal error: Call to undefined function: checkout_initialization_method() in /var/www/vhosts/cexy.co.uk/httpdocs/mobile/shopping_cart.php on line 160

 

2.On the top bar, I get BOX_HEADING_LANGUAGES, where should I define this?

 

3.When I click About buton on top I get BOX_INFORMATION_CONDITIONS, BOX_INFORMATION_SHIPPING, BOX_INFORMATION_PRIVACY, BOX_INFORMATION_CONTACT and when I click any of the "ERROR"

 

4. When I brouse the store under the description I get BOX_HEADING_REVIEWS, again where do i define this.

 

5. If I click account button on the top and click My Orders I get "1054 - Unknown column 's.public_flag' in 'where clause'

 

select count(*) as total from orders o, orders_total ot, orders_status s where o.customers_id = '12' and o.orders_id = ot.orders_id and ot.class = 'ot_total' and o.orders_status = s.orders_status_id and s.language_id = '1' and s.public_flag = '1'

 

[TEP STOP]

"

 

5. If I click account button on the top one of the option is: BOX_HEADING_NOTIFICATIONS

 

6. If I click Checkout, on the shipping page under the continue I have BOX_HEADING_SHOPPING_CART

 

 

I managed to fix all some of the problem but what i have left is:

 

1. when I'm in the shopping chart I get this error line just on top of the table with the products:

Fatal error: Call to undefined function: checkout_initialization_method() in /var/www/vhosts/cexy.co.uk/httpdocs/mobile/shopping_cart.php on line 160

 

2.When I click About buton on top I get BOX_INFORMATION_CONDITIONS, BOX_INFORMATION_SHIPPING, BOX_INFORMATION_PRIVACY, BOX_INFORMATION_CONTACT and when I click any of the "ERROR"

 

3. If I click account button on the top and click My Orders I get "1054 - Unknown column 's.public_flag' in 'where clause'

 

select count(*) as total from orders o, orders_total ot, orders_status s where o.customers_id = '12' and o.orders_id = ot.orders_id and ot.class = 'ot_total' and o.orders_status = s.orders_status_id and s.language_id = '1' and s.public_flag = '1'

 

[TEP STOP]

"

Link to comment
Share on other sites

I managed to fix all some of the problem but what i have left is:

 

1. when I'm in the shopping chart I get this error line just on top of the table with the products:

Fatal error: Call to undefined function: checkout_initialization_method() in /var/www/vhosts/cexy.co.uk/httpdocs/mobile/shopping_cart.php on line 160

 

2.When I click About button on top I get BOX_INFORMATION_CONDITIONS, BOX_INFORMATION_SHIPPING, BOX_INFORMATION_PRIVACY, BOX_INFORMATION_CONTACT and when I click any of the "ERROR"

 

3. If I click account button on the top and click My Orders I get "1054 - Unknown column 's.public_flag' in 'where clause'

 

select count(*) as total from orders o, orders_total ot, orders_status s where o.customers_id = '12' and o.orders_id = ot.orders_id and ot.class = 'ot_total' and o.orders_status = s.orders_status_id and s.language_id = '1' and s.public_flag = '1'

 

[TEP STOP]

"

 

OK, fixed most of the problems, just 2 left..

 

1. Fatal error: Call to undefined function: checkout_initialization_method() in /var/www/vhosts/cexy.co.uk/httpdocs/mobile/shopping_cart.php on line 160

 

Where do i have to define this function pleaseeeeeeeee?

 

2. For whatever reason netbanx is not working, if i choose netbanx and click confirm it gets redirected to netbanx page with a netbanx error 504 something that cannot handle the request. I tried from the main page ans its working fine.

Link to comment
Share on other sites

Hi, I think there is a problem with this contribution, I test it on my iphone and its appears to be working fine, but when you navigate to a category which have more than one page of products, it start loading and just before finishing the last product on the page, safari just crashes, it closes and it goes back to the iphone menu, I tried to stop from loading before it finishes to load all the page and if I click the "Show more Results" button for a second just on top of "Show more Results" it displays "Undefined" and again the browser closes and the iphone returns to its start page.

 

I also tried it on the PC on Firefox, everything works fine, except again if you go to a category that have allot of products, and click the "Show more Results" before the page has finished loading all the products again like on the iphone it shows "undefined", then bellow it shows more products but the currency symbol for the prices is nor £ any more is �

 

Also if you check the error console in firefox while loading the products page there are allot of errors.

 

In IE7, works fine except again the products page. Again for categories that have allot of products, it shows the first page and if you click the "Show more results" link nothing happened. Also in the status bar shows and error "Line:42, Char:3, Error: Unknown Runtime Error, Code:0, URL:http://www....../mobile/products.php?cPatch=6&osCsid=xxxxxxx"

 

Otherwise for categories with just one page of products, everything works beautifully on all browsers.

Link to comment
Share on other sites

Blank page problem - Fix

 

The reason why some of you are getting a blank home page is probably down to a PHP 4 - 5 issue.

 

This contribution contains the PHP function domxml which is no longer supported in PHP5. So for those of you hosting on a PHP5 server do the following.

 

Download this code and save it and upload to your includes directory.

 

For example call it

domxml-php4-to-php5.php

 

 

 

<?php
/*
Requires PHP5, uses built-in DOM extension.
To be used in PHP4 scripts using DOMXML extension: allows PHP4/DOMXML scripts to run on PHP5/DOM.
(Optional: requires PHP5/XSL extension for domxml_xslt functions, PHP>=5.1 for XPath evaluation functions, and PHP>=5.1/libxml for DOMXML error reports)

Version 1.21.1a, 2009-03-13, [url="http://alexandre.alapetite.fr/doc-alex/domxml-php4-php5/"]http://alexandre.alapetite.fr/doc-alex/domxml-php4-php5/[/url]

------------------------------------------------------------------
Written by Alexandre Alapetite, [url="http://alexandre.alapetite.fr/cv/"]http://alexandre.alapetite.fr/cv/[/url]

Copyright 2004-2009, GNU Lesser General Public License,
[url="http://www.gnu.org/licenses/lgpl.html"]http://www.gnu.org/licenses/lgpl.html[/url]

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/lgpl.html>

== Rights and obligations ==
- Attribution: You must give the original author credit.
- Share Alike: If you alter or transform this library,
   you may distribute the resulting library only under the same license GNU/LGPL.
- In case of jurisdiction dispute, the French law is authoritative.
- Any of these conditions can be waived if you get permission from Alexandre Alapetite.
- Not required, but please send to Alexandre Alapetite the modifications you make,
   in order to improve this file for the benefit of everybody.

If you want to distribute this code, please do it as a link to:
[url="http://alexandre.alapetite.fr/doc-alex/domxml-php4-php5/"]http://alexandre.alapetite.fr/doc-alex/domxml-php4-php5/[/url]
*/

define('DOMXML_LOAD_PARSING',0);
define('DOMXML_LOAD_VALIDATING',1);
define('DOMXML_LOAD_RECOVERING',2);
define('DOMXML_LOAD_SUBSTITUTE_ENTITIES',4);
//define('DOMXML_LOAD_COMPLETE_ATTRS',8);
define('DOMXML_LOAD_DONT_KEEP_BLANKS',16);

function domxml_new_doc($version) {return new php4DOMDocument();}
function domxml_new_xmldoc($version) {return new php4DOMDocument();}
function domxml_open_file($filename,$mode=DOMXML_LOAD_PARSING,&$error=null)
{
$dom=new php4DOMDocument($mode);
$errorMode=(func_num_args()>2)&&defined('LIBXML_VERSION');
if ($errorMode) libxml_use_internal_errors(true);
if (!$dom->myDOMNode->load($filename)) $dom=null;
if ($errorMode)
{
	$error=array_map('_error_report',libxml_get_errors());
	libxml_clear_errors();
}
return $dom;
}
function domxml_open_mem($str,$mode=DOMXML_LOAD_PARSING,&$error=null)
{
$dom=new php4DOMDocument($mode);
$errorMode=(func_num_args()>2)&&defined('LIBXML_VERSION');
if ($errorMode) libxml_use_internal_errors(true);
if (!$dom->myDOMNode->loadXML($str)) $dom=null;
if ($errorMode)
{
	$error=array_map('_error_report',libxml_get_errors());
	libxml_clear_errors();
}
return $dom;
}
function html_doc($html_doc,$from_file=false)
{
$dom=new php4DOMDocument();
if ($from_file) $result=$dom->myDOMNode->loadHTMLFile($html_doc);
else $result=$dom->myDOMNode->loadHTML($html_doc);
return $result ? $dom : null;
}
function html_doc_file($filename) {return html_doc($filename,true);}
function xmldoc($str) {return domxml_open_mem($str);}
function xmldocfile($filename) {return domxml_open_file($filename);}
function xpath_eval($xpath_context,$eval_str,$contextnode=null) {return $xpath_context->xpath_eval($eval_str,$contextnode);}
function xpath_new_context($dom_document) {return new php4DOMXPath($dom_document);}
function xpath_register_ns($xpath_context,$prefix,$namespaceURI) {return $xpath_context->myDOMXPath->registerNamespace($prefix,$namespaceURI);}
function _entityDecode($text) {return html_entity_decode(strtr($text,array('''=>'\'')),ENT_QUOTES,'UTF-8');}
function _error_report($error) {return array('errormessage'=>$error->message,'nodename'=>'','line'=>$error->line,'col'=>$error->column)+($error->file==''?array():array('directory'=>dirname($error->file),'file'=>basename($error->file)));}

class php4DOMAttr extends php4DOMNode
{
function __get($name)
{
	if ($name==='name') return $this->myDOMNode->name;
	else return parent::__get($name);
}
function name() {return $this->myDOMNode->name;}
function set_content($text) {}
//function set_value($content) {return $this->myDOMNode->value=htmlspecialchars($content,ENT_QUOTES);}
function specified() {return $this->myDOMNode->specified;}
function value() {return $this->myDOMNode->value;}
}

class php4DOMDocument extends php4DOMNode
{
function php4DOMDocument($mode=DOMXML_LOAD_PARSING)
{
	$this->myDOMNode=new DOMDocument();
	$this->myOwnerDocument=$this;
	if ($mode & DOMXML_LOAD_VALIDATING) $this->myDOMNode->validateOnParse=true;
	if ($mode & DOMXML_LOAD_RECOVERING) $this->myDOMNode->recover=true;
	if ($mode & DOMXML_LOAD_SUBSTITUTE_ENTITIES) $this->myDOMNode->substituteEntities=true;
	if ($mode & DOMXML_LOAD_DONT_KEEP_BLANKS) $this->myDOMNode->preserveWhiteSpace=false;
}
function add_root($name)
{
	if ($this->myDOMNode->hasChildNodes()) $this->myDOMNode->removeChild($this->myDOMNode->firstChild);
	return new php4DOMElement($this->myDOMNode->appendChild($this->myDOMNode->createElement($name)),$this->myOwnerDocument);
}
function create_attribute($name,$value)
{
	$myAttr=$this->myDOMNode->createAttribute($name);
	$myAttr->value=htmlspecialchars($value,ENT_QUOTES);
	return new php4DOMAttr($myAttr,$this);
}
function create_cdata_section($content) {return new php4DOMNode($this->myDOMNode->createCDATASection($content),$this);}
function create_comment($data) {return new php4DOMNode($this->myDOMNode->createComment($data),$this);}
function create_element($name) {return new php4DOMElement($this->myDOMNode->createElement($name),$this);}
function create_element_ns($uri,$name,$prefix=null)
{
	if ($prefix==null) $prefix=$this->myDOMNode->lookupPrefix($uri);
	if (($prefix==null)&&(($this->myDOMNode->documentElement==null)||(!$this->myDOMNode->documentElement->isDefaultNamespace($uri)))) $prefix='a'.sprintf('%u',crc32($uri));
	return new php4DOMElement($this->myDOMNode->createElementNS($uri,$prefix==null ? $name : $prefix.':'.$name),$this);
}
function create_entity_reference($content) {return new php4DOMNode($this->myDOMNode->createEntityReference($content),$this);} //By Walter Ebert 2007-01-22
function create_processing_instruction($target,$data=''){return new php4DomProcessingInstruction($this->myDOMNode->createProcessingInstruction($target,$data),$this);}
function create_text_node($content) {return new php4DOMText($this->myDOMNode->createTextNode($content),$this);}
function document_element() {return parent::_newDOMElement($this->myDOMNode->documentElement,$this);}
function dump_file($filename,$compressionmode=false,$format=false)
{
	$format0=$this->myDOMNode->formatOutput;
	$this->myDOMNode->formatOutput=$format;
	$res=$this->myDOMNode->save($filename);
	$this->myDOMNode->formatOutput=$format0;
	return $res;
}
function dump_mem($format=false,$encoding=false)
{
	$format0=$this->myDOMNode->formatOutput;
	$this->myDOMNode->formatOutput=$format;
	$encoding0=$this->myDOMNode->encoding;
	if ($encoding) $this->myDOMNode->encoding=$encoding;
	$dump=$this->myDOMNode->saveXML();
	$this->myDOMNode->formatOutput=$format0;
	if ($encoding) $this->myDOMNode->encoding= $encoding0=='' ? 'UTF-8' : $encoding0; //UTF-8 is XML default encoding
	return $dump;
}
function free()
{
	if ($this->myDOMNode->hasChildNodes()) $this->myDOMNode->removeChild($this->myDOMNode->firstChild);
	$this->myDOMNode=null;
	$this->myOwnerDocument=null;
}
function get_element_by_id($id) {return parent::_newDOMElement($this->myDOMNode->getElementById($id),$this);}
function get_elements_by_tagname($name)
{
	$myDOMNodeList=$this->myDOMNode->getElementsByTagName($name);
	$nodeSet=array();
	$i=0;
	if (isset($myDOMNodeList))
		while ($node=$myDOMNodeList->item($i++)) $nodeSet[]=new php4DOMElement($node,$this);
	return $nodeSet;
}
function html_dump_mem() {return $this->myDOMNode->saveHTML();}
function root() {return parent::_newDOMElement($this->myDOMNode->documentElement,$this);}
function xinclude() {return $this->myDOMNode->xinclude();}
function xpath_new_context() {return new php4DOMXPath($this);}
}

class php4DOMElement extends php4DOMNode
{
function add_namespace($uri,$prefix)
{
	if ($this->myDOMNode->hasAttributeNS('http://www.w3.org/2000/xmlns/',$prefix)) return false;
	else
	{
		$this->myDOMNode->setAttributeNS('http://www.w3.org/2000/xmlns/','xmlns:'.$prefix,$uri); //By Daniel Walker 2006-09-08
		return true;
	}
}
function get_attribute($name) {return $this->myDOMNode->getAttribute($name);}
function get_attribute_node($name) {return parent::_newDOMElement($this->myDOMNode->getAttributeNode($name),$this->myOwnerDocument);}
function get_elements_by_tagname($name)
{
	$myDOMNodeList=$this->myDOMNode->getElementsByTagName($name);
	$nodeSet=array();
	$i=0;
	if (isset($myDOMNodeList))
		while ($node=$myDOMNodeList->item($i++)) $nodeSet[]=new php4DOMElement($node,$this->myOwnerDocument);
	return $nodeSet;
}
function has_attribute($name) {return $this->myDOMNode->hasAttribute($name);}
function remove_attribute($name) {return $this->myDOMNode->removeAttribute($name);}
function set_attribute($name,$value)
{
	//return $this->myDOMNode->setAttribute($name,$value); //Does not return a DomAttr
	$myAttr=$this->myDOMNode->ownerDocument->createAttribute($name);
	$myAttr->value=htmlspecialchars($value,ENT_QUOTES); //Entity problem reported by AL-DesignWorks 2007-09-07
	$this->myDOMNode->setAttributeNode($myAttr);
	return new php4DOMAttr($myAttr,$this->myOwnerDocument);
}
/*function set_attribute_node($attr)
{
	$this->myDOMNode->setAttributeNode($this->_importNode($attr));
	return $attr;
}*/
function set_name($name)
{
	if ($this->myDOMNode->prefix=='') $newNode=$this->myDOMNode->ownerDocument->createElement($name);
	else $newNode=$this->myDOMNode->ownerDocument->createElementNS($this->myDOMNode->namespaceURI,$this->myDOMNode->prefix.':'.$name);
	$myDOMNodeList=$this->myDOMNode->attributes;
	$i=0;
	if (isset($myDOMNodeList))
		while ($node=$myDOMNodeList->item($i++))
			if ($node->namespaceURI=='') $newNode->setAttribute($node->name,$node->value);
			else $newNode->setAttributeNS($node->namespaceURI,$node->nodeName,$node->value);
	$myDOMNodeList=$this->myDOMNode->childNodes;
	if (isset($myDOMNodeList))
		while ($node=$myDOMNodeList->item(0)) $newNode->appendChild($node);
	$this->myDOMNode->parentNode->replaceChild($newNode,$this->myDOMNode);
	$this->myDOMNode=$newNode;
	return true;
}
function tagname() {return $this->tagname;}
}

class php4DOMNode
{
public $myDOMNode;
public $myOwnerDocument;
function php4DOMNode($aDomNode,$aOwnerDocument)
{
	$this->myDOMNode=$aDomNode;
	$this->myOwnerDocument=$aOwnerDocument;
}
function __get($name)
{
	switch ($name)
	{
		case 'type': return $this->myDOMNode->nodeType;
		case 'tagname': return ($this->myDOMNode->nodeType===XML_ELEMENT_NODE) ? $this->myDOMNode->localName : $this->myDOMNode->tagName; //Avoid namespace prefix for DOMElement
		case 'content': return $this->myDOMNode->textContent;
		case 'value': return $this->myDOMNode->value;
		default:
			$myErrors=debug_backtrace();
			trigger_error('Undefined property: '.get_class($this).'::$'.$name.' ['.$myErrors[0]['file'].':'.$myErrors[0]['line'].']',E_USER_NOTICE);
			return false;
	}
}
function add_child($newnode) {return append_child($newnode);}
function add_namespace($uri,$prefix) {return false;}
function append_child($newnode) {return self::_newDOMElement($this->myDOMNode->appendChild($this->_importNode($newnode)),$this->myOwnerDocument);}
function append_sibling($newnode) {return self::_newDOMElement($this->myDOMNode->parentNode->appendChild($this->_importNode($newnode)),$this->myOwnerDocument);}
function attributes()
{
	$myDOMNodeList=$this->myDOMNode->attributes;
	if (!(isset($myDOMNodeList)&&$this->myDOMNode->hasAttributes())) return null;
	$nodeSet=array();
	$i=0;
	while ($node=$myDOMNodeList->item($i++)) $nodeSet[]=new php4DOMAttr($node,$this->myOwnerDocument);
	return $nodeSet;
}
function child_nodes()
{
	$myDOMNodeList=$this->myDOMNode->childNodes;
	$nodeSet=array();
	$i=0;
	if (isset($myDOMNodeList))
		while ($node=$myDOMNodeList->item($i++)) $nodeSet[]=self::_newDOMElement($node,$this->myOwnerDocument);
	return $nodeSet;
}
function children() {return $this->child_nodes();}
function clone_node($deep=false) {return self::_newDOMElement($this->myDOMNode->cloneNode($deep),$this->myOwnerDocument);}
//dump_node($node) should only be called on php4DOMDocument
function dump_node($node=null) {return $node==null ? $this->myOwnerDocument->myDOMNode->saveXML($this->myDOMNode) : $this->myOwnerDocument->myDOMNode->saveXML($node->myDOMNode);}
function first_child() {return self::_newDOMElement($this->myDOMNode->firstChild,$this->myOwnerDocument);}
function get_content() {return $this->myDOMNode->textContent;}
function has_attributes() {return $this->myDOMNode->hasAttributes();}
function has_child_nodes() {return $this->myDOMNode->hasChildNodes();}
function insert_before($newnode,$refnode) {return self::_newDOMElement($this->myDOMNode->insertBefore($this->_importNode($newnode),$refnode==null?null:$refnode->myDOMNode),$this->myOwnerDocument);}
function is_blank_node() {return ($this->myDOMNode->nodeType===XML_TEXT_NODE)&&preg_match('%^\s*$%',$this->myDOMNode->nodeValue);}
function last_child() {return self::_newDOMElement($this->myDOMNode->lastChild,$this->myOwnerDocument);}
function new_child($name,$content)
{
	$mySubNode=$this->myDOMNode->ownerDocument->createElement($name);
	$mySubNode->appendChild($this->myDOMNode->ownerDocument->createTextNode(_entityDecode($content)));
	$this->myDOMNode->appendChild($mySubNode);
	return new php4DOMElement($mySubNode,$this->myOwnerDocument);
}
function next_sibling() {return self::_newDOMElement($this->myDOMNode->nextSibling,$this->myOwnerDocument);}
function node_name() {return ($this->myDOMNode->nodeType===XML_ELEMENT_NODE) ? $this->myDOMNode->localName : $this->myDOMNode->nodeName;} //Avoid namespace prefix for DOMElement
function node_type() {return $this->myDOMNode->nodeType;}
function node_value() {return $this->myDOMNode->nodeValue;}
function owner_document() {return $this->myOwnerDocument;}
function parent_node() {return self::_newDOMElement($this->myDOMNode->parentNode,$this->myOwnerDocument);}
function prefix() {return $this->myDOMNode->prefix;}
function previous_sibling() {return self::_newDOMElement($this->myDOMNode->previousSibling,$this->myOwnerDocument);}
function remove_child($oldchild) {return self::_newDOMElement($this->myDOMNode->removeChild($oldchild->myDOMNode),$this->myOwnerDocument);}
function replace_child($newnode,$oldnode) {return self::_newDOMElement($this->myDOMNode->replaceChild($this->_importNode($newnode),$oldnode->myDOMNode),$this->myOwnerDocument);}
function replace_node($newnode) {return self::_newDOMElement($this->myDOMNode->parentNode->replaceChild($this->_importNode($newnode),$this->myDOMNode),$this->myOwnerDocument);}
function set_content($text) {return $this->myDOMNode->appendChild($this->myDOMNode->ownerDocument->createTextNode(_entityDecode($text)));} //Entity problem reported by AL-DesignWorks 2007-09-07
//function set_name($name) {return $this->myOwnerDocument->renameNode($this->myDOMNode,$this->myDOMNode->namespaceURI,$name);}
function set_namespace($uri,$prefix=null)
{//Contributions by Daniel Walker 2006-09-08
	$nsprefix=$this->myDOMNode->lookupPrefix($uri);
	if ($nsprefix==null)
	{
		$nsprefix= $prefix==null ? $nsprefix='a'.sprintf('%u',crc32($uri)) : $prefix;
		if ($this->myDOMNode->nodeType===XML_ATTRIBUTE_NODE)
		{
			if (($prefix!=null)&&$this->myDOMNode->ownerElement->hasAttributeNS('http://www.w3.org/2000/xmlns/',$nsprefix)&&
				($this->myDOMNode->ownerElement->getAttributeNS('http://www.w3.org/2000/xmlns/',$nsprefix)!=$uri))
			{//Remove namespace
				$parent=$this->myDOMNode->ownerElement;
				$parent->removeAttributeNode($this->myDOMNode);
				$parent->setAttribute($this->myDOMNode->localName,$this->myDOMNode->nodeValue);
				$this->myDOMNode=$parent->getAttributeNode($this->myDOMNode->localName);
				return;
			}
			$this->myDOMNode->ownerElement->setAttributeNS('http://www.w3.org/2000/xmlns/','xmlns:'.$nsprefix,$uri);
		}
	}
	if ($this->myDOMNode->nodeType===XML_ATTRIBUTE_NODE)
	{
		$parent=$this->myDOMNode->ownerElement;
		$parent->removeAttributeNode($this->myDOMNode);
		$parent->setAttributeNS($uri,$nsprefix.':'.$this->myDOMNode->localName,$this->myDOMNode->nodeValue);
		$this->myDOMNode=$parent->getAttributeNodeNS($uri,$this->myDOMNode->localName);
	}
	elseif ($this->myDOMNode->nodeType===XML_ELEMENT_NODE)
	{
		$NewNode=$this->myDOMNode->ownerDocument->createElementNS($uri,$nsprefix.':'.$this->myDOMNode->localName);
		foreach ($this->myDOMNode->attributes as $n) $NewNode->appendChild($n->cloneNode(true));
		foreach ($this->myDOMNode->childNodes as $n) $NewNode->appendChild($n->cloneNode(true));
		$xpath=new DOMXPath($this->myDOMNode->ownerDocument);
		$myDOMNodeList=$xpath->query('namespace::*[name()!="xml"]',$this->myDOMNode); //Add old namespaces
		foreach ($myDOMNodeList as $n) $NewNode->setAttributeNS('http://www.w3.org/2000/xmlns/',$n->nodeName,$n->nodeValue); 
		$this->myDOMNode->parentNode->replaceChild($NewNode,$this->myDOMNode);
		$this->myDOMNode=$NewNode;
	}
}
function unlink_node()
{
	if ($this->myDOMNode->parentNode!=null)
	{
		if ($this->myDOMNode->nodeType===XML_ATTRIBUTE_NODE) $this->myDOMNode->parentNode->removeAttributeNode($this->myDOMNode);
		else $this->myDOMNode->parentNode->removeChild($this->myDOMNode);
	}
}
protected function _importNode($newnode) {return $this->myOwnerDocument===$newnode->myOwnerDocument ? $newnode->myDOMNode : $this->myOwnerDocument->myDOMNode->importNode($newnode->myDOMNode,true);} //To import DOMNode from another DOMDocument
static function _newDOMElement($aDOMNode,$aOwnerDocument)
{//Check the PHP5 DOMNode before creating a new associated PHP4 DOMNode wrapper
	if ($aDOMNode==null) return null;
	switch ($aDOMNode->nodeType)
	{
		case XML_ELEMENT_NODE: return new php4DOMElement($aDOMNode,$aOwnerDocument);
		case XML_TEXT_NODE: return new php4DOMText($aDOMNode,$aOwnerDocument);
		case XML_ATTRIBUTE_NODE: return new php4DOMAttr($aDOMNode,$aOwnerDocument);
		case XML_PI_NODE: return new php4DomProcessingInstruction($aDOMNode,$aOwnerDocument);
		default: return new php4DOMNode($aDOMNode,$aOwnerDocument);
	}
}
}

class php4DomProcessingInstruction extends php4DOMNode
{
function data() {return $this->myDOMNode->data;}
function target() {return $this->myDOMNode->target;}
}

class php4DOMText extends php4DOMNode
{
function __get($name)
{
	if ($name==='tagname') return '#text';
	else return parent::__get($name);
}
function tagname() {return '#text';}
function set_content($text) {$this->myDOMNode->nodeValue=$text; return true;}
}

if (!defined('XPATH_NODESET'))
{
define('XPATH_UNDEFINED',0);
define('XPATH_NODESET',1);
define('XPATH_BOOLEAN',2);
define('XPATH_NUMBER',3);
define('XPATH_STRING',4);
/*define('XPATH_POINT',5);
define('XPATH_RANGE',6);
define('XPATH_LOCATIONSET',7);
define('XPATH_USERS',8);
define('XPATH_XSLT_TREE',9);*/
}

class php4DOMNodelist
{
private $myDOMNodelist;
public $nodeset;
public $type=XPATH_UNDEFINED;
public $value;
function php4DOMNodelist($aDOMNodelist,$aOwnerDocument)
{
	if (!isset($aDOMNodelist)) return; 
	elseif (is_object($aDOMNodelist)||is_array($aDOMNodelist))
	{
		if ($aDOMNodelist->length>0)
		{
			$this->myDOMNodelist=$aDOMNodelist;
			$this->nodeset=array();
			$this->type=XPATH_NODESET;
			$i=0;
			while ($node=$this->myDOMNodelist->item($i++)) $this->nodeset[]=php4DOMNode::_newDOMElement($node,$aOwnerDocument);
		}
	}
	elseif (is_int($aDOMNodelist)||is_float($aDOMNodelist))
	{
		$this->type=XPATH_NUMBER;
		$this->value=$aDOMNodelist;
	}
	elseif (is_bool($aDOMNodelist))
	{
		$this->type=XPATH_BOOLEAN;
		$this->value=$aDOMNodelist;
	}
	elseif (is_string($aDOMNodelist))
	{
		$this->type=XPATH_STRING;
		$this->value=$aDOMNodelist;
	}
}
}

class php4DOMXPath
{
public $myDOMXPath;
private $myOwnerDocument;
function php4DOMXPath($dom_document)
{
	//TODO: If $dom_document is a DomElement, make that default $contextnode and modify XPath. Ex: '/test'
	$this->myOwnerDocument=$dom_document->myOwnerDocument;
	$this->myDOMXPath=new DOMXPath($this->myOwnerDocument->myDOMNode);
}
function xpath_eval($eval_str,$contextnode=null)
{
	if (method_exists($this->myDOMXPath,'evaluate')) $xp=isset($contextnode->myDOMNode) ? $this->myDOMXPath->evaluate($eval_str,$contextnode->myDOMNode) : $this->myDOMXPath->evaluate($eval_str);
	else $xp=isset($contextnode->myDOMNode) ? $this->myDOMXPath->query($eval_str,$contextnode->myDOMNode) : $this->myDOMXPath->query($eval_str);
	$xp=new php4DOMNodelist($xp,$this->myOwnerDocument);
	return ($xp->type===XPATH_UNDEFINED) ? false : $xp;
}
function xpath_register_ns($prefix,$namespaceURI) {return $this->myDOMXPath->registerNamespace($prefix,$namespaceURI);}
}

if (extension_loaded('xsl'))
{//See also: [url="http://alexandre.alapetite.fr/doc-alex/xslt-php4-php5/"]http://alexandre.alapetite.fr/doc-alex/xslt-php4-php5/[/url]
function domxml_xslt_stylesheet($xslstring) {return new php4DomXsltStylesheet(DOMDocument::loadXML($xslstring));}
function domxml_xslt_stylesheet_doc($dom_document) {return new php4DomXsltStylesheet($dom_document);}
function domxml_xslt_stylesheet_file($xslfile) {return new php4DomXsltStylesheet(DOMDocument::load($xslfile));}
class php4DomXsltStylesheet
{
	private $myxsltProcessor;
	function php4DomXsltStylesheet($dom_document)
	{
		$this->myxsltProcessor=new xsltProcessor();
		$this->myxsltProcessor->importStyleSheet($dom_document);
	}
	function process($dom_document,$xslt_parameters=array(),$param_is_xpath=false)
	{
		foreach ($xslt_parameters as $param=>$value) $this->myxsltProcessor->setParameter('',$param,$value);
		$myphp4DOMDocument=new php4DOMDocument();
		$myphp4DOMDocument->myDOMNode=$this->myxsltProcessor->transformToDoc($dom_document->myDOMNode);
		return $myphp4DOMDocument;
	}
	function result_dump_file($dom_document,$filename)
	{
		$html=$dom_document->myDOMNode->saveHTML();
		file_put_contents($filename,$html);
		return $html;
	}
	function result_dump_mem($dom_document) {return $dom_document->myDOMNode->saveHTML();}
}
}
?>

 

Once you have done this add the following code to your index.php page

 

require(DIR_MOBILE_INCLUDES . 'domxml-php4-to-php5.php');

 

Hope this help.

 

YES!!!! it works!!!

 

I have a little problem with some words, usually show good, like these words

 

Nutrición Deportiva

Cosmética Natural

 

But...

Alimentación

...show

Alimentaci????

 

any idea?

 

Thanks!!

Link to comment
Share on other sites

  • 2 weeks later...

There is no help in this forum, nice contribution but kinda abandoned, nobody else notice that it doesn't actually WORKS? Did anybody actually bothered to test it in an iphone, if no navigate to your page from an iphone and go to a category that has more than one page of products, the page will crash and close, is this how you want your customers to leave the store?

Link to comment
Share on other sites

  • 3 weeks later...

This is Release v2.0(beta) of iOSC - mobile version of OSCommerce for iPhone.

Previous version of iOSC had to many compatibility problems because mobile files where located in separate subdirectory.

This is different approach and all mobile files are located on the same catalog.

Please , give it a try and let me know about any issues.

Link to comment
Share on other sites

catalog/mobile/mobile_index.php doesn't exist.

 

it will go to catalog/mobile_index.php??

 

running catalog/mobile_index.php show blank page with up menu

 

Edit for blank page using "domxml-php4-to-php5.php" comment previusly for another partner in this forum solve the problem :)

 

Bye!!

Edited by PiLLaO
Link to comment
Share on other sites

I've successfully gotten the code to work, now that I know it is presently running on top of the RC2, rather than milestone 2.2, that was important to know. The last things that I can't get to work, and am working on presently are:

 

- mobile_index.php only shows the header, but nothing in the body, no category links present at all.

- mobile_advanced_search_result.php link at the bottom does not function to "view more products". However if I can't get this to solve, I'll just set the sql query to be a lot higher to compensate, 100 should be sufficient, but if this also is a problem, then I'll set it up to 400.

Link to comment
Share on other sites

I've successfully gotten the code to work, now that I know it is presently running on top of the RC2, rather than milestone 2.2, that was important to know. The last things that I can't get to work, and am working on presently are:

 

- mobile_index.php only shows the header, but nothing in the body, no category links present at all.

- mobile_advanced_search_result.php link at the bottom does not function to "view more products". However if I can't get this to solve, I'll just set the sql query to be a lot higher to compensate, 100 should be sufficient, but if this also is a problem, then I'll set it up to 400.

 

To solve mobile_index.php problem, use this: http://www.oscommerce.com/forums/index.php?s=&...t&p=1415893

 

Bye!

Link to comment
Share on other sites

Aye, well that was a simple solve. Still no luck with the ajax parsing of the "show more results" yet.

 

Also, fyi: there's a hiccup in the code in mobile_products.php for the "PC SITE" link. Just omit:

"DIR_MAIN_HTTP_CATALOG . " from line 28.

Link to comment
Share on other sites

PiLLaO, jholdersatx

Thank you.

 

Changes in v2.0c

This is Release v2.0c(beta) of iOSC - mobile version of OSCommerce for iPhone.

More errors in AJAX part resolved. Ajax i disable by default right now.

To initialize AJAX go to catalog/mobile/includes/configure.php

and replace last line with

 

define ('AJAX_ENABLED', false);

 

Bad link in PC Site button corrected.

 

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

Link to comment
Share on other sites

In header, index y account go to "pc site",

 

index.php, editing configure.php uncomment //define ('FILENAME_DEFAULT', 'mobile_index.php');

 

account, it will be changing in header.php <?php echo tep_mobile_link(FILENAME_ACCOUNT);?>'"> to <?php echo tep_mobile_link(FILENAME_MOBILE_ACCOUNT);?>'"> ???

 

When I click on a category, it's redirect to "pc site"

 

Bye!!

Link to comment
Share on other sites

The redirection might be intentional, seeing as currently, he's trying to run it in tandem with an existing shopping cart RC2. With the redirection in place for WAP broswers, or whichever. Meaning that, if you were on the mobile site on a pc, you would get taken to the pc version of the store, rather than if you were on the mobile site on a mobile phone, it would do the reverse.

Link to comment
Share on other sites

By default for WAP browsers I'm trying to redirect every page to mobile version (if exists)

Logic is in mobile/includes/classes/mobile_redirect.php

If you want to suppress redirect you call any page with

$_GET['redirectCancelled'] == 'true'

Link to comment
Share on other sites

There's some kind of glitch that I encountered though that I can't reproduce, when running on my pocket pc smartphone, on opera mini, I clicked on "pc store" as a link, and now it's just "stuck" in pc mode, it won't allow me to automatically re-enter wap mode, so much so that I'm just going to flush my changes and restart the whole installation.

Link to comment
Share on other sites

mobile_about.php isn't referencing the proper variable, they're going to "FILENAME_CONDITIONS" but should be going to "FILENAME_MOBILE_CONDITIONS"

 

Also header.php is linking to FILENAME_ACCOUNT instead of FILENAME_MOBILE_ACCOUNT, or the other way around, for uniformity's sake.

Link to comment
Share on other sites

Join the conversation

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

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

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

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

×   Your previous content has been restored.   Clear editor

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

×
×
  • Create New...