register(function() { if (!$this->finished) { $this->active = false; $this->data->success = false; $this->data->error = "Couldn't finish successfuly"; $this->save(); } }); # Ugly: set the current user ID to the one set in the batch, so history entries # will be created as that user. User::set_current_user(User::find($this->user_id)); $this->active = true; $this->save(); $post = Post::create(['source' => $this->url, 'tags' => $this->tags, 'updater_user_id' => $this->user_id, 'updater_ip_addr' => $this->ip, 'user_id' => $this->user_id, 'ip_addr' => $this->ip, 'status' => "active", /*'is_upload' => false*/]); if ($post->errors()->blank()) { if (CONFIG()->dupe_check_on_upload && $post->image() && !$post->parent_id) { $options = [ 'services' => SimilarImages::get_services("local"), 'type' => 'post', 'source' => $post ]; $res = SimilarImages::similar_images($options); if (!empty($res['posts'])) { $post->tags = $post->tags() . " possible_duplicate"; $post->save(); } } $this->data->success = true; $this->data->post_id = $post->id; } elseif ($post->errors()->on('md5')) { $p = Post::where(['md5' => $post->md5])->first(); $this->data->success = false; $this->data->error = "Post already exists"; $this->data->post_id = $p->id; } else { $this->data->success = false; $this->data->error = $post->errors()->fullMessages(", "); } if ($this->data->success) { $this->status = 'finished'; } else { $this->status = 'error'; } $this->active = false; $this->save(); $this->finished = true; } protected function associations() { return [ 'belongs_to' => [ 'user' ] ]; } protected function init() { $this->data = json_decode($this->data_as_json) ?: new stdClass(); } protected function encode_data() { $this->data_as_json = json_encode($this->data); } // protected function data_setter($hoge) // { // $this->data_as_json = json_encode($hoge); // } protected function callbacks() { return [ 'before_save' => [ 'encode_data' ] ]; } }