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

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

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

#3388:changed the opConfig class implements ArrayAccess? now, and it allows accessing like array from templates

File size: 2.3 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    {
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}
Note: See TracBrowser for help on using the repository browser.