Projekt

Obecné

Profil

Stáhnout (32.9 KB) Statistiky
| Větev: | Tag: | Revize:
1
<?php  
2
mb_internal_encoding('UTF-8');
3
session_start();
4

    
5
  require_once("./classes/db.php");
6
  require_once "./functions/new_hebrew_format.php";
7

    
8

    
9
  define('CESTA_SLOV', "voices/word/");
10
  define('PRIPONA', ".mp3");
11
  define('CESTA_CLANKU', "voices/article/");
12
  define('CESTA_KONTEXTU', "voices/context/");
13
  define('MAX_ODEZVA', 60 * 60 * 60);
14
/*
15
function register_globals($order = 'egpcs')
16
{
17
    // define a subroutine
18
    if(!function_exists('register_global_array'))
19
    {
20
        function register_global_array(array $superglobal)
21
        {
22
            foreach($superglobal as $varname => $value)
23
            {
24
                global $$varname;
25
                $$varname = $value;
26
            }
27
        }
28
    }
29
   
30
    $order = explode("\r\n", trim(chunk_split($order, 1)));
31
    foreach($order as $k)
32
    {
33
        switch(strtolower($k))
34
        {
35
            case 'e':    register_global_array($_ENV);        break;
36
            case 'g':    register_global_array($_GET);        break;
37
            case 'p':    register_global_array($_POST);        break;
38
            case 'c':    register_global_array($_COOKIE);    break;
39
            case 's':    register_global_array($_SERVER);    break;
40
        }
41
    }
42
}
43
  
44
*/
45
  
