function cleanNonUnicodeProducts() { global $db, $user; $products = $db->selectObjectsIndexedArray('product'); //Get all the columns of the product table $columns = $db->getTextColumns('product'); foreach ($products as $item) { //Since body, summary, featured_body can have a ? intentionally such as a link with get parameter. //TO Improved foreach ($columns as $column) { if ($column != 'body' && $column != 'summary' && $column != 'featured_body') { if (!expString::validUTF($item->{$column}) || strrpos($item->{$column}, '?')) { $item->{$column} = expString::convertUTF($item->{$column}); } } else { if (!expString::validUTF($item->{$column})) { $item->{$column} = expString::convertUTF($item->{$column}); } } } $db->updateObject($item, 'product'); } redirect_to(array('controller' => 'store', 'action' => 'nonUnicodeProducts')); }