Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ## Class code
- <?php
- class Wfm_CodeGenerator_Doctrine_Form {
- //protected $conn;
- protected $fields = array(
- );
- public function generate($table, $class, $overwrite = false) {
- $model = Doctrine::getTable($table);
- $columns = $model->getColumns();
- if(!empty($columns) && count($columns) > 0) {
- // Create a path based on Zend Naming convetion and assign the filename
- $classPath = explode('_', $class);
- $fileName = array_pop($classPath);
- // Create the form class
- $classGen = new Zend_CodeGenerator_Php_Class;
- $classGen->setName($class)
- ->setExtendedClass('Wfm_Form');
- // Create the class method start()
- $methodGen = new Zend_CodeGenerator_Php_Method;
- $methodGen->setName('start');
- // Var to store method contents into
- $methodBody = array();
- foreach($columns as $name => $meta) {
- switch($meta['type']) {
- case 'string':
- if($meta['length'] > 255) {
- $type = 'textarea';
- } else {
- $type = 'text';
- }
- break;
- case 'integer':
- if($name == 'id' || strpos($name, '_id') !== false) {
- $type = 'hidden';
- } else {
- // Umm wat?
- }
- break;
- case 'timestamp':
- $type = 'datePicker';
- break;
- }
- $methodBody[] = sprintf('$this->addElement' . "('%s', '%s', array(
- 'label' => '%s'
- ));", $type, $name, ucwords(str_replace('_', ' ', $name)));
- }
- $methodGen->setBody(implode("\n\n", $methodBody));
- $classGen->setMethod($methodGen);
- return $classGen->generate();
- }
- }
- }
- ?>
- ## Generated File
- <?php
- class Manager_Campaign_CreateForm extends Wfm_Form
- {
- public function start()
- {
- $this->addElement('hidden', 'id', array(
- 'label' => 'Id'
- ));
- $this->addElement('hidden', 'advertiser_id', array(
- 'label' => 'Advertiser Id'
- ));
- $this->addElement('hidden', 'category_id', array(
- 'label' => 'Category Id'
- ));
- $this->addElement('hidden', 'manager_id', array(
- 'label' => 'Manager Id'
- ));
- $this->addElement('hidden', 'redirect', array(
- 'label' => 'Redirect'
- ));
- $this->addElement('hidden', 'expiration_redirect', array(
- 'label' => 'Expiration Redirect'
- ));
- $this->addElement('hidden', 'network_payout', array(
- 'label' => 'Network Payout'
- ));
- $this->addElement('hidden', 'publisher_payout', array(
- 'label' => 'Publisher Payout'
- ));
- $this->addElement('hidden', 'version', array(
- 'label' => 'Version'
- ));
- $this->addElement('text', 'name', array(
- 'label' => 'Name'
- ));
- $this->addElement('textarea', 'target', array(
- 'label' => 'Target'
- ));
- $this->addElement('textarea', 'description', array(
- 'label' => 'Description'
- ));
- $this->addElement('text', 'short_description', array(
- 'label' => 'Short Description'
- ));
- $this->addElement('text', 'private', array(
- 'label' => 'Private'
- ));
- $this->addElement('textarea', 'private_terms', array(
- 'label' => 'Private Terms'
- ));
- $this->addElement('text', 'email_suppression_url', array(
- 'label' => 'Email Suppression Url'
- ));
- $this->addElement('textarea', 'email_from_lines', array(
- 'label' => 'Email From Lines'
- ));
- $this->addElement('textarea', 'email_subject_lines', array(
- 'label' => 'Email Subject Lines'
- ));
- $this->addElement('text', 'image', array(
- 'label' => 'Image'
- ));
- $this->addElement('text', 'active', array(
- 'label' => 'Active'
- ));
- $this->addElement('text', 'deleted', array(
- 'label' => 'Deleted'
- ));
- $this->addElement('text', 'expiration', array(
- 'label' => 'Expiration'
- ));
- $this->addElement('datePicker', 'created', array(
- 'label' => 'Created'
- ));
- $this->addElement('datePicker', 'modified', array(
- 'label' => 'Modified'
- ));
- }
- }
- ?>
Add Comment
Please, Sign In to add comment