wizard.php
3.54 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
<?php
// namespace administrator\components\com_jmap\controllers;
/**
* @package JMAP::WIZARD::administrator::components::com_jmap
* @subpackage controllers
* @author Joomla! Extensions Store
* @copyright (C) 2015 - Joomla! Extensions Store
* @license GNU/GPLv2 http://www.gnu.org/licenses/gpl-2.0.html
*/
defined('_JEXEC') or die('Restricted access');
/**
* Controller for wizard creation of data sources
* @package JMAP::WIZARD::administrator::components::com_jmap
* @subpackage controllers
* @since 2.0
*/
class JMapControllerWizard extends JMapController {
/**
* Persist message for errors or user info after creation from JS app to server domain redirect
*
* @access private
* @param session
* @return void
*/
private function persistMessageQueue($session = null) {
// Persist messages if they exist for JS client post complete redirect
$app = $this->app;
$messageQueue = $app->getMessageQueue();
if (count($messageQueue)) {
$session = JFactory::getSession();
$session->set('application.queue', $messageQueue);
}
}
/**
* Display main wizard creation panel for supported extensions
*
* @param $cachable string
* the view output will be cached
* @return void
*/
function display($cachable = false, $urlparams = false) {
// Parent construction and view display
parent::display($cachable);
}
/**
* Create entity task to start process for selected extension
*
* @access public
* @return void
*/
public function createEntity() {
$client = $this->app->input->get('client', 'default');
$targetExtension = $this->app->input->get('extension');
$option = $this->option;
if (!$targetExtension) {
// Target extension not specified
$this->setRedirect("index.php?option=$option&task=sources.display", JText::_('COM_JMAP_ERROR_NOTARGET_EXTENSION'));
return false;
}
// Get sources model and make dependency injection
$sourcesModel = $this->getModel('sources');
// Get core MVC model
$model = $this->getModel(null, null, array('extension' => $targetExtension, 'sourcesModel' => $sourcesModel));
// Call create entity process start into model
if (!$model->createEntityProcess()) {
// Model set exceptions for something gone wrong, so enqueue exceptions and levels on application object
$modelException = $model->getError(null, false);
$this->app->enqueueMessage($modelException->getMessage(), $modelException->getErrorLevel());
// Switch client if JS APP halt execution of application on exceptions detected
switch ($client) {
case 'jsapp':
$this->app->enqueueMessage (JText::_('COM_JMAP_ERROR_CREATING_DATASOURCE'), 'message');
$this->persistMessageQueue();
return false;
break;
case 'default';
default;
// Switch client user controller make redirect to wizard.display on exceptions detected
$this->setRedirect("index.php?option=$option&task=sources.display", JText::_('COM_JMAP_ERROR_CREATING_DATASOURCE'));
return false;
}
}
// Successfully process terminated with no errors
switch ($client) {
case 'jsapp':
$this->app->enqueueMessage(sprintf(JText::_('COM_JMAP_SUCCESS_CREATING_DATASOURCE'), ucfirst(str_replace('_', ' ', $targetExtension))), 'message');
$this->persistMessageQueue();
return false;
break;
case 'default';
default;
// Switch client user controller make redirect to wizard.display on exceptions detected
$this->setRedirect("index.php?option=$option&task=sources.display", sprintf(JText::_('COM_JMAP_SUCCESS_CREATING_DATASOURCE'), ucfirst(str_replace('_', ' ', $targetExtension))));
return true;
}
}
}