public function find_in_db() { $toMatch = ['docset_filename' => $this->docset_filename, 'page_path' => $this->page_path]; if ($this->docset_filename == "Mono" && !empty($this->httrack_source)) { $toMatch = ['docset_filename' => $this->docset_filename, 'httrack_source' => $this->httrack_source]; } return Identifier::where($toMatch)->first(); }
public function loadFromSession() { if (\Session::has('current_user')) { $data = \Session::get('current_user'); } else { $model = $this->getModel(); $data = ['model' => get_class($model), 'id' => $model->id]; \Session::put('current_user', $data); } $identity = Identifier::firstOrCreate(['type' => $data['model'], 'value' => $data['id']]); return $identity; }
public function save() { if (Auth::check()) { $title = Request::input('title'); $body = Request::input('body'); $public = Request::input('public'); $type = Request::input('type'); $teams = Request::input('teams'); $license = Request::input('license'); $identifier_dict = Request::input('identifier'); $anchor = Request::input('anchor'); $entry_id = Request::input('entry_id'); $user = Auth::user(); if ($title !== '' && $body !== '' && $type !== '' && !empty($identifier_dict) && $anchor !== '') { $db_license = NULL; if ($public) { if (isset($_ENV['AUTH_LICENSES']) && $_ENV['AUTH_LICENSES']) { if (empty($license)) { return json_encode(['status' => 'error', 'message' => 'Only paid users can create public annotations']); } $json_license = json_encode($license); $db_license = License::where('license', '=', $json_license)->first(); if ($db_license) { if ($db_license->banned_from_public) { if (isset($license['is_beta']) && $license['is_beta']) { return json_encode(['status' => 'error', 'message' => "Beta users can't make public annotations"]); } return json_encode(['status' => 'error', 'message' => 'You are banned from making public annotations']); } } else { if (isset($license['is_beta']) && $license['is_beta']) { // skip check for beta users } else { if (isset($license['is_app_store']) && $license['is_app_store']) { if (!DashLicenseUtil::check_itunes_receipt($license)) { return json_encode(['status' => 'error', 'message' => 'Invalid license. Public annotation not allowed']); } } else { if (!DashLicenseUtil::check_license($license)) { return json_encode(['status' => 'error', 'message' => 'Invalid license. Public annotation not allowed']); } } } $db_license = new License(); $db_license->license = $json_license; $db_license->save(); } } } $identifier = Identifier::IdentifierFromDictionary($identifier_dict); $db_identifier = $identifier->find_in_db(); if (!$db_identifier) { $identifier->save(); $db_identifier = $identifier; } if ($public && $db_identifier->banned_from_public) { return json_encode(['status' => 'error', 'message' => 'Public annotations are not allowed on this page']); } $entry = $entry_id ? Entry::where('id', '=', $entry_id)->first() : new Entry(); if ($entry_id && (!$entry || $entry->user_id != $user->id)) { return json_encode(['status' => 'error', 'message' => 'Error. Logout and try again']); } $entry->title = $title; $entry->body = $body; try { $body = MarkdownExtra::defaultTransform($body); } catch (\RuntimeException $e) { $message = $e->getMessage(); $start = strpos($message, 'no lexer for alias \''); if ($start !== FALSE) { $start += 20; $end = strpos($message, '\'', $start); if ($end !== FALSE) { $lexer = substr($message, $start, $end - $start); return json_encode(['status' => 'error', 'message' => 'Unknown syntax highlighting: ' . $lexer]); } } throw $e; } $html_safe = new HTML_Safe(); $html_safe->protocolFiltering = 'black'; $body = $html_safe->parse($body); $body = str_replace('#dashInternal', '#', $body); $entry->body_rendered = $body; $entry->public = $public; $entry->type = $type; $entry->anchor = $anchor; $entry->user_id = $user->id; $entry->identifier_id = $db_identifier->id; if ($db_license) { $entry->license_id = $db_license->id; } if (!$entry_id) { $entry->score = 1; } $entry->save(); if (!$entry_id) { $vote = new Vote(); $vote->type = 1; $vote->user_id = $user->id; $vote->entry_id = $entry->id; $vote->save(); } $db_teams = $entry->teams(); $already_assigned = array(); foreach ($db_teams->get() as $team) { if (!in_arrayi($team->name, $teams)) { $db_teams->detach($team->id); } else { $already_assigned[] = $team->name; } } foreach ($teams as $team) { if (!in_arrayi($team, $already_assigned)) { $db_team = Team::where('name', '=', $team)->first(); if ($db_team && $db_team->users()->where('user_id', '=', $user->id)->first()) { $db_team->entries()->attach($entry->id); } } } return json_encode(['status' => 'success', 'entry' => $entry]); } return json_encode(['status' => 'error', 'message' => 'Oops. Unknown error']); } return json_encode(['status' => 'error', 'message' => 'Error. Logout and try again']); }