Issues (1963)

html/inc/keywords.inc (6 issues)

1
<?php
2
3
// This file is part of BOINC.
4
// https://boinc.berkeley.edu
5
// Copyright (C) 2020 University of California
6
//
7
// BOINC is free software; you can redistribute it and/or modify it
8
// under the terms of the GNU Lesser General Public License
9
// as published by the Free Software Foundation,
10
// either version 3 of the License, or (at your option) any later version.
11
//
12
// BOINC is distributed in the hope that it will be useful,
13
// but WITHOUT ANY WARRANTY; without even the implied warranty of
14
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
15
// See the GNU Lesser General Public License for more details.
16
//
17
// You should have received a copy of the GNU Lesser General Public License
18
// along with BOINC.  If not, see <http://www.gnu.org/licenses/>.
19
20
// job/project/preference keywords, master list
21
22
// NEVER REUSE IDS
23
24
define('KW_CATEGORY_SCIENCE', 0);
25
define('KW_CATEGORY_LOC', 1);
26
27
define('KW_ASTRONOMY',      1);
28
define('KW_SETI',           2);
29
define('KW_PULSARS',        3);
30
define('KW_GW',             4);
31
define('KW_COSMOLOGY',      5);
32
define('KW_PHYSICS',        6);
33
define('KW_PARTICLE_PHYSICS', 7);
34
define('KW_NANOSCIENCE',    8);
35
define('KW_BIOMED',         9);
36
define('KW_DRUG_DISCOVERY', 10);
37
define('KW_PROTEINS',       11);
38
define('KW_GENETICS',       12);
39
define('KW_DISEASE',        13);
40
define('KW_CANCER',         14);
41
define('KW_MATH_CS',        15);
42
define('KW_AI',             16);
43
define('KW_OCEANIA',        17);
44
define('KW_AUSTRALIA',      18);
45
46
define('KW_EUROPE',         20);
47
define('KW_GERMANY',        21);
48
define('KW_ASIA',           22);
49
define('KW_AMERICAS',       23);
50
define('KW_US',             24);
51
define('KW_UCB',            25);
52
define('KW_AEI',            26);
53
define('KW_CERN',           27);
54
define('KW_UW',             28);
55
define('KW_EARTH_SCI',      29);
56
define('KW_SPAIN',          30);
57
define('KW_SAN_JORGE',      31);
58
define('KW_NUMBER_THEORY',  32);
59
define('KW_CRYPTO',         33);
60
define('KW_ENV_RESEARCH',   34);
61
define('KW_CLIMATE',        35);
62
define('KW_CZECH',          36);
63
define('KW_CHARLES_PRAGUE', 37);
64
define('KW_RECHENKRAFT',    38);
65
define('KW_RHEINMAIN',      39);
66
define('KW_HUNGARY',        40);
67
define('KW_IRELAND',        41);
68
define('KW_UC_DUBLIN',      42);
69
define('KW_POLAND',         43);
70
define('KW_RUSSIA',         44);
71
define('KW_SW_STATE_RUSSIA', 45);
72
define('KW_RAS',            46);
73
define('KW_PRBB',           47);
74
define('KW_UK',             48);
75
define('KW_OXFORD',         49);
76
define('KW_CHINA',          50);
77
define('KW_U_DAYTON',       51);
78
define('KW_WRIGHT_STATE',   52);
79
define('KW_USC',            53);
80
define('KW_FULLERTON',      54);
81
define('KW_ARIZONA_STATE',  55);
82
define('KW_U_ILLINOIS',     56);
83
define('KW_U_WARSAW',       57);
84
define('KW_RPI',            58);
85
define('KW_INTERNATIONAL',  59);
86
define('KW_UND',            60);
87
define('KW_HOLLAND',        61);
88
define('KW_CHEMISTRY',      62);
89
define('KW_GAMES',          63);
90
define('KW_VIRUS',          64);
91
define('KW_FRANCE',         65);
92
define('KW_CANADA',         66);
93
94
$job_keywords = array();
95
96
function keyword($symbol, $category, $level, $parent, $name) {
97
    global $job_keywords;
98
    $x = (object)array(
99
        'category'=>$category,
100
        'level'=>$level,
101
        'parent'=>$parent,
102
        'name'=>$name,
103
        'symbol'=>$symbol
104
    );
105
    $job_keywords[constant($symbol)] = $x;
106
}
107
108
keyword('KW_ASTRONOMY', KW_CATEGORY_SCIENCE, 0, 0,
109
    'Astronomy'
110
);
111
    keyword('KW_SETI', KW_CATEGORY_SCIENCE, 1, KW_ASTRONOMY,
112
        'Search for Extraterrestrial Intelligence'
113
    );
