mirror of
https://github.com/invoiceninja/invoiceninja.git
synced 2025-07-08 15:14:33 -04:00
commit
8cb9f3f80a
@ -1 +1 @@
|
||||
5.0.34
|
||||
5.0.35
|
@ -11,10 +11,10 @@
|
||||
|
||||
namespace App\Console\Commands;
|
||||
|
||||
use App\Jobs\Util\VersionCheck;
|
||||
use Composer\Console\Application;
|
||||
use Illuminate\Console\Command;
|
||||
use Illuminate\Support\Facades\Artisan;
|
||||
use Log;
|
||||
use Symfony\Component\Console\Input\ArrayInput;
|
||||
|
||||
class PostUpdate extends Command
|
||||
@ -48,14 +48,14 @@ class PostUpdate extends Command
|
||||
|
||||
try {
|
||||
Artisan::call('migrate', ['--force' => true]);
|
||||
} catch (Exception $e) {
|
||||
Log::error("I wasn't able to migrate the data.");
|
||||
} catch (\Exception $e) {
|
||||
info("I wasn't able to migrate the data.");
|
||||
}
|
||||
|
||||
try {
|
||||
Artisan::call('optimize');
|
||||
} catch (Exception $e) {
|
||||
Log::error("I wasn't able to optimize.");
|
||||
} catch (\Exception $e) {
|
||||
info("I wasn't able to optimize.");
|
||||
}
|
||||
|
||||
/* For the following to work, the web user (www-data) must own all the directories */
|
||||
@ -67,6 +67,8 @@ class PostUpdate extends Command
|
||||
$application->setAutoExit(false);
|
||||
$application->run($input);
|
||||
|
||||
VersionCheck::dispatch();
|
||||
|
||||
echo "Done.";
|
||||
}
|
||||
}
|
||||
|
@ -583,6 +583,7 @@ class CompanySettings extends BaseSettings
|
||||
$variables = [
|
||||
'client_details' => [
|
||||
'$client.name',
|
||||
'$client.id_number',
|
||||
'$client.vat_number',
|
||||
'$client.address1',
|
||||
'$client.address2',
|
||||
|
@ -11,7 +11,8 @@
|
||||
|
||||
namespace App\Events\Credit;
|
||||
|
||||
use App\Models\Credit;
|
||||
use App\Models\Company;
|
||||
use App\Models\CreditInvitation;
|
||||
use Illuminate\Broadcasting\InteractsWithSockets;
|
||||
use Illuminate\Foundation\Events\Dispatchable;
|
||||
use Illuminate\Queue\SerializesModels;
|
||||
@ -20,7 +21,7 @@ class CreditWasEmailed
|
||||
{
|
||||
use Dispatchable, InteractsWithSockets, SerializesModels;
|
||||
|
||||
public $credit;
|
||||
public $invitation;
|
||||
|
||||
public $company;
|
||||
|
||||
@ -33,9 +34,9 @@ class CreditWasEmailed
|
||||
* @param Company $company
|
||||
* @param array $event_vars
|
||||
*/
|
||||
public function __construct(Credit $credit, Company $company, array $event_vars)
|
||||
public function __construct(CreditInvitation $invitation, Company $company, array $event_vars)
|
||||
{
|
||||
$this->credit = $credit;
|
||||
$this->invitation = $invitation;
|
||||
$this->company = $company;
|
||||
$this->event_vars = $event_vars;
|
||||
}
|
||||
|
@ -13,6 +13,7 @@ namespace App\Events\Quote;
|
||||
|
||||
use App\Models\Company;
|
||||
use App\Models\Quote;
|
||||
use App\Models\QuoteInvitation;
|
||||
use Illuminate\Queue\SerializesModels;
|
||||
|
||||
/**
|
||||
@ -22,12 +23,10 @@ class QuoteWasEmailed
|
||||
{
|
||||
use SerializesModels;
|
||||
|
||||
public $quote;
|
||||
public $invitation;
|
||||
|
||||
public $company;
|
||||
|
||||
public $notes;
|
||||
|
||||
public $event_vars;
|
||||
|
||||
/**
|
||||
@ -38,10 +37,9 @@ class QuoteWasEmailed
|
||||
* @param Company $company
|
||||
* @param array $event_vars
|
||||
*/
|
||||
public function __construct(Quote $quote, string $notes, Company $company, array $event_vars)
|
||||
public function __construct(QuoteInvitation $invitation, Company $company, array $event_vars)
|
||||
{
|
||||
$this->quote = $quote;
|
||||
$this->notes = $notes;
|
||||
$this->invitation = $invitation;
|
||||
$this->company = $company;
|
||||
$this->event_vars = $event_vars;
|
||||
}
|
||||
|
@ -421,8 +421,6 @@ class BaseController extends Controller
|
||||
$data['report_errors'] = true;
|
||||
}
|
||||
|
||||
// $data['hash'] = md5_file(public_path('main.dart.js'));
|
||||
|
||||
$this->buildCache();
|
||||
|
||||
return view('index.index', $data);
|
||||
|
@ -11,6 +11,8 @@
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use App\Events\Credit\CreditWasEmailed;
|
||||
use App\Events\Quote\QuoteWasEmailed;
|
||||
use App\Http\Requests\Email\SendEmailRequest;
|
||||
use App\Jobs\Entity\EmailEntity;
|
||||
use App\Jobs\Mail\EntitySentMailer;
|
||||
@ -22,6 +24,7 @@ use App\Transformers\CreditTransformer;
|
||||
use App\Transformers\InvoiceTransformer;
|
||||
use App\Transformers\QuoteTransformer;
|
||||
use App\Transformers\RecurringInvoiceTransformer;
|
||||
use App\Utils\Ninja;
|
||||
use App\Utils\Traits\MakesHash;
|
||||
use Illuminate\Http\Response;
|
||||
|
||||
@ -117,6 +120,7 @@ class EmailController extends BaseController
|
||||
$template = $request->input('template');
|
||||
$template = str_replace("email_template_", "", $template);
|
||||
|
||||
|
||||
$entity_obj->invitations->each(function ($invitation) use ($subject, $body, $entity_string, $entity_obj, $template) {
|
||||
if ($invitation->contact->send_email && $invitation->contact->email) {
|
||||
$data = [
|
||||
@ -128,6 +132,8 @@ class EmailController extends BaseController
|
||||
}
|
||||
});
|
||||
|
||||
$entity_obj->service()->markSent()->save();
|
||||
|
||||
$entity_obj->last_sent_date = now();
|
||||
$entity_obj->save();
|
||||
|
||||
@ -138,16 +144,27 @@ class EmailController extends BaseController
|
||||
if ($entity_obj instanceof Invoice) {
|
||||
$this->entity_type = Invoice::class;
|
||||
$this->entity_transformer = InvoiceTransformer::class;
|
||||
|
||||
if($entity_obj->invitations->count() >= 1)
|
||||
$entity_obj->entityEmailEvent($entity_obj->invitations->first(), 'invoice');
|
||||
|
||||
}
|
||||
|
||||
if ($entity_obj instanceof Quote) {
|
||||
$this->entity_type = Quote::class;
|
||||
$this->entity_transformer = QuoteTransformer::class;
|
||||
|
||||
if($entity_obj->invitations->count() >= 1)
|
||||
event(new QuoteWasEmailed($entity_obj->invitations->first(), $entity_obj->company, Ninja::eventVars()));
|
||||
|
||||
}
|
||||
|
||||
if ($entity_obj instanceof Credit) {
|
||||
$this->entity_type = Credit::class;
|
||||
$this->entity_transformer = CreditTransformer::class;
|
||||
|
||||
if($entity_obj->invitations->count() >= 1)
|
||||
event(new CreditWasEmailed($entity_obj->invitations->first(), $entity_obj->company, Ninja::eventVars()));
|
||||
}
|
||||
|
||||
if ($entity_obj instanceof RecurringInvoice) {
|
||||
@ -155,7 +172,6 @@ class EmailController extends BaseController
|
||||
$this->entity_transformer = RecurringInvoiceTransformer::class;
|
||||
}
|
||||
|
||||
|
||||
$entity_obj->service()->markSent()->save();
|
||||
|
||||
return $this->itemResponse($entity_obj);
|
||||
|
@ -12,7 +12,9 @@
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use App\Events\Invoice\InvoiceReminderWasEmailed;
|
||||
use App\Events\Invoice\InvoiceWasCreated;
|
||||
use App\Events\Invoice\InvoiceWasEmailed;
|
||||
use App\Events\Invoice\InvoiceWasUpdated;
|
||||
use App\Factory\CloneInvoiceFactory;
|
||||
use App\Factory\CloneInvoiceToQuoteFactory;
|
||||
@ -29,6 +31,7 @@ use App\Jobs\Entity\EmailEntity;
|
||||
use App\Jobs\Invoice\StoreInvoice;
|
||||
use App\Jobs\Invoice\ZipInvoices;
|
||||
use App\Jobs\Util\UnlinkFile;
|
||||
use App\Models\Activity;
|
||||
use App\Models\Client;
|
||||
use App\Models\Invoice;
|
||||
use App\Models\Quote;
|
||||
@ -721,14 +724,15 @@ class InvoiceController extends BaseController
|
||||
}
|
||||
|
||||
//touch reminder1,2,3_sent + last_sent here if the email is a reminder.
|
||||
|
||||
$invoice->service()->touchReminder($this->reminder_template)->save();
|
||||
|
||||
$invoice->invitations->load('contact.client.country', 'invoice.client.country', 'invoice.company')->each(function ($invitation) use ($invoice) {
|
||||
info("firing email");
|
||||
EmailEntity::dispatch($invitation, $invoice->company, $this->reminder_template);
|
||||
});
|
||||
|
||||
if($invoice->invitations->count() >= 1)
|
||||
$invoice->entityEmailEvent($invoice->invitations->first(), $this->reminder_template);
|
||||
|
||||
if (! $bulk) {
|
||||
return response()->json(['message' => 'email sent'], 200);
|
||||
}
|
||||
@ -844,7 +848,7 @@ class InvoiceController extends BaseController
|
||||
$file_path = $invoice->service()->getInvoiceDeliveryNote($invoice, $invoice->invitations->first()->contact);
|
||||
|
||||
try {
|
||||
$file = public_path("storage/{$file_path}");
|
||||
$file = public_path("storage/{$file_path}");
|
||||
|
||||
|
||||
return response()->download($file, basename($file));
|
||||
|
@ -69,7 +69,7 @@ class SetupController extends Controller
|
||||
|
||||
try {
|
||||
$db = SystemHealth::dbCheck($request);
|
||||
|
||||
|
||||
if ($db['success'] == false) {
|
||||
throw new \Exception($db['message']);
|
||||
}
|
||||
@ -81,10 +81,12 @@ class SetupController extends Controller
|
||||
}
|
||||
|
||||
try {
|
||||
$smtp = SystemHealth::testMailServer($request);
|
||||
if ($request->mail_driver != 'log') {
|
||||
$smtp = SystemHealth::testMailServer($request);
|
||||
|
||||
if ($smtp['success'] == false) {
|
||||
throw new \Exception($smtp['message']);
|
||||
if ($smtp['success'] == false) {
|
||||
throw new \Exception($smtp['message']);
|
||||
}
|
||||
}
|
||||
} catch (\Exception $e) {
|
||||
return response([
|
||||
|
@ -34,8 +34,9 @@ class QueryLogging
|
||||
$timeStart = microtime(true);
|
||||
|
||||
// Enable query logging for development
|
||||
if (config('ninja.app_env') == 'production')
|
||||
if (config('ninja.app_env') == 'production') {
|
||||
return $next($request);
|
||||
}
|
||||
|
||||
DB::enableQueryLog();
|
||||
|
||||
|
@ -113,13 +113,13 @@ class StoreRecurringInvoiceRequest extends Request
|
||||
|
||||
private function setAutoBillFlag($auto_bill)
|
||||
{
|
||||
if ($auto_bill == 'always') {
|
||||
if ($auto_bill == 'always')
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
if ($auto_bill == 'off') {
|
||||
return false;
|
||||
}
|
||||
//if ($auto_bill == 'off' || $auto_bill == 'optin') {
|
||||
return false;
|
||||
//}
|
||||
}
|
||||
|
||||
public function messages()
|
||||
|
@ -17,6 +17,7 @@ use App\Http\Requests\Request;
|
||||
use App\Http\ValidationRules\ValidUserForCompany;
|
||||
use App\Libraries\MultiDB;
|
||||
use App\Models\User;
|
||||
use Illuminate\Validation\Rule;
|
||||
|
||||
class StoreUserRequest extends Request
|
||||
{
|
||||
@ -37,9 +38,11 @@ class StoreUserRequest extends Request
|
||||
$rules['first_name'] = 'required|string|max:100';
|
||||
$rules['last_name'] = 'required|string|max:100';
|
||||
|
||||
if (config('ninja.db.multi_db_enabled')) {
|
||||
$rules['email'] = new ValidUserForCompany();
|
||||
}
|
||||
if (config('ninja.db.multi_db_enabled'))
|
||||
$rules['email'] = [new ValidUserForCompany(), Rule::unique('users')];
|
||||
else
|
||||
$rules['email'] = Rule::unique('users');
|
||||
|
||||
|
||||
if (auth()->user()->company()->account->isFreeHostedClient()) {
|
||||
$rules['hosted_users'] = new CanAddUserRule(auth()->user()->company()->account);
|
||||
|
@ -87,12 +87,14 @@ class CreateEntityPdf implements ShouldQueue
|
||||
|
||||
public function handle()
|
||||
{
|
||||
if (config('ninja.phantomjs_pdf_generation')) {
|
||||
return (new Phantom)->generate($this->invitation);
|
||||
}
|
||||
|
||||
App::setLocale($this->contact->preferredLocale());
|
||||
App::forgetInstance('translator');
|
||||
Lang::replace(Ninja::transformTranslations($this->entity->client->getMergedSettings()));
|
||||
|
||||
if (config('ninja.phantomjs_pdf_generation')) {
|
||||
return (new Phantom)->generate($this->invitation);
|
||||
}
|
||||
|
||||
$entity_design_id = '';
|
||||
|
||||
@ -107,7 +109,6 @@ class CreateEntityPdf implements ShouldQueue
|
||||
$entity_design_id = 'credit_design_id';
|
||||
}
|
||||
|
||||
Lang::replace(Ninja::transformTranslations($this->entity->client->getMergedSettings()));
|
||||
|
||||
$file_path = $path.$this->entity->number.'.pdf';
|
||||
|
||||
|
@ -56,6 +56,7 @@ class EmailEntity extends BaseMailerJob implements ShouldQueue
|
||||
public $email_entity_builder;
|
||||
|
||||
public $template_data;
|
||||
|
||||
/**
|
||||
* EmailEntity constructor.
|
||||
* @param Invitation $invitation
|
||||
@ -100,7 +101,7 @@ class EmailEntity extends BaseMailerJob implements ShouldQueue
|
||||
$this->setMailDriver();
|
||||
|
||||
try {
|
||||
/** @noinspection PhpMethodParametersCountMismatchInspection */
|
||||
|
||||
Mail::to($this->invitation->contact->email, $this->invitation->contact->present()->name())
|
||||
->send(
|
||||
new TemplateEmail(
|
||||
@ -115,9 +116,9 @@ class EmailEntity extends BaseMailerJob implements ShouldQueue
|
||||
$this->logMailError($e->getMessage(), $this->entity->client);
|
||||
}
|
||||
|
||||
if (count(Mail::failures()) == 0) {
|
||||
$this->entityEmailSucceeded();
|
||||
}
|
||||
// if (count(Mail::failures()) == 0) {
|
||||
// $this->entityEmailSucceeded();
|
||||
// }
|
||||
|
||||
/* Mark entity sent */
|
||||
$this->entity->service()->markSent()->save();
|
||||
@ -149,29 +150,29 @@ class EmailEntity extends BaseMailerJob implements ShouldQueue
|
||||
}
|
||||
}
|
||||
|
||||
private function entityEmailSucceeded()
|
||||
{
|
||||
switch ($this->reminder_template) {
|
||||
case 'invoice':
|
||||
event(new InvoiceWasEmailed($this->invitation, $this->company, Ninja::eventVars()));
|
||||
break;
|
||||
case 'reminder1':
|
||||
event(new InvoiceReminderWasEmailed($this->invitation, $this->company, Ninja::eventVars(), Activity::INVOICE_REMINDER1_SENT));
|
||||
break;
|
||||
case 'reminder2':
|
||||
event(new InvoiceReminderWasEmailed($this->invitation, $this->company, Ninja::eventVars(), Activity::INVOICE_REMINDER2_SENT));
|
||||
break;
|
||||
case 'reminder3':
|
||||
event(new InvoiceReminderWasEmailed($this->invitation, $this->company, Ninja::eventVars(), Activity::INVOICE_REMINDER3_SENT));
|
||||
break;
|
||||
case 'reminder_endless':
|
||||
event(new InvoiceReminderWasEmailed($this->invitation, $this->company, Ninja::eventVars(), Activity::INVOICE_REMINDER_ENDLESS_SENT));
|
||||
break;
|
||||
default:
|
||||
# code...
|
||||
break;
|
||||
}
|
||||
}
|
||||
// private function entityEmailSucceeded()
|
||||
// {
|
||||
// switch ($this->reminder_template) {
|
||||
// case 'invoice':
|
||||
// event(new InvoiceWasEmailed($this->invitation, $this->company, Ninja::eventVars()));
|
||||
// break;
|
||||
// case 'reminder1':
|
||||
// event(new InvoiceReminderWasEmailed($this->invitation, $this->company, Ninja::eventVars(), Activity::INVOICE_REMINDER1_SENT));
|
||||
// break;
|
||||
// case 'reminder2':
|
||||
// event(new InvoiceReminderWasEmailed($this->invitation, $this->company, Ninja::eventVars(), Activity::INVOICE_REMINDER2_SENT));
|
||||
// break;
|
||||
// case 'reminder3':
|
||||
// event(new InvoiceReminderWasEmailed($this->invitation, $this->company, Ninja::eventVars(), Activity::INVOICE_REMINDER3_SENT));
|
||||
// break;
|
||||
// case 'reminder_endless':
|
||||
// event(new InvoiceReminderWasEmailed($this->invitation, $this->company, Ninja::eventVars(), Activity::INVOICE_REMINDER_ENDLESS_SENT));
|
||||
// break;
|
||||
// default:
|
||||
// # code...
|
||||
// break;
|
||||
// }
|
||||
// }
|
||||
|
||||
private function resolveEmailBuilder()
|
||||
{
|
||||
|
@ -14,6 +14,7 @@ namespace App\Jobs\Ninja;
|
||||
use App\DataMapper\InvoiceItem;
|
||||
use App\Events\Invoice\InvoiceWasEmailed;
|
||||
use App\Jobs\Entity\EmailEntity;
|
||||
use App\Jobs\Util\WebHookHandler;
|
||||
use App\Libraries\MultiDB;
|
||||
use App\Models\Invoice;
|
||||
use App\Models\Webhook;
|
||||
@ -26,7 +27,6 @@ use Illuminate\Foundation\Bus\Dispatchable;
|
||||
use Illuminate\Queue\InteractsWithQueue;
|
||||
use Illuminate\Queue\SerializesModels;
|
||||
use Illuminate\Support\Carbon;
|
||||
use App\Jobs\Util\WebHookHandler;
|
||||
|
||||
class SendReminders implements ShouldQueue
|
||||
{
|
||||
|
63
app/Listeners/Credit/CreditEmailedNotification.php
Normal file
63
app/Listeners/Credit/CreditEmailedNotification.php
Normal file
@ -0,0 +1,63 @@
|
||||
<?php
|
||||
/**
|
||||
* Invoice Ninja (https://invoiceninja.com).
|
||||
*
|
||||
* @link https://github.com/invoiceninja/invoiceninja source repository
|
||||
*
|
||||
* @copyright Copyright (c) 2020. Invoice Ninja LLC (https://invoiceninja.com)
|
||||
*
|
||||
* @license https://opensource.org/licenses/AAL
|
||||
*/
|
||||
|
||||
namespace App\Listeners\Credit;
|
||||
|
||||
use App\Jobs\Mail\EntitySentMailer;
|
||||
use App\Libraries\MultiDB;
|
||||
use App\Notifications\Admin\EntitySentNotification;
|
||||
use App\Utils\Traits\Notifications\UserNotifies;
|
||||
use Illuminate\Contracts\Queue\ShouldQueue;
|
||||
|
||||
class CreditEmailedNotification implements ShouldQueue
|
||||
{
|
||||
use UserNotifies;
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* Handle the event.
|
||||
*
|
||||
* @param object $event
|
||||
* @return void
|
||||
*/
|
||||
public function handle($event)
|
||||
{
|
||||
MultiDB::setDb($event->company->db);
|
||||
|
||||
$first_notification_sent = true;
|
||||
|
||||
$credit = $event->invitation->credit;
|
||||
$credit->last_sent_date = now();
|
||||
$credit->save();
|
||||
|
||||
foreach ($event->invitation->company->company_users as $company_user) {
|
||||
$user = $company_user->user;
|
||||
|
||||
$notification = new EntitySentNotification($event->invitation, 'credit');
|
||||
|
||||
$methods = $this->findUserNotificationTypes($event->invitation, $company_user, 'credit', ['all_notifications', 'credit_sent']);
|
||||
|
||||
if (($key = array_search('mail', $methods)) !== false && $first_notification_sent === true) {
|
||||
unset($methods[$key]);
|
||||
|
||||
EntitySentMailer::dispatch($event->invitation, 'credit', $user, $event->invitation->company);
|
||||
$first_notification_sent = false;
|
||||
}
|
||||
|
||||
$notification->method = $methods;
|
||||
|
||||
$user->notify($notification);
|
||||
}
|
||||
}
|
||||
}
|
63
app/Listeners/Quote/QuoteEmailedNotification.php
Normal file
63
app/Listeners/Quote/QuoteEmailedNotification.php
Normal file
@ -0,0 +1,63 @@
|
||||
<?php
|
||||
/**
|
||||
* Invoice Ninja (https://invoiceninja.com).
|
||||
*
|
||||
* @link https://github.com/invoiceninja/invoiceninja source repository
|
||||
*
|
||||
* @copyright Copyright (c) 2020. Invoice Ninja LLC (https://invoiceninja.com)
|
||||
*
|
||||
* @license https://opensource.org/licenses/AAL
|
||||
*/
|
||||
|
||||
namespace App\Listeners\Quote;
|
||||
|
||||
use App\Jobs\Mail\EntitySentMailer;
|
||||
use App\Libraries\MultiDB;
|
||||
use App\Notifications\Admin\EntitySentNotification;
|
||||
use App\Utils\Traits\Notifications\UserNotifies;
|
||||
use Illuminate\Contracts\Queue\ShouldQueue;
|
||||
|
||||
class QuoteEmailedNotification implements ShouldQueue
|
||||
{
|
||||
use UserNotifies;
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* Handle the event.
|
||||
*
|
||||
* @param object $event
|
||||
* @return void
|
||||
*/
|
||||
public function handle($event)
|
||||
{
|
||||
MultiDB::setDb($event->company->db);
|
||||
|
||||
$first_notification_sent = true;
|
||||
|
||||
$quote = $event->invitation->quote;
|
||||
$quote->last_sent_date = now();
|
||||
$quote->save();
|
||||
|
||||
foreach ($event->invitation->company->company_users as $company_user) {
|
||||
$user = $company_user->user;
|
||||
|
||||
$notification = new EntitySentNotification($event->invitation, 'quote');
|
||||
|
||||
$methods = $this->findUserNotificationTypes($event->invitation, $company_user, 'quote', ['all_notifications', 'quote_sent']);
|
||||
|
||||
if (($key = array_search('mail', $methods)) !== false && $first_notification_sent === true) {
|
||||
unset($methods[$key]);
|
||||
|
||||
EntitySentMailer::dispatch($event->invitation, 'quote', $user, $event->invitation->company);
|
||||
$first_notification_sent = false;
|
||||
}
|
||||
|
||||
$notification->method = $methods;
|
||||
|
||||
$user->notify($notification);
|
||||
}
|
||||
}
|
||||
}
|
@ -13,6 +13,8 @@ namespace App\Models;
|
||||
|
||||
use App\DataMapper\ClientSettings;
|
||||
use App\DataMapper\CompanySettings;
|
||||
use App\Models\CompanyGateway;
|
||||
use App\Models\Gateway;
|
||||
use App\Models\Presenters\ClientPresenter;
|
||||
use App\Services\Client\ClientService;
|
||||
use App\Utils\Traits\GeneratesCounter;
|
||||
@ -452,11 +454,15 @@ class Client extends BaseModel implements HasLocalePreference
|
||||
$gateways = $this->company
|
||||
->company_gateways
|
||||
->whereIn('id', $transformed_ids)
|
||||
->where('gateway_key', '!=', '54faab2ab6e3223dbe848b1686490baa')
|
||||
->sortby(function ($model) use ($transformed_ids) { //company gateways are sorted in order of priority
|
||||
return array_search($model->id, $transformed_ids);// this closure sorts for us
|
||||
});
|
||||
} else {
|
||||
$gateways = $this->company->company_gateways->where('is_deleted', false);
|
||||
$gateways = $this->company
|
||||
->company_gateways
|
||||
->where('gateway_key', '!=', '54faab2ab6e3223dbe848b1686490baa')
|
||||
->where('is_deleted', false);
|
||||
}
|
||||
|
||||
$payment_methods = [];
|
||||
@ -478,11 +484,47 @@ class Client extends BaseModel implements HasLocalePreference
|
||||
//** Plucks the remaining keys into its own collection
|
||||
$payment_methods_intersect = $payment_methods_collections->intersectByKeys($payment_methods_collections->flatten(1)->unique());
|
||||
|
||||
// handle custom gateways as they are not unique'd()---------------------------------------------------------
|
||||
// we need to split the query here as we allow multiple custom gateways, so we must show all of them, they query logic
|
||||
// above only pulls in unique gateway types.. ie.. we only allow 1 credit card gateway, but many custom gateways.
|
||||
|
||||
if ($company_gateways || $company_gateways == '0') {
|
||||
$transformed_ids = $this->transformKeys(explode(',', $company_gateways));
|
||||
$gateways = $this->company
|
||||
->company_gateways
|
||||
->whereIn('id', $transformed_ids)
|
||||
->where('gateway_key', '=', '54faab2ab6e3223dbe848b1686490baa')
|
||||
->sortby(function ($model) use ($transformed_ids) { //company gateways are sorted in order of priority
|
||||
return array_search($model->id, $transformed_ids);// this closure sorts for us
|
||||
});
|
||||
} else {
|
||||
$gateways = $this->company
|
||||
->company_gateways
|
||||
->where('gateway_key', '=', '54faab2ab6e3223dbe848b1686490baa')
|
||||
->where('is_deleted', false);
|
||||
}
|
||||
|
||||
//note we have to use GatewayType::CREDIT_CARD as alias for CUSTOM
|
||||
foreach ($gateways as $gateway) {
|
||||
foreach ($gateway->driver($this)->gatewayTypes() as $type) {
|
||||
if (isset($gateway->fees_and_limits) && property_exists($gateway->fees_and_limits, $type)) {
|
||||
if ($this->validGatewayForAmount($gateway->fees_and_limits->{GatewayType::CREDIT_CARD}, $amount)) {
|
||||
$payment_methods_intersect->push([$gateway->id => $type]);
|
||||
}
|
||||
} else {
|
||||
$payment_methods_intersect->push([$gateway->id => $type]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//handle custom gateways as they are not unique'd()---------------------------------------------------------
|
||||
|
||||
|
||||
$payment_urls = [];
|
||||
|
||||
foreach ($payment_methods_intersect as $key => $child_array) {
|
||||
foreach ($child_array as $gateway_id => $gateway_type_id) {
|
||||
$gateway = $gateways->where('id', $gateway_id)->first();
|
||||
$gateway = CompanyGateway::find($gateway_id);
|
||||
|
||||
$fee_label = $gateway->calcGatewayFeeLabel($amount, $this);
|
||||
|
||||
|
@ -11,6 +11,7 @@
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use App\Models\GatewayType;
|
||||
use App\PaymentDrivers\BasePaymentDriver;
|
||||
use App\Utils\Number;
|
||||
use Illuminate\Database\Eloquent\SoftDeletes;
|
||||
@ -235,6 +236,9 @@ class CompanyGateway extends BaseModel
|
||||
return false;
|
||||
}
|
||||
|
||||
if($gateway_type_id == GatewayType::CUSTOM)
|
||||
$gateway_type_id = GatewayType::CREDIT_CARD;
|
||||
|
||||
return $this->fees_and_limits->{$gateway_type_id};
|
||||
}
|
||||
|
||||
|
@ -11,10 +11,13 @@
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use App\Events\Invoice\InvoiceReminderWasEmailed;
|
||||
use App\Events\Invoice\InvoiceWasEmailed;
|
||||
use App\Events\Invoice\InvoiceWasUpdated;
|
||||
use App\Helpers\Invoice\InvoiceSum;
|
||||
use App\Helpers\Invoice\InvoiceSumInclusive;
|
||||
use App\Jobs\Entity\CreateEntityPdf;
|
||||
use App\Models\Activity;
|
||||
use App\Models\Presenters\InvoicePresenter;
|
||||
use App\Services\Invoice\InvoiceService;
|
||||
use App\Services\Ledger\LedgerService;
|
||||
@ -431,4 +434,30 @@ class Invoice extends BaseModel
|
||||
{
|
||||
return $this->calc()->getTotal();
|
||||
}
|
||||
|
||||
|
||||
public function entityEmailEvent($invitation, $reminder_template)
|
||||
{
|
||||
|
||||
switch ($reminder_template) {
|
||||
case 'invoice':
|
||||
event(new InvoiceWasEmailed($invitation, $invitation->company, Ninja::eventVars()));
|
||||
break;
|
||||
case 'reminder1':
|
||||
event(new InvoiceReminderWasEmailed($invitation, $invitation->company, Ninja::eventVars(), Activity::INVOICE_REMINDER1_SENT));
|
||||
break;
|
||||
case 'reminder2':
|
||||
event(new InvoiceReminderWasEmailed($invitation, $invitation->company, Ninja::eventVars(), Activity::INVOICE_REMINDER2_SENT));
|
||||
break;
|
||||
case 'reminder3':
|
||||
event(new InvoiceReminderWasEmailed($invitation, $invitation->company, Ninja::eventVars(), Activity::INVOICE_REMINDER3_SENT));
|
||||
break;
|
||||
case 'reminder_endless':
|
||||
event(new InvoiceReminderWasEmailed($invitation, $invitation->company, Ninja::eventVars(), Activity::INVOICE_REMINDER_ENDLESS_SENT));
|
||||
break;
|
||||
default:
|
||||
# code...
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -24,6 +24,7 @@ use App\Events\Contact\ContactLoggedIn;
|
||||
use App\Events\Credit\CreditWasArchived;
|
||||
use App\Events\Credit\CreditWasCreated;
|
||||
use App\Events\Credit\CreditWasDeleted;
|
||||
use App\Events\Credit\CreditWasEmailed;
|
||||
use App\Events\Credit\CreditWasEmailedAndFailed;
|
||||
use App\Events\Credit\CreditWasMarkedSent;
|
||||
use App\Events\Credit\CreditWasRestored;
|
||||
@ -110,6 +111,7 @@ use App\Listeners\Activity\VendorDeletedActivity;
|
||||
use App\Listeners\Activity\VendorRestoredActivity;
|
||||
use App\Listeners\Activity\VendorUpdatedActivity;
|
||||
use App\Listeners\Contact\UpdateContactLastLogin;
|
||||
use App\Listeners\Credit\CreditEmailedNotification;
|
||||
use App\Listeners\Credit\CreditRestoredActivity;
|
||||
use App\Listeners\Credit\CreditViewedActivity;
|
||||
use App\Listeners\Document\DeleteCompanyDocuments;
|
||||
@ -120,8 +122,8 @@ use App\Listeners\Invoice\InvoiceArchivedActivity;
|
||||
use App\Listeners\Invoice\InvoiceCancelledActivity;
|
||||
use App\Listeners\Invoice\InvoiceDeletedActivity;
|
||||
use App\Listeners\Invoice\InvoiceEmailActivity;
|
||||
use App\Listeners\Invoice\InvoiceEmailedNotification;
|
||||
use App\Listeners\Invoice\InvoiceEmailFailedActivity;
|
||||
use App\Listeners\Invoice\InvoiceEmailedNotification;
|
||||
use App\Listeners\Invoice\InvoicePaidActivity;
|
||||
use App\Listeners\Invoice\InvoiceReminderEmailActivity;
|
||||
use App\Listeners\Invoice\InvoiceRestoredActivity;
|
||||
@ -129,14 +131,15 @@ use App\Listeners\Invoice\InvoiceReversedActivity;
|
||||
use App\Listeners\Invoice\InvoiceViewedActivity;
|
||||
use App\Listeners\Invoice\UpdateInvoiceActivity;
|
||||
use App\Listeners\Misc\InvitationViewedListener;
|
||||
use App\Listeners\Payment\PaymentEmailedActivity;
|
||||
use App\Listeners\Payment\PaymentEmailFailureActivity;
|
||||
use App\Listeners\Payment\PaymentEmailedActivity;
|
||||
use App\Listeners\Payment\PaymentNotification;
|
||||
use App\Listeners\Payment\PaymentRestoredActivity;
|
||||
use App\Listeners\Quote\QuoteApprovedActivity;
|
||||
use App\Listeners\Quote\QuoteArchivedActivity;
|
||||
use App\Listeners\Quote\QuoteDeletedActivity;
|
||||
use App\Listeners\Quote\QuoteEmailActivity;
|
||||
use App\Listeners\Quote\QuoteEmailedNotification;
|
||||
use App\Listeners\Quote\QuoteRestoredActivity;
|
||||
use App\Listeners\Quote\QuoteViewedActivity;
|
||||
use App\Listeners\Quote\ReachWorkflowSettings;
|
||||
@ -226,6 +229,7 @@ class EventServiceProvider extends ServiceProvider
|
||||
CreditWasEmailedAndFailed::class => [
|
||||
],
|
||||
CreditWasEmailed::class => [
|
||||
CreditEmailedNotification::class,
|
||||
],
|
||||
CreditWasMarkedSent::class => [
|
||||
],
|
||||
@ -332,6 +336,7 @@ class EventServiceProvider extends ServiceProvider
|
||||
],
|
||||
QuoteWasEmailed::class => [
|
||||
QuoteEmailActivity::class,
|
||||
QuoteEmailedNotification::class,
|
||||
],
|
||||
QuoteWasViewed::class => [
|
||||
QuoteViewedActivity::class,
|
||||
|
@ -130,7 +130,10 @@ class QuoteTransformer extends EntityTransformer
|
||||
'custom_surcharge2' => (float) $quote->custom_surcharge2,
|
||||
'custom_surcharge3' => (float) $quote->custom_surcharge3,
|
||||
'custom_surcharge4' => (float) $quote->custom_surcharge4,
|
||||
'custom_surcharge_taxes' => (bool) $quote->custom_surcharge_taxes,
|
||||
'custom_surcharge_tax1' => (bool) $quote->custom_surcharge_tax1,
|
||||
'custom_surcharge_tax2' => (bool) $quote->custom_surcharge_tax2,
|
||||
'custom_surcharge_tax3' => (bool) $quote->custom_surcharge_tax3,
|
||||
'custom_surcharge_tax4' => (bool) $quote->custom_surcharge_tax4,
|
||||
'line_items' => $quote->line_items ?: (array) [],
|
||||
'entity_type' => 'quote',
|
||||
'exchange_rate' => (float) $quote->exchange_rate,
|
||||
|
@ -243,6 +243,8 @@ class HtmlEngine
|
||||
$data['$client.postal_city_state'] = &$data['$postal_city_state'];
|
||||
$data['$client.country'] = &$data['$country'];
|
||||
$data['$client.email'] = &$data['$email'];
|
||||
|
||||
$data['$client.currency'] = ['value' => $this->client->currency()->code, 'label' => ''];
|
||||
|
||||
$data['$client.balance'] = ['value' => Number::formatMoney($this->client->balance, $this->client), 'label' => ctrans('texts.account_balance')];
|
||||
$data['$outstanding'] = ['value' => Number::formatMoney($this->client->balance, $this->client), 'label' => ctrans('texts.account_balance')];
|
||||
@ -256,10 +258,12 @@ class HtmlEngine
|
||||
$data['$contact.name'] = ['value' => isset($this->contact) ? $this->contact->present()->name() : 'no contact name on record', 'label' => ctrans('texts.contact_name')];
|
||||
$data['$contact.first_name'] = ['value' => isset($this->contact) ? $this->contact->first_name : '', 'label' => ctrans('texts.first_name')];
|
||||
$data['$contact.last_name'] = ['value' => isset($this->contact) ? $this->contact->last_name : '', 'label' => ctrans('texts.last_name')];
|
||||
|
||||
|
||||
$data['$contact.custom1'] = ['value' => isset($this->contact) ? $this->contact->custom_value1 : ' ', 'label' => $this->makeCustomField('contact1')];
|
||||
$data['$contact.custom2'] = ['value' => isset($this->contact) ? $this->contact->custom_value2 : ' ', 'label' => $this->makeCustomField('contact1')];
|
||||
$data['$contact.custom3'] = ['value' => isset($this->contact) ? $this->contact->custom_value3 : ' ', 'label' => $this->makeCustomField('contact1')];
|
||||
$data['$contact.custom4'] = ['value' => isset($this->contact) ? $this->contact->custom_value4 : ' ', 'label' => $this->makeCustomField('contact1')];
|
||||
$data['$contact.custom2'] = ['value' => isset($this->contact) ? $this->contact->custom_value2 : ' ', 'label' => $this->makeCustomField('contact2')];
|
||||
$data['$contact.custom3'] = ['value' => isset($this->contact) ? $this->contact->custom_value3 : ' ', 'label' => $this->makeCustomField('contact3')];
|
||||
$data['$contact.custom4'] = ['value' => isset($this->contact) ? $this->contact->custom_value4 : ' ', 'label' => $this->makeCustomField('contact4')];
|
||||
|
||||
$data['$company.city_state_postal'] = ['value' => $this->company->present()->cityStateZip($this->settings->city, $this->settings->state, $this->settings->postal_code, false) ?: ' ', 'label' => ctrans('texts.city_state_postal')];
|
||||
$data['$company.postal_city_state'] = ['value' => $this->company->present()->cityStateZip($this->settings->city, $this->settings->state, $this->settings->postal_code, true) ?: ' ', 'label' => ctrans('texts.postal_city_state')];
|
||||
@ -343,7 +347,7 @@ class HtmlEngine
|
||||
$data['$item'] = ['value' => '', 'label' => ctrans('texts.item')];
|
||||
$data['$description'] = ['value' => '', 'label' => ctrans('texts.description')];
|
||||
|
||||
$data['$entity_footer'] = ['value' => $this->client->getSetting("{$this->entity_string}_footer"), 'label' => ''];
|
||||
$data['$entity_footer'] = ['value' => $this->client->getSetting("{$this->entity_string}_footer"), 'label' => ''];
|
||||
|
||||
// $data['custom_label1'] = ['value' => '', 'label' => ctrans('texts.')];
|
||||
// $data['custom_label2'] = ['value' => '', 'label' => ctrans('texts.')];
|
||||
|
@ -103,7 +103,7 @@ class Number
|
||||
$value = number_format($value, $precision, $decimal, $thousand);
|
||||
$symbol = $currency->symbol;
|
||||
|
||||
if ($client->getSetting('show_currency_code') === true && $currency->code == 'CHF'){
|
||||
if ($client->getSetting('show_currency_code') === true && $currency->code == 'CHF') {
|
||||
return "{$code} {$value}";
|
||||
} elseif ($client->getSetting('show_currency_code') === true) {
|
||||
return "{$value} {$code}";
|
||||
|
@ -98,8 +98,11 @@ class SystemHealth
|
||||
if ($exitCode === 0) {
|
||||
return empty($foo[0]) ? 'Found node, but no version information' : $foo[0];
|
||||
}
|
||||
|
||||
return 'Node not found.';
|
||||
|
||||
} catch (Exception $e) {
|
||||
return false;
|
||||
return 'Node not found.';
|
||||
}
|
||||
}
|
||||
|
||||
@ -111,8 +114,11 @@ class SystemHealth
|
||||
if ($exitCode === 0) {
|
||||
return empty($foo[0]) ? 'Found npm, but no version information' : $foo[0];
|
||||
}
|
||||
|
||||
return 'NPM not found';
|
||||
|
||||
} catch (Exception $e) {
|
||||
return false;
|
||||
return 'NPM not found';
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -602,15 +602,12 @@ trait GeneratesCounter
|
||||
}
|
||||
|
||||
if ($entity instanceof Vendor) {
|
||||
|
||||
$search[] = '{$vendor_id_number}';
|
||||
$replace[] = $entity->id_number;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
if ($entity instanceof Expense) {
|
||||
|
||||
if($entity->vendor){
|
||||
if ($entity->vendor) {
|
||||
$search[] = '{$vendor_id_number}';
|
||||
$replace[] = $entity->vendor->id_number;
|
||||
|
||||
@ -629,7 +626,7 @@ trait GeneratesCounter
|
||||
|
||||
$search[] = '{$expense_id_number}';
|
||||
$replace[] = $entity->id_number;
|
||||
}
|
||||
}
|
||||
|
||||
if ($entity->client) {
|
||||
$search[] = '{$client_custom1}';
|
||||
|
@ -209,4 +209,7 @@ trait MakesReminders
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
@ -57,7 +57,7 @@
|
||||
"omnipay/paypal": "^3.0",
|
||||
"predis/predis": "^1.1",
|
||||
"sentry/sentry-laravel": "^2",
|
||||
"spatie/browsershot": "^3.37",
|
||||
"spatie/browsershot": "3.40.2",
|
||||
"stripe/stripe-php": "^7.50",
|
||||
"turbo124/beacon": "^1",
|
||||
"turbo124/laravel-gmail": "^5.0",
|
||||
|
279
composer.lock
generated
279
composer.lock
generated
@ -4,7 +4,7 @@
|
||||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||
"This file is @generated automatically"
|
||||
],
|
||||
"content-hash": "a96274475177046a99ed701ae4148a3d",
|
||||
"content-hash": "0590d36f1ac1287db12b2b3d33750866",
|
||||
"packages": [
|
||||
{
|
||||
"name": "asgrim/ofxparser",
|
||||
@ -116,16 +116,16 @@
|
||||
},
|
||||
{
|
||||
"name": "aws/aws-sdk-php",
|
||||
"version": "3.166.2",
|
||||
"version": "3.168.2",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/aws/aws-sdk-php.git",
|
||||
"reference": "fe0ec9235d07b0f51ec4396dce0dd639020ae1a7"
|
||||
"reference": "1d6a976da857d13b156bd63613ee086c13f6dc29"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/fe0ec9235d07b0f51ec4396dce0dd639020ae1a7",
|
||||
"reference": "fe0ec9235d07b0f51ec4396dce0dd639020ae1a7",
|
||||
"url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/1d6a976da857d13b156bd63613ee086c13f6dc29",
|
||||
"reference": "1d6a976da857d13b156bd63613ee086c13f6dc29",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@ -200,9 +200,9 @@
|
||||
"support": {
|
||||
"forum": "https://forums.aws.amazon.com/forum.jspa?forumID=80",
|
||||
"issues": "https://github.com/aws/aws-sdk-php/issues",
|
||||
"source": "https://github.com/aws/aws-sdk-php/tree/3.166.2"
|
||||
"source": "https://github.com/aws/aws-sdk-php/tree/3.168.2"
|
||||
},
|
||||
"time": "2020-12-04T19:12:30+00:00"
|
||||
"time": "2020-12-10T19:35:18+00:00"
|
||||
},
|
||||
{
|
||||
"name": "brick/math",
|
||||
@ -1778,16 +1778,16 @@
|
||||
},
|
||||
{
|
||||
"name": "fzaninotto/faker",
|
||||
"version": "v1.9.1",
|
||||
"version": "v1.9.2",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/fzaninotto/Faker.git",
|
||||
"reference": "fc10d778e4b84d5bd315dad194661e091d307c6f"
|
||||
"reference": "848d8125239d7dbf8ab25cb7f054f1a630e68c2e"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/fzaninotto/Faker/zipball/fc10d778e4b84d5bd315dad194661e091d307c6f",
|
||||
"reference": "fc10d778e4b84d5bd315dad194661e091d307c6f",
|
||||
"url": "https://api.github.com/repos/fzaninotto/Faker/zipball/848d8125239d7dbf8ab25cb7f054f1a630e68c2e",
|
||||
"reference": "848d8125239d7dbf8ab25cb7f054f1a630e68c2e",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@ -1826,10 +1826,10 @@
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/fzaninotto/Faker/issues",
|
||||
"source": "https://github.com/fzaninotto/Faker/tree/v1.9.1"
|
||||
"source": "https://github.com/fzaninotto/Faker/tree/v1.9.2"
|
||||
},
|
||||
"abandoned": true,
|
||||
"time": "2019-12-12T13:22:17+00:00"
|
||||
"time": "2020-12-11T09:56:16+00:00"
|
||||
},
|
||||
{
|
||||
"name": "google/apiclient",
|
||||
@ -2671,16 +2671,16 @@
|
||||
},
|
||||
{
|
||||
"name": "laravel/framework",
|
||||
"version": "v8.17.2",
|
||||
"version": "v8.18.1",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/laravel/framework.git",
|
||||
"reference": "b89363b540bd8ad6e727ee165b510a19fe170a28"
|
||||
"reference": "31747193c26ba0a9cb7929a912895d3cdefd10cf"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/laravel/framework/zipball/b89363b540bd8ad6e727ee165b510a19fe170a28",
|
||||
"reference": "b89363b540bd8ad6e727ee165b510a19fe170a28",
|
||||
"url": "https://api.github.com/repos/laravel/framework/zipball/31747193c26ba0a9cb7929a912895d3cdefd10cf",
|
||||
"reference": "31747193c26ba0a9cb7929a912895d3cdefd10cf",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@ -2700,15 +2700,15 @@
|
||||
"psr/simple-cache": "^1.0",
|
||||
"ramsey/uuid": "^4.0",
|
||||
"swiftmailer/swiftmailer": "^6.0",
|
||||
"symfony/console": "^5.1",
|
||||
"symfony/error-handler": "^5.1",
|
||||
"symfony/finder": "^5.1",
|
||||
"symfony/http-foundation": "^5.1",
|
||||
"symfony/http-kernel": "^5.1",
|
||||
"symfony/mime": "^5.1",
|
||||
"symfony/process": "^5.1",
|
||||
"symfony/routing": "^5.1",
|
||||
"symfony/var-dumper": "^5.1",
|
||||
"symfony/console": "^5.1.4",
|
||||
"symfony/error-handler": "^5.1.4",
|
||||
"symfony/finder": "^5.1.4",
|
||||
"symfony/http-foundation": "^5.1.4",
|
||||
"symfony/http-kernel": "^5.1.4",
|
||||
"symfony/mime": "^5.1.4",
|
||||
"symfony/process": "^5.1.4",
|
||||
"symfony/routing": "^5.1.4",
|
||||
"symfony/var-dumper": "^5.1.4",
|
||||
"tijsverkoyen/css-to-inline-styles": "^2.2.2",
|
||||
"vlucas/phpdotenv": "^5.2",
|
||||
"voku/portable-ascii": "^1.4.8"
|
||||
@ -2759,11 +2759,11 @@
|
||||
"guzzlehttp/guzzle": "^6.5.5|^7.0.1",
|
||||
"league/flysystem-cached-adapter": "^1.0",
|
||||
"mockery/mockery": "^1.4.2",
|
||||
"orchestra/testbench-core": "^6.5",
|
||||
"orchestra/testbench-core": "^6.8",
|
||||
"pda/pheanstalk": "^4.0",
|
||||
"phpunit/phpunit": "^8.5.8|^9.3.3",
|
||||
"predis/predis": "^1.1.1",
|
||||
"symfony/cache": "^5.1"
|
||||
"symfony/cache": "^5.1.4"
|
||||
},
|
||||
"suggest": {
|
||||
"aws/aws-sdk-php": "Required to use the SQS queue driver, DynamoDb failed job storage and SES mail driver (^3.155).",
|
||||
@ -2788,8 +2788,8 @@
|
||||
"predis/predis": "Required to use the predis connector (^1.1.2).",
|
||||
"psr/http-message": "Required to allow Storage::put to accept a StreamInterface (^1.0).",
|
||||
"pusher/pusher-php-server": "Required to use the Pusher broadcast driver (^4.0).",
|
||||
"symfony/cache": "Required to PSR-6 cache bridge (^5.1).",
|
||||
"symfony/filesystem": "Required to enable support for relative symbolic links (^5.1).",
|
||||
"symfony/cache": "Required to PSR-6 cache bridge (^5.1.4).",
|
||||
"symfony/filesystem": "Required to enable support for relative symbolic links (^5.1.4).",
|
||||
"symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^2.0).",
|
||||
"wildbit/swiftmailer-postmark": "Required to use Postmark mail driver (^3.0)."
|
||||
},
|
||||
@ -2834,7 +2834,7 @@
|
||||
"issues": "https://github.com/laravel/framework/issues",
|
||||
"source": "https://github.com/laravel/framework"
|
||||
},
|
||||
"time": "2020-12-03T13:47:59+00:00"
|
||||
"time": "2020-12-08T22:05:12+00:00"
|
||||
},
|
||||
{
|
||||
"name": "laravel/slack-notification-channel",
|
||||
@ -4300,29 +4300,29 @@
|
||||
},
|
||||
{
|
||||
"name": "nwidart/laravel-modules",
|
||||
"version": "6.2.0",
|
||||
"version": "8.2.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/nWidart/laravel-modules.git",
|
||||
"reference": "6dc702eeb5d025b4cd331bc394e47ccc43b68e89"
|
||||
"reference": "6ade5ec19e81a0e4807834886a2c47509d069cb7"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/nWidart/laravel-modules/zipball/6dc702eeb5d025b4cd331bc394e47ccc43b68e89",
|
||||
"reference": "6dc702eeb5d025b4cd331bc394e47ccc43b68e89",
|
||||
"url": "https://api.github.com/repos/nWidart/laravel-modules/zipball/6ade5ec19e81a0e4807834886a2c47509d069cb7",
|
||||
"reference": "6ade5ec19e81a0e4807834886a2c47509d069cb7",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"ext-json": "*",
|
||||
"php": ">=7.2"
|
||||
"php": ">=7.3"
|
||||
},
|
||||
"require-dev": {
|
||||
"friendsofphp/php-cs-fixer": "^2.15",
|
||||
"laravel/framework": "6.0.*",
|
||||
"friendsofphp/php-cs-fixer": "^2.16",
|
||||
"laravel/framework": "^8.0",
|
||||
"mockery/mockery": "~1.0",
|
||||
"orchestra/testbench": "^4.0",
|
||||
"phpstan/phpstan": "^0.9.2",
|
||||
"phpunit/phpunit": "~7.0|~8.0",
|
||||
"orchestra/testbench": "^6.2",
|
||||
"phpstan/phpstan": "^0.12.14",
|
||||
"phpunit/phpunit": "^8.5",
|
||||
"spatie/phpunit-snapshot-assertions": "^2.1.0"
|
||||
},
|
||||
"type": "library",
|
||||
@ -4336,7 +4336,7 @@
|
||||
}
|
||||
},
|
||||
"branch-alias": {
|
||||
"dev-master": "6.0-dev"
|
||||
"dev-master": "8.0-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
@ -4369,9 +4369,15 @@
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/nWidart/laravel-modules/issues",
|
||||
"source": "https://github.com/nWidart/laravel-modules/tree/master"
|
||||
"source": "https://github.com/nWidart/laravel-modules/tree/8.2.0"
|
||||
},
|
||||
"time": "2019-11-12T18:38:48+00:00"
|
||||
"funding": [
|
||||
{
|
||||
"url": "https://github.com/nwidart",
|
||||
"type": "github"
|
||||
}
|
||||
],
|
||||
"time": "2020-11-11T09:24:22+00:00"
|
||||
},
|
||||
{
|
||||
"name": "omnipay/common",
|
||||
@ -6340,26 +6346,26 @@
|
||||
},
|
||||
{
|
||||
"name": "sentry/sentry",
|
||||
"version": "3.1.0",
|
||||
"version": "3.1.1",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/getsentry/sentry-php.git",
|
||||
"reference": "55f5714e6eff6bc9e3dc4b47ac4a0e6d72088e1e"
|
||||
"reference": "2a0ecb127dbccf93fb5a37df907ce08822a62e6c"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/getsentry/sentry-php/zipball/55f5714e6eff6bc9e3dc4b47ac4a0e6d72088e1e",
|
||||
"reference": "55f5714e6eff6bc9e3dc4b47ac4a0e6d72088e1e",
|
||||
"url": "https://api.github.com/repos/getsentry/sentry-php/zipball/2a0ecb127dbccf93fb5a37df907ce08822a62e6c",
|
||||
"reference": "2a0ecb127dbccf93fb5a37df907ce08822a62e6c",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"ext-json": "*",
|
||||
"ext-mbstring": "*",
|
||||
"guzzlehttp/promises": "^1.3",
|
||||
"guzzlehttp/promises": "^1.4",
|
||||
"guzzlehttp/psr7": "^1.7",
|
||||
"jean85/pretty-package-versions": "^1.5",
|
||||
"ocramius/package-versions": "^1.8",
|
||||
"php": "^7.2",
|
||||
"php": "^7.2|^8.0",
|
||||
"php-http/async-client-implementation": "^1.0",
|
||||
"php-http/client-common": "^1.5|^2.0",
|
||||
"php-http/discovery": "^1.6.1",
|
||||
@ -6368,7 +6374,7 @@
|
||||
"psr/http-factory": "^1.0",
|
||||
"psr/http-message-implementation": "^1.0",
|
||||
"psr/log": "^1.0",
|
||||
"symfony/options-resolver": "^3.4.4|^4.0|^5.0",
|
||||
"symfony/options-resolver": "^3.4.43|^4.4.11|^5.0.11",
|
||||
"symfony/polyfill-php80": "^1.17",
|
||||
"symfony/polyfill-uuid": "^1.13.1"
|
||||
},
|
||||
@ -6380,13 +6386,14 @@
|
||||
"friendsofphp/php-cs-fixer": "^2.16",
|
||||
"http-interop/http-factory-guzzle": "^1.0",
|
||||
"monolog/monolog": "^1.3|^2.0",
|
||||
"nikic/php-parser": "^4.10.3",
|
||||
"php-http/mock-client": "^1.3",
|
||||
"phpstan/extension-installer": "^1.0",
|
||||
"phpstan/phpstan": "^0.12",
|
||||
"phpstan/phpstan-phpunit": "^0.12",
|
||||
"phpunit/phpunit": "^7.5.18",
|
||||
"symfony/phpunit-bridge": "^5.1",
|
||||
"vimeo/psalm": "^3.4"
|
||||
"phpunit/phpunit": "^8.5.13|^9.4",
|
||||
"symfony/phpunit-bridge": "^5.2",
|
||||
"vimeo/psalm": "^3.4|^4.2"
|
||||
},
|
||||
"suggest": {
|
||||
"monolog/monolog": "Allow sending log messages to Sentry by using the included Monolog handler."
|
||||
@ -6428,7 +6435,7 @@
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/getsentry/sentry-php/issues",
|
||||
"source": "https://github.com/getsentry/sentry-php/tree/3.1.0"
|
||||
"source": "https://github.com/getsentry/sentry-php/tree/3.1.1"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@ -6440,34 +6447,34 @@
|
||||
"type": "custom"
|
||||
}
|
||||
],
|
||||
"time": "2020-12-01T09:59:47+00:00"
|
||||
"time": "2020-12-05T21:59:39+00:00"
|
||||
},
|
||||
{
|
||||
"name": "sentry/sentry-laravel",
|
||||
"version": "2.3.0",
|
||||
"version": "2.3.1",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/getsentry/sentry-laravel.git",
|
||||
"reference": "fd987481113fbfbfafb8adc0717cab9babe50ce4"
|
||||
"reference": "3c8b6c02fbb6b50cb8e236cd1845155b45fc881e"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/getsentry/sentry-laravel/zipball/fd987481113fbfbfafb8adc0717cab9babe50ce4",
|
||||
"reference": "fd987481113fbfbfafb8adc0717cab9babe50ce4",
|
||||
"url": "https://api.github.com/repos/getsentry/sentry-laravel/zipball/3c8b6c02fbb6b50cb8e236cd1845155b45fc881e",
|
||||
"reference": "3c8b6c02fbb6b50cb8e236cd1845155b45fc881e",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"illuminate/support": "5.0 - 5.8 | ^6.0 | ^7.0 | ^8.0",
|
||||
"php": "^7.2",
|
||||
"php": "^7.2 | ^8.0",
|
||||
"sentry/sdk": "^3.1",
|
||||
"sentry/sentry": "3.1.*"
|
||||
},
|
||||
"require-dev": {
|
||||
"friendsofphp/php-cs-fixer": "2.16.*",
|
||||
"laravel/framework": "^7.0",
|
||||
"laravel/framework": "^8.0",
|
||||
"mockery/mockery": "1.3.*",
|
||||
"orchestra/testbench": "^5.0",
|
||||
"phpunit/phpunit": "^8.0"
|
||||
"orchestra/testbench": "^6.0",
|
||||
"phpunit/phpunit": "^9.3"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
@ -6514,7 +6521,7 @@
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/getsentry/sentry-laravel/issues",
|
||||
"source": "https://github.com/getsentry/sentry-laravel/tree/2.3.0"
|
||||
"source": "https://github.com/getsentry/sentry-laravel/tree/2.3.1"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@ -6526,31 +6533,31 @@
|
||||
"type": "custom"
|
||||
}
|
||||
],
|
||||
"time": "2020-12-01T13:57:22+00:00"
|
||||
"time": "2020-12-07T09:19:29+00:00"
|
||||
},
|
||||
{
|
||||
"name": "spatie/browsershot",
|
||||
"version": "3.41.0",
|
||||
"version": "3.40.2",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/spatie/browsershot.git",
|
||||
"reference": "2cc87d4dad788b372549cf856c773a7e5a8fcace"
|
||||
"reference": "3e55eaf5ab8cee65d1661a567e89b3374afb9116"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/spatie/browsershot/zipball/2cc87d4dad788b372549cf856c773a7e5a8fcace",
|
||||
"reference": "2cc87d4dad788b372549cf856c773a7e5a8fcace",
|
||||
"url": "https://api.github.com/repos/spatie/browsershot/zipball/3e55eaf5ab8cee65d1661a567e89b3374afb9116",
|
||||
"reference": "3e55eaf5ab8cee65d1661a567e89b3374afb9116",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": "^7.4|^8.0",
|
||||
"php": "^7.1",
|
||||
"spatie/image": "^1.5.3",
|
||||
"spatie/temporary-directory": "^1.1",
|
||||
"symfony/process": "^5.0"
|
||||
"symfony/process": "^4.2|^5.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"phpunit/phpunit": "^9.0",
|
||||
"spatie/phpunit-snapshot-assertions": "^4.2.3"
|
||||
"phpunit/phpunit": "^6.1|^7.5",
|
||||
"spatie/phpunit-snapshot-assertions": "^1.0"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
@ -6584,7 +6591,7 @@
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/spatie/browsershot/issues",
|
||||
"source": "https://github.com/spatie/browsershot/tree/3.41.0"
|
||||
"source": "https://github.com/spatie/browsershot/tree/3.40.2"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@ -6592,7 +6599,7 @@
|
||||
"type": "github"
|
||||
}
|
||||
],
|
||||
"time": "2020-11-18T08:51:42+00:00"
|
||||
"time": "2020-11-11T22:18:15+00:00"
|
||||
},
|
||||
{
|
||||
"name": "spatie/image",
|
||||
@ -6768,16 +6775,16 @@
|
||||
},
|
||||
{
|
||||
"name": "stripe/stripe-php",
|
||||
"version": "v7.66.1",
|
||||
"version": "v7.67.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/stripe/stripe-php.git",
|
||||
"reference": "a2ebaa272a8797b21e81afaf8d5ba0953ff15e13"
|
||||
"reference": "935d2c67912007f6d17b6c08a62050252c509129"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/stripe/stripe-php/zipball/a2ebaa272a8797b21e81afaf8d5ba0953ff15e13",
|
||||
"reference": "a2ebaa272a8797b21e81afaf8d5ba0953ff15e13",
|
||||
"url": "https://api.github.com/repos/stripe/stripe-php/zipball/935d2c67912007f6d17b6c08a62050252c509129",
|
||||
"reference": "935d2c67912007f6d17b6c08a62050252c509129",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@ -6787,7 +6794,7 @@
|
||||
"php": ">=5.6.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"friendsofphp/php-cs-fixer": "2.16.5",
|
||||
"friendsofphp/php-cs-fixer": "2.17.1",
|
||||
"php-coveralls/php-coveralls": "^2.1",
|
||||
"phpunit/phpunit": "^5.7",
|
||||
"squizlabs/php_codesniffer": "^3.3",
|
||||
@ -6823,38 +6830,37 @@
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/stripe/stripe-php/issues",
|
||||
"source": "https://github.com/stripe/stripe-php/tree/v7.66.1"
|
||||
"source": "https://github.com/stripe/stripe-php/tree/v7.67.0"
|
||||
},
|
||||
"time": "2020-12-01T18:44:12+00:00"
|
||||
"time": "2020-12-09T19:00:34+00:00"
|
||||
},
|
||||
{
|
||||
"name": "swiftmailer/swiftmailer",
|
||||
"version": "v6.2.3",
|
||||
"version": "v6.2.4",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/swiftmailer/swiftmailer.git",
|
||||
"reference": "149cfdf118b169f7840bbe3ef0d4bc795d1780c9"
|
||||
"reference": "56f0ab23f54c4ccbb0d5dcc67ff8552e0c98d59e"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/149cfdf118b169f7840bbe3ef0d4bc795d1780c9",
|
||||
"reference": "149cfdf118b169f7840bbe3ef0d4bc795d1780c9",
|
||||
"url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/56f0ab23f54c4ccbb0d5dcc67ff8552e0c98d59e",
|
||||
"reference": "56f0ab23f54c4ccbb0d5dcc67ff8552e0c98d59e",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"egulias/email-validator": "~2.0",
|
||||
"egulias/email-validator": "^2.0",
|
||||
"php": ">=7.0.0",
|
||||
"symfony/polyfill-iconv": "^1.0",
|
||||
"symfony/polyfill-intl-idn": "^1.10",
|
||||
"symfony/polyfill-mbstring": "^1.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"mockery/mockery": "~0.9.1",
|
||||
"symfony/phpunit-bridge": "^3.4.19|^4.1.8"
|
||||
"mockery/mockery": "^1.0",
|
||||
"symfony/phpunit-bridge": "^4.4|^5.0"
|
||||
},
|
||||
"suggest": {
|
||||
"ext-intl": "Needed to support internationalized email addresses",
|
||||
"true/punycode": "Needed to support internationalized email addresses, if ext-intl is not installed"
|
||||
"ext-intl": "Needed to support internationalized email addresses"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
@ -6889,9 +6895,19 @@
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/swiftmailer/swiftmailer/issues",
|
||||
"source": "https://github.com/swiftmailer/swiftmailer/tree/v6.2.3"
|
||||
"source": "https://github.com/swiftmailer/swiftmailer/tree/v6.2.4"
|
||||
},
|
||||
"time": "2019-11-12T09:31:26+00:00"
|
||||
"funding": [
|
||||
{
|
||||
"url": "https://github.com/fabpot",
|
||||
"type": "github"
|
||||
},
|
||||
{
|
||||
"url": "https://tidelift.com/funding/github/packagist/swiftmailer/swiftmailer",
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2020-12-08T18:02:06+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/console",
|
||||
@ -10185,22 +10201,22 @@
|
||||
},
|
||||
{
|
||||
"name": "darkaonline/l5-swagger",
|
||||
"version": "8.0.2",
|
||||
"version": "8.0.4",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/DarkaOnLine/L5-Swagger.git",
|
||||
"reference": "9b900e353503237ed983cae17277ff12fc1aaaf9"
|
||||
"reference": "3477e7013daf8b6fc142c45fdcb9fe6c74d7398d"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/DarkaOnLine/L5-Swagger/zipball/9b900e353503237ed983cae17277ff12fc1aaaf9",
|
||||
"reference": "9b900e353503237ed983cae17277ff12fc1aaaf9",
|
||||
"url": "https://api.github.com/repos/DarkaOnLine/L5-Swagger/zipball/3477e7013daf8b6fc142c45fdcb9fe6c74d7398d",
|
||||
"reference": "3477e7013daf8b6fc142c45fdcb9fe6c74d7398d",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"ext-json": "*",
|
||||
"laravel/framework": "^8.0 || ^7.0",
|
||||
"php": "^7.2",
|
||||
"php": "^7.2 || ^8.0",
|
||||
"swagger-api/swagger-ui": "^3.0",
|
||||
"symfony/yaml": "^5.0",
|
||||
"zircote/swagger-php": "3.*"
|
||||
@ -10240,15 +10256,19 @@
|
||||
"email": "darius@matulionis.lt"
|
||||
}
|
||||
],
|
||||
"description": "Swagger integration to Laravel 5",
|
||||
"description": "OpenApi or Swagger integration to Laravel",
|
||||
"keywords": [
|
||||
"api",
|
||||
"documentation",
|
||||
"laravel",
|
||||
"swagger"
|
||||
"openapi",
|
||||
"specification",
|
||||
"swagger",
|
||||
"ui"
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/DarkaOnLine/L5-Swagger/issues",
|
||||
"source": "https://github.com/DarkaOnLine/L5-Swagger/tree/8.0.2"
|
||||
"source": "https://github.com/DarkaOnLine/L5-Swagger/tree/8.0.4"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@ -10256,7 +10276,7 @@
|
||||
"type": "github"
|
||||
}
|
||||
],
|
||||
"time": "2020-09-09T05:12:50+00:00"
|
||||
"time": "2020-12-08T13:29:20+00:00"
|
||||
},
|
||||
{
|
||||
"name": "doctrine/annotations",
|
||||
@ -10469,16 +10489,16 @@
|
||||
},
|
||||
{
|
||||
"name": "facade/ignition",
|
||||
"version": "2.5.2",
|
||||
"version": "2.5.3",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/facade/ignition.git",
|
||||
"reference": "08668034beb185fa2ac6f09b1034eaa440952ace"
|
||||
"reference": "d8dc4f90ed469f9f9313b976fb078c20585d5c99"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/facade/ignition/zipball/08668034beb185fa2ac6f09b1034eaa440952ace",
|
||||
"reference": "08668034beb185fa2ac6f09b1034eaa440952ace",
|
||||
"url": "https://api.github.com/repos/facade/ignition/zipball/d8dc4f90ed469f9f9313b976fb078c20585d5c99",
|
||||
"reference": "d8dc4f90ed469f9f9313b976fb078c20585d5c99",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@ -10542,7 +10562,7 @@
|
||||
"issues": "https://github.com/facade/ignition/issues",
|
||||
"source": "https://github.com/facade/ignition"
|
||||
},
|
||||
"time": "2020-11-17T09:18:51+00:00"
|
||||
"time": "2020-12-09T20:25:45+00:00"
|
||||
},
|
||||
{
|
||||
"name": "facade/ignition-contracts",
|
||||
@ -10765,16 +10785,16 @@
|
||||
},
|
||||
{
|
||||
"name": "friendsofphp/php-cs-fixer",
|
||||
"version": "v2.16.7",
|
||||
"version": "v2.17.1",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/FriendsOfPHP/PHP-CS-Fixer.git",
|
||||
"reference": "4e35806a6d7d8510d6842ae932e8832363d22c87"
|
||||
"reference": "5198b7308ed63f26799387fd7f3901c3db6bd7fd"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/FriendsOfPHP/PHP-CS-Fixer/zipball/4e35806a6d7d8510d6842ae932e8832363d22c87",
|
||||
"reference": "4e35806a6d7d8510d6842ae932e8832363d22c87",
|
||||
"url": "https://api.github.com/repos/FriendsOfPHP/PHP-CS-Fixer/zipball/5198b7308ed63f26799387fd7f3901c3db6bd7fd",
|
||||
"reference": "5198b7308ed63f26799387fd7f3901c3db6bd7fd",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@ -10783,7 +10803,7 @@
|
||||
"doctrine/annotations": "^1.2",
|
||||
"ext-json": "*",
|
||||
"ext-tokenizer": "*",
|
||||
"php": "^7.1",
|
||||
"php": "^5.6 || ^7.0 || ^8.0",
|
||||
"php-cs-fixer/diff": "^1.3",
|
||||
"symfony/console": "^3.4.43 || ^4.1.6 || ^5.0",
|
||||
"symfony/event-dispatcher": "^3.0 || ^4.0 || ^5.0",
|
||||
@ -10805,6 +10825,7 @@
|
||||
"php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.2",
|
||||
"php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.2.1",
|
||||
"phpunit/phpunit": "^5.7.27 || ^6.5.14 || ^7.1",
|
||||
"phpunitgoodpractices/polyfill": "^1.5",
|
||||
"phpunitgoodpractices/traits": "^1.9.1",
|
||||
"symfony/phpunit-bridge": "^5.1",
|
||||
"symfony/yaml": "^3.0 || ^4.0 || ^5.0"
|
||||
@ -10854,7 +10875,7 @@
|
||||
"description": "A tool to automatically fix PHP code style",
|
||||
"support": {
|
||||
"issues": "https://github.com/FriendsOfPHP/PHP-CS-Fixer/issues",
|
||||
"source": "https://github.com/FriendsOfPHP/PHP-CS-Fixer/tree/v2.16.7"
|
||||
"source": "https://github.com/FriendsOfPHP/PHP-CS-Fixer/tree/v2.17.1"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@ -10862,7 +10883,7 @@
|
||||
"type": "github"
|
||||
}
|
||||
],
|
||||
"time": "2020-10-27T22:44:27+00:00"
|
||||
"time": "2020-12-08T13:47:02+00:00"
|
||||
},
|
||||
{
|
||||
"name": "hamcrest/hamcrest-php",
|
||||
@ -10917,25 +10938,25 @@
|
||||
},
|
||||
{
|
||||
"name": "maximebf/debugbar",
|
||||
"version": "v1.16.3",
|
||||
"version": "v1.16.4",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/maximebf/php-debugbar.git",
|
||||
"reference": "1a1605b8e9bacb34cc0c6278206d699772e1d372"
|
||||
"reference": "c86c717e4bf3c6d98422da5c38bfa7b0f494b04c"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/maximebf/php-debugbar/zipball/1a1605b8e9bacb34cc0c6278206d699772e1d372",
|
||||
"reference": "1a1605b8e9bacb34cc0c6278206d699772e1d372",
|
||||
"url": "https://api.github.com/repos/maximebf/php-debugbar/zipball/c86c717e4bf3c6d98422da5c38bfa7b0f494b04c",
|
||||
"reference": "c86c717e4bf3c6d98422da5c38bfa7b0f494b04c",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": "^7.1",
|
||||
"php": "^7.1|^8",
|
||||
"psr/log": "^1.0",
|
||||
"symfony/var-dumper": "^2.6|^3|^4|^5"
|
||||
},
|
||||
"require-dev": {
|
||||
"phpunit/phpunit": "^5"
|
||||
"phpunit/phpunit": "^7.5.20 || ^9.4.2"
|
||||
},
|
||||
"suggest": {
|
||||
"kriswallsmith/assetic": "The best way to manage assets",
|
||||
@ -10976,9 +10997,9 @@
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/maximebf/php-debugbar/issues",
|
||||
"source": "https://github.com/maximebf/php-debugbar/tree/v1.16.3"
|
||||
"source": "https://github.com/maximebf/php-debugbar/tree/v1.16.4"
|
||||
},
|
||||
"time": "2020-05-06T07:06:27+00:00"
|
||||
"time": "2020-12-07T10:48:48+00:00"
|
||||
},
|
||||
{
|
||||
"name": "mockery/mockery",
|
||||
@ -13080,16 +13101,16 @@
|
||||
},
|
||||
{
|
||||
"name": "swagger-api/swagger-ui",
|
||||
"version": "v3.37.2",
|
||||
"version": "v3.38.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/swagger-api/swagger-ui.git",
|
||||
"reference": "f568592c176aa479e507e5b9480bd10a36202ba3"
|
||||
"reference": "bf97e1f2439c26421fa36f187f675b6c81701368"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/swagger-api/swagger-ui/zipball/f568592c176aa479e507e5b9480bd10a36202ba3",
|
||||
"reference": "f568592c176aa479e507e5b9480bd10a36202ba3",
|
||||
"url": "https://api.github.com/repos/swagger-api/swagger-ui/zipball/bf97e1f2439c26421fa36f187f675b6c81701368",
|
||||
"reference": "bf97e1f2439c26421fa36f187f675b6c81701368",
|
||||
"shasum": ""
|
||||
},
|
||||
"type": "library",
|
||||
@ -13135,9 +13156,9 @@
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/swagger-api/swagger-ui/issues",
|
||||
"source": "https://github.com/swagger-api/swagger-ui/tree/v3.37.2"
|
||||
"source": "https://github.com/swagger-api/swagger-ui/tree/v3.38.0"
|
||||
},
|
||||
"time": "2020-11-26T21:19:40+00:00"
|
||||
"time": "2020-12-10T20:44:28+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/debug",
|
||||
|
@ -12,7 +12,7 @@ return [
|
||||
'require_https' => env('REQUIRE_HTTPS', true),
|
||||
'app_url' => rtrim(env('APP_URL', ''), '/'),
|
||||
'app_domain' => env('APP_DOMAIN', ''),
|
||||
'app_version' => '5.0.34',
|
||||
'app_version' => '5.0.35',
|
||||
'minimum_client_version' => '5.0.16',
|
||||
'terms_version' => '1.0.1',
|
||||
'api_secret' => env('API_SECRET', false),
|
||||
|
@ -95,7 +95,7 @@ class PaymentLibrariesSeeder extends Seeder
|
||||
|
||||
Gateway::query()->update(['visible' => 0]);
|
||||
|
||||
Gateway::whereIn('id', [1,15,20,39])->update(['visible' => 1]);
|
||||
Gateway::whereIn('id', [1,15,20,39,55])->update(['visible' => 1]);
|
||||
|
||||
Gateway::all()->each(function ($gateway) {
|
||||
$gateway->site_url = $gateway->getHelp();
|
||||
|
4
public/flutter_service_worker.js
vendored
4
public/flutter_service_worker.js
vendored
@ -3,7 +3,7 @@ const MANIFEST = 'flutter-app-manifest';
|
||||
const TEMP = 'flutter-temp-cache';
|
||||
const CACHE_NAME = 'flutter-app-cache';
|
||||
const RESOURCES = {
|
||||
"version.json": "aeea8a1fbb79cee45facc28ba9a6baf7",
|
||||
"version.json": "c5a2103c09a98b68043a5862da913b9e",
|
||||
"assets/assets/images/logo.png": "090f69e23311a4b6d851b3880ae52541",
|
||||
"assets/assets/images/google-icon.png": "0f118259ce403274f407f5e982e681c3",
|
||||
"assets/assets/images/payment_types/paypal.png": "8e06c094c1871376dfea1da8088c29d1",
|
||||
@ -26,7 +26,7 @@ const RESOURCES = {
|
||||
"assets/FontManifest.json": "cf3c681641169319e61b61bd0277378f",
|
||||
"assets/NOTICES": "7d8f2aa600c3ae24c9efdad38c9f53b4",
|
||||
"assets/packages/material_design_icons_flutter/lib/fonts/materialdesignicons-webfont.ttf": "c1242726c7eac4eb5e843d826f78fb1b",
|
||||
"main.dart.js": "d361e1c5411cf7fe77a39c60139a0073",
|
||||
"main.dart.js": "fd79b496eb5a3e121beb36d8c9178fe7",
|
||||
"favicon.png": "dca91c54388f52eded692718d5a98b8b",
|
||||
"/": "23224b5e03519aaa87594403d54412cf",
|
||||
"favicon.ico": "51636d3a390451561744c42188ccd628",
|
||||
|
221116
public/main.dart.js
vendored
221116
public/main.dart.js
vendored
File diff suppressed because one or more lines are too long
@ -1 +1 @@
|
||||
{"app_name":"invoiceninja_flutter","version":"5.0.28","build_number":"28"}
|
||||
{"app_name":"invoiceninja_flutter","version":"5.0.30","build_number":"30"}
|
@ -3314,4 +3314,10 @@ return [
|
||||
|
||||
'service' => 'Service',
|
||||
'pay' => 'Pay',
|
||||
'notification_invoice_reminder1_sent_subject' => 'Reminder 1 for Invoice :invoice was sent to :client',
|
||||
'notification_invoice_reminder2_sent_subject' => 'Reminder 2 for Invoice :invoice was sent to :client',
|
||||
'notification_invoice_reminder3_sent_subject' => 'Reminder 3 for Invoice :invoice was sent to :client',
|
||||
'notification_invoice_reminder_endless_sent_subject' => 'Endless reminder for Invoice :invoice was sent to :client',
|
||||
|
||||
|
||||
];
|
||||
|
@ -207,36 +207,36 @@ class MultiDBUserTest extends TestCase
|
||||
}
|
||||
}
|
||||
|
||||
public function test_cross_db_user_linking_succeeds_appropriately()
|
||||
{
|
||||
$data = [
|
||||
'first_name' => 'hey',
|
||||
'last_name' => 'you',
|
||||
'email' => 'db1@example.com',
|
||||
'company_user' => [
|
||||
'is_admin' => false,
|
||||
'is_owner' => false,
|
||||
'permissions' => 'create_client,create_invoice',
|
||||
],
|
||||
];
|
||||
// public function test_cross_db_user_linking_succeeds_appropriately()
|
||||
// {
|
||||
// $data = [
|
||||
// 'first_name' => 'hey',
|
||||
// 'last_name' => 'you',
|
||||
// 'email' => 'db1@example.com',
|
||||
// 'company_user' => [
|
||||
// 'is_admin' => false,
|
||||
// 'is_owner' => false,
|
||||
// 'permissions' => 'create_client,create_invoice',
|
||||
// ],
|
||||
// ];
|
||||
|
||||
try {
|
||||
$response = $this->withHeaders([
|
||||
'X-API-SECRET' => config('ninja.api_secret'),
|
||||
'X-API-TOKEN' => $this->token,
|
||||
'X-API-PASSWORD' => 'ALongAndBriliantPassword',
|
||||
])->post('/api/v1/users?include=company_user', $data);
|
||||
} catch (ValidationException $e) {
|
||||
\Log::error('in the validator');
|
||||
$message = json_decode($e->validator->getMessageBag(), 1);
|
||||
\Log::error($message);
|
||||
$this->assertNotNull($message);
|
||||
}
|
||||
// try {
|
||||
// $response = $this->withHeaders([
|
||||
// 'X-API-SECRET' => config('ninja.api_secret'),
|
||||
// 'X-API-TOKEN' => $this->token,
|
||||
// 'X-API-PASSWORD' => 'ALongAndBriliantPassword',
|
||||
// ])->post('/api/v1/users?include=company_user', $data);
|
||||
// } catch (ValidationException $e) {
|
||||
// \Log::error('in the validator');
|
||||
// $message = json_decode($e->validator->getMessageBag(), 1);
|
||||
// \Log::error($message);
|
||||
// $this->assertNotNull($message);
|
||||
// }
|
||||
|
||||
if ($response) {
|
||||
$response->assertStatus(200);
|
||||
}
|
||||
}
|
||||
// if ($response) {
|
||||
// $response->assertStatus(200);
|
||||
// }
|
||||
// }
|
||||
|
||||
public function tearDown() :void
|
||||
{
|
||||
|
Loading…
x
Reference in New Issue
Block a user