46
  function prihlasit($jmeno, $heslo) {
47
  global $_SESSION;
48
  if (!Empty($jmeno) && !Empty($heslo)) {
49
    $DB = new DB_Sql();
50
    $DB->query( "select * " .
51
    		"from \"user\" " .
52
    		"where nick = '".pg_escape_string($jmeno)."' " .
53
    				"and pass = '".pg_escape_string($heslo)."'");//, array($jmeno, $heslo) );
54
    $DB->next_record();
55
    if ($DB->num_rows() != 1)
56
      return false;
57
    session_regenerate_id();
58
    $_SESSION['ses_nick'] = $DB->Record['nick'];
59
    $_SESSION['ses_IDuser'] = $DB->Record['IDuser'];
60
    $_SESSION['ses_date_last_visit'] = time();
61
    $_SESSION['ses_level'] = $DB->Record['privileges'];
62
    $_SESSION['ses_name'] = $DB->Record['name'];
63
    $_SESSION['ses_surname'] = $DB->Record['surname'];
64

    
65
	pr($_SESSION);
66

    
67
    $number_of_usage = $DB->Record["number_of_usage"];
68
	$number_of_usage++;
69

    
70
    $dotaz = "UPDATE \"user\" SET date_last_visit = now(),
71
                            number_of_usage = '$number_of_usage'
72
                            WHERE \"IDuser\" = ".$_SESSION["ses_IDuser"];
73
    $DB->query($dotaz);
74
	clean_old_examinations($_SESSION["ses_IDuser"]);
75

    
76
    return true;
77
  }
78
  return false;
79
}
80

    
81
function kontrola_pristupu($level = 0) {
82
  global $_SESSION;
83
  //pr($_SESSION);
84
  if(Empty($_SESSION['ses_nick'])) return false;
85
  if(Empty($_SESSION['ses_date_last_visit'])) return false;
86
  if ($_SESSION['ses_date_last_visit']+MAX_ODEZVA < time()) return false;
87
  if ($_SESSION['ses_level'] < $level) return false;
88
  $_SESSION['ses_date_last_visit'] = time();
89
  return true;
90
}
91

    
92
function odhlasit() {
93
  global $_SESSION;
94
  session_regenerate_id();
95
  //p_g($_SESSION);
96
}
97

    
98
function pr($neco) {
99
	p_g($neco);
100
}
101

    
102
function p_g($neco) {
103
	echo "<pre>";
104
	print_r($neco);
105
	echo "</pre>";
106
} // END function p_g
107

    
108
function CzStrToLower($str) {
109

    
110
  /*$str = StrTr($str,
111
           "ABCDEFGHIJKLMNOPQRSTUVWXYZÁÉĚÍÓÚŮÝŠČŘŽŇŤĎ",
112
           "abcdefghijlkmnopqrstuvwxyzáéěíóúůýščřžňťď");
113
  */
114
  $str = mb_strtolower($str, "UTF-8");
115
  //echo "str = $str<br />";
116
  return $str;
117
}
118

    
119

    
120
function lang($idf) {
121
  global $LaId; // nastaveno na základě části URL
122
  if (!IsSet($LaId)) {
123
    $_SESSION["LaId"] = "cz";
124
  }
125
  $LaId = $_SESSION["LaId"];
126

    
127
  static $translations;
128
  if (!isset($translations)) {
129
    $spojeni = new DB_Sql();
130
    $dotaz = "SELECT idf, translation FROM translation WHERE language = '$LaId'";
131
    $spojeni->query($dotaz);
132
    while ($spojeni->next_record()) {
133
      $translations[$spojeni->Record["idf"]] = $spojeni->Record["translation"];
134
    }
135
  }
136
  return (isset($translations[$idf]) ? $translations[$idf] : $idf);
137
}
138

    
139
//pouzivat bud lang() nebo lang_cist_cele_najednou()
140
//nakonec vybrat podle rychlosti
141

    
142

    
143
function lang_cist_cele_najednou($idf) {
144
  global $LaId; // nastaveno na základě části URL
145
  if (!IsSet($LaId))
146
    $LaId = "cz";
147
  static $translations;
148

    
149
  require_once("./classes/db.php");
150
  $spojeni = new DB_Sql();
151
  $dotaz = "SELECT translation FROM translation WHERE idf = '" . addslashes($idf) . "' AND language = '$LaId'";
152
  $row = $spojeni->query($dotaz);
153
  // při neexistujícím překladu je vrácen identifikátor
154
  if ($spojeni->num_rows() != 0) {
155
    $spojeni->next_record();
156
    return $spojeni->Record[0];
157
  }
158
  else {
159
    return $idf;
160
  }
161
}
162

    
163

    
164
function clean_old_examinations($ses_IDuser) {
165
  require_once("./classes/db.php");
166
  $spojeni = new DB_Sql();
167
  $dotaz = "SELECT e.*,
168
                   (now() - 3 * INTERVAL '1 month') as before_three_month
169
            FROM examing e
170
            WHERE e.date < (now() - 3 * INTERVAL '1 month')
171
              AND e.\"user\" = ".$_SESSION['ses_IDuser']."
172
            ORDER BY e.date;";
173
  $radky = $spojeni->query($dotaz);
174
  while ($spojeni->next_record()) {
175
    $id = $spojeni->Record["IDexaming"];
176
    $dotaz = "DELETE FROM exam WHERE examing = $id";
177
    $spojeni->query($dotaz);
178
    $dotaz = "DELETE FROM examing WHERE \"IDexaming\" = $id";
179
    $spojeni->query($dotaz);
180
  }
181
}
182

    
183
function translation_chooser() {
184
  require_once("./classes/db.php");
185
  $spojeni = new DB_Sql();
186
  $dotaz = "SELECT code FROM translation_lang WHERE visible <> 0";
187
  $radky = $spojeni->query($dotaz);
188
  foreach ($radky as $radka) {
189
      echo '<a href="?set_lang=' . $radka['code'] . '">' . $radka['code'] . '</a>&nbsp;';
190
	}
191
}
192

    
193
function copyright() {
194
  //global $LaId;
195
  //echo ('<div class="copyright"><a href="http://www.e-beda.cz" class="active">created by e-beda.cz</a></div>');
196
  //echo ("\$LaId = $LaId");
197
}
198

    
199
function insert_picture( $class = "obrazek" ) {
200
  require_once("./classes/db.php");
201
  $spojeni = new DB_Sql();
202
  $dotaz = "SELECT * FROM pictures ORDER BY RAND() LIMIT 1";
203
  $radky = $spojeni->query($dotaz);
204

    
205
  if(!$radky){
206
      echo "Chyba pri vyberu obrazku...";
207
      return false;
208
  }
209

    
210
  $obrazek = mysqli_fetch_assoc($radky);
211
  if (empty($obrazek)) {
212
    echo "Chyba pri vyberu obrazku...";
213
    return false;
214
  }
215
  else {
216
    $nazev_souboru = $obrazek["name_of_picture"];
217
    $cesky = $obrazek["czech"];
218
    $anglicky = $obrazek["english"];
219
    $arabsky = $obrazek["orig"];
220

    
221
  $navrat .= "
222
<div id=\"$class\">
223
  <table>
224
    <tr>
225
      <td dir=\"rtl\">
226
        <img src = \"./pictures/$nazev_souboru\"
227
             title = \"$cesky - $anglicky - $arabsky\" />
228
        <br />
229
        <h2 class = \"arabic\">
230
          $arabsky
231
        </h2>
232
      </td>
233
    </tr>
234
  </table>
235

    
236
</div>";
237

    
238

    
239
    echo $navrat;
240
  }
241
}
242

    
243

    
244
function print_context_chooser($source_id) {
245
  require_once("./classes/db.php");
246
  $spojeni = new DB_Sql();
247
  $dotaz = "SELECT * FROM context WHERE source LIKE '$source_id'";
248
  $radky = $spojeni->query($dotaz);
249
  if ($spojeni->num_rows() == 0) {
250
    echo "Bohužel u tohoto zdroje zatím nejsou žádné kontexty,
251
               můžete je přidat ze slovníku, zvolením položky kontext->přidej";
252
    return false;
253
  }
254
  else {
255
    $navrat = "<select name=\"context\" size=\"6\">";
256
    while ($spojeni->next_record()) {
257
      $navrat .= "  <option value=\"".$spojeni->Record["IDcontext"]."\">  ".
258
                  $spojeni->Record[cz_context]." - ".
259
                  $spojeni->Record[en_context]." - ".
260
                  $spojeni->Record[orig_context].
261
                  "  </option>\n";
262
    }
263
    $navrat .= '</select>';
264
  }
265
  echo $navrat;
266
  return true;
267
}
268

    
269

    
270
function get_translation_chooser() {
271
  require_once("./classes/db.php");
272
  $spojeni = new DB_Sql();
273
  $dotaz = "SELECT * FROM translation_lang";
274
  $spojeni->query($dotaz);
275
  $navrat = "<select name=\"translation_lang_id\" size=\"4\">";
276
  while ($spojeni->next_record()) {
277
    $navrat .= "  <option value=\"".$spojeni->Record["code"]."\">  ".$spojeni->Record["name"]."  </option>";
278
  }
279
  $navrat .= '</select>';
280
  return $navrat;
281
}
282

    
283
function get_field_chooser() {
284
  require_once("./classes/db.php");
285
  $spojeni = new DB_Sql();
286
  $dotaz = "SELECT * FROM field";
287
  $radky = $spojeni->query($dotaz);
288
  $navrat = "<select name=\"field\" size=\"1\">";
289
  while ($spojeni->next_record()) {
290
    $navrat .= "  <option value=\"".$spojeni->Record[0]."\">  ".$spojeni->Record[1]."  </option>";
291
  }
292
  $navrat .= '</select>';
293
  return $navrat;
294
}
295
/*
296
function getTree($table, $id, $parent_id, $parent, $level) { 
297
  require_once("./classes/db.php");
298
  $spojeni = new DB_Sql();
299
  
300
  $dotaz = 'SELECT * FROM '.$table.' WHERE '.$parent_id.'='.$parent; 
301
  $spojeni->query($dotaz);
302
  
303
  $ret = array();
304
  while ($spojeni->next_record()) { 
305
    $row = $spojeni->Record;
306
  
307
    $r['level'] = $level;
308
    $r['row'] = $row;
309
    
310
    $ret[] = $r;
311
    
312
    $children = getTree($table, $id, $parent_id, $row[$id], $level+1); 
313
    
314
    foreach ($children as $child) {
315
        $ret[] = $child;
316
    }
317
    
318
  } 
319
  return $ret;
320
}
321

    
322
function get_test_category_chooser($chosen) {
323

    
324
  $data = getTree('test_category', 'id', 'parent_id', 0, 1);//print_r($data);
325
  
326
  $navrat = "<select name=\"test_category\" size=\"1\">";
327
  $navrat .= '<option value="NULL">             </option>';
328

    
329
  foreach($data as $node) {
330
    $navrat .= "  <option value=\"".$node['row'][0]."\"";
331
    if($chosen == $node['row'][0]) $navrat .= " selected=\"selected\"";
332
    $navrat .= ">  ".str_repeat("-&nbsp;",$node['level']).$node['row'][2]."  </option>";
333
  }
334
  $navrat .= '</select>';
335
  return $navrat;
336
}
337
*/
338
function get_author_chooser() {
339
  require_once("./classes/db.php");
340
  $spojeni = new DB_Sql();
341
  $dotaz = "SELECT * FROM author";
342
  $radky = $spojeni->query($dotaz);
343
  $navrat = "<select name=\"author_id\" size=\"1\">\n";
344
  while ($spojeni->next_record()) {
345
    $navrat .= "  <option value=\"".$spojeni->Record[0]."\">  ".
346
                         $spojeni->Record[1]." ".$spojeni->Record[2]."  </option>\n";
347
  }
348
  $navrat .= "</select>\n";
349
  return $navrat;
350
}
351

    
352

    
353
function insert_language_chooser() {
354
  echo get_language_chooser();
355
}
356

    
357
function get_language_chooser($size = 1) {
358
  require_once("./classes/db.php");
359
  $spojeni = new DB_Sql();
360
  $dotaz = "SELECT * FROM \"language\"";
361
  $radky = $spojeni->query($dotaz);
362
  $navrat = "<select name=\"language\" size=\"$size\">";
363
  while ($spojeni->next_record()) {
364
    $navrat .= "  <option value=\"".$spojeni->Record[0]."\">  ".$spojeni->Record[1]."  </option>";
365
  }
366
  $navrat .= '</select>';
367
  return $navrat;
368
}
369

    
370
function get_source_chooser($language, $nazev = "source") {
371
  require_once("./classes/db.php");
372
  $spojeni = new DB_Sql();
373
  $dotaz = "SELECT * FROM source";
374
  if (!Empty($language))
375
   $dotaz .= " WHERE \"language\" = '$language'";
376
  $radky = $spojeni->query($dotaz);
377
  $navrat = "<select name=\"$nazev\" size=\"1\">";
378
  while ($spojeni->next_record()) {
379
    $navrat .= "  <option value=\"".$spojeni->Record[0]."\">  ".$spojeni->Record[1]." - ".$spojeni->Record[2]."  </option>";
380
  }
381
  $navrat .= '</select>';
382
  return $navrat;
383
}
384

    
385
function get_lection_chooser($source, $size = 1, $nazev = "lection") {
386
  require_once("./classes/db.php");
387
  $spojeni = new DB_Sql();
388
  $dotaz  = "SELECT lection FROM dict WHERE source = '$source' GROUP BY lection ORDER BY lection ";
389
  $radky = $spojeni->query($dotaz);
390
  $navrat = "<select name=\"$nazev\" size=\"$size\">";
391
  $i = 0;
392
  while ($spojeni->next_record()) {
393
    $cisla[$i] = 0 + ($spojeni->Record["lection"]);
394
    $hodnoty[$i] = $spojeni->Record["lection"];
395
    $i++;
396
  }
397
  if (count($cisla) <= 0) {
398
  	return "prazdne";
399
  }
400
  asort($cisla);
401
  foreach ($cisla as $klic => $cislo) {
402
    $navrat .= "  <option value=\"".$hodnoty[$klic]."\"> ".lang("lekce")." ".$hodnoty[$klic]."  </option>";
403
  }
404
  $navrat .= '</select>';
405
  return $navrat;
406
}
407

    
408
function get_lection_chooser_article($source, $size = 1, $nazev = "lection") {
409
  require_once("./classes/db.php");
410
  $spojeni = new DB_Sql();
411
  $dotaz  = "SELECT lection FROM article WHERE source = '$source' GROUP BY lection ORDER BY lection ";
412
  $radky = $spojeni->query($dotaz);
413
  $navrat = "<select name=\"$nazev\" size=\"$size\">";
414
  $i = 0;
415
  while ($spojeni->next_record()) {
416
    $cisla[$i] = 0 + ($spojeni->Record["lection"]);
417
    $hodnoty[$i] = $spojeni->Record["lection"];
418
    $i++;
419
  }
420
  if (count($cisla) <= 0) {
421
  	return "prazdne";
422
  }
423
  asort($cisla);
424
  foreach ($cisla as $klic => $cislo) {
425
    $navrat .= "  <option value=\"".$hodnoty[$klic]."\"> ".lang("lekce")." ".$hodnoty[$klic]."  </option>";
426
  }
427
  $navrat .= '</select>';
428
  return $navrat;
429
}
430

    
431
function get_lection_chooser_test($source, $size = 1, $nazev = "lection") {
432
  require_once("./classes/db.php");
433
  $spojeni = new DB_Sql();
434
  $dotaz  = "SELECT lection FROM test WHERE source = '$source' GROUP BY lection ORDER BY lection ";
435
  $radky = $spojeni->query($dotaz);
436
  $navrat = "<select name=\"$nazev\" size=\"$size\">";
437
  $i = 0;
438
  while ($spojeni->next_record()) {
439
    $cisla[$i] = 0 + ($spojeni->Record["lection"]);
440
    $hodnoty[$i] = $spojeni->Record["lection"];
441
    $i++;
442
  }
443
  if (count($cisla) <= 0) {
444
  	return "prazdne";
445
  }
446
  asort($cisla);
447
  foreach ($cisla as $klic => $cislo) {
448
    $navrat .= "  <option value=\"".$hodnoty[$klic]."\"> ".lang("lekce")." ".$hodnoty[$klic]."  </option>";
449
  }
450
  $navrat .= '</select>';
451
  return $navrat;
452
}
453

    
454
function get_count_chooser($source, $lection, $size = 1) {
455
  require_once("./classes/db.php");
456
  $spojeni = new DB_Sql();
457
  $dotaz  = "SELECT czech FROM dict WHERE source = '$source' AND lection = '$lection' ";
458
  $radky = $spojeni->query($dotaz);
459
  $max = $spojeni->num_rows();
460
  $navrat = lang("V této lekci je ").$max.lang(" slovíček ")." <br /> <br />\n";
461
  $navrat .= lang("Počet slovíček ke zkoušení: \n");
462
  $navrat .= "<select name=\"count\" size=\"$size\">";
463
  for ($count = 10; $count < $max; $count += 10) {
464
    $navrat .= "  <option value=\"".$count."\">  ".$count."  </option>";
465
  }
466
  $navrat .= "  <option value=\"".$spojeni->num_rows()."\">  ".$max."  </option>";
467
  $navrat .= '</select>';
468
  return $navrat;
469
}
470

    
471

    
472
function print_hlasku($text) {
473
  echo "<h4 class=\"nadpis3\">".$text."</h4> \n";
474
}
475

    
476
function is_in_dictionary_past($past, $source, $lection) {
477
  if (Empty($past) || (Trim($past) == "")) return false;
478
  require_once("./classes/db.php");
479
  $spojeni = new DB_Sql();
480
  $dotaz = "SELECT past FROM dict WHERE past LIKE '$past' AND source = $source AND lection LIKE '$lection'";
481
  $spojeni->query($dotaz);
482
  if ($spojeni->Errno != 0) {
483
    print_hlasku($spojeni->$Error);
484
    return false;
485
  }
486
  //echo $spojeni->num_rows();
487
  if ($spojeni->num_rows() > 0)
488
    return true;
489

    
490
  return false;
491
}
492

    
493
/**
494
 *  Funkce prida do databaze slovicko.
495
 *
496
 *
497
 *  TODO: UPRAVIT OSTATNI DATA VKLADANA DO DB (DATA, USER, ATD...)
498
 *        DODELAT UPLOAD ZVUKOVEHO SOUBORU
499
 *  @return true   kdyz se to povede
500
 *  @return false  naopak
501
 */