114
    keyword('KW_PULSARS', KW_CATEGORY_SCIENCE, 1, KW_ASTRONOMY,
115
        'Detection and study of pulsars'
116
    );
117
    keyword('KW_GW', KW_CATEGORY_SCIENCE, 1, KW_ASTRONOMY,
118
        'Detection and study of gravitational waves'
119
    );
120
    keyword('KW_COSMOLOGY', KW_CATEGORY_SCIENCE, 1, KW_ASTRONOMY,
121
        'Cosmology'
122
    );
123
keyword('KW_CHEMISTRY', KW_CATEGORY_SCIENCE, 0, 0,
124
    'Chemistry'
125
);
126
keyword('KW_PHYSICS', KW_CATEGORY_SCIENCE, 0, 0,
127
    'Physics'
128
);
129
    keyword('KW_PARTICLE_PHYSICS', KW_CATEGORY_SCIENCE, 1, KW_PHYSICS,
130
        'Particle physics'
131
    );
132
    keyword('KW_NANOSCIENCE', KW_CATEGORY_SCIENCE, 1, KW_PHYSICS,
133
        'Nanoscience'
134
    );
135
keyword('KW_BIOMED', KW_CATEGORY_SCIENCE, 0, 0,
136
    'Biology and Medicine'
137
);
138
    keyword('KW_DRUG_DISCOVERY', KW_CATEGORY_SCIENCE, 1, KW_BIOMED,
139
        'Drug discovery'
140
    );
141
    keyword('KW_PROTEINS', KW_CATEGORY_SCIENCE, 1, KW_BIOMED,
142
        'Protein research'
143
    );
144
    keyword('KW_GENETICS', KW_CATEGORY_SCIENCE, 1, KW_BIOMED,
145
        'Genetics and Phylogeny'
146
    );
147
    keyword('KW_DISEASE', KW_CATEGORY_SCIENCE, 1, KW_BIOMED,
148
        'Disease research'
149
    );
150
        keyword('KW_CANCER', KW_CATEGORY_SCIENCE, 2, KW_DISEASE,
151
            'Cancer research'
152
        );
153
        keyword('KW_VIRUS', KW_CATEGORY_SCIENCE, 2, KW_DISEASE,
154
            'COVID-19 and virology'
155
        );
156
keyword('KW_MATH_CS', KW_CATEGORY_SCIENCE, 0, 0,
157
    'Mathematics and Computer Science'
158
);
159
    keyword('KW_NUMBER_THEORY', KW_CATEGORY_SCIENCE, 1, KW_MATH_CS,
160
        'Number Theory'
161
    );
162
    keyword('KW_CRYPTO', KW_CATEGORY_SCIENCE, 1, KW_MATH_CS,
163
        'Cryptography'
164
    );
165
    keyword('KW_GAMES', KW_CATEGORY_SCIENCE, 1, KW_MATH_CS,
166
        'Games'
167
    );
168
keyword('KW_AI', KW_CATEGORY_SCIENCE, 0, 0,
169
    'Artificial Intelligence and Cognitive Science'
170
);
171
keyword('KW_EARTH_SCI', KW_CATEGORY_SCIENCE, 0, 0,
172
    'Earth sciences'
173
);
174
    keyword('KW_ENV_RESEARCH', KW_CATEGORY_SCIENCE, 1, KW_EARTH_SCI,
175
        'Environmental research'
176
    );
177
    keyword('KW_CLIMATE', KW_CATEGORY_SCIENCE, 1, KW_EARTH_SCI,
178
        'Climate research'
179
    );
