# Usagi Project MyNETS 1.2.0 アップグレードガイド

最終更新日: 2008/08/29

## 目次

- 0. はじめに
- 1. 手順
- 2. 作業方法
  - 2-1-1. アップグレード SQL の実行
  - 2-1-2. コンバートスクリプトの実行
  - 2-2. ソースコードの置き換え
  - 2-3. 設定ファイルの変更
  - 2-4. 携帯メール投稿アドレス設定の変更
- 3. MyNETS で削除された設定ファイル
- 4. MyNETS 1.1.* と OpenPNE2.4系テーブルの違う部分
- 5. メール投稿機能が大幅に追加

## 0. はじめに

この文書は、MyNETS 1.0.*、1.1.* から 1.2.0 へのアップグレードの手順を記載したものです。

## 1. 手順

アップグレードは以下のような手順で進めます。

1. メインテナンスモードへ切り替え
   (config.php[define('OPENPNE_UNDER_MAINTENANCE', true);])
2. 現在のデータベースをバックアップ
3. アップグレード SQL の実行
4. コンバートスクリプトの実行
5. ソースコードの置き換え
6. 設定ファイルの変更
7. 運用モードへ切り替え
   (config.php[define('OPENPNE_UNDER_MAINTENANCE', false);])

MyNETS 1.2.0Nighty-20080829 より、「3. アップグレード SQL の実行」および「4. コンバートスクリプトの実行」を自動で行うコンバートツールが含まれています。コンバートツールを利用するには、convert/README.txt を参照ください。

## 2. 作業方法

### 2-1-1. アップグレード SQL の実行

MyNETS 1.1.1 からアップグレードする場合は

- setup/sql/MySQL4.*/upgrade/1.1.1to1.2.0Versionup.sql

を実行します。
MyNETS 1.1.0 からアップグレードする場合は

- setup/sql/MySQL4.*/upgrade/1.1.0to1.2.0Versionup.sql

を実行します。
MyNETS 1.0.1 からアップグレードする場合は

- setup/sql/MySQL4.*/upgrade/1.0.1to1.2.0Versionup.sql

を実行します。
MyNETS 1.0.0 からアップグレードする場合は

- setup/sql/MySQL4.*/upgrade/1.0.0to1.2.0Versionup.sql

を実行します。

MySQL のバージョンによって sql ディレクトリの下のディレクトリを選択してください。ご使用の MySQL のバージョンにあったディレクトリ以下のファイルを実行してください。

DB のテーブルにプレフィックス(PREFIX)を設定している場合は、手動で各 SQL ファイルのテーブル名に PREFIX を追加してから実行してください！！

### 2-1-2. コンバートスクリプトの実行

[FIXME] 以下の記述、要検証

次に、コンバートスクリプトを実行します。
MyNETS 1.1.* からアップグレードする場合は

- setup/sql/MySQL4.*/upgrade/c_image_c_member_id.php

を実行します。
MyNETS 1.0.* からアップグレードする場合は

- setup/sql/MySQL4.*/upgrade/diary_comment_no_convert.php
- setup/sql/MySQL4.*/upgrade/topic_update_convert.php
- setup/sql/MySQL4.*/upgrade/c_image_c_member_id.php

を実行します。

上記のファイルを [OPENPNE_URL] 以下に移動してください。
例: http://OPENPNE_URL/c_image_c_member_id.php
上記の URL にブラウザからアクセスすることで、スクリプトが実行されます。
実行が終わったら、上記のファイルは削除するか別の場所へ保存するようにしてください。

### 2-2. ソースコードの置き換え

サーバ上に MyNETS 1.2.0 のソースファイルを設置します。 詳しくは、「MyNETS セットアップガイド」の「1. ファイルの設置」を参考にしてください。

MyNETS では、1.1.0 の時点でディレクトリ構成が変更され、public_html が廃止されています。1.0.0、1.0.1 からアップグレードされる際は、特にご注意願います。確実にソースコードを入れ替えるようにしてください。

### 2-3. 設定ファイルの変更

