| 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&qcABC=1&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) . "&qcABC=1&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 |
|