180
181
// Locations
182
183
keyword('KW_INTERNATIONAL', KW_CATEGORY_LOC, 0, 0,
184
    'International'
185
);
186
keyword('KW_EUROPE', KW_CATEGORY_LOC, 0, 0,
187
    'Europe'
188
);
189
    keyword('KW_CERN', KW_CATEGORY_LOC, 1, KW_EUROPE,
190
        'CERN'
191
    );
192
    keyword('KW_CZECH', KW_CATEGORY_LOC, 1, KW_EUROPE,
193
        'Czech Republic'
194
    );
195
        keyword('KW_CHARLES_PRAGUE', KW_CATEGORY_LOC, 2, KW_CZECH,
196
            'Charles University in Prague'
197
        );
198
    keyword('KW_FRANCE', KW_CATEGORY_LOC, 1, KW_EUROPE,
199
        'France'
200
    );
201
    keyword('KW_GERMANY', KW_CATEGORY_LOC, 1, KW_EUROPE,
202
        'Germany'
203
    );
204
        keyword('KW_AEI', KW_CATEGORY_LOC, 2, KW_GERMANY,
205
            'Albert Einstein Institute for Gravitational Physics'
206
        );
207
        keyword('KW_RECHENKRAFT', KW_CATEGORY_LOC, 2, KW_GERMANY,
208
            'Rechenkraft.net e.V'
209
        );
210
        keyword('KW_RHEINMAIN', KW_CATEGORY_LOC, 2, KW_GERMANY,
211
            'Hochschule RheinMain University of Applied Sciences'
212
        );
213
    keyword('KW_HOLLAND', KW_CATEGORY_LOC, 1, KW_EUROPE,
214
        'Holland'
215
    );
216
    keyword('KW_HUNGARY', KW_CATEGORY_LOC, 1, KW_EUROPE,
217
        'Hungary'
218
    );
219
    keyword('KW_IRELAND', KW_CATEGORY_LOC, 1, KW_EUROPE,
220
        'Ireland'
221
    );
222
        keyword('KW_UC_DUBLIN', KW_CATEGORY_LOC, 2, KW_IRELAND,
223
            'University College Dublin'
224
        );
225
    keyword('KW_POLAND', KW_CATEGORY_LOC, 1, KW_EUROPE,
226
        'Poland'
227
    );
228
        keyword('KW_U_WARSAW', KW_CATEGORY_LOC, 2, KW_POLAND,
229
            'University of Warsaw'
230
        );
231
    keyword('KW_RUSSIA', KW_CATEGORY_LOC, 1, KW_EUROPE,
232
        'Russia'
233
    );
234
        keyword('KW_SW_STATE_RUSSIA', KW_CATEGORY_LOC, 2, KW_RUSSIA,
235
            'Southwest State University, Russia'
236
        );
237
        keyword('KW_RAS', KW_CATEGORY_LOC, 2, KW_RUSSIA,
238
            'Russian Academy of Science'
239
        );
240
    keyword('KW_SPAIN', KW_CATEGORY_LOC, 1, KW_EUROPE,
241
        'Spain'
242
    );
243
        keyword('KW_SAN_JORGE', KW_CATEGORY_LOC, 2, KW_SPAIN,
244
            'San Jorge University, Zaragoza, Spain'
245
        );
246
        keyword('KW_PRBB', KW_CATEGORY_LOC, 2, KW_SPAIN,
247
            'Barcelona Biomedical Research Park'
248
        );
249
    keyword('KW_UK', KW_CATEGORY_LOC, 1, KW_EUROPE,
250
        'United Kingdom'
251
    );
252
        keyword('KW_OXFORD', KW_CATEGORY_LOC, 2, KW_UK,
253
            'Oxford University'
254
        );
255
keyword('KW_ASIA', KW_CATEGORY_LOC, 0, 0,
256
    'Asia'
257
);
258
    keyword('KW_CHINA', KW_CATEGORY_LOC, 1, KW_ASIA,
259
        'China'
260
    );