※config.php は、MyNETS に含まれる config.php.sample を元に変更し作成されることを推奨します。
尚、MyNETS 1.1.0 で、ディレクトリの構成が変更となり、public_html が廃止されました。それにより OPENPNE_DIR 直下に conf ディレクトリが用意され、そこへ config.php を保存するようになりました。ご注意ください。

#### MyNETS 1.2.0 での追加

    // ニュースのもっと見るでGoogleニュースのトピック別ニュースを表示するか否か
    define('DISPLAY_GOOGLE_TOPIC',true);

    // 複数のニュースを結合してキャッシュする(true)か否(false)か
    // ニュースの保存に時間がかかるようになるが、読み出しは速くなる。
    define('NEWS_CACHE_MERGE',true);

    // キャッシュがNEWS_CACHE_LIMITより古い場合に収集する(true)か否(false)か
    // falseの場合は常にキャッシュから読み込む。（キャッシュがない場合だけ収集）
    // false指定の場合は、cronなどでキャッシュを更新しないと意味がないので注意。
    define('NEWS_COLLECT_FEED',true);

    // shima3BBCode入力支援モジュールを入力に使用する(true)か否(false)か
    // 使用するには define('USE_EXT_DIR', true); に設定する必要あり
    define('BBCODE_USE_FOR_INPUT', true);

    // shima3BBCode入力支援モジュールでscript.aculo.usを使用する(true)か否(false)か+define('BBCODE_USE_SCRIPTACULOUS', true);

    // Fesly開発のBBCode入力支援モジュールを入力に使用する(true)か否(false)か
    // 使用するには define('USE_EXT_DIR', true); に設定する必要あり
    define('BBCODE_USE_FOR_INPUT_FESLY', true);

    // ホームで表示するインフォメーションの件数
    define('ADMIN_INFO_NUM',3);

    // 携帯でのオートログインを有効にするか
    define('USAGI_MOBILE_AUTO_LOGIN', false);

    // iPhoneを携帯として接続させるかどうか
    define('IPHONE_IS_MOBILE', false);

    //海外サーバを利用した場合の日本時間の設定
    //利用する場合はコメントをはずしてください。
    //putenv(”TZ=Asia/Tokyo”);

    //キャッチオールが使えないサーバーの場合の
    //POPアカウントでの処理
    define('USE_POP_MAIL', false);
    define('POP_SERVER_DOMAIN', 'exsmple.com');
    define('POP_SERVER_USER', 'pop username');
    define('POP_SERVER_PASS', 'pop password');

    //メッセージの本文を受信させるかどうかの設定
    define('MESSAGE_BODY_RECIVE', true);

    //招待制可能なSNSの場合のみ有効
    //QRコードによるコミュニティ経由新規登録を行うか
    define('MYNETS_QRENTRY_COMMU', true);
    //QRコードによる招待登録を行うか
    define('MYNETS_QRENTRY_MEMBER', false);

    //システムでHOOKSを使うかどうか
    define('ENABLE_HOOKS', FALSE);

    //今日のひとこと・クイックコミュニケーションの名前
    define('QUICK_SERVICE_NAME', 'さあ愚痴をどうぞ！');

