tiki  21.2
About: Tiki Wiki is a Groupware/CMS (Content Management System) solution that has features like Wikis, Forums, Blogs, Articles, Image Gallery, Map Server, Link Directory, Multilingual Support, Bug Tracker, RSS Feeds etc. Latest release 21 with Long Term Support (LTS).
  Fossies Dox: tiki-21.2.tar.xz  ("unofficial" and yet experimental doxygen-generated source code documentation)  

tiki-setup.php
Go to the documentation of this file.
1 <?php
11 // $Id$
12 
13 // die if called directly.
15 
20 global $prefs, $tikilib;
21 
22 ini_set('session.cookie_httponly', 1);
23 
24 if (strpos($_SERVER['SCRIPT_NAME'], basename(__FILE__)) !== false) {
25  header('location: index.php');
26  exit;
27 }
28 if (version_compare(PHP_VERSION, '7.2.0', '<')) {
29  if (php_sapi_name() != 'cli') { // if not running a command line version of php, show requirements
30  header('location: tiki-install.php');
31  exit;
32  }
33  // This is command-line. No 'location' command make sense here. Let admins access what works and deal with the rest.
34  echo "Warning: Tiki21 and above expects PHP 7.2.0 and above. You are running " . phpversion() . " at your own risk\n";
35 }
36 
37 // Ensure that we clean PROXY headers
38 if (! empty($_SERVER['HTTP_PROXY'])) {
39  $_SERVER['HTTP_PROXY_RENAMED'] = $_SERVER['HTTP_PROXY'];
40  unset($_SERVER['HTTP_PROXY']);
41  putenv('HTTP_PROXY');
42  if (!getenv('PHP_PEAR_HTTP_PROXY')) {
43  putenv('PHP_PEAR_HTTP_PROXY=http://127.0.0.1'); // fake proxy setting to avoid PEAR to use HTTP_PROXY
44  }
45 }
46 
47 require_once 'lib/setup/third_party.php';
48 // Enable Versioning
49 include_once('lib/setup/twversion.class.php');
50 $TWV = new TWVersion();
54 $area = 'tiki';
55 $crumbs = [];
56 require_once('lib/setup/tikisetup.class.php');
57 require_once('lib/setup/timer.class.php');
59 $tiki_timer->start();
60 require_once('tiki-setup_base.php');
61 
62 // Attempt setting locales. This code is just a start, locales should be set per-user.
63 // Also, different operating systems use different locale strings. en_US.utf8 is valid on POSIX systems, maybe not on Windows, feel free to add alternative locale strings.
64 setlocale(LC_ALL, ''); // Attempt changing the locale to the system default.
65 // Since the system default may not be UTF-8 but we may be dealing with multilingual content, attempt ensuring the collations are intelligent by forcing a general UTF-8 collation.
66 // This will have no effect if the locale string is not valid or if the designated locale is not generated.
67 
68 foreach (['en_US.utf8'] as $UnicodeLocale) {
69  if (setlocale(LC_COLLATE, $UnicodeLocale)) {
70  break;
71  }
72 }
73 
74 if ($prefs['feature_tikitests'] == 'y') {
75  require_once('tiki_tests/tikitestslib.php');
76 }
77 $crumbs[] = new Breadcrumb($prefs['browsertitle'], '', $prefs['tikiIndex']);
78 if ($prefs['site_closed'] == 'y') {
79  require_once('lib/setup/site_closed.php');
80 }
81 require_once('lib/setup/error_reporting.php');
82 if ($prefs['use_load_threshold'] == 'y') {
83  require_once('lib/setup/load_threshold.php');
84 }
85 require_once('lib/setup/sections.php');
88 
90 if (isset($_SERVER['HTTP_HOST'])) {
91  $host = $_SERVER['HTTP_HOST'];
92 } else {
93  $host = "";
94 }
95 if (isset($_SERVER['REQUEST_URI'])) {
96  $requestUri = $_SERVER['REQUEST_URI'];
97 } else {
98  $requestUri = "";
99 }
100 
101 if ($prefs['tiki_domain_prefix'] == 'strip' && substr($host, 0, 4) == 'www.') {
102  $domain_map[$host] = substr($host, 4);
103 } elseif ($prefs['tiki_domain_prefix'] == 'force' && substr($host, 0, 4) != 'www.') {
104  $domain_map[$host] = 'www.' . $host;
105 }
106 
107 if (strpos($prefs['tiki_domain_redirects'], ',') !== false) {
108  foreach (explode("\n", $prefs['tiki_domain_redirects']) as $row) {
109  list($old, $new) = array_map('trim', explode(',', $row, 2));
110  $domain_map[$old] = $new;
111  }
112  unset($old);
113  unset($new);
114 }
115 
116 if (isset($domain_map[$host]) && ! defined('TIKI_CONSOLE')) {
117  $prefix = $tikilib->httpPrefix();
118  $prefix = str_replace("://$host", "://{$domain_map[$host]}", $prefix);
119  $url = $prefix . $requestUri;
120 
121  $access->redirect($url, null, 301);
122  exit;
123 }
124 
125 if (isset($_REQUEST['PHPSESSID'])) {
126  $tikilib->setSessionId($_REQUEST['PHPSESSID']);
127 } elseif (function_exists('session_id')) {
128  $tikilib->setSessionId(session_id());
129 }
130 
131 // Session info needs to be kept up to date if pref login_multiple_forbidden is set
132 if ($prefs['login_multiple_forbidden'] == 'y') {
133  $tikilib->update_session();
134 }
135 
136 require_once('lib/setup/cookies.php');
137 
138 if ($prefs['mobile_feature'] === 'y') {
139  require_once('lib/setup/mobile.php'); // needs to be before js_detect but after cookies
140 } else {
141  $prefs['mobile_mode'] = '';
142 }
143 
144 require_once('lib/setup/user_prefs.php');
145 require_once('lib/setup/language.php');
146 require_once('lib/setup/wiki.php');
147 require_once('lib/setup/javascript.php');
148 
149 require_once('lib/setup/theme.php');
150 
151 /* Cookie consent setup, has to be after the JS decision and wiki setup */
152 
154 if ($prefs['cookie_consent_feature'] === 'y' && strpos($_SERVER['PHP_SELF'], 'tiki-cookie-jar.php') === false) {
155  if (! empty($_REQUEST['cookie_consent_checkbox']) || $prefs['site_closed'] === 'y') {
156  // js disabled
157  setCookieSection($prefs['cookie_consent_name'], 'y'); // set both real cookie and tiki_cookie_jar
158  $feature_no_cookie = false;
159  setCookieSection($prefs['cookie_consent_name'], 'y');
160  }
161  $cookie_consent = getCookie($prefs['cookie_consent_name']);
162  if (empty($cookie_consent)) {
163  if ($prefs['javascript_enabled'] !== 'y') {
164  $prefs['cookie_consent_mode'] = '';
165  } else {
166  $headerlib->add_js('jqueryTiki.no_cookie = true; jqueryTiki.cookie_consent_alert = "' . addslashes($prefs['cookie_consent_alert']) . '";');
167  }
168  foreach ($_COOKIE as $k => $v) {
169  if (strpos($k, session_name()) === false) {
170  setcookie($k, '', time() - 3600); // unset any previously existing cookies except the session
171  }
172  }
173  $cookie_consent_html = $smarty->fetch('cookie_consent.tpl');
174  } else {
175  // check if it was a client-side cookie and turn into a server-side one to get longer than 7 days expiry
176  if ($cookie_consent !== 'y') {
177  setcookie($prefs['cookie_consent_name'], 'y', $cookie_consent / 1000);
178  }
179  $feature_no_cookie = false;
180  }
181 }
182 $smarty->assign('cookie_consent_html', $cookie_consent_html);
183 
184 if ($prefs['feature_polls'] == 'y') {
185  require_once('lib/setup/polls.php');
186 }
187 if ($prefs['feature_mailin'] == 'y') {
188  require_once('lib/setup/mailin.php');
189 }
190 require_once('lib/setup/tikiIndex.php');
191 if ($prefs['useGroupHome'] == 'y') {
192  require_once('lib/setup/default_homepage.php');
193 }
194 if ($prefs['user_force_avatar_upload'] === 'y') {
195  require_once('lib/setup/avatar_force_upload.php');
196 }
197 if ($prefs['tracker_force_fill'] == 'y') {
198  require_once('lib/setup/tracker_force_fill.php');
199 }
200 // change $prefs['tikiIndex'] if feature_sefurl is enabled (e.g. tiki-index.php?page=HomePage becomes HomePage)
201 if ($prefs['feature_sefurl'] == 'y' && ! defined('TIKI_CONSOLE')) {
202  //TODO: need a better way to know which is the type of the tikiIndex URL (wiki page, blog, file gallery etc)
203  //TODO: implement support for types other than wiki page and blog
204  if ($prefs['tikiIndex'] == 'tiki-index.php' && $prefs['wikiHomePage']) {
205  $wikilib = TikiLib::lib('wiki');
206  $prefs['tikiIndex'] = $wikilib->sefurl($userlib->best_multilingual_page($prefs['wikiHomePage']));
207  } elseif (substr($prefs['tikiIndex'], 0, strlen('tiki-view_blog.php')) == 'tiki-view_blog.php') {
208  include_once('tiki-sefurl.php');
209  $prefs['tikiIndex'] = filter_out_sefurl($prefs['tikiIndex'], 'blog');
210  }
211 }
212 
213 if (! empty($varcheck_errors)) {
214  if (isset($_SERVER['HTTP_X_REQUESTED_WITH'])
215  && $_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest') {
216  Feedback::error($varcheck_errors, true);
217  die;
218  } else {
219  $varcheck_errors['tpl'] = 'error_raw.tpl';
220  Feedback::errorPage($varcheck_errors);
221  }
222 }
223 if ($prefs['feature_usermenu'] == 'y') {
224  require_once('lib/setup/usermenu.php');
225 }
226 if ($prefs['feature_live_support'] == 'y') {
227  require_once('lib/setup/live_support.php');
228 }
229 if ($prefs['feature_referer_stats'] == 'y' || $prefs['feature_stats'] == 'y') {
230  require_once('lib/setup/stats.php');
231 }
232 require_once('lib/setup/dynamic_variables.php');
233 require_once('lib/setup/output_compression.php');
234 if ($prefs['feature_debug_console'] == 'y') {
235  // Include debugger class declaration. So use loggin facility in php files become much easier :)
236  include_once('lib/debug/debugger.php');
237 }
238 if ($prefs['feature_integrator'] == 'y') {
239  require_once('lib/setup/integrator.php');
240 }
241 if (isset($_REQUEST['comzone'])) {
242  require_once('lib/setup/comments_zone.php');
243 }
244 if ($prefs['feature_lastup'] == 'y') {
245  require_once('lib/setup/last_update.php');
246 }
247 if (! empty($_SESSION['interactive_translation_mode']) && ($_SESSION['interactive_translation_mode'] == 'on')) {
248  $cachelib->empty_cache('templates_c');
249 }
250 if ($prefs['feature_freetags'] == 'y') {
251  require_once('lib/setup/freetags.php');
252 }
253 if ($prefs['feature_categories'] == 'y') {
254  require_once('lib/setup/categories.php');
255  if ($prefs['feature_areas'] == 'y' && $prefs['categories_used_in_tpl'] == 'y') {
256  $areaslib = TikiLib::lib('areas');
257  $areaslib->HandleObjectCategories($objectCategoryIdsNoJail);
258  }
259 }
260 if ($prefs['feature_userlevels'] == 'y') {
261  require_once('lib/setup/userlevels.php');
262 }
263 if ($prefs['auth_method'] == 'openid') {
264  require_once('lib/setup/openid.php');
265 }
266 if ($prefs['feature_wysiwyg'] == 'y') {
267  if (! isset($_SESSION['wysiwyg'])) {
268  $_SESSION['wysiwyg'] = 'n';
269  }
270  $smarty->assign_by_ref('wysiwyg', $_SESSION['wysiwyg']);
271 } else {
272  $smarty->assign('wysiwyg', 'n');
273 }
274 
275 if ($prefs['pwa_feature'] == 'y') { //pwa test propose, pages to cache
276  $headerlib->add_jsfile(VendorHelper::getAvailableVendorPath('dexie', 'npm-asset/dexie/dist/dexie.min.js'), true);
277  $pages = ['trackers' => [], 'wiki' => []];
278 
279  if(isset($user)){
280  $trackerlib = TikiLib::lib('trk');
281 
282  $trackers = $trackerlib->list_trackers();
283  foreach ($trackers['data'] as $tracker) {
284  $items = $trackerlib->get_all_tracker_items($tracker['trackerId']);
285  $pages['trackers'] = array_merge($pages['trackers'], array_map(function ($item) use ($tracker) {
286  return ['id' => $tracker['trackerId'], 'itemId' => $item];
287  }, $items));
288  }
289 
290  $pagesAll = $tikilib->get_all_pages();
291  $pages['wiki'] = array_map(function ($m) {
292  return str_replace(' ', '-', $m['pageName']);
293  }, $pagesAll);
294  }
295 
296  $smarty->assign('pagespwa', json_encode($pages));
297 }
298 
299 
300 if ($prefs['feature_antibot'] == 'y' && empty($user)) {
301  if ($prefs['recaptcha_enabled'] === 'y') {
302  if ($prefs['recaptcha_version'] == '2') {
303  if (! empty($prefs['language'])) {
304  $headerlib->add_jsfile_cdn("$url_scheme://www.google.com/recaptcha/api.js?hl=" . $prefs['language']);
305  } else {
306  $headerlib->add_jsfile_cdn("$url_scheme://www.google.com/recaptcha/api.js");
307  }
308  } else {
309  $headerlib->add_jsfile_cdn("$url_scheme://www.google.com/recaptcha/api.js?render=".$prefs['recaptcha_pubkey']);
310  }
311  }
312  $captchalib = TikiLib::lib('captcha');
313  $smarty->assign('captchalib', $captchalib);
314 }
315 
316 if ($prefs['feature_credits'] == 'y') {
317  require_once('lib/setup/credits.php');
318 }
319 
320 if ($prefs['https_external_links_for_users'] == 'y') {
321  $base_url_canonical_default = $base_url_https;
322 } else {
323  $base_url_canonical_default = $base_url_http;
324 }
325 
326 if (! empty($prefs['feature_canonical_domain'])) {
327  $base_url_canonical = $prefs['feature_canonical_domain'];
328 } else {
329  $base_url_canonical = $base_url_canonical_default;
330 }
331 // Since it's easier to be error-resistant than train users, ensure base_url_canonical ends with '/'
332 if (substr($base_url_canonical, -1) != '/') {
333  $base_url_canonical .= '/';
334 }
335 
336 $smarty->assign_by_ref('phpErrors', $phpErrors);
337 $smarty->assign_by_ref('num_queries', $num_queries);
338 $smarty->assign_by_ref('elapsed_in_db', $elapsed_in_db);
339 $smarty->assign_by_ref('crumbs', $crumbs);
340 $smarty->assign('lock', false);
341 $smarty->assign('edit_page', 'n');
342 $smarty->assign('forum_mode', 'n');
343 $smarty->assign('wiki_extras', 'n');
344 $smarty->assign('tikipath', $tikipath);
345 $smarty->assign('tikiroot', $tikiroot);
346 $smarty->assign('url_scheme', $url_scheme);
347 $smarty->assign('url_host', $url_host);
348 $smarty->assign('url_port', $url_port);
349 $smarty->assign('url_path', $url_path);
350 $dir_level = (! empty($dir_level)) ? $dir_level : '';
351 $smarty->assign('dir_level', $dir_level);
352 $smarty->assign('base_host', $base_host);
353 $smarty->assign('base_url', $base_url);
354 $smarty->assign('base_url_http', $base_url_http);
355 $smarty->assign('base_url_https', $base_url_https);
356 $smarty->assign('base_url_canonical', $base_url_canonical);
357 $smarty->assign('base_url_canonical_default', $base_url_canonical_default);
358 $smarty->assign('show_stay_in_ssl_mode', $show_stay_in_ssl_mode);
359 $smarty->assign('stay_in_ssl_mode', $stay_in_ssl_mode);
360 $smarty->assign('tiki_version', $TWV->version);
361 $smarty->assign('tiki_branch', $TWV->branch);
362 $smarty->assign('tiki_star', $TWV->getStar());
363 $smarty->assign('tiki_uses_svn', $TWV->svn);
364 
365 $smarty->assign('symbols', TikiLib::symbols());
366 
367 // Used by TikiAccessLib::redirect()
368 if (isset($_GET['msg'])) {
369  Feedback::add(['mes' => htmlspecialchars($_GET['msg']), 'type' => htmlspecialchars($_GET['msgtype'])]);
370 } elseif (isset($_SESSION['msg'])) {
371  Feedback::add(['mes' => $_SESSION['msg'], 'type' => $_SESSION['msgtype']]);
372  unset($_SESSION['msg']);
373  unset($_SESSION['msgtype']);
374 }
375 
376 require_once 'lib/setup/events.php';
377 
378 if ($prefs['rating_advanced'] == 'y' && $prefs['rating_recalculation'] == 'randomload') {
379  $ratinglib = TikiLib::lib('rating');
380  $ratinglib->attempt_refresh();
381 }
382 
383 $headerlib->add_jsfile('lib/tiki-js.js');
384 
385 // using jquery-migrate-1.3.0.js plugin for tiki 11, still required in tiki 12 LTS to support some 3rd party plugins
386 
387 if (isset($prefs['javascript_cdn']) && $prefs['javascript_cdn'] == 'google') {
388  $headerlib->add_jsfile_cdn("$url_scheme://ajax.googleapis.com/ajax/libs/jquery/$headerlib->jquery_version/jquery.min.js");
389  // goggle is not hosting migrate so load from local
390  $headerlib->add_jsfile_dependancy("vendor_bundled/vendor/components/jquery-migrate/jquery-migrate.min.js", true);
391 } elseif (isset($prefs['javascript_cdn']) && $prefs['javascript_cdn'] == 'jquery') {
392  $headerlib->add_jsfile_cdn("$url_scheme://code.jquery.com/jquery-$headerlib->jquery_version.min.js");
393  $headerlib->add_jsfile_cdn("$url_scheme://code.jquery.com/jquery-migrate-$headerlib->jquerymigrate_version.min.js");
394 } else {
395  if (isset($prefs['tiki_minify_javascript']) && $prefs['tiki_minify_javascript'] === 'y') {
396  $headerlib->add_jsfile_dependancy("vendor_bundled/vendor/components/jquery/jquery.min.js", true);
397  $headerlib->add_jsfile_dependancy("vendor_bundled/vendor/components/jquery-migrate/jquery-migrate.min.js", true);
398  } else {
399  $headerlib->add_jsfile_dependancy("vendor_bundled/vendor/components/jquery/jquery.js", true);
400  $headerlib->add_jsfile_dependancy("vendor_bundled/vendor/components/jquery-migrate/jquery-migrate.js", true);
401  }
402 }
403 
404 if (isset($prefs['fgal_elfinder_feature']) && $prefs['fgal_elfinder_feature'] === 'y') {
405  $str = $prefs['tiki_minify_javascript'] === 'y' ? 'min' : 'full';
406  // elfinder is sensible to js compression - problem is inside elfinder
407  // see http://stackoverflow.com/questions/11174170/js-invalid-left-hand-side-expression-in-postfix-operation for more general details
408  $headerlib->add_jsfile('vendor_bundled/vendor/studio-42/elfinder/js/elfinder.' . $str . '.js', true)
409  ->add_cssfile('vendor_bundled/vendor/studio-42/elfinder/css/elfinder.' . $str . '.css')
410  ->add_jsfile('lib/jquery_tiki/elfinder/tiki-elfinder.js');
411 
412  $elFinderLang = str_replace(['cn', 'pt-br'], ['zh_CN', 'pt_BR'], $language);
413 
414  if (file_exists('vendor_bundled/vendor/studio-42/elfinder/js/i18n/elfinder.' . $elFinderLang . '.js')) {
415  $headerlib->add_jsfile('vendor_bundled/vendor/studio-42/elfinder/js/i18n/elfinder.' . $elFinderLang . '.js');
416  }
417 }
418 
419 $headerlib->add_jsfile('lib/jquery_tiki/tiki-jquery.js');
420 
421 if (isset($_REQUEST['geo_zoomlevel_to_found_location'])) {
422  $zoomToFoundLocation = $_REQUEST['geo_zoomlevel_to_found_location'];
423 } else {
424  $zoomToFoundLocation = isset($prefs['geo_zoomlevel_to_found_location']) ? $prefs['geo_zoomlevel_to_found_location'] : 'street';
425 }
426 $headerlib->add_js('var zoomToFoundLocation = "' . addslashes($zoomToFoundLocation) . '";'); // Set the zoom option after searching for a location
427 
428 if ($prefs['geo_enabled'] === 'y') {
429  if ($prefs['geo_openlayers_version'] === 'ol3') {
430  $headerlib->add_jsfile('lib/jquery_tiki/tiki-maps-ol3.js');
431  } else {
432  $headerlib->add_jsfile('lib/jquery_tiki/tiki-maps.js');
433  $headerlib->add_cssfile('lib/openlayers/theme/default/style.css');
434  }
435 }
436 $headerlib->add_jsfile('vendor_bundled/vendor/jquery-plugins/jquery-json/src/jquery.json.js');
437 
438 if ($prefs['feature_jquery_zoom'] === 'y') {
439  $headerlib->add_jsfile('vendor_bundled/vendor/jquery-plugins/zoom/jquery.zoom.js')
440  ->add_css('
441 .img_zoom {
442  display:inline-block;
443 }
444 .img_zoom:after {
445  content:"";
446  display:block;
447  width:33px;
448  height:33px;
449  position:absolute;
450  top:0;
451  right:0;
452  background:url(vendor_bundled/vendor/jquery-plugins/zoom/icon.png);
453 }
454 .img_zoom img {
455  display:block;
456 }
457 ');
458 }
459 
460 if ($prefs['feature_syntax_highlighter'] == 'y') {
461  //add codemirror stuff
462  $headerlib
463  ->add_cssfile('vendor_bundled/vendor/codemirror/codemirror/lib/codemirror.css')
464  ->add_jsfile_dependancy('vendor_bundled/vendor/codemirror/codemirror/lib/codemirror.js')
465  ->add_jsfile('vendor_bundled/vendor/codemirror/codemirror/addon/search/searchcursor.js')
466  ->add_jsfile('vendor_bundled/vendor/codemirror/codemirror/addon/mode/overlay.js')
467  //add tiki stuff
468  ->add_cssfile('themes/base_files/feature_css/codemirror_tiki.css')
469  ->add_jsfile('lib/codemirror_tiki/codemirror_tiki.js');
470 
471  require_once("lib/codemirror_tiki/tiki_codemirror.php");
473 }
474 
475 if ($prefs['feature_jquery_carousel'] == 'y') {
476  $headerlib->add_jsfile('vendor_bundled/vendor/jquery-plugins/infinitecarousel/jquery.infinitecarousel3.js');
477 }
478 
479 if ($prefs['feature_ajax'] === 'y') {
480  $headerlib->add_jsfile('lib/jquery_tiki/tiki-confirm.js');
481  $headerlib->add_jsfile('lib/ajax/autosave.js'); // Note that this file is needed even if ajax_autosave is off otherwise wysiwyg won't load.
482 }
483 
484 // $url_scheme is 'http' or 'https' depending on request type condsidering already a reverse proxy
485 // $https_mode is true / false depending on request type condsidering already a reverse proxy
486 if ($prefs['feature_jquery_ui'] == 'y') {
487  if (isset($prefs['javascript_cdn']) && $prefs['javascript_cdn'] == 'google') {
488  $headerlib->add_jsfile_cdn("$url_scheme://ajax.googleapis.com/ajax/libs/jqueryui/$headerlib->jqueryui_version/jquery-ui.min.js");
489  } elseif (isset($prefs['javascript_cdn']) && $prefs['javascript_cdn'] == 'jquery') {
490  $headerlib->add_jsfile_cdn("$url_scheme://code.jquery.com/ui/$headerlib->jqueryui_version/jquery-ui.min.js");
491  } else {
492  if ($prefs['tiki_minify_javascript'] === 'y') {
493  $headerlib->add_jsfile_dependancy("vendor_bundled/vendor/components/jqueryui/jquery-ui.min.js", true);
494  } else {
495  $headerlib->add_jsfile_dependancy("vendor_bundled/vendor/components/jqueryui/jquery-ui.js");
496  }
497  }
498 
499  // restore jquery-ui buttons function, thanks to http://stackoverflow.com/a/23428433/2459703
500  $headerlib->add_js('
501 var bootstrapButton;
502 if (typeof $.fn.button.noConflict === "function") {
503  bootstrapButton = $.fn.button.noConflict() // return $.fn.button to previously assigned value
504  $.fn.bootstrapBtn = bootstrapButton // give $().bootstrapBtn the Bootstrap functionality
505 }
506 ');
507 
508  if ($prefs['feature_jquery_ui_theme'] !== 'none') {
509  // cdn for css not working - this is the only css from a cdn anyway - so use local version
510  //if ( isset($prefs['javascript_cdn']) && $prefs['javascript_cdn'] == 'jquery' ) {
511  // $headerlib->add_cssfile("$url_scheme://code.jquery.com/ui/$headerlib->jqueryui_version/themes/{$prefs['feature_jquery_ui_theme']}/jquery-ui.css");
512  $headerlib->add_cssfile('vendor_bundled/vendor/components/jqueryui/themes/' . $prefs['feature_jquery_ui_theme'] . '/jquery-ui.css');
513  // } else {
514  // $headerlib->add_cssfile('vendor_bundled/vendor/jquery/jquery-ui-themes/themes/' . $prefs['feature_jquery_ui_theme'] . '/jquery-ui.css');
515  // }
516  }
517 
518  if ($prefs['feature_jquery_autocomplete'] == 'y') {
519  $headerlib->add_css(
520  '.ui-autocomplete-loading { background: white url("img/spinner.gif") right center no-repeat; }'
521  );
522  }
523  if ($prefs['jquery_ui_chosen'] == 'y') {
524  $headerlib->add_jsfile('vendor_bundled/vendor/harvesthq/chosen/chosen.jquery.min.js', true);
525  }
526  $headerlib->add_jsfile('vendor_bundled/vendor/jquery/jquery-timepicker-addon/dist/jquery-ui-timepicker-addon.js');
527  $headerlib->add_cssfile('vendor_bundled/vendor/jquery/jquery-timepicker-addon/dist/jquery-ui-timepicker-addon.css');
528 }
529 if ($prefs['jquery_fitvidjs'] == 'y') {
530  $headerlib->add_jsfile('vendor_bundled/vendor/jquery-plugins/fitvidjs/jquery.fitvids.js')
531  ->add_jq_onready('$("article").fitVids();'); // apply fitvid to any video in the middle section
532 }
533 if ($prefs['feature_jquery_superfish'] == 'y') {
534  $headerlib->add_jsfile('vendor_bundled/vendor/jquery-plugins/superfish/dist/js/superfish.js');
535  $headerlib->add_jsfile('vendor_bundled/vendor/jquery-plugins/superfish/dist/js/supersubs.js');
536 }
537 if ($prefs['feature_jquery_tooltips'] === 'y' || $prefs['feature_jquery_superfish'] === 'y') {
538  $headerlib->add_jsfile('vendor_bundled/vendor/jquery-plugins/superfish/dist/js/hoverIntent.js');
539 }
540 if ($prefs['jquery_smartmenus_enable'] == 'y') {
541  $headerlib->add_jsfile('vendor_bundled/vendor/drmonty/smartmenus/js/jquery.smartmenus.js');
542  $headerlib->add_jsfile('vendor_bundled/vendor/drmonty/smartmenus/js/jquery.smartmenus.bootstrap-4.js');
543  $headerlib->add_cssfile('vendor_bundled/vendor/drmonty/smartmenus/css/sm-core-css.css');
544  $headerlib->add_cssfile('vendor_bundled/vendor/drmonty/smartmenus/css/jquery.smartmenus.bootstrap-4.css');
545  if (! empty($prefs['jquery_smartmenus_mode'])) {
546  $headerlib->add_cssfile(
547  'vendor_bundled/vendor/drmonty/smartmenus/css/sm-' . $prefs['jquery_smartmenus_mode'] . '.css'
548  );
549  }
550  $headerlib->add_js('$(function() {
551  $("ul.navbanav").smartmenus();
552 });');
553 }
554 if ($prefs['feature_jquery_reflection'] == 'y') {
555  $headerlib->add_jsfile('vendor_bundled/vendor/jquery-plugins/reflection-jquery/js/reflection.js');
556 }
557 if ($prefs['feature_jquery_media'] == 'y') {
558  $headerlib->add_jsfile('vendor_bundled/vendor/jquery-plugins/media/jquery.media.js');
559 }
560 if ($prefs['feature_jquery_tablesorter'] == 'y') {
561  $headerlib->add_jsfile('vendor_bundled/vendor/mottie/tablesorter/js/jquery.tablesorter.combined.js');
562  $headerlib->add_jsfile('vendor_bundled/vendor/mottie/tablesorter/js/parsers/parser-input-select.js');
563  $headerlib->add_jsfile('vendor_bundled/vendor/mottie/tablesorter/js/widgets/widget-columnSelector.js');
564  $headerlib->add_jsfile('vendor_bundled/vendor/mottie/tablesorter/js/widgets/widget-filter-formatter-jui.js');
565  $headerlib->add_jsfile('vendor_bundled/vendor/mottie/tablesorter/js/widgets/widget-grouping.js');
566  $headerlib->add_jsfile('vendor_bundled/vendor/mottie/tablesorter/js/widgets/widget-math.js');
567  $headerlib->add_jsfile('vendor_bundled/vendor/mottie/tablesorter/js/widgets/widget-pager.js');
568  //currently only working when ajax is not used
569  $headerlib->add_jsfile('vendor_bundled/vendor/mottie/tablesorter/js/widgets/widget-sort2Hash.js');
570  $headerlib->add_jsfile('lib/jquery_tiki/tablesorter.js');
571 }
572 
573 if ($prefs['feature_jquery_tagcanvas'] == 'y') {
574  $headerlib->add_jsfile('vendor_bundled/vendor/jquery-plugins/tagcanvas/jquery.tagcanvas.js');
575 }
576 
577 if ($prefs['feature_shadowbox'] == 'y') {
578  $headerlib->add_jsfile('vendor_bundled/vendor/jquery-plugins/colorbox/jquery.colorbox.js');
579  $headerlib->add_cssfile('vendor_bundled/vendor/jquery-plugins/colorbox/' . $prefs['jquery_colorbox_theme'] . '/colorbox.css');
580 }
581 
582 if ($prefs['wikiplugin_flash'] == 'y') {
583  $headerlib->add_jsfile('vendor_bundled/vendor/bower-asset/swfobject/swfobject/swfobject.js', true);
584 }
585 if ($prefs['jquery_timeago'] === 'y') {
586  $headerlib->add_jsfile('vendor_bundled/vendor/rmm5t/jquery-timeago/jquery.timeago.js');
587  $language_short = substr($prefs['language'], 0, 2);
588  $timeago_locale = "vendor_bundled/vendor/rmm5t/jquery-timeago/locales/jquery.timeago.{$language_short}.js";
589  if (is_readable($timeago_locale)) {
590  $headerlib->add_jsfile($timeago_locale); // TODO handle zh-CN and zh-TW
591  }
592  $headerlib->add_jq_onready('$("time.timeago").timeago(); jQuery.timeago.settings.allowFuture = true;');
593 }
594 
595 if ($prefs['jquery_jqdoublescroll'] == 'y') {
596  $headerlib
597  ->add_jsfile('vendor_bundled/vendor/avianey/jqdoublescroll/jquery.doubleScroll.js')
598  ->add_jq_onready('$(".table-responsive").doubleScroll({resetOnWindowResize: true});');
599 }
600 
601 if ($prefs['feature_jquery_validation'] == 'y') {
602  $headerlib->add_jsfile('vendor_bundled/vendor/jquery-plugins/jquery-validation/dist/jquery.validate.js');
603  $headerlib->add_jsfile('lib/validators/validator_tiki.js');
604 }
605 
606 if ($prefs['tiki_prefix_css'] == 'y') {
607  $headerlib->add_jsfile('vendor_bundled/vendor/npm-asset/prefixfree/prefixfree.js');
608 }
609 
610 // note: jquery.async.js load a copy of jquery
611 // Used by treetable and a few more places
612 $headerlib->add_jsfile('vendor_bundled/vendor/jquery-plugins/async/jquery.async.js');
613 
614 $headerlib->add_jsfile('vendor_bundled/vendor/jquery-plugins/treetable/jquery.treetable.js');
615 $headerlib->add_cssfile('vendor_bundled/vendor/jquery-plugins/treetable/css/jquery.treetable.css');
616 
617 $headerlib->add_jsfile('vendor_bundled/vendor/cwspear/bootstrap-hover-dropdown/bootstrap-hover-dropdown.js');
618 
619 if ($prefs['feature_equal_height_rows_js'] == 'y') {
620  $headerlib->add_jsfile("vendor_bundled/vendor/Sam152/Javascript-Equal-Height-Responsive-Rows/grids.min.js");
621 }
622 
623 if ($prefs['vuejs_enable'] === 'y' && $prefs['vuejs_always_load'] === 'y') {
624  $headerlib->add_jsfile_cdn("vendor_bundled/vendor/npm-asset/vue/dist/{$prefs['vuejs_build_mode']}");
625 }
626 
627 if (empty($user) && $prefs['feature_antibot'] == 'y') {
628  $headerlib->add_jsfile_late('lib/captcha/captchalib.js');
629 }
630 
631 if (! empty($prefs['header_custom_css'])) {
632  $headerlib->add_css($prefs['header_custom_css']);
633 }
634 
635 if (! empty($prefs['header_custom_js'])) {
636  $headerlib->add_js($prefs['header_custom_js']);
637 }
638 
639 if ($prefs['feature_file_galleries'] == 'y') {
640  $headerlib->add_jsfile('lib/jquery_tiki/files.js');
641 }
642 
643 if ($prefs['feature_trackers'] == 'y') {
644  $headerlib->add_jsfile('lib/jquery_tiki/tiki-trackers.js');
645 
646  if ($prefs['feed_tracker'] === 'y') {
647  $opts = TikiLib::lib('trk')->get_trackers_options(null, 'publishRSS', 'y');
648  foreach ($opts as & $o) {
649  $o = $o['trackerId'];
650  }
651  $trackers = TikiLib::lib('trk')->list_trackers();
652 
653  $rss_trackers = [];
654  foreach ($trackers['data'] as $trk) {
655  if (in_array($trk['trackerId'], $opts)) {
656  $rss_trackers[] = [
657  'trackerId' => $trk['trackerId'],
658  'name' => $trk['name'],
659  ];
660  }
661  }
662  TikiLib::lib('smarty')->assign('rsslist_trackers', $rss_trackers);
663  }
664 }
665 
666 if ($prefs['feature_draw'] == 'y') {
667  //svg-edit/empbedapi.js neededs to be external - why?
668  $headerlib->add_jsfile("vendor_bundled/vendor/svg-edit/svg-edit/embedapi.js");
669  $headerlib->add_jsfile("lib/svg-edit_tiki/draw.js");
670  $headerlib->add_cssfile("themes/base_files/feature_css/svg-edit-draw.css");
671 }
672 
673 if ($prefs['geo_always_load_openlayers'] == 'y') {
674  $headerlib->add_map();
675 }
676 
677 if ($prefs['workspace_ui'] == 'y') {
678  $headerlib->add_jsfile('lib/jquery_tiki/tiki-workspace-ui.js');
679 }
680 
681 if ($prefs['feature_sefurl'] != 'y') {
682  $headerlib->add_js(
683  '$.service = function (controller, action, query) {
684  if (! query) {
685  query = {};
686  }
687  query.controller = controller;
688 
689  if (action) {
690  query.action = action;
691  }
692 
693  return "tiki-ajax_services.php?" + $.buildParams(query);
694  };'
695  );
696 }
697 
698 if ($prefs['feature_friends'] == 'y' || $prefs['monitor_enabled'] == 'y') {
699  $headerlib->add_jsfile('lib/jquery_tiki/social.js');
700 }
701 
702 if ($prefs['ajax_inline_edit'] == 'y') {
703  $headerlib->add_jsfile('lib/jquery_tiki/inline_edit.js');
704 }
705 
706 if ($prefs['mustread_enabled'] == 'y') {
707  $headerlib->add_jsfile('lib/jquery_tiki/mustread.js');
708 }
709 
710 if ($prefs['feature_tasks'] == 'y') {
711  $headerlib->add_jsfile('lib/jquery_tiki/tiki-tasks.js');
712 }
713 
714 if ($prefs['feature_inline_comments'] === 'y' && $prefs['comments_inline_annotator'] === 'y') {
715  if (empty($object)) {
716  $object = current_object();
717  }
718  $commentController = new Services_Comment_Controller();
719 
720  if ($commentController->isEnabled($object['type'], $object['object']) &&
721  $commentController->canView($object['type'], $object['object'])) {
722  $canPost = $commentController->canPost($object['type'], $object['object']);
723  $objectIdentifier = urlencode($object['type']) . ':' . urlencode($object['object']); // spoof a URI from type and id
724 
725  $headerlib
726  ->add_jsfile('vendor_bundled/vendor/openannotation/annotator/annotator-full.min.js')
727  ->add_cssfile('vendor_bundled/vendor/openannotation/annotator/annotator.min.css')
728  ->add_jq_onready('var annotatorContent = $("#top").annotator({readOnly: ' . ($canPost ? 'false' : 'true') . '});
729 annotatorContent.annotator("addPlugin", "Store", {
730  prefix: "tiki-ajax_services.php?controller=annotation&action=",
731 
732  urls: {
733  create: "create",
734  update: "update&threadId=:id",
735  destroy: "destroy&threadId=:id",
736  search: "search"
737  },
738 
739  annotationData: {
740  "uri": "' . $objectIdentifier . '"
741  },
742 
743  loadFromSearch: {
744  "limit": 20,
745  "uri": "' . $objectIdentifier . '"
746  },
747 
748  emulateJSON: true, // send the data in a form request so we can get it later
749  emulateHTTP: true // tiki services need GET or POST
750 
751 });
752 annotatorContent.annotator("addPlugin", "Permissions", {
753  user: "' . $user . '",
754  showViewPermissionsCheckbox: false, // TODO for private comments
755  showEditPermissionsCheckbox: false,
756  userAuthorize: function(action, annotation, user) {
757  return annotation.permissions[action];
758  }
759 });
760 ');
761  }
762 }
763 
764 $headerlib->add_jsfile('lib/jquery_tiki/pluginedit.js');
765 
766 if (session_id()) {
767  if ($prefs['tiki_cachecontrol_session']) {
768  header('Cache-Control: ' . $prefs['tiki_cachecontrol_session']);
769  }
770 } else {
771  if ($prefs['tiki_cachecontrol_nosession']) {
772  header('Cache-Control: ' . $prefs['tiki_cachecontrol_nosession']);
773  }
774 }
775 
776 if (! empty($prefs['access_control_allow_origin']) && ! empty($_SERVER['HTTP_ORIGIN']) && $base_host !== $_SERVER['HTTP_ORIGIN']) {
777  $http_origin = $_SERVER['HTTP_ORIGIN'];
778 
779  if (in_array($http_origin, preg_split('/[\s,]+/', $prefs['access_control_allow_origin']))) {
780  header("Access-Control-Allow-Origin: $http_origin");
781  }
782 }
783 
784 if (isset($token_error)) {
785  $smarty->assign('token_error', $token_error);
786  $smarty->display('error.tpl');
787  die;
788 }
789 
790 require_once('lib/setup/plugins_actions.php');
791 
792 if ($tiki_p_admin == 'y') {
793  $headerlib->add_jsfile_late('lib/jquery_tiki/tiki-admin.js');
794 }
795 
796 if ($prefs['wikiplugin_addtocart'] == 'y') {
797  $headerlib->add_jsfile('lib/payment/cartlib.js');
798 }
799 
801 // ******************************************************************** //
802 // ** IMPORTANT NOTE: ** //
803 // ** USE THE GLOBAL VARIABLE BELOW TO CONTROL THE VERSION OF EMAIL ** //
804 // ** WHICH IS USED ** //
805 // ** $prefs['openpgp_gpg_pgpmimemail'] == 'y' ** //
806 // ** USE TIKI OpenPGP Enabled PGP/MIME-standard mail ** //
807 // ** $prefs['openpgp_gpg_pgpmimemail'] == 'n' ** //
808 // ** USE TIKI normal mail functionality ** //
809 // ** ** //
810 // ** SETTING THIS PREFERENCES VARIABLE TO "y" NEED PROPER ** //
811 // ** CONFIGURATION OF gnupg AND RELATED KEYRING WITH PROPERLY ** //
812 // ** CONFIGURED TIKI-SENDER KEYPAIR (PRIVATE/PUBLIC) AND ALL USER ** //
813 // ** ACCOUNT-RELATED PUBLIC KEYS ** //
814 // ** ** //
815 // ** DO NOT SWITCH THIS VARIABLE TO TRUE FOR THIS EXPERIMENTAL ** //
816 // ** FULLY PGP/MIME-ENCRYPTION COMPLIANT EMAIL FUNCTIONALITY, IF ** //
817 // ** YOU ARE **NOT ABSOLUTE SURE HOW TO CONFIGURE IT**! ** //
818 // ** ** //
819 // ** ONCE PROPERLY CONFIGURED, SUCH 100% OPAQUE FUNCTIONALITY ** //
820 // ** DELIVERS ROBUST END-TO-END PRIVACY WITH HIGH DEGREE OF TESTED ** //
821 // ** ROBUSTNESS FOR THE FOLLOWING MAIL TRAFFIC: ** //
822 // ** ** //
823 // ** - all webmail-based messaging from messu-compose.php ** //
824 // ** - all admin notifications ** //
825 // ** - all newsletters ** //
826 // ** ** //
827 // ** PLEASE NOTE THAT ALL SITE ACCOUNTS **MUST** HAVE PROPERLY ** //
828 // ** CONFIGURED OpenPGP-COMPLIANT PUBLIC-KEY IN THE SYSTEM's ** //
829 // ** KEYRING, SO IT IS NOT THEN WISE/POSSIBLE TO ALLOW ANONYMOUS ** //
830 // ** SUBSCRIPTIONS TO NEWSLETTERS ETC, OR USE NOT FULLY PGP/MIME ** //
831 // ** READY ACCOUNTS IN SUCH SYSTEM. ** //
832 // ** ** //
833 // ** IT IS ASSUMED, THAT IF AND WHEN YOU TURN SUCH PGP/MIME ON ** //
834 // ** YOU ARE FULLY AWARE OF THE REQUIREMENTS AND CONSEQUENCES. ** //
835 // ** ** //
836 if ($prefs['openpgp_gpg_pgpmimemail'] == 'y') {
837  // hollmeer 2012-11-03:
838  // TURNED ON openPGP support from a lib based class
839  require_once('lib/openpgp/openpgplib.php');
840 }
841 // ** ** //
842 // ******************************************************************** //
844 
845 //adding pdf creation javascript, used to integrate plugins like tablesorter, trackerfilter with mpdf.
846 if ($prefs['print_pdf_from_url'] != 'none') {
847  $headerlib->add_jsfile('lib/jquery_tiki/pdf.js');
848  $headerlib->add_jsfile('vendor_bundled/vendor/npm-asset/html2canvas/dist/html2canvas.min.js', true);
849  $headerlib->add_jsfile('vendor_bundled/vendor/mrrio/jspdf/jspdf.min.js', true);
850  $headerlib->add_jsfile('lib/jquery_tiki/fullcalendar_to_pdf.js');
851 }
852 
853 if (file_exists('_custom/lib/setup/custom.php')) {
854  include_once('_custom/lib/setup/custom.php');
855 }
856 
857 // any furher $headerlib->add_js() call not using rank = 'external' will be put into rank 'late'
858 // this should separate the overall JS from page specific JS
859 $headerlib->forceJsRankLate();
860 
861 if ($prefs['conditions_enabled'] == 'y') {
863  $servicelib = TikiLib::lib('service');
864  $broker = $servicelib->getBroker();
865  $broker->process('user_conditions', 'age_validation', $jitRequest);
866  exit;
867  }
869  $servicelib = TikiLib::lib('service');
870  $broker = $servicelib->getBroker();
871  $broker->process('user_conditions', 'approval', $jitRequest);
872  exit;
873  }
874 }
$base_host
if(basename($_SERVER['SCRIPT_NAME'])===basename(__FILE__)) global $base_host
Definition: absolute_urls.php:12
$prefs
global $prefs
Definition: tiki-setup.php:20
$base_url_https
if(basename($_SERVER['SCRIPT_NAME'])===basename(__FILE__)) global $base_url_https
Definition: absolute_urls.php:12
Feedback\error
static error($feedback, $sendHeaders=false)
Definition: Feedback.php:38
$base_url
if(strpos($_SERVER['SCRIPT_NAME'], basename(__FILE__)) !==false) global $base_url
Definition: include_connect.php:14
$area
$area
Definition: tiki-setup.php:54
$_SESSION
$_SESSION["install-logged-$multi"]
Definition: tiki-installer.php:735
$tiki_p_admin
global $tiki_p_admin
Definition: include_search.php:104
TikiLib\lib
static lib($name)
Definition: tikilib.php:53
$url_host
if(basename($_SERVER['SCRIPT_NAME'])===basename(__FILE__)) global $url_host
Definition: absolute_urls.php:12
filter_out_sefurl
filter_out_sefurl($tpl_output, $type=null, $title='', $with_next=null, $with_title='y')
Definition: tiki-sefurl.php:31
$user
if(strpos($_SERVER['SCRIPT_NAME'], basename(__FILE__)) !=false) global $user
Definition: avatar_force_upload.php:7
$tikilib
global $tikilib
Definition: tiki-setup.php:20
$_COOKIE
$_COOKIE
Definition: tiki-setup_base.php:676
$server_load
$server_load
Definition: tiki-setup.php:53
$_GET
$_GET
Definition: tiki-installer.php:76
elseif
if(isset($_GET['msg'])) elseif(isset( $_SESSION[ 'msg']))
Definition: tiki-setup.php:370
$_REQUEST
$_REQUEST["fgal_podcast_dir"]
Definition: include_fgal.php:25
php
timer
Definition: timer.class.php:9
$headerlib
$headerlib
Definition: tiki-setup.php:87
Breadcrumb
Definition: breadcrumblib.php:20
$dir_level
$dir_level
Definition: tiki-setup.php:350
$jitRequest
if(strpos($_SERVER['SCRIPT_NAME'], basename(__FILE__)) !=false) global $jitRequest
Definition: editmode.php:12
$opts
if(PEAR::isError($options)) $opts
Definition: pearcmd.php:77
$base_url_http
if(basename($_SERVER['SCRIPT_NAME'])===basename(__FILE__)) global $base_url_http
Definition: absolute_urls.php:12
$tikipath
if(strpos($_SERVER['SCRIPT_NAME'], basename(__FILE__)) !==false) global $tikipath
Definition: include_packages.php:13
setCookieSection
setCookieSection($name, $value, $section='', $expire=null, $path='', $domain='', $secure='')
Definition: cookies.php:70
$cookie_consent_html
$cookie_consent_html
Definition: tiki-setup.php:153
$url_path
if(basename($_SERVER['SCRIPT_NAME'])===basename(__FILE__)) global $url_path
Definition: absolute_urls.php:12
$smarty
$smarty
Definition: include_connect.php:17
$items
$items
Definition: messu-archive.php:146
$_SERVER
$_SERVER
Definition: tiki-installer.php:705
$pages
$pages
Definition: tiki-admin_newsletter_subscriptions.php:342
$access
$access
Definition: include_rating.php:15
$show_stay_in_ssl_mode
$show_stay_in_ssl_mode
Definition: absolute_urls.php:176
$captchalib
if(! $prefs['feature_antibot']=='y') $captchalib
Definition: antibot.php:16
Services_User_ConditionsController\requiresApproval
static requiresApproval($user)
Definition: ConditionsController.php:10
$num_queries
$num_queries
Definition: tiki-setup.php:51
$cachelib
$cachelib
Definition: tiki-admin_system.php:17
$url
$url
Definition: include_socialnetworks.php:15
$host
$host
Definition: server.php:37
exit
exit
Definition: reindex_file.php:61
Feedback\errorPage
static errorPage($feedback)
Definition: Feedback.php:54
$url_scheme
if(basename($_SERVER['SCRIPT_NAME'])===basename(__FILE__)) global $url_scheme
Definition: absolute_urls.php:12
$trackerlib
$trackerlib
Definition: tracker_force_fill.php:37
$wikilib
if(strpos($_SERVER['SCRIPT_NAME'], basename(__FILE__)) !==false) $wikilib
Definition: include_wikiatt.php:14
$row
$row
Definition: migrateto20.php:332
$prefix
$prefix
Definition: fileopen.php:31
createCodemirrorModes
createCodemirrorModes()
Definition: tiki_codemirror.php:12
$url_port
if(basename($_SERVER['SCRIPT_NAME'])===basename(__FILE__)) global $url_port
Definition: absolute_urls.php:12
current_object
if(! empty($section)) if(! empty($section_class)) elseif(! empty($section)) current_object()
Definition: sections.php:44
$tiki_timer
$tiki_timer
Definition: tiki-setup.php:58
$domain_map
$domain_map
Definition: tiki-setup.php:89
$ratinglib
$ratinglib
Definition: include_rating.php:14
$tracker
$tracker
Definition: config-scanner.php:61
Tiki\Package\VendorHelper
Definition: VendorHelper.php:15
Services_User_ConditionsController\hasRequiredAge
static hasRequiredAge($user)
Definition: ConditionsController.php:195
$trackers
$trackers
Definition: tiki-list_trackers.php:45
Feedback\add
static add($feedback, $sendHeaders=false)
Definition: Feedback.php:145
getCookie
getCookie($name, $section=null, $default=null)
Definition: cookies.php:35
$TWV
$TWV
Definition: tiki-setup.php:50
$item
$item
Definition: tracker_force_fill.php:38
$userlib
$userlib
Definition: include_connect.php:15
$old
$old
Definition: rename-config.php:25
GuzzleHttp\json_encode
json_encode($value, $options=0, $depth=512)
Definition: functions.php:324
TikiLib\symbols
static symbols()
Definition: tikilib.php:99
die
die
Definition: about.php:68
$elapsed_in_db
$elapsed_in_db
Definition: tiki-setup.php:52
Services_Comment_Controller
Definition: Controller.php:14
$crumbs
$crumbs
Definition: tiki-setup.php:55
$new
$new
Definition: generate-ph5p-patch.php:11
TWVersion
Definition: twversion.class.php:11
$tikiroot
if(basename($_SERVER['SCRIPT_NAME'])===basename(__FILE__)) global $tikiroot
Definition: absolute_urls.php:12