<?php
a();
/* main */
function a()
{
generateCommunityMembers(1186, 'muzos_direct');
generateCommunityGroups('muzos_direct');
die();
}
function generateCommunityGroups($strDemoName)
{
$strCSV = 'group_date, group_title' . "\n";
$strCurrentTime = date('Y-m-d H:i:s');
$strCSV .= $strCurrentTime . ',VIP Club' . "\n";
$strCSV .= $strCurrentTime . ',Teachers' . "\n";
$strCSV .= $strCurrentTime . ',Students' . "\n";
saveDemoData('\Components\Community\Groups', $strDemoName, 'community_groups.csv', $strCSV);
saveDemoConfigValue('\Components\Community\Groups', $strDemoName, 'community_groups.json',
'generated_datetime', time());
echo('Complete generation of Community Groups.<br />');
}
/**
* Genereate a CSV file of test data for the community_members table.
* Save the file into the demo location with name $strDemoName.
*
* @param int $iNum Number of rows to generate.
* @param string $strDemoName The name of the demo, Eg 'muzos_direct'.
* @return void
*/
function generateCommunityMembers($iNum, $strDemoName)
{
// Read in data sets.
$arrStreetNames = getArrayFromFile('streetnames.txt');
$arrStreetTypes = getArrayFromFile('streettypes.txt');
$arrFirstNamesFemale = getArrayFromFile('firstnames_female.txt');
$arrFirstNamesMale = getArrayFromFile('firstnames_male.txt');
$arrLastNames = getArrayFromFile('lastnames.txt');
$arrTitlesFemale = array('Mrs', 'Miss', 'Ms', 'Dr');
$arrTitlesMale = array('Mr', 'Dr');
$arrMembers = array();
$rCSV = new \Framework\DataFormats\CSV;
$rCSV->configSetHasHeadingRow(true);
$strTotalImport = 'member_first_name, member_last_name, member_gender, member_title,' .
'member_dob, member_email, member_phone_mobile, member_address' . "\n";
// Randomly generate members.
for ($i = 0; $i < $iNum; $i++)
{
$arrMember = array();
if (rand(0, 1))
{
$arrMember['member_first_name'] = getRandom($arrFirstNamesFemale);
$arrMember['member_gender'] = 'f';
$arrMember['member_title'] = getRandom($arrTitlesFemale);
}
else
{
$arrMember['member_first_name'] = getRandom($arrFirstNamesMale);
$arrMember['member_gender'] = 'm';
$arrMember['member_title'] = getRandom($arrTitlesMale);
}
$arrMember['member_last_name'] = getRandom($arrLastNames);
$iDay = rand(1, 28);
$iMonth = rand(1, 12);
$iYear = rand(1975, 1995);
$date = DateTime::createFromFormat('Y-m-d', $iYear . '-' . $iMonth . '-' . $iDay);
$arrMember['member_dob'] = $date->format('Y-m-d H:i:s');
$arrMember['member_email'] = $arrMember['member_first_name'] . '_' . $arrMember['member_last_name'] .
'_' . $iYear . '@email.com';
$arrMember['member_phone_mobile'] = '04' . sprintf('%1$08d', rand(0, 99999999));
$arrMember['member_address'] = rand(1, 100) . ' ' . getRandom($arrStreetNames) . ' ' . getRandom($arrStreetTypes);
// Save to CSV.
$strTotalImport .= $arrMember['member_first_name'] . ',' . $arrMember['member_last_name'] . ',' .
$arrMember['member_gender'] . ',' . $arrMember['member_title'] . ',' . $arrMember['member_dob'] . ',' .
$arrMember['member_email'] . ',' . $arrMember['member_phone_mobile'] . ',' . $arrMember['member_address'] . "\n";
$arrMembers[] = $arrMember;
}
$rCSV->importFromString($strTotalImport);
die();
$rCSV->exportToComponent('\Components\Community\Members');
die();
saveDemoData('\Components\Community\Members', $strDemoName, 'community_members.csv', $rCSV->exportToString());
saveDemoConfigValue('\Components\Community\Members', $strDemoName, 'community_members.json',
'generated_datetime', time());
echo('Complete generation of ' . $iNum . ' random members.<br />');
}
/**
* Get each line of a file as seperate elements in an array.
* Trim and capitalize each element.
*
* @param string $strFileName Path and name of the file.
* @return array Array of lines.
*/
function getArrayFromFile($strFileName)
{
$arrLines = array();
$fFile = fopen($strFileName, 'r');
while (!feof($fFile))
{
$arrLines[] = ucwords(strtolower(trim(fgets($fFile))));
}
fclose($fFile);
return $arrLines;
}
/**
* Get a random element from an array.
*
* @param array $arrDataSource Array to get a random element from.
* @return mixed A value from the array.
*/
function getRandom(&$arrDataSource)
{
return $arrDataSource[rand(0, count($arrDataSource) - 1)];
}
/**
* Write a string to a demo file for a component.
*
* @param string $strComponent Eg '\Compoents\Community\Members'.
* @param string $strDemoName Eg 'muzos_direct'.
* @param string $strFileName Eg 'community_members.csv'.
* @param string $strFileContent
* @return void
*/
function saveDemoData($strComponent, $strDemoName, $strFileName, $strFileContent)
{
$strComponent = str_replace('\\', '/', $strComponent);
$strPath = '../..' . $strComponent . '/_resources/demodata/' . $strDemoName . '/' . $strFileName;
if (!file_exists(dirname($strPath)))
{
if (!mkdir(dirname($strPath), 0777, true))
{
$pException = new \Framework\Exceptions\Generic();
$pException->setTitle('Could not make directory \'' . $strPath . '\'');
throw $pException;
}
}
$fDemoFile = fopen($strPath, 'w');
fwrite($fDemoFile, $strFileContent);
fclose($fDemoFile);
echo(' save \'' . $strPath . '\'<br />');
}
/**
* Save a value into a demo config json file.
*
* @param string $strComponent Eg '\Compoents\Community\Members'.
* @param string $strDemoName Eg 'muzos_direct'.
* @param string $strConfigName Eg 'community_members.json'.
* @param string $strKey
* @param mixed $mixedValue
*/
function saveDemoConfigValue($strComponent, $strDemoName, $strConfigName, $strKey, $mixedValue)
{
$strComponent = str_replace('\\', '/', $strComponent);
$strPath = '../..' . $strComponent . '/_resources/demodata/' . $strDemoName . '/' . $strConfigName;
if (!file_exists(dirname($strPath)))
{
if (!mkdir(dirname($strPath), 0777, true))
{
$pException = new \Framework\Exceptions\Generic();
$pException->setTitle('Could not make directory \'' . $strPath . '\'');
throw $pException;
}
}
// Read the existing JSON.
$strJSON = NULL;
if (file_exists($strPath))
{
$fConfigFileRead = fopen($strPath, 'r');
$strJSON = fread($fConfigFileRead, filesize($strPath));
fclose($fConfigFileRead);
}
// Add our key => value pair.
$arrConfig = \Framework\HTML\JavaScript::decode($strJSON);
if (!$arrConfig)
{
$arrConfig = array();
}
$arrConfig[$strKey] = $mixedValue;
$strNewJSON = \Framework\HTML\JavaScript::encode($arrConfig);
// Save the new JSON over the old one.
$fConfigFileWrite = fopen($strPath, 'w');
fwrite($fConfigFileWrite, $strNewJSON);
fclose($fConfigFileWrite);
echo(' save \'' . $strPath . '\'<br />');
}
?>
<?php
a();
/* main */
function a()
{
generateCommunityMembers(1186, 'muzos_direct');
generateCommunityGroups('muzos_direct');
die();
}
function generateCommunityGroups($strDemoName)
{
$strCSV = 'group_date, group_title' . "\n";
$strCurrentTime = date('Y-m-d H:i:s');
$strCSV .= $strCurrentTime . ',VIP Club' . "\n";
$strCSV .= $strCurrentTime . ',Teachers' . "\n";
$strCSV .= $strCurrentTime . ',Students' . "\n";
saveDemoData('\Components\Community\Groups', $strDemoName, 'community_groups.csv', $strCSV);
saveDemoConfigValue('\Components\Community\Groups', $strDemoName, 'community_groups.json',
'generated_datetime', time());
echo('Complete generation of Community Groups.<br />');
}
/**
* Genereate a CSV file of test data for the community_members table.
* Save the file into the demo location with name $strDemoName.
*
* @param int $iNum Number of rows to generate.
* @param string $strDemoName The name of the demo, Eg 'muzos_direct'.
* @return void
*/
function generateCommunityMembers($iNum, $strDemoName)
{
// Read in data sets.
$arrStreetNames = getArrayFromFile('streetnames.txt');
$arrStreetTypes = getArrayFromFile('streettypes.txt');
$arrFirstNamesFemale = getArrayFromFile('firstnames_female.txt');
$arrFirstNamesMale = getArrayFromFile('firstnames_male.txt');
$arrLastNames = getArrayFromFile('lastnames.txt');
$arrTitlesFemale = array('Mrs', 'Miss', 'Ms', 'Dr');
$arrTitlesMale = array('Mr', 'Dr');
$arrMembers = array();
$rCSV = new \Framework\DataFormats\CSV;
$rCSV->configSetHasHeadingRow(true);
$strTotalImport = 'member_first_name, member_last_name, member_gender, member_title,' .
'member_dob, member_email, member_phone_mobile, member_address' . "\n";
// Randomly generate members.
for ($i = 0; $i < $iNum; $i++)
{
$arrMember = array();
if (rand(0, 1))
{
$arrMember['member_first_name'] = getRandom($arrFirstNamesFemale);
$arrMember['member_gender'] = 'f';
$arrMember['member_title'] = getRandom($arrTitlesFemale);
}
else
{
$arrMember['member_first_name'] = getRandom($arrFirstNamesMale);
$arrMember['member_gender'] = 'm';
$arrMember['member_title'] = getRandom($arrTitlesMale);
}
$arrMember['member_last_name'] = getRandom($arrLastNames);
$iDay = rand(1, 28);
$iMonth = rand(1, 12);
$iYear = rand(1975, 1995);
$date = DateTime::createFromFormat('Y-m-d', $iYear . '-' . $iMonth . '-' . $iDay);
$arrMember['member_dob'] = $date->format('Y-m-d H:i:s');
$arrMember['member_email'] = $arrMember['member_first_name'] . '_' . $arrMember['member_last_name'] .
'_' . $iYear . '@email.com';
$arrMember['member_phone_mobile'] = '04' . sprintf('%1$08d', rand(0, 99999999));
$arrMember['member_address'] = rand(1, 100) . ' ' . getRandom($arrStreetNames) . ' ' . getRandom($arrStreetTypes);
// Save to CSV.
$strTotalImport .= $arrMember['member_first_name'] . ',' . $arrMember['member_last_name'] . ',' .
$arrMember['member_gender'] . ',' . $arrMember['member_title'] . ',' . $arrMember['member_dob'] . ',' .
$arrMember['member_email'] . ',' . $arrMember['member_phone_mobile'] . ',' . $arrMember['member_address'] . "\n";
$arrMembers[] = $arrMember;
}
$rCSV->importFromString($strTotalImport);
die();
$rCSV->exportToComponent('\Components\Community\Members');
die();
saveDemoData('\Components\Community\Members', $strDemoName, 'community_members.csv', $rCSV->exportToString());
saveDemoConfigValue('\Components\Community\Members', $strDemoName, 'community_members.json',
'generated_datetime', time());
echo('Complete generation of ' . $iNum . ' random members.<br />');
}
/**
* Get each line of a file as seperate elements in an array.
* Trim and capitalize each element.
*
* @param string $strFileName Path and name of the file.
* @return array Array of lines.
*/
function getArrayFromFile($strFileName)
{
$arrLines = array();
$fFile = fopen($strFileName, 'r');
while (!feof($fFile))
{
$arrLines[] = ucwords(strtolower(trim(fgets($fFile))));
}
fclose($fFile);
return $arrLines;
}
/**
* Get a random element from an array.
*
* @param array $arrDataSource Array to get a random element from.
* @return mixed A value from the array.
*/
function getRandom(&$arrDataSource)
{
return $arrDataSource[rand(0, count($arrDataSource) - 1)];
}
/**
* Write a string to a demo file for a component.
*
* @param string $strComponent Eg '\Compoents\Community\Members'.
* @param string $strDemoName Eg 'muzos_direct'.
* @param string $strFileName Eg 'community_members.csv'.
* @param string $strFileContent
* @return void
*/
function saveDemoData($strComponent, $strDemoName, $strFileName, $strFileContent)
{
$strComponent = str_replace('\\', '/', $strComponent);
$strPath = '../..' . $strComponent . '/_resources/demodata/' . $strDemoName . '/' . $strFileName;
if (!file_exists(dirname($strPath)))
{
if (!mkdir(dirname($strPath), 0777, true))
{
$pException = new \Framework\Exceptions\Generic();
$pException->setTitle('Could not make directory \'' . $strPath . '\'');
throw $pException;
}
}
$fDemoFile = fopen($strPath, 'w');
fwrite($fDemoFile, $strFileContent);
fclose($fDemoFile);
echo(' save \'' . $strPath . '\'<br />');
}
/**
* Save a value into a demo config json file.
*
* @param string $strComponent Eg '\Compoents\Community\Members'.
* @param string $strDemoName Eg 'muzos_direct'.
* @param string $strConfigName Eg 'community_members.json'.
* @param string $strKey
* @param mixed $mixedValue
*/
function saveDemoConfigValue($strComponent, $strDemoName, $strConfigName, $strKey, $mixedValue)
{
$strComponent = str_replace('\\', '/', $strComponent);
$strPath = '../..' . $strComponent . '/_resources/demodata/' . $strDemoName . '/' . $strConfigName;
if (!file_exists(dirname($strPath)))
{
if (!mkdir(dirname($strPath), 0777, true))
{
$pException = new \Framework\Exceptions\Generic();
$pException->setTitle('Could not make directory \'' . $strPath . '\'');
throw $pException;
}
}
// Read the existing JSON.
$strJSON = NULL;
if (file_exists($strPath))
{
$fConfigFileRead = fopen($strPath, 'r');
$strJSON = fread($fConfigFileRead, filesize($strPath));
fclose($fConfigFileRead);
}
// Add our key => value pair.
$arrConfig = \Framework\HTML\JavaScript::decode($strJSON);
if (!$arrConfig)
{
$arrConfig = array();
}
$arrConfig[$strKey] = $mixedValue;
$strNewJSON = \Framework\HTML\JavaScript::encode($arrConfig);
// Save the new JSON over the old one.
$fConfigFileWrite = fopen($strPath, 'w');
fwrite($fConfigFileWrite, $strNewJSON);
fclose($fConfigFileWrite);
echo(' save \'' . $strPath . '\'<br />');
}
?>