Skip to content

Commit 48e512f

Browse files
author
Matthew Garde
committed
See release notes for changes. Various bug fixes/clean up.
1 parent bedaf87 commit 48e512f

File tree

15 files changed

+306
-333
lines changed

15 files changed

+306
-333
lines changed

Api/SettingsDataRepositoryInterface.php

Lines changed: 0 additions & 19 deletions
This file was deleted.

Block/Adminhtml/Main.php

Lines changed: 2 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -4,54 +4,28 @@
44

55
use Magento\Framework\View\Element\Template;
66
use Magento\Framework\View\Element\Template\Context;
7-
use Magento\Framework\Controller\Result\JsonFactory;
8-
use Magento\Framework\UrlInterface;
97

108
use PCAPredict\Tag\Model\SettingsDataFactory;
119

1210
class Main extends Template
1311
{
1412
protected $settingsDataFactory;
1513
protected $settingsData;
16-
protected $resultJsonFactory;
17-
protected $urlInterface;
1814

19-
public function __construct(Context $context, SettingsDataFactory $settingsDataFactory, JsonFactory $resultJsonFactory)
15+
public function __construct(Context $context, SettingsDataFactory $settingsDataFactory)
2016
{
2117
$this->settingsDataFactory = $settingsDataFactory;
22-
$this->resultJsonFactory = $resultJsonFactory;
23-
24-
$this->urlInterface = $context->getUrlBuilder();
2518

2619
parent::__construct($context);
2720
}
2821

2922
function _prepareLayout()
3023
{
31-
$settings = $this->settingsDataFactory->create();
32-
$this->settingsData = $settings->load(1);
24+
3325
}
3426

3527
function execute()
3628
{
3729

3830
}
39-
40-
function getAjaxUrl()
41-
{
42-
return $this->urlInterface->getUrl();
43-
}
44-
45-
function getAccountCode()
46-
{
47-
if ($this->settingsData)
48-
return $this->settingsData->getAccountCode();
49-
else
50-
return null;
51-
}
52-
53-
function isLoggedIn()
54-
{
55-
return getAccountCode() != null;
56-
}
5731
}