#### MyNETS 1.1.1 での追加

    //外部公開日記を行う
    define('MYNETS_OPEN_DIARY', true);

    //外部公開コミュニティを行う
    define('MYNETS_OPEN_COMMU', false);

    //HOMEのカレンダーを本日起点とする。日曜起点の場合はfalse
    define('DISPLAY_SCHEDULE_WEEK', false);

    //サイドブロック情報を表示するかしないか
    define('DISPLAY_SIDE_BLOCK', false);

    //サイドブロックをログイン前に表示するかどうか
    define('DISPLAY_SIDE_BLOCK_WITHOUT_LOGIN', false);

    //サイドブロックで表示する情報
    $GLOBALS['MYNETS_DISABLE_SIDE_VIEW_MODULES'] = array(
        'newdiary'  => true,
        'newtopic' => true,
        'newevent' => true,
        'newreview' => true,
        'newcommunity' => false,
        'newmember' => true,
        'onlinemember' => true,
    );

    //会員が新規登録した際に、管理者へメールを送信するかしないか
    define('ADMIN_INVITE_MAIL', false);

    // ニュースを表示するか否か
    define('DISPLAY_NEWS_BLOCK',false);

    // 認証前、ログインページなどでニュースを表示するか否か
    define('DISPLAY_NEWS_BLOCK_WITHOUT_LOGIN',false);

    // ニュースフィードのキャッシュの場所
    define('NEWS_CACHE_DIR',OPENPNE_RSS_CACHE_DIR);

    // ニュースフィードの取得制限時間（秒）
    define('NEWS_CACHE_LIMIT',1800);

    // ニュースフィードのURLリスト
    // RSS1.0/RSS2.0/Atom1.0形式のフィードを返すURLを指定してください。
    // キーとURLという形で複数指定することも可能ですが、実際に使用するURLの分だけ処理が重くなります。
    // 以下はサンプルのURLです。使用する行の先頭の「//」（コメントアウト）を削除し 、使用しない
    // 場合には、先頭に「//」を記述して下さい。
    $GLOBALS['NEWS_FEED_URL_LIST'] = array(
        'GoogleNews-Top'  => 'http://news.google.com/news?hl=ja&ned=us&ie=UTF-8&oe=UTF-8&output=rss&topic=h',
    //    'goo-Ranking' => 'http://ranking.goo.ne.jp/rss/index.rdf',
    );

    // ニュース記事のリンク要素から、元記事のURLを取り出す場合の
    // URLの正規表現のリスト
    // 'pattern'に正規表現を記述し、preg_matchの検索結果の
    // $matches[1]にドメイン名、$matches[2]に元記事のURL部分
    //  が入る正規表現にする。
    // 'urldecode'については、抽出した元記事のURLをURLデコード
    // するか否か(true/false)の指定項目。
    $GLOBALS['NEWS_EXTRACT_LINK_URL_LIST'] = array(
        'GoogleNews' => array(
                            'pattern'   => '@http://(news\.google\.com)/.*url=([^&]+)@i',
                            'urldecode' => true,
                        ),
        'GooRanking' => array(
                            'pattern'   => '@http://(plus\.goo\.ne\.jp)/rnkredir/redir\.php\?.*to=(http%3A%2F%2F.+)@i',
                            'urldecode' => true,
                        ),
        'Yahoo!News' => array(
                            'pattern'   => '@http://(rd\.yahoo\.co\.jp)/[^\*]+\*(http://.+)@i',
                            'urldecode' => false,
                        ),
        'RSSNavi' => array(
                            'pattern'   => '@http://(www\.rssnavi\.jp)/r/\?.+(?:&amp;|&)u=(http.+)@i',
                            'urldecode' => false,
                        ),
    );

    // 広告などのURLをニュース記事から除去するための、URLの正規表現のリスト
    // デリミタは「/」で何でも良いが、正規表現であることが条件
    $GLOBALS['NEWS_REMOVE_LINK_URL_LIST'] = array(
        '@http://www\.pheedo\.jp/click\.phdo\?a=@i',
        '@http://ck\.jp\.ap\.valuecommerce\.com/.+@i',
    );

    // 広告などの項目をニュース記事から除去するための、タイトルの正規表現のリスト
    // デリミタは「/」で何でも良いが、正規表現であることが条件
    $GLOBALS['NEWS_REMOVE_TITLE_LIST'] = array(
        '/^AD[:|：]/i',
        '/^PR[:|：]/i',
        '/^\(AD\)/i',
    );

    // ニュースを取得する件数
    define('NEWS_FEED_MAX',10);

    // ニュースのテキスト（概要）を省略する位置（文字数）
    // 省略文字も含んだ長さにすること
    define('NEWS_DESCRIPTION_LENGTH',200);

    // ニュースのテキスト（概要）を省略したことを表す文字列
    define('NEWS_DESCRIPTION_ETC','...');

    // Proxyサーバの設定（ENABLE_PROXY以外は小文字）
    // ENABLE_PROXY ... Proxyを使用するか否か（true/false）
    // proxy_host   ... Proxyサーバのホスト名またはIPアドレス
    // proxy_port   ... Proxyサーバのポート番号（80番や8080、8888など）
    // proxy_user   ... Proxyサーバを利用する際のユーザ名（通常不要）
    // proxy_pass   ... Proxyサーバを利用する際のパスワード（通常不要）
    $GLOBALS['NEWS_PROXY_CONFIG'] = array(
        'ENABLE_PROXY'  => false,
        'proxy_host' => 'localhost',
        'proxy_port' => 8080,
        'proxy_user' => '',
        'proxy_pass' => '',
    );

