Page 1 of 2 12 LastLast
Results 1 to 10 of 19
  1. #1
    Join Date
    May 2009
    Location
    from parts unknown
    Posts
    74
    Plugin Contributions
    0

    Default need fresh eyes for possible addon (modified from osc)

    hi All,

    just need some fresh eyes to tell me what i am doing wrong.
    ( I am trying to convert from OScommerce ) = iphone module for the admin section.

    please keep in mind i am new to zen and my friend(mentor) is still at uni now.......i should be tooooooo LOL.

    oh well im sure to get criticism(all is welcome) but here we go.

    Code:
    <?php
    /**
     * Zen iphone.php -- version 1.0beta
     * 
     * Modified by MrChristoh
     *
     * By Dirk Malorny <iphone-apps (at) malorny (dot) net>
     * You may modify this script to fulfill your special needs, but all modifications you make are at your own risk!
     */
     
    require('includes/application_top.php');
    
    define("VERSION","1.0beta conversion");
    define("DELIMITER","|");
    
    // =========================== MAIN ===========================
    
    $action = (isset($_REQUEST['a']) ? $_REQUEST['a'] : '');
    
    if (zen_not_null($action)) {
    	header('Content-Type: text/plain; Charset=UTF-8');
    	
    	switch ($action) {
    		
    	case 'login':
    		echo "OK";
    		break;
    		
    		
    	case 'status':
    		// 1: plugin version
    		echo VERSION."\n";
    		
    		// 2: order_status
    		$status_query = create_status_query();
    		$arr = array();
    		while ($status = zen_db_fetch_array($status_query)) {
    			$arr[] = $status['orders_status_id'].':'.escape($status['orders_status_name']);
    		}
    		outputStatusLine($arr);
    		
    		// 3: order count
    		$order_count = zen_db_fetch_array(create_order_count_query());
    		echo $order_count['count']."\n";
    		
    		break;
    
    
    	case 'customers':
    		$customers_query = create_customer_query($_REQUEST['lu']);
    			
    		while ($customers = zen_db_fetch_array($customers_query)) {
    			$arr = array();
    			$arr[] = $customers['customers_id'];
    			$arr[] = $customers['customers_lastname'];
    			$arr[] = $customers['customers_firstname'];
    			$arr[] = $customers['customers_email_address'];
    			$arr[] = $customers['customers_dob'];
    			$arr[] = $customers['customers_telephone'];
    			$arr[] = $customers['customers_fax'];
    			$arr[] = $customers['entry_company'];
    			$arr[] = $customers['entry_street_address'];
    			$arr[] = $customers['entry_postcode'];
    			$arr[] = $customers['entry_city'];
    			$arr[] = $customers['entry_state'];
    			$arr[] = $customers['countries_name'];
    			outputLine($arr);
    		}
    		break;
    		
    
    	case 'products':
    		$products_query = create_products_query($_REQUEST['lu'],$_REQUEST['of'],$_REQUEST['li']);
    			
    		while ($products = zen_db_fetch_array($products_query)) {
    			
    			$arr = array();
    			$arr[] = $products['products_id'];
    			$arr[] = $products['products_model'];
    			$arr[] = $products['products_price'];
    			$arr[] = $products['products_name'];
    			$arr[] = ereg_replace("[\n\r]",'\n',$products['products_description']);
    			outputLine($arr);
    		}
    		break;
    
    		
    	case 'orders':
    		$orders_query = create_orders_query($_REQUEST['lu'],$_REQUEST['of'],$_REQUEST['li']);
    	
    		$orderIds = array();
    		while ($orders = zen_db_fetch_array($orders_query)) {
    			$orderIds[] = $orders['orders_id'];
    			$arr = array();
    			$arr[] = $orders['orders_id'];
    			$arr[] = $orders['customers_id'];
    			$arr[] = $orders['orders_status_id'];
    			$arr[] = $orders['customers_name'];
    			$arr[] = $orders['payment_method'];
    			$arr[] = $orders['date_purchased'];
    			$arr[] = $orders['currency'];
    			$arr[] = $orders['orders_status_name'];
    			$arr[] = $orders['order_total'];
    			outputLine($arr);
    		}
    		
    		if (!$orderIds) continue;
    		
    		// order items
    		echo "\n--\n\n";
    		$orderIds = implode(',',$orderIds);
    	
    		$items_query = create_items_query($orderIds);
    	
    		while ($items = zen_db_fetch_array($items_query)) {
    			$arr = array();
    			$arr[] = $items['orders_products_id'];
    			$arr[] = $items['orders_id'];
    			$arr[] = $items['products_id'];
    			$arr[] = $items['products_quantity'];
    			$arr[] = $items['products_model'];
    			$arr[] = $items['products_name'];
    			$arr[] = $items['products_price'];
    			$arr[] = $items['final_price'];
    			$arr[] = $items['products_tax'];
    			$arr[] = html_entity_decode(ereg_replace("[\n\r]",'\n',$items['attributes']));
    			outputLine($arr);
    		}
    		break;
    		
    
    	
    	default:
    		echo "unknown action";
    		break;
    
    	} // switch
    } else {
    	// TESTMODE
    	$TEST_RESULT = true;
    	testSuite();
    } // MAIN
    
    
    
    
    // =========================== QUERY functions ===========================
    
    function create_customer_query($lu)
    {
    	$filter = '';
    	if (isset($lu) && zen_not_null($lu)) {
    		$last_update = zen_db_input(zen_db_prepare_input($lu));
    		$filter = "where i.customers_info_date_account_created > '$last_update' 
    					  or i.customers_info_date_account_last_modified > '$last_update'";
    	}
    
    	$customers_query = zen_db_query("
    	select 
    		c.customers_id, 
    		c.customers_lastname,
    		c.customers_firstname,
    		c.customers_email_address,
    		NULLIF(DATE_FORMAT(c.customers_dob,'%Y-%m-%d'),'0000-00-00') customers_dob,
    		c.customers_telephone,
    		c.customers_fax,
    		a.entry_company,
    		a.entry_street_address,
    		a.entry_postcode,
    		a.entry_city,
    		a.entry_state,
    		l.countries_name 
    	from " . zen_customers . " c 
    		 left join " . zen_address_book . " a on c.customers_id = a.customers_id and c.customers_default_address_id = a.address_book_id
    		 left join " . zen_countries . " l on a.entry_country_id = l.countries_id
    		 left join " . zen_customers_info . " i on  c.customers_id = i.customers_info_id
    	$filter 
    	order by c.customers_id");
    	
    	return $customers_query;
    }
    
    function create_products_query($lu,$of,$li)
    {
    	$filter = '';
    	$limit  = '';
    	if (isset($lu) && zen_not_null($lu)) {
    		$last_update = zen_db_input(zen_db_prepare_input($lu));
    		$filter = " and p.products_date_added > '$last_update' 
    					  or p.products_last_modified > '$last_update'";
    	}
    	if (isset($of) && zen_not_null($of)) {
    		$offset = zen_db_input(zen_db_prepare_input($of));
    		$filter .= " and p.products_id < $offset";
    	}
    	if (isset($li) && zen_not_null($li)) {
    		$limit = "limit " . zen_db_input(zen_db_prepare_input($li));
    	}
    
    	$products_query = zen_db_query("
    	select 
    		p.products_id, 
    		p.products_model,
    		p.products_price,
    		d.products_name,
    		d.products_description
    	from " . ZEN_PRODUCTS . " p
    		 left join " . ZEN_PRODUCTS_DESCRIPTION . " d on d.products_id = p.products_id
    		 left join " . ZEN_LANGUAGES . " l on l.languages_id = d.language_id
    	where 1
    		$filter 
    	order by p.products_id DESC
    	$limit
    	");
    	
    	return $products_query;
    }
    
    function create_orders_query($lu,$of,$li)
    {
    	global $languages_id;
    	
    	$filter = '';
    	$limit  = '';
    	if (isset($lu) && zen_not_null($lu)) {
    		$last_update = zen_db_input(zen_db_prepare_input($lu));
    		$filter .= " and (o.date_purchased > '$last_update' 
    					 or o.last_modified > '$last_update')";
    	}
    	if (isset($of) && zen_not_null($of)) {
    		$offset = zen_db_input(zen_db_prepare_input($of));
    		$filter .= " and o.orders_id < $offset";
    	}
    	if (isset($li) && zen_not_null($li)) {
    		$limit = "limit " . zen_db_input(zen_db_prepare_input($li));
    	}
    	
    	$orders_query = zen_db_query("
    	select 
    		o.orders_id,
    		o.customers_id,
    		o.customers_name,
    		o.payment_method,
    		DATE_FORMAT(o.date_purchased,'%Y-%m-%d %H:%i:%s') date_purchased,
    		o.currency,
    		s.orders_status_id,
    		s.orders_status_name,
    		ot.value as order_total
    	from " . ZEN_ORDERS . " o 
    		 left join " . ZEN_ORDERS_TOTAL . " ot on (o.orders_id = ot.orders_id),
    		 " . ZEN_ORDERS_STATUS . " s 
    	where o.orders_status = s.orders_status_id 
    		and s.language_id = '" . (int)$languages_id . "' 
    		and ot.class = 'ot_total'
    		$filter
    	order by o.orders_id DESC
    	$limit
    	");
    	
    	return $orders_query;
    }
    
    function create_items_query($orderIds)
    {
    	$items_query = zen_db_query("
    	select 
    		op.orders_products_id,
    		op.orders_id,
    		op.products_id,
    		op.products_quantity,
    		op.products_model,
    		op.products_name,
    		op.products_price,
    		op.final_price,
    		op.products_tax,
    		group_concat(replace(concat_ws(':',replace(opa.products_options,':','{colon}'),replace(opa.products_options_values,':','{colon}')),'*','{star}') separator '*') attributes
    	from " . ZEN_ORDERS_PRODUCTS . " op 
    	left outer join
    		 " . ZEN_ORDERS_PRODUCTS_ATTRIBUTES . " opa
    		 on op.orders_id=opa.orders_id
    		and op.orders_products_id=opa.orders_products_id
    	where op.orders_id in ($orderIds)
    	group by op.orders_products_id
    	order by op.orders_id DESC
    	");
    	
    	return $items_query;
    }
    
    function create_status_query()
    {
    	global $languages_id;
    	
    	$status_query = zen_db_query("
    	select 
    		s.orders_status_id,
    		s.orders_status_name
    	from " . ZEN_ORDERS_STATUS . " s 
    	where s.language_id = '" . (int)$languages_id . "' 
    	order by s.orders_status_id
    	");
    	
    	return $status_query;
    }
    
    function create_order_count_query()
    {
    	$query = zen_db_query("select count(*) as count from ".ZEN_ORDERS);
    	return $query;
    }
    
    function create_customer_count_query()
    {
    	$query = zen_db_query("select count(*) as count from ".ZEN_CUSTOMERS);
    	return $query;
    }
    
    
    // =========================== MISC functions ===========================
    
    function outputLine($arr) {
    	$arr = array_map("clean", $arr);
    	$line = implode(DELIMITER,$arr);
    	$line = unhtmlentities($line);
    	$line = mb_convert_encoding($line,"UTF-8");
    	echo $line."\n";
    }
    
    function outputStatusLine($arr) {
    	$line = implode("*",$arr);
    	$line = unhtmlentities($line);
    	$line = mb_convert_encoding($line,"UTF-8");
    	echo $line."\n";
    }
    
    function clean($str)
    {
    	$str = str_replace(DELIMITER,'{pipe}',$str);
    	return $str;
    }
    
    function escape($str)
    {
    	$str = str_replace(':','{colon}',$str);
    	$str = str_replace('*','{star}',$str);
    	return $str;
    }
    
    function unhtmlentities($string)
    {
        // replace numeric entities
        $string = preg_replace('~&#x([0-9a-f]+);~ei', 'chr(hexdec("\\1"))', $string);
        $string = preg_replace('~&#([0-9]+);~e', 'chr("\\1")', $string);
        // replace literal entities
        $trans_tbl = get_html_translation_table(HTML_ENTITIES);
        $trans_tbl = array_flip($trans_tbl);
        return strtr($string, $trans_tbl);
    }
    
    
    
    // =========================== TEST functions ===========================
    
    function testSuite()
    {
    	global $TEST_RESULT;
    	
    	ini_set('display_errors', 1);
    	header('Content-Type: text/html; Charset=UTF-8');
    	
    	echo "<html><body><b>MyShop iPhone App plugin version ".VERSION."</b><br /><br /><table>";
    	assertVersion ("phpversion",phpversion(),"4.3.11");
    	assertVersion ("mysqlversion",mysql_get_server_info(),"4.1.0");
    	assertTrue ("mb_convert_encoding",function_exists("mb_convert_encoding"));
    	assertTrue ("zen_db_prepare_input",function_exists("zen_db_prepare_input"));
    	assertTrue ("zen_db_input",function_exists("zen_db_input"));
    	assertTrue ("zen_db_query",function_exists("zen_db_query"));
    	assertTrue ("zen_db_fetch_array",function_exists("zen_db_fetch_array"));
    	
    	// test customer query
    	$customers_query = create_customer_query("2000-01-01");
    	$customers = zen_db_fetch_array($customers_query);
    	assertEqual ("customer query",count($customers),13);
    	
    	// test products query
    	$products_query = create_products_query("2000-01-01");
    	$products = zen_db_fetch_array($products_query);
    	assertEqual ("products query",count($products),5);
    	
    	// test products query
    	$orders_query = create_orders_query("2000-01-01",null,1);
    	$orders = zen_db_fetch_array($orders_query);
    	assertEqual ("orders query",count($orders),9);
    	
    	// test items query
    	$items_query = create_items_query($orders['orders_id']);
    	$items = zen_db_fetch_array($items_query);
    	assertEqual ("items query",count($items),10);
    	
    	echo "</table></body></html>";
    	
    	if ($TEST_RESULT) {
    		echo "<p><b>All tests passed!</b> The app MyShop should run on your iPhone / iPod touch!</p>";
    	} else {
    		echo "<p><b style=\"color:red\">There were test failures!</b> Please visit <a href='http://appstore.malorny.net'>http://appstore.malorny.net</a> and contact the author if you can run the app MyShop!</p>";
    	}
    }
    
    function assertTrue($name,$success)
    {
    	global $TEST_RESULT;
    	
    	$style = $success ? "color:green" : "color:red";
    	$text  = $success ? "OK" : "FAIL";
    	echo "<tr><td>$name ... </td><td></td><td style=\"$style\">$text</td></tr>\n";
    	
    	if (!$success) $TEST_RESULT = false;
    }
    
    function assertEqual($name,$test,$expected)
    {
    	global $TEST_RESULT;
    	
    	$success = ($test == $expected);
    	
    	$style = $success ? "color:green" : "color:red";
    	$text  = $success ? "OK" : "FAIL";
    	echo "<tr><td>$name ... </td><td>$test</td><td style=\"$style\">$text</td></tr>\n";
    	
    	if (!$success) $TEST_RESULT = false;
    }
    
    function assertVersion($name,$test,$expected)
    {
    	global $TEST_RESULT;
    	
    	$success = version_compare($test,$expected,">=");
    	
    	$style = $success ? "color:green" : "color:red";
    	$text  = $success ? "OK" : "FAIL";
    	echo "<tr><td>$name ... </td><td>$test</td><td style=\"$style\">$text</td></tr>\n";
    	
    	if (!$success) $TEST_RESULT = false;
    }
    
    
    
    ?>
    
    
    If this is great to share I am happy to do so (cant help it seeing its here)

    thanks to all that read and possibly help

  2. #2
    Join Date
    May 2009
    Location
    from parts unknown
    Posts
    74
    Plugin Contributions
    0

    Default Re: need fresh eyes for possible addon (modified from osc)

    I think i forgot to mention....

    just ad this to your admin section.
    (you will get a test result on your screen)
    www[dot]yoursite/admin/iphone.php

    it seems to function until line 158 if that helps?

    the error is
    Fatal error: Call to undefined function: zen_db_query_raw() in /../../../pets/admin/iphone.php on line 158

  3. #3
    Join Date
    May 2009
    Location
    from parts unknown
    Posts
    74
    Plugin Contributions
    0

    Default Re: need fresh eyes for possible addon (modified from osc)

    forget the error above;

    error now

    Fatal error: Call to undefined function: zen_db_query() in /../../../pets/admin/iphone.php on line 158

    sorry for the mistake

  4. #4
    Join Date
    Jun 2008
    Location
    Washington, DC
    Posts
    785
    Plugin Contributions
    7

    Default Re: need fresh eyes for possible addon (modified from osc)

    There is no function: zen_db_query() in zen cart that is why it is failing. Check out this link Porting modules from osC
    and this db link Developers - Database

    Skip
    • 446F63746F722057686F •

  5. #5
    Join Date
    May 2009
    Location
    from parts unknown
    Posts
    74
    Plugin Contributions
    0

    Default Re: need fresh eyes for possible addon (modified from osc)

    thanks skip,

    i will make the amendments in the next couple of days and post again after its working.....just got to do 2 weeks worth of study for uni first...ouch.

    i only have 5 days before i go back.....

    me so stupid hyuck hyuck LOL

  6. #6
    Join Date
    Mar 2004
    Posts
    688
    Plugin Contributions
    0

    Default Re: need fresh eyes for possible addon (modified from osc)

    I'd be interested in this - thanks

  7. #7
    Join Date
    May 2009
    Location
    from parts unknown
    Posts
    74
    Plugin Contributions
    0

    Default Re: need fresh eyes for possible addon (modified from osc)

    thanks,

    i have 3 conversions going on at the same time....steeeeeeep learning curb.

    let me knock over my study then i can focus more and think a little clearer

    hopefully we can get others to help with the shopfront for this function so we have both admin & shopfront.....double winner.

    keep you posted :)

    i think i am the only one that thinks outside the box (joking joking) but feels like it.....the 80's are 30yrs ago (joking)
    Last edited by Mrchristoh; 26 May 2009 at 02:31 PM.

  8. #8
    Join Date
    May 2009
    Location
    from parts unknown
    Posts
    74
    Plugin Contributions
    0

    Idea or Suggestion Re: need fresh eyes for possible addon (modified from osc)

    hi all,

    attached is a very basic and pretty dirty iPhone admin / order app.
    you can call your customers, email and view orders all from your iPhone.

    sure i will get some criticism for this but.......im sure many people will test and have their own ideas.

    please make improvements, modifications and even delete it if you think it really sucks.

    the 1st revision(above) is still being hacked into like blind woodsman, but this is the 'dirty version'.
    its just to show others that you can use iPhone easily.


    instructions,

    just ad to your admin section( pref: admin/iphone_zen)
    this is just to make sure that when you delete it you never have to worry).

    download from: http://mychikyuya.com/iphone_zen.zip


    back to study now

  9. #9
    Join Date
    Mar 2004
    Posts
    688
    Plugin Contributions
    0

    Default Re: need fresh eyes for possible addon (modified from osc)

    Thank you kindly, kind sir!!

    Now - cram cram cram!!

    I'll write how I get on with the mod..

  10. #10
    Join Date
    May 2009
    Posts
    47
    Plugin Contributions
    0

    Default Re: need fresh eyes for possible addon (modified from osc)

    I am still trying to convert from v 1.2... but am interested in this for the iPhone. I added it to my store folder and updated the config file, but when I go to the path to the file I just get an index of the folder. How do I get it so I can log in correctly? Thanks!

 

 
Page 1 of 2 12 LastLast

Similar Threads

  1. Need an attribute Mod like this one from OSC
    By independenteasel in forum Setting Up Categories, Products, Attributes
    Replies: 5
    Last Post: 3 Dec 2009, 08:15 PM
  2. Whats wrong with this query? Fresh eyes needed ;)
    By Reesy in forum General Questions
    Replies: 9
    Last Post: 11 Sep 2006, 05:15 AM

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
disjunctive-egg
Zen-Cart, Internet Selling Services, Klamath Falls, OR