Example #1
0
 public function createEntry($data)
 {
     $textData = isset($data['text']) ? $data['text'] : array();
     $synonymies = isset($data['synonymies']) ? $data['synonymies'] : array();
     $synonymies = !$synonymies && isset($data['keywords']) ? $data['keywords'] : $synonymies;
     $categoryData = isset($data['categories']) ? $data['categories'] : array();
     $categoryNamesData = isset($data['categoryNames']) ? $data['categoryNames'] : array();
     $entry = self::findFirst("title='{$data['title']}'");
     $newEntry = false;
     if (!$entry) {
         $entry = $this;
         $newEntry = true;
     }
     if ($textData) {
         unset($data['text']);
         $text = new EntryTexts();
         $text->assign($textData);
         $entry->text = $text;
     }
     $keywords = array();
     if ($synonymies) {
         $synonymiesArray = is_array($synonymies) ? $synonymies : explode(',', $synonymies);
         $mainKeyword = new EntryKeywords();
         $mainKeyword->keyword = $data['title'];
         $keywords[] = $mainKeyword;
         foreach ($synonymiesArray as $_keyword) {
             $keyword = new EntryKeywords();
             $keyword->keyword = $_keyword;
             $keywords[] = $keyword;
         }
     }
     $entry->keywords = $keywords;
     $categories = array();
     if ($categoryData) {
         unset($data['categories']);
         foreach ($categoryData as $categoryId) {
             $category = Category::findFirst($categoryId);
             if ($category) {
                 $categories[] = $category;
             }
         }
     }
     // 通过分类名指定分类
     if ($categoryNamesData) {
         unset($data['categoryNames']);
         foreach ($categoryNamesData as $_categoryName) {
             $categories[] = Category::getOrCreate($_categoryName);
         }
     }
     $entry->categories = $categories;
     if ($newEntry) {
         $entry->assign($data);
     }
     $pinyin = new Pinyin();
     $entry->initial = substr($pinyin->transformUcwords($entry->title), 0, 1);
     if (!$entry->save()) {
         throw new RuntimeException('Create post failed');
     }
     return $entry;
 }