$val) {
$ret[$key] = mb_str_replace($search, $replace, $val);
}
return $ret;
}
foreach((array) $search as $key => $s) {
if($s == '') {
continue;
}
$r = !is_array($replace) ? $replace : (array_key_exists($key, $replace) ? $replace[$key] : '');
$pos = mb_strpos($subject, $s, 0, 'UTF-8');
while($pos !== false) {
$subject = mb_substr($subject, 0, $pos, 'UTF-8') . $r . mb_substr($subject, $pos + mb_strlen($s, 'UTF-8'), 65535, 'UTF-8');
$pos = mb_strpos($subject, $s, $pos + mb_strlen($r, 'UTF-8'), 'UTF-8');
}
}
return $subject;
}
}
function SearchandReplace($dir, $stringsearch, $stringreplace)
{
echo "
Starting search for $stringsearch within directory $dir
";
$listDir = array();
if($handler = opendir($dir)) {
while (($sub = readdir($handler)) !== FALSE) {
if ($sub != "." && $sub != ".." && $sub != "Thumb.db") {
if(is_file($dir."/".$sub)) {
if(substr_count($sub,'.php') || substr_count($sub,'.html'))
{
$getfilecontents = file_get_contents($dir."/".$sub);
$is_search=false;
if (is_array($stringsearch)) {
foreach($stringsearch as $one_search_item) {
if(substr_count($getfilecontents,$one_search_item)>0) {
$is_search=true;
break;
}
}
} else {
if(substr_count($getfilecontents,$stringsearch)>0) $is_search=true;
}
if ($is_search)
{
$replacer = mb_str_replace($stringsearch,$stringreplace,$getfilecontents);
// Let's make sure the file exists and is writable first.
if (is_writable($dir."/".$sub)) {
echo "
file --> (".$dir."/".$sub.")";
if (!$handle = fopen($dir."/".$sub, 'w')) {
echo "
Cannot open file (".$dir."/".$sub.")";
exit;
}
// Write $somecontent to our opened file.
if (fwrite($handle, $replacer) === FALSE) {
echo "
Cannot write to file (".$dir."/".$sub.")";
exit;
}
fclose($handle);
} else {
echo "
The file ".$dir."/".$sub." is not writable";
}
}
}
$listDir[] = $sub;
}elseif(is_dir($dir."/".$sub)){
$listDir[$sub] = SearchandReplace($dir."/".$sub,$stringsearch,$stringreplace);
}
}
}
closedir($handler);
}
return $listDir;
}
function copy_folder_recursive($source, $dest, $counter=1)
{
// recursive function to copy
// all subdirectories and contents:
if(is_dir($source)) {
$dir_handle=opendir($source);
$sourcefolder = basename($source);
if ($counter > 1) {
mkdir($dest);
}
while($file=readdir($dir_handle)){
if($file!="." && $file!=".."){
if(is_dir($source."/".$file)){
copy_folder_recursive($source."/".$file, $dest."/".$file, $counter+1);
} else {
copy($source."/".$file, $dest."/".$file);
}
}
}
closedir($dir_handle);
} else {
// can also handle simple copy commands
copy($source, $dest);
}
}
//////////////////////////////////////////
//**************************************//
$new_module=$_REQUEST['new_module'];
$school=$_REQUEST['school'];
$source_module_name=$_REQUEST['source_module'];
if (empty($school)) exit;
if (empty($new_module)) exit;
if (empty($source_module_name)) exit;
$source_module_name_lowercase=strtolower($source_module_name);
$source_module_name_uppercase=strtoupper($source_module_name);
//$init_letter_uppercase=substr($source_module_name_uppercase, 0, 1).substr($source_module_name_lowercase, 1);
// copy SampleModule folder
$sourcefolder = "../../{$school}/modules/$source_module_name";
$targetfolder = "../../{$school}/modules/{$new_module}";
if (file_exists($targetfolder)) {
echo "Module already exits";
exit;
}
mkdir("{$targetfolder}",0750);
copy_folder_recursive($sourcefolder, $targetfolder);
// Remove CVS
rm_cvs($targetfolder);
// Find-Replace Vars
$stringsearch = array($source_module_name, $source_module_name_lowercase, $source_module_name_uppercase);
$new_module_lowercase=strtolower($new_module);
$new_module_uppercase=strtoupper($new_module);
$stringreplace = array("{$new_module}", "{$new_module_lowercase}", "{$new_module_uppercase}");
SearchandReplace($targetfolder,$stringsearch,$stringreplace);
// Add BeanFile etc array items
$modules_filename="../../{$school}/include/modules.add.php";
if (file_exists($modules_filename)) {
include_once($modules_filename);
}
if (!isset($beanList_add)) $beanList_add=array();
if (!isset($beanFiles_add)) $beanFiles_add=array();
if (!isset($moduleList_add)) $moduleList_add=array();
if (!isset($modInvisList_add)) $modInvisList_add=array();
$beanList_add[$new_module] = $new_module;
$beanFiles_add[$new_module] = "modules/{$new_module}/{$new_module}.php";
$moduleList_add[] = $new_module;
$modInvisList_add[] = $new_module;
$beanList_add_string="$"."beanList_add=".var_export($beanList_add, true).";\n";
$beanFiles_add_string="$"."beanFiles_add=".var_export($beanFiles_add, true).";\n";
$moduleList_add_string="$"."moduleList_add=".var_export($moduleList_add, true).";\n";
$modInvisList_add_sting="$"."modInvisList_add=".var_export($modInvisList_add, true).";\n";
$modules_add_file_content="";
if( $fh = @fopen("{$modules_filename}", "w" ) ){
fwrite($fh, $modules_add_file_content, strlen($modules_add_file_content));
fclose($fh);
}
// change Salary.php file to $new_module.php
$sourcefile= "../../{$school}/modules/{$new_module}/{$source_module_name}.php";
$targetfile = "../../{$school}/modules/{$new_module}/{$new_module}.php";
rename($sourcefile, $targetfile);
?>