PluginProbe
s2Member – Excellent for All Kinds of Memberships, Content Restriction Paywalls & Member Access Subscriptions / trunk
s2Member – Excellent for All Kinds of Memberships, Content Restriction Paywalls & Member Access Subscriptions vtrunk
260909 260829 260814 260805 110710 110731 110812 110815 110912 110913 110915 110926 110927 111002 111003 111011 111017 111029 111105 111206 111216 111220 120213 120219 120301 All 187 releases
s2member / src / includes / classes / utils-html.inc.php

utils-html.inc.php in s2Member – Excellent for All Kinds of Memberships, Content Restriction Paywalls & Member Access Subscriptions trunk, at src/includes/classes/utils-html.inc.php

97 lines 5.3 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 // @codingStandardsIgnoreFile
3 /**
4 * HTML utilities.
5 *
6 * Copyright: © 2009-2011
7 * {@link http://websharks-inc.com/ WebSharks, Inc.}
8 * (coded in the USA)
9 *
10 * Released under the terms of the GNU General Public License.
11 * You should have received a copy of the GNU General Public License,
12 * along with this software. In the main directory, see: /licensing/
13 * If not, see: {@link http://www.gnu.org/licenses/}.
14 *
15 * @package s2Member\Utilities
16 * @since 110720
17 */
18 if(!defined('WPINC')) // MUST have WordPress.
19 exit("Do not access this file directly.");
20
21 if (!class_exists ("c_ws_plugin__s2member_utils_html"))
22 {
23 /**
24 * HTML utilities.
25 *
26 * @package s2Member\Utilities
27 * @since 110720
28 */
29 class c_ws_plugin__s2member_utils_html
30 {
31 /**
32 * Returns a DOCTYPE tag along with the HEAD section and title tag.
33 *
34 * This method should NOT be called upon until
35 * {@link s2Member\API_Constants\c_ws_plugin__s2member_constants::constants()}
36 * has been processed. We need access to: ``WS_PLUGIN__S2MEMBER_API_CONSTANTS_MD5``.
37 *
38 * @package s2Member\Utilities
39 * @since 110720
40 *
41 * @param string $doctype_html_head_title Optional. The title of the HTML document being generated.
42 * @param string $doctype_html_head_action Optional. An action Hook to process during HEAD generation.
43 * @return string A DOCTYPE tag along with the HEAD section and title tag, configured by parameters.
44 */
45 public static function doctype_html_head ($doctype_html_head_title = FALSE, $doctype_html_head_action = FALSE)
46 {
47 $static_css = (!empty($GLOBALS['WS_PLUGIN__']['s2member']['o']['static_css'])) ? c_ws_plugin__s2member_utils_assets::ensure_static_assets('css') : array();
48 $static_js = (!empty($GLOBALS['WS_PLUGIN__']['s2member']['o']['static_js']) && function_exists('wp_add_inline_script')) ? c_ws_plugin__s2member_utils_assets::ensure_static_assets('js') : array();
49 $static_inline_js = (!empty($static_js['ok']) && !empty($static_js['assets']) && c_ws_plugin__s2member_utils_assets::static_js_text_delivery() === 'page') ? c_ws_plugin__s2member_utils_assets::static_js_inline_data($static_js['assets']) : '';
50 if(!empty($static_js['ok']) && !empty($static_js['assets']) && c_ws_plugin__s2member_utils_assets::static_js_text_delivery() === 'page' && $static_inline_js === '')
51 $static_js = array(); //260906.2049 Do not emit slot-based static JavaScript in standalone documents without its page-loaded text values.
52 //260906.2219 Static disabled keeps the selected lightweight loader; requested static delivery that fails uses full WordPress so compatibility hooks are not skipped.
53 $dynamic_css_url = c_ws_plugin__s2member_utils_assets::dynamic_asset_url(!empty($GLOBALS['WS_PLUGIN__']['s2member']['o']['static_css']) && (empty($static_css['ok']) || empty($static_css['assets'])));
54 $dynamic_js_url = c_ws_plugin__s2member_utils_assets::dynamic_asset_url(!empty($GLOBALS['WS_PLUGIN__']['s2member']['o']['static_js']) && (empty($static_js['ok']) || empty($static_js['assets'])));
55
56 ob_start (); // Start output buffering here so we can "return" the output from this utility.
57
58 echo '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">' . "\n";
59
60 echo '<html xmlns="http://www.w3.org/1999/xhtml">' . "\n";
61 echo '<head>' . "\n";
62
63 echo '<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />' . "\n";
64
65 if(!empty($static_css['ok']) && !empty($static_css['assets']))
66 {
67 foreach($static_css['assets'] as $asset)
68 echo '<link href="'.esc_attr($asset['url']).'" type="text/css" rel="stylesheet" media="all" />'."\n";
69 }
70 else
71 echo '<link href="' . esc_attr ($dynamic_css_url . "?ws_plugin__s2member_css=1&amp;qcABC=1&amp;ver=" . urlencode (c_ws_plugin__s2member_utilities::ver_checksum ())) . '" type="text/css" rel="stylesheet" media="all" />' . "\n";
72
73 echo '<script type="text/javascript" src="' . esc_attr (site_url ("/wp-includes/js/jquery/jquery.js?ver=" . urlencode (c_ws_plugin__s2member_utilities::ver_checksum ()))) . '"></script>' . "\n";
74
75 if(!empty($static_js['ok']) && !empty($static_js['assets']))
76 {
77 //260903.0453 This standalone frontend document cannot use WordPress's enqueue printer; emit the same page-specific globals immediately before the generated scripts.
78 echo '<script type="text/javascript">'.c_ws_plugin__s2member_css_js_in::current_user_js_globals(TRUE).(($static_inline_js !== '') ? "\n".$static_inline_js : '').'</script>'."\n";
79 foreach($static_js['assets'] as $asset)
80 echo '<script type="text/javascript" src="'.esc_attr($asset['url']).'"></script>'."\n";
81 }
82 else
83 echo '<script type="text/javascript" src="' . esc_attr ($dynamic_js_url . "?ws_plugin__s2member_js_w_globals=" . urlencode (WS_PLUGIN__S2MEMBER_API_CONSTANTS_MD5) . "&amp;qcABC=1&amp;ver=" . urlencode (c_ws_plugin__s2member_utilities::ver_checksum ())) . '"></script>' . "\n";
84
85 if ($doctype_html_head_title) // Add <title></title> tag?
86 echo '<title>' . $doctype_html_head_title . '</title>' . "\n";
87
88 if ($doctype_html_head_action) // Add content from Hook?
89 do_action($doctype_html_head_action, get_defined_vars ());
90
91 echo '</head>' . "\n";
92
93 return ob_get_clean ();
94 }
95 }
96 }
97