$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 { $env = file(base_path('.env')); $position = null; foreach ((array) $env as $key => $variable) { if (Str::startsWith($variable, $property)) { $position = $key; } } // This should never happen, but this is login just in case. // Variables that will be replaced (updated with different content) should already be in .env file. if (is_null($position)) { $env[] = "{$property}=" . $value . "\n"; } else { $env[$position] = "{$property}=" . $value . "\n"; } try { file_put_contents(base_path('.env'), $env); } catch (\Exception $e) { info($e->getMessage()); } } }