$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); ?>