502
function insert_word($czech,$english,$word_category,$verbal_class,$present,$past,$valence,$root,
503
                     $field,$language,$user,$source,$lection, $future, $infinitive, $gender, $vocalized, $nonvocalized,
504
                     $word_category_foreign, $status_constructus_single, $status_constructus_plural, $single_adj_female,
505
                      $plural_adj_female, $conjugation, $imperative, $prefix, $status_constructus_single_female,
506
		      $status_constructus_plural_female,
507
		      $czech_female, $single_female, $plural_female, 
508
                      $status_constructus_single_noun_female, $status_constructus_plural_noun_female,
509
		      $nonvocalized_female, $nonvocalized_alternative, $vocalized_alternative) {
510

    
511
  require_once("./classes/db.php");
512
  $spojeni = new DB_Sql();
513
  /*
514
  //pokud uz je ve slovniku nebude se znovu vkladat
515
  if (is_in_dictionary_past($past, $source, $lection)) {
516
    print_hlasku ("Slovíčko '$past - $czech - $english' nebylo přidáno, již je ve slovníku...");
517
    return false;
518
  }
519
  */
520

    
521
  //$NOW = Date("YmdHis");
522
   $dotaz = "INSERT INTO dict (czech,
523
                            english,
524
                            word_category,
525
                            verbal_class,
526
                            present,
527
                            past,
528
                            future,
529
                            infinitive,
530
                            valence,
531
                            vocalized,
532
                            nonvocalized,
533
                            root,
534
                            gender,
535
                            field,
536
                            source,
537
                            lection,
538
                            language,
539
                            usr,
540
                            date_created,
541
                            context,
542
                            autorized,
543
                            word_category_foreign,
544
                            status_constructus_single,
545
                            status_constructus_plural,
546
                            single_adj_female,
547
                            plural_adj_female,
548
                            conjugation,
549
                            imperative,
550
			    prefix,
551
			    status_constructus_single_female,
552
			    status_constructus_plural_female,
553
			    czech_female, 
554
			    single_female, 
555
			    plural_female, 
556
			    status_constructus_single_noun_female, 
557
			    status_constructus_plural_noun_female,
558
			    nonvocalized_female,
559
			    nonvocalized_alternative,
560
			    vocalized_alternative
561
)
562
                    VALUES ('".AddSlashes($czech)."',
563
                            '".AddSlashes($english)."',
564
                            '".AddSlashes($word_category)."',
565
                            '".AddSlashes($verbal_class)."',
566
                            '".AddSlashes($present)."',
567
                            '".AddSlashes($past)."',
568
                            '".AddSlashes($future)."',
569
                            '".AddSlashes($infinitive)."',
570
                            '".AddSlashes($valence)."',
571
                            '".AddSlashes($vocalized)."',
572
                            '".AddSlashes($nonvocalized)."',
573
                            '".AddSlashes($root)."',
574
                            '".AddSlashes($gender)."',
575
                            '".AddSlashes($field)."',
576
                            '".AddSlashes($source)."',
577
                            '".AddSlashes($lection)."',
578
                            '".AddSlashes($language)."',
579
                            '".AddSlashes($user)."',
580
                            'NOW',
581
                            '0',
582
                            '0',
583
                            '".AddSlashes($word_category_foreign)."', 
584
                            '".AddSlashes($status_constructus_single)."', 
585
                            '".AddSlashes($status_constructus_plural)."',
586
                            '".AddSlashes($single_adj_female)."',
587
                            '".AddSlashes($plural_adj_female)."', 
588
                            '".AddSlashes($conjugation)."', 
589
                            '".AddSlashes($imperative)."',
590
			    '".AddSlashes($prefix)."',
591
			    '".AddSlashes($status_constructus_single_female)."',
592
			    '".AddSlashes($status_constructus_plural_female)."',
593
			    '".AddSlashes($czech_female)."', 
594
			    '".AddSlashes($single_female)."', 
595
			    '".AddSlashes($plural_female)."', 
596
			    '".AddSlashes($status_constructus_single_noun_female)."', 
597
			    '".AddSlashes($status_constructus_plural_noun_female)."',
598
			    '".AddSlashes($nonvocalized_female)."',
599
			    '".AddSlashes($nonvocalized_alternative)."',
600
			    '".AddSlashes($vocalized_alternative)."'
601
)";
602
  $spojeni->query($dotaz);
