MySqlConnector working on Visual Studio 2011 Beta

I’m currently working on a project using the latest and greatest (perhaps not?) Visual Studio 2011 Beta with mysql. It’s quite a painful task at the moment as i’m using the Entity Framework as my ORM. However, for all of you who want to get the MySqlConnector working with Visual Studio 2011 Beta, then I suggest you visit this page. It’s in a different language so make sure you have your favorite language translator ready. It’s a good start, but it still doesn’t integrate into the Entity Framework section so you cannot generate models etc from mysql databases in VS 2011 Beta. At the moment I’m using the Code First approach with an existing mysql database and using the Fluent API to map the fields together, what a task!

http://social.technet.microsoft.com/wiki/pt-br/contents/articles/10476.instalando-mysql-connector-no-visual-studio-2011-beta.aspx

A way around page refreshes/back button problems with a simple concept

The problem:

You have a form in which the user fills out and clicks a “submit” button that validates their input, does some processing and output’s some results. The problem being the application needs to cater for page refreshes, back buttons and the case of the page being submitted more than once (latency/slow internet connection).

The Solution:

Possible solutions can be (this assumes not using Ajax as a solution), once the user clicks the submit button the server validates the user’s input and has processed the information. Store a unique id in session and redirect to a “complete” page. If the user clicks the back button and resubmits the page, you can build logic to check if a unique id exists in session and if it does, redirect to the complete page without having to re-process the information.

If the user is on the complete page and refreshes the page, because its on a page which has used a GET, there is no processing done and hence no duplication of data.

References:

http://en.wikipedia.org/wiki/Post/Redirect/Get

http://stackoverflow.com/questions/665399/how-do-i-stop-the-back-and-refresh-buttons-from-resubmitting-my-form

Removing Test orders from Magento

If you want to do this manually and not pay (via a extension) then use the following script on your database.   Please make sure you back up your database first, I take no responsibility for the overall result, this script worked for me on version 1.4.0.1:

SET FOREIGN_KEY_CHECKS=0;
TRUNCATE `sales_order`;
TRUNCATE `sales_order_tax`;
TRUNCATE `sales_order_datetime`;
TRUNCATE `sales_order_decimal`;
TRUNCATE `sales_order_entity`;
TRUNCATE `sales_order_entity_datetime`;
TRUNCATE `sales_order_entity_decimal`;
TRUNCATE `sales_order_entity_int`;
TRUNCATE `sales_order_entity_text`;
TRUNCATE `sales_order_entity_varchar`;
TRUNCATE `sales_order_int`;
TRUNCATE `sales_order_text`;
TRUNCATE `sales_order_varchar`;
TRUNCATE `sales_flat_quote`;
TRUNCATE `sales_flat_quote_address`;
TRUNCATE `sales_flat_quote_address_item`;
TRUNCATE `sales_flat_quote_item`;
TRUNCATE `sales_flat_quote_item_option`;
TRUNCATE `sales_flat_order_item`;
TRUNCATE `sendfriend_log`;
TRUNCATE `tag`;
TRUNCATE `tag_relation`;
TRUNCATE `tag_summary`;
TRUNCATE `wishlist`;
TRUNCATE `log_quote`;
TRUNCATE `report_event`;
ALTER TABLE `sales_order` AUTO_INCREMENT=1;
ALTER TABLE `sales_order_tax` AUTO_INCREMENT=1;
ALTER TABLE `sales_order_datetime` AUTO_INCREMENT=1;
ALTER TABLE `sales_order_decimal` AUTO_INCREMENT=1;
ALTER TABLE `sales_order_entity` AUTO_INCREMENT=1;
ALTER TABLE `sales_order_entity_datetime` AUTO_INCREMENT=1;
ALTER TABLE `sales_order_entity_decimal` AUTO_INCREMENT=1;
ALTER TABLE `sales_order_entity_int` AUTO_INCREMENT=1;
ALTER TABLE `sales_order_entity_text` AUTO_INCREMENT=1;
ALTER TABLE `sales_order_entity_varchar` AUTO_INCREMENT=1;
ALTER TABLE `sales_order_int` AUTO_INCREMENT=1;
ALTER TABLE `sales_order_text` AUTO_INCREMENT=1;
ALTER TABLE `sales_order_varchar` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_quote` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_quote_address` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_quote_address_item` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_quote_item` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_quote_item_option` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_order_item` AUTO_INCREMENT=1;
ALTER TABLE `sendfriend_log` AUTO_INCREMENT=1;
ALTER TABLE `tag` AUTO_INCREMENT=1;
ALTER TABLE `tag_relation` AUTO_INCREMENT=1;
ALTER TABLE `tag_summary` AUTO_INCREMENT=1;
ALTER TABLE `wishlist` AUTO_INCREMENT=1;
ALTER TABLE `log_quote` AUTO_INCREMENT=1;
ALTER TABLE `report_event` AUTO_INCREMENT=1;
TRUNCATE `customer_address_entity`;
TRUNCATE `customer_address_entity_datetime`;
TRUNCATE `customer_address_entity_decimal`;
TRUNCATE `customer_address_entity_int`;
TRUNCATE `customer_address_entity_text`;
TRUNCATE `customer_address_entity_varchar`;
TRUNCATE `customer_entity`;
TRUNCATE `customer_entity_datetime`;
TRUNCATE `customer_entity_decimal`;
TRUNCATE `customer_entity_int`;
TRUNCATE `customer_entity_text`;
TRUNCATE `customer_entity_varchar`;
TRUNCATE `log_customer`;
TRUNCATE `log_visitor`;
TRUNCATE `log_visitor_info`;
ALTER TABLE `customer_address_entity` AUTO_INCREMENT=1;
ALTER TABLE `customer_address_entity_datetime` AUTO_INCREMENT=1;
ALTER TABLE `customer_address_entity_decimal` AUTO_INCREMENT=1;
ALTER TABLE `customer_address_entity_int` AUTO_INCREMENT=1;
ALTER TABLE `customer_address_entity_text` AUTO_INCREMENT=1;
ALTER TABLE `customer_address_entity_varchar` AUTO_INCREMENT=1;
ALTER TABLE `customer_entity` AUTO_INCREMENT=1;
ALTER TABLE `customer_entity_datetime` AUTO_INCREMENT=1;
ALTER TABLE `customer_entity_decimal` AUTO_INCREMENT=1;
ALTER TABLE `customer_entity_int` AUTO_INCREMENT=1;
ALTER TABLE `customer_entity_text` AUTO_INCREMENT=1;
ALTER TABLE `customer_entity_varchar` AUTO_INCREMENT=1;
ALTER TABLE `log_customer` AUTO_INCREMENT=1;
ALTER TABLE `log_visitor` AUTO_INCREMENT=1;
ALTER TABLE `log_visitor_info` AUTO_INCREMENT=1;
TRUNCATE `eav_entity_store`;
ALTER TABLE  `eav_entity_store` AUTO_INCREMENT=1;
SET FOREIGN_KEY_CHECKS=1;

