/**
  * @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;
 }
Beispiel #3
0
 /**
  * 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]);
 }
Beispiel #4
0
 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;
 }