--- /dev/null
+<?php
+/*
+ * キャラクターシート表示用Helper
+ */
+class CharacterSheetHelper extends Helper {
+ var $helpers = array(
+ 'Html',
+ 'Form',
+// 'Profiledisp',
+ );
+
+ /* 単純表示 */
+ function profileName4key_name($profile, $key_name)
+ {
+ $this->output4key_name($profile, $key_name, '', 'name');
+ }
+ function profileValue4key_name($profile, $key_name)
+ {
+ $this->output4key_name($profile, $key_name);
+ }
+ function output4key_name($profile, $key_name, $model = 'CharactersHasProfile', $target = 'value', $key = 0)
+ {
+ if (empty($profile) || empty($key_name)) {
+ echo null;
+ }
+ if (isset($profile[$key_name][$model][$key][$target])) {
+ echo $profile[$key_name]['CharactersHasProfile'][$key][$target];
+ } elseif (empty($model) && isset($profile[$key_name][$target])) {
+ echo $profile[$key_name][$target];
+ } else {
+ echo " ";
+ }
+ }
+
+ /* 繰り返し表示 */
+ /* m-input表示 */
+ // key_nameを指定して全データ表示
+ function multiInput4key_name($profile, $key_name, $pattern)
+ {
+ if (empty($profile) || empty($key_name) || empty($pattern)) {
+ echo null;
+ }
+
+ if (!isset($profile[$key_name]['CharactersHasProfile'])) {
+ echo null;
+ }
+
+ foreach($profile[$key_name]['CharactersHasProfile'] as $hasProfile) {
+ $this->formatValues($pattern, $hasProfile['value']);
+ }
+ }
+
+ /* Table表示 */
+ // key_nameとtable_keynameを指定して全データ表示
+ function table4tablekey_name($profile, $key_name, $tablekey_names, $pattern)
+ {
+ if (empty($profile) || empty($key_name) || empty($pattern) || empty($tablekey_names)) {
+ echo null;
+ }
+
+ if (!isset($profile['ProfileTable']) || !isset($profile['ProfileTable'])) {
+ echo null;
+ }
+
+ // $tablekey_namesに対応するデータ抽出
+ $CharactersHasProfiles = array();
+ foreach($tablekey_names as $k => $v) {
+ $table = Set::extract('/'.$key_name.'/ProfileTable[tablekey_name='.$v.']', $profile);
+ unset($table[0]['ProfileTable']['ProfileTableStatic']);
+ if (isset($table[0]['ProfileTable'])) {
+ $hasProfile = Set::extract('/'.$key_name.'/CharactersHasProfile[profile_table_id='.$table[0]['ProfileTable']['id'].']', $profile);
+ if (!empty($hasProfile)) {
+ foreach($hasProfile as $v2) {
+ $CharactersHasProfiles[$table[0]['ProfileTable']['id']][] = $v2['CharactersHasProfile'];
+ }
+ }
+ }
+ }
+
+ // $patternにあてはめて出力
+ $row_num = count(reset($CharactersHasProfiles));
+ for ($i=0;$i<$row_num;$i++) {
+ $data = array();
+ while(list($profile_table_id, $hasProfile) = each($CharactersHasProfiles)) {
+ $data[] = $hasProfile[$i]['value'];
+ }
+
+ $this->formatValues($pattern, $data);
+ reset($CharactersHasProfiles);
+ }
+ }
+
+ /* フォーマットして出力 */
+ function formatValues($pattern, $replacement)
+ {
+ if (empty($pattern) || empty($replacement)) {
+ echo null;
+ }
+
+ echo call_user_func_array('sprintf', array_merge((array)$pattern, (array)$replacement));
+ }
+
+}
+