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

source: OpenPNE/trunk/webapp/lib/util/page.php @ 4270

Last change on this file since 4270 was 4270, checked in by ogawa, 12 years ago

#1352:PC・携帯の配色設定の内部設計を変更する

File size: 9.7 KB
Line 
1<?php
2/**
3 * @copyright 2005-2007 OpenPNE Project
4 * @license   http://www.php.net/license/3_01.txt PHP License 3.01
5 */
6
7//----- インクルードテンプレートの出力をfetch
8
9/**
10 * inc_navi.tpl の出力を返す
11 *
12 * $type が f または c の場合には、$target_id を指定する必要があります。
13 *
14 * @param   enum('h', 'f', 'c')  $type : ナビゲーションのタイプ
15 * @param  int  $target_id : 友達のメンバーID もしくは コミュニティID
16 * @return html
17 */
18function fetch_inc_navi($type, $target_id = null)
19{
20    // $type が h の場合のみ function cache
21    if ($type == 'h') {
22        static $is_recurred = false;  //再帰処理中かどうかの判定フラグ
23
24        if (!$is_recurred) {  //function cacheのために再帰処理を行う
25            $is_recurred = true;
26            $funcargs = func_get_args();
27            return pne_cache_recursive_call(OPENPNE_FUNCTION_CACHE_LIFETIME_LONG, __FUNCTION__, $funcargs);
28        }
29
30        $is_recurred = false;
31    }
32
33    $inc_smarty = new OpenPNE_Smarty($GLOBALS['SMARTY']);
34    $inc_smarty->templates_dir = 'pc/templates';
35    $inc_smarty->assign('PHPSESSID', md5(session_id()));
36
37    switch ($type) {
38    case 'h':
39    default:
40        $type = 'h';
41        break;
42    case 'f':
43        $inc_smarty->assign('INC_NAVI_c_member_id_friend', $target_id);
44        break;
45    case 'c':
46        $inc_smarty->assign('INC_NAVI_c_commu_id', $target_id);
47        break;
48    }
49    $inc_smarty->assign('INC_NAVI_type', $type);
50    $inc_smarty->assign('navi', util_get_c_navi($type));
51
52    $inc_smarty->assign('WORD_FRIEND', WORD_FRIEND);
53    $inc_smarty->assign('WORD_MY_FRIEND', WORD_MY_FRIEND);
54    $inc_smarty->assign('WORD_FRIEND_HALF', WORD_FRIEND_HALF);
55    $inc_smarty->assign('WORD_MY_FRIEND_HALF', WORD_MY_FRIEND_HALF);
56
57    return $inc_smarty->ext_fetch('inc_navi.tpl');
58}
59
60/**
61 * inc_page_header.tpl
62 */
63function fetch_inc_page_header($type = null)
64{
65    $inc_smarty = new OpenPNE_Smarty($GLOBALS['SMARTY']);
66    $inc_smarty->templates_dir = 'pc/templates';
67
68    $v['PHPSESSID'] = md5(session_id());
69    $v['INC_PAGE_HEADER_type'] = $type;
70    if ($type == 'public' || $type == 'regist') {
71        $v['before_after'] = 'before';
72        $v['INC_PAGE_HEADER'] = db_banner_get_top_banner(false);
73    } else {
74        $v['before_after'] = 'after';
75        $v['INC_PAGE_HEADER'] = db_banner_get_top_banner(true);
76    }
77    $v['top_banner_html_before'] = p_common_c_siteadmin4target_pagename('top_banner_html_before');
78    $v['top_banner_html_after'] = p_common_c_siteadmin4target_pagename('top_banner_html_after');
79    $inc_smarty->assign('navi', util_get_c_navi('global'));
80
81    $inc_smarty->assign($v);
82    return $inc_smarty->ext_fetch('inc_page_header.tpl');
83}
84
85/**
86 * inc_page_footer.tpl
87 */
88function fetch_inc_page_footer($is_secure = false)
89{
90    $inc_smarty = new OpenPNE_Smarty($GLOBALS['SMARTY']);
91    $inc_smarty->templates_dir = 'pc/templates';
92
93    $inc_smarty->assign('PHPSESSID', md5(session_id()));
94    if ($is_secure) {
95        $inc_smarty->assign('inc_page_footer',
96            p_common_c_siteadmin4target_pagename('inc_page_footer_after'));
97    } else {
98        $inc_smarty->assign('inc_page_footer',
99            p_common_c_siteadmin4target_pagename('inc_page_footer_before'));
100    }
101
102    return $inc_smarty->ext_fetch('inc_page_footer.tpl');
103}
104
105function fetch_from_db($tpl_name, &$smarty)
106{
107    $content = '';
108    if ($smarty->template_exists($tpl_name)) {
109        $security = $smarty->security;
110        $smarty->security = true;
111        $content = $smarty->fetch($tpl_name);
112        $smarty->security = $security;
113    }
114    return $content;
115}
116
117function fetch_inc_entry_point(&$smarty, $target)
118{
119    $list = get_inc_entry_point_list();
120    if (empty($list[$target])) {
121        return false;
122    }
123    list($start, $end, $caption) = $list[$target];
124   
125    $contents = array();
126    for ($i = (int)$start; $i <= (int)$end; $i++) {
127        $tpl = sprintf('db:inc_entry_point_%s_%d', $target, $i);
128        $contents[$i] = fetch_from_db($tpl, $smarty);
129    }
130    return $contents;
131}
132
133function get_inc_entry_point_list()
134{
135    $list = array(
136        'h_home' => array(1, 12, '【PC版】 h_home'),
137        'f_home' => array(1, 9, '【PC版】 f_home (h_prof)'),
138        'c_home' => array(1, 7, '【PC版】 c_home'),
139        'h_reply_message' => array(1, 3, '【PC版】 h_reply_message'),
140        'h_diary_add' => array(1, 3, '【PC版】 h_diary_add'),
141        'h_diary_edit' => array(1, 3, '【PC版】 h_diary_edit'),
142        'ktai_o_login' => array(1, 2, '【携帯版】 o_login'),
143        'ktai_h_home' => array(1, 3, '【携帯版】 h_home'),
144        'ktai_f_home' => array(1, 3, '【携帯版】 f_home'),
145        'ktai_c_home' => array(1, 3, '【携帯版】 c_home'),
146    );
147    return $list;
148}
149
150//------------
151
152function get_int_assoc($from, $to)
153{
154    $from = intval($from);
155    $to = intval($to);
156    if ($from > $to) return array();
157
158    for ($i = $from; $i <= $to; $i++) {
159        $assoc[$i] = $i;
160    }
161    return $assoc;
162}
163
164/** 月リスト */
165function p_regist_prof_c_profile_month_list4null()
166{
167    return get_int_assoc(1, 12);
168}
169
170/** 日リスト */
171function p_regist_prof_c_profile_day_list4null()
172{
173    return get_int_assoc(1, 31);
174}
175
176//------------
177
178function p_c_event_add_confirm_event4request($get_errors = false)
179{
180    $rule = array(
181        'target_c_commu_id' => array(
182            'type' => 'int',
183            'default' => '',
184        ),
185        'title' => array(
186            'type' => 'string',
187            'required' => '1',
188            'caption' => 'タイトル',
189        ),
190        'open_date_year' => array(
191            'type' => 'int',
192            'default' => '',
193        ),
194        'open_date_month' => array(
195            'type' => 'int',
196            'default' => '',
197        ),
198        'open_date_day' => array(
199            'type' => 'int',
200            'default' => '',
201        ),
202        'open_date_comment' => array(
203            'type' => 'string',
204            'default' => '',
205        ),
206        'open_pref_id' => array(
207            'type' => 'int',
208            'default' => '',
209        ),
210        'open_pref_comment' => array(
211            'type' => 'string',
212            'default' => '',
213        ),
214        'detail' => array(
215            'type' => 'string',
216            'required' => '1',
217            'caption' => '詳細',
218        ),
219        'invite_period_year' => array(
220            'type' => 'int',
221            'default' => '',
222        ),
223        'invite_period_month' => array(
224            'type' => 'int',
225            'default' => '',
226        ),
227        'invite_period_day' => array(
228            'type' => 'int',
229            'default' => '',
230        ),
231        'image_filename1' => array(
232            'type' => 'string',
233            'default' => '',
234        ),
235        'image_filename2' => array(
236            'type' => 'string',
237            'default' => '',
238        ),
239        'image_filename3' => array(
240            'type' => 'string',
241            'default' => '',
242        ),
243        'capacity' => array(
244            'type' => 'int',
245            'default' => '0',
246            'caption' => '募集人数',
247        ),
248    );
249    $validator = new OpenPNE_Validator($rule, $_REQUEST);
250
251    $errors = array();
252    if (!$validator->validate()) {
253       
254        $errors = $validator->getErrors();
255    }
256    $result = $validator->getParams();
257    $result['c_commu_id'] = $result['target_c_commu_id'];
258
259    if ($get_errors) {
260        return array($result, $errors);
261    } else {
262        return $result;
263    }
264}
265
266function p_f_home_last_login4access_date($access_date)
267{
268    if (!$access_date || $access_date == '0000-00-00 00:00:00') {
269        return '未ログイン';
270    }
271
272    $diff = time() - strtotime($access_date);
273
274    $m_diff = ceil($diff / 60);         //時間差:分
275    $h_diff = ceil($diff / (60*60));    //時間差:時
276    $d_diff = ceil($diff / (60*60*24)); //時間差:日
277
278    if ($m_diff <= 60) {  // 1時間以内
279        if ($m_diff<= 3) {
280            $last_login = '3分以内';
281        } elseif ($m_diff <= 5) {
282            $last_login = '5分以内';
283        } elseif ($m_diff <= 10) {
284            $last_login = '10分以内';
285        } elseif ($m_diff <= 15) {
286            $last_login = '15分以内';
287        } elseif ($m_diff <= 30) {
288            $last_login = '30分以内';
289        } elseif ($m_diff <= 45) {
290            $last_login = '45分以内';
291        } else {
292            $last_login = '60分以内';
293        }
294    } elseif ($h_diff <= 24) {
295        $last_login = $h_diff . '時間以内';
296    } elseif ($d_diff <= 3) {
297        $last_login = $d_diff . '日以内';
298    } else {
299        $last_login = '3日以上';
300    }
301
302    return $last_login;
303}
304
305/**
306 * ある日まであと何日かを計算する
307 *
308 * @param int $month
309 * @param int $day
310 * @return int 日数
311 */
312function getCountdownDays($month, $day)
313{
314    $year = date('Y');
315
316    // 今日の00:00:00
317    $today = mktime(0, 0, 0);
318
319    $theday_thisyear = mktime(0, 0, 0, $month, $day, $year);
320    $theday_nextyear = mktime(0, 0, 0, $month, $day, $year + 1);
321
322    if ($theday_thisyear < $today) {
323        $theday_next = $theday_nextyear;
324    } else {
325        $theday_next = $theday_thisyear;
326    }
327
328    // 24 * 60 * 60 = 86400
329    return ($theday_next - $today) / 86400;
330}
331
332/**
333 * 生年月日から年齢を計算する
334 */
335function getAge($year, $month, $day)
336{
337    $this_year = intval(date('Y'));
338    $today = intval(date('nd'));
339
340    $age = $this_year - $year;
341    if ($today < $month * 100 + $day) $age--;
342
343    return $age;
344}
345
346/**
347 * 引用符を付ける
348 */
349function message_body2inyou($string)
350{
351    if (!empty($string)) {
352        //返信用に引用符をつける
353        $string = '> '.$string;
354        $string = str_replace("\r\n", "\n", $string);
355        $string = str_replace("\r", "\n", $string);
356        $string = str_replace("\n", "\n> ", $string);
357    }
358    return $string;
359}
360
361?>
Note: See TracBrowser for help on using the repository browser.