603
  if ($spojeni->Errno != 0) {
604
    print_hlasku($spojeni->$Error);
605
    return false;
606
  }
607
  return true;
608
}
609

    
610

    
611
function save_to_not_found($direction, $word) {
612
  require_once("./classes/db.php");
613
  $spojeni = new DB_Sql();
614
  $dotaz = "SELECT * FROM not_found_$direction WHERE not_found LIKE '$word'";
615
  $radky = $spojeni->query($dotaz);
616
  if ($spojeni->num_rows() == 0)  {
617
    $dotaz = "INSERT INTO not_found_$direction (not_found,
618
                          date,
619
                          count)
620
                  VALUES ('$word', 'NOW', 1)";
621
  }
622
  else {
623
    $spojeni->next_record();
624
    $pocet = $spojeni->Record["count"];
625
    $pocet++;
626
    $identifikator = $spojeni->Record["IDnot_found_$direction"];
627
    $dotaz = "UPDATE not_found_$direction
628
              SET count = $pocet
629
              WHERE \"IDnot_found_$direction\" = $identifikator";
630
  }
631
  $spojeni->query($dotaz);
632
}
633

    
634

    
635

    
636
function __get_word_in_card_format($Record) {
637
  //global CESTA_KONTEXTU, PRIPONA, CESTA_SLOV;
638
  require_once("./administration/context.php");
639

    
640
  $navrat = "<div class=\"card\">\n<br />";
641
  $navrat .= " \n     ";
642

    
643
  $navrat .= $Record["czech"];
644
  $navrat .= "&nbsp;  - \n";
645
  $navrat .= $Record["english"];
646
  $navrat .= "&nbsp;   \n";
647
 
648
  //if(!empty($Record["gender"])) 
649
  //		$navrat .= " (".$Record["gender"].".) "; 
650
  $navrat .= "<div lang=\"he\" dir=\"rtl\">";
651
  
652
  $navrat .= "<span class=\"big arabic\">";
653
  $navrat .= (!empty($Record["past"]))? $Record["past"] : $Record["present"] ;
654
  $navrat .= "</span>";
655
  
656
  $Record["gender"] = trim($Record["gender"]);
657
  if(!empty( $Record["gender"] )) 
658
  		$navrat .= "<span style=\"font-size:200%\"  dir=\"ltr\"> (".$Record["gender"].") </span>";
659
  		
660
  $navrat .= "&nbsp;</div>\n";
661
  $navrat .= " \n  ";
662
  
663
  if (!Empty($Record["context"])) {
664
  	$navrat .= "\n<br />";//.lang("Kontext:");
665
    $context = get_context($Record["context"]);
666
    $navrat .= $context["cz_context"]." - ".$context["en_context"]." -
667
              <div class=\"arabic\">".$context["orig_context"]."</div>";
668
  }
669
  if (!Empty($Record["context_voice"])) {
670
  	$navrat .= '<a href="'.CESTA_KONTEXTU.$Record["IDdict"].PRIPONA.'"> '.lang("přehrát zvuk").' </a>';
671
  }
672
//  else {
673
//    $navrat .= lang("není");
674
//  }
675
  
676
  if (!Empty($Record["word_voice"])) {
677
  	$navrat .= "\n<br />".lang("Zvuk:");
678
    $navrat .= '<a href="'.CESTA_SLOV.$Record["IDdict"].PRIPONA.'"> '.lang("přehrát zvuk").' </a>';
679
  }
680
//  else
681
//    $navrat .= lang("není");
682
  $navrat .= "\n<br />\n<br />\n</div>";
683

    
684
  return $navrat;
685
}
686

    
687
/**
688
 * Vraci regularni vyraz pro hledani v db
689
 * pr ze slova "mal" udela: "^mal|/mal|, mal"
690
 * Tzn. bude se hledat token zacínající na "mal"
691
 * Tokeny jsou samostatna slova, nebo slova oddelena
692
 * lomitkem nebo sekvenci znaku carkaMezera.
693
 * 
694
 * @param string $token
695
 * @return string
696
 */
