BMLT Root Server
bmlt_semantic.class.php
Go to the documentation of this file.
1 <?php
2 /***************************************************************************************************************************************/
3 /**
4  This file is part of the Basic Meeting List Toolbox (BMLT).
5 
6  Find out more at: https://bmlt.app
7 
8  BMLT is free software: you can redistribute it and/or modify
9  it under the terms of the MIT License.
10 
11  BMLT is distributed in the hope that it will be useful,
12  but WITHOUT ANY WARRANTY; without even the implied warranty of
13  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14  MIT License for more details.
15 
16  You should have received a copy of the MIT License along with this code.
17  If not, see <https://opensource.org/licenses/MIT>.
18 */
19 /***************************************************************************************************************************************/
20 
21 define('__VERSION__', '1.3.3');
22 
23 // phpcs:disable PSR1.Classes.ClassDeclaration.MissingNamespace
24 // phpcs:disable Squiz.Classes.ValidClassName.NotCamelCaps
26 // phpcs:enable PSR1.Classes.ClassDeclaration.MissingNamespace
27 // phpcs:enable Squiz.Classes.ValidClassName.NotCamelCaps
28 {
29  protected $_httpVars;
31  protected $_switcher;
32  protected $_myURI;
33  protected $_myLang;
34  protected $_localization;
35  protected $_myJSName;
36  protected $_langs;
37  protected $_version;
38  protected $_keys;
39  protected $_apiKey;
40 
41  /**************************************************************/
42  /** \brief Class function that strips all the BS from a JS or CSS file.
43 
44  \returns the stripped-down JS.
45  */
46  /**************************************************************/
47  // phpcs:disable PSR1.Methods.CamelCapsMethodName.NotCamelCaps
48  public static function strip_script($in_filename)
49  {
50  // phpcs:enable PSR1.Methods.CamelCapsMethodName.NotCamelCaps
51  $ret = null;
52 
53  if (!preg_match("|/|", $in_filename)) {
54  if (preg_match("|.*?\.js$|", $in_filename) || preg_match("|.*?\.css$|", $in_filename)) {
55  $ret = file_get_contents(dirname(__FILE__)."/$in_filename");
56  if (!defined('DEBUG')) { // If we are in release mode, we strip out all the comments and whitespace (including line endings).
57  $ret = preg_replace("|\/\/.*?[\n\r]|s", "\n", $ret); // Block comments.
58  $ret = preg_replace("|\/\*(.*?)\*\/|s", "", $ret); // Line comments.
59  $ret = preg_replace("|[\ \t]+|s", " ", $ret); // Tabs and spaces.
60  $ret = preg_replace("|\n[\ \t\n\r]+|s", "\n", $ret); // Beginning line tabs and spaces.
61  $ret = preg_replace("|[\s]+|s", " ", $ret); // All whitespace, including line endings, replaced by a single space.
62  }
63  } else {
64  die("FILE MUST BE A .JS or .CSS FILE!");
65  }
66  } else {
67  die("YOU CANNOT LEAVE THE DIRECTORY!");
68  }
69 
70  return $ret;
71  }
72 
73  /**************************************************************/
74  /** \brief Class function that calls out to a Web site, using cURL.
75 
76  \param in_uri The URL to be called. Should contain all parameters as if it was a GET. POST will split them off.
77  \param in_post Set to TRUE (default) if this is a POST call. If FALSE, then it is a GET call.
78  \param in_out_http_status Optional in/out parameter for returning the HTTP status result.
79 
80  \throws an exception if there is a critical failure.
81 
82  \returns the content response
83  */
84  /**************************************************************/
85  // phpcs:disable PSR1.Methods.CamelCapsMethodName.NotCamelCaps
86  public static function call_curl(
87  $in_uri,
88  &$in_out_http_status = null
89  ) {
90  // phpcs:enable PSR1.Methods.CamelCapsMethodName.NotCamelCaps
91  $ret = null;
92 
93  // If the curl extension isn't loaded, we try one backdoor thing. Maybe we can use file_get_contents.
94  if (!extension_loaded('curl')) {
95  if (ini_get('allow_url_fopen')) {
96  $ret = file_get_contents($in_uri);
97  }
98  } else {
99  // This gets the session as a cookie.
100  if (isset($_COOKIE['PHPSESSID']) && $_COOKIE['PHPSESSID']) {
101  $strCookie = 'PHPSESSID=' . $_COOKIE['PHPSESSID'] . '; path=/';
102 
103  session_write_close();
104  }
105 
106  // Create a new cURL resource.
107  $resource = curl_init();
108 
109  if (isset($strCookie)) {
110  curl_setopt($resource, CURLOPT_COOKIE, $strCookie);
111  }
112 
113  // Set url to call.
114  curl_setopt($resource, CURLOPT_URL, $in_uri);
115 
116  // Make curl_exec() function (see below) return requested content as a string (unless call fails).
117  curl_setopt($resource, CURLOPT_RETURNTRANSFER, true);
118 
119  // By default, cURL prepends response headers to string returned from call to curl_exec().
120  // You can control this with the below setting.
121  // Setting it to false will remove headers from beginning of string.
122  // If you WANT the headers, see the Yahoo documentation on how to parse with them from the string.
123  curl_setopt($resource, CURLOPT_HEADER, false);
124 
125  // Set maximum times to allow redirection (use only if needed as per above setting. 3 is sort of arbitrary here).
126  curl_setopt($resource, CURLOPT_MAXREDIRS, 3);
127 
128  // Set connection timeout in seconds (very good idea).
129  curl_setopt($resource, CURLOPT_CONNECTTIMEOUT, 10);
130 
131  // Direct cURL to send request header to server allowing compressed content to be returned and decompressed automatically (use only if needed).
132  curl_setopt($resource, CURLOPT_ENCODING, 'gzip,deflate');
133 
134  // Pretend we're a browser, so that anti-cURL settings don't pooch us.
135  curl_setopt($resource, CURLOPT_USERAGENT, "cURL Mozilla/5.0 (Windows NT 5.1; rv:21.0) Gecko/20130401 Firefox/21.0");
136 
137  // Trust meeeee...
138  curl_setopt($resource, CURLOPT_SSL_VERIFYPEER, false);
139 
140  // Execute cURL call and return results in $content variable.
141  $content = curl_exec($resource);
142 
143  // Check if curl_exec() call failed (returns false on failure) and handle failure.
144  if ($content !== false) {
145  // Do what you want with returned content (e.g. HTML, XML, etc) here or AFTER curl_close() call below as it is stored in the $content variable.
146 
147  // You MIGHT want to get the HTTP status code returned by server (e.g. 200, 400, 500).
148  // If that is the case then this is how to do it.
149  if (isset($in_out_http_status) && (null != $in_out_http_status)) {
150  $in_out_http_status = curl_getinfo($resource, CURLINFO_HTTP_CODE);
151  }
152  }
153 
154  // Close cURL and free resource.
155  curl_close($resource);
156 
157  // Maybe echo $contents of $content variable here.
158  if ($content !== false) {
159  $ret = $content;
160  }
161  }
162 
163  return $ret;
164  }
165 
166  /**************************************************************/
167  /** \brief Class constructor.
168 
169  This function will exit the script if this is an AJAX
170  callback, so you need to keep that in mind.
171 
172  \param inBaseURI The base URI for the root server.
173  \param inHttpVars The HTTP query associative array.
174  */
175  /**************************************************************/
176  public function __construct($inHttpVars)
177  {
178  // Get any language
179  $this->_myLang = 'en';
180 
181  if (isset($inHttpVars['lang']) && $inHttpVars['lang']) {
182  $this->_myLang = $inHttpVars['lang'];
183  unset($inHttpVars['lang']);
184  }
185 
186  if (isset($inHttpVars['google_api_key']) && $inHttpVars['google_api_key']) {
187  $this->_apiKey = $inHttpVars['google_api_key'];
188  unset($inHttpVars['google_api_key']);
189  }
190 
191  // Prevent dope fiending...
192  $this->_myLang = trim(strtolower(preg_replace('|[^a-z0-9A-Z]+|', '', $this->_myLang)));
193 
194  if (!file_exists(dirname(__FILE__) . '/lang/'.$this->_myLang.'.inc.php')) {
195  $this->_myLang = 'en';
196  }
197 
198  include(dirname(__FILE__) . '/lang/'.$this->_myLang.'.inc.php');
199  if (isset($inHttpVars['root_server'])) {
200  $this->_bmltRootServerURI = trim($inHttpVars['root_server'], '/');
201  $this->_myURI = $this->_bmltRootServerURI.'/semantic/index.php'; // This is the base for AJAX callbacks.
202  unset($inHttpVars['root_server']);
203 
204  // Get any switcher.
205  if (isset($inHttpVars['switcher']) && $inHttpVars['switcher']) {
206  $this->_switcher = $inHttpVars['switcher'];
207  unset($inHttpVars['switcher']);
208  }
209 
210  // See if we are an AJAX callback.
211  $ajaxCall = isset($inHttpVars['ajaxCall']);
212  unset($inHttpVars['ajaxCall']);
213 
214  $this->_httpVars = $inHttpVars; // Hang onto the rest.
215 
216  // This is the name of our JavaScript object.
217  $this->_myJSName = ($this->_bmltRootServerURI ? '_'.preg_replace('|[^a-z0-9A-Z_]+|', '', htmlspecialchars($this->_bmltRootServerURI)) : '');
218 
219  if ($ajaxCall) { // If we are an AJAX callback, then we immediately go there.
220  $this->ajax_handler();
221  exit(); // GBCW
222  }
223  }
224  }
225 
226  /**************************************************************/
227  /** \brief Query the server for its version.
228  This requires that the _bmltRootServerURI data member be valid.
229 
230  \returns an integer that will be MMMmmmfff (M = Major Version, m = Minor Version, f = Fix Version).
231  */
232  /**************************************************************/
233  // phpcs:disable PSR1.Methods.CamelCapsMethodName.NotCamelCaps
234  public function get_server_version()
235  {
236  // phpcs:enable PSR1.Methods.CamelCapsMethodName.NotCamelCaps
237  $ret = array();
238 
239  if ($this->_bmltRootServerURI) {
240  $error = null;
241 
242  $uri = $this->_bmltRootServerURI.'/client_interface/serverInfo.xml';
243  $xml = self::call_curl($uri, $error);
244 
245  if (!$error && $xml) {
246  $info_file = new DOMDocument;
247  if ($info_file instanceof DOMDocument) {
248  if (@$info_file->loadXML($xml)) {
249  $has_info = $info_file->getElementsByTagName("bmltInfo");
250 
251  if (($has_info instanceof domnodelist) && $has_info->length) {
252  $nodeVal = $has_info->item(0)->nodeValue;
253  $ret = explode('.', $nodeVal);
254 
255  if (!isset($ret[1])) {
256  $ret[1] = 0;
257  }
258 
259  if (!isset($ret[2])) {
260  $ret[2] = 0;
261  }
262 
263  $this->_version = (intval($ret[0]) * 1000000) + (intval($ret[1]) * 1000) + intval($ret[2]);
264  }
265  }
266  }
267  }
268  }
269 
270  return $ret;
271  }
272 
273  /**************************************************************/
274  /** \brief
275 
276  \returns
277  */
278  /**************************************************************/
279  // phpcs:disable PSR1.Methods.CamelCapsMethodName.NotCamelCaps
280  public function get_server_langs()
281  {
282  // phpcs:enable PSR1.Methods.CamelCapsMethodName.NotCamelCaps
283  $ret = array ( );
284 
285  if ($this->_bmltRootServerURI) {
286  $error = null;
287 
288  $uri = $this->_bmltRootServerURI.'/client_interface/xml/GetLangs.php';
289  $xml = self::call_curl($uri, $error);
290 
291  if (!$error && $xml) {
292  $info_file = new DOMDocument;
293  if ($info_file instanceof DOMDocument) {
294  if (@$info_file->loadXML($xml)) {
295  $languages = $info_file->getElementsByTagName("language");
296 
297  if (($languages instanceof domnodelist) && $languages->length) {
298  for ($index = 0; $index < $languages->length; $index++) {
299  $language = $languages->item($index);
300  $attributes = $language->attributes;
301  $key = $attributes->getNamedItem("key")->nodeValue;
302  $name = $language->nodeValue;
303 
304  $ret[$key] = $name;
305  }
306  }
307  }
308  }
309  }
310  }
311 
312  return $ret;
313  }
314 
315  /**************************************************************/
316  /** \brief
317 
318  \returns
319  */
320  /**************************************************************/
321  // phpcs:disable PSR1.Methods.CamelCapsMethodName.NotCamelCaps
322  public function get_server_keys()
323  {
324  // phpcs:enable PSR1.Methods.CamelCapsMethodName.NotCamelCaps
325  if ($this->_keys) {
326  $ret = $this->_keys;
327  } elseif ($this->_bmltRootServerURI) {
328  $keys = explode("\n", self::call_curl($this->_bmltRootServerURI.'/client_interface/csv/?switcher=GetFieldKeys'));
329 
330  $first = true;
331 
332  foreach ($keys as $keyLine) {
333  $key_name = explode(",", $keyLine);
334 
335  if (2 == count($key_name)) {
336  $key = $key_name[0];
337  $name = $key_name[1];
338 
339  if (!$first) {
340  $this->_keys[trim($key, '"')] = trim($name, '"');
341  }
342  $first = false;
343  }
344  }
345  }
346 
347  return $this->_keys;
348  }
349 
350  /**************************************************************/
351  /** \brief Handles AJAX callbacks.
352 
353  This assumes that the $this->_httpVars data member
354  is valid.
355 
356  This funtion is called automatically upon instantiation.
357  */
358  /**************************************************************/
359  // phpcs:disable PSR1.Methods.CamelCapsMethodName.NotCamelCaps
360  public function ajax_handler()
361  {
362  // phpcs:enable PSR1.Methods.CamelCapsMethodName.NotCamelCaps
363  if (isset($this->_bmltRootServerURI) && $this->_bmltRootServerURI) {
364  if (isset($this->_httpVars['GetInitialFormats'])) {
365  echo ( self::call_curl($this->_bmltRootServerURI.'/client_interface/json/?switcher=GetFormats') );
366  } elseif (isset($this->_httpVars['GetInitialServiceBodies'])) {
367  echo ( self::call_curl($this->_bmltRootServerURI.'/client_interface/json/?switcher=GetServiceBodies') );
368  } elseif (isset($this->_httpVars['GetFieldKeys'])) {
369  echo ( self::call_curl($this->_bmltRootServerURI.'/client_interface/json/?switcher=GetFieldKeys') );
370  } elseif (isset($this->_httpVars['GetFieldValues'])) {
371  echo ( self::call_curl($this->_bmltRootServerURI.'/client_interface/json/?switcher=GetFieldValues&meeting_key='.$this->_httpVars['meeting_key']) );
372  } elseif (isset($this->_httpVars['GetFieldValues'])) {
373  echo ( self::call_curl($this->_bmltRootServerURI.'/client_interface/json/?switcher=GetFieldValues&meeting_key='.$this->_httpVars['meeting_key']) );
374  } elseif (isset($this->_httpVars['GetLangs'])) {
375  echo ( self::call_curl($this->_bmltRootServerURI.'/client_interface/json/?switcher=GetServerInfo') );
376  } elseif (isset($this->_httpVars['GetServerInfo'])) {
377  echo ( self::call_curl($this->_bmltRootServerURI.'/client_interface/json/?switcher=GetServerInfo') );
378  } elseif (isset($this->_httpVars['GetCoverageArea'])) {
379  echo ( self::call_curl($this->_bmltRootServerURI.'/client_interface/json/?switcher=GetCoverageArea') );
380  }
381  }
382  }
383 
384  /**************************************************************/
385  /** \brief Localizes a string token.
386 
387  \param in_string the token to be localized.
388 
389  \returns the localized string for the token.
390  */
391  /**************************************************************/
392  // phpcs:disable PSR1.Methods.CamelCapsMethodName.NotCamelCaps
393  public function localize_string($in_string)
394  {
395  // phpcs:enable PSR1.Methods.CamelCapsMethodName.NotCamelCaps
396  return htmlspecialchars(isset($this->_localization[$in_string]) ? $this->_localization[$in_string] : $in_string);
397  }
398 
399  /**************************************************************/
400  /** \brief Outputs the HTML for the wizard page.
401 
402  \returns the HTML for the page.
403  */
404  /**************************************************************/
405  // phpcs:disable PSR1.Methods.CamelCapsMethodName.NotCamelCaps
406  public function get_wizard_page_html()
407  {
408  // phpcs:enable PSR1.Methods.CamelCapsMethodName.NotCamelCaps
409  $ret = '';
410 
411  $this->get_server_version();
412  $version = $this->_version;
413  $this->_langs = $this->get_server_langs();
414  $this->_keys = $this->get_server_keys();
415  $ret .= '<div id="bmlt_semantic'.htmlspecialchars($this->_myJSName).'" class="bmlt_semantic">';
416  $ret .= defined('DEBUG') ? "\n" : '';
417  // Add the scoped CSS.
418  $ret .= '<style type="text/css" scoped>';
419  $ret .= defined('DEBUG') ? "\n" : '';
420  $ret .= bmlt_semantic::strip_script('bmlt_semantic.css');
421  $ret .= defined('DEBUG') ? "\n" : '';
422  $ret .= '</style>';
423  $ret .= defined('DEBUG') ? "\n" : '';
424  $ret .= '<noscript>'.$this->localize_string('javascript_noscript').'</noscript>';
425  $ret .= '<h1 id="bmlt_semantic_badserver_h1'.htmlspecialchars($this->_myJSName).'" style="display:none">'.$this->localize_string('need_good_url').'</h1>';
426  $ret .= '<h1 id="bmlt_semantic_header_h1'.htmlspecialchars($this->_myJSName).'" class="bmlt_semantic_header_h1">'.$this->localize_string('title_of_page').'</h1>';
427 
428  if ($version >= 2006015) {
429  $ret .= '<div id="bmlt_main_blurb'.htmlspecialchars($this->_myJSName).'" class="bmlt_workshop_blurb_note_div bmlt_main_blurb">';
430  $ret .= '<p>'.$this->localize_string('main_blurb1').'</p>';
431  $ret .= '<p>'.$this->localize_string('main_blurb2').'</p>';
432  $ret .= '<p>'.$this->localize_string('main_blurb3').'</p>';
433  $ret .= '<p>'.$this->localize_string('main_blurb4').'</p>';
434  $ret .= '</div>';
435  $ret .= defined('DEBUG') ? "\n" : '';
436  $ret .= '<div id="bmlt_semantic_header'.htmlspecialchars($this->_myJSName).'" class="bmlt_semantic_header">';
437  $ret .= defined('DEBUG') ? "\n" : '';
438  $ret .= '<div id="bmlt_semantic_info_div_download_line'.htmlspecialchars($this->_myJSName).'" class="bmlt_semantic_info_line bmlt_semantic_info_div_download_line">';
439  $ret .= defined('DEBUG') ? "\n" : '';
440  $ret .= '<div id="bmlt_semantic_info_div_result_url_wrapper'.htmlspecialchars($this->_myJSName).'" class="bmlt_semantic_info_div_result_url_wrapper">';
441  $ret .= '<span class="info_label">'.$this->localize_string('result_url_label').'</span><span class="info_value"><span id="bmlt_semantic_info_div_url_active_span'.htmlspecialchars($this->_myJSName).'"></span><span id="bmlt_semantic_info_div_url_Invalid_span'.htmlspecialchars($this->_myJSName).'">'.$this->localize_string('result_invalid_text').'</span></span>';
442  $ret .= '</div>';
443  $ret .= defined('DEBUG') ? "\n" : '';
444  $ret .= '</div>';
445  $ret .= defined('DEBUG') ? "\n" : '';
446  $ret .= '<div id="bmlt_semantic_info_div_shortcode_line'.htmlspecialchars($this->_myJSName).'" class="bmlt_semantic_info_line bmlt_semantic_info_div_shortcode_line" style="display:none">';
447  $ret .= '<div id="bmlt_semantic_info_div_shortcode_wrapper'.htmlspecialchars($this->_myJSName).'" class="bmlt_semantic_info_div_shortcode_wrapper">';
448  $ret .= '<span class="info_label">'.$this->localize_string('result_shortcode_label').'</span><span class="info_value"><span id="bmlt_semantic_info_div_shortcode_active_span'.htmlspecialchars($this->_myJSName).'"></span><span id="bmlt_semantic_info_div_shortcode_Invalid_span'.htmlspecialchars($this->_myJSName).'">'.$this->localize_string('result_invalid_text').'</span></span>';
449  $ret .= '</div>';
450  $ret .= defined('DEBUG') ? "\n" : '';
451  $ret .= '</div>';
452  $ret .= defined('DEBUG') ? "\n" : '';
453  $ret .= '<div class="clear_both"></div>';
454  $ret .= defined('DEBUG') ? "\n" : '';
455  $ret .= '</div>';
456  $ret .= defined('DEBUG') ? "\n" : '';
457  $ret .= '</div>';
458  $ret .= defined('DEBUG') ? "\n" : '';
459 
460  $ret .= '<form id="bmlt_semantic_form'.htmlspecialchars($this->_myJSName).'" class="bmlt_semantic_form" action="'.htmlspecialchars($this->_myURI).'" method="get">';
461  $ret .= defined('DEBUG') ? "\n" : '';
462  $ret .= '<div id="bmlt_semantic_form_div'.htmlspecialchars($this->_myJSName).'" class="bmlt_semantic_form_div">';
463  $ret .= defined('DEBUG') ? "\n" : '';
464 
466 
467  // Add the JavaScript to the form.
468  $ret .= '<script type="text/javascript">';
469  $ret .= defined('DEBUG') ? "\n" : '';
470  $ret .= bmlt_semantic::strip_script('bmlt_semantic.js');
471  $ret .= defined('DEBUG') ? "\n" : '';
472  $ret .= 'var bmlt_semantic_js_object'.$this->_myJSName.' = new BMLTSemantic ( \''.$this->_myJSName.'\', \''.$this->_myURI.'?ajaxCall&root_server='.urlencode($this->_bmltRootServerURI).'\', \''.$this->_bmltRootServerURI.'\', '.intval($version).' );';
473  $ret .= defined('DEBUG') ? "\n" : '';
474  $ret .= '</script>';
475  $ret .= defined('DEBUG') ? "\n" : '';
476 
477  $ret .= '</div>';
478  $ret .= defined('DEBUG') ? "\n" : '';
479 
480  $ret .= '</form>';
481  $ret .= defined('DEBUG') ? "\n" : '';
482 
483  $ret .= '<div id="bmlt_semantic_footer'.htmlspecialchars($this->_myJSName).'" class="bmlt_semantic_footer">';
484 
485  $ret .= '<div id="bmlt_semantic_info_div'.htmlspecialchars($this->_myJSName).'" class="bmlt_semantic_info_div">';
486 
487  $ret .= $this->footerDiv();
488 
489  $ret .= '</div>';
490  $ret .= defined('DEBUG') ? "\n" : '';
491 
492  $ret .= '</div>';
493  $ret .= defined('DEBUG') ? "\n" : '';
494 
495  $ret .= '</div>';
496  $ret .= defined('DEBUG') ? "\n" : '';
497  } else {
498  if ($this->_bmltRootServerURI) {
499  if ($version < 2006015) {
500  $ret .= '<h2 id="server_url_invalid_note_h2">'.$this->localize_string('need_higher_version').'</h2>';
501  } else {
502  $ret .= '<h2 id="server_url_invalid_note_h2">'.$this->localize_string('need_good_url').'</h2>';
503  }
504  }
505 
506  $ret .= '<form id="enter_server_url_form" class="enter_server_url_form" action="'.$_SERVER['PHP_SELF'].'" method="get">';
507  $ret .= '<div id="enter_server_url_form_div" class="enter_server_url_form_div">';
508  $ret .= '<style type="text/css" scoped>';
509  $ret .= defined('DEBUG') ? "\n" : '';
510  $ret .= bmlt_semantic::strip_script('bmlt_semantic.css');
511  $ret .= defined('DEBUG') ? "\n" : '';
512  $ret .= '</style>';
513  $ret .= defined('DEBUG') ? "\n" : '';
514  $ret .= '<label id="enter_server_url_form_div_label" class="enter_server_url_form_div_label" for="enter_server_url_form_div_url_input">'.$this->localize_string('enter_url_label').'</label>';
515  $ret .= defined('DEBUG') ? "\n" : '';
516  $ret .= '<input type="text" size="64" id="enter_server_url_form_div_url_input" class="enter_server_url_form_div_url_input" defaultValue="Enter A URL" name="root_server" />';
517  $ret .= '<input type="submit" class="formEntrySubmit" value="'.$this->localize_string('submit_button_name').'" />';
518  $ret .= '</div>';
519  $ret .= defined('DEBUG') ? "\n" : '';
520  $ret .= '</form>';
521  $ret .= defined('DEBUG') ? "\n" : '';
522 
523  $ret .= $this->footerDiv();
524  }
525 
526  $ret .= '</div>';
527  $ret .= defined('DEBUG') ? "\n" : '';
528 
529  return $ret;
530  }
531 
532  /**************************************************************/
533  /** \brief Outputs the HTML for the wizard page footer.
534 
535  \returns the HTML for the div.
536  */
537  /**************************************************************/
538  // phpcs:disable PSR1.Methods.CamelCapsMethodName.NotCamelCaps
539  public function footerDiv()
540  {
541  // phpcs:enable PSR1.Methods.CamelCapsMethodName.NotCamelCaps
542  $ret = '<div id="bmlt_semantic_info_div_root_url_line'.htmlspecialchars($this->_myJSName).'" class="bmlt_semantic_info_line bmlt_semantic_footer">';
543  $ret .= '<div id="bmlt_semantic_version_wrapper'.htmlspecialchars($this->_myJSName).'" class="bmlt_semantic_version_wrapper"><span class="info_label">'.$this->localize_string('version_label').'</span><span class="info_value">'.__VERSION__.'</span></div>';
544  $ret .= defined('DEBUG') ? "\n" : '';
545  if ($this->_bmltRootServerURI) {
546  $v_array = $this->get_server_version();
547  $ret .= '<div id="bmlt_semantic_info_div_root_url_wrapper'.htmlspecialchars($this->_myJSName).'" class="bmlt_semantic_info_div_root_url_wrapper"><span class="info_label">'.$this->localize_string('root_url_label').'</span><span class="info_value"><a href="'.$this->_bmltRootServerURI.'" target="_blank">'.htmlspecialchars($this->_bmltRootServerURI).'</a> ('.$v_array[0].'.'.$v_array[1].'.'.$v_array[2].')</span></div>';
548  $ret .= defined('DEBUG') ? "\n" : '';
549  }
550 
551  $ret .= defined('DEBUG') ? "\n" : '';
552  $ret .= htmlspecialchars_decode($this->localize_string('explanation_suffix'));
553  $ret .= defined('DEBUG') ? "\n" : '';
554 
555  return $ret;
556  }
557 
558  /**************************************************************/
559  /** \brief Outputs the HTML for the wizard page main fieldset.
560 
561  \returns the HTML for the fieldset.
562  */
563  /**************************************************************/
564  // phpcs:disable PSR1.Methods.CamelCapsMethodName.NotCamelCaps
565  public function get_wizard_page_main_fieldset_html()
566  {
567  // phpcs:enable PSR1.Methods.CamelCapsMethodName.NotCamelCaps
568  $ret = '<fieldset id="bmlt_semantic_form_main_fieldset'.htmlspecialchars($this->_myJSName).'" class="bmlt_semantic_form_main_fieldset"><legend id="bmlt_semantic_form_main_fieldset_legend'.htmlspecialchars($this->_myJSName).'" class="bmlt_semantic_form_main_fieldset_legend">';
569  $ret .= defined('DEBUG') ? "\n" : '';
570  $ret .= $this->get_wizard_page_main_select_html();
571  $ret .= '</legend>';
572  $ret .= defined('DEBUG') ? "\n" : '';
573  $ret .= '<div class="block_mode_checkbox_div" id="block_mode_checkbox_div'.htmlspecialchars($this->_myJSName).'" style="display:none">';
574  $ret .= defined('DEBUG') ? "\n" : '';
575  $function_string = 'bmlt_semantic_js_object'.htmlspecialchars($this->_myJSName).'.handleBlockCheckboxChange(this)';
576  $ret .= defined('DEBUG') ? "\n" : '';
577  $ret .= '<input type="checkbox" id="block_mode_checkbox'.htmlspecialchars($this->_myJSName).'" class="block_mode_checkbox" onchange="'.$function_string.'" />';
578  $ret .= defined('DEBUG') ? "\n" : '';
579  $ret .= '<label for="block_mode_checkbox'.htmlspecialchars($this->_myJSName).'">'.$this->localize_string('block_mode_checkbox_label').'</label>';
580  $ret .= defined('DEBUG') ? "\n" : '';
581  $ret .= '</div>';
582  $ret .= defined('DEBUG') ? "\n" : '';
583 
584  $ret .= $this->get_wizard_page_direct_url_html();
585  $ret .= $this->get_wizard_page_switcher_fieldset_html();
586 
587  $ret .= '</fieldset>';
588  $ret .= defined('DEBUG') ? "\n" : '';
589 
590  return $ret;
591  }
592 
593  /**************************************************************/
594  /** \brief
595 
596  \returns the HTML.
597  */
598  /**************************************************************/
599  // phpcs:disable PSR1.Methods.CamelCapsMethodName.NotCamelCaps
600  public function get_wizard_page_main_select_html()
601  {
602  // phpcs:enable PSR1.Methods.CamelCapsMethodName.NotCamelCaps
603  $ret = '<label id="bmlt_semantic_form_main_mode_select_label'.htmlspecialchars($this->_myJSName).'" for="bmlt_semantic_form_main_mode_select'.htmlspecialchars($this->_myJSName).'" class="bmlt_semantic_form_main_mode_select_label">'.$this->localize_string('select_option_text_prompt').'</label>';
604  $ret .= '<select id="bmlt_semantic_form_main_mode_select'.htmlspecialchars($this->_myJSName).'" class="bmlt_semantic_form_main_mode_select">';
605  $ret .= defined('DEBUG') ? "\n" : '';
606  $ret .= '<option value="DOWNLOAD" selected="selected">'.$this->localize_string('select_option_text_direct_url').'</option>';
607  $ret .= '<option value="SHORTCODE_SIMPLE">'.$this->localize_string('select_option_text_cms_simple').'</option>';
608  if ($this->_version >= 2007007) {
609  $ret .= '<option value="SHORTCODE_TABLE">'.$this->localize_string('select_option_text_cms_table').'</option>';
610  }
611  $ret .= defined('DEBUG') ? "\n" : '';
612  $ret .= '</select>';
613  $ret .= defined('DEBUG') ? "\n" : '';
614 
615  return $ret;
616  }
617 
618  /**************************************************************/
619  /** \brief
620 
621  \returns the HTML.
622  */
623  /**************************************************************/
624  // phpcs:disable PSR1.Methods.CamelCapsMethodName.NotCamelCaps
625  public function get_wizard_page_direct_url_html()
626  {
627  // phpcs:enable PSR1.Methods.CamelCapsMethodName.NotCamelCaps
628  $ret = '<div id="bmlt_semantic_form_direct_url_div'.htmlspecialchars($this->_myJSName).'" class="bmlt_semantic_form_direct_url_div">';
629  $ret .= defined('DEBUG') ? "\n" : '';
630  $ret .= $this->get_wizard_page_response_type_select_html();
631  $ret .= '</div>';
632  $ret .= defined('DEBUG') ? "\n" : '';
633 
634  return $ret;
635  }
636 
637  /**************************************************************/
638  /** \brief
639 
640  \returns the HTML.
641  */
642  /**************************************************************/
643  // phpcs:disable PSR1.Methods.CamelCapsMethodName.NotCamelCaps
644  public function get_wizard_page_response_type_select_html()
645  {
646  // phpcs:enable PSR1.Methods.CamelCapsMethodName.NotCamelCaps
647  $ret = '<label id="bmlt_semantic_form_response_type_select_label'.htmlspecialchars($this->_myJSName).'" for="bmlt_semantic_form_response_type_select'.htmlspecialchars($this->_myJSName).'" class="bmlt_semantic_form_response_type_select_label">'.$this->localize_string('response_type_selector_prompt').'</label>';
648  $ret .= '<select id="bmlt_semantic_form_response_type_select'.htmlspecialchars($this->_myJSName).'" class="bmlt_semantic_form_response_type_select">';
649  $ret .= defined('DEBUG') ? "\n" : '';
650  $ret .= '<option value="csv" selected="selected">'.$this->localize_string('response_type_selector_type_csv').'</option>';
651  $ret .= '<option value="xml">'.$this->localize_string('response_type_selector_type_xml').'</option>';
652  $ret .= '<option value="json">'.$this->localize_string('response_type_selector_type_json').'</option>';
653  $ret .= '<option id="bmlt_semantic_form_response_type_select_kml_option'.htmlspecialchars($this->_myJSName).'" value="kml">'.$this->localize_string('response_type_selector_type_kml').'</option>';
654  $ret .= '<option id="bmlt_semantic_form_response_type_select_gpx_option'.htmlspecialchars($this->_myJSName).'" value="gpx">'.$this->localize_string('response_type_selector_type_gpx').'</option>';
655  $ret .= '<option id="bmlt_semantic_form_response_type_select_poi_option'.htmlspecialchars($this->_myJSName).'" value="poi">'.$this->localize_string('response_type_selector_type_poi').'</option>';
656  $ret .= '<option value="simple-block">'.$this->localize_string('response_type_selector_type_simple_block').'</option>';
657  $ret .= '<option value="simple">'.$this->localize_string('response_type_selector_type_simple_table').'</option>';
658  $ret .= defined('DEBUG') ? "\n" : '';
659  $ret .= '</select>';
660  $ret .= defined('DEBUG') ? "\n" : '';
661 
662  return $ret;
663  }
664 
665  /**************************************************************/
666  /** \brief Outputs the HTML for the wizard page switcher fieldset.
667 
668  \returns the HTML for the fieldset.
669  */
670  /**************************************************************/
671  // phpcs:disable PSR1.Methods.CamelCapsMethodName.NotCamelCaps
672  public function get_wizard_page_switcher_fieldset_html()
673  {
674  // phpcs:enable PSR1.Methods.CamelCapsMethodName.NotCamelCaps
675  $ret = '<fieldset id="bmlt_semantic_form_switcher_fieldset'.htmlspecialchars($this->_myJSName).'" class="bmlt_semantic_form_switcher_fieldset"><legend id="bmlt_semantic_form_switcher_fieldset_legend'.htmlspecialchars($this->_myJSName).'" class="bmlt_semantic_form_switcher_fieldset_legend">';
676  $ret .= $this->get_wizard_page_switcher_type_select_html();
677  $ret .= '</legend>';
678  $ret .= defined('DEBUG') ? "\n" : '';
679  $ret .= '<div id="bmlt_switcher_div_no_options_blurb'.htmlspecialchars($this->_myJSName).'" class="bmlt_workshop_blurb_note_div" style="display:none">'.$this->localize_string('no_addl_options').'</div>';
680  $ret .= defined('DEBUG') ? "\n" : '';
681  $ret .= '<div id="bmlt_switcher_naws_dump_div'.htmlspecialchars($this->_myJSName).'" class="bmlt_switcher_naws_dump_div" style="display:none">';
682  $ret .= defined('DEBUG') ? "\n" : '';
683  $function_string = 'bmlt_semantic_js_object'.htmlspecialchars($this->_myJSName).'.handleNAWSDumpSelectChange(this)';
684  $ret .= '<select id="bmlt_switcher_naws_dump_sb_select'.htmlspecialchars($this->_myJSName).'" class="bmlt_switcher_naws_dump_sb_select" onchange="'.htmlspecialchars($function_string).'">';
685  $ret .= '<option value="" disabled="disabled" selected="selected">'.$this->localize_string('defaultSBSelect').'</option>';
686  $ret .= defined('DEBUG') ? "\n" : '';
687  $ret .= '</select>';
688  $ret .= defined('DEBUG') ? "\n" : '';
689  $ret .= '</div>';
690  $ret .= defined('DEBUG') ? "\n" : '';
691  $ret .= $this->get_wizard_page_meeting_search_html();
692  $ret .= $this->get_wizard_page_changes_html();
693  $ret .= $this->get_wizard_page_fields_html();
694  $ret .= $this->get_wizard_page_schema_select_html();
695  $ret .= $this->get_wizard_page_formats_html();
696  $ret .= $this->get_wizard_page_coverage_area_html();
697  $ret .= '</fieldset>';
698  $ret .= defined('DEBUG') ? "\n" : '';
699 
700  return $ret;
701  }
702 
703  /**************************************************************/
704  /** \brief
705 
706  \returns the HTML.
707  */
708  /**************************************************************/
709  // phpcs:disable PSR1.Methods.CamelCapsMethodName.NotCamelCaps
710  public function get_wizard_page_changes_html()
711  {
712  // phpcs:enable PSR1.Methods.CamelCapsMethodName.NotCamelCaps
713  $ret = '<div id="bmlt_semantic_form_changes_div'.htmlspecialchars($this->_myJSName).'" class="bmlt_semantic_form_changes_div" style="display:none">';
714  $ret .= '<div id="bmlt_semantic_form_changes_blurb_div'.htmlspecialchars($this->_myJSName).'" class="bmlt_workshop_blurb_note_div">';
715  $ret .= '<p>'.$this->localize_string('date_format1').'</p>';
716  $ret .= '<p>'.$this->localize_string('date_format2').'</p>';
717  $ret .= '</div>';
718  $ret .= defined('DEBUG') ? "\n" : '';
719  $ret .= '<div id="bmlt_semantic_form_changes_from_div'.htmlspecialchars($this->_myJSName).'" class="bmlt_semantic_form_line">';
720  $ret .= '<label title="'.$this->localize_string('date_format1').'" for="bmlt_semantic_form_changes_from_text'.htmlspecialchars($this->_myJSName).'" id="bmlt_semantic_form_changes_from_label'.htmlspecialchars($this->_myJSName).'" class="bmlt_semantic_form_changes_from_label">';
721  $ret .= $this->localize_string('changes_from');
722  $ret .= '</label>';
723  $ret .= '<input type="text" pattern="^[0-9\-]+$" title="'.$this->localize_string('date_format1').'" id="bmlt_semantic_form_changes_from_text'.htmlspecialchars($this->_myJSName).'" class="bmlt_semantic_form_changes_date_text" value="'.$this->localize_string('default_date').'" maxlength="10" />';
724  $ret .= '</div>';
725  $ret .= defined('DEBUG') ? "\n" : '';
726  $ret .= '<div id="bmlt_semantic_form_changes_to_div'.htmlspecialchars($this->_myJSName).'" class="bmlt_semantic_form_line">';
727  $ret .= '<label title="'.$this->localize_string('date_format1').'" for="bmlt_semantic_form_changes_to_text'.htmlspecialchars($this->_myJSName).'" id="bmlt_semantic_form_changes_to_label'.htmlspecialchars($this->_myJSName).'" class="bmlt_semantic_form_changes_to_label">';
728  $ret .= $this->localize_string('changes_to');
729  $ret .= '</label>';
730  $ret .= '<input type="text" pattern="^[0-9\-]+$" title="'.$this->localize_string('date_format1').'" id="bmlt_semantic_form_changes_to_text'.htmlspecialchars($this->_myJSName).'" class="bmlt_semantic_form_changes_date_text" value="'.$this->localize_string('default_date').'" maxlength="10" />';
731  $ret .= '</div>';
732  $ret .= defined('DEBUG') ? "\n" : '';
733  $ret .= '<div id="bmlt_semantic_form_changes_meeting_div'.htmlspecialchars($this->_myJSName).'" class="bmlt_semantic_form_line">';
734  $ret .= '<label title="'.$this->localize_string('meeting_id_changes_tooltip').'" for="bmlt_semantic_form_changes_id_text'.htmlspecialchars($this->_myJSName).'" id="bmlt_semantic_form_changes_id_label'.htmlspecialchars($this->_myJSName).'" class="bmlt_semantic_form_changes_id_label">';
735  $ret .= $this->localize_string('meeting_id_changes');
736  $ret .= '</label>';
737  $ret .= '<input type="text" pattern="^[0-9]+$" title="'.$this->localize_string('meeting_id_changes_tooltip').'" id="bmlt_semantic_form_changes_id_text'.htmlspecialchars($this->_myJSName).'" class="bmlt_semantic_form_changes_id_text" value="" maxlength="6" />';
738  $ret .= '</div>';
739  $ret .= defined('DEBUG') ? "\n" : '';
740  $ret .= '<div id="bmlt_semantic_form_changes_sb_div'.htmlspecialchars($this->_myJSName).'" class="bmlt_semantic_form_line">';
741  $ret .= '<label for="bmlt_switcher_changes_sb_select'.htmlspecialchars($this->_myJSName).'" id="bmlt_semantic_form_changes_sb_id_label'.htmlspecialchars($this->_myJSName).'" class="bmlt_semantic_form_changes_sb_id_label">';
742  $ret .= $this->localize_string('sb_id_changes');
743  $ret .= '</label>';
744  $function_string = 'bmlt_semantic_js_object'.htmlspecialchars($this->_myJSName).'.handleChangesSBSelectChange(this)';
745  $ret .= '<select id="bmlt_switcher_changes_sb_select'.htmlspecialchars($this->_myJSName).'" class="bmlt_switcher_changes_sb_select" onchange="'.htmlspecialchars($function_string).'">';
746  $ret .= '<option value="" selected="selected">'.$this->localize_string('defaultChangeSBSelect').'</option>';
747  $ret .= defined('DEBUG') ? "\n" : '';
748  $ret .= '</select>';
749  $ret .= defined('DEBUG') ? "\n" : '';
750  $ret .= '</div>';
751  $ret .= defined('DEBUG') ? "\n" : '';
752  $ret .= '<div class="clear_both"></div>';
753  $ret .= defined('DEBUG') ? "\n" : '';
754  $ret .= '</div>';
755  $ret .= defined('DEBUG') ? "\n" : '';
756 
757  return $ret;
758  }
759 
760  /**************************************************************/
761  /** \brief
762 
763  \returns the HTML.
764  */
765  /**************************************************************/
766  // phpcs:disable PSR1.Methods.CamelCapsMethodName.NotCamelCaps
767  public function get_wizard_page_fields_html()
768  {
769  // phpcs:enable PSR1.Methods.CamelCapsMethodName.NotCamelCaps
770  $ret = '<fieldset id="bmlt_semantic_form_main_fields_fieldset'.htmlspecialchars($this->_myJSName).'" class="bmlt_semantic_form_main_fields_fieldset" style="display:none"><legend id="bmlt_semantic_form_main_fields_fieldset_legend'.htmlspecialchars($this->_myJSName).'" class="bmlt_semantic_form_main_fields_fieldset_legend">';
771  $ret .= $this->get_wizard_page_field_select_html('main_');
772  $ret .= '</legend>';
773  $ret .= defined('DEBUG') ? "\n" : '';
774  $ret .= '<div id="bmlt_semantic_form_main_fields_fieldset_contents_div'.htmlspecialchars($this->_myJSName).'" class="bmlt_semantic_form_main_fields_fieldset_contents_div" style="display:block">';
775  $ret .= defined('DEBUG') ? "\n" : '';
776  $ret .= '<div id="bmlt_switcher_field_value_div_no_options_blurb'.htmlspecialchars($this->_myJSName).'" class="bmlt_workshop_blurb_note_div" style="display:none">'.$this->localize_string('no_addl_options').'</div>';
777  $ret .= defined('DEBUG') ? "\n" : '';
778  $ret .= '<div id="bmlt_switcher_field_value_div_no_selected_formats_blurb'.htmlspecialchars($this->_myJSName).'" class="bmlt_workshop_blurb_note_div" style="display:none">';
779  $ret .= defined('DEBUG') ? "\n" : '';
780  $ret .= '<p>'.$this->localize_string('no_selected_formats_blurb').'</p>';
781  $ret .= defined('DEBUG') ? "\n" : '';
782  $ret .= '<p>'.$this->localize_string('or_note').'</p>';
783  $ret .= defined('DEBUG') ? "\n" : '';
784  $ret .= '</div>';
785  $ret .= defined('DEBUG') ? "\n" : '';
786  $ret .= '<div id="bmlt_switcher_field_value_div_formats'.htmlspecialchars($this->_myJSName).'" class="bmlt_switcher_field_value_div_formats" style="display:none"></div>';
787  $ret .= defined('DEBUG') ? "\n" : '';
788  $ret .= '</div>';
789  $ret .= defined('DEBUG') ? "\n" : '';
790  $ret .= '</fieldset>';
791  $ret .= defined('DEBUG') ? "\n" : '';
792 
793  return $ret;
794  }
795 
796  /**************************************************************/
797  /** \brief
798 
799  \returns the HTML.
800  */
801  /**************************************************************/
802  // phpcs:disable PSR1.Methods.CamelCapsMethodName.NotCamelCaps
803  public function get_wizard_page_formats_html()
804  {
805  // phpcs:enable PSR1.Methods.CamelCapsMethodName.NotCamelCaps
806  $ret = '<div id="bmlt_semantic_form_formats_fieldset_contents_div'.htmlspecialchars($this->_myJSName).'" class="bmlt_semantic_form_formats_fieldset_contents_div" style="display:none">';
807  $ret .= defined('DEBUG') ? "\n" : '';
808  $ret .= '<label id="bmlt_semantic_formats_lang_select_label'.htmlspecialchars($this->_myJSName).'select_label'.htmlspecialchars($this->_myJSName).'" for="bmlt_semantic_formats_lang_select'.htmlspecialchars($this->_myJSName).'" class="bmlt_semantic_formats_lang_select_label">'.$this->localize_string('formats_lang_section_label').'</label>';
809  $ret .= defined('DEBUG') ? "\n" : '';
810  $function_string = 'bmlt_semantic_js_object'.htmlspecialchars($this->_myJSName).'.handleFormatsLangSelectChange(this)';
811  $ret .= '<select id="bmlt_semantic_formats_lang_select'.htmlspecialchars($this->_myJSName).'" class="bmlt_semantic_formats_lang_select" onchange="'.htmlspecialchars($function_string).'">';
812  $ret .= defined('DEBUG') ? "\n" : '';
813  $ret .= '<option value="" selected="selected">'.$this->localize_string('formats_lang_section_option').'</option>';
814  $ret .= defined('DEBUG') ? "\n" : '';
815 
816  foreach ($this->_langs as $key => $name) {
817  $ret .= '<option value="'.$key.'">'.htmlspecialchars($name).'</option>';
818  $ret .= defined('DEBUG') ? "\n" : '';
819  }
820 
821  $ret .= '</select>';
822  $ret .= defined('DEBUG') ? "\n" : '';
823  $ret .= '</div>';
824  $ret .= defined('DEBUG') ? "\n" : '';
825 
826  return $ret;
827  }
828 
829  /**************************************************************/
830  /** \brief
831 
832  \returns the HTML.
833  */
834  /**************************************************************/
835  // phpcs:disable PSR1.Methods.CamelCapsMethodName.NotCamelCaps
836  public function get_wizard_page_meeting_search_html()
837  {
838  // phpcs:enable PSR1.Methods.CamelCapsMethodName.NotCamelCaps
839  $ret = '<div id="bmlt_semantic_form_meeting_search_div'.htmlspecialchars($this->_myJSName).'" class="bmlt_semantic_form_meeting_search_div">';
840  $ret .= defined('DEBUG') ? "\n" : '';
841 
842  $ret .= '<div id="bmlt_semantic_form_weekday_header_checkbox_div'.htmlspecialchars($this->_myJSName).'" class="bmlt_semantic_form_weekday_header_checkbox_div" style="display:none">';
843  $function_string = 'bmlt_semantic_js_object'.htmlspecialchars($this->_myJSName).'.handleWeekdayHeaderChange(this)';
844  $ret .= '<input type="checkbox" id="bmlt_semantic_form_weekday_header_checkbox'.htmlspecialchars($this->_myJSName).'" class="bmlt_semantic_form_weekday_header_checkbox" onchange="'.$function_string.'" />';
845  $ret .= defined('DEBUG') ? "\n" : '';
846  $ret .= '<label id="bmlt_semantic_form_weekday_header_checkbox_label'.htmlspecialchars($this->_myJSName).'" for="bmlt_semantic_form_weekday_header_checkbox'.htmlspecialchars($this->_myJSName).'" class="bmlt_semantic_form_weekday_header_checkbox_label">'.$this->localize_string('weekday_header_checkbox_label').'</label>';
847  $ret .= defined('DEBUG') ? "\n" : '';
848  $ret .= '</div>';
849  $ret .= defined('DEBUG') ? "\n" : '';
850 
851  $ret .= '<div id="bmlt_semantic_form_used_formats_div'.htmlspecialchars($this->_myJSName).'" class="bmlt_semantic_form_used_formats_div" style="display:none">';
852 
853  $ret .= '<div id="bmlt_semantic_form_used_formats_checkbox_div'.htmlspecialchars($this->_myJSName).'" class="bmlt_semantic_form_used_formats_checkbox_div">';
854  $function_string = 'bmlt_semantic_js_object'.htmlspecialchars($this->_myJSName).'.handleUsedFormatsChange(this)';
855  $ret .= '<input type="checkbox" id="bmlt_semantic_form_used_formats_checkbox'.htmlspecialchars($this->_myJSName).'" class="bmlt_semantic_form_used_formats_checkbox" onchange="'.$function_string.'" />';
856  $ret .= defined('DEBUG') ? "\n" : '';
857  $ret .= '<label id="bmlt_semantic_form_used_formats_checkbox_label'.htmlspecialchars($this->_myJSName).'" for="bmlt_semantic_form_used_formats_checkbox'.htmlspecialchars($this->_myJSName).'" class="bmlt_semantic_form_used_formats_checkbox_label">'.$this->localize_string('used_formats_checkbox_label').'</label>';
858  $ret .= defined('DEBUG') ? "\n" : '';
859  $ret .= '</div>';
860  $ret .= defined('DEBUG') ? "\n" : '';
861 
862  $ret .= '<div id="bmlt_semantic_form_just_used_formats_checkbox_div'.htmlspecialchars($this->_myJSName).'" class="bmlt_semantic_form_just_used_formats_checkbox_div">';
863  $ret .= '<input type="checkbox" id="bmlt_semantic_form_just_used_formats_checkbox'.htmlspecialchars($this->_myJSName).'" class="bmlt_semantic_form_just_used_formats_checkbox" disabled="disabled" onchange="'.$function_string.'" />';
864  $ret .= defined('DEBUG') ? "\n" : '';
865  $ret .= '<label id="bmlt_semantic_form_just_used_formats_checkbox_label'.htmlspecialchars($this->_myJSName).'" for="bmlt_semantic_form_just_used_formats_checkbox'.htmlspecialchars($this->_myJSName).'" class="bmlt_semantic_form_used_formats_checkbox_label">'.$this->localize_string('used_formats_only_checkbox_label').'</label>';
866  $ret .= defined('DEBUG') ? "\n" : '';
867  $ret .= '</div>';
868  $ret .= defined('DEBUG') ? "\n" : '';
869 
870  $ret .= '</div>';
871  $ret .= defined('DEBUG') ? "\n" : '';
872 
873  $ret .= '<fieldset id="bmlt_semantic_form_weekday_fieldset'.htmlspecialchars($this->_myJSName).'" class="bmlt_semantic_form_weekday_fieldset"><legend id="bmlt_semantic_form_weekday_fieldset_legend'.htmlspecialchars($this->_myJSName).'" class="bmlt_semantic_form_weekday_fieldset_legend">';
874  $ret .= $this->localize_string('weekday_section_legend');
875  $ret .= '</legend>';
876  $ret .= defined('DEBUG') ? "\n" : '';
877 
878  $ret .= '<div id="bmlt_semantic_form_weekday_blurb_div'.htmlspecialchars($this->_myJSName).'" class="bmlt_workshop_blurb_note_div">';
879  $ret .= '<p>'.$this->localize_string('all_unselected_note1').'</p>';
880  $ret .= '<p>'.$this->localize_string('all_unselected_note2').'</p>';
881  $ret .= '<p>'.$this->localize_string('or_note').'</p>';
882  $ret .= '</div>';
883  $iStart = intval($this->localize_string('startDay'));
884  for ($i = 0; $i < 7; $i++) {
885  $day_int = $iStart + $i;
886  if ($day_int > 7) {
887  $day_int = 1;
888  }
889  $name = $this->localize_string('weekday'.$day_int);
890  $value = $day_int;
891 
892  $ret .= $this->make_checkbox_html($name, 'bmlt_semantic_form_weekday_checkbox_'.$value, false, $value, 'handleWeekdayCheckbox');
893  }
894  $ret .= '<div class="clear_both"></div>';
895  $ret .= '</fieldset>';
896  $ret .= defined('DEBUG') ? "\n" : '';
897 
898  $ret .= '<fieldset id="bmlt_semantic_form_not_weekday_fieldset'.htmlspecialchars($this->_myJSName).'" class="bmlt_semantic_form_weekday_fieldset"><legend id="bmlt_semantic_form_not_weekday_fieldset_legend'.htmlspecialchars($this->_myJSName).'" class="bmlt_semantic_form_weekday_fieldset_legend">';
899  $ret .= $this->localize_string('weekday_section_negative_legend');
900  $ret .= '</legend>';
901  $ret .= defined('DEBUG') ? "\n" : '';
902  $ret .= '<div id="bmlt_semantic_form_not_weekday_blurb_div'.htmlspecialchars($this->_myJSName).'" class="bmlt_workshop_blurb_note_div">';
903  $ret .= '<p>'.$this->localize_string('all_unselected_note3').'</p>';
904  $ret .= '</div>';
905  $iStart = intval($this->localize_string('startDay'));
906  for ($i = 0; $i < 7; $i++) {
907  $day_int = $iStart + $i;
908  if ($day_int > 7) {
909  $day_int = 1;
910  }
911  $name = $this->localize_string('weekday'.$day_int);
912  $value = -$day_int;
913 
914  $ret .= $this->make_checkbox_html($name, 'bmlt_semantic_form_not_weekday_checkbox_'.abs($value), false, $value, 'handleWeekdayCheckbox');
915  }
916  $ret .= '<div class="clear_both"></div>';
917  $ret .= '</fieldset>';
918  $ret .= defined('DEBUG') ? "\n" : '';
919 
920  $ret .= '<fieldset id="bmlt_semantic_form_formats_fieldset'.htmlspecialchars($this->_myJSName).'" class="bmlt_semantic_form_formats_fieldset"><legend id="bmlt_semantic_form_formats_fieldset_legend'.htmlspecialchars($this->_myJSName).'" class="bmlt_semantic_form_formats_fieldset_legend">';
921  $ret .= $this->localize_string('format_section_legend');
922  $ret .= '</legend>';
923  $ret .= defined('DEBUG') ? "\n" : '';
924  $ret .= '<div id="bmlt_semantic_form_sb_blurb_div'.htmlspecialchars($this->_myJSName).'" class="bmlt_workshop_blurb_note_div">';
925  $ret .= '<p>'.$this->localize_string('all_unselected_note1').'</p>';
926  $ret .= '<p>'.$this->localize_string('all_unselected_note2').'</p>';
927  $ret .= '<p>'.$this->localize_string('configurable_operator_note').'</p>';
928  $ret .= '</div>';
929  $ret .= '<div id="bmlt_semantic_form_formats_fieldset_div'.htmlspecialchars($this->_myJSName).'" class="bmlt_semantic_form_formats_fieldset_div"></div>';
930  $ret .= '<div style="display: block; padding-top: 25px">';
931  $ret .= '<label id="bmlt_semantic_form_formats_comparison_operator_text_label_'.htmlspecialchars($this->_myJSName).'">'.$this->localize_string('formats_comparison_operator').'</label>';
932  $ret .= '<input type="radio" name="formats_comparison_operator" id="formats_comparison_operator_radio_and" value="AND" onchange="bmlt_semantic_js_object'.htmlspecialchars($this->_myJSName).'.handleFormatsComparisonOperatorRadioButton(this)" checked>';
933  $ret .= '<label>AND</label>';
934  $ret .= '<input type="radio" name="formats_comparison_operator" id="formats_comparison_operator_radio_or" value="OR" onchange="bmlt_semantic_js_object'.htmlspecialchars($this->_myJSName).'.handleFormatsComparisonOperatorRadioButton(this)">';
935  $ret .= '<label>OR</label>';
936  $ret .= '</div>';
937  $ret .= defined('DEBUG') ? "\n" : '';
938  $ret .= '</fieldset>';
939  $ret .= defined('DEBUG') ? "\n" : '';
940 
941  $ret .= '<fieldset id="bmlt_semantic_form_un_formats_fieldset'.htmlspecialchars($this->_myJSName).'" class="bmlt_semantic_form_formats_fieldset"><legend id="bmlt_semantic_form_un_formats_fieldset_legend'.htmlspecialchars($this->_myJSName).'" class="bmlt_semantic_form_formats_fieldset_legend">';
942  $ret .= $this->localize_string('un_format_section_legend');
943  $ret .= '</legend>';
944  $ret .= defined('DEBUG') ? "\n" : '';
945  $ret .= '<div id="bmlt_semantic_form_sb_blurb_div'.htmlspecialchars($this->_myJSName).'" class="bmlt_workshop_blurb_note_div">';
946  $ret .= '<p>'.$this->localize_string('all_unselected_note1').'</p>';
947  $ret .= '<p>'.$this->localize_string('all_unselected_note2').'</p>';
948  $ret .= '<p>'.$this->localize_string('and_note').'</p>';
949  $ret .= '</div>';
950  $ret .= '<div id="bmlt_semantic_form_not_formats_fieldset_div'.htmlspecialchars($this->_myJSName).'" class="bmlt_semantic_form_formats_fieldset_div"></div>';
951  $ret .= defined('DEBUG') ? "\n" : '';
952  $ret .= '</fieldset>';
953  $ret .= defined('DEBUG') ? "\n" : '';
954 
955  $ret .= '<fieldset id="bmlt_semantic_form_keys_fieldset'.htmlspecialchars($this->_myJSName).'" class="bmlt_semantic_form_keys_fieldset"><legend id="bmlt_semantic_form_keys_fieldset_legend'.htmlspecialchars($this->_myJSName).'" class="bmlt_semantic_form_keys_fieldset_legend">';
956  $ret .= $this->get_wizard_page_field_select_html();
957  $ret .= '</legend>';
958  $ret .= defined('DEBUG') ? "\n" : '';
959  $ret .= '<div id="bmlt_semantic_form_fields_blurb_div'.htmlspecialchars($this->_myJSName).'" class="bmlt_workshop_blurb_note_div">';
960  $ret .= '<p>'.$this->localize_string('all_unselected_note1').'</p>';
961  $ret .= '</div>';
962  $ret .= '<div id="bmlt_semantic_form_meeting_fields_fieldset_contents_div'.htmlspecialchars($this->_myJSName).'" class="bmlt_semantic_form_meeting_fields_fieldset_contents_div" style="display:none">';
963  $ret .= $this->get_wizard_page_field_value_select_html();
964  $ret .= '</div>';
965  $ret .= '</fieldset>';
966  $ret .= defined('DEBUG') ? "\n" : '';
967 
968  $ret .= '<fieldset id="bmlt_semantic_form_sb_fieldset'.htmlspecialchars($this->_myJSName).'" class="bmlt_semantic_form_sb_fieldset"><legend id="bmlt_semantic_form_sb_fieldset_legend'.htmlspecialchars($this->_myJSName).'" class="bmlt_semantic_form_sb_fieldset_legend">';
969  $ret .= $this->localize_string('service_bodies_section_legend');
970  $ret .= '</legend>';
971  $ret .= defined('DEBUG') ? "\n" : '';
972  $ret .= '<div id="bmlt_semantic_form_sb_blurb_div'.htmlspecialchars($this->_myJSName).'" class="bmlt_workshop_blurb_note_div">';
973  $ret .= '<p>'.$this->localize_string('all_unselected_note1').'</p>';
974  $ret .= '<p>'.$this->localize_string('all_unselected_note2').'</p>';
975  $ret .= '<p>'.$this->localize_string('or_note').'</p>';
976  $ret .= '</div>';
977  $ret .= '<div id="bmlt_semantic_form_sb_fieldset_div'.htmlspecialchars($this->_myJSName).'"></div>';
978  $ret .= '</fieldset>';
979  $ret .= defined('DEBUG') ? "\n" : '';
980 
981  $ret .= '<fieldset id="bmlt_semantic_form_sb_not_fieldset'.htmlspecialchars($this->_myJSName).'" class="bmlt_semantic_form_sb_fieldset"><legend id="bmlt_semantic_form_sb_not_fieldset_legend'.htmlspecialchars($this->_myJSName).'" class="bmlt_semantic_form_sb_fieldset_legend">';
982  $ret .= $this->localize_string('service_bodies_not_section_legend');
983  $ret .= '</legend>';
984  $ret .= defined('DEBUG') ? "\n" : '';
985  $ret .= '<div id="bmlt_semantic_form_sb_not_blurb_div'.htmlspecialchars($this->_myJSName).'" class="bmlt_workshop_blurb_note_div">';
986  $ret .= '<p>'.$this->localize_string('all_unselected_note1').'</p>';
987  $ret .= '<p>'.$this->localize_string('all_unselected_note2').'</p>';
988  $ret .= '<p>'.$this->localize_string('or_note').'</p>';
989  $ret .= '</div>';
990  $ret .= '<div id="bmlt_semantic_form_sb_not_fieldset_div'.htmlspecialchars($this->_myJSName).'"></div>';
991  $ret .= '</fieldset>';
992  $ret .= defined('DEBUG') ? "\n" : '';
993 
994  $ret .= '<fieldset id="bmlt_semantic_form_text_search_fieldset'.htmlspecialchars($this->_myJSName).'" class="bmlt_semantic_form_text_search_fieldset"><legend id="bmlt_semantic_form_text_search_fieldset_legend'.htmlspecialchars($this->_myJSName).'" class="bmlt_semantic_form_text_search_fieldset_legend">';
995  $ret .= $this->localize_string('text_search_section_legend');
996  $ret .= '</legend>';
997  $ret .= defined('DEBUG') ? "\n" : '';
998  $ret .= '<div id="bmlt_semantic_form_sb_blurb_div'.htmlspecialchars($this->_myJSName).'" class="bmlt_workshop_blurb_note_div">';
999  $ret .= '<p>'.$this->localize_string('text_note1').'</p>';
1000  $ret .= '</div>';
1001  $function_string = 'bmlt_semantic_js_object'.htmlspecialchars($this->_myJSName).'.handleTextSearchText(this)';
1002  $ret .= '<div id="bmlt_semantic_form_text_search_div'.htmlspecialchars($this->_myJSName).'">';
1003  $ret .= '<label for="bmlt_semantic_form_text_search_text'.htmlspecialchars($this->_myJSName).'" id="bmlt_semantic_form_text_search_text_label'.htmlspecialchars($this->_myJSName).'">'.$this->localize_string('text_search_label').'</label>';
1004  $ret .= '<input type="text" id="bmlt_semantic_form_text_search_text'.htmlspecialchars($this->_myJSName).'" class="bmlt_semantic_form_text_search_text" value="'.$this->localize_string('value_prompt_text_item').'" />';
1005  $ret .= '<select id="bmlt_semantic_form_text_search_select'.htmlspecialchars($this->_myJSName).'" class="bmlt_semantic_form_text_search_select" onchange="'.$function_string.'" disabled="disabled">';
1006  $ret .= '<option value="" selected="selected">'.$this->localize_string('text_search_type_select_option_0').'</option>';
1007  $ret .= '<option value="SearchStringAll=1">'.$this->localize_string('text_search_type_select_option_1').'</option>';
1008  $ret .= '<option value="SearchStringExact=1">'.$this->localize_string('text_search_type_select_option_2').'</option>';
1009  $ret .= '<option value="StringSearchIsAnAddress=1">'.$this->localize_string('text_search_type_select_option_3').'</option>';
1010  $ret .= '</select>';
1011  $ret .= '<div id="text_search_radius_input_div'.htmlspecialchars($this->_myJSName).'" class="text_search_radius_input_div" style="display:none">';
1012  $ret .= '<label for="bmlt_semantic_form_text_search_text_radius'.htmlspecialchars($this->_myJSName).'" id="bmlt_semantic_form_text_search_text_radius_label'.htmlspecialchars($this->_myJSName).'">'.$this->localize_string('text_search_radius_label').'</label>';
1013  $ret .= '<input type="text" id="bmlt_semantic_form_text_search_text_radius'.htmlspecialchars($this->_myJSName).'" class="bmlt_semantic_form_text_search_radius_text" />';
1014  $ret .= '<label for="bmlt_semantic_form_text_search_text_radius'.htmlspecialchars($this->_myJSName).'" id="bmlt_semantic_form_text_search_text_radius_units_label'.htmlspecialchars($this->_myJSName).'">'.$this->localize_string('text_search_radius_units_label').'</label>';
1015  $ret .= '</div>';
1016  $ret .= defined('DEBUG') ? "\n" : '';
1017  $ret .= '</div>';
1018  $ret .= defined('DEBUG') ? "\n" : '';
1019  $ret .= '</fieldset>';
1020  $ret .= defined('DEBUG') ? "\n" : '';
1021 
1022  $ret .= '<fieldset id="bmlt_semantic_form_start_time_fieldset'.htmlspecialchars($this->_myJSName).'" class="bmlt_semantic_form_start_time_fieldset"><legend id="bmlt_semantic_form_start_time_fieldset_legend'.htmlspecialchars($this->_myJSName).'" class="bmlt_semantic_form_start_time_fieldset_legend">';
1023  $ret .= $this->localize_string('start_time_legend');
1024  $ret .= '</legend>';
1025  $ret .= defined('DEBUG') ? "\n" : '';
1026  $ret .= '<div id="bmlt_semantic_form_start_time_blurb_div'.htmlspecialchars($this->_myJSName).'" class="bmlt_workshop_blurb_note_div">';
1027  $ret .= '<p>'.$this->localize_string('start_time_blurb').'</p>';
1028  $ret .= '</div>';
1029  $ret .= '<div id="bmlt_semantic_form_start_time_fieldset_min_div'.htmlspecialchars($this->_myJSName).'" class="bmlt_semantic_form_start_time_fieldset_div">';
1030  $ret .= '<label for="bmlt_semantic_form_start_time_min_text'.htmlspecialchars($this->_myJSName).'" id="bmlt_semantic_form_start_time_min_text_label'.htmlspecialchars($this->_myJSName).'">'.$this->localize_string('start_time_min_label').'</label>';
1031  $ret .= '<input pattern="^[0-9\:]{0,5}$" type="text" id="bmlt_semantic_form_start_time_min_text'.htmlspecialchars($this->_myJSName).'" class="bmlt_semantic_form_time_text" />';
1032  $ret .= '</div>';
1033  $ret .= defined('DEBUG') ? "\n" : '';
1034  $ret .= '<div id="bmlt_semantic_form_start_time_fieldset_max_div'.htmlspecialchars($this->_myJSName).'" class="bmlt_semantic_form_start_time_fieldset_div">';
1035  $ret .= '<label for="bmlt_semantic_form_start_time_max_text'.htmlspecialchars($this->_myJSName).'" id="bmlt_semantic_form_start_time_max_text_label'.htmlspecialchars($this->_myJSName).'">'.$this->localize_string('start_time_max_label').'</label>';
1036  $ret .= '<input pattern="^[0-9\:]{0,5}$" type="text" id="bmlt_semantic_form_start_time_max_text'.htmlspecialchars($this->_myJSName).'" class="bmlt_semantic_form_time_text" />';
1037  $ret .= '</div>';
1038  $ret .= defined('DEBUG') ? "\n" : '';
1039  $ret .= '<div id="bmlt_semantic_form_end_time_fieldset_max_div'.htmlspecialchars($this->_myJSName).'" class="bmlt_semantic_form_end_time_fieldset_div"';
1040 
1041  if ($this->_version < 2008008) {
1042  $ret .= ' style="display:none"';
1043  }
1044 
1045  $ret .= '>';
1046  $ret .= '<label for="bmlt_semantic_form_end_time_max_text'.htmlspecialchars($this->_myJSName).'" id="bmlt_semantic_form_end_time_max_text_label'.htmlspecialchars($this->_myJSName).'">'.$this->localize_string('end_time_max_label').'</label>';
1047  $ret .= '<input pattern="^[0-9\:]{0,5}$" type="text" id="bmlt_semantic_form_end_time_max_text'.htmlspecialchars($this->_myJSName).'" class="bmlt_semantic_form_time_text" />';
1048  $ret .= '</div>';
1049  $ret .= defined('DEBUG') ? "\n" : '';
1050  $ret .= '</fieldset>';
1051  $ret .= defined('DEBUG') ? "\n" : '';
1052 
1053  $ret .= '<fieldset id="bmlt_semantic_form_duration_fieldset'.htmlspecialchars($this->_myJSName).'" class="bmlt_semantic_form_duration_fieldset"><legend id="bmlt_semantic_form_duration_fieldset_legend'.htmlspecialchars($this->_myJSName).'" class="bmlt_semantic_form_duration_fieldset_legend">';
1054  $ret .= $this->localize_string('duration_legend');
1055  $ret .= '</legend>';
1056  $ret .= defined('DEBUG') ? "\n" : '';
1057  $ret .= '<div id="bmlt_semantic_form_duration_blurb_div'.htmlspecialchars($this->_myJSName).'" class="bmlt_workshop_blurb_note_div">';
1058  $ret .= '<p>'.$this->localize_string('duration_blurb').'</p>';
1059  $ret .= '</div>';
1060  $ret .= '<div id="bmlt_semantic_form_duration_fieldset_div'.htmlspecialchars($this->_myJSName).'" class="bmlt_semantic_form_duration_fieldset_div">';
1061  $ret .= '<div id="bmlt_semantic_form_duration_fieldset_min_div'.htmlspecialchars($this->_myJSName).'" class="bmlt_semantic_form_duration_fieldset_div">';
1062  $ret .= '<label for="bmlt_semantic_form_duration_min_text'.htmlspecialchars($this->_myJSName).'" id="bmlt_semantic_form_duration_min_text_label'.htmlspecialchars($this->_myJSName).'">'.$this->localize_string('duration_min_label').'</label>';
1063  $ret .= '<input pattern="^[0-9\:]{0,5}$" type="text" id="bmlt_semantic_form_duration_min_text'.htmlspecialchars($this->_myJSName).'" class="bmlt_semantic_form_time_text" />';
1064  $ret .= '</div>';
1065  $ret .= defined('DEBUG') ? "\n" : '';
1066  $ret .= '<div id="bmlt_semantic_form_duration_fieldset_max_div'.htmlspecialchars($this->_myJSName).'" class="bmlt_semantic_form_duration_fieldset_div">';
1067  $ret .= '<label for="bmlt_semantic_form_duration_max_text'.htmlspecialchars($this->_myJSName).'" id="bmlt_semantic_form_duration_max_text_label'.htmlspecialchars($this->_myJSName).'">'.$this->localize_string('duration_max_label').'</label>';
1068  $ret .= '<input pattern="^[0-9\:]{0,5}$" type="text" id="bmlt_semantic_form_duration_max_text'.htmlspecialchars($this->_myJSName).'" class="bmlt_semantic_form_time_text" />';
1069  $ret .= '</div>';
1070  $ret .= defined('DEBUG') ? "\n" : '';
1071  $ret .= '</div>';
1072  $ret .= defined('DEBUG') ? "\n" : '';
1073  $ret .= '</fieldset>';
1074  $ret .= defined('DEBUG') ? "\n" : '';
1075 
1076  $ret .= '<fieldset id="bmlt_semantic_form_map_fieldset'.htmlspecialchars($this->_myJSName).'" class="bmlt_semantic_form_map_fieldset"><legend id="bmlt_semantic_form_map_fieldset_legend'.htmlspecialchars($this->_myJSName).'" class="bmlt_semantic_form_map_fieldset_legend">';
1077  $ret .= $this->localize_string('map_search_section_legend');
1078  $ret .= '</legend>';
1079  $ret .= defined('DEBUG') ? "\n" : '';
1080 
1081  $ret .= '<div id="bmlt_semantic_form_map_checkbox_div'.htmlspecialchars($this->_myJSName).'" class="bmlt_semantic_form_map_checkbox_div">';
1082  $function_string = 'bmlt_semantic_js_object'.htmlspecialchars($this->_myJSName).'.handleMapCheckboxChange(this)';
1083  $ret .= defined('DEBUG') ? "\n" : '';
1084  $ret .= '<input type="checkbox" id="bmlt_semantic_form_map_checkbox'.htmlspecialchars($this->_myJSName).'" class="bmlt_semantic_form_map_checkbox" onchange="'.$function_string.'" />';
1085  $ret .= defined('DEBUG') ? "\n" : '';
1086  $ret .= '<label id="bmlt_semantic_form_map_checkbox_label'.htmlspecialchars($this->_myJSName).'" for="bmlt_semantic_form_map_checkbox'.htmlspecialchars($this->_myJSName).'" class="bmlt_semantic_form_map_checkbox_label">'.$this->localize_string('map_search_checkbox_label').'</label>';
1087  $ret .= defined('DEBUG') ? "\n" : '';
1088  $ret .= '</div>';
1089  $ret .= defined('DEBUG') ? "\n" : '';
1090 
1091  $ret .= '<div id="bmlt_semantic_form_map_wrapper_div'.htmlspecialchars($this->_myJSName).'" class="bmlt_semantic_form_map_wrapper_div" style="display:none">';
1092  $ret .= defined('DEBUG') ? "\n" : '';
1093  $ret .= '<script type="text/javascript" src="https://maps.google.com/maps/api/js?key='.$this->_apiKey.'"></script>';
1094  $ret .= defined('DEBUG') ? "\n" : '';
1095 
1096  $ret .= '<div id="bmlt_semantic_form_map_div'.htmlspecialchars($this->_myJSName).'" class="bmlt_semantic_form_map_div"></div>';
1097  $ret .= defined('DEBUG') ? "\n" : '';
1098 
1099  $ret .= '<div id="map_search_longlat_input_div'.htmlspecialchars($this->_myJSName).'" class="map_search_longlat_input_div">';
1100  $ret .= defined('DEBUG') ? "\n" : '';
1101  $ret .= '<label for="bmlt_semantic_form_map_search_longitude_text'.htmlspecialchars($this->_myJSName).'" id="bmlt_semantic_form_map_search_text_longitude_label'.htmlspecialchars($this->_myJSName).'">'.$this->localize_string('text_search_longitude_label').'</label>';
1102  $ret .= '<input value="" type="text" pattern="^[0-9\.\-]+$" id="bmlt_semantic_form_map_search_longitude_text'.htmlspecialchars($this->_myJSName).'" class="bmlt_semantic_form_map_search_longitude_text" />';
1103  $ret .= '<label for="bmlt_semantic_form_map_search_latitude_text'.htmlspecialchars($this->_myJSName).'" id="bmlt_semantic_form_map_search_text_latitude_label'.htmlspecialchars($this->_myJSName).'">'.$this->localize_string('text_search_latitude_label').'</label>';
1104  $ret .= '<input value="" type="text" pattern="^[0-9\.\-]+$" id="bmlt_semantic_form_map_search_latitude_text'.htmlspecialchars($this->_myJSName).'" class="bmlt_semantic_form_map_search_latitude_text" />';
1105  $ret .= '</div>';
1106  $ret .= defined('DEBUG') ? "\n" : '';
1107 
1108  $ret .= '<div id="map_search_radius_input_div'.htmlspecialchars($this->_myJSName).'" class="map_search_radius_input_div">';
1109  $ret .= defined('DEBUG') ? "\n" : '';
1110  $ret .= '<div id="bmlt_semantic_form_sb_blurb_div'.htmlspecialchars($this->_myJSName).'" class="bmlt_workshop_blurb_note_div">';
1111  $ret .= '<p>'.$this->localize_string('radius_note1').'</p>';
1112  $ret .= '<p>'.$this->localize_string('radius_note2').'</p>';
1113  $ret .= '<p>'.$this->localize_string('radius_note3').'</p>';
1114  $ret .= '</div>';
1115  $ret .= defined('DEBUG') ? "\n" : '';
1116  $ret .= '<label for="bmlt_semantic_form_map_search_text_radius'.htmlspecialchars($this->_myJSName).'" id="bmlt_semantic_form_map_search_text_radius_label'.htmlspecialchars($this->_myJSName).'">'.$this->localize_string('text_search_radius_label').'</label>';
1117  $ret .= '<input type="text" id="bmlt_semantic_form_map_search_text_radius'.htmlspecialchars($this->_myJSName).'" class="bmlt_semantic_form_map_search_radius_text" />';
1118  $function_string = 'bmlt_semantic_js_object'.htmlspecialchars($this->_myJSName).'.handleMapRadiusUnitsChange(this)';
1119  $ret .= '<select id="bmlt_semantic_form_map_search_text_radius_units'.htmlspecialchars($this->_myJSName).'" class="bmlt_semantic_form_map_search_text_radius_units" onchange="'.$function_string.'">';
1120  $ret .= '<option value="geo_width" selected="selected">'.$this->localize_string('text_map_radius_units_miles').'</option>';
1121  $ret .= '<option value="geo_width_km">'.$this->localize_string('text_map_radius_units_km').'</option>';
1122  $ret .= '</select>';
1123  $ret .= '</div>';
1124  $ret .= defined('DEBUG') ? "\n" : '';
1125 
1126  $ret .= '</fieldset>';
1127  $ret .= defined('DEBUG') ? "\n" : '';
1128 
1129  $ret .= $this->get_wizard_page_specific_fields_html();
1130 
1131  $ret .= $this->get_wizard_page_sort_fields_html();
1132 
1133  $ret .= '</div>';
1134  $ret .= defined('DEBUG') ? "\n" : '';
1135 
1136  return $ret;
1137  }
1138 
1139  /**************************************************************/
1140  /** \brief
1141 
1142  \returns the HTML.
1143  */
1144  /**************************************************************/
1145  // phpcs:disable PSR1.Methods.CamelCapsMethodName.NotCamelCaps
1146  public function get_wizard_page_specific_fields_html()
1147  {
1148  // phpcs:enable PSR1.Methods.CamelCapsMethodName.NotCamelCaps
1149  $ret = '<fieldset id="bmlt_semantic_form_specific_fields_fieldset'.htmlspecialchars($this->_myJSName).'" class="bmlt_semantic_form_specific_fields_fieldset"><legend id="bmlt_semantic_form_specific_fields_fieldset_legend'.htmlspecialchars($this->_myJSName).'" class="bmlt_semantic_form_specific_fields_fieldset_legend">';
1150  $ret .= defined('DEBUG') ? "\n" : '';
1151  $ret .= $this->localize_string('specific_fields_legend');
1152  $ret .= '</legend>';
1153  $ret .= defined('DEBUG') ? "\n" : '';
1154  $ret .= '<div id="bmlt_semantic_form_sb_blurb_div'.htmlspecialchars($this->_myJSName).'" class="bmlt_workshop_blurb_note_div"><p>'.$this->localize_string('specific_fields_blurb').'</p></div>';
1155  $ret .= defined('DEBUG') ? "\n" : '';
1156 
1157  $function_string = 'bmlt_semantic_js_object'.htmlspecialchars($this->_myJSName).'.handleSpecificFieldChange(this)';
1158 
1159  foreach ($this->_keys as $key => $name) {
1160  $ret .= '<div id="bmlt_semantic_form_field_key_checkbox_div'.htmlspecialchars($this->_myJSName).'" class="bmlt_semantic_form_field_key_checkbox_div">';
1161  $ret .= defined('DEBUG') ? "\n" : '';
1162  $ret .= '<input type="checkbox" id="bmlt_semantic_form_field_key_checkbox_'.htmlspecialchars($key).'_'.htmlspecialchars($this->_myJSName).'" class="bmlt_semantic_form_field_key_checkbox" value="'.htmlspecialchars($key).'" onchange="'.$function_string.'" />';
1163  $ret .= defined('DEBUG') ? "\n" : '';
1164  $ret .= '<label id="bmlt_semantic_form_field_key_checkbox_label_'.htmlspecialchars($key).'_'.htmlspecialchars($this->_myJSName).'" for="bmlt_semantic_form_field_key_checkbox_'.htmlspecialchars($key).'_'.htmlspecialchars($this->_myJSName).'" class="bmlt_semantic_form_field_key_checkbox_label">'.htmlspecialchars($name).'</label>';
1165  $ret .= defined('DEBUG') ? "\n" : '';
1166  $ret .= '</div>';
1167  $ret .= defined('DEBUG') ? "\n" : '';
1168  };
1169 
1170  $ret .= '</fieldset>';
1171  $ret .= defined('DEBUG') ? "\n" : '';
1172 
1173  return $ret;
1174  }
1175 
1176  /**************************************************************/
1177  /** \brief
1178 
1179  \returns the HTML.
1180  */
1181  /**************************************************************/
1182  // phpcs:disable PSR1.Methods.CamelCapsMethodName.NotCamelCaps
1183  public function get_wizard_page_sort_fields_html()
1184  {
1185  // phpcs:enable PSR1.Methods.CamelCapsMethodName.NotCamelCaps
1186  $ret = '<fieldset id="bmlt_semantic_form_sort_fields_fieldset'.htmlspecialchars($this->_myJSName).'" class="bmlt_semantic_form_sort_fields_fieldset"><legend id="bmlt_semantic_form_sort_fields_fieldset_legend'.htmlspecialchars($this->_myJSName).'" class="bmlt_semantic_form_sort_fields_fieldset_legend">';
1187  $ret .= defined('DEBUG') ? "\n" : '';
1188  $ret .= $this->localize_string('sort_fields_legend');
1189  $ret .= '</legend>';
1190  $ret .= defined('DEBUG') ? "\n" : '';
1191  $ret .= '<div id="bmlt_semantic_form_sb_blurb_div'.htmlspecialchars($this->_myJSName).'" class="bmlt_workshop_blurb_note_div"><p>'.$this->localize_string('sort_fields_blurb').'</p></div>';
1192  $ret .= defined('DEBUG') ? "\n" : '';
1193 
1194  $function_string = 'bmlt_semantic_js_object'.htmlspecialchars($this->_myJSName).'.handleSortFieldChange(this.options[this.selectedIndex])';
1195 
1196  foreach ($this->_keys as $key => $name) {
1197  $ret .= '<div id="bmlt_semantic_form_field_key_sort_field_div'.htmlspecialchars($this->_myJSName).'" class="bmlt_semantic_form_field_key_sort_field_div">';
1198  $ret .= defined('DEBUG') ? "\n" : '';
1199  $ret .= '<label id="bmlt_semantic_form_field_select_label'.htmlspecialchars($this->_myJSName).'" for="bmlt_semantic_form_field_sort_select'.htmlspecialchars($this->_myJSName).'" class="bmlt_semantic_form_field_select_label">'.htmlspecialchars($name).'</label>';
1200  $ret .= defined('DEBUG') ? "\n" : '';
1201  $ret .= '<select id="bmlt_semantic_form_field_sort_select_'.$key.htmlspecialchars($this->_myJSName).'" class="bmlt_semantic_form_field_sort_select" onchange="'.$function_string.'">';
1202  $ret .= defined('DEBUG') ? "\n" : '';
1203 
1204  $ret .= '<option value="0" selected="selected" id="bmlt_semantic_form_field_sort_select_'.$key.'_0'.htmlspecialchars($this->_myJSName).'">'.$this->localize_string('sort_fields_no_sort_option').'</option>';
1205  for ($i = 1; $i <= count($this->_keys); $i++) {
1206  $ret .= '<option value="'.$i.'" id="bmlt_semantic_form_field_sort_select_'.$key.'_'.$i.htmlspecialchars($this->_myJSName).'">'.$i.'</option>';
1207  $ret .= defined('DEBUG') ? "\n" : '';
1208  };
1209 
1210  $ret .= '</select>';
1211  $ret .= defined('DEBUG') ? "\n" : '';
1212  $ret .= '</div>';
1213  $ret .= defined('DEBUG') ? "\n" : '';
1214  };
1215 
1216  $ret .= '</fieldset>';
1217  $ret .= defined('DEBUG') ? "\n" : '';
1218 
1219  return $ret;
1220  }
1221 
1222  /**************************************************************/
1223  /** \brief
1224 
1225  \returns the HTML.
1226  */
1227  /**************************************************************/
1228  // phpcs:disable PSR1.Methods.CamelCapsMethodName.NotCamelCaps
1229  public function get_wizard_page_coverage_area_html()
1230  {
1231  // phpcs:enable PSR1.Methods.CamelCapsMethodName.NotCamelCaps
1232  $ret = '<fieldset id="bmlt_semantic_coverage_area_fieldset'.htmlspecialchars($this->_myJSName).'" class="bmlt_semantic_coverage_area_fieldset" style="display:none"><legend id="bmlt_semantic_coverage_area_fieldset_legend'.htmlspecialchars($this->_myJSName).'" class="bmlt_semantic_coverage_area_fieldset_legend">';
1233  $ret .= $this->localize_string('coverage_area_legend');
1234  $ret .= '</legend>';
1235  $ret .= defined('DEBUG') ? "\n" : '';
1236  $ret .= '<div id="bmlt_semantic_coverage_area_fieldset_map_div'.htmlspecialchars($this->_myJSName).'" class="bmlt_semantic_coverage_area_fieldset_map_div"></div>';
1237  $ret .= defined('DEBUG') ? "\n" : '';
1238  $ret .= '</fieldset>';
1239  $ret .= defined('DEBUG') ? "\n" : '';
1240 
1241  return $ret;
1242  }
1243 
1244  /**************************************************************/
1245  /** \brief
1246 
1247  \returns the HTML.
1248  */
1249  /**************************************************************/
1250  // phpcs:disable PSR1.Methods.CamelCapsMethodName.NotCamelCaps
1251  public function get_wizard_page_field_select_html($inID = '')
1252  {
1253  // phpcs:enable PSR1.Methods.CamelCapsMethodName.NotCamelCaps
1254  $ret = '<label id="bmlt_semantic_form_field_'.htmlspecialchars($inID).'select_label'.htmlspecialchars($this->_myJSName).'" for="bmlt_semantic_form_field_'.htmlspecialchars($inID).'select'.htmlspecialchars($this->_myJSName).'" class="bmlt_semantic_form_field_select_label">'.$this->localize_string('keys_section_label').'</label>';
1255  $ret .= defined('DEBUG') ? "\n" : '';
1256  $function_string = 'bmlt_semantic_js_object'.htmlspecialchars($this->_myJSName).'.handleFieldKeySelectChange(this)';
1257  $ret .= '<select id="bmlt_semantic_form_field_'.htmlspecialchars($inID).'select'.htmlspecialchars($this->_myJSName).'" class="bmlt_semantic_form_field_select" onchange="'.htmlspecialchars($function_string).'">';
1258  $ret .= defined('DEBUG') ? "\n" : '';
1259  $ret .= '<option value="" selected="selected"';
1260  if ($inID) {
1261  $ret .= ' disabled="disabled"';
1262  }
1263  $ret .= '>'.$this->localize_string($inID ? 'defaultFieldSelect' : 'defaultMeetingFieldSelect').'</option>';
1264  $ret .= defined('DEBUG') ? "\n" : '';
1265  $ret .= '</select>';
1266  $ret .= defined('DEBUG') ? "\n" : '';
1267 
1268  return $ret;
1269  }
1270 
1271  /**************************************************************/
1272  /** \brief
1273 
1274  \returns the HTML.
1275  */
1276  /**************************************************************/
1277  // phpcs:disable PSR1.Methods.CamelCapsMethodName.NotCamelCaps
1278  public function get_wizard_page_field_value_select_html()
1279  {
1280  // phpcs:enable PSR1.Methods.CamelCapsMethodName.NotCamelCaps
1281  $ret = '<label id="bmlt_semantic_form_value_select_label'.htmlspecialchars($this->_myJSName).'" for="bmlt_semantic_form_value_select'.htmlspecialchars($this->_myJSName).'" class="bmlt_semantic_form_value_select_label">'.$this->localize_string('values_section_label').'</label>';
1282  $ret .= defined('DEBUG') ? "\n" : '';
1283  $function_string = 'bmlt_semantic_js_object'.htmlspecialchars($this->_myJSName).'.fieldValueChosen(this)';
1284  $ret .= '<select id="bmlt_semantic_form_value_select'.htmlspecialchars($this->_myJSName).'" class="bmlt_semantic_form_value_select" onchange="'.htmlspecialchars($function_string).'">';
1285  $ret .= defined('DEBUG') ? "\n" : '';
1286  $ret .= '<option value="" selected="selected" disabled="disabled">'.$this->localize_string('defaultPresetValueSelect').'</option>';
1287  $ret .= defined('DEBUG') ? "\n" : '';
1288  $ret .= '</select>';
1289  $ret .= defined('DEBUG') ? "\n" : '';
1290  $ret .= '<input type="text" id="bmlt_semantic_form_value_text'.htmlspecialchars($this->_myJSName).'" class="bmlt_semantic_form_value_text" value="'.$this->localize_string('value_prompt_text_item').'" />';
1291  $ret .= defined('DEBUG') ? "\n" : '';
1292 
1293  return $ret;
1294  }
1295 
1296  /**************************************************************/
1297  /** \brief
1298 
1299  \returns the HTML.
1300  */
1301  /**************************************************************/
1302  // phpcs:disable PSR1.Methods.CamelCapsMethodName.NotCamelCaps
1303  public function make_checkbox_html(
1304  $in_label_text,
1305  $in_base_id,
1306  $in_checked = false,
1307  $in_value = null,
1308  $in_onChange = null
1309  ) {
1310  // phpcs:enable PSR1.Methods.CamelCapsMethodName.NotCamelCaps
1311  $ret = '<div id="'.htmlspecialchars($in_base_id.'_container_div'.$this->_myJSName).'" class="bmlt_weekday_checkbox_container">';
1312  $ret .= '<input type="checkbox" id="'.htmlspecialchars($in_base_id.$this->_myJSName).'" class="bmlt_checkbox_input"';
1313 
1314  if ($in_checked) {
1315  $ret .= ' checked="checked"';
1316  }
1317 
1318  if ($in_value) {
1319  $ret .= ' value="'.htmlspecialchars($in_value).'"';
1320  }
1321 
1322  if ($in_onChange) {
1323  $function_string = 'bmlt_semantic_js_object'.htmlspecialchars($this->_myJSName).'.'.$in_onChange.'(this)';
1324  $ret .= ' onchange="'.$function_string.'"';
1325  }
1326 
1327  $ret .= ' /><label for="'.htmlspecialchars($in_base_id.$this->_myJSName).'" id="'.htmlspecialchars($in_base_id.'_label'.$this->_myJSName).'" class="bmlt_checkbox_label">'.htmlspecialchars($in_label_text).'</label>';
1328  $ret .= '</div>';
1329  $ret .= defined('DEBUG') ? "\n" : '';
1330 
1331  return $ret;
1332  }
1333 
1334  /**************************************************************/
1335  /** \brief
1336 
1337  \returns the HTML.
1338  */
1339  /**************************************************************/
1340  // phpcs:disable PSR1.Methods.CamelCapsMethodName.NotCamelCaps
1341  public function get_wizard_page_schema_select_html()
1342  {
1343  // phpcs:enable PSR1.Methods.CamelCapsMethodName.NotCamelCaps
1344  $ret = '<fieldset id="bmlt_semantic_form_schema_select_fieldset'.htmlspecialchars($this->_myJSName).'" class="bmlt_semantic_form_schema_select_fieldset" style="display:none"><legend id="bmlt_semantic_form_schema_select_fieldset_legend'.htmlspecialchars($this->_myJSName).'" class="bmlt_semantic_form_schema_select_fieldset_legend">';
1345  $ret .= $this->localize_string('schema_type_selector_legend');
1346  $ret .= '</legend>';
1347  $ret .= defined('DEBUG') ? "\n" : '';
1348  $ret .= '<div id="bmlt_semantic_form_schema_select_blurb_div'.htmlspecialchars($this->_myJSName).'" class="bmlt_workshop_blurb_note_div">';
1349  $ret .= defined('DEBUG') ? "\n" : '';
1350  $ret .= '<p>'.$this->_localization['schema_type_selector_blurb1'].'</p>';
1351  $ret .= '<p>'.$this->localize_string('schema_type_selector_blurb2').'</p>';
1352  $ret .= defined('DEBUG') ? "\n" : '';
1353  $ret .= '</div>';
1354  $ret .= defined('DEBUG') ? "\n" : '';
1355  $ret .= '<label id="bmlt_semantic_form_schema_select_label'.htmlspecialchars($this->_myJSName).'" for="bmlt_semantic_form_schema_select'.htmlspecialchars($this->_myJSName).'" class="bmlt_semantic_form_schema_select_label">'.$this->localize_string('schema_type_selector_label').'</label>';
1356  $ret .= defined('DEBUG') ? "\n" : '';
1357  $function_string = 'bmlt_semantic_js_object'.htmlspecialchars($this->_myJSName).'.refreshURI()';
1358  $ret .= '<select id="bmlt_semantic_form_schema_select'.htmlspecialchars($this->_myJSName).'" class="bmlt_semantic_form_schema_select" onchange="'.$function_string.'">';
1359  $ret .= defined('DEBUG') ? "\n" : '';
1360  $ret .= '<option value="GetSearchResults" selected="selected">'.$this->localize_string('schema_type_selector_results').'</option>';
1361  $ret .= '<option value="GetMeetingLocationInfo">'.$this->localize_string('schema_type_selector_location_info').'</option>';
1362  $ret .= '<option value="GetFieldKeys">'.$this->localize_string('schema_type_selector_field_keys').'</option>';
1363  $ret .= '<option value="GetFieldValues">'.$this->localize_string('schema_type_selector_field_values').'</option>';
1364  $ret .= '<option value="AdminPermissions">'.$this->localize_string('schema_type_selector_admin_permissions').'</option>';
1365  $ret .= '<option value="ChangeResponse">'.$this->localize_string('schema_type_selector_change_response').'</option>';
1366  $ret .= '<option value="DeletedMeeting">'.$this->localize_string('schema_type_selector_deleted_meeting').'</option>';
1367  $ret .= '<option value="FieldTemplates">'.$this->localize_string('schema_type_selector_field_templates').'</option>';
1368  $ret .= '<option value="GetChanges">'.$this->localize_string('schema_type_selector_changes').'</option>';
1369  $ret .= '<option value="GetFormats">'.$this->localize_string('schema_type_selector_formats').'</option>';
1370  $ret .= '<option value="GetLangs">'.$this->localize_string('schema_type_selector_langs').'</option>';
1371  $ret .= '<option value="GetServiceBodies">'.$this->localize_string('schema_type_selector_service_bodies').'</option>';
1372  $ret .= '<option value="HierServiceBodies">'.$this->localize_string('schema_type_selector_hier_service_bodies').'</option>';
1373  $ret .= '<option value="ServerInfo">'.$this->localize_string('schema_type_selector_hier_server_info').'</option>';
1374  $ret .= '<option value="GetCoverageArea">'.$this->localize_string('schema_type_selector_coverage_area').'</option>';
1375  $ret .= '<option value="UserInfo">'.$this->localize_string('schema_type_selector_get_user_info').'</option>';
1376  $ret .= defined('DEBUG') ? "\n" : '';
1377  $ret .= '</select>';
1378  $ret .= defined('DEBUG') ? "\n" : '';
1379  $ret .= '</fieldset>';
1380  $ret .= defined('DEBUG') ? "\n" : '';
1381 
1382  return $ret;
1383  }
1384 
1385  /**************************************************************/
1386  /** \brief
1387 
1388  \returns the HTML.
1389  */
1390  /**************************************************************/
1391  // phpcs:disable PSR1.Methods.CamelCapsMethodName.NotCamelCaps
1392  public function get_wizard_page_switcher_type_select_html()
1393  {
1394  // phpcs:enable PSR1.Methods.CamelCapsMethodName.NotCamelCaps
1395  $ret = '<label id="bmlt_semantic_form_switcher_type_select_label'.htmlspecialchars($this->_myJSName).'" for="bmlt_semantic_form_switcher_type_select'.htmlspecialchars($this->_myJSName).'" class="bmlt_semantic_form_switcher_type_select_label">'.$this->localize_string('switcher_type_selector_prompt').'</label>';
1396  $ret .= defined('DEBUG') ? "\n" : '';
1397  $ret .= '<select id="bmlt_semantic_form_switcher_type_select'.htmlspecialchars($this->_myJSName).'" class="bmlt_semantic_form_switcher_type_select">';
1398  $ret .= defined('DEBUG') ? "\n" : '';
1399  $ret .= '<option value="GetSearchResults" selected="selected">'.$this->localize_string('switcher_type_selector_results').'</option>';
1400  $ret .= '<option id="bmlt_semantic_form_switcher_type_select_formats_option'.htmlspecialchars($this->_myJSName).'" value="GetFormats">'.$this->localize_string('switcher_type_selector_formats').'</option>';
1401  $ret .= '<option id="bmlt_semantic_form_switcher_type_select_sb_option'.htmlspecialchars($this->_myJSName).'" value="GetServiceBodies">'.$this->localize_string('switcher_type_selector_sb').'</option>';
1402  $ret .= '<option id="bmlt_semantic_form_switcher_type_select_changes_option'.htmlspecialchars($this->_myJSName).'" value="GetChanges">'.$this->localize_string('switcher_type_selector_changes').'</option>';
1403  $ret .= '<option id="bmlt_semantic_form_switcher_type_select_fieldkey_option'.htmlspecialchars($this->_myJSName).'" value="GetFieldKeys">'.$this->localize_string('switcher_type_selector_field_keys').'</option>';
1404  $ret .= '<option id="bmlt_semantic_form_switcher_type_select_fieldval_option'.htmlspecialchars($this->_myJSName).'" value="GetFieldValues">'.$this->localize_string('switcher_type_selector_field_values').'</option>';
1405  $ret .= '<option id="bmlt_semantic_form_switcher_type_select_naws_option'.htmlspecialchars($this->_myJSName).'" value="GetNAWSDump">'.$this->localize_string('switcher_type_selector_naws').'</option>';
1406  $ret .= '<option id="bmlt_semantic_form_switcher_type_select_schema_option'.htmlspecialchars($this->_myJSName).'" disabled="disabled" value="XMLSchema">'.$this->localize_string('switcher_type_selector_schema').'</option>';
1407  $ret .= '<option id="bmlt_semantic_form_switcher_type_select_server_langs_option'.htmlspecialchars($this->_myJSName).'" disabled="disabled" value="GetLangs">'.$this->localize_string('switcher_type_selector_server_langs').'</option>';
1408 
1409  $this->get_server_version();
1410  $version = $this->_version;
1411  if ($version >= 2006020) {
1412  $ret .= '<option id="bmlt_semantic_form_switcher_type_select_server_info_option'.htmlspecialchars($this->_myJSName).'" value="GetServerInfo">'.$this->localize_string('switcher_type_selector_server_info').'</option>';
1413  }
1414 
1415  if ($version >= 2008016) {
1416  $ret .= '<option id="bmlt_semantic_form_switcher_type_select_coverage_area_option'.htmlspecialchars($this->_myJSName).'" value="GetCoverageArea">'.$this->localize_string('switcher_type_selector_coverage_area').'</option>';
1417  }
1418 
1419  $ret .= defined('DEBUG') ? "\n" : '';
1420  $ret .= '</select>';
1421  $ret .= defined('DEBUG') ? "\n" : '';
1422 
1423  return $ret;
1424  }
1425 }
$this _localization
Definition: en.inc.php:19
$uri
Definition: index.php:25
BMLTSemantic prototype handleBlockCheckboxChange
get_wizard_page_main_fieldset_html()
Outputs the HTML for the wizard page main fieldset.
get_wizard_page_html()
Outputs the HTML for the wizard page.
call_curl($in_uri, $in_post=true, &$http_status=null)
This is a function that returns the results of an HTTP call to a URI. It is a lot more secure than fi...
BMLTSemantic prototype handleWeekdayCheckbox
$ret
Definition: contact.php:226
static strip_script($in_filename)
Class function that strips all the BS from a JS or CSS file.
get_server_version()
Query the server for its version. This requires that the _bmltRootServerURI data member be valid...
var a
BMLTSemanticResult prototype formats_comparison_operator
BMLTSemantic prototype refreshURI
localize_string($in_string)
Localizes a string token.
__construct($inHttpVars)
Class constructor.
defined('BMLT_EXEC') or define('BMLT_EXEC'
Definition: index.php:3
static call_curl($in_uri, &$in_out_http_status=null)
Class function that calls out to a Web site, using cURL.
const DEBUG
Definition: index.php:22
ajax_handler()
Handles AJAX callbacks.