#### MyNETS 1.1.0 での追加

    // どのDBモジュールを使用するか ('pne','mysql')
    define('MYNETS_DB_MODULE', 'mysql');

    // CAPTCHA（画像のなかの文字列をメンバーに入力させる認証方式）を使用するかどうか
    define('MYNETS_USE_CAPTCHA', true);

    //最新日記の表示を一人１件とする場合はtrue,すべて出す場合はfalse
    define('DIARY_DISTINCT_LIST',false);

    //コミュニティの更新表示を１コミュニティ１件とする場合はtrue,すべて出す場合はfalse
    define('COMMU_DISTINCT_LIST',false);

#### MyNETS 1.2.0 での変更

項目 | 1.1.1 | 1.2.0
--- | --- | ---
画像変換時に許可する解像度のリスト | $GLOBALS['_OPENPNE_IMG_ALLOWED_SIZE'] = array('36x36', '76x76', '120x120', '180x180', '360x360'); | $GLOBALS['_OPENPNE_IMG_ALLOWED_SIZE'] = array('36x36', '76x76', '120x120', '180x180', '360x360', '54x54');
ニュースを表示するか否か | define('DISPLAY_NEWS_BLOCK',false); | define('DISPLAY_NEWS_BLOCK',true);
ニュースフィードのURLリスト | $GLOBALS['NEWS_FEED_URL_LIST'] = array( 'GoogleNews-Top' => 'http://news.google.com/news?hl=ja&ned=us&ie=UTF-8&oe=UTF-8&output=rss&topic=h', // 'goo-Ranking' => 'http://ranking.goo.ne.jp/rss/index.rdf', ); | $GLOBALS['NEWS_FEED_URL_LIST'] = array( 'GoogleNews-Popular' => 'http://news.google.com/news?hl=ja&ned=ja&ie=UTF-8&oe=UTF-8&output=atom&topic=po', // 'goo-Ranking' => 'http://ranking.goo.ne.jp/rss/index.rdf', );
ニュース記事から除去するタイトル | $GLOBALS['NEWS_REMOVE_TITLE_LIST'] = array( '/^AD[:|：]/i', '/^PR[:|：]/i', '/^\(AD\)/i', ); | $GLOBALS['NEWS_REMOVE_TITLE_LIST'] = array( '/^AD[:|：]/i', '/^PR[:|：]/i', '/^\(AD\)/i', '/^配信日時/', '/^ダイジェストニュース：製品情報/', );

#### MyNETS 1.1.1 での変更

項目 | 1.1.0 | 1.1.1
--- | --- | ---
セッションファイルの保存ディレクトリ | //session_save_path('/tmp'); | session_save_path(OPENPNE_VAR_DIR . '/session');

#### MyNETS 1.0.1 での変更

項目 | 1.0.0 | 1.0.1
--- | --- | ---
画像変換時に許可する解像度のリスト | $GLOBALS['_OPENPNE_IMG_ALLOWED_SIZE'] = array('36x36', '76x76', '120x120', '180x180'); | $GLOBALS['_OPENPNE_IMG_ALLOWED_SIZE'] = array('36x36', '76x76', '120x120', '180x180', '360x360');

### 2-4. 携帯メール投稿アドレス設定の変更

MyNETS では、携帯機能強化とともに、メール投稿で扱える機能が大幅に強化されています。

項目 | 新形式 | 旧形式
--- | --- | ---
新規登録 / ログインURL取得 | get@MAIL_SERVER_DOMAIN | 同左
プロフィール画像変更 | pXXX-YYY@MAIL_SERVER_DOMAIN | pXXX@MAIL_SERVER_DOMAIN
コミュニティトピックのメール投稿 | tXXX-YYY@MAIL_SERVER_DOMAIN | tXXX@MAIL_SERVER_DOMAIN
コミュニティトピックのメール作成 | eXXX-YYY@MAIL_SERVER_DOMAIN | eXXX@MAIL_SERVER_DOMAIN
コミュニティトピックのメール修正 | etXXX-YYY@MAIL_SERVER_DOMAIN | etXXX@MAIL_SERVER_DOMAIN
日記メール投稿 | bXXX-YYY@MAIL_SERVER_DOMAIN | blog@MAIL_SERVER_DOMAIN
日記コメントメール投稿 | cXXX-YYY@MAIL_SERVER_DOMAIN | cXXX@MAIL_SERVER_DOMAIN
日記画像の修正メール投稿 | dpicXXX-XXX-YYY@MAIL_SERVER_DOMAIN | dpicXXX-XXX@MAIL_SERVER_DOMAIN
コミュニティの管理者の携帯での画像変更投稿 | copicXXX-XXX-YYY@MAIL_SERVER_DOMAIN | copicXXX-XXX@MAIL_SERVER_DOMAIN
空メールによる携帯アドレス設定 | mbentry@MAIL_SERVER_DOMAIN | 同左
QRによるコミュニティ経由新規登録用アドレス 1.2.0Nigtyで追加 | qrcXXX-XXX@MAIL_SERVER_DOMAIN | 同左
QRによるメンバー紹介新規登録用アドレス　1.2.0で追加(機能未実装) | qrm-XXX@MAIL_SERVER_DOMAIN | 同左

- XXX には数字。
- YYY には 12 バイトの英数字([0-9a-f]{12})。

※上記のうち、追加されたメール投稿機能を確認し、運営している MyNETS の設定に追加してください。
漏れがあると携帯画面には出てくるのに投稿できないなどの不具合となります。

以上でアップグレード作業は完了です。

## 3. 削除された設定項目

#### MyNETS 1.1.0 で削除

    // Envelope-From ヘッダを設定するかどうか(safe_mode の場合は false に設定してください)
    define('MAIL_SET_ENVFROM', true);

    // SKIN Folder Path
    define('SKIN_FOLDER','default');

## 4. MyNETS 1.1.* と 1.0.* のテーブルの差異

1. 日記タグ用のテーブルが追加されています。(テーブル追加)
2. PC及び携帯用のテンプレートファイルを用意することで、設定画面からメンバーが画面変更を行うことが出来るようになりました。その設定保存のため、c_member にカラムを追加、またテンプレートファイルの内容を保存する c_display_view テーブルが追加されました。
3. 退会者の管理用テーブルが追加されています。(テーブル追加)
4. 携帯の画面切り替えを管理するためのテーブルが追加されています。(テーブル追加)

※今後もテーブルの追加及び削除、修正が行われる可能性があります。但しその場合は修正・追加一覧とコンバート用ファイルを用意して、 移行がスムーズに行えるのを確認した上でリリースいたします。

※これらの運用中データベースの移行は、確実な動作を保障するものではありませんので、移行の際はバックアップを確実に行ったうえで実効してください。
また、独自のカスタマイズでテーブル等の項目を追加したり削除している場合はそのままでは動くかどうかは分かりませんので、 各種スクリプトを実行する前に SQL の内容を確認の上ご自信の判断で移行処理を行ってください。

以上の内容を確認しながらアップグレードしてください。

OpenPNE は株式会社手嶋屋の開発しているオープンソースソフトウェアの名称です。
MyNETS は、ネットを使って多くの開発者が共同で開発している Usagi Project のオープンソースソフトウェアの名称です。
プロジェクト管理者、開発者、開発協力者の情報はプロジェクトホームページをご覧ください。
Usagi Project | SourceForge.jp Usagi Project