24
24
*/
25
25
26
26
namespace tool_emailutils \form ;
27
+ use tool_emailutils \dns_util ;
27
28
28
29
defined ('MOODLE_INTERNAL ' ) || die;
29
30
@@ -53,7 +54,7 @@ public function definition() {
53
54
54
55
$ group [] =& $ mform ->createElement ('text ' , 'selector ' , array ("size " => 20 ));
55
56
56
- $ selector = \userdate ( time (), get_string ( ' selectordefault ' , ' tool_emailutils ' ) );
57
+ $ selector = $ this -> get_default_selector ( );
57
58
$ mform ->setDefault ("selector " , $ selector );
58
59
$ mform ->setType ('selector ' , PARAM_HOST );
59
60
@@ -74,4 +75,38 @@ public function validation($data, $files) {
74
75
$ errors = parent ::validation ($ data , $ files );
75
76
return $ errors ;
76
77
}
78
+
79
+ /**
80
+ * Gets a selector value to use as a default
81
+ *
82
+ * @return string default selector
83
+ */
84
+ private function get_default_selector () {
85
+ GLOBAL $ CFG ;
86
+ // Add date to default.
87
+ $ selector = \userdate (time (), get_string ('selectordefault ' , 'tool_emailutils ' ));
88
+
89
+ // Add subdomain to default.
90
+ $ dns = new dns_util ();
91
+ $ url = new \moodle_url ($ CFG ->wwwroot );
92
+ $ domain = $ url ->get_host ();
93
+ $ subdomains = $ dns ->get_subdomains ($ domain );
94
+
95
+ // Clean the subdomains to remove foreign language chars.
96
+ // Email filter is enough because domains don't contain the other allowed chars.
97
+ $ cleanedsubdomains = trim (filter_var ($ subdomains , FILTER_SANITIZE_EMAIL ), '. ' );
98
+
99
+ if (!empty ($ cleanedsubdomains )) {
100
+ $ formatteddomain = str_replace ('. ' , '- ' , $ cleanedsubdomains );
101
+ } else {
102
+ $ partdomain = explode ('. ' , $ domain )[0 ];
103
+ $ formatteddomain = filter_var ($ partdomain , FILTER_SANITIZE_EMAIL );
104
+ }
105
+
106
+ if ($ formatteddomain && $ formatteddomain != 'www ' ) {
107
+ $ selector .= '- ' . $ formatteddomain ;
108
+ }
109
+ return $ selector ;
110
+ }
111
+
77
112
}
0 commit comments