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

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

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

    
141

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

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

    
162

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

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

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

    
198
function insert_picture( $class = "obrazek" ) {
199
  require_once("./classes/db.php");
200
  $spojeni = new DB_Sql();
201
  $dotaz = "SELECT * FROM pictures ORDER BY Random() LIMIT 1";
202
  $radky = $spojeni->query($dotaz);
203
  if ($spojeni->num_rows() == 0) {
204
    echo "Chyba pri vyberu obrazku...";
205
    return false;
206
  }
207
  else {
208
    $spojeni->next_record();
209
    $nazev_souboru = $spojeni->Record["name_of_picture"];
210
    $cesky = $spojeni->Record["czech"];
211
    $anglicky = $spojeni->Record["english"];
212
    $arabsky = $spojeni->Record["orig"];
213

    
214
  $navrat .= "
215
<div id=\"$class\">
216
  <table>
217
    <tr>
218
      <td dir=\"rtl\">
219
        <img src = \"./pictures/$nazev_souboru\"
220
             title = \"$cesky - $anglicky - $arabsky\" />
221
        <br />
222
        <h2 class = \"arabic\">
223
          $arabsky
224
        </h2>
225
      </td>
226
    </tr>
227
  </table>
228

    
229
</div>";
230

    
231

    
232
    echo $navrat;
233
  }
234
}
235

    
236

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

    
262

    
263
function get_translation_chooser() {
264
  require_once("./classes/db.php");
265
  $spojeni = new DB_Sql();
266
  $dotaz = "SELECT * FROM translation_lang";
267
  $spojeni->query($dotaz);
268
  $navrat = "<select name=\"translation_lang_id\" size=\"4\">";
269
  while ($spojeni->next_record()) {
270
    $navrat .= "  <option value=\"".$spojeni->Record["code"]."\">  ".$spojeni->Record["name"]."  </option>";
271
  }
272
  $navrat .= '</select>';
273
  return $navrat;
274
}
275

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

    
315
function get_test_category_chooser($chosen) {
316

    
317
  $data = getTree('test_category', 'id', 'parent_id', 0, 1);//print_r($data);
318
  
319
  $navrat = "<select name=\"test_category\" size=\"1\">";
320
  $navrat .= '<option value="NULL">             </option>';
321

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

    
345

    
346
function insert_language_chooser() {
347
  echo get_language_chooser();
348
}
349

    
350
function get_language_chooser($size = 1) {
351
  require_once("./classes/db.php");
352
  $spojeni = new DB_Sql();
353
  $dotaz = "SELECT * FROM \"language\"";
354
  $radky = $spojeni->query($dotaz);
355
  $navrat = "<select name=\"language\" size=\"$size\">";
356
  while ($spojeni->next_record()) {
357
    $navrat .= "  <option value=\"".$spojeni->Record[0]."\">  ".$spojeni->Record[1]."  </option>";
358
  }
359
  $navrat .= '</select>';
360
  return $navrat;
361
}
362

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

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

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

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

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

    
464

    
465
function print_hlasku($text) {
466
  echo "<h4 class=\"nadpis3\">".$text."</h4> \n";
467
}
468

    
469
function is_in_dictionary_past($past, $source, $lection) {
470
  if (Empty($past) || (Trim($past) == "")) return false;
471
  require_once("./classes/db.php");
472
  $spojeni = new DB_Sql();
473
  $dotaz = "SELECT past FROM dict WHERE past LIKE '$past' AND source = $source AND lection LIKE '$lection'";
474
  $spojeni->query($dotaz);
475
  if ($spojeni->Errno != 0) {
476
    print_hlasku($spojeni->$Error);
477
    return false;
478
  }
479
  //echo $spojeni->num_rows();
480
  if ($spojeni->num_rows() > 0)
481
    return true;
482

    
483
  return false;
484
}
485

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

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

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

    
603

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

    
627

    
628

    
629
function __get_word_in_card_format($Record) {
630
  //global CESTA_KONTEXTU, PRIPONA, CESTA_SLOV;
631
  require_once("./administration/context.php");
632

    
633
  $navrat = "<div class=\"card\">\n<br />";
634
  $navrat .= " \n     ";
635

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

    
677
  return $navrat;
678
}
679

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

    
701
function hebrew_add_vowel($string) {
702
	$ret = '';
703
	$mez = mb_strlen($string)-1;
704
	for($i = 0; $i < $mez; $i++) {
705
		$ret .= mb_substr($string, $i, 1). "[ְֱֲֳִֵֶַָֹֻֻּֽֿׁ]*";//"[][⌈⌉?!><]?";
706
	}
707
	return $ret.mb_substr($string, $mez, 1);
708
}
709

    
710
function arabic_add_vowel($string) {
711
	$ret = '';
712
	$mez = mb_strlen($string)-1;
713
	for($i = 0; $i < $mez; $i++) {
714
		$ret .= mb_substr($string, $i, 1). "[ٌَ]*";//"[][⌈⌉?!><]?";
715
	}
716
	return $ret.mb_substr($string, $mez, 1);
717
}
718

    
719
/**
720
 *  Funkce vytiskne preklad slova z parametru
721
 *
722
 *  @param $word slovo urcene k prekladu
723
 *  @param $language jazyk
724
 *
725
 */
726
function print_translation($word, $direction, $language = 1) {
727
  require_once("./classes/db.php");
728
  $spojeni = new DB_Sql();
729
  $text = "\n       ";
730

    
731
  //$po = mb_strtolower($word, "UTF-8");
732
  //echo $word."\n<br />".$po;
733

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

    
756
	$word_token = pg_escape_string($word_token);
757

    
758
	$dotaz = "SELECT * FROM dict
759
            WHERE language = $language AND
760
                  (
761
                   (past    ~ ('$word_token')) 
762
                   OR
763
                   (nonvocalized ~ ('$word_token'))
764
		   OR
765
                   (nonvocalized_female ~ ('$word_token'))
766
		   OR
767
                   (single_female ~ ('$word_token'))
768
		   OR
769
                   (nonvocalized_alternative ~ ('$word_token'))
770
		   OR
771
                   (vocalized_alternative ~ ('$word_token'))
772
                  ) 
773
		  AND 
774
                  (
775
                   czech NOT LIKE '' OR czech IS NOT NULL
776
                  )
777
               ORDER BY length(nonvocalized) LIMIT 30";
778

    
779
//	    echo $dotaz;
780

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

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

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

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

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

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

    
921
  if (!file_exists($file)) {
922
    echo ("Chyba!!! Zadany soubor: $file neexistuje!!!");
923
    return false;
924
  }
925
  require_once("./classes/db.php");
926

    
927
  $spojeni = new DB_Sql();
928

    
929
  $radky = file($file);
930
  echo "<table border=\"1\">\n";
931

    
932
  $pocitadlo = 0;
933

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

    
958
  echo("<thead>Dump probehl - pridano $pocitadlo zaznamu</thead></table> \n");
959
  return true;
960
}
961

    
962
/**
963
 * fce "aktivuje" promenou predavanou pomoci Post nebo get
964
 *
965
 * pouziti: $akce = povolPromennou("akce");
966
 */
967
function povolPromennou($nazev) {
968
  global $HTTP_POST_VARS;
969
  global $HTTP_GET_VARS;
970

    
971
  if(!Empty($HTTP_GET_VARS[$nazev]))  return $HTTP_GET_VARS[$nazev];
972
  if(!Empty($HTTP_POST_VARS[$nazev]))  return $HTTP_POST_VARS[$nazev];
973
  return false;
974
}
975

    
976
function echo_zpet_do_slovniku() {
977
  global $language;
978
  global $nonauthorized;
979
  global $contrains_source;
980
  global $contrains_lection;
981
  global $contrains_user_id;
982

    
983
  //echo $nonauthorized;
984

    
985
  if ($nonauthorized) $pomocna = "list_nonauthorized_word";
986
  else $pomocna = "list_word";
987

    
988
  echo "<br />
989
        <a href=\"?nav_id=$pomocna&language=$language&contrains_source=$contrains_source&contrains_lection=$contrains_lection&contrains_user_id=$contrains_user_id\">
990
           Zpět do studijniho slovníku
991
        </a>";
992
}
993

    
994
function echo_zpet_do_clanku() {
995
  global $language;
996
  global $contrains_source;
997
  global $contrains_lection;
998

    
999
  echo "<br />
1000
        <a href=\"?nav_id=list_article&language=$language&contrains_source=$contrains_source&contrains_lection=$contrains_lection\">
1001
           Zpět na seznam článků
1002
        </a>";
1003
}
1004

    
1005
function echo_zpet_do_uzivatel() {
1006
  global $language;
1007
  echo "<br /><a href=\"?nav_id=list_user\">Zpět na seznam uživatel</a>";
1008
}
1009

    
1010
function echo_zpet_do_oboru() {
1011
  global $language;
1012
  echo "<br /><a href=\"?nav_id=list_field\">Zpět na seznam oborů</a>";
1013
}
1014

    
1015
function echo_zpet_do_zdroju() {
1016
  global $language;
1017
  echo "<br /><a href=\"?nav_id=list_source\">Zpět na seznam zdrojů</a>";
1018
}
1019

    
1020
function echo_zpet_do_translation_lang() {
1021
  global $language;
1022
  echo "<br /><a href=\"?nav_id=list_translation_lang\">Zpět na seznam jazyků překladu prostředí</a>";
1023
}
1024

    
1025
function echo_zpet_do_translation() {
1026
  global $translation_lang_id;
1027
  echo "<br /><a href=\"?nav_id=list_translation&translation_lang_id=$translation_lang_id\">Zpět na překlady prostředí</a>";
1028
}
1029

    
1030
function echo_zpet_do_zprav() {
1031
 global $translation_lang_id;
1032
  echo "<br /><a href=\"?nav_id=list_report&translation_lang_id=$translation_lang_id\">Zpět na seznam zpráv</a>";
1033
	
1034
}
1035

    
1036

    
1037

    
1038
//NOVE2504
1039
function get_test_category($id) {
1040
  require_once("./classes/db.php");
1041
  $spojeni = new DB_Sql();
1042
  $dotaz = "SELECT * FROM test_category WHERE id LIKE '$id'";
1043
  $radky = $spojeni->query($dotaz);
1044

    
1045
  $spojeni->next_record();
1046
  
1047
  return $spojeni->Record;
1048
}
1049

    
1050

    
1051
function get_test_category_chooser($name, $value = null) {
1052
    $strom = getStrom();
1053
    
1054
    $t = "<select name=\"$name\">";
1055
    $t .=   "<option value=\"0\"";
1056
    if($value != null && $value == 0) $t .= ' selected="selected"';
1057
    $t .=   "> -- Kořenová kategorie -- </option>";
1058
    foreach($strom as $polozka) {
1059
        $t .= getBranchOptions($polozka," ----",  $value);
1060
    }
1061
    
1062
    $t .= "</select>";
1063
    
1064
    return $t;
1065
}
1066

    
1067
function getBranchOptions($polozka, $tab, $value = NULL) {
1068
    $ret = '<option value="'.$polozka['id'].'"';
1069
    if($value != null && $value == $polozka['id']) $ret .= ' selected="selected"';
1070
    $ret .= '> '.$tab." ".$polozka['name'].' </option>';
1071
    if(!empty($polozka['children'])) {
1072
        foreach($polozka['children'] as $child) {
1073
            $ret .= getBranchOptions($child, "  ".$tab."---", $value);
1074
        }
1075
    }
1076
    return $ret;
1077
}
1078

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