PageRenderTime 76ms CodeModel.GetById 18ms RepoModel.GetById 0ms app.codeStats 0ms

/userbox/public_html/myprofile/profile.php

https://bitbucket.org/tsuchi/box
PHP | 1090 lines | 719 code | 234 blank | 137 comment | 59 complexity | f040d42ab74974cc56946d2c20bcf40b MD5 | raw file
Possible License(s): AGPL-1.0
  1. <?php
  2. /* Reminder: always indent with 4 spaces (no tabs). */
  3. // +---------------------------------------------------------------------------+
  4. // | profile maintenannce
  5. // +---------------------------------------------------------------------------+
  6. // $Id: profile.php
  7. // public_html/userbox/myprofile/profile.php
  8. // 20101129 tsuchitani AT ivywe DOT co DOT jp
  9. //@@@@@@追加予定 メールにカテゴリ
  10. //--------------------------------
  11. //@@@@@@追加予定(案)
  12. //@@@@@@最後のログイン日時(表示)
  13. //@@@@@@ユーザ名(変更)
  14. //@@@@@@メールアドレス(変更)
  15. //@@@@@@ホームページ(変更)
  16. //@@@@@@グループ(変更)
  17. //@@@@@@居住地(変更)
  18. //@@@@@@写真(変更)
  19. //@@@@@@署名(変更)
  20. //@@@@@@自己紹介(変更)
  21. //@@@@@@PGP鍵(変更)
  22. //@@@@@@デイリーニュースを受信するかどうか?
  23. define ('THIS_SCRIPT', 'userbox/myprofile/profile.php');
  24. //define ('THIS_SCRIPT', 'userbox/myprofile/test.php');
  25. include_once('userbox_functions.php');
  26. require_once $_CONF['path_system'] . 'lib-user.php';
  27. //ログイン要チェック
  28. if (empty ($_USER['username'])) {
  29. $page_title= $LANG_PROFILE[4];
  30. $display .= DATABOX_siteHeader('USERBOX','',$page_title);
  31. $display .= SEC_loginRequiredForm();
  32. $display .= COM_endBlock (COM_getBlockTemplate ('_msg_block', 'footer'));
  33. echo $display;
  34. exit;
  35. }
  36. if ($_USERBOX_CONF['allow_profile_update']==1 ){
  37. }else{
  38. if (SEC_hasRights ('userbox.edit') ){
  39. }else{
  40. COM_accessLog("User {$_USER['username']} tried to profile and failed ");
  41. echo COM_refresh($_CONF['site_url'] . '/index.php');
  42. exit;
  43. }
  44. }
  45. // +---------------------------------------------------------------------------+
  46. // | 機能 編集画面表示 |
  47. // | 書式 fncEdit($id , $edt_flg,$msg,$errmsg) |
  48. // +---------------------------------------------------------------------------+
  49. // | 引数 $id: |
  50. // | 引数 $edt_flg: |
  51. // | 引数 $msg:メッセージ番号 |
  52. // +---------------------------------------------------------------------------+
  53. // | 戻値 nomal:編集画面 |
  54. // +---------------------------------------------------------------------------+
  55. // 20101118
  56. function fncEdit(
  57. $id
  58. ,$edt_flg
  59. ,$msg = ''
  60. ,$errmsg=""
  61. ,$mode="edit"
  62. )
  63. {
  64. $pi_name="userbox";
  65. global $_CONF;
  66. global $_TABLES;
  67. global $LANG_ADMIN;
  68. global $MESSAGE;
  69. global $LANG_ACCESS;
  70. global $_USER;
  71. global $LANG28;
  72. global $_SCRIPTS;
  73. global $_USERBOX_CONF;
  74. global $LANG_USERBOX_ADMIN;
  75. $retval = '';
  76. $delflg=false;
  77. $addition_def=DATABOX_getadditiondef($pi_name);
  78. //メッセージ表示
  79. if (!empty ($msg)) {
  80. $retval .= COM_showMessage ($msg,$pi_name);
  81. $retval .= $errmsg;
  82. // clean 'em up
  83. $code=COM_applyFilter($_POST['code']);
  84. $title = COM_applyFilter($_POST['title']);
  85. $username=COM_applyFilter($_POST['username']);//@@@@@
  86. $fullname = COM_applyFilter($_POST['fullname']);//@@@@@
  87. $page_title = COM_applyFilter($_POST['page_title']);
  88. $description=$_POST['description'];//COM_applyFilter($_POST['description']);
  89. $draft_flag = COM_applyFilter ($_POST['draft_flag'],true);
  90. $language_id = COM_applyFilter ($_POST['language_id']);
  91. $category = $_POST['category'];
  92. $additionfields=$_POST['afield'];
  93. $additionfields_fnm=$_POST['afield_fnm'];//@@@@@
  94. $additionfields_del=$_POST['afield_del'];
  95. $additionfields_date=array();
  96. $additionfields_alt=$_POST['afield_alt'];;
  97. $additionfields=DATABOX_cleanaddtiondatas(
  98. $additionfields
  99. ,$addition_def
  100. ,$additionfields_fnm
  101. ,$additionfields_del
  102. ,$additionfields_date
  103. ,$additionfields_alt
  104. ,false
  105. );
  106. //作成日付
  107. $created_month=COM_applyFilter ($_POST['created_month'],true);
  108. $created_day = COM_applyFilter ($_POST['created_day'],true);
  109. $created_year =COM_applyFilter ($_POST['created_year'],true);
  110. $created_hour = COM_applyFilter ($_POST['created_hour'],true);
  111. $created_minute = COM_applyFilter ($_POST['created_minute'],true);
  112. $created = COM_applyFilter ($_POST['created']);
  113. $orderno = COM_applyFilter ($_POST['orderno']);
  114. $uuid=$_USER['uid'];
  115. $udatetime=COM_applyFilter ($_POST['udatetime']);//"";
  116. $fieldset_id=COM_applyFilter ($_POST['fieldset'],true);//"";
  117. $fieldset_name=COM_applyFilter ($_POST['fieldset_name']);//"";
  118. }else{
  119. $sql = "SELECT ";
  120. $sql .= " t.*";
  121. $sql .= " ,t2.name AS fieldset_name".LB;
  122. $sql .= " ,UNIX_TIMESTAMP(t.modified) AS modified_un".LB;
  123. $sql .= " ,UNIX_TIMESTAMP(t.released) AS released_un".LB;
  124. $sql .= " ,UNIX_TIMESTAMP(t.comment_expire) AS comment_expire_un".LB;
  125. $sql .= " ,UNIX_TIMESTAMP(t.expired) AS expired_un".LB;
  126. $sql .= " ,UNIX_TIMESTAMP(t.udatetime) AS udatetime_un".LB;
  127. $sql .= " ,UNIX_TIMESTAMP(t.created) AS created_un".LB;
  128. $sql .= " ,t1.username";
  129. $sql .= " ,t1.fullname";
  130. $sql .= " ,unix_timestamp(modified) AS modified_u ";
  131. $sql .= " FROM ";
  132. $sql .= $_TABLES['USERBOX_base'] ." AS t";
  133. $sql .= ",".$_TABLES['users'] ." AS t1";
  134. $sql .= ",".$_TABLES['USERBOX_def_fieldset'] ." AS t2 ".LB;
  135. $sql .= " WHERE ";
  136. $sql .= " t.id = $id";
  137. $sql .= " AND t.id = t1.uid";
  138. $sql .= " AND t.fieldset_id = t2.fieldset_id".LB;
  139. $result = DB_query($sql);
  140. $A = DB_fetchArray($result);
  141. $fieldset_id = COM_stripslashes($A['fieldset_id']);
  142. $fieldset_name = COM_stripslashes($A['fieldset_name']);
  143. $code = COM_stripslashes($A['code']);
  144. $title=COM_stripslashes($A['title']);
  145. $username = COM_stripslashes($A['username']);//@@@@@
  146. $fullname=COM_stripslashes($A['fullname']);//@@@@@
  147. $page_title=COM_stripslashes($A['page_title']);
  148. $description=COM_stripslashes($A['description']);
  149. $language_id = COM_stripslashes($A['language_id']);
  150. $owner_id = COM_stripslashes($A['owner_id']);
  151. $group_id = COM_stripslashes($A['group_id']);
  152. $perm_owner = COM_stripslashes($A['perm_owner']);
  153. $perm_group = COM_stripslashes($A['perm_group']);
  154. $perm_members = COM_stripslashes($A['perm_members']);
  155. $perm_anon = COM_stripslashes($A['perm_anon']);
  156. $category = DATABOX_getdatas("category_id",$_TABLES['USERBOX_category'],"id = $id");
  157. //追加項目
  158. $additionfields = DATABOX_getadditiondatas($id,$pi_name);
  159. $additionfields_fnm=array();//@@@@@
  160. $additionfields_del=array();
  161. $additionfields_date="";
  162. $draft_flag=COM_stripslashes($A['draft_flag']);
  163. //編集日
  164. $wary = COM_getUserDateTimeFormat(COM_stripslashes($A['modified_un']));
  165. $modified = $wary[1];
  166. $modified_month = date('m', $modified);
  167. $modified_day = date('d', $modified);
  168. $modified_year = date('Y', $modified);
  169. $modified_hour = date('H', $modified);
  170. $modified_minute = date('i', $modified);
  171. //公開日
  172. $wary = COM_getUserDateTimeFormat(COM_stripslashes($A['released_un']));
  173. $released = $wary[1];
  174. $released_month = date('m', $released);
  175. $released_day = date('d', $released);
  176. $released_year = date('Y', $released);
  177. $released_hour = date('H', $released);
  178. $released_minute = date('i', $released);
  179. //公開終了日
  180. $expired = COM_stripslashes($A['expired']);
  181. if ($expired==="0000-00-00 00:00:00"){
  182. $expired_flag=0;
  183. $w = mktime(0, 0, 0, date('m'),
  184. date('d') + $_CONF['article_comment_close_days'], date('Y'));
  185. $expired_year=date('Y', $w);
  186. $expired_month=date('m', $w);
  187. $expired_day=date('d', $w);
  188. $expired_hour=0;
  189. $expired_minute=0;
  190. }else{
  191. $expired_flag=1;
  192. $wary = COM_getUserDateTimeFormat(COM_stripslashes($A['expired_un']));
  193. $expired = $wary[1];
  194. $expired_year=date('Y', $expired);
  195. $expired_month=date('m', $expired);
  196. $expired_day=date('d', $expired);
  197. $expired_hour=date('H', $expired);
  198. $expired_minute=date('i', $expired);
  199. }
  200. //作成日付
  201. $wary = COM_getUserDateTimeFormat(COM_stripslashes($A['created_un']));
  202. $created = $wary[0];
  203. $created_un = $wary[1];
  204. $orderno=COM_stripslashes($A['orderno']);
  205. $uuid = COM_stripslashes($A['uuid']);
  206. $wary = COM_getUserDateTimeFormat(COM_stripslashes($A['udatetime_un']));
  207. $udatetime = $wary[0];
  208. $defaulttemplatesdirectory=$A['defaulttemplatesdirectory'];
  209. if ($_CONF['allow_account_delete']){
  210. if ($edt_flg==FALSE) {
  211. $delflg=true;
  212. }
  213. }
  214. }
  215. $chk_user=DATABOX_chkuser($group_id,$owner_id,"userbox.admin");
  216. //-----
  217. $retval .= COM_startBlock ($LANG_USERBOX_ADMIN['edit'], '',
  218. COM_getBlockTemplate ('_admin_block', 'header'));
  219. //template フォルダ
  220. if (is_null($template) or ($template==="")){
  221. $set_defaulttemplatesdirectory=DB_getItem($_TABLES['USERBOX_def_fieldset']
  222. ,"defaulttemplatesdirectory","fieldset_id=".$fieldset_id);
  223. if ($defaulttemplatesdirectory<>""){
  224. $template=$defaulttemplatesdirectory;
  225. }elseif ($set_defaulttemplatesdirectory<>""){
  226. $template=$set_defaulttemplatesdirectory;
  227. }else{
  228. $template="default";
  229. }
  230. }
  231. $tmplfld=DATABOX_templatePath('myprofile','default',$pi_name);
  232. $templates = new Template($tmplfld);
  233. $templates->set_file (array (
  234. 'editor' => 'profile_editor.thtml',
  235. 'row' => 'row.thtml',
  236. 'col' => "profile_col_detail.thtml",
  237. ));
  238. // Loads jQuery UI datepicker geeklog >=2.1.0
  239. $_SCRIPTS->setJavaScriptLibrary('jquery.ui.datepicker');
  240. $_SCRIPTS->setJavaScriptLibrary('jquery-ui-i18n');
  241. $_SCRIPTS->setJavaScriptLibrary('jquery-ui-timepicker-addon');
  242. $_SCRIPTS->setJavaScriptLibrary('jquery-ui-timepicker-addon-i18n');
  243. $_SCRIPTS->setJavaScriptFile('datepicker', '/javascript/datepicker.js');
  244. $_SCRIPTS->setJavaScriptFile('datetimepicker', '/javascript/datetimepicker.js');
  245. $langCode = COM_getLangIso639Code();
  246. $toolTip = $MESSAGE[118];
  247. $imgUrl = $_CONF['site_url'] . '/images/calendar.png';
  248. //--
  249. if (($_CONF['meta_tags'] > 0) && ($_USERBOX_CONF['meta_tags'] > 0)) {
  250. $templates->set_var('hide_meta', '');
  251. } else {
  252. $templates->set_var('hide_meta', ' style="display:none;"');
  253. }
  254. $templates->set_var('maxlength_description', $_USERBOX_CONF['maxlength_description']);
  255. $templates->set_var('about_thispage', $LANG_USERBOX_ADMIN['about_myprofile_profile']);
  256. $templates->set_var('lang_must', $LANG_USERBOX_ADMIN['must']);
  257. $templates->set_var('site_url', $_CONF['site_url']);
  258. $templates->set_var('site_admin_url', $_CONF['site_admin_url']);
  259. $templates->set_var('lang_view', $LANG_USERBOX_ADMIN['view']);
  260. $token = SEC_createToken();
  261. $retval .= SEC_getTokenExpiryNotice($token);
  262. $templates->set_var('gltoken_name', CSRF_TOKEN);
  263. $templates->set_var('gltoken', $token);
  264. $templates->set_var ( 'xhtml', XHTML );
  265. $templates->set_var('script', THIS_SCRIPT);
  266. $templates->set_var('dateformat', $_USERBOX_CONF['dateformat']);
  267. //
  268. $templates->set_var('lang_link_admin', $LANG_USERBOX_ADMIN['link_admin']);
  269. $templates->set_var('lang_link_admin_top', $LANG_USERBOX_ADMIN['link_admin_top']);
  270. $templates->set_var('lang_link_public', $LANG_USERBOX_ADMIN['link_public']);
  271. $templates->set_var('lang_link_list', $LANG_USERBOX_ADMIN['link_list']);
  272. $templates->set_var('lang_link_detail', $LANG_USERBOX_ADMIN['link_detail']);
  273. //fieldset_id
  274. $templates->set_var('lang_fieldset', $LANG_USERBOX_ADMIN['fieldset']);
  275. $templates->set_var('fieldset_id', $fieldset_id);
  276. $templates->set_var('fieldset_name', $fieldset_name);
  277. //id
  278. $templates->set_var('lang_id', $LANG_USERBOX_ADMIN['id']);
  279. //@@@@@ $templates->set_var('help_id', $LANG_USERBOX_ADMIN['help']);
  280. $templates->set_var('id', $id);
  281. //$LANG28 = array(
  282. // 2 => 'ユーザID',
  283. // 3 => 'ユーザ名', username
  284. // 4 => '氏名', fullname
  285. $templates->set_var('lang_uid', $LANG28['2']);
  286. $templates->set_var('lang_username', $LANG28['3']);
  287. $templates->set_var ('username', $username);
  288. $templates->set_var('lang_fullname', $LANG28['4']);
  289. $templates->set_var ('fullname', $fullname);
  290. //下書
  291. $templates->set_var('lang_draft', $LANG_USERBOX_ADMIN['draft']);
  292. if ($draft_flag==1) {
  293. $templates->set_var('draft_flag', "checked=checked");
  294. $templates->set_var('draft_msg', $LANG_USERBOX_ADMIN['draft_msg']);
  295. }else{
  296. $templates->set_var('draft_flag', "");
  297. $templates->set_var('draft_msg', "");
  298. }
  299. //
  300. $templates->set_var('lang_field', $LANG_USERBOX_ADMIN['field']);
  301. $templates->set_var('lang_fields', $LANG_USERBOX_ADMIN['fields']);
  302. $templates->set_var('lang_content', $LANG_USERBOX_ADMIN['content']);
  303. $templates->set_var('lang_templatesetvar', $LANG_USERBOX_ADMIN['templatesetvar']);
  304. //基本項目
  305. $templates->set_var('lang_basicfields', $LANG_USERBOX_ADMIN['basicfields']);
  306. //コード&タイトル&説明&テンプレートセット値
  307. $templates->set_var('lang_code', $LANG_USERBOX_ADMIN['code']);
  308. if ($_USERBOX_CONF['datacode']){
  309. $templates->set_var('lang_must_code', $LANG_USERBOX_ADMIN['must']);
  310. }else{
  311. $templates->set_var('lang_must_code', "");
  312. }
  313. $templates->set_var ('code', $code);
  314. $templates->set_var('lang_title', $LANG_USERBOX_ADMIN['title']);
  315. $templates->set_var ('title', $title);
  316. $templates->set_var('lang_page_title', $LANG_USERBOX_ADMIN['page_title']);
  317. $templates->set_var ('page_title', $page_title);
  318. $templates->set_var('lang_description', $LANG_USERBOX_ADMIN['description']);
  319. $templates->set_var ('description', $description);
  320. //language_id
  321. if (is_array($_CONF['languages'])) {
  322. $templates->set_var('hide_language_id', '');
  323. $select_language_id=DATABOX_getoptionlist("language_id",$language_id,0,$pi_name,"",0 );
  324. } else {
  325. $templates->set_var('hide_language_id', ' style="display:none;"');
  326. $select_language_id="";
  327. }
  328. $templates->set_var('lang_language_id', $LANG_USERBOX_ADMIN['language_id']);
  329. $templates->set_var ('language_id', $language_id);
  330. $templates->set_var ('select_language_id', $select_language_id);//@@@@@
  331. //編集日
  332. $templates->set_var ('lang_modified_autoupdate', $LANG_USERBOX_ADMIN['modified_autoupdate']);
  333. $templates->set_var ('lang_modified', $LANG_USERBOX_ADMIN['modified']);
  334. $w=COM_convertDate2Timestamp(
  335. $modified_year."-".$modified_month."-".$modified_day
  336. , $modified_hour.":".$modified_minute."::00"
  337. );
  338. $datetime_modified=DATABOX_datetimeedit($w,"LANG_DATABOX_ADMIN","modified");
  339. $templates->set_var ('datetime_modified', $datetime_modified);
  340. //カテゴリ
  341. $templates->set_var('lang_category', $LANG_USERBOX_ADMIN['category']);
  342. $checklist_category=DATABOX_getcategoriesinp ($category,$fieldset_id,$pi_name,$chk_user);
  343. $templates->set_var('checklist_category', $checklist_category);
  344. //追加項目
  345. $templates->set_var('lang_additionfields', $LANG_USERBOX_ADMIN['additionfields']);
  346. $rt=DATABOX_getaddtionfieldsEdit(
  347. $additionfields
  348. ,$addition_def
  349. ,$templates
  350. ,$chk_user
  351. ,$pi_name
  352. ,$additionfields_fnm
  353. ,$additionfields_del
  354. ,$fieldset_id
  355. ,$additionfields_date
  356. );
  357. //保存日時
  358. $templates->set_var ('lang_udatetime', $LANG_USERBOX_ADMIN['udatetime']);
  359. $templates->set_var ('udatetime', $udatetime);
  360. $templates->set_var ('lang_uuid', $LANG_USERBOX_ADMIN['uuid']);
  361. $templates->set_var ('uuid', $uuid);
  362. //作成日付
  363. $templates->set_var ('lang_created', $LANG_USERBOX_ADMIN['created']);
  364. $templates->set_var ('created', $created);
  365. // SAVE、CANCEL ボタン
  366. $templates->set_var('lang_save', $LANG_ADMIN['save']);
  367. $templates->set_var('lang_cancel', $LANG_ADMIN['cancel']);
  368. $templates->set_var('lang_preview', $LANG_ADMIN['preview']);
  369. //delete_option
  370. if ($delflg){
  371. $delbutton = '<input type="submit" value="' . $LANG_ADMIN['delete']
  372. . '" name="mode"%s>';
  373. $jsconfirm = ' onclick="return confirm(\'' . $MESSAGE[76] . '\');"';
  374. $templates->set_var ('delete_option',
  375. sprintf ($delbutton, $jsconfirm));
  376. }
  377. //
  378. $templates->parse('output', 'editor');
  379. $retval .= $templates->finish($templates->get_var('output'));
  380. $retval .= COM_endBlock (COM_getBlockTemplate ('_admin_block', 'footer'));
  381. return $retval;
  382. }
  383. // +---------------------------------------------------------------------------+
  384. // | 機能 保存 |
  385. // | 書式 fncSave ($edt_flg) |
  386. // +---------------------------------------------------------------------------+
  387. // | 戻値 nomal:戻り画面&メッセージ |
  388. // +---------------------------------------------------------------------------+
  389. //20110417
  390. function fncSave (
  391. $edt_flg
  392. ,$navbarMenu
  393. ,$menuno
  394. )
  395. {
  396. $pi_name="userbox";
  397. global $_CONF;
  398. global $_TABLES;
  399. global $_USER;
  400. global $_USERBOX_CONF;
  401. global $LANG_USERBOX_ADMIN;
  402. global $LANG_USERBOX_user_menu;
  403. $addition_def=DATABOX_getadditiondef($pi_name);
  404. $retval = '';
  405. // clean 'em up
  406. $id = COM_applyFilter($_POST['id'],true);
  407. if ($id==0){
  408. $new_flg=true;
  409. }else{
  410. $new_flg=false;
  411. }
  412. $code = COM_applyFilter($_POST['code'],true);
  413. $code = addslashes (COM_checkHTML (COM_checkWords ($code)));
  414. $title = COM_applyFilter($_POST['title']);
  415. $title = addslashes (COM_checkHTML (COM_checkWords ($title)));
  416. $username = COM_applyFilter($_POST['username']);
  417. $username = addslashes (COM_checkHTML (COM_checkWords ($username)));
  418. $fullname = COM_applyFilter($_POST['fullname']);
  419. $fullname = addslashes (COM_checkHTML (COM_checkWords ($fullname)));
  420. $page_title = COM_applyFilter($_POST['page_title']);
  421. $page_title = addslashes (COM_checkHTML (COM_checkWords ($page_title)));
  422. $description=$_POST['description'];//COM_applyFilter($_POST['description']);
  423. $description=addslashes (COM_checkHTML (COM_checkWords ($description)));
  424. $language_id=COM_applyFilter($_POST['language_id']);
  425. $language_id=addslashes (COM_checkHTML (COM_checkWords ($language_id)));
  426. $category = $_POST['category'];
  427. //@@@@@
  428. $additionfields=$_POST['afield'];
  429. $additionfields_old=$_POST['afield'];
  430. $additionfields_fnm=$_POST['afield_fnm'];
  431. $additionfields_del=$_POST['afield_del'];
  432. $additionfields_alt=$_POST['afield_alt'];
  433. $additionfields_date=array();
  434. $additionfields=DATABOX_cleanaddtiondatas(
  435. $additionfields
  436. ,$addition_def
  437. ,$additionfields_fnm
  438. ,$additionfields_del
  439. ,$additionfields_date
  440. ,$additionfields_alt
  441. );
  442. //-----
  443. $type=1;
  444. $uuid=$_USER['uid'];
  445. // CHECK はじめ
  446. $err="";
  447. //id
  448. if ($id==0 ){
  449. //$err.=$LANG_USERBOX_ADMIN['err_uid']."<br/>".LB;
  450. }else{
  451. if (!is_numeric($id) ){
  452. $err.=$LANG_USERBOX_ADMIN['err_id']."<br/>".LB;
  453. }
  454. }
  455. //説明必須
  456. if ($_USERBOX_CONF['descriptionemptycheck']==1){
  457. if (empty($description)){
  458. $err.=$LANG_USERBOX_ADMIN['err_description']."<br/>".LB;
  459. }
  460. }
  461. //文字数制限チェック
  462. if (mb_strlen($description, 'UTF-8')>$_USERBOX_CONF['maxlength_description']) {
  463. $err.=$LANG_USERBOX_ADMIN['description']
  464. .$_USERBOX_CONF['maxlength_description']
  465. .$LANG_USERBOX_ADMIN['err_maxlength']."<br/>".LB;
  466. }
  467. //----追加項目チェック
  468. $err.=databox_checkaddtiondatas
  469. ($additionfields,$addition_def,$pi_name,$additionfields_fnm,$additionfields_del
  470. ,$additionfields_alt);
  471. //errorのあるとき
  472. if ($err<>"") {
  473. $page_title=$LANG_USERBOX_ADMIN['piname'].$LANG_USERBOX_ADMIN['edit'];
  474. $retval .= DATABOX_siteHeader($pi_name,'_admin',$page_title);
  475. $retval .=ppNavbarjp($navbarMenu,$LANG_USERBOX_user_menu[$menuno]);
  476. $retval .= fncEdit($id, $edt_flg,3,$err);
  477. $retval .= DATABOX_siteFooter($pi_name,'_admin');
  478. return $retval;
  479. }
  480. // CHECK おわり
  481. //-----
  482. // 新規登録時
  483. if ($new_flg){
  484. $w=DB_getItem($_TABLES['USERBOX_base'],"max(id)","1=1");
  485. if ($w=="") {
  486. $w=0;
  487. }
  488. $id=$w+1;
  489. }
  490. $fields=LB."id";
  491. $values=LB."$id";
  492. if ($new_flg){
  493. if ($_USERBOX_CONF['datacode']){
  494. $code="000000".date(Ymdhis);
  495. }
  496. $created=date("Y-m-d H:i:s");
  497. $modified=$created;
  498. $released=$created;
  499. $commentcode =-1;
  500. $trackbackcode=$_CONF[trackback_code];;
  501. $comment_expire='0000-00-00 00:00:00';
  502. $expired='0000-00-00 00:00:00';
  503. //
  504. $defaulttemplatesdirectory=null;
  505. //---
  506. $meta_description = "";
  507. $meta_keywords = "";
  508. $owner_id =$_USER['uid'];
  509. $group_id =SEC_getFeatureGroup('userbox.admin', $_USER['uid']);
  510. $array = array();
  511. SEC_setDefaultPermissions($array, $_USERBOX_CONF['default_permissions']);
  512. $perm_owner = $array['perm_owner'];
  513. $perm_group = $array['perm_group'];
  514. $perm_anon = $array['perm_anon'];
  515. $perm_members = $array['perm_members'];
  516. $draft_flag=$_USERBOX_CONF['user_draft_default'];
  517. //-----
  518. $fields.=",defaulttemplatesdirectory";//
  519. $values.=",'$defaulttemplatesdirectory'";
  520. $fields.=",draft_flag";
  521. $values.=",$draft_flag";
  522. $fields.=",meta_description";//
  523. $values.=",'$meta_description'";
  524. $fields.=",meta_keywords";//
  525. $values.=",'$meta_keywords'";
  526. $fields.=",commentcode";//
  527. $values.=",$commentcode";
  528. $fields.=",comment_expire";//
  529. if ($comment_expire=='0000-00-00 00:00:00'){
  530. $values.=",'$comment_expire'";
  531. }else{
  532. $values.=",FROM_UNIXTIME('$comment_expire')";
  533. }
  534. $fields.=",language_id";//
  535. $values.=",'$language_id'";
  536. $fields.=",owner_id";
  537. $values.=",$owner_id";
  538. $fields.=",group_id";
  539. $values.=",$group_id";
  540. $fields.=",perm_owner";
  541. $values.=",$perm_owner";
  542. $fields.=",perm_group";
  543. $values.=",$perm_group";
  544. $fields.=",perm_members";
  545. $values.=",$perm_members";
  546. $fields.=",perm_anon";
  547. $values.=",$perm_anon";
  548. $fields.=",modified";
  549. $values.=",FROM_UNIXTIME('$modified')";
  550. $fields.=",created";
  551. $values.=",FROM_UNIXTIME('$created')";
  552. $fields.=",expired";
  553. if ($expired=='0000-00-00 00:00:00'){
  554. $values.=",'$expired'";
  555. }else{
  556. $values.=",FROM_UNIXTIME('$expired')";
  557. }
  558. $fields.=",released";
  559. $values.=",FROM_UNIXTIME('$released')";
  560. $comments=0;
  561. $fields.=",page_title";//
  562. $values.=",'$page_title'";
  563. $fields.=",description";//
  564. $values.=",'$description'";
  565. $fields.=",comments";//
  566. $values.=",$comments";
  567. $fields.=",trackbackcode";//
  568. $values.=",$trackbackcode";
  569. $fields.=",uuid";
  570. $values.=",$uuid";
  571. // if ($edt_flg){
  572. // $return_page=$_CONF['site_url'] . "/".THIS_SCRIPT;
  573. // $return_page.="?id=".$id;
  574. // }else{
  575. // $return_page=$_CONF['site_url'] . '/'.THIS_SCRIPT.'?msg=1';
  576. // }
  577. DB_save($_TABLES['USERBOX_base'],$fields,$values);
  578. }else{
  579. $sql="UPDATE {$_TABLES['USERBOX_base']} set ";
  580. $sql.=" page_title = '$page_title'";
  581. $sql.=" ,description = '$description'";
  582. $sql.=" ,language_id = '$language_id'";
  583. $sql.=" ,modified = FROM_UNIXTIME('$modified')";
  584. $sql.=",uuid='$uuid' WHERE id=$id";
  585. DB_query($sql);
  586. $sql="UPDATE ".$_TABLES['users'] ." SET ";
  587. $sql.=" fullname ='".$fullname."'";
  588. $sql.=" WHERE uid=".$id ;
  589. DB_query($sql);
  590. }
  591. //カテゴリ
  592. $rt=DATABOX_savecategorydatas($id,$category,$pi_name,'myprofile');
  593. //追加項目@@@@@
  594. DATABOX_uploadaddtiondatas
  595. ($additionfields,$addition_def,$pi_name,$id,$additionfields_fnm,$additionfields_del
  596. ,$additionfields_old,$additionfields_alt);
  597. $rt=DATABOX_saveaddtiondatas_update($id,$additionfields,$addition_def,$pi_name);
  598. //user (コアのテーブル)
  599. $sql="UPDATE ".$_TABLES['users'] ." SET ";
  600. $sql.=" fullname ='".$fullname."'";
  601. $sql.=" WHERE uid=".$id ;
  602. DB_query($sql);
  603. $rt=fncsendmail ('data',$id);
  604. $cacheInstance = 'userbox__' . $id . '__' ;
  605. CACHE_remove_instance($cacheInstance);
  606. //exit;// debug 用
  607. if ($_USERBOX_CONF['aftersave']==='no'){
  608. $page_title=$LANG_USERBOX_ADMIN['piname'].$LANG_USERBOX_ADMIN['edit'];
  609. $retval .= DATABOX_siteHeader($pi_name,'_admin',$page_title);
  610. $retval .=ppNavbarjp($navbarMenu,$LANG_USERBOX_user_menu[$menuno]);
  611. $retval .= fncEdit($id, $edt_flg,1,$err);
  612. $retval .= DATABOX_siteFooter($pi_name,'_admin');
  613. return $retval;
  614. }else if ($_USERBOX_CONF['aftersave']==='list'
  615. OR $_USERBOX_CONF['aftersave']==='admin' ){
  616. $url=$_CONF['site_url'] . "/userbox/profile.php";
  617. $url.="?";
  618. //コード使用の時
  619. if ($_USERBOX_CONF['datacode']){
  620. $url.="code=".$username;
  621. $url.="&amp;m=code";
  622. }else{
  623. $url.="id=".$id;
  624. $url.="&amp;m=id";
  625. }
  626. $item_url = COM_buildUrl( $url );
  627. $target='item';
  628. }else{
  629. $url=$_CONF['site_url'] . "/userbox/profile.php";
  630. $url.="?";
  631. //コード使用の時
  632. if ($_USERBOX_CONF['datacode']){
  633. $url.="code=".$username;
  634. $url.="&amp;m=code";
  635. }else{
  636. $url.="id=".$id;
  637. $url.="&amp;m=id";
  638. }
  639. $item_url = COM_buildUrl( $url );
  640. $target=$_USERBOX_CONF['aftersave'];
  641. }
  642. // $return_page="";
  643. $return_page = PLG_afterSaveSwitch(
  644. $target
  645. ,$item_url
  646. ,$pi_name
  647. , 1);
  648. echo $return_page;
  649. }
  650. // +---------------------------------------------------------------------------+
  651. // | 機能 削除 |
  652. // | 書式 fncdelete () |
  653. // +---------------------------------------------------------------------------+
  654. // | 戻値 nomal:戻り画面&メッセージ |
  655. // +---------------------------------------------------------------------------+
  656. function fncdelete ()
  657. {
  658. global $_CONF;
  659. global $_TABLES;
  660. global $LANG_DATABOX_ADMIN;
  661. global $_USER;
  662. $pi_name="userbox";
  663. $id = COM_applyFilter($_POST['id'],true);
  664. $username=DB_getItem($_TABLES['users'],"username","uid={$id}");
  665. $email=DB_getItem($_TABLES['users'],"email","uid={$id}");
  666. // CHECK
  667. $err="";
  668. if ($err<>"") {
  669. $page_title=$LANG_DATABOX_ADMIN['err'];
  670. $retval .= DATABOX_siteHeader($pi_name,'_admin',$page_title);
  671. $retval .= COM_startBlock ($LANG_USERBOX_ADMIN['err'], '',
  672. COM_getBlockTemplate ('_msg_block', 'header'));
  673. $retval .= $err;
  674. $retval .= COM_endBlock (COM_getBlockTemplate ('_msg_block', 'footer'));
  675. $retval .= DATABOX_siteFooter($pi_name,'_admin');
  676. return $retval;
  677. }
  678. if (!USER_deleteAccount ($id)) {
  679. $return_page =$_CONF['site_url'] . '/index.php';
  680. }
  681. $return_page=$_CONF['site_url'] . '/index.php?msg=57';
  682. $rt=fncsendmail ('data_delete',$id,$username,$email);
  683. $cacheInstance = 'userbox__' . $id . '__' ;
  684. CACHE_remove_instance($cacheInstance);
  685. //exit;// debug 用
  686. return COM_refresh ($return_page);
  687. }
  688. // +---------------------------------------------------------------------------+
  689. // | 機能 メール送信 |
  690. // | 書式 fncsendmail () |
  691. // +---------------------------------------------------------------------------+
  692. // | 戻値 nomal: |
  693. // +---------------------------------------------------------------------------+
  694. function fncsendmail (
  695. $m=""
  696. ,$id=0
  697. ,$username=""
  698. ,$email=""
  699. )
  700. {
  701. $pi_name="userbox";
  702. global $_CONF;
  703. global $_TABLES;
  704. global $LANG_USERBOX_MAIL;
  705. global $LANG_USERBOX_ADMIN;
  706. global $_USER ;
  707. global $_USERBOX_CONF ;
  708. global $LANG28;
  709. $retval = '';
  710. $site_name=$_CONF['site_name'];
  711. $subject= $LANG_USERBOX_MAIL['subject_'.$m];
  712. $message=$LANG_USERBOX_MAIL['message_'.$m];
  713. if ($m==="data_delete"){
  714. $msg.=$LANG28['2'].":".$id.LB;
  715. $msg.=$LANG28['3'].":".$username.LB;
  716. //URL
  717. $url=$_CONF['site_url'] . "/userbox/profile.php";
  718. $url = COM_buildUrl( $url );
  719. }else{
  720. $sql = "SELECT ";
  721. $sql .= " t1.*";
  722. $sql .= " ,t2.uid";
  723. $sql .= " ,t2.username";
  724. $sql .= " ,t2.fullname";
  725. $sql .= " ,t2.email";
  726. $sql .= " FROM ";
  727. $sql .= $_TABLES['USERBOX_base']." AS t1";
  728. $sql .= ",".$_TABLES['users']." AS t2";
  729. $sql .= " WHERE ";
  730. $sql .= " t1.id = $id";
  731. $sql .= " AND t1.id = t2.uid";
  732. $result = DB_query ($sql);
  733. $numrows = DB_numRows ($result);
  734. if ($numrows > 0) {
  735. $A = DB_fetchArray ($result);
  736. $A = array_map('stripslashes', $A);
  737. $email=$A['email'];
  738. //下書
  739. if ($A['draft_flag']==1) {
  740. $msg.=$LANG_USERBOX_ADMIN['draft'].LB;
  741. }
  742. //コア
  743. $msg.=$LANG28['2'].":".$A['uid'].LB;
  744. $msg.=$LANG28['3'].":".$A['username'].LB;
  745. $msg.=$LANG28['4'].":".$A['fullname'].LB;
  746. //基本項目
  747. $msg.= $LANG_USERBOX_ADMIN['page_title'].":".$A['page_title'].LB;
  748. $msg.= $LANG_USERBOX_ADMIN['description'].":".$A['description'].LB;
  749. //カテゴリ
  750. $msg.=DATABOX_getcategoriesText($id ,0,$pi_name);
  751. //追加項目
  752. $group_id = stripslashes($A['group_id']);
  753. $owner_id = stripslashes($A['owner_id']);
  754. $chk_user=DATABOX_chkuser($group_id,$owner_id,"userbox.admin");
  755. $addition_def=DATABOX_getadditiondef($pi_name);
  756. $additionfields = DATABOX_getadditiondatas($id,$pi_name);
  757. $msg.=DATABOX_getaddtionfieldsText($additionfields,$addition_def,$chk_user,$pi_name,$A['fieldset_id']);
  758. //タイムスタンプ 更新ユーザ
  759. $msg.= $LANG_USERBOX_ADMIN['udatetime'].":".$A['udatetime'].LB;
  760. $msg.= $LANG_USERBOX_ADMIN['uuid'].":".$A['uuid'].LB;
  761. //URL
  762. $url=$_CONF['site_url'] . "/profile/profile.php";
  763. $url.="?";
  764. if ($_USERBOX_CONF['datacode']){
  765. $url.="m=code";
  766. $url.="&code=".$A['username'];
  767. }else{
  768. $url.="m=id";
  769. $url.="&id=".$A['id'];
  770. }
  771. $url = COM_buildUrl( $url );
  772. }
  773. }
  774. if (($_USERBOX_CONF['mail_to_draft']==0) AND ($A['draft_flag']==1)){
  775. }else{
  776. $message.=$msg.LB;
  777. $message.=$url.LB;
  778. $message.=$LANG_USERBOX_MAIL['sig'].LB;
  779. $mail_to=$_USERBOX_CONF['mail_to'];
  780. //--- to user
  781. if ($_USERBOX_CONF['mail_to_owner']==1){
  782. if (array_search($email,$mail_to)===false){
  783. $to=$email;
  784. COM_mail ($to, $subject, $message);
  785. }
  786. }
  787. //--- to admin
  788. if (!empty ($mail_to)){
  789. $to=implode($mail_to,",");
  790. COM_mail ($to, $subject, $message);
  791. }
  792. }
  793. return $retval;
  794. }
  795. // +---------------------------------------------------------------------------+
  796. // | MAIN |
  797. // +---------------------------------------------------------------------------+
  798. //############################
  799. $pi_name = 'userbox';
  800. //############################
  801. $id=$_USER['uid'];
  802. // 引数
  803. if (isset ($_REQUEST['mode'])) {
  804. $mode = COM_applyFilter ($_REQUEST['mode'], false);
  805. }
  806. $msg = '';
  807. if (isset ($_REQUEST['msg'])) {
  808. $msg = COM_applyFilter ($_REQUEST['msg'], true);
  809. }
  810. $old_mode="";
  811. if (isset($_REQUEST['old_mode'])) {
  812. $old_mode = COM_applyFilter($_REQUEST['old_mode'],false);
  813. if ($mode==$LANG_ADMIN['cancel']) {
  814. $mode = $old_mode;
  815. }
  816. }
  817. if (($mode == $LANG_ADMIN['save']) && !empty ($LANG_ADMIN['save'])) { // save
  818. $mode="save";
  819. }else if (($mode == $LANG_ADMIN['delete']) && !empty ($LANG_ADMIN['delete'])) {
  820. $mode="delete";
  821. }
  822. //echo "mode=".$mode."<br>";
  823. if ($mode=="" OR $mode=="edit" OR $mode=="new" OR $mode=="drafton" OR $mode=="draftoff"
  824. OR $mode=="export" OR $mode=="import" OR $mode=="copy" OR $mode=="desc") {
  825. }else{
  826. if (!SEC_checkToken()){
  827. // if (SEC_checkToken()){//テスト用
  828. COM_accessLog("User {$_USER['username']} tried to illegally and failed CSRF checks.");
  829. echo COM_refresh($_CONF['site_admin_url'] . '/index.php');
  830. exit;
  831. }
  832. }
  833. //
  834. $menuno=2;
  835. $display="";
  836. //echo "mode=".$mode."<br>";
  837. switch ($mode) {
  838. case 'delete':// 削除
  839. $display .= fncdelete();
  840. break;
  841. case 'save':// 保存
  842. $display .= fncSave ($edt_flg,$navbarMenu,$menuno);
  843. break;
  844. default:// 初期表示、一覧表示
  845. if (!empty ($id) ) {
  846. $page_title=$LANG_USERBOX_ADMIN['piname'].$LANG_USERBOX_ADMIN['edit'];
  847. $display .= DATABOX_siteHeader($pi_name,'_admin',$page_title);
  848. if ($edt_flg==FALSE){
  849. $display.=ppNavbarjp($navbarMenu,$LANG_USERBOX_user_menu[$menuno]);
  850. }
  851. $display .= fncEdit($id, $edt_flg,$msg,"",$mode);
  852. $display .= DATABOX_siteFooter($pi_name,'_admin');
  853. }
  854. }
  855. echo $display;
  856. ?>