has('clear_cache')) Artisan::call('optimize'); foreach ($cached_tables as $name => $class) { if (request()->has('clear_cache') || !Cache::has($name) || $force) { // check that the table exists in case the migration is pending if (!Schema::hasTable((new $class())->getTable())) { continue; } if ($name == 'payment_terms') { $orderBy = 'num_days'; } elseif ($name == 'fonts') { $orderBy = 'sort_order'; } elseif (in_array($name, ['currencies', 'industries', 'languages', 'countries', 'banks'])) { $orderBy = 'name'; } else { $orderBy = 'id'; } $tableData = $class::orderBy($orderBy)->get(); if ($tableData->count()) { Cache::forever($name, $tableData); } } } /*Build template cache*/ if (request()->has('clear_cache') || !Cache::has('templates')) { $this->buildTemplates(); } } private function buildTemplates($name = 'templates') { $data = [ 'invoice' => [ 'subject' => EmailTemplateDefaults::emailInvoiceSubject(), 'body' => EmailTemplateDefaults::emailInvoiceTemplate(), ], 'quote' => [ 'subject' => EmailTemplateDefaults::emailQuoteSubject(), 'body' => EmailTemplateDefaults::emailQuoteTemplate(), ], 'payment' => [ 'subject' => EmailTemplateDefaults::emailPaymentSubject(), 'body' => EmailTemplateDefaults::emailPaymentTemplate(), ], 'payment_partial' => [ 'subject' => EmailTemplateDefaults::emailPaymentPartialSubject(), 'body' => EmailTemplateDefaults::emailPaymentPartialTemplate(), ], 'reminder1' => [ 'subject' => EmailTemplateDefaults::emailReminder1Subject(), 'body' => EmailTemplateDefaults::emailReminder1Template(), ], 'reminder2' => [ 'subject' => EmailTemplateDefaults::emailReminder2Subject(), 'body' => EmailTemplateDefaults::emailReminder2Template(), ], 'reminder3' => [ 'subject' => EmailTemplateDefaults::emailReminder3Subject(), 'body' => EmailTemplateDefaults::emailReminder3Template(), ], 'reminder_endless' => [ 'subject' => EmailTemplateDefaults::emailReminderEndlessSubject(), 'body' => EmailTemplateDefaults::emailReminderEndlessTemplate(), ], 'statement' => [ 'subject' => EmailTemplateDefaults::emailStatementSubject(), 'body' => EmailTemplateDefaults::emailStatementTemplate(), ], 'credit' => [ 'subject' => EmailTemplateDefaults::emailCreditSubject(), 'body' => EmailTemplateDefaults::emailCreditTemplate(), ], ]; Cache::forever($name, $data); } private function updateEnvironmentProperty(string $property, $value): void { if (Str::contains($value, '#')) { $value = sprintf('"%s"', $value); } $env = file(base_path('.env')); $position = null; foreach ((array) $env as $key => $variable) { if (Str::startsWith($variable, $property)) { $position = $key; } } $words_count = count(explode(' ', trim($value))); if (is_null($position)) { $words_count > 1 ? $env[] = "{$property}=" . '"' . $value . '"' . "\n" : $env[] = "{$property}=" . $value . "\n"; } elseif ($words_count > 1) { $env[$position] = "{$property}=" . '"' . $value . '"' . "\n"; // If value of variable is more than one word, surround with quotes. } else { $env[$position] = "{$property}=" . $value . "\n"; // Just a normal variable update, with pre-existing keys. } try { file_put_contents(base_path('.env'), $env); } catch (\Exception $e) { info($e->getMessage()); } } }