Example #1
0
 public static function save_tags($tag_names, $news_id)
 {
     $saved_ids = array();
     if (!is_array($tag_names)) {
         $tag_names = (array) $tag_names;
     }
     if (!$tag_names) {
         return $saved_ids;
     }
     $news_tag_ids4delete = self::get_assoc('tag_id', 'id', array('news_id' => $news_id));
     $tag_ids = \Model_Tag::get_assoc('name', 'id', array('name', 'in', $tag_names));
     foreach ($tag_names as $name) {
         if (!empty($tag_ids[$name])) {
             $tag_id = $tag_ids[$name];
         } else {
             $tag = \Model_Tag::forge(array('name' => $name));
             $tag->save();
             $tag_id = $tag->id;
         }
         if (!($news_tag = self::get_one4news_id_and_tag_id($news_id, $tag_id))) {
             $news_tag = self::forge(array('news_id' => $news_id, 'tag_id' => $tag_id));
             $news_tag->save();
             $saved_ids[] = $news_tag->id;
         }
         if (isset($news_tag_ids4delete[$tag_id])) {
             unset($news_tag_ids4delete[$tag_id]);
         }
     }
     // delete records
     if ($news_tag_ids4delete) {
         foreach ($news_tag_ids4delete as $news_tag_id4delete) {
             if ($news_tag = self::find($news_tag_id4delete)) {
                 $news_tag->delete();
             }
         }
     }
     return $saved_ids;
 }
Example #2
0
 private static function get_validation_object(\News\Model_News $news)
 {
     $val = \Validation::forge();
     $val->add_model($news);
     $val->add('published_at_time', '公開日時')->add_rule('datetime_except_second');
     if (empty($news->is_published)) {
         $val->add('is_draft', term('form.draft'))->add_rule('valid_string', 'numeric')->add_rule('in_array', array(0, 1));
     }
     if (\Config::get('news.tags.isEnabled')) {
         $options = \Model_Tag::get_assoc('name', 'name');
         $val->add('tags', term('site.tag'))->set_options($options)->add_rule('array_trim')->add_rule('array_max_length', 128);
     }
     return $val;
 }