/backend/modules/form_builder/installer/install.php

https://github.com/geekbuntu/forkcms · PHP · 133 lines · 82 code · 19 blank · 32 comment · 0 complexity · af563eae029ea2d8fd0d5d651c24a4d1 MD5 · raw file

  1. <?php
  2. /**
  3. * Installer for the form_builder module
  4. *
  5. * @package installer
  6. * @subpackage form_builder
  7. *
  8. * @author Dieter Vanden Eynde <dieter@netlash.com>
  9. * @since 2.0
  10. */
  11. class FormBuilderInstall extends ModuleInstaller
  12. {
  13. /**
  14. * Install the module
  15. *
  16. * @return void
  17. */
  18. protected function execute()
  19. {
  20. // load install.sql
  21. $this->importSQL(PATH_WWW . '/backend/modules/form_builder/installer/data/install.sql');
  22. // add as a module
  23. $this->addModule('form_builder', 'The module to create and manage forms.');
  24. // import locale
  25. $this->importLocale(dirname(__FILE__) . '/data/locale.xml');
  26. // module rights
  27. $this->setModuleRights(1, 'form_builder');
  28. // action rights
  29. $this->setActionRights(1, 'form_builder', 'add');
  30. $this->setActionRights(1, 'form_builder', 'edit');
  31. $this->setActionRights(1, 'form_builder', 'delete');
  32. $this->setActionRights(1, 'form_builder', 'index');
  33. $this->setActionRights(1, 'form_builder', 'data');
  34. $this->setActionRights(1, 'form_builder', 'data_details');
  35. $this->setActionRights(1, 'form_builder', 'mass_data_action');
  36. $this->setActionRights(1, 'form_builder', 'get_field');
  37. $this->setActionRights(1, 'form_builder', 'delete_field');
  38. $this->setActionRights(1, 'form_builder', 'save_field');
  39. $this->setActionRights(1, 'form_builder', 'sequence');
  40. $this->setActionRights(1, 'form_builder', 'export_data');
  41. // set navigation
  42. $navigationModulesId = $this->setNavigation(null, 'Modules');
  43. $this->setNavigation($navigationModulesId, 'FormBuilder', 'form_builder/index', array(
  44. 'form_builder/add',
  45. 'form_builder/edit',
  46. 'form_builder/data',
  47. 'form_builder/data_details'
  48. ));
  49. // get search extra id
  50. $searchId = (int) $this->getDB()->getVar('SELECT id FROM pages_extras WHERE module = ? AND type = ? AND action = ?', array('search', 'widget', 'form'));
  51. // loop languages
  52. foreach($this->getLanguages() as $language)
  53. {
  54. // create form
  55. $form = array();
  56. $form['language'] = $language;
  57. $form['user_id'] = $this->getDefaultUserID();
  58. $form['name'] = ucfirst($this->getLocale('Contact', 'core', $language, 'lbl', 'frontend'));
  59. $form['method'] = 'database_email';
  60. $form['email'] = $this->getVariable('email');
  61. $form['success_message'] = $this->getLocale('ContactMessageSent', 'core', $language, 'msg', 'frontend');
  62. $form['identifier'] = 'contact-' . $language;
  63. $form['created_on'] = gmdate('Y-m-d H:i:s');
  64. $form['edited_on'] = gmdate('Y-m-d H:i:s');
  65. $formId = $this->getDB()->insert('forms', $form);
  66. // create submit button
  67. $field['form_id'] = $formId;
  68. $field['type'] = 'submit';
  69. $field['settings'] = serialize(array('values' => ucfirst($this->getLocale('Send', 'core', $language, 'lbl', 'frontend'))));
  70. $this->getDB()->insert('forms_fields', $field);
  71. // create name field
  72. $field['form_id'] = $formId;
  73. $field['type'] = 'textbox';
  74. $field['settings'] = serialize(array('label' => ucfirst($this->getLocale('Name', 'core', $language, 'lbl', 'frontend'))));
  75. $nameId = $this->getDB()->insert('forms_fields', $field);
  76. // name validation
  77. $validate['field_id'] = $nameId;
  78. $validate['type'] = 'required';
  79. $validate['error_message'] = $this->getLocale('NameIsRequired', 'core', $language, 'err', 'frontend');
  80. $this->getDB()->insert('forms_fields_validation', $validate);
  81. // create email field
  82. $field['form_id'] = $formId;
  83. $field['type'] = 'textbox';
  84. $field['settings'] = serialize(array('label' => ucfirst($this->getLocale('Email', 'core', $language, 'lbl', 'frontend'))));
  85. $emailId = $this->getDB()->insert('forms_fields', $field);
  86. // email validation
  87. $validate['field_id'] = $emailId;
  88. $validate['type'] = 'email';
  89. $validate['error_message'] = $this->getLocale('EmailIsInvalid', 'core', $language, 'err', 'frontend');
  90. $this->getDB()->insert('forms_fields_validation', $validate);
  91. // create message field
  92. $field['form_id'] = $formId;
  93. $field['type'] = 'textarea';
  94. $field['settings'] = serialize(array('label' => ucfirst($this->getLocale('Message', 'core', $language, 'lbl', 'frontend'))));
  95. $messageId = $this->getDB()->insert('forms_fields', $field);
  96. // name validation
  97. $validate['field_id'] = $messageId;
  98. $validate['type'] = 'required';
  99. $validate['error_message'] = $this->getLocale('MessageIsRequired', 'core', $language, 'err', 'frontend');
  100. $this->getDB()->insert('forms_fields_validation', $validate);
  101. // insert extra
  102. $extraId = $this->insertExtra('form_builder', 'widget', 'FormBuilder', 'form', serialize(array('language' => $form['language'], 'extra_label' => $form['name'], 'id' => $formId)), 'N', '400' . $formId);
  103. // insert contact page
  104. $this->insertPage(array('title' => ucfirst($this->getLocale('Contact', 'core', $language, 'lbl', 'frontend')),
  105. 'parent_id' => 1,
  106. 'language' => $language),
  107. null,
  108. array('html' => PATH_WWW . '/backend/modules/pages/installer/data/' . $language . '/contact.txt'),
  109. array('extra_id' => $extraId, 'position' => 'main'),
  110. array('extra_id' => $searchId, 'position' => 'top'));
  111. }
  112. }
  113. }
  114. ?>