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

source: OpenPNE/trunk/setup/script/update02-for2.10alpha2-emoji.php @ 4145

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

#1298:コンバート対象フィールドを見直し

File size: 3.4 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
7require_once './config.inc.php';
8require_once OPENPNE_WEBAPP_DIR . '/init.inc';
9
10function convert_emoji_format_alpha_to_alpha2 ($table, $field)
11{
12    $primary_key = $table . '_id';
13    $sql = 'SELECT ' . $primary_key . ',' . $field . ' FROM ' . $table;
14    $result = db_get_all($sql);
15
16    foreach ($result as $value) {
17        $old_field_value = $value[$field];
18        $new_field_value = preg_replace_callback('/%%([esi])([0-9]+)%%/',
19            '_callback_emoji_replace_alpha_to_alpha2', $old_field_value);
20        if ($old_field_value !== $new_field_value) {
21            $data = array($field => $new_field_value);
22            $where = array($primary_key => $value[$primary_key]);
23            db_update($table, $data, $where);
24        }       
25    }
26}
27
28function _callback_emoji_replace_alpha_to_alpha2($matches)
29{
30    $carrier = $matches[1];
31    $code = (int)$matches[2];
32
33    if ($carrier == 'e') {
34        return '[e:' . $code . ']';
35    }
36
37    if ($carrier == 'i' && $code <= 176) {
38        return '[i:' . $code . ']';
39    } elseif ($carrier == 'i') {
40        $_def = 824;
41        return '[i:' . ($code - $_def) . ']';
42    }
43
44    if ($carrier == 's') {
45        if ($code <= 90) {
46            $_def = 0;
47        } elseif ($code >= 101 && $code <= 190) {
48            $_def = 10;
49        } elseif ($code >= 201 && $code <= 290) {
50            $_def = 20;
51        } elseif ($code >= 301 && $code <= 377) {
52            $_def = 30;
53        } elseif ($code >= 401 && $code <= 476) {
54            $_def = 53;
55        } elseif ($code >= 501 && $code <= 562) {
56            $_def = 77;
57        }
58
59        return '[s:' . ($code - $_def) . ']';
60    }
61}
62
63$target = array(
64    'biz_group' => array('name', 'info',),
65    'biz_schedule' => array('title', 'value',),
66    'biz_shisetsu' => array('name', 'info',),
67    'biz_todo' => array('memo',),
68    'c_commu' => array('name', 'info',),
69    'c_commu_admin_confirm' => array('message',),
70    'c_commu_category' => array('name',),
71    'c_commu_category_parent' => array('name',),
72    'c_commu_member_confirm' => array('message',),
73    'c_commu_sub_admin_confirm' => array('message',),
74    'c_commu_topic' => array('name', 'open_date_comment', 'open_pref_comment',),
75    'c_commu_topic_comment' => array('body',),
76    'c_diary' => array('subject', 'body',),
77    'c_diary_category' => array('category_name',),
78    'c_diary_comment' => array('body',),
79    'c_free_page' => array('title', 'body',),
80    'c_friend' => array('intro',),
81    'c_friend_confirm' => array('message',),
82    'c_holiday' => array('name',),
83    'c_member' => array('nickname',),
84    'c_member_pre' => array('nickname', 'c_password_query_answer',),
85    'c_member_pre_profile' => array('value',),
86    'c_member_profile' => array('value',),
87    'c_message' => array('body', 'subject',),
88    'c_message_queue' => array('subject', 'body',),
89    'c_profile' => array('caption', 'info',),
90    'c_profile_option' => array('value',),
91    'c_rank' => array('name',),
92    'c_review_comment' => array('body',),
93    'c_schedule' => array('title', 'body',),
94    'c_searchlog' => array('searchword',),
95    'c_send_messages_history' => array('subject', 'body',),
96    'c_siteadmin' => array('body',),
97    'c_template' => array('source',),
98);
99
100foreach ($target as $tablename => $fields) {
101    foreach ($fields as $fieldname) {
102        convert_emoji_format_alpha_to_alpha2 ($tablename, $fieldname);
103    }
104}
105
106?>
Note: See TracBrowser for help on using the repository browser.