/** * generate project based on template * @param array $services . note: here '/' in each service name is replaced by '__', to avoid dealing with packages * @param string $amfphpEntryPointUrl * @param String absolute url to folder where to put the generated code * @return null */ public function generate($services, $amfphpEntryPointUrl, $targetFolder) { foreach ($services as $service) { $service->name = str_replace('/', '__', $service->name); } $this->services = $services; $this->amfphpEntryPointUrl = $amfphpEntryPointUrl; Amfphp_BackOffice_ClientGenerator_Util::recurseCopy($this->templateFolderUrl, $targetFolder); $it = new RecursiveDirectoryIterator($targetFolder); foreach (new RecursiveIteratorIterator($it) as $file) { if (In_Array(SubStr($file, StrrPos($file, '.') + 1), $this->codeFileExtensions) == true) { $this->fileBeingProcessed = $file; $this->processSourceFile($file); } } }
if (isset($GLOBALS['HTTP_RAW_POST_DATA'])) { $servicesStr = $GLOBALS['HTTP_RAW_POST_DATA']; } else { $servicesStr = file_get_contents('php://input'); } $services = json_decode($servicesStr); $generatorClass = $_GET['generatorClass']; $generatorManager = new Amfphp_BackOffice_ClientGenerator_GeneratorManager(); $generators = $generatorManager->loadGenerators(array('ClientGenerator/Generators')); $config = new Amfphp_BackOffice_Config(); $generator = $generators[$generatorClass]; $newFolderName = date("Ymd-his-") . $generatorClass; //temp for testing. //$newFolderName = $generatorClass; $genRootRelativeUrl = 'ClientGenerator/Generated/'; $genRootFolder = AMFPHP_BACKOFFICE_ROOTPATH . $genRootRelativeUrl; $targetFolder = $genRootFolder . $newFolderName; $generator->generate($services, $config->resolveAmfphpEntryPointUrl(), $targetFolder); $urlSuffix = $generator->getTestUrlSuffix(); if ($urlSuffix !== false) { echo '<a target="_blank" href="' . $genRootRelativeUrl . $newFolderName . '/' . $urlSuffix . '"> try your generated project here</a><br/><br/>'; } if (Amfphp_BackOffice_ClientGenerator_Util::serverCanZip()) { $zipFileName = "{$newFolderName}.zip"; $zipFilePath = $genRootFolder . $zipFileName; Amfphp_BackOffice_ClientGenerator_Util::zipFolder($targetFolder, $zipFilePath, $genRootFolder); //echo '<script>window.location="' . $genRootRelativeUrl . $zipFileName . '";</script>'; } else { echo " Server can not create zip of generated project, because ZipArchive is not available.<br/><br/>"; echo 'client project written to ' . $targetFolder; }
/** * * @param array $services . note: here '/' in each service name must be replaced by '__', to avoid dealing with packages * @param string $amfphpEntryPointUrl * @return string folder where the data was written */ public function generate($services, $amfphpEntryPointUrl) { $this->services = $services; $this->amfphpEntryPointUrl = $amfphpEntryPointUrl; $dstFolder = 'ClientGenerator/Generated/' . date("Ymd-his-") . get_class($this); Amfphp_BackOffice_ClientGenerator_Util::recurseCopy($this->templateFolderUrl, AMFPHP_BACKOFFICE_ROOTPATH . $dstFolder); $it = new RecursiveDirectoryIterator($dstFolder); foreach (new RecursiveIteratorIterator($it) as $file) { if (In_Array(SubStr($file, StrrPos($file, '.') + 1), $this->codeFileExtensions) == true) { $this->fileBeingProcessed = $file; $this->processSourceFile($file); } } return $dstFolder; }