Bez popisu

SubscriptionFormBlock.php 2.2KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. <?php
  2. namespace MailPoet\PostEditorBlocks;
  3. if (!defined('ABSPATH')) exit;
  4. use MailPoet\Entities\FormEntity;
  5. use MailPoet\Form\FormsRepository;
  6. use MailPoet\Form\Widget;
  7. use MailPoet\WP\Functions as WPFunctions;
  8. class SubscriptionFormBlock {
  9. /** @var WPFunctions */
  10. private $wp;
  11. /** @var FormsRepository */
  12. private $formsRepository;
  13. public function __construct(
  14. WPFunctions $wp,
  15. FormsRepository $formsRepository
  16. ) {
  17. $this->wp = $wp;
  18. $this->formsRepository = $formsRepository;
  19. }
  20. public function init() {
  21. $this->wp->registerBlockType('mailpoet/subscription-form-block-render', [
  22. 'attributes' => [
  23. 'formId' => [
  24. 'type' => 'number',
  25. 'default' => null,
  26. ],
  27. ],
  28. 'render_callback' => [$this, 'renderForm'],
  29. ]);
  30. }
  31. public function initAdmin() {
  32. $this->wp->registerBlockType('mailpoet/subscription-form-block', [
  33. 'style' => 'mailpoetblock-form-block-css',
  34. 'editor_script' => 'mailpoet/subscription-form-block',
  35. ]);
  36. $this->wp->addAction('admin_head', function() {
  37. $forms = $this->formsRepository->findAllNotDeleted();
  38. $formsEncoded = json_encode(
  39. array_map(
  40. function(FormEntity $form) {
  41. return $form->toArray();
  42. },
  43. $forms
  44. )
  45. );
  46. ?>
  47. <script type="text/javascript">
  48. window.mailpoet_forms = <?php echo $formsEncoded ?>;
  49. window.locale = {
  50. selectForm: '<?php echo __('Select a MailPoet form', 'mailpoet') ?>',
  51. createForm: '<?php echo __('Create a new form', 'mailpoet') ?>',
  52. subscriptionForm: '<?php echo __('MailPoet Subscription Form', 'mailpoet') ?>',
  53. };
  54. </script>
  55. <?php
  56. });
  57. }
  58. public function initFrontend() {
  59. $this->wp->registerBlockType('mailpoet/subscription-form-block', [
  60. 'render_callback' => [$this, 'renderForm'],
  61. ]);
  62. }
  63. public function renderForm(array $attributes = []): string {
  64. if (!$attributes || !isset($attributes['formId'])) {
  65. return '';
  66. }
  67. $basicForm = new Widget();
  68. return $basicForm->widget([
  69. 'form' => (int)$attributes['formId'],
  70. 'form_type' => 'html',
  71. ]);
  72. }
  73. }