Skip to content

Commit 86ad8a0

Browse files
committed
feat: rocketchat summary jobs
1 parent 4f17979 commit 86ad8a0

4 files changed

Lines changed: 89 additions & 26 deletions

File tree

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
<?php
2+
/**
3+
* Rocket.Chat fields markdown summary job
4+
*
5+
* @package formsbridge
6+
*/
7+
8+
return array(
9+
'title' => __( 'Fields summary', 'forms-bridge' ),
10+
'description' => __( 'Format the payload fields field as a markdown list', 'forms-bridge' ),
11+
'method' => 'forms_bridge_rocketchat_fields_summary_md',
12+
'input' => array(
13+
array(
14+
'name' => 'fields',
15+
'schema' => array(
16+
'type' => 'object',
17+
'properties' => array(),
18+
'additionalProperties' => true,
19+
),
20+
),
21+
),
22+
'output' => array(
23+
array(
24+
'name' => 'text',
25+
'schema' => array( 'type' => 'string' ),
26+
),
27+
),
28+
);
29+
30+
/**
31+
* Content summary job method
32+
*
33+
* @param array $payload Bridge payload.
34+
*
35+
* @return array
36+
*/
37+
function forms_bridge_rocketchat_fields_summary_md( $payload ) {
38+
$payload['text'] = forms_bridge_rocketchat_content_md( $payload['fields'] );
39+
return $payload;
40+
}
41+
42+
/**
43+
* Format the content data as a markdown list.
44+
*
45+
* @param array $data Content data.
46+
* @param string $leading Leading spaces of the list.
47+
*
48+
* @return string
49+
*/
50+
function forms_bridge_rocketchat_content_md( $data, $leading = '' ) {
51+
$content = '**' . __( 'Fields', 'forms-bridge' ) . "**:\n";
52+
foreach ( $data as $name => $value ) {
53+
$content .= forms_bridge_rocketchat_field_md( $name, $value, $leading );
54+
}
55+
56+
return $content;
57+
}
58+
59+
/**
60+
* Format a payload field as a markdown list item.
61+
*
62+
* @param string $name Field name.
63+
* @param mixed $value Field value.
64+
* @param string $leading Leading spaces of the list.
65+
*
66+
* @return string
67+
*/
68+
function forms_bridge_rocketchat_field_md( $name, $value, $leading = '' ) {
69+
if ( is_array( $value ) || is_object( $value ) ) {
70+
$value = "\n" . forms_bridge_rocketchat_content_md( (array) $value, $leading . ' ' );
71+
} elseif ( is_string( $value ) ) {
72+
$value = preg_replace( '/\n+/', "\n{$leading} ", $value );
73+
}
74+
75+
return "{$leading}- **{$name}**: {$value}\n";
76+
}

forms-bridge/addons/rocketchat/templates/contact.php

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -69,28 +69,24 @@
6969
),
7070
'bridge' => array(
7171
'endpoint' => '/api/v1/chat.postMessage',
72+
'workflow' => array( 'summary' ),
7273
'mutations' => array(
7374
array(
7475
array(
7576
'from' => 'your-name',
76-
'to' => 'text.name',
77+
'to' => 'fields.name',
7778
'cast' => 'string',
7879
),
7980
array(
8081
'from' => 'your-email',
81-
'to' => 'text.email',
82+
'to' => 'fields.email',
8283
'cast' => 'string',
8384
),
8485
array(
8586
'from' => '?comments',
86-
'to' => 'text.comments',
87+
'to' => 'fields.comments',
8788
'cast' => 'string',
8889
),
89-
array(
90-
'from' => 'text',
91-
'to' => 'text',
92-
'cast' => 'pretty_json',
93-
),
9490
),
9591
),
9692
),

forms-bridge/addons/rocketchat/templates/direct-message.php

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -65,29 +65,24 @@
6565
),
6666
'bridge' => array(
6767
'endpoint' => '/api/v1/chat.postMessage',
68-
'workflow' => array( 'create-dm' ),
68+
'workflow' => array( 'summary', 'create-dm' ),
6969
'mutations' => array(
7070
array(
7171
array(
7272
'from' => 'your-name',
73-
'to' => 'text.name',
73+
'to' => 'fields.name',
7474
'cast' => 'string',
7575
),
7676
array(
7777
'from' => 'your-email',
78-
'to' => 'text.email',
78+
'to' => 'fields.email',
7979
'cast' => 'string',
8080
),
8181
array(
8282
'from' => '?comments',
83-
'to' => 'text.comments',
83+
'to' => 'fields.comments',
8484
'cast' => 'string',
8585
),
86-
array(
87-
'from' => 'text',
88-
'to' => 'text',
89-
'cast' => 'pretty_json',
90-
),
9186
),
9287
),
9388
),

forms-bridge/addons/rocketchat/templates/support.php

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -85,33 +85,29 @@
8585
),
8686
'bridge' => array(
8787
'endpoint' => '/api/v1/chat.postMessage',
88+
'workflow' => array( 'summary' ),
8889
'mutations' => array(
8990
array(
9091
array(
9192
'from' => 'your-name',
92-
'to' => 'text.name',
93+
'to' => 'fields.name',
9394
'cast' => 'string',
9495
),
9596
array(
9697
'from' => 'your-email',
97-
'to' => 'text.email',
98+
'to' => 'fields.email',
9899
'cast' => 'string',
99100
),
100101
array(
101102
'from' => 'subject',
102-
'to' => 'text.subject',
103+
'to' => 'fields.subject',
103104
'cast' => 'string',
104105
),
105106
array(
106107
'from' => '?comments',
107-
'to' => 'text.comments',
108+
'to' => 'fields.comments',
108109
'cast' => 'string',
109110
),
110-
array(
111-
'from' => 'text',
112-
'to' => 'text',
113-
'cast' => 'pretty_json',
114-
),
115111
),
116112
),
117113
),

0 commit comments

Comments
 (0)