Skip to content

Commit be7607e

Browse files
committed
Fixed a bunch of errors that were being triggered when devMode was set to false
1 parent 4b77a7e commit be7607e

14 files changed

Lines changed: 172 additions & 77 deletions

PostmasterPlugin.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,6 @@ public function registerCpRoutes()
4545
{
4646
$routes = array_merge($routes, $service->registerCpRoutes());
4747
}
48-
4948
return $routes;
5049
}
5150

@@ -74,6 +73,8 @@ public function init()
7473
{
7574
$parcel->init();
7675
}
76+
7777
});
78+
7879
}
7980
}

controllers/Postmaster_ParcelController.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ public function actionCreateParcel()
2222
public function actionEditParcel()
2323
{
2424
$id = craft()->request->getSegment(3);
25+
2526
$model = craft()->postmaster_parcels->findById($id);
2627

2728
$parcel = new Plugins\Postmaster\Components\Parcel(array(

core/components/BasePlugin.php

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

77
abstract class BasePlugin extends Settings implements PluginInterface, SettingsInterface {
88

9+
protected $settings;
10+
911
public function registerCpRoutes()
1012
{
1113
return array();

core/parcel_types/DefaultParcelType.php

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

1414
public function init()
1515
{
16+
return;
17+
1618
foreach($this->settings->events as $event)
1719
{
1820
$parcelType = $this;

models/Postmaster_DefaultParcelTypeSettingsModel.php

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,13 @@ class Postmaster_DefaultParcelTypeSettingsModel extends Postmaster_EmailModel
55
{
66
protected function defineAttributes()
77
{
8-
return array_merge(parent::defineAttributes(), array(
9-
'events' => array(AttributeType::Mixed, 'default' => array()),
10-
'sections' => array(AttributeType::Mixed, 'default' => array()),
11-
'statuses' => array(AttributeType::Mixed, 'default' => array()),
12-
'triggers' => array(AttributeType::Mixed, 'default' => array()),
13-
'extraConditionals' => array(AttributeType::String),
14-
));
8+
$attributes = parent::defineAttributes();
9+
$attributes['events'] = array(AttributeType::Mixed, 'default' => array());
10+
$attributes['sections'] = array(AttributeType::Mixed, 'default' => array());
11+
$attributes['statuses'] = array(AttributeType::Mixed, 'default' => array());
12+
$attributes['triggers'] = array(AttributeType::Mixed, 'default' => array());
13+
$attributes['extraConditionals'] = array(AttributeType::String);
14+
15+
return $attributes;
1516
}
1617
}

models/Postmaster_EmailModel.php

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,11 @@
55

66
class Postmaster_EmailModel extends EmailModel implements ParseInterface {
77

8+
public function __construct($attributes = null)
9+
{
10+
parent::__construct($attributes);
11+
}
12+
813
public function parse(Array $data = array())
914
{
1015
foreach($this->getAttributes() as $attr => $value)
@@ -38,8 +43,8 @@ protected function defineAttributes()
3843
{
3944
$attributes = parent::defineAttributes();
4045

41-
$attributes['fromEmail'] = array(AttributeType::String, 'default' => '');
42-
$attributes['fromName'] = array(AttributeType::String, 'default' => '');
46+
$attributes['fromEmail'] = array(AttributeType::String);
47+
$attributes['fromName'] = array(AttributeType::String);
4348
$attributes['toName'] = array(AttributeType::String);
4449
$attributes['bodyTemplate'] = array(AttributeType::String);
4550
$attributes['htmlBodyTemplate'] = array(AttributeType::String);

models/Postmaster_ParcelModel.php

Lines changed: 30 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,10 @@ public function __construct($attributes = null)
1616
$this->settings = json_decode($this->settings);
1717
}
1818

19-
$this->settings = new Postmaster_ParcelSettingsModel((array) $this->settings);
19+
if(!$this->settings instanceof Postmaster_ParcelSettingsModel)
20+
{
21+
$this->settings = new Postmaster_ParcelSettingsModel((array) $this->settings);
22+
}
2023
}
2124

2225
public function init()
@@ -30,43 +33,39 @@ public function getTableName()
3033
return 'postmaster_parcels';
3134
}
3235

33-
public function getParcelTypeSettings($id)
36+
public function getSettings()
3437
{
35-
$settings = array();
36-
37-
if(isset($this->settings->parcelTypeSettings[$id]))
38-
{
39-
$settings = $this->settings->parcelTypeSettings[$id];
40-
}
41-
42-
return $settings;
38+
return $this->settings;
4339
}
4440

45-
public function getServiceSettings($id)
41+
public function getSetting($key)
4642
{
47-
$settings = array();
48-
49-
if(isset($this->settings->serviceSettings[$id]))
43+
if(isset($this->settings->$key))
5044
{
51-
$settings = $this->settings->serviceSettings[$id];
45+
return $this->settings->$key;
5246
}
5347

54-
return $settings;
48+
return;
5549
}
5650

57-
public function getSettings()
51+
public function getParcelTypeSettings($id)
5852
{
59-
return $this->settings;
53+
$this->settings->getParcelTypeSettings($id);
6054
}
6155

62-
public function getSetting($key)
56+
public function setParcelTypeSettings($id, Array $settings = array())
57+
{
58+
$this->settings->setParcelTypeSettings($id, $settings);
59+
}
60+
61+
public function getServiceSettings($id)
6362
{
64-
if(isset($this->settings->$key))
65-
{
66-
return $this->settings->$key;
67-
}
63+
$this->settings->setServiceSettings($id);
64+
}
6865

69-
return;
66+
public function setServiceSettings($id, Array $settings = array())
67+
{
68+
$this->settings->setServiceSettings($id, $settings);
7069
}
7170

7271
public function getService()
@@ -83,11 +82,15 @@ public function getService()
8382
return $this->_service;
8483
}
8584

86-
public function getParcelType()
85+
public function getParcelType($class = false)
8786
{
8887
if(is_null($this->_parcelType))
8988
{
90-
$class = $this->settings->parcelType;
89+
if(!$class)
90+
{
91+
$class = $this->settings->parcelType;
92+
}
93+
9194
$class = new $class();
9295
$class->setSettings($class->createSettingsModel($this->getParcelTypeSettings($class->id)));
9396
// $class->setService($this->getService());
@@ -99,6 +102,7 @@ public function getParcelType()
99102
return $this->_parcelType;
100103
}
101104

105+
102106
public function send(Postmaster_TransportModel $model)
103107
{
104108
return craft()->postmaster->send($model);

models/Postmaster_ParcelSettingsModel.php

Lines changed: 79 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -7,41 +7,104 @@ public function __construct($attributes = null)
77
{
88
parent::__construct($attributes);
99

10-
if(!count($this->serviceSettings))
11-
{
12-
$serviceSettings = array();
10+
$parcelTypeSettings = $this->parcelTypeSettings;
1311

14-
foreach(craft()->postmaster->getRegisteredServices() as $service)
12+
foreach(craft()->postmaster->getRegisteredParcelTypes() as $parcelType)
13+
{
14+
if(!isset($parcelTypeSettings[$parcelType->id]))
1515
{
16-
$serviceSettings[$service->id] = $service->createSettingsModel();
16+
$parcelTypeSettings[$parcelType->id] = array();
1717
}
18-
19-
$this->serviceSettings = $serviceSettings;
2018
}
2119

22-
if(!count($this->parcelTypeSettings))
20+
$this->parcelTypeSettings = $parcelTypeSettings;
21+
22+
foreach($this->parcelTypeSettings as $id => $parcelTypeSettings)
2323
{
24-
$parcelTypeSettings = array();
24+
$class = craft()->postmaster->getRegisteredParcelType($id);
25+
26+
$settings = $class->createSettingsModel($parcelTypeSettings);
2527

26-
foreach(craft()->postmaster->getRegisteredParcelTypes() as $parcelType)
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]))
2737
{
28-
$parcelTypeSettings[$parcelType->id] = $parcelType->createSettingsModel();
38+
$serviceSettings[$service->id] = array();
2939
}
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+
}
52+
53+
}
54+
55+
public function getServiceSettings($id)
56+
{
57+
$settings = array();
58+
59+
if(isset($this->serviceSettings[$id]))
60+
{
61+
$settings = $this->serviceSettings[$id];
62+
}
63+
64+
return $settings;
65+
}
66+
67+
public function setServiceSettings($id, Array $settings = array())
68+
{
69+
if(isset($this->serviceSettings[$id]))
70+
{
71+
$newSettings = $this->serviceSettings;
72+
$newSettings[$id] = $settings;
73+
74+
$this->serviceSettings = $newSettings;
75+
}
76+
}
77+
78+
public function getParcelTypeSettings($id)
79+
{
80+
$settings = array();
81+
82+
if(isset($this->parcelTypeSettings[$id]))
83+
{
84+
$settings = $this->parcelTypeSettings[$id];
85+
}
86+
87+
return $settings;
88+
}
89+
90+
public function setParcelTypeSettings($id, Array $settings = array())
91+
{
92+
if(isset($this->parcelTypeSettings[$id]))
93+
{
94+
$newSettings = $this->parcelTypeSettings;
95+
$newSettings[$id] = $settings;
3096

31-
$this->parcelTypeSettings = $parcelTypeSettings;
97+
$this->parcelTypeSettings = $newSettings;
3298
}
3399
}
34100

35101
protected function defineAttributes()
36102
{
37103
return array(
38-
'htmlTemplate' => AttributeType::String,
39-
'plainTemplate' => AttributeType::String,
40104
'parcelType' => array(AttributeType::String, 'default' => 'Craft\Plugins\Postmaster\ParcelTypes\DefaultParcelType'),
41105
'parcelTypeSettings' => array(AttributeType::Mixed, 'default' => array()),
42106
'service' => array(AttributeType::String, 'default' => 'Craft\Plugins\Postmaster\Services\CraftService'),
43-
'serviceSettings' => array(AttributeType::Mixed, 'default' => array()),
44-
'enabled' => AttributeType::Number
107+
'serviceSettings' => array(AttributeType::Mixed, 'default' => array())
45108
);
46109
}
47110
}

services/PostmasterService.php

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -100,11 +100,21 @@ public function getRegisteredServices()
100100
return $this->_services;
101101
}
102102

103+
public function getRegisteredService($id)
104+
{
105+
return isset($this->_servicesIds[$id]) ? $this->_servicesIds[$id] : null;
106+
}
107+
103108
public function getRegisteredParcelTypes()
104109
{
105110
return $this->_parcelTypes;
106111
}
107112

113+
public function getRegisteredParcelType($id)
114+
{
115+
return isset($this->_parcelTypesIds[$id]) ? $this->_parcelTypesIds[$id] : null;
116+
}
117+
108118
private function _registerObjects($prop, $objects, $instance)
109119
{
110120
foreach($objects as $class)
@@ -126,12 +136,12 @@ private function _registerObject($prop, $class, $instance)
126136

127137
if(!isset($objects[$obj->name]))
128138
{
129-
if(!in_array($obj->id, $this->{$prop.'Ids'}))
139+
if(!array_key_exists($obj->id, $this->{$prop.'Ids'}))
130140
{
131141
$objects[$obj->name] = $obj;
132142

133143
$this->$prop = $objects;
134-
$this->{$prop.'Ids'}[] = $obj->id;
144+
$this->{$prop.'Ids'}[$obj->id] = $obj;
135145

136146
return $obj;
137147
}

services/Postmaster_ParcelsService.php

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -63,10 +63,12 @@ public function findById($id)
6363

6464
public function create(Array $parcel = array())
6565
{
66+
$parcel = new Postmaster_ParcelModel($parcel);
67+
6668
$record = new Postmaster_ParcelRecord();
67-
$record->title = $parcel['title'];
68-
$record->settings = $parcel['settings'];
69-
$record->enabled = $parcel['enabled'];
69+
$record->title = $parcel->title;
70+
$record->settings = $parcel->settings;
71+
$record->enabled = $parcel->enabled;
7072

7173
$record->save();
7274

@@ -77,9 +79,11 @@ public function update($id, Array $parcel = array())
7779
{
7880
if($record = Postmaster_ParcelRecord::model()->findById($id))
7981
{
80-
$record->title = $parcel['title'];
81-
$record->settings = $parcel['settings'];
82-
$record->enabled = $parcel['enabled'];
82+
$parcel = new Postmaster_ParcelModel($parcel);
83+
84+
$record->title = $parcel->title;
85+
$record->settings = $parcel->settings;
86+
$record->enabled = $parcel->enabled;
8387

8488
$record->save();
8589
}

0 commit comments

Comments
 (0)