Revision: 24965
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at March 17, 2010 02:17 by fwso
Initial Code
/**
* Get one or more random date value between the start date
* and the end date
*
* The end date is not included.
*
* Date formate: yyyy-mm-dd
*
* @param date $dateStart
* @param date $dateEnd
* @param integer $number
* @return array
*/
function getRandomDates ($dateStart, $dateEnd, $number = 1) {
$dates = array ();
$hh1 = 8;
$hh2 = 24;
$ii1 = 0;
$ii2 = 60;
$ss1 = 0;
$ss2 = 60;
$parts1 = explode('-',$dateStart);
$parts2 = explode('-',$dateEnd);
if (sizeof($parts1) == 3 && sizeof($parts2) == 3) {
$days = abs(strtotime($dateEnd) - strtotime($dateStart)) / (3600*24);
$randomDays = getRandomIntegers(0, $days, $number);
$yy1 = $parts1[0];
$mm1 = $parts1[1];
$dd1 = $parts1[2];
for ($i = 0; $i < $number; $i++) {
$dates[] = date('Y-m-d H:i:s', mktime(getRandomIntegers ($hh1, $hh2), getRandomIntegers ($ii1, $ii2),
getRandomIntegers ($ss1, $ss2), $mm1, $dd1 + $randomDays[$i], $yy1));
}
}
return $dates;
}
/**
* Get one or more random number between the start and the end
* The end date is not included.
*
* @param integer $start
* @param integer $end
* @param integer $number
* @return array
*/
function getRandomIntegers ($start, $end, $number = 1) {
$ris = array();
//reduce one for mt_rand is inclusive.
$end--;
for ($i = 0; $i < $number; $i++) {
$ris[] = mt_rand($start, $end);
}
if (sizeof($ris) == 1) {
return $ris[0];
}
return $ris;
}
/**
* Get all the subcategory IDs of the parent category whose ID
* is specified.
*
* @param integer $parentID
* @return array
*/
function getSubcategories ($parentID, $self = false) {
$subs = array ();
if ($self) {
$subs[] = $parentID;
}
_getSubcategories ($parentID, &$subs);
return $subs;
}
/**
* Help function for getSubcategories()
*
* @param integer $pid
* @param array $cats
* @see getSubcategories()
*/
function _getSubcategories ($pid, &$cats) {
global $db;
$sql = "SELECT c.categories_id FROM " . TABLE_CATEGORIES . " c WHERE c.parent_id=$pid";
$result = $db->Execute($sql);
while (!$result->EOF) {
$cats[] = $result->fields['categories_id'];
_getSubcategories ($result->fields['categories_id'], &$cats);
$result->MoveNext();
}
}
/**
* Get all the product ids of the specified ids
*
* @param integer $categoryID
*
*/
function getAllProductsIds ($categoryID) {
global $db;
$ids = array ();
$allCats = getSubcategories($categoryID, true);
$sql = "SELECT DISTINCT p2c.products_id FROM " . TABLE_PRODUCTS_TO_CATEGORIES .
" p2c WHERE p2c.categories_id IN (" . implode(',', $allCats) . ")";
$result = $db->Execute ($sql);
while (!$result->EOF) {
$ids [] = $result->fields['products_id'];
$result->MoveNext();
}
return $ids;
}
/**
* Get the file extension
*
* @param string $fileName
* @return string
*/
function getFileExtension ($fileName) {
return strtolower(substr($fileName, strrpos($fileName, '.')));
}
/**
* Create a new file name in order to avoid file name conflict.
*
* @param string $fileName
* @return string
*/
function createNewFileName ($fileName) {
return md5($filename . date('YmdHis'));
}
/**
* main function
*
* Create Fake Orders
*
* @param integer $categoryID
* @param array $names
* @param array $countries
* @param date $fDate
* @param date $tDate
* @param integer $fQ
* @param integer $tQ
*/
function createFakeOrders ($categoryID, $names, $countries, $fDate, $tDate, $fQ, $tQ, $numbers = 1) {
global $db,$messageStack;
$products = getAllProductsIds ($categoryID);
$counts = sizeof($products) * $numbers;
if ($counts > 0) {
$nameIdxes = getRandomIntegers(0, sizeof($names), $counts);
$countryIdxes = getRandomIntegers(0, sizeof($countries), $counts);
$dates = getRandomDates($fDate, $tDate, $counts);
$quantities = getRandomIntegers($fQ, $tQ, $counts);
$sql = "INSERT INTO " . TABLE_ORERS_FAKE . " (products_id, name, customers_country, date, quantity) VALUES ";
$idx = 0;
for ($i = 0; $i < sizeof($products); $i++) {
for ($k = 0; $k < $numbers; $k++) {
if ($idx == 0) {
$sql .= "(". $products[$i] . ",'" . mysql_real_escape_string($names[$nameIdxes[$idx]]) . "','" .
mysql_real_escape_string ($countries[$countryIdxes[$idx]]) . "','" . $dates[$idx] . "'," . $quantities[$idx] .")";
} else {
$sql .= ",(". $products[$i] . ",'" . mysql_real_escape_string ($names[$nameIdxes[$idx]]) . "','" .
mysql_real_escape_string ($countries[$countryIdxes[$idx]]) . "','" . $dates[$idx] . "'," . $quantities[$idx] .")";
}
$idx++;
}
}
//echo $sql . '<br />';
$db->Execute($sql);
$rows = mysql_affected_rows();
if ($rows > 0) {
$messageStack->add_session('Fake orders generated:' . $rows, 'success');
} else {
$messageStack->add_session('Failed to generate fake orders', 'caution');
}
zen_redirect(FILENAME_FAKE_ORDER);
}
}
Initial URL
http://ifuturetech.com
Initial Description
Used to generates fake orders for Zen-Cart.
Initial Title
Zen-Cart Fake Order Process
Initial Tags
date
Initial Language
PHP