697
function get_token_regexp($token) {
698
	return "^".$token.'[ ]?$|'.
699
	       "/".$token.'[ ]?$|'.
700
	       ",[ ]?".$token.'[ ]?$|'.
701
	       ";[ ]?".$token.'[ ]?$|'.
702
	       "^".$token.";|".
703
	       "^[ ]?".$token.",|".
704
	       ",[ ]?".$token.",|".
705
	       "^".$token." [(]";
706
}
707

    
708
function hebrew_add_vowel($string) {
709
	$ret = '';
710
	$mez = mb_strlen($string)-1;
711
	for($i = 0; $i < $mez; $i++) {
712
		$ret .= mb_substr($string, $i, 1). "[ְֱֲֳִֵֶַָֹֻֻּֽֿׁ]*";//"[][⌈⌉?!><]?";
713
	}
714
	return $ret.mb_substr($string, $mez, 1);
715
}
716

    
717
function arabic_add_vowel($string) {
718
	$ret = '';
719
	$mez = mb_strlen($string)-1;
720
	for($i = 0; $i < $mez; $i++) {
721
		$ret .= mb_substr($string, $i, 1). "[ٌَ]*";//"[][⌈⌉?!><]?";
722
	}
723
	return $ret.mb_substr($string, $mez, 1);
724
}
725

    
726
/**
727
 *  Funkce vytiskne preklad slova z parametru
728
 *
729
 *  @param $word slovo urcene k prekladu
730
 *  @param $language jazyk
731
 *
732
 */
