public static function search($db, $str)
 {
     $books = new Dase_DBO_Book($db);
     $book_set = array();
     foreach ($books->findAll(1) as $b) {
         $book_set[$b->id] = $b;
     }
     $result = array();
     $result['books'] = array();
     $words = new Dase_DBO_Word($db);
     $words->addWhere('search_bag', '%' . $str . '%', 'like');
     foreach ($words->findAll(1) as $word) {
         $book = $book_set[$word->book_id];
         if (!isset($result['books'][$book->id])) {
             $result['books'][$book->id] = array();
             $result['books'][$book->id]['id'] = $book->id;
             $result['books'][$book->id]['name'] = $book->name;
             $result['books'][$book->id]['lessons'] = array();
         }
         if (!isset($result['books'][$book->id]['lessons'][$word->lesson_id])) {
             $result['books'][$book->id]['lessons'][$word->lesson_id] = array();
             $result['books'][$book->id]['lessons'][$word->lesson_id]['id'] = $word->lesson_id;
             $result['books'][$book->id]['lessons'][$word->lesson_id]['words'] = array();
         }
         if (!isset($result['books'][$book->id]['lessons'][$word->lesson_id]['words'][$word->id])) {
             $result['books'][$book->id]['lessons'][$word->lesson_id]['words'][$word->id] = array();
             $result['books'][$book->id]['lessons'][$word->lesson_id]['words'][$word->id]['id'] = $word->id;
             $result['books'][$book->id]['lessons'][$word->lesson_id]['words'][$word->id]['traditional'] = $word->traditional;
             $result['books'][$book->id]['lessons'][$word->lesson_id]['words'][$word->id]['simplified'] = $word->simplified;
             $result['books'][$book->id]['lessons'][$word->lesson_id]['words'][$word->id]['pinyin'] = $word->pinyin;
         }
     }
     return $result;
 }
Beispiel #2
0
 public function getWords()
 {
     $words = new Dase_DBO_Word($this->db);
     $words->lesson_id = $this->id;
     foreach ($words->findAll(1) as $word) {
         if (!$word->sub_lesson) {
             $word->sub_lesson = '0';
         }
         if (!isset($this->words[$word->sub_lesson])) {
             $this->words[$word->sub_lesson] = array();
         }
         $this->words[$word->sub_lesson][] = $word;
         $this->word_idents[] = $word->word_index . '.' . $word->sub_lesson;
     }
     return $this->words;
 }
<?php

include 'config.php';
setlocale(LC_ALL, 'en_US.UTF8');
function clearUTF($s)
{
    $r = '';
    $s1 = iconv('UTF-8', 'ASCII//TRANSLIT', $s);
    for ($i = 0; $i < strlen($s1); $i++) {
        $ch1 = $s1[$i];
        $ch2 = mb_substr($s, $i, 1);
        $r .= $ch1 == '?' ? $ch2 : $ch1;
    }
    return $r;
}
$words = new Dase_DBO_Word($db);
foreach ($words->findAll(1) as $word) {
    $sub = array();
    $sub[] = $word->simplified;
    $sub[] = $word->traditional;
    $sub[] = $word->pinyin;
    $sub[] = clearUTF($word->pinyin);
    $word->search_bag = join(' ', $sub);
    print $word;
    $word->update();
}