Issues (1965)

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
define('KW_PSU',            67);
94
define('KW_SU',             68);
95
define('KW_SINAI_U',        69);
96
define('KW_AFRICA',         70);
97
define('KW_EGYPT',          71);
98
99
$job_keywords = array();
100
101
function keyword($symbol, $category, $level, $parent, $name) {
102
    global $job_keywords;
103
    $x = (object)array(
104
        'category'=>$category,
105
        'level'=>$level,
106
        'parent'=>$parent,
107
        'name'=>$name,
108
        'symbol'=>$symbol
109
    );
110
    $job_keywords[constant($symbol)] = $x;
111
}
112
113
keyword('KW_ASTRONOMY', KW_CATEGORY_SCIENCE, 0, 0,
114
    'Astronomy'
115
);
116
    keyword('KW_SETI', KW_CATEGORY_SCIENCE, 1, KW_ASTRONOMY,
117
        'Search for Extraterrestrial Intelligence'
118
    );
119
    keyword('KW_PULSARS', KW_CATEGORY_SCIENCE, 1, KW_ASTRONOMY,
120
        'Detection and study of pulsars'
121
    );
122
    keyword('KW_GW', KW_CATEGORY_SCIENCE, 1, KW_ASTRONOMY,
123
        'Detection and study of gravitational waves'
124
    );
125
    keyword('KW_COSMOLOGY', KW_CATEGORY_SCIENCE, 1, KW_ASTRONOMY,
126
        'Cosmology'
127
    );
128
keyword('KW_CHEMISTRY', KW_CATEGORY_SCIENCE, 0, 0,
129
    'Chemistry'
130
);
131
keyword('KW_PHYSICS', KW_CATEGORY_SCIENCE, 0, 0,
132
    'Physics'
133
);
134
    keyword('KW_PARTICLE_PHYSICS', KW_CATEGORY_SCIENCE, 1, KW_PHYSICS,
135
        'Particle physics'
136
    );
137
    keyword('KW_NANOSCIENCE', KW_CATEGORY_SCIENCE, 1, KW_PHYSICS,
138
        'Nanoscience'
139
    );
140
keyword('KW_BIOMED', KW_CATEGORY_SCIENCE, 0, 0,
141
    'Biology and Medicine'
142
);
143
    keyword('KW_DRUG_DISCOVERY', KW_CATEGORY_SCIENCE, 1, KW_BIOMED,
144
        'Drug discovery'
145
    );
146
    keyword('KW_PROTEINS', KW_CATEGORY_SCIENCE, 1, KW_BIOMED,
147
        'Protein research'
148
    );
149
    keyword('KW_GENETICS', KW_CATEGORY_SCIENCE, 1, KW_BIOMED,
150
        'Genetics and Phylogeny'
151
    );
152
    keyword('KW_DISEASE', KW_CATEGORY_SCIENCE, 1, KW_BIOMED,
153
        'Disease research'
154
    );
155
        keyword('KW_CANCER', KW_CATEGORY_SCIENCE, 2, KW_DISEASE,
156
            'Cancer research'
157
        );
158
        keyword('KW_VIRUS', KW_CATEGORY_SCIENCE, 2, KW_DISEASE,
159
            'COVID-19 and virology'
160
        );
161
keyword('KW_MATH_CS', KW_CATEGORY_SCIENCE, 0, 0,
162
    'Mathematics and Computer Science'
163
);
164
    keyword('KW_NUMBER_THEORY', KW_CATEGORY_SCIENCE, 1, KW_MATH_CS,
165
        'Number Theory'
166
    );
167
    keyword('KW_CRYPTO', KW_CATEGORY_SCIENCE, 1, KW_MATH_CS,
168
        'Cryptography'
169
    );
170
    keyword('KW_GAMES', KW_CATEGORY_SCIENCE, 1, KW_MATH_CS,
171
        'Games'
172
    );
173
keyword('KW_AI', KW_CATEGORY_SCIENCE, 0, 0,
174
    'Artificial Intelligence and Cognitive Science'
175
);
176
keyword('KW_EARTH_SCI', KW_CATEGORY_SCIENCE, 0, 0,
177
    'Earth sciences'
178
);
179
    keyword('KW_ENV_RESEARCH', KW_CATEGORY_SCIENCE, 1, KW_EARTH_SCI,
180
        'Environmental research'
181
    );
