1 | <?php |
---|
2 | |
---|
3 | /** |
---|
4 | * This file is part of the OpenPNE package. |
---|
5 | * (c) OpenPNE Project (http://www.openpne.jp/) |
---|
6 | * |
---|
7 | * For the full copyright and license information, please view the LICENSE |
---|
8 | * file and the NOTICE file that were distributed with this source code. |
---|
9 | */ |
---|
10 | |
---|
11 | /** |
---|
12 | * SnsConfig form. |
---|
13 | * |
---|
14 | * @package form |
---|
15 | * @subpackage sns_config |
---|
16 | * @author Kousuke Ebihara <ebihara@tejimaya.com> |
---|
17 | */ |
---|
18 | class SnsConfigForm extends sfForm |
---|
19 | { |
---|
20 | public function configure() |
---|
21 | { |
---|
22 | $widgets = array(); |
---|
23 | $validators = array(); |
---|
24 | $labels = array(); |
---|
25 | $defaults = array(); |
---|
26 | |
---|
27 | foreach (sfConfig::get('openpne_sns_config') as $key => $value) |
---|
28 | { |
---|
29 | $widgets[$key] = $this->generateWidget($value); |
---|
30 | $validators[$key] = $this->generateValidator($value); |
---|
31 | $labels[$key] = $value['caption']; |
---|
32 | $defaults[$key] = opConfig::get($key); |
---|
33 | } |
---|
34 | |
---|
35 | $this->setWidgets($widgets); |
---|
36 | $this->setValidators($validators); |
---|
37 | $this->widgetSchema->setLabels($labels); |
---|
38 | $this->setDefaults($defaults); |
---|
39 | |
---|
40 | $this->widgetSchema->setNameFormat('sns_config[%s]'); |
---|
41 | } |
---|
42 | |
---|
43 | public function generateWidget($config) |
---|
44 | { |
---|
45 | switch ($config['type']) { |
---|
46 | case 'select': |
---|
47 | $obj = new sfWidgetFormSelect(array('choices' => $this->generateChoices($config['choices_type']))); |
---|
48 | break; |
---|
49 | case 'selectMany': |
---|
50 | $obj = new sfWidgetFormSelectMany(array('choices' => $this->generateChoices($config['choices_type']))); |
---|
51 | break; |
---|
52 | case 'input': |
---|
53 | default: |
---|
54 | $obj = new sfWidgetFormInput(); |
---|
55 | } |
---|
56 | |
---|
57 | return $obj; |
---|
58 | } |
---|
59 | |
---|
60 | public function generateValidator($config) |
---|
61 | { |
---|
62 | switch ($config['type']) { |
---|
63 | case 'select': |
---|
64 | case 'selectMany': |
---|
65 | $obj = new sfValidatorChoiceMany(array('choices' => $this->generateChoices($config['choices_type']))); |
---|
66 | break; |
---|
67 | case 'input': |
---|
68 | default: |
---|
69 | $obj = new sfValidatorString(array_merge($config['option'], array('trim' => true))); |
---|
70 | } |
---|
71 | |
---|
72 | return $obj; |
---|
73 | } |
---|
74 | |
---|
75 | public function save() |
---|
76 | { |
---|
77 | $config = sfConfig::get('openpne_sns_config'); |
---|
78 | foreach ($this->getValues() as $key => $value) { |
---|
79 | $snsConfig = SnsConfigPeer::retrieveByName($key); |
---|
80 | if (!$snsConfig) { |
---|
81 | $snsConfig = new SnsConfig(); |
---|
82 | $snsConfig->setName($key); |
---|
83 | } |
---|
84 | |
---|
85 | $snsConfig->setValue($value); |
---|
86 | $snsConfig->save(); |
---|
87 | } |
---|
88 | } |
---|
89 | |
---|
90 | public function generateChoices($mode) |
---|
91 | { |
---|
92 | } |
---|
93 | } |
---|