Generate.php 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. <?php
  2. /*
  3. * FecShop file.
  4. *
  5. * @link http://www.fecshop.com/
  6. * @copyright Copyright (c) 2016 FecShop Software LLC
  7. * @license http://www.fecshop.com/license/
  8. */
  9. namespace fecshop\services\extension;
  10. //use fecshop\models\mysqldb\cms\StaticBlock;
  11. use Yii;
  12. use fecshop\services\Service;
  13. /**
  14. * @author Terry Zhao <2358269014@qq.com>
  15. * @since 1.0
  16. */
  17. class Generate extends Service
  18. {
  19. /**
  20. * @param $param | array
  21. * 数组子项:package, addon_folder, namespaces, addon_name, addon_author
  22. * 创建应用初始化包到指定的文件路径。
  23. */
  24. public function createAddonsFiles($param)
  25. {
  26. $package = isset($param['package']) ? $param['package'] : '';
  27. $addon_folder = isset($param['addon_folder']) ? $param['addon_folder'] : '';
  28. $namespaces = isset($param['namespaces']) ? $param['namespaces'] : '';
  29. $addon_name = isset($param['addon_name']) ? $param['addon_name'] : '';
  30. $addon_author = isset($param['addon_author']) ? $param['addon_author'] : '';
  31. if (!$package || !$addon_folder || !$namespaces || !$addon_name || !$addon_author) {
  32. return false;
  33. }
  34. // 创建文件夹
  35. if (!$this->createFolder($param)) {
  36. return false;
  37. }
  38. // 开始渲染gii 模板
  39. //得到应用文件夹
  40. $addonPath = Yii::getAlias('@addons/'.$package.'/'.$addon_folder);
  41. // config.php文件写入
  42. $viewFile = '@fecshop/services/extension/generate/config.php';
  43. $configContent =Yii::$app->view->renderFile($viewFile, $param);
  44. // 写入的文件路径
  45. $addonConfigFile = $addonPath. '/config.php';
  46. if (@file_put_contents($addonConfigFile, $configContent) === false) {
  47. Yii::$service->helper->errors->add('Unable to write the file '.$addonConfigFile);
  48. return false;
  49. }
  50. // 写入Install
  51. $viewFile = '@fecshop/services/extension/generate/administer/Install.php';
  52. $configContent =Yii::$app->view->renderFile($viewFile, $param);
  53. // 写入的文件路径
  54. $addonConfigFile = $addonPath. '/administer/Install.php';
  55. if (@file_put_contents($addonConfigFile, $configContent) === false) {
  56. Yii::$service->helper->errors->add('Unable to write the file '.$addonConfigFile);
  57. return false;
  58. }
  59. // 写入Upgrade
  60. $viewFile = '@fecshop/services/extension/generate/administer/Upgrade.php';
  61. $configContent =Yii::$app->view->renderFile($viewFile, $param);
  62. // 写入的文件路径
  63. $addonConfigFile = $addonPath. '/administer/Upgrade.php';
  64. if (@file_put_contents($addonConfigFile, $configContent) === false) {
  65. Yii::$service->helper->errors->add('Unable to write the file '.$addonConfigFile);
  66. return false;
  67. }
  68. // 写入 Uninstall
  69. $viewFile = '@fecshop/services/extension/generate/administer/Uninstall.php';
  70. $configContent =Yii::$app->view->renderFile($viewFile, $param);
  71. // 写入的文件路径
  72. $addonConfigFile = $addonPath. '/administer/Uninstall.php';
  73. if (@file_put_contents($addonConfigFile, $configContent) === false) {
  74. Yii::$service->helper->errors->add('Unable to write the file '.$addonConfigFile);
  75. return false;
  76. }
  77. return true;
  78. }
  79. public function createFolder($param)
  80. {
  81. $package = isset($param['package']) ? $param['package'] : '';
  82. $addon_folder = isset($param['addon_folder']) ? $param['addon_folder'] : '';
  83. $namespaces = isset($param['namespaces']) ? $param['namespaces'] : '';
  84. $addon_name = isset($param['addon_name']) ? $param['addon_name'] : '';
  85. $addon_author = isset($param['addon_author']) ? $param['addon_author'] : '';
  86. $addonPath = Yii::getAlias('@addons/'.$package.'/'.$addon_folder);
  87. // 创建文件夹
  88. if (!$this->createDir($addonPath)) {
  89. return false;
  90. }
  91. // administer
  92. $administerPath = $addonPath . '/administer';
  93. if (!$this->createDir($administerPath)) {
  94. return false;
  95. }
  96. // app/appfront
  97. $appfrontPath = $addonPath . '/app/appfront';
  98. if (!$this->createDir($appfrontPath)) {
  99. return false;
  100. }
  101. // models
  102. $modelPath = $addonPath . '/models';
  103. if (!$this->createDir($modelPath)) {
  104. return false;
  105. }
  106. // services
  107. $servicesPath = $addonPath . '/services';
  108. if (!$this->createDir($servicesPath)) {
  109. return false;
  110. }
  111. return true;
  112. }
  113. public function createDir($dir)
  114. {
  115. if (is_dir($dir)) {
  116. Yii::$service->helper->errors->add('dir['.$dir.'] is exist');
  117. return false;
  118. }
  119. return mkdir($dir,0777,true);
  120. }
  121. }