Skip to content

Commit 74c23fe

Browse files
committed
- (Bug Fix) Fixed more stability issues
1 parent be7607e commit 74c23fe

7 files changed

Lines changed: 98 additions & 100 deletions

File tree

PostmasterPlugin.php

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -54,17 +54,6 @@ public function init()
5454

5555
require_once 'bootstrap.php';
5656

57-
/*
58-
$plugin = $this;
59-
60-
craft()->on('postmaster.test', function(Event $event)
61-
{
62-
exit('asd');
63-
});
64-
65-
$this->raiseEvent('onTest', new Event());
66-
*/
67-
6857
craft()->on('plugins.loadPlugins', function(Event $event)
6958
{
7059
craft()->postmaster->onInit(new Event());
@@ -73,7 +62,7 @@ public function init()
7362
{
7463
$parcel->init();
7564
}
76-
65+
7766
});
7867

7968
}

core/components/BaseParcelType.php

Lines changed: 0 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,6 @@ abstract class BaseParcelType extends BasePlugin implements ParcelTypeInterface
1414

1515
protected $parcel;
1616

17-
public function init()
18-
{
19-
20-
}
21-
2217
public function getInputHtml(Array $data = array())
2318
{
2419
return '';
@@ -29,23 +24,6 @@ public function getSettingsInputHtml(Array $data = array())
2924
return '';
3025
}
3126