261
keyword('KW_OCEANIA', KW_CATEGORY_LOC, 0, 0,
262
    'Oceania'
263
);
264
    keyword('KW_AUSTRALIA', KW_CATEGORY_LOC, 1, KW_OCEANIA,
265
        'Australia'
266
    );
267
keyword('KW_AMERICAS', KW_CATEGORY_LOC, 0, 0,
268
    'Americas'
269
);
270
    keyword('KW_CANADA', KW_CATEGORY_LOC, 1, KW_AMERICAS,
271
        'Canada'
272
    );
273
    keyword('KW_US', KW_CATEGORY_LOC, 1, KW_AMERICAS,
274
        'United States'
275
    );
276
        keyword('KW_UCB', KW_CATEGORY_LOC, 2, KW_US,
277
            'University of California, Berkeley'
278
        );
279
        keyword('KW_UW', KW_CATEGORY_LOC, 2, KW_US,
280
            'University of Washington'
281
        );
282
        keyword('KW_U_DAYTON', KW_CATEGORY_LOC, 2, KW_US,
283
            'University of Dayton'
284
        );
285
        keyword('KW_WRIGHT_STATE', KW_CATEGORY_LOC, 2, KW_US,
286
            'Wright State University'
287
        );
288
        keyword('KW_USC', KW_CATEGORY_LOC, 2, KW_US,
289
            'University of Southern California'
290
        );
291
        keyword('KW_FULLERTON', KW_CATEGORY_LOC, 2, KW_US,
292
            'California State University Fullerton'
293
        );
294
        keyword('KW_ARIZONA_STATE', KW_CATEGORY_LOC, 2, KW_US,
295
            'Arizona State University'
296
        );
297
        keyword('KW_U_ILLINOIS', KW_CATEGORY_LOC, 2, KW_US,
298
            'University of Illinois'
299
        );
300
        keyword('KW_RPI', KW_CATEGORY_LOC, 2, KW_US,
301
            'Rensselaer Polytechnic Institute'
302
        );
303
        keyword('KW_UND', KW_CATEGORY_LOC, 2, KW_US,
304
            'University of North Dakota'
305
        );
306
307
// return a list of [value, name] pairs for the given category
308
//
309
function keyword_select_options($category) {
310
    global $job_keywords;
311
    $opts = [];
312
    kw_children();
313
    foreach ($job_keywords as $id=>$k) {
0 ignored issues
show
Expected 1 space before "=>"; 0 found
Loading history...
Expected 1 space after "=>"; 0 found
Loading history...
314
        if ($k->category != $category) continue;
315
        if ($k->parent) continue;
316
        $opts = array_merge($opts, kw_options($id));
317
    }
318
    return $opts;
319
}
320
321
function kw_children() {
322
    global $job_keywords;
323
    foreach ($job_keywords as $id=>$k) {
0 ignored issues
show
Expected 1 space before "=>"; 0 found
Loading history...
Expected 1 space after "=>"; 0 found
Loading history...
324
        $job_keywords[$id]->children = array();
325
        $job_keywords[$id]->expand = 0;
326
    }
327
    foreach ($job_keywords as $id=>$k) {
0 ignored issues
show
Expected 1 space before "=>"; 0 found
Loading history...
Expected 1 space after "=>"; 0 found
Loading history...
328
        if (!$k->parent) continue;
329
        $job_keywords[$k->parent]->children[] = $id;
330
    }
331
}
332
333
function kw_options($id, $indent='') {
334
    global $job_keywords;
335
    $kw = $job_keywords[$id];
336
    $opts = [[$id, "$indent$kw->name"]];
337
    $indent .= '&nbsp;&nbsp;&nbsp;&nbsp;';
338
    foreach ($kw->children as $k) {
339
        $opts = array_merge($opts, kw_options($k, $indent));
340
    }
341
    return $opts;
342
}
343
344
function kw_id_to_name($id) {
345
    global $job_keywords;
346
    $kw = $job_keywords[$id];
347
    return $kw->name;
348
}
349
350
function kw_array_to_str($kws, $sep='<br>') {
351
    $x = array_map('strval', $kws);
352
    $x = array_map('kw_id_to_name', $x);
353
    return implode($sep, $x);
354
}
355
356
?>
357