Copyright (C) 2010-2015 All Rights Reserved. Contributor(s): Mark J Crane */ include "root.php"; //define the install class class install { var $result; var $domain_uuid; var $domain; var $switch_conf_dir; var $switch_scripts_dir; var $switch_sounds_dir; //$options '-n' --no-clobber public function recursive_copy($src, $dst, $options = '') { if (file_exists('/bin/cp')) { if (strtoupper(substr(PHP_OS, 0, 3)) === 'SUN') { //copy -R recursive, preserve attributes for SUN $cmd = 'cp -Rp '.$src.'/* '.$dst; } else { //copy -R recursive, -L follow symbolic links, -p preserve attributes for other Posix systemss $cmd = 'cp -RLp '.$options.' '.$src.'/* '.$dst; } exec ($cmd); //echo $cmd."\n"; } else { $dir = opendir($src); if (!$dir) { if (!mkdir($src, 0755, true)) { throw new Exception("recursive_copy() source directory '".$src."' does not exist."); } } if (!is_dir($dst)) { if (!mkdir($dst, 0755, true)) { throw new Exception("recursive_copy() failed to create destination directory '".$dst."'"); } } $scripts_dir_target = $_SESSION['switch']['scripts']['dir']; $scripts_dir_source = realpath($_SERVER["DOCUMENT_ROOT"].PROJECT_PATH.'/resources/install/scripts'); foreach (new RecursiveIteratorIterator(new RecursiveDirectoryIterator($src)) as $file_path_source) { if ( substr_count($file_path_source, '/..') == 0 && substr_count($file_path_source, '/.') == 0 && substr_count($file_path_source, '/.svn') == 0 && substr_count($file_path_source, '/.git') == 0 ) { if ($dst != $src.'/resources/config.lua') { //echo $file_path_source.' ---> '.$dst.'
'; copy($file_path_source, $dst); chmod($dst, 0755); } } } while(false !== ($file = readdir($dir))) { if (($file != '.') && ($file != '..')) { if (is_dir($src.'/'.$file)) { $this->recursive_copy($src.'/'.$file, $dst.'/'.$file); } else { //copy only missing files -n --no-clobber if (strpos($options,'-n') !== false) { if (!file_exists($dst.'/'.$file)) { copy($src.'/'.$file, $dst.'/'.$file); //echo "copy(".$src."/".$file.", ".$dst."/".$file.");
\n"; } } else { copy($src.'/'.$file, $dst.'/'.$file); } } } } closedir($dir); } } function recursive_delete($dir) { if (file_exists('/bin/rm')) { exec ('rm -Rf '.$dir.'/*'); } else { foreach (glob($dir) as $file) { if (is_dir($file)) { $this->recursive_delete("$file/*"); rmdir($file); //echo "rm dir: ".$file."\n"; } else { //echo "delete file: ".$file."\n"; unlink($file); } } } clearstatcache(); } function copy() { $this->copy_scripts(); //$this->copy_sounds(); } function copy_conf() { if (file_exists($this->switch_conf_dir)) { //make a backup copy of the conf directory $src_dir = $this->switch_conf_dir; $dst_dir = $this->switch_conf_dir.'.orig'; if (is_readable($src_dir)) { $this->recursive_copy($src_dir, $dst_dir); $this->recursive_delete($src_dir); } else { if ($src_dir != "/conf") { mkdir($src_dir, 0774, true); } } //make sure the conf directory exists if (!is_dir($this->switch_conf_dir)) { if (!mkdir($this->switch_conf_dir, 0774, true)) { throw new Exception("Failed to create the switch conf directory '".$this->switch_conf_dir."'. "); } } //copy resources/templates/conf to the freeswitch conf dir if (file_exists('/usr/share/examples/fusionpbx/resources/templates/conf')){ $src_dir = "/usr/share/examples/fusionpbx/resources/templates/conf"; } else { $src_dir = $_SERVER["DOCUMENT_ROOT"].PROJECT_PATH."/resources/templates/conf"; } $dst_dir = $this->switch_conf_dir; if (is_readable($dst_dir)) { $this->recursive_copy($src_dir, $dst_dir); } //print_r($install->result); } } // added /examples/ into the string function copy_scripts() { if (file_exists($this->switch_scripts_dir)) { if (file_exists('/usr/share/examples/fusionpbx/resources/install/scripts')){ $src_dir = '/usr/share/examples/fusionpbx/resources/install/scripts'; } else { $src_dir = $_SERVER["DOCUMENT_ROOT"].PROJECT_PATH.'/resources/install/scripts'; } $dst_dir = $this->switch_scripts_dir; if (is_readable($this->switch_scripts_dir)) { $this->recursive_copy($src_dir, $dst_dir, $_SESSION['scripts']['options']['text']); unset($src_dir, $dst_dir); } chmod($dst_dir, 0774); } } //function copy_sounds() { // if (file_exists($this->switch_sounds_dir)) { // if (file_exists('/usr/share/examples/fusionpbx/resources/install/sounds/en/us/callie/custom/')){ // $src_dir = '/usr/share/examples/fusionpbx/resources/install/sounds/en/us/callie/custom/'; // changes the output dir for testing // $dst_dir = $this->switch_sounds_dir.'/en/us/fusionpbx/custom/'; // } // else { // $src_dir = $_SERVER["DOCUMENT_ROOT"].PROJECT_PATH.'/resources/install/sounds/en/us/callie/custom/'; // $dst_dir = $this->switch_sounds_dir.'/en/us/callie/custom/'; // } // $this->recursive_copy($src_dir, $dst_dir, "-n"); // if (is_readable($this->switch_sounds_dir)) { // $this->recursive_copy($src_dir, $dst_dir); // chmod($dst_dir, 0664); // } // } //} } //how to use the class //$install = new install; //$install->domain_uuid = $domain_uuid; //$install->switch_conf_dir = $switch_conf_dir; //$install->switch_scripts_dir = $switch_scripts_dir; //$install->switch_sounds_dir = $switch_sounds_dir; //$install->copy(); //print_r($install->result); ?>