<?php
 namespace TCMS\Gen;
 require_once "env-function.php";
 class TCMSGenProject {
 public function createApp($options) {
 if(isset($options['help'])) {
 $this->showHelpCreateApp();
 return true;
 }
 if(!isset($options['make:app'])) {
 showLogError("Vui lòng truyền tên cho app cần tạo.");
 showLogInfo("Nhập --help để xem hướng dẫn tạo app.");
 return false;
 }
 $nappId = preg_replace('/[^a-z0-9]/i', '-', $options['make:app']);
 $nappId = str_replace('--', '-', $nappId);
 $nappId = str_replace('--', '-', $nappId);
 $projectPath = ROOT_PATH . 'apps' . DIRECTORY_SEPARATOR . $nappId;
 if(file_exists($projectPath)) {
 showLogError("App " . $nappId . " đã tồn tại!");
 return false;
 }
 $this->recurse_copy(ROOT_PATH . 'libs' . DIRECTORY_SEPARATOR . 'gen' . DIRECTORY_SEPARATOR . 'data' . DIRECTORY_SEPARATOR . 'project', $projectPath);
 showLogSuccess("Tạo thành công app " . $projectPath);
 $this->setAppId($nappId);
 }
 private function setAppId($nappId) {
 if(!file_exists(PUBLIC_PATH . 'index.php')) return;
 $isFOund = false;
 $fn = fopen(PUBLIC_PATH . 'index.php', "r");
 $appContents = '';
 if($fn) {
 while (!feof($fn)) {
 $line = fgets($fn);
 $line = $line;
 if(!$isFOund) {
 $startIndex = strpos($line, "define('APP_ID',");
 if($startIndex !== false) {
 $startIndex += 17;
 $s = substr($line, 0, $startIndex);
 $s .= "'" . $nappId . "')";
 $endIndex = strpos($line, "')", $startIndex);
 $s .= substr($line, $endIndex + 2);
 $line = $s;
 $isFOund = true;
 }
 }
 $appContents .= $line;
 }
 fclose($fn);
 }
 if($isFOund) {
 $fpEvent = fopen(PUBLIC_PATH . 'index.php', 'w');
 fwrite($fpEvent, $appContents);
 fclose($fpEvent);
 showLogSuccess("Cập nhập thành công APP_ID thành " . $nappId);
 }
 else {
 showLogError("Không tìm thấy APP_ID trong file index.php");
 }
 }
 private function recurse_copy($src,$dst) {
 $dir = opendir($src);
 @mkdir($dst);
 while(false !== ( $file = readdir($dir)) ) {
 if (( $file != '.' ) && ( $file != '..' )) {
 if ( is_dir($src . DIRECTORY_SEPARATOR . $file) ) {
 $this->recurse_copy($src . DIRECTORY_SEPARATOR . $file,$dst . DIRECTORY_SEPARATOR . $file);
 }
 else {
 copy($src . DIRECTORY_SEPARATOR . $file,$dst . DIRECTORY_SEPARATOR . $file);
 }
 }
 }
 closedir($dir);
 }
 public function showHelpCreateApp() {
 drawLine();
 echo "Description:\n";
 showLogInfo("  Tự động tạo một app mới");
 echo "\nFormat:\n";
 echo "  make:app [app-name]\n\n";
 echo "Required:\n";
 showHelpTextColor("[app-name]", "\tTên app cần tạo. VD: web-ban-hang");
 drawLine();
 }
 }
