mirror of
https://github.com/Lastorder-DC/rhymix.git
synced 2026-01-07 02:31:40 +09:00
삭제
git-svn-id: http://xe-core.googlecode.com/svn/sandbox@2327 201d5d3c-b55e-5fd7-737f-ddc643e51545
This commit is contained in:
commit
8326004cb2
2773 changed files with 91485 additions and 0 deletions
17
modules/member/conf/info.xml
Normal file
17
modules/member/conf/info.xml
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<module version="0.1">
|
||||
<title xml:lang="ko">회원</title>
|
||||
<title xml:lang="zh-CN">会员</title>
|
||||
<title xml:lang="jp">会員</title>
|
||||
<title xml:lang="en">Member</title>
|
||||
<author email_address="zero@zeroboard.com" link="http://www.zeroboard.com" date="2007. 2. 28">
|
||||
<name xml:lang="ko">제로</name>
|
||||
<name xml:lang="zh-CN">zero</name>
|
||||
<name xml:lang="jp">Zero</name>
|
||||
<name xml:lang="en">zero</name>
|
||||
<description xml:lang="ko">회원 관리 및 회원 관련 설정등을 하는 모듈입니다.</description>
|
||||
<description xml:lang="zh-CN">对会员进行管理及相关设置的模块。</description>
|
||||
<description xml:lang="jp">会員管理及び会員関連設定などを行うためのモジュールです。</description>
|
||||
<description xml:lang="en">This module is for managing or configuring members.</description>
|
||||
</author>
|
||||
</module>
|
||||
73
modules/member/conf/module.xml
Normal file
73
modules/member/conf/module.xml
Normal file
|
|
@ -0,0 +1,73 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<module>
|
||||
<actions>
|
||||
<action name="dispMemberInfo" type="view" standalone="true" />
|
||||
<action name="dispMemberSignUpForm" type="view" standalone="true" />
|
||||
<action name="dispMemberModifyInfo" type="view" standalone="true" />
|
||||
<action name="dispMemberModifyPassword" type="view" standalone="true" />
|
||||
<action name="dispMemberLoginForm" type="view" standalone="true" />
|
||||
<action name="dispMemberLogout" type="view" standalone="true" />
|
||||
<action name="dispMemberOwnDocument" type="view" standalone="true" />
|
||||
<action name="dispMemberScrappedDocument" type="view" standalone="true" />
|
||||
|
||||
<action name="dispMemberMessages" type="view" standalone="true" />
|
||||
<action name="dispMemberSendMessage" type="view" standalone="true" />
|
||||
<action name="dispMemberNewMessage" type="view" standalone="true" />
|
||||
|
||||
<action name="dispMemberFriend" type="view" standalone="true" />
|
||||
<action name="dispMemberAddFriend" type="view" standalone="true" />
|
||||
<action name="dispMemberAddFriendGroup" type="view" standalone="true" />
|
||||
|
||||
<action name="dispMemberAdminList" type="view" standalone="true" index="true" admin_index="true" />
|
||||
<action name="dispMemberAdminConfig" type="view" standalone="true" />
|
||||
<action name="dispMemberAdminInsert" type="view" standalone="true" />
|
||||
<action name="dispMemberAdminDeleteForm" type="view" standalone="true" />
|
||||
<action name="dispMemberAdminGroupList" type="view" standalone="true" />
|
||||
<action name="dispMemberAdminJoinFormList" type="view" standalone="true" />
|
||||
<action name="dispMemberAdminInfo" type="view" standalone="true" />
|
||||
<action name="dispMemberAdminInsertJoinForm" type="view" standalone="true" />
|
||||
<action name="dispMemberAdminDeniedIDList" type="view" standalone="true" />
|
||||
|
||||
<action name="getMemberMenu" type="model" standalone="true" />
|
||||
<action name="getMemberAdminColorset" type="model" standalone="true" />
|
||||
|
||||
<action name="procMemberLogin" type="controller" standalone="true" />
|
||||
<action name="procMemberOpenIDLogin" type="controller" standalone="true" />
|
||||
<action name="procMemberOpenIDValidate" type="controller" standalone="true" />
|
||||
<action name="procMemberLogout" type="controller" standalone="true" />
|
||||
<action name="procMemberInsert" type="controller" standalone="true" />
|
||||
<action name="procMemberModifyInfo" type="controller" standalone="true" />
|
||||
<action name="procMemberModifyPassword" type="controller" standalone="true" />
|
||||
<action name="procMemberLeave" type="controller" standalone="true" />
|
||||
<action name="procMemberInsertImageName" type="controller" standalone="true" />
|
||||
<action name="procMemberInsertImageMark" type="controller" standalone="true" />
|
||||
<action name="procMemberDeleteImageName" type="controller" standalone="true" />
|
||||
<action name="procMemberDeleteImageMark" type="controller" standalone="true" />
|
||||
|
||||
<action name="procMemberSendMessage" type="controller" standalone="true" />
|
||||
<action name="procMemberStoreMessage" type="controller" standalone="true" />
|
||||
<action name="procMemberDeleteMessage" type="controller" standalone="true" />
|
||||
<action name="procMemberDeleteMessages" type="controller" standalone="true" />
|
||||
|
||||
<action name="procMemberScrapDocument" type="controller" standalone="true" />
|
||||
<action name="procMemberDeleteScrap" type="controller" standalone="true" />
|
||||
|
||||
<action name="procMemberAddFriend" type="controller" standalone="true" />
|
||||
<action name="procMemberMoveFriend" type="controller" standalone="true" />
|
||||
<action name="procMemberDeleteFriend" type="controller" standalone="true" />
|
||||
|
||||
<action name="procMemberAddFriendGroup" type="controller" standalone="true" />
|
||||
<action name="procMemberRenameFriendGroup" type="controller" standalone="true" />
|
||||
<action name="procMemberDeleteFriendGroup" type="controller" standalone="true" />
|
||||
|
||||
<action name="procMemberAdminInsert" type="controller" standalone="true" />
|
||||
<action name="procMemberAdminDelete" type="controller" standalone="true" />
|
||||
<action name="procMemberAdminInsertConfig" type="controller" standalone="true" />
|
||||
<action name="procMemberAdminInsertGroup" type="controller" standalone="true" />
|
||||
<action name="procMemberAdminUpdateGroup" type="controller" standalone="true" />
|
||||
<action name="procMemberAdminInsertJoinForm" type="controller" standalone="true" />
|
||||
<action name="procMemberAdminUpdateJoinForm" type="controller" standalone="true" />
|
||||
<action name="procMemberAdminInsertDeniedID" type="controller" standalone="true" />
|
||||
<action name="procMemberAdminUpdateDeniedID" type="controller" standalone="true" />
|
||||
</actions>
|
||||
</module>
|
||||
173
modules/member/lang/en.lang.php
Normal file
173
modules/member/lang/en.lang.php
Normal file
|
|
@ -0,0 +1,173 @@
|
|||
<?php
|
||||
/**
|
||||
* @file en.lang.php
|
||||
* @author zero (zero@nzeo.com)
|
||||
* @brief English Language Pack (Only Basic Things)
|
||||
**/
|
||||
|
||||
$lang->member = 'Member';
|
||||
$lang->member_default_info = 'Basic Info';
|
||||
$lang->member_extend_info = 'Additional Info';
|
||||
$lang->default_group_1 = "Associate Member";
|
||||
$lang->default_group_2 = "Regular Member";
|
||||
$lang->admin_group = "Managing Group";
|
||||
$lang->remember_user_id = 'Save ID';
|
||||
$lang->already_logged = "You're already logged on";
|
||||
$lang->denied_user_id = 'Sorry. This ID is prohibited.';
|
||||
$lang->null_user_id = 'Please input user ID';
|
||||
$lang->null_password = 'Please input password';
|
||||
$lang->invalid_authorization = 'It is not certificated';
|
||||
$lang->invalid_user_id= "This ID doesn't exist";
|
||||
$lang->invalid_password = 'This is wrong password';
|
||||
$lang->allow_mailing = 'Join Mailing';
|
||||
$lang->allow_message = 'Allow Message Reception';
|
||||
$lang->allow_message_type = array(
|
||||
'Y' => 'Receive All',
|
||||
'N' => 'Reject All',
|
||||
'F' => 'Only Friends',
|
||||
);
|
||||
$lang->denied = 'Prohibited';
|
||||
$lang->is_admin = 'Superadmin Permission';
|
||||
$lang->group = 'Assigned Group';
|
||||
$lang->group_title = 'Group Name';
|
||||
$lang->group_srl = 'Group Number';
|
||||
$lang->signature = 'Signature';
|
||||
$lang->image_name = 'Image Name';
|
||||
$lang->image_name_max_width = 'Max Width';
|
||||
$lang->image_name_max_height = 'Max Height';
|
||||
$lang->image_mark = 'Image Mark';
|
||||
$lang->image_mark_max_width = 'Max Width';
|
||||
$lang->image_mark_max_height = 'Max Height';
|
||||
$lang->enable_openid = 'Enable OpenID';
|
||||
$lang->enable_join = 'Allow Member Join';
|
||||
$lang->limit_day = 'Temporary Limit Date';
|
||||
$lang->limit_date = 'Limit Date';
|
||||
$lang->redirect_url = 'URL after Join';
|
||||
$lang->agreement = 'Member Join Agreement';
|
||||
$lang->accept_agreement = 'Agree';
|
||||
$lang->sender = 'Sender';
|
||||
$lang->receiver = 'Receiver';
|
||||
$lang->friend_group = 'Friend Group';
|
||||
$lang->default_friend_group = 'Unassigned Group';
|
||||
$lang->member_info = 'Member Info';
|
||||
$lang->current_password = 'Current Password';
|
||||
$lang->openid = 'OpenID';
|
||||
|
||||
$lang->search_target_list = array(
|
||||
'user_id' => 'ID',
|
||||
'user_name' => 'Name',
|
||||
'nick_name' => 'Nickname',
|
||||
'email_address' => 'Email Address',
|
||||
'regdate' => 'Join Date',
|
||||
'last_login' => 'Latest Login Date',
|
||||
);
|
||||
|
||||
$lang->message_box = array(
|
||||
'R' => 'Received',
|
||||
'S' => 'Sent',
|
||||
'T' => 'Mailbox',
|
||||
);
|
||||
|
||||
$lang->readed_date = "Read Date";
|
||||
|
||||
$lang->cmd_login = 'Login';
|
||||
$lang->cmd_logout = 'Logout';
|
||||
$lang->cmd_signup = 'Join';
|
||||
$lang->cmd_modify_member_info = 'Modify Member Info';
|
||||
$lang->cmd_modify_member_password = 'Change Password';
|
||||
$lang->cmd_view_member_info = 'View Member Info';
|
||||
$lang->cmd_leave = 'Leave';
|
||||
|
||||
$lang->cmd_member_list = 'Member List';
|
||||
$lang->cmd_module_config = 'Default Setting';
|
||||
$lang->cmd_member_group = 'Manage Group';
|
||||
$lang->cmd_send_mail = 'Send Mail';
|
||||
$lang->cmd_manage_id = 'Manage Prohibited ID';
|
||||
$lang->cmd_manage_form = 'Manage Join Form';
|
||||
$lang->cmd_view_own_document = 'View Written Articles';
|
||||
$lang->cmd_view_scrapped_document = 'View Scraps';
|
||||
$lang->cmd_send_email = 'Send Mail';
|
||||
$lang->cmd_send_message = 'Send Message';
|
||||
$lang->cmd_reply_message = 'Reply Message';
|
||||
$lang->cmd_view_friend = 'View Friends';
|
||||
$lang->cmd_add_friend = 'Register as Friend';
|
||||
$lang->cmd_view_message_box = 'View Message Box';
|
||||
$lang->cmd_store = "Save";
|
||||
$lang->cmd_add_friend_group = 'Add Friend Group';
|
||||
$lang->cmd_rename_friend_group = 'Change Name of Friend Group';
|
||||
|
||||
$lang->msg_alreay_scrapped = 'This article is already scrapped';
|
||||
|
||||
$lang->msg_cart_is_null = 'Please select the target';
|
||||
$lang->msg_checked_file_is_deleted = '%d attached files are deleted';
|
||||
|
||||
$lang->msg_no_message = 'There are no messages';
|
||||
$lang->message_received = 'You got a new message';
|
||||
|
||||
$lang->msg_new_member = 'Add Member';
|
||||
$lang->msg_update_member = 'Modify Member Info';
|
||||
$lang->msg_leave_member = 'Leave';
|
||||
$lang->msg_group_is_null = 'There is no registered group';
|
||||
$lang->msg_not_delete_default = 'Default items cannot be deleted';
|
||||
$lang->msg_not_exists_member = "This member doesn't exist";
|
||||
$lang->msg_cannot_delete_admin = 'Admin ID cannot be deleted. Please remove the ID from administration and try again.';
|
||||
$lang->msg_exists_user_id = 'This ID already exists. Please try with another ID';
|
||||
$lang->msg_exists_email_address = 'This email address already exists. Please try with another email address.';
|
||||
$lang->msg_exists_nick_name = 'This nickname already exists. Please try with another nickname.';
|
||||
$lang->msg_signup_disabled = 'You are not able to join';
|
||||
$lang->msg_already_logged = 'You have already joined';
|
||||
$lang->msg_not_logged = 'Please login first';
|
||||
$lang->msg_title_is_null = 'Please input title of message';
|
||||
$lang->msg_content_is_null = 'Please input content';
|
||||
$lang->msg_allow_message_to_friend = "Failed to send because receiver only allows friends' messages";
|
||||
$lang->msg_disallow_message = 'Failed to send because receiver rejects message reception';
|
||||
$lang->msg_insert_group_name = 'Please input name of group';
|
||||
|
||||
$lang->msg_not_uploaded_image_name = 'Image name could not be registered';
|
||||
$lang->msg_not_uploaded_image_mark = 'Image mark could not be registered';
|
||||
|
||||
$lang->msg_accept_agreement = 'You have to agree to agreement first';
|
||||
|
||||
$lang->msg_user_denied = 'Inputted ID is now prohibited';
|
||||
$lang->msg_user_limited = 'Inputted ID can be used after %s';
|
||||
|
||||
$lang->about_user_id = 'User ID should be 3~20 letters long and consist of alphabet+number with alphabet as first letter.';
|
||||
$lang->about_password = 'Password should be 6~20 letters long';
|
||||
$lang->about_user_name = 'Name should be 2~20 letters long';
|
||||
$lang->about_nick_name = 'Nickname should be 2~20 letters long';
|
||||
$lang->about_email_address = 'Email address is used to modify/find password after email certification';
|
||||
$lang->about_homepage = 'Please input if you have your websites';
|
||||
$lang->about_blog_url = 'Please input if you have your blogs';
|
||||
$lang->about_birthday = 'Please input your birth date';
|
||||
$lang->about_allow_mailing = "If you don't join mailing, you will not able to receive group mail";
|
||||
$lang->about_allow_message = 'You can decide message reception';
|
||||
$lang->about_denied = 'Check to prohibit the ID';
|
||||
$lang->about_is_admin = 'Check to give Superadmin permission';
|
||||
$lang->about_description = "Administrator's memo about members";
|
||||
$lang->about_group = 'An ID can belong to many groups';
|
||||
|
||||
$lang->about_column_type = 'Please set the format of additional join form';
|
||||
$lang->about_column_name = 'Please input English name that can be used in template (name as variable)';
|
||||
$lang->about_column_title = 'This will be displayed when member joining or modifing/viewing member info';
|
||||
$lang->about_default_value = 'You can set default values';
|
||||
$lang->about_active = 'You have to check on active items to show on join form';
|
||||
$lang->about_form_description = 'If you input in description form, it will be displayed on join form';
|
||||
$lang->about_required = 'If you check, it will be essential item for join';
|
||||
|
||||
$lang->about_enable_openid = 'Allow users to join as OpenID';
|
||||
$lang->about_enable_join = 'Allow users to join';
|
||||
$lang->about_limit_day = 'You can limit certification date after join';
|
||||
$lang->about_limit_date = 'User cannot login until assigned date';
|
||||
$lang->about_redirect_url = 'Please input URL where users will go after join. When this is empty, it will be set as the previous page of join page.';
|
||||
$lang->about_agreement = "Join agreement will only be displayed when it's not empty";
|
||||
|
||||
$lang->about_image_name = "Allow users to use image name instead of text name";
|
||||
$lang->about_image_mark = "Allow users to use mark in front of their names";
|
||||
$lang->about_accept_agreement = "I've read the agreement all and agree";
|
||||
|
||||
$lang->about_member_default = 'It will be set as default group on join';
|
||||
|
||||
$lang->about_openid = 'When you join as OpenID, basic info like ID or email address will be saved on this site, but password and certification management will be done on current OpenID offering service';
|
||||
|
||||
$lang->about_member = "This is a module for creating/modifing/deleting members and managing group or join form.\nYou can manage members by creating new groups, and get additional information by managing join form";
|
||||
?>
|
||||
173
modules/member/lang/jp.lang.php
Normal file
173
modules/member/lang/jp.lang.php
Normal file
|
|
@ -0,0 +1,173 @@
|
|||
<?php
|
||||
/**
|
||||
* @file modules/member/jp.lang.php
|
||||
* @author zero (zero@nzeo.com) 翻訳:RisaPapa
|
||||
* @brief 日本語言語パッケージ(基本的な内容のみ)
|
||||
**/
|
||||
|
||||
$lang->member = '会員';
|
||||
$lang->member_default_info = '基本情報';
|
||||
$lang->member_extend_info = '追加情報';
|
||||
$lang->default_group_1 = "準会員";
|
||||
$lang->default_group_2 = "正会員";
|
||||
$lang->admin_group = "管理グループ";
|
||||
$lang->remember_user_id = 'ID保存';
|
||||
$lang->already_logged = '既にログインされています。';
|
||||
$lang->denied_user_id = '使用が禁じられているIDです。';
|
||||
$lang->null_user_id = 'ユーザIDをもう一度入力してください。';
|
||||
$lang->null_password = 'パスワードを入力してください。';
|
||||
$lang->invalid_authorization = '認証できませんでした。';
|
||||
$lang->invalid_user_id= '存在しないユーザIDです。';
|
||||
$lang->invalid_password = '無効なパスワードです。';
|
||||
$lang->allow_mailing = 'メーリングリスト';
|
||||
$lang->allow_message = 'メッセージの受信';
|
||||
$lang->allow_message_type = array(
|
||||
'Y' => '全て受信',
|
||||
'N' => '全て受信しない',
|
||||
'F' => '友達からのみ受信する',
|
||||
);
|
||||
$lang->denied = '使用中止';
|
||||
$lang->is_admin = '最高管理権限';
|
||||
$lang->group = '所属グループ';
|
||||
$lang->group_title = 'グループタイトル';
|
||||
$lang->group_srl = 'グループ番号';
|
||||
$lang->signature = '著名';
|
||||
$lang->image_name = 'イメージ名';
|
||||
$lang->image_name_max_width = '横幅制限サイズ';
|
||||
$lang->image_name_max_height = '立幅制限サイズ';
|
||||
$lang->image_mark = 'イメージマーク';
|
||||
$lang->image_mark_max_width = '横幅制限サイズ';
|
||||
$lang->image_mark_max_height = '立幅制限サイズ';
|
||||
$lang->enable_openid = 'OpenIDを使用する';
|
||||
$lang->enable_join = '会員加入を許可する';
|
||||
$lang->limit_day = '臨時制限日';
|
||||
$lang->limit_date = '制限日';
|
||||
$lang->redirect_url = '加入後移動ページ';
|
||||
$lang->agreement = '会員加入規約';
|
||||
$lang->accept_agreement = '規約に同意する';
|
||||
$lang->sender = '送信者';
|
||||
$lang->receiver = '受信者';
|
||||
$lang->friend_group = '友達グループ';
|
||||
$lang->default_friend_group = 'グループ未指定';
|
||||
$lang->member_info = '会員情報';
|
||||
$lang->current_password = '現在のパスワード';
|
||||
$lang->openid = 'OpenID';
|
||||
|
||||
$lang->search_target_list = array(
|
||||
'user_id' => 'ユーザID',
|
||||
'user_name' => '名前',
|
||||
'nick_name' => 'ニックネーム',
|
||||
'email_address' => 'メールアドレス',
|
||||
'regdate' => '加入日',
|
||||
'last_login' => '最近のログイン',
|
||||
);
|
||||
|
||||
$lang->message_box = array(
|
||||
'R' => 'メッセージ受信ボックス',
|
||||
'S' => 'メッセージ送信ボックス',
|
||||
'T' => '保存ボックス',
|
||||
);
|
||||
|
||||
$lang->readed_date = "開封時間";
|
||||
|
||||
$lang->cmd_login = 'ログイン';
|
||||
$lang->cmd_logout = 'ログアウト';
|
||||
$lang->cmd_signup = '会員加入';
|
||||
$lang->cmd_modify_member_info = '会員情報修正';
|
||||
$lang->cmd_modify_member_password = 'パスワード変更';
|
||||
$lang->cmd_view_member_info = '会員情報表示';
|
||||
$lang->cmd_leave = '脱会';
|
||||
|
||||
$lang->cmd_member_list = '会員リスト';
|
||||
$lang->cmd_module_config = '基本設定';
|
||||
$lang->cmd_member_group = 'グループ管理';
|
||||
$lang->cmd_send_mail = 'メール送信';
|
||||
$lang->cmd_manage_id = '禁止ID管理';
|
||||
$lang->cmd_manage_form = '加入フォーム管理';
|
||||
$lang->cmd_view_own_document = 'プレビュー';
|
||||
$lang->cmd_view_scrapped_document = 'スクラップ表示';
|
||||
$lang->cmd_send_email = 'メール送信';
|
||||
$lang->cmd_send_message = 'メッセージ送信';
|
||||
$lang->cmd_reply_message = 'メッセージへの返信';
|
||||
$lang->cmd_view_friend = '友達表示';
|
||||
$lang->cmd_add_friend = '友達登録';
|
||||
$lang->cmd_view_message_box = 'メッセージ表示';
|
||||
$lang->cmd_store = "保存";
|
||||
$lang->cmd_add_friend_group = '友達グループ追加';
|
||||
$lang->cmd_rename_friend_group = '友達グループ名変更';
|
||||
|
||||
$lang->msg_alreay_scrapped = '既にスクラップされたコンテンツです。';
|
||||
|
||||
$lang->msg_cart_is_null = '対象を選択してください。';
|
||||
$lang->msg_checked_file_is_deleted = '%d個の添付ファイルが削除されました。';
|
||||
|
||||
$lang->msg_no_message = 'メッセージがありません。';
|
||||
$lang->message_received = 'メッセージが届きました。';
|
||||
|
||||
$lang->msg_new_member = '会員追加';
|
||||
$lang->msg_update_member = '会員情報修正';
|
||||
$lang->msg_leave_member = '会員脱会';
|
||||
$lang->msg_group_is_null = '登録されたグループがありません。';
|
||||
$lang->msg_not_delete_default = '基本項目は削除できません。';
|
||||
$lang->msg_not_exists_member = '存在しないユーザIDです。';
|
||||
$lang->msg_cannot_delete_admin = '管理者IDは削除できません。管理者権限を解除した上で削除してみてください。';
|
||||
$lang->msg_exists_user_id = '既に存在するユーザIDです。他のIDを入力してください。';
|
||||
$lang->msg_exists_email_address = '既に存在するメールアドレスです。他のメールアドレスを入力してください。';
|
||||
$lang->msg_exists_nick_name = '既に存在するニックネームです。他のニックネームを入力してください。';
|
||||
$lang->msg_signup_disabled = '会員に加入することができません。';
|
||||
$lang->msg_already_logged = '既に会員に加入されています。';
|
||||
$lang->msg_not_logged = 'ログインしていません。';
|
||||
$lang->msg_title_is_null = 'メッセージのタイトルを入力してください。';
|
||||
$lang->msg_content_is_null = '内容を入力してください。';
|
||||
$lang->msg_allow_message_to_friend = '友達からのみメッセージを受信できるように設定したユーザであるため、送信できませんでした。';
|
||||
$lang->msg_disallow_message = 'メッセージの受信を拒否している受信者であるため、送信できませんでした。';
|
||||
$lang->msg_insert_group_name = 'グループ名を入力してください。';
|
||||
|
||||
$lang->msg_not_uploaded_image_name = 'イメージ名を登録することができません。';
|
||||
$lang->msg_not_uploaded_image_mark = 'イメージマークを登録することができません。';
|
||||
|
||||
$lang->msg_accept_agreement = '規約に同意しなければなりません。';
|
||||
|
||||
$lang->msg_user_denied = '入力されたユーザIDは使用が中止されました。';
|
||||
$lang->msg_user_limited = '入力されたユーザIDは%s以降から使用できます。';
|
||||
|
||||
$lang->about_user_id = 'ユーザIDは3~20の英数文字で構成され、最先頭の文字は英字でなければなりません。';
|
||||
$lang->about_password = 'パスワードは6~20文字です。';
|
||||
$lang->about_user_name = '名前は2~20文字です。';
|
||||
$lang->about_nick_name = 'ニックネームは2~20文字です。';
|
||||
$lang->about_email_address = 'メールアドレスはメール認証後、パスワード変更または検索などに使用されます。';
|
||||
$lang->about_homepage = 'ホームページがある場合は入力してください。';
|
||||
$lang->about_blog_url = '運用しているブログがあれば入力してください。';
|
||||
$lang->about_birthday = '生年月日を入力してください。';
|
||||
$lang->about_allow_mailing = 'メーリングリストにチェックされていない場合は、全体メールの送信時にメールを受け取りません。';
|
||||
$lang->about_allow_message = 'メッセージを受信するかを設定します。';
|
||||
$lang->about_denied = 'チェックするとユーザIDを使用できないようにします。';
|
||||
$lang->about_is_admin = 'チェックすると最高管理者権限が取得できます。';
|
||||
$lang->about_description = '会員に対する管理者のメモ帳です。';
|
||||
$lang->about_group = '一つのユーザIDは多数のグループに属することができます。';
|
||||
|
||||
$lang->about_column_type = '追加する加入フォームのタイプを指定してください。';
|
||||
$lang->about_column_name = 'テンプレートで使用できる英文字の名前を入力してください(変数名)。';
|
||||
$lang->about_column_title = '加入または情報修正・照合時に表示されるタイトルです。';
|
||||
$lang->about_default_value = 'デフォルトで入力される値を指定することができます。';
|
||||
$lang->about_active = '活性化(有効化)にチェックを入れないと正常に表示されません。';
|
||||
$lang->about_form_description = '説明欄に入力すると加入時に表示されます。';
|
||||
$lang->about_required = 'チェックを入れると会員加入時に必須入力項目として設定されます。';
|
||||
|
||||
$lang->about_enable_openid = 'OpenIDをサポートする際にチェックを入れます。';
|
||||
$lang->about_enable_join = 'チェックを入れないとユーザが会員に加入できません。';
|
||||
$lang->about_limit_day = '会員加入後一定の期間中、認証制限を行うことができます。';
|
||||
$lang->about_limit_date = '指定された期間まで該当ユーザはログインできなくします。';
|
||||
$lang->about_redirect_url = '会員加入後、移動するURLを入力してください。空の場合は会員加入する前のページに戻ります。';
|
||||
$lang->about_agreement = '会員加入規約がない場合は表示されません。';
|
||||
|
||||
$lang->about_image_name = 'ユーザの名前を文字の代わりにイメージで表示させることができます。';
|
||||
$lang->about_image_mark = '使用者の名前の前にマークを付けることができます。';
|
||||
$lang->about_accept_agreement = '加入規約をすべて読んだ上で同意します。';
|
||||
|
||||
$lang->about_member_default = '会員加入時に基本グループとして設定されます。';
|
||||
|
||||
$lang->about_openid = 'OpenIDで加入する際、IDとメールなどの基本情報は、このサイトに保存されますが、パスワードと認証のための処理用の情報は該当するOpenID提供サービス側で行われます。';
|
||||
|
||||
$lang->about_member = "会員の作成・修正・削除することができ、グループの管理、加入フォームの管理などが行える会員管理モジュールです。デフォルトで作成されたグループにグループを追加作成して会員管理ができるようにし、加入フォーム管理では基本情報の他、フォームの入力情報を追加することができます。";
|
||||
?>
|
||||
173
modules/member/lang/ko.lang.php
Normal file
173
modules/member/lang/ko.lang.php
Normal file
|
|
@ -0,0 +1,173 @@
|
|||
<?php
|
||||
/**
|
||||
* @file ko.lang.php
|
||||
* @author zero (zero@nzeo.com)
|
||||
* @brief 한국어 언어팩 (기본적인 내용만 수록)
|
||||
**/
|
||||
|
||||
$lang->member = '회원';
|
||||
$lang->member_default_info = '기본 정보';
|
||||
$lang->member_extend_info = '추가 정보';
|
||||
$lang->default_group_1 = "준회원";
|
||||
$lang->default_group_2 = "정회원";
|
||||
$lang->admin_group = "관리그룹";
|
||||
$lang->remember_user_id = '아이디 저장';
|
||||
$lang->already_logged = '이미 로그인되어 있습니다';
|
||||
$lang->denied_user_id = '사용금지된 아이디입니다';
|
||||
$lang->null_user_id = '사용자 아이디를 입력해주세요';
|
||||
$lang->null_password = '비밀번호를 입력해주세요';
|
||||
$lang->invalid_authorization = '인증이 되지 않았습니다';
|
||||
$lang->invalid_user_id= '존재하지 않는 사용자 아이디입니다';
|
||||
$lang->invalid_password = '잘못된 비밀번호입니다';
|
||||
$lang->allow_mailing = '메일링 가입';
|
||||
$lang->allow_message = '쪽지 수신 허용';
|
||||
$lang->allow_message_type = array(
|
||||
'Y' => '전체 수신',
|
||||
'N' => '거부',
|
||||
'F' => '친구만 허용',
|
||||
);
|
||||
$lang->denied = '사용중지';
|
||||
$lang->is_admin = '최고관리 권한';
|
||||
$lang->group = '소속 그룹';
|
||||
$lang->group_title = '그룹제목';
|
||||
$lang->group_srl = '그룹번호';
|
||||
$lang->signature = '서명';
|
||||
$lang->image_name = '이미지 이름';
|
||||
$lang->image_name_max_width = '가로 제한 크기';
|
||||
$lang->image_name_max_height = '세로 제한 크기';
|
||||
$lang->image_mark = '이미지 마크';
|
||||
$lang->image_mark_max_width = '가로 제한 크기';
|
||||
$lang->image_mark_max_height = '세로 제한 크기';
|
||||
$lang->enable_openid = 'OpenID 지원';
|
||||
$lang->enable_join = '회원 가입 허가';
|
||||
$lang->limit_day = '임시 제한 일자';
|
||||
$lang->limit_date = '제한일';
|
||||
$lang->redirect_url = '회원 가입후 이동할 페이지';
|
||||
$lang->agreement = '회원 가입 약관';
|
||||
$lang->accept_agreement = '약관동의';
|
||||
$lang->sender = '보낸이';
|
||||
$lang->receiver = '받는이';
|
||||
$lang->friend_group = '친구 그룹';
|
||||
$lang->default_friend_group = '그룹 미지정';
|
||||
$lang->member_info = '회원 정보';
|
||||
$lang->current_password = '현재 비밀번호';
|
||||
$lang->openid = 'OpenID';
|
||||
|
||||
$lang->search_target_list = array(
|
||||
'user_id' => '아이디',
|
||||
'user_name' => '이름',
|
||||
'nick_name' => '닉네임',
|
||||
'email_address' => '메일주소',
|
||||
'regdate' => '가입일시',
|
||||
'last_login' => '최근로그인일시',
|
||||
);
|
||||
|
||||
$lang->message_box = array(
|
||||
'R' => '받은 쪽지함',
|
||||
'S' => '보낸 쪽지함',
|
||||
'T' => '보관함',
|
||||
);
|
||||
|
||||
$lang->readed_date = "읽은 시간";
|
||||
|
||||
$lang->cmd_login = '로그인';
|
||||
$lang->cmd_logout = '로그아웃';
|
||||
$lang->cmd_signup = '회원 가입';
|
||||
$lang->cmd_modify_member_info = '회원 정보 수정';
|
||||
$lang->cmd_modify_member_password = '비밀번호 변경';
|
||||
$lang->cmd_view_member_info = '회원 정보 보기';
|
||||
$lang->cmd_leave = '탈퇴';
|
||||
|
||||
$lang->cmd_member_list = '회원 목록';
|
||||
$lang->cmd_module_config = '기본 설정';
|
||||
$lang->cmd_member_group = '그룹 관리';
|
||||
$lang->cmd_send_mail = '메일발송';
|
||||
$lang->cmd_manage_id = '금지아이디관리';
|
||||
$lang->cmd_manage_form = '가입폼관리';
|
||||
$lang->cmd_view_own_document = '작성글 보기';
|
||||
$lang->cmd_view_scrapped_document = '스크랩 보기';
|
||||
$lang->cmd_send_email = '메일 보내기';
|
||||
$lang->cmd_send_message = '쪽지 보내기';
|
||||
$lang->cmd_reply_message = '쪽지 답장';
|
||||
$lang->cmd_view_friend = '친구 보기';
|
||||
$lang->cmd_add_friend = '친구 등록';
|
||||
$lang->cmd_view_message_box = '쪽지함 보기';
|
||||
$lang->cmd_store = "보관";
|
||||
$lang->cmd_add_friend_group = '친구 그룹 추가';
|
||||
$lang->cmd_rename_friend_group = '친구 그룹 이름 변경';
|
||||
|
||||
$lang->msg_alreay_scrapped = '이미 스크랩된 게시물입니다';
|
||||
|
||||
$lang->msg_cart_is_null = '대상을 선택해주세요';
|
||||
$lang->msg_checked_file_is_deleted = '%d개의 첨부파일이 삭제되었습니다';
|
||||
|
||||
$lang->msg_no_message = '쪽지가 없습니다';
|
||||
$lang->message_received = '쪽지가 왔습니다';
|
||||
|
||||
$lang->msg_new_member = '회원 추가';
|
||||
$lang->msg_update_member = '회원 정보 수정';
|
||||
$lang->msg_leave_member = '회원 탈퇴';
|
||||
$lang->msg_group_is_null = '등록된 그룹이 없습니다';
|
||||
$lang->msg_not_delete_default = '기본 항목을 삭제할 수 없습니다';
|
||||
$lang->msg_not_exists_member = '존재하지 않는 사용자입니다';
|
||||
$lang->msg_cannot_delete_admin = '관리자 아이디는 삭제할 수 없습니다. 관리자 해제후 다시 삭제시도해주세요';
|
||||
$lang->msg_exists_user_id = '이미 존재하는 아이디입니다. 다른 아이디를 입력해주세요';
|
||||
$lang->msg_exists_email_address = '이미 존재하는 메일주소입니다. 다른 메일주소를 입력해주세요';
|
||||
$lang->msg_exists_nick_name = '이미 존재하는 닉네임입니다. 다른 닉네임을 입력해주세요';
|
||||
$lang->msg_signup_disabled = '회원 가입을 하실 수 없습니다';
|
||||
$lang->msg_already_logged = '이미 회원 가입을 하신 상태입니다';
|
||||
$lang->msg_not_logged = '로그인을 하지 않으셨습니다';
|
||||
$lang->msg_title_is_null = '쪽지 제목을 입력해주세요';
|
||||
$lang->msg_content_is_null = '내용을 입력해주세요';
|
||||
$lang->msg_allow_message_to_friend = '친구에게만 쪽지 수신을 허용한 사용자라서 쪽지 발송을 하지 못했습니다';
|
||||
$lang->msg_disallow_message = '쪽지 수신을 거부한 사용자라서 쪽지 발송을 하지 못했습니다';
|
||||
$lang->msg_insert_group_name = '그룹명을 입력해 주세요';
|
||||
|
||||
$lang->msg_not_uploaded_image_name = '이미지 이름을 등록할 수가 없습니다';
|
||||
$lang->msg_not_uploaded_image_mark = '이미지 마크를 등록할 수가 없습니다';
|
||||
|
||||
$lang->msg_accept_agreement = '약관에 동의하셔야 합니다';
|
||||
|
||||
$lang->msg_user_denied = '입력하신 아이디의 사용이 중지되셨습니다';
|
||||
$lang->msg_user_limited = '입력하신 아이디는 %s 이후부터 사용하실 수 있습니다';
|
||||
|
||||
$lang->about_user_id = '사용자 ID는 3~20자 사이의 영문+숫자로 이루어져야 하며 영문으로 시작되어야 합니다';
|
||||
$lang->about_password = '비밀번호는 6~20자로 되어야 합니다';
|
||||
$lang->about_user_name = '이름은 2~20자 이내여야 합니다';
|
||||
$lang->about_nick_name = '닉네임은 2~20자 이내여야 합니다';
|
||||
$lang->about_email_address = '메일주소는 메일인증 후 비밀번호 변경이나 찾기등에 사용됩니다.';
|
||||
$lang->about_homepage = '홈페이지가 있을 경우 입력해주세요';
|
||||
$lang->about_blog_url = '운영하는 블로그가 있을 경우 입력해주세요';
|
||||
$lang->about_birthday = '생년월일을 입력해주세요';
|
||||
$lang->about_allow_mailing = '메일링 가입이 체크되지 않으면 단체메일 발송시 메일을 받지 않습니다';
|
||||
$lang->about_allow_message = '쪽시 수신 여부를 결정할 수 있습니다';
|
||||
$lang->about_denied = '체크시 아이디를 사용할 수 없도록 합니다';
|
||||
$lang->about_is_admin = '체크시 최고 관리자 권한을 가지게 됩니다';
|
||||
$lang->about_description = '회원에 대한 관리자 메모입니다';
|
||||
$lang->about_group = '한 아이디는 여러개의 group에 속할 수 있습니다';
|
||||
|
||||
$lang->about_column_type = '추가하실 가입폼의 형식을 지정해주세요';
|
||||
$lang->about_column_name = '템플릿에서 사용할수 있는 영문으로 된 이름을 적어주세요 (변수명)';
|
||||
$lang->about_column_title = '가입 또는 정보 수정/조회시에 표시될 제목입니다';
|
||||
$lang->about_default_value = '기본으로 입력될 값을 정하실 수 있습니다';
|
||||
$lang->about_active = '활성 항목에 체크를 하셔야 가입시 정상적으로 노출됩니다';
|
||||
$lang->about_form_description = '설명란에 입력을 하시면 가입시 표시가 됩니다';
|
||||
$lang->about_required = '체크하시면 회원가입시 필수항목으로 입력하도록 됩니다';
|
||||
|
||||
$lang->about_enable_openid = 'OpenID 지원을 할 경우 체크하시면 됩니다';
|
||||
$lang->about_enable_join = '체크를 하셔야 사용자들이 회원가입을 할 수 있습니다';
|
||||
$lang->about_limit_day = '회원 가입후 정해진 일자동안 인증 제한을 할 수 있습니다';
|
||||
$lang->about_limit_date = '지정된 일자까지 해당 사용자는 로그인을 할 수 없습니다';
|
||||
$lang->about_redirect_url = '회원 가입후 이동할 url을 입력해 주세요. 비어 있으면 가입 이전 페이지로 돌아갑니다';
|
||||
$lang->about_agreement = '회원가입약관이 없을 경우 표시되지 않습니다';
|
||||
|
||||
$lang->about_image_name = '사용자의 이름을 글자 대신 이미지로 사용할 수 있게 합니다';
|
||||
$lang->about_image_mark = '사용자의 이름앞에 마크를 달 수 있습니다';
|
||||
$lang->about_accept_agreement = '약관을 모두 읽었으며 동의합니다';
|
||||
|
||||
$lang->about_member_default = '회원가입시 기본 그룹으로 설정됩니다';
|
||||
|
||||
$lang->about_openid = '오픈아이디로 가입시 아이디와 메일등의 기본 정보는 이 사이트에 저장이 되지만 비밀번호와 인증을 위한 처리는 해당 오픈아이디 제공서비스에서 이루어집니다.';
|
||||
|
||||
$lang->about_member = "회원을 생성/수정/삭제 할 수 있고 그룹관리나 가입폼 관리등을 할 수 있는 회원 관리 모듈입니다.\n기본으로 생성된 그룹외의 그룹을 생성하여 회원 관리가 가능하고 가입폼관리를 통한 기본 정보외의 추가 정보를 요구받을 수도 있습니다.";
|
||||
?>
|
||||
173
modules/member/lang/zh-CN.lang.php
Normal file
173
modules/member/lang/zh-CN.lang.php
Normal file
|
|
@ -0,0 +1,173 @@
|
|||
<?php
|
||||
/**
|
||||
* @file zh-CN.lang.php
|
||||
* @author zero (zero@nzeo.com)
|
||||
* @brief 简体中文语言包 (只收录基本内容)
|
||||
**/
|
||||
|
||||
$lang->member = '会员';
|
||||
$lang->member_default_info = '基本信息';
|
||||
$lang->member_extend_info = '扩展信息';
|
||||
$lang->default_group_1 = "准会员";
|
||||
$lang->default_group_2 = "正会员";
|
||||
$lang->admin_group = "管理组";
|
||||
$lang->remember_user_id = '保存ID';
|
||||
$lang->already_logged = '您已经登录!';
|
||||
$lang->denied_user_id = '被禁止的用户名。';
|
||||
$lang->null_user_id = '请输入用户名。';
|
||||
$lang->null_password = '请输入密码。';
|
||||
$lang->invalid_authorization = '还没有认证!';
|
||||
$lang->invalid_user_id= '该用户名不存在,请检查您的输入是否有误!';
|
||||
$lang->invalid_password = '您的密码不正确!';
|
||||
$lang->allow_mailing = '接收邮件';
|
||||
$lang->allow_message = '允许接收短消息';
|
||||
$lang->allow_message_type = array(
|
||||
'Y' => '全部接收',
|
||||
'N' => '拒收',
|
||||
'F' => '只允许好友',
|
||||
);
|
||||
$lang->denied = '禁止使用';
|
||||
$lang->is_admin = '最高管理权限';
|
||||
$lang->group = '用户组';
|
||||
$lang->group_title = '用户组标题';
|
||||
$lang->group_srl = '用户组编号';
|
||||
$lang->signature = '签名';
|
||||
$lang->image_name = '昵称图片';
|
||||
$lang->image_name_max_width = '宽度限制';
|
||||
$lang->image_name_max_height = '高度限制';
|
||||
$lang->image_mark = '用户图标';
|
||||
$lang->image_mark_max_width = '宽度限制';
|
||||
$lang->image_mark_max_height = '高度限制';
|
||||
$lang->enable_openid = '支持OpenID';
|
||||
$lang->enable_join = '允许会员注册';
|
||||
$lang->limit_day = '认证限制';
|
||||
$lang->limit_date = '限制日期';
|
||||
$lang->redirect_url = '注册会员后页面转向';
|
||||
$lang->agreement = '会员注册条款';
|
||||
$lang->accept_agreement = '同意条款';
|
||||
$lang->sender = '寄件人';
|
||||
$lang->receiver = '收件人';
|
||||
$lang->friend_group = '好友组';
|
||||
$lang->default_friend_group = '组未指定';
|
||||
$lang->member_info = '会员信息';
|
||||
$lang->current_password = '当前密码';
|
||||
$lang->openid = 'OpenID';
|
||||
|
||||
$lang->search_target_list = array(
|
||||
'user_id' => '用户名',
|
||||
'user_name' => '姓名',
|
||||
'nick_name' => '昵称',
|
||||
'email_address' => '邮箱地址',
|
||||
'regdate' => '注册日期',
|
||||
'last_login' => '最近登录',
|
||||
);
|
||||
|
||||
$lang->message_box = array(
|
||||
'R' => '收件箱',
|
||||
'S' => '发件箱',
|
||||
'T' => '保管箱',
|
||||
);
|
||||
|
||||
$lang->readed_date = "阅读日期";
|
||||
|
||||
$lang->cmd_login = '登录';
|
||||
$lang->cmd_logout = '退出';
|
||||
$lang->cmd_signup = '新会员注册';
|
||||
$lang->cmd_modify_member_info = '修改会员信息';
|
||||
$lang->cmd_modify_member_password = '修改密码';
|
||||
$lang->cmd_view_member_info = '查看会员信息';
|
||||
$lang->cmd_leave = '注销';
|
||||
|
||||
$lang->cmd_member_list = '会员目录';
|
||||
$lang->cmd_module_config = '基本设置';
|
||||
$lang->cmd_member_group = '用户组管理';
|
||||
$lang->cmd_send_mail = '发送邮件';
|
||||
$lang->cmd_manage_id = '禁止用户名管理';
|
||||
$lang->cmd_manage_form = '注册表单管理';
|
||||
$lang->cmd_view_own_document = '查看我的帖子';
|
||||
$lang->cmd_view_scrapped_document = '查看收藏';
|
||||
$lang->cmd_send_email = '发送邮件';
|
||||
$lang->cmd_send_message = '发送短消息';
|
||||
$lang->cmd_reply_message = '回复短消息';
|
||||
$lang->cmd_view_friend = '查看好友';
|
||||
$lang->cmd_add_friend = '加为好友';
|
||||
$lang->cmd_view_message_box = '查看短信箱';
|
||||
$lang->cmd_store = "保管";
|
||||
$lang->cmd_add_friend_group = '添加好友组';
|
||||
$lang->cmd_rename_friend_group = '修改好友组名称';
|
||||
|
||||
$lang->msg_alreay_scrapped = '已收藏的主题!';
|
||||
|
||||
$lang->msg_cart_is_null = '请选择对象。';
|
||||
$lang->msg_checked_file_is_deleted = '已删除%d个附件。';
|
||||
|
||||
$lang->msg_no_message = '没有短消息。';
|
||||
$lang->message_received = '您有新消息。';
|
||||
|
||||
$lang->msg_new_member = '添加会员';
|
||||
$lang->msg_update_member = '修改会员信息';
|
||||
$lang->msg_leave_member = '注销会员';
|
||||
$lang->msg_group_is_null = '没有用户组。';
|
||||
$lang->msg_not_delete_default = '不能删除基本项目';
|
||||
$lang->msg_not_exists_member = '不存在的用户';
|
||||
$lang->msg_cannot_delete_admin = '不能删除管理员 ID .解除管理后再删除';
|
||||
$lang->msg_exists_user_id = '重复的用户名 ,请重新输入用户名。';
|
||||
$lang->msg_exists_email_address = '重复的电子邮件地址,请重新输入电子邮件地址。';
|
||||
$lang->msg_exists_nick_name = '重复的昵称,请重新输入昵称。';
|
||||
$lang->msg_signup_disabled = '不能注册会员';
|
||||
$lang->msg_already_logged = '您是注册会员。';
|
||||
$lang->msg_not_logged = '您还没有登录。';
|
||||
$lang->msg_title_is_null = '请输入短消息标题。';
|
||||
$lang->msg_content_is_null = '请输入内容。';
|
||||
$lang->msg_allow_message_to_friend = '因其为只允许接收好友短消息的用户,所以不能发送短消息。';
|
||||
$lang->msg_disallow_message = '因其为拒绝接收短消息的用户,所以不能发送短消息。';
|
||||
$lang->msg_insert_group_name = '请输入组名称';
|
||||
|
||||
$lang->msg_not_uploaded_image_name = '不能登录昵称图像!';
|
||||
$lang->msg_not_uploaded_image_mark = '不能登录用户图标!';
|
||||
|
||||
$lang->msg_accept_agreement = '您必须同意条款。';
|
||||
|
||||
$lang->msg_user_denied = '您输入的用户名已禁止使用!';
|
||||
$lang->msg_user_limited = '您输入的用户名%s以后才可以开始使用。';
|
||||
|
||||
$lang->about_user_id = '用户名长度必须由 3 ~20 字以内的英文+数字组成,且首个字母必须是英文字母。';
|
||||
$lang->about_password = '密码长度必须在6~20字以内。';
|
||||
$lang->about_user_name = '姓名必须是2~20字以内。';
|
||||
$lang->about_nick_name = '昵称必须是2~20字以内。';
|
||||
$lang->about_email_address = '电子邮件地址除邮件认证外,在修改密码或找回密码时使用。';
|
||||
$lang->about_homepage = '请输入您的主页地址。';
|
||||
$lang->about_blog_url = '请输入博客地址。';
|
||||
$lang->about_birthday = '请输入您的出生年月日。';
|
||||
$lang->about_allow_mailing = '如不选择此项,以后不能接收站内发送的重要信息。';
|
||||
$lang->about_allow_message = '可以选择短消息接收与否。';
|
||||
$lang->about_denied = '选择时不能使用此用户名。';
|
||||
$lang->about_is_admin = '选择时将具有最高管理权限。';
|
||||
$lang->about_description = '管理员对会员的笔记。';
|
||||
$lang->about_group = '一个用户名可属多个用户组。';
|
||||
|
||||
$lang->about_column_type = '请选择要添加的注册表单格式。';
|
||||
$lang->about_column_name = '请输入在模板中可以使用的英文名称。(变数名)';
|
||||
$lang->about_column_title = '注册或修改/查看信息时要显示的标题。';
|
||||
$lang->about_default_value = '可以设置缺省值。';
|
||||
$lang->about_active = '必须选择此项后才可以正常启用。';
|
||||
$lang->about_form_description = '说明栏里输入的内容,注册时将会显示。';
|
||||
$lang->about_required = '注册时成为必填项目。';
|
||||
|
||||
$lang->about_enable_openid = '支持 OpenID 时请选择此项。';
|
||||
$lang->about_enable_join = '选择此项后用户才可以注册。';
|
||||
$lang->about_limit_day = '注册会员后的认证有效期限。';
|
||||
$lang->about_limit_date = '直到指定日期该用户不能登录。';
|
||||
$lang->about_redirect_url = '请输入注册会员后的页面转向 url。(留空为返回前页)';
|
||||
$lang->about_agreement = '没有会员条款时不显示。';
|
||||
|
||||
$lang->about_image_name = '用户昵称可以用小图片来替代显示。';
|
||||
$lang->about_image_mark = '显示在用户昵称前的小图标。';
|
||||
$lang->about_accept_agreement = '已阅读全部条款并同意。';
|
||||
|
||||
$lang->about_member_default = '将成为注册会员时的默认用户组。';
|
||||
|
||||
$lang->about_openid = '用OpenID注册时该网站只保存用户名和 邮件等基本信息,密码和认证处理是在提供OpenID服务的站点中得到解决。';
|
||||
|
||||
$lang->about_member = "可以添加/修改/删除会员及管理用户组或注册表单的会员管理模块。\n此模块不仅可以生成缺省用户组以外的其他用户组来管理会员,并且通过注册表单的管理获得除会员基本信息以外的扩展信息。";
|
||||
?>
|
||||
436
modules/member/member.admin.controller.php
Normal file
436
modules/member/member.admin.controller.php
Normal file
|
|
@ -0,0 +1,436 @@
|
|||
<?php
|
||||
/**
|
||||
* @class memberAdminController
|
||||
* @author zero (zero@nzeo.com)
|
||||
* @brief member module의 admin controller class
|
||||
**/
|
||||
|
||||
class memberAdminController extends member {
|
||||
|
||||
/**
|
||||
* @brief 초기화
|
||||
**/
|
||||
function init() {
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 사용자 추가 (관리자용)
|
||||
**/
|
||||
function procMemberAdminInsert() {
|
||||
// 필수 정보들을 미리 추출
|
||||
$args = Context::gets('member_srl','user_id','user_name','nick_name','homepage','blog','birthday','email_address','password','allow_mailing','allow_message','denied','is_admin','description','group_srl_list');
|
||||
|
||||
// 넘어온 모든 변수중에서 몇가지 불필요한 것들 삭제
|
||||
$all_args = Context::getRequestVars();
|
||||
unset($all_args->module);
|
||||
unset($all_args->act);
|
||||
|
||||
// 모든 request argument에서 필수 정보만 제외 한 후 추가 데이터로 입력
|
||||
$extra_vars = delObjectVars($all_args, $args);
|
||||
$args->extra_vars = serialize($extra_vars);
|
||||
|
||||
// member_srl이 넘어오면 원 회원이 있는지 확인
|
||||
if($args->member_srl) {
|
||||
// 멤버 모델 객체 생성
|
||||
$oMemberModel = &getModel('member');
|
||||
|
||||
// 회원 정보 구하기
|
||||
$member_info = $oMemberModel->getMemberInfoByMemberSrl($args->member_srl);
|
||||
|
||||
// 만약 원래 회원이 없으면 새로 입력하기 위한 처리
|
||||
if($member_info->member_srl != $args->member_srl) unset($args->member_srl);
|
||||
}
|
||||
|
||||
$oMemberController = &getController('member');
|
||||
|
||||
// member_srl의 값에 따라 insert/update
|
||||
if(!$args->member_srl) {
|
||||
$output = $oMemberController->insertMember($args);
|
||||
$msg_code = 'success_registed';
|
||||
} else {
|
||||
$output = $oMemberController->updateMember($args);
|
||||
$msg_code = 'success_updated';
|
||||
}
|
||||
|
||||
if(!$output->toBool()) return $output;
|
||||
|
||||
// 서명 저장
|
||||
$signature = Context::get('signature');
|
||||
$oMemberController->putSignature($args->member_srl, $signature);
|
||||
|
||||
// 결과 리턴
|
||||
$this->add('member_srl', $args->member_srl);
|
||||
$this->setMessage($msg_code);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 사용자 삭제 (관리자용)
|
||||
**/
|
||||
function procMemberAdminDelete() {
|
||||
// 일단 입력된 값들을 모두 받아서 db 입력항목과 그외 것으로 분리
|
||||
$member_srl = Context::get('member_srl');
|
||||
|
||||
$oMemberController = &getController('member');
|
||||
$output = $oMemberController->deleteMember($member_srl);
|
||||
if(!$output->toBool()) return $output;
|
||||
|
||||
$this->add('page',Context::get('page'));
|
||||
$this->setMessage("success_deleted");
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 회원 관리용 기본 정보의 추가
|
||||
**/
|
||||
function procMemberAdminInsertConfig() {
|
||||
// 기본 정보를 받음
|
||||
$args = Context::gets('skin','colorset','enable_openid','enable_join','limit_day','redirect_url','content','image_name','image_mark', 'image_name_max_width', 'image_name_max_height','image_mark_max_width','image_mark_max_height');
|
||||
if(!$args->skin) $args->skin = "default";
|
||||
if(!$args->colorset) $args->colorset = "white";
|
||||
if($args->enable_join!='Y') $args->enable_join = 'N';
|
||||
if($args->enable_openid!='Y') $args->enable_openid= 'N';
|
||||
if($args->image_name!='Y') $args->image_name = 'N';
|
||||
if($args->image_mark!='Y') $args->image_mark = 'N';
|
||||
$args->limit_day = (int)$args->limit_day;
|
||||
$args->agreement = $args->content;
|
||||
unset($args->content);
|
||||
|
||||
// module Controller 객체 생성하여 입력
|
||||
$oModuleController = &getController('module');
|
||||
$output = $oModuleController->insertModuleConfig('member',$args);
|
||||
return $output;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 사용자 그룹 추가
|
||||
**/
|
||||
function procMemberAdminInsertGroup() {
|
||||
$args = Context::gets('title','description','is_default');
|
||||
$output = $this->insertGroup($args);
|
||||
if(!$output->toBool()) return $output;
|
||||
|
||||
$this->add('group_srl','');
|
||||
$this->add('page',Context::get('page'));
|
||||
$this->setMessage('success_registed');
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 사용자 그룹 정보 수정
|
||||
**/
|
||||
function procMemberAdminUpdateGroup() {
|
||||
$group_srl = Context::get('group_srl');
|
||||
$mode = Context::get('mode');
|
||||
|
||||
switch($mode) {
|
||||
case 'delete' :
|
||||
$output = $this->deleteGroup($group_srl);
|
||||
if(!$output->toBool()) return $output;
|
||||
$msg_code = 'success_deleted';
|
||||
break;
|
||||
case 'update' :
|
||||
$args = Context::gets('group_srl','title','description','is_default');
|
||||
$output = $this->updateGroup($args);
|
||||
if(!$output->toBool()) return $output;
|
||||
$msg_code = 'success_updated';
|
||||
break;
|
||||
}
|
||||
|
||||
$this->add('group_srl','');
|
||||
$this->add('page',Context::get('page'));
|
||||
$this->setMessage($msg_code);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 가입 항목 추가
|
||||
**/
|
||||
function procMemberAdminInsertJoinForm() {
|
||||
$args->member_join_form_srl = Context::get('member_join_form_srl');
|
||||
|
||||
$args->column_type = Context::get('column_type');
|
||||
$args->column_name = Context::get('column_name');
|
||||
$args->column_title = Context::get('column_title');
|
||||
$args->default_value = explode('|@|', Context::get('default_value'));
|
||||
$args->is_active = Context::get('is_active');
|
||||
if(!in_array(strtoupper($args->is_active), array('Y','N'))) $args->is_active = 'N';
|
||||
$args->required = Context::get('required');
|
||||
if(!in_array(strtoupper($args->required), array('Y','N'))) $args->required = 'N';
|
||||
$args->description = Context::get('description');
|
||||
$args->list_order = getNextSequence();
|
||||
|
||||
// 기본값의 정리
|
||||
if(in_array($args->column_type, array('checkbox','select')) && count($args->default_value) ) {
|
||||
$args->default_value = serialize($args->default_value);
|
||||
} else {
|
||||
$args->default_value = '';
|
||||
}
|
||||
|
||||
// member_join_form_srl이 있으면 수정, 없으면 추가
|
||||
if(!$args->member_join_form_srl) $output = executeQuery('member.insertJoinForm', $args);
|
||||
else $output = executeQuery('member.updateJoinForm', $args);
|
||||
|
||||
if(!$output->toBool()) return $output;
|
||||
|
||||
$this->add('act','dispJoinForm');
|
||||
$this->setMessage('success_registed');
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 가입 항목의 상/하 이동 및 내용 수정
|
||||
**/
|
||||
function procMemberAdminUpdateJoinForm() {
|
||||
$member_join_form_srl = Context::get('member_join_form_srl');
|
||||
$mode = Context::get('mode');
|
||||
|
||||
switch($mode) {
|
||||
case 'up' :
|
||||
$output = $this->moveJoinFormUp($member_join_form_srl);
|
||||
$msg_code = 'success_moved';
|
||||
break;
|
||||
case 'down' :
|
||||
$output = $this->moveJoinFormDown($member_join_form_srl);
|
||||
$msg_code = 'success_moved';
|
||||
break;
|
||||
case 'delete' :
|
||||
$output = $this->deleteJoinForm($member_join_form_srl);
|
||||
$msg_code = 'success_deleted';
|
||||
break;
|
||||
case 'update' :
|
||||
break;
|
||||
}
|
||||
if(!$output->toBool()) return $output;
|
||||
|
||||
$this->setMessage($msg_code);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 금지 아이디 추가
|
||||
**/
|
||||
function procMemberAdminInsertDeniedID() {
|
||||
$user_id = Context::get('user_id');
|
||||
$description = Context::get('description');
|
||||
|
||||
$output = $this->insertDeniedID($user_id, $description);
|
||||
if(!$output->toBool()) return $output;
|
||||
|
||||
$this->add('group_srl','');
|
||||
$this->add('page',Context::get('page'));
|
||||
$this->setMessage('success_registed');
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 금지 아이디 업데이트
|
||||
**/
|
||||
function procMemberAdminUpdateDeniedID() {
|
||||
$user_id = Context::get('user_id');
|
||||
$mode = Context::get('mode');
|
||||
|
||||
switch($mode) {
|
||||
case 'delete' :
|
||||
$output = $this->deleteDeniedID($user_id);
|
||||
if(!$output->toBool()) return $output;
|
||||
$msg_code = 'success_deleted';
|
||||
break;
|
||||
}
|
||||
|
||||
$this->add('page',Context::get('page'));
|
||||
$this->setMessage($msg_code);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 관리자를 추가한다
|
||||
**/
|
||||
function insertAdmin($args) {
|
||||
// 관리자임을 설정
|
||||
$args->is_admin = 'Y';
|
||||
|
||||
// 관리자 그룹을 구해와서 설정
|
||||
$oMemberModel = &getModel('member');
|
||||
$admin_group = $oMemberModel->getAdminGroup();
|
||||
$args->group_srl_list = $admin_group->group_srl;
|
||||
|
||||
$oMemberController = &getController('member');
|
||||
return $oMemberController->insertMember($args);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 회원의 그룹값을 변경
|
||||
**/
|
||||
function changeGroup($source_group_srl, $target_group_srl) {
|
||||
$args->source_group_srl = $source_group_srl;
|
||||
$args->target_group_srl = $target_group_srl;
|
||||
|
||||
return executeQuery('member.changeGroup', $args);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 그룹 등록
|
||||
**/
|
||||
function insertGroup($args) {
|
||||
// is_default값을 체크, Y일 경우 일단 모든 is_default에 대해서 N 처리
|
||||
if($args->is_default!='Y') {
|
||||
$args->is_default = 'N';
|
||||
} else {
|
||||
$output = executeQuery('member.updateGroupDefaultClear');
|
||||
if(!$output->toBool()) return $output;
|
||||
}
|
||||
|
||||
return executeQuery('member.insertGroup', $args);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 그룹 정보 수정
|
||||
**/
|
||||
function updateGroup($args) {
|
||||
// is_default값을 체크, Y일 경우 일단 모든 is_default에 대해서 N 처리
|
||||
if($args->is_default!='Y') $args->is_default = 'N';
|
||||
else {
|
||||
$output = executeQuery('member.updateGroupDefaultClear');
|
||||
if(!$output->toBool()) return $output;
|
||||
}
|
||||
|
||||
return executeQuery('member.updateGroup', $args);
|
||||
}
|
||||
|
||||
/**
|
||||
* 그룹 삭제
|
||||
**/
|
||||
function deleteGroup($group_srl) {
|
||||
// 멤버모델 객체 생성
|
||||
$oMemberModel = &getModel('member');
|
||||
|
||||
// 삭제 대상 그룹을 가져와서 체크 (is_default == 'Y'일 경우 삭제 불가)
|
||||
$group_info = $oMemberModel->getGroup($group_srl);
|
||||
|
||||
if(!$group_info) return new Object(-1, 'lang->msg_not_founded');
|
||||
if($group_info->is_default == 'Y') return new Object(-1, 'msg_not_delete_default');
|
||||
|
||||
// is_default == 'Y'인 그룹을 가져옴
|
||||
$default_group = $oMemberModel->getDefaultGroup();
|
||||
$default_group_srl = $default_group->group_srl;
|
||||
|
||||
// default_group_srl로 변경
|
||||
$this->changeGroup($group_srl, $default_group_srl);
|
||||
|
||||
$args->group_srl = $group_srl;
|
||||
return executeQuery('member.deleteGroup', $args);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 금지아이디 등록
|
||||
**/
|
||||
function insertDeniedID($user_id, $desription = '') {
|
||||
$args->user_id = $user_id;
|
||||
$args->description = $description;
|
||||
$args->list_order = -1*getNextSequence();
|
||||
|
||||
return executeQuery('member.insertDeniedID', $args);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 금지아이디 삭제
|
||||
**/
|
||||
function deleteDeniedID($user_id) {
|
||||
$args->user_id = $user_id;
|
||||
return executeQuery('member.deleteDeniedID', $args);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 가입폼 항목을 삭제
|
||||
**/
|
||||
function deleteJoinForm($member_join_form_srl) {
|
||||
$args->member_join_form_srl = $member_join_form_srl;
|
||||
$output = executeQuery('member.deleteJoinForm', $args);
|
||||
return $output;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 가입항목을 상단으로 이동
|
||||
**/
|
||||
function moveJoinFormUp($member_join_form_srl) {
|
||||
$oMemberModel = &getModel('member');
|
||||
|
||||
// 선택된 가입항목의 정보를 구한다
|
||||
$args->member_join_form_srl = $member_join_form_srl;
|
||||
$output = executeQuery('member.getJoinForm', $args);
|
||||
|
||||
$join_form = $output->data;
|
||||
$list_order = $join_form->list_order;
|
||||
|
||||
// 전체 가입항목 목록을 구한다
|
||||
$join_form_list = $oMemberModel->getJoinFormList();
|
||||
$join_form_srl_list = array_keys($join_form_list);
|
||||
if(count($join_form_srl_list)<2) return new Object();
|
||||
|
||||
$prev_member_join_form = NULL;
|
||||
foreach($join_form_list as $key => $val) {
|
||||
if($val->member_join_form_srl == $member_join_form_srl) break;
|
||||
$prev_member_join_form = $val;
|
||||
}
|
||||
|
||||
// 이전 가입항목가 없으면 그냥 return
|
||||
if(!$prev_member_join_form) return new Object();
|
||||
|
||||
// 선택한 가입항목의 정보
|
||||
$cur_args->member_join_form_srl = $member_join_form_srl;
|
||||
$cur_args->list_order = $prev_member_join_form->list_order;
|
||||
|
||||
// 대상 가입항목의 정보
|
||||
$prev_args->member_join_form_srl = $prev_member_join_form->member_join_form_srl;
|
||||
$prev_args->list_order = $list_order;
|
||||
|
||||
// DB 처리
|
||||
$output = executeQuery('member.updateMemberJoinFormListorder', $cur_args);
|
||||
if(!$output->toBool()) return $output;
|
||||
|
||||
executeQuery('member.updateMemberJoinFormListorder', $prev_args);
|
||||
if(!$output->toBool()) return $output;
|
||||
|
||||
return new Object();
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 가입항목을 하단으로 이동
|
||||
**/
|
||||
function moveJoinFormDown($member_join_form_srl) {
|
||||
$oMemberModel = &getModel('member');
|
||||
|
||||
// 선택된 가입항목의 정보를 구한다
|
||||
$args->member_join_form_srl = $member_join_form_srl;
|
||||
$output = executeQuery('member.getJoinForm', $args);
|
||||
|
||||
$join_form = $output->data;
|
||||
$list_order = $join_form->list_order;
|
||||
|
||||
// 전체 가입항목 목록을 구한다
|
||||
$join_form_list = $oMemberModel->getJoinFormList();
|
||||
$join_form_srl_list = array_keys($join_form_list);
|
||||
if(count($join_form_srl_list)<2) return new Object();
|
||||
|
||||
for($i=0;$i<count($join_form_srl_list);$i++) {
|
||||
if($join_form_srl_list[$i]==$member_join_form_srl) break;
|
||||
}
|
||||
|
||||
$next_member_join_form_srl = $join_form_srl_list[$i+1];
|
||||
|
||||
// 이전 가입항목가 없으면 그냥 return
|
||||
if(!$next_member_join_form_srl) return new Object();
|
||||
$next_member_join_form = $join_form_list[$next_member_join_form_srl];
|
||||
|
||||
// 선택한 가입항목의 정보
|
||||
$cur_args->member_join_form_srl = $member_join_form_srl;
|
||||
$cur_args->list_order = $next_member_join_form->list_order;
|
||||
|
||||
// 대상 가입항목의 정보
|
||||
$next_args->member_join_form_srl = $next_member_join_form->member_join_form_srl;
|
||||
$next_args->list_order = $list_order;
|
||||
|
||||
// DB 처리
|
||||
$output = executeQuery('member.updateMemberJoinFormListorder', $cur_args);
|
||||
if(!$output->toBool()) return $output;
|
||||
|
||||
$output = executeQuery('member.updateMemberJoinFormListorder', $next_args);
|
||||
if(!$output->toBool()) return $output;
|
||||
|
||||
return new Object();
|
||||
}
|
||||
}
|
||||
?>
|
||||
102
modules/member/member.admin.model.php
Normal file
102
modules/member/member.admin.model.php
Normal file
|
|
@ -0,0 +1,102 @@
|
|||
<?php
|
||||
/**
|
||||
* @class memberAdminModel
|
||||
* @author zero (zero@nzeo.com)
|
||||
* @brief member module의 admin model class
|
||||
**/
|
||||
|
||||
class memberAdminModel extends member {
|
||||
|
||||
/**
|
||||
* @brief 자주 호출될거라 예상되는 데이터는 내부적으로 가지고 있자...
|
||||
**/
|
||||
var $member_info = NULL;
|
||||
var $member_groups = NULL;
|
||||
var $join_form_list = NULL;
|
||||
|
||||
/**
|
||||
* @brief 초기화
|
||||
**/
|
||||
function init() {
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 회원 목록을 구함
|
||||
**/
|
||||
function getMemberList() {
|
||||
// 검색 옵션 정리
|
||||
$args->is_admin = Context::get('is_admin')=='Y'?'Y':'';
|
||||
$args->is_denied = Context::get('is_denied')=='Y'?'Y':'';
|
||||
$args->selected_group_srl = Context::get('selected_group_srl');
|
||||
|
||||
$search_target = trim(Context::get('search_target'));
|
||||
$search_keyword = trim(Context::get('search_keyword'));
|
||||
|
||||
if($search_target && $search_keyword) {
|
||||
switch($search_target) {
|
||||
case 'user_id' :
|
||||
if($search_keyword) $search_keyword = str_replace(' ','%',$search_keyword);
|
||||
$args->s_user_id = $search_keyword;
|
||||
break;
|
||||
case 'user_name' :
|
||||
if($search_keyword) $search_keyword = str_replace(' ','%',$search_keyword);
|
||||
$args->s_user_name = $search_keyword;
|
||||
break;
|
||||
case 'nick_name' :
|
||||
if($search_keyword) $search_keyword = str_replace(' ','%',$search_keyword);
|
||||
$args->s_nick_name = $search_keyword;
|
||||
break;
|
||||
case 'email_address' :
|
||||
if($search_keyword) $search_keyword = str_replace(' ','%',$search_keyword);
|
||||
$args->s_email_address = $search_keyword;
|
||||
break;
|
||||
case 'regdate' :
|
||||
$args->s_regdate = $search_keyword;
|
||||
break;
|
||||
case 'last_login' :
|
||||
$args->s_last_login = $search_keyword;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// selected_group_srl이 있으면 query id를 변경 (table join때문에)
|
||||
if($args->selected_group_srl) {
|
||||
$query_id = 'member.getMemberListWithinGroup';
|
||||
$args->sort_index = "member.member_srl";
|
||||
} else {
|
||||
$query_id = 'member.getMemberList';
|
||||
$args->sort_index = "member_srl";
|
||||
}
|
||||
|
||||
// 기타 변수들 정리
|
||||
$args->page = Context::get('page');
|
||||
$args->list_count = 40;
|
||||
$args->page_count = 10;
|
||||
return executeQuery($query_id, $args);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 회원 모듈의 특정 스킨에 속한 컬러셋 목록을 return
|
||||
**/
|
||||
function getMemberAdminColorset() {
|
||||
$skin = Context::get('skin');
|
||||
if(!$skin) $tpl = "";
|
||||
else {
|
||||
$oModuleModel = &getModel('module');
|
||||
$skin_info = $oModuleModel->loadSkinInfo($this->module_path, $skin);
|
||||
Context::set('skin_info', $skin_info);
|
||||
|
||||
$oModuleModel = &getModel('module');
|
||||
$config = $oModuleModel->getModuleConfig('member');
|
||||
if(!$config->colorset) $config->colorset = "white";
|
||||
Context::set('config', $config);
|
||||
|
||||
$oTemplate = &TemplateHandler::getInstance();
|
||||
$tpl = $oTemplate->compile($this->module_path.'tpl', 'colorset_list');
|
||||
}
|
||||
|
||||
$this->add('tpl', $tpl);
|
||||
}
|
||||
|
||||
}
|
||||
?>
|
||||
200
modules/member/member.admin.view.php
Normal file
200
modules/member/member.admin.view.php
Normal file
|
|
@ -0,0 +1,200 @@
|
|||
<?php
|
||||
/**
|
||||
* @class memberAdminView
|
||||
* @author zero (zero@nzeo.com)
|
||||
* @brief member module의 admin view class
|
||||
**/
|
||||
|
||||
class memberAdminView extends member {
|
||||
|
||||
var $group_list = NULL; ///< 그룹 목록 정보
|
||||
var $member_info = NULL; ///< 선택된 사용자의 정보
|
||||
|
||||
/**
|
||||
* @brief 초기화
|
||||
**/
|
||||
function init() {
|
||||
// 멤버모델 객체 생성
|
||||
$oMemberModel = &getModel('member');
|
||||
|
||||
// member_srl이 있으면 미리 체크하여 member_info 세팅
|
||||
$member_srl = Context::get('member_srl');
|
||||
if($member_srl) {
|
||||
$this->member_info = $oMemberModel->getMemberInfoByMemberSrl($member_srl);
|
||||
if(!$this->member_info) Context::set('member_srl','');
|
||||
else Context::set('member_info',$this->member_info);
|
||||
}
|
||||
|
||||
// group 목록 가져오기
|
||||
$this->group_list = $oMemberModel->getGroups();
|
||||
Context::set('group_list', $this->group_list);
|
||||
|
||||
// template path 지정
|
||||
$this->setTemplatePath($this->module_path.'tpl');
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 회원 목록 출력
|
||||
**/
|
||||
function dispMemberAdminList() {
|
||||
|
||||
// member model 객체 생성후 목록을 구해옴
|
||||
$oMemberModel = &getAdminModel('member');
|
||||
$output = $oMemberModel->getMemberList();
|
||||
|
||||
// 템플릿에 쓰기 위해서 context::set
|
||||
Context::set('total_count', $output->total_count);
|
||||
Context::set('total_page', $output->total_page);
|
||||
Context::set('page', $output->page);
|
||||
Context::set('member_list', $output->data);
|
||||
Context::set('page_navigation', $output->page_navigation);
|
||||
|
||||
// 템플릿 파일 지정
|
||||
$this->setTemplateFile('member_list');
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 회원 관리에 필요한 기본 설정들
|
||||
**/
|
||||
function dispMemberAdminConfig() {
|
||||
// 설정 정보를 받아옴 (module model 객체를 이용)
|
||||
$oModuleModel = &getModel('module');
|
||||
$config = $oModuleModel->getModuleConfig('member');
|
||||
if(!$config->image_name_max_width) $config->image_name_max_width = 90;
|
||||
if(!$config->image_name_max_height) $config->image_name_max_height = 20;
|
||||
if(!$config->image_mark_max_width) $config->image_mark_max_width = 20;
|
||||
if(!$config->image_mark_max_height) $config->image_mark_max_height = 20;
|
||||
if(!$config->skin) $config->skin = "default";
|
||||
Context::set('config',$config);
|
||||
|
||||
// 회원 관리 모듈의 스킨 목록을 구함
|
||||
$skin_list = $oModuleModel->getSkins($this->module_path);
|
||||
Context::set('skin_list', $skin_list);
|
||||
|
||||
// 에디터를 받음
|
||||
$oEditorModel = &getModel('editor');
|
||||
$option->allow_fileupload = false;
|
||||
$option->enable_autosave = false;
|
||||
$option->enable_default_component = true;
|
||||
$option->enable_component = true;
|
||||
$option->resizable = true;
|
||||
$option->height = 300;
|
||||
$editor = $oEditorModel->getEditor(0, $option);
|
||||
Context::set('editor', $editor);
|
||||
|
||||
// 템플릿 파일 지정
|
||||
$this->setTemplateFile('member_config');
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 회원 정보 출력
|
||||
**/
|
||||
function dispMemberAdminInfo() {
|
||||
// 추가 가입폼 목록을 받음
|
||||
$oMemberModel = &getModel('member');
|
||||
Context::set('extend_form_list', $oMemberModel->getCombineJoinForm($this->member_info));
|
||||
|
||||
$this->setTemplateFile('member_info');
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 회원 정보 입력 화면 출력
|
||||
**/
|
||||
function dispMemberAdminInsert() {
|
||||
// 추가 가입폼 목록을 받음
|
||||
$oMemberModel = &getModel('member');
|
||||
Context::set('extend_form_list', $oMemberModel->getCombineJoinForm($this->member_info));
|
||||
|
||||
$member_info = Context::get('member_info');
|
||||
$member_info->signature = $oMemberModel->getSignature($this->member_info->member_srl);
|
||||
Context::set('member_info', $member_info);
|
||||
|
||||
// 에디터 모듈의 getEditor를 호출하여 서명용으로 세팅
|
||||
if($this->member_info->member_srl) {
|
||||
$oEditorModel = &getModel('editor');
|
||||
$option->allow_fileupload = false;
|
||||
$option->enable_autosave = false;
|
||||
$option->enable_default_component = true;
|
||||
$option->enable_component = true;
|
||||
$option->resizable = false;
|
||||
$option->height = 200;
|
||||
$editor = $oEditorModel->getEditor($this->member_info->member_srl, $option);
|
||||
Context::set('editor', $editor);
|
||||
}
|
||||
|
||||
// 템플릿 파일 지정
|
||||
$this->setTemplateFile('insert_member');
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 회원 삭제 화면 출력
|
||||
**/
|
||||
function dispMemberAdminDeleteForm() {
|
||||
if(!Context::get('member_srl')) return $this->dispContent();
|
||||
$this->setTemplateFile('delete_form');
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 그룹 목록 출력
|
||||
**/
|
||||
function dispMemberAdminGroupList() {
|
||||
$group_srl = Context::get('group_srl');
|
||||
|
||||
if($group_srl && $this->group_list[$group_srl]) {
|
||||
Context::set('selected_group', $this->group_list[$group_srl]);
|
||||
$this->setTemplateFile('group_update_form');
|
||||
} else {
|
||||
$this->setTemplateFile('group_list');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 회원 가입 폼 목록 출력
|
||||
**/
|
||||
function dispMemberAdminJoinFormList() {
|
||||
// 멤버모델 객체 생성
|
||||
$oMemberModel = &getModel('member');
|
||||
|
||||
// 추가로 설정한 가입 항목 가져오기
|
||||
$form_list = $oMemberModel->getJoinFormList();
|
||||
Context::set('form_list', $form_list);
|
||||
|
||||
$this->setTemplateFile('join_form_list');
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 회원 가입 폼 관리 화면 출력
|
||||
**/
|
||||
function dispMemberAdminInsertJoinForm() {
|
||||
// 수정일 경우 대상 join_form의 값을 구함
|
||||
$member_join_form_srl = Context::get('member_join_form_srl');
|
||||
if($member_join_form_srl) {
|
||||
$oMemberModel = &getModel('member');
|
||||
$join_form = $oMemberModel->getJoinForm($member_join_form_srl);
|
||||
if(!$join_form) Context::set('member_join_form_srl','',true);
|
||||
else Context::set('join_form', $join_form);
|
||||
}
|
||||
$this->setTemplateFile('insert_join_form');
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 금지 목록 아이디 출력
|
||||
**/
|
||||
function dispMemberAdminDeniedIDList() {
|
||||
// 멤버모델 객체 생성
|
||||
$oMemberModel = &getModel('member');
|
||||
|
||||
// 사용금지 목록 가져오기
|
||||
$output = $oMemberModel->getDeniedIDList();
|
||||
|
||||
Context::set('total_count', $output->total_count);
|
||||
Context::set('total_page', $output->total_page);
|
||||
Context::set('page', $output->page);
|
||||
Context::set('member_list', $output->data);
|
||||
Context::set('page_navigation', $output->page_navigation);
|
||||
|
||||
$this->setTemplateFile('denied_id_list');
|
||||
}
|
||||
|
||||
}
|
||||
?>
|
||||
152
modules/member/member.class.php
Normal file
152
modules/member/member.class.php
Normal file
|
|
@ -0,0 +1,152 @@
|
|||
<?php
|
||||
/**
|
||||
* @class member
|
||||
* @author zero (zero@nzeo.com)
|
||||
* @brief member module의 high class
|
||||
**/
|
||||
|
||||
class member extends ModuleObject {
|
||||
|
||||
/**
|
||||
* @brief 설치시 추가 작업이 필요할시 구현
|
||||
**/
|
||||
function moduleInstall() {
|
||||
// action forward에 등록 (관리자 모드에서 사용하기 위함)
|
||||
$oModuleController = &getController('module');
|
||||
$oModuleController->insertActionForward('member', 'view', 'dispMemberInfo');
|
||||
$oModuleController->insertActionForward('member', 'view', 'dispMemberSignUpForm');
|
||||
$oModuleController->insertActionForward('member', 'view', 'dispMemberModifyInfo');
|
||||
$oModuleController->insertActionForward('member', 'view', 'dispMemberModifyPassword');
|
||||
$oModuleController->insertActionForward('member', 'view', 'dispMemberLeave');
|
||||
$oModuleController->insertActionForward('member', 'view', 'dispMemberLoginForm');
|
||||
$oModuleController->insertActionForward('member', 'view', 'dispMemberLogout');
|
||||
$oModuleController->insertActionForward('member', 'view', 'dispMemberOwnDocument');
|
||||
$oModuleController->insertActionForward('member', 'view', 'dispMemberScrappedDocument');
|
||||
|
||||
$oModuleController->insertActionForward('member', 'view', 'dispMemberMessages');
|
||||
$oModuleController->insertActionForward('member', 'view', 'dispMemberSendMessage');
|
||||
$oModuleController->insertActionForward('member', 'view', 'dispMemberNewMessage');
|
||||
|
||||
$oModuleController->insertActionForward('member', 'view', 'dispMemberFriend');
|
||||
$oModuleController->insertActionForward('member', 'view', 'dispMemberAddFriend');
|
||||
$oModuleController->insertActionForward('member', 'view', 'dispMemberAddFriendGroup');
|
||||
|
||||
$oModuleController->insertActionForward('member', 'view', 'dispMemberAdminList');
|
||||
$oModuleController->insertActionForward('member', 'view', 'dispMemberAdminConfig');
|
||||
$oModuleController->insertActionForward('member', 'view', 'dispMemberAdminInsert');
|
||||
$oModuleController->insertActionForward('member', 'view', 'dispMemberAdminDeleteForm');
|
||||
$oModuleController->insertActionForward('member', 'view', 'dispMemberAdminGroupList');
|
||||
$oModuleController->insertActionForward('member', 'view', 'dispMemberAdminJoinFormList');
|
||||
$oModuleController->insertActionForward('member', 'view', 'dispMemberAdminInfo');
|
||||
$oModuleController->insertActionForward('member', 'view', 'dispMemberAdminInsertJoinForm');
|
||||
$oModuleController->insertActionForward('member', 'view', 'dispMemberAdminDeniedIDList');
|
||||
|
||||
$oModuleController->insertActionForward('member', 'controller', 'procMemberInsertImageName');
|
||||
$oModuleController->insertActionForward('member', 'controller', 'procMemberInsertImageMark');
|
||||
$oModuleController->insertActionForward('member', 'controller', 'procMemberDeleteImageName');
|
||||
$oModuleController->insertActionForward('member', 'controller', 'procMemberDeleteImageMark');
|
||||
|
||||
// 기본 정보를 세팅
|
||||
$args->enable_join = 'Y';
|
||||
$args->enable_openid = 'N';
|
||||
$args->image_name = 'Y';
|
||||
$args->image_mark = 'Y';
|
||||
$args->image_name_max_width = '90';
|
||||
$args->image_name_max_height = '20';
|
||||
$args->image_mark_max_width = '20';
|
||||
$args->image_mark_max_width = '20';
|
||||
$oModuleController->insertModuleConfig('member',$args);
|
||||
|
||||
// 멤버 컨트롤러 객체 생성
|
||||
$oMemberController = &getController('member');
|
||||
$oMemberAdminController = &getAdminController('member');
|
||||
|
||||
// 관리자, 정회원, 준회원 그룹을 입력
|
||||
$group_args->title = Context::getLang('admin_group');
|
||||
$group_args->is_default = 'N';
|
||||
$group_args->is_admin = 'Y';
|
||||
$output = $oMemberAdminController->insertGroup($group_args);
|
||||
|
||||
unset($group_args);
|
||||
$group_args->title = Context::getLang('default_group_1');
|
||||
$group_args->is_default = 'Y';
|
||||
$group_args->is_admin = 'N';
|
||||
$output = $oMemberAdminController->insertGroup($group_args);
|
||||
|
||||
unset($group_args);
|
||||
$group_args->title = Context::getLang('default_group_2');
|
||||
$group_args->is_default = 'N';
|
||||
$group_args->is_admin = 'N';
|
||||
$oMemberAdminController->insertGroup($group_args);
|
||||
|
||||
// 관리자 정보 세팅
|
||||
$admin_info = Context::gets('user_id','password','nick_name','user_name', 'email_address');
|
||||
if($admin_info->user_id) {
|
||||
// 관리자 정보 입력
|
||||
$oMemberAdminController->insertAdmin($admin_info);
|
||||
|
||||
// 로그인 처리시킴
|
||||
$output = $oMemberController->doLogin($admin_info->user_id);
|
||||
}
|
||||
|
||||
// 금지 아이디 등록 (기본 + 모듈명)
|
||||
$oModuleModel = &getModel('module');
|
||||
$module_list = $oModuleModel->getModuleList();
|
||||
foreach($module_list as $key => $val) {
|
||||
$oMemberAdminController->insertDeniedID($val->module,'');
|
||||
}
|
||||
$oMemberAdminController->insertDeniedID('www','');
|
||||
$oMemberAdminController->insertDeniedID('root','');
|
||||
$oMemberAdminController->insertDeniedID('administrator','');
|
||||
$oMemberAdminController->insertDeniedID('telnet','');
|
||||
$oMemberAdminController->insertDeniedID('ftp','');
|
||||
$oMemberAdminController->insertDeniedID('http','');
|
||||
|
||||
// member 에서 사용할 cache디렉토리 생성
|
||||
FileHandler::makeDir('./files/member_extra_info/image_name');
|
||||
FileHandler::makeDir('./files/member_extra_info/image_mark');
|
||||
FileHandler::makeDir('./files/member_extra_info/signature');
|
||||
FileHandler::makeDir('./files/member_extra_info/new_message_flags');
|
||||
|
||||
return new Object();
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 설치가 이상이 없는지 체크하는 method
|
||||
**/
|
||||
function checkUpdate() {
|
||||
$oModuleModel = &getModel('module');
|
||||
|
||||
// dispMemberOwnDocument act의 여부 체크 (2007. 7. 24 추가)
|
||||
$act = $oModuleModel->getActionForward('dispMemberOwnDocument');
|
||||
if(!$act) return true;
|
||||
|
||||
// dispMemberScrappedDocument act의 여부 체크 (2007. 7. 25 추가)
|
||||
$act = $oModuleModel->getActionForward('dispMemberScrappedDocument');
|
||||
if(!$act) return true;
|
||||
|
||||
// member 디렉토리 체크 (2007. 8. 11 추가)
|
||||
if(!is_dir("./files/member_extra_info")) return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 업데이트 실행
|
||||
**/
|
||||
function moduleUpdate() {
|
||||
// act 추가
|
||||
$oModuleController = &getController('module');
|
||||
$oModuleController->insertActionForward('member', 'view', 'dispMemberOwnDocument');
|
||||
$oModuleController->insertActionForward('member', 'view', 'dispMemberScrappedDocument');
|
||||
|
||||
// member 디렉토리 체크
|
||||
FileHandler::makeDir('./files/member_extra_info/image_name');
|
||||
FileHandler::makeDir('./files/member_extra_info/image_mark');
|
||||
FileHandler::makeDir('./files/member_extra_info/signature');
|
||||
FileHandler::makeDir('./files/member_extra_info/new_message_flags');
|
||||
|
||||
return new Object(0, 'success_updated');
|
||||
}
|
||||
}
|
||||
?>
|
||||
1254
modules/member/member.controller.php
Normal file
1254
modules/member/member.controller.php
Normal file
File diff suppressed because it is too large
Load diff
600
modules/member/member.model.php
Normal file
600
modules/member/member.model.php
Normal file
|
|
@ -0,0 +1,600 @@
|
|||
<?php
|
||||
/**
|
||||
* @class memberModel
|
||||
* @author zero (zero@nzeo.com)
|
||||
* @brief member module의 Model class
|
||||
**/
|
||||
|
||||
class memberModel extends member {
|
||||
|
||||
/**
|
||||
* @brief 자주 호출될거라 예상되는 데이터는 내부적으로 가지고 있자...
|
||||
**/
|
||||
var $member_groups = NULL;
|
||||
var $join_form_list = NULL;
|
||||
|
||||
/**
|
||||
* @brief 초기화
|
||||
**/
|
||||
function init() {
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 선택된 회원의 간단한 메뉴를 표시
|
||||
**/
|
||||
function getMemberMenu() {
|
||||
// 요청된 회원 번호와 현재 사용자의 로그인 정보 구함
|
||||
$member_srl = Context::get('member_srl');
|
||||
$mid = Context::get('cur_mid');
|
||||
$logged_info = Context::get('logged_info');
|
||||
$act = Context::get('cur_act');
|
||||
|
||||
// 자신의 아이디를 클릭한 경우
|
||||
if($member_srl == $logged_info->member_srl) {
|
||||
$member_info = $logged_info;
|
||||
|
||||
// 다른 사람의 아이디를 클릭한 경우
|
||||
} else {
|
||||
// 회원의 정보를 구함
|
||||
$member_info = $this->getMemberInfoByMemberSrl($member_srl);
|
||||
}
|
||||
$member_srl = $member_info->member_srl;
|
||||
|
||||
// 변수 정리
|
||||
$user_id = $member_info->user_id;
|
||||
$user_name = $member_info->user_name;
|
||||
$email_address = $member_info->email_address;
|
||||
|
||||
// menu_list 에 "표시할글,target,url" 을 배열로 넣는다
|
||||
$menu_list = array();
|
||||
|
||||
// 최고 관리자라면 회원정보 수정 메뉴 만듬
|
||||
if($logged_info->is_admin == 'Y') {
|
||||
$menu_str = Context::getLang('cmd_management');
|
||||
$menu_link = sprintf("%s?module=admin&act=dispMemberAdminInsert&member_srl=%s",Context::getRequestUri(),$member_srl);
|
||||
$menu_list[] = sprintf("\n%s,%s,winopen('%s','MemberModifyInfo')", Context::getRequestUri().'/modules/member/tpl/images/icon_management.gif',$menu_str, $menu_link);
|
||||
}
|
||||
|
||||
// 회원 정보 보기
|
||||
$menu_str = Context::getLang('cmd_view_member_info');
|
||||
$menu_url = sprintf('./?mid=%s&act=dispMemberInfo&member_srl=%s', $mid, $member_srl);
|
||||
$menu_list[] = sprintf('%s,%s,move_url(\'%s\')', Context::getRequestUri().'/modules/member/tpl/images/icon_view_info.gif', $menu_str, $menu_url);
|
||||
|
||||
// 게시판이나 블로그등일 경우는 특별 옵션 지정
|
||||
if($mid && !ereg('Member', $act)) {
|
||||
// 아이디로 검색
|
||||
$menu_str = Context::getLang('cmd_view_own_document');
|
||||
$menu_url = sprintf('./?mid=%s&search_target=user_id&search_keyword=%s', $mid, $user_id);
|
||||
$menu_list[] = sprintf('%s,%s,move_url(\'%s\')', Context::getRequestUri().'/modules/member/tpl/images/icon_view_written.gif',$menu_str, $menu_url);
|
||||
}
|
||||
|
||||
// 다른 사람의 아이디를 클릭한 경우
|
||||
if($member_srl != $logged_info->member_srl) {
|
||||
|
||||
// 메일 보내기
|
||||
$menu_str = Context::getLang('cmd_send_email');
|
||||
//$menu_url = sprintf('%s <%s>', $email_address, $user_name);
|
||||
$menu_url = sprintf('%s', $email_address);
|
||||
$menu_list[] = sprintf('%s,%s,sendMailTo(\'%s\')', Context::getRequestUri().'/modules/member/tpl/images/icon_sendmail.gif', $menu_str, $menu_url);
|
||||
}
|
||||
|
||||
// 홈페이지 보기
|
||||
if($member_info->homepage) $menu_list[] = sprintf("%s,%s,winopen('%s')", Context::getRequestUri().'/modules/member/tpl/images/icon_homepage.gif',Context::getLang('homepage'), $member_info->homepage);
|
||||
|
||||
// 블로그 보기
|
||||
if($member_info->blog) $menu_list[] = sprintf("%s,%s,winopen('%s')", Context::getRequestUri().'/modules/member/tpl/images/icon_blog.gif', Context::getLang('blog'), $member_info->blog);
|
||||
|
||||
// 정보를 저장
|
||||
$this->add("menu_list", implode("\n",$menu_list));
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 로그인 되어 있는지에 대한 체크
|
||||
**/
|
||||
function isLogged() {
|
||||
if($_SESSION['is_logged']&&$_SESSION['ipaddress']==$_SERVER['REMOTE_ADDR']) return true;
|
||||
|
||||
$_SESSION['is_logged'] = false;
|
||||
$_SESSION['logged_info'] = '';
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 인증된 사용자의 정보 return
|
||||
**/
|
||||
function getLoggedInfo() {
|
||||
// 로그인 되어 있고 세션 정보를 요청하면 세션 정보를 return
|
||||
if($this->isLogged()) return $_SESSION['logged_info'];
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief user_id에 해당하는 사용자 정보 return
|
||||
**/
|
||||
function getMemberInfoByUserID($user_id) {
|
||||
if(!$user_id) return;
|
||||
|
||||
$args->user_id = $user_id;
|
||||
$output = executeQuery('member.getMemberInfo', $args);
|
||||
if(!$output) return $output;
|
||||
|
||||
$member_info = $this->arrangeMemberInfo($output->data);
|
||||
$member_info->group_list = $this->getMemberGroups($member_info->member_srl);
|
||||
return $member_info;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief member_srl로 사용자 정보 return
|
||||
**/
|
||||
function getMemberInfoByMemberSrl($member_srl) {
|
||||
if(!$member_srl) return;
|
||||
$args->member_srl = $member_srl;
|
||||
$output = executeQuery('member.getMemberInfoByMemberSrl', $args);
|
||||
if(!$output) return $output;
|
||||
|
||||
$member_info = $this->arrangeMemberInfo($output->data);
|
||||
$member_info->group_list = $this->getMemberGroups($member_info->member_srl);
|
||||
return $member_info;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 사용자 정보 중 extra_vars와 기타 정보를 알맞게 편집
|
||||
**/
|
||||
function arrangeMemberInfo($info) {
|
||||
$info->image_name = $this->getImageName($info->member_srl);
|
||||
$info->image_mark = $this->getImageMark($info->member_srl);
|
||||
|
||||
$extra_vars = unserialize($info->extra_vars);
|
||||
unset($info->extra_vars);
|
||||
if(!$extra_vars) return $info;
|
||||
foreach($extra_vars as $key => $val) {
|
||||
if(eregi('\|\@\|', $val)) $val = explode('|@|', $val);
|
||||
if(!$info->{$key}) $info->{$key} = $val;
|
||||
}
|
||||
return $info;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief userid에 해당하는 member_srl을 구함
|
||||
**/
|
||||
function getMemberSrlByUserID($user_id) {
|
||||
$args->user_id = $user_id;
|
||||
$output = executeQuery('member.getMemberSrl', $args);
|
||||
return $output->data->member_srl;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief userid에 해당하는 member_srl을 구함
|
||||
**/
|
||||
function getMemberSrlByEmailAddress($email_address) {
|
||||
$args->email_address = $email_address;
|
||||
$output = executeQuery('member.getMemberSrl', $args);
|
||||
return $output->data->member_srl;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief userid에 해당하는 member_srl을 구함
|
||||
**/
|
||||
function getMemberSrlByNickName($nick_name) {
|
||||
$args->nick_name = $nick_name;
|
||||
$output = executeQuery('member.getMemberSrl', $args);
|
||||
return $output->data->member_srl;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 현재 접속자의 member_srl을 return
|
||||
**/
|
||||
function getLoggedMemberSrl() {
|
||||
if(!$this->isLogged()) return;
|
||||
return $_SESSION['member_srl'];
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 현재 접속자의 user_id을 return
|
||||
**/
|
||||
function getLoggedUserID() {
|
||||
if(!$this->isLogged()) return;
|
||||
$logged_info = $_SESSION['logged_info'];
|
||||
return $logged_info->user_id;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief member_srl이 속한 group 목록을 가져옴
|
||||
**/
|
||||
function getMemberGroups($member_srl) {
|
||||
if(!$this->member_groups[$member_srl]) {
|
||||
$args->member_srl = $member_srl;
|
||||
$output = executeQuery('member.getMemberGroups', $args);
|
||||
if(!$output->data) return array();
|
||||
|
||||
$group_list = $output->data;
|
||||
if(!is_array($group_list)) $group_list = array($group_list);
|
||||
|
||||
foreach($group_list as $group) {
|
||||
$result[$group->group_srl] = $group->title;
|
||||
}
|
||||
$this->member_groups[$member_srl] = $result;
|
||||
}
|
||||
return $this->member_groups[$member_srl];
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 기본 그룹을 가져옴
|
||||
**/
|
||||
function getDefaultGroup() {
|
||||
$output = executeQuery('member.getDefaultGroup');
|
||||
return $output->data;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 관리자 그룹을 가져옴
|
||||
**/
|
||||
function getAdminGroup() {
|
||||
$output = executeQuery('member.getAdminGroup');
|
||||
return $output->data;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief group_srl에 해당하는 그룹 정보 가져옴
|
||||
**/
|
||||
function getGroup($group_srl) {
|
||||
$args->group_srl = $group_srl;
|
||||
$output = executeQuery('member.getGroup', $args);
|
||||
return $output->data;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 그룹 목록을 가져옴
|
||||
**/
|
||||
function getGroups() {
|
||||
$output = executeQuery('member.getGroups');
|
||||
if(!$output->data) return;
|
||||
|
||||
$group_list = $output->data;
|
||||
if(!is_array($group_list)) $group_list = array($group_list);
|
||||
|
||||
foreach($group_list as $val) {
|
||||
$result[$val->group_srl] = $val;
|
||||
}
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 회원 가입폼 추가 확장 목록 가져오기
|
||||
*
|
||||
* 이 메소드는 modules/member/tpl/filter/insert.xml 의 extend_filter로 동작을 한다.
|
||||
* extend_filter로 사용을 하기 위해서는 인자값으로 boolean값을 받도록 규정한다.
|
||||
* 이 인자값이 true일 경우 filter 타입에 맞는 형태의 object로 결과를 return하여야 한다.
|
||||
**/
|
||||
function getJoinFormList($filter_response = false) {
|
||||
global $lang;
|
||||
|
||||
if(!$this->join_form_list) {
|
||||
// list_order 컬럼의 정렬을 위한 인자 세팅
|
||||
$args->sort_index = "list_order";
|
||||
$output = executeQuery('member.getJoinFormList', $args);
|
||||
|
||||
// 결과 데이터가 없으면 NULL return
|
||||
$join_form_list = $output->data;
|
||||
if(!$join_form_list) return NULL;
|
||||
|
||||
// default_value의 경우 DB에 array가 serialize되어 입력되므로 unserialize가 필요
|
||||
if(!is_array($join_form_list)) $join_form_list = array($join_form_list);
|
||||
$join_form_count = count($join_form_list);
|
||||
for($i=0;$i<$join_form_count;$i++) {
|
||||
$member_join_form_srl = $join_form_list[$i]->member_join_form_srl;
|
||||
$column_type = $join_form_list[$i]->column_type;
|
||||
$column_name = $join_form_list[$i]->column_name;
|
||||
$column_title = $join_form_list[$i]->column_title;
|
||||
$default_value = $join_form_list[$i]->default_value;
|
||||
|
||||
// 언어변수에 추가
|
||||
$lang->extend_vars[$column_name] = $column_title;
|
||||
|
||||
// checkbox, select등 다수 데이터 형식일 경우 unserialize해줌
|
||||
if(in_array($column_type, array('checkbox','select'))) {
|
||||
$join_form_list[$i]->default_value = unserialize($default_value);
|
||||
if(!$join_form_list[$i]->default_value[0]) $join_form_list[$i]->default_value = '';
|
||||
} else {
|
||||
$join_form_list[$i]->default_value = '';
|
||||
}
|
||||
|
||||
$list[$member_join_form_srl] = $join_form_list[$i];
|
||||
}
|
||||
$this->join_form_list = $list;
|
||||
}
|
||||
|
||||
// filter_response가 true일 경우 object 스타일을 구함
|
||||
if($filter_response && count($this->join_form_list)) {
|
||||
|
||||
foreach($this->join_form_list as $key => $val) {
|
||||
if($val->is_active != 'Y') continue;
|
||||
unset($obj);
|
||||
$obj->type = $val->column_type;
|
||||
$obj->name = $val->column_name;
|
||||
$obj->lang = $val->column_title;
|
||||
$obj->required = $val->required=='Y'?true:false;
|
||||
$filter_output[] = $obj;
|
||||
}
|
||||
return $filter_output;
|
||||
|
||||
}
|
||||
|
||||
// 결과 리턴
|
||||
return $this->join_form_list;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 추가 회원가입폼과 특정 회원의 정보를 조합 (회원정보 수정등에 사용)
|
||||
**/
|
||||
function getCombineJoinForm($member_info) {
|
||||
$extend_form_list = $this->getJoinFormlist();
|
||||
if(!$extend_form_list) return;
|
||||
|
||||
foreach($extend_form_list as $srl => $item) {
|
||||
$column_name = $item->column_name;
|
||||
$value = $member_info->{$column_name};
|
||||
|
||||
// 추가 확장폼의 종류에 따라 값을 변경
|
||||
switch($item->column_type) {
|
||||
case 'checkbox' :
|
||||
if($value && !is_array($value)) $value = array($value);
|
||||
break;
|
||||
case 'text' :
|
||||
case 'homepage' :
|
||||
case 'email_address' :
|
||||
case 'tel' :
|
||||
case 'textarea' :
|
||||
case 'select' :
|
||||
case 'kr_zip' :
|
||||
break;
|
||||
}
|
||||
|
||||
$extend_form_list[$srl]->value = $value;
|
||||
}
|
||||
return $extend_form_list;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 한개의 가입항목을 가져옴
|
||||
**/
|
||||
function getJoinForm($member_join_form_srl) {
|
||||
$args->member_join_form_srl = $member_join_form_srl;
|
||||
$output = executeQuery('member.getJoinForm', $args);
|
||||
$join_form = $output->data;
|
||||
if(!$join_form) return NULL;
|
||||
|
||||
$column_type = $join_form->column_type;
|
||||
$default_value = $join_form->default_value;
|
||||
|
||||
if(in_array($column_type, array('checkbox','select'))) {
|
||||
$join_form->default_value = unserialize($default_value);
|
||||
} else {
|
||||
$join_form->default_value = '';
|
||||
}
|
||||
|
||||
return $join_form;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 금지 아이디 목록 가져오기
|
||||
**/
|
||||
function getDeniedIDList() {
|
||||
if(!$this->denied_id_list) {
|
||||
$args->sort_index = "list_order";
|
||||
$args->page = Context::get('page');
|
||||
$args->list_count = 40;
|
||||
$args->page_count = 10;
|
||||
|
||||
$output = executeQuery('member.getDeniedIDList', $args);
|
||||
$this->denied_id_list = $output;
|
||||
}
|
||||
return $this->denied_id_list;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 금지 아이디인지 확인
|
||||
**/
|
||||
function isDeniedID($user_id) {
|
||||
$args->user_id = $user_id;
|
||||
$output = executeQuery('member.chkDeniedID', $args);
|
||||
if($output->data->count) return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 이미지이름의 정보를 구함
|
||||
**/
|
||||
function getImageName($member_srl) {
|
||||
$image_name_file = sprintf('files/member_extra_info/image_name/%s%d.gif', getNumberingPath($member_srl), $member_srl);
|
||||
if(!file_exists($image_name_file)) return;
|
||||
list($width, $height, $type, $attrs) = getimagesize($image_name_file);
|
||||
$info->width = $width;
|
||||
$info->height = $height;
|
||||
$info->src = Context::getRequestUri().$image_name_file;
|
||||
$info->file = './'.$image_name_file;
|
||||
return $info;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 이미지마크의 정보를 구함
|
||||
**/
|
||||
function getImageMark($member_srl) {
|
||||
$image_mark_file = sprintf('files/member_extra_info/image_mark/%s%d.gif', getNumberingPath($member_srl), $member_srl);
|
||||
if(!file_exists($image_mark_file)) return;
|
||||
list($width, $height, $type, $attrs) = getimagesize($image_mark_file);
|
||||
$info->width = $width;
|
||||
$info->height = $height;
|
||||
$info->src = Context::getRequestUri().$image_mark_file;
|
||||
$info->file = './'.$image_mark_file;
|
||||
return $info;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 사용자의 signature를 구함
|
||||
**/
|
||||
function getSignature($member_srl) {
|
||||
$filename = sprintf('files/member_extra_info/signature/%s%d.signature.php', getNumberingPath($member_srl), $member_srl);
|
||||
if(!file_exists($filename)) return '';
|
||||
|
||||
$buff = FileHandler::readFile($filename);
|
||||
$signature = trim(substr($buff, 40));
|
||||
return $signature;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 쪽지 내용을 가져옴
|
||||
**/
|
||||
function getSelectedMessage($message_srl) {
|
||||
$logged_info = Context::get('logged_info');
|
||||
|
||||
$args->message_srl = $message_srl;
|
||||
$output = executeQuery('member.getMessage',$args);
|
||||
$message = $output->data;
|
||||
if(!$message) return ;
|
||||
|
||||
// 보낸 쪽지일 경우 받는 사람 정보를 구함
|
||||
if($message->sender_srl == $logged_info->member_srl && $message->message_type == 'S') $member_info = $this->getMemberInfoByMemberSrl($message->receiver_srl);
|
||||
|
||||
// 보관/받은 쪽지일 경우 보낸 사람 정보를 구함
|
||||
else $member_info = $this->getMemberInfoByMemberSrl($message->sender_srl);
|
||||
|
||||
if($member_info) {
|
||||
foreach($member_info as $key => $val) $message->{$key} = $val;
|
||||
}
|
||||
|
||||
// 받은 쪽지이고 아직 읽지 않았을 경우 읽은 상태로 변경
|
||||
if($message->message_type == 'R' && $message->readed != 'Y') {
|
||||
$oMemberController = &getController('member');
|
||||
$oMemberController->setMessageReaded($message_srl);
|
||||
}
|
||||
|
||||
|
||||
return $message;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 새 쪽지를 가져옴
|
||||
**/
|
||||
function getNewMessage() {
|
||||
$logged_info = Context::get('logged_info');
|
||||
$args->receiver_srl = $logged_info->member_srl;
|
||||
$args->readed = 'N';
|
||||
|
||||
$output = executeQuery('member.getNewMessage', $args);
|
||||
if(!count($output->data)) return;
|
||||
$message = array_pop($output->data);
|
||||
|
||||
$oMemberController = &getController('member');
|
||||
$oMemberController->setMessageReaded($message->message_srl);
|
||||
|
||||
return $message;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 쪽지 목록 가져오기
|
||||
* type = R : 받은 쪽지
|
||||
* type = S : 보낸 쪽지
|
||||
* type = T : 보관함
|
||||
**/
|
||||
function getMessages($message_type = "R") {
|
||||
$logged_info = Context::get('logged_info');
|
||||
|
||||
switch($message_type) {
|
||||
case 'R' :
|
||||
$args->member_srl = $logged_info->member_srl;
|
||||
$args->message_type = 'R';
|
||||
$query_id = 'member.getReceivedMessages';
|
||||
break;
|
||||
case 'T' :
|
||||
$args->member_srl = $logged_info->member_srl;
|
||||
$args->message_type = 'T';
|
||||
$query_id = 'member.getStoredMessages';
|
||||
break;
|
||||
default :
|
||||
$args->member_srl = $logged_info->member_srl;
|
||||
$args->message_type = 'S';
|
||||
$query_id = 'member.getSendedMessages';
|
||||
break;
|
||||
|
||||
}
|
||||
|
||||
// 기타 변수들 정리
|
||||
$args->sort_index = 'message.list_order';
|
||||
$args->page = Context::get('page');
|
||||
$args->list_count = 20;
|
||||
$args->page_count = 10;
|
||||
return executeQuery($query_id, $args);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 친구 목록 가져오기
|
||||
**/
|
||||
function getFriends($friend_group_srl = 0) {
|
||||
$logged_info = Context::get('logged_info');
|
||||
|
||||
$args->friend_group_srl = $friend_group_srl;
|
||||
$args->member_srl = $logged_info->member_srl;
|
||||
|
||||
// 기타 변수들 정리
|
||||
$args->page = Context::get('page');
|
||||
$args->sort_index = 'friend.list_order';
|
||||
$args->list_count = 10;
|
||||
$args->page_count = 10;
|
||||
return executeQuery('member.getFriends', $args);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 이미 친구로 등록되었는지 검사
|
||||
**/
|
||||
function isAddedFriend($member_srl) {
|
||||
$logged_info = Context::get('logged_info');
|
||||
|
||||
$args->member_srl = $logged_info->member_srl;
|
||||
$args->target_srl = $member_srl;
|
||||
$output = executeQuery('member.isAddedFriend', $args);
|
||||
return $output->data->count;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 특정 친구 그룹 가져오기
|
||||
**/
|
||||
function getFriendGroupInfo($friend_group_srl) {
|
||||
$logged_info = Context::get('logged_info');
|
||||
|
||||
$args->member_srl = $logged_info->member_srl;
|
||||
$args->friend_group_srl = $friend_group_srl;
|
||||
|
||||
$output = executeQuery('member.getFriendGroup', $args);
|
||||
return $output->data;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 그룹 목록 가져오기
|
||||
**/
|
||||
function getFriendGroups() {
|
||||
$logged_info = Context::get('logged_info');
|
||||
$args->member_srl = $logged_info->member_srl;
|
||||
|
||||
$output = executeQuery('member.getFriendGroups', $args);
|
||||
$group_list = $output->data;
|
||||
if(!$group_list) return;
|
||||
|
||||
if(!is_array($group_list)) $group_list = array($group_list);
|
||||
return $group_list;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 특정 회원의 친구 목록에 포함되어 있는지를 확인
|
||||
**/
|
||||
function isFriend($target_srl) {
|
||||
$logged_info = Context::get('logged_info');
|
||||
|
||||
$args->member_srl = $target_srl;
|
||||
$args->target_srl = $logged_info->member_srl;
|
||||
$output = executeQuery('member.isAddedFriend', $args);
|
||||
if($output->data->count) return true;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
?>
|
||||
420
modules/member/member.view.php
Normal file
420
modules/member/member.view.php
Normal file
|
|
@ -0,0 +1,420 @@
|
|||
<?php
|
||||
/**
|
||||
* @class memberView
|
||||
* @author zero (zero@nzeo.com)
|
||||
* @brief member module의 View class
|
||||
**/
|
||||
|
||||
class memberView extends member {
|
||||
|
||||
var $group_list = NULL; ///< 그룹 목록 정보
|
||||
var $member_info = NULL; ///< 선택된 사용자의 정보
|
||||
var $skin = 'default';
|
||||
var $my_menu = null;
|
||||
|
||||
/**
|
||||
* @brief 초기화
|
||||
**/
|
||||
function init() {
|
||||
// 회원 관리 정보를 받음
|
||||
$oModuleModel = &getModel('module');
|
||||
$this->member_config = $oModuleModel->getModuleConfig('member');
|
||||
if(!$this->member_config->skin) $this->member_config->skin = "default";
|
||||
if(!$this->member_config->colorset) $this->member_config->colorset = "white";
|
||||
|
||||
Context::set('member_config', $this->member_config);
|
||||
$skin = $this->member_config->skin;
|
||||
|
||||
// template path 지정
|
||||
$tpl_path = sprintf('%sskins/%s', $this->module_path, $skin);
|
||||
$this->setTemplatePath($tpl_path);
|
||||
|
||||
// my_menu 변수 설정 (자신의 정보와 관련된 부분, 차후 애드온등에서 변수 조절 가능)
|
||||
$this->my_menu = array(
|
||||
'dispMemberInfo' => Context::getLang('cmd_view_member_info'),
|
||||
'dispMemberMessages' => Context::getLang('cmd_view_message_box'),
|
||||
'dispMemberFriend' => Context::getLang('cmd_view_friend'),
|
||||
'dispMemberOwnDocument' => Context::getLang('cmd_view_own_document'),
|
||||
'dispMemberScrappedDocument' => Context::getLang('cmd_view_scrapped_document'),
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 회원 정보 출력
|
||||
**/
|
||||
function dispMemberInfo() {
|
||||
$oMemberModel = &getModel('member');
|
||||
$logged_info = Context::get('logged_info');
|
||||
|
||||
$member_srl = Context::get('member_srl');
|
||||
if(!$member_srl && Context::get('is_logged')) {
|
||||
$member_srl = $logged_info->member_srl;
|
||||
} elseif(!$member_srl) {
|
||||
return $this->dispMemberSignUpForm();
|
||||
}
|
||||
|
||||
$member_info = $oMemberModel->getMemberInfoByMemberSrl($member_srl);
|
||||
unset($member_info->password);
|
||||
unset($member_info->email_id);
|
||||
unset($member_info->email_host);
|
||||
unset($member_info->email_address);
|
||||
|
||||
if(!$member_info->member_srl) return $this->dispMemberSignUpForm();
|
||||
|
||||
Context::set('member_info', $member_info);
|
||||
Context::set('extend_form_list', $oMemberModel->getCombineJoinForm($member_info));
|
||||
|
||||
if($member_info->member_srl == $logged_info->member_srl) Context::set('my_menu', $this->my_menu);
|
||||
|
||||
$this->setTemplateFile('member_info');
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 회원 가입 폼 출력
|
||||
**/
|
||||
function dispMemberSignUpForm() {
|
||||
$oMemberModel = &getModel('member');
|
||||
|
||||
// 로그인한 회원일 경우 해당 회원의 정보를 받음
|
||||
if($oMemberModel->isLogged()) return $this->stop('msg_already_logged');
|
||||
|
||||
// 회원가입을 중지시켰을 때는 에러 표시
|
||||
if($this->member_config->enable_join != 'Y') return $this->stop('msg_signup_disabled');
|
||||
|
||||
Context::set('extend_form_list', $oMemberModel->getCombineJoinForm($member_info));
|
||||
|
||||
// 템플릿 파일 지정
|
||||
$this->setTemplateFile('signup_form');
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 회원 정보 수정
|
||||
**/
|
||||
function dispMemberModifyInfo() {
|
||||
$oMemberModel = &getModel('member');
|
||||
|
||||
// 로그인 되어 있지 않을 경우 로그인 되어 있지 않다는 메세지 출력
|
||||
if(!$oMemberModel->isLogged()) return $this->stop('msg_not_logged');
|
||||
|
||||
$logged_info = Context::get('logged_info');
|
||||
$member_srl = $logged_info->member_srl;
|
||||
|
||||
$member_info = $oMemberModel->getMemberInfoByMemberSrl($member_srl);
|
||||
$member_info->signature = $oMemberModel->getSignature($member_srl);
|
||||
Context::set('member_info',$member_info);
|
||||
|
||||
// 추가 가입폼 목록을 받음
|
||||
Context::set('extend_form_list', $oMemberModel->getCombineJoinForm($member_info));
|
||||
|
||||
// 에디터 모듈의 getEditor를 호출하여 서명용으로 세팅
|
||||
if($member_info->member_srl) {
|
||||
$oEditorModel = &getModel('editor');
|
||||
$option->allow_fileupload = false;
|
||||
$option->enable_autosave = false;
|
||||
$option->enable_default_component = true;
|
||||
$option->enable_component = true;
|
||||
$option->resizable = false;
|
||||
$option->height = 200;
|
||||
$editor = $oEditorModel->getEditor($member_info->member_srl, $option);
|
||||
Context::set('editor', $editor);
|
||||
}
|
||||
|
||||
if($member_info->member_srl == $logged_info->member_srl) Context::set('my_menu', $this->my_menu);
|
||||
|
||||
// 템플릿 파일 지정
|
||||
$this->setTemplateFile('modify_info');
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 회원 작성글 보기
|
||||
**/
|
||||
function dispMemberOwnDocument() {
|
||||
$oMemberModel = &getModel('member');
|
||||
|
||||
// 로그인 되어 있지 않을 경우 로그인 되어 있지 않다는 메세지 출력
|
||||
if(!$oMemberModel->isLogged()) return $this->stop('msg_not_logged');
|
||||
|
||||
$logged_info = Context::get('logged_info');
|
||||
$member_srl = $logged_info->member_srl;
|
||||
|
||||
$module_srl = Context::get('module_srl');
|
||||
Context::set('module_srl',Context::get('selected_module_srl'));
|
||||
Context::set('search_target','member_srl');
|
||||
Context::set('search_keyword',$member_srl);
|
||||
|
||||
$oDocumentAdminView = &getAdminView('document');
|
||||
$oDocumentAdminView->dispDocumentAdminList();
|
||||
|
||||
Context::get('module_srl', $module_srl);
|
||||
Context::set('my_menu', $this->my_menu);
|
||||
|
||||
$this->setTemplateFile('document_list');
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 회원 스크랩 게시물 보기
|
||||
**/
|
||||
function dispMemberScrappedDocument() {
|
||||
$oMemberModel = &getModel('member');
|
||||
|
||||
// 로그인 되어 있지 않을 경우 로그인 되어 있지 않다는 메세지 출력
|
||||
if(!$oMemberModel->isLogged()) return $this->stop('msg_not_logged');
|
||||
|
||||
$logged_info = Context::get('logged_info');
|
||||
$args->member_srl = $logged_info->member_srl;
|
||||
$args->page = (int)Context::get('page');
|
||||
|
||||
$output = executeQuery('member.getScrapDocumentList', $args);
|
||||
Context::set('total_count', $output->total_count);
|
||||
Context::set('total_page', $output->total_page);
|
||||
Context::set('page', $output->page);
|
||||
Context::set('document_list', $output->data);
|
||||
Context::set('page_navigation', $output->page_navigation);
|
||||
|
||||
Context::set('my_menu', $this->my_menu);
|
||||
|
||||
$this->setTemplateFile('scrapped_list');
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 로그인 폼 출력
|
||||
**/
|
||||
function dispMemberLoginForm() {
|
||||
// 템플릿 파일 지정
|
||||
$this->setTemplateFile('login_form');
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 회원 비밀번호 수정
|
||||
**/
|
||||
function dispMemberModifyPassword() {
|
||||
$oMemberModel = &getModel('member');
|
||||
|
||||
// 로그인 되어 있지 않을 경우 로그인 되어 있지 않다는 메세지 출력
|
||||
if(!$oMemberModel->isLogged()) return $this->stop('msg_not_logged');
|
||||
|
||||
$logged_info = Context::get('logged_info');
|
||||
$member_srl = $logged_info->member_srl;
|
||||
|
||||
$member_info = $oMemberModel->getMemberInfoByMemberSrl($member_srl);
|
||||
Context::set('member_info',$member_info);
|
||||
|
||||
if($member_info->member_srl == $logged_info->member_srl) Context::set('my_menu', $this->my_menu);
|
||||
|
||||
// 템플릿 파일 지정
|
||||
$this->setTemplateFile('modify_password');
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 탈퇴 화면
|
||||
**/
|
||||
function dispMemberLeave() {
|
||||
$oMemberModel = &getModel('member');
|
||||
|
||||
// 로그인 되어 있지 않을 경우 로그인 되어 있지 않다는 메세지 출력
|
||||
if(!$oMemberModel->isLogged()) return $this->stop('msg_not_logged');
|
||||
|
||||
$logged_info = Context::get('logged_info');
|
||||
$member_srl = $logged_info->member_srl;
|
||||
|
||||
$member_info = $oMemberModel->getMemberInfoByMemberSrl($member_srl);
|
||||
Context::set('member_info',$member_info);
|
||||
|
||||
if($member_info->member_srl == $logged_info->member_srl) Context::set('my_menu', $this->my_menu);
|
||||
|
||||
// 템플릿 파일 지정
|
||||
$this->setTemplateFile('leave_form');
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 로그아웃 출력
|
||||
**/
|
||||
function dispMemberLogout() {
|
||||
// 템플릿 파일 지정
|
||||
$this->setTemplateFile('logout');
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 쪽지함 출력
|
||||
**/
|
||||
function dispMemberMessages() {
|
||||
// 로그인이 되어 있지 않으면 오류 표시
|
||||
if(!Context::get('is_logged')) return $this->stop('msg_not_logged');
|
||||
$logged_info = Context::get('logged_info');
|
||||
|
||||
// 변수 설정
|
||||
$message_srl = Context::get('message_srl');
|
||||
$message_type = Context::get('message_type');
|
||||
if(!in_array($message_type, array('R','S','T'))) {
|
||||
$message_type = 'R';
|
||||
Context::set('message_type', $message_type);
|
||||
}
|
||||
|
||||
$oMemberModel = &getModel('member');
|
||||
|
||||
// message_srl이 있으면 내용 추출
|
||||
if($message_srl) {
|
||||
$message = $oMemberModel->getSelectedMessage($message_srl);
|
||||
if($message->message_srl == $message_srl) Context::set('message', $message);
|
||||
}
|
||||
|
||||
Context::set('my_menu', $this->my_menu);
|
||||
|
||||
// 목록 추출
|
||||
$output = $oMemberModel->getMessages($message_type);
|
||||
|
||||
// 템플릿에 쓰기 위해서 context::set
|
||||
Context::set('total_count', $output->total_count);
|
||||
Context::set('total_page', $output->total_page);
|
||||
Context::set('page', $output->page);
|
||||
Context::set('message_list', $output->data);
|
||||
Context::set('page_navigation', $output->page_navigation);
|
||||
|
||||
$this->setTemplateFile('member_messages');
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 새 쪽지 보여줌
|
||||
**/
|
||||
function dispMemberNewMessage() {
|
||||
$this->setLayoutFile('popup_layout');
|
||||
|
||||
// 로그인이 되어 있지 않으면 오류 표시
|
||||
if(!Context::get('is_logged')) return $this->stop('msg_not_logged');
|
||||
$logged_info = Context::get('logged_info');
|
||||
|
||||
$oMemberModel = &getModel('member');
|
||||
|
||||
// 새 쪽지를 가져옴
|
||||
$message = $oMemberModel->getNewMessage();
|
||||
if($message) Context::set('message', $message);
|
||||
|
||||
// 플래그 삭제
|
||||
$flag_path = './files/member_extra_info/new_message_flags/'.getNumberingPath($logged_info->member_srl);
|
||||
$flag_file = sprintf('%s%s', $flag_path, $logged_info->member_srl);
|
||||
@unlink($flag_file);
|
||||
|
||||
$this->setTemplateFile('member_new_message');
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 쪽지 발송 출력
|
||||
**/
|
||||
function dispMemberSendMessage() {
|
||||
$this->setLayoutFile("popup_layout");
|
||||
|
||||
// 로그인이 되어 있지 않으면 오류 표시
|
||||
if(!Context::get('is_logged')) return $this->stop('msg_not_logged');
|
||||
$logged_info = Context::get('logged_info');
|
||||
|
||||
// 쪽지 받을 사용자 정보 구함
|
||||
$receiver_srl = Context::get('receiver_srl');
|
||||
if(!$receiver_srl || $logged_info->member_srl == $receiver_srl) return $this->stop('msg_not_logged');
|
||||
|
||||
$oMemberModel = &getModel('member');
|
||||
$receiver_info = $oMemberModel->getMemberInfoByMemberSrl($receiver_srl);
|
||||
Context::set('receiver_info', $receiver_info);
|
||||
|
||||
// 에디터 모듈의 getEditor를 호출하여 서명용으로 세팅
|
||||
$oEditorModel = &getModel('editor');
|
||||
$option->allow_fileupload = false;
|
||||
$option->enable_autosave = false;
|
||||
$option->enable_default_component = true;
|
||||
$option->enable_component = true;
|
||||
$option->resizable = false;
|
||||
$option->height = 250;
|
||||
$editor = $oEditorModel->getEditor($logged_info->member_srl, $option);
|
||||
Context::set('editor', $editor);
|
||||
|
||||
$this->setTemplateFile('send_message');
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 친구 목록 보기
|
||||
**/
|
||||
function dispMemberFriend() {
|
||||
// 로그인이 되어 있지 않으면 오류 표시
|
||||
if(!Context::get('is_logged')) return $this->stop('msg_not_logged');
|
||||
|
||||
$oMemberModel = &getModel('member');
|
||||
|
||||
// 그룹 목록을 가져옴
|
||||
$tmp_group_list = $oMemberModel->getFriendGroups();
|
||||
$group_count = count($tmp_group_list);
|
||||
for($i=0;$i<$group_count;$i++) $friend_group_list[$tmp_group_list[$i]->friend_group_srl] = $tmp_group_list[$i];
|
||||
Context::set('friend_group_list', $friend_group_list);
|
||||
|
||||
// 친구 목록을 가져옴
|
||||
$friend_group_srl = Context::get('friend_group_srl');
|
||||
$output = $oMemberModel->getFriends($friend_group_srl);
|
||||
$friend_count = count($output->data);
|
||||
if($friend_count) {
|
||||
foreach($output->data as $key => $val) {
|
||||
$group_srl = $val->friend_group_srl;
|
||||
$group_title = $friend_group_list[$group_srl]->title;
|
||||
if(!$group_title) $group_title = Context::get('default_friend_group');
|
||||
$output->data[$key]->group_title = $group_title;
|
||||
}
|
||||
}
|
||||
|
||||
// 템플릿에 쓰기 위해서 context::set
|
||||
Context::set('total_count', $output->total_count);
|
||||
Context::set('total_page', $output->total_page);
|
||||
Context::set('page', $output->page);
|
||||
Context::set('friend_list', $output->data);
|
||||
Context::set('page_navigation', $output->page_navigation);
|
||||
Context::set('my_menu', $this->my_menu);
|
||||
|
||||
$this->setTemplateFile('friends_list');
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 친구 추가
|
||||
**/
|
||||
function dispMemberAddFriend() {
|
||||
$this->setLayoutFile("popup_layout");
|
||||
|
||||
// 로그인이 되어 있지 않으면 오류 표시
|
||||
if(!Context::get('is_logged')) return $this->stop('msg_not_logged');
|
||||
$logged_info = Context::get('logged_info');
|
||||
|
||||
$target_srl = Context::get('target_srl');
|
||||
if(!$target_srl) return $this->stop('msg_invalid_request');
|
||||
|
||||
// 대상 회원의 정보를 구함
|
||||
$oMemberModel = &getModel('member');
|
||||
$member_info = $oMemberModel->getMemberInfoByMemberSrl($target_srl);
|
||||
if($member_info->member_srl != $target_srl) return $this->stop('msg_invalid_request');
|
||||
Context::set('target_info', $member_info);
|
||||
|
||||
// 그룹의 목록을 구함
|
||||
$friend_group_list = $oMemberModel->getFriendGroups();
|
||||
Context::set('friend_group_list', $friend_group_list);
|
||||
|
||||
$this->setTemplateFile('add_friend');
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 친구 그룹 추가
|
||||
**/
|
||||
function dispMemberAddFriendGroup() {
|
||||
$this->setLayoutFile("popup_layout");
|
||||
|
||||
// 로그인이 되어 있지 않으면 오류 표시
|
||||
if(!Context::get('is_logged')) return $this->stop('msg_not_logged');
|
||||
$logged_info = Context::get('logged_info');
|
||||
|
||||
// 그룹 번호가 넘어오면 수정모드로..
|
||||
$friend_group_srl = Context::get('friend_group_srl');
|
||||
if($friend_group_srl) {
|
||||
$oMemberModel = &getModel('member');
|
||||
$friend_group = $oMemberModel->getFriendGroupInfo($friend_group_srl);
|
||||
if($friend_group->friend_group_srl == $friend_group_srl) Context::set('friend_group', $friend_group);
|
||||
}
|
||||
|
||||
|
||||
$this->setTemplateFile('add_friend_group');
|
||||
}
|
||||
|
||||
}
|
||||
?>
|
||||
340
modules/member/openid_lib/LICENSE
Normal file
340
modules/member/openid_lib/LICENSE
Normal file
|
|
@ -0,0 +1,340 @@
|
|||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 2, June 1991
|
||||
|
||||
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
|
||||
51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
Preamble
|
||||
|
||||
The licenses for most software are designed to take away your
|
||||
freedom to share and change it. By contrast, the GNU General Public
|
||||
License is intended to guarantee your freedom to share and change free
|
||||
software--to make sure the software is free for all its users. This
|
||||
General Public License applies to most of the Free Software
|
||||
Foundation's software and to any other program whose authors commit to
|
||||
using it. (Some other Free Software Foundation software is covered by
|
||||
the GNU Library General Public License instead.) You can apply it to
|
||||
your programs, too.
|
||||
|
||||
When we speak of free software, we are referring to freedom, not
|
||||
price. Our General Public Licenses are designed to make sure that you
|
||||
have the freedom to distribute copies of free software (and charge for
|
||||
this service if you wish), that you receive source code or can get it
|
||||
if you want it, that you can change the software or use pieces of it
|
||||
in new free programs; and that you know you can do these things.
|
||||
|
||||
To protect your rights, we need to make restrictions that forbid
|
||||
anyone to deny you these rights or to ask you to surrender the rights.
|
||||
These restrictions translate to certain responsibilities for you if you
|
||||
distribute copies of the software, or if you modify it.
|
||||
|
||||
For example, if you distribute copies of such a program, whether
|
||||
gratis or for a fee, you must give the recipients all the rights that
|
||||
you have. You must make sure that they, too, receive or can get the
|
||||
source code. And you must show them these terms so they know their
|
||||
rights.
|
||||
|
||||
We protect your rights with two steps: (1) copyright the software, and
|
||||
(2) offer you this license which gives you legal permission to copy,
|
||||
distribute and/or modify the software.
|
||||
|
||||
Also, for each author's protection and ours, we want to make certain
|
||||
that everyone understands that there is no warranty for this free
|
||||
software. If the software is modified by someone else and passed on, we
|
||||
want its recipients to know that what they have is not the original, so
|
||||
that any problems introduced by others will not reflect on the original
|
||||
authors' reputations.
|
||||
|
||||
Finally, any free program is threatened constantly by software
|
||||
patents. We wish to avoid the danger that redistributors of a free
|
||||
program will individually obtain patent licenses, in effect making the
|
||||
program proprietary. To prevent this, we have made it clear that any
|
||||
patent must be licensed for everyone's free use or not licensed at all.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
|
||||
0. This License applies to any program or other work which contains
|
||||
a notice placed by the copyright holder saying it may be distributed
|
||||
under the terms of this General Public License. The "Program", below,
|
||||
refers to any such program or work, and a "work based on the Program"
|
||||
means either the Program or any derivative work under copyright law:
|
||||
that is to say, a work containing the Program or a portion of it,
|
||||
either verbatim or with modifications and/or translated into another
|
||||
language. (Hereinafter, translation is included without limitation in
|
||||
the term "modification".) Each licensee is addressed as "you".
|
||||
|
||||
Activities other than copying, distribution and modification are not
|
||||
covered by this License; they are outside its scope. The act of
|
||||
running the Program is not restricted, and the output from the Program
|
||||
is covered only if its contents constitute a work based on the
|
||||
Program (independent of having been made by running the Program).
|
||||
Whether that is true depends on what the Program does.
|
||||
|
||||
1. You may copy and distribute verbatim copies of the Program's
|
||||
source code as you receive it, in any medium, provided that you
|
||||
conspicuously and appropriately publish on each copy an appropriate
|
||||
copyright notice and disclaimer of warranty; keep intact all the
|
||||
notices that refer to this License and to the absence of any warranty;
|
||||
and give any other recipients of the Program a copy of this License
|
||||
along with the Program.
|
||||
|
||||
You may charge a fee for the physical act of transferring a copy, and
|
||||
you may at your option offer warranty protection in exchange for a fee.
|
||||
|
||||
2. You may modify your copy or copies of the Program or any portion
|
||||
of it, thus forming a work based on the Program, and copy and
|
||||
distribute such modifications or work under the terms of Section 1
|
||||
above, provided that you also meet all of these conditions:
|
||||
|
||||
a) You must cause the modified files to carry prominent notices
|
||||
stating that you changed the files and the date of any change.
|
||||
|
||||
b) You must cause any work that you distribute or publish, that in
|
||||
whole or in part contains or is derived from the Program or any
|
||||
part thereof, to be licensed as a whole at no charge to all third
|
||||
parties under the terms of this License.
|
||||
|
||||
c) If the modified program normally reads commands interactively
|
||||
when run, you must cause it, when started running for such
|
||||
interactive use in the most ordinary way, to print or display an
|
||||
announcement including an appropriate copyright notice and a
|
||||
notice that there is no warranty (or else, saying that you provide
|
||||
a warranty) and that users may redistribute the program under
|
||||
these conditions, and telling the user how to view a copy of this
|
||||
License. (Exception: if the Program itself is interactive but
|
||||
does not normally print such an announcement, your work based on
|
||||
the Program is not required to print an announcement.)
|
||||
|
||||
These requirements apply to the modified work as a whole. If
|
||||
identifiable sections of that work are not derived from the Program,
|
||||
and can be reasonably considered independent and separate works in
|
||||
themselves, then this License, and its terms, do not apply to those
|
||||
sections when you distribute them as separate works. But when you
|
||||
distribute the same sections as part of a whole which is a work based
|
||||
on the Program, the distribution of the whole must be on the terms of
|
||||
this License, whose permissions for other licensees extend to the
|
||||
entire whole, and thus to each and every part regardless of who wrote it.
|
||||
|
||||
Thus, it is not the intent of this section to claim rights or contest
|
||||
your rights to work written entirely by you; rather, the intent is to
|
||||
exercise the right to control the distribution of derivative or
|
||||
collective works based on the Program.
|
||||
|
||||
In addition, mere aggregation of another work not based on the Program
|
||||
with the Program (or with a work based on the Program) on a volume of
|
||||
a storage or distribution medium does not bring the other work under
|
||||
the scope of this License.
|
||||
|
||||
3. You may copy and distribute the Program (or a work based on it,
|
||||
under Section 2) in object code or executable form under the terms of
|
||||
Sections 1 and 2 above provided that you also do one of the following:
|
||||
|
||||
a) Accompany it with the complete corresponding machine-readable
|
||||
source code, which must be distributed under the terms of Sections
|
||||
1 and 2 above on a medium customarily used for software interchange; or,
|
||||
|
||||
b) Accompany it with a written offer, valid for at least three
|
||||
years, to give any third party, for a charge no more than your
|
||||
cost of physically performing source distribution, a complete
|
||||
machine-readable copy of the corresponding source code, to be
|
||||
distributed under the terms of Sections 1 and 2 above on a medium
|
||||
customarily used for software interchange; or,
|
||||
|
||||
c) Accompany it with the information you received as to the offer
|
||||
to distribute corresponding source code. (This alternative is
|
||||
allowed only for noncommercial distribution and only if you
|
||||
received the program in object code or executable form with such
|
||||
an offer, in accord with Subsection b above.)
|
||||
|
||||
The source code for a work means the preferred form of the work for
|
||||
making modifications to it. For an executable work, complete source
|
||||
code means all the source code for all modules it contains, plus any
|
||||
associated interface definition files, plus the scripts used to
|
||||
control compilation and installation of the executable. However, as a
|
||||
special exception, the source code distributed need not include
|
||||
anything that is normally distributed (in either source or binary
|
||||
form) with the major components (compiler, kernel, and so on) of the
|
||||
operating system on which the executable runs, unless that component
|
||||
itself accompanies the executable.
|
||||
|
||||
If distribution of executable or object code is made by offering
|
||||
access to copy from a designated place, then offering equivalent
|
||||
access to copy the source code from the same place counts as
|
||||
distribution of the source code, even though third parties are not
|
||||
compelled to copy the source along with the object code.
|
||||
|
||||
4. You may not copy, modify, sublicense, or distribute the Program
|
||||
except as expressly provided under this License. Any attempt
|
||||
otherwise to copy, modify, sublicense or distribute the Program is
|
||||
void, and will automatically terminate your rights under this License.
|
||||
However, parties who have received copies, or rights, from you under
|
||||
this License will not have their licenses terminated so long as such
|
||||
parties remain in full compliance.
|
||||
|
||||
5. You are not required to accept this License, since you have not
|
||||
signed it. However, nothing else grants you permission to modify or
|
||||
distribute the Program or its derivative works. These actions are
|
||||
prohibited by law if you do not accept this License. Therefore, by
|
||||
modifying or distributing the Program (or any work based on the
|
||||
Program), you indicate your acceptance of this License to do so, and
|
||||
all its terms and conditions for copying, distributing or modifying
|
||||
the Program or works based on it.
|
||||
|
||||
6. Each time you redistribute the Program (or any work based on the
|
||||
Program), the recipient automatically receives a license from the
|
||||
original licensor to copy, distribute or modify the Program subject to
|
||||
these terms and conditions. You may not impose any further
|
||||
restrictions on the recipients' exercise of the rights granted herein.
|
||||
You are not responsible for enforcing compliance by third parties to
|
||||
this License.
|
||||
|
||||
7. If, as a consequence of a court judgment or allegation of patent
|
||||
infringement or for any other reason (not limited to patent issues),
|
||||
conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot
|
||||
distribute so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you
|
||||
may not distribute the Program at all. For example, if a patent
|
||||
license would not permit royalty-free redistribution of the Program by
|
||||
all those who receive copies directly or indirectly through you, then
|
||||
the only way you could satisfy both it and this License would be to
|
||||
refrain entirely from distribution of the Program.
|
||||
|
||||
If any portion of this section is held invalid or unenforceable under
|
||||
any particular circumstance, the balance of the section is intended to
|
||||
apply and the section as a whole is intended to apply in other
|
||||
circumstances.
|
||||
|
||||
It is not the purpose of this section to induce you to infringe any
|
||||
patents or other property right claims or to contest validity of any
|
||||
such claims; this section has the sole purpose of protecting the
|
||||
integrity of the free software distribution system, which is
|
||||
implemented by public license practices. Many people have made
|
||||
generous contributions to the wide range of software distributed
|
||||
through that system in reliance on consistent application of that
|
||||
system; it is up to the author/donor to decide if he or she is willing
|
||||
to distribute software through any other system and a licensee cannot
|
||||
impose that choice.
|
||||
|
||||
This section is intended to make thoroughly clear what is believed to
|
||||
be a consequence of the rest of this License.
|
||||
|
||||
8. If the distribution and/or use of the Program is restricted in
|
||||
certain countries either by patents or by copyrighted interfaces, the
|
||||
original copyright holder who places the Program under this License
|
||||
may add an explicit geographical distribution limitation excluding
|
||||
those countries, so that distribution is permitted only in or among
|
||||
countries not thus excluded. In such case, this License incorporates
|
||||
the limitation as if written in the body of this License.
|
||||
|
||||
9. The Free Software Foundation may publish revised and/or new versions
|
||||
of the General Public License from time to time. Such new versions will
|
||||
be similar in spirit to the present version, but may differ in detail to
|
||||
address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the Program
|
||||
specifies a version number of this License which applies to it and "any
|
||||
later version", you have the option of following the terms and conditions
|
||||
either of that version or of any later version published by the Free
|
||||
Software Foundation. If the Program does not specify a version number of
|
||||
this License, you may choose any version ever published by the Free Software
|
||||
Foundation.
|
||||
|
||||
10. If you wish to incorporate parts of the Program into other free
|
||||
programs whose distribution conditions are different, write to the author
|
||||
to ask for permission. For software which is copyrighted by the Free
|
||||
Software Foundation, write to the Free Software Foundation; we sometimes
|
||||
make exceptions for this. Our decision will be guided by the two goals
|
||||
of preserving the free status of all derivatives of our free software and
|
||||
of promoting the sharing and reuse of software generally.
|
||||
|
||||
NO WARRANTY
|
||||
|
||||
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
|
||||
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
|
||||
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
|
||||
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
|
||||
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
|
||||
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
|
||||
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
|
||||
REPAIR OR CORRECTION.
|
||||
|
||||
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
|
||||
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
|
||||
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
|
||||
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
|
||||
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
|
||||
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
|
||||
POSSIBILITY OF SUCH DAMAGES.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
How to Apply These Terms to Your New Programs
|
||||
|
||||
If you develop a new program, and you want it to be of the greatest
|
||||
possible use to the public, the best way to achieve this is to make it
|
||||
free software which everyone can redistribute and change under these terms.
|
||||
|
||||
To do so, attach the following notices to the program. It is safest
|
||||
to attach them to the start of each source file to most effectively
|
||||
convey the exclusion of warranty; and each file should have at least
|
||||
the "copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the program's name and a brief idea of what it does.>
|
||||
Copyright (C) <year> <name of author>
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
If the program is interactive, make it output a short notice like this
|
||||
when it starts in an interactive mode:
|
||||
|
||||
Gnomovision version 69, Copyright (C) year name of author
|
||||
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||
This is free software, and you are welcome to redistribute it
|
||||
under certain conditions; type `show c' for details.
|
||||
|
||||
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||
parts of the General Public License. Of course, the commands you use may
|
||||
be called something other than `show w' and `show c'; they could even be
|
||||
mouse-clicks or menu items--whatever suits your program.
|
||||
|
||||
You should also get your employer (if you work as a programmer) or your
|
||||
school, if any, to sign a "copyright disclaimer" for the program, if
|
||||
necessary. Here is a sample; alter the names:
|
||||
|
||||
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
|
||||
`Gnomovision' (which makes passes at compilers) written by James Hacker.
|
||||
|
||||
<signature of Ty Coon>, 1 April 1989
|
||||
Ty Coon, President of Vice
|
||||
|
||||
This General Public License does not permit incorporating your program into
|
||||
proprietary programs. If your program is a subroutine library, you may
|
||||
consider it more useful to permit linking proprietary applications with the
|
||||
library. If this is what you want to do, use the GNU Library General
|
||||
Public License instead of this License.
|
||||
99
modules/member/openid_lib/README
Normal file
99
modules/member/openid_lib/README
Normal file
|
|
@ -0,0 +1,99 @@
|
|||
CURL Extension Emulation Library
|
||||
Version 1.0.4
|
||||
Copyright 2004-2007, Steve Blinch
|
||||
http://code.blitzaffe.com
|
||||
============================================================================
|
||||
|
||||
DESCRIPTION
|
||||
|
||||
Provides a pure-PHP implementation of the PHP CURL extension, for use on
|
||||
systems which do not already have the CURL extension installed. It emulates
|
||||
all of the curl_* functions normally provided by the CURL extension itself.
|
||||
|
||||
This will automatically detect and use the best CURL implementation available
|
||||
on your server. It will attempt the following, in order:
|
||||
|
||||
1) Check for the existence of the "real" CURL PHP Extension. If it is
|
||||
loaded, the library will do nothing (and it will not interfere with the
|
||||
"real" extension).
|
||||
2) Check for the existence of the CURL console binary (usually located in
|
||||
/usr/bin/curl). If found, the library will emulate the CURL PHP
|
||||
extension (including all curl_* functions) and use the console binary
|
||||
to execute all requests.
|
||||
3) If neither the "real" CURL PHP Extension nor the CURL console binary
|
||||
are available, the library will emulate the CURL PHP extension (including
|
||||
all curl_* functions) using a native, pure-PHP HTTP client implementation.
|
||||
This implementation is somewhat limited, but it provides support for most
|
||||
of the common CURL options. HTTPS (SSL) support is available in this
|
||||
mode under PHP 4.3.0 if the OpenSSL Extension is loaded.
|
||||
|
||||
Thus, by including this library in your project, you can rely on having some
|
||||
level of CURL support regardless of the configuration of the server on which
|
||||
it is being used.
|
||||
|
||||
|
||||
HISTORY
|
||||
|
||||
1.0.4 (not released)
|
||||
- Fixed HTTPRetriever double-inclusion bug.
|
||||
|
||||
|
||||
USAGE
|
||||
|
||||
Simply copy all of the libcurlemu files into your project directory, then:
|
||||
|
||||
require_once("libcurlemu.inc.php");
|
||||
|
||||
After this, you can use all of the curl_* functions documented in the PHP
|
||||
Manual.
|
||||
|
||||
|
||||
EXAMPLE
|
||||
|
||||
// CURL Extension Emulation Library Example
|
||||
//
|
||||
// Usage should be straightforward; you simply use this script exactly as you
|
||||
// would normally use the PHP CURL extension functions.
|
||||
|
||||
// first, include libcurlemu.inc.php
|
||||
require_once('libcurlemu.inc.php');
|
||||
|
||||
// at this point, libcurlemu has detected the best available CURL solution
|
||||
// (either the CURL extension, if available, or the CURL commandline binary,
|
||||
// if available, or as a last resort, HTTPRetriever, our native-PHP HTTP
|
||||
// client implementation) and has implemented the curl_* functions if
|
||||
// necessary, so you can use CURL normally and safely assume that all CURL
|
||||
// functions are available.
|
||||
|
||||
// the rest of this example code is copied straight from the PHP manual's
|
||||
// reference for the curl_init() function, and will work fine with libcurlemu
|
||||
|
||||
// create a new CURL resource
|
||||
$ch = curl_init();
|
||||
|
||||
// set URL and other appropriate options
|
||||
curl_setopt($ch, CURLOPT_URL, "http://www.example.com/");
|
||||
curl_setopt($ch, CURLOPT_HEADER, false);
|
||||
|
||||
// grab URL and pass it to the browser
|
||||
curl_exec($ch);
|
||||
|
||||
// close CURL resource, and free up system resources
|
||||
curl_close($ch);
|
||||
|
||||
|
||||
LICENSE
|
||||
|
||||
This script is free software; you can redistribute it and/or modify it under the
|
||||
terms of the GNU General Public License as published by the Free Software
|
||||
Foundation; either version 2 of the License, or (at your option) any later
|
||||
version.
|
||||
|
||||
This script is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
||||
FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
|
||||
details.
|
||||
|
||||
You should have received a copy of the GNU General Public License along
|
||||
with this script; if not, write to the Free Software Foundation, Inc.,
|
||||
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
314
modules/member/openid_lib/class.openid.php
Normal file
314
modules/member/openid_lib/class.openid.php
Normal file
|
|
@ -0,0 +1,314 @@
|
|||
<?
|
||||
/*
|
||||
FREE TO USE
|
||||
Simple OpenID PHP Class
|
||||
Contributed by http://www.fivestores.com/
|
||||
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
|
||||
|
||||
This Class was written to make easy for you to integrate OpenID on your website.
|
||||
This is just a client, which checks for user's identity. This Class Requires CURL Module.
|
||||
It should be easy to use some other HTTP Request Method, but remember, often OpenID servers
|
||||
are using SSL.
|
||||
We need to be able to perform SSL Verification on the background to check for valid signature.
|
||||
|
||||
HOW TO USE THIS CLASS:
|
||||
STEP 1)
|
||||
$openid = new SimpleOpenID;
|
||||
:: SET IDENTITY ::
|
||||
$openid->SetIdentity($_POST['openid_url']);
|
||||
:: SET RETURN URL ::
|
||||
$openid->SetApprovedURL('http://www.yoursite.com/return.php'); // Script which handles a response from OpenID Server
|
||||
:: SET TRUST ROOT ::
|
||||
$openid->SetTrustRoot('http://www.yoursite.com/');
|
||||
:: FETCH SERVER URL FROM IDENTITY PAGE :: [Note: It is recomended to cache this (Session, Cookie, Database)]
|
||||
$openid->GetOpenIDServer(); // Returns false if server is not found
|
||||
:: REDIRECT USER TO OPEN ID SERVER FOR APPROVAL ::
|
||||
|
||||
:: (OPTIONAL) SET OPENID SERVER ::
|
||||
$openid->SetOpenIDServer($server_url); // If you have cached previously this, you don't have to call GetOpenIDServer and set value this directly
|
||||
|
||||
STEP 2)
|
||||
Once user gets returned we must validate signature
|
||||
:: VALIDATE REQUEST ::
|
||||
true|false = $openid->ValidateWithServer();
|
||||
|
||||
ERRORS:
|
||||
array = $openid->GetError(); // Get latest Error code
|
||||
|
||||
FIELDS:
|
||||
OpenID allowes you to retreive a profile. To set what fields you'd like to get use (accepts either string or array):
|
||||
$openid->SetRequiredFields(array('email','fullname','dob','gender','postcode','country','language','timezone'));
|
||||
or
|
||||
$openid->SetOptionalFields('postcode');
|
||||
|
||||
IMPORTANT TIPS:
|
||||
OPENID as is now, is not trust system. It is a great single-sign on method. If you want to
|
||||
store information about OpenID in your database for later use, make sure you handle url identities
|
||||
properly.
|
||||
For example:
|
||||
https://steve.myopenid.com/
|
||||
https://steve.myopenid.com
|
||||
http://steve.myopenid.com/
|
||||
http://steve.myopenid.com
|
||||
... are representing one single user. Some OpenIDs can be in format openidserver.com/users/user/ - keep this in mind when storing identities
|
||||
|
||||
To help you store an OpenID in your DB, you can use function:
|
||||
$openid_db_safe = $openid->OpenID_Standarize($upenid);
|
||||
This may not be comatible with current specs, but it works in current enviroment. Use this function to get openid
|
||||
in one format like steve.myopenid.com (without trailing slashes and http/https).
|
||||
Use output to insert Identity to database. Don't use this for validation - it may fail.
|
||||
|
||||
*/
|
||||
|
||||
class SimpleOpenID{
|
||||
var $openid_url_identity;
|
||||
var $URLs = array();
|
||||
var $error = array();
|
||||
var $fields = array();
|
||||
|
||||
function SimpleOpenID(){
|
||||
if (!function_exists('curl_exec')) {
|
||||
die('Error: Class SimpleOpenID requires curl extension to work');
|
||||
}
|
||||
}
|
||||
function SetOpenIDServer($a){
|
||||
$this->URLs['openid_server'] = $a;
|
||||
}
|
||||
function SetTrustRoot($a){
|
||||
$this->URLs['trust_root'] = $a;
|
||||
}
|
||||
function SetCancelURL($a){
|
||||
$this->URLs['cancel'] = $a;
|
||||
}
|
||||
function SetApprovedURL($a){
|
||||
$this->URLs['approved'] = $a;
|
||||
}
|
||||
function SetRequiredFields($a){
|
||||
if (is_array($a)){
|
||||
$this->fields['required'] = $a;
|
||||
}else{
|
||||
$this->fields['required'][] = $a;
|
||||
}
|
||||
}
|
||||
function SetOptionalFields($a){
|
||||
if (is_array($a)){
|
||||
$this->fields['optional'] = $a;
|
||||
}else{
|
||||
$this->fields['optional'][] = $a;
|
||||
}
|
||||
}
|
||||
function SetIdentity($a){ // Set Identity URL
|
||||
if(strpos($a, 'http://') === false) {
|
||||
$a = 'http://'.$a;
|
||||
}
|
||||
/*
|
||||
$u = parse_url(trim($a));
|
||||
if (!isset($u['path'])){
|
||||
$u['path'] = '/';
|
||||
}else if(substr($u['path'],-1,1) == '/'){
|
||||
$u['path'] = substr($u['path'], 0, strlen($u['path'])-1);
|
||||
}
|
||||
if (isset($u['query'])){ // If there is a query string, then use identity as is
|
||||
$identity = $a;
|
||||
}else{
|
||||
$identity = $u['scheme'] . '://' . $u['host'] . $u['path'];
|
||||
}*/
|
||||
$this->openid_url_identity = $a;
|
||||
}
|
||||
function GetIdentity(){ // Get Identity
|
||||
return $this->openid_url_identity;
|
||||
}
|
||||
function GetError(){
|
||||
$e = $this->error;
|
||||
return array('code'=>$e[0],'description'=>$e[1]);
|
||||
}
|
||||
|
||||
function ErrorStore($code, $desc = null){
|
||||
$errs['OPENID_NOSERVERSFOUND'] = 'Cannot find OpenID Server TAG on Identity page.';
|
||||
if ($desc == null){
|
||||
$desc = $errs[$code];
|
||||
}
|
||||
$this->error = array($code,$desc);
|
||||
}
|
||||
|
||||
function IsError(){
|
||||
if (count($this->error) > 0){
|
||||
return true;
|
||||
}else{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
function splitResponse($response) {
|
||||
$r = array();
|
||||
$response = explode("\n", $response);
|
||||
foreach($response as $line) {
|
||||
$line = trim($line);
|
||||
if ($line != "") {
|
||||
list($key, $value) = explode(":", $line, 2);
|
||||
$r[trim($key)] = trim($value);
|
||||
}
|
||||
}
|
||||
return $r;
|
||||
}
|
||||
|
||||
function OpenID_Standarize($openid_identity){
|
||||
$u = parse_url(strtolower(trim($openid_identity)));
|
||||
if ($u['path'] == '/'){
|
||||
$u['path'] = '';
|
||||
}
|
||||
if(substr($u['path'],-1,1) == '/'){
|
||||
$u['path'] = substr($u['path'], 0, strlen($u['path'])-1);
|
||||
}
|
||||
if (isset($u['query'])){ // If there is a query string, then use identity as is
|
||||
return $u['host'] . $u['path'] . '?' . $u['query'];
|
||||
}else{
|
||||
return $u['host'] . $u['path'];
|
||||
}
|
||||
}
|
||||
|
||||
function array2url($arr){ // converts associated array to URL Query String
|
||||
if (!is_array($arr)){
|
||||
return false;
|
||||
}
|
||||
foreach($arr as $key => $value){
|
||||
$query .= $key . "=" . $value . "&";
|
||||
}
|
||||
return $query;
|
||||
}
|
||||
function FSOCK_Request($url, $method="GET", $params = ""){
|
||||
$fp = fsockopen("ssl://www.myopenid.com", 443, $errno, $errstr, 3); // Connection timeout is 3 seconds
|
||||
if (!$fp) {
|
||||
$this->ErrorStore('OPENID_SOCKETERROR', $errstr);
|
||||
return false;
|
||||
} else {
|
||||
$request = $method . " /server HTTP/1.0\r\n";
|
||||
$request .= "User-Agent: Simple OpenID PHP Class (http://www.phpclasses.org/simple_openid)\r\n";
|
||||
$request .= "Connection: close\r\n\r\n";
|
||||
fwrite($fp, $request);
|
||||
stream_set_timeout($fp, 4); // Connection response timeout is 4 seconds
|
||||
$res = fread($fp, 2000);
|
||||
$info = stream_get_meta_data($fp);
|
||||
fclose($fp);
|
||||
|
||||
if ($info['timed_out']) {
|
||||
$this->ErrorStore('OPENID_SOCKETTIMEOUT');
|
||||
} else {
|
||||
return $res;
|
||||
}
|
||||
}
|
||||
}
|
||||
function CURL_Request($url, $method="GET", $params = "") { // Remember, SSL MUST BE SUPPORTED
|
||||
if (is_array($params)) $params = $this->array2url($params);
|
||||
$curl = curl_init();
|
||||
curl_setopt($curl, CURLOPT_URL,$url . ($method == "GET" && $params != "" ? "?" . $params : ""));
|
||||
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
|
||||
curl_setopt($curl, CURLOPT_HEADER, false);
|
||||
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
|
||||
curl_setopt($curl, CURLOPT_HTTPGET, ($method == "GET"));
|
||||
curl_setopt($curl, CURLOPT_POST, ($method == "POST"));
|
||||
if ($method == "POST") curl_setopt($curl, CURLOPT_POSTFIELDS, $params);
|
||||
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
|
||||
$response = curl_exec($curl);
|
||||
|
||||
if (curl_errno($curl) == 0){
|
||||
$response;
|
||||
}else{
|
||||
$this->ErrorStore('OPENID_CURL', curl_error($curl));
|
||||
}
|
||||
return $response;
|
||||
}
|
||||
|
||||
function HTML2OpenIDServer($content) {
|
||||
$get = array();
|
||||
// Get details of their OpenID server and (optional) delegate
|
||||
preg_match_all('/<link[^>]*rel="openid.server"[^>]*href="([^"]+)"[^>]*\/?>/i', $content, $matches1);
|
||||
preg_match_all('/<link[^>]*href="([^"]+)"[^>]*rel="openid.server"[^>]*\/?>/i', $content, $matches2);
|
||||
$servers = array_merge($matches1[1], $matches2[1]);
|
||||
|
||||
preg_match_all('/<link[^>]*rel="openid.delegate"[^>]*href="([^"]+)"[^>]*\/?>/i', $content, $matches1);
|
||||
|
||||
preg_match_all('/<link[^>]*href="([^"]+)"[^>]*rel="openid.delegate"[^>]*\/?>/i', $content, $matches2);
|
||||
|
||||
$delegates = array_merge($matches1[1], $matches2[1]);
|
||||
|
||||
$ret = array($servers, $delegates);
|
||||
return $ret;
|
||||
}
|
||||
|
||||
function GetOpenIDServer(){
|
||||
$response = $this->CURL_Request($this->openid_url_identity);
|
||||
list($servers, $delegates) = $this->HTML2OpenIDServer($response);
|
||||
if (count($servers) == 0){
|
||||
$this->ErrorStore('OPENID_NOSERVERSFOUND');
|
||||
return false;
|
||||
}
|
||||
if ($delegates[0] != ""){
|
||||
$this->openid_url_identity = $delegates[0];
|
||||
}
|
||||
$this->SetOpenIDServer($servers[0]);
|
||||
return $servers[0];
|
||||
}
|
||||
|
||||
function GetRedirectURL(){
|
||||
$params = array();
|
||||
$params['openid.return_to'] = urlencode($this->URLs['approved']);
|
||||
$params['openid.mode'] = 'checkid_setup';
|
||||
$params['openid.identity'] = urlencode($this->openid_url_identity);
|
||||
$params['openid.trust_root'] = urlencode($this->URLs['trust_root']);
|
||||
|
||||
if (count($this->fields['required']) > 0){
|
||||
$params['openid.sreg.required'] = implode(',',$this->fields['required']);
|
||||
}
|
||||
if (count($this->fields['optional']) > 0){
|
||||
$params['openid.sreg.optional'] = implode(',',$this->fields['optional']);
|
||||
}
|
||||
return $this->URLs['openid_server'] . "?". $this->array2url($params);
|
||||
}
|
||||
|
||||
function Redirect(){
|
||||
$redirect_to = $this->GetRedirectURL();
|
||||
if (headers_sent()){ // Use JavaScript to redirect if content has been previously sent (not recommended, but safe)
|
||||
echo '<script language="JavaScript" type="text/javascript">window.location=\'';
|
||||
echo $redirect_to;
|
||||
echo '\';</script>';
|
||||
}else{ // Default Header Redirect
|
||||
header('Location: ' . $redirect_to);
|
||||
}
|
||||
}
|
||||
|
||||
function ValidateWithServer(){
|
||||
$params = array(
|
||||
'openid.assoc_handle' => urlencode($_GET['openid_assoc_handle']),
|
||||
'openid.signed' => urlencode($_GET['openid_signed']),
|
||||
'openid.sig' => urlencode($_GET['openid_sig'])
|
||||
);
|
||||
// Send only required parameters to confirm validity
|
||||
$arr_signed = explode(",",str_replace('sreg.','sreg_',$_GET['openid_signed']));
|
||||
for ($i=0; $i<count($arr_signed); $i++){
|
||||
$s = str_replace('sreg_','sreg.', $arr_signed[$i]);
|
||||
$c = $_GET['openid_' . $arr_signed[$i]];
|
||||
// if ($c != ""){
|
||||
$params['openid.' . $s] = urlencode($c);
|
||||
// }
|
||||
}
|
||||
$params['openid.mode'] = "check_authentication";
|
||||
// print "<pre>";
|
||||
// print_r($_GET);
|
||||
// print_r($params);
|
||||
// print "</pre>";
|
||||
$openid_server = $this->GetOpenIDServer();
|
||||
if ($openid_server == false){
|
||||
return false;
|
||||
}
|
||||
$response = $this->CURL_Request($openid_server,'GET',$params);
|
||||
$data = $this->splitResponse($response);
|
||||
if ($data['is_valid'] == "true") {
|
||||
return true;
|
||||
}else{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
1159
modules/member/openid_lib/class_HTTPRetriever.php
Executable file
1159
modules/member/openid_lib/class_HTTPRetriever.php
Executable file
File diff suppressed because it is too large
Load diff
111
modules/member/openid_lib/libcurlemu.inc.php
Executable file
111
modules/member/openid_lib/libcurlemu.inc.php
Executable file
|
|
@ -0,0 +1,111 @@
|
|||
<?php
|
||||
/* CURL Extension Emulation Library
|
||||
* Version 1.0.4
|
||||
* Copyright 2004-2007, Steve Blinch
|
||||
* http://code.blitzaffe.com
|
||||
* ============================================================================
|
||||
*
|
||||
* DESCRIPTION
|
||||
*
|
||||
* Provides a pure-PHP implementation of the PHP CURL extension, for use on
|
||||
* systems which do not already have the CURL extension installed. It emulates
|
||||
* all of the curl_* functions normally provided by the CURL extension itself.
|
||||
*
|
||||
* This will automatically detect and use the best CURL implementation available
|
||||
* on your server. It will attempt the following, in order:
|
||||
*
|
||||
* 1) Check for the existence of the "real" CURL PHP Extension. If it is
|
||||
* loaded, the library will do nothing (and it will not interfere with the
|
||||
* "real" extension).
|
||||
* 2) Check for the existence of the CURL console binary (usually located in
|
||||
* /usr/bin/curl). If found, the library will emulate the CURL PHP
|
||||
* extension (including all curl_* functions) and use the console binary
|
||||
* to execute all requests.
|
||||
* 3) If neither the "real" CURL PHP Extension nor the CURL console binary
|
||||
* are available, the library will emulate the CURL PHP extension (including
|
||||
* all curl_* functions) using a native, pure-PHP HTTP client implementation.
|
||||
* This implementation is somewhat limited, but it provides support for most
|
||||
* of the common CURL options. HTTPS (SSL) support is available in this
|
||||
* mode under PHP 4.3.0 if the OpenSSL Extension is loaded.
|
||||
*
|
||||
* Thus, by including this library in your project, you can rely on having some
|
||||
* level of CURL support regardless of the configuration of the server on which
|
||||
* it is being used.
|
||||
*
|
||||
*
|
||||
* HISTORY
|
||||
*
|
||||
* 1.0.4 (not released)
|
||||
* - Fixed HTTPRetriever double-inclusion bug.
|
||||
*
|
||||
*
|
||||
* USAGE
|
||||
*
|
||||
* Simply copy all of the libcurlemu files into your project directory, then:
|
||||
*
|
||||
* require_once("libcurlemu.inc.php");
|
||||
*
|
||||
* After this, you can use all of the curl_* functions documented in the PHP
|
||||
* Manual.
|
||||
*
|
||||
*
|
||||
* EXAMPLE
|
||||
*
|
||||
* // CURL Extension Emulation Library Example
|
||||
* //
|
||||
* // Usage should be straightforward; you simply use this script exactly as you
|
||||
* // would normally use the PHP CURL extension functions.
|
||||
*
|
||||
* // first, include libcurlemu.inc.php
|
||||
* require_once('libcurlemu.inc.php');
|
||||
*
|
||||
* // at this point, libcurlemu has detected the best available CURL solution
|
||||
* // (either the CURL extension, if available, or the CURL commandline binary,
|
||||
* // if available, or as a last resort, HTTPRetriever, our native-PHP HTTP
|
||||
* // client implementation) and has implemented the curl_* functions if
|
||||
* // necessary, so you can use CURL normally and safely assume that all CURL
|
||||
* // functions are available.
|
||||
*
|
||||
* // the rest of this example code is copied straight from the PHP manual's
|
||||
* // reference for the curl_init() function, and will work fine with libcurlemu
|
||||
*
|
||||
* // create a new CURL resource
|
||||
* $ch = curl_init();
|
||||
*
|
||||
* // set URL and other appropriate options
|
||||
* curl_setopt($ch, CURLOPT_URL, "http://www.example.com/");
|
||||
* curl_setopt($ch, CURLOPT_HEADER, false);
|
||||
*
|
||||
* // grab URL and pass it to the browser
|
||||
* curl_exec($ch);
|
||||
*
|
||||
* // close CURL resource, and free up system resources
|
||||
* curl_close($ch);
|
||||
*
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This script is free software; you can redistribute it and/or modify it under the
|
||||
* terms of the GNU General Public License as published by the Free Software
|
||||
* Foundation; either version 2 of the License, or (at your option) any later
|
||||
* version.
|
||||
*
|
||||
* This script is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
||||
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
|
||||
* details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this script; if not, write to the Free Software Foundation, Inc.,
|
||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
if (!extension_loaded('curl') && !function_exists('curl_init')) {
|
||||
define('CURLEXT_MISSING_ABORT',true);
|
||||
require_once("./modules/member/openid_lib/libcurlexternal.inc.php");
|
||||
|
||||
if (!function_exists('curl_init')) {
|
||||
if (!class_exists('HTTPRetriever')) require_once("./modules/member/openid_lib/class_HTTPRetriever.php");
|
||||
require_once("./modules/member/openid_lib/libcurlnative.inc.php");
|
||||
}
|
||||
}
|
||||
?>
|
||||
637
modules/member/openid_lib/libcurlexternal.inc.php
Executable file
637
modules/member/openid_lib/libcurlexternal.inc.php
Executable file
|
|
@ -0,0 +1,637 @@
|
|||
<?php
|
||||
/* CURL Extension Emulation Library (Console Binary)
|
||||
* Copyright 2004-2007, Steve Blinch
|
||||
* http://code.blitzaffe.com
|
||||
* ============================================================================
|
||||
*
|
||||
* DESCRIPTION
|
||||
*
|
||||
* Provides a pure-PHP implementation of the PHP CURL extension, for use on
|
||||
* systems which do not already have the CURL extension installed. It emulates
|
||||
* all of the curl_* functions normally provided by the CURL extension itself
|
||||
* by wrapping the CURL console binary.
|
||||
*
|
||||
* This library will automatically detect whether or not the "real" CURL
|
||||
* extension is installed, and if so, it will not interfere. Thus, it can be
|
||||
* used to ensure that, one way or another, the CURL functions are available
|
||||
* for use.
|
||||
*
|
||||
* This library is actually a wrapper for the CURL console application (usually
|
||||
* found in /usr/bin/curl), so you must have the CURL binary installed in order
|
||||
* to use this script.
|
||||
*
|
||||
*
|
||||
* USAGE
|
||||
*
|
||||
* Please see the PHP documentation under the "CURL, Client URL Library
|
||||
* Functions" section for information about using this library. Almost all of
|
||||
* the documentation and examples in the PHP manual should work with this
|
||||
* library.
|
||||
*
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This script is free software; you can redistribute it and/or modify it under the
|
||||
* terms of the GNU General Public License as published by the Free Software
|
||||
* Foundation; either version 2 of the License, or (at your option) any later
|
||||
* version.
|
||||
*
|
||||
* This script is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
||||
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
|
||||
* details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this script; if not, write to the Free Software Foundation, Inc.,
|
||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
// if the real CURL PHP extension is installed, exit without doing anything
|
||||
if (!extension_loaded("curl")) {
|
||||
|
||||
// if the CURL path was not defined by the calling script, define it
|
||||
if (!defined("CURL_PATH")) define("CURL_PATH","/usr/bin/curl");
|
||||
|
||||
// if the CURL binary was not found, do one of the following:
|
||||
// - if CURLEXT_MISSING_ABORT was defined, then exit without implementing the CURL functions
|
||||
// - if CURLEXT_MISSING_IGNORE was defined, then implement the CURL functions anyway (even
|
||||
// though they won't work without the CURL binary installed)
|
||||
// - otherwise, raise a fatal error and halt the script
|
||||
if (!is_executable(CURL_PATH)) {
|
||||
|
||||
if (defined("CURLEXT_MISSING_ABORT") && CURLEXT_MISSING_ABORT) {
|
||||
return;
|
||||
} elseif (defined("CURLEXT_MISSING_IGNORE") && CURLEXT_MISSING_IGNORE) {
|
||||
// proceed and implement the CURL functions anyway, even though they won't work
|
||||
} else {
|
||||
trigger_error("CURL extension is not loaded, and the commandline version of CURL was not found at ".CURL_PATH,E_USER_ERROR);
|
||||
}
|
||||
}
|
||||
|
||||
define("CURLEXT_VERSION","1.0.0");
|
||||
|
||||
define('CURLOPT_NOTHING',0);
|
||||
define('CURLOPT_FILE',10001);
|
||||
define('CURLOPT_URL',10002);
|
||||
define('CURLOPT_PORT',3);
|
||||
define('CURLOPT_PROXY',10004);
|
||||
define('CURLOPT_USERPWD',10005);
|
||||
define('CURLOPT_PROXYUSERPWD',10006);
|
||||
define('CURLOPT_RANGE',10007);
|
||||
define('CURLOPT_INFILE',10009);
|
||||
define('CURLOPT_ERRORBUFFER',10010);
|
||||
define('CURLOPT_WRITEFUNCTION',20011);
|
||||
define('CURLOPT_READFUNCTION',20012);
|
||||
define('CURLOPT_TIMEOUT',13);
|
||||
define('CURLOPT_INFILESIZE',14);
|
||||
define('CURLOPT_POSTFIELDS',10015);
|
||||
define('CURLOPT_REFERER',10016);
|
||||
define('CURLOPT_FTPPORT',10017);
|
||||
define('CURLOPT_USERAGENT',10018);
|
||||
define('CURLOPT_LOW_SPEED_LIMIT',19);
|
||||
define('CURLOPT_LOW_SPEED_TIME',20);
|
||||
define('CURLOPT_RESUME_FROM',21);
|
||||
define('CURLOPT_COOKIE',10022);
|
||||
define('CURLOPT_HTTPHEADER',10023);
|
||||
define('CURLOPT_HTTPPOST',10024);
|
||||
define('CURLOPT_SSLCERT',10025);
|
||||
define('CURLOPT_SSLCERTPASSWD',10026);
|
||||
define('CURLOPT_SSLKEYPASSWD',10026);
|
||||
define('CURLOPT_CRLF',27);
|
||||
define('CURLOPT_QUOTE',10028);
|
||||
define('CURLOPT_WRITEHEADER',10029);
|
||||
define('CURLOPT_COOKIEFILE',10031);
|
||||
define('CURLOPT_SSLVERSION',32);
|
||||
define('CURLOPT_TIMECONDITION',33);
|
||||
define('CURLOPT_TIMEVALUE',34);
|
||||
define('CURLOPT_HTTPREQUEST',10035);
|
||||
define('CURLOPT_CUSTOMREQUEST',10036);
|
||||
define('CURLOPT_STDERR',10037);
|
||||
define('CURLOPT_POSTQUOTE',10039);
|
||||
define('CURLOPT_WRITEINFO',10040);
|
||||
define('CURLOPT_VERBOSE',41);
|
||||
define('CURLOPT_HEADER',42);
|
||||
define('CURLOPT_NOPROGRESS',43);
|
||||
define('CURLOPT_NOBODY',44);
|
||||
define('CURLOPT_FAILONERROR',45);
|
||||
define('CURLOPT_UPLOAD',46);
|
||||
define('CURLOPT_POST',47);
|
||||
define('CURLOPT_FTPLISTONLY',48);
|
||||
define('CURLOPT_FTPAPPEND',50);
|
||||
define('CURLOPT_NETRC',51);
|
||||
define('CURLOPT_FOLLOWLOCATION',52);
|
||||
define('CURLOPT_FTPASCII',53);
|
||||
define('CURLOPT_TRANSFERTEXT',53);
|
||||
define('CURLOPT_PUT',54);
|
||||
define('CURLOPT_MUTE',55);
|
||||
define('CURLOPT_PROGRESSFUNCTION',20056);
|
||||
define('CURLOPT_PROGRESSDATA',10057);
|
||||
define('CURLOPT_AUTOREFERER',58);
|
||||
define('CURLOPT_PROXYPORT',59);
|
||||
define('CURLOPT_POSTFIELDSIZE',60);
|
||||
define('CURLOPT_HTTPPROXYTUNNEL',61);
|
||||
define('CURLOPT_INTERFACE',10062);
|
||||
define('CURLOPT_KRB4LEVEL',10063);
|
||||
define('CURLOPT_SSL_VERIFYPEER',64);
|
||||
define('CURLOPT_CAINFO',10065);
|
||||
define('CURLOPT_PASSWDFUNCTION',20066);
|
||||
define('CURLOPT_PASSWDDATA',10067);
|
||||
define('CURLOPT_MAXREDIRS',68);
|
||||
define('CURLOPT_FILETIME',10069);
|
||||
define('CURLOPT_TELNETOPTIONS',10070);
|
||||
define('CURLOPT_MAXCONNECTS',71);
|
||||
define('CURLOPT_CLOSEPOLICY',72);
|
||||
define('CURLOPT_CLOSEFUNCTION',20073);
|
||||
define('CURLOPT_FRESH_CONNECT',74);
|
||||
define('CURLOPT_FORBID_REUSE',75);
|
||||
define('CURLOPT_RANDOM_FILE',10076);
|
||||
define('CURLOPT_EGDSOCKET',10077);
|
||||
define('CURLOPT_CONNECTTIMEOUT',78);
|
||||
define('CURLOPT_HEADERFUNCTION',20079);
|
||||
define('CURLOPT_HTTPGET',80);
|
||||
define('CURLOPT_SSL_VERIFYHOST',81);
|
||||
define('CURLOPT_COOKIEJAR',10082);
|
||||
define('CURLOPT_SSL_CIPHER_LIST',10083);
|
||||
define('CURLOPT_HTTP_VERSION',84);
|
||||
define('CURLOPT_FTP_USE_EPSV',85);
|
||||
define('CURLOPT_SSLCERTTYPE',10086);
|
||||
define('CURLOPT_SSLKEY',10087);
|
||||
define('CURLOPT_SSLKEYTYPE',10088);
|
||||
define('CURLOPT_SSLENGINE',10089);
|
||||
define('CURLOPT_SSLENGINE_DEFAULT',90);
|
||||
define('CURLOPT_DNS_USE_GLOBAL_CACHE',91);
|
||||
define('CURLOPT_DNS_CACHE_TIMEOUT',92);
|
||||
define('CURLOPT_PREQUOTE',10093);
|
||||
|
||||
define('CURLINFO_EFFECTIVE_URL',1);
|
||||
define('CURLINFO_HTTP_CODE',2);
|
||||
define('CURLINFO_FILETIME',14);
|
||||
define('CURLINFO_TOTAL_TIME',3);
|
||||
define('CURLINFO_NAMELOOKUP_TIME',4);
|
||||
define('CURLINFO_CONNECT_TIME',5);
|
||||
define('CURLINFO_PRETRANSFER_TIME',6);
|
||||
define('CURLINFO_STARTTRANSFER_TIME',17);
|
||||
define('CURLINFO_REDIRECT_TIME',19);
|
||||
define('CURLINFO_REDIRECT_COUNT',20);
|
||||
define('CURLINFO_SIZE_UPLOAD',7);
|
||||
define('CURLINFO_SIZE_DOWNLOAD',8);
|
||||
define('CURLINFO_SPEED_DOWNLOAD',9);
|
||||
define('CURLINFO_SPEED_UPLOAD',10);
|
||||
define('CURLINFO_HEADER_SIZE',11);
|
||||
define('CURLINFO_REQUEST_SIZE',12);
|
||||
define('CURLINFO_SSL_VERIFYRESULT',13);
|
||||
define('CURLINFO_CONTENT_LENGTH_DOWNLOAD',15);
|
||||
define('CURLINFO_CONTENT_LENGTH_UPLOAD',16);
|
||||
define('CURLINFO_CONTENT_TYPE',18);
|
||||
|
||||
|
||||
define("TIMECOND_ISUNMODSINCE",1);
|
||||
define("TIMECOND_IFMODSINCE",2);
|
||||
|
||||
|
||||
function _curlopt_name($curlopt) {
|
||||
foreach (get_defined_constants() as $k=>$v) {
|
||||
if ( (substr($k,0,8)=="CURLOPT_") && ($v==$curlopt)) return $k;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
// Initialize a CURL emulation session
|
||||
function curl_init($url=false) {
|
||||
$i = $GLOBALS["_CURLEXT_OPT"]["index"]++;
|
||||
$GLOBALS["_CURLEXT_OPT"][$i] = array("url"=>$url);
|
||||
|
||||
return $i;
|
||||
}
|
||||
|
||||
// Set an option for a CURL emulation transfer
|
||||
function curl_setopt($ch,$option,$value) {
|
||||
|
||||
$opt = &$GLOBALS["_CURLEXT_OPT"][$ch];
|
||||
if (!$opt["args"]) $opt["args"] = array();
|
||||
$args = &$opt["args"];
|
||||
if (!$opt["settings"]) $opt["settings"] = array();
|
||||
$settings = &$opt["settings"];
|
||||
|
||||
switch($option) {
|
||||
case CURLOPT_URL:
|
||||
$opt["url"] = $value;
|
||||
break;
|
||||
case CURLOPT_VERBOSE:
|
||||
$opt["verbose"] = $value>0;
|
||||
break;
|
||||
case CURLOPT_USERPWD:
|
||||
if ($value==="") $value = false;
|
||||
$settings["user"] = $value;
|
||||
break;
|
||||
case CURLOPT_PROXYUSERPWD:
|
||||
if ($value==="") $value = false;
|
||||
$settings["proxy-user"] = $value;
|
||||
break;
|
||||
case CURLOPT_COOKIE:
|
||||
if ($value==="") $value = false;
|
||||
if ( is_bool($value) || (strpos($value,"=")!==false) ) $settings["cookie"] = $value;
|
||||
break;
|
||||
case CURLOPT_COOKIEFILE:
|
||||
if ($value==="") $value = false;
|
||||
$settings["cookie"] = $value;
|
||||
break;
|
||||
case CURLOPT_COOKIEJAR:
|
||||
if ($value==="") $value = false;
|
||||
$settings["cookie-jar"] = $value;
|
||||
break;
|
||||
case CURLOPT_CUSTOMREQUEST:
|
||||
if ($value==="") $value = false;
|
||||
$settings["request"] = $value;
|
||||
break;
|
||||
case CURLOPT_PROXY:
|
||||
if ($value==="") $value = false;
|
||||
$settings["proxy"] = $value;
|
||||
break;
|
||||
case CURLOPT_INTERFACE:
|
||||
if ($value==="") $value = false;
|
||||
$settings["interface"] = $value;
|
||||
break;
|
||||
case CURLOPT_KRB4LEVEL:
|
||||
if ($value==="") $value = false;
|
||||
$settings["krb4"] = $value;
|
||||
break;
|
||||
case CURLOPT_SSLCERT:
|
||||
$pass = "";
|
||||
if (is_string($settings["cert"])) {
|
||||
list(,$pass) = explode(":",$settings["cert"]);
|
||||
if (strlen($pass)) $pass = ":$pass";
|
||||
}
|
||||
$settings["cert"] = $value.$pass;
|
||||
break;
|
||||
case CURLOPT_SSLCERTPASSWD:
|
||||
$filename = "";
|
||||
if (is_string($settings["cert"])) {
|
||||
list($filename,) = explode(":",$settings["cert"]);
|
||||
}
|
||||
$settings["cert"] = $filename.":".$value;
|
||||
break;
|
||||
case CURLOPT_RANGE:
|
||||
if ($value==="") $value = false;
|
||||
$settings["range"] = $value;
|
||||
break;
|
||||
case CURLOPT_REFERER:
|
||||
if ($value==="") $value = false;
|
||||
$settings["referer"] = $value;
|
||||
break;
|
||||
case CURLOPT_NOBODY:
|
||||
$settings["head"] = $value>0;
|
||||
break;
|
||||
case CURLOPT_FAILONERROR:
|
||||
$opt["fail_on_error"] = $value>0;
|
||||
break;
|
||||
case CURLOPT_USERAGENT:
|
||||
$settings["user-agent"] = $value;
|
||||
break;
|
||||
case CURLOPT_HEADER:
|
||||
$settings["include"] = $value>0;
|
||||
break;
|
||||
case CURLOPT_RETURNTRANSFER:
|
||||
$opt["return_transfer"] = $value>0;
|
||||
break;
|
||||
case CURLOPT_TIMEOUT:
|
||||
$settings["max-time"] = (int) $value;
|
||||
break;
|
||||
case CURLOPT_HTTPHEADER:
|
||||
reset($value);
|
||||
foreach ($value as $k=>$header) $args[] = "header=".$header;
|
||||
break;
|
||||
case CURLOPT_POST:
|
||||
$settings["data"]["enabled"] = $value>0;
|
||||
break;
|
||||
case CURLOPT_POSTFIELDS:
|
||||
if ($value==="") $value = false;
|
||||
$settings["data"]["value"] = $value;
|
||||
break;
|
||||
case CURLOPT_SSL_VERIFYPEER:
|
||||
$settings["insecure"] = ($value==0);
|
||||
break;
|
||||
case CURLOPT_SSL_VERIFYHOST:
|
||||
// not supported by the commandline client
|
||||
break;
|
||||
case CURLOPT_FOLLOWLOCATION:
|
||||
$settings["location"] = $value>0;
|
||||
break;
|
||||
case CURLOPT_PUT:
|
||||
$settings["upload-file"]["enabled"] = $value>0;
|
||||
break;
|
||||
case CURLOPT_INFILE:
|
||||
if ($value==="") $value = false;
|
||||
|
||||
if (is_resource($value)) {
|
||||
|
||||
// Ugh, this is a terrible hack. The CURL extension accepts a file handle, but
|
||||
// the CURL binary obviously wants a filename. Since you can't derive a filename
|
||||
// from a file handle, we have to make a copy of the file from the file handle,
|
||||
// then pass the temporary filename to the CURL binary.
|
||||
|
||||
$tmpfilename = tempnam("/tmp","cif");
|
||||
$fp = @fopen($tmpfilename,"w");
|
||||
if (!$fp) {
|
||||
trigger_error("CURL emulation library could not create a temporary file for CURLOPT_INFILE; upload aborted",E_USER_WARNING);
|
||||
} else {
|
||||
while (!feof($value)) {
|
||||
$contents = fread($value,8192);
|
||||
fwrite($fp,$contents);
|
||||
}
|
||||
fclose($fp);
|
||||
// if a temporary file was previously created, unlink it
|
||||
if ($settings["upload-file"]["value"] && file_exists($settings["upload-file"]["value"])) unlink($settings["upload-file"]["value"]);
|
||||
|
||||
// set the new upload-file filename
|
||||
$settings["upload-file"]["value"] = $tmpfilename;
|
||||
}
|
||||
} else {
|
||||
trigger_error("CURLOPT_INFILE must specify a valid file resource",E_USER_WARNING);
|
||||
}
|
||||
|
||||
break;
|
||||
case CURLOPT_MUTE:
|
||||
// we're already mute, no?
|
||||
break;
|
||||
case CURLOPT_LOW_SPEED_LIMIT:
|
||||
$settings["speed-limit"] = (int) $value;
|
||||
break;
|
||||
case CURLOPT_LOW_SPEED_TIME:
|
||||
$settings["speed-time"] = (int) $value;
|
||||
break;
|
||||
case CURLOPT_RESUME_FROM:
|
||||
$settings["continue-at"] = (int) $value;
|
||||
break;
|
||||
case CURLOPT_CAINFO:
|
||||
if ($value==="") $value = false;
|
||||
$settings["cacert"] = $value;
|
||||
break;
|
||||
case CURLOPT_SSLVERSION:
|
||||
$value = (int) $value;
|
||||
switch($value) {
|
||||
case 2:
|
||||
case 3:
|
||||
unset($settings["sslv2"]);
|
||||
unset($settings["sslv3"]);
|
||||
$settings["sslv".$value] = true;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case CURLOPT_TIMECONDITION:
|
||||
// untested - I'm lazy :)
|
||||
if (!isset($settings["time-cond"]["enabled"])) $settings["time-cond"]["enabled"] = false;
|
||||
if (!$settings["time-cond"]["value"]) $settings["time-cond"]["value"] = 1;
|
||||
|
||||
$settings["time-cond"]["value"] = abs($settings["time-cond"]["value"]);
|
||||
if ($value==TIMECOND_ISUNMODSINCE) {
|
||||
$settings["time-cond"]["value"] *= -1;
|
||||
}
|
||||
|
||||
break;
|
||||
case CURLOPT_TIMEVALUE:
|
||||
// untested - I'm lazy :)
|
||||
if ($settings["time-cond"]["value"]) {
|
||||
$sign = $settings["time-cond"]["value"] / abs($settings["time-cond"]["value"]);
|
||||
} else {
|
||||
$sign = 1;
|
||||
}
|
||||
$settings["time-cond"]["value"] = (int) $value * $sign;
|
||||
break;
|
||||
case CURLOPT_FILE:
|
||||
if (is_resource($value)) {
|
||||
$opt["output_handle"] = $value;
|
||||
} else {
|
||||
trigger_error("CURLOPT_FILE must specify a valid file resource",E_USER_WARNING);
|
||||
}
|
||||
break;
|
||||
case CURLOPT_WRITEHEADER:
|
||||
if (is_resource($value)) {
|
||||
$opt["header_handle"] = $value;
|
||||
} else {
|
||||
trigger_error("CURLOPT_WRITEHEADER must specify a valid file resource",E_USER_WARNING);
|
||||
}
|
||||
break;
|
||||
case CURLOPT_STDERR:
|
||||
// not implemented for now - not really relevant
|
||||
break;
|
||||
// FTP stuff not implemented
|
||||
case CURLOPT_QUOTE:
|
||||
case CURLOPT_POSTQUOTE:
|
||||
case CURLOPT_UPLOAD:
|
||||
case CURLOPT_FTPLISTONLY:
|
||||
case CURLOPT_FTPAPPEND:
|
||||
case CURLOPT_FTPPORT:
|
||||
// Other stuff not implemented
|
||||
case CURLOPT_NETRC:
|
||||
default:
|
||||
trigger_error("CURL emulation does not implement CURL option "._curlopt_name($option),E_USER_WARNING);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// Perform a CURL emulation session
|
||||
function curl_exec($ch) {
|
||||
$opt = &$GLOBALS["_CURLEXT_OPT"][$ch];
|
||||
$url = $opt["url"];
|
||||
$verbose = $opt["verbose"];
|
||||
|
||||
// ask commandline CURL to return its statistics at the end of its output
|
||||
$opt["settings"]["write-out"] = "%{http_code}|%{time_total}|%{time_namelookup}|%{time_connect}|%{time_pretransfer}|%{time_starttransfer}|%{size_download}|%{size_upload}|%{size_header}|%{size_request}|%{speed_download}|%{speed_upload}|||||||%{content_type}|%{url_effective}";
|
||||
$writeout_order = array(
|
||||
CURLINFO_HTTP_CODE,
|
||||
CURLINFO_TOTAL_TIME,
|
||||
CURLINFO_NAMELOOKUP_TIME,
|
||||
CURLINFO_CONNECT_TIME,
|
||||
CURLINFO_PRETRANSFER_TIME,
|
||||
CURLINFO_STARTTRANSFER_TIME,
|
||||
CURLINFO_SIZE_DOWNLOAD,
|
||||
CURLINFO_SIZE_UPLOAD,
|
||||
CURLINFO_HEADER_SIZE,
|
||||
CURLINFO_REQUEST_SIZE,
|
||||
CURLINFO_SPEED_DOWNLOAD,
|
||||
CURLINFO_SPEED_UPLOAD,
|
||||
|
||||
// the following 5 items are not provided by commandline CURL, and thus are left empty
|
||||
CURLINFO_FILETIME,
|
||||
CURLINFO_REDIRECT_TIME,
|
||||
CURLINFO_SSL_VERIFYRESULT,
|
||||
CURLINFO_CONTENT_LENGTH_DOWNLOAD,
|
||||
CURLINFO_CONTENT_LENGTH_UPLOAD,
|
||||
CURLINFO_REDIRECT_COUNT,
|
||||
|
||||
CURLINFO_CONTENT_TYPE,
|
||||
CURLINFO_EFFECTIVE_URL,
|
||||
);
|
||||
|
||||
// if the CURLOPT_NOBODY option was specified (to remove the body from the output),
|
||||
// but an output file handle was set, we need to tell CURL to return the body so
|
||||
// that we can write it to the output handle and strip it from the output
|
||||
if ($opt["settings"]["head"] && $opt["output_handle"]) {
|
||||
unset($opt["settings"]["head"]);
|
||||
$strip_body = true;
|
||||
}
|
||||
// if the CURLOPT_HEADER option was NOT specified, but a header file handle was
|
||||
// specified, we again need to tell CURL to return the headers so we can write
|
||||
// them, then strip them from the output
|
||||
if (!isset($opt["settings"]["include"]) && isset($opt["header_handle"])) {
|
||||
$opt["settings"]["include"] = true;
|
||||
$strip_headers = true;
|
||||
}
|
||||
|
||||
// build the CURL argument list
|
||||
$arguments = "";
|
||||
foreach ($opt["args"] as $k=>$arg) {
|
||||
list($argname,$argval) = explode('=',$arg,2);
|
||||
$arguments .= "--$argname ".escapeshellarg($argval)." ";
|
||||
}
|
||||
foreach ($opt["settings"] as $argname=>$argval) {
|
||||
if (is_array($argval)) {
|
||||
if (isset($argval["enabled"]) && !$argval["enabled"]) continue;
|
||||
$argval = $argval["value"];
|
||||
}
|
||||
if ($argval===false) continue;
|
||||
if (is_bool($argval)) $argval = "";
|
||||
$arguments .= "--$argname ".escapeshellarg($argval)." ";
|
||||
}
|
||||
|
||||
// build the CURL commandline and execute it
|
||||
$cmd = CURL_PATH." ".$arguments." ".escapeshellarg($url);
|
||||
|
||||
if ($verbose) echo "libcurlemu: Executing: $cmd\n";
|
||||
exec($cmd,$output,$ret);
|
||||
|
||||
if ($verbose) {
|
||||
echo "libcurlemu: Result: ";
|
||||
var_dump($output);
|
||||
echo "libcurlemu: Exit code: $ret\n";
|
||||
}
|
||||
|
||||
// check for errors
|
||||
$opt["errno"] = $ret;
|
||||
if ($ret) $opt["error"] = "CURL error #$ret";
|
||||
|
||||
// die if CURLOPT_FAILONERROR is set and the HTTP result code is greater than 300
|
||||
if ($opt["fail_on_error"]) {
|
||||
if (preg_match("/^HTTP\/1.[0-9]+ ([0-9]{3}) /",$output[0],$matches)) {
|
||||
$resultcode = (int) $matches[1];
|
||||
if ($resultcode>300) die;
|
||||
} else {
|
||||
die; // couldn't get result code!
|
||||
}
|
||||
}
|
||||
|
||||
// pull the statistics out from the output
|
||||
$stats = explode('|',array_pop($output));
|
||||
foreach ($writeout_order as $k=>$item) {
|
||||
$opt["stats"][$item] = $stats[$k];
|
||||
}
|
||||
|
||||
// build the response string
|
||||
$output = implode("\r\n",$output);
|
||||
|
||||
|
||||
// find the header end position if needed
|
||||
if ($strip_headers || $strip_body || isset($opt["header_handle"])) {
|
||||
$headerpos = strpos($output,"\r\n\r\n");
|
||||
}
|
||||
|
||||
// if a file handle was provided for header output, extract the headers
|
||||
// and write them to the handle
|
||||
if (isset($opt["header_handle"])) {
|
||||
$headers = substr($output,0,$headerpos);
|
||||
fwrite($opt["header_handle"],$headers);
|
||||
}
|
||||
|
||||
// if the caller did not request headers in the output, strip them
|
||||
if ($strip_headers) {
|
||||
$output = substr($output,$headerpos+4);
|
||||
}
|
||||
|
||||
// if the caller did not request the response body in the output, strip it
|
||||
if ($strip_body) {
|
||||
if ($strip_headers) {
|
||||
$body = $output;
|
||||
$output = "";
|
||||
} else {
|
||||
$body = substr($output,$headerpos+4);
|
||||
$output = substr($output,0,$headerpos);
|
||||
}
|
||||
}
|
||||
|
||||
// if a file handle was provided for output, write the output to it
|
||||
if (isset($opt["output_handle"])) {
|
||||
fwrite($opt["output_handle"],$output);
|
||||
|
||||
// if the caller requested that the response be returned, return it
|
||||
} elseif ($opt["return_transfer"]) {
|
||||
return $output;
|
||||
|
||||
// otherwise, just echo the output to stdout
|
||||
} else {
|
||||
echo $output;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
function curl_close($ch) {
|
||||
$opt = &$GLOBALS["_CURLEXT_OPT"][$ch];
|
||||
|
||||
if ($opt["settings"]) {
|
||||
$settings = &$opt["settings"];
|
||||
// if the user used CURLOPT_INFILE to specify a file to upload, remove the
|
||||
// temporary file created for the CURL binary
|
||||
if ($settings["upload-file"]["value"] && file_exists($settings["upload-file"]["value"])) unlink($settings["upload-file"]["value"]);
|
||||
}
|
||||
|
||||
unset($GLOBALS["_CURLEXT_OPT"][$ch]);
|
||||
}
|
||||
|
||||
function curl_errno($ch) {
|
||||
return (int) $GLOBALS["_CURLEXT_OPT"][$ch]["errno"];
|
||||
}
|
||||
|
||||
function curl_error($ch) {
|
||||
return $GLOBALS["_CURLEXT_OPT"][$ch]["error"];
|
||||
}
|
||||
|
||||
function curl_getinfo($ch,$opt=NULL) {
|
||||
if ($opt) {
|
||||
return $GLOBALS["_CURLEXT_OPT"][$ch]["stats"][$opt];
|
||||
} else {
|
||||
$curlinfo_tags = array(
|
||||
"url"=>CURLINFO_EFFECTIVE_URL,
|
||||
"content_type"=>CURLINFO_CONTENT_TYPE,
|
||||
"http_code"=>CURLINFO_HTTP_CODE,
|
||||
"header_size"=>CURLINFO_HEADER_SIZE,
|
||||
"request_size"=>CURLINFO_REQUEST_SIZE,
|
||||
"filetime"=>CURLINFO_FILETIME,
|
||||
"ssl_verify_result"=>CURLINFO_SSL_VERIFYRESULT,
|
||||
"redirect_count"=>CURLINFO_REDIRECT_COUNT,
|
||||
"total_time"=>CURLINFO_TOTAL_TIME,
|
||||
"namelookup_time"=>CURLINFO_NAMELOOKUP_TIME,
|
||||
"connect_time"=>CURLINFO_CONNECT_TIME,
|
||||
"pretransfer_time"=>CURLINFO_PRETRANSFER_TIME,
|
||||
"size_upload"=>CURLINFO_SIZE_UPLOAD,
|
||||
"size_download"=>CURLINFO_SIZE_DOWNLOAD,
|
||||
"speed_download"=>CURLINFO_SPEED_DOWNLOAD,
|
||||
"speed_upload"=>CURLINFO_SPEED_UPLOAD,
|
||||
"download_content_length"=>CURLINFO_CONTENT_LENGTH_DOWNLOAD,
|
||||
"upload_content_length"=>CURLINFO_CONTENT_LENGTH_UPLOAD,
|
||||
"starttransfer_time"=>CURLINFO_STARTTRANSFER_TIME,
|
||||
"redirect_time"=>CURLINFO_REDIRECT_TIME
|
||||
);
|
||||
$res = array();
|
||||
foreach ($curlinfo_tags as $tag=>$opt) {
|
||||
$res[$tag] = $GLOBALS["_CURLEXT_OPT"][$ch]["stats"][$opt];
|
||||
}
|
||||
return $res;
|
||||
}
|
||||
}
|
||||
|
||||
function curl_version() {
|
||||
return "libcurlemu/".CURLEXT_VERSION."-ext";
|
||||
}
|
||||
|
||||
}
|
||||
?>
|
||||
453
modules/member/openid_lib/libcurlnative.inc.php
Executable file
453
modules/member/openid_lib/libcurlnative.inc.php
Executable file
|
|
@ -0,0 +1,453 @@
|
|||
<?php
|
||||
/* CURL Extension Emulation Library (Native PHP)
|
||||
* Copyright 2004-2007, Steve Blinch
|
||||
* http://code.blitzaffe.com
|
||||
* ============================================================================
|
||||
*
|
||||
* DESCRIPTION
|
||||
*
|
||||
* Provides a pure-PHP implementation of the PHP CURL extension, for use on
|
||||
* systems which do not already have the CURL extension installed. It emulates
|
||||
* all of the curl_* functions normally provided by the CURL extension itself,
|
||||
* and uses an internal, native-PHP HTTP library to make requests.
|
||||
*
|
||||
* This library will automatically detect whether or not the "real" CURL
|
||||
* extension is installed, and if so, it will not interfere. Thus, it can be
|
||||
* used to ensure that, one way or another, the CURL functions are available
|
||||
* for use.
|
||||
*
|
||||
* Note that this is only a *rough* emulation of CURL; it is not exact, and
|
||||
* many of CURL's options are not implemented. For a more precise emulation of
|
||||
* CURL, you may want to try our other libcurlexternal library which is based on
|
||||
* the CURL console binary (and is virtually identical to the CURL extension).
|
||||
*
|
||||
*
|
||||
* USAGE
|
||||
*
|
||||
* Please see the PHP documentation under the "CURL, Client URL Library
|
||||
* Functions" section for information about using this library. Almost all of
|
||||
* the documentation and examples in the PHP manual should work with this
|
||||
* library.
|
||||
*
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This script is free software; you can redistribute it and/or modify it under the
|
||||
* terms of the GNU General Public License as published by the Free Software
|
||||
* Foundation; either version 2 of the License, or (at your option) any later
|
||||
* version.
|
||||
*
|
||||
* This script is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
||||
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
|
||||
* details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this script; if not, write to the Free Software Foundation, Inc.,
|
||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
// if the real CURL PHP extension is installed, exit without doing anything;
|
||||
// if libcurlemu is installed and providing a wrapper for the CURL binary,
|
||||
// exit without doing anything
|
||||
if (!extension_loaded("curl") && !function_exists("curl_init")) {
|
||||
|
||||
|
||||
// if the CURL binary was not found, do one of the following:
|
||||
// - if CURLNAT_MISSING_ABORT was defined, then exit without
|
||||
// implementing the CURL functions
|
||||
// - otherwise, raise a fatal error and halt the script
|
||||
if (!class_exists("HTTPRetriever")) {
|
||||
if (is_readable("./modules/member/openid_lib/class_HTTPRetriever.php")) {
|
||||
define("HTTPR_NO_REDECLARE_CURL",true);
|
||||
require_once("./modules/member/openid_lib/class_HTTPRetriever.php");
|
||||
} else {
|
||||
if (defined("CURLNAT_MISSING_ABORT") && CURLNAT_MISSING_ABORT) {
|
||||
return;
|
||||
} else {
|
||||
trigger_error("CURL extension is not loaded, libcurlemu is not loaded, and the HTTPRetriever class is unavailable",E_USER_ERROR);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
define("CURLNAT_VERSION","1.0.0");
|
||||
|
||||
define('CURLOPT_NOTHING',0);
|
||||
define('CURLOPT_FILE',10001);
|
||||
define('CURLOPT_URL',10002);
|
||||
define('CURLOPT_PORT',3);
|
||||
define('CURLOPT_PROXY',10004);
|
||||
define('CURLOPT_USERPWD',10005);
|
||||
define('CURLOPT_PROXYUSERPWD',10006);
|
||||
define('CURLOPT_RANGE',10007);
|
||||
define('CURLOPT_INFILE',10009);
|
||||
define('CURLOPT_ERRORBUFFER',10010);
|
||||
define('CURLOPT_WRITEFUNCTION',20011);
|
||||
define('CURLOPT_READFUNCTION',20012);
|
||||
define('CURLOPT_TIMEOUT',13);
|
||||
define('CURLOPT_INFILESIZE',14);
|
||||
define('CURLOPT_POSTFIELDS',10015);
|
||||
define('CURLOPT_REFERER',10016);
|
||||
define('CURLOPT_FTPPORT',10017);
|
||||
define('CURLOPT_USERAGENT',10018);
|
||||
define('CURLOPT_LOW_SPEED_LIMIT',19);
|
||||
define('CURLOPT_LOW_SPEED_TIME',20);
|
||||
define('CURLOPT_RESUME_FROM',21);
|
||||
define('CURLOPT_COOKIE',10022);
|
||||
define('CURLOPT_HTTPHEADER',10023);
|
||||
define('CURLOPT_HTTPPOST',10024);
|
||||
define('CURLOPT_SSLCERT',10025);
|
||||
define('CURLOPT_SSLCERTPASSWD',10026);
|
||||
define('CURLOPT_SSLKEYPASSWD',10026);
|
||||
define('CURLOPT_CRLF',27);
|
||||
define('CURLOPT_QUOTE',10028);
|
||||
define('CURLOPT_WRITEHEADER',10029);
|
||||
define('CURLOPT_COOKIEFILE',10031);
|
||||
define('CURLOPT_SSLVERSION',32);
|
||||
define('CURLOPT_TIMECONDITION',33);
|
||||
define('CURLOPT_TIMEVALUE',34);
|
||||
define('CURLOPT_HTTPREQUEST',10035);
|
||||
define('CURLOPT_CUSTOMREQUEST',10036);
|
||||
define('CURLOPT_STDERR',10037);
|
||||
define('CURLOPT_POSTQUOTE',10039);
|
||||
define('CURLOPT_WRITEINFO',10040);
|
||||
define('CURLOPT_VERBOSE',41);
|
||||
define('CURLOPT_HEADER',42);
|
||||
define('CURLOPT_NOPROGRESS',43);
|
||||
define('CURLOPT_NOBODY',44);
|
||||
define('CURLOPT_FAILONERROR',45);
|
||||
define('CURLOPT_UPLOAD',46);
|
||||
define('CURLOPT_POST',47);
|
||||
define('CURLOPT_FTPLISTONLY',48);
|
||||
define('CURLOPT_FTPAPPEND',50);
|
||||
define('CURLOPT_NETRC',51);
|
||||
define('CURLOPT_FOLLOWLOCATION',52);
|
||||
define('CURLOPT_FTPASCII',53);
|
||||
define('CURLOPT_TRANSFERTEXT',53);
|
||||
define('CURLOPT_PUT',54);
|
||||
define('CURLOPT_MUTE',55);
|
||||
define('CURLOPT_PROGRESSFUNCTION',20056);
|
||||
define('CURLOPT_PROGRESSDATA',10057);
|
||||
define('CURLOPT_AUTOREFERER',58);
|
||||
define('CURLOPT_PROXYPORT',59);
|
||||
define('CURLOPT_POSTFIELDSIZE',60);
|
||||
define('CURLOPT_HTTPPROXYTUNNEL',61);
|
||||
define('CURLOPT_INTERFACE',10062);
|
||||
define('CURLOPT_KRB4LEVEL',10063);
|
||||
define('CURLOPT_SSL_VERIFYPEER',64);
|
||||
define('CURLOPT_CAINFO',10065);
|
||||
define('CURLOPT_PASSWDFUNCTION',20066);
|
||||
define('CURLOPT_PASSWDDATA',10067);
|
||||
define('CURLOPT_MAXREDIRS',68);
|
||||
define('CURLOPT_FILETIME',10069);
|
||||
define('CURLOPT_TELNETOPTIONS',10070);
|
||||
define('CURLOPT_MAXCONNECTS',71);
|
||||
define('CURLOPT_CLOSEPOLICY',72);
|
||||
define('CURLOPT_CLOSEFUNCTION',20073);
|
||||
define('CURLOPT_FRESH_CONNECT',74);
|
||||
define('CURLOPT_FORBID_REUSE',75);
|
||||
define('CURLOPT_RANDOM_FILE',10076);
|
||||
define('CURLOPT_EGDSOCKET',10077);
|
||||
define('CURLOPT_CONNECTTIMEOUT',78);
|
||||
define('CURLOPT_HEADERFUNCTION',20079);
|
||||
define('CURLOPT_HTTPGET',80);
|
||||
define('CURLOPT_SSL_VERIFYHOST',81);
|
||||
define('CURLOPT_COOKIEJAR',10082);
|
||||
define('CURLOPT_SSL_CIPHER_LIST',10083);
|
||||
define('CURLOPT_HTTP_VERSION',84);
|
||||
define('CURLOPT_FTP_USE_EPSV',85);
|
||||
define('CURLOPT_SSLCERTTYPE',10086);
|
||||
define('CURLOPT_SSLKEY',10087);
|
||||
define('CURLOPT_SSLKEYTYPE',10088);
|
||||
define('CURLOPT_SSLENGINE',10089);
|
||||
define('CURLOPT_SSLENGINE_DEFAULT',90);
|
||||
define('CURLOPT_DNS_USE_GLOBAL_CACHE',91);
|
||||
define('CURLOPT_DNS_CACHE_TIMEOUT',92);
|
||||
define('CURLOPT_PREQUOTE',10093);
|
||||
|
||||
define('CURLINFO_EFFECTIVE_URL',1);
|
||||
define('CURLINFO_HTTP_CODE',2);
|
||||
define('CURLINFO_FILETIME',14);
|
||||
define('CURLINFO_TOTAL_TIME',3);
|
||||
define('CURLINFO_NAMELOOKUP_TIME',4);
|
||||
define('CURLINFO_CONNECT_TIME',5);
|
||||
define('CURLINFO_PRETRANSFER_TIME',6);
|
||||
define('CURLINFO_STARTTRANSFER_TIME',17);
|
||||
define('CURLINFO_REDIRECT_TIME',19);
|
||||
define('CURLINFO_REDIRECT_COUNT',20);
|
||||
define('CURLINFO_SIZE_UPLOAD',7);
|
||||
define('CURLINFO_SIZE_DOWNLOAD',8);
|
||||
define('CURLINFO_SPEED_DOWNLOAD',9);
|
||||
define('CURLINFO_SPEED_UPLOAD',10);
|
||||
define('CURLINFO_HEADER_SIZE',11);
|
||||
define('CURLINFO_REQUEST_SIZE',12);
|
||||
define('CURLINFO_SSL_VERIFYRESULT',13);
|
||||
define('CURLINFO_CONTENT_LENGTH_DOWNLOAD',15);
|
||||
define('CURLINFO_CONTENT_LENGTH_UPLOAD',16);
|
||||
define('CURLINFO_CONTENT_TYPE',18);
|
||||
|
||||
|
||||
define("TIMECOND_ISUNMODSINCE",1);
|
||||
define("TIMECOND_IFMODSINCE",2);
|
||||
|
||||
|
||||
function _curlopt_name($curlopt) {
|
||||
foreach (get_defined_constants() as $k=>$v) {
|
||||
if ( (substr($k,0,8)=="CURLOPT_") && ($v==$curlopt)) return $k;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
// Initialize a CURL emulation session
|
||||
function curl_init() {
|
||||
$i = $GLOBALS["_CURLNAT_OPT"]["index"]++;
|
||||
$GLOBALS["_CURLNAT_OPT"][$i] = array();
|
||||
$GLOBALS["_CURLNAT_OPT"][$i]["http"] = &new HTTPRetriever();
|
||||
$GLOBALS["_CURLNAT_OPT"][$i]["include_body"] = true;
|
||||
return $i;
|
||||
}
|
||||
|
||||
// Set an option for a CURL emulation transfer
|
||||
function curl_setopt($ch,$option,$value) {
|
||||
|
||||
$opt = &$GLOBALS["_CURLNAT_OPT"][$ch];
|
||||
if (!$opt["args"]) $opt["args"] = array();
|
||||
$args = &$opt["args"];
|
||||
if (!$opt["settings"]) $opt["settings"] = array();
|
||||
$settings = &$opt["settings"];
|
||||
$http = &$opt["http"];
|
||||
|
||||
switch($option) {
|
||||
case CURLOPT_URL:
|
||||
$opt["url"] = $value;
|
||||
break;
|
||||
case CURLOPT_CUSTOMREQUEST:
|
||||
$opt["method"] = $value;
|
||||
break;
|
||||
case CURLOPT_REFERER:
|
||||
$http->headers["Referer"] = $value;
|
||||
break;
|
||||
case CURLOPT_NOBODY:
|
||||
$opt["include_body"] = $value==0;
|
||||
break;
|
||||
case CURLOPT_FAILONERROR:
|
||||
$opt["fail_on_error"] = $value>0;
|
||||
break;
|
||||
case CURLOPT_USERAGENT:
|
||||
$http->headers["User-Agent"] = $value;
|
||||
break;
|
||||
case CURLOPT_HEADER:
|
||||
$opt["include_headers"] = $value>0;
|
||||
break;
|
||||
case CURLOPT_RETURNTRANSFER:
|
||||
$opt["return_transfer"] = $value>0;
|
||||
break;
|
||||
case CURLOPT_TIMEOUT:
|
||||
$opt["max-time"] = (int) $value;
|
||||
break;
|
||||
case CURLOPT_HTTPHEADER:
|
||||
reset($value);
|
||||
foreach ($value as $k=>$header) {
|
||||
list($headername,$headervalue) = explode(":",$header);
|
||||
$http->headers[$headername] = ltrim($headervalue);
|
||||
}
|
||||
break;
|
||||
case CURLOPT_POST:
|
||||
$opt["post"] = $value>0;
|
||||
break;
|
||||
case CURLOPT_POSTFIELDS:
|
||||
$opt["postdata"] = $value;
|
||||
break;
|
||||
case CURLOPT_MUTE:
|
||||
// we're already mute, no?
|
||||
break;
|
||||
case CURLOPT_FILE:
|
||||
if (is_resource($value)) {
|
||||
$opt["output_handle"] = $value;
|
||||
} else {
|
||||
trigger_error("CURLOPT_FILE must specify a valid file resource",E_USER_WARNING);
|
||||
}
|
||||
break;
|
||||
case CURLOPT_WRITEHEADER:
|
||||
if (is_resource($value)) {
|
||||
$opt["header_handle"] = $value;
|
||||
} else {
|
||||
trigger_error("CURLOPT_WRITEHEADER must specify a valid file resource",E_USER_WARNING);
|
||||
}
|
||||
break;
|
||||
case CURLOPT_STDERR:
|
||||
// not implemented for now - not really relevant
|
||||
break;
|
||||
|
||||
case CURLOPT_SSL_VERIFYPEER:
|
||||
case CURLOPT_SSL_VERIFYHOST:
|
||||
// these are automatically disabled using ssl:// anyway
|
||||
break;
|
||||
|
||||
case CURLOPT_USERPWD:
|
||||
list($curl_user,$curl_pass) = explode(':',$value,2);
|
||||
$http->auth_username = $curl_user;
|
||||
$http->auth_password = $curl_pass;
|
||||
break;
|
||||
|
||||
// Important stuff not implemented (as it's not yet supported by HTTPRetriever)
|
||||
case CURLOPT_PUT:
|
||||
case CURLOPT_INFILE:
|
||||
case CURLOPT_FOLLOWLOCATION:
|
||||
case CURLOPT_PROXYUSERPWD:
|
||||
case CURLOPT_COOKIE:
|
||||
case CURLOPT_COOKIEFILE:
|
||||
case CURLOPT_PROXY:
|
||||
case CURLOPT_RANGE:
|
||||
case CURLOPT_RESUME_FROM:
|
||||
|
||||
// Things that cannot (reasonably) be implemented here
|
||||
case CURLOPT_LOW_SPEED_LIMIT:
|
||||
case CURLOPT_LOW_SPEED_TIME:
|
||||
case CURLOPT_KRB4LEVEL:
|
||||
case CURLOPT_SSLCERT:
|
||||
case CURLOPT_SSLCERTPASSWD:
|
||||
case CURLOPT_SSLVERSION:
|
||||
case CURLOPT_INTERFACE:
|
||||
case CURLOPT_CAINFO:
|
||||
case CURLOPT_TIMECONDITION:
|
||||
case CURLOPT_TIMEVALUE:
|
||||
|
||||
// FTP stuff not implemented
|
||||
case CURLOPT_QUOTE:
|
||||
case CURLOPT_POSTQUOTE:
|
||||
case CURLOPT_UPLOAD:
|
||||
case CURLOPT_FTPLISTONLY:
|
||||
case CURLOPT_FTPAPPEND:
|
||||
case CURLOPT_FTPPORT:
|
||||
|
||||
// Other stuff not implemented
|
||||
case CURLOPT_VERBOSE:
|
||||
case CURLOPT_NETRC:
|
||||
default:
|
||||
//trigger_error("CURL emulation does not implement CURL option "._curlopt_name($option),E_USER_WARNING);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// Perform a CURL emulation session
|
||||
function curl_exec($ch) {
|
||||
$opt = &$GLOBALS["_CURLNAT_OPT"][$ch];
|
||||
$url = $opt["url"];
|
||||
|
||||
$http = &$opt["http"];
|
||||
$http->disable_curl = true; // avoid problems with recursion, since we *ARE* CURL
|
||||
|
||||
// set time limits if requested
|
||||
if ($opt["max-time"]) {
|
||||
$http->connect_timeout = $opt["max-time"];
|
||||
$http->max_time = $opt["max-time"];
|
||||
}
|
||||
|
||||
if ($opt["post"]) {
|
||||
$res = $http->post($url,$opt["postdata"]);
|
||||
} elseif ($opt["method"]) {
|
||||
$res = $http->custom($opt["method"],$url,$opt["postdata"]);
|
||||
} else {
|
||||
$res = $http->get($url);
|
||||
}
|
||||
|
||||
// check for errors
|
||||
$opt["errno"] = (!$res && $http->error) ? 1 : 0;
|
||||
if ($opt["errno"]) $opt["error"] = $http->error;
|
||||
|
||||
// die if CURLOPT_FAILONERROR is set and the HTTP result code is greater than 300
|
||||
if ($opt["fail_on_error"]) {
|
||||
if ($http->result_code>300) die;
|
||||
}
|
||||
|
||||
$opt["stats"] = $http->stats;
|
||||
|
||||
|
||||
$headers = "";
|
||||
foreach ($http->response_headers as $k=>$v) {
|
||||
$headers .= "$k: $v\r\n";
|
||||
}
|
||||
|
||||
// if a file handle was provided for header output, extract the headers
|
||||
// and write them to the handle
|
||||
if (isset($opt["header_handle"])) {
|
||||
fwrite($opt["header_handle"],$headers);
|
||||
}
|
||||
|
||||
$output = ($opt["include_headers"] ? $headers."\r\n" : "") . ($opt["include_body"] ? $http->response : "");
|
||||
|
||||
// if a file handle was provided for output, write the output to it
|
||||
if (isset($opt["output_handle"])) {
|
||||
fwrite($opt["output_handle"],$output);
|
||||
|
||||
// if the caller requested that the response be returned, return it
|
||||
} elseif ($opt["return_transfer"]) {
|
||||
return $output;
|
||||
|
||||
// otherwise, just echo the output to stdout
|
||||
} else {
|
||||
echo $output;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
function curl_close($ch) {
|
||||
$opt = &$GLOBALS["_CURLNAT_OPT"][$ch];
|
||||
|
||||
if ($opt["settings"]) {
|
||||
$settings = &$opt["settings"];
|
||||
// if the user used CURLOPT_INFILE to specify a file to upload, remove the
|
||||
// temporary file created for the CURL binary
|
||||
if ($settings["upload-file"]["value"] && file_exists($settings["upload-file"]["value"])) unlink($settings["upload-file"]["value"]);
|
||||
}
|
||||
|
||||
unset($GLOBALS["_CURLNAT_OPT"][$ch]);
|
||||
}
|
||||
|
||||
function curl_errno($ch) {
|
||||
return (int) $GLOBALS["_CURLNAT_OPT"][$ch]["errno"];
|
||||
}
|
||||
|
||||
function curl_error($ch) {
|
||||
return $GLOBALS["_CURLNAT_OPT"][$ch]["error"];
|
||||
}
|
||||
|
||||
function curl_getinfo($ch,$opt=NULL) {
|
||||
if ($opt) {
|
||||
$curlinfo_tags = array(
|
||||
CURLINFO_EFFECTIVE_URL=>"url",
|
||||
CURLINFO_CONTENT_TYPE=>"content_type",
|
||||
CURLINFO_HTTP_CODE=>"http_code",
|
||||
CURLINFO_HEADER_SIZE=>"header_size",
|
||||
CURLINFO_REQUEST_SIZE=>"request_size",
|
||||
CURLINFO_FILETIME=>"filetime",
|
||||
CURLINFO_SSL_VERIFYRESULT=>"ssl_verify_result",
|
||||
CURLINFO_REDIRECT_COUNT=>"redirect_count",
|
||||
CURLINFO_TOTAL_TIME=>"total_time",
|
||||
CURLINFO_NAMELOOKUP_TIME=>"namelookup_time",
|
||||
CURLINFO_CONNECT_TIME=>"connect_time",
|
||||
CURLINFO_PRETRANSFER_TIME=>"pretransfer_time",
|
||||
CURLINFO_SIZE_UPLOAD=>"size_upload",
|
||||
CURLINFO_SIZE_DOWNLOAD=>"size_download",
|
||||
CURLINFO_SPEED_DOWNLOAD=>"speed_download",
|
||||
CURLINFO_SPEED_UPLOAD=>"speed_upload",
|
||||
CURLINFO_CONTENT_LENGTH_DOWNLOAD=>"download_content_length",
|
||||
CURLINFO_CONTENT_LENGTH_UPLOAD=>"upload_content_length",
|
||||
CURLINFO_STARTTRANSFER_TIME=>"starttransfer_time",
|
||||
CURLINFO_REDIRECT_TIME=>"redirect_time"
|
||||
);
|
||||
|
||||
$key = $curlinfo_tags[$opt];
|
||||
return $GLOBALS["_CURLNAT_OPT"][$ch]["stats"][$key];
|
||||
} else {
|
||||
return $GLOBALS["_CURLNAT_OPT"][$ch]["stats"];
|
||||
}
|
||||
}
|
||||
|
||||
function curl_version() {
|
||||
return "libcurlemu/".CURLNAT_VERSION."-nat";
|
||||
}
|
||||
|
||||
}
|
||||
?>
|
||||
13
modules/member/queries/addFriend.xml
Normal file
13
modules/member/queries/addFriend.xml
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
<query id="addFriend" action="insert">
|
||||
<tables>
|
||||
<table name="member_friend" />
|
||||
</tables>
|
||||
<columns>
|
||||
<column name="friend_srl" var="friend_srl" notnull="notnull" />
|
||||
<column name="friend_group_srl" var="friend_group_srl" default="0" />
|
||||
<column name="member_srl" var="member_srl" notnull="notnull" />
|
||||
<column name="target_srl" var="target_srl" notnull="notnull" />
|
||||
<column name="list_order" var="list_order" />
|
||||
<column name="regdate" default="curdate()" />
|
||||
</columns>
|
||||
</query>
|
||||
11
modules/member/queries/addFriendGroup.xml
Normal file
11
modules/member/queries/addFriendGroup.xml
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
<query id="addFriendGroup" action="insert">
|
||||
<tables>
|
||||
<table name="member_friend_group" />
|
||||
</tables>
|
||||
<columns>
|
||||
<column name="friend_group_srl" var="friend_group_srl" default="sequence()" notnull="notnull" />
|
||||
<column name="member_srl" var="member_srl" notnull="notnull" />
|
||||
<column name="title" var="title" notnull="notnull" />
|
||||
<column name="regdate" default="curdate()" />
|
||||
</columns>
|
||||
</query>
|
||||
10
modules/member/queries/addMemberToGroup.xml
Normal file
10
modules/member/queries/addMemberToGroup.xml
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
<query id="addMemberToGroup" action="insert">
|
||||
<tables>
|
||||
<table name="member_group_member" />
|
||||
</tables>
|
||||
<columns>
|
||||
<column name="group_srl" var="group_srl" notnull="notnull" />
|
||||
<column name="member_srl" var="member_srl" notnull="notnull" />
|
||||
<column name="regdate" default="curdate()" />
|
||||
</columns>
|
||||
</query>
|
||||
16
modules/member/queries/addScrapDocument.xml
Normal file
16
modules/member/queries/addScrapDocument.xml
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
<query id="addScrapDocument" action="insert">
|
||||
<tables>
|
||||
<table name="member_scrap" />
|
||||
</tables>
|
||||
<columns>
|
||||
<column name="member_srl" var="member_srl" notnull="notnull" />
|
||||
<column name="document_srl" var="document_srl" default="0" />
|
||||
<column name="title" var="title" />
|
||||
<column name="user_id" var="user_id" />
|
||||
<column name="user_name" var="user_name" />
|
||||
<column name="nick_name" var="nick_name" />
|
||||
<column name="target_member_srl" var="target_member_srl" default="0" />
|
||||
<column name="regdate" default="curdate()" />
|
||||
<column name="list_order" default="sequence()" />
|
||||
</columns>
|
||||
</query>
|
||||
11
modules/member/queries/changeGroup.xml
Normal file
11
modules/member/queries/changeGroup.xml
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
<query id="changeGroup" action="update">
|
||||
<tables>
|
||||
<table name="member_group_member" />
|
||||
</tables>
|
||||
<columns>
|
||||
<column name="group_srl" var="target_group_srl" filter="number" notnull="notnull" />
|
||||
</columns>
|
||||
<conditions>
|
||||
<condition operation="equal" column="group_srl" var="source_group_srl" notnull="notnull" filter="number"/>
|
||||
</conditions>
|
||||
</query>
|
||||
11
modules/member/queries/chkDeniedID.xml
Normal file
11
modules/member/queries/chkDeniedID.xml
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
<query id="chkDeniedID" action="select">
|
||||
<tables>
|
||||
<table name="member_denied_user_id" />
|
||||
</tables>
|
||||
<columns>
|
||||
<column name="count(*)" alias="count" />
|
||||
</columns>
|
||||
<conditions>
|
||||
<condition operation="equal" column="user_id" var="user_id" />
|
||||
</conditions>
|
||||
</query>
|
||||
8
modules/member/queries/deleteDeniedID.xml
Normal file
8
modules/member/queries/deleteDeniedID.xml
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
<query id="deleteDeniedID" action="delete">
|
||||
<tables>
|
||||
<table name="member_denied_user_id" />
|
||||
</tables>
|
||||
<conditions>
|
||||
<condition operation="equal" column="user_id" var="user_id" notnull="notnull" />
|
||||
</conditions>
|
||||
</query>
|
||||
9
modules/member/queries/deleteFriend.xml
Normal file
9
modules/member/queries/deleteFriend.xml
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
<query id="deleteFriend" action="delete">
|
||||
<tables>
|
||||
<table name="member_friend" />
|
||||
</tables>
|
||||
<conditions>
|
||||
<condition operation="equal" column="member_srl" var="member_srl" notnull="notnull" filter="number" />
|
||||
<condition operation="in" column="friend_srl" var="friend_srls" notnull="notnull" pipe="and" />
|
||||
</conditions>
|
||||
</query>
|
||||
9
modules/member/queries/deleteFriendGroup.xml
Normal file
9
modules/member/queries/deleteFriendGroup.xml
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
<query id="deleteFriendGroup" action="delete">
|
||||
<tables>
|
||||
<table name="member_friend_group" />
|
||||
</tables>
|
||||
<conditions>
|
||||
<condition operation="equal" column="friend_group_srl" var="friend_group_srl" notnull="notnull" filter="number" />
|
||||
<condition operation="equal" column="member_srl" var="member_srl" notnull="notnull" filter="number" pipe="and" />
|
||||
</conditions>
|
||||
</query>
|
||||
8
modules/member/queries/deleteGroup.xml
Normal file
8
modules/member/queries/deleteGroup.xml
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
<query id="deleteGroup" action="delete">
|
||||
<tables>
|
||||
<table name="member_group" />
|
||||
</tables>
|
||||
<conditions>
|
||||
<condition operation="equal" column="group_srl" var="group_srl" notnull="notnull" filter="number" />
|
||||
</conditions>
|
||||
</query>
|
||||
8
modules/member/queries/deleteJoinForm.xml
Normal file
8
modules/member/queries/deleteJoinForm.xml
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
<query id="deleteJoinForm" action="delete">
|
||||
<tables>
|
||||
<table name="member_join_form" />
|
||||
</tables>
|
||||
<conditions>
|
||||
<condition operation="equal" column="member_join_form_srl" var="member_join_form_srl" notnull="notnull" filter="number" />
|
||||
</conditions>
|
||||
</query>
|
||||
8
modules/member/queries/deleteMember.xml
Normal file
8
modules/member/queries/deleteMember.xml
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
<query id="deleteMember" action="delete">
|
||||
<tables>
|
||||
<table name="member" />
|
||||
</tables>
|
||||
<conditions>
|
||||
<condition operation="equal" column="member_srl" var="member_srl" notnull="notnull" filter="number" />
|
||||
</conditions>
|
||||
</query>
|
||||
9
modules/member/queries/deleteMemberGroupMember.xml
Normal file
9
modules/member/queries/deleteMemberGroupMember.xml
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
<query id="deleteMemberGroupMember" action="delete">
|
||||
<tables>
|
||||
<table name="member_group_member" />
|
||||
</tables>
|
||||
<conditions>
|
||||
<condition operation="equal" column="member_srl" var="member_srl" notnull="notnull" filter="number" />
|
||||
<condition operation="equal" column="group_srl" var="group_srl" filter="number" pipe="and" />
|
||||
</conditions>
|
||||
</query>
|
||||
8
modules/member/queries/deleteMessage.xml
Normal file
8
modules/member/queries/deleteMessage.xml
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
<query id="deleteMessage" action="delete">
|
||||
<tables>
|
||||
<table name="member_message" />
|
||||
</tables>
|
||||
<conditions>
|
||||
<condition operation="equal" column="message_srl" var="message_srl" notnull="notnull" filter="number" />
|
||||
</conditions>
|
||||
</query>
|
||||
11
modules/member/queries/deleteMessages.xml
Normal file
11
modules/member/queries/deleteMessages.xml
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
<query id="deleteMessages" action="delete">
|
||||
<tables>
|
||||
<table name="member_message" />
|
||||
</tables>
|
||||
<conditions>
|
||||
<condition operation="in" column="message_srl" var="message_srls" notnull="notnull" />
|
||||
<condition operation="equal" column="message_type" var="message_type" notnull="notnull" pipe="and" />
|
||||
<condition operation="equal" column="sender_srl" var="sender_srl" pipe="and" />
|
||||
<condition operation="equal" column="receiver_srl" var="receiver_srl" pipe="and" />
|
||||
</conditions>
|
||||
</query>
|
||||
9
modules/member/queries/deleteScrapDocument.xml
Normal file
9
modules/member/queries/deleteScrapDocument.xml
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
<query id="deleteScrapDocument" action="delete">
|
||||
<tables>
|
||||
<table name="member_scrap" />
|
||||
</tables>
|
||||
<conditions>
|
||||
<condition operation="equal" column="member_srl" var="member_srl" notnull="notnull" />
|
||||
<condition operation="equal" column="document_srl" var="document_srl" notnull="notnull" pipe="and" />
|
||||
</conditions>
|
||||
</query>
|
||||
11
modules/member/queries/getAdminGroup.xml
Normal file
11
modules/member/queries/getAdminGroup.xml
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
<query id="getAdminGroup" action="select">
|
||||
<tables>
|
||||
<table name="member_group" />
|
||||
</tables>
|
||||
<columns>
|
||||
<column name="*" />
|
||||
</columns>
|
||||
<conditions>
|
||||
<condition operation="equal" column="is_admin" default="Y" notnull="notnull" />
|
||||
</conditions>
|
||||
</query>
|
||||
11
modules/member/queries/getDefaultGroup.xml
Normal file
11
modules/member/queries/getDefaultGroup.xml
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
<query id="getDefaultGroup" action="select">
|
||||
<tables>
|
||||
<table name="member_group" />
|
||||
</tables>
|
||||
<columns>
|
||||
<column name="*" />
|
||||
</columns>
|
||||
<conditions>
|
||||
<condition operation="equal" column="is_default" default="Y" />
|
||||
</conditions>
|
||||
</query>
|
||||
14
modules/member/queries/getDeniedIDList.xml
Normal file
14
modules/member/queries/getDeniedIDList.xml
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
<query id="getDeniedIDList" action="select">
|
||||
<tables>
|
||||
<table name="member_denied_user_id" />
|
||||
</tables>
|
||||
<columns>
|
||||
<column name="*" />
|
||||
</columns>
|
||||
<navigation>
|
||||
<index var="sort_index" default="list_order" order="asc" />
|
||||
<list_count var="list_count" default="20" />
|
||||
<page_count var="page_count" default="10" />
|
||||
<page var="page" default="1" />
|
||||
</navigation>
|
||||
</query>
|
||||
12
modules/member/queries/getFriendGroup.xml
Normal file
12
modules/member/queries/getFriendGroup.xml
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
<query id="getFriendGroup" action="select">
|
||||
<tables>
|
||||
<table name="member_friend_group" />
|
||||
</tables>
|
||||
<columns>
|
||||
<column name="*" />
|
||||
</columns>
|
||||
<conditions>
|
||||
<condition operation="equal" column="member_srl" var="member_srl" />
|
||||
<condition operation="equal" column="friend_group_srl" var="friend_group_srl" pipe="and" />
|
||||
</conditions>
|
||||
</query>
|
||||
11
modules/member/queries/getFriendGroups.xml
Normal file
11
modules/member/queries/getFriendGroups.xml
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
<query id="getFriendGroups" action="select">
|
||||
<tables>
|
||||
<table name="member_friend_group" />
|
||||
</tables>
|
||||
<columns>
|
||||
<column name="*" />
|
||||
</columns>
|
||||
<conditions>
|
||||
<condition operation="equal" column="member_srl" var="member_srl" />
|
||||
</conditions>
|
||||
</query>
|
||||
20
modules/member/queries/getFriends.xml
Normal file
20
modules/member/queries/getFriends.xml
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
<query id="getFriends" action="select">
|
||||
<tables>
|
||||
<table name="member_friend" alias="friend" />
|
||||
<table name="member" alias="member" />
|
||||
</tables>
|
||||
<columns>
|
||||
<column name="*" />
|
||||
</columns>
|
||||
<conditions>
|
||||
<condition operation="equal" column="friend.friend_group_srl" var="friend_group_srl" />
|
||||
<condition operation="equal" column="friend.member_srl" var="member_srl" pipe="and" />
|
||||
<condition operation="equal" column="member.member_srl" var="friend.target_srl" pipe="and" />
|
||||
</conditions>
|
||||
<navigation>
|
||||
<index var="sort_index" default="friend.list_order" order="asc" />
|
||||
<list_count var="list_count" default="10" />
|
||||
<page_count var="page_count" default="10" />
|
||||
<page var="page" default="1" />
|
||||
</navigation>
|
||||
</query>
|
||||
11
modules/member/queries/getGroup.xml
Normal file
11
modules/member/queries/getGroup.xml
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
<query id="getGroup" action="select">
|
||||
<tables>
|
||||
<table name="member_group" />
|
||||
</tables>
|
||||
<columns>
|
||||
<column name="*" />
|
||||
</columns>
|
||||
<conditions>
|
||||
<condition operation="equal" column="group_srl" var="group_srl" filter="number" notnull="notnull" />
|
||||
</conditions>
|
||||
</query>
|
||||
8
modules/member/queries/getGroups.xml
Normal file
8
modules/member/queries/getGroups.xml
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
<query id="getGroups" action="select">
|
||||
<tables>
|
||||
<table name="member_group" />
|
||||
</tables>
|
||||
<navigation>
|
||||
<index var="sort_index" default="group_srl" order="desc" />
|
||||
</navigation>
|
||||
</query>
|
||||
11
modules/member/queries/getJoinForm.xml
Normal file
11
modules/member/queries/getJoinForm.xml
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
<query id="getJoinForm" action="select">
|
||||
<tables>
|
||||
<table name="member_join_form" />
|
||||
</tables>
|
||||
<columns>
|
||||
<column name="*" />
|
||||
</columns>
|
||||
<conditions>
|
||||
<condition operation="equal" column="member_join_form_srl" var="member_join_form_srl" notnull="notnull" />
|
||||
</conditions>
|
||||
</query>
|
||||
11
modules/member/queries/getJoinFormList.xml
Normal file
11
modules/member/queries/getJoinFormList.xml
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
<query id="getJoinFormList" action="select">
|
||||
<tables>
|
||||
<table name="member_join_form" />
|
||||
</tables>
|
||||
<columns>
|
||||
<column name="*" />
|
||||
</columns>
|
||||
<navigation>
|
||||
<index var="sort_index" default="list_order" order="asc" />
|
||||
</navigation>
|
||||
</query>
|
||||
14
modules/member/queries/getMemberGroups.xml
Normal file
14
modules/member/queries/getMemberGroups.xml
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
<query id="getMemberGroups" action="select">
|
||||
<tables>
|
||||
<table name="member_group" alias="a"/>
|
||||
<table name="member_group_member" alias="b"/>
|
||||
</tables>
|
||||
<columns>
|
||||
<column name="a.title" alias="title" />
|
||||
<column name="a.group_srl" alias="group_srl" />
|
||||
</columns>
|
||||
<conditions>
|
||||
<condition operation="equal" column="b.member_srl" var="member_srl" filter="number" notnull="notnull" />
|
||||
<condition operation="equal" column="b.group_srl" var="a.group_srl" pipe="and" />
|
||||
</conditions>
|
||||
</query>
|
||||
11
modules/member/queries/getMemberInfo.xml
Normal file
11
modules/member/queries/getMemberInfo.xml
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
<query id="getMemberInfo" action="select">
|
||||
<tables>
|
||||
<table name="member" />
|
||||
</tables>
|
||||
<columns>
|
||||
<column name="*" />
|
||||
</columns>
|
||||
<conditions>
|
||||
<condition operation="equal" column="user_id" var="user_id" notnull="notnull" />
|
||||
</conditions>
|
||||
</query>
|
||||
11
modules/member/queries/getMemberInfoByMemberSrl.xml
Normal file
11
modules/member/queries/getMemberInfoByMemberSrl.xml
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
<query id="getMemberInfoByMemberSrl" action="select">
|
||||
<tables>
|
||||
<table name="member" />
|
||||
</tables>
|
||||
<columns>
|
||||
<column name="*" />
|
||||
</columns>
|
||||
<conditions>
|
||||
<condition operation="equal" column="member_srl" var="member_srl" notnull="notnull" />
|
||||
</conditions>
|
||||
</query>
|
||||
26
modules/member/queries/getMemberList.xml
Normal file
26
modules/member/queries/getMemberList.xml
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
<query id="getMemberList" action="select">
|
||||
<tables>
|
||||
<table name="member" />
|
||||
</tables>
|
||||
<columns>
|
||||
<column name="*" />
|
||||
</columns>
|
||||
<conditions>
|
||||
<condition operation="equal" column="is_admin" var="is_admin" />
|
||||
<condition operation="equal" column="denied" var="is_denied" pipe="and" />
|
||||
<group pipe="and">
|
||||
<condition operation="like" column="user_id" var="s_user_id" />
|
||||
<condition operation="like" column="user_name" var="s_user_name" pipe="or" />
|
||||
<condition operation="like" column="nick_name" var="s_nick_name" pipe="or" />
|
||||
<condition operation="like" column="email_address" var="s_email_address" pipe="or" />
|
||||
<condition operation="like_prefix" column="regdate" var="s_regdate" pipe="or" />
|
||||
<condition operation="like_prefix" column="last_login" var="s_last_login" pipe="or" />
|
||||
</group>
|
||||
</conditions>
|
||||
<navigation>
|
||||
<index var="sort_index" default="member_srl" order="desc" />
|
||||
<list_count var="list_count" default="20" />
|
||||
<page_count var="page_count" default="10" />
|
||||
<page var="page" default="1" />
|
||||
</navigation>
|
||||
</query>
|
||||
29
modules/member/queries/getMemberListWithinGroup.xml
Normal file
29
modules/member/queries/getMemberListWithinGroup.xml
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
<query id="getMemberListWithinGroup" action="select">
|
||||
<tables>
|
||||
<table name="member" alias="member"/>
|
||||
<table name="member_group_member" alias="member_group"/>
|
||||
</tables>
|
||||
<columns />
|
||||
<conditions>
|
||||
<condition operation="equal" column="member_group.group_srl" var="selected_group_srl" notnull="notnull" />
|
||||
<condition operation="equal" column="member.member_srl" var="member_group.member_srl" pipe="and" notnull="notnull" />
|
||||
<group pipe="and">
|
||||
<condition operation="equal" column="member.is_admin" var="is_admin" />
|
||||
<condition operation="equal" column="member.denied" var="is_denied" pipe="and" />
|
||||
</group>
|
||||
<group pipe="and">
|
||||
<condition operation="like" column="member.user_id" var="s_user_id" />
|
||||
<condition operation="like" column="member.user_name" var="s_user_name" pipe="or" />
|
||||
<condition operation="like" column="member.nick_name" var="s_nick_name" pipe="or" />
|
||||
<condition operation="like" column="member.email_address" var="s_email_address" pipe="or" />
|
||||
<condition operation="like_prefix" column="member.regdate" var="s_regdate" pipe="or" />
|
||||
<condition operation="like_prefix" column="member.last_login" var="s_last_login" pipe="or" />
|
||||
</group>
|
||||
</conditions>
|
||||
<navigation>
|
||||
<index var="sort_index" default="member.member_srl" order="desc" />
|
||||
<list_count var="list_count" default="20" />
|
||||
<page_count var="page_count" default="10" />
|
||||
<page var="page" default="1" />
|
||||
</navigation>
|
||||
</query>
|
||||
13
modules/member/queries/getMemberSrl.xml
Normal file
13
modules/member/queries/getMemberSrl.xml
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
<query id="getMemberSrl" action="select">
|
||||
<tables>
|
||||
<table name="member" />
|
||||
</tables>
|
||||
<columns>
|
||||
<column name="member_srl" />
|
||||
</columns>
|
||||
<conditions>
|
||||
<condition operation="equal" column="user_id" var="user_id" pipe="and" />
|
||||
<condition operation="equal" column="email_address" var="email_address" pipe="and" />
|
||||
<condition operation="equal" column="nick_name" var="nick_name" pipe="and" />
|
||||
</conditions>
|
||||
</query>
|
||||
11
modules/member/queries/getMessage.xml
Normal file
11
modules/member/queries/getMessage.xml
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
<query id="getMessage" action="select">
|
||||
<tables>
|
||||
<table name="member_message" />
|
||||
</tables>
|
||||
<columns>
|
||||
<column name="*" />
|
||||
</columns>
|
||||
<conditions>
|
||||
<condition operation="equal" column="message_srl" var="message_srl" notnull="notnull" />
|
||||
</conditions>
|
||||
</query>
|
||||
20
modules/member/queries/getNewMessage.xml
Normal file
20
modules/member/queries/getNewMessage.xml
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
<query id="getNewMessage" action="select">
|
||||
<tables>
|
||||
<table name="member_message" alias="member_message" />
|
||||
<table name="member" alias="member"/>
|
||||
</tables>
|
||||
<columns>
|
||||
<column name="*" />
|
||||
</columns>
|
||||
<conditions>
|
||||
<condition operation="equal" column="member_message.receiver_srl" var="receiver_srl" notnull="notnull" />
|
||||
<condition operation="equal" column="member_message.readed" var="readed" default="N" notnull="notnull" pipe="and" />
|
||||
<condition operation="equal" column="member_message.sender_srl" var="member.member_srl" pipe="and" />
|
||||
</conditions>
|
||||
<navigation>
|
||||
<index var="sort_index" default="member_message.list_order" order="desc" />
|
||||
<list_count var="list_count" default="1" />
|
||||
<page_count var="page_count" default="1" />
|
||||
<page var="page" default="1" />
|
||||
</navigation>
|
||||
</query>
|
||||
24
modules/member/queries/getReceivedMessages.xml
Normal file
24
modules/member/queries/getReceivedMessages.xml
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
<query id="getReceivedMessages" action="select">
|
||||
<tables>
|
||||
<table name="member_message" alias="message"/>
|
||||
<table name="member" alias="member" />
|
||||
</tables>
|
||||
<columns>
|
||||
<column name="message.*" />
|
||||
<column name="member.user_id" />
|
||||
<column name="member.member_srl" />
|
||||
<column name="member.nick_name" />
|
||||
<column name="member.user_name" />
|
||||
</columns>
|
||||
<conditions>
|
||||
<condition operation="equal" column="message.receiver_srl" var="member_srl" notnull="notnull" />
|
||||
<condition operation="equal" column="message.message_type" var="message_type" default="R" pipe="and" />
|
||||
<condition operation="equal" column="message.sender_srl" var="member.member_srl" pipe="and"/>
|
||||
</conditions>
|
||||
<navigation>
|
||||
<index var="sort_index" default="message.list_order" order="asc" />
|
||||
<list_count var="list_count" default="20" />
|
||||
<page_count var="page_count" default="10" />
|
||||
<page var="page" default="1" />
|
||||
</navigation>
|
||||
</query>
|
||||
12
modules/member/queries/getScrapDocument.xml
Normal file
12
modules/member/queries/getScrapDocument.xml
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
<query id="getScrapDocument" action="select">
|
||||
<tables>
|
||||
<table name="member_scrap" />
|
||||
</tables>
|
||||
<columns>
|
||||
<column name="count(*)" alias="count" />
|
||||
</columns>
|
||||
<conditions>
|
||||
<condition operation="equal" column="member_srl" var="member_srl" notnull="notnull" />
|
||||
<condition operation="equal" column="document_srl" var="document_srl" notnull="notnull" pipe="and" />
|
||||
</conditions>
|
||||
</query>
|
||||
17
modules/member/queries/getScrapDocumentList.xml
Normal file
17
modules/member/queries/getScrapDocumentList.xml
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
<query id="getScrapDocumentList" action="select">
|
||||
<tables>
|
||||
<table name="member_scrap" />
|
||||
</tables>
|
||||
<columns>
|
||||
<column name="*" />
|
||||
</columns>
|
||||
<conditions>
|
||||
<condition operation="equal" column="member_srl" var="member_srl" filter="number" />
|
||||
</conditions>
|
||||
<navigation>
|
||||
<index var="sort_index" default="list_order" order="desc" />
|
||||
<list_count var="list_count" default="20" />
|
||||
<page_count var="page_count" default="10" />
|
||||
<page var="page" default="1" />
|
||||
</navigation>
|
||||
</query>
|
||||
20
modules/member/queries/getSendedMessages.xml
Normal file
20
modules/member/queries/getSendedMessages.xml
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
<query id="getSendedMessages" action="select">
|
||||
<tables>
|
||||
<table name="member_message" alias="message"/>
|
||||
<table name="member" alias="member" />
|
||||
</tables>
|
||||
<columns>
|
||||
<column name="*" />
|
||||
</columns>
|
||||
<conditions>
|
||||
<condition operation="equal" column="message.sender_srl" var="member_srl" notnull="notnull" />
|
||||
<condition operation="equal" column="message.message_type" var="message_type" default="S" pipe="and" />
|
||||
<condition operation="equal" column="message.receiver_srl" var="member.member_srl" pipe="and"/>
|
||||
</conditions>
|
||||
<navigation>
|
||||
<index var="sort_index" default="message.list_order" order="asc" />
|
||||
<list_count var="list_count" default="20" />
|
||||
<page_count var="page_count" default="10" />
|
||||
<page var="page" default="1" />
|
||||
</navigation>
|
||||
</query>
|
||||
20
modules/member/queries/getStoredMessages.xml
Normal file
20
modules/member/queries/getStoredMessages.xml
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
<query id="getStoredMessages" action="select">
|
||||
<tables>
|
||||
<table name="member_message" alias="message"/>
|
||||
<table name="member" alias="member" />
|
||||
</tables>
|
||||
<columns>
|
||||
<column name="*" />
|
||||
</columns>
|
||||
<conditions>
|
||||
<condition operation="equal" column="message.receiver_srl" var="member_srl" notnull="notnull" />
|
||||
<condition operation="equal" column="message.message_type" var="message_type" default="T" pipe="and" />
|
||||
<condition operation="equal" column="message.sender_srl" var="member.member_srl" pipe="and"/>
|
||||
</conditions>
|
||||
<navigation>
|
||||
<index var="sort_index" default="message.list_order" order="asc" />
|
||||
<list_count var="list_count" default="20" />
|
||||
<page_count var="page_count" default="10" />
|
||||
<page var="page" default="1" />
|
||||
</navigation>
|
||||
</query>
|
||||
11
modules/member/queries/insertDeniedID.xml
Normal file
11
modules/member/queries/insertDeniedID.xml
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
<query id="insertGroup" action="insert">
|
||||
<tables>
|
||||
<table name="member_denied_user_id" />
|
||||
</tables>
|
||||
<columns>
|
||||
<column name="user_id" var="user_id" notnull="notnull" />
|
||||
<column name="regdate" default="curdate()" />
|
||||
<column name="description" var="description" default="" />
|
||||
<column name="list_order" var="list_order" />
|
||||
</columns>
|
||||
</query>
|
||||
13
modules/member/queries/insertGroup.xml
Normal file
13
modules/member/queries/insertGroup.xml
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
<query id="insertGroup" action="insert">
|
||||
<tables>
|
||||
<table name="member_group" />
|
||||
</tables>
|
||||
<columns>
|
||||
<column name="group_srl" var="group_srl" default="sequence()" notnull="notnull" />
|
||||
<column name="title" var="title" notnull="notnull" />
|
||||
<column name="is_default" var="is_default" default="N" notnull="notnull" />
|
||||
<column name="is_admin" var="is_admin" default="N" notnull="notnull" />
|
||||
<column name="regdate" default="curdate()" />
|
||||
<column name="description" var="description" default="" />
|
||||
</columns>
|
||||
</query>
|
||||
17
modules/member/queries/insertJoinForm.xml
Normal file
17
modules/member/queries/insertJoinForm.xml
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
<query id="insertJoinForm" action="insert">
|
||||
<tables>
|
||||
<table name="member_join_form" />
|
||||
</tables>
|
||||
<columns>
|
||||
<column name="member_join_form_srl" var="member_join_form_srl" default="sequence()" notnull="notnull" />
|
||||
<column name="column_type" var="column_type" />
|
||||
<column name="column_name" var="column_name" />
|
||||
<column name="column_title" var="column_title" />
|
||||
<column name="required" var="required" default="N" />
|
||||
<column name="default_value" var="default_value" />
|
||||
<column name="is_active" var="is_active" default="N" />
|
||||
<column name="description" var="description" />
|
||||
<column name="regdate" default="curdate()" />
|
||||
<column name="list_order" var="list_order" default="1" />
|
||||
</columns>
|
||||
</query>
|
||||
27
modules/member/queries/insertMember.xml
Normal file
27
modules/member/queries/insertMember.xml
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
<query id="insertMember" action="insert">
|
||||
<tables>
|
||||
<table name="member" />
|
||||
</tables>
|
||||
<columns>
|
||||
<column name="member_srl" var="member_srl" filter="number" notnull="notnull" />
|
||||
<column name="user_id" var="user_id" filter="userid" notnull="notnull" />
|
||||
<column name="email_address" var="email_address" filter="email" notnull="notnull" />
|
||||
<column name="password" var="password" notnull="notnull" />
|
||||
<column name="email_id" var="email_id" notnull="notnull" />
|
||||
<column name="email_host" var="email_host" notnull="notnull" />
|
||||
<column name="user_name" var="user_name" notnull="notnull" minlength="1" maxlength="40" />
|
||||
<column name="nick_name" var="nick_name" notnull="notnull" minlength="1" maxlength="40" />
|
||||
<column name="homepage" var="homepage" />
|
||||
<column name="blog" var="blog" />
|
||||
<column name="birthday" var="birthday" />
|
||||
<column name="allow_mailing" var="allow_mailing" default="Y" />
|
||||
<column name="allow_message" var="allow_message" default="Y" />
|
||||
<column name="denied" var="denied" default="N" />
|
||||
<column name="limit_date" var="limit_date" />
|
||||
<column name="regdate" var="regdate" default="curdate()" />
|
||||
<column name="last_login" var="last_login" default="curdate()" />
|
||||
<column name="is_admin" var="is_admin" default="N" />
|
||||
<column name="description" var="description" />
|
||||
<column name="extra_vars" var="extra_vars" />
|
||||
</columns>
|
||||
</query>
|
||||
12
modules/member/queries/isAddedFriend.xml
Normal file
12
modules/member/queries/isAddedFriend.xml
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
<query id="isAddedFriend" action="select">
|
||||
<tables>
|
||||
<table name="member_friend" />
|
||||
</tables>
|
||||
<columns>
|
||||
<column name="count(*)" alias="count" />
|
||||
</columns>
|
||||
<conditions>
|
||||
<condition operation="equal" column="member_srl" var="member_srl" notnull="notnull" />
|
||||
<condition operation="equal" column="target_srl" var="target_srl" pipe="and" notnull="notnull" />
|
||||
</conditions>
|
||||
</query>
|
||||
12
modules/member/queries/moveFriend.xml
Normal file
12
modules/member/queries/moveFriend.xml
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
<query id="moveFriend" action="update">
|
||||
<tables>
|
||||
<table name="member_friend" />
|
||||
</tables>
|
||||
<columns>
|
||||
<column name="friend_group_srl" var="friend_group_srl" default="0" notnull="notnull" />
|
||||
</columns>
|
||||
<conditions>
|
||||
<condition operation="equal" column="member_srl" var="member_srl" notnull="notnull" filter="number"/>
|
||||
<condition operation="in" column="friend_srl" var="friend_srls" notnull="notnull" pipe="and" />
|
||||
</conditions>
|
||||
</query>
|
||||
12
modules/member/queries/renameFriendGroup.xml
Normal file
12
modules/member/queries/renameFriendGroup.xml
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
<query id="renameFriendGroup" action="update">
|
||||
<tables>
|
||||
<table name="member_friend_group" />
|
||||
</tables>
|
||||
<columns>
|
||||
<column name="title" var="title" notnull="notnull" />
|
||||
</columns>
|
||||
<conditions>
|
||||
<condition operation="equal" column="friend_group_srl" var="friend_group_srl" notnull="notnull" filter="number" />
|
||||
<condition operation="equal" column="member_srl" var="member_srl" notnull="notnull" filter="number" pipe="and" />
|
||||
</conditions>
|
||||
</query>
|
||||
17
modules/member/queries/sendMessage.xml
Normal file
17
modules/member/queries/sendMessage.xml
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
<query id="sendMessage" action="insert">
|
||||
<tables>
|
||||
<table name="member_message" />
|
||||
</tables>
|
||||
<columns>
|
||||
<column name="message_srl" var="message_srl" notnull="notnull" />
|
||||
<column name="related_srl" var="related_srl" default="0" />
|
||||
<column name="list_order" var="list_order" notnull="notnull" />
|
||||
<column name="sender_srl" var="sender_srl" notnull="notnull" />
|
||||
<column name="receiver_srl" var="receiver_srl" notnull="notnull" />
|
||||
<column name="message_type" var="message_type" notnull="notnull" />
|
||||
<column name="title" var="title" notnull="notnull" />
|
||||
<column name="content" var="content" notnull="notnull" />
|
||||
<column name="readed" var="readed" notnull="notnull" />
|
||||
<column name="regdate" var="regdate" default="curdate()" />
|
||||
</columns>
|
||||
</query>
|
||||
13
modules/member/queries/setMessageReaded.xml
Normal file
13
modules/member/queries/setMessageReaded.xml
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
<query id="setMessageReaded" action="update">
|
||||
<tables>
|
||||
<table name="member_message" />
|
||||
</tables>
|
||||
<columns>
|
||||
<column name="readed" default="Y" />
|
||||
<column name="readed_date" default="curdate()" />
|
||||
</columns>
|
||||
<conditions>
|
||||
<condition operation="equal" column="message_srl" var="message_srl" notnull="notnull" filter="number"/>
|
||||
<condition operation="equal" column="related_srl" var="related_srl" notnull="notnull" filter="number" pipe="or" />
|
||||
</conditions>
|
||||
</query>
|
||||
12
modules/member/queries/setMessageStored.xml
Normal file
12
modules/member/queries/setMessageStored.xml
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
<query id="setMessageStored" action="update">
|
||||
<tables>
|
||||
<table name="member_message" />
|
||||
</tables>
|
||||
<columns>
|
||||
<column name="message_type" default="T" />
|
||||
</columns>
|
||||
<conditions>
|
||||
<condition operation="equal" column="message_srl" var="message_srl" notnull="notnull" filter="number"/>
|
||||
<condition operation="equal" column="receiver_srl" var="receiver_srl" notnull="notnull" filter="number" pipe="and" />
|
||||
</conditions>
|
||||
</query>
|
||||
13
modules/member/queries/updateGroup.xml
Normal file
13
modules/member/queries/updateGroup.xml
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
<query id="updateGroup" action="update">
|
||||
<tables>
|
||||
<table name="member_group" />
|
||||
</tables>
|
||||
<columns>
|
||||
<column name="title" var="title" notnull="notnull" />
|
||||
<column name="is_default" var="is_default" default="N" notnull="notnull" />
|
||||
<column name="description" var="description" default="" />
|
||||
</columns>
|
||||
<conditions>
|
||||
<condition operation="equal" column="group_srl" var="group_srl" notnull="notnull" filter="number" />
|
||||
</conditions>
|
||||
</query>
|
||||
8
modules/member/queries/updateGroupDefaultClear.xml
Normal file
8
modules/member/queries/updateGroupDefaultClear.xml
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
<query id="updateGroupDefaultClear" action="update">
|
||||
<tables>
|
||||
<table name="member_group" />
|
||||
</tables>
|
||||
<columns>
|
||||
<column name="is_default" default="N" />
|
||||
</columns>
|
||||
</query>
|
||||
17
modules/member/queries/updateJoinForm.xml
Normal file
17
modules/member/queries/updateJoinForm.xml
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
<query id="updateJoinForm" action="update">
|
||||
<tables>
|
||||
<table name="member_join_form" />
|
||||
</tables>
|
||||
<columns>
|
||||
<column name="column_type" var="column_type" />
|
||||
<column name="column_name" var="column_name" />
|
||||
<column name="column_title" var="column_title" />
|
||||
<column name="required" var="required" default="N" />
|
||||
<column name="default_value" var="default_value" />
|
||||
<column name="is_active" var="is_active" default="N" />
|
||||
<column name="description" var="description" />
|
||||
</columns>
|
||||
<conditions>
|
||||
<condition operation="equal" column="member_join_form_srl" var="member_join_form_srl" notnull="notnull" filter="number"/>
|
||||
</conditions>
|
||||
</query>
|
||||
12
modules/member/queries/updateLastLogin.xml
Normal file
12
modules/member/queries/updateLastLogin.xml
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
<query id="updateLastLogin" action="update">
|
||||
<tables>
|
||||
<table name="member" />
|
||||
</tables>
|
||||
<columns>
|
||||
<column name="member_srl" var="member_srl" filter="number" notnull="notnull" />
|
||||
<column name="last_login" var="last_login" notnull="notnul" default="curdate()" />
|
||||
</columns>
|
||||
<conditions>
|
||||
<condition operation="equal" column="member_srl" var="member_srl" notnull="notnull" filter="number"/>
|
||||
</conditions>
|
||||
</query>
|
||||
25
modules/member/queries/updateMember.xml
Normal file
25
modules/member/queries/updateMember.xml
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
<query id="updateMember" action="update">
|
||||
<tables>
|
||||
<table name="member" />
|
||||
</tables>
|
||||
<columns>
|
||||
<column name="email_address" var="email_address" filter="email" notnull="notnull" />
|
||||
<column name="password" var="password" notnull="notnull" />
|
||||
<column name="email_id" var="email_id" notnull="notnull" />
|
||||
<column name="email_host" var="email_host" notnull="notnull" />
|
||||
<column name="user_name" var="user_name" notnull="notnull" minlength="2" maxlength="40" />
|
||||
<column name="nick_name" var="nick_name" notnull="notnull" minlength="2" maxlength="40" />
|
||||
<column name="homepage" var="homepage" />
|
||||
<column name="blog" var="blog" />
|
||||
<column name="birthday" var="birthday" />
|
||||
<column name="allow_mailing" var="allow_mailing" default="Y" />
|
||||
<column name="allow_message" var="allow_message" default="Y" />
|
||||
<column name="denied" var="denied" />
|
||||
<column name="is_admin" var="is_admin" />
|
||||
<column name="description" var="description" />
|
||||
<column name="extra_vars" var="extra_vars" />
|
||||
</columns>
|
||||
<conditions>
|
||||
<condition operation="equal" column="member_srl" var="member_srl" notnull="notnull" filter="number"/>
|
||||
</conditions>
|
||||
</query>
|
||||
11
modules/member/queries/updateMemberJoinFormListorder.xml
Normal file
11
modules/member/queries/updateMemberJoinFormListorder.xml
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
<query id="updateMemberJoinFormListorder" action="update">
|
||||
<tables>
|
||||
<table name="member_join_form" />
|
||||
</tables>
|
||||
<columns>
|
||||
<column name="list_order" var="list_order" notnull="notnull" />
|
||||
</columns>
|
||||
<conditions>
|
||||
<condition operation="equal" column="member_join_form_srl" var="member_join_form_srl" notnull="notnull" filter="number" />
|
||||
</conditions>
|
||||
</query>
|
||||
11
modules/member/queries/updateMemberPassword.xml
Normal file
11
modules/member/queries/updateMemberPassword.xml
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
<query id="updateMemberPassword" action="update">
|
||||
<tables>
|
||||
<table name="member" />
|
||||
</tables>
|
||||
<columns>
|
||||
<column name="password" var="password" notnull="notnull" />
|
||||
</columns>
|
||||
<conditions>
|
||||
<condition operation="equal" column="member_srl" var="member_srl" notnull="notnull" filter="number"/>
|
||||
</conditions>
|
||||
</query>
|
||||
22
modules/member/schemas/member.xml
Normal file
22
modules/member/schemas/member.xml
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
<table name="member">
|
||||
<column name="member_srl" type="number" size="11" notnull="notnull" primary_key="primary_key" />
|
||||
<column name="user_id" type="varchar" size="80" notnull="notnull" unique="unique_user_id" />
|
||||
<column name="email_address" type="varchar" size="250" notnull="notnull" unique="unique_email_address" />
|
||||
<column name="password" type="varchar" size="60" notnull="notnull" />
|
||||
<column name="email_id" type="varchar" size="80" notnull="notnull" />
|
||||
<column name="email_host" type="varchar" size="160" index="idx_email_host" />
|
||||
<column name="user_name" type="varchar" size="40" notnull="notnull"/>
|
||||
<column name="nick_name" type="varchar" size="40" notnull="notnull" unique="unique_nick_name"/>
|
||||
<column name="homepage" type="varchar" size="250" />
|
||||
<column name="blog" type="varchar" size="250" />
|
||||
<column name="birthday" type="char" size="8" />
|
||||
<column name="allow_mailing" type="char" size="1" default="Y" notnull="notnull" index="idx_allow_mailing" />
|
||||
<column name="allow_message" type="char" size="1" default="Y" notnull="notnull" />
|
||||
<column name="denied" type="char" size="1" default="N" index="idx_is_denied" />
|
||||
<column name="limit_date" type="date" />
|
||||
<column name="regdate" type="date" index="idx_regdate" />
|
||||
<column name="last_login" type="date" index="idx_last_login" />
|
||||
<column name="is_admin" type="char" size="1" default="N" index="idx_is_admin" />
|
||||
<column name="description" type="text" />
|
||||
<column name="extra_vars" type="text" />
|
||||
</table>
|
||||
6
modules/member/schemas/member_denied_user_id.xml
Normal file
6
modules/member/schemas/member_denied_user_id.xml
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
<table name="member_denied_user_id">
|
||||
<column name="user_id" type="varchar" size="80" notnull="notnull" primary_key="primary_key" />
|
||||
<column name="regdate" type="date" />
|
||||
<column name="description" type="text" />
|
||||
<column name="list_order" type="number" size="11" notnull="notnull" index="idx_list_order" />
|
||||
</table>
|
||||
8
modules/member/schemas/member_friend.xml
Normal file
8
modules/member/schemas/member_friend.xml
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
<table name="member_friend">
|
||||
<column name="friend_srl" type="number" size="11" notnull="notnull" primary_key="primary_key" />
|
||||
<column name="friend_group_srl" type="number" size="11" default="0" notnull="notnull" index="idx_friend_group_srl" />
|
||||
<column name="member_srl" type="number" size="11" notnull="notnull" index="idx_member_srl" />
|
||||
<column name="target_srl" type="number" size="11" notnull="notnull" index="idx_target_srl" />
|
||||
<column name="list_order" type="number" size="11" notnull="notnull" index="idx_list_order" />
|
||||
<column name="regdate" type="date" />
|
||||
</table>
|
||||
7
modules/member/schemas/member_friend_group.xml
Normal file
7
modules/member/schemas/member_friend_group.xml
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
<table name="member_friend_group">
|
||||
<column name="friend_group_srl" type="number" size="11" notnull="notnull" primary_key="primary_key" />
|
||||
<column name="member_srl" type="number" size="11" notnull="notnull" index="index_owner_member_srl" />
|
||||
<column name="title" type="varchar" size="250" notnull="notnull" />
|
||||
<column name="regdate" type="date" />
|
||||
</table>
|
||||
|
||||
8
modules/member/schemas/member_group.xml
Normal file
8
modules/member/schemas/member_group.xml
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
<table name="member_group">
|
||||
<column name="group_srl" type="number" size="11" notnull="notnull" primary_key="primary_key" />
|
||||
<column name="title" type="varchar" size="80" notnull="notnull" unique="uni_member_group_title" />
|
||||
<column name="regdate" type="date" />
|
||||
<column name="is_default" type="char" default="N" />
|
||||
<column name="is_admin" type="char" default="N" />
|
||||
<column name="description" type="text" />
|
||||
</table>
|
||||
5
modules/member/schemas/member_group_member.xml
Normal file
5
modules/member/schemas/member_group_member.xml
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
<table name="member_group_member">
|
||||
<column name="group_srl" type="number" size="11" notnull="notnull" index="idx_group_member" />
|
||||
<column name="member_srl" type="number" size="11" notnull="notnull" index="idx_group_member" />
|
||||
<column name="regdate" type="date" />
|
||||
</table>
|
||||
12
modules/member/schemas/member_join_form.xml
Normal file
12
modules/member/schemas/member_join_form.xml
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
<table name="member_join_form">
|
||||
<column name="member_join_form_srl" type="number" size="11" notnull="notnull" primary_key="primary_key" />
|
||||
<column name="column_type" type="varchar" size="60" notnull="notnull" />
|
||||
<column name="column_name" type="varchar" size="60" notnull="notnull" />
|
||||
<column name="column_title" type="varchar" size="60" notnull="notnull" />
|
||||
<column name="required" type="char" size="1" default="N" notnull="notnull" />
|
||||
<column name="default_value" type="text" />
|
||||
<column name="is_active" type="char" size="1" default="Y" />
|
||||
<column name="description" type="text" />
|
||||
<column name="list_order" type="number" size="11" notnull="notnull" default="1" index="idx_list_order" />
|
||||
<column name="regdate" type="date" />
|
||||
</table>
|
||||
13
modules/member/schemas/member_message.xml
Normal file
13
modules/member/schemas/member_message.xml
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
<table name="member_message">
|
||||
<column name="message_srl" type="number" size="11" notnull="notnull" primary_key="primary_key" />
|
||||
<column name="related_srl" type="number" size="11" notnull="notnull" index="idx_related_srl" />
|
||||
<column name="sender_srl" type="number" size="11" notnull="notnull" index="idx_sender_srl" />
|
||||
<column name="receiver_srl" type="number" size="11" notnull="notnull" index="idx_receiver_srl" />
|
||||
<column name="message_type" type="char" size="1" default="S" notnull="notnull" />
|
||||
<column name="title" type="varchar" size="250" notnull="notnull" />
|
||||
<column name="content" type="text" notnull="notnull" />
|
||||
<column name="readed" type="char" size="1" default="N" notnull="notnull" />
|
||||
<column name="list_order" type="number" size="11" notnull="notnull" index="idx_list_order" />
|
||||
<column name="regdate" type="date" />
|
||||
<column name="readed_date" type="date" />
|
||||
</table>
|
||||
11
modules/member/schemas/member_scrap.xml
Normal file
11
modules/member/schemas/member_scrap.xml
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
<table name="member_scrap">
|
||||
<column name="member_srl" type="number" size="11" notnull="notnull" unique="unique_scrap" />
|
||||
<column name="document_srl" type="number" size="11" notnull="notnull" unique="unique_scrap" />
|
||||
<column name="title" type="varchar" size="250" />
|
||||
<column name="user_id" type="varchar" size="80" />
|
||||
<column name="user_name" type="varchar" size="80" notnull="notnull" />
|
||||
<column name="nick_name" type="varchar" size="80" notnull="notnull" />
|
||||
<column name="target_member_srl" type="number" size="11" notnull="notnull" />
|
||||
<column name="regdate" type="date" index="idx_regdate" />
|
||||
<column name="list_order" type="number" size="11" notnull="notnull" index="idx_list_order" />
|
||||
</table>
|
||||
49
modules/member/skins/cozy_simple/add_friend.html
Normal file
49
modules/member/skins/cozy_simple/add_friend.html
Normal file
|
|
@ -0,0 +1,49 @@
|
|||
<!--#include("./common_header.html")-->
|
||||
<!--%import("filter/add_friend.xml")-->
|
||||
|
||||
<div class="memberSmallBox w500pop">
|
||||
<div class="header">
|
||||
<h3>{$lang->cmd_add_friend}</h3>
|
||||
</div>
|
||||
|
||||
<form action="./" method="get" onsubmit="return procFilter(this, add_friend)">
|
||||
<input type="hidden" name="target_srl" value="{$target_info->member_srl}" />
|
||||
|
||||
<div class="complex">
|
||||
<table cellspacing="0" class="friend">
|
||||
<col width="110" />
|
||||
<col />
|
||||
<tr>
|
||||
<th scope="row"><img src="./images/common/txt_id.gif" alt="{$lang->user_id}" /></th>
|
||||
<td>{$target_info->user_id}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row"><img src="./images/common/txt_name.gif" alt="{$lang->user_name}"/></th>
|
||||
<td>{$target_info->user_name}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row"><img src="./images/common/txt_nickname.gif" alt="{$lang->nick_name}"/></th>
|
||||
<td><div class="member_{$target_info->member_srl}">{$target_info->nick_name}</div></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<div class="group">
|
||||
<select name="friend_group_srl" class="fl">
|
||||
<option value="">{$lang->default_friend_group}</option>
|
||||
<!--@foreach($friend_group_list as $key => $val)-->
|
||||
<option value="{$val->friend_group_srl}">{$val->title}</option>
|
||||
<!--@end-->
|
||||
</select>
|
||||
<span class="fr"><a href="{getUrl('act','dispMemberAddFriendGroup')}" onclick="popopen(this.href);return false;"><img src="./images/common/btn_add_group.gif" alt="{$lang->cmd_add_friend_group}" /></a></span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<ul class="help">
|
||||
<li class="first-child"><input type="image" src="./images/common/btn_ok.gif" title="{$lang->cmd_add_friend}" /></li>
|
||||
<li><a href="#" onclick="window.close();return false;"><img src="./images/common/btn_cancel2.gif" alt="{$lang->cmd_close}" /></a></li>
|
||||
</ul>
|
||||
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<!--#include("./common_footer.html")-->
|
||||
30
modules/member/skins/cozy_simple/add_friend_group.html
Normal file
30
modules/member/skins/cozy_simple/add_friend_group.html
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
<!--#include("./common_header.html")-->
|
||||
<!--%import("filter/add_friend_group.xml")-->
|
||||
|
||||
<div class="memberSmallBox w500pop">
|
||||
<form action="./" method="get" onsubmit="return procFilter(this, add_friend_group)">
|
||||
<input type="hidden" name="friend_group_srl" value="{$friend_group->friend_group_srl}" />
|
||||
|
||||
<div class="header">
|
||||
<h3>
|
||||
<!--@if($friend_group->friend_group_srl)-->
|
||||
{$lang->cmd_rename_friend_group}
|
||||
<!--@else-->
|
||||
{$lang->cmd_add_friend_group}
|
||||
<!--@end-->
|
||||
</h3>
|
||||
</div>
|
||||
|
||||
<div class="text">
|
||||
<p>{$lang->msg_insert_group_name}</p>
|
||||
<input name="title" type="text" class="inputTypeText" value="{htmlspecialchars($friend_group->title)}"/>
|
||||
</div>
|
||||
|
||||
<ul class="help">
|
||||
<li class="first-child"><input type="image" src="./images/common/btn_ok.gif" title="{$lang->cmd_add_friend}" /></li>
|
||||
<li><a href="#" onclick="window.close();return false;"><img src="./images/common/btn_cancel2.gif" alt="{$lang->cmd_close}" /></a></li>
|
||||
</ul>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<!--#include("./common_footer.html")-->
|
||||
1
modules/member/skins/cozy_simple/common_footer.html
Normal file
1
modules/member/skins/cozy_simple/common_footer.html
Normal file
|
|
@ -0,0 +1 @@
|
|||
</div>
|
||||
35
modules/member/skins/cozy_simple/common_header.html
Normal file
35
modules/member/skins/cozy_simple/common_header.html
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
<!--%import("js/member.js")-->
|
||||
<!-- 컬러셋 체크 -->
|
||||
<!--@if(!$member_config->colorset)-->
|
||||
{@$member_config->colorset = "red"}
|
||||
<!--@end-->
|
||||
|
||||
<!-- CSS 파일 로드 (컬러셋에 따라서) -->
|
||||
<!--%import("css/common.css")-->
|
||||
<!--@if($member_config->colorset == "bluish_green")--> <!--%import("css/bluish_green.css")-->
|
||||
<!--@elseif($member_config->colorset == "pink")--> <!--%import("css/pink.css")-->
|
||||
<!--@elseif($member_config->colorset == "blue")--> <!--%import("css/blue.css")-->
|
||||
<!--@elseif($member_config->colorset == "green")--> <!--%import("css/green.css")-->
|
||||
<!--@else--> <!--%import("css/red.css")-->
|
||||
<!--@end-->
|
||||
|
||||
|
||||
<div id="memberModule">
|
||||
|
||||
<!--@if($member_title)-->
|
||||
<div class="boardHeader">
|
||||
<h3>{$member_title}</h3>
|
||||
|
||||
<!--@if($is_logged && $my_menu)-->
|
||||
<form action="./" method="get" class="member_option">
|
||||
<input type="hidden" name="mid" value="{$mid}" />
|
||||
<select name="act">
|
||||
<!--@foreach($my_menu as $key => $val)-->
|
||||
<option value="{$key}" <!--@if($key == $act)-->selected="selected"<!--@end-->>{$val}</option>
|
||||
<!--@end-->
|
||||
</select>
|
||||
<input type="image" src="./images/button_go.gif" class="buttonTypeGo"/>
|
||||
</form>
|
||||
<!--@end-->
|
||||
</div>
|
||||
<!--@end-->
|
||||
33
modules/member/skins/cozy_simple/css/blue.css
Normal file
33
modules/member/skins/cozy_simple/css/blue.css
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
@charset "utf-8";
|
||||
|
||||
/* boardHeader */
|
||||
.boardHeader { position:relative; _width:100%; background:#1187d8 url(../images/blue/bg_top_title.gif) no-repeat 23px top; overflow:hidden;}
|
||||
.boardList { width:100%; position:relative; border-bottom:2px solid #1187d8; border-collapse:collapse; }
|
||||
.memberList th.repeat_bg { background:#ffffff url(../images/blue/bg_title_repeat_x.gif) repeat-x left bottom;}
|
||||
.memberList th {padding:1.2em .5em 1.1em .6em; background:#ffffff url(../images/blue/bg_title.gif) no-repeat left bottom; white-space:nowrap;}
|
||||
.messageList th {padding:1.2em .5em 1.1em .6em; background:#ffffff url(../images/blue/bg_title.gif) no-repeat left bottom; white-space:nowrap;}
|
||||
.messageList th.author { background:url(../images/blue/bg_title_repeat_x.gif) repeat-x left bottom; text-align:left;}
|
||||
.messageList { width:100%; position:relative; border-bottom:2px solid #1187d8; border-collapse:collapse; margin-bottom:2.2em;}
|
||||
.memberList { width:100%; position:relative; border-bottom:2px solid #1187d8; border-collapse:collapse; margin-bottom:2.2em;}
|
||||
.joinTable.typeA { border-top:2px solid #1187d8; border-collapse:collapse;}
|
||||
.joinTable.typeB { border-bottom:2px solid #1187d8; background:#f9f9f9;}
|
||||
.messageList td.recommend { font:bold .8em Tahoma; color:#1187d8; text-align:center;}
|
||||
.memberInformation .friendNum strong { font:bold 11px Tahoma; color:#1187d8;}
|
||||
.memberSmallBox .header { position:relative; _width:100%; background:#1187d8; overflow:hidden;}
|
||||
.memberSmallBox .open_id_help { background:#F7F7F7; border-top:1px solid #1187d8; border-bottom:2px solid #1187d8; overflow:hidden; padding:1.1em; text-align:left; }
|
||||
.memberSmallBox .help { background:#F7F7F7; border-top:1px solid #1187d8; border-bottom:2px solid #1187d8; overflow:hidden; padding:1.1em; text-align:center; }
|
||||
.memberInformation .instantMessage li a strong { font:bold 0.75em tahoma; color:#1187d8;}
|
||||
|
||||
.boardList th {padding:1.2em .5em 1.1em .6em; background:#ffffff url(../images/blue/bg_title.gif) no-repeat left bottom; white-space:nowrap;}
|
||||
.boardList td .replyAndTrackback { font:.8em Tahoma; color:#007ed5; cursor:default; position:relative; top:-.2em;}
|
||||
.boardList td.recommend { font:bold .8em Tahoma; color:#007ed5; text-align:center;}
|
||||
|
||||
.pageNavigation .current { margin-left:-4px; font:bold .8em Tahoma; color:#007ed5; display:inline-block; padding:1px 5px 2px 4px; border-left:1px solid #dedfde; border-right:1px solid #CCCCCC; text-decoration:none; line-height:1em; }
|
||||
|
||||
.boardRead { position:relative; _width:100%; margin:1em 0 0 0; padding: 0 0 .6em 0; border-bottom:3px solid #1187d8;}
|
||||
.boardRead .readHeader { width:100%; padding-bottom:.5em; margin-bottom:1em; border-bottom:3px solid #1187d8; overflow:hidden;}
|
||||
.boardRead .replyAndTrackback li.selected { margin:0; padding:1em 1.1em .7em 1.4em; border:1px solid #EAEAEA; border-bottom:none; background:#FFFFFF; color:#007ed5;}
|
||||
|
||||
.boardWrite fieldset.bottomBorder { border-bottom:2px solid #f9f9f9;}
|
||||
.boardWrite div.title { padding:.5em 0 .65em 0; white-space:nowrap; background:#FFFFFF url(../images/blue/bg_title_norepeat.gif) no-repeat left bottom;}
|
||||
.boardWrite .option { width:100%; padding:.5em 0 .65em 0; background:#FFFFFF url(../images/blue/bg_title_norepeat.gif) no-repeat left bottom; overflow:hidden;}
|
||||
33
modules/member/skins/cozy_simple/css/bluish_green.css
Normal file
33
modules/member/skins/cozy_simple/css/bluish_green.css
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
@charset "utf-8";
|
||||
|
||||
/* boardHeader */
|
||||
.boardHeader { position:relative; _width:100%; background:#9ab09f url(../images/bluish_green/bg_top_title.gif) no-repeat 23px top; overflow:hidden;}
|
||||
.boardList { width:100%; position:relative; border-bottom:2px solid #9ab09f; border-collapse:collapse; }
|
||||
.memberList th.repeat_bg { background:#ffffff url(../images/bluish_green/bg_title_repeat_x.gif) repeat-x left bottom;}
|
||||
.memberList th {padding:1.2em .5em 1.1em .6em; background:#ffffff url(../images/bluish_green/bg_title.gif) no-repeat left bottom; white-space:nowrap;}
|
||||
.memberList { width:100%; position:relative; border-bottom:2px solid #9ab09f; border-collapse:collapse; margin-bottom:2.2em;}
|
||||
.messageList th {padding:1.2em .5em 1.1em .6em; background:#ffffff url(../images/bluish_green/bg_title.gif) no-repeat left bottom; white-space:nowrap;}
|
||||
.messageList th.author { background:url(../images/bluish_green/bg_title_repeat_x.gif) repeat-x left bottom; text-align:left;}
|
||||
.messageList { width:100%; position:relative; border-bottom:2px solid #9ab09f; border-collapse:collapse; margin-bottom:2.2em;}
|
||||
.joinTable.typeA { border-top:2px solid #9ab09f; border-collapse:collapse;}
|
||||
.joinTable.typeB { border-bottom:2px solid #9ab09f; background:#f9f9f9;}
|
||||
.messageList td.recommend { font:bold .8em Tahoma; color:#9ab09f; text-align:center;}
|
||||
.memberInformation .friendNum strong { font:bold 11px Tahoma; color:#9ab09f;}
|
||||
.memberInformation .instantMessage li a strong { font:bold 0.75em tahoma; color:#9ab09f;}
|
||||
.memberSmallBox .header { position:relative; _width:100%; background:#9ab09f; overflow:hidden;}
|
||||
.memberSmallBox .open_id_help { background:#F7F7F7; border-top:1px solid #9ab09f; border-bottom:2px solid #9ab09f; overflow:hidden; padding:1.1em; text-align:left; }
|
||||
.memberSmallBox .help { background:#F7F7F7; border-top:1px solid #9ab09f; border-bottom:2px solid #9ab09f; overflow:hidden; padding:1.1em; text-align:center; }
|
||||
|
||||
.boardList th {padding:1.2em .5em 1.1em .6em; background:#ffffff url(../images/bluish_green/bg_title.gif) no-repeat left bottom; white-space:nowrap;}
|
||||
.boardList td .replyAndTrackback { font:.8em Tahoma; color:#9ab09f; cursor:default; position:relative; top:-.2em;}
|
||||
.boardList td.recommend { font:bold .8em Tahoma; color:#9ab09f; text-align:center;}
|
||||
|
||||
.pageNavigation .current { margin-left:-4px; font:bold .8em Tahoma; color:#9ab09f; display:inline-block; padding:1px 5px 2px 4px; border-left:1px solid #dedfde; border-right:1px solid #CCCCCC; text-decoration:none; line-height:1em; }
|
||||
|
||||
.boardRead { position:relative; _width:100%; margin:1em 0 0 0; padding: 0 0 .6em 0; border-bottom:3px solid #9ab09f;}
|
||||
.boardRead .readHeader { width:100%; padding-bottom:.5em; margin-bottom:1em; border-bottom:3px solid #9ab09f; overflow:hidden;}
|
||||
.boardRead .replyAndTrackback li.selected { margin:0; padding:1em 1.1em .7em 1.4em; border:1px solid #EAEAEA; border-bottom:none; background:#FFFFFF; color:#9ab09f;}
|
||||
|
||||
.boardWrite fieldset.bottomBorder { border-bottom:2px solid #f9f9f9;}
|
||||
.boardWrite div.title { padding:.5em 0 .65em 0; white-space:nowrap; background:#FFFFFF url(../images/bluish_green/bg_title_norepeat.gif) no-repeat left bottom;}
|
||||
.boardWrite .option { width:100%; padding:.5em 0 .65em 0; background:#FFFFFF url(../images/bluish_green/bg_title_norepeat.gif) no-repeat left bottom; overflow:hidden;}
|
||||
537
modules/member/skins/cozy_simple/css/common.css
Normal file
537
modules/member/skins/cozy_simple/css/common.css
Normal file
|
|
@ -0,0 +1,537 @@
|
|||
@charset "utf-8";
|
||||
/*
|
||||
NHN UIT Lab. WebStandardization Team (http://html.nhndesign.com/)
|
||||
Jeong, Chan Myeong 070601~070630
|
||||
*/
|
||||
.memberSmallBox.w400pop { width:400px; margin:0; padding:0;}
|
||||
.memberSmallBox.w500pop { width:500px; margin:0; padding:0;}
|
||||
.memberSmallBox.w600pop { width:600px; margin:0; padding:0;}
|
||||
|
||||
/* ----- List+Read+Write+Modify | Start ----- */
|
||||
.boardHeader h3 { float:left; clear:both; padding:1.9em 1.5em 1.8em 1.5em; font-size:1.2em; color:#FFFFFF;}
|
||||
.boardHeader .member_option { float:right; position:relative; top:3em; right:1em; }
|
||||
.boardHeader .member_option .buttonTypeGo { vertical-align:bottom; }
|
||||
|
||||
/* boardInformation */
|
||||
.boardInformation { width:100%; clear:both; margin:0 0 .5em 0; background:#EFEFEF; color:#8D8D8D; overflow:hidden;}
|
||||
.articleNum { float:left; padding:.5em 0 .5em 2.3em; font:.8em Tahoma;}
|
||||
.articleNum strong { margin:0 0 0 .5em; padding:0 0 0 .7em; font:bold .9em Tahoma; color:#6F6F6F; background:url(../images/common/bar_1x8_c0c0c0.gif) no-repeat left .1em;}
|
||||
.accountNavigation { float:right; margin:.3em .5em 0 0; overflow:hidden;}
|
||||
.accountNavigation li { list-style:none; float:left; margin:0 0 0 -.1em; padding:.1em .8em 0 .8em; background:url(../images/common/bar_1x7_c0c0c0.gif) no-repeat left .3em;}
|
||||
.accountNavigation li a {}
|
||||
|
||||
/* boardList */
|
||||
.boardList tr:first-child td, .boardList tr.first-child td {}
|
||||
.boardList tr.notice {}
|
||||
.boardList tr.notice .num { font:.9em "돋움", Dotum, "굴림", Gulim, AppleGothic, Sans-serif; font-weight:bold;}
|
||||
|
||||
.boardList th a { color:#3e3f3e;}
|
||||
.boardList th span.on { font-weight:bold;}
|
||||
.boardList th.num { background-position:-3px bottom; padding:0;}
|
||||
.boardList th select { height:20px; }
|
||||
.boardList th.category { padding:0 .2em 0 .5em;}
|
||||
.boardList th.category.thumbStyle { background-position:-3px bottom !important; border-left:1px solid #ffffff; text-align:left;}
|
||||
.boardList th:first-child { background-position:-2px bottom;}
|
||||
.boardList th.first-child { background-position:-2px bottom;}
|
||||
.boardList th.author {}
|
||||
.boardList th.title {}
|
||||
.boardList th.reading { white-space:nowrap;}
|
||||
.boardList th.recommend { white-space:nowrap;}
|
||||
.boardList th.reply { white-space:nowrap;}
|
||||
.boardList th.date {}
|
||||
.boardList th.check { padding:0;}
|
||||
.boardList th.user {}
|
||||
.boardList th.registDate {}
|
||||
.boardList th.checkDate {}
|
||||
.boardList th.friendGroup {}
|
||||
.boardList th.userId {}
|
||||
.boardList th.userName {}
|
||||
.boardList th.userNick {}
|
||||
.boardList th.sendMessage {}
|
||||
.boardList th.last-child { border-right:1px solid #ffffff;}
|
||||
.boardList th .sort { padding:0 .2em; vertical-align:middle;}
|
||||
.boardList th select,
|
||||
.boardList th input { vertical-align:middle;}
|
||||
|
||||
.boardList td { padding:.3em; border-bottom:1px solid #e4e4e2;}
|
||||
.boardList td.noline { border-bottom:none;}
|
||||
.boardList td.num { font:.8em Tahoma; color:#999999; padding:.5em .5em .5em 1.5em;}
|
||||
.boardList td.category {}
|
||||
.boardList tr.notice td { padding:.3em; white-space:nowrap;}
|
||||
.boardList tr.notice td img { margin:-.1em .3em 0 0;}
|
||||
.boardList td.thumb { padding:.5em 0 .5em .5em; width:145px; table-layout:fixed; white-space:nowrap;}
|
||||
.boardList td.thumb * { vertical-align:middle;}
|
||||
.boardList td.title.bold { font-size:1em; font-weight:bold;}
|
||||
.boardList td.title.bold a { position:relative; top:.3em;}
|
||||
.boardList td.title * { vertical-align:middle;}
|
||||
.boardList td.title,
|
||||
.boardList td.title a { color:#444444; text-decoration:none; }
|
||||
.boardList td.title a:visited { color:#777777;}
|
||||
.boardList td.title .title_wrap { width:100%; overflow:hidden; white-space:nowrap;}
|
||||
.boardList td.author { padding:0 .5em 0 1.3em; color:#333333; font:.95em "돋움", Dotum, "굴림", Gulim, AppleGothic, Sans-serif;}
|
||||
.boardList td.author a { font-size:1em; color:#333333;}
|
||||
.boardList td.reading { font:.8em Tahoma; color:#999999; text-align:center;}
|
||||
.boardList td.reply { font:bold .8em Tahoma; color:#ff6600; text-align:center;}
|
||||
.boardList td.date { font:.8em Tahoma; color:#999999; text-align:center;}
|
||||
.boardList td.registDate { font:.8em Tahoma; color:#999999; text-align:center;}
|
||||
.boardList td.checkDate { font:.8em Tahoma; color:#333333; text-align:center;}
|
||||
.boardList td.summary { border-top:none; vertical-align:top; color:#666666; line-height:1.25em;}
|
||||
.boardList td.summary a { color:#666666; text-decoration:none; line-height:inherit;}
|
||||
.boardList td.summary a:visited { color:#999999;}
|
||||
.boardList td.check { text-align:center;}
|
||||
.boardList td.user { color:#333333; font-size:.9em;}
|
||||
.boardList td.user a { color:#333333;}
|
||||
.boardList td.userId { font:.9em Tahoma;}
|
||||
.boardList td.userName {}
|
||||
.boardList td.userNick { font-size:.9em; color:#999999;}
|
||||
.boardList td.friendGroup {}
|
||||
.boardList td.sendMessage { text-align:center; padding:0;}
|
||||
.boardList td.sendMessage .buttonFixedLeft { position:relative; left:20%; _left:0;}
|
||||
*:first-child+html .boardList td.sendMessage .buttonFixedLeft { left:0;}
|
||||
.boardList td input { _margin:-3px;}
|
||||
.boardList td.title.bold .replyAndTrackback { font:.6em Tahoma; color:#ff6600; cursor:default; position:relative; top:.3em;}
|
||||
.boardList td .replyAndTrackback strong { font:bold 1em Tahoma;}
|
||||
|
||||
.boardList td .thumbnailSmall { margin:0 .3em 0 .3em;}
|
||||
.boardList td .thumbnailSmall img {}
|
||||
.boardList td .thumbnailMedium { margin:0 .3em 0 .3em;}
|
||||
.boardList td .thumbnailMedium img {}
|
||||
|
||||
.boardList.thumbnail {}
|
||||
.boardList.thumbnail td { border-top:none; border-bottom:1px solid #eff0ed; padding:1.5em 0 0 1.5em; overflow:hidden;}
|
||||
.boardList.thumbnail div.cell { float:left; width:131px; margin:0 1.6em 0 0; padding-bottom:1.5em;}
|
||||
.boardList.thumbnail div.cell .fix_img { width:131px; height:106px; overflow:hidden;}
|
||||
.boardList.thumbnail div.title { color:#444444; margin:.5em 0 .2em 0;}
|
||||
.boardList.thumbnail div.title a { color:#444444;}
|
||||
.boardList.thumbnail div.nameAndDate { font-size:.9em; color:#999999; margin-bottom:.2em; padding-left:3px;}
|
||||
.boardList.thumbnail div.nameAndDate a { color:#999999;}
|
||||
.boardList.thumbnail div.nameAndDate .date { font:.8em Tahoma; color:#999999;}
|
||||
.boardList.thumbnail div.readAndRecommend { font-size:.9em; color:#666666; padding-left:3px;}
|
||||
.boardList.thumbnail div.readAndRecommend .num { font:.8em Tahoma;}
|
||||
.boardList.thumbnail div.readAndRecommend .vr { color:#dddddd;}
|
||||
.boardList.thumbnail div.readAndRecommend strong.num { font:bold .8em Tahoma; color:#494949;}
|
||||
|
||||
/* boardSearch */
|
||||
.boardSearch { clear:both; text-align:center; margin-top:3em;}
|
||||
.boardSearch fieldset { display:inline; padding:10px 15px 10px 15px; border:none; background:#F4F4F4; overflow:hidden; }
|
||||
.boardSearch fieldset legend { overflow:hidden; width:1px; height:1px; font-size:.001em; text-indent:-100em;}
|
||||
.boardSearch * { vertical-align:middle;}
|
||||
.boardSearch select { float:left;}
|
||||
.boardSearch input { float:left; margin:0 .3em; background:#fbfbfb;}
|
||||
.searchButton ul { overflow:hidden;}
|
||||
.searchButton li { float:left; margin-right:.3em; list-style:none;}
|
||||
|
||||
.buttonTypeGo { border:none; cursor:pointer; background:url(../images/common/buttonTypeInput24.gif) no-repeat; font:.75em Tahoma; text-align:center;}
|
||||
|
||||
|
||||
/* pageNavigation */
|
||||
.pageNavigation { float:left; display:block; margin:0 0 2em 1.1em; font:bold .8em Tahoma; }
|
||||
.pageNavigation a, .pageNavigation a:visited, .pageNavigation a:active { margin-left:-4px; font:bold .8em Tahoma; color:#676767; display:inline-block; padding:1px 5px 2px 4px; border-left:1px solid #dedfde; border-right:1px solid #CCCCCC; text-decoration:none; line-height:1em; }
|
||||
.pageNavigation a:hover { text-decoration:none; }
|
||||
.pageNavigation a.goToFirst,
|
||||
.pageNavigation a.goToLast { border:none; border-right:1px solid #ffffff; border-left:1px solid #ffffff; z-index:99; padding:1px 5px 3px 4px;}
|
||||
.pageNavigation a.goToFirst img,
|
||||
.pageNavigation a.goToLast img { vertical-align:middle;}
|
||||
|
||||
.buttonBox { float:right; margin:1.2em 0 0 0; }
|
||||
|
||||
/* boardRead */
|
||||
#blog .boardRead { position:relative; margin:0; _overflow:hidden;}
|
||||
.boardRead .originalContent { padding:2em 0 2em 0;}
|
||||
.boardRead .titleAndCategory { float:left;}
|
||||
.boardRead .titleAndCategory h4 { font-size:1.4em; display:inline; padding-left:.2em;}
|
||||
.boardRead .titleAndCategory .vr { font-size:.9em; margin:0 .3em; color:#c5c7c0;}
|
||||
.boardRead .titleAndCategory .category { font-size:.9em; color:#999999; white-space:nowrap;}
|
||||
|
||||
.boardRead .dateAndModify { font-size:.8em; float:right; white-space:nowrap;}
|
||||
.boardRead .dateAndModify .date { font-size:.8em; font-family:Tahoma; color:#999999; margin-right:.5em; float:left; position:relative; top:.1em;}
|
||||
.boardRead .dateAndModify .date strong { font-size:1em; font-family:Tahoma;}
|
||||
.boardRead .dateAndModify ul { display:inline; margin:0 .4em 0 0;}
|
||||
.boardRead .dateAndModify ul li { float:left; margin-left:.3em; list-style:none;}
|
||||
.boardRead dl.uri { float:right; overflow:hidden; margin:0 0 3em .3em;}
|
||||
.boardRead dl.uri dt { float:left; clear:left; font-size:.9em; margin-right:.3em; color:#999999;}
|
||||
.boardRead dl.uri dd { clear:right; font-size:.8em; color:#d4d5d0;}
|
||||
.boardRead dl.uri dd span { font-family:Tahoma; color:#d4d5d0;}
|
||||
.boardRead .readBody { padding:0 .3em; color:#555555; overflow:hidden; margin-bottom:2em;}
|
||||
.boardRead .readBody p { margin:1em 0; line-height:1.5em;}
|
||||
.boardRead .contentBody { width:100%; overflow:hidden; }
|
||||
|
||||
.boardRead .userInfo { float:left; white-space:nowrap;}
|
||||
.boardRead .userInfo .author { padding:0 .3em 0 0; color:#3074a5; margin-right:.3em;}
|
||||
.boardRead .userInfo .ipaddress { font-size:.9em; font-family:Tahoma; color:#888888; margin-right:.5em; }
|
||||
|
||||
/* extraVars list */
|
||||
.extraVarsList { width:100%; border:1px solid #e0e1db; clear:both; margin-bottom:1em;}
|
||||
.extraVarsList tr.notice { background:#f8f8f8;}
|
||||
.extraVarsList tr.notice .num { font-size:.9em; font-weight:bold;}
|
||||
.extraVarsList tr.bg1 { background:#ffffff}
|
||||
.extraVarsList tr.bg2 { background:#fbfbfb;}
|
||||
.extraVarsList th { color:#3e3f3e; font-weight:bold; padding:.8em .5em .5em .5em; border-bottom:1px solid #eff0ed; border-right:1px solid #eff0ed;}
|
||||
.extraVarsList td { border-bottom:1px solid #eff0ed; padding:.5em .5em .5em 1em;}
|
||||
|
||||
.boardRead .readFooter { border-top:1px solid #dfe0db; }
|
||||
.boardRead .readFooter .tag { margin-bottom:1em; padding:1em 0 0 0; }
|
||||
.boardRead .readFooter .tag h5 { display:inline; font-size:1em; margin:0 .3em 0 1.8em;}
|
||||
.boardRead .readFooter .tag ul,
|
||||
.boardRead .readFooter .tag li { display:inline;}
|
||||
.boardRead .readFooter .tag a { color:#444444; text-decoration:none;}
|
||||
.boardRead .readFooter .tag .tagIcon { vertical-align:middle;}
|
||||
.boardRead .readFooter .fileAttached { padding:1em 1em .8em 0; position:relative; _width:100%; border-bottom:1px solid #dfdfdd; overflow:hidden; background:#f9f9f9;}
|
||||
.boardRead .readFooter .fileAttached h5 {}
|
||||
.boardRead .readFooter .fileAttached ul { margin-left:1.8em;}
|
||||
.boardRead .readFooter .fileAttached li { float:left; margin-right:.75em; line-height:1.6em; color:#888888; white-space:nowrap; list-style:none;}
|
||||
.boardRead .readFooter .fileAttached li a { font-size:.9em; padding:.1em 0 .1em .2em; white-space:nowrap; position:relative; color:#888888; text-decoration:none; }
|
||||
.boardRead .readFooter .fileAttached li a:visited { color:#777777;}
|
||||
|
||||
.listButton li { list-style:none; clear:both; text-align:right; margin-top:.5em; }
|
||||
|
||||
.boardRead .replyAndTrackback { float:left; width:100%; background:url(../images/common/bg_repeat_x_eaeaea.gif) repeat-x left bottom; overflow:hidden;}
|
||||
.boardRead .replyAndTrackback li { float:left; font-weight:bold; margin:.3em 0 0 0; padding:.7em 1.1em .7em 1.2em; color:#FFFFFF; background:#B8B8B8; list-style:none;}
|
||||
.boardRead .replyAndTrackback li a { color:#FFFFFF; text-decoration:none; }
|
||||
.boardRead .replyAndTrackback li strong { padding:0 1.1em 0 0; background:#B8B8B8 url(../images/common/icon_close.gif) no-repeat right .2em;}
|
||||
.boardRead .replyAndTrackback li.selected a { color:#666666;}
|
||||
.boardRead .replyAndTrackback li.selected strong { padding:0 1.1em 0 0; background:#FFFFFF url(../images/common/icon_open.gif) no-repeat right .2em;}
|
||||
.boardRead .replyAndTrackback a#toggleReply { background:url(../images/common/buttonToggleReply.gif) no-repeat right top;}
|
||||
.boardRead .replyAndTrackback a#toggleTrackback { background:url(../images/common/buttonToggleReply.gif) no-repeat right -13px;}
|
||||
|
||||
.boardRead #reply,
|
||||
.boardRead #trackback { color:#666666; border-left:1px solid #EAEAEA; border-right:1px solid #EAEAEA; border-bottom:1px solid #EAEAEA; padding-top:1em;}
|
||||
.boardRead #reply { }
|
||||
.boardRead #trackback { display:none;}
|
||||
|
||||
.boardRead .topBorder { border-top:1px solid #EAEAEA; }
|
||||
|
||||
.boardRead #reply .contentBox,
|
||||
.boardRead #trackback .contentBox { line-height:1.25em; color:#676767; clear:both; padding:1em; overflow:hidden;}
|
||||
.boardRead #reply .top_border,
|
||||
.boardRead #trackback .top_border { border-top:1px dashed #d8d8d8; }
|
||||
|
||||
.boardRead .contentBox .content { width:100%; overflow:hidden; clear:both; margin-bottom:1em; }
|
||||
.boardRead .contentBox .author { float:left; overflow:hidden; color:#3173a3;}
|
||||
.boardRead .contentBox .date { float:right; font:.8em Tahoma; color:#cccccc; margin-left:.5em; }
|
||||
.boardRead .contentBox .replyOption { float:right; display:inline; white-space:nowrap; margin-left:.5em; }
|
||||
.boardRead .contentBox .replyOption img { vertical-align:middle;}
|
||||
|
||||
.boardRead .contentBox .fileAttached { position:relative; _width:100%; overflow:hidden; clear:both; }
|
||||
.boardRead .contentBox .fileAttached h5 {}
|
||||
.boardRead .contentBox .fileAttached ul { margin-bottom:.5em;}
|
||||
.boardRead .contentBox .fileAttached li { float:left; margin-right:.75em; line-height:1.6em; color:#888888; white-space:nowrap; list-style:none;}
|
||||
.boardRead .contentBox .fileAttached li a { font-size:.9em; padding:.1em 0 .1em .2em; white-space:nowrap; position:relative; color:#888888; text-decoration:none; }
|
||||
.boardRead .contentBox .fileAttached li a:visited { color:#777777;}
|
||||
|
||||
.boardRead .contentBox .title a { color:#676767 ; margin-right:.3em; text-decoration:none;}
|
||||
.boardRead .contentBox address a { font-size:.9em; color:#3173a3; margin-right:.3em; text-decoration:none; }
|
||||
.boardRead .contentBox address .trackback_date { font:.8em Tahoma; color:#cccccc; margin-left:.5em; }
|
||||
.boardRead .indent_box { background-color:#FBFBFB; }
|
||||
.boardRead .contentBox .indent {padding-left:1.5em; background:url(../images/common/icon_arrow_reply.gif) no-repeat left .1em;}
|
||||
|
||||
/* boardEditor */
|
||||
.boardEditor { padding:.5em 0 1em 0; width:100%; overflow:hidden;}
|
||||
.boardEditor.reply { padding:.5em 1em 1em 1em; width:auto; overflow:hidden;}
|
||||
.boardEditor legend { position:absolute; overflow:hidden; width:1px; height:1px; font-size:.001em;}
|
||||
.boardEditor fieldset { _width:100%; border:0px solid #eaeae7; border-top:none;}
|
||||
.boardEditor .userNameAndPw { position:relative; background:#fbfbfb; border-top:1px solid #eaeae7; border-bottom:1px solid #e1e1e1; padding:.5em 1em; white-space:nowrap;}
|
||||
.boardEditor .userNameAndPw * { vertical-align:middle;}
|
||||
.boardEditor .userNameAndPw label { margin-right:.2em; color:#666760;}
|
||||
.boardEditor .userNameAndPw input { color:#aaaaaa;}
|
||||
.boardEditor .userNameAndPw .userName { width:6em; margin-right:.8em;}
|
||||
.boardEditor .userNameAndPw .userPw { width:5em;}
|
||||
.boardEditor .userNameAndPw .emailAddress { width:6em;}
|
||||
.boardEditor .userNameAndPw .homePage { width:6em;}
|
||||
.boardEditor .userNameAndPw .checkSecret { position:absolute; right:2em; top:.7em;}
|
||||
|
||||
/* boardWrite */
|
||||
.boardWrite { width:100%; position:relative;}
|
||||
.boardWrite .userNameAndPw { margin-bottom:-1px;}
|
||||
|
||||
.boardWrite div.title label.title { display:block; float:left; font-weight:bold; padding:.4em 0 0 1.5em; width:9.5em; white-space:nowrap;}
|
||||
.boardWrite div.title input#title { width:60%;}
|
||||
|
||||
.boardWrite .option dt { display:block; float:left; font-weight:bold; padding:.3em 0 0 1.5em; width:9.5em; white-space:nowrap;}
|
||||
.boardWrite .option dd { float:left; margin-right:1em; padding-top:.2em; _padding-top:.1em;}
|
||||
.boardWrite .option dd * { vertical-align:middle;}
|
||||
.boardWrite .inputTypeText { background:#fbfbfb;}
|
||||
.boardWrite .trackbackURI { clear:both; border-top:1px solid #eff0ed; padding:4px 0 .8em 0;}
|
||||
.boardWrite .trackbackURI label { display:block; float:left; color:#333333; font-weight:bold; padding:.4em 0 0 1.5em; width:11em;}
|
||||
.boardWrite .trackbackURI .inputTypeText { width:50%;}
|
||||
.boardWrite .tag { clear:both; border-top:1px solid #eff0ed; padding:.8em 0;}
|
||||
.boardWrite .tag label { display:block; float:left; color:#333333; font-weight:bold; padding:.4em 0 0 1.5em; width:11em;}
|
||||
.boardWrite .tag .inputTypeText { width:50%;}
|
||||
.boardWrite .tag .help { vertical-align:middle;}
|
||||
.boardWrite .tag .info { padding:.5em 0 0 .6em; margin-left:14em; font-size:.9em; color:#999999; background:url(../images/common/iconArrowD8.gif) no-repeat left center;}
|
||||
.boardWrite .extra_vars { clear:both; border-top:1px solid #eff0ed; padding:.8em 0;}
|
||||
.boardWrite .extra_vars label { display:block; float:left; color:#333333; font-weight:bold; padding:.4em 0 0 1.5em; width:11em;}
|
||||
.boardWrite .extra_vars .info { clear:both; padding:.5em 0 0 .6em; margin-left:14em; font-size:.9em; color:#999999; background:url(../images/common/iconArrowD8.gif) no-repeat left center;}
|
||||
.boardWrite .extra_vars ul li { float:left; margin-right:1em; }
|
||||
|
||||
/* ----- List+Read+Write+Modify | End ----- */
|
||||
|
||||
/* Column Left & Right Common Child */
|
||||
.boxTypeA { position:relative; border:5px solid #F2F2F2; margin-bottom:.7em;}
|
||||
.boxTypeB { position:relative; margin-bottom:.7em;}
|
||||
.boxTypeB h2 { position:relative; padding:7px 0 0 12px; height:21px; _height:20px; background:#f5f5f5; font-size:1em; color:#ef2121; font-family:Tahoma;}
|
||||
*:first-child+html .boxTypeB h2 { height:20px; color:#ef2121;}
|
||||
.boxTypeB .toggleMask {position:absolute; top:8px; right:5px; cursor:pointer; width:13px; height:13px; overflow:hidden;}
|
||||
.boxTypeB .showHide { position:relative;}
|
||||
.boxTypeB .optionList { position:absolute; top:8px; right:0; overflow:hidden;}
|
||||
.boxTypeB .optionList li { float:left; padding:0 .5em; margin-left:-1px; background:url(../images/common/line_1x10_e0e0e0.gif) no-repeat left center;}
|
||||
.boxTypeB .optionList li a { color:#a4a4a4; font-size:.9em;}
|
||||
.boxTypeB .optionList li.on a { color:#000000;}
|
||||
.boxTypeB .showAll { color:#737373; font:bold .9em tahoma; white-space:nowrap; display:inline-block; padding:.4em .8em; background:url(../images/common/bar_1x8_c0c0c0.gif) no-repeat right center;}
|
||||
.boxTypeB .showAll.no_bg { background:none;}
|
||||
|
||||
/* Profile */
|
||||
#blog div#profile { padding:6px; overflow:hidden;}
|
||||
#blog div#profile img.profile { width:153px; display:block; margin-bottom:1.2em;}
|
||||
#blog div#profile dl#hello {}
|
||||
#blog div#profile dl#hello dt { color:#333333; margin-bottom:.5em;}
|
||||
#blog div#profile dl#hello dt a { color:#333333;}
|
||||
#blog div#profile dl#hello dd { color:#777777; margin-bottom:1em;}
|
||||
#blog div#profile ul#admin { overflow:hidden; height:1.2em;}
|
||||
#blog div#profile ul#admin li { float:left; padding:0 .4em; font:.8em tahoma;}
|
||||
#blog div#profile ul#admin li a { display:block;}
|
||||
#blog div#profile ul#admin li.write a {}
|
||||
#blog div#profile ul#admin li.setup { border-left:1px solid #e3e3e3;}
|
||||
#blog div#profile ul#admin li.setup a {}
|
||||
#blog div#profile ul#admin li a { color:#666666;}
|
||||
|
||||
/* Category */
|
||||
#blog div#category {}
|
||||
#blog div#category #categoryList { padding:1em .8em .5em .8em;}
|
||||
#blog div#category #categoryList li { position:relative; padding:0 0 0 15px; background:url(../images/common/iconFolderClose.gif) no-repeat 2px top;}
|
||||
#blog div#category #categoryList li li {}
|
||||
#blog div#category #categoryList li li li { background:url(../images/common/iconList.gif) no-repeat 5px top;}
|
||||
#blog div#category #categoryList a { display:block; _display:inline-block; color:#6b6b6b; margin:0 0 6px 5px;}
|
||||
|
||||
/* Search Box */
|
||||
#blog div#searchBox { margin-bottom:.7em; padding:.6em; background:#f5f5f5; overflow:hidden;}
|
||||
#blog div#searchBox fieldset { border:none;}
|
||||
#blog div#searchBox fieldset legend { position:absolute; overflow:hidden; width:1px; height:1px; font-size:.001em; text-indent:-100em;}
|
||||
|
||||
/* Tags */
|
||||
#blog div#tag { padding-bottom:1em;}
|
||||
#blog div#tag .tagList { padding:1.2em; overflow:hidden;}
|
||||
#blog div#tag .tagList li { display:inline; color:#a4a4a4; margin-right:.1em; line-height:1.5em;}
|
||||
#blog div#tag .tagList li a { color:#a4a4a4;}
|
||||
#blog div#tag .tagList li.typeA a { color:#717171; font-weight:bold;}
|
||||
#blog div#tag .tagList li.typeB a { color:#3d3d3d;}
|
||||
#blog div#tag .tagList li.typeC a { font-weight:bold;}
|
||||
#blog div#tag .tag_sort { width:100%; border-top:1px dashed #ababab; border-bottom:1px dashed #ababab; text-align:center; overflow:hidden;}
|
||||
|
||||
/* Neighbor */
|
||||
#blog div#neighbor {}
|
||||
#blog div#neighbor #neighborList { padding:1.2em 1.2em 0 1.2em;}
|
||||
#blog div#neighbor #neighborList li { padding:0 0 .7em 1.2em; background:url(../images/common/iconPlus2.gif) no-repeat left top;}
|
||||
#blog div#neighbor #neighborList li img { padding-left:.3em; top:.1em;}
|
||||
#blog div#neighbor #neighborList li a { display:inline-block; color:#6b6b6b; font-weight:bold;}
|
||||
#blog div#neighbor #neighborList li ul { display:none; padding:.7em 0 0 0;}
|
||||
#blog div#neighbor #neighborList li ul li { padding:0 0 .6em .6em; margin-left:-.6em; background:url(../images/common/iconLineBD.gif) no-repeat left 5px;}
|
||||
#blog div#neighbor #neighborList li ul li a{ font-weight:normal;}
|
||||
|
||||
/* Calendar */
|
||||
#blog div#calendar {}
|
||||
#blog div#calendar table { width:100%; background:url(../images/common/bg_line_dot_x.gif) repeat-x left top;}
|
||||
#blog div#calendar table caption { font:bold 1em 돋움; color:#ec1a25; padding:1em;}
|
||||
#blog div#calendar table caption .mm { font:bold 1em 돋움; color:#555650;}
|
||||
#blog div#calendar table caption a { padding:.2em;}
|
||||
#blog div#calendar table caption a img { vertical-align:middle;}
|
||||
#blog div#calendar table th { padding:.6em 0;}
|
||||
#blog div#calendar table td { padding:.25em 0;}
|
||||
#blog div#calendar table th { font:bold .7em tahoma; color:#717171;}
|
||||
#blog div#calendar table th.sun { color:#000000;}
|
||||
#blog div#calendar table td { text-align:center;}
|
||||
#blog div#calendar table td a { font:.7em Tahoma; color:#9a9a9a;}
|
||||
#blog div#calendar table td.sun { color:#000000;}
|
||||
#blog div#calendar table td.sun a { color:#000000;}
|
||||
#blog div#calendar table td.today a { font-weight:bold; color:#54564b;}
|
||||
#blog div#calendar table td.posted a { text-decoration:underline;}
|
||||
|
||||
#blog .boardWrite div.title { border-top:2px solid #ed1b24;}
|
||||
#blog .write_post h3 {margin:1.5em 1em 1em 1em; font:bold 1.2em 돋움;}
|
||||
/* ----- Blog | End ----- */
|
||||
|
||||
|
||||
/* ----- Member | Start ----- */
|
||||
|
||||
.memberHeader { position:relative; _width:100%; background:#ED2027 url(../images/common/bg_top_title.gif) no-repeat 23px -6px; overflow:hidden;}
|
||||
.memberHeader h3 { float:left; clear:both; padding:1.2em 0 1em 1.7em; font-size:1.1em; color:#FFFFFF;}
|
||||
.memberInformation { width:100%; clear:both; margin:0 0 .5em 0; background:#EFEFEF; color:#8D8D8D; overflow:hidden;}
|
||||
.memberInformation .friendNum { float:left; padding:.7em 0 .7em 2em; background:url(../images/common/iconFriend.gif) no-repeat .5em .4em;}
|
||||
.memberInformation .addGroup { float:right; margin:.8em 1em .7em 0;}
|
||||
.memberInformation .addGroup select { _position:relative; _top:5px; }
|
||||
.memberInformation .instantMessage { float:right; margin:.7em; overflow:hidden;}
|
||||
.memberInformation .instantMessage li { list-style:none; float:left; margin:0 0 0 -.1em; padding:0 .5em; background:url(../images/common/bar_1x7_c0c0c0.gif) no-repeat left .25em;}
|
||||
.memberInformation .instantMessage li a { text-decoration:none; white-space:nowrap; color:#666666;}
|
||||
.memberInformation .instantMessage li.on a { text-decoration:none; background-position:left -14px; font-weight:bold;}
|
||||
|
||||
/* 친구목록 */
|
||||
|
||||
.memberList th.check { padding:0;}
|
||||
.memberList th.friendGroup { padding:0 0 0 .3em; text-align:left;}
|
||||
.memberList th.friendGroup img.go_button { vertical-align:middle; }
|
||||
.memberList th select,
|
||||
.memberList th input { vertical-align:middle;}
|
||||
|
||||
.memberList td { padding:.3em; border-bottom:1px solid #e4e4e2;}
|
||||
.memberList td.noline { border-bottom:none;}
|
||||
.memberList td.check { text-align:center;}
|
||||
.memberList td.friendGroup { }
|
||||
.memberList td.userId { text-align:center; font:.9em Tahoma;}
|
||||
.memberList td.userName { text-align:center;}
|
||||
.memberList td.userNick { text-align:center; color:#999999;}
|
||||
.memberList td.registDate { text-align:center; font:.8em Tahoma;}
|
||||
.memberList td.sendMessage { text-align:center;}
|
||||
|
||||
.memberSmallBox { margin:0 auto 1em auto;}
|
||||
.memberSmallBox.w400 { width:400px;}
|
||||
.memberSmallBox.w298 { width:298px;}
|
||||
.memberSmallBox.w498 { width:498px;}
|
||||
.memberSmallBox .header h3 { font-size:1.2em; color:#FFFFFF; padding:1em 2em .8em 1em; background:none;border:none;}
|
||||
.memberSmallBox .login { position:relative; border:none; padding:2.4em 0 2em 2.3em;}
|
||||
.memberSmallBox .login legend { position:absolute; overflow:hidden; width:1px; height:1px; font-size:.001em; text-indent:-100em;}
|
||||
.memberSmallBox .login dl { overflow:hidden; width:212px; float:left; text-align:right;}
|
||||
.memberSmallBox .login dl dt { float:left; width:105px; color:#54564b; height:22px; padding-top:5px;}
|
||||
.memberSmallBox .login dl dd { float:left; width:105px; height:27px;}
|
||||
.memberSmallBox .login dl dd input { width:90px;}
|
||||
.memberSmallBox .login dl dd input.openid_user_id { background: url(../images/openid_input_bg.gif) left no-repeat; padding-left:18px; width:72px;}
|
||||
.memberSmallBox .login .loginButton { display:block; float:left; margin-top:27px; _margin-top:28px;}
|
||||
.memberSmallBox .login .loginOpenIDButton { display:block; float:left; }
|
||||
*:first-child+html .memberSmallBox .login .loginButton { margin-top:28px;}
|
||||
.memberSmallBox .login .keep { float:left; clear:both; white-space:nowrap; position:relative; left:115px; _left:110px;}
|
||||
*:first-child+html .memberSmallBox .login .keep { left:52px;}
|
||||
.memberSmallBox .login .keep input { vertical-align:middle;}
|
||||
.memberSmallBox .login .keep label { font-size:11px; color:#999999;}
|
||||
.memberSmallBox .help li { display:inline; padding:0 .3em 0 .7em; background:url(../images/common/bar_1x7_c0c0c0.gif) no-repeat left center;}
|
||||
.memberSmallBox .help li:first-child { background:none;}
|
||||
.memberSmallBox .help li.first-child { _background:none;}
|
||||
.memberSmallBox .help li a { font-size:11px; color:#54564b;}
|
||||
.memberSmallBox .text { color:#54564b; text-align:center; padding:4.25em 2em 4.8em 2em;}
|
||||
.memberSmallBox .text p { margin-bottom:.5em;}
|
||||
.memberSmallBox .button img { vertical-align:top;}
|
||||
.memberSmallBox.w400 .button ul { position:absolute; left:279px; }
|
||||
.memberSmallBox.w298 .button ul { position:absolute; left:110px; }
|
||||
.memberSmallBox.w498 .button ul { position:absolute; left:220px; }
|
||||
.memberSmallBox .button ul li { float:left; margin-right:.3em;}
|
||||
.memberSmallBox .complex { padding:1.5em 2em 2em 2em;}
|
||||
.memberSmallBox .friend { width:100%;}
|
||||
.memberSmallBox .friend th { width:7em; padding:.9em; border-bottom:1px solid #e4e5e0;}
|
||||
.memberSmallBox .friend td { padding:.9em; border-bottom:1px solid #e4e5e0; background:url(../images/common/bar_1x18_e4e5e0.gif) no-repeat left bottom;}
|
||||
.memberSmallBox .leftHeaderType { border-top:1px solid #e0e1db; border-left:1px solid #e0e1db; width:100%;}
|
||||
.memberSmallBox .leftHeaderType th,
|
||||
.memberSmallBox .leftHeaderType td { border-right:1px solid #e0e1db; border-bottom:1px solid #e0e1db; padding:.8em 1em .6em 1em;}
|
||||
.memberSmallBox .leftHeaderType th { color:#333333; text-align:left; background:#f5f5f3;}
|
||||
.memberSmallBox .leftHeaderType td { color:#444444;}
|
||||
.memberSmallBox .inputTypeText { background:#fbfbfb;}
|
||||
.memberSmallBox .group { overflow:hidden; padding:.5em 0; margin-top:.7em;}
|
||||
.memberSmallBox .group select { float:left; width:180px; margin-top:1px;}
|
||||
.memberSmallBox .pwModify { border:none;}
|
||||
.memberSmallBox .pwModify legend { position:absolute; overflow:hidden; width:1px; height:1px; font-size:.001em; text-indent:-100em;}
|
||||
.memberSmallBox .pwModify input { width:9em;}
|
||||
.memberSmallBox .pwModify br { display:block; margin-bottom:.2em}
|
||||
.memberSmallBox .pwModify p { text-align:center; margin-top:1em; color:#54564b;}
|
||||
|
||||
|
||||
/* messageList */
|
||||
.messageList tr.notice .num { font:.9em "돋움", Dotum, "굴림", Gulim, AppleGothic, Sans-serif; font-weight:bold;}
|
||||
|
||||
.messageList th:first-child,
|
||||
.messageList th.first-child { background-position:-3px bottom;}
|
||||
.messageList th.check { padding:0;}
|
||||
.messageList th select,
|
||||
.messageList th input { vertical-align:middle;}
|
||||
.messageList th img.go_button { vertical-align:middle; }
|
||||
.messageList td { padding:.3em; border-bottom:1px solid #EFEFEF;}
|
||||
.messageList td.noline { border-bottom:none;}
|
||||
.messageList td.category {}
|
||||
.messageList tr.notice td { padding:.7em .7em .7em .9em; white-space:nowrap;}
|
||||
.messageList tr.notice td img { margin:-.1em .3em 0 0;}
|
||||
.messageList td.thumb { padding:.5em 0 .5em .5em; width:145px; table-layout:fixed; white-space:nowrap;}
|
||||
.messageList td.thumb * { vertical-align:middle;}
|
||||
.messageList td.title {}
|
||||
.messageList td.title.bold { font-size:1em; font-weight:bold;}
|
||||
.messageList td.title.bold a { position:relative; top:.3em;}
|
||||
.messageList td.title * { vertical-align:middle;}
|
||||
.messageList td.title,
|
||||
.messageList td.title a { color:#444444; text-decoration:none;}
|
||||
.messageList td.title a:visited { color:#777777;}
|
||||
.messageList td.author { padding:0 .5em 0 1.3em; color:#333333; font:.95em "돋움", Dotum, "굴림", Gulim, AppleGothic, Sans-serif;}
|
||||
.messageList td.author a { font-size:1em; color:#333333;}
|
||||
.messageList td.reading { font:.8em Tahoma; color:#999999; text-align:center;}
|
||||
.messageList td.reply { font:bold .8em Tahoma; color:#ff6600; text-align:center;}
|
||||
.messageList td.date { font:.8em Tahoma; color:#999999; text-align:center;}
|
||||
.messageList td.registDate { font:.8em Tahoma; color:#999999; text-align:center;}
|
||||
.messageList td.checkDate { font:.8em Tahoma; color:#333333; text-align:center;}
|
||||
.messageList td.summary { border-top:none; vertical-align:top; color:#666666; line-height:1.25em;}
|
||||
.messageList td.summary a { color:#666666; text-decoration:none; line-height:inherit;}
|
||||
.messageList td.summary a:visited { color:#999999;}
|
||||
.messageList td.check { text-align:center;}
|
||||
.messageList td.user { color:#333333; font-size:.9em;}
|
||||
.messageList td.user a { color:#333333;}
|
||||
.messageList td.userId { font:.9em Tahoma;}
|
||||
.messageList td.userNick { font-size:.9em; color:#999999;}
|
||||
.messageList td.sendMessage { text-align:center; padding:0;}
|
||||
.messageList td.sendMessage .buttonFixedLeft { position:relative; left:20%; _left:0;}
|
||||
|
||||
.readMessage { margin-bottom:2em;}
|
||||
.readMessage .messageHeader { padding:1.5em; height:1em; overflow:hidden;}
|
||||
.readMessage .messageHeader h4 { float:left; padding-left:.5em; font-size:1em; background:url(../images/common/iconArrow99.gif) no-repeat left .3em;}
|
||||
.readMessage .messageHeader address { float:right; white-space:nowrap;}
|
||||
.readMessage .messageHeader address em { font-size:.9em; font-style:normal; color:#333333; margin-right:.3em;}
|
||||
.readMessage .messageHeader address em a { color:#333333;}
|
||||
.readMessage .messageHeader address .date { font:.8em Tahoma; color:#999999;}
|
||||
.readMessage .messageBody { border:1px solid #e0e1db; margin:0 1.5em 1.5em 1.5em; padding:1em; position:relative; color:#666666;}
|
||||
.readMessage .deleteOrKeep { padding:.5em 0; overflow:hidden; background:#f5f5f3; border-top:1px solid #eaebe7; _width:100%;}
|
||||
.readMessage .deleteOrKeep li { position:relative; left:40%; float:left; margin-right:.5em;}
|
||||
|
||||
.joinTable { margin-bottom:1em; }
|
||||
.joinTable.typeC { border-top:2px solid #ee2b33; border-bottom:2px solid #ee2b33; border-collapse:collapse;}
|
||||
.joinTable.typeB caption { border-top:1px dashed #919191; background:#f9f9f9;}
|
||||
.joinTable { width:100%;}
|
||||
.joinTable caption { padding:2em 0 .5em 1.5em; font-weight:bold; text-align:left; background:url(../images/common/iconH3.gif) no-repeat .5em 2em;}
|
||||
.joinTable th,
|
||||
.joinTable td { padding:.7em .5em .7em 1.5em; text-align:left; border-top:1px solid #eff0eb;}
|
||||
.joinTable td { background:url(../images/common/bar_1x18_e4e5e0.gif) no-repeat left bottom;}
|
||||
.joinTable th { width:10em;}
|
||||
.joinTable td textarea { width:40em; height:4.5em; border:1px solid; border-color:#a6a6a6 #d8d8d8 #d8d8d8 #a6a6a6; padding:3px; line-height:1em; background:#fbfbfb; vertical-align:middle; float:left; margin-right:.5em; margin-bottom:.5em; color:#666666; overflow:auto;}
|
||||
.joinTable td input { border:1px solid; border-color:#a6a6a6 #d8d8d8 #d8d8d8 #a6a6a6; padding:3px; height:1em; line-height:1em; background:#fbfbfb; vertical-align:middle; float:left; margin-right:.5em; margin-bottom:.5em; color:#666666;}
|
||||
.joinTable td input.radio,
|
||||
.joinTable td input.check { border:none; padding:0; margin:0; background:none; margin-top:.4em;}
|
||||
.joinTable td input.w4em { width:4em;}
|
||||
.joinTable td input.w2em { width:2em;}
|
||||
.joinTable td select { float:left; margin-right:.5em;}
|
||||
.joinTable td .fl { margin-right:.5em;}
|
||||
.joinTable td br { clear:both;}
|
||||
.joinTable td p { float:left; font-size:.9em; color:#999999; padding-top:.5em; margin-right:.5em;}
|
||||
.extendDesc { clear:both; margin-top:0; font-size:.9em; color:#999999; }
|
||||
.joinTable td label { float:left; color:#3f4040; padding-top:.3em; margin-right:.5em;}
|
||||
.joinTable td a { color:#333333;}
|
||||
.joinTable li { list-style:none; display:block; white-space:nowrap; float:left; padding-right:1em;}
|
||||
.joinTable .no_line { border:none;}
|
||||
.join_button { margin:1em 0 0 0; text-align:center;}
|
||||
.joinTable .add_info { padding:2.5em .5em .7em 1.5em; background:#f9f9f9; border-top:1px dashed #919191;}
|
||||
.buttonTypeWrite.join { margin-top:1.2em;}
|
||||
|
||||
/* ----- Member | End ----- */
|
||||
|
||||
|
||||
.memberSmallBox .inputPassword { position:relative; border:none; padding:2em 2em 1.5em 2em;}
|
||||
.memberSmallBox .inputPassword .inputTypeText { float:left; margin-right:.5em; width:8em;}
|
||||
.memberSmallBox .inputPassword legend { position:absolute; overflow:hidden; width:1px; height:1px; font-size:.001em; text-indent:-100em;}
|
||||
|
||||
/* member info */
|
||||
.memberInfoTable { width:100%; border:1px solid #e0e1db; margin-bottom:10px;}
|
||||
.memberInfoTable caption { padding:2em 0 .5em 1.5em; font-weight:bold; text-align:left; background:url(../images/common/iconH3.gif) no-repeat .5em 2em;}
|
||||
.memberInfoTable tr.first-child th, .memberInfoTable tr.first-child td { border-top:none;}
|
||||
.memberInfoTable th, .memberInfoTable td { border-top:1px solid #eaebe7; padding:.5em;}
|
||||
.memberInfoTable th { background:#f5f5f3; text-align:left; padding:.5em 1em;}
|
||||
.memberInfoTable td { border-left:1px solid #eaebe7;}
|
||||
.memberInfoTable td input { border:1px solid; border-color:#a6a6a6 #d8d8d8 #d8d8d8 #a6a6a6; padding:3px; height:1em; line-height:1em; background:#fbfbfb; vertical-align:middle; float:left; margin-right:.5em; margin-bottom:.5em; color:#666666;}
|
||||
.memberInfoTable td input.radio, .memberInfoTable td input.check { border:none; padding:0; margin:0; background:none; margin-top:.4em;}
|
||||
.memberInfoTable td input.w4em { width:4em;}
|
||||
.memberInfoTable td input.w2em { width:2em;}
|
||||
.memberInfoTable td select { float:left; margin-right:.5em;}
|
||||
.memberInfoTable td .fl { margin-right:.5em;}
|
||||
.memberInfoTable td br { clear:both;}
|
||||
.memberInfoTable td p { float:left; font-size:.9em; color:#999999; padding-top:.5em; margin-right:.5em;}
|
||||
.memberInfoTable td label { float:left; color:#3f4040; padding-top:.3em; margin-right:.5em;}
|
||||
.memberInfoTable td .checkbox { border:none; }
|
||||
34
modules/member/skins/cozy_simple/css/green.css
Normal file
34
modules/member/skins/cozy_simple/css/green.css
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
@charset "utf-8";
|
||||
|
||||
/* boardHeader */
|
||||
.boardHeader { position:relative; _width:100%; background:#8dc63f url(../images/green/bg_top_title.gif) no-repeat 23px top; overflow:hidden;}
|
||||
.boardList { width:100%; position:relative; border-bottom:2px solid #8dc63f; border-collapse:collapse; }
|
||||
.memberList th.repeat_bg { background:#ffffff url(../images/green/bg_title_repeat_x.gif) repeat-x left bottom;}
|
||||
.memberList th {padding:1.2em .5em 1.1em .6em; background:#ffffff url(../images/green/bg_title.gif) no-repeat left bottom; white-space:nowrap;}
|
||||
.messageList th {padding:1.2em .5em 1.1em .6em; background:#ffffff url(../images/green/bg_title.gif) no-repeat left bottom; white-space:nowrap;}
|
||||
.messageList th.author { background:url(../images/green/bg_title_repeat_x.gif) repeat-x left bottom; text-align:left;}
|
||||
.messageList { width:100%; position:relative; border-bottom:2px solid #8dc63f; border-collapse:collapse; margin-bottom:2.2em;}
|
||||
.memberList { width:100%; position:relative; border-bottom:2px solid #8dc63f; border-collapse:collapse; margin-bottom:2.2em;}
|
||||
.joinTable.typeA { border-top:2px solid #8dc63f; border-collapse:collapse;}
|
||||
.joinTable.typeB { border-bottom:2px solid #8dc63f; background:#f9f9f9;}
|
||||
.messageList td.recommend { font:bold .8em Tahoma; color:#8dc63f; text-align:center;}
|
||||
.memberInformation .friendNum strong { font:bold 11px Tahoma; color:#8dc63f;}
|
||||
.memberInformation .instantMessage li a strong { font:bold 0.75em tahoma; color:#8dc63f;}
|
||||
.memberSmallBox .header { position:relative; _width:100%; background:#8dc63f; overflow:hidden;}
|
||||
.memberSmallBox .open_id_help { background:#F7F7F7; border-top:1px solid #8dc63f; border-bottom:2px solid #8dc63f; overflow:hidden; padding:1.1em; text-align:left; }
|
||||
.memberSmallBox .help { background:#F7F7F7; border-top:1px solid #8dc63f; border-bottom:2px solid #8dc63f; overflow:hidden; padding:1.1em; text-align:center; }
|
||||
|
||||
.boardList th {padding:1.2em .5em 1.1em .6em; background:#ffffff url(../images/green/bg_title.gif) no-repeat left bottom; white-space:nowrap;}
|
||||
.boardList td .replyAndTrackback { font:.8em Tahoma; color:#27a939; cursor:default; position:relative; top:-.2em;}
|
||||
.boardList td.recommend { font:bold .8em Tahoma; color:#27a939; text-align:center;}
|
||||
|
||||
.pageNavigation .current { margin-left:-4px; font:bold .8em Tahoma; color:#27a939; display:inline-block; padding:1px 5px 2px 4px; border-left:1px solid #dedfde; border-right:1px solid #CCCCCC; text-decoration:none; line-height:1em; }
|
||||
|
||||
.boardRead { position:relative; _width:100%; margin:1em 0 0 0; padding: 0 0 .6em 0; border-bottom:3px solid #8dc63f;}
|
||||
.boardRead .readHeader { width:100%; padding-bottom:.5em; margin-bottom:1em; border-bottom:3px solid #8dc63f; overflow:hidden;}
|
||||
.boardRead .replyAndTrackback li.selected { margin:0; padding:1em 1.1em .7em 1.4em; border:1px solid #EAEAEA; border-bottom:none; background:#FFFFFF; color:#8dc63f;}
|
||||
|
||||
.boardWrite fieldset.bottomBorder { border-bottom:2px solid #8dc63f;}
|
||||
.boardWrite div.title { padding:.5em 0 .65em 0; white-space:nowrap; background:#FFFFFF url(../images/green/bg_title_norepeat.gif) no-repeat left bottom;}
|
||||
.boardWrite .option { width:100%; padding:.5em 0 .65em 0; background:#FFFFFF url(../images/green/bg_title_norepeat.gif) no-repeat left bottom; overflow:hidden;}
|
||||
|
||||
33
modules/member/skins/cozy_simple/css/pink.css
Normal file
33
modules/member/skins/cozy_simple/css/pink.css
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
@charset "utf-8";
|
||||
|
||||
/* boardHeader */
|
||||
.boardHeader { position:relative; _width:100%; background:#f70795 url(../images/pink/bg_top_title.gif) no-repeat 23px top; overflow:hidden;}
|
||||
.boardList { width:100%; position:relative; border-bottom:2px solid #f70795; border-collapse:collapse; }
|
||||
.memberList th.repeat_bg { background:#ffffff url(../images/pink/bg_title_repeat_x.gif) repeat-x left bottom;}
|
||||
.memberList th {padding:1.2em .5em 1.1em .6em; background:#ffffff url(../images/pink/bg_title.gif) no-repeat left bottom; white-space:nowrap;}
|
||||
.memberList { width:100%; position:relative; border-bottom:2px solid #f70795; border-collapse:collapse; margin-bottom:2.2em;}
|
||||
.messageList th {padding:1.2em .5em 1.1em .6em; background:#ffffff url(../images/pink/bg_title.gif) no-repeat left bottom; white-space:nowrap;}
|
||||
.messageList th.author { background:url(../images/pink/bg_title_repeat_x.gif) repeat-x left bottom; text-align:left;}
|
||||
.messageList { width:100%; position:relative; border-bottom:2px solid #f70795; border-collapse:collapse; margin-bottom:2.2em;}
|
||||
.joinTable.typeA { border-top:2px solid #f70795; border-collapse:collapse;}
|
||||
.joinTable.typeB { border-bottom:2px solid #f70795; background:#f9f9f9;}
|
||||
.messageList td.recommend { font:bold .8em Tahoma; color:#f70795; text-align:center;}
|
||||
.memberInformation .friendNum strong { font:bold 11px Tahoma; color:#f70795;}
|
||||
.memberInformation .instantMessage li a strong { font:bold 0.75em tahoma; color:#f70795;}
|
||||
.memberSmallBox .header { position:relative; _width:100%; background:#f70795; overflow:hidden;}
|
||||
.memberSmallBox .open_id_help { background:#F7F7F7; border-top:1px solid #f70795; border-bottom:2px solid #f70795; overflow:hidden; padding:1.1em; text-align:left; }
|
||||
.memberSmallBox .help { background:#F7F7F7; border-top:1px solid #f70795; border-bottom:2px solid #f70795; overflow:hidden; padding:1.1em; text-align:center; }
|
||||
|
||||
.boardList th {padding:1.2em .5em 1.1em .6em; background:#ffffff url(../images/pink/bg_title.gif) no-repeat left bottom; white-space:nowrap;}
|
||||
.boardList td .replyAndTrackback { font:.8em Tahoma; color:#f70795; cursor:default; position:relative; top:-.2em;}
|
||||
.boardList td.recommend { font:bold .8em Tahoma; color:#f70795; text-align:center;}
|
||||
|
||||
.pageNavigation .current { margin-left:-4px; font:bold .8em Tahoma; color:#f70795; display:inline-block; padding:1px 5px 2px 4px; border-left:1px solid #dedfde; border-right:1px solid #CCCCCC; text-decoration:none; line-height:1em; }
|
||||
|
||||
.boardRead { position:relative; _width:100%; margin:1em 0 0 0; padding: 0 0 .6em 0; border-bottom:3px solid #f70795;}
|
||||
.boardRead .readHeader { width:100%; padding-bottom:.5em; margin-bottom:1em; border-bottom:3px solid #f70795; overflow:hidden;}
|
||||
.boardRead .replyAndTrackback li.selected { margin:0; padding:1em 1.1em .7em 1.4em; border:1px solid #EAEAEA; border-bottom:none; background:#FFFFFF; color:#f70795;}
|
||||
|
||||
.boardWrite fieldset.bottomBorder { border-bottom:2px solid #f9f9f9;}
|
||||
.boardWrite div.title { padding:.5em 0 .65em 0; white-space:nowrap; background:#FFFFFF url(../images/pink/bg_title_norepeat.gif) no-repeat left bottom;}
|
||||
.boardWrite .option { width:100%; padding:.5em 0 .65em 0; background:#FFFFFF url(../images/pink/bg_title_norepeat.gif) no-repeat left bottom; overflow:hidden;}
|
||||
33
modules/member/skins/cozy_simple/css/red.css
Normal file
33
modules/member/skins/cozy_simple/css/red.css
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
@charset "utf-8";
|
||||
|
||||
/* boardHeader */
|
||||
.boardHeader { position:relative; _width:100%; background:#ED2027 url(../images/red/bg_top_title.gif) no-repeat 23px top; overflow:hidden;}
|
||||
.boardList { width:100%; position:relative; border-bottom:2px solid #ed2a32; border-collapse:collapse; }
|
||||
.memberList th.repeat_bg { background:#ffffff url(../images/red/bg_title_repeat_x.gif) repeat-x left bottom;}
|
||||
.memberList th {padding:1.2em .5em 1.1em .6em; background:#ffffff url(../images/red/bg_title.gif) no-repeat left bottom; white-space:nowrap;}
|
||||
.memberList { width:100%; position:relative; border-bottom:2px solid #ED2A32; border-collapse:collapse; margin-bottom:2.2em;}
|
||||
.messageList th {padding:1.2em .5em 1.1em .6em; background:#ffffff url(../images/red/bg_title.gif) no-repeat left bottom; white-space:nowrap;}
|
||||
.messageList th.author { background:url(../images/red/bg_title_repeat_x.gif) repeat-x left bottom; text-align:left;}
|
||||
.messageList { width:100%; position:relative; border-bottom:2px solid #ed2a32; border-collapse:collapse; margin-bottom:2.2em;}
|
||||
.joinTable.typeA { border-top:2px solid #ee1b24; border-collapse:collapse;}
|
||||
.joinTable.typeB { border-bottom:2px solid #ee1b24; background:#f9f9f9;}
|
||||
.messageList td.recommend { font:bold .8em Tahoma; color:#ec2127; text-align:center;}
|
||||
.memberInformation .friendNum strong { font:bold 11px Tahoma; color:#ec2127;}
|
||||
.memberInformation .instantMessage li a strong { font:bold 0.75em tahoma; color:#ee202a;}
|
||||
.memberSmallBox .header { position:relative; _width:100%; background:#ed2027; overflow:hidden;}
|
||||
.memberSmallBox .open_id_help { background:#F7F7F7; border-top:1px solid #ed2a32; border-bottom:2px solid #ee2b33; overflow:hidden; padding:1.1em; text-align:left; }
|
||||
.memberSmallBox .help { background:#F7F7F7; border-top:1px solid #ed2a32; border-bottom:2px solid #ee2b33; overflow:hidden; padding:1.1em; text-align:center; }
|
||||
|
||||
.boardList th {padding:1.2em .5em 1.1em .6em; background:#ffffff url(../images/red/bg_title.gif) no-repeat left bottom; white-space:nowrap;}
|
||||
.boardList td .replyAndTrackback { font:.8em Tahoma; color:#ed1f29; cursor:default; position:relative; top:-.2em;}
|
||||
.boardList td.recommend { font:bold .8em Tahoma; color:#ec2127; text-align:center;}
|
||||
|
||||
.pageNavigation .current { margin-left:-4px; font:bold .8em Tahoma; color:#ff6600; display:inline-block; padding:1px 5px 2px 4px; border-left:1px solid #dedfde; border-right:1px solid #CCCCCC; text-decoration:none; line-height:1em; }
|
||||
|
||||
.boardRead { position:relative; _width:100%; margin:1em 0 0 0; padding: 0 0 .6em 0; border-bottom:3px solid #ed2228;}
|
||||
.boardRead .readHeader { width:100%; padding-bottom:.5em; margin-bottom:1em; border-bottom:3px solid #ee202a; overflow:hidden;}
|
||||
.boardRead .replyAndTrackback li.selected { margin:0; padding:1em 1.1em .7em 1.4em; border:1px solid #EAEAEA; border-bottom:none; background:#FFFFFF; color:#eb1c22;}
|
||||
|
||||
.boardWrite fieldset.bottomBorder { border-bottom:2px solid #ed1b24;}
|
||||
.boardWrite div.title { padding:.5em 0 .65em 0; white-space:nowrap; background:#FFFFFF url(../images/red/bg_title_norepeat.gif) no-repeat left bottom;}
|
||||
.boardWrite .option { width:100%; padding:.5em 0 .65em 0; background:#FFFFFF url(../images/red/bg_title_norepeat.gif) no-repeat left bottom; overflow:hidden;}
|
||||
78
modules/member/skins/cozy_simple/document_list.html
Normal file
78
modules/member/skins/cozy_simple/document_list.html
Normal file
|
|
@ -0,0 +1,78 @@
|
|||
{@ $member_title = $lang->cmd_view_own_document }
|
||||
<!--#include("./common_header.html")-->
|
||||
|
||||
<!-- 정보 -->
|
||||
<div class="memberInformation">
|
||||
<span class="friendNum">Total : <strong>{number_format($total_count)}</strong>, </span>
|
||||
<span class="friendNum">Page <strong>{number_format($page)}</strong>/{number_format($total_page)}</span>
|
||||
</div>
|
||||
|
||||
<!-- 목록 -->
|
||||
<table cellspacing="0" class="messageList">
|
||||
<col width="50" />
|
||||
<col />
|
||||
<col width="80" />
|
||||
<col width="80" />
|
||||
<col width="80" />
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col">{$lang->no}</th>
|
||||
<th scope="col">
|
||||
<div class="nowrap tLeft">
|
||||
<select name="module_srl" class="mid_list" id="selected_module_srl">
|
||||
<option value="">{$lang->total}</option>
|
||||
<!--@foreach($mid_list as $key => $val)-->
|
||||
<option value="{$val->module_srl}" <!--@if($module_srl == $val->module_srl)-->selected="selected"<!--@end-->>{$val->browser_title}</option>
|
||||
<!--@end-->
|
||||
</select>
|
||||
<a href="#" onclick="location.href=current_url.setQuery('selected_module_srl',xGetElementById('selected_module_srl').options[xGetElementById('selected_module_srl').selectedIndex].value);return false;"><img src="./images/button_go.gif" border="0" alt="" class="go_button" /></a>
|
||||
</div>
|
||||
</th>
|
||||
<th scope="col">{$lang->readed_count}</th>
|
||||
<th scope="col">{$lang->voted_count}</th>
|
||||
<th scope="col">{$lang->date}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<!--@foreach($document_list as $no => $oDocument)-->
|
||||
<tr class="bg{($no+1)%2+1}">
|
||||
<td class="checkDate">{$no}</td>
|
||||
<td class="title">
|
||||
<a href="{getUrl('','mid',$module_list[$oDocument->get('module_srl')]->mid)}" onclick="window.open(this.href);return false">{htmlspecialchars($module_list[$oDocument->get('module_srl')]->browser_title)}</a> -
|
||||
<a href="{getUrl('','document_srl',$oDocument->document_srl)}" onclick="window.open(this.href);return false;">{$oDocument->getTitleText()}</a>
|
||||
|
||||
<!--@if($oDocument->getCommentCount())-->
|
||||
[{$oDocument->getCommentCount()}]
|
||||
<!--@end-->
|
||||
|
||||
<!--@if($oDocument->getTrackbackCount())-->
|
||||
[{$oDocument->getTrackbackCount()}]
|
||||
<!--@end-->
|
||||
</td>
|
||||
<td class="reading">{$oDocument->get('readed_count')}</td>
|
||||
<td class="recommend">{$oDocument->get('voted_count')}</td>
|
||||
<td class="registDate">{$oDocument->getRegdate("Y-m-d")}</td>
|
||||
</tr>
|
||||
<!--@end-->
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<!-- 버튼 -->
|
||||
<div class="fr">
|
||||
<a href="{getUrl('act','','selected_module_srl','')}" class="button"><span>{$lang->cmd_back}</span></a>
|
||||
</div>
|
||||
|
||||
<!-- 페이지 네비게이션 -->
|
||||
<div class="pageNavigation">
|
||||
<a href="{getUrl('page','','module_srl','')}" class="goToFirst"><img src="./images/bottomGotoFirst.gif" alt="{$lang->first_page}" width="7" height="5" /></a>
|
||||
<!--@while($page_no = $page_navigation->getNextPage())-->
|
||||
<!--@if($page == $page_no)-->
|
||||
<span class="current">{$page_no}</span>
|
||||
<!--@else-->
|
||||
<a href="{getUrl('page',$page_no,'module_srl','')}">{$page_no}</a>
|
||||
<!--@end-->
|
||||
<!--@end-->
|
||||
<a href="{getUrl('page',$page_navigation->last_page,'module_srl','')}" class="goToLast"><img src="./images/bottomGotoLast.gif" alt="{$lang->last_page}" width="7" height="5" /></a>
|
||||
</div>
|
||||
|
||||
<!--#include("./common_footer.html")-->
|
||||
9
modules/member/skins/cozy_simple/filter/add_friend.xml
Normal file
9
modules/member/skins/cozy_simple/filter/add_friend.xml
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
<filter name="add_friend" module="member" act="procMemberAddFriend" confirm_msg_code="confirm_submit">
|
||||
<form />
|
||||
<parameter />
|
||||
<response callback_func="completeAddFriend">
|
||||
<tag name="error" />
|
||||
<tag name="message" />
|
||||
<tag name="member_srl" />
|
||||
</response>
|
||||
</filter>
|
||||
10
modules/member/skins/cozy_simple/filter/add_friend_group.xml
Normal file
10
modules/member/skins/cozy_simple/filter/add_friend_group.xml
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
<filter name="add_friend_group" module="member" act="procMemberAddFriendGroup" confirm_msg_code="confirm_submit">
|
||||
<form>
|
||||
<node target="title" required="true" minlength="1" maxlength="240" />
|
||||
</form>
|
||||
<parameter />
|
||||
<response callback_func="completeAddFriendGroup">
|
||||
<tag name="error" />
|
||||
<tag name="message" />
|
||||
</response>
|
||||
</filter>
|
||||
|
|
@ -0,0 +1 @@
|
|||
<filter name="delete_checked_friend" module="member" act="procMemberDeleteFriend" confirm_msg_code="confirm_delete" />
|
||||
|
|
@ -0,0 +1 @@
|
|||
<filter name="delete_checked_message" module="member" act="procMemberDeleteMessages" confirm_msg_code="confirm_delete" />
|
||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue