PluginProbe
JetFormBuilder — Dynamic Blocks Form Builder / 3.6.6
JetFormBuilder — Dynamic Blocks Form Builder v3.6.6
3.6.6.1 3.6.6 3.6.5.4 3.6.5.3 3.6.5.2 3.6.5.1 3.6.5 3.6.4.2 3.6.4.1 3.6.4 3.6.3.1 3.6.3 3.6.2.2 3.6.2.1 3.6.2 3.6.1.1 3.6.1 3.6.0.1 trunk 1.0.0 1.0.1 1.0.2 1.0.3 1.1.0 1.1.1 All 134 releases
jetformbuilder / includes / db-queries / views / relation.php

relation.php in JetFormBuilder — Dynamic Blocks Form Builder 3.6.6, at includes/db-queries/views/relation.php

74 lines 1.4 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3
4 namespace Jet_Form_Builder\Db_Queries\Views;
5
6 // If this file is called directly, abort.
7 if ( ! defined( 'WPINC' ) ) {
8 die;
9 }
10
11 class Relation {
12
13 /** @var object */
14 public $local;
15
16 /** @var object */
17 public $foreign;
18
19 public $condition = '';
20 protected $type = 'INNER';
21
22 public function type( string $type ): Relation {
23 $this->type = $type;
24
25 return $this;
26 }
27
28 public function local( View_Base $view_base, string $foreign_key ): Relation {
29 if ( ! $this->local ) {
30 $this->local = (object) array(
31 'table' => $view_base->table(),
32 'key' => $foreign_key,
33 );
34 }
35
36 return $this;
37 }
38
39 public function foreign( View_Base $view_base, string $primary_key = 'id' ): Relation {
40 if ( ! $this->foreign ) {
41 $this->foreign = (object) array(
42 'table' => $view_base->table(),
43 'key' => $primary_key,
44 );
45 }
46
47 return $this;
48 }
49
50 public function condition( string $condition ): Relation {
51 $this->condition = $condition;
52
53 return $this;
54 }
55
56 public function parse_condition( string $condition ): string {
57 return str_replace(
58 array( '@local', '@foreign' ),
59 array( $this->local->table, $this->foreign->table ),
60 $condition
61 );
62 }
63
64 public function get_result() {
65 $foreign = $this->foreign->table;
66
67 $left = "`{$this->local->table}`.`{$this->local->key}`";
68 $right = "`{$foreign}`.`{$this->foreign->key}`";
69
70 return "{$this->type} JOIN `{$foreign}` ON {$left} = {$right} {$this->parse_condition( $this->condition )}";
71 }
72
73 }
74