2
2
3
3
namespace Solspace \Addons \FreeformNext \Library \Helpers ;
4
4
5
+ use Solspace \Addons \FreeformNext \Controllers \FieldController ;
6
+ use Solspace \Addons \FreeformNext \Controllers \FormController ;
7
+ use Solspace \Addons \FreeformNext \Controllers \StatusController ;
8
+ use Solspace \Addons \FreeformNext \Model \FieldModel ;
9
+ use Solspace \Addons \FreeformNext \Model \FormModel ;
10
+ use Solspace \Addons \FreeformNext \Repositories \FieldRepository ;
11
+ use Solspace \Addons \FreeformNext \Repositories \FormRepository ;
12
+ use Solspace \Addons \FreeformNext \Utilities \ControlPanel \Navigation \NavigationLink ;
13
+
5
14
class FreeformHelper
6
15
{
7
16
/**
@@ -13,9 +22,145 @@ public static function get($name)
13
22
{
14
23
$ args = func_get_args ();
15
24
16
- $ decoded = base64_decode (file_get_contents (__DIR__ . "/Misc/ $ name " ));
17
- $ decoded = ltrim ($ decoded , '<?php ' );
25
+ $ return = null ;
26
+
27
+ if ($ name === 'version ' ) {
28
+ if (file_exists (PATH_THIRD . '/freeform_next/Library/Pro ' )) {
29
+ $ return = FREEFORM_PRO ;
30
+ } elseif (file_exists (PATH_THIRD . '/freeform_next/ft.freeform_next.php ' )) {
31
+ $ return = FREEFORM_LITE ;
32
+ } else {
33
+ $ return = FREEFORM_EXPRESS ;
34
+ }
35
+ } elseif ($ name === 'validate ' ) {
36
+ $ version = FreeformHelper::get ('version ' );
37
+
38
+ if ($ version === FREEFORM_EXPRESS ) {
39
+ $ item = $ args [1 ];
40
+
41
+ if ($ item instanceof FormModel) {
42
+ $ count = (int ) ee ()->db
43
+ ->select ('COUNT(*) as total ' )
44
+ ->get ('freeform_next_forms ' )
45
+ ->row ()
46
+ ->total ;
47
+
48
+ if (!$ item ->id && $ count > 0 ) {
49
+ throw new \Exception ('Form limit reached ' );
50
+ }
51
+ } elseif ($ item instanceof FieldModel) {
52
+ $ count = (int ) ee ()->db
53
+ ->select ('COUNT(*) as total ' )
54
+ ->get ('freeform_next_fields ' )
55
+ ->row ()
56
+ ->total ;
57
+
58
+ if (!$ item ->id && $ count >= 15 ) {
59
+ throw new \Exception ('Maximum limit of 15 fields reached. ' );
60
+ }
61
+ }
62
+ }
63
+ } elseif ($ name === 'props ' ) {
64
+ $ version = FreeformHelper::get ('version ' );
65
+
66
+ $ return = $ version === FREEFORM_EXPRESS ;
67
+ } elseif ($ name === 'right_links ' ) {
68
+ $ version = FreeformHelper::get ('version ' );
69
+ $ item = $ args [1 ];
70
+ $ link = $ title = '' ;
71
+ $ showLink = false ;
72
+
73
+ if ($ item instanceof FormController) {
74
+ $ count = count (FormRepository::getInstance ()->getAllForms ());
75
+
76
+ $ showLink = $ version !== FREEFORM_EXPRESS || $ count === 0 ;
77
+ $ link = 'forms/new ' ;
78
+ $ title = 'New Form ' ;
79
+ } elseif ($ item instanceof FieldController) {
80
+ $ count = count (FieldRepository::getInstance ()->getAllFields ());
81
+
82
+ $ showLink = $ version !== FREEFORM_EXPRESS || $ count < 15 ;
83
+ $ link = 'fields/new ' ;
84
+ $ title = 'New Field ' ;
85
+ } elseif ($ item instanceof StatusController) {
86
+ $ showLink = $ version !== FREEFORM_EXPRESS ;
87
+ $ link = 'settings/statuses/new ' ;
88
+ $ title = 'New Status ' ;
89
+ }
90
+
91
+ if ($ showLink ) {
92
+ $ return = [
93
+ [
94
+ 'title ' => lang ($ title ),
95
+ 'link ' => UrlHelper::getLink ($ link ),
96
+ ],
97
+ ];
98
+ } else {
99
+ $ return = [];
100
+ }
101
+ } elseif ($ name === 'name ' ) {
102
+ $ version = FreeformHelper::get ('version ' );
103
+
104
+ if ($ version === FREEFORM_PRO ) {
105
+ $ return = 'Freeform ' ;
106
+ } elseif ($ version === FREEFORM_LITE ) {
107
+ $ return = 'Freeform Lite ' ;
108
+ } else {
109
+ $ return = 'Freeform Express ' ;
110
+ }
111
+ } elseif ($ name === 'columns ' ) {
112
+ $ version = FreeformHelper::get ('version ' );
113
+ $ columns = $ args [1 ];
114
+
115
+ if ($ version === FREEFORM_EXPRESS ) {
116
+ $ columns = array_slice ($ columns , 0 , count ($ columns ) - 2 , true );
117
+ }
118
+
119
+ $ return = $ columns ;
120
+ } elseif ($ name === 'column_count ' ) {
121
+ $ version = FreeformHelper::get ('version ' );
122
+ $ columns = $ args [1 ];
123
+
124
+ if ($ version === FREEFORM_EXPRESS ) {
125
+ $ newColumns = [];
126
+
127
+ foreach ($ columns as $ column ) {
128
+ $ data = array_slice ($ column , 0 , count ($ column ) - 2 , true );
129
+ $ data [1 ]['content ' ] = strip_tags ($ data [1 ]['content ' ], '<span> ' );
130
+
131
+ $ newColumns [] = $ data ;
132
+ }
133
+
134
+ $ return = $ newColumns ;
135
+ } else {
136
+ $ return = $ columns ;
137
+ }
138
+ } elseif ($ name === 'navigation ' ) {
139
+ $ version = FreeformHelper::get ('version ' );
140
+
141
+ /** @var NavigationLink $item */
142
+ $ item = $ args [1 ];
143
+
144
+ $ link = '' ;
145
+ $ showLink = false ;
146
+
147
+ if ($ item ->getMethod () === 'fields ' ) {
148
+ $ count = count (FieldRepository::getInstance ()->getAllFields ());
149
+
150
+ $ link = 'fields/new ' ;
151
+ $ showLink = $ version !== FREEFORM_EXPRESS || ($ count < 15 );
152
+ } elseif ($ item ->getMethod () === 'forms ' ) {
153
+ $ count = count (FormRepository::getInstance ()->getAllForms ());
154
+
155
+ $ link = 'forms/new ' ;
156
+ $ showLink = $ version !== FREEFORM_EXPRESS || ($ count < 1 );
157
+ }
158
+
159
+ if ($ showLink ) {
160
+ //$item->setButtonLink(new NavigationLink('New', $link));
161
+ }
162
+ }
18
163
19
- return eval ( $ decoded ) ;
164
+ return $ return ;
20
165
}
21
166
}
0 commit comments