Skip to content

Commit 94c7511

Browse files
committed
Fix merge conflicts
2 parents 31bf3a7 + 76fcdc5 commit 94c7511

165 files changed

Lines changed: 7747 additions & 996 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

‎ProcessMaker/Console/Commands/BuildScriptExecutors.php‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,7 @@ public function buildExecutor()
110110
$success = $this->associateWithExistingImage($scriptExecutor);
111111
if ($success) {
112112
$this->info('Docker Image Associated');
113+
113114
// we associated with an existing image, no need to build
114115
return;
115116
} else {

‎ProcessMaker/Contracts/WorkflowManagerInterface.php‎

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -178,11 +178,19 @@ public function existsServiceImplementation($implementation);
178178
/**
179179
* Run the service task implementation
180180
* @param string $implementation
181-
* @param array $dat
181+
* @param array $data
182182
* @param array $config
183183
* @param string $tokenId
184184
*
185185
* @return mixed
186186
*/
187187
public function runServiceImplementation($implementation, array $data, array $config, $tokenId = '');
188+
189+
/**
190+
* Get the service task class implementation
191+
*
192+
* @param string $implementation
193+
* @return string
194+
*/
195+
public function getServiceClassImplementation($implementation);
188196
}

‎ProcessMaker/Enums/ExporterMap.php‎

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
<?php
2+
3+
namespace ProcessMaker\Enums;
4+
5+
enum ExporterMap
6+
{
7+
const TYPES = [
8+
'screen' => [\ProcessMaker\Models\Screen::class, \ProcessMaker\ImportExport\Exporters\ScreenExporter::class],
9+
'process' => [\ProcessMaker\Models\Process::class, \ProcessMaker\ImportExport\Exporters\ProcessExporter::class],
10+
'script' => [\ProcessMaker\Models\Script::class, \ProcessMaker\ImportExport\Exporters\ScriptExporter::class],
11+
'process_templates' => [\ProcessMaker\Models\ProcessTemplates::class, \ProcessMaker\ImportExport\Exporters\TemplateExporter::class],
12+
'data_source' => [\ProcessMaker\Packages\Connectors\DataSources\Models\DataSource::class, \ProcessMaker\Packages\Connectors\DataSources\ImportExport\DataSourceExporter::class],
13+
'decision_table' => [\ProcessMaker\Package\PackageDecisionEngine\Models\DecisionTable::class, \ProcessMaker\Package\PackageDecisionEngine\ImportExport\DecisionTableExporter::class],
14+
];
15+
16+
public static function getModelClass(string $type): ?string
17+
{
18+
return self::TYPES[$type][0] ?? null;
19+
}
20+
21+
public static function getExporterClass(string $type): ?string
22+
{
23+
return self::TYPES[$type][1] ?? null;
24+
}
25+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
<?php
2+
3+
namespace ProcessMaker\Helpers;
4+
5+
class MobileHelper
6+
{
7+
public static function isMobile($userAgent)
8+
{
9+
$device = '/(Mobile|Android|Tablet|GoBrowser|[0-9]x[0-9]*|uZardWeb\/|Mini|Doris\/|Skyfire\/|iPhone|Fennec\/|Maemo|Iris\/|CLDC\-|Mobi\/)/uis';
10+
if (preg_match($device, $userAgent) && !empty($_COOKIE['isMobile']) && $_COOKIE['isMobile'] === 'true') {
11+
return true;
12+
}
13+
14+
return false;
15+
}
16+
}

‎ProcessMaker/Http/Controllers/Api/EnvironmentVariablesController.php‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,7 @@ public function index(Request $request)
7878
} else {
7979
$environment_variables = EnvironmentVariable::orderBy($orderBy, $orderDirection)->paginate($perPage);
8080
}
81+
8182
// Return fractal representation of paged data
8283
return new ApiCollection($environment_variables);
8384
}

‎ProcessMaker/Http/Controllers/Api/ExportController.php‎

Lines changed: 5 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -6,47 +6,14 @@
66
use Illuminate\Database\Eloquent\Model;
77
use Illuminate\Http\JsonResponse;
88
use Illuminate\Http\Request;
9+
use ProcessMaker\Enums\ExporterMap;
910
use ProcessMaker\Exception\ExportModelNotFoundException;
1011
use ProcessMaker\Http\Controllers\Controller;
1112
use ProcessMaker\ImportExport\Exporter;
12-
use ProcessMaker\ImportExport\Exporters\ProcessExporter;
13-
use ProcessMaker\ImportExport\Exporters\ScreenExporter;
14-
use ProcessMaker\ImportExport\Exporters\ScriptExporter;
15-
use ProcessMaker\ImportExport\Exporters\TemplateExporter;
1613
use ProcessMaker\ImportExport\Options;
17-
use ProcessMaker\Models\Process;
18-
use ProcessMaker\Models\ProcessTemplates;
19-
use ProcessMaker\Models\Screen;
20-
use ProcessMaker\Models\Script;
21-
use ProcessMaker\PackageHelper;
2214