32-
/*
33-
public function send()
34-
{
35-
36-
}
37-
38-
public function setService(BaseService $service)
39-
{
40-
$this->service = $service;
41-
}
42-
43-
public function getService()
44-
{
45-
return $this->service;
46-
}
47-
*/
48-
4927
public function setParcelModel(Postmaster_ParcelModel $parcel)
5028
{
5129
$this->parcel = $parcel;

core/components/BasePlugin.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,11 @@ abstract class BasePlugin extends Settings implements PluginInterface, SettingsI
88

99
protected $settings;
1010

11+
public function init()
12+
{
13+
14+
}
15+
1116
public function registerCpRoutes()
1217
{
1318
return array();

core/interfaces/PluginInterface.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33

44
interface PluginInterface {
55

6+
public function init();
7+
68
public function registerCpRoutes();
79

810
}

core/parcel_types/DefaultParcelType.php

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,6 @@ class DefaultParcelType extends BaseParcelType {
1313

1414
public function init()
1515
{
16-
return;
17-
1816
foreach($this->settings->events as $event)
1917
{
2018
$parcelType = $this;

models/Postmaster_ParcelModel.php

Lines changed: 36 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -11,21 +11,19 @@ public function __construct($attributes = null)
1111
{
1212
parent::__construct($attributes);
1313

14-
if(is_string($this->settings))
14+
if(is_array($this->settings))
1515
{
16-
$this->settings = json_decode($this->settings);
17-
}
18-
19-
if(!$this->settings instanceof Postmaster_ParcelSettingsModel)
20-
{
21-
$this->settings = new Postmaster_ParcelSettingsModel((array) $this->settings);
16+
$this->setAttribute('settings', new Postmaster_ParcelSettingsModel($this->settings));
2217
}
2318
}
2419

2520
public function init()
2621
{
2722
$parcelType = $this->getParcelType();
23+
$service = $this->getService();
24+
2825
$parcelType->init();
26+
$service->init();
2927
}
3028

3129
public function getTableName()
@@ -48,33 +46,45 @@ public function getSetting($key)
4846
return;
4947
}
5048

51-
public function getParcelTypeSettings($id)
49+
public function getParcelTypeSettingsById($id)
5250
{
53-
$this->settings->getParcelTypeSettings($id);
51+
return $this->settings->getParcelTypeSettingsById($id);
5452
}
5553

5654
public function setParcelTypeSettings($id, Array $settings = array())
5755
{
58-
$this->settings->setParcelTypeSettings($id, $settings);
56+
return $this->settings->setParcelTypeSettings($id, $settings);
5957
}
6058

61-
public function getServiceSettings($id)
59+
public function getServiceSettingsByid($id)
6260
{
63-
$this->settings->setServiceSettings($id);
61+
return $this->settings->getServiceSettingsById($id);
6462
}
6563

6664
public function setServiceSettings($id, Array $settings = array())
6765
{
68-
$this->settings->setServiceSettings($id, $settings);
66+
return $this->settings->setServiceSettings($id, $settings);
6967
}
7068

71-
public function getService()
69+
public function getService($class = false)
7270
{
7371
if(is_null($this->_service))
7472
{
75-
$class = $this->settings->service;
73+
if(!$class)
74+
{
75+
$class = $this->settings->service;
76+
}
77+
7678
$class = new $class();
77-
$class->setSettings($class->createSettingsModel($this->getServiceSettings($class->id)));
79+
80+
$settings = $this->getServiceSettingsById($class->id);
81+
82+
if(is_array($settings))
83+
{
84+
$settings = $class->createSettingsModel($settings);
85+
}
86+
87+
$class->setSettings($settings);
7888

7989
$this->_service = $class;
8090
}
@@ -92,8 +102,15 @@ public function getParcelType($class = false)
92102
}
93103

94104
$class = new $class();
95-
$class->setSettings($class->createSettingsModel($this->getParcelTypeSettings($class->id)));
96-
// $class->setService($this->getService());
105+
106+
$settings = $this->getParcelTypeSettingsById($class->id);
107+
108+
if(is_array($settings))
109+
{
110+
$settings = $class->createSettingsModel($settings);
111+
}
112+
113+
$class->setSettings($settings);
97114
$class->setParcelModel($this);
98115

99116
$this->_parcelType = $class;
@@ -112,6 +129,7 @@ protected function defineAttributes()
112129
{
113130
return array(
114131
'title' => array(AttributeType::String, 'column' => ColumnType::Text),
132+
'parcelType' => array(AttributeType::String, 'column' => ColumnType::Text, 'default' => 'default'),
115133
'settings' => array(AttributeType::Mixed, 'column' => ColumnType::LongText, 'default' => array()),
116134
'enabled' => array(AttributeType::Bool, 'column' => ColumnType::Int, 'default' => 1),
117135
'id' => array(AttributeType::String, 'column' => ColumnType::Text),

models/Postmaster_ParcelSettingsModel.php

Lines changed: 54 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -6,53 +6,16 @@ class Postmaster_ParcelSettingsModel extends BaseModel
66
public function __construct($attributes = null)
77
{
88
parent::__construct($attributes);
9+
}
910

10-
$parcelTypeSettings = $this->parcelTypeSettings;
11-
12-
foreach(craft()->postmaster->getRegisteredParcelTypes() as $parcelType)
13-
{
14-
if(!isset($parcelTypeSettings[$parcelType->id]))
15-
{
16-
$parcelTypeSettings[$parcelType->id] = array();
17-
}
18-
}
19-
20-
$this->parcelTypeSettings = $parcelTypeSettings;
21-
22-
foreach($this->parcelTypeSettings as $id => $parcelTypeSettings)
23-
{
24-
$class = craft()->postmaster->getRegisteredParcelType($id);
25-
26-
$settings = $class->createSettingsModel($parcelTypeSettings);
27-
28-
$this->setParcelTypeSettings($id, $settings->getAttributes());
29-
}
30-
31-
32-
$serviceSettings = $this->serviceSettings;
33-
34-
foreach(craft()->postmaster->getRegisteredServices() as $service)
35-
{
36-
if(!isset($serviceSettings[$service->id]))
37-
{
38-
$serviceSettings[$service->id] = array();
39-
}
40-
}
41-
42-
$this->serviceSettings = $serviceSettings;
43-
44-
foreach($this->serviceSettings as $id => $serviceSettings)
45-
{
46-
$class = craft()->postmaster->getRegisteredService($id);
47-
48-
$settings = $class->createSettingsModel($serviceSettings);
49-
50-
$this->setServiceSettings($id, $settings->getAttributes());
51-
}
11+
public function setAttributes($attributes = null)
12+
{
13+
parent::setAttributes($attributes);
5214

15+
$this->_sanitizeSettings();
5316
}
5417

55-
public function getServiceSettings($id)
18+
public function getServiceSettingsById($id)
5619
{
5720
$settings = array();
5821

@@ -64,7 +27,7 @@ public function getServiceSettings($id)
6427
return $settings;
6528
}
6629

67-
public function setServiceSettings($id, Array $settings = array())
30+
public function setServiceSettings($id, $settings = array())
6831
{
6932
if(isset($this->serviceSettings[$id]))
7033
{
@@ -75,7 +38,7 @@ public function setServiceSettings($id, Array $settings = array())
7538
}
7639
}
7740

78-
public function getParcelTypeSettings($id)
41+
public function getParcelTypeSettingsById($id)
7942
{
8043
$settings = array();
8144

@@ -87,7 +50,7 @@ public function getParcelTypeSettings($id)
8750
return $settings;
8851
}
8952

90-
public function setParcelTypeSettings($id, Array $settings = array())
53+
public function setParcelTypeSettings($id, $settings = array())
9154
{
9255
if(isset($this->parcelTypeSettings[$id]))
9356
{
@@ -107,4 +70,49 @@ protected function defineAttributes()
10770
'serviceSettings' => array(AttributeType::Mixed, 'default' => array())
10871
);
10972
}
73+
74+
private function _sanitizeSettings()
75+
{
76+
$parcelTypeSettings = $this->parcelTypeSettings;
77+
78+
foreach(craft()->postmaster->getRegisteredParcelTypes() as $parcelType)
79+
{
80+
if(!isset($parcelTypeSettings[$parcelType->id]))
81+
{
82+
$parcelTypeSettings[$parcelType->id] = array();
83+
}
84+
}
85+
86+
$this->parcelTypeSettings = $parcelTypeSettings;
87+
88+
foreach($this->parcelTypeSettings as $id => $parcelTypeSettings)
89+
{
90+
$class = craft()->postmaster->getRegisteredParcelType($id);
91+
92+
$settings = $class->createSettingsModel($parcelTypeSettings);
93+
94+
$this->setParcelTypeSettings($id, $settings);
95+
}
96+
97+
$serviceSettings = $this->serviceSettings;
98+
99+
foreach(craft()->postmaster->getRegisteredServices() as $service)
100+
{
101+
if(!isset($serviceSettings[$service->id]))
102+
{
103+
$serviceSettings[$service->id] = array();
104+
}
105+
}
106+
107+
$this->serviceSettings = $serviceSettings;
108+
109+
foreach($this->serviceSettings as $id => $serviceSettings)
110+
{
111+
$class = craft()->postmaster->getRegisteredService($id);
112+
113+
$settings = $class->createSettingsModel($serviceSettings);
114+
115+
$this->setServiceSettings($id, $settings);
116+
}
117+
}
110118
}

0 commit comments

Comments
 (0)