@@ -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}
0 commit comments