182
    keyword('KW_CLIMATE', KW_CATEGORY_SCIENCE, 1, KW_EARTH_SCI,
183
        'Climate research'
184
    );
185
186
// Locations
187
188
keyword('KW_INTERNATIONAL', KW_CATEGORY_LOC, 0, 0,
189
    'International'
190
);
191
keyword('KW_EUROPE', KW_CATEGORY_LOC, 0, 0,
192
    'Europe'
193
);
194
    keyword('KW_CERN', KW_CATEGORY_LOC, 1, KW_EUROPE,
195
        'CERN'
196
    );
197
    keyword('KW_CZECH', KW_CATEGORY_LOC, 1, KW_EUROPE,
198
        'Czech Republic'
199
    );
200
        keyword('KW_CHARLES_PRAGUE', KW_CATEGORY_LOC, 2, KW_CZECH,
201
            'Charles University in Prague'
202
        );
203
    keyword('KW_FRANCE', KW_CATEGORY_LOC, 1, KW_EUROPE,
204
        'France'
205
    );
206
    keyword('KW_GERMANY', KW_CATEGORY_LOC, 1, KW_EUROPE,
207
        'Germany'
208
    );
209
        keyword('KW_AEI', KW_CATEGORY_LOC, 2, KW_GERMANY,
210
            'Albert Einstein Institute for Gravitational Physics'
211
        );
212
        keyword('KW_RECHENKRAFT', KW_CATEGORY_LOC, 2, KW_GERMANY,
213
            'Rechenkraft.net e.V'
214
        );
215
        keyword('KW_RHEINMAIN', KW_CATEGORY_LOC, 2, KW_GERMANY,
216
            'Hochschule RheinMain University of Applied Sciences'
217
        );
218
    keyword('KW_HOLLAND', KW_CATEGORY_LOC, 1, KW_EUROPE,
219
        'Holland'
220
    );
221
    keyword('KW_HUNGARY', KW_CATEGORY_LOC, 1, KW_EUROPE,
222
        'Hungary'
223
    );
224
    keyword('KW_IRELAND', KW_CATEGORY_LOC, 1, KW_EUROPE,
225
        'Ireland'
226
    );
227
        keyword('KW_UC_DUBLIN', KW_CATEGORY_LOC, 2, KW_IRELAND,
228
            'University College Dublin'
229
        );
230
    keyword('KW_POLAND', KW_CATEGORY_LOC, 1, KW_EUROPE,
231
        'Poland'
232
    );
233
        keyword('KW_U_WARSAW', KW_CATEGORY_LOC, 2, KW_POLAND,
234
            'University of Warsaw'
235
        );
236
    keyword('KW_RUSSIA', KW_CATEGORY_LOC, 1, KW_EUROPE,
237
        'Russia'
238
    );
239
        keyword('KW_SW_STATE_RUSSIA', KW_CATEGORY_LOC, 2, KW_RUSSIA,
240
            'Southwest State University, Russia'
241
        );
242
        keyword('KW_RAS', KW_CATEGORY_LOC, 2, KW_RUSSIA,
243
            'Russian Academy of Science'
244
        );
245
    keyword('KW_SPAIN', KW_CATEGORY_LOC, 1, KW_EUROPE,
246
        'Spain'
247
    );
248
        keyword('KW_SAN_JORGE', KW_CATEGORY_LOC, 2, KW_SPAIN,
249
            'San Jorge University, Zaragoza, Spain'
250
        );
251
        keyword('KW_PRBB', KW_CATEGORY_LOC, 2, KW_SPAIN,
252
            'Barcelona Biomedical Research Park'
253
        );
254
    keyword('KW_UK', KW_CATEGORY_LOC, 1, KW_EUROPE,
255
        'United Kingdom'
256
    );
257
        keyword('KW_OXFORD', KW_CATEGORY_LOC, 2, KW_UK,
258
            'Oxford University'
259
        );
260
keyword('KW_ASIA', KW_CATEGORY_LOC, 0, 0,
261
    'Asia'
262
);
263
    keyword('KW_CHINA', KW_CATEGORY_LOC, 1, KW_ASIA,
264
        'China'
265
    );
