1: <?php
2:
3: 4: 5:
6: class Quform_Block
7: {
8: 9: 10:
11: protected $controller;
12:
13: 14: 15:
16: protected $repository;
17:
18: 19: 20: 21:
22: public function __construct(Quform_Form_Controller $controller, Quform_Repository $repository)
23: {
24: $this->controller = $controller;
25: $this->repository = $repository;
26: }
27:
28: 29: 30:
31: public function register()
32: {
33: if ( ! function_exists('register_block_type')) {
34: return;
35: }
36:
37: $asset = include QUFORM_ADMIN_PATH . '/js/block/build/index.asset.php';
38:
39: wp_register_script(
40: 'quform-block',
41: Quform::adminUrl('js/block/build/index.js'),
42: $asset['dependencies'],
43: $asset['version'],
44: true
45: );
46:
47: wp_localize_script('quform-block', 'quformBlockL10n', array(
48: 'forms' => $this->getForms(),
49: 'ajaxUrl' => admin_url('admin-ajax.php'),
50: 'quformEnablePopupNonce' => wp_create_nonce('quform_enable_popup')
51: ));
52:
53: if (function_exists('gutenberg_get_jed_locale_data')) {
54: $localeData = json_encode(gutenberg_get_jed_locale_data('quform'));
55:
56: wp_add_inline_script(
57: 'quform-block',
58: "wp.i18n.setLocaleData($localeData, 'quform')",
59: 'before'
60: );
61: }
62:
63: if (function_exists('wp_set_script_translations')) {
64: wp_set_script_translations('quform-block', 'quform', QUFORM_PATH . '/languages');
65: }
66:
67: register_block_type('quform/form', array(
68: 'editor_script' => 'quform-block',
69: 'render_callback' => array($this, 'render')
70: ));
71: }
72:
73: 74: 75: 76: 77:
78: protected function getForms()
79: {
80: $orderBy = get_user_meta(get_current_user_id(), 'quform_forms_order_by', true);
81: $order = get_user_meta(get_current_user_id(), 'quform_forms_order', true);
82: $forms = array(array('value' => '', 'label' => __('Please select', 'quform')));
83:
84: foreach ($this->repository->all(true, $orderBy, $order) as $form) {
85: $forms[] = array('value' => $form['id'], 'label' => $form['name']);
86: }
87:
88: return $forms;
89: }
90:
91: 92: 93: 94: 95: 96: 97:
98: public function render($attributes, $content)
99: {
100: $options = wp_parse_args($attributes, array(
101: 'id' => '',
102: 'show_title' => true,
103: 'show_description' => true,
104: 'popup' => false,
105: 'content' => '',
106: 'values' => ''
107: ));
108:
109: return $this->controller->form($options);
110: }
111: }
112: