aboutsummaryrefslogtreecommitdiff
path: root/bootstrap/comments/api/count-link.php
blob: f3da76881417bfc28b61218f2b611e45e29855d4 (plain)
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
<?php namespace HashOver;

// Copyright (C) 2018 Jacob Barkdull
// This file is part of HashOver.
//
// HashOver is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// HashOver is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with HashOver.  If not, see <http://www.gnu.org/licenses/>.


// Change to the HashOver directory
chdir (realpath ('../'));

// Setup HashOver for JavaScript
require ('backend/javascript-setup.php');

try {
	// Instantiate general setup class
	$setup = new Setup (array (
		'mode' => 'javascript',
		'context' => 'api'
	));

	// Throw exception if the "Latest Comments" API is disabled
	if ($setup->apiStatus ('count-link') === 'disabled') {
		throw new \Exception ('This API is not enabled.');
	}

	// Instantiate HashOver statistics class
	$statistics = new Statistics ('javascript');

	// Start execution timer
	$statistics->executionStart ();

	// Instantiate JavaScript build class
	$javascript = new JavaScriptBuild ('api/frontends/count-link');

	// Register initial constructor
	$javascript->registerFile ('constructor.js');

	// Register comment count AJAX request getter method
	$javascript->registerFile ('getcommentcount.js');

	// Change to standard frontend directory
	$javascript->changeDirectory ('frontend');

	// Register HashOver script tag getter method
	$javascript->registerFile ('script.js');

	// Register backend path setter
	$javascript->registerFile ('backendpath.js');

	// Register HashOver ready state detection method
	$javascript->registerFile ('onready.js');

	// Register element creation methods
	$javascript->registerFile ('elements.js');

	// Register AJAX-related methods
	$javascript->registerFile ('ajax.js');

	// Change back to count link frontend directory
	$javascript->changeDirectory ('api/frontends/count-link');

	// Register automatic instantiation code
	$javascript->registerFile ('instantiate.js', array (
		'include' => !isset ($_GET['nodefault'])
	));

	// JavaScript build process output
	$output = $javascript->build (
		$setup->minifiesJavascript,
		$setup->minifyLevel
	);

	// Display JavaScript build process output
	echo $output, PHP_EOL;

	// Display statistics
	echo $statistics->executionEnd ();

} catch (\Exception $error) {
	$misc = new Misc ('javascript');
	$message = $error->getMessage ();
	$misc->displayError ($message);
}