ここの情報は古いです。ご理解頂いた上でお取り扱いください。

source: OpenPNE3/trunk/lib/form/SnsConfigForm.class.php @ 10020

Last change on this file since 10020 was 10020, checked in by ebihara, 12 years ago

#3388:renamed the OpenPNEConfig class to the opConfig class

File size: 2.5 KB
Line 
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 */
18class 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      $default = $value['default'];
29      $config = SnsConfigPeer::retrieveByName($key);
30      if ($config) {
31        $default = $config->getValue();
32      }
33
34      $widgets[$key] = $this->generateWidget($value);
35      $validators[$key] = $this->generateValidator($value);
36      $labels[$key] = $value['caption'];
37      $defaults[$key] = opConfig::get($key, 'sns', $default);
38    }
39
40    $this->setWidgets($widgets);
41    $this->setValidators($validators);
42    $this->widgetSchema->setLabels($labels);
43    $this->setDefaults($defaults);
44
45    $this->widgetSchema->setNameFormat('sns_config[%s]');
46  }
47
48  public function generateWidget($config)
49  {
50    switch ($config['type']) {
51      case 'select':
52        $obj = new sfWidgetFormSelect(array('choices' => $this->generateChoices($config['choices_type'])));
53        break;
54      case 'selectMany':
55        $obj = new sfWidgetFormSelectMany(array('choices' => $this->generateChoices($config['choices_type'])));
56        break;
57      case 'input':
58      default:
59        $obj = new sfWidgetFormInput();
60    }
61
62    return $obj;
63  }
64
65  public function generateValidator($config)
66  {
67    switch ($config['type']) {
68      case 'select':
69      case 'selectMany':
70        $obj = new sfValidatorChoiceMany(array('choices' => $this->generateChoices($config['choices_type'])));
71        break;
72      case 'input':
73      default:
74        $obj = new sfValidatorString(array_merge($config['option'], array('trim' => true)));
75    }
76
77    return $obj;
78  }
79
80  public function save()
81  {
82    $config = sfConfig::get('openpne_sns_config');
83    foreach ($this->getValues() as $key => $value) {
84      $snsConfig = SnsConfigPeer::retrieveByName($key);
85      if (!$snsConfig) {
86        $snsConfig = new SnsConfig();
87        $snsConfig->setName($key);
88      }
89
90      $snsConfig->setValue($value);
91      $snsConfig->save();
92    }
93  }
94
95  public function generateChoices($mode)
96  {
97  }
98}
Note: See TracBrowser for help on using the repository browser.