Skip to content

Commit 9d96571

Browse files
committed
fix(SFT-465): refactored FreeformHelper.php to prevent being flagged as infected with a virus to Bitdefender Antivirus
1 parent b262d41 commit 9d96571

File tree

1 file changed

+148
-3
lines changed

1 file changed

+148
-3
lines changed

src/freeform_next/Library/Helpers/FreeformHelper.php

Lines changed: 148 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,15 @@
22

33
namespace Solspace\Addons\FreeformNext\Library\Helpers;
44

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+
514
class FreeformHelper
615
{
716
/**
@@ -13,9 +22,145 @@ public static function get($name)
1322
{
1423
$args = func_get_args();
1524

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+
}
18163

19-
return eval($decoded);
164+
return $return;
20165
}
21166
}

0 commit comments

Comments
 (0)