Controller/Adminhtml/Login/Index.php

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
class Index extends AbstractAction {
1212

1313
protected $settingsDataFactory;
14+
protected $resultJsonFactory;
1415

1516
public function __construct(Context $context, JsonFactory $resultJsonFactory, SettingsDataFactory $settingsDataFactory) {
1617
$this->resultJsonFactory = $resultJsonFactory;
@@ -19,24 +20,27 @@ public function __construct(Context $context, JsonFactory $resultJsonFactory, Se
1920
}
2021

2122
public function execute() {
23+
2224
$result = $this->resultJsonFactory->create();
2325

2426
$accCode = $this->getRequest()->getParam('account_code');
2527
$accTok = $this->getRequest()->getParam('account_token');
28+
$vers = $this->getRequest()->getParam('module_version');
29+
2630
$settings = $this->settingsDataFactory->create();
2731

2832
try
2933
{
30-
$settingsData = $settings->load(1);
31-
$settingsData->setAccountCode($accCode);
32-
$settingsData->setAccountToken($accTok);
33-
$settingsData->save();
34+
$settings->setAccountCode($accCode);
35+
$settings->setAccountToken($accTok);
36+
$settings->setModuleVersion($vers);
37+
$settings->save();
38+
39+
return $result->setData(['success' => true]);
3440
}
3541
catch(\Exception $ex)
3642
{
3743
return $result->setData(['success' => false, 'exception' => $ex->getMessage()]);
3844
}
39-
40-
return $result->setData(['success' => true]);
4145
}
4246
}

Controller/Adminhtml/Logout/Index.php

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
<?php
2+
3+
namespace PCAPredict\Tag\Controller\Adminhtml\Logout;
4+
5+
use Magento\Backend\App\AbstractAction;
6+
use Magento\Backend\App\Action\Context;
7+
use Magento\Framework\HTTP\ZendClientFactory;
8+
use Magento\Framework\Message\ManagerInterface;
9+
use Magento\Framework\Controller\Result\JsonFactory;
10+
use PCAPredict\Tag\Model\SettingsDataFactory;
11+
12+
class Index extends AbstractAction {
13+
14+
protected $resultPageFactory;
15+
protected $settingsDataFactory;
16+
protected $httpClientFactory;
17+
protected $resultJsonFactory;
18+
19+
public function __construct(Context $context,
20+
JsonFactory $resultJsonFactory,
21+
SettingsDataFactory $settingsDataFactory,
22+
ZendClientFactory $httpClientFactory)
23+
{
24+
$this->settingsDataFactory = $settingsDataFactory;
25+
$this->httpClientFactory = $httpClientFactory;
26+
$this->resultJsonFactory = $resultJsonFactory;
27+
28+
return parent::__construct($context);
29+
}
30+
31+
public function execute(){
32+
33+
$result = $this->resultJsonFactory->create();
34+
35+
try
36+
{
37+
$settings = $this->settingsDataFactory->create();
38+
$itemCollection = $settings->getCollection();
39+
$items = $itemCollection->getData();
40+
41+
$lastCreationTime = null;
42+
$lastItemRow = null;
43+
44+
foreach ($items as $item) {
45+
if ($lastCreationTime == null || $lastCreationTime < $item['creation_time'])
46+
{
47+
$lastCreationTime = $item['creation_time'];
48+
$lastItemRow = $item;
49+
}
50+
}
51+
52+
$settings->load($lastItemRow['pcapredict_tag_settingsdata_id']);
53+
54+
$settings->delete();
55+
56+
return $result->setData(['success' => true]);
57+
}
58+
catch(\Exception $ex)
59+
{
60+
return $result->setData(['success' => false, 'exception' => $ex->getMessage()]);
61+
}
62+
}
63+
64+
protected function _isAllowed()
65+
{
66+
return $this->_authorization->isAllowed('PCAPredict_Tag::Settings');
67+
}
68+
}

Controller/Adminhtml/Settings/Index.php

Lines changed: 29 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -32,55 +32,42 @@ public function execute(){
3232
if ($this->getRequest()->isAjax())
3333
{
3434
$action = $this->getRequest()->getParam('action');
35-
switch($action)
35+
36+
if($action == 'save')
3637
{
37-
case 'logout':
38-
try
39-
{
40-
$settings = $this->settingsDataFactory->create();
41-
$collection = $settings->getCollection();
42-
$data = $collection->getData();
43-
if ($data)
38+
$customjavascriptfront = $this->getRequest()->getParam('custom_javascript_front');
39+
$customjavascriptback = $this->getRequest()->getParam('custom_javascript_back');
40+
41+
$settings = $this->settingsDataFactory->create();
42+
43+
try
44+
{
45+
$settings = $this->settingsDataFactory->create();
46+
$itemCollection = $settings->getCollection();
47+
$items = $itemCollection->getData();
48+
49+
$lastCreationTime = null;
50+
$lastItemRow = null;
51+
52+
foreach ($items as $item) {
53+
if ($lastCreationTime == null || $lastCreationTime < $item['creation_time'])
4454
{
45-
$settingsData = $settings->load(1);
46-
$settingsData->setAccountCode('');
47-
$settingsData->setAccountToken('');
48-
49-
$settingsData->save();
55+
$lastCreationTime = $item['creation_time'];
56+
$lastItemRow = $item;
5057
}
51-
$this->messageManager->addSuccess( __('You have successfully logged out from PCA Predict!') );
52-
}
53-
catch(\Exception $e)
54-
{
55-
$this->messageManager->addError( __('There was a problem logging out of PCA Predict!') );
5658
}
57-
break;
5859

59-
case 'save':
60-
$accCode = $this->getRequest()->getParam('account_code');
61-
$accTok = $this->getRequest()->getParam('account_token');
62-
$customjavascriptfront = $this->getRequest()->getParam('custom_javascript_front');
63-
$customjavascriptback = $this->getRequest()->getParam('custom_javascript_back');
60+
$settings->load($lastItemRow['pcapredict_tag_settingsdata_id']);
6461

65-
$settings = $this->settingsDataFactory->create();
66-
67-
try
68-
{
69-
$settingsData = $settings->load(1);
70-
$settingsData->setAccountCode($accCode);
71-
$settingsData->setAccountToken($accTok);
72-
$settingsData->setCustomJavascriptFront($customjavascriptfront);
73-
$settingsData->setCustomJavascriptBack($customjavascriptback);
62+
$settings->setCustomJavascriptFront($customjavascriptfront);
63+
$settings->setCustomJavascriptBack($customjavascriptback);
7464

75-
$settingsData->save();
76-
}
77-
catch(\Exception $ex)
78-
{
79-
var_dump($ex.getMessage);
80-
}
81-
break;
82-
default:
83-
throw new \Exception("Invalid action: " . $action);
65+
$settings->save();
66+
}
67+
catch(\Exception $ex)
68+
{
69+
var_dump($ex.getMessage);
70+
}
8471
}
8572
}
8673

Helper/SettingsData.php

Lines changed: 53 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
use Magento\Framework\App\Helper\AbstractHelper;
66
use Magento\Framework\App\Helper\Context;
77
use Magento\Framework\Escaper;
8+
use Magento\Framework\Module\ModuleListInterface;
89

910
use PCAPredict\Tag\Model\SettingsDataFactory;
1011

@@ -14,45 +15,80 @@ class SettingsData extends AbstractHelper
1415

1516
protected $settingsDataFactory;
1617

17-
public function __construct(Context $context, Escaper $escaper, SettingsDataFactory $settingsDataFactory) {
18+
protected $moduleListInterface;
19+
20+
public function __construct(Context $context, Escaper $escaper, SettingsDataFactory $settingsDataFactory, ModuleListInterface $moduleListInterface) {
1821
$this->escaper = $escaper;
1922
$this->settingsDataFactory = $settingsDataFactory;
23+
$this->moduleListInterface = $moduleListInterface;
2024
parent::__construct($context);
21-
}
25+
}
26+
27+
public function getId()
28+
{
29+
$lastLogin = $this->getLastLoginRow();
30+
return $lastLogin != null ? $lastLogin['pcapredict_tag_settingsdata_id'] : null;
31+
}
2232

2333
public function getAccountCode()
2434
{
25-
$settings = $this->settingsDataFactory->create();
26-
$this->settingsData = $settings->load(1);
27-
return $this->escaper->escapeHtml(
28-
$this->settingsData->getAccountCode()
29-
);
35+
$lastLogin = $this->getLastLoginRow();
36+
return $lastLogin != null ? $lastLogin['account_code'] : null;
3037
}
3138

3239
public function getModuleVersion()
3340
{
34-
return $this->_moduleList
35-
->getOne(self::MODULE_NAME)['setup_version'];
41+
return $this->moduleListInterface->getOne("PCAPredict_Tag")['setup_version'];
3642
}
3743

3844
public function getAccountToken()
3945
{
40-
$settings = $this->settingsDataFactory->create();
41-
$this->settingsData = $settings->load(1);
42-
return $this->settingsData->getAccountToken();
46+
$lastLogin = $this->getLastLoginRow();
47+
return $lastLogin != null ? $lastLogin['account_token'] : null;
4348
}
4449

4550
public function getCustomJavaScriptFront()
4651
{
47-
$settings = $this->settingsDataFactory->create();
48-
$this->settingsData = $settings->load(1);
49-
return $this->settingsData->getCustomJavascriptFront();
52+
$lastLogin = $this->getLastLoginRow();
53+
return $lastLogin != null ? $lastLogin['custom_javascript_front'] : null;
5054
}
5155

5256
public function getCustomJavaScriptBack()
5357
{
58+
$lastLogin = $this->getLastLoginRow();
59+
return $lastLogin != null ? $lastLogin['custom_javascript_back'] : null;
60+
}
61+
62+
public function getModuleVersionLoggedInOn()
63+
{
64+
$lastLogin = $this->getLastLoginRow();
65+
return $lastLogin != null ? $lastLogin['module_version'] : null;
66+
}
67+
68+
public function deleteRow($rowId)
69+
{
70+
$settings = $this->settingsDataFactory->create();
71+
$item = $settings->load($rowId);
72+
$item->delete();
73+
}
74+
75+
private function getLastLoginRow() {
76+
5477
$settings = $this->settingsDataFactory->create();
55-
$this->settingsData = $settings->load(1);
56-
return $this->settingsData->getCustomJavascriptBack();
78+
$itemCollection = $settings->getCollection();
79+
$items = $itemCollection->getData();
80+
81+
$lastCreationTime = null;
82+
$lastItemRow = null;
83+
84+
foreach ($items as $item) {
85+
if ($lastCreationTime == null || $item['creation_time'] > $lastCreationTime)
86+
{
87+
$lastCreationTime = $item['creation_time'];
88+
$lastItemRow = $item;
89+
}
90+
}
91+
92+
return $lastItemRow;
5793
}
5894
}

Model/SettingsData.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
use Magento\Framework\Model\AbstractModel;
66
use Magento\Framework\DataObject\IdentityInterface;
77

8-
class SettingsData extends AbstractModel implements SettingsDataInterface, IdentityInterface
8+
class SettingsData extends AbstractModel implements IdentityInterface
99
{
1010
const CACHE_TAG = 'pcapredict_tag_settingsdata';
1111

0 commit comments

Comments
 (0)