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 NOT visible = 0;";
187
  $radky = $spojeni->query($dotaz);
188
  while ($spojeni->next_record()) {
189
    echo '<a href="?set_lang='.$spojeni->Record["code"].'">'.$spojeni->Record["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 Random() LIMIT 1";
203
  $radky = $spojeni->query($dotaz);
204
  if ($spojeni->num_rows() == 0) {
205
    echo "Chyba pri vyberu obrazku...";
206
    return false;
207
  }
208
  else {
209
    $spojeni->next_record();
210
    $nazev_souboru = $spojeni->Record["name_of_picture"];
211
    $cesky = $spojeni->Record["czech"];
212
    $anglicky = $spojeni->Record["english"];
213
    $arabsky = $spojeni->Record["orig"];
214

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

    
230
</div>";
231

    
232

    
233
    echo $navrat;
234
  }
235
}
236

    
237

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

    
263

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

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

    
316
function get_test_category_chooser($chosen) {
317

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

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

    
346

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

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

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

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

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

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

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

    
465

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

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

    
484
  return false;
485
}
486

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

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

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

    
604

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

    
628

    
629

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

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

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

    
678
  return $navrat;
679
}
680

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

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

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

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

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

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

    
757
	$word_token = pg_escape_string($word_token);
758

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

    
780
//	    echo $dotaz;
781

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

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

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

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

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

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

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

    
928
  $spojeni = new DB_Sql();
929

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

    
933
  $pocitadlo = 0;
934

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

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

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

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

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

    
984
  //echo $nonauthorized;
985

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

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

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

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

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

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

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

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

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

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

    
1037

    
1038

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

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

    
1051

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

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

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