733
function print_translation($word, $direction, $language = 1) {
734
  require_once("./classes/db.php");
735
  $spojeni = new DB_Sql();
736
  $text = "\n       ";
737

    
738
  //$po = mb_strtolower($word, "UTF-8");
739
  //echo $word."\n<br />".$po;
740

    
741
  if (empty($word)) {
742
    $text .= lang("Musíte zadat nějaké slovo.");
743
  }
744
  else {
745
    $navrat = "";
746
    //pr($direction);
747
    switch ($direction) {
748
      case("en"):
749
        $word = mb_strtolower($word, "UTF-8");
750
        $word = get_token_regexp($word);
751
        
752
        $dotaz = "SELECT * FROM dict 
753
        		WHERE language = $language 
754
        		  AND lower(english) ~ '$word' 
755
        		  ORDER BY english LIMIT 30";
756
      break;
757
      case("he"):
758
        $word_strict = $word;
759
        //$word = hebrew_add_vowel($word);
760
	
761
	$word_token = get_token_regexp($word);
762

    
763
	$word_token = pg_escape_string($word_token);
764

    
765
	$dotaz = "SELECT * FROM dict
766
            WHERE language = $language AND
767
                  (
768
                   (past    ~ ('$word_token')) 
769
                   OR
770
                   (nonvocalized ~ ('$word_token'))
771
		   OR
772
                   (nonvocalized_female ~ ('$word_token'))
773
		   OR
774
                   (single_female ~ ('$word_token'))
775
		   OR
776
                   (nonvocalized_alternative ~ ('$word_token'))
777
		   OR
778
                   (vocalized_alternative ~ ('$word_token'))
779
                  ) 
780
		  AND 
781
                  (
782
                   czech NOT LIKE '' OR czech IS NOT NULL
783
                  )
784
               ORDER BY length(nonvocalized) LIMIT 30";
785

    
786
//	    echo $dotaz;
787

    
788
/*
789
	$dotaz = "SELECT * FROM dict
790
            WHERE language = $language AND
791
                  (
792
                   (past    ~ ('$word')) 
793
                   OR
794
                   (nonvocalized ~ ('$word_strict'))
795
                  ) 
796
               ORDER BY english LIMIT 30";
797
*/
798
	/*
799
      	$dotaz = "SELECT * FROM dict
800
            WHERE language = $language AND
801
                  (
802
                   (present ~ ('$word')) 
803
                   OR
804
                   (past    ~ ('$word')) 
805
                   OR
806
                   (valence ~ ('$word')) 
807
                   OR
808
                   (nonvocalized ~ ('$word_strict'))
809
                  ) 
810
               ORDER BY english LIMIT 30";
811
	       */
812
      break;
813
      case("ar"):
814
        $word = arabic_add_vowel($word);
815
        //pr($word);
816
        $dotaz = "SELECT * FROM dict
817
            WHERE language = $language AND
818
                  ((present = '$word') OR
819
                   (past    = '$word') OR
820
                   (valence = '$word') OR
821
                   (root    = '$word')) 
822
              ORDER BY english LIMIT 30";
823
        //pr($dotaz);
824
      break;
825
      case("cz"):
826
      	$word = mb_strtolower($word, "UTF-8");
827
        $word = get_token_regexp($word); 
828
        $dotaz = "SELECT * FROM dict 
829
                 WHERE language = $language 
830
                   AND lower(czech) ~ '$word' 
831
                   ORDER BY english LIMIT 30";
832
    }
833
    //$dotaz .= " ORDER BY context DESC, word_voice";
834
    //echo "sql = $dotaz\n<br />";
835

    
836
    $radky = $spojeni->query($dotaz);
837
    if ($spojeni->num_rows() == 0)  {
838
      $text .= "<br />Slovo nebylo nalezeno";
839
////////save_to_not_found($direction, $word);//vratit zpatky a opravit
840
    }
841
    else {
842
      while($spojeni->next_record()) {
843
	  if($language == 2 && $spojeni->Record['autorized']) //hebrew
844
	  {
845
	    $text .= __get_word_in_new_hebrew_format($spojeni->Record);
846
	  }
847
	  else {
848
	      //dle zadani vybereme jen prvni slovo - tj. s contextem a zvukem
849
	    $text .= __get_word_in_card_format($spojeni->Record);
850
	  }
851
      }
852
    }
853
  }
854
  $text .= "\n   \n";
855
  echo $text;
856
}
857

    
858
/**
859
 *  Funkce pro preklad z cestiny, vyhleda ve slovniku
860
 *  vsechna slova odpovidajici parametru
861
 *
862
 *  @param $word slovo urcene k prekladu
863
 *  @return do tabulky zformatovany preklad
864
 */