266
keyword('KW_OCEANIA', KW_CATEGORY_LOC, 0, 0,
267
    'Oceania'
268
);
269
    keyword('KW_AUSTRALIA', KW_CATEGORY_LOC, 1, KW_OCEANIA,
270
        'Australia'
271
    );
272
273
keyword('KW_AFRICA', KW_CATEGORY_LOC, 0, 0,
274
    'Africa'
275
);
276
    keyword('KW_EGYPT', KW_CATEGORY_LOC, 1, KW_AFRICA,
277
        'Egypt'
278
    );
279
        keyword('KW_SINAI_U', KW_CATEGORY_LOC, 2, KW_EGYPT,
280
            'Sinai University'
281
        );
282
283
keyword('KW_AMERICAS', KW_CATEGORY_LOC, 0, 0,
284
    'Americas'
285
);
286
    keyword('KW_CANADA', KW_CATEGORY_LOC, 1, KW_AMERICAS,
287
        'Canada'
288
    );
289
    keyword('KW_US', KW_CATEGORY_LOC, 1, KW_AMERICAS,
290
        'United States'
291
    );
292
        keyword('KW_UCB', KW_CATEGORY_LOC, 2, KW_US,
293
            'University of California, Berkeley'
294
        );
295
        keyword('KW_UW', KW_CATEGORY_LOC, 2, KW_US,
296
            'University of Washington'
297
        );
298
        keyword('KW_U_DAYTON', KW_CATEGORY_LOC, 2, KW_US,
299
            'University of Dayton'
300
        );
301
        keyword('KW_WRIGHT_STATE', KW_CATEGORY_LOC, 2, KW_US,
302
            'Wright State University'
303
        );
304
        keyword('KW_USC', KW_CATEGORY_LOC, 2, KW_US,
305
            'University of Southern California'
306
        );
307
        keyword('KW_FULLERTON', KW_CATEGORY_LOC, 2, KW_US,
308
            'California State University Fullerton'
309
        );
310
        keyword('KW_ARIZONA_STATE', KW_CATEGORY_LOC, 2, KW_US,
311
            'Arizona State University'
312
        );
313
        keyword('KW_U_ILLINOIS', KW_CATEGORY_LOC, 2, KW_US,
314
            'University of Illinois'
315
        );
316
        keyword('KW_RPI', KW_CATEGORY_LOC, 2, KW_US,
317
            'Rensselaer Polytechnic Institute'
318
        );
319
        keyword('KW_UND', KW_CATEGORY_LOC, 2, KW_US,
320
            'University of North Dakota'
321
        );
322
        keyword('KW_PSU', KW_CATEGORY_LOC, 2, KW_US,
323
            'Penn State University'
324
        );
325
        keyword('KW_SU', KW_CATEGORY_LOC, 2, KW_US,
326
            'Shenandoah University'
327
        );
328
329
// return a list of [value, name] pairs for the given category
330
//
331
function keyword_select_options($category) {
332
    global $job_keywords;
333
    $opts = [];
334
    kw_children();
335
    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...
336
        if ($k->category != $category) continue;
337
        if ($k->parent) continue;
338
        $opts = array_merge($opts, kw_options($id));
339
    }
340
    return $opts;
341
}
342
343
function kw_children() {
344
    global $job_keywords;
345
    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...
346
        $job_keywords[$id]->children = array();
347
        $job_keywords[$id]->expand = 0;
348
    }
349
    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...
350
        if (!$k->parent) continue;
351
        $job_keywords[$k->parent]->children[] = $id;
352
    }
353
}
354
355
function kw_options($id, $indent='') {
356
    global $job_keywords;
357
    $kw = $job_keywords[$id];
358
    $opts = [[$id, "$indent$kw->name"]];
359
    $indent .= '&nbsp;&nbsp;&nbsp;&nbsp;';
360
    foreach ($kw->children as $k) {
361
        $opts = array_merge($opts, kw_options($k, $indent));
362
    }
363
    return $opts;
364
}
365
366
function kw_id_to_name($id) {
367
    global $job_keywords;
368
    $kw = $job_keywords[$id];
369
    return $kw->name;
370
}
371
372
function kw_array_to_str($kws, $sep='<br>') {
373
    $x = array_map('strval', $kws);
374
    $x = array_map('kw_id_to_name', $x);
375
    return implode($sep, $x);
376
}
377
378
?>
379