-
Notifications
You must be signed in to change notification settings - Fork 4
/
e_header.php
123 lines (97 loc) · 2.34 KB
/
e_header.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
<?php
/**
* @file
* Class instantiation to prepare JavaScript configurations and include css/js
* files to page header.
*/
if(!defined('e107_INIT'))
{
exit;
}
// Load required main class of plugin.
e107_require_once(e_PLUGIN . 'nodejs/nodejs.main.php');
/**
* Class nodejs_e_header.
*/
class nodejs_e_header
{
/**
* Store forum plugin preferences.
*
* @var array
*/
private $plugPrefs = array();
/**
* Constructor.
*/
function __construct()
{
// Plugin preferences.
$this->plugPrefs = e107::getPlugConfig('nodejs')->getPref();
self::include_components();
}
/**
* Include necessary CSS and JS files
*/
function include_components()
{
if(self::include_components_check())
{
$nodejs_config = nodejs_get_config();
if(isset($nodejs_config['serviceKey']))
{
unset($nodejs_config['serviceKey']);
}
e107::js('settings', array('nodejs' => $nodejs_config));
$socket_io_config = self::get_socketio_js_config($nodejs_config);
e107::js('footer', $socket_io_config['path'], null, 2);
e107::js('footer', '{e_PLUGIN}nodejs/js/nodejs.js', 'jquery', 4);
}
}
/**
* Check if we should add the node.js js to the page.
*
* We check the url, and whether or not the admin has closed down access to
* auth users only.
*/
function include_components_check()
{
// TODO: Provide ability to exclude paths.
$valid_page = true;
// TODO: Provide ability to exclude anonymous users.
if($authenticated_users_only = false)
{
$valid_user = USERID > 0;
}
else
{
$valid_user = true;
}
return $valid_page && $valid_user;
}
/**
* Return the path to the socket.io client js.
*/
function get_socketio_js_config($nodejs_config)
{
$socket_io_config = array(
'path' => false,
);
$cdn = varset($this->plugPrefs['nodejs_socket_cdn'], 1);
if((int) $cdn === 1)
{
$socket_io_config['path'] = 'https://cdn.socket.io/socket.io-1.4.5.js';
}
elseif(!$socket_io_config['path'])
{
$socket_io_config['path'] = $nodejs_config['client']['scheme'] . '://';
$socket_io_config['path'] .= $nodejs_config['client']['host'];
$socket_io_config['path'] .= ':' . $nodejs_config['client']['port'];
$socket_io_config['path'] .= $nodejs_config['resource'];
$socket_io_config['path'] .= '/socket.io.js';
}
return $socket_io_config;
}
}
// Class instantiation.
new nodejs_e_header;