OSDN Git Service

プロフィールのデフォルト入力機能追加
[trpgtools-onweb/cake-frame.git] / app / models / profile.php
index 0306f20..61cf857 100644 (file)
@@ -1,4 +1,16 @@
 <?php
+/*
+ * PHP version 5
+ *
+ * @copyright Copyright 2010, Cake. (http://trpgtools-onweb.sourceforge.jp/)
+ * @category Model
+ * @package  TRPG Data Bank
+ * @version  beta
+ * @author   Cake <cake_67@users.sourceforge.jp>
+ * @license  http://www.opensource.org/licenses/mit-license.php The MIT License
+ * @link     http://trpgtools-onweb.sourceforge.jp/
+ */
+
 class Profile extends AppModel {
 
        var $name = 'Profile';
@@ -10,17 +22,18 @@ class Profile extends AppModel {
                'radio',
                'checkbox',
                'm-input',
-               'm-radio',
-               'm-select',
                'table',
+               's-table',
        );
 
        var $fields = array(
-               'add' => array('system_id', 'name', 'key_name', 'profile_type', 'required', 'editable', 'public_flag_default', 'sort_order'),
-               'edit' => array('name', 'key_name', 'profile_type', 'required', 'editable', 'public_flag_default', 'sort_order'),
+               'add' => array('system_id', 'name', 'key_name', 'profile_type', 'required', 'show_list', 'search', 'public_flag_default', 'sort_order'),
+               'edit' => array('name', 'key_name', 'profile_type', 'required', 'show_list', 'search', 'public_flag_default', 'sort_order'),
+               'edit_all' => array('required', 'show_list', 'search','sort_order'),
                'escape' => array(
                        'name' => array(
                                'html' => true,
+                               'tags' => true,
                                'all' => true,
                        ),
                ),
@@ -36,6 +49,9 @@ class Profile extends AppModel {
                        ),
                ),
                'key_name' => array(
+                       'keyNameNg' => array(
+                               'rule' => 'keyNameNg',
+                       ),
                        'keyName' => array(
                                'rule' => 'keyName',
                        ),
@@ -49,21 +65,31 @@ class Profile extends AppModel {
                'profile_type' => array(
                        'profileType' => array(
                                'rule' => 'profileType',
+                               'allowEmpty' => true,
                        ),
                ),
                'required' => array(
                        'boolean' => array(
                                'rule' => 'boolean',
+                               'allowEmpty' => true,
+                       ),
+               ),
+               'show_list' => array(
+                       'boolean' => array(
+                               'rule' => 'boolean',
+                               'allowEmpty' => true,
                        ),
                ),
-               'editable' => array(
+               'search' => array(
                        'boolean' => array(
                                'rule' => 'boolean',
+                               'allowEmpty' => true,
                        ),
                ),
                'public_flag_default' => array(
                        'publicFlag' => array(
                                'rule' => 'publicFlagDefault',
+                               'allowEmpty' => true,
                        ),
                ),
                'sort_order' => array(
@@ -81,7 +107,6 @@ class Profile extends AppModel {
                        'foreignKey' => 'system_id',
                        'conditions' => '',
                        'fields' => array('id', 'name'),
-                       'order' => ''
                )
        );
 
@@ -92,7 +117,7 @@ class Profile extends AppModel {
                        'dependent' => true,
                        'conditions' => '',
                        'fields' => '',
-                       'order' => array('ProfileSelect.sort_order' => 'asc'),
+//                     'order' => array('ProfileSelect.sort_order' => 'asc'), // Using filesortの原因
                        'limit' => '',
                        'offset' => '',
                        'exclusive' => '',
@@ -105,7 +130,7 @@ class Profile extends AppModel {
                        'dependent' => true,
                        'conditions' => '',
                        'fields' => '',
-                       'order' => array('ProfileTable.sort_order' => 'asc'),
+//                     'order' => array('ProfileTable.sort_order' => 'asc'),
                        'limit' => '',
                        'offset' => '',
                        'exclusive' => '',
@@ -118,13 +143,34 @@ class Profile extends AppModel {
                        'associationForeignKey' => 'id',
                        'dependent' => true,
                        'conditions' => '',
-                       'fields' => array("id", "profile_id", "profile_select_id", "profile_table_id", "value", "public_flag", "link_value"),
-                       'order' => '',
-                       'limit' => 10,
+                       'fields' => array(
+                               'CharactersHasProfile.id',
+                               'CharactersHasProfile.character_id',
+                               'CharactersHasProfile.profile_table_id',
+                               'CharactersHasProfile.profile_table_static_id',
+                               'CharactersHasProfile.value',
+                               'CharactersHasProfile.public_flag',
+                               'CharactersHasProfile.link_value',
+                       ),
+                       'order' => array('CharactersHasProfile.id' => 'asc'),
+                       'limit' => '',
                        'offset' => '',
                        'finderQuery' => '',
                        'deleteQuery' => '',
                        'insertQuery' => ''
+               ),
+               'DefaultProfile' => array(
+                       'className' => 'DefaultProfile',
+                       'foreignKey' => 'profile_id',
+                       'dependent' => true,
+                       'conditions' => '',
+                       'fields' => '',
+                       'order' => '', // Using filesortの原因
+                       'limit' => '',
+                       'offset' => '',
+                       'exclusive' => '',
+                       'finderQuery' => '',
+                       'counterQuery' => ''
                )
        );
 
@@ -177,5 +223,30 @@ class Profile extends AppModel {
 
                return parent::beforeSave($options);
        }
+
+       function afterSave($created) {
+               $this->deleteCache4Profile();
+
+               return parent::afterSave($created);
+       }
+       function afterDelete() {
+               $this->deleteCache4Profile();
+
+               return parent::afterDelete();
+       }
+
+       /* キャッシュ削除 */
+       function deleteCache4Profile()
+       {
+               if (!isset($this->Character)) {
+                       $this->Character = CorePlus::set_model('Character');
+               }
+               $this->Character->cacheDelete();
+
+               if (!isset($this->System)) {
+                       $this->System = CorePlus::set_model('System');
+               }
+               $this->System->cacheDelete();
+       }
+
 }
-?>
\ No newline at end of file