PageRenderTime 37ms CodeModel.GetById 24ms RepoModel.GetById 0ms app.codeStats 1ms

/userbox/functions_autotag.inc

https://bitbucket.org/tsuchi/box
PHP | 2627 lines | 1969 code | 360 blank | 298 comment | 198 complexity | fbd91969d42392e2e30b571895a3f4a9 MD5 | raw file
Possible License(s): AGPL-1.0
  1. <?php
  2. /* Reminder: always indent with 4 spaces (no tabs). */
  3. // +---------------------------------------------------------------------------+
  4. // | UserBox プラグイン function.inc からrequire
  5. // | 自動タグおよび UserBox 専用関数
  6. // +---------------------------------------------------------------------------+
  7. // $Id: plugins/userbox/functions_autotag.inc
  8. //20101223 tsuchitani AT ivywe DOT co DOT jp http://www.ivywe.co.jp/
  9. //20120416 userbox_category {data_edit}
  10. if (strpos ($_SERVER['PHP_SELF'], 'functions_autotag.inc') !== false) {
  11. die ('This file can not be used on its own.');
  12. }
  13. //=====自動タグ=================================================================
  14. function plugin_autotags_userbox (
  15. $op
  16. , $content = ''
  17. , $autotag = '')
  18. // +---------------------------------------------------------------------------+
  19. // | 自動タグ
  20. // | 書式 plugin_autotags_userbox ($op, $content, $autotag)
  21. // +---------------------------------------------------------------------------+
  22. // 20101229
  23. {
  24. global $_TABLES;
  25. global $_CONF;
  26. global $LANG_USERBOX_autotag_desc;
  27. //Option Display
  28. if ($op == 'tagname' ) {
  29. $tagname[]='userbox';
  30. return $tagname;
  31. } elseif ($op == 'permission' || $op == 'nopermission') {
  32. if ($op == 'permission') {
  33. $flag = true;
  34. } else {
  35. $flag = false;
  36. }
  37. if (isset($_GROUPS['UserBox Admin'])) {
  38. $group_id = $_GROUPS['UserBox Admin'];
  39. } else {
  40. $group_id = DB_getItem($_TABLES['groups'], 'grp_id',
  41. "grp_name = 'UserBox Admin'");
  42. }
  43. $owner_id = SEC_getDefaultRootUser();
  44. if (COM_getPermTag(
  45. $owner_id
  46. , $group_id
  47. , $_USERBOX_CONF['autotag_permissions_userbox'][0]
  48. , $_USERBOX_CONF['autotag_permissions_userbox'][1]
  49. , $_USERBOX_CONF['autotag_permissions_userbox'][2]
  50. , $_USERBOX_CONF['autotag_permissions_userbox'][3]) == $flag) {
  51. return $tagname;
  52. }
  53. } elseif ($op == 'description') {
  54. return $LANG_USERBOX_autotag_desc;
  55. } else if ($op == 'parse') {
  56. //引数チェック
  57. $p1 = COM_applyFilter ($autotag['parm1']);
  58. $p2 = COM_applyFilter ($autotag['parm2']);
  59. $tag = COM_applyFilter ($autotag['tag']);
  60. $tagstr = COM_applyFilter ($autotag['tagstr']);
  61. $parm2_ary[]="category_id";
  62. $parm2_ary[]="category_code";
  63. $parm2_ary[]="mode";
  64. $parm2_ary[]="rss_file";
  65. $parm2_ary[]="title_trim_length";
  66. $parm2_ary[]="intervalday";
  67. $parm2_ary[]="limitcnt";
  68. $parm2_ary[]="newmarkday";
  69. $parm2_ary[]="templatedir";
  70. $parm2_ary[]="id";
  71. $parm2_ary[]="uid";
  72. $parm2_ary[]="username";
  73. $parm2_ary[]="code";
  74. $parm2_ary[]="nohitmsg";
  75. $parm2_ary[]="perpage";
  76. $parm2_ary[]="page";
  77. $parm2_ary[]="order";
  78. $parm2_ary[]="templatesetvar";
  79. $parm2_ary[]="value";
  80. $parm2_ary[]="field_id";
  81. $parm2_ary[]="expired";
  82. $parm2_ary[]="group_id";
  83. $parm2_ary[]="group_code";
  84. $parm2_ary[]="field_code";
  85. $parm2_ary[]="option";
  86. $parm2_ary[]="method";
  87. $parm2_ary[]="roundprecision";
  88. $parm2_ary[]="numberformat";
  89. $parm2_ary[]="permission";
  90. $p=userbox_parm2($p2,$parm2_ary);
  91. //各処理
  92. switch( $tag ) {
  93. case 'userbox' :
  94. switch($p1) {
  95. case 'count':
  96. $rt= userbox_count(
  97. $p['category_id']
  98. ,$p['category_code']
  99. ,$p['mode']
  100. ,$p['permission']
  101. ,$p['numberformat']
  102. );
  103. break;
  104. case 'newlist':
  105. if ($p['category_id']<>""){
  106. $m="id";
  107. $categories=$p['category_id'];
  108. }elseif ($p['category_code']<>"") {
  109. $m="code";
  110. $categories=$p['category_code'];
  111. }else{
  112. $m="ALL";
  113. $categories="";
  114. }
  115. $rt= userbox_newlist(
  116. $m
  117. ,$categories
  118. ,$p['rss_file']
  119. ,$p['title_trim_length']
  120. ,$p['intervalday']
  121. ,$p['limitcnt']
  122. ,$p['newmarkday']
  123. ,$p['templatedir']
  124. ,$p['permission']
  125. );
  126. break;
  127. case 'profile':
  128. $w= userbox_profile(
  129. $p['uid']
  130. ,$p['templatedir']
  131. ,$p['nohitmsg']
  132. ,""
  133. ,$p['username']
  134. );
  135. $rt=$w['display'];
  136. break;
  137. case 'category':
  138. $rt= userbox_category(
  139. "autotag"
  140. ,$p['category_id']
  141. ,$p['templatedir']
  142. ,$p['nohitmsg']
  143. ,$p['perpage']
  144. ,$p['page']
  145. ,$p['order']
  146. ,$p['category_code']
  147. ,$p['mode']
  148. ,$p['expired']
  149. );
  150. break;
  151. case 'attributedatacount':
  152. $rt=DATABOX_count_each_afield(
  153. "userbox"
  154. ,$p['templatesetvar']
  155. ,$p['value']
  156. ,$p['type_id']
  157. ,$p['permission']
  158. ,$p['numberformat']
  159. );
  160. break;
  161. case 'lastmodified':
  162. $rt= userbox_grp(
  163. "modified"
  164. ,"max"
  165. ,"lastmodified"
  166. ,$p['category_id']
  167. ,$p['category_code']
  168. );
  169. break;
  170. case 'lastcreated':
  171. $rt= userbox_grp(
  172. "created"
  173. ,"max"
  174. ,"lastcreated"
  175. ,$p['category_id']
  176. ,$p['category_code']
  177. );
  178. break;
  179. case 'attribute':
  180. $rt= userbox_field(
  181. "autotag"
  182. ,$p['field_id']
  183. ,$p['value']
  184. ,$p['templatedir']
  185. ,$p['nohitmsg']
  186. ,$p['perpage']
  187. ,$p['page']
  188. ,$p['order']
  189. ,$p['field_code']
  190. );
  191. break;
  192. case 'msg':
  193. $rt=userbox_msg($p['for']) ;
  194. break;
  195. case 'categorycount':
  196. $rt= DATABOX_categorycount(
  197. "userbox"
  198. ,$p['group_id']
  199. ,$p['group_code']
  200. ,$p['permission']
  201. ,$p['numberformat']
  202. );
  203. break;
  204. case 'attributevalue':
  205. $rt=DATABOX_fieldvalue(
  206. "userbox"
  207. ,$p['id']
  208. ,$p['code']
  209. ,$p['field_id']
  210. ,$p['field_code']
  211. ,$p['option']
  212. );
  213. break;
  214. case 'math':
  215. $rt=DATABOX_math(
  216. "userbox"
  217. ,$p['method']
  218. ,$p['templatesetvar']
  219. ,$p['type_id']
  220. ,$p['category_id']
  221. ,$p['category_code']
  222. ,$p['mode']
  223. ,$p['roundprecision']
  224. ,$p['numberformat']
  225. ,$p['permission']
  226. );
  227. break;
  228. }
  229. $content = str_replace ($autotag['tagstr'], $rt, $content);
  230. return $content;
  231. }
  232. }
  233. }
  234. //第二引数分割
  235. function userbox_parm2 ($p2,$parm2_ary)
  236. {
  237. $ary=array();
  238. $px = explode (' ', trim ($p2));
  239. if (is_array ($px)) {
  240. foreach ($px as $part) {
  241. $a = explode (':', $part);
  242. if (in_array($a[0],$parm2_ary)){
  243. $ary["{$a[0]}"]=$a[1];
  244. $skip++;
  245. }
  246. }
  247. if (count ($px) > $skip) {
  248. for ($i = 0; $i < $skip; $i++) {
  249. array_shift ($px);
  250. }
  251. $ary["lastparm2"] = trim(implode (' ', $px));
  252. }
  253. }else{
  254. $ary["lastparm2"]=trim($p2);
  255. }
  256. return $ary;
  257. }
  258. //=====ブロック関数============================================================
  259. function phpblock_shownewuserbox()
  260. // +---------------------------------------------------------------------------+
  261. // | 機能 ブロック用 新着data一覧出力 |
  262. // | 書式 phpblock_shownewuserbox() |
  263. // +---------------------------------------------------------------------------+
  264. {
  265. return userbox_newlist();
  266. }
  267. //=====専用関数============================================================
  268. //
  269. function userbox_category(
  270. $autotag
  271. ,$category_id=null
  272. ,$template=null
  273. ,$nohitmsg=""
  274. ,$perpage =0
  275. ,$page=null
  276. ,$order=null
  277. ,$category_code=null
  278. ,$mode=''
  279. ,$expired=''
  280. )
  281. // +---------------------------------------------------------------------------+
  282. // | 機能 カテゴリ別一覧表示
  283. // | 書式 userbox_category($id,$template,"yes","page",$perpage)
  284. // | 書式 userbox_category($p['category_id'],$p['thtml'],$p['nohitmsg']
  285. // | 書式 ,"",$p['perpage'],$p['order'],$p['code']
  286. // +---------------------------------------------------------------------------+
  287. // | 引数 $category_id:カテゴリid
  288. // | 引数 $template:使用するテンプレートのフォルダ名
  289. // | 引数 $nohitmsg :"yes"の時nohitメッセージ表示
  290. // | 引数 $m :"page"の時ヘッダ表示
  291. // | 引数 $perpage :1pageあたりの件数、0の時改ページなし
  292. // | 引数 $order :順序
  293. // | 引数 $code :
  294. // | 引数 $mode :ブランク または AND
  295. // +---------------------------------------------------------------------------+
  296. // | public_html/category.php および 自動タグで使用
  297. // | ヘッダはコンフィギュレーション設定により表示されない場合があります
  298. // | idもcodeも指定されない場合は、全カテゴリ
  299. // +---------------------------------------------------------------------------+
  300. // | 戻値 nomal:category list
  301. // +---------------------------------------------------------------------------+
  302. {
  303. $pi_name="userbox";
  304. global $_CONF;
  305. global $_TABLES;
  306. global $_USERBOX_CONF;
  307. global $LANG_USERBOX;
  308. global $LANG_USERBOX_ADMIN;
  309. global $LANG28;
  310. global $_USER;
  311. global $_IMAGE_TYPE;
  312. global $LANG_confignames;
  313. //ログイン要否チェック
  314. if (COM_isAnonUser()){
  315. if ($_CONF['loginrequired']
  316. OR ($_USERBOX_CONF['loginrequired'] >1) ){
  317. return $LANG_USERBOX['loginrequired'];
  318. }
  319. }
  320. //-----テーブル
  321. $tbl1=$_TABLES['USERBOX_category'] ;
  322. $tbl2=$_TABLES['USERBOX_base'] ;
  323. $tbl3=$_TABLES['USERBOX_addition'] ;
  324. $tbl4=$_TABLES['users'] ;
  325. //
  326. $tbl5=$_TABLES['USERBOX_def_category'] ;
  327. $tbl6=$_TABLES['USERBOX_stats'];
  328. $datefield=$_USERBOX_CONF['datefield'];//使用する日付(編集日付、作成日付)
  329. $new_img=$_USERBOX_CONF['new_img'];
  330. if ($new_img==""){
  331. $new_img="New!";
  332. }
  333. $newmarkday=$_USERBOX_CONF['newmarkday'];
  334. if ($newmarkday==""){
  335. $newmarkday=3;
  336. }
  337. $chkday=strtotime("- $newmarkday days",time());
  338. //-----引数チェック
  339. $ids="";
  340. $idsary=array();
  341. if (is_null($category_id) OR $category_id==0){
  342. if (is_null($category_code)){
  343. }else{
  344. $w=explode("|",$category_code);
  345. foreach( $w as $val ){
  346. if ($ids<>""){
  347. $ids.=",";
  348. }
  349. $w_id=DATABOX_codetoid($val,'USERBOX_def_category',"category_id");
  350. $idsary[]=$w_id;
  351. $ids.=$w_id;
  352. }
  353. }
  354. }else{
  355. $ids=$category_id;
  356. $idsary[]=$category_id;
  357. }
  358. //--CATEGORY
  359. $category_name="";
  360. $defaulttemplatesdirectory = "";
  361. if (count($idsary)<>0){
  362. for ($i = 0; $i < count($idsary); $i++) {
  363. $sql = "SELECT ";
  364. $sql .= " name ".LB;
  365. $sql .= " ,code ".LB;
  366. $sql .= " ,description ".LB;
  367. $sql .= " ,defaulttemplatesdirectory".LB;
  368. $sql .= " FROM ".LB;
  369. $sql .= " {$tbl5} AS t5 ".LB;
  370. $sql .= " WHERE ".LB;
  371. $sql .= " t5.category_id =".$idsary[$i].LB;
  372. $result = DB_query ($sql);
  373. $numrows = DB_numRows ($result);
  374. if ($numrows > 0) {
  375. $A = DB_fetchArray ($result);
  376. $category_name.=COM_applyFilter($A['name'])." ";
  377. $category_description.=COM_applyFilter($A['description'])." ";
  378. if ($i==0){
  379. $defaulttemplatesdirectory=COM_applyFilter($A['defaulttemplatesdirectory']);
  380. }
  381. }
  382. }
  383. }
  384. if (is_null($template) or ($template==="")){
  385. if ($defaulttemplatesdirectory===""){
  386. $template="default";
  387. }else{
  388. $template=$defaulttemplatesdirectory;
  389. }
  390. }
  391. //
  392. if (is_null($page) OR !isset($page) OR $page == 0) {
  393. $page = 1;
  394. }
  395. if ($perpage===0 OR is_null($perpage)){
  396. $perpage=$_USERBOX_CONF['perpage'];
  397. }
  398. //
  399. $w=userbox_orderby($datefield,$order,$orderby,$addfieldorder,$field_id);
  400. //-----
  401. $sql = "SELECT ";
  402. $sql .= " t2.id ".LB;
  403. $sql .= " ,t2.description ".LB;
  404. $sql .= " ,t2.released ".LB;
  405. $sql .= " ,t2.expired ".LB;
  406. $sql .= " ,t2.".$datefield." AS datefield ".LB;
  407. $sql .= " ,t2.fieldset_id ".LB;
  408. $sql .= " ,UNIX_TIMESTAMP(t2.".$datefield.") AS datefield_un ".LB;
  409. $sql .= " ,UNIX_TIMESTAMP(t2.released ) AS released_un ".LB;
  410. $sql .= " ,UNIX_TIMESTAMP(t2.expired ) AS expired_un ".LB;
  411. $sql .= " ,t2.group_id";
  412. $sql .= " ,t2.owner_id";
  413. $sql .= " ,t4.username";
  414. $sql .= " ,t4.fullname";
  415. $sql .= " ,t4.photo";
  416. $sql .= " ,t4.email";
  417. if ($addfieldorder){
  418. $sql .= " ,t3.value ".LB;
  419. }
  420. //--FROM
  421. $sql .= " FROM ".LB;
  422. $sql .= " {$tbl2} AS t2 ".LB;
  423. $sql .= " ,{$tbl4} AS t4 ".LB;
  424. if ($addfieldorder){
  425. $sql .= " ,{$tbl3} AS t3 ".LB;
  426. }
  427. //--WHERE
  428. $sql .= " WHERE ".LB;
  429. $sql .= " t2.id=t4.uid ".LB;
  430. if (count($idsary)<>0){
  431. if (strtoupper($mode)=="AND"){
  432. $w="";
  433. foreach( $idsary as $val ){
  434. if ($w<>""){
  435. $w.=" AND ";
  436. }
  437. $w.=$val." IN (SELECT t1.category_id";
  438. $w.=" FROM {$tbl1} AS t1 ,{$tbl5} AS t5";
  439. $w.=" WHERE t2.id = t1.id AND t1.category_id = t5.category_id AND t5.allow_display<2)";
  440. }
  441. }else{
  442. $w= "t2.id IN (SELECT id FROM {$tbl1} AS t1 ,{$tbl5} AS t5 ";
  443. $w.="WHERE t1.category_id = t5.category_id AND t5.allow_display<2 AND t1.category_id IN ({$ids})) ";
  444. }
  445. $sql.=" AND ({$w})".LB;
  446. }
  447. if ($addfieldorder){
  448. $sql .= " AND t3.field_id=".$field_id.LB;
  449. $sql .= " AND t3.id=t2.id".LB;
  450. }
  451. //下書データはのぞく
  452. $sql .= " AND t2.draft_flag=0".LB;
  453. //アクセス権のないデータ はのぞく
  454. $sql .= COM_getPermSql('AND',0,2,"t2");
  455. //公開日以前のデータはのぞく
  456. $sql .= " AND (released <= NOW())".LB;
  457. //公開終了日を過ぎたデータはのぞく
  458. if (strtoupper($expired)=="NO"){
  459. $sql .= " AND (expired=0 OR expired > NOW())";
  460. }
  461. //--ORDER
  462. $sql .= " ORDER BY ".LB;
  463. $sql .= $orderby.LB;
  464. //
  465. $result = DB_query ($sql);
  466. $cnt = DB_numRows ($result);
  467. $pages = 0;
  468. if ($perpage > 0) {
  469. $pages = ceil($cnt / $perpage);
  470. }
  471. $offset = ($page - 1) * $perpage;
  472. $sql .= " LIMIT $offset, $perpage";
  473. //自動タグでない時 ヘッダ、左ブロック
  474. if ($autotag==="notautotag"){
  475. if ($page > 1) {
  476. $page_title = sprintf ('%s (%d)', $category_name, $page);
  477. } else {
  478. $page_title = sprintf ('%s ', $category_name);
  479. }
  480. // Meta Tags
  481. $headercode=DATABOX_getheadercode(
  482. "category"
  483. ,$template
  484. ,$pi_name
  485. ,$category_id
  486. ,$category_name
  487. ,$category_description
  488. ,$category_name
  489. ,$category_description);
  490. $retval .= DATABOX_siteHeader($pi_name,'',$page_title,$headercode) ;
  491. }
  492. $result = DB_query ($sql);
  493. $numrows = DB_numRows ($result);
  494. if ($numrows > 0) {
  495. $tmplfld=DATABOX_templatePath('category',$template,$pi_name);
  496. $templates = new Template($tmplfld);
  497. $templates->set_file (array (
  498. 'list' => 'list_detail.thtml',
  499. 'nav' => 'navigation_detail.thtml',
  500. 'row' => 'row.thtml',
  501. 'col' => "col_detail.thtml",
  502. 'pagenav' => 'pagenavigation.thtml'
  503. ));
  504. $languageid=COM_getLanguageId();
  505. $language= COM_getLanguage();
  506. $templates->set_var ('languageid', $languageid);
  507. $templates->set_var ('language', $language);
  508. if ($languageid<>"") {
  509. $templates->set_var ('_languageid', "_".$languageid);
  510. }else{
  511. $templates->set_var ('_languageid', "");
  512. }
  513. $templates->set_var ('site_url',$_CONF['site_url']);
  514. $templates->set_var ('this_script',THIS_SCRIPT);
  515. //bread
  516. $templates->set_var ('home',$LANG_USERBOX['home']);
  517. $url=$_CONF['site_url']."/userbox/category.php";
  518. $category_top="<a href='".$url."'>".$LANG_USERBOX['category_top']."</a>";
  519. $templates->set_var ('category_top',$category_top);
  520. $templates->set_var ('lang_category_list_h2',$LANG_USERBOX['category_list_h2']);
  521. $templates->set_var ('category_name',$category_name);
  522. $templates->set_var ('category_code',$category_code);
  523. $templates->set_var ('category_description',$category_description);
  524. //page
  525. $templates->set_var ('cnt', $cnt);
  526. $lin1=$offset+1;
  527. $lin2=$lin1+$perpage - 1;
  528. if ($lin2>$cnt){
  529. $lin2=$cnt;
  530. }
  531. //summary navigation
  532. $templates->set_var ('lang_view', $LANG_USERBOX['view']);
  533. $templates->set_var ('lin', $lin1."-".($lin2));
  534. $templates->set_var ('cnt', $cnt);
  535. $templates->set_var ('lang_name', $LANG_USERBOX_ADMIN['name']);
  536. $templates->set_var ('lang_username', $LANG_USERBOX_ADMIN['username']);
  537. $templates->set_var ('lang_id', $LANG_USERBOX_ADMIN['id']);
  538. $templates->set_var ('lang_uid', $LANG28[2]);
  539. $templates->set_var ('lang_username', $LANG28[3]);
  540. $templates->set_var ('lang_fullname',$LANG28[4]);
  541. //
  542. $templates->set_var ('lang_date', $LANG_USERBOX_ADMIN[$datefield]);
  543. $templates->set_var ('lang_released', $LANG_USERBOX_ADMIN['released']);
  544. $templates->set_var ('lang_expired', $LANG_USERBOX_ADMIN['expired']);
  545. $templates->set_var ('lang_remaingdays', $LANG_USERBOX_ADMIN['remaingdays']);
  546. $templates->set_var ('lang_description', $LANG_USERBOX_ADMIN['description']);
  547. $templates->set_var ('lang_addfield', $addfield_name);
  548. // 追加項目のヘッダ
  549. $addition_def=DATABOX_getadditiondef($pi_name);
  550. //
  551. $templates->set_var('lang_imgfile_frd', $LANG_confignames['userbox']['imgfile_frd']);
  552. $templates->set_var ('imgfile_frd', $_USERBOX_CONF['imgfile_frd']);
  553. $templates->set_var ('data_img_url', $_CONF['site_url']."/".$_USERBOX_CONF['imgfile_frd']);
  554. $templates->set_var('lang_imgfile_thumb_frd', $LANG_confignames['userbox']['imgfile_thumb_frd']);
  555. $templates->set_var ('imgfile_thumb_frd', $_USERBOX_CONF['imgfile_thumb_frd']);
  556. $templates->set_var ('data_thumb_img_url', $_CONF['site_url']."/".$_DATABOX_CONF['imgfile_thumb_frd']);
  557. for ($i = 0; $i < $numrows; $i++) {
  558. $A = DB_fetchArray ($result);
  559. $A = array_map('stripslashes', $A);
  560. $description=COM_applyFilter($A['description']);
  561. $username=COM_applyFilter($A['username']);
  562. $fullname=COM_applyFilter($A['fullname']);
  563. $id=COM_applyFilter($A['id']);
  564. $datefield=COM_applyFilter($A['datefield']);
  565. $released=COM_applyFilter($A['released']);
  566. $expired=COM_applyFilter($A['expired']);
  567. $datefield_ary = COM_getUserDateTimeFormat($A['datefield_un']);
  568. $released_ary = COM_getUserDateTimeFormat($A['released_un']);
  569. if ($expired==="0000-00-00 00:00:00"){
  570. $expired_ary=array();
  571. }else{
  572. $expired_ary = COM_getUserDateTimeFormat($A['expired_un']);
  573. }
  574. $curdate_ary = COM_getUserDateTimeFormat();
  575. $value=COM_applyFilter($A['value']);
  576. $group_id = $A['group_id'];
  577. $owner_id = $A['owner_id'];
  578. $fieldset_id=COM_applyFilter($A['fieldset_id']);
  579. $url=$_CONF['site_url'] . "/userbox/profile.php";
  580. $url.="?";
  581. //コード使用の時
  582. if ($_USERBOX_CONF['datacode']){
  583. $url.="code=".$A['username'];
  584. $url.="&amp;m=code";
  585. }else{
  586. $url.="id=".$A['id'];
  587. $url.="&amp;m=id";
  588. }
  589. $url = COM_buildUrl( $url );
  590. $link= COM_createLink($username, $url);
  591. $templates->set_var ('data_link', $link);
  592. $templates->set_var ('data_fullname', $A['fullname']);
  593. $templates->set_var ('data_title', $A['fullname']);
  594. $templates->set_var ('data_username', $username);
  595. $templates->set_var ('data_code', $username);
  596. $templates->set_var ('data_description', $description);
  597. $templates->set_var ('data_id', $id);
  598. $templates->set_var ('data_url', $url);
  599. $templates->set_var ('data_datefield', $datefield_ary[0]);
  600. $templates->set_var ('data_value', $value);
  601. $templates->set_var ('data_datefield_shortdate', strftime( $_CONF['shortdate'], $A['datefield_un'] ));
  602. $templates->set_var ('data_released', $released_ary[0]);
  603. $templates->set_var ('data_released_shortdate', strftime( $_CONF['shortdate'], $A['released_un'] ));
  604. $templates->set_var ('data_released_date', strftime( $_CONF['date'], $A['released_un'] ));
  605. $templates->set_var ('data_released_daytime', strftime( $_CONF['daytime'], $A['released_un'] ));
  606. $templates->set_var ('data_released_dateonly', strftime( $_CONF['dateonly'], $A['released_un'] ));
  607. $templates->set_var ('data_released_timeonly', strftime( $_CONF['timeonly'], $A['released_un'] ));
  608. $templates->set_var ('data_released_b', strftime( "%b" , $A['released_un']));
  609. $templates->set_var ('data_released_B', strftime( "%B" , $A['released_un']));
  610. $templates->set_var ('data_released_d', strftime( "%d" , $A['released_un']));
  611. $templates->set_var ('data_released_e', strftime( "%e" , $A['released_un']));
  612. //公開終了日 Expired to publish
  613. if ($A['expired'] ==="0000-00-00 00:00:00"){
  614. $templates->set_var ('data_expired', "");
  615. $templates->set_var ('data_expired_shortdate', "" );
  616. $templates->set_var ('data_expired_date', "" );
  617. $templates->set_var ('data_expired_daytime', "" );
  618. $templates->set_var ('data_expired_dateonly', "" );
  619. $templates->set_var ('data_expired_timeonly', "" );
  620. $templates->set_var ('data_expired_b', "" );
  621. $templates->set_var ('data_expired_B', "" );
  622. $templates->set_var ('data_expired_d', "" );
  623. $templates->set_var ('data_expired_e', "" );
  624. }else{
  625. $wary = COM_getUserDateTimeFormat($A['expired_un']);
  626. $templates->set_var ('data_expired', $expired_ary[0]);
  627. $templates->set_var ('data_expired_shortdate', strftime( $_CONF['shortdate'], $A['expired_un'] ));
  628. $templates->set_var ('data_expired_date', strftime( $_CONF['date'], $A['expired_un'] ));
  629. $templates->set_var ('data_expired_daytime', strftime( $_CONF['daytime'], $A['expired_un'] ));
  630. $templates->set_var ('data_expired_dateonly', strftime( $_CONF['dateonly'], $A['expired_un'] ));
  631. $templates->set_var ('data_expired_timeonly', strftime( $_CONF['timeonly'], $A['expired_un'] ));
  632. $templates->set_var ('data_expired_b', strftime( "%b" , $A['expired_un']));
  633. $templates->set_var ('data_expired_B', strftime( "%B" , $A['expired_un']));
  634. $templates->set_var ('data_expired_d', strftime( "%d" , $A['expired_un']));
  635. $templates->set_var ('data_expired_e', strftime( "%e" , $A['expired_un']));
  636. }
  637. $remaingdays="";
  638. if ($expired<>"0000-00-00 00:00:00") {
  639. if ($expired_ary[1]>=$curdate_ary[1]){
  640. $remaingdays=COM_dateDiff( "d", $expired_ary[1], $curdate_ary[1] ) + 1;
  641. }
  642. }
  643. $templates->set_var ('data_remaingdays', $remaingdays);//@@@@@@
  644. if (date("Ymd",strtotime($datefield)) >= date("Ymd",$chkday)){
  645. $templates->set_var ('new_img', $new_img);
  646. }else{
  647. $templates->set_var ('new_img', '');
  648. }
  649. //
  650. if (isset($A['photo']) && empty($A['photo'])) {
  651. $A['photo'] = '(none)'; // user does not have a photo
  652. $templates->set_var('data_photo', "");
  653. }else{
  654. $templates->set_var('data_photo', $A['photo']);
  655. }
  656. $photo = USER_getPhoto($uid, $A['photo'], $A['email'], -1);
  657. $templates->set_var('data_user_photo', $photo);
  658. $hits=COM_applyFilter(DB_getItem( $tbl6 ,"hits","id={$id}"),true);
  659. $templates->set_var('lang_hits', $LANG_USERBOX_ADMIN['hits']);
  660. $templates->set_var('data_hits', $hits);
  661. //カテゴリ@@@@@
  662. $templates->set_var('lang_category', $LANG_USERBOX_ADMIN['category']);
  663. DATABOX_getcategoriesDisp($A['id'],$templates,$chk_user,0,$pi_name);
  664. //追加項目
  665. $chk_user=DATABOX_chkuser($group_id,$owner_id,"userbox.admin");
  666. $additionfields = DATABOX_getadditiondatas($id,$pi_name);
  667. DATABOX_getaddtionfieldsDisp($additionfields,$addition_def,$templates,$chk_user,$pi_name,$fieldset_id);
  668. //管理者の時「編集」
  669. $templates->set_var ('data_edit', "");
  670. if ( SEC_hasRights('userbox.admin')) {
  671. $icon_url = $_CONF['layout_url'] . '/images/edit.' . $_IMAGE_TYPE;
  672. $attr = array('title' => $username." ".$LANG_USERBOX_ADMIN['edit']);
  673. $editiconhtml = COM_createImage($icon_url, $LANG_USERBOX_ADMIN['edit'], $attr);
  674. $attr = array('class' => 'editlink', 'title' => $username." ".$LANG_USERBOX_ADMIN['edit']);
  675. $url = $_CONF['site_admin_url'];
  676. $url .= '/plugins/userbox/profile.php';
  677. $url .= '?mode=edit';
  678. $url .= '&amp;'."id={$id}";
  679. $icon = '&nbsp;' ;
  680. $icon .= COM_createLink( $editiconhtml, $url, $attr );
  681. $templates->set_var ('data_edit', $icon);
  682. }else{
  683. if ($id===$_USER['uid']){
  684. $icon_url = $_CONF['layout_url'] . '/images/edit.' . $_IMAGE_TYPE;
  685. $attr = array('title' => $LANG_USERBOX_ADMIN['edit']);
  686. $editiconhtml = COM_createImage($icon_url, $LANG_USERBOX_ADMIN['edit'], $attr);
  687. $attr = array('class' => 'editlink', 'title' => $username." ".$LANG_USERBOX_ADMIN['edit']);
  688. $url = $_CONF['site_url'];
  689. $url .= '/userbox/myprofile/profile.php';
  690. $icon = '&nbsp;' ;
  691. $icon .= COM_createLink( $editiconhtml, $url, $attr );
  692. $templates->set_var ('data_edit', $icon);
  693. }
  694. }
  695. //=====
  696. $templates->parse ('col_var', 'col', true);
  697. $templates->parse ('row_var', 'row', true);
  698. $templates->set_var ('col_var', '');
  699. }
  700. // Call to plugins to set template variables in the databox
  701. PLG_templateSetVars( 'userbox', $templates );
  702. //------------
  703. //-----navigation
  704. $url = $_CONF['site_url'] . '/';
  705. if ($autotag==="notautotag"){
  706. $url.=THIS_SCRIPT;
  707. }else{
  708. $url.="userbox/category.php";
  709. }
  710. $url .= "?";
  711. if ($category_code<>""){
  712. $url .= "code=".$category_code;
  713. $url .= "&amp;m=code";
  714. }else{
  715. $url .= "id=".$category_id;
  716. $url .= "&amp;m=id";
  717. }
  718. $url .= "&amp;template=".$template;
  719. $url .= "&amp;order=";
  720. //-----order navigation
  721. userbox_order ($url, $templates, $order) ;
  722. //-----page navigation
  723. $url .= $order;
  724. $templates->set_var ('page_navigation',
  725. COM_printPageNavigation ($url, $page, $pages));
  726. if ($order==="random"){
  727. $templates->set_var ( 'pagenavinone', 'style="display:none;"' );
  728. }else{
  729. $templates->set_var ( 'pagenavinone', '' );
  730. }
  731. //------------
  732. $templates->parse ('nav_var', 'nav', true);
  733. $templates->set_var ('blockfooter',COM_endBlock());
  734. $templates->set_var ('msg', "");
  735. //@@@@@@@@$templates->set_var ('search_link', $LANG_USERBOX['search_link']);
  736. //@@@@@@@@$templates->set_var ('search_var',"");
  737. $templates->parse ('output', 'list');
  738. $content = $templates->finish ($templates->get_var ('output'));
  739. $retval .=$content;
  740. }else{
  741. if ($nohitmsg==="yes"){
  742. $tmplfld=DATABOX_templatePath('category',$template,$pi_name);
  743. $templates = new Template($tmplfld);
  744. $templates->set_file (array (
  745. 'list' => 'nohit.thtml',
  746. ));
  747. $templates->set_var ('home',$LANG_USERBOX['home']);
  748. $url=$_CONF['site_url']."/userbox/category.php";
  749. $category_top="<a href='".$url."'>".$LANG_USERBOX['category_top']."</a>";
  750. $templates->set_var ('category_top',$category_top);
  751. $templates->set_var ('category_name',$category_name);
  752. $templates->set_var ('category_code',$category_code);
  753. $templates->set_var ('category_description',$category_description);
  754. $templates->set_var('xhtml', XHTML);
  755. $templates->set_var('site_url', $_CONF['site_url']);
  756. $templates->set_var('site_admin_url', $_CONF['site_admin_url']);
  757. $templates->set_var('layout_url', $_CONF['layout_url']);
  758. $templates->set_var ('lang_nohit', $LANG_USERBOX['nohit']);
  759. $templates->parse ('output', 'list');
  760. $content = $templates->finish ($templates->get_var ('output'));
  761. $retval .=$content;
  762. }
  763. }
  764. $retval =PLG_replacetags ($retval);
  765. //return $dbg.$retval;
  766. return $retval;
  767. }
  768. function userbox_count(
  769. $category_id =null
  770. ,$category_code =null
  771. ,$mode=''
  772. ,$permission=""
  773. ,$numberformat=''
  774. )
  775. // +---------------------------------------------------------------------------+
  776. // | 機能 件数表示
  777. // +---------------------------------------------------------------------------+
  778. // | 書式 userbox_count()
  779. // | 書式 userbox_count(1)
  780. // | 書式 userbox_count("japan")
  781. // +---------------------------------------------------------------------------+
  782. // | 引数 $category_id:カテゴリid (優先)
  783. // | 引数 $category_code:カテゴリコード
  784. // | 引数 $mode :ブランク または AND
  785. // +---------------------------------------------------------------------------+
  786. // | 戻値 nomal:データ総数、カテゴリ別データ件数
  787. // +---------------------------------------------------------------------------+
  788. {
  789. global $_TABLES;
  790. //-----
  791. $tbl1=$_TABLES['USERBOX_base'] ;
  792. $tbl2=$_TABLES['USERBOX_category'] ;
  793. //カテゴリの指定がなければ全件、あればカテゴリ毎
  794. $exp="";
  795. if (is_null($category_id) AND is_null($category_code) ){
  796. }else{
  797. $ids="";
  798. $idsary=array();
  799. if (is_null($category_id) OR $category_id==0){
  800. if (is_null($category_code)){
  801. }else{
  802. $w=explode("|",$category_code);
  803. foreach( $w as $val ){
  804. if ($ids<>""){
  805. $ids.=",";
  806. }
  807. $w_id=DATABOX_codetoid($val,'USERBOX_def_category',"category_id");
  808. $idsary[]=$w_id;
  809. $ids.=$w_id;
  810. }
  811. }
  812. }else{
  813. $ids=$category_id;
  814. $idsary[]=$category_id;
  815. }
  816. if (strtoupper($mode)=="AND"){
  817. $w="";
  818. foreach( $idsary as $val ){
  819. if ($w<>""){
  820. $w.=" AND ";
  821. }
  822. $w.=$val." IN (SELECT category_id";
  823. $w.=" FROM {$tbl2} AS t2 ";
  824. $w.=" WHERE t2.id = t1.id)";
  825. }
  826. }else{
  827. $w= "id IN (SELECT id FROM {$tbl2} ";
  828. $w.="WHERE category_id IN ({$ids})) ";
  829. }
  830. $exp=$w.LB;
  831. }
  832. //-----
  833. $sql = "SELECT ".LB;
  834. $sql .= " distinct t1.id ".LB;
  835. $sql .= " FROM ".LB;
  836. $sql .= " {$tbl1} AS t1 ".LB;
  837. $sql .= " WHERE ".LB;
  838. if ($exp<>""){
  839. $sql .= $exp. " AND ";
  840. }
  841. //@@@@@@@@@@@------>
  842. //下書はのぞく
  843. $sql .= " t1.draft_flag=0".LB;
  844. //アクセス権のないデータ はのぞく
  845. if (strtoupper($permission)=="IGNORE"){
  846. }else{
  847. $sql .= COM_getPermSql('AND').LB;
  848. }
  849. //公開日以前のデータはのぞく
  850. $sql .= " AND (released <= NOW())".LB;
  851. //公開終了日を過ぎたデータはのぞく
  852. $sql .= " AND (expired=0 OR expired > NOW())".LB;
  853. //@@@@@@@@@@@<------
  854. $result = DB_query ($sql);
  855. $cnt = DB_numRows ($result);
  856. if (strtoupper($numberformat)=="YES"){
  857. $rt=COM_NumberFormat($cnt);
  858. }else{
  859. $rt=$cnt;
  860. }
  861. return $rt;
  862. }
  863. function userbox_grp(
  864. $field=null
  865. ,$function=null
  866. ,$format=null
  867. ,$category_id =null
  868. ,$category_code =null
  869. )
  870. // +---------------------------------------------------------------------------+
  871. // | 機能 集計表示(max min sum)
  872. // +---------------------------------------------------------------------------+
  873. // | 書式 userbox_grp()
  874. // | 書式 userbox_grp(1)
  875. // | 書式 userbox_grp("japan")
  876. // +---------------------------------------------------------------------------+
  877. // | 引数 $field:項目 デフォルトmodified
  878. // | 引数 $function:関数 デフォルトmax
  879. // | 引数 $format:書式
  880. // | 引数 $category_id:カテゴリid (優先)
  881. // | 引数 $category_code:カテゴリコード
  882. // +---------------------------------------------------------------------------+
  883. // | 戻値 nomal:データ総数、カテゴリ別データ件数
  884. // +---------------------------------------------------------------------------+
  885. {
  886. global $_TABLEdS;
  887. global $LANG_USERBOX;
  888. $rt="";
  889. if (is_null($field) ){
  890. $field="id";
  891. }
  892. if (is_null($function) ){
  893. $function="max";
  894. }
  895. if (is_null($category_id) AND is_null($category_code) ){
  896. $m="ALL";
  897. }else{
  898. if (is_null($category_id) ){
  899. $category_id=DATABOX_codetoid($category_code,'USERBOX_def_category',"category_id");
  900. }
  901. $m="CATEGORY";
  902. }
  903. //-----
  904. $tbl1=$_TABLES['USERBOX_base'] ;
  905. $tbl2=$_TABLES['USERBOX_category'] ;
  906. //-----
  907. $sql=LB;
  908. $sql .= "SELECT ".LB;
  909. $sql .= " {$function}(t1.{$field}) AS rt".LB;
  910. $sql .= " FROM ".LB;
  911. $sql .= " {$tbl1} AS t1 ".LB;
  912. if ($m==="ALL"){
  913. }else{
  914. $sql .= " ,{$tbl2} AS t2 ".LB;
  915. }
  916. $sql .= " WHERE ".LB;
  917. //@@@@@@@@@--------->
  918. //下書はのぞく
  919. $sql .= " t1.draft_flag=0".LB;
  920. //アクセス権のないデータ はのぞく
  921. $sql .= COM_getPermSql('AND').LB;
  922. //公開日以前のデータはのぞく
  923. $sql .= " AND (released <= NOW())".LB;
  924. //公開終了日を過ぎたデータはのぞく
  925. $sql .= " AND (expired=0 OR expired > NOW())".LB;
  926. //@@@@@@@@@<---------
  927. if ($m==="ALL"){
  928. }else{
  929. $sql .= " AND t1.id = t2.id ".LB;
  930. $sql .= " AND t2.category_id= ".$category_id .LB;
  931. }
  932. $result = DB_query ($sql);
  933. $numrows = DB_numRows ($result);
  934. if ($numrows > 0) {
  935. $A = DB_fetchArray ($result);
  936. $rt=$A['rt'];
  937. if ($rt<>""){
  938. switch($format){
  939. case "lastmodified":// '%Y年%m%e日更新';
  940. case "lastcreated"://'%Y年%m%e日追加';
  941. $fm=$LANG_USERBOX[$format];
  942. $rt=strftime($fm,strtotime($rt));
  943. break;
  944. default:
  945. break;
  946. }
  947. }
  948. }
  949. return $rt;
  950. }
  951. function userbox_profile(
  952. $id=null
  953. ,$template=null
  954. ,$nohitmsg=""
  955. ,$m=""
  956. ,$code=null
  957. )
  958. // +---------------------------------------------------------------------------+
  959. // | 機能 個別データ表示
  960. // | 書式 userbox_profile($id,$template,"yes","page")
  961. // | 書式 userbox_profile($p['id'],$p['thtml'],$p['nohitmsg'],$p['code']
  962. // +---------------------------------------------------------------------------+
  963. // | 引数 $id :
  964. // | 引数 $template :テンプレートのdirectory
  965. // | 引数 $nohitmsg :"yes"の時nohitメッセージ表示
  966. // | 引数 $m :"page"の時ヘッダ表示
  967. // | 引数 $code :
  968. // +---------------------------------------------------------------------------+
  969. // | public_html/profile.php および 自動タグで使用
  970. // | ヘッダはコンフィギュレーション設定により表示されない場合があります
  971. // | idもcodeも指定されない場合は、直近に変更または追加されたデータを返します
  972. // +---------------------------------------------------------------------------+
  973. // | 戻値 nomal:profile
  974. // +---------------------------------------------------------------------------+
  975. // 20120125
  976. {
  977. $pi_name="userbox";
  978. global $_CONF;
  979. global $_TABLES;
  980. global $_IMAGE_TYPE;
  981. global $_USER;
  982. global $LANG28;
  983. global $LANG04;
  984. global $_USERBOX_CONF;
  985. global $LANG_USERBOX;
  986. global $LANG_USERBOX_ADMIN;
  987. global $LANG_confignames;
  988. $layout=$_DATABOX_CONF['layout'];
  989. //-----
  990. if (is_null($id) AND (is_null($code))){
  991. $id=$_USER['uid'];
  992. }
  993. if (is_null($id) OR ($id==0)){
  994. if ($code<>""){
  995. $id=DATABOX_codetoid($code,'users',"uid","username");
  996. }
  997. }
  998. //-----
  999. $display = '';
  1000. $tbl=$_TABLES['USERBOX_base'] ;
  1001. $tbl1=$_TABLES['users'] ;
  1002. $tbl4=$_TABLES['USERBOX_def_fieldset'];
  1003. $tbl5=$_TABLES['USERBOX_stats'];
  1004. $addition_def=DATABOX_getadditiondef($pi_name);
  1005. //-----
  1006. $sql = "SELECT t.* ";
  1007. $sql .= " ,UNIX_TIMESTAMP(t.modified) AS modified_un";
  1008. $sql .= " ,UNIX_TIMESTAMP(t.released) AS released_un";
  1009. $sql .= " ,UNIX_TIMESTAMP(t.comment_expire) AS comment_expire_un";
  1010. $sql .= " ,UNIX_TIMESTAMP(t.expired) AS expired_un";
  1011. $sql .= " ,UNIX_TIMESTAMP(t.created) AS created_un";
  1012. $sql .= " ,UNIX_TIMESTAMP(t.udatetime) AS udatetime_un";
  1013. $sql .= " ,t.fieldset_id";
  1014. $sql .= " ,t1.username ";
  1015. $sql .= " ,t1.fullname ";
  1016. $sql .= " ,t1.photo ";
  1017. $sql .= " ,t1.email";
  1018. $sql .= " ,t3.username AS last_modify_name";
  1019. $sql .= " ,t3.fullname AS last_modify_fullname";
  1020. $sql .= " ,t4.name AS set_name";
  1021. $sql .= " ,t4.description AS set_description";
  1022. $sql .= " ,t4.defaulttemplatesdirectory AS set_defaulttemplatesdirectory";
  1023. $sql .= " ,t4.layout AS set_layout";
  1024. $sql .= " ,t5.hits";
  1025. $sql .= " FROM ";
  1026. $sql .= " {$tbl} AS t ";
  1027. $sql .= " JOIN {$tbl4} AS t4 ON t.fieldset_id=t4.fieldset_id";
  1028. $sql .= " JOIN {$tbl1} AS t1 ON t.id=t1.uid";//owner
  1029. $sql .= " LEFT JOIN {$tbl5} AS t5 ON t.id=t5.id";
  1030. $sql .= " LEFT JOIN {$tbl1} AS t3 ON t.uuid=t3.uid";//last_updateowner
  1031. $sql .= " WHERE ";
  1032. if (is_null($id)){//@@@@@
  1033. $sql .= "1=1";
  1034. }else{
  1035. $sql .= " t.id=".$id;
  1036. }
  1037. //管理者の時,
  1038. if ( SEC_hasRights('userbox.admin') OR $m==="view") {
  1039. }else{
  1040. //下書データはのぞく
  1041. $sql .= " AND t.draft_flag=0".LB;
  1042. //公開日以前のデータはのぞく
  1043. $sql .= " AND (released <= NOW())";
  1044. //公開終了日を過ぎたデータはのぞく
  1045. $sql .= " AND (expired=0 OR expired > NOW())";
  1046. }
  1047. //アクセス権のないデータ はのぞく
  1048. $sql .= COM_getPermSql('AND');
  1049. if (is_null($id)){
  1050. $sql .= " ORDER BY ".$_USERBOX_CONF['datefield'] . " DESC ";
  1051. $sql .= " LIMIT 0 , 1";
  1052. }
  1053. $result = DB_query ($sql);
  1054. $numrows = DB_numRows ($result);
  1055. if ($m==="page" OR $m==="view"){
  1056. if ($numrows <= 0) {
  1057. COM_handle404();
  1058. exit;
  1059. }
  1060. }
  1061. if ($numrows > 0) {
  1062. $A = DB_fetchArray ($result);
  1063. $A = array_map('stripslashes', $A);
  1064. $cache_time=$A['cache_time'];
  1065. $cache=false;
  1066. if ($cache_time===0){
  1067. }else{
  1068. if ($m==="page"){
  1069. if ($cache_time > -1 ) {
  1070. // Don't need to cache per theme since not rendered in a block yet
  1071. $cacheInstance = 'userbox__' . $id . '__' . CACHE_security_hash();
  1072. $retval = CACHE_check_instance($cacheInstance);
  1073. if ($retval AND $cache_time == -1) {
  1074. return $retval;
  1075. } elseif ($retval AND $cache_time > 0) {
  1076. $lu = CACHE_get_instance_update($cacheInstance);
  1077. $now = time();
  1078. if (($now - $lu) < $cache_time) {
  1079. return $retval;
  1080. } else {
  1081. $retval = '';
  1082. }
  1083. }
  1084. }
  1085. }
  1086. }
  1087. if ($cache){
  1088. $display = CACHE_check_instance($cacheInstance."_display",$display);
  1089. $layout = CACHE_check_instance($cacheInstance."_layout",$layout);
  1090. $headercode = CACHE_check_instance($cacheInstance."_headercode",$headercode);
  1091. $title = CACHE_check_instance($cacheInstance."_title",$title);
  1092. }else{
  1093. if (is_null($template) or ($template==="")){
  1094. if ($A['defaulttemplatesdirectory']<>""){
  1095. $template=$A['defaulttemplatesdirectory'];
  1096. }elseif ($A['set_defaulttemplatesdirectory']<>""){
  1097. $template=$A['set_defaulttemplatesdirectory'];
  1098. }else{
  1099. $template="default";
  1100. }
  1101. }
  1102. $group_id = $A['group_id'];
  1103. $owner_id = $A['owner_id'];
  1104. $fieldset_id= $A['fieldset_id'];
  1105. if ($m==="view"){
  1106. $chk_user=1000;//ログインユーザ
  1107. }else{
  1108. $chk_user=DATABOX_chkuser($group_id,$owner_id,"userbox.admin");
  1109. }
  1110. //
  1111. $id=$A['id'];
  1112. $additionfields = DATABOX_getadditiondatas($id,$pi_name);
  1113. //ヘッダ、左ブロック start.............
  1114. if ($m==="page"){
  1115. if ($A['set_layout']<>"0") {
  1116. $layout=$A['set_layout'];
  1117. }
  1118. $title= $A['page_title'];
  1119. if ($title===""){
  1120. $title =$A['username'];
  1121. }
  1122. // Meta Tags
  1123. $headercode=DATABOX_getheadercode(
  1124. "profile"
  1125. ,$template
  1126. ,$pi_name
  1127. ,$A['id']
  1128. ,$title
  1129. ,$A['meta_description']
  1130. ,$A['meta_keywords']
  1131. ,$A['description']);
  1132. }
  1133. $tmplfld=DATABOX_templatePath('profile',$template,$pi_name);
  1134. $templates = new Template($tmplfld);
  1135. $templates->set_file (array (
  1136. 'list' => 'list_detail.thtml',
  1137. 'row' => 'row.thtml',
  1138. 'col' => "col_detail.thtml",
  1139. ));
  1140. $languageid=COM_getLanguageId();
  1141. $language= COM_getLanguage();
  1142. $templates->set_var ('languageid', $languageid);
  1143. $templates->set_var ('language', $language);
  1144. if ($languageid<>"") {
  1145. $templates->set_var ('_languageid', "_".$languageid);
  1146. }else{
  1147. $templates->set_var ('_languageid', "");
  1148. }
  1149. $templates->set_var ('site_admin_url', $_CONF['site_admin_url']);
  1150. $templates->set_var ('site_url',$_CONF['site_url']);
  1151. $templates->set_var('xhtml', XHTML);
  1152. $templates->set_var('layout_url', $_CONF['layout_url']);
  1153. $templates->set_var ('site_name', $_CONF['site_name']);
  1154. $templates->set_var ('site_mail', $_CONF['site_mail']);
  1155. $currenturl= COM_getCurrentURL();
  1156. $templates->set_var ('currenturl', htmlspecialchars($currenturl, ENT_QUOTES, 'UTF-8'));
  1157. //facebook
  1158. $facebook_consumer_key = trim($_CONF['facebook_consumer_key']);
  1159. $templates->set_var ('facebook_consumer_key', $facebook_consumer_key);
  1160. //
  1161. //daft_flag管理者の時
  1162. if ($A['draft_flag']==1){
  1163. $templates->set_var ('draft', "draft!");
  1164. }else{
  1165. $templates->set_var ('draft', "");
  1166. }
  1167. //------------
  1168. //id
  1169. $templates->set_var('lang_id', $LANG_USERBOX_ADMIN['id']);
  1170. $templates->set_var ('id', $A['id']);
  1171. $templates->set_var('lang_fields', $LANG_USERBOX_ADMIN['fields']);
  1172. $templates->set_var('lang_field', $LANG_USERBOX_ADMIN['field']);
  1173. $templates->set_var('lang_templatesetvar', $LANG_USERBOX_ADMIN['templatesetvar']);
  1174. $templates->set_var('lang_content', $LANG_USERBOX_ADMIN['content']);
  1175. $templates->set_var('lang_type', $LANG_USERBOX_ADMIN['type']);
  1176. $templates->set_var('lang_byusingid', $LANG_USERBOX_ADMIN['byusingid']);
  1177. $templates->set_var('lang_byusingcode', $LANG_USERBOX_ADMIN['byusingcode']);
  1178. $templates->set_var('lang_byusingtemplatesetvar', $LANG_USERBOX_ADMIN['byusingtemplatesetvar']);
  1179. $templates->set_var('lang_group', $LANG_USERBOX_ADMIN['group']);
  1180. $templates->set_var('lang_withlink', $LANG_USERBOX_ADMIN['withlink']);
  1181. $templates->set_var('lang_groupbygroup', $LANG_USERBOX_ADMIN['groupbygroup']);
  1182. $templates->set_var('lang_uid', $LANG28['2']);
  1183. $templates->set_var('lang_username', $LANG28['3']);
  1184. $templates->set_var ('username', $A['username']);
  1185. $templates->set_var('lang_fullname', $LANG28['4']);
  1186. $templates->set_var ('fullname', $A['fullname']);
  1187. $templates->set_var('lang_photo', $LANG04['77']);
  1188. if (isset($A['photo']) && empty($A['photo'])) {
  1189. $A['photo'] = '(none)'; // user does not have a photo
  1190. $templates->set_var('photo', "");
  1191. }else{
  1192. $templates->set_var('photo', $A['photo']);
  1193. }
  1194. //$photo = USER_getPhoto($A['id'], $A['photo'], $A['email'], -1);
  1195. //$templates->set_var('user_photo', $photo);
  1196. //$_USERBOX_CONF
  1197. $templates->set_var('lang_imgfile_frd', $LANG_confignames['userbox']['imgfile_frd']);
  1198. $templates->set_var ('imgfile_frd', $_USERBOX_CONF['imgfile_frd']);
  1199. $templates->set_var ('data_img_url', $_CONF['site_url']."/".$_USERBOX_CONF['imgfile_frd']);
  1200. $templates->set_var('lang_imgfile_thumb_frd', $LANG_confignames['userbox']['imgfile_thumb_frd']);
  1201. $templates->set_var ('imgfile_thumb_frd', $_USERBOX_CONF['imgfile_thumb_frd']);
  1202. $templates->set_var ('data_thumb_img_url', $_CONF['site_url']."/".$_USERBOX_CONF['imgfile_thumb_frd']);
  1203. //基本項目
  1204. $templates->set_var('lang_basicfields', $LANG_USERBOX_ADMIN['basicfields']);
  1205. //コード&タイトル&説明
  1206. $templates->set_var('lang_code', $LANG_USERBOX_ADMIN['code']);
  1207. $templates->set_var ('code', $A['username']);
  1208. $templates->set_var('lang_title', $LANG_USERBOX_ADMIN['title']);
  1209. $templates->set_var ('title',$A['fullname']);
  1210. $templates->set_var('lang_description', $LANG_USERBOX_ADMIN['description']);
  1211. $templates->set_var ('description',$A['description']);
  1212. $templates->set_var('lang_draft', $LANG_USERBOX_ADMIN['draft']);
  1213. if ($A['draft_flag']){
  1214. $templates->set_var ('draft',$LANG_USERBOX_ADMIN['draft']);
  1215. }else{
  1216. $templates->set_var ('draft',"");
  1217. }
  1218. //hits
  1219. $templates->set_var('lang_hits', $LANG_USERBOX_ADMIN['hits']);
  1220. $templates->set_var ('hits', $A['hits']);
  1221. //カテゴリ@@@@@
  1222. $templates->set_var('lang_category', $LANG_USERBOX_ADMIN['category']);
  1223. DATABOX_getcategoriesDisp($A['id'],$templates,$chk_user,0,$pi_name);
  1224. //追加項目
  1225. $templates->set_var('lang_additionfields', $LANG_USERBOX_ADMIN['additionfields']);
  1226. DATABOX_getaddtionfieldsDisp($additionfields,$addition_def,$templates,$chk_user,$pi_name,$fieldset_id);
  1227. //編集日付
  1228. $templates->set_var('lang_modified', $LANG_USERBOX_ADMIN['modified']);
  1229. $wary = COM_getUserDateTimeFormat($A['modified_un']);
  1230. $templates->set_var ('modified',$wary[0]);
  1231. $templates->set_var ('modified_shortdate', strftime( $_CONF['shortdate'], $A['modified_un'] ));
  1232. $templates->set_var ('modified_date', strftime( $_CONF['date'], $A['modified_un'] ));
  1233. $templates->set_var ('modified_daytime', strftime( $_CONF['daytime'], $A['modified_un'] ));
  1234. $templates->set_var ('modified_dateonly', strftime( $_CONF['dateonly'], $A['modified_un'] ));
  1235. $templates->set_var ('modified_timeonly', strftime( $_CONF['timeonly'], $A['modified_un'] ));
  1236. $templates->set_var ('modified_b', strftime( "%b" , $A['modified_un']));
  1237. $templates->set_var ('modified_B', strftime( "%B" , $A['modified_un']));
  1238. $templates->set_var ('modified_d', strftime( "%d" , $A['modified_un']));
  1239. $templates->set_var ('modified_e', strftime( "%e" , $A['modified_un']));
  1240. //作成日付
  1241. $templates->set_var('lang_created', $LANG_USERBOX_ADMIN['created']);
  1242. $wary = COM_getUserDateTimeFormat($A['created_un']);
  1243. $templates->set_var ('created', $wary[0]);
  1244. $templates->set_var ('created_shortdate', strftime( $_CONF['shortdate'], $A['created_un'] ));
  1245. $templates->set_var ('created_date', strftime( $_CONF['date'], $A['created_un'] ));
  1246. $templates->set_var ('created_daytime', strftime( $_CONF['daytime'], $A['created_un'] ));
  1247. $templates->set_var ('created_dateonly', strftime( $_CONF['dateonly'], $A['created_un'] ));
  1248. $templates->set_var ('created_timeonly', strftime( $_CONF['timeonly'], $A['created_un'] ));
  1249. $templates->set_var ('created_b', strftime( "%b" , $A['created_un']));
  1250. $templates->set_var ('created_B', strftime( "%B" , $A['created_un']));
  1251. $templates->set_var ('created_d', strftime( "%d" , $A['created_un']));
  1252. $templates->set_var ('created_e', strftime( "%e" , $A['created_un']));
  1253. //公開日
  1254. $templates->set_var('lang_released', $LANG_USERBOX_ADMIN['released']);
  1255. $wary = COM_getUserDateTimeFormat($A['released_un']);
  1256. $templates->set_var ('released', $wary[0]);
  1257. $templates->set_var ('released_shortdate', strftime( $_CONF['shortdate'], $A['released_un'] ));
  1258. $templates->set_var ('released_date', strftime( $_CONF['date'], $A['released_un'] ));
  1259. $templates->set_var ('released_daytime', strftime( $_CONF['daytime'], $A['released_un'] ));
  1260. $templates->set_var ('released_dateonly', strftime( $_CONF['dateonly'], $A['released_un'] ));
  1261. $templates->set_var ('released_timeonly', strftime( $_CONF['timeonly'], $A['released_un'] ));
  1262. $templates->set_var ('released_b', strftime( "%b" , $A['released_un']));
  1263. $templates->set_var ('released_B', strftime( "%B" , $A['released_un']));
  1264. $templates->set_var ('released_d', strftime( "%d" , $A['released_un']));
  1265. $templates->set_var ('released_e', strftime( "%e" , $A['released_un']));
  1266. //公開終了日
  1267. $templates->set_var('lang_expired', $LANG_USERBOX_ADMIN['expired']);
  1268. if ($A['expired'] ==="0000-00-00 00:00:00"){
  1269. $templates->set_var ('expired', "");
  1270. $templates->set_var ('expired_shortdate', "" );
  1271. $templates->set_var ('expired_date', "" );
  1272. $templates->set_var ('expired_daytime', "" );
  1273. $templates->set_var ('expired_dateonly', "" );
  1274. $templates->set_var ('expired_timeonly', "" );
  1275. $templates->set_var ('expired_b', "" );
  1276. $templates->set_var ('expired_B', "" );
  1277. $templates->set_var ('expired_d', "" );
  1278. $templates->set_var ('expired_e', "" );
  1279. }else{
  1280. $wary = COM_getUserDateTimeFormat($A['expired_un']);
  1281. $templates->set_var ('expired', $wary[0]);
  1282. $templates->set_var ('expired_shortdate', strftime( $_CONF['shortdate'], $A['expired_un'] ));
  1283. $templates->set_var ('expired_date', strftime( $_CONF['date'], $A['expired_un'] ));
  1284. $templates->set_var ('expired_daytime', strftime( $_CONF['daytime'], $A['expired_un'] ));
  1285. $templates->set_var ('expired_dateonly', strftime( $_CONF['dateonly'], $A['expired_un'] ));
  1286. $templates->set_var ('expired_timeonly', strftime( $_CONF['timeonly'], $A['expired_un'] ));
  1287. $templates->set_var ('expired_b', strftime( "%b" , $A['expired_un']));
  1288. $templates->set_var ('expired_B', strftime( "%B" , $A['expired_un']));
  1289. $templates->set_var ('expired_d', strftime( "%d" , $A['expired_un']));
  1290. $templates->set_var ('expired_e', strftime( "%e" , $A['expired_un']));
  1291. }
  1292. $templates->set_var ('lang_uuid', $LANG_USERBOX_ADMIN['uuid']);
  1293. $templates->set_var ('uuid', $A['uuid']);
  1294. $templates->set_var ('lang_udatetime', $LANG_USERBOX_ADMIN['udatetime']);
  1295. $wary = COM_getUserDateTimeFormat($A['udatetime_un']);
  1296. $templates->set_var ('udatetime', $wary[0]);
  1297. $templates->set_var ('last_modify_uid', $A['uuid']);
  1298. $templates->set_var ('last_modify_name', $A['last_modify_name']);
  1299. $templates->set_var ('last_modify_fullname', $A['last_modify_fullname']);
  1300. //管理者の時「編集」
  1301. $templates->set_var ('edit', "");
  1302. if ($m<>"view"){
  1303. if ( SEC_hasRights('userbox.admin')) {
  1304. $icon_url = $_CONF['layout_url'] . '/images/edit.' . $_IMAGE_TYPE;
  1305. $attr = array('title' => $A['username']." ".$LANG_USERBOX_ADMIN['edit']);
  1306. $editiconhtml = COM_createImage($icon_url, $LANG_USERBOX_ADMIN['edit'], $attr);
  1307. $attr = array('class' => 'editlink', 'title' => $A['username']." ". $LANG_USERBOX_ADMIN['edit']);
  1308. $url = $_CONF['site_admin_url'];
  1309. $url .= '/plugins/userbox/profile.php';
  1310. $url .= '?mode=edit';
  1311. $url .= '&amp;'."id={$id}";
  1312. $icon = '&nbsp;' ;
  1313. $icon .= COM_createLink( $editiconhtml, $url, $attr );
  1314. $templates->set_var ('edit', $icon);
  1315. }else{
  1316. if ($id===$_USER['uid']){
  1317. $icon_url = $_CONF['layout_url'] . '/images/edit.' . $_IMAGE_TYPE;
  1318. $attr = array('title' => $LANG_USERBOX_ADMIN['edit']);
  1319. $editiconhtml = COM_createImage($icon_url, $LANG_USERBOX_ADMIN['edit'], $attr);
  1320. $attr = array('class' => 'editlink', 'title' => $A['username']." ".$LANG_USERBOX_ADMIN['edit']);
  1321. $url = $_CONF['site_url'];
  1322. $url .= '/userbox/myprofile/profile.php';
  1323. $icon = '&nbsp;' ;
  1324. $icon .= COM_createLink( $editiconhtml, $url, $attr );
  1325. $templates->set_var ('edit', $icon);
  1326. }
  1327. }
  1328. }
  1329. // Call to plugins to set template variables in the databox
  1330. PLG_templateSetVars( 'userbox', $templates );
  1331. //------------
  1332. $templates->parse ('output', 'list');
  1333. $userbox_content = $templates->finish ($templates->get_var ('output'));
  1334. $display=$userbox_content;
  1335. if ($A['draft_flag']!==1){
  1336. if (!SEC_hasRights('userbox.admin')) {
  1337. $id=$A['id'];
  1338. $hits=DB_getItem($_TABLES['USERBOX_stats'],"hits","id={$id}");
  1339. if (empty($hits)) {
  1340. $hits=0;
  1341. }
  1342. $fields.="id,hits ";
  1343. $values.="$id,$hits + 1";
  1344. DB_save($_TABLES['USERBOX_stats'],$fields,$values);
  1345. }
  1346. }
  1347. }
  1348. }else{
  1349. $cache_time=0;
  1350. if ($nohitmsg==="yes"){
  1351. $tmplfld=DATABOX_templatePath('profile',$template,$pi_name);
  1352. $templates = new Template($tmplfld);
  1353. $templates->set_file (array (
  1354. 'list' => 'nohit.thtml',
  1355. ));
  1356. $templates->set_var ('lang_nohit', $LANG_USERBOX['nohit']);
  1357. $templates->set_var('xhtml', XHTML);
  1358. $templates->set_var('site_url', $_CONF['site_url']);
  1359. $templates->set_var('site_admin_url', $_CONF['site_admin_url']);
  1360. $templates->set_var('layout_url', $_CONF['layout_url']);
  1361. $templates->parse ('output', 'list');
  1362. $databox_content = $templates->finish ($templates->get_var ('output'));
  1363. $display =$databox_content;
  1364. }
  1365. }
  1366. $display =PLG_replacetags ($display);
  1367. if (($cache_time > 0 OR $cache_time == -1) AND $m==="page" ){
  1368. CACHE_create_instance($cacheInstance."_display", $display);
  1369. CACHE_create_instance($cacheInstance."_layout", $layout);
  1370. CACHE_create_instance($cacheInstance."_headercode", $headercode);
  1371. CACHE_create_instance($cacheInstance."_title", $title);
  1372. }
  1373. $retval['display']=$display;
  1374. $retval['layout']=$layout;
  1375. $retval['headercode']=$headercode;
  1376. $retval['title']=$title;
  1377. return $retval;
  1378. }
  1379. function userbox_field(
  1380. $autotag
  1381. ,$field_id=null
  1382. ,$value=""
  1383. ,$template=null
  1384. ,$nohitmsg=""
  1385. ,$perpage =0
  1386. ,$page=null
  1387. ,$order=null
  1388. ,$field_code=null
  1389. )
  1390. // +---------------------------------------------------------------------------+
  1391. // | 機能 アトリビュート別一覧表示
  1392. // | 書式
  1393. // +---------------------------------------------------------------------------+
  1394. // | 引数 $autotag:notautotagの時ヘッダを表示しない
  1395. // | 引数 $field_id:追加属性id
  1396. // | 引数 $value:表示する項目の値
  1397. // | 引数 $template:使用するテンプレートのフォルダ名
  1398. // | 引数 $nohitmsg :"yes"の時nohitメッセージ表示
  1399. // | 引数 $perpage :1pageあたりの件数、0の時改ページなし
  1400. // | 引数 $page :
  1401. // | 引数 $order :順序
  1402. // | 引数 $field_code :
  1403. // +---------------------------------------------------------------------------+
  1404. // | public_html/attribute.php および 自動タグで使用
  1405. // | ヘッダはコンフィギュレーション設定により表示されない場合があります
  1406. // | idもcodeも指定されない場合は、全カテゴリ
  1407. // +---------------------------------------------------------------------------+
  1408. // | 戻値 nomal:category list
  1409. // +---------------------------------------------------------------------------+
  1410. {
  1411. $pi_name="userbox";
  1412. global $_CONF;
  1413. global $_TABLES;
  1414. global $_USERBOX_CONF;
  1415. global $LANG_USERBOX;
  1416. global $LANG_USERBOX_ADMIN;
  1417. global $LANG_USERBOX_NOYES;
  1418. global $_IMAGE_TYPE;
  1419. global $LANG_confignames;
  1420. //ログイン要否チェック
  1421. if (COM_isAnonUser()){
  1422. if ($_CONF['loginrequired']
  1423. OR ($_USERBOX_CONF['loginrequired'] >1) ){
  1424. return $LANG_USERBOX['loginrequired'];
  1425. }
  1426. }
  1427. //-----table assign
  1428. $tbl1=$_TABLES['USERBOX_addition'] ;
  1429. $tbl2=$_TABLES['USERBOX_base'] ;
  1430. $tbl3=$_TABLES['USERBOX_addition'] ;
  1431. $tbl4=$_TABLES['users'] ;
  1432. $tbl5=$_TABLES['USERBOX_stats'];
  1433. //日付関連
  1434. $datefield=$_USERBOX_CONF['datefield'];//使用する日付(編集日付、作成日付)
  1435. $new_img=$_USERBOX_CONF['new_img'];
  1436. if ($new_img==""){
  1437. $new_img="New!";
  1438. }
  1439. $newmarkday=$_USERBOX_CONF['newmarkday'];
  1440. if ($newmarkday==""){
  1441. $newmarkday=3;
  1442. }
  1443. $chkday=strtotime("- $newmarkday days",time());
  1444. //-----引数チェック
  1445. if (is_null($value) OR $value==="") {
  1446. return;
  1447. }
  1448. if (is_null($field_id)){
  1449. if ($field_code===""){
  1450. $field_id=0;
  1451. }else{
  1452. $field_id=DATABOX_codetoid($field_code,'USERBOX_def_field',"field_id","templatesetvar");
  1453. }
  1454. }
  1455. if ($field_id===0) {
  1456. return;
  1457. }
  1458. if ($field_code===""){
  1459. $field_code=DB_getItem( $_TABLES['USERBOX_def_field']
  1460. ,"templatesetvar","field_id={$field_id}");
  1461. }
  1462. $field_def=DATABOX_getadditiondef($pi_name);
  1463. $type=$field_def[$field_id]['type'];
  1464. $w = array(0,2,3,4,7,8,9,16);
  1465. if (in_array ($type,$w)){
  1466. }else{
  1467. return;
  1468. }
  1469. $allow_display=$field_def[$field_id]['allow_display'];
  1470. if ($allow_display<2){
  1471. }else{
  1472. return;
  1473. }
  1474. if (is_null($page) OR !isset($page) OR $page == 0) {
  1475. $page = 1;
  1476. }
  1477. if ($perpage===0 OR is_null($perpage)){
  1478. $perpage=$_USERBOX_CONF['perpage'];
  1479. }
  1480. $w=userbox_orderby($datefield,$order,$orderby,$addfieldorder,$orderfield_id);
  1481. $field_def[$field_id]['name'];
  1482. $field_name=$field_def[$field_id]['name'];
  1483. $field_templatesetvar=$field_def[$field_id]['templatesetvar'];
  1484. $field_description=$field_def[$field_id]['description'];
  1485. $fieldvalue=DATABOX_getfieldvalue(
  1486. $value
  1487. ,$field_def[$field_id]['type']
  1488. ,$field_def[$field_id]['selectionary']
  1489. ,$LANG_USERBOX_NOYES
  1490. ,$field_def[$field_id]['selectlist']
  1491. ,$pi_name
  1492. );
  1493. if (is_null($template) or ($template==="")){
  1494. $template="default";
  1495. }
  1496. //-----
  1497. $sql = "SELECT ";
  1498. $sql .= " t2.id ".LB;
  1499. $sql .= " ,t2.description ".LB;
  1500. $sql .= " ,t2.released ".LB;
  1501. $sql .= " ,t2.".$datefield." AS datefield ".LB;
  1502. $sql .= " ,t2.expired ".LB;
  1503. $sql .= " ,UNIX_TIMESTAMP(t2.".$datefield.") AS datefield_un ".LB;
  1504. $sql .= " ,UNIX_TIMESTAMP(t2.released ) AS released_un ".LB;
  1505. $sql .= " ,UNIX_TIMESTAMP(t2.expired ) AS expired_un ".LB;
  1506. $sql .= " ,t2.group_id";
  1507. $sql .= " ,t2.owner_id";
  1508. $sql .= " ,t2.fieldset_id ".LB;
  1509. $sql .= " ,t4.username";
  1510. $sql .= " ,t4.fullname";
  1511. $sql .= " ,t4.photo";
  1512. $sql .= " ,t4.email";
  1513. if ($addfieldorder){
  1514. $sql .= " ,t3.value ".LB;
  1515. }
  1516. $sql .= " FROM ".LB;
  1517. $sql .= " {$tbl2} AS t2 ".LB;
  1518. $sql .= " ,{$tbl1} AS t1 ".LB;
  1519. $sql .= " ,{$tbl4} AS t4 ".LB;
  1520. if ($addfieldorder){
  1521. $sql .= " ,{$tbl3} AS t3 ".LB;
  1522. }
  1523. $sql .= " WHERE ".LB;
  1524. $sql .= " t1.field_id = ".$field_id.LB;
  1525. $sql .= " AND t1.id = t2.id ".LB;
  1526. $sql .= " AND t1.value = \"".$value."\"".LB;
  1527. $sql .= " AND t2.id=t4.uid ".LB;
  1528. if ($addfieldorder){
  1529. $sql .= " AND t3.field_id=".$orderfield_id.LB;
  1530. $sql .= " AND t3.id=t2.id".LB;
  1531. }
  1532. //管理者の時,下書データも含む
  1533. //if ( SEC_hasRights('userbox.admin')) {
  1534. //}else{
  1535. $sql .= " AND t2.draft_flag=0".LB;
  1536. //}
  1537. //アクセス権のないデータ はのぞく
  1538. $sql .= COM_getPermSql('AND',0,2,"t2");
  1539. //公開日以前のデータはのぞく
  1540. $sql .= " AND (released <= NOW())".LB;
  1541. //公開終了日を過ぎたデータはのぞく
  1542. $sql .= " AND (expired=0 OR expired > NOW())";
  1543. $sql .= " ORDER BY ".LB;
  1544. $sql .= $orderby.LB;
  1545. $result = DB_query ($sql);
  1546. $cnt = DB_numRows ($result);
  1547. $pages = 0;
  1548. if ($perpage > 0) {
  1549. $pages = ceil($cnt / $perpage);
  1550. }
  1551. $offset = ($page - 1) * $perpage;
  1552. $sql .= " LIMIT $offset, $perpage";
  1553. //ヘッダ、左ブロック
  1554. if ($autotag==="notautotag"){
  1555. if ($page > 1) {
  1556. $page_title = sprintf ('%s (%d)', $field_name, $page);
  1557. } else {
  1558. $page_title = sprintf ('%s ', $field_name);
  1559. }
  1560. $headercode=DATABOX_getheadercode(
  1561. "attribute"
  1562. ,$template
  1563. ,$pi_name
  1564. ,$field_id
  1565. ,$field_name
  1566. ,$field_description
  1567. ,$field_name
  1568. ,$field_description);
  1569. $retval .= DATABOX_siteHeader($pi_name,'',$page_title,$headercode);
  1570. }
  1571. $addition_def=DATABOX_getadditiondef($pi_name);
  1572. //
  1573. $url=$_CONF['site_url']."/userbox/attribute.php";
  1574. $attribute_top="<a href='".$url."'>".$LANG_USERBOX['attribute_top']."</a>";
  1575. $url=$_CONF['site_url']."/userbox/attribute.php";
  1576. $url.="?";
  1577. $url.="id=".$field_id;
  1578. $url.="&amp;m=id";
  1579. $field_top="<a href='".$url."'>".$field_name.$LANG_USERBOX['countlist']."</a>";
  1580. $result = DB_query ($sql);
  1581. $numrows = DB_numRows ($result);
  1582. if ($numrows > 0) {
  1583. $tmplfld=DATABOX_templatePath('attribute',$template,$pi_name);
  1584. $templates = new Template($tmplfld);
  1585. $templates->set_file (array (
  1586. 'list' => 'list_detail.thtml',
  1587. 'nav' => 'navigation_detail.thtml',
  1588. 'row' => 'row.thtml',
  1589. 'col' => "col_detail.thtml",
  1590. 'pagenav' => 'pagenavigation.thtml'
  1591. ));
  1592. $languageid=COM_getLanguageId();
  1593. $language= COM_getLanguage();
  1594. $templates->set_var ('languageid', $languageid);
  1595. $templates->set_var ('language', $language);
  1596. if ($languageid<>"") {
  1597. $templates->set_var ('_languageid', "_".$languageid);
  1598. }else{
  1599. $templates->set_var ('_languageid', "");
  1600. }
  1601. //
  1602. $templates->set_var ('site_url',$_CONF['site_url']);
  1603. $templates->set_var ('this_script',THIS_SCRIPT);
  1604. //bread
  1605. $templates->set_var ('home',$LANG_USERBOX['home']);
  1606. $templates->set_var ('attribute_top',$addition_top);
  1607. $templates->set_var ('field_top',$field_top);
  1608. $templates->set_var ('field_name',$field_name);
  1609. $templates->set_var ('field_templatesetvar',$field_templatesetvar);
  1610. $templates->set_var ('field_description',$field_description);
  1611. $templates->set_var ('fieldvalue',$fieldvalue);
  1612. //page
  1613. $offset = ($page - 1) * $perpage;
  1614. $templates->set_var ('cnt', $cnt);
  1615. $lin1=$offset+1;
  1616. $lin2=$lin1+$perpage - 1;
  1617. if ($lin2>$cnt){
  1618. $lin2=$cnt;
  1619. }
  1620. //summary navigation
  1621. $templates->set_var ('lang_view', $LANG_USERBOX['view']);
  1622. $templates->set_var ('lin', $lin1."-".($lin2));
  1623. $templates->set_var ('cnt', $cnt);
  1624. $templates->set_var ('lang_name', $LANG_USERBOX_ADMIN['name']);
  1625. $templates->set_var ('lang_username', $LANG_USERBOX_ADMIN['username']);
  1626. $templates->set_var ('lang_id', $LANG_USERBOX_ADMIN['id']);
  1627. $templates->set_var ('lang_uid', $LANG28[2]);
  1628. $templates->set_var ('lang_username', $LANG28[3]);
  1629. $templates->set_var ('lang_fullname',$LANG28[4]);
  1630. //
  1631. $templates->set_var ('lang_date', $LANG_USERBOX_ADMIN[$datefield]);
  1632. $templates->set_var ('lang_released', $LANG_USERBOX_ADMIN['released']);
  1633. $templates->set_var ('lang_description', $LANG_USERBOX_ADMIN['description']);
  1634. $templates->set_var ('lang_expired', $LANG_DATABOX_ADMIN['expired']);
  1635. $templates->set_var ('lang_remaingdays', $LANG_DATABOX_ADMIN['remaingdays']);
  1636. $templates->set_var ('lang_addfield', $addfield_name);
  1637. //$_USERBOX_CONF
  1638. $templates->set_var('lang_imgfile_frd', $LANG_confignames['userbox']['imgfile_frd']);
  1639. $templates->set_var ('imgfile_frd', $_USERBOX_CONF['imgfile_frd']);
  1640. $templates->set_var ('data_img_url', $_CONF['site_url']."/".$_USERBOX_CONF['imgfile_frd']);
  1641. $templates->set_var('lang_imgfile_thumb_frd', $LANG_confignames['userbox']['imgfile_thumb_frd']);
  1642. $templates->set_var ('imgfile_thumb_frd', $_USERBOX_CONF['imgfile_thumb_frd']);
  1643. $templates->set_var ('data_thumb_img_url', $_CONF['site_url']."/".$_DATABOX_CONF['imgfile_thumb_frd']);
  1644. for ($i = 0; $i < $numrows; $i++) {
  1645. $A = DB_fetchArray ($result);
  1646. $A = array_map('stripslashes', $A);
  1647. $description=COM_applyFilter($A['description']);
  1648. $username=COM_applyFilter($A['username']);
  1649. $fullname=COM_applyFilter($A['fullname']);
  1650. $id=COM_applyFilter($A['id']);
  1651. $datefield=COM_applyFilter($A['datefield']);
  1652. $released=COM_applyFilter($A['released']);
  1653. $expired=COM_applyFilter($A['expired']);
  1654. $datefield_ary = COM_getUserDateTimeFormat($A['datefield_un']);
  1655. $released_ary = COM_getUserDateTimeFormat($A['released_un']);
  1656. if ($expired==="0000-00-00 00:00:00"){
  1657. $expired_ary=array();
  1658. }else{
  1659. $expired_ary = COM_getUserDateTimeFormat($A['expired_un']);
  1660. }
  1661. $curdate_ary = COM_getUserDateTimeFormat();
  1662. $sortvalue=COM_applyFilter($A['value']);
  1663. $group_id = $A['group_id'];
  1664. $owner_id = $A['owner_id'];
  1665. $fieldset_id=COM_applyFilter($A['fieldset_id']);
  1666. $url=$_CONF['site_url'] . "/userbox/profile.php";
  1667. $url.="?";
  1668. //コード使用の時
  1669. if ($_USERBOX_CONF['datacode']){
  1670. $url.="m=code";
  1671. $url.="&amp;code=".$A['username'];
  1672. }else{
  1673. $url.="id=".$A['id'];
  1674. $url.="&amp;m=id";
  1675. }
  1676. $url = COM_buildUrl( $url );
  1677. $link= COM_createLink($username, $url);
  1678. $templates->set_var ('data_link', $link);
  1679. $templates->set_var ('data_fullname', $fullname);
  1680. $templates->set_var ('data_title', $fullname);
  1681. $templates->set_var ('data_username', $username);
  1682. $templates->set_var ('data_code', $username);
  1683. $templates->set_var ('data_description', $description);
  1684. $templates->set_var ('data_id', $id);
  1685. $templates->set_var ('data_url', $url);
  1686. //data_released
  1687. $templates->set_var ('data_datefield', $datefield);
  1688. $templates->set_var ('data_datefield_shortdate', strftime( $_CONF['shortdate'], $A['datefield_un'] ));
  1689. $templates->set_var ('data_value', $sortvalue);
  1690. $templates->set_var ('data_released', $released_ary[0]);//@@@@@@
  1691. $templates->set_var ('data_released_shortdate', strftime( $_CONF['shortdate'], $A['released_un'] ));
  1692. $templates->set_var ('data_released_date', strftime( $_CONF['date'], $A['released_un'] ));
  1693. $templates->set_var ('data_released_daytime', strftime( $_CONF['daytime'], $A['released_un'] ));
  1694. $templates->set_var ('data_released_dateonly', strftime( $_CONF['dateonly'], $A['released_un'] ));
  1695. $templates->set_var ('data_released_timeonly', strftime( $_CONF['timeonly'], $A['released_un'] ));
  1696. $templates->set_var ('data_released_b', strftime( "%b" , $A['released_un']));
  1697. $templates->set_var ('data_released_B', strftime( "%B" , $A['released_un']));
  1698. $templates->set_var ('data_released_d', strftime( "%d" , $A['released_un']));
  1699. $templates->set_var ('data_released_e', strftime( "%e" , $A['released_un']));
  1700. //公開終了日 Expired to publish
  1701. if ($A['expired'] ==="0000-00-00 00:00:00"){
  1702. $templates->set_var ('data_expired', "");
  1703. $templates->set_var ('data_expired_shortdate', "" );
  1704. $templates->set_var ('data_expired_date', "" );
  1705. $templates->set_var ('data_expired_daytime', "" );
  1706. $templates->set_var ('data_expired_dateonly', "" );
  1707. $templates->set_var ('data_expired_timeonly', "" );
  1708. $templates->set_var ('data_expired_b', "" );
  1709. $templates->set_var ('data_expired_B', "" );
  1710. $templates->set_var ('data_expired_d', "" );
  1711. $templates->set_var ('data_expired_e', "" );
  1712. }else{
  1713. $wary = COM_getUserDateTimeFormat($A['expired_un']);
  1714. $templates->set_var ('data_expired', $expired_ary[0]);
  1715. $templates->set_var ('data_expired_shortdate', strftime( $_CONF['shortdate'], $A['expired_un'] ));
  1716. $templates->set_var ('data_expired_daytime', strftime( $_CONF['daytime'], $A['expired_un'] ));
  1717. $templates->set_var ('data_expired_dateonly', strftime( $_CONF['dateonly'], $A['expired_un'] ));
  1718. $templates->set_var ('data_expired_timeonly', strftime( $_CONF['timeonly'], $A['expired_un'] ));
  1719. $templates->set_var ('data_expired_b', strftime( "%b" , $A['expired_un']));
  1720. $templates->set_var ('data_expired_B', strftime( "%B" , $A['expired_un']));
  1721. $templates->set_var ('data_expired_d', strftime( "%d" , $A['expired_un']));
  1722. $templates->set_var ('data_expired_e', strftime( "%e" , $A['expired_un']));
  1723. }
  1724. $remaingdays="";
  1725. if ($expired<>"0000-00-00 00:00:00") {
  1726. if ($expired_ary[1]>=$curdate_ary[1]){
  1727. $remaingdays=COM_dateDiff( "d", $expired_ary[1], $curdate_ary[1] ) + 1;
  1728. }
  1729. }
  1730. $templates->set_var ('data_remaingdays', $remaingdays);//@@@@@@
  1731. if (date("Ymd",strtotime($datefield)) >= date("Ymd",$chkday)){
  1732. $templates->set_var ('new_img', $new_img);
  1733. }else{
  1734. $templates->set_var ('new_img', '');
  1735. }
  1736. if (isset($A['photo']) && empty($A['photo'])) {
  1737. $A['photo'] = '(none)'; // user does not have a photo
  1738. $templates->set_var('data_photo', "");
  1739. }else{
  1740. $templates->set_var('data_photo', $A['photo']);
  1741. }
  1742. $photo = USER_getPhoto($uid, $A['photo'], $A['email'], -1);
  1743. $templates->set_var('data_user_photo', $photo);
  1744. $hits=COM_applyFilter(DB_getItem( $tbl5 ,"hits","id={$id}"),true);
  1745. $templates->set_var('lang_hits', $LANG_USERBOX_ADMIN['hits']);
  1746. $templates->set_var('data_hits', $hits);
  1747. //カテゴリ categories
  1748. $templates->set_var('lang_category', $LANG_DATABOX_ADMIN['category']);
  1749. DATABOX_getcategoriesDisp($A['id'],$templates,$chk_user,0,$pi_name);
  1750. //追加項目 fields
  1751. $group_id = stripslashes($A['group_id']);
  1752. $owner_id = stripslashes($A['owner_id']);
  1753. $chk_user=DATABOX_chkuser($group_id,$owner_id,"userbox.admin");
  1754. $additionfields = DATABOX_getadditiondatas($id,$pi_name);
  1755. DATABOX_getaddtionfieldsDisp($additionfields,$addition_def,$templates,$chk_user,$pi_name,$fieldset_id);
  1756. //管理者の時「編集」
  1757. if ( SEC_hasRights('databox.admin')) {
  1758. $icon_url = $_CONF['layout_url'] . '/images/edit.' . $_IMAGE_TYPE;
  1759. $attr = array('title' => $title." ".$LANG_USERBOX_ADMIN['edit']);
  1760. $editiconhtml = COM_createImage($icon_url, $LANG_USERBOX_ADMIN['edit'], $attr);
  1761. $attr = array('class' => 'editlink', 'title' => $title." ".$LANG_USERBOX_ADMIN['edit']);
  1762. $url = $_CONF['site_admin_url'];
  1763. $url .= '/plugins/userbox/profile.php';
  1764. $url .= '?mode=edit';
  1765. $url .= '&amp;'."id={$id}";
  1766. $icon = '&nbsp;' ;
  1767. $icon .= COM_createLink( $editiconhtml, $url, $attr );
  1768. $templates->set_var ('data_edit', $icon);
  1769. }else{
  1770. $rt=databox_chk_loaddata($id);
  1771. //編集権限のあるMyProfile
  1772. if ( $rt==="OK") {
  1773. $icon_url = $_CONF['layout_url'] . '/images/edit.' . $_IMAGE_TYPE;
  1774. $attr = array('title' => $LANG_USERBOX_ADMIN['edit']);
  1775. $editiconhtml = COM_createImage($icon_url, $LANG_USERBOX_ADMIN['edit'], $attr);
  1776. $attr = array('class' => 'editlink', 'title' => $title." ".$LANG_USERBOX_ADMIN['edit']);
  1777. $url = $_CONF['site_url'];
  1778. $url .= '/databox/myprofile/profile.php';
  1779. $url .= '?mode=edit';
  1780. $url .= '&amp;'."id={$id}";
  1781. $icon = '&nbsp;' ;
  1782. $icon .= COM_createLink( $editiconhtml, $url, $attr );
  1783. $templates->set_var ('data_edit', $icon);
  1784. }else{
  1785. $templates->set_var ('data_edit', "");
  1786. }
  1787. }
  1788. //=====
  1789. $templates->parse ('col_var', 'col', true);
  1790. $templates->parse ('row_var', 'row', true);
  1791. $templates->set_var ('col_var', '');
  1792. }
  1793. //------------
  1794. //-----navigation
  1795. $url = $_CONF['site_url'] . '/';
  1796. if ($autotag==="notautotag"){
  1797. $url.=THIS_SCRIPT;
  1798. }else{
  1799. $url.="userbox/field.php";
  1800. }
  1801. $url .="?";
  1802. $url .= "id=".$field_id;
  1803. $url .= "&amp;m=id";
  1804. $url .= "&amp;value=".$value;
  1805. $url .= "&amp;template=".$template;
  1806. $url .= "&amp;perpage=".$perpage;
  1807. $url .= "&amp;order=";
  1808. //-----order navigation
  1809. userbox_order ($url, $templates, $order) ;
  1810. //-----page navigation
  1811. $url .= $order;
  1812. $templates->set_var ('page_navigation',
  1813. COM_printPageNavigation ($url, $page, $pages));
  1814. if ($order==="random"){
  1815. $templates->set_var ( 'pagenavinone', 'style="display:none;"' );
  1816. }else{
  1817. $templates->set_var ( 'pagenavinone', '' );
  1818. }
  1819. // Call to plugins to set template variables in the databox
  1820. PLG_templateSetVars( 'userbox', $templates );
  1821. //------------
  1822. $templates->parse ('nav_var', 'nav', true);
  1823. $templates->set_var ('msg', "");
  1824. $templates->parse ('output', 'list');
  1825. $content = $templates->finish ($templates->get_var ('output'));
  1826. $retval .=$content;
  1827. }else{
  1828. if ($nohitmsg==="yes"){
  1829. $tmplfld=DATABOX_templatePath('attribute',$template,$pi_name);
  1830. $templates = new Template($tmplfld);
  1831. $templates->set_file (array (
  1832. 'list' => 'nohit.thtml',
  1833. ));
  1834. //bread
  1835. $templates->set_var ('home',$LANG_USERBOX['home']);
  1836. $templates->set_var ('attribute_top',$attribute_top);
  1837. $templates->set_var ('field_top',$field_top);
  1838. $templates->set_var ('field_name',$field_name);
  1839. $templates->set_var ('field_templatesetvar',$templatesetvar);
  1840. $templates->set_var ('field_description',$field_description);
  1841. $templates->set_var ('fieldvalue',$fieldvalue);
  1842. $templates->set_var('xhtml', XHTML);
  1843. $templates->set_var('site_url', $_CONF['site_url']);
  1844. $templates->set_var('site_admin_url', $_CONF['site_admin_url']);
  1845. $templates->set_var('layout_url', $_CONF['layout_url']);
  1846. $templates->set_var ('lang_nohit', $LANG_USERBOX['nohit']);
  1847. $templates->parse ('output', 'list');
  1848. $content = $templates->finish ($templates->get_var ('output'));
  1849. $retval .=$content;
  1850. }
  1851. }
  1852. $retval =PLG_replacetags ($retval);
  1853. return $retval;
  1854. }
  1855. function userbox_orderby(
  1856. $datefield
  1857. ,&$order
  1858. ,&$orderby
  1859. ,&$addfieldorder
  1860. ,&$field_id
  1861. )
  1862. // +---------------------------------------------------------------------------+
  1863. // | 機能 order orderby addfieldorder $field_id を編集
  1864. // | 書式 userbox_orderby($datefield,$order,$orderby,$addfieldorder,$field_id);
  1865. // +---------------------------------------------------------------------------+
  1866. // | 引数 $datefield
  1867. // | 引数戻値 $order
  1868. // | 引数戻値 $orderby
  1869. // | 引数戻値 $addfieldorder
  1870. // | 引数戻値 $field_id
  1871. // +---------------------------------------------------------------------------+
  1872. {
  1873. global $_TABLES;
  1874. $orderby="";
  1875. $addfieldorder=false;
  1876. switch($order){
  1877. case "random":
  1878. $orderby =" RAND()";
  1879. break;
  1880. case "":
  1881. case "date":
  1882. $order="date";
  1883. $orderby = $datefield ." DESC";
  1884. break;
  1885. case "released":
  1886. $orderby = " released DESC";
  1887. break;
  1888. case "orderno":
  1889. case "code":
  1890. case "title":
  1891. case "description":
  1892. case "id":
  1893. $orderby = " t2.".$order;
  1894. break;
  1895. case "username":
  1896. case "fullname":
  1897. $orderby = " t4.".$order;
  1898. break;
  1899. default:
  1900. $sql="SELECT ";
  1901. $sql.= " field_id ";
  1902. $sql.= ",name ";
  1903. $sql.=" FROM";
  1904. $sql.=" {$_TABLES['USERBOX_def_field']} ";
  1905. $sql.=" WHERE templatesetvar='".$order."'";
  1906. $result = DB_query ($sql);
  1907. $numrows = DB_numRows ($result);
  1908. if ($numrows>0){
  1909. $A = DB_fetchArray ($result);
  1910. $field_id=COM_stripslashes($A['field_id']);
  1911. $addfield_name=COM_stripslashes($A['name']);
  1912. $orderby = " t3.value IS NULL ASC ,cast(t3.value as DECIMAL) ASC ";
  1913. $addfieldorder=true;
  1914. }else{
  1915. $order="date";
  1916. $orderby = $datefield ." DESC";
  1917. }
  1918. }
  1919. return ;
  1920. }
  1921. function userbox_newlist(
  1922. $m="ALL"
  1923. ,$categories=""
  1924. ,$rss_file=""
  1925. ,$title_trim_length=""
  1926. ,$intervalday=""
  1927. ,$limitcnt=""
  1928. ,$newmarkday=""
  1929. ,$thtml=null
  1930. ,$permission=null
  1931. )
  1932. // +---------------------------------------------------------------------------+
  1933. // | 機能 ブロック用 新着user一覧出力 |
  1934. // | 書式 userbox_newlist |
  1935. // +---------------------------------------------------------------------------+
  1936. // | 引数 $m :省略時'ALL' id=id指定で選択 code指定で選択 |
  1937. // | 引数 $categories :選択トピック 省略時設定値or'ALL' |
  1938. // | 引数 $rss_file :RSS_file 省略時"" |
  1939. // | 引数 $title_trim_length :タイトル長の制限 省略時設定値or20 |
  1940. // | 引数 $intervalday :新着記事の期間 単位日 省略時設定値or90 |
  1941. // | 0の時 全件 |
  1942. // | 引数 $limitcnt :表示件数 省略時設定値or10 |
  1943. // | 引数 $newmarkday :新着マーク 省略時設定値or3 |
  1944. // | 引数 $thtml :テンプレートファイルのフォルダ layout/テーマ/XXXX/ |
  1945. // | 省略時は、プラグイン内のテンプレート |
  1946. // +---------------------------------------------------------------------------+
  1947. // | 戻値 nomal:新着user一覧 |
  1948. // +---------------------------------------------------------------------------+
  1949. // update20101124
  1950. {
  1951. $pi_name="userbox";
  1952. global $_USER;
  1953. global $_TABLES;
  1954. global $_CONF;
  1955. global $_USERBOX_CONF;
  1956. global $LANG_USERBOX;
  1957. //
  1958. if ($title_trim_length==""){
  1959. $title_trim_length=$_USERBOX_CONF['title_trim_length'];
  1960. if ($title_trim_length==""){
  1961. $title_trim_length=20;
  1962. }
  1963. }
  1964. //
  1965. if ($intervalday==""){
  1966. $intervalday=$_USERBOX_CONF['intervalday'];
  1967. if ($intervalday==""){
  1968. $intervalday=90;
  1969. }
  1970. }
  1971. //
  1972. if ($limitcnt==""){
  1973. $limitcnt=$_USERBOX_CONF['limitcnt'];
  1974. if ($limitcnt==""){
  1975. $limitcnt=10;
  1976. }
  1977. }
  1978. if ($newmarkday==""){
  1979. $newmarkday=$_USERBOX_CONF['newmarkday'];
  1980. if ($newmarkday==""){
  1981. $newmarkday=3;
  1982. }
  1983. }
  1984. if ($m===""){
  1985. $categories="ALL";
  1986. }else{
  1987. if ($categories==""){
  1988. $categories=$_USERBOX_CONF['categories'];
  1989. if ($categories==""){
  1990. $categories="ALL";
  1991. }
  1992. }elseif (strpos($categories,",")=="") {
  1993. $categories="'$categories'";
  1994. }else{
  1995. $ary=explode(",",$categories);
  1996. $b="";
  1997. for ($i = 1; $i <= count($ary); $i++) {
  1998. if ($m==="code"){
  1999. $b.="'".current($ary)."',";
  2000. }else{
  2001. $b.=current($ary).",";
  2002. }
  2003. next($ary);
  2004. }
  2005. $categories=rtrim($b,",");
  2006. }
  2007. }
  2008. //
  2009. $new_img=$_USERBOX_CONF['new_img'];
  2010. if ($new_img==""){
  2011. $new_img="New!";
  2012. }
  2013. $rss_img=$_USERBOX_CONF['rss_img'];
  2014. if ($rss_img=="") {
  2015. $rss_img="[RSS]";
  2016. }
  2017. if (is_null($thtml)){
  2018. $thtml="default";
  2019. }
  2020. //-------------------------------------------
  2021. $retval="";
  2022. //テンプレートフォルダの設定
  2023. $tmplfld=DATABOX_templatePath('newlist',$thtml,$pi_name);
  2024. $list = new Template($tmplfld);
  2025. $list->set_file (array (
  2026. 'list' => 'list.thtml',
  2027. 'col' => 'list_col.thtml'
  2028. ));
  2029. $datefield=$_USERBOX_CONF['datefield'];//使用する日付(編集日付、作成日付)
  2030. //-----
  2031. $tbl1=$_TABLES['USERBOX_base'] ;
  2032. $tbl2=$_TABLES['USERBOX_category'] ;
  2033. $tbl3=$_TABLES['USERBOX_def_category'] ;
  2034. $tbl4=$_TABLES['users'] ;
  2035. $sql="SELECT ".LB;
  2036. $sql.=" t4.fullname".LB;
  2037. $sql.=" , UNIX_TIMESTAMP(t1.".$datefield .") AS day".LB;
  2038. $sql.=" , t1.id".LB;
  2039. $sql.=" , t4.username".LB;
  2040. $sql.=" ,t1.owner_id".LB;
  2041. $sql.=" ,t1.group_id".LB;
  2042. $sql.=" ,t1.perm_owner".LB;
  2043. $sql.=" ,t1.perm_group".LB;
  2044. $sql.=" ,t1.perm_members".LB;
  2045. $sql.=" ,t1.perm_anon".LB;
  2046. $sql .= " FROM ".LB;
  2047. $sql .= " {$tbl1} AS t1 ".LB;
  2048. $sql .= " , {$tbl4} AS t4 ".LB;
  2049. if ($categories!=="ALL" ){
  2050. $sql .= " ,{$tbl2} AS t2 ".LB;
  2051. $sql .= " ,{$tbl3} AS t3 ".LB;
  2052. }
  2053. $sql.=" WHERE";
  2054. if ($categories==="ALL" ){
  2055. $sql.=" t1.id=t4.uid".LB;
  2056. }else{
  2057. $sql.= " t1.id = t4.id ".LB;
  2058. $sql.= " AND t1.id=t2.uid".LB;
  2059. $sql.= " AND t2.category_id = t3.category_id ".LB;
  2060. }
  2061. //管理者の時,下書データも含む
  2062. //if ( SEC_hasRights('userbox.admin')) {
  2063. //}else{
  2064. $sql .= " AND t1.draft_flag=0".LB;
  2065. //}
  2066. //アクセス権のないデータ はのぞく
  2067. if ($_USERBOX_CONF['disable_permission_ignore']=="0" AND strtoupper($permission)=="IGNORE"){
  2068. }else{
  2069. $sql .= COM_getPermSql('AND').LB;
  2070. }
  2071. //公開日以前のデータはのぞく
  2072. $sql .= " AND (released <= NOW())".LB;
  2073. //公開終了日を過ぎたデータはのぞく
  2074. $sql .= " AND (expired=0 OR expired > NOW())".LB;
  2075. if ($intervalday<>0){
  2076. $sql.=" AND (".$datefield ." >= (date_sub(NOW(), INTERVAL $intervalday day)))".LB;
  2077. }
  2078. if ($categories!=="ALL" ){
  2079. if ($m==="id") {
  2080. $sql.=" AND t2.category_id IN ($categories)";
  2081. }else{
  2082. $sql.=" AND t3.code IN ($categories)";
  2083. }
  2084. }
  2085. $sql .= COM_getLangSQL ('username', 'AND', 't4').LB;
  2086. $sql.=" ORDER BY ".$datefield ." DESC";
  2087. $sql.=" LIMIT $limitcnt";
  2088. $result = DB_query ($sql);
  2089. $i=0;
  2090. while( $A = DB_fetchArray( $result ) ) {
  2091. $title= COM_truncate( $A['username'], $title_trim_length,'...' );
  2092. $url=$_CONF['site_url'] . "/userbox/profile.php";
  2093. $url.="?";
  2094. //コード使用の時
  2095. if ($_USERBOX_CONF['datacode']){
  2096. $url.="m=code";
  2097. $url.="&code=".$A['username'];
  2098. }else{
  2099. $url.="m=id";
  2100. $url.="&id=".$A['id'];
  2101. }
  2102. $url = COM_buildUrl( $url );
  2103. $link= COM_createLink($title, $url);
  2104. $list->set_var ('site_url', $_CONF['site_url']);
  2105. $list->set_var ('day', strftime($LANG_USERBOX['day'],$A['day']));
  2106. $chkday=strtotime("- $newmarkday days",time());
  2107. if (date("Ymd",$A['day']) >= date("Ymd",$chkday)){
  2108. $list->set_var ('new_img', $new_img);
  2109. }else{
  2110. $list->set_var ('new_img', '');
  2111. }
  2112. $list->set_var ('link', $link);//@@@@@
  2113. $list->set_var ('url', $url);
  2114. $list->set_var ('title', $title);
  2115. $permission=SEC_hasAccess2($A);
  2116. $list->set_var ('permission',$permission);
  2117. if ($permission>=2){
  2118. $list->set_var ('class_a', 'class="gl-tooltip"');
  2119. $list->set_var ('class_c', 'class="classic"');
  2120. }else{
  2121. $list->set_var ('class_a', 'class="userbox_nolink"');
  2122. $list->set_var ('class_c', 'class="userbox_displaynon"');
  2123. }
  2124. $n=($i%2)+1;
  2125. $class='class="row'.$n.'"';
  2126. $list->set_var ('class', 'class="row'.$n.'"');
  2127. //カテゴリ
  2128. DATABOX_getcategoriesDisp($A['id'],$list,$chk_user,0,$pi_name);
  2129. $list->parse ('list_col', 'col', true);
  2130. $i++;
  2131. }
  2132. $list->set_var ('site_url', $_CONF['site_url']);
  2133. $list->set_var ('day', strftime($LANG_USERBOXBOX['day'],$A['day']));
  2134. //
  2135. if ($rss_file<>""){
  2136. $list->set_var ('rss_url', $_CONF['site_url'] . '/backend/'.$rss_file);
  2137. $list->set_var ('rss_title', $rss_img);
  2138. }
  2139. //
  2140. $more_title=$LANG_USERBOX['more'];
  2141. if ($categories==="ALL" OR strpos($categories,",")<>"") {
  2142. $more_url=COM_buildUrl($_CONF['site_url'] . '/userbox/index.php');//
  2143. }else{
  2144. //コード使用の時
  2145. if ($m="code"){
  2146. $more_url.="m=code";
  2147. $more_url.="&code=".ltrim(rtrim($categories,"'"),"'");
  2148. }else{
  2149. $more_url.="m=id";
  2150. $more_url.="&id=".ltrim(rtrim($categories,"'"),"'");
  2151. }
  2152. $more_url=$_CONF['site_url'] . "/userbox/index.php".$more_url;//@@@@@
  2153. }
  2154. $more_url = COM_buildUrl( $more_url );
  2155. $more_link= COM_createLink($title, $more_url);
  2156. $list->set_var ('more_url', $more_url);
  2157. $list->set_var ('more_title', $more_title);
  2158. $list->parse ('output', 'list');
  2159. $retval .= $list->finish ($list->get_var ('output'));
  2160. return $retval;
  2161. }
  2162. function userbox_order(
  2163. $url=""
  2164. ,$templates
  2165. ,$cur_order="id"
  2166. )
  2167. // +---------------------------------------------------------------------------+
  2168. // | 機能 ORDER指定LINK出力
  2169. // | 書式 userbox_order()
  2170. // +---------------------------------------------------------------------------+
  2171. // | 引数 $url:
  2172. // | 引数 $templates
  2173. // | 引数 $cur_order:
  2174. // +---------------------------------------------------------------------------+
  2175. {
  2176. global $LANG_USERBOX_ORDER;
  2177. global $_TABLES;
  2178. $templates->set_var('cur_order',$cur_order);
  2179. $order_ary=array();
  2180. $order_ary[]='random';
  2181. $order_ary[]='date';
  2182. $order_ary[]='orderno';
  2183. $order_ary[]='username';
  2184. $order_ary[]='fullname';
  2185. $order_ary[]='description';
  2186. $order_ary[]='id';
  2187. $order_ary[]='released';
  2188. $sql="SELECT ";
  2189. $sql.= " field_id ";
  2190. $sql.= ",name ";
  2191. $sql.= ",templatesetvar";
  2192. $sql.=" FROM";
  2193. $sql.=" {$_TABLES['USERBOX_def_field']} ";
  2194. $sql.=" where allow_display=0";
  2195. $result = DB_query ($sql);
  2196. $numrows = DB_numRows ($result);
  2197. $addfield_ary=array();
  2198. for ($i = 1; $i <= $numrows; $i++) {
  2199. $A = DB_fetchArray ($result);
  2200. $field_id=COM_stripslashes($A['field_id']);
  2201. $addfield_ary[$field_id]['name']=COM_stripslashes($A['name']);
  2202. $addfield_ary[$field_id]['templatesetvar']=COM_stripslashes($A['templatesetvar']);
  2203. $order_ary[]="addfield".$field_id;
  2204. }
  2205. for ($i = 1; $i <= count($order_ary); $i++) {
  2206. $c=current($order_ary);
  2207. if (substr($c,0,8)==="addfield"){
  2208. $field_id=substr($c,8);
  2209. $order=$addfield_ary[$field_id]['templatesetvar'];
  2210. $order_name=$addfield_ary[$field_id]['name'];
  2211. $order_name.=$LANG_USERBOX_ORDER['order'];
  2212. }else{
  2213. $order=$c;
  2214. $order_name=$LANG_USERBOX_ORDER[$c];
  2215. }
  2216. if ($order<>"random" AND $order===$cur_order){
  2217. $rt=$order_name;
  2218. }else{
  2219. $order_url=$url;
  2220. $order_url.=$order;
  2221. //$order_url = COM_buildUrl( $order_url );
  2222. $rt= COM_createLink($order_name, $order_url);
  2223. }
  2224. $templates->set_var('order_'.$order,$rt);
  2225. next($order_ary);
  2226. }
  2227. return ;
  2228. }
  2229. function userbox_msg(
  2230. $for=""
  2231. )
  2232. // +---------------------------------------------------------------------------+
  2233. // | 機能 メッセージ出力
  2234. // | 書式 userbox_msg()
  2235. // +---------------------------------------------------------------------------+
  2236. // | 引数 $for:誰宛
  2237. // +---------------------------------------------------------------------------+
  2238. {
  2239. global $LANG_USERBOX_MSG;
  2240. global $_USER;
  2241. global $_TABLES;
  2242. $rt="";
  2243. $uid=$_USER['uid'];
  2244. switch ($for) {
  2245. case '':
  2246. case 'alluser':
  2247. $rt=$LANG_USERBOX_MSG['alluser'];
  2248. break;
  2249. case 'draftuser':
  2250. $draft_flag=DB_getItem($_TABLES['USERBOX_base'], 'draft_flag',
  2251. "id = '{$uid}'");
  2252. if ($draft_flag==1){
  2253. $rt=$LANG_USERBOX_MSG['draftuser'];
  2254. }
  2255. break;
  2256. case 'descriptionempty':
  2257. if ($uid<>0){
  2258. if (userbox_descriptionemptycheck($uid)==false){
  2259. $rt=$LANG_USERBOX_MSG['descriptionempty'];
  2260. }
  2261. }
  2262. break;
  2263. default:
  2264. }
  2265. return $rt;
  2266. }
  2267. ?>