865
function translate_from_cz($word) {
866
  $navrat = "";
867
  require_once("./classes/db.php");
868
  $spojeni = new DB_Sql();
869
  $dotaz = "SELECT * FROM dict WHERE lower(czech) LIKE lower('$word') ;";
870
  $radky = $spojeni->query($dotaz);
871
  $spojeni->next_record();
872
  return $spojeni->Record;
873
}
874

    
875
/**
876
 *  Funkce pro preklad z anglictiny, vyhleda ve slovniku
877
 *  vsechna slova odpovidajici parametru
878
 *
879
 *  @param $word slovo urcene k prekladu
880
 *  @return do tabulky zformatovany preklad
881
 */
882
function translate_from_en($word) {
883
  $navrat = "";
884
  require_once("./classes/db.php");
885
  $spojeni = new DB_Sql();
886
  $dotaz = "SELECT * FROM dict WHERE lower(english) LIKE lower('$word') ;";
887
  $radky = $spojeni->query($dotaz);
888
  $spojeni->next_record();
889
  return $spojeni->Record;
890
}
891

    
892
/**
893
 *  Funkce pro preklad z "tretiho" jazyka, vyhleda ve slovniku
894
 *  vsechna slova odpovidajici parametru
895
 *
896
 *  @param $word slovo urcene k prekladu
897
 *  @return do tabulky zformatovany preklad
898
 */
899
function translate_from_ar($word) {
900
  $navrat = "";
901
  require_once("./classes/db.php");
902
  $spojeni = new DB_Sql();
903
  $dotaz = "SELECT * FROM dict
904
            WHERE language = 1 AND
905
                  ((present LIKE '$word') OR
906
                   (past LIKE '$word') OR
907
                   (valence LIKE '$word') OR
908
                   (root LIKE '$word'))";
909
  $radky = $spojeni->query($dotaz);
910
  $spojeni->next_record();
911
  return $spojeni->Record;
912
}
913

    
914
/**
915
 *  Funkce nacte do databaze soubor zadamy jako parametr.
916
 *  Pred tim databazi namaze!!!!!!!!!!!!!!
917
 *  Nekontroluje format csv souboru.
918
 *
919
 *  TODO: UPRAVIT OSTATNI DATA VKLADANA DO DB (DATA, USER, ATD...)
920
 *
921
 *
922
 *  @param $file - cesta k csv souboru
923
 *  @return true   kdyz se to povede
924
 *  @return false  naopak
925
 */
926
function dump_csv_file($file) {
927

    
928
  if (!file_exists($file)) {
929
    echo ("Chyba!!! Zadany soubor: $file neexistuje!!!");
930
    return false;
931
  }
932
  require_once("./classes/db.php");
933

    
934
  $spojeni = new DB_Sql();
935

    
936
  $radky = file($file);
937
  echo "<table border=\"1\">\n";
938

    
939
  $pocitadlo = 0;
940

    
941
  $NOW = Date("YmdHis");
942
  for($i=0;$i<Count($radky);$i++) {
943
    if (!strpos($radky[$i], ";"))  continue;
944
    $radek = explode(';', $radky[$i]);
945
    insert_word(AddSlashes($radek[0]),//czech
946
                AddSlashes($radek[1]),//english
947
                AddSlashes($radek[2]),//word category
948
                AddSlashes($radek[3]),//verbal class
949
                AddSlashes($radek[4]),//present
950
                AddSlashes($radek[5]),//past
951
                AddSlashes($radek[6]),//valence
952
                AddSlashes($radek[7]),//root
953
                1,//field
954
                1,//language
955
                0,//user
956
                0,//source
957
                2);//lection
958
    $spojeni->query($dotaz);
959
    if ($spojeni->Errno != 0) {
960
      echo $spojeni->$Error;
961
    }
962
    else $pocitadlo++;
963
  }
964

    
965
  echo("<thead>Dump probehl - pridano $pocitadlo zaznamu</thead></table> \n");
966
  return true;
967
}
968

    
969
/**
970
 * fce "aktivuje" promenou predavanou pomoci Post nebo get
971
 *
972
 * pouziti: $akce = povolPromennou("akce");
973
 */