2315
class ExportController extends Controller
2416
{
25-
const DATA_SOURCE_CLASS = 'ProcessMaker\Packages\Connectors\DataSources\Models\DataSource';
26-
27-
const DATA_SOURCE_EXPORTER_CLASS = 'ProcessMaker\Packages\Connectors\DataSources\ImportExport\DataSourceExporter';
28-
29-
const DECISION_TABLE_CLASS = 'ProcessMaker\Package\PackageDecisionEngine\Models\DecisionTable';
30-
31-
const DECISION_TABLE_EXPORTER_CLASS = 'ProcessMaker\Package\PackageDecisionEngine\ImportExport\DecisionTableExporter';
32-
33-
protected array $types = [
34-
'screen' => [Screen::class, ScreenExporter::class],
35-
'process' => [Process::class, ProcessExporter::class],
36-
'script' => [Script::class, ScriptExporter::class],
37-
'process_templates' => [ProcessTemplates::class, TemplateExporter::class],
38-
];
39-
40-
public function __construct()
41-
{
42-
if (PackageHelper::isPackageInstalled(self::DATA_SOURCE_CLASS)) {
43-
$this->types['data_source'] = [self::DATA_SOURCE_CLASS, self::DATA_SOURCE_EXPORTER_CLASS];
44-
}
45-
if (PackageHelper::isPackageInstalled(self::DECISION_TABLE_CLASS)) {
46-
$this->types['decision_table'] = [self::DECISION_TABLE_CLASS, self::DECISION_TABLE_EXPORTER_CLASS];
47-
}
48-
}
49-
5017
/**
5118
* Return only the manifest
5219
*/
@@ -55,7 +22,7 @@ public function manifest(string $type, int $id): JsonResponse
5522
$model = $this->getModel($type)->findOrFail($id);
5623
try {
5724
$exporter = new Exporter(true);
58-
$exporter->export($model, $this->types[$type][1]);
25+
$exporter->export($model, ExporterMap::getExporterClass($type));
5926

6027
return response()->json($exporter->payload(true), 200);
6128
} catch (ExportModelNotFoundException $error) {
@@ -74,7 +41,7 @@ public function download(Request $request, string $type, int $id)
7441
$password = (isset($post['password']) ? $post['password'] : null);
7542

7643
$exporter = new Exporter();
77-
$exporter->export($model, $this->types[$type][1], $options);
44+
$exporter->export($model, ExporterMap::getExporterClass($type), $options);
7845

7946
$payload = $exporter->payload();
8047

@@ -111,9 +78,8 @@ function () use ($payload) {
11178

11279
public function getModel(string $type): Model
11380
{
114-
if (isset($this->types[$type])) {
115-
$modelClass = current($this->types[$type]);
116-
81+
$modelClass = ExporterMap::getModelClass($type);
82+
if ($modelClass) {
11783
return new $modelClass;
11884
}
11985
throw new Exception("Type {$type} not found", 404);

‎ProcessMaker/Http/Controllers/Api/ProcessController.php‎

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -399,6 +399,50 @@ public function update(Request $request, Process $process)
399399
return new Resource($process->refresh());
400400
}
401401

402+
public function updateBpmn(Request $request, Process $process)
403+
{
404+
$request->validate(Process::rules($process));
405+
406+
// bpmn validation
407+
if ($schemaErrors = $this->validateBpmn($request)) {
408+
$warnings = [];
409+
foreach ($schemaErrors as $error) {
410+
if (is_string($error)) {
411+
$text = str_replace('DOMDocument::schemaValidate(): ', '', $error);
412+
$warnings[] = ['title' => __('Schema Validation'), 'text' => $text];
413+
} else {
414+
$warnings[] = $error;
415+
}
416+
}
417+
$process->warnings = $warnings;
418+
} else {
419+
$process->warnings = null;
420+
}
421+
422+
$process->bpmn = $request->input('bpmn');
423+
$process->name = $request->input('name');
424+
$process->description = $request->input('description');
425+
$process->saveOrFail();
426+
427+
// If is a subprocess, we need to update the name in the BPMN too
428+
if ($request->input('parentProcessId') && $request->input('nodeId')) {
429+
$parentProcess = Process::findOrFail($request->input('parentProcessId'));
430+
$definitions = $parentProcess->getDefinitions();
431+
$elements = $definitions->getElementsByTagName('callActivity');
432+
foreach ($elements as $element) {
433+
if ($element->getAttributeNode('id')->value === $request->input('nodeId')) {
434+
$element->setAttribute('name', $request->input('name'));
435+
}
436+
}
437+
$parentProcess->bpmn = $definitions->saveXML();
438+
$parentProcess->saveOrFail();
439+
}
440+
441+
return response()->json([
442+
'success' => true,
443+
], 200);
444+
}
445+
402446
/**
403447
* Update draft process.
404448
*

‎ProcessMaker/Http/Controllers/Api/ScreenController.php‎

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,11 @@ public function index(Request $request)
144144
return response(['message' => __('Your PMQL contains invalid syntax.')], 400);
145145
}
146146
}
147+
148+
if ($request->has('key')) {
149+
$query->where('key', $request->get('key'));
150+
}
151+
147152
$response =
148153
$query->orderBy(
149154
$request->input('order_by', 'title'),

‎ProcessMaker/Http/Controllers/Api/SettingController.php‎

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -217,6 +217,13 @@ public function update(Setting $setting, Request $request)
217217
return response([], 204);
218218
}
219219

220+
public function destroy(Setting $setting)
221+
{
222+
$setting->delete();
223+
224+
return response([], 204);
225+
}
226+
220227
public function import(Request $request)
221228
{
222229
$content = $request->file('file')->get();

‎ProcessMaker/Http/Controllers/Api/TaskController.php‎

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -161,7 +161,11 @@ public function index(Request $request, $getTotal = false, User $user = null)
161161

162162
//list only display elements type task
163163
$nonSystem = filter_var($request->input('non_system'), FILTER_VALIDATE_BOOLEAN);
164-
$query->where('element_type', '=', 'task')
164+
$query->where(function ($query) {
165+
$query->where('element_type', '=', 'task');
166+
$query->orWhere('element_type', '=', 'serviceTask');
167+
$query->where('element_name', '=', 'AI Assistant');
168+
})
165169
->when($nonSystem, function ($query) {
166170
$query->nonSystem();
167171
});

0 commit comments

Comments
 (0)