Jeremy D commited on 2023-01-15 14:18:59
Showing 59 changed files, with 803 additions and 66 deletions.
* Restore Build Tools * Bad action * No sub modules * Change the year
... | ... |
@@ -0,0 +1,34 @@ |
1 |
+module.exports = { |
|
2 |
+ 'env': { |
|
3 |
+ 'browser': true, |
|
4 |
+ 'es2021': true, |
|
5 |
+ 'jquery': true |
|
6 |
+ }, |
|
7 |
+ 'extends': 'eslint:recommended', |
|
8 |
+ 'parserOptions': { |
|
9 |
+ 'ecmaVersion': 12, |
|
10 |
+ 'sourceType': 'module' |
|
11 |
+ }, |
|
12 |
+ 'rules': { |
|
13 |
+ 'indent': [ |
|
14 |
+ 'error', |
|
15 |
+ 'tab', |
|
16 |
+ {"SwitchCase": 1} |
|
17 |
+ ], |
|
18 |
+ 'linebreak-style': [ |
|
19 |
+ 'error', |
|
20 |
+ 'unix' |
|
21 |
+ ], |
|
22 |
+ 'quotes': [ |
|
23 |
+ 'error', |
|
24 |
+ 'single' |
|
25 |
+ ], |
|
26 |
+ 'no-unused-vars': [ |
|
27 |
+ 'error', |
|
28 |
+ { |
|
29 |
+ 'vars': 'local', |
|
30 |
+ 'args' : 'none' |
|
31 |
+ } |
|
32 |
+ ] |
|
33 |
+ } |
|
34 |
+}; |
... | ... |
@@ -0,0 +1,128 @@ |
1 |
+<?php |
|
2 |
+/************************************************************** |
|
3 |
+* Simple Desk Project - www.simpledesk.net * |
|
4 |
+*************************************************************** |
|
5 |
+* An advanced help desk modification built on SMF * |
|
6 |
+*************************************************************** |
|
7 |
+* * |
|
8 |
+* * Copyright 2023 - SimpleDesk.net * |
|
9 |
+* * |
|
10 |
+* This file and its contents are subject to the license * |
|
11 |
+* included with this distribution, license.txt, which * |
|
12 |
+* states that this software is New BSD Licensed. * |
|
13 |
+* Any questions, please contact SimpleDesk.net * |
|
14 |
+* * |
|
15 |
+*************************************************************** |
|
16 |
+* File Info: build_release_package * |
|
17 |
+**************************************************************/ |
|
18 |
+ |
|
19 |
+// The path such as /usr/bin/git |
|
20 |
+$git_path = '/usr/bin/git'; |
|
21 |
+ |
|
22 |
+// The path to tar & zip |
|
23 |
+$tar_path = '/usr/bin/tar'; |
|
24 |
+$zip_path = '/usr/bin/zip'; |
|
25 |
+ |
|
26 |
+/***************************************/ |
|
27 |
+/***** END OF CONFIGURATION CHANGES ****/ |
|
28 |
+ |
|
29 |
+global $args; |
|
30 |
+parseArgs(); |
|
31 |
+ |
|
32 |
+// Debugging? |
|
33 |
+if (isset($_SERVER['USER'], $args) && !empty($args['debug'])) |
|
34 |
+ error_reporting(E_ALL); |
|
35 |
+ |
|
36 |
+if (empty($args) || empty($args['src']) || empty($args['dst'])) |
|
37 |
+ die('missing critical settings'); |
|
38 |
+ |
|
39 |
+// Get in the trunk. |
|
40 |
+chdir($args['src']); |
|
41 |
+ |
|
42 |
+if (!empty($args['skip-pull'])) |
|
43 |
+{ |
|
44 |
+ $out = shell_exec($git_path . ' pull'); |
|
45 |
+ |
|
46 |
+ // No comprenda senior. |
|
47 |
+ if (strpos($out, 'From git://github.com') === false && strpos($out, 'Already up-to-date.') === false) |
|
48 |
+ die('GIT build returned an unexpected output: ' . $out); |
|
49 |
+} |
|
50 |
+ |
|
51 |
+// Try to find our version. |
|
52 |
+$pkg_file = file_get_contents('package-info.xml'); |
|
53 |
+preg_match('~<version>([^<]+)</version>~i', $pkg_file, $v); |
|
54 |
+ |
|
55 |
+if (empty($v)) |
|
56 |
+ die('Unknown Version'); |
|
57 |
+ |
|
58 |
+$version = strtr( |
|
59 |
+ ucFirst(trim($v[1])), |
|
60 |
+ array( |
|
61 |
+ ' ' => '-', |
|
62 |
+ 'Rc' => 'RC', |
|
63 |
+ ) |
|
64 |
+); |
|
65 |
+ |
|
66 |
+$package_file_base = 'SimpleDesk-' . $version; |
|
67 |
+ |
|
68 |
+// Build baby, build! |
|
69 |
+ |
|
70 |
+if (file_exists($args['dst'] . '/SimpleDesk_' . $version . '.tgz')) |
|
71 |
+ unlink($args['dst'] . '/SimpleDesk_' . $version . '.tgz'); |
|
72 |
+shell_exec($tar_path . ' --no-xattrs --no-acls --no-mac-metadata --no-fflags --exclude=\'.git\' --exclude=\'install-testdata.php\' --exclude=\'error_log\' --exclude=\'.gitignore\' --exclude=\'.gitattributes\' --exclude=\'.travis.yml\' --exclude=\'buildTools\' --exclude=\'node_modules\' --exclude=\'.DS_Store\' -czf ' . $args['dst'] . '/' . $package_file_base . '.tgz *'); |
|
73 |
+ |
|
74 |
+// Zip it, zip it good. |
|
75 |
+if (file_exists($args['dst'] . '/SimpleDesk_' . $version . '.zip')) |
|
76 |
+ unlink($args['dst'] . '/SimpleDesk_' . $version . '.zip'); |
|
77 |
+shell_exec($zip_path . ' --exclude=\'.git\' --exclude=\'install-testdata.php\' --exclude=\'error_log\' --exclude=\'.gitignore\' --exclude=\'.gitattributes\' --exclude=\'.travis.yml\' --exclude=\'buildTools/*\' --exclude=\'node_modules/*\' --exclude=\'*' . '/.DS_Store\' -1 ' . $args['dst'] . '/' . $package_file_base . '.zip -r *'); |
|
78 |
+ |
|
79 |
+// Undo the damage we did to the package file |
|
80 |
+shell_exec($git_path . ' checkout -- package-info.xml'); |
|
81 |
+ |
|
82 |
+// FINALLY, we are done. |
|
83 |
+exit; |
|
84 |
+ |
|
85 |
+function parseArgs() |
|
86 |
+{ |
|
87 |
+ global $args; |
|
88 |
+ |
|
89 |
+ if (!isset($_SERVER['argv'])) |
|
90 |
+ $_SERVER['argv'] = array(); |
|
91 |
+ |
|
92 |
+ // If its empty, force help. |
|
93 |
+ if (empty($_SERVER['argv'][1])) |
|
94 |
+ $_SERVER['argv'][1] = '--help'; |
|
95 |
+ |
|
96 |
+ // Lets get the path_to and path_from |
|
97 |
+ foreach ($_SERVER['argv'] as $i => $arg) |
|
98 |
+ { |
|
99 |
+ // Trim spaces. |
|
100 |
+ $arg = trim($arg); |
|
101 |
+ |
|
102 |
+ if (preg_match('~^--src=(.+)$~', $arg, $match) != 0) |
|
103 |
+ $args['src'] = substr($match[1], -1) == '/' ? substr($match[1], 0, -1) : $match[1]; |
|
104 |
+ elseif (preg_match('~^--dst=(.+)$~', $arg, $match) != 0) |
|
105 |
+ $args['dst'] = substr($match[1], -1) == '/' ? substr($match[1], 0, -1) : $match[1]; |
|
106 |
+ elseif ($arg == '--debug') |
|
107 |
+ $args['debug'] = 1; |
|
108 |
+ elseif ($arg == '--help') |
|
109 |
+ { |
|
110 |
+ echo 'Build Tool |
|
111 |
+Usage: /path/to/php ' . realpath(__FILE__) . ' -- [OPTION]... |
|
112 |
+ |
|
113 |
+ --src Path to SD (' . realpath($_SERVER['PWD']) . '). |
|
114 |
+ --dst Output directory for files (' . realpath($_SERVER['PWD'] . '/..') . ') |
|
115 |
+ --debug Output debugging information.'; |
|
116 |
+ die; |
|
117 |
+ } |
|
118 |
+ |
|
119 |
+ if (empty($args['src'])) |
|
120 |
+ $args['src'] = realpath($_SERVER['PWD']); |
|
121 |
+ if (empty($args['dst'])) |
|
122 |
+ $args['dst'] = realpath($args['src'] . '/..'); |
|
123 |
+ |
|
124 |
+ // We have extra params. |
|
125 |
+ if (preg_match('~^--(.+)=(.+)$~', $arg, $match) != 0 && !array_key_exists($match[1], $_POST)) |
|
126 |
+ $_POST[$match[1]] = $match[2]; |
|
127 |
+ } |
|
128 |
+} |
|
0 | 129 |
\ No newline at end of file |
... | ... |
@@ -0,0 +1,51 @@ |
1 |
+<?php |
|
2 |
+/************************************************************** |
|
3 |
+* Simple Desk Project - www.simpledesk.net * |
|
4 |
+*************************************************************** |
|
5 |
+* An advanced help desk modification built on SMF * |
|
6 |
+*************************************************************** |
|
7 |
+* * |
|
8 |
+* * Copyright 2023 - SimpleDesk.net * |
|
9 |
+* * |
|
10 |
+* This file and its contents are subject to the license * |
|
11 |
+* included with this distribution, license.txt, which * |
|
12 |
+* states that this software is New BSD Licensed. * |
|
13 |
+* Any questions, please contact SimpleDesk.net * |
|
14 |
+* * |
|
15 |
+*************************************************************** |
|
16 |
+* SimpleDesk Version: 2.1.0 * |
|
17 |
+* File Info: check-eof-master.php * |
|
18 |
+**************************************************************/ |
|
19 |
+ |
|
20 |
+// Stuff we will ignore. |
|
21 |
+$ignoreFiles = array( |
|
22 |
+ '\.github/', |
|
23 |
+ '/buildTools/', |
|
24 |
+); |
|
25 |
+ |
|
26 |
+$curDir = '.'; |
|
27 |
+if (isset($_SERVER['argv'], $_SERVER['argv'][1])) |
|
28 |
+ $curDir = $_SERVER['argv'][1]; |
|
29 |
+ |
|
30 |
+$foundBad = false; |
|
31 |
+foreach (new RecursiveIteratorIterator(new RecursiveDirectoryIterator($curDir, FilesystemIterator::UNIX_PATHS)) as $currentFile => $fileInfo) |
|
32 |
+{ |
|
33 |
+ // Only check PHP |
|
34 |
+ if ($fileInfo->getExtension() !== 'php') |
|
35 |
+ continue; |
|
36 |
+ |
|
37 |
+ foreach ($ignoreFiles as $if) |
|
38 |
+ if (preg_match('~' . $if . '~i', $currentFile)) |
|
39 |
+ continue 2; |
|
40 |
+ |
|
41 |
+ $result = trim(shell_exec('php .github/scripts/check-eof.php ' . $currentFile . ' 2>&1')); |
|
42 |
+ |
|
43 |
+ if (!preg_match('~Error:([^$]+)~', $result)) |
|
44 |
+ continue; |
|
45 |
+ |
|
46 |
+ $foundBad = true; |
|
47 |
+ fwrite(STDERR, $result . "\n"); |
|
48 |
+} |
|
49 |
+ |
|
50 |
+if (!empty($foundBad)) |
|
51 |
+ exit(1); |
|
0 | 52 |
\ No newline at end of file |
... | ... |
@@ -0,0 +1,69 @@ |
1 |
+<?php |
|
2 |
+/************************************************************** |
|
3 |
+* Simple Desk Project - www.simpledesk.net * |
|
4 |
+*************************************************************** |
|
5 |
+* An advanced help desk modification built on SMF * |
|
6 |
+*************************************************************** |
|
7 |
+* * |
|
8 |
+* * Copyright 2023 - SimpleDesk.net * |
|
9 |
+* * |
|
10 |
+* This file and its contents are subject to the license * |
|
11 |
+* included with this distribution, license.txt, which * |
|
12 |
+* states that this software is New BSD Licensed. * |
|
13 |
+* Any questions, please contact SimpleDesk.net * |
|
14 |
+* * |
|
15 |
+*************************************************************** |
|
16 |
+* SimpleDesk Version: 2.1.0 * |
|
17 |
+* File Info: check-eof.php * |
|
18 |
+**************************************************************/ |
|
19 |
+ |
|
20 |
+// Stuff we will ignore. |
|
21 |
+$ignoreFiles = array( |
|
22 |
+ '\.github/', |
|
23 |
+ '\.github/scripts/', |
|
24 |
+); |
|
25 |
+ |
|
26 |
+// No file? Thats bad. |
|
27 |
+if (!isset($_SERVER['argv'], $_SERVER['argv'][1])) |
|
28 |
+ fatalError('Error: No File specified' . "\n"); |
|
29 |
+ |
|
30 |
+// The file has to exist. |
|
31 |
+$currentFile = $_SERVER['argv'][1]; |
|
32 |
+if (!file_exists($currentFile)) |
|
33 |
+ fatalError('Error: File does not exist' . "\n"); |
|
34 |
+ |
|
35 |
+// Is this ignored? |
|
36 |
+foreach ($ignoreFiles as $if) |
|
37 |
+ if (preg_match('~' . $if . '~i', $currentFile)) |
|
38 |
+ die; |
|
39 |
+ |
|
40 |
+// Less efficent than opening a file with fopen, but we want to be sure to get the right end of the file. file_get_contents |
|
41 |
+$file = fopen($currentFile, 'r'); |
|
42 |
+ |
|
43 |
+// Error? |
|
44 |
+if ($file === false) |
|
45 |
+ fatalError('Error: Unable to open file ' . $currentFile . "\n"); |
|
46 |
+ |
|
47 |
+// Seek the end minus some bytes. |
|
48 |
+fseek($file, -100, SEEK_END); |
|
49 |
+$contents = fread($file, 100); |
|
50 |
+ |
|
51 |
+// There is some white space here. |
|
52 |
+if (preg_match('~}\s+$~', $contents, $matches)) |
|
53 |
+ fatalError('Error: End of File contains extra spaces in ' . $currentFile . "\n"); |
|
54 |
+// It exists! Leave. |
|
55 |
+elseif (preg_match('~}$~', $contents, $matches)) |
|
56 |
+ die(); |
|
57 |
+ |
|
58 |
+// There is some white space here. |
|
59 |
+if (preg_match('~\';\s+$~', $contents, $matches)) |
|
60 |
+ fatalError('Error: End of File Strings contains extra spaces in ' . $currentFile . "\n"); |
|
61 |
+// It exists! Leave. |
|
62 |
+elseif (preg_match('~\';$~', $contents, $matches)) |
|
63 |
+ die(); |
|
64 |
+ |
|
65 |
+function fatalError($msg) |
|
66 |
+{ |
|
67 |
+ fwrite(STDERR, $msg); |
|
68 |
+ die; |
|
69 |
+} |
|
0 | 70 |
\ No newline at end of file |
... | ... |
@@ -0,0 +1,51 @@ |
1 |
+<?php |
|
2 |
+/************************************************************** |
|
3 |
+* Simple Desk Project - www.simpledesk.net * |
|
4 |
+*************************************************************** |
|
5 |
+* An advanced help desk modification built on SMF * |
|
6 |
+*************************************************************** |
|
7 |
+* * |
|
8 |
+* * Copyright 2023 - SimpleDesk.net * |
|
9 |
+* * |
|
10 |
+* This file and its contents are subject to the license * |
|
11 |
+* included with this distribution, license.txt, which * |
|
12 |
+* states that this software is New BSD Licensed. * |
|
13 |
+* Any questions, please contact SimpleDesk.net * |
|
14 |
+* * |
|
15 |
+*************************************************************** |
|
16 |
+* SimpleDesk Version: 2.1.0 * |
|
17 |
+* File Info: check-license-master.php * |
|
18 |
+**************************************************************/ |
|
19 |
+ |
|
20 |
+// Stuff we will ignore. |
|
21 |
+$ignoreFiles = array( |
|
22 |
+ '\.github/', |
|
23 |
+ '/buildTools/', |
|
24 |
+); |
|
25 |
+ |
|
26 |
+$curDir = '.'; |
|
27 |
+if (isset($_SERVER['argv'], $_SERVER['argv'][1])) |
|
28 |
+ $curDir = $_SERVER['argv'][1]; |
|
29 |
+ |
|
30 |
+$foundBad = false; |
|
31 |
+foreach (new RecursiveIteratorIterator(new RecursiveDirectoryIterator($curDir, FilesystemIterator::UNIX_PATHS)) as $currentFile => $fileInfo) |
|
32 |
+{ |
|
33 |
+ // Only check PHP |
|
34 |
+ if ($fileInfo->getExtension() !== 'php') |
|
35 |
+ continue; |
|
36 |
+ |
|
37 |
+ foreach ($ignoreFiles as $if) |
|
38 |
+ if (preg_match('~' . $if . '~i', $currentFile)) |
|
39 |
+ continue 2; |
|
40 |
+ |
|
41 |
+ $result = trim(shell_exec('php .github/scripts/check-license.php ' . $currentFile . ' 2>&1')); |
|
42 |
+ |
|
43 |
+ if (!preg_match('~Error:([^$]+)~', $result)) |
|
44 |
+ continue; |
|
45 |
+ |
|
46 |
+ $foundBad = true; |
|
47 |
+ fwrite(STDERR, $result . "\n"); |
|
48 |
+} |
|
49 |
+ |
|
50 |
+if (!empty($foundBad)) |
|
51 |
+ exit(1); |
|
0 | 52 |
\ No newline at end of file |
... | ... |
@@ -0,0 +1,135 @@ |
1 |
+<?php |
|
2 |
+/************************************************************** |
|
3 |
+* Simple Desk Project - www.simpledesk.net * |
|
4 |
+*************************************************************** |
|
5 |
+* An advanced help desk modification built on SMF * |
|
6 |
+*************************************************************** |
|
7 |
+* * |
|
8 |
+* * Copyright 2022 - SimpleDesk.net * |
|
9 |
+* * |
|
10 |
+* This file and its contents are subject to the license * |
|
11 |
+* included with this distribution, license.txt, which * |
|
12 |
+* states that this software is New BSD Licensed. * |
|
13 |
+* Any questions, please contact SimpleDesk.net * |
|
14 |
+* * |
|
15 |
+*************************************************************** |
|
16 |
+* SimpleDesk Version: 2.1 Beta 1 * |
|
17 |
+* File Info: check-license.php * |
|
18 |
+**************************************************************/ |
|
19 |
+ |
|
20 |
+// Stuff we will ignore. |
|
21 |
+$ignoreFiles = array( |
|
22 |
+ // Index files. |
|
23 |
+ '\./images/[A-Za-z0-9_]+/index\.php', |
|
24 |
+ '\./images/simpledesk/[A-Za-z0-9_]+/index\.php', |
|
25 |
+ '\./sd_language/index\.php', |
|
26 |
+ '\./sd_plugins_lang/index\.php', |
|
27 |
+ '\./sd_plugins_source/index\.php', |
|
28 |
+ '\./sd_plugins_source/[A-Za-z0-9]+/index\.php', |
|
29 |
+ '\./sd_plugins_template/index\.php', |
|
30 |
+ '\./sd_source/index\.php', |
|
31 |
+ '\./sd_template/index\.php', |
|
32 |
+ |
|
33 |
+ // Templates. |
|
34 |
+ './sd_template/SimpleDesk\.template\.php', |
|
35 |
+ './sd_template/SimpleDesk-[A-Za-z0-9]+\.template\.php', |
|
36 |
+ './sd_plugins_template/[A-Za-z0-9]+\.template\.php', |
|
37 |
+); |
|
38 |
+ |
|
39 |
+$ignoreFilesVersion = array( |
|
40 |
+ '/.github/scripts/check-[A-Za-z0-9-_]+\.php', |
|
41 |
+); |
|
42 |
+ |
|
43 |
+// No file? Thats bad. |
|
44 |
+if (!isset($_SERVER['argv'], $_SERVER['argv'][1])) |
|
45 |
+ die('Error: No File specified' . "\n"); |
|
46 |
+ |
|
47 |
+// The file has to exist. |
|
48 |
+$currentFile = $_SERVER['argv'][1]; |
|
49 |
+if (!file_exists($currentFile)) |
|
50 |
+ die('Error: File does not exist' . "\n"); |
|
51 |
+ |
|
52 |
+// Is this ignored? |
|
53 |
+foreach ($ignoreFiles as $if) |
|
54 |
+ if (preg_match('~' . $if . '~i', $currentFile)) |
|
55 |
+ die; |
|
56 |
+ |
|
57 |
+// Lets get the Subs-SimpleDesk.php for SHD_VERSION. |
|
58 |
+//define('SHD_VERSION', 'SimpleDesk 2.1 Beta 1'); |
|
59 |
+$indexFile = fopen('./sd_source/Subs-SimpleDesk.php', 'r'); |
|
60 |
+ |
|
61 |
+// Error? |
|
62 |
+if ($indexFile === false) |
|
63 |
+ die("Error: Unable to open file ./sd_source/Subs-SimpleDesk.php\n"); |
|
64 |
+ |
|
65 |
+$indexContents = fread($indexFile, 3850); |
|
66 |
+ |
|
67 |
+if (!preg_match('~define\(\'SHD_VERSION\', \'SimpleDesk ([^\']+)\'\);~i', $indexContents, $versionResults)) |
|
68 |
+ die('Error: Could not locate SHD_VERSION' . "\n"); |
|
69 |
+$currentVersion = $versionResults[1]; |
|
70 |
+ |
|
71 |
+$currentSoftwareYear = (int) date('Y', time()); |
|
72 |
+$file = fopen($currentFile, 'r'); |
|
73 |
+ |
|
74 |
+// Error? |
|
75 |
+if ($file === false) |
|
76 |
+ die('Error: Unable to open file ' . $currentFile . "\n"); |
|
77 |
+ |
|
78 |
+$contents = fread($file, 1300); |
|
79 |
+ |
|
80 |
+// How the license file should look, in a regex type format. |
|
81 |
+$match = array( |
|
82 |
+ 0 => '/\*{62}' . '[\r]?\n', |
|
83 |
+ 1 => '\* {10}Simple Desk Project - www.simpledesk.net {11}\*' . '[\r]?\n', |
|
84 |
+ 2 => '\*{63}' . '[\r]?\n', |
|
85 |
+ 3 => '\* {7}An advanced help desk modification built on SMF {7}\*' . '[\r]?\n', |
|
86 |
+ 4 => '\*{63}' . '[\r]?\n', |
|
87 |
+ 5 => '\* {61}\*' . '[\r]?\n', |
|
88 |
+ 6 => '\* {9}\* Copyright \d{4} - SimpleDesk.net {19}\*' . '[\r]?\n', |
|
89 |
+ 7 => '\* {61}\*' . '[\r]?\n', |
|
90 |
+ 8 => '\* {3}This file and its contents are subject to the license {5}\*' . '[\r]?\n', |
|
91 |
+ 9 => '\* {3}included with this distribution, license.txt, which {7}\*' . '[\r]?\n', |
|
92 |
+ 10 => '\* {3}states that this software is New BSD Licensed. {12}\*' . '[\r]?\n', |
|
93 |
+ 11 => '\* {3}Any questions, please contact SimpleDesk.net {14}\*' . '[\r]?\n', |
|
94 |
+ 12 => '\* {61}\*' . '[\r]?\n', |
|
95 |
+ 13 => '\*{63}' . '[\r]?\n', |
|
96 |
+ 14 => '\* SimpleDesk Version: [^\*]+\*' . '[\r]?\n', |
|
97 |
+// 14 => '# SimpleDesk Version: ' . $currentVersion . ' {' . ($sd_version_whitespace - strlen($currentVersion)) . '}#' . '[\r]?\n', |
|
98 |
+ 15 => '\* File Info: [^\*]+\*' . '[\r]?\n', |
|
99 |
+// 15 => '# File Info: ' . $shortCurrentFile . ' {' . ($sd_file_whitespace - strlen($shortCurrentFile)) . '}#' . '[\r]?\n', |
|
100 |
+ 16 => '\*{62}/' . '[\r]?\n', |
|
101 |
+); |
|
102 |
+ |
|
103 |
+// Just see if the license is there. |
|
104 |
+if (!preg_match('~' . implode('', $match) . '~i', $contents)) |
|
105 |
+ die('Error: License File is invalid or not found in ' . $currentFile . "\n"); |
|
106 |
+ |
|
107 |
+// Check the year is correct. |
|
108 |
+$yearMatch = $match; |
|
109 |
+$yearMatch[6] = '\* {9}\* Copyright ' . $currentSoftwareYear . ' - SimpleDesk.net {19}\*' . '[\r]?\n'; |
|
110 |
+if (!preg_match('~' . implode('', $yearMatch) . '~i', $contents)) |
|
111 |
+ die('Error: The software year is incorrect in ' . $currentFile . "\n"); |
|
112 |
+ |
|
113 |
+// Check the version is correct. |
|
114 |
+$versionMatch = $match; |
|
115 |
+$sd_version_whitespace = 40; |
|
116 |
+$versionMatch[14] = '\* SimpleDesk Version: ' . $currentVersion . ' {' . ($sd_version_whitespace - strlen($currentVersion)) . '}\*' . '[\r]?\n'; |
|
117 |
+if (!preg_match('~' . implode('', $versionMatch) . '~i', $contents)) |
|
118 |
+{ |
|
119 |
+ $badVersion = true; |
|
120 |
+ foreach ($ignoreFilesVersion as $if) |
|
121 |
+ if (preg_match('~' . $if . '~i', $currentFile)) |
|
122 |
+ $badVersion = false; |
|
123 |
+ |
|
124 |
+ if ($badVersion) |
|
125 |
+ die('Error: The version is incorrect in ' . $currentFile . "\n"); |
|
126 |
+} |
|
127 |
+ |
|
128 |
+die('Stop here' . "\n"); |
|
129 |
+ |
|
130 |
+$fileinfoMatch = $match; |
|
131 |
+$shortCurrentFile = basename($currentFile); |
|
132 |
+$sd_file_whitespace = 49; |
|
133 |
+$fileinfoMatch[15] = '# File Info: ' . $shortCurrentFile . ' {' . ($sd_file_whitespace - strlen($shortCurrentFile)) . '}#' . '[\r]?\n'; |
|
134 |
+if (!preg_match('~' . implode('', $fileinfoMatch) . '~i', $contents)) |
|
135 |
+ die('Error: The file info is incorrect in ' . $currentFile . "\n"); |
|
0 | 136 |
\ No newline at end of file |
... | ... |
@@ -0,0 +1,73 @@ |
1 |
+<?php |
|
2 |
+/************************************************************** |
|
3 |
+* Simple Desk Project - www.simpledesk.net * |
|
4 |
+*************************************************************** |
|
5 |
+* An advanced help desk modification built on SMF * |
|
6 |
+*************************************************************** |
|
7 |
+* * |
|
8 |
+* * Copyright 2023 - SimpleDesk.net * |
|
9 |
+* * |
|
10 |
+* This file and its contents are subject to the license * |
|
11 |
+* included with this distribution, license.txt, which * |
|
12 |
+* states that this software is New BSD Licensed. * |
|
13 |
+* Any questions, please contact SimpleDesk.net * |
|
14 |
+* * |
|
15 |
+*************************************************************** |
|
16 |
+* SimpleDesk Version: 2.1.0 * |
|
17 |
+* File Info: check-php-syntax.php * |
|
18 |
+**************************************************************/ |
|
19 |
+ |
|
20 |
+// Stuff we will ignore. |
|
21 |
+$ignoreFiles = array( |
|
22 |
+); |
|
23 |
+ |
|
24 |
+/* This is mostly meant for local usage. |
|
25 |
+ To add additional PHP Binaries, create a check-php-syntax-binaries.txt |
|
26 |
+ Add in this in each line the binary file, i.e: /usr/bin/php |
|
27 |
+*/ |
|
28 |
+$addditionalPHPBinaries = array(); |
|
29 |
+if (file_exists(dirname(__FILE__) . '/check-php-syntax-binaries.txt')) |
|
30 |
+ $addditionalPHPBinaries = file(dirname(__FILE__) . '/check-php-syntax-binaries.txt'); |
|
31 |
+ |
|
32 |
+$curDir = '.'; |
|
33 |
+if (isset($_SERVER['argv'], $_SERVER['argv'][1])) |
|
34 |
+ $curDir = $_SERVER['argv'][1]; |
|
35 |
+ |
|
36 |
+$foundBad = false; |
|
37 |
+foreach (new RecursiveIteratorIterator(new RecursiveDirectoryIterator($curDir, FilesystemIterator::UNIX_PATHS)) as $currentFile => $fileInfo) |
|
38 |
+{ |
|
39 |
+ // Only check PHP |
|
40 |
+ if ($fileInfo->getExtension() !== 'php') |
|
41 |
+ continue; |
|
42 |
+ |
|
43 |
+ foreach ($ignoreFiles as $if) |
|
44 |
+ if (preg_match('~' . $if . '~i', $currentFile)) |
|
45 |
+ continue 2; |
|
46 |
+ |
|
47 |
+ # Always check against the base. |
|
48 |
+ $result = trim(shell_exec('php -l ' . $currentFile)); |
|
49 |
+ |
|
50 |
+ if (!preg_match('~No syntax errors detected in ' . $currentFile . '~', $result)) |
|
51 |
+ { |
|
52 |
+ $foundBad = true; |
|
53 |
+ fwrite(STDERR, 'PHP via $PATH: ' . $result . "\n"); |
|
54 |
+ continue; |
|
55 |
+ } |
|
56 |
+ |
|
57 |
+ // We have additional binaries we want to test against? |
|
58 |
+ foreach ($addditionalPHPBinaries as $binary) |
|
59 |
+ { |
|
60 |
+ $binary = trim($binary); |
|
61 |
+ $result = trim(shell_exec($binary . ' -l ' . $currentFile)); |
|
62 |
+ |
|
63 |
+ if (!preg_match('~No syntax errors detected in ' . $currentFile . '~', $result)) |
|
64 |
+ { |
|
65 |
+ $foundBad = true; |
|
66 |
+ fwrite(STDERR, 'PHP via ' . $binary . ': ' . $result . "\n"); |
|
67 |
+ continue 2; |
|
68 |
+ } |
|
69 |
+ } |
|
70 |
+} |
|
71 |
+ |
|
72 |
+if (!empty($foundBad)) |
|
73 |
+ exit(1); |
|
0 | 74 |
\ No newline at end of file |
... | ... |
@@ -0,0 +1,204 @@ |
1 |
+<?php |
|
2 |
+/************************************************************** |
|
3 |
+* Simple Desk Project - www.simpledesk.net * |
|
4 |
+*************************************************************** |
|
5 |
+* An advanced help desk modification built on SMF * |
|
6 |
+*************************************************************** |
|
7 |
+* * |
|
8 |
+* * Copyright 2023 - SimpleDesk.net * |
|
9 |
+* * |
|
10 |
+* This file and its contents are subject to the license * |
|
11 |
+* included with this distribution, license.txt, which * |
|
12 |
+* states that this software is New BSD Licensed. * |
|
13 |
+* Any questions, please contact SimpleDesk.net * |
|
14 |
+* * |
|
15 |
+*************************************************************** |
|
16 |
+* SimpleDesk Version: 2.1.0 * |
|
17 |
+* File Info: check-signed-off.php * |
|
18 |
+**************************************************************/ |
|
19 |
+ |
|
20 |
+// Debug stuff. |
|
21 |
+global $debugMsgs, $debugMode; |
|
22 |
+ |
|
23 |
+// Debug? |
|
24 |
+if (isset($_SERVER['argv'], $_SERVER['argv'][2]) && $_SERVER['argv'][2] == 'debug') |
|
25 |
+ $debugMode = true; |
|
26 |
+ |
|
27 |
+// First, lets do a basic test. This is non GPG signed commits. |
|
28 |
+$signedoff = find_signed_off(); |
|
29 |
+ |
|
30 |
+// Now Try to test for the GPG if we don't have a message. |
|
31 |
+if (empty($signedoff)) |
|
32 |
+ $signedoff = find_gpg(); |
|
33 |
+ |
|
34 |
+// Nothing yet? Lets ask your parents. |
|
35 |
+if (empty($signedoff) && isset($_SERVER['argv'], $_SERVER['argv'][1]) && ($_SERVER['argv'][1] == 'travis' || $_SERVER['argv'][1] == 'github')) |
|
36 |
+ $signedoff = find_signed_off_parents(); |
|
37 |
+ |
|
38 |
+// Nothing? Well darn. |
|
39 |
+if (empty($signedoff)) |
|
40 |
+{ |
|
41 |
+ // Debugging, eh? |
|
42 |
+ if ($debugMode) |
|
43 |
+ { |
|
44 |
+ echo "\n---DEBUG MSGS START ---\n"; |
|
45 |
+ var_dump($debugMsgs); |
|
46 |
+ echo "\n---DEBUG MSGS END ---\n"; |
|
47 |
+ } |
|
48 |
+ |
|
49 |
+ fatalError('Error: Signed-off-by not found in commit message' . "\n"); |
|
50 |
+} |
|
51 |
+elseif ($debugMode) |
|
52 |
+ debugPrint('Valid signed off found' . "\n"); |
|
53 |
+ |
|
54 |
+// Find a commit by Signed Off |
|
55 |
+function find_signed_off($commit = 'HEAD', $childs = array(), $level = 0) |
|
56 |
+{ |
|
57 |
+ global $debugMsgs; |
|
58 |
+ |
|
59 |
+ $commit = trim($commit); |
|
60 |
+ |
|
61 |
+ // Where we are at. |
|
62 |
+ debugPrint('Attempting to Find signed off on commit [' . $commit . ']'); |
|
63 |
+ |
|
64 |
+ // To many recrusions here. |
|
65 |
+ if ($level > 10) |
|
66 |
+ { |
|
67 |
+ $debugMsgs[$commit . ':' . time()] = array('error' => 'Recurision limit'); |
|
68 |
+ debugPrint('Recusion limit exceeded on find_signed_off'); |
|
69 |
+ return false; |
|
70 |
+ } |
|
71 |
+ |
|
72 |
+ // What string tests should we look for? |
|
73 |
+ $stringTests = array('Signed-off-by:', 'Signed by'); |
|
74 |
+ |
|
75 |
+ // Get message data and clean it up, should only need the last line. |
|
76 |
+ $message = trim(shell_exec('git show -s --format=%B ' . $commit)); |
|
77 |
+ $lines = explode("\n", trim(str_replace("\r", "\n", $message))); |
|
78 |
+ $lastLine = $lines[count($lines) - 1]; |
|
79 |
+ |
|
80 |
+ // Debug info. |
|
81 |
+ debugPrint('Testing Line [' . $lastLine . ']'); |
|
82 |
+ |
|
83 |
+ // loop through each test and find one. |
|
84 |
+ $testedString = $result = false; |
|
85 |
+ foreach ($stringTests as $testedString) |
|
86 |
+ { |
|
87 |
+ debugPrint('Testing [' . $testedString . ']'); |
|
88 |
+ |
|
89 |
+ $result = stripos($lastLine, $testedString); |
|
90 |
+ |
|
91 |
+ // We got a result. |
|
92 |
+ if ($result !== false) |
|
93 |
+ { |
|
94 |
+ debugPrint('Found Result [' . $testedString . ']'); |
|
95 |
+ break; |
|
96 |
+ } |
|
97 |
+ } |
|
98 |
+ |
|
99 |
+ // Debugger. |
|
100 |
+ $debugMsgs[$commit . ':' . time()] = array( |
|
101 |
+ // Raw body. |
|
102 |
+ 'B' => shell_exec('git show -s --format=%B ' . $commit), |
|
103 |
+ // Body. |
|
104 |
+ 'b2' => shell_exec('git show -s --format=%b ' . $commit), |
|
105 |
+ // Commit notes. |
|
106 |
+ 'N' => shell_exec('git show -s --format=%N ' . $commit), |
|
107 |
+ // Ref names. |
|
108 |
+ 'd' => shell_exec('git show -s --format=%d ' . $commit), |
|
109 |
+ // Commit hash. |
|
110 |
+ 'H' => shell_exec('git show -s --format=%H ' . $commit), |
|
111 |
+ // Tree hash. |
|
112 |
+ 'T' => shell_exec('git show -s --format=%T ' . $commit), |
|
113 |
+ // Parent hash. |
|
114 |
+ 'P' => shell_exec('git show -s --format=%P ' . $commit), |
|
115 |
+ // Result. |
|
116 |
+ 'result' => $result, |
|
117 |
+ // Last tested string, or the correct string. |
|
118 |
+ 'testedString' => $testedString, |
|
119 |
+ ); |
|
120 |
+ |
|
121 |
+ // No result and found a merge? Lets go deeper. |
|
122 |
+ if ($result === false && preg_match('~Merge ([A-Za-z0-9]{40}) into ([A-Za-z0-9]{40})~i', $lastLine, $merges)) |
|
123 |
+ { |
|
124 |
+ debugPrint('Found Merge, attempting to get more parent commit: ' . $merges[1]); |
|
125 |
+ |
|
126 |
+ return find_signed_off($merges[1], array_merge(array($merges[1]), $childs), ++$level); |
|
127 |
+ } |
|
128 |
+ |
|
129 |
+ return $result !== false; |
|
130 |
+} |
|
131 |
+ |
|
132 |
+// Find a commit by GPG |
|
133 |
+function find_gpg($commit = 'HEAD') |
|
134 |
+{ |
|
135 |
+ global $debugMsgs; |
|
136 |
+ |
|
137 |
+ $commit = trim($commit); |
|
138 |
+ |
|
139 |
+ debugPrint('Attempting to Find GPG on commit [' . $commit . ']'); |
|
140 |
+ |
|
141 |
+ // Get verify commit data. |
|
142 |
+ $message = trim(shell_exec('git verify-commit ' . $commit . ' -v --raw')); |
|
143 |
+ |
|
144 |
+ // Should we actually test for gpg results? Perhaps, but it seems doing that with travis may fail since it has no way to verify a GPG signature from GitHub. GitHub should have prevented a bad GPG from making a commit to a authors repository and could be trusted in most cases it seems. |
|
145 |
+ $result = strlen($message) > 0; |
|
146 |
+ |
|
147 |
+ // Debugger. |
|
148 |
+ $debugMsgs[$commit . ':' . time()] = array( |
|
149 |
+ // Raw body. |
|
150 |
+ 'verify-commit' => shell_exec('git verify-commit ' . $commit . ' -v --raw'), |
|
151 |
+ // Result. |
|
152 |
+ 'result' => $result, |
|
153 |
+ // Last tested string, or the correct string. |
|
154 |
+ 'message' => $message, |
|
155 |
+ ); |
|
156 |
+ |
|
157 |
+ return $result; |
|
158 |
+} |
|
159 |
+ |
|
160 |
+// Looks at all the parents, and tries to find a signed off by somewhere. |
|
161 |
+function find_signed_off_parents($commit = 'HEAD') |
|
162 |
+{ |
|
163 |
+ $commit = trim($commit); |
|
164 |
+ |
|
165 |
+ debugPrint('Attempting to find parents on commit [' . $commit . ']'); |
|
166 |
+ |
|
167 |
+ $parentsRaw = shell_exec('git show -s --format=%P ' . $commit); |
|
168 |
+ $parents = explode(' ', $parentsRaw); |
|
169 |
+ |
|
170 |
+ // Test each one. |
|
171 |
+ foreach ($parents as $p) |
|
172 |
+ { |
|
173 |
+ $p = trim($p); |
|
174 |
+ debugPrint('Testing Parent for signed off [' . $commit . ']'); |
|
175 |
+ |
|
176 |
+ // Basic tests. |
|
177 |
+ $test = find_signed_off($p); |
|
178 |
+ |
|
179 |
+ // No, maybe it has a GPG parent. |
|
180 |
+ if (empty($test)) |
|
181 |
+ $test = find_gpg($p); |
|
182 |
+ |
|
183 |
+ if (!empty($test)) |
|
184 |
+ return $test; |
|
185 |
+ } |
|
186 |
+ |
|
187 |
+ // Lucked out. |
|
188 |
+ return false; |
|
189 |
+} |
|
190 |
+ |
|
191 |
+// Print a debug line |
|
192 |
+function debugPrint($msg) |
|
193 |
+{ |
|
194 |
+ global $debugMode; |
|
195 |
+ |
|
196 |
+ if ($debugMode) |
|
197 |
+ echo "\nDEBUG: ", $msg; |
|
198 |
+} |
|
199 |
+ |
|
200 |
+function fatalError($msg) |
|
201 |
+{ |
|
202 |
+ fwrite(STDERR, $msg . "\n"); |
|
203 |
+ die; |
|
204 |
+} |
|
0 | 205 |
\ No newline at end of file |
... | ... |
@@ -14,10 +14,8 @@ jobs: |
14 | 14 |
steps: |
15 | 15 |
- uses: actions/checkout@master |
16 | 16 |
with: |
17 |
- submodules: true |
|
18 |
- - name: Update Build Tools |
|
19 |
- run: git submodule foreach git pull origin master |
|
17 |
+ submodules: false |
|
20 | 18 |
- name: Javascript LINT |
21 | 19 |
uses: tj-actions/eslint-changed-files@v4 |
22 | 20 |
with: |
23 |
- config-path: buildTools/eslintrc.js |
|
24 | 21 |
\ No newline at end of file |
22 |
+ config-path: ./.github/configs/eslintrc.js |
|
25 | 23 |
\ No newline at end of file |
... | ... |
@@ -14,33 +14,27 @@ jobs: |
14 | 14 |
steps: |
15 | 15 |
- uses: actions/checkout@master |
16 | 16 |
with: |
17 |
- submodules: true |
|
18 |
- - name: Update Build Tools |
|
19 |
- run: git submodule foreach git pull origin master |
|
17 |
+ submodules: false |
|
20 | 18 |
- name: Checking Sign off |
21 | 19 |
id: check-signoff |
22 |
- run: php ./buildTools/check-signed-off.php github |
|
20 |
+ run: php ./.github/scripts/check-signed-off.php github |
|
23 | 21 |
check-licensing: |
24 | 22 |
runs-on: ubuntu-latest |
25 | 23 |
name: Check Licensing |
26 | 24 |
steps: |
27 | 25 |
- uses: actions/checkout@master |
28 | 26 |
with: |
29 |
- submodules: true |
|
30 |
- - name: Update Build Tools |
|
31 |
- run: git submodule foreach git pull origin master |
|
27 |
+ submodules: false |
|
32 | 28 |
- name: Checking Licensing |
33 | 29 |
id: check-licensing |
34 |
- run: php ./buildTools/check-license-master.php ./ |
|
30 |
+ run: php ./.github/scripts/check-license-master.php ./ |
|
35 | 31 |
check-eof: |
36 | 32 |
runs-on: ubuntu-latest |
37 | 33 |
name: Check End of File |
38 | 34 |
steps: |
39 | 35 |
- uses: actions/checkout@master |
40 | 36 |
with: |
41 |
- submodules: true |
|
42 |
- - name: Update Build Tools |
|
43 |
- run: git submodule foreach git pull origin master |
|
37 |
+ submodules: false |
|
44 | 38 |
- name: Checking End of File |
45 | 39 |
id: check-eof |
46 |
- run: php ./buildTools/check-eof-master.php ./ |
|
47 | 40 |
\ No newline at end of file |
41 |
+ run: php ./.github/scripts/check-eof-master.php ./ |
|
48 | 42 |
\ No newline at end of file |
... | ... |
@@ -18,10 +18,10 @@ jobs: |
18 | 18 |
steps: |
19 | 19 |
- uses: actions/checkout@master |
20 | 20 |
with: |
21 |
- submodules: true |
|
21 |
+ submodules: false |
|
22 | 22 |
- name: Setup PHP |
23 | 23 |
id: SetupPHP |
24 | 24 |
uses: nanasess/setup-php@master |
25 | 25 |
with: |
26 | 26 |
php-version: ${{ matrix.php }} |
27 |
- - run: php ./buildTools/check-php-syntax.php ./ |
|
28 | 27 |
\ No newline at end of file |
28 |
+ - run: php ./.github/scripts/check-php-syntax.php ./ |
|
29 | 29 |
\ No newline at end of file |
... | ... |
@@ -5,7 +5,7 @@ |
5 | 5 |
* An advanced help desk modification built on SMF * |
6 | 6 |
*************************************************************** |
7 | 7 |
* * |
8 |
-* * Copyright 2022 - SimpleDesk.net * |
|
8 |
+* * Copyright 2023 - SimpleDesk.net * |
|
9 | 9 |
* * |
10 | 10 |
* This file and its contents are subject to the license * |
11 | 11 |
* included with this distribution, license.txt, which * |
... | ... |
@@ -5,7 +5,7 @@ |
5 | 5 |
* An advanced help desk modification built on SMF * |
6 | 6 |
*************************************************************** |
7 | 7 |
* * |
8 |
-* * Copyright 2022 - SimpleDesk.net * |
|
8 |
+* * Copyright 2023 - SimpleDesk.net * |
|
9 | 9 |
* * |
10 | 10 |
* This file and its contents are subject to the license * |
11 | 11 |
* included with this distribution, license.txt, which * |
... | ... |
@@ -5,7 +5,7 @@ |
5 | 5 |
* An advanced help desk modification built on SMF * |
6 | 6 |
*************************************************************** |
7 | 7 |
* * |
8 |
-* * Copyright 2022 - SimpleDesk.net * |
|
8 |
+* * Copyright 2023 - SimpleDesk.net * |
|
9 | 9 |
* * |
10 | 10 |
* This file and its contents are subject to the license * |
11 | 11 |
* included with this distribution, license.txt, which * |
... | ... |
@@ -5,7 +5,7 @@ |
5 | 5 |
* An advanced help desk modification built on SMF * |
6 | 6 |
*************************************************************** |
7 | 7 |
* * |
8 |
-* * Copyright 2022 - SimpleDesk.net * |
|
8 |
+* * Copyright 2023 - SimpleDesk.net * |
|
9 | 9 |
* * |
10 | 10 |
* This file and its contents are subject to the license * |
11 | 11 |
* included with this distribution, license.txt, which * |
... | ... |
@@ -5,7 +5,7 @@ |
5 | 5 |
* An advanced help desk modification built on SMF * |
6 | 6 |
*************************************************************** |
7 | 7 |
* * |
8 |
-* * Copyright 2022 - SimpleDesk.net * |
|
8 |
+* * Copyright 2023 - SimpleDesk.net * |
|
9 | 9 |
* * |
10 | 10 |
* This file and its contents are subject to the license * |
11 | 11 |
* included with this distribution, license.txt, which * |
... | ... |
@@ -5,7 +5,7 @@ |
5 | 5 |
* An advanced help desk modification built on SMF * |
6 | 6 |
*************************************************************** |
7 | 7 |
* * |
8 |
-* * Copyright 2022 - SimpleDesk.net * |
|
8 |
+* * Copyright 2023 - SimpleDesk.net * |
|
9 | 9 |
* * |
10 | 10 |
* This file and its contents are subject to the license * |
11 | 11 |
* included with this distribution, license.txt, which * |
... | ... |
@@ -5,7 +5,7 @@ |
5 | 5 |
* An advanced help desk modification built on SMF * |
6 | 6 |
*************************************************************** |
7 | 7 |
* * |
8 |
-* * Copyright 2022 - SimpleDesk.net * |
|
8 |
+* * Copyright 2023 - SimpleDesk.net * |
|
9 | 9 |
* * |
10 | 10 |
* This file and its contents are subject to the license * |
11 | 11 |
* included with this distribution, license.txt, which * |
... | ... |
@@ -5,7 +5,7 @@ |
5 | 5 |
* An advanced help desk modification built on SMF * |
6 | 6 |
*************************************************************** |
7 | 7 |
* * |
8 |
-* * Copyright 2022 - SimpleDesk.net * |
|
8 |
+* * Copyright 2023 - SimpleDesk.net * |
|
9 | 9 |
* * |
10 | 10 |
* This file and its contents are subject to the license * |
11 | 11 |
* included with this distribution, license.txt, which * |
... | ... |
@@ -5,7 +5,7 @@ |
5 | 5 |
* An advanced help desk modification built on SMF * |
6 | 6 |
*************************************************************** |
7 | 7 |
* * |
8 |
-* * Copyright 2022 - SimpleDesk.net * |
|
8 |
+* * Copyright 2023 - SimpleDesk.net * |
|
9 | 9 |
* * |
10 | 10 |
* This file and its contents are subject to the license * |
11 | 11 |
* included with this distribution, license.txt, which * |
... | ... |
@@ -5,7 +5,7 @@ |
5 | 5 |
* An advanced help desk modification built on SMF * |
6 | 6 |
*************************************************************** |
7 | 7 |
* * |
8 |
-* * Copyright 2022 - SimpleDesk.net * |
|
8 |
+* * Copyright 2023 - SimpleDesk.net * |
|
9 | 9 |
* * |
10 | 10 |
* This file and its contents are subject to the license * |
11 | 11 |
* included with this distribution, license.txt, which * |
... | ... |
@@ -5,7 +5,7 @@ |
5 | 5 |
* An advanced help desk modification built on SMF * |
6 | 6 |
*************************************************************** |
7 | 7 |
* * |
8 |
-* * Copyright 2022 - SimpleDesk.net * |
|
8 |
+* * Copyright 2023 - SimpleDesk.net * |
|
9 | 9 |
* * |
10 | 10 |
* This file and its contents are subject to the license * |
11 | 11 |
* included with this distribution, license.txt, which * |
... | ... |
@@ -5,7 +5,7 @@ |
5 | 5 |
* An advanced help desk modification built on SMF * |
6 | 6 |
*************************************************************** |
7 | 7 |
* * |
8 |
-* * Copyright 2022 - SimpleDesk.net * |
|
8 |
+* * Copyright 2023 - SimpleDesk.net * |
|
9 | 9 |
* * |
10 | 10 |
* This file and its contents are subject to the license * |
11 | 11 |
* included with this distribution, license.txt, which * |
... | ... |
@@ -5,7 +5,7 @@ |
5 | 5 |
* An advanced help desk modification built on SMF * |
6 | 6 |
*************************************************************** |
7 | 7 |
* * |
8 |
-* * Copyright 2022 - SimpleDesk.net * |
|
8 |
+* * Copyright 2023 - SimpleDesk.net * |
|
9 | 9 |
* * |
10 | 10 |
* This file and its contents are subject to the license * |
11 | 11 |
* included with this distribution, license.txt, which * |
... | ... |
@@ -5,7 +5,7 @@ |
5 | 5 |
* An advanced help desk modification built on SMF * |
6 | 6 |
*************************************************************** |
7 | 7 |
* * |
8 |
-* * Copyright 2022 - SimpleDesk.net * |
|
8 |
+* * Copyright 2023 - SimpleDesk.net * |
|
9 | 9 |
* * |
10 | 10 |
* This file and its contents are subject to the license * |
11 | 11 |
* included with this distribution, license.txt, which * |
... | ... |
@@ -5,7 +5,7 @@ |
5 | 5 |
* An advanced help desk modification built on SMF * |
6 | 6 |
*************************************************************** |
7 | 7 |
* * |
8 |
-* * Copyright 2022 - SimpleDesk.net * |
|
8 |
+* * Copyright 2023 - SimpleDesk.net * |
|
9 | 9 |
* * |
10 | 10 |
* This file and its contents are subject to the license * |
11 | 11 |
* included with this distribution, license.txt, which * |
... | ... |
@@ -5,7 +5,7 @@ |
5 | 5 |
* An advanced help desk modification built on SMF * |
6 | 6 |
*************************************************************** |
7 | 7 |
* * |
8 |
-* * Copyright 2022 - SimpleDesk.net * |
|
8 |
+* * Copyright 2023 - SimpleDesk.net * |
|
9 | 9 |
* * |
10 | 10 |
* This file and its contents are subject to the license * |
11 | 11 |
* included with this distribution, license.txt, which * |
... | ... |
@@ -5,7 +5,7 @@ |
5 | 5 |
* An advanced help desk modification built on SMF * |
6 | 6 |
*************************************************************** |
7 | 7 |
* * |
8 |
-* * Copyright 2022 - SimpleDesk.net * |
|
8 |
+* * Copyright 2023 - SimpleDesk.net * |
|
9 | 9 |
* * |
10 | 10 |
* This file and its contents are subject to the license * |
11 | 11 |
* included with this distribution, license.txt, which * |
... | ... |
@@ -5,7 +5,7 @@ |
5 | 5 |
* An advanced help desk modification built on SMF * |
6 | 6 |
*************************************************************** |
7 | 7 |
* * |
8 |
-* * Copyright 2022 - SimpleDesk.net * |
|
8 |
+* * Copyright 2023 - SimpleDesk.net * |
|
9 | 9 |
* * |
10 | 10 |
* This file and its contents are subject to the license * |
11 | 11 |
* included with this distribution, license.txt, which * |
... | ... |
@@ -5,7 +5,7 @@ |
5 | 5 |
* An advanced help desk modification built on SMF * |
6 | 6 |
*************************************************************** |
7 | 7 |
* * |
8 |
-* * Copyright 2022 - SimpleDesk.net * |
|
8 |
+* * Copyright 2023 - SimpleDesk.net * |
|
9 | 9 |
* * |
10 | 10 |
* This file and its contents are subject to the license * |
11 | 11 |
* included with this distribution, license.txt, which * |
... | ... |
@@ -5,7 +5,7 @@ |
5 | 5 |
* An advanced help desk modification built on SMF * |
6 | 6 |
*************************************************************** |
7 | 7 |
* * |
8 |
-* * Copyright 2022 - SimpleDesk.net * |
|
8 |
+* * Copyright 2023 - SimpleDesk.net * |
|
9 | 9 |
* * |
10 | 10 |
* This file and its contents are subject to the license * |
11 | 11 |
* included with this distribution, license.txt, which * |
... | ... |
@@ -5,7 +5,7 @@ |
5 | 5 |
* An advanced help desk modification built on SMF * |
6 | 6 |
*************************************************************** |
7 | 7 |
* * |
8 |
-* * Copyright 2022 - SimpleDesk.net * |
|
8 |
+* * Copyright 2023 - SimpleDesk.net * |
|
9 | 9 |
* * |
10 | 10 |
* This file and its contents are subject to the license * |
11 | 11 |
* included with this distribution, license.txt, which * |
... | ... |
@@ -5,7 +5,7 @@ |
5 | 5 |
* An advanced help desk modification built on SMF * |
6 | 6 |
*************************************************************** |
7 | 7 |
* * |
8 |
-* * Copyright 2022 - SimpleDesk.net * |
|
8 |
+* * Copyright 2023 - SimpleDesk.net * |
|
9 | 9 |
* * |
10 | 10 |
* This file and its contents are subject to the license * |
11 | 11 |
* included with this distribution, license.txt, which * |
... | ... |
@@ -5,7 +5,7 @@ |
5 | 5 |
* An advanced help desk modification built on SMF * |
6 | 6 |
*************************************************************** |
7 | 7 |
* * |
8 |
-* * Copyright 2022 - SimpleDesk.net * |
|
8 |
+* * Copyright 2023 - SimpleDesk.net * |
|
9 | 9 |
* * |
10 | 10 |
* This file and its contents are subject to the license * |
11 | 11 |
* included with this distribution, license.txt, which * |
... | ... |
@@ -5,7 +5,7 @@ |
5 | 5 |
* An advanced help desk modification built on SMF * |
6 | 6 |
*************************************************************** |
7 | 7 |
* * |
8 |
-* * Copyright 2022 - SimpleDesk.net * |
|
8 |
+* * Copyright 2023 - SimpleDesk.net * |
|
9 | 9 |
* * |
10 | 10 |
* This file and its contents are subject to the license * |
11 | 11 |
* included with this distribution, license.txt, which * |
... | ... |
@@ -5,7 +5,7 @@ |
5 | 5 |
* An advanced help desk modification built on SMF * |
6 | 6 |
*************************************************************** |
7 | 7 |
* * |
8 |
-* * Copyright 2022 - SimpleDesk.net * |
|
8 |
+* * Copyright 2023 - SimpleDesk.net * |
|
9 | 9 |
* * |
10 | 10 |
* This file and its contents are subject to the license * |
11 | 11 |
* included with this distribution, license.txt, which * |
... | ... |
@@ -5,7 +5,7 @@ |
5 | 5 |
* An advanced help desk modification built on SMF * |
6 | 6 |
*************************************************************** |
7 | 7 |
* * |
8 |
-* * Copyright 2022 - SimpleDesk.net * |
|
8 |
+* * Copyright 2023 - SimpleDesk.net * |
|
9 | 9 |
* * |
10 | 10 |
* This file and its contents are subject to the license * |
11 | 11 |
* included with this distribution, license.txt, which * |
... | ... |
@@ -5,7 +5,7 @@ |
5 | 5 |
* An advanced help desk modification built on SMF * |
6 | 6 |
*************************************************************** |
7 | 7 |
* * |
8 |
-* * Copyright 2022 - SimpleDesk.net * |
|
8 |
+* * Copyright 2023 - SimpleDesk.net * |
|
9 | 9 |
* * |
10 | 10 |
* This file and its contents are subject to the license * |
11 | 11 |
* included with this distribution, license.txt, which * |
... | ... |
@@ -5,7 +5,7 @@ |
5 | 5 |
* An advanced help desk modification built on SMF * |
6 | 6 |
*************************************************************** |
7 | 7 |
* * |
8 |
-* * Copyright 2022 - SimpleDesk.net * |
|
8 |
+* * Copyright 2023 - SimpleDesk.net * |
|
9 | 9 |
* * |
10 | 10 |
* This file and its contents are subject to the license * |
11 | 11 |
* included with this distribution, license.txt, which * |
... | ... |
@@ -5,7 +5,7 @@ |
5 | 5 |
* An advanced help desk modification built on SMF * |
6 | 6 |
*************************************************************** |
7 | 7 |
* * |
8 |
-* * Copyright 2022 - SimpleDesk.net * |
|
8 |
+* * Copyright 2023 - SimpleDesk.net * |
|
9 | 9 |
* * |
10 | 10 |
* This file and its contents are subject to the license * |
11 | 11 |
* included with this distribution, license.txt, which * |
... | ... |
@@ -5,7 +5,7 @@ |
5 | 5 |
* An advanced help desk modification built on SMF * |
6 | 6 |
*************************************************************** |
7 | 7 |
* * |
8 |
-* * Copyright 2022 - SimpleDesk.net * |
|
8 |
+* * Copyright 2023 - SimpleDesk.net * |
|
9 | 9 |
* * |
10 | 10 |
* This file and its contents are subject to the license * |
11 | 11 |
* included with this distribution, license.txt, which * |
... | ... |
@@ -5,7 +5,7 @@ |
5 | 5 |
* An advanced help desk modification built on SMF * |
6 | 6 |
*************************************************************** |
7 | 7 |
* * |
8 |
-* * Copyright 2022 - SimpleDesk.net * |
|
8 |
+* * Copyright 2023 - SimpleDesk.net * |
|
9 | 9 |
* * |
10 | 10 |
* This file and its contents are subject to the license * |
11 | 11 |
* included with this distribution, license.txt, which * |
... | ... |
@@ -5,7 +5,7 @@ |
5 | 5 |
* An advanced help desk modification built on SMF * |
6 | 6 |
*************************************************************** |
7 | 7 |
* * |
8 |
-* * Copyright 2022 - SimpleDesk.net * |
|
8 |
+* * Copyright 2023 - SimpleDesk.net * |
|
9 | 9 |
* * |
10 | 10 |
* This file and its contents are subject to the license * |
11 | 11 |
* included with this distribution, license.txt, which * |
... | ... |
@@ -5,7 +5,7 @@ |
5 | 5 |
* An advanced help desk modification built on SMF * |
6 | 6 |
*************************************************************** |
7 | 7 |
* * |
8 |
-* * Copyright 2022 - SimpleDesk.net * |
|
8 |
+* * Copyright 2023 - SimpleDesk.net * |
|
9 | 9 |
* * |
10 | 10 |
* This file and its contents are subject to the license * |
11 | 11 |
* included with this distribution, license.txt, which * |
... | ... |
@@ -5,7 +5,7 @@ |
5 | 5 |
* An advanced help desk modification built on SMF * |
6 | 6 |
*************************************************************** |
7 | 7 |
* * |
8 |
-* * Copyright 2022 - SimpleDesk.net * |
|
8 |
+* * Copyright 2023 - SimpleDesk.net * |
|
9 | 9 |
* * |
10 | 10 |
* This file and its contents are subject to the license * |
11 | 11 |
* included with this distribution, license.txt, which * |
... | ... |
@@ -5,7 +5,7 @@ |
5 | 5 |
* An advanced help desk modification built on SMF * |
6 | 6 |
*************************************************************** |
7 | 7 |
* * |
8 |
-* * Copyright 2022 - SimpleDesk.net * |
|
8 |
+* * Copyright 2023 - SimpleDesk.net * |
|
9 | 9 |
* * |
10 | 10 |
* This file and its contents are subject to the license * |
11 | 11 |
* included with this distribution, license.txt, which * |
... | ... |
@@ -5,7 +5,7 @@ |
5 | 5 |
* An advanced help desk modification built on SMF * |
6 | 6 |
*************************************************************** |
7 | 7 |
* * |
8 |
-* * Copyright 2022 - SimpleDesk.net * |
|
8 |
+* * Copyright 2023 - SimpleDesk.net * |
|
9 | 9 |
* * |
10 | 10 |
* This file and its contents are subject to the license * |
11 | 11 |
* included with this distribution, license.txt, which * |
... | ... |
@@ -5,7 +5,7 @@ |
5 | 5 |
* An advanced help desk modification built on SMF * |
6 | 6 |
*************************************************************** |
7 | 7 |
* * |
8 |
-* * Copyright 2022 - SimpleDesk.net * |
|
8 |
+* * Copyright 2023 - SimpleDesk.net * |
|
9 | 9 |
* * |
10 | 10 |
* This file and its contents are subject to the license * |
11 | 11 |
* included with this distribution, license.txt, which * |
... | ... |
@@ -5,7 +5,7 @@ |
5 | 5 |
* An advanced help desk modification built on SMF * |
6 | 6 |
*************************************************************** |
7 | 7 |
* * |
8 |
-* * Copyright 2022 - SimpleDesk.net * |
|
8 |
+* * Copyright 2023 - SimpleDesk.net * |
|
9 | 9 |
* * |
10 | 10 |
* This file and its contents are subject to the license * |
11 | 11 |
* included with this distribution, license.txt, which * |
... | ... |
@@ -5,7 +5,7 @@ |
5 | 5 |
* An advanced help desk modification built on SMF * |
6 | 6 |
*************************************************************** |
7 | 7 |
* * |
8 |
-* * Copyright 2022 - SimpleDesk.net * |
|
8 |
+* * Copyright 2023 - SimpleDesk.net * |
|
9 | 9 |
* * |
10 | 10 |
* This file and its contents are subject to the license * |
11 | 11 |
* included with this distribution, license.txt, which * |
... | ... |
@@ -5,7 +5,7 @@ |
5 | 5 |
* An advanced help desk modification built on SMF * |
6 | 6 |
*************************************************************** |
7 | 7 |
* * |
8 |
-* * Copyright 2022 - SimpleDesk.net * |
|
8 |
+* * Copyright 2023 - SimpleDesk.net * |
|
9 | 9 |
* * |
10 | 10 |
* This file and its contents are subject to the license * |
11 | 11 |
* included with this distribution, license.txt, which * |
... | ... |
@@ -5,7 +5,7 @@ |
5 | 5 |
* An advanced help desk modification built on SMF * |
6 | 6 |
*************************************************************** |
7 | 7 |
* * |
8 |
-* * Copyright 2022 - SimpleDesk.net * |
|
8 |
+* * Copyright 2023 - SimpleDesk.net * |
|
9 | 9 |
* * |
10 | 10 |
* This file and its contents are subject to the license * |
11 | 11 |
* included with this distribution, license.txt, which * |
... | ... |
@@ -5,7 +5,7 @@ |
5 | 5 |
* An advanced help desk modification built on SMF * |
6 | 6 |
*************************************************************** |
7 | 7 |
* * |
8 |
-* * Copyright 2022 - SimpleDesk.net * |
|
8 |
+* * Copyright 2023 - SimpleDesk.net * |
|
9 | 9 |
* * |
10 | 10 |
* This file and its contents are subject to the license * |
11 | 11 |
* included with this distribution, license.txt, which * |
... | ... |
@@ -5,7 +5,7 @@ |
5 | 5 |
* An advanced help desk modification built on SMF * |
6 | 6 |
*************************************************************** |
7 | 7 |
* * |
8 |
-* * Copyright 2022 - SimpleDesk.net * |
|
8 |
+* * Copyright 2023 - SimpleDesk.net * |
|
9 | 9 |
* * |
10 | 10 |
* This file and its contents are subject to the license * |
11 | 11 |
* included with this distribution, license.txt, which * |
... | ... |
@@ -5,7 +5,7 @@ |
5 | 5 |
* An advanced help desk modification built on SMF * |
6 | 6 |
*************************************************************** |
7 | 7 |
* * |
8 |
-* * Copyright 2022 - SimpleDesk.net * |
|
8 |
+* * Copyright 2023 - SimpleDesk.net * |
|
9 | 9 |
* * |
10 | 10 |
* This file and its contents are subject to the license * |
11 | 11 |
* included with this distribution, license.txt, which * |
... | ... |
@@ -5,7 +5,7 @@ |
5 | 5 |
* An advanced help desk modification built on SMF * |
6 | 6 |
*************************************************************** |
7 | 7 |
* * |
8 |
-* * Copyright 2022 - SimpleDesk.net * |
|
8 |
+* * Copyright 2023 - SimpleDesk.net * |
|
9 | 9 |
* * |
10 | 10 |
* This file and its contents are subject to the license * |
11 | 11 |
* included with this distribution, license.txt, which * |
... | ... |
@@ -5,7 +5,7 @@ |
5 | 5 |
* An advanced help desk modification built on SMF * |
6 | 6 |
*************************************************************** |
7 | 7 |
* * |
8 |
-* * Copyright 2022 - SimpleDesk.net * |
|
8 |
+* * Copyright 2023 - SimpleDesk.net * |
|
9 | 9 |
* * |
10 | 10 |
* This file and its contents are subject to the license * |
11 | 11 |
* included with this distribution, license.txt, which * |
... | ... |
@@ -5,7 +5,7 @@ |
5 | 5 |
* An advanced help desk modification built on SMF * |
6 | 6 |
*************************************************************** |
7 | 7 |
* * |
8 |
-* * Copyright 2022 - SimpleDesk.net * |
|
8 |
+* * Copyright 2023 - SimpleDesk.net * |
|
9 | 9 |
* * |
10 | 10 |
* This file and its contents are subject to the license * |
11 | 11 |
* included with this distribution, license.txt, which * |
... | ... |
@@ -5,7 +5,7 @@ |
5 | 5 |
* An advanced help desk modification built on SMF * |
6 | 6 |
*************************************************************** |
7 | 7 |
* * |
8 |
-* * Copyright 2022 - SimpleDesk.net * |
|
8 |
+* * Copyright 2023 - SimpleDesk.net * |
|
9 | 9 |
* * |
10 | 10 |
* This file and its contents are subject to the license * |
11 | 11 |
* included with this distribution, license.txt, which * |
12 | 12 |