974
function povolPromennou($nazev) {
975
  global $HTTP_POST_VARS;
976
  global $HTTP_GET_VARS;
977

    
978
  if(!Empty($HTTP_GET_VARS[$nazev]))  return $HTTP_GET_VARS[$nazev];
979
  if(!Empty($HTTP_POST_VARS[$nazev]))  return $HTTP_POST_VARS[$nazev];
980
  return false;
981
}
982

    
983
function echo_zpet_do_slovniku() {
984
  global $language;
985
  global $nonauthorized;
986
  global $contrains_source;
987
  global $contrains_lection;
988
  global $contrains_user_id;
989

    
990
  //echo $nonauthorized;
991

    
992
  if ($nonauthorized) $pomocna = "list_nonauthorized_word";
993
  else $pomocna = "list_word";
994

    
995
  echo "<br />
996
        <a href=\"?nav_id=$pomocna&language=$language&contrains_source=$contrains_source&contrains_lection=$contrains_lection&contrains_user_id=$contrains_user_id\">
997
           Zpět do studijniho slovníku
998
        </a>";
999
}
1000

    
1001
function echo_zpet_do_clanku() {
1002
  global $language;
1003
  global $contrains_source;
1004
  global $contrains_lection;
1005

    
1006
  echo "<br />
1007
        <a href=\"?nav_id=list_article&language=$language&contrains_source=$contrains_source&contrains_lection=$contrains_lection\">
1008
           Zpět na seznam článků
1009
        </a>";
1010
}
1011

    
1012
function echo_zpet_do_uzivatel() {
1013
  global $language;
1014
  echo "<br /><a href=\"?nav_id=list_user\">Zpět na seznam uživatel</a>";
1015
}
1016

    
1017
function echo_zpet_do_oboru() {
1018
  global $language;
1019
  echo "<br /><a href=\"?nav_id=list_field\">Zpět na seznam oborů</a>";
1020
}
1021

    
1022
function echo_zpet_do_zdroju() {
1023
  global $language;
1024
  echo "<br /><a href=\"?nav_id=list_source\">Zpět na seznam zdrojů</a>";
1025
}
1026

    
1027
function echo_zpet_do_translation_lang() {
1028
  global $language;
1029
  echo "<br /><a href=\"?nav_id=list_translation_lang\">Zpět na seznam jazyků překladu prostředí</a>";
1030
}
1031

    
1032
function echo_zpet_do_translation() {
1033
  global $translation_lang_id;
1034
  echo "<br /><a href=\"?nav_id=list_translation&translation_lang_id=$translation_lang_id\">Zpět na překlady prostředí</a>";
1035
}
1036

    
1037
function echo_zpet_do_zprav() {
1038
 global $translation_lang_id;
1039
  echo "<br /><a href=\"?nav_id=list_report&translation_lang_id=$translation_lang_id\">Zpět na seznam zpráv</a>";
1040
	
1041
}
1042

    
1043

    
1044

    
1045
//NOVE2504
1046
function get_test_category($id) {
1047
  require_once("./classes/db.php");
1048
  $spojeni = new DB_Sql();
1049
  $dotaz = "SELECT * FROM test_category WHERE id LIKE '$id'";
1050
  $radky = $spojeni->query($dotaz);
1051

    
1052
  $spojeni->next_record();
1053
  
1054
  return $spojeni->Record;
1055
}
1056

    
1057

    
1058
function get_test_category_chooser($name, $value = null) {
1059
    $strom = getStrom();
1060
    
1061
    $t = "<select name=\"$name\">";
1062
    $t .=   "<option value=\"0\"";
1063
    if($value != null && $value == 0) $t .= ' selected="selected"';
1064
    $t .=   "> -- Kořenová kategorie -- </option>";
1065
    foreach($strom as $polozka) {
1066
        $t .= getBranchOptions($polozka," ----",  $value);
1067
    }
1068
    
1069
    $t .= "</select>";
1070
    
1071
    return $t;
1072
}
1073

    
1074
function getBranchOptions($polozka, $tab, $value = NULL) {
1075
    $ret = '<option value="'.$polozka['id'].'"';
1076
    if($value != null && $value == $polozka['id']) $ret .= ' selected="selected"';
1077
    $ret .= '> '.$tab." ".$polozka['name'].' </option>';
1078
    if(!empty($polozka['children'])) {
1079
        foreach($polozka['children'] as $child) {
1080
            $ret .= getBranchOptions($child, "  ".$tab."---", $value);
1081
        }
1082
    }
1083
    return $ret;
1084
}
1085

    
1086
function getStrom($initUzel = 0) {
1087
    require_once("./classes/db.php");
1088
    $spojeni = new DB_Sql();
1089
    $dotaz = "SELECT * FROM test_category WHERE parent_id = '$initUzel'";
1090
    $radky = $spojeni->query($dotaz);
1091
    
1092
    $ret = array();
1093
    
1094
    while($spojeni->next_record()) {
1095
        $ret[] = array(
1096
                            'id' => $spojeni->Record['id'], 
1097
                            'name' => $spojeni->Record['name'], 
1098
                            'parent_id'=> $spojeni->Record['parent_id'],
1099
                            'children' => getStrom($spojeni->Record['id']),
1100
        );
1101
    }
1102
    
1103
    return $ret;
1104
}
(1-1/4)