/** * @param string $law_id * @param string $date * @param array $options * * @return string * @throws Exceptions\RevisionDateNotFound * @throws Exceptions\WrongDateException */ public function downloadRevision($law_id, $date, $options = []) { $opendata = false; $law = Law::find($law_id); $law_url = ($opendata ? '/go/' : '/laws/show/') . $law_id; $edition_part = '/ed' . date_format(date_create_from_format('Y-m-d', $date), 'Ymd'); if ($law->active_revision == $date) { $url = $law_url; $options['save_as'] = '/laws/show/' . $law_id . $edition_part . '/page'; } else { $url = $law_url . $edition_part; $options['save_as'] = '/laws/show/' . $law_id . $edition_part . '/page'; } $options += ['law_id' => $law_id, 'date' => $date, 'law_url' => $law_url, 'edition_part' => $edition_part, 'opendata' => $opendata]; return $this->download($url, $options); }
public function formatLinks($text, Revision $revision) { $text = preg_replace_callback('%<a (?:class="(?:rvts96|rvts99)" )?href="(.*?)(?:/ed[0-9]+)?(?:/paran[0-9]+)?(?:#n[0-9]+)?"(?: target="_blank")?>(.*?)</a>%', function ($matches) use($revision) { $url = urldecode($matches[1]); $text = $matches[2]; if (!$url || $url == '/laws/show/' . $revision->law_id) { return $text; } else { if (preg_match('%/laws/show/(.*?)(?:$|/ed|#|\\?)%', $url, $matches)) { $law_id = $matches[1]; $law = Law::find($law_id); if ($law) { $issuers = $law->issuers()->get()->all(); $first_issuer = reset($issuers); $url = '/' . $first_issuer->group_name . '/' . $first_issuer->name . '/' . $law_id . '.md'; } } return "[{$text}]({$url})"; } }, $text); $text = preg_replace('%\\( \\[(.*?)\\]\\((.*?)\\) \\)%', "([\$1](\$2))", $text); return $text; }
/** * Job failure callback. * * @param $law_id * @param $date * @param bool|false $re_download */ public function downloadRevisionFail($law_id, $date, $re_download = false) { $law = Law::find($law_id); $revision = $law->getRevision($date); $revision->update(['status' => Revision::DOWNLOAD_ERROR]); }
public function getLawURL($law_id, $base = '', $raw = false) { $law = Law::find($law_id); if (!$law) { return rtrim($base, '/') . '/' . $law_id; } $issuers = $law->issuers()->get()->all(); $first_issuer = reset($issuers); $prefix = $this->is_raw ? 'laws' : $first_issuer->group_name . '/' . $first_issuer->name; $filename = $prefix . '/' . $law_id . '.md'; return rtrim($base, '/') . '/' . $filename; }