var _gaq undefined – Magento

I came across this javascript error when updating a instance of Magento to version 1.4 and Google Analytics

“var _gaq is undefined”

In the ga.php file located under /app/code/core/Mage/GoogleAnalytics/Block add the following line of code before _gaq.push javascript

“var _gaq = _gaq || [];” – about line 179

This will remove the error.   I still need to test to see if visitor site numbers have been affected.

References:

http://www.magentocommerce.com/boards/viewthread/68885/

http://www.magentocommerce.com/boards/viewthread/68885/”

Bluehost wont allow gmail SMTP connections

According to bluehost, you cannot send emails through SMTP connections from web applications hosted on bluehost.   They only allow sending through their own SMTP servers.

The problem I had was trying to send emails in Magento using GMAIL (Google Apps) using the code from this forum:

http://www.magentocommerce.com/boards/viewthread/1073/

The work around is that I setup a email account in Bluehost the same as the email I use in Google Apps.  I then modified the code in Magento to send out using bluehost’s SMTP servers:

For example:

Outgoing Mail Server: (SSL) boxnumber.bluehost.com (server requires authentication)
Supported Incoming Mail Protocols:

  • POP3: port 110
  • POP3S (SSL/TLS): port 995
  • IMAP: port 143
  • IMAPS (SSL/TLS): port 993

Supported Outgoing Mail Protocols:

  • SMTP: port 26
  • SMTPS (SSL/TLS): port 465

And it works, it sends the email out to the customers with the right email address sent from bluehost’s local SMTP servers, so when customers reply to the email address it will arrive in my google apps mail box.

References:

http://drupal.org/node/458044

<script type=”text/javascript”>
var gaJsHost = ((“https:” == document.location.protocol) ? “https://ssl.” : “http://www.”);
document.write(unescape(“%3Cscript src='” + gaJsHost + “google-analytics.com/ga.js’ type=’text/javascript’%3E%3C/script%3E”));
</script>
<script type=”text/javascript”>
try {
var pageTracker = _gat._getTracker(“UA-4995672-4″);
pageTracker._trackPageview();
} catch(err) {}</script>

JFactory::getDate() doesn’t automatically add offset

By default, calling JFactory::getDate() doesn’t automatically apply the timezone offset.   The default date/time is GMT.

By using the following code, you can set the offset from the global joomla configuration file

<?php
$thisJApp = &JFactory::getApplication();
$thisJDate = JFactory::getDate();
$thisJDate ->setOffset($thisJApp ->getCfg(‘offset’));
echo $thisJDate->toFormat(“%A %d %b %Y”);
?>

If you want to set the date from a logged in user you can try:

<%

$JUser =& JFactory::getUser();
$JDate = JFactory::getDate();
echo $JDate->toFormat().'<br>';
echo ‘offset=’ . $JDate->getOffset() . ‘<br>';
$JDate->setOffset($JUser->getParam(‘timezone’));

%>

SimplePie Joomla Proxy Issue

The issue I had with a particular joomla site is that I could not load external RSS feeds.   The error was “Could not connect to {server}”.   RSS Feed load failed.   This was caused in the SimplePie.php class around line 6601.

Steps to resolve:

I enabled the cUrl extension in php.ini (running on a IIS platform)

Changed the code around line 6536:

curl_setopt($fp, CURLOPT_PROXY, $ip);
curl_setopt($fp, CURLOPT_PROXYPORT, $port);
curl_setopt($fp, CURLOPT_PROXYUSERPWD, $login . ‘:’ . $passwd);

where $ip is the proxy IP Address, $port is the port and $login:$password is the proxy authentication.

After this, I can load in external RSS feeds! YAY

References:

http://www.phpdig.net/ref/rn11re189.html