/ForkTool/module/generator.php

https://github.com/jeroendesloovere/forkcms-tools · PHP · 297 lines · 150 code · 52 blank · 95 comment · 2 complexity · ebe5b37ffa89967a54616ea25c3b7195 MD5 · raw file

  1. <?php
  2. /**
  3. * Class for generating a module
  4. *
  5. * @author Jelmer Snoeck <jelmer.snoeck@netlash.com>
  6. *
  7. */
  8. class ModuleGenerator
  9. {
  10. /**
  11. * The values
  12. *
  13. * @var string
  14. */
  15. private $module;
  16. /**
  17. * Start the module generator
  18. * E
  19. * @param string $module The module name.
  20. */
  21. public function __construct($module)
  22. {
  23. // check if the widget doesn't exists to continue
  24. if(!is_dir(FRONTENDPATH . 'modules/' . $module))
  25. {
  26. // set variables
  27. $this->module = $module;
  28. // build the backend
  29. $this->buildBackend();
  30. // build the frontend
  31. $this->buildFrontend();
  32. // create the action
  33. $this->createAction();
  34. // create the models
  35. $this->createModel();
  36. // create the configs
  37. $this->createConfig();
  38. // create the installer
  39. $this->createInstaller();
  40. // create template
  41. $this->createTemplate();
  42. // widget created
  43. echo "The module '$this->module' is created.\n";
  44. }
  45. // widget exists
  46. else echo "The module already exists.\n";
  47. }
  48. /**
  49. * Build the backend
  50. *
  51. * @return void
  52. */
  53. private function buildBackend()
  54. {
  55. // make backend dirs
  56. mkdir(BACKENDPATH . 'modules/' . $this->module);
  57. mkdir(BACKENDPATH . 'modules/' . $this->module . '/actions');
  58. mkdir(BACKENDPATH . 'modules/' . $this->module . '/engine');
  59. mkdir(BACKENDPATH . 'modules/' . $this->module . '/installer');
  60. mkdir(BACKENDPATH . 'modules/' . $this->module . '/installer/data');
  61. mkdir(BACKENDPATH . 'modules/' . $this->module . '/layout');
  62. mkdir(BACKENDPATH . 'modules/' . $this->module . '/layout/templates');
  63. }
  64. /**
  65. * Build the frontend
  66. *
  67. * @return void
  68. */
  69. private function buildFrontend()
  70. {
  71. // make frontend
  72. mkdir(FRONTENDPATH . 'modules/' . $this->module);
  73. mkdir(FRONTENDPATH . 'modules/' . $this->module . '/actions');
  74. mkdir(FRONTENDPATH . 'modules/' . $this->module . '/engine');
  75. mkdir(FRONTENDPATH . 'modules/' . $this->module . '/layout');
  76. mkdir(FRONTENDPATH . 'modules/' . $this->module . '/layout/templates');
  77. }
  78. /**
  79. * Create action
  80. *
  81. * @return void
  82. */
  83. private function createAction()
  84. {
  85. // index action template
  86. $modTemplate = CLIPATH . 'module/bases/backend/index.php';
  87. $fhModTemplate = fopen($modTemplate, "r");
  88. $tdModTemplate = fread($fhModTemplate, filesize($modTemplate));
  89. $tdModTemplate = str_replace('tempnameuc', ucfirst($this->module), $tdModTemplate);
  90. $tdModTemplate = str_replace('tempname', $this->module, $tdModTemplate);
  91. $tdModTemplate = str_replace('authorname', AUTHOR, $tdModTemplate);
  92. // create index action
  93. $modFile = fopen(BACKENDPATH . 'modules/' . $this->module . '/actions/index.php', 'w');
  94. fwrite($modFile, $tdModTemplate);
  95. // close files
  96. fclose($modFile);
  97. fclose($fhModTemplate);
  98. // index action template
  99. $modTemplate = CLIPATH . 'module/bases/frontend/index.php';
  100. $fhModTemplate = fopen($modTemplate, "r");
  101. $tdModTemplate = fread($fhModTemplate, filesize($modTemplate));
  102. $tdModTemplate = str_replace('tempnameuc', ucfirst($this->module), $tdModTemplate);
  103. $tdModTemplate = str_replace('tempname', $this->module, $tdModTemplate);
  104. $tdModTemplate = str_replace('authorname', AUTHOR, $tdModTemplate);
  105. // create index action
  106. $modFile = fopen(FRONTENDPATH . 'modules/' . $this->module . '/actions/index.php', 'w');
  107. fwrite($modFile, $tdModTemplate);
  108. // close files
  109. fclose($modFile);
  110. fclose($fhModTemplate);
  111. }
  112. /**
  113. * Create config
  114. *
  115. * @return void
  116. */
  117. private function createConfig()
  118. {
  119. // config template
  120. $modTemplate = CLIPATH . 'module/bases/backend/config.php';
  121. $fhModTemplate = fopen($modTemplate, "r");
  122. $tdModTemplate = fread($fhModTemplate, filesize($modTemplate));
  123. $tdModTemplate = str_replace('tempnameuc', ucfirst($this->module), $tdModTemplate);
  124. $tdModTemplate = str_replace('tempname', $this->module, $tdModTemplate);
  125. $tdModTemplate = str_replace('authorname', AUTHOR, $tdModTemplate);
  126. // create config
  127. $modFile = fopen(BACKENDPATH . 'modules/' . $this->module . '/config.php', 'w');
  128. fwrite($modFile, $tdModTemplate);
  129. // close files
  130. fclose($modFile);
  131. fclose($fhModTemplate);
  132. // module template
  133. $modTemplate = CLIPATH . 'module/bases/frontend/config.php';
  134. $fhModTemplate = fopen($modTemplate, "r");
  135. $tdModTemplate = fread($fhModTemplate, filesize($modTemplate));
  136. $tdModTemplate = str_replace('tempnameuc', ucfirst($this->module), $tdModTemplate);
  137. $tdModTemplate = str_replace('tempname', $this->module, $tdModTemplate);
  138. $tdModTemplate = str_replace('authorname', AUTHOR, $tdModTemplate);
  139. // create model
  140. $modFile = fopen(FRONTENDPATH . 'modules/' . $this->module . '/config.php', 'w');
  141. fwrite($modFile, $tdModTemplate);
  142. // close files
  143. fclose($modFile);
  144. fclose($fhModTemplate);
  145. }
  146. /**
  147. * Create installer
  148. *
  149. * @return void
  150. */
  151. private function createInstaller()
  152. {
  153. // install template
  154. $modTemplate = CLIPATH . 'module/bases/backend/install.php';
  155. $fhModTemplate = fopen($modTemplate, "r");
  156. $tdModTemplate = fread($fhModTemplate, filesize($modTemplate));
  157. $tdModTemplate = str_replace('tempnameuc', ucfirst($this->module), $tdModTemplate);
  158. $tdModTemplate = str_replace('tempname', $this->module, $tdModTemplate);
  159. $tdModTemplate = str_replace('authorname', AUTHOR, $tdModTemplate);
  160. // create installer
  161. $modFile = fopen(BACKENDPATH . 'modules/' . $this->module . '/installer/install.php', 'w');
  162. fwrite($modFile, $tdModTemplate);
  163. // close files
  164. fclose($modFile);
  165. fclose($fhModTemplate);
  166. // create locale
  167. $modTemplate = CLIPATH . 'module/bases/backend/locale.xml';
  168. $fhModTemplate = fopen($modTemplate, "r");
  169. $tdModTemplate = fread($fhModTemplate, filesize($modTemplate));
  170. $tdModTemplate = str_replace('tempnameuc', ucfirst($this->module), $tdModTemplate);
  171. $tdModTemplate = str_replace('tempname', $this->module, $tdModTemplate);
  172. $tdModTemplate = str_replace('authorname', AUTHOR, $tdModTemplate);
  173. // create installer
  174. $modFile = fopen(BACKENDPATH . 'modules/' . $this->module . '/installer/data/locale.xml', 'w');
  175. fwrite($modFile, $tdModTemplate);
  176. // close files
  177. fclose($modFile);
  178. fclose($fhModTemplate);
  179. // create installer
  180. $modFile = fopen(BACKENDPATH . 'modules/' . $this->module . '/installer/data/install.sql', 'w');
  181. fwrite($modFile, '');
  182. // close files
  183. fclose($modFile);
  184. }
  185. /**
  186. * Create model
  187. *
  188. * @return void
  189. */
  190. private function createModel()
  191. {
  192. // module template
  193. $modTemplate = CLIPATH . 'module/bases/backend/model.php';
  194. $fhModTemplate = fopen($modTemplate, "r");
  195. $tdModTemplate = fread($fhModTemplate, filesize($modTemplate));
  196. $tdModTemplate = str_replace('tempnameuc', ucfirst($this->module), $tdModTemplate);
  197. $tdModTemplate = str_replace('tempname', $this->module, $tdModTemplate);
  198. $tdModTemplate = str_replace('authorname', AUTHOR, $tdModTemplate);
  199. // create model
  200. $modFile = fopen(BACKENDPATH . 'modules/' . $this->module . '/engine/model.php', 'w');
  201. fwrite($modFile, $tdModTemplate);
  202. // close files
  203. fclose($modFile);
  204. fclose($fhModTemplate);
  205. // module template
  206. $modTemplate = CLIPATH . 'module/bases/frontend/model.php';
  207. $fhModTemplate = fopen($modTemplate, "r");
  208. $tdModTemplate = fread($fhModTemplate, filesize($modTemplate));
  209. $tdModTemplate = str_replace('tempnameuc', ucfirst($this->module), $tdModTemplate);
  210. $tdModTemplate = str_replace('tempname', $this->module, $tdModTemplate);
  211. $tdModTemplate = str_replace('authorname', AUTHOR, $tdModTemplate);
  212. // create model
  213. $modFile = fopen(FRONTENDPATH . 'modules/' . $this->module . '/engine/model.php', 'w');
  214. fwrite($modFile, $tdModTemplate);
  215. // close files
  216. fclose($modFile);
  217. fclose($fhModTemplate);
  218. }
  219. /**
  220. * Make names
  221. *
  222. * @return void
  223. */
  224. private function createTemplate()
  225. {
  226. // index action template
  227. $modTemplate = CLIPATH . 'module/bases/backend/index.tpl';
  228. $fhModTemplate = fopen($modTemplate, "r");
  229. $tdModTemplate = fread($fhModTemplate, filesize($modTemplate));
  230. $tdModTemplate = str_replace('tempnameuc', ucfirst($this->module), $tdModTemplate);
  231. $tdModTemplate = str_replace('tempname', $this->module, $tdModTemplate);
  232. // create index template
  233. $modFile = fopen(BACKENDPATH . 'modules/' . $this->module . '/layout/templates/index.tpl', 'w');
  234. fwrite($modFile, $tdModTemplate);
  235. // close files
  236. fclose($modFile);
  237. fclose($fhModTemplate);
  238. // create index template
  239. $modFile = fopen(FRONTENDPATH . 'modules/' . $this->module . '/layout/templates/index.tpl', 'w');
  240. fwrite($modFile, '');
  241. // close file
  242. fclose($modFile);
  243. }
  244. }
  245. ?>