HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux spn-python 5.15.0-89-generic #99-Ubuntu SMP Mon Oct 30 20:42:41 UTC 2023 x86_64
User: arjun (1000)
PHP: 8.1.2-1ubuntu2.20
Disabled: NONE
Upload Files
File: /var/www/html/appointmentbook.me/wp-content/plugins/booknetic/app/Providers/DB/MultiTenant.php
<?php

namespace BookneticApp\Providers\DB;

use BookneticApp\Providers\Core\Permission;
use BookneticApp\Providers\Helpers\Helper;

trait MultiTenant
{

	public static function booted()
	{
		self::addGlobalScope( 'tenant', function ( QueryBuilder $builder, $queryType )
		{
            if (!Helper::isSaaSVersion()) return;

			if( $queryType == 'insert' )
			{
				$builder->tenant_id = Permission::tenantId();
			}
			else
			{
				/**
				 * wrap wheres in brackets: example: "WHERE type=5 OR type=6 AND tenant_id=10" => "WHERE (type=5 OR type=6) AND tenant_id=10"
				 */
				if( ! empty( $builder->getWhereArr() ) )
				{
					$currentWhereArr = $builder->getWhereArr();

					$newWrappedWhere = new QueryBuilder( $builder->getModel() );

					$newWrappedWhere->where( fn( $query ) => $query->setWhereArr( $currentWhereArr ) );

					$builder->setWhereArr( $newWrappedWhere->getWhereArr() );
				}

                if (!empty(Permission::tenantId()) && Permission::tenantId() != -1) {
                    $builder->where(self::getField('tenant_id'), Permission::tenantId());
                } else {
                    $builder->where(self::getField('tenant_id'), 'IS', null);
                }
			}
		});
	}

	public static function scopeNoTenant( QueryBuilder $builder, $noTenant = true )
	{
        if ($noTenant === false)
        {
            return $builder;
        }

		return $builder->withoutGlobalScope('tenant');
	}

}