Guest User

Untitled

a guest
Jun 18th, 2018
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.71 KB | None | 0 0
  1. ## Class code
  2. <?php
  3.  
  4. class Wfm_CodeGenerator_Doctrine_Form {
  5.  
  6. //protected $conn;
  7.  
  8. protected $fields = array(
  9. );
  10.  
  11. public function generate($table, $class, $overwrite = false) {
  12. $model = Doctrine::getTable($table);
  13.  
  14. $columns = $model->getColumns();
  15.  
  16. if(!empty($columns) && count($columns) > 0) {
  17.  
  18. // Create a path based on Zend Naming convetion and assign the filename
  19. $classPath = explode('_', $class);
  20.  
  21. $fileName = array_pop($classPath);
  22.  
  23. // Create the form class
  24. $classGen = new Zend_CodeGenerator_Php_Class;
  25.  
  26. $classGen->setName($class)
  27. ->setExtendedClass('Wfm_Form');
  28.  
  29. // Create the class method start()
  30. $methodGen = new Zend_CodeGenerator_Php_Method;
  31.  
  32. $methodGen->setName('start');
  33.  
  34. // Var to store method contents into
  35. $methodBody = array();
  36.  
  37. foreach($columns as $name => $meta) {
  38.  
  39. switch($meta['type']) {
  40. case 'string':
  41. if($meta['length'] > 255) {
  42. $type = 'textarea';
  43. } else {
  44. $type = 'text';
  45. }
  46. break;
  47.  
  48. case 'integer':
  49. if($name == 'id' || strpos($name, '_id') !== false) {
  50. $type = 'hidden';
  51. } else {
  52. // Umm wat?
  53. }
  54. break;
  55.  
  56. case 'timestamp':
  57. $type = 'datePicker';
  58. break;
  59. }
  60.  
  61. $methodBody[] = sprintf('$this->addElement' . "('%s', '%s', array(
  62. 'label' => '%s'
  63. ));", $type, $name, ucwords(str_replace('_', ' ', $name)));
  64.  
  65. }
  66.  
  67. $methodGen->setBody(implode("\n\n", $methodBody));
  68.  
  69. $classGen->setMethod($methodGen);
  70.  
  71. return $classGen->generate();
  72. }
  73. }
  74.  
  75. }
  76.  
  77. ?>
  78.  
  79. ## Generated File
  80. <?php
  81. class Manager_Campaign_CreateForm extends Wfm_Form
  82. {
  83.  
  84. public function start()
  85. {
  86. $this->addElement('hidden', 'id', array(
  87. 'label' => 'Id'
  88. ));
  89.  
  90. $this->addElement('hidden', 'advertiser_id', array(
  91. 'label' => 'Advertiser Id'
  92. ));
  93.  
  94. $this->addElement('hidden', 'category_id', array(
  95. 'label' => 'Category Id'
  96. ));
  97.  
  98. $this->addElement('hidden', 'manager_id', array(
  99. 'label' => 'Manager Id'
  100. ));
  101.  
  102. $this->addElement('hidden', 'redirect', array(
  103. 'label' => 'Redirect'
  104. ));
  105.  
  106. $this->addElement('hidden', 'expiration_redirect', array(
  107. 'label' => 'Expiration Redirect'
  108. ));
  109.  
  110. $this->addElement('hidden', 'network_payout', array(
  111. 'label' => 'Network Payout'
  112. ));
  113.  
  114. $this->addElement('hidden', 'publisher_payout', array(
  115. 'label' => 'Publisher Payout'
  116. ));
  117.  
  118. $this->addElement('hidden', 'version', array(
  119. 'label' => 'Version'
  120. ));
  121.  
  122. $this->addElement('text', 'name', array(
  123. 'label' => 'Name'
  124. ));
  125.  
  126. $this->addElement('textarea', 'target', array(
  127. 'label' => 'Target'
  128. ));
  129.  
  130. $this->addElement('textarea', 'description', array(
  131. 'label' => 'Description'
  132. ));
  133.  
  134. $this->addElement('text', 'short_description', array(
  135. 'label' => 'Short Description'
  136. ));
  137.  
  138. $this->addElement('text', 'private', array(
  139. 'label' => 'Private'
  140. ));
  141.  
  142. $this->addElement('textarea', 'private_terms', array(
  143. 'label' => 'Private Terms'
  144. ));
  145.  
  146. $this->addElement('text', 'email_suppression_url', array(
  147. 'label' => 'Email Suppression Url'
  148. ));
  149.  
  150. $this->addElement('textarea', 'email_from_lines', array(
  151. 'label' => 'Email From Lines'
  152. ));
  153.  
  154. $this->addElement('textarea', 'email_subject_lines', array(
  155. 'label' => 'Email Subject Lines'
  156. ));
  157.  
  158. $this->addElement('text', 'image', array(
  159. 'label' => 'Image'
  160. ));
  161.  
  162. $this->addElement('text', 'active', array(
  163. 'label' => 'Active'
  164. ));
  165.  
  166. $this->addElement('text', 'deleted', array(
  167. 'label' => 'Deleted'
  168. ));
  169.  
  170. $this->addElement('text', 'expiration', array(
  171. 'label' => 'Expiration'
  172. ));
  173.  
  174. $this->addElement('datePicker', 'created', array(
  175. 'label' => 'Created'
  176. ));
  177.  
  178. $this->addElement('datePicker', 'modified', array(
  179. 'label' => 'Modified'
  180. ));
  181. }
  182.  
  183.  
  184. }
  185. ?>
Add Comment
Please, Sign In to add comment