PageRenderTime 68ms CodeModel.GetById 15ms RepoModel.GetById 0ms app.codeStats 1ms

/databox/functions_autotag.inc

https://bitbucket.org/tsuchi/box
PHP | 3915 lines | 2988 code | 514 blank | 413 comment | 324 complexity | a47b1d5123c60bfba65c9f980a9bd4f9 MD5 | raw file
Possible License(s): AGPL-1.0
  1. <?php
  2. /* Reminder: always indent with 4 spaces (no tabs). */
  3. // +---------------------------------------------------------------------------+
  4. // | DataBox プラグイン function.inc からrequire
  5. // | 自動タグおよび DataBox 専用関数
  6. // +---------------------------------------------------------------------------+
  7. // $Id: plugins/databox/functions_autotag.inc
  8. //20101008 tsuchitani AT ivywe DOT co DOT jp http://www.ivywe.co.jp/
  9. //20120416 databox_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_databox (
  15. $op
  16. , $content = ''
  17. , $autotag = ''
  18. )
  19. // +---------------------------------------------------------------------------+
  20. // | 自動タグ
  21. // +---------------------------------------------------------------------------+
  22. {
  23. global $_TABLES;
  24. global $_CONF;
  25. global $LANG_DATABOX_autotag_desc;
  26. //Option Display
  27. if ($op == 'tagname' ) {
  28. $tagname[]='databox';
  29. return $tagname;
  30. } elseif ($op == 'permission' || $op == 'nopermission') {
  31. if ($op == 'permission') {
  32. $flag = true;
  33. } else {
  34. $flag = false;
  35. }
  36. if (isset($_GROUPS['DataBox Admin'])) {
  37. $group_id = $_GROUPS['DataBox Admin'];
  38. } else {
  39. $group_id = DB_getItem($_TABLES['groups'], 'grp_id',
  40. "grp_name = 'DataBox Admin'");
  41. }
  42. $owner_id = SEC_getDefaultRootUser();
  43. if (COM_getPermTag(
  44. $owner_id
  45. , $group_id
  46. , $_DATABOX_CONF['autotag_permissions_databox'][0]
  47. , $_DATABOX_CONF['autotag_permissions_databox'][1]
  48. , $_DATABOX_CONF['autotag_permissions_databox'][2]
  49. , $_DATABOX_CONF['autotag_permissions_databox'][3]) == $flag) {
  50. return $tagname;
  51. }
  52. } elseif ($op == 'description') {
  53. return $LANG_DATABOX_autotag_desc;
  54. } else if ($op == 'parse') {
  55. //引数チェック
  56. $p1 = COM_applyFilter ($autotag['parm1']);
  57. $p2 = COM_applyFilter ($autotag['parm2']);
  58. $tag = COM_applyFilter ($autotag['tag']);
  59. $tagstr = COM_applyFilter ($autotag['tagstr']);
  60. $parm2_ary[]="category_id";
  61. $parm2_ary[]="category_code";
  62. $parm2_ary[]="mode";
  63. $parm2_ary[]="rss_file";
  64. $parm2_ary[]="title_trim_length";
  65. $parm2_ary[]="intervalday";
  66. $parm2_ary[]="limitcnt";
  67. $parm2_ary[]="newmarkday";
  68. $parm2_ary[]="templatedir";
  69. $parm2_ary[]="id";
  70. $parm2_ary[]="code";
  71. $parm2_ary[]="nohitmsg";
  72. $parm2_ary[]="perpage";
  73. $parm2_ary[]="page";
  74. $parm2_ary[]="order";
  75. $parm2_ary[]="templatesetvar";
  76. $parm2_ary[]="value";
  77. $parm2_ary[]="field_id";
  78. $parm2_ary[]="expired";
  79. $parm2_ary[]="type_id";
  80. $parm2_ary[]="group_id";
  81. $parm2_ary[]="group_code";
  82. $parm2_ary[]="iname";
  83. $parm2_ary[]="without_code";
  84. $parm2_ary[]="without_id";
  85. $parm2_ary[]="field_code";
  86. $parm2_ary[]="option";
  87. $parm2_ary[]="method";
  88. $parm2_ary[]="roundprecision";
  89. $parm2_ary[]="numberformat";
  90. $parm2_ary[]="permission";
  91. $p=databox_parm2($p2,$parm2_ary);
  92. //各処理
  93. switch( $tag ) {
  94. case 'databox' :
  95. switch($p1) {
  96. case 'count':
  97. $rt= databox_count(
  98. $p['category_id']
  99. ,$p['category_code']
  100. ,$p['mode']
  101. ,$p['permission']
  102. ,$p['numberformat']
  103. );
  104. break;
  105. case 'newlist':
  106. if ($p['category_id']<>""){
  107. $m="id";
  108. $categories=$p['category_id'];
  109. }elseif ($p['category_code']<>"") {
  110. $m="code";
  111. $categories=$p['category_code'];
  112. }else{
  113. $m="ALL";
  114. $categories="";
  115. }
  116. $rt= databox_newlist(
  117. $m
  118. ,$categories
  119. ,$p['rss_file']
  120. ,$p['title_trim_length']
  121. ,$p['intervalday']
  122. ,$p['limitcnt']
  123. ,$p['newmarkday']
  124. ,$p['templatedir']
  125. ,$p['permission']
  126. );
  127. break;
  128. case 'data':
  129. $w= databox_data(
  130. $p['id']
  131. ,$p['templatedir']
  132. ,$p['nohitmsg']
  133. ,""
  134. ,$p['code']
  135. );
  136. $rt=$w['display'];
  137. break;
  138. case 'category':
  139. $rt= databox_category(
  140. "autotag"
  141. ,$p['category_id']
  142. ,$p['templatedir']
  143. ,$p['nohitmsg']
  144. ,$p['perpage']
  145. ,$p['page']
  146. ,$p['order']
  147. ,$p['category_code']
  148. ,$p['mode']
  149. ,$p['expired']
  150. ,$p['without_code']
  151. ,$p['without_id']
  152. );
  153. break;
  154. case 'attributedatacount':
  155. $rt=DATABOX_count_each_afield(
  156. "databox"
  157. ,$p['templatesetvar']
  158. ,$p['value']
  159. ,$p['type_id']
  160. ,$p['permission']
  161. ,$p['numberformat']
  162. );
  163. break;
  164. case 'lastmodified':
  165. $rt= databox_grp(
  166. "modified"
  167. ,"max"
  168. ,"lastmodified"
  169. ,$p['category_id']
  170. ,$p['category_code']
  171. );
  172. break;
  173. case 'lastcreated':
  174. $rt= databox_grp(
  175. "created"
  176. ,"max"
  177. ,"lastcreated"
  178. ,$p['category_id']
  179. ,$p['category_code']
  180. );
  181. break;
  182. case 'attribute':
  183. $rt= databox_field(
  184. "autotag"
  185. ,$p['field_id']
  186. ,$p['value']
  187. ,$p['templatedir']
  188. ,$p['nohitmsg']
  189. ,$p['perpage']
  190. ,$p['page']
  191. ,$p['order']
  192. ,$p['field_code']
  193. );
  194. break;
  195. case 'datalink':
  196. $rt= databox_datalink(
  197. $p['id']
  198. ,$p['code']
  199. ,$p['lastparm2']
  200. );
  201. break;
  202. case 'mydataentrylink':
  203. case 'mydataentry':
  204. $rt= databox_mydataentrylink(
  205. $p['type_id']
  206. ,$p['templatedir']
  207. ,$p['lastparm2']
  208. );
  209. break;
  210. case 'mydata':
  211. $rt= databox_mydata(
  212. $p['templatedir']
  213. ,$p['lastparm2']
  214. );
  215. break;
  216. case 'categorycount':
  217. $rt= DATABOX_categorycount(
  218. "databox"
  219. ,$p['group_id']
  220. ,$p['group_code']
  221. ,$p['permission']
  222. ,$p['numberformat']
  223. );
  224. break;
  225. case 'categorycheck':
  226. $rt= DATABOX_getcheckList(
  227. "categorygroup"
  228. ,""
  229. ,"databox"
  230. ,$p['group_id']
  231. ,$p['iname']
  232. );
  233. break;
  234. case 'mastercheck':
  235. if ($p['field_id']<>""){
  236. $kind=COM_applyFilter(
  237. DB_getItem($_TABLES['DATABOX_def_field']
  238. ,"selectlist","field_id={$p['field_id']}"));
  239. if ($kind<>""){
  240. $rt= DATABOX_getcheckList(
  241. $kind
  242. ,""
  243. ,"databox"
  244. ,""
  245. ,$p['iname']
  246. );
  247. }
  248. }
  249. break;
  250. case 'search':
  251. $argary=databox_searcharg("autotag",$p['lastparm2']);
  252. $rt=databox_search("autotag",$argary);
  253. break;
  254. case 'attributevalue':
  255. $rt=DATABOX_fieldvalue(
  256. "databox"
  257. ,$p['id']
  258. ,$p['code']
  259. ,$p['field_id']
  260. ,$p['field_code']
  261. ,$p['option']
  262. );
  263. break;
  264. case 'math':
  265. $rt=DATABOX_math(
  266. "databox"
  267. ,$p['method']
  268. ,$p['templatesetvar']
  269. ,$p['type_id']
  270. ,$p['category_id']
  271. ,$p['category_code']
  272. ,$p['mode']
  273. ,$p['roundprecision']
  274. ,$p['numberformat']
  275. ,$p['permission']
  276. );
  277. break;
  278. }
  279. $content = str_replace ($autotag['tagstr'], $rt, $content);
  280. return $content;
  281. break;
  282. }
  283. }
  284. }
  285. //第二引数分割
  286. function databox_parm2 ($p2,$parm2_ary)
  287. {
  288. $ary=array();
  289. $px = explode (' ', trim ($p2));
  290. if (is_array ($px)) {
  291. foreach ($px as $part) {
  292. $a = explode (':', $part);
  293. if (in_array($a[0],$parm2_ary)){
  294. $ary["{$a[0]}"]=$a[1];
  295. $skip++;
  296. }
  297. }
  298. if (count ($px) > $skip) {
  299. for ($i = 0; $i < $skip; $i++) {
  300. array_shift ($px);
  301. }
  302. $ary["lastparm2"] = trim(implode (' ', $px));
  303. }
  304. }else{
  305. $ary["lastparm2"]=trim($p2);
  306. }
  307. return $ary;
  308. }
  309. //=====ブロック関数============================================================
  310. // +---------------------------------------------------------------------------+
  311. // | 機能 ブロック用 新着data一覧出力 |
  312. // | 書式 phpblock_shownewdatabox() |
  313. // +---------------------------------------------------------------------------+
  314. function phpblock_shownewdatabox()
  315. {
  316. return databox_newlist();
  317. }
  318. //=====専用関数============================================================
  319. //
  320. function databox_category(
  321. $autotag
  322. ,$category_id=null
  323. ,$template=null
  324. ,$nohitmsg=""
  325. ,$perpage =0
  326. ,$page=null
  327. ,$order=null
  328. ,$category_code=null
  329. ,$mode=''
  330. ,$expired=''
  331. ,$without_code=''
  332. ,$without_id=''
  333. )
  334. // +---------------------------------------------------------------------------+
  335. // | 機能 カテゴリ別一覧表示
  336. // | 書式 databox_category($id,$template,"yes","page",$perpage)
  337. // | 書式 databox_category($p['category_id'],$p['thtml'],$p['nohitmsg']
  338. // | 書式 ,"",$p['perpage'],$p['order'],$p['code']
  339. // +---------------------------------------------------------------------------+
  340. // | 引数 $autotag:notautotagの時ヘッダを表示しない
  341. // | 引数 $category_id:カテゴリid
  342. // | 引数 $template:使用するテンプレートのフォルダ名
  343. // | 引数 $nohitmsg :"yes"の時nohitメッセージ表示
  344. // | 引数 $perpage :1pageあたりの件数、0の時改ページなし
  345. // | 引数 $page :
  346. // | 引数 $order :順序
  347. // | 引数 $category_code :
  348. // | 引数 $mode :ブランク または AND
  349. // +---------------------------------------------------------------------------+
  350. // | public_html/category.php および 自動タグで使用
  351. // | ヘッダはコンフィギュレーション設定により表示されない場合があります
  352. // | idもcodeも指定されない場合は、全カテゴリ
  353. // +---------------------------------------------------------------------------+
  354. // | 戻値 nomal:category list
  355. // +---------------------------------------------------------------------------+
  356. {
  357. $pi_name="databox";
  358. global $_CONF;
  359. global $_TABLES;
  360. global $_DATABOX_CONF;
  361. global $LANG_DATABOX;
  362. global $LANG_DATABOX_ADMIN;
  363. global $_IMAGE_TYPE;
  364. global $LANG_confignames;
  365. //ログイン要否チェック
  366. if (COM_isAnonUser()){
  367. if ($_CONF['loginrequired']
  368. OR ($_DATABOX_CONF['loginrequired'] >1) ){
  369. return $LANG_DATABOX['loginrequired'];
  370. }
  371. }
  372. //-----テーブル
  373. $tbl1=$_TABLES['DATABOX_category'] ;
  374. $tbl2=$_TABLES['DATABOX_base'] ;
  375. $tbl3=$_TABLES['DATABOX_addition'] ;
  376. //
  377. $tbl5=$_TABLES['DATABOX_def_category'] ;
  378. $tbl6=$_TABLES['DATABOX_stats'];
  379. //
  380. $datefield=$_DATABOX_CONF['datefield'];//使用する日付(編集日付、作成日付、公開日)
  381. $new_img=$_DATABOX_CONF['new_img'];
  382. if ($new_img==""){
  383. $new_img="New!";
  384. }
  385. $newmarkday=$_DATABOX_CONF['newmarkday'];
  386. if ($newmarkday==""){
  387. $newmarkday=3;
  388. }
  389. $chkday=strtotime("- $newmarkday days",time());
  390. //-----引数チェック
  391. $ids="";
  392. $idsary=array();
  393. if (is_null($category_id) OR $category_id==0){
  394. if (is_null($category_code)){
  395. }else{
  396. $w=explode("|",$category_code);
  397. foreach( $w as $val ){
  398. if ($ids<>""){
  399. $ids.=",";
  400. }
  401. $w_id=DATABOX_codetoid($val,'DATABOX_def_category',"category_id");
  402. $idsary[]=$w_id;
  403. $ids.=$w_id;
  404. }
  405. }
  406. }else{
  407. $ids=$category_id;
  408. $idsary[]=$category_id;
  409. }
  410. //--CATEGORY
  411. $category_name="";
  412. $defaulttemplatesdirectory = "";
  413. if (count($idsary)<>0){
  414. for ($i = 0; $i < count($idsary); $i++) {
  415. $sql = "SELECT ";
  416. $sql .= " name ".LB;
  417. $sql .= " ,code ".LB;
  418. $sql .= " ,description ".LB;
  419. $sql .= " ,defaulttemplatesdirectory".LB;
  420. $sql .= " FROM ".LB;
  421. $sql .= " {$tbl5} AS t5 ".LB;
  422. $sql .= " WHERE ".LB;
  423. $sql .= " t5.category_id =".$idsary[$i].LB;
  424. $result = DB_query ($sql);
  425. $numrows = DB_numRows ($result);
  426. if ($numrows > 0) {
  427. $A = DB_fetchArray ($result);
  428. $category_name.=COM_applyFilter($A['name'])." ";
  429. $category_description.=COM_applyFilter($A['description'])." ";
  430. if ($i==0){
  431. $defaulttemplatesdirectory=COM_applyFilter($A['defaulttemplatesdirectory']);
  432. }
  433. }
  434. }
  435. }
  436. if (is_null($template) or ($template==="")){
  437. if ($defaulttemplatesdirectory===""){
  438. $template="default";
  439. }else{
  440. $template=$defaulttemplatesdirectory;
  441. }
  442. }
  443. //
  444. if (is_null($page) OR !isset($page) OR $page == 0) {
  445. $page = 1;
  446. }
  447. if ($perpage===0 OR is_null($perpage)){
  448. $perpage=$_DATABOX_CONF['perpage'];
  449. }
  450. //
  451. $w=databox_orderby($datefield,$order,$orderby,$addfieldorder,$field_id);
  452. //
  453. if (is_null($expired) or ($expired==="")){
  454. $expired="no";
  455. }
  456. //-----
  457. $sql = "SELECT ";
  458. $sql .= " t2.id ".LB;
  459. $sql .= " ,t2.title ".LB;
  460. $sql .= " ,t2.code ".LB;
  461. $sql .= " ,t2.description ".LB;
  462. $sql .= " ,t2.released ".LB;
  463. $sql .= " ,t2.expired ".LB;
  464. $sql .= " ,t2.".$datefield." AS datefield ".LB;
  465. $sql .= " ,t2.fieldset_id ".LB;
  466. $sql .= " ,UNIX_TIMESTAMP(t2.".$datefield.") AS datefield_un ".LB;
  467. $sql .= " ,UNIX_TIMESTAMP(t2.released ) AS released_un ".LB;
  468. $sql .= " ,UNIX_TIMESTAMP(t2.expired ) AS expired_un ".LB;
  469. $sql .= " ,t2.group_id";
  470. $sql .= " ,t2.owner_id";
  471. if ($addfieldorder){
  472. $sql .= " ,t3.value ".LB;
  473. }
  474. //--FROM
  475. $sql .= " FROM ".LB;
  476. $sql .= " {$tbl2} AS t2 ".LB;
  477. //if ($category_id<>0){
  478. // $sql .= " ,{$tbl1} AS t1 ".LB;
  479. //}
  480. if ($addfieldorder){
  481. $sql .= " ,{$tbl3} AS t3 ".LB;
  482. }
  483. //--WHERE
  484. $sql .= " WHERE ".LB;
  485. if (count($idsary)<>0){
  486. if (strtoupper($mode)=="AND"){
  487. $w="";
  488. foreach( $idsary as $val ){
  489. if ($w<>""){
  490. $w.=" AND ";
  491. }
  492. $w.=$val." IN (SELECT t1.category_id";
  493. $w.=" FROM {$tbl1} AS t1 ,{$tbl5} AS t5";
  494. $w.=" WHERE t2.id = t1.id AND t1.category_id = t5.category_id AND t5.allow_display<2)";
  495. }
  496. }else{
  497. $w= "t2.id IN (SELECT id FROM {$tbl1} AS t1 ,{$tbl5} AS t5 ";
  498. $w.="WHERE t1.category_id = t5.category_id AND t5.allow_display<2 AND t1.category_id IN ({$ids})) ";
  499. }
  500. $sql.=" ({$w})".LB;
  501. }else{
  502. $sql.=" 1=1".LB;
  503. }
  504. if ($addfieldorder){
  505. $sql .= " AND t3.field_id=".$field_id.LB;
  506. $sql .= " AND t3.id=t2.id".LB;
  507. }
  508. //管理者の時,下書データも含む
  509. //20110529 Del
  510. //if ( SEC_hasRights('databox.admin')) {
  511. //}else{
  512. $sql .= " AND t2.draft_flag=0".LB;
  513. //}
  514. //アクセス権のないデータ はのぞく
  515. $sql .= COM_getPermSql('AND',0,2,"t2");
  516. //公開日以前のデータはのぞく
  517. $sql .= " AND (released <= NOW())".LB;
  518. //公開終了日を過ぎたデータはのぞく
  519. if (strtoupper($expired)=="NO"){
  520. $sql .= " AND (expired=0 OR expired > NOW())";
  521. }
  522. if ($without_code<>""){
  523. $sql .= " AND (t2.code<>'$without_code')";
  524. }
  525. if ($without_id<>""){
  526. $sql .= " AND (t2.id<>$without_id)";
  527. }
  528. //--ORDER
  529. $sql .= " ORDER BY ".LB;
  530. $sql .= $orderby.LB;
  531. $result = DB_query ($sql);
  532. $cnt = DB_numRows ($result);
  533. $pages = 0;
  534. if ($perpage > 0) {
  535. $pages = ceil($cnt / $perpage);
  536. }
  537. $offset = ($page - 1) * $perpage;
  538. $sql .= " LIMIT $offset, $perpage";
  539. //自動タグでない時 ヘッダ、左ブロック
  540. if ($autotag==="notautotag"){
  541. if ($page > 1) {
  542. $page_title = sprintf ('%s (%d)', $category_name, $page);
  543. } else {
  544. $page_title = sprintf ('%s ', $category_name);
  545. }
  546. // Meta Tags
  547. $headercode=DATABOX_getheadercode(
  548. "category"
  549. ,$template
  550. ,$pi_name
  551. ,$category_id
  552. ,$category_name
  553. ,$category_description
  554. ,$category_name
  555. ,$category_description);
  556. $retval .= DATABOX_siteHeader($pi_name,'',$page_title,$headercode) ;
  557. }
  558. $result = DB_query ($sql);
  559. $numrows = DB_numRows ($result);
  560. if ($numrows > 0) {
  561. $tmplfld=DATABOX_templatePath('category',$template,$pi_name);
  562. $templates = new Template($tmplfld);
  563. $templates->set_file (array (
  564. 'list' => 'list_detail.thtml',
  565. 'nav' => 'navigation_detail.thtml',
  566. 'row' => 'row.thtml',
  567. 'col' => "col_detail.thtml",
  568. ));
  569. $languageid=COM_getLanguageId();
  570. $language= COM_getLanguage();
  571. $templates->set_var ('languageid', $languageid);
  572. $templates->set_var ('language', $language);
  573. if ($languageid<>"") {
  574. $templates->set_var ('_languageid', "_".$languageid);
  575. }else{
  576. $templates->set_var ('_languageid', "");
  577. }
  578. //
  579. $templates->set_var ('site_url',$_CONF['site_url']);
  580. $templates->set_var ('this_script',THIS_SCRIPT);
  581. //bread
  582. $templates->set_var ('home',$LANG_DATABOX['home']);
  583. $templates->set_var ('lang_category_list_h2',$LANG_DATABOX['category_list_h2']);
  584. $templates->set_var ('category_name',$category_name);
  585. $templates->set_var ('category_code',$category_code);
  586. $templates->set_var ('category_description',$category_description);
  587. //page
  588. $templates->set_var ('cnt', $cnt);
  589. $lin1=$offset+1;
  590. $lin2=$lin1+$perpage - 1;
  591. if ($lin2>$cnt){
  592. $lin2=$cnt;
  593. }
  594. //summary navigation
  595. $templates->set_var ('lang_view', $LANG_DATABOX['view']);
  596. $templates->set_var ('lin', $lin1."-".($lin2));
  597. $templates->set_var ('cnt', $cnt);
  598. //
  599. $templates->set_var ('lang_title', $LANG_DATABOX_ADMIN['title']);
  600. $templates->set_var ('lang_code', $LANG_DATABOX_ADMIN['code']);
  601. $templates->set_var ('lang_id', $LANG_DATABOX_ADMIN['id']);
  602. $templates->set_var ('lang_description', $LANG_DATABOX_ADMIN['description']);
  603. $templates->set_var ('lang_date', $LANG_DATABOX_ADMIN[$datefield]);
  604. $templates->set_var ('lang_released', $LANG_DATABOX_ADMIN['released']);
  605. $templates->set_var ('lang_expired', $LANG_DATABOX_ADMIN['expired']);
  606. $templates->set_var ('lang_remaingdays', $LANG_DATABOX_ADMIN['remaingdays']);
  607. $templates->set_var ('lang_addfield', $addfield_name);
  608. // 追加項目のヘッダ
  609. $addition_def=DATABOX_getadditiondef($pi_name);
  610. //
  611. $templates->set_var('lang_imgfile_frd', $LANG_confignames['databox']['imgfile_frd']);
  612. $templates->set_var ('imgfile_frd', $_DATABOX_CONF['imgfile_frd']);
  613. $templates->set_var ('data_img_url', $_CONF['site_url']."/".$_DATABOX_CONF['imgfile_frd']);
  614. $templates->set_var('lang_imgfile_thumb_frd', $LANG_confignames['databox']['imgfile_thumb_frd']);
  615. $templates->set_var ('imgfile_thumb_frd', $_DATABOX_CONF['imgfile_thumb_frd']);
  616. $templates->set_var ('data_thumb_img_url', $_CONF['site_url']."/".$_DATABOX_CONF['imgfile_thumb_frd']);
  617. for ($i = 0; $i < $numrows; $i++) {
  618. $A = DB_fetchArray ($result);
  619. $A = array_map('stripslashes', $A);
  620. $title=$A['title'];
  621. $description=$A['description'];
  622. $code=COM_applyFilter($A['code']);
  623. $id=COM_applyFilter($A['id']);
  624. $datefield=COM_applyFilter($A['datefield']);
  625. $released=COM_applyFilter($A['released']);
  626. $expired=COM_applyFilter($A['expired']);
  627. $fieldset_id=COM_applyFilter($A['fieldset_id']);
  628. $datefield_ary = COM_getUserDateTimeFormat($A['datefield_un']);
  629. $released_ary = COM_getUserDateTimeFormat($A['released_un']);
  630. if ($expired==="0000-00-00 00:00:00"){
  631. $expired_ary=array();
  632. }else{
  633. $expired_ary = COM_getUserDateTimeFormat($A['expired_un']);
  634. }
  635. $curdate_ary = COM_getUserDateTimeFormat();
  636. $value=COM_applyFilter($A['value']);
  637. $group_id = $A['group_id'];
  638. $owner_id = $A['owner_id'];
  639. $rt= databox_detail_link($id,$code,$title);
  640. $templates->set_var ('data_link', $rt['link']);
  641. $templates->set_var ('data_title', $title);
  642. $templates->set_var ('data_code', $code);
  643. $templates->set_var ('data_description', $description);
  644. $templates->set_var ('data_id', $id);
  645. $templates->set_var ('data_url', $rt['url']);
  646. $templates->set_var ('data_datefield', $datefield_ary[0]);
  647. $templates->set_var ('data_value', $value);
  648. $templates->set_var ('data_datefield_shortdate', strftime( $_CONF['shortdate'], $A['datefield_un'] ));
  649. $templates->set_var ('data_datefield_date', strftime( $_CONF['date'], $A['datefield_un'] ));
  650. $templates->set_var ('data_datefield_daytime', strftime( $_CONF['daytime'], $A['datefield_un'] ));
  651. $templates->set_var ('data_datefield_dateonly', strftime( $_CONF['dateonly'], $A['datefield_un'] ));
  652. $templates->set_var ('data_datefield_timeonly', strftime( $_CONF['timeonly'], $A['datefield_un'] ));
  653. $templates->set_var ('data_datefield_b', strftime( "%b" , $A['datefield_un']));
  654. $templates->set_var ('data_datefield_B', strftime( "%B" , $A['datefield_un']));
  655. $templates->set_var ('data_datefield_d', strftime( "%d" , $A['datefield_un']));
  656. $templates->set_var ('data_datefield_e', strftime( "%e" , $A['datefield_un']));
  657. $templates->set_var ('data_released', $released_ary[0]);
  658. $templates->set_var ('data_released_shortdate', strftime( $_CONF['shortdate'], $A['released_un'] ));
  659. $templates->set_var ('data_released_date', strftime( $_CONF['date'], $A['released_un'] ));
  660. $templates->set_var ('data_released_daytime', strftime( $_CONF['daytime'], $A['released_un'] ));
  661. $templates->set_var ('data_released_dateonly', strftime( $_CONF['dateonly'], $A['released_un'] ));
  662. $templates->set_var ('data_released_timeonly', strftime( $_CONF['timeonly'], $A['released_un'] ));
  663. $templates->set_var ('data_released_b', strftime( "%b" , $A['released_un']));
  664. $templates->set_var ('data_released_B', strftime( "%B" , $A['released_un']));
  665. $templates->set_var ('data_released_d', strftime( "%d" , $A['released_un']));
  666. $templates->set_var ('data_released_e', strftime( "%e" , $A['released_un']));
  667. //公開終了日 Expired to publish
  668. if ($A['expired'] ==="0000-00-00 00:00:00"){
  669. $templates->set_var ('data_expired', "");
  670. $templates->set_var ('data_expired_shortdate', "" );
  671. $templates->set_var ('data_expired_date', "" );
  672. $templates->set_var ('data_expired_daytime', "" );
  673. $templates->set_var ('data_expired_dateonly', "" );
  674. $templates->set_var ('data_expired_timeonly', "" );
  675. $templates->set_var ('data_expired_b', "" );
  676. $templates->set_var ('data_expired_B', "" );
  677. $templates->set_var ('data_expired_d', "" );
  678. $templates->set_var ('data_expired_e', "" );
  679. }else{
  680. $wary = COM_getUserDateTimeFormat($A['expired_un']);
  681. $templates->set_var ('data_expired', $expired_ary[0]);
  682. $templates->set_var ('data_expired_shortdate', strftime( $_CONF['shortdate'], $A['expired_un'] ));
  683. $templates->set_var ('data_expired_date', strftime( $_CONF['date'], $A['expired_un'] ));
  684. $templates->set_var ('data_expired_daytime', strftime( $_CONF['daytime'], $A['expired_un'] ));
  685. $templates->set_var ('data_expired_dateonly', strftime( $_CONF['dateonly'], $A['expired_un'] ));
  686. $templates->set_var ('data_expired_timeonly', strftime( $_CONF['timeonly'], $A['expired_un'] ));
  687. $templates->set_var ('data_expired_b', strftime( "%b" , $A['expired_un']));
  688. $templates->set_var ('data_expired_B', strftime( "%B" , $A['expired_un']));
  689. $templates->set_var ('data_expired_d', strftime( "%d" , $A['expired_un']));
  690. $templates->set_var ('data_expired_e', strftime( "%e" , $A['expired_un']));
  691. }
  692. $remaingdays="";
  693. if ($expired<>"0000-00-00 00:00:00") {
  694. if ($expired_ary[1]>=$curdate_ary[1]){
  695. $remaingdays=COM_dateDiff( "d", $expired_ary[1], $curdate_ary[1] ) + 1;
  696. }
  697. }
  698. $templates->set_var ('data_remaingdays', $remaingdays);//@@@@@@
  699. if (date("Ymd",strtotime($datefield)) >= date("Ymd",$chkday)){
  700. $templates->set_var ('new_img', $new_img);
  701. }else{
  702. $templates->set_var ('new_img', '');
  703. }
  704. $hits=COM_applyFilter(DB_getItem( $tbl6 ,"hits","id={$id}"),true);
  705. $templates->set_var('lang_hits', $LANG_DATABOX_ADMIN['hits']);
  706. $templates->set_var('data_hits', $hits);
  707. //カテゴリ@@@@@
  708. $templates->set_var('lang_category', $LANG_DATABOX_ADMIN['category']);
  709. DATABOX_getcategoriesDisp($A['id'],$templates,$chk_user,0,$pi_name);
  710. //追加項目
  711. $chk_user=DATABOX_chkuser($group_id,$owner_id,"databox.admin");
  712. $additionfields = DATABOX_getadditiondatas($id,$pi_name);
  713. DATABOX_getaddtionfieldsDisp($additionfields,$addition_def,$templates,$chk_user,$pi_name,$fieldset_id);
  714. //管理者の時「編集」
  715. if ( SEC_hasRights('databox.admin')) {
  716. $icon_url = $_CONF['layout_url'] . '/images/edit.' . $_IMAGE_TYPE;
  717. $attr = array('title' => $title." ".$LANG_DATABOX_ADMIN['edit']);
  718. $editiconhtml = COM_createImage($icon_url, $LANG_DATABOX_ADMIN['edit'], $attr);
  719. $attr = array('class' => 'editlink', 'title' => $title." ".$LANG_DATABOX_ADMIN['edit']);
  720. $url = $_CONF['site_admin_url'];
  721. $url .= '/plugins/databox/data.php';
  722. $url .= '?mode=edit';
  723. $url .= '&amp;'."id={$id}";
  724. $icon = '&nbsp;' ;
  725. $icon .= COM_createLink( $editiconhtml, $url, $attr );
  726. $templates->set_var ('data_edit', $icon);
  727. }else{
  728. $rt=databox_chk_loaddata($id);
  729. //編集権限のあるMyData
  730. if ( $rt==="OK") {
  731. $icon_url = $_CONF['layout_url'] . '/images/edit.' . $_IMAGE_TYPE;
  732. $attr = array('title' => $LANG_DATABOX_ADMIN['edit']);
  733. $editiconhtml = COM_createImage($icon_url, $LANG_DATABOX_ADMIN['edit'], $attr);
  734. $attr = array('class' => 'editlink', 'title' => $title." ".$LANG_DATABOX_ADMIN['edit']);
  735. $url = $_CONF['site_url'];
  736. $url .= '/databox/mydata/data.php';
  737. $url .= '?mode=edit';
  738. $url .= '&amp;'."id={$id}";
  739. $icon = '&nbsp;' ;
  740. $icon .= COM_createLink( $editiconhtml, $url, $attr );
  741. $templates->set_var ('data_edit', $icon);
  742. }else{
  743. $templates->set_var ('data_edit', "");
  744. }
  745. }
  746. //=====
  747. $templates->parse ('col_var', 'col', true);
  748. $templates->parse ('row_var', 'row', true);
  749. $templates->set_var ('col_var', '');
  750. }
  751. // Call to plugins to set template variables in the databox
  752. PLG_templateSetVars( 'databox', $templates );
  753. //------------
  754. //-----navigation
  755. $url = $_CONF['site_url'] . '/';
  756. if ($autotag==="notautotag"){
  757. $url.=THIS_SCRIPT;
  758. }else{
  759. $url.="databox/category.php";
  760. }
  761. $url.="?";
  762. if ($category_code<>""){
  763. $url.="code=".$category_code;
  764. $url.="&amp;m=code";
  765. }else{
  766. $url .= "id=".$category_id;
  767. $url .= "&amp;m=id";
  768. }
  769. $url .= "&amp;template=".$template;
  770. $url .= "&amp;order=";
  771. //-----order navigation
  772. databox_order ($url, $templates, $order) ;
  773. //-----page navigation
  774. $url .= $order;
  775. $templates->set_var ('page_navigation',
  776. COM_printPageNavigation ($url, $page, $pages));
  777. if ($order==="random"){
  778. $templates->set_var ( 'pagenavinone', 'style="display:none;"' );
  779. }else{
  780. $templates->set_var ( 'pagenavinone', '' );
  781. }
  782. //------------
  783. $templates->parse ('nav_var', 'nav', true);
  784. $templates->set_var ('msg', "");
  785. $templates->parse ('output', 'list');
  786. $content = $templates->finish ($templates->get_var ('output'));
  787. $retval .=$content;
  788. }else{
  789. if ($nohitmsg==="yes"){
  790. $tmplfld=DATABOX_templatePath('category',$template,$pi_name);
  791. $templates = new Template($tmplfld);
  792. $templates->set_file (array (
  793. 'list' => 'nohit.thtml',
  794. ));
  795. $templates->set_var ('home',$LANG_DATABOX['home']);
  796. $url=$_CONF['site_url']."/databox/category.php";
  797. $category_top="<a href='".$url."'>".$LANG_DATABOX['category_top']."</a>";
  798. $templates->set_var ('category_top',$category_top);
  799. $templates->set_var ('category_name',$category_name);
  800. $templates->set_var ('category_code',$category_code);
  801. $templates->set_var ('category_description',$category_description);
  802. $templates->set_var('xhtml', XHTML);
  803. $templates->set_var('site_url', $_CONF['site_url']);
  804. $templates->set_var('site_admin_url', $_CONF['site_admin_url']);
  805. $templates->set_var('layout_url', $_CONF['layout_url']);
  806. $templates->set_var ('lang_nohit', $LANG_DATABOX['nohit']);
  807. $templates->parse ('output', 'list');
  808. $content = $templates->finish ($templates->get_var ('output'));
  809. $retval .=$content;
  810. }
  811. }
  812. $retval =PLG_replacetags ($retval);
  813. return $retval;
  814. }
  815. function databox_count(
  816. $category_id =null
  817. ,$category_code =null
  818. ,$mode=''
  819. ,$permission=''
  820. ,$numberformat=''
  821. )
  822. // +---------------------------------------------------------------------------+
  823. // | 機能 件数表示 |
  824. // +---------------------------------------------------------------------------+
  825. // | 書式 databox_count()
  826. // | 書式 databox_count(1)
  827. // | 書式 databox_count("japan")
  828. // +---------------------------------------------------------------------------+
  829. // | 引数 $category_id:カテゴリid (優先)
  830. // | 引数 $category_code:カテゴリコード
  831. // | 引数 $mode :ブランク または AND
  832. // | 引数 $permission :ブランク または ignore
  833. // | 引数 $numberformat :ブランク または yes
  834. // +---------------------------------------------------------------------------+
  835. // | 戻値 nomal:データ総数、カテゴリ別データ件数
  836. // +---------------------------------------------------------------------------+
  837. {
  838. global $_TABLES;
  839. //-----
  840. $tbl1=$_TABLES['DATABOX_base'] ;
  841. $tbl2=$_TABLES['DATABOX_category'] ;
  842. //カテゴリの指定がなければ全件、あればカテゴリ毎
  843. $exp="";
  844. if (is_null($category_id) AND is_null($category_code) ){
  845. }else{
  846. $ids="";
  847. $idsary=array();
  848. if (is_null($category_id) OR $category_id==0){
  849. if (is_null($category_code)){
  850. }else{
  851. $w=explode("|",$category_code);
  852. foreach( $w as $val ){
  853. if ($ids<>""){
  854. $ids.=",";
  855. }
  856. $w_id=DATABOX_codetoid($val,'DATABOX_def_category',"category_id");
  857. $idsary[]=$w_id;
  858. $ids.=$w_id;
  859. }
  860. }
  861. }else{
  862. $ids=$category_id;
  863. $idsary[]=$category_id;
  864. }
  865. if (strtoupper($mode)=="AND"){
  866. $w="";
  867. foreach( $idsary as $val ){
  868. if ($w<>""){
  869. $w.=" AND ";
  870. }
  871. $w.=$val." IN (SELECT category_id";
  872. $w.=" FROM {$tbl2} AS t2 ";
  873. $w.=" WHERE t2.id = t1.id)";
  874. }
  875. }else{
  876. $w= "id IN (SELECT id FROM {$tbl2} ";
  877. $w.="WHERE category_id IN ({$ids})) ";
  878. }
  879. $exp=$w.LB;
  880. }
  881. //-----
  882. $sql = "SELECT ".LB;
  883. $sql .= " distinct t1.id ".LB;
  884. $sql .= " FROM ".LB;
  885. $sql .= " {$tbl1} AS t1 ".LB;
  886. $sql .= " WHERE ".LB;
  887. if ($exp<>""){
  888. $sql .= $exp. " AND ";
  889. }
  890. //@@@@@@@@@--------->
  891. //下書はのぞく
  892. $sql .= " t1.draft_flag=0".LB;
  893. //アクセス権のないデータ はのぞく
  894. if (strtoupper($permission)=="IGNORE"){
  895. }else{
  896. $sql .= COM_getPermSql('AND').LB;
  897. }
  898. //公開日以前のデータはのぞく
  899. $sql .= " AND (released <= NOW())".LB;
  900. //公開終了日を過ぎたデータはのぞく
  901. $sql .= " AND (expired=0 OR expired > NOW())".LB;
  902. //@@@@@@@@@<---------
  903. $result = DB_query ($sql);
  904. $cnt = DB_numRows ($result);
  905. if (strtoupper($numberformat)=="YES"){
  906. $rt=COM_NumberFormat($cnt);
  907. }else{
  908. $rt=$cnt;
  909. }
  910. return $rt;
  911. }
  912. function databox_field(
  913. $autotag
  914. ,$field_id=null
  915. ,$value=""
  916. ,$template=null
  917. ,$nohitmsg=""
  918. ,$perpage =0
  919. ,$page=null
  920. ,$order=null
  921. ,$field_code=null
  922. )
  923. // +---------------------------------------------------------------------------+
  924. // | 機能 アトリビュート別一覧表示
  925. // | 書式
  926. // +---------------------------------------------------------------------------+
  927. // | 引数 $autotag:notautotagの時ヘッダを表示しない
  928. // | 引数 $field_id:追加属性id
  929. // | 引数 $value:表示する項目の値
  930. // | 引数 $template:使用するテンプレートのフォルダ名
  931. // | 引数 $nohitmsg :"yes"の時nohitメッセージ表示
  932. // | 引数 $perpage :1pageあたりの件数、0の時改ページなし
  933. // | 引数 $page :
  934. // | 引数 $order :順序
  935. // | 引数 $field_code :
  936. // +---------------------------------------------------------------------------+
  937. // | public_html/attribute.php および 自動タグで使用
  938. // | ヘッダはコンフィギュレーション設定により表示されない場合があります
  939. // | idもcodeも指定されない場合は、全カテゴリ
  940. // +---------------------------------------------------------------------------+
  941. // | 戻値 nomal:attribute list
  942. // +---------------------------------------------------------------------------+
  943. {
  944. $pi_name="databox";
  945. global $_CONF;
  946. global $_TABLES;
  947. global $_DATABOX_CONF;
  948. global $LANG_DATABOX;
  949. global $LANG_DATABOX_ADMIN;
  950. global $LANG_DATABOX_NOYES;
  951. global $_IMAGE_TYPE;
  952. global $LANG_confignames;
  953. global $_PLUGINS;
  954. global $_MAPS_CONF;
  955. //ログイン要否チェック
  956. if (COM_isAnonUser()){
  957. if ($_CONF['loginrequired']
  958. OR ($_DATABOX_CONF['loginrequired'] >1) ){
  959. return $LANG_DATABOX['loginrequired'];
  960. }
  961. }
  962. //-----table assign
  963. $tbl1=$_TABLES['DATABOX_addition'] ;
  964. $tbl2=$_TABLES['DATABOX_base'] ;
  965. $tbl3=$_TABLES['DATABOX_addition'] ;
  966. $tbl5=$_TABLES['DATABOX_stats'];
  967. //日付関連
  968. $datefield=$_DATABOX_CONF['datefield'];//使用する日付(編集日付、作成日付、公開日)
  969. $new_img=$_DATABOX_CONF['new_img'];
  970. if ($new_img==""){
  971. $new_img="New!";
  972. }
  973. $newmarkday=$_DATABOX_CONF['newmarkday'];
  974. if ($newmarkday==""){
  975. $newmarkday=3;
  976. }
  977. $chkday=strtotime("- $newmarkday days",time());
  978. //-----引数チェック
  979. if (is_null($value) OR $value==="") {
  980. return;
  981. }
  982. if (is_null($field_id)){
  983. if ($field_code===""){
  984. $field_id=0;
  985. }else{
  986. $field_id=DATABOX_codetoid($field_code,'DATABOX_def_field',"field_id","templatesetvar");
  987. }
  988. }
  989. if ($field_id===0) {
  990. return;
  991. }
  992. if ($field_code===""){
  993. $field_code=DB_getItem( $_TABLES['DATABOX_def_field']
  994. ,"templatesetvar","field_id={$field_id}");
  995. }
  996. $field_def=DATABOX_getadditiondef($pi_name);
  997. $type=$field_def[$field_id]['type'];
  998. $w = array(0,2,3,4,7,8,9,16);
  999. if (in_array ($type,$w)){
  1000. }else{
  1001. return;
  1002. }
  1003. $allow_display=$field_def[$field_id]['allow_display'];
  1004. if ($allow_display<2){
  1005. }else{
  1006. return;
  1007. }
  1008. //
  1009. if (is_null($page) OR !isset($page) OR $page == 0) {
  1010. $page = 1;
  1011. }
  1012. if ($perpage===0 OR is_null($perpage)){
  1013. $perpage=$_DATABOX_CONF['perpage'];
  1014. }
  1015. $w=databox_orderby($datefield,$order,$orderby,$addfieldorder,$orderfield_id);
  1016. $field_def[$field_id]['name'];
  1017. $field_name=$field_def[$field_id]['name'];
  1018. $field_templatesetvar=$field_def[$field_id]['templatesetvar'];
  1019. $field_description=$field_def[$field_id]['description'];
  1020. $fieldvalue=DATABOX_getfieldvalue(
  1021. $value
  1022. ,$field_def[$field_id]['type']
  1023. ,$field_def[$field_id]['selectionary']
  1024. ,$LANG_DATABOX_NOYES
  1025. ,$field_def[$field_id]['selectlist']
  1026. ,$pi_name
  1027. );
  1028. if (is_null($template) or ($template==="")){
  1029. $template="default";
  1030. }
  1031. $sql = "SELECT DISTINCT";
  1032. $sql .= " t2.id ".LB;
  1033. $sql .= " ,t2.title ".LB;
  1034. $sql .= " ,t2.code ".LB;
  1035. $sql .= " ,t2.description ".LB;
  1036. $sql .= " ,t2.".$datefield." AS datefield ".LB;
  1037. $sql .= " ,t2.expired ".LB;
  1038. $sql .= " ,UNIX_TIMESTAMP(t2.".$datefield.") AS datefield_un ".LB;
  1039. $sql .= " ,UNIX_TIMESTAMP(t2.released ) AS released_un ".LB;
  1040. $sql .= " ,UNIX_TIMESTAMP(t2.expired ) AS expired_un ".LB;
  1041. $sql .= " ,t2.group_id";
  1042. $sql .= " ,t2.owner_id";
  1043. $sql .= " ,t2.fieldset_id ".LB;
  1044. if ($addfieldorder){
  1045. $sql .= " ,t3.value ".LB;
  1046. }
  1047. $sql .= " FROM ".LB;
  1048. $sql .= " {$tbl2} AS t2 ".LB;
  1049. $sql .= " ,{$tbl1} AS t1 ".LB;
  1050. if ($addfieldorder){
  1051. $sql .= " ,{$tbl3} AS t3 ".LB;
  1052. }
  1053. $sql .= " WHERE ".LB;
  1054. $sql .= " t1.field_id = ".$field_id.LB;
  1055. $sql .= " AND t1.id = t2.id ".LB;
  1056. $sql .= " AND t1.value = \"".$value."\"".LB;
  1057. if ($addfieldorder){
  1058. $sql .= " AND t3.field_id=".$orderfield_id.LB;
  1059. $sql .= " AND t3.id=t2.id".LB;
  1060. }
  1061. //管理者の時,下書データも含む
  1062. //if ( SEC_hasRights('databox.admin')) {
  1063. //}else{
  1064. $sql .= " AND t2.draft_flag=0".LB;
  1065. //}
  1066. //アクセス権のないデータ はのぞく
  1067. $sql .= COM_getPermSql('AND',0,2,"t2");
  1068. //公開日以前のデータはのぞく
  1069. $sql .= " AND (released <= NOW())".LB;
  1070. //公開終了日を過ぎたデータはのぞく
  1071. $sql .= " AND (expired=0 OR expired > NOW())";
  1072. $sql .= " ORDER BY ".LB;
  1073. $sql .= $orderby.LB;
  1074. $result = DB_query ($sql);
  1075. $cnt = DB_numRows ($result);
  1076. $pages = 0;
  1077. if ($perpage > 0) {
  1078. $pages = ceil($cnt / $perpage);
  1079. }
  1080. $offset = ($page - 1) * $perpage;
  1081. $sql .= " LIMIT $offset, $perpage";
  1082. //自動タグでない時 ヘッダ、左ブロック
  1083. if ($autotag==="notautotag"){
  1084. if ($page > 1) {
  1085. $page_title = sprintf ('%s (%d)', $field_name, $page);
  1086. } else {
  1087. $page_title = sprintf ('%s ', $field_name);
  1088. }
  1089. $headercode=DATABOX_getheadercode(
  1090. "attribute"
  1091. ,$template
  1092. ,$pi_name
  1093. ,$field_id
  1094. ,$field_name
  1095. ,$field_description
  1096. ,$field_name
  1097. ,$field_description);
  1098. $retval .= DATABOX_siteHeader($pi_name,'',$page_title,$headercode);
  1099. }
  1100. //
  1101. $addition_def=DATABOX_getadditiondef($pi_name);
  1102. //
  1103. $url=$_CONF['site_url']."/databox/attribute.php";
  1104. $attribute_top="<a href='".$url."'>".$LANG_DATABOX['attribute_top']."</a>";
  1105. $url=$_CONF['site_url']."/databox/attribute.php?";
  1106. $url.="m=id&amp;id=".$field_id;
  1107. $field_top="<a href='".$url."'>".$field_name.$LANG_DATABOX['countlist']."</a>";
  1108. $result = DB_query ($sql);
  1109. $numrows = DB_numRows ($result);
  1110. if ($numrows > 0) {
  1111. $tmplfld=DATABOX_templatePath('attribute',$template,$pi_name);
  1112. $templates = new Template($tmplfld);
  1113. $templates->set_file (array (
  1114. 'list' => 'list_detail.thtml',
  1115. 'nav' => 'navigation_detail.thtml',
  1116. 'row' => 'row.thtml',
  1117. 'col' => "col_detail.thtml",
  1118. ));
  1119. $languageid=COM_getLanguageId();
  1120. $language= COM_getLanguage();
  1121. $templates->set_var ('languageid', $languageid);
  1122. $templates->set_var ('language', $language);
  1123. if ($languageid<>"") {
  1124. $templates->set_var ('_languageid', "_".$languageid);
  1125. }else{
  1126. $templates->set_var ('_languageid', "");
  1127. }
  1128. //
  1129. $templates->set_var ('site_url',$_CONF['site_url']);
  1130. $templates->set_var ('this_script',THIS_SCRIPT);
  1131. //bread
  1132. $templates->set_var ('home',$LANG_DATABOX['home']);
  1133. $templates->set_var ('attribute_top',$attribute_top);
  1134. $templates->set_var ('field_top',$field_top);
  1135. $templates->set_var ('field_name',$field_name);
  1136. $templates->set_var ('field_templatesetvar',$field_templatesetvar);
  1137. $templates->set_var ('field_description',$field_description);
  1138. $templates->set_var ('fieldvalue',$fieldvalue);
  1139. $templates->set_var ('addition_name',$additon_name);
  1140. $templates->set_var ('addition_code',$additon_code);
  1141. //page
  1142. $templates->set_var ('cnt', $cnt);
  1143. $lin1=$offset+1;
  1144. $lin2=$lin1+$perpage - 1;
  1145. if ($lin2>$cnt){
  1146. $lin2=$cnt;
  1147. }
  1148. //summary navigation
  1149. $templates->set_var ('lang_view', $LANG_DATABOX['view']);
  1150. $templates->set_var ('lin', $lin1."-".($lin2));
  1151. $templates->set_var ('cnt', $cnt);
  1152. $templates->set_var ('lang_code', $LANG_DATABOX_ADMIN['code']);
  1153. $templates->set_var ('lang_id', $LANG_DATABOX_ADMIN['id']);
  1154. //
  1155. $templates->set_var ('lang_date', $LANG_DATABOX_ADMIN[$datefield]);
  1156. $templates->set_var ('lang_title', $LANG_DATABOX_ADMIN['title']);
  1157. $templates->set_var ('lang_description', $LANG_DATABOX_ADMIN['description']);
  1158. $templates->set_var ('lang_released', $LANG_DATABOX_ADMIN['released']);
  1159. $templates->set_var ('lang_expired', $LANG_DATABOX_ADMIN['expired']);
  1160. $templates->set_var ('lang_remaingdays', $LANG_DATABOX_ADMIN['remaingdays']);
  1161. $templates->set_var ('lang_addfield', $addfield_name);
  1162. //$_DATABOX_CONF
  1163. $templates->set_var('lang_imgfile_frd', $LANG_confignames['databox']['imgfile_frd']);
  1164. $templates->set_var ('imgfile_frd', $_DATABOX_CONF['imgfile_frd']);
  1165. $templates->set_var ('data_img_url', $_CONF['site_url']."/".$_DATABOX_CONF['imgfile_frd']);
  1166. $templates->set_var('lang_imgfile_thumb_frd', $LANG_confignames['databox']['imgfile_thumb_frd']);
  1167. $templates->set_var ('imgfile_thumb_frd', $_DATABOX_CONF['imgfile_thumb_frd']);
  1168. $templates->set_var ('data_thumb_img_url', $_CONF['site_url']."/".$_DATABOX_CONF['imgfile_thumb_frd']);
  1169. $mkids="";
  1170. for ($i = 0; $i < $numrows; $i++) {
  1171. $A = DB_fetchArray ($result);
  1172. $A = array_map('stripslashes', $A);
  1173. $title=COM_applyFilter($A['title']);
  1174. $description=COM_applyFilter($A['description']);
  1175. $code=COM_applyFilter($A['code']);
  1176. $id=COM_applyFilter($A['id']);
  1177. $datefield=COM_applyFilter($A['datefield']);
  1178. $released=COM_applyFilter($A['released']);
  1179. $expired=COM_applyFilter($A['expired']);
  1180. $datefield_ary = COM_getUserDateTimeFormat($A['datefield_un']);
  1181. $released_ary = COM_getUserDateTimeFormat($A['released_un']);
  1182. if ($expired==="0000-00-00 00:00:00"){
  1183. $expired_ary=array();
  1184. }else{
  1185. $expired_ary = COM_getUserDateTimeFormat($A['expired_un']);
  1186. }
  1187. $curdate_ary = COM_getUserDateTimeFormat();
  1188. $sortvalue=COM_applyFilter($A['value']);
  1189. $group_id = $A['group_id'];
  1190. $owner_id = $A['owner_id'];
  1191. $fieldset_id=COM_applyFilter($A['fieldset_id']);
  1192. $rt=databox_detail_link($id,$code,$title);
  1193. $templates->set_var ('data_link', $rt['link']);
  1194. $templates->set_var ('data_title', $title);
  1195. $templates->set_var ('data_code', $code);
  1196. $templates->set_var ('data_description', $description);
  1197. $templates->set_var ('data_id', $id);
  1198. $templates->set_var ('data_url', $rt['url']);
  1199. $templates->set_var ('data_datefield', $datefield_ary[0]);
  1200. $templates->set_var ('data_value', $sortvalue);
  1201. $templates->set_var ('data_datefield_shortdate', strftime( $_CONF['shortdate'], $A['datefield_un'] ));
  1202. $templates->set_var ('data_datefield_shortdate', strftime( $_CONF['shortdate'], $A['datefield_un'] ));
  1203. $templates->set_var ('data_datefield_date', strftime( $_CONF['date'], $A['datefield_un'] ));
  1204. $templates->set_var ('data_datefield_daytime', strftime( $_CONF['daytime'], $A['datefield_un'] ));
  1205. $templates->set_var ('data_datefield_dateonly', strftime( $_CONF['dateonly'], $A['datefield_un'] ));
  1206. $templates->set_var ('data_datefield_timeonly', strftime( $_CONF['timeonly'], $A['datefield_un'] ));
  1207. $templates->set_var ('data_datefield_b', strftime( "%b" , $A['datefield_un']));
  1208. $templates->set_var ('data_datefield_B', strftime( "%B" , $A['datefield_un']));
  1209. $templates->set_var ('data_datefield_d', strftime( "%d" , $A['datefield_un']));
  1210. $templates->set_var ('data_datefield_e', strftime( "%e" , $A['datefield_un']));
  1211. $templates->set_var ('data_released', $released_ary[0]);//@@@@@@
  1212. $templates->set_var ('data_released_shortdate', strftime( $_CONF['shortdate'], $A['released_un'] ));
  1213. $templates->set_var ('data_released_date', strftime( $_CONF['date'], $A['released_un'] ));
  1214. $templates->set_var ('data_released_daytime', strftime( $_CONF['daytime'], $A['released_un'] ));
  1215. $templates->set_var ('data_released_dateonly', strftime( $_CONF['dateonly'], $A['released_un'] ));
  1216. $templates->set_var ('data_released_timeonly', strftime( $_CONF['timeonly'], $A['released_un'] ));
  1217. $templates->set_var ('data_released_b', strftime( "%b" , $A['released_un']));
  1218. $templates->set_var ('data_released_B', strftime( "%B" , $A['released_un']));
  1219. $templates->set_var ('data_released_d', strftime( "%d" , $A['released_un']));
  1220. $templates->set_var ('data_released_e', strftime( "%e" , $A['released_un']));
  1221. //公開終了日 Expired to publish
  1222. if ($A['expired'] ==="0000-00-00 00:00:00"){
  1223. $templates->set_var ('data_expired', "");
  1224. $templates->set_var ('data_expired_shortdate', "" );
  1225. $templates->set_var ('data_expired_date', "" );
  1226. $templates->set_var ('data_expired_daytime', "" );
  1227. $templates->set_var ('data_expired_dateonly', "" );
  1228. $templates->set_var ('data_expired_timeonly', "" );
  1229. $templates->set_var ('data_expired_b', "" );
  1230. $templates->set_var ('data_expired_B', "" );
  1231. $templates->set_var ('data_expired_d', "" );
  1232. $templates->set_var ('data_expired_e', "" );
  1233. }else{
  1234. $wary = COM_getUserDateTimeFormat($A['expired_un']);
  1235. $templates->set_var ('data_expired', $expired_ary[0]);
  1236. $templates->set_var ('data_expired_shortdate', strftime( $_CONF['shortdate'], $A['expired_un'] ));
  1237. $templates->set_var ('data_expired_date', strftime( $_CONF['date'], $A['expired_un'] ));
  1238. $templates->set_var ('data_expired_daytime', strftime( $_CONF['daytime'], $A['expired_un'] ));
  1239. $templates->set_var ('data_expired_dateonly', strftime( $_CONF['dateonly'], $A['expired_un'] ));
  1240. $templates->set_var ('data_expired_timeonly', strftime( $_CONF['timeonly'], $A['expired_un'] ));
  1241. $templates->set_var ('data_expired_b', strftime( "%b" , $A['expired_un']));
  1242. $templates->set_var ('data_expired_B', strftime( "%B" , $A['expired_un']));
  1243. $templates->set_var ('data_expired_d', strftime( "%d" , $A['expired_un']));
  1244. $templates->set_var ('data_expired_e', strftime( "%e" , $A['expired_un']));
  1245. }
  1246. $remaingdays="";
  1247. if ($expired<>"0000-00-00 00:00:00") {
  1248. if ($expired_ary[1]>=$curdate_ary[1]){
  1249. $remaingdays=COM_dateDiff( "d", $expired_ary[1], $curdate_ary[1] ) + 1;
  1250. }
  1251. }
  1252. $templates->set_var ('data_remaingdays', $remaingdays);//@@@@@@
  1253. if (date("Ymd",strtotime($datefield)) >= date("Ymd",$chkday)){
  1254. $templates->set_var ('new_img', $new_img);
  1255. }else{
  1256. $templates->set_var ('new_img', '');
  1257. }
  1258. $hits=COM_applyFilter(DB_getItem( $tbl5 ,"hits","id={$id}"),true);
  1259. $templates->set_var('lang_hits', $LANG_DATABOX_ADMIN['hits']);
  1260. $templates->set_var('data_hits', $hits);
  1261. //カテゴリ@@@@@
  1262. $templates->set_var('lang_category', $LANG_DATABOX_ADMIN['category']);
  1263. DATABOX_getcategoriesDisp($A['id'],$templates,$chk_user,0,$pi_name);
  1264. //追加項目
  1265. $group_id = stripslashes($A['group_id']);
  1266. $owner_id = stripslashes($A['owner_id']);
  1267. $chk_user=DATABOX_chkuser($group_id,$owner_id,"databox.admin");
  1268. $additionfields = DATABOX_getadditiondatas($id,$pi_name);
  1269. DATABOX_getaddtionfieldsDisp($additionfields,$addition_def,$templates,$chk_user,$pi_name,$fieldset_id);
  1270. //管理者の時「編集」
  1271. if ( SEC_hasRights('databox.admin')) {
  1272. $icon_url = $_CONF['layout_url'] . '/images/edit.' . $_IMAGE_TYPE;
  1273. $attr = array('title' => $title." ".$LANG_DATABOX_ADMIN['edit']);
  1274. $editiconhtml = COM_createImage($icon_url, $LANG_DATABOX_ADMIN['edit'], $attr);
  1275. $attr = array('class' => 'editlink', 'title' => $title." ".$LANG_DATABOX_ADMIN['edit']);
  1276. $url = $_CONF['site_admin_url'];
  1277. $url .= '/plugins/databox/data.php';
  1278. $url .= '?mode=edit';
  1279. $url .= '&amp;'."id={$id}";
  1280. $icon = '&nbsp;' ;
  1281. $icon .= COM_createLink( $editiconhtml, $url, $attr );
  1282. $templates->set_var ('data_edit', $icon);
  1283. }else{
  1284. $rt=databox_chk_loaddata($id);
  1285. //編集権限のあるMyData
  1286. if ( $rt==="OK") {
  1287. $icon_url = $_CONF['layout_url'] . '/images/edit.' . $_IMAGE_TYPE;
  1288. $attr = array('title' => $LANG_DATABOX_ADMIN['edit']);
  1289. $editiconhtml = COM_createImage($icon_url, $LANG_DATABOX_ADMIN['edit'], $attr);
  1290. $attr = array('class' => 'editlink', 'title' => $title." ".$LANG_DATABOX_ADMIN['edit']);
  1291. $url = $_CONF['site_url'];
  1292. $url .= '/databox/mydata/data.php';
  1293. $url .= '?mode=edit';
  1294. $url .= '&amp;'."id={$id}";
  1295. $icon = '&nbsp;' ;
  1296. $icon .= COM_createLink( $editiconhtml, $url, $attr );
  1297. $templates->set_var ('data_edit', $icon);
  1298. }else{
  1299. $templates->set_var ('data_edit', "");
  1300. }
  1301. }
  1302. //maps plugin link
  1303. $mkid="";
  1304. if (in_array("maps", $_PLUGINS)){
  1305. if ($code<>""){
  1306. $mkid=DB_getItem($_TABLES['maps_markers'],"mkid","item_10='$code'");
  1307. $mkids.=$mkid." ";
  1308. }
  1309. }
  1310. //=====
  1311. $templates->parse ('col_var', 'col', true);
  1312. $templates->parse ('row_var', 'row', true);
  1313. $templates->set_var ('col_var', '');
  1314. }
  1315. $mkids=rtrim($mkids," ");
  1316. $mkidary=array();
  1317. $mkid_ary=split(" " , $mkids);
  1318. $selectedMarkers="";
  1319. if (function_exists("MAPS_selectedMarkers") AND $mkids<>"") {
  1320. $selectedMarkers=MAPS_selectedMarkers(
  1321. $_MAPS_CONF['map_width']
  1322. ,$_MAPS_CONF['map_height']
  1323. ,$_MAPS_CONF['map_zoom']
  1324. ,$mkid_ary);
  1325. }
  1326. $templates->set_var ('mkids', $mkids);
  1327. $templates->set_var ('selectedMarkers', $selectedMarkers);
  1328. //------------
  1329. //-----navigation
  1330. $url = $_CONF['site_url'] . '/';
  1331. if ($autotag==="notautotag"){
  1332. $url.=THIS_SCRIPT;
  1333. }else{
  1334. $url.="databox/attribute.php";
  1335. }
  1336. $url .= "?m=id";
  1337. $url .= "&amp;id=".$field_id;
  1338. $url .= "&amp;value=".$value;
  1339. $url .= "&amp;template=".$template;
  1340. $url .= "&amp;perpage=".$perpage;
  1341. $url .= "&amp;order=";
  1342. //-----order navigation
  1343. databox_order($url, $templates, $order) ;
  1344. //-----page navigation
  1345. $url .= $order;
  1346. $templates->set_var ('page_navigation',
  1347. COM_printPageNavigation ($url, $page, $pages));
  1348. if ($order==="random"){
  1349. $templates->set_var ( 'pagenavinone', 'style="display:none;"' );
  1350. }else{
  1351. $templates->set_var ( 'pagenavinone', '' );
  1352. }
  1353. // Call to plugins to set template variables in the databox
  1354. PLG_templateSetVars( 'databox', $templates );
  1355. //------------
  1356. $templates->parse ('nav_var', 'nav', true);
  1357. $templates->set_var ('msg', "");
  1358. $templates->parse ('output', 'list');
  1359. $content = $templates->finish ($templates->get_var ('output'));
  1360. $retval .=$content;
  1361. }else{
  1362. if ($nohitmsg==="yes"){
  1363. $tmplfld=DATABOX_templatePath('attribute',$template,$pi_name);
  1364. $templates = new Template($tmplfld);
  1365. $templates->set_file (array (
  1366. 'list' => 'nohit.thtml',
  1367. ));
  1368. //bread
  1369. $templates->set_var ('home',$LANG_DATABOX['home']);
  1370. $templates->set_var ('attribute_top',$attribute_top);
  1371. $templates->set_var ('field_top',$field_top);
  1372. $templates->set_var ('field_name',$field_name);
  1373. $templates->set_var ('field_templatesetvar',$templatesetvar);
  1374. $templates->set_var ('field_description',$field_description);
  1375. $templates->set_var ('fieldvalue',$fieldvalue);
  1376. $templates->set_var('xhtml', XHTML);
  1377. $templates->set_var('site_url', $_CONF['site_url']);
  1378. $templates->set_var('site_admin_url', $_CONF['site_admin_url']);
  1379. $templates->set_var('layout_url', $_CONF['layout_url']);
  1380. $templates->set_var ('lang_nohit', $LANG_DATABOX['nohit']);
  1381. $templates->parse ('output', 'list');
  1382. $content = $templates->finish ($templates->get_var ('output'));
  1383. $retval .=$content;
  1384. }
  1385. }
  1386. $retval =PLG_replacetags ($retval);
  1387. return $retval;
  1388. }
  1389. function databox_orderby(
  1390. $datefield
  1391. ,&$order
  1392. ,&$orderby
  1393. ,&$addfieldorder
  1394. ,&$field_id
  1395. )
  1396. // +---------------------------------------------------------------------------+
  1397. // | 機能 order orderby addfieldorder $field_id を編集
  1398. // | 書式 databox_orderby($order,$orderby,$addfieldorder,$field_id);
  1399. // +---------------------------------------------------------------------------+
  1400. // | 引数 $datefield
  1401. // | 引数戻値 $order
  1402. // | 引数戻値 $orderby
  1403. // | 引数戻値 $addfieldorder
  1404. // | 引数戻値 $field_id
  1405. // +---------------------------------------------------------------------------+
  1406. {
  1407. global $_TABLES;
  1408. $orderby="";
  1409. $addfieldorder=false;
  1410. switch($order){
  1411. case "random":
  1412. $orderby =" RAND()";
  1413. break;
  1414. case "":
  1415. case "date":
  1416. $order="date";
  1417. $orderby = $datefield ." DESC";
  1418. break;
  1419. case "released":
  1420. $orderby = " released DESC";
  1421. break;
  1422. case "orderno":
  1423. case "code":
  1424. case "title":
  1425. case "description":
  1426. case "id":
  1427. $orderby = " t2.".$order;
  1428. break;
  1429. default:
  1430. $sql="SELECT ";
  1431. $sql.= " field_id ";
  1432. $sql.= ",name ";
  1433. $sql.=" FROM";
  1434. $sql.=" {$_TABLES['DATABOX_def_field']} ";
  1435. $sql.=" WHERE templatesetvar='".$order."'";
  1436. $result = DB_query ($sql);
  1437. $numrows = DB_numRows ($result);
  1438. if ($numrows>0){
  1439. $A = DB_fetchArray ($result);
  1440. $field_id=COM_stripslashes($A['field_id']);
  1441. $addfield_name=COM_stripslashes($A['name']);
  1442. $orderby = " t3.value IS NULL ASC ,cast(t3.value as DECIMAL) ASC ";
  1443. $addfieldorder=true;
  1444. }else{
  1445. $order="date";
  1446. $orderby = $datefield ." DESC";
  1447. }
  1448. }
  1449. return ;
  1450. }
  1451. // +---------------------------------------------------------------------------+
  1452. // | 機能 集計表示(max min sum)
  1453. // +---------------------------------------------------------------------------+
  1454. // | 書式 databox_grp()
  1455. // | 書式 databox_grp(1)
  1456. // | 書式 databox_grp("japan")
  1457. // +---------------------------------------------------------------------------+
  1458. // | 引数 $field:項目 デフォルトmodified
  1459. // | 引数 $function:関数 デフォルトmax
  1460. // | 引数 $format:書式
  1461. // | 引数 $category_id:カテゴリid (優先)
  1462. // | 引数 $category_code:カテゴリコード
  1463. // +---------------------------------------------------------------------------+
  1464. // | 戻値 nomal:データ総数、カテゴリ別データ件数
  1465. // +---------------------------------------------------------------------------+
  1466. function databox_grp(
  1467. $field=null
  1468. ,$function=null
  1469. ,$format=null
  1470. ,$category_id =null
  1471. ,$category_code =null
  1472. )
  1473. {
  1474. global $_TABLES;
  1475. global $LANG_DATABOX;
  1476. $rt="";
  1477. if (is_null($field) ){
  1478. $field="id";
  1479. }
  1480. if (is_null($function) ){
  1481. $function="max";
  1482. }
  1483. if (is_null($category_id) AND is_null($category_code) ){
  1484. $m="ALL";
  1485. }else{
  1486. if (is_null($category_id) ){
  1487. $category_id=DATABOX_codetoid($category_code,'DATABOX_def_category',"category_id");
  1488. }
  1489. $m="CATEGORY";
  1490. }
  1491. //-----
  1492. $tbl1=$_TABLES['DATABOX_base'] ;
  1493. $tbl2=$_TABLES['DATABOX_category'] ;
  1494. //-----
  1495. $sql=LB;
  1496. $sql .= "SELECT ".LB;
  1497. $sql .= " {$function}(t1.{$field}) AS rt".LB;
  1498. $sql .= " FROM ".LB;
  1499. $sql .= " {$tbl1} AS t1 ".LB;
  1500. if ($m==="ALL"){
  1501. }else{
  1502. $sql .= " ,{$tbl2} AS t2 ".LB;
  1503. }
  1504. $sql .= " WHERE ".LB;
  1505. //@@@@@@@@@--------->
  1506. //下書はのぞく
  1507. $sql .= " t1.draft_flag=0".LB;
  1508. //アクセス権のないデータ はのぞく
  1509. $sql .= COM_getPermSql('AND').LB;
  1510. //公開日以前のデータはのぞく
  1511. $sql .= " AND (released <= NOW())".LB;
  1512. //公開終了日を過ぎたデータはのぞく
  1513. $sql .= " AND (expired=0 OR expired > NOW())".LB;
  1514. //@@@@@@@@@<---------
  1515. if ($m==="ALL"){
  1516. }else{
  1517. $sql .= " AND t1.id = t2.id ".LB;
  1518. $sql .= " AND t2.category_id= ".$category_id .LB;
  1519. }
  1520. $result = DB_query ($sql);
  1521. $numrows = DB_numRows ($result);
  1522. if ($numrows > 0) {
  1523. $A = DB_fetchArray ($result);
  1524. $rt=$A['rt'];
  1525. if ($rt<>""){
  1526. switch($format){
  1527. case "lastmodified":// '%Y年%m%e日更新';
  1528. case "lastcreated"://'%Y年%m%e日追加';
  1529. $fm=$LANG_DATABOX[$format];
  1530. $rt=strftime($fm,strtotime($rt));
  1531. break;
  1532. default:
  1533. break;
  1534. }
  1535. }
  1536. }
  1537. return $rt;
  1538. }
  1539. function databox_data(
  1540. $id=null
  1541. ,$template=null
  1542. ,$nohitmsg=""
  1543. ,$m=""
  1544. ,$code=null
  1545. )
  1546. // +---------------------------------------------------------------------------+
  1547. // | 機能 個別データ表示
  1548. // | 書式 databox_data($id,$template,"yes","page")
  1549. // | 書式 databox_data($p['id'],$p['thtml'],$p['nohitmsg'],$p['code']
  1550. // +---------------------------------------------------------------------------+
  1551. // | 引数 $id :
  1552. // | 引数 $template :テンプレートのdirectory
  1553. // | 引数 $nohitmsg :"yes"の時nohitメッセージ表示
  1554. // | 引数 $m :"page"の時は レイアウト設定
  1555. // | 引数 $code :
  1556. // +---------------------------------------------------------------------------+
  1557. // | public_html/data.php および 自動タグで使用
  1558. // | ヘッダはコンフィギュレーション設定により表示されない場合があります
  1559. // | idもcodeも指定されない場合は、直近に変更または追加されたデータを返します
  1560. // +---------------------------------------------------------------------------+
  1561. // | 戻値 nomal:data
  1562. // +---------------------------------------------------------------------------+
  1563. {
  1564. $pi_name="databox";
  1565. global $_CONF;
  1566. global $_TABLES;
  1567. global $_DATABOX_CONF;
  1568. global $LANG_DATABOX;
  1569. global $LANG_DATABOX_ADMIN;
  1570. global $_IMAGE_TYPE;
  1571. global $_USER;
  1572. global $LANG_ACCESS;
  1573. global $LANG_confignames;
  1574. global $_PLUGINS;
  1575. $layout=$_DATABOX_CONF['layout'];
  1576. //ログイン要否チェック
  1577. if (COM_isAnonUser()){
  1578. if ($_CONF['loginrequired']
  1579. OR ($_DATABOX_CONF['loginrequired'] >0) ){
  1580. return $LANG_DATABOX['loginrequired'];
  1581. }
  1582. }
  1583. //-----
  1584. if (is_null($id) OR ($id==0)){
  1585. if ($code<>""){
  1586. if (substr($code,0,4)==="@fb_"){
  1587. if (function_exists('assistfb_getNestAutotag')) {
  1588. $code=assistfb_getNestAutotag(substr($code,4));
  1589. }
  1590. }
  1591. }
  1592. if ($code<>""){
  1593. $id=DATABOX_codetoid($code,'DATABOX_base',"id");
  1594. }
  1595. }
  1596. //-----
  1597. $display = '';
  1598. $tbl=$_TABLES['DATABOX_base'] ;
  1599. $tbl2=$_TABLES['users'] ;
  1600. $tbl4=$_TABLES['DATABOX_def_fieldset'];
  1601. $tbl5=$_TABLES['DATABOX_stats'];
  1602. $addition_def=DATABOX_getadditiondef($pi_name);
  1603. //-----
  1604. $sql = "SELECT t.* ";
  1605. $sql .= " ,UNIX_TIMESTAMP(t.modified) AS modified_un";
  1606. $sql .= " ,UNIX_TIMESTAMP(t.released) AS released_un";
  1607. $sql .= " ,UNIX_TIMESTAMP(t.comment_expire) AS comment_expire_un";
  1608. $sql .= " ,UNIX_TIMESTAMP(t.expired) AS expired_un";
  1609. $sql .= " ,UNIX_TIMESTAMP(t.created) AS created_un";
  1610. $sql .= " ,UNIX_TIMESTAMP(t.udatetime) AS udatetime_un";
  1611. $sql .= " ,t.fieldset_id";
  1612. $sql .= " ,t2.username AS owner_name";
  1613. $sql .= " ,t3.username AS last_modify_name";
  1614. $sql .= " ,t3.fullname AS last_modify_fullname";
  1615. $sql .= " ,t4.name AS set_name";
  1616. $sql .= " ,t4.description AS set_description";
  1617. $sql .= " ,t4.defaulttemplatesdirectory AS set_defaulttemplatesdirectory";
  1618. $sql .= " ,t4.layout AS set_layout";
  1619. $sql .= " ,t5.hits";
  1620. $sql .= " FROM ";
  1621. $sql .= " {$tbl} AS t ";//base
  1622. $sql .= " JOIN {$tbl4} AS t4 ON t.fieldset_id=t4.fieldset_id";
  1623. $sql .= " JOIN {$tbl2} AS t2 ON t.owner_id=t2.uid";//owner
  1624. $sql .= " LEFT JOIN {$tbl5} AS t5 ON t.id=t5.id";
  1625. $sql .= " LEFT JOIN {$tbl2} AS t3 ON t.uuid=t3.uid";//last_updateowner
  1626. $sql .= " WHERE ";
  1627. if (is_null($id)){//@@@@@
  1628. $sql .= "1=1";
  1629. }else{
  1630. $sql .= " t.id=".$id;
  1631. }
  1632. //管理者の時
  1633. if ( SEC_hasRights('databox.admin') OR $m==="view") {
  1634. }else{
  1635. //下書データはのぞく
  1636. $sql .= " AND t.draft_flag=0".LB;
  1637. //公開日以前のデータはのぞく
  1638. $sql .= " AND (released <= NOW())";
  1639. //公開終了日を過ぎたデータはのぞく
  1640. $sql .= " AND (expired=0 OR expired > NOW())";
  1641. }
  1642. //アクセス権のないデータ はのぞく
  1643. $sql .= COM_getPermSql('AND');
  1644. if (is_null($id)){
  1645. $sql .= " ORDER BY ".$_DATABOX_CONF['datefield'] . " DESC ";
  1646. $sql .= " LIMIT 0 , 1";
  1647. }
  1648. $result = DB_query ($sql);
  1649. $numrows = DB_numRows ($result);
  1650. if ($m==="page" OR $m==="view"){
  1651. if ($numrows <= 0) {
  1652. COM_handle404();
  1653. exit;
  1654. }
  1655. }
  1656. if ($numrows > 0) {
  1657. $A = DB_fetchArray ($result);
  1658. $A = array_map('stripslashes', $A);
  1659. $cache_time=$A['cache_time'];
  1660. $cache=false;
  1661. if ($cache_time===0){
  1662. }else{
  1663. if ($m==="page"){
  1664. $cacheInstance = 'databox__' . $id .'__' . CACHE_security_hash();
  1665. $rt = CACHE_check_instance($cacheInstance."_title");
  1666. if ($rt AND $cache_time == -1) {
  1667. $cache=true;
  1668. } elseif ($cache AND $cache_time > 0) {
  1669. $lu = CACHE_get_instance_update($cacheInstance."_title");
  1670. $now = time();
  1671. if (($now - $lu) < $cache_time ){
  1672. $cache=true;
  1673. }
  1674. }
  1675. }
  1676. }
  1677. if ($cache){
  1678. $display = CACHE_check_instance($cacheInstance."_display",$display);
  1679. $layout = CACHE_check_instance($cacheInstance."_layout",$layout);
  1680. $headercode = CACHE_check_instance($cacheInstance."_headercode",$headercode);
  1681. $title = CACHE_check_instance($cacheInstance."_title",$title);
  1682. }else{
  1683. if (is_null($template) or ($template==="")){
  1684. if ($A['defaulttemplatesdirectory']<>""){
  1685. $template=$A['defaulttemplatesdirectory'];
  1686. }elseif ($A['set_defaulttemplatesdirectory']<>""){
  1687. $template=$A['set_defaulttemplatesdirectory'];
  1688. }else{
  1689. $template="default";
  1690. }
  1691. }
  1692. $code=$A['code'];
  1693. $group_id = $A['group_id'];
  1694. $owner_id = $A['owner_id'];
  1695. $fieldset_id= $A['fieldset_id'];
  1696. //
  1697. if ($m==="view"){
  1698. $chk_user=1000;//ログインユーザ
  1699. }else{
  1700. $chk_user=DATABOX_chkuser($group_id,$owner_id,"databox.admin");
  1701. }
  1702. $id=$A['id'];
  1703. $additionfields = DATABOX_getadditiondatas($id,$pi_name);
  1704. //ヘッダ、左ブロック start.............
  1705. if ($m==="page"){
  1706. if ($A['set_layout']<>"0") {
  1707. $layout=$A['set_layout'];
  1708. }
  1709. // Meta Tags
  1710. $headercode=DATABOX_getheadercode(
  1711. "data"
  1712. ,$template
  1713. ,$pi_name
  1714. ,$A['id']
  1715. ,$A['title']
  1716. ,$A['meta_description']
  1717. ,$A['meta_keywords']
  1718. ,$A['description']
  1719. ,$additionfields
  1720. ,$addition_def
  1721. ,$chk_user
  1722. ,$fieldset_id
  1723. );
  1724. if ($A['page_title']<>""){
  1725. $title = $A['page_title'] ;
  1726. }else{
  1727. $title = $A['title'] ;
  1728. }
  1729. }
  1730. $tmplfld=DATABOX_templatePath('data',$template,$pi_name);
  1731. $templates = new Template($tmplfld);
  1732. $templates->set_file (array (
  1733. 'list' => 'list_detail.thtml',
  1734. 'row' => 'row.thtml',
  1735. 'col' => "col_detail.thtml",
  1736. ));
  1737. $languageid=COM_getLanguageId();
  1738. $language= COM_getLanguage();
  1739. $templates->set_var ('languageid', $languageid);
  1740. $templates->set_var ('language', $language);
  1741. if ($languageid<>"") {
  1742. $templates->set_var ('_languageid', "_".$languageid);
  1743. }else{
  1744. $templates->set_var ('_languageid', "");
  1745. }
  1746. $templates->set_var ('site_admin_url', $_CONF['site_admin_url']);
  1747. $templates->set_var ('site_url',$_CONF['site_url']);
  1748. //
  1749. $templates->set_var('xhtml', XHTML);
  1750. $templates->set_var('layout_url', $_CONF['layout_url']);
  1751. $templates->set_var ('site_name', $_CONF['site_name']);
  1752. $templates->set_var ('site_mail', $_CONF['site_mail']);
  1753. $currenturl= COM_getCurrentURL();
  1754. $templates->set_var ('currenturl', htmlspecialchars($currenturl, ENT_QUOTES, 'UTF-8'));
  1755. //facebook
  1756. $facebook_consumer_key = trim($_CONF['facebook_consumer_key']);
  1757. $templates->set_var ('facebook_consumer_key', $facebook_consumer_key);
  1758. //
  1759. //daft_flag管理者の時
  1760. if ($A['draft_flag']==1){
  1761. $templates->set_var ('draft', "draft!");
  1762. }else{
  1763. $templates->set_var ('draft', "");
  1764. }
  1765. //------------
  1766. //id
  1767. $templates->set_var('lang_id', $LANG_DATABOX_ADMIN['id']);
  1768. $templates->set_var ('id', $A['id']);
  1769. $templates->set_var('lang_fields', $LANG_DATABOX_ADMIN['fields']);
  1770. $templates->set_var('lang_field', $LANG_DATABOX_ADMIN['field']);
  1771. $templates->set_var('lang_templatesetvar', $LANG_DATABOX_ADMIN['templatesetvar']);
  1772. $templates->set_var('lang_content', $LANG_DATABOX_ADMIN['content']);
  1773. $templates->set_var('lang_type', $LANG_DATABOX_ADMIN['type']);
  1774. $templates->set_var('lang_byusingid', $LANG_DATABOX_ADMIN['byusingid']);
  1775. $templates->set_var('lang_byusingcode', $LANG_DATABOX_ADMIN['byusingcode']);
  1776. $templates->set_var('lang_byusingtemplatesetvar', $LANG_DATABOX_ADMIN['byusingtemplatesetvar']);
  1777. $templates->set_var('lang_group', $LANG_DATABOX_ADMIN['group']);
  1778. $templates->set_var('lang_withlink', $LANG_DATABOX_ADMIN['withlink']);
  1779. $templates->set_var('lang_groupbygroup', $LANG_DATABOX_ADMIN['groupbygroup']);
  1780. //$_DATABOX_CONF
  1781. $templates->set_var('lang_imgfile_frd', $LANG_confignames['databox']['imgfile_frd']);
  1782. $templates->set_var ('imgfile_frd', $_DATABOX_CONF['imgfile_frd']);
  1783. $templates->set_var ('data_img_url', $_CONF['site_url']."/".$_DATABOX_CONF['imgfile_frd']);
  1784. $templates->set_var('lang_imgfile_thumb_frd', $LANG_confignames['databox']['imgfile_thumb_frd']);
  1785. $templates->set_var ('imgfile_thumb_frd', $_DATABOX_CONF['imgfile_thumb_frd']);
  1786. $templates->set_var ('data_thumb_img_url', $_CONF['site_url']."/".$_DATABOX_CONF['imgfile_thumb_frd']);
  1787. //基本項目
  1788. $templates->set_var('lang_basicfields', $LANG_DATABOX_ADMIN['basicfields']);
  1789. //コード&タイトル&説明
  1790. $templates->set_var('lang_code', $LANG_DATABOX_ADMIN['code']);
  1791. $templates->set_var ('code', $A['code']);
  1792. $templates->set_var('lang_title', $LANG_DATABOX_ADMIN['title']);
  1793. $templates->set_var ('title',$A['title']);
  1794. $templates->set_var('lang_description', $LANG_DATABOX_ADMIN['description']);
  1795. $templates->set_var ('description',$A['description']);
  1796. //@@@@@
  1797. $templates->set_var('lang_owner', $LANG_ACCESS['owner']);
  1798. $templates->set_var ('owner_name',$A['owner_name']);
  1799. $templates->set_var ('owner_id',$A['owner_id']);
  1800. //hits
  1801. $templates->set_var('lang_hits', $LANG_DATABOX_ADMIN['hits']);
  1802. $templates->set_var ('hits', $A['hits']);
  1803. //カテゴリ@@@@@
  1804. $templates->set_var('lang_category', $LANG_DATABOX_ADMIN['category']);
  1805. DATABOX_getcategoriesDisp($A['id'],$templates,$chk_user,0,$pi_name);
  1806. //追加項目
  1807. $templates->set_var('lang_additionfields', $LANG_DATABOX_ADMIN['additionfields']);
  1808. DATABOX_getaddtionfieldsDisp($additionfields,$addition_def,$templates,$chk_user,$pi_name,$fieldset_id);
  1809. //編集日付
  1810. $templates->set_var('lang_modified', $LANG_DATABOX_ADMIN['modified']);
  1811. $wary = COM_getUserDateTimeFormat($A['modified_un']);
  1812. $templates->set_var ('modified',$wary[0]);
  1813. $templates->set_var ('modified_shortdate', strftime( $_CONF['shortdate'], $A['modified_un'] ));
  1814. $templates->set_var ('modified_date', strftime( $_CONF['date'], $A['modified_un'] ));
  1815. $templates->set_var ('modified_daytime', strftime( $_CONF['daytime'], $A['modified_un'] ));
  1816. $templates->set_var ('modified_dateonly', strftime( $_CONF['dateonly'], $A['modified_un'] ));
  1817. $templates->set_var ('modified_timeonly', strftime( $_CONF['timeonly'], $A['modified_un'] ));
  1818. $templates->set_var ('modified_b', strftime( "%b" , $A['modified_un']));
  1819. $templates->set_var ('modified_B', strftime( "%B" , $A['modified_un']));
  1820. $templates->set_var ('modified_d', strftime( "%d" , $A['modified_un']));
  1821. $templates->set_var ('modified_e', strftime( "%e" , $A['modified_un']));
  1822. //作成日付
  1823. $templates->set_var('lang_created', $LANG_DATABOX_ADMIN['created']);
  1824. $wary = COM_getUserDateTimeFormat($A['created_un']);
  1825. $templates->set_var ('created', $wary[0]);
  1826. $templates->set_var ('created_shortdate', strftime( $_CONF['shortdate'], $A['created_un'] ));
  1827. $templates->set_var ('created_date', strftime( $_CONF['date'], $A['created_un'] ));
  1828. $templates->set_var ('created_daytime', strftime( $_CONF['daytime'], $A['created_un'] ));
  1829. $templates->set_var ('created_dateonly', strftime( $_CONF['dateonly'], $A['created_un'] ));
  1830. $templates->set_var ('created_timeonly', strftime( $_CONF['timeonly'], $A['created_un'] ));
  1831. $templates->set_var ('created_b', strftime( "%b" , $A['created_un']));
  1832. $templates->set_var ('created_B', strftime( "%B" , $A['created_un']));
  1833. $templates->set_var ('created_d', strftime( "%d" , $A['created_un']));
  1834. $templates->set_var ('created_e', strftime( "%e" , $A['created_un']));
  1835. //公開日
  1836. $templates->set_var('lang_released', $LANG_DATABOX_ADMIN['released']);
  1837. $wary = COM_getUserDateTimeFormat($A['released_un']);
  1838. $templates->set_var ('released', $wary[0]);
  1839. $templates->set_var ('released_shortdate', strftime( $_CONF['shortdate'], $A['released_un'] ));
  1840. $templates->set_var ('released_date', strftime( $_CONF['date'], $A['released_un'] ));
  1841. $templates->set_var ('released_daytime', strftime( $_CONF['daytime'], $A['released_un'] ));
  1842. $templates->set_var ('released_dateonly', strftime( $_CONF['dateonly'], $A['released_un'] ));
  1843. $templates->set_var ('released_timeonly', strftime( $_CONF['timeonly'], $A['released_un'] ));
  1844. $templates->set_var ('released_b', strftime( "%b" , $A['released_un']));
  1845. $templates->set_var ('released_B', strftime( "%B" , $A['released_un']));
  1846. $templates->set_var ('released_d', strftime( "%d" , $A['released_un']));
  1847. $templates->set_var ('released_e', strftime( "%e" , $A['released_un']));
  1848. //公開終了日
  1849. $templates->set_var('lang_expired', $LANG_DATABOX_ADMIN['expired']);
  1850. if ($A['expired'] ==="0000-00-00 00:00:00"){
  1851. $templates->set_var ('expired', "");
  1852. $templates->set_var ('expired_shortdate', "" );
  1853. $templates->set_var ('expired_date', "" );
  1854. $templates->set_var ('expired_daytime', "" );
  1855. $templates->set_var ('expired_dateonly', "" );
  1856. $templates->set_var ('expired_timeonly', "" );
  1857. $templates->set_var ('expired_b', "" );
  1858. $templates->set_var ('expired_B', "" );
  1859. $templates->set_var ('expired_d', "" );
  1860. $templates->set_var ('expired_e', "" );
  1861. }else{
  1862. $wary = COM_getUserDateTimeFormat($A['expired_un']);
  1863. $templates->set_var ('expired', $wary[0]);
  1864. $templates->set_var ('expired_shortdate', strftime( $_CONF['shortdate'], $A['expired_un'] ));
  1865. $templates->set_var ('expired_date', strftime( $_CONF['date'], $A['expired_un'] ));
  1866. $templates->set_var ('expired_daytime', strftime( $_CONF['daytime'], $A['expired_un'] ));
  1867. $templates->set_var ('expired_dateonly', strftime( $_CONF['dateonly'], $A['expired_un'] ));
  1868. $templates->set_var ('expired_timeonly', strftime( $_CONF['timeonly'], $A['expired_un'] ));
  1869. $templates->set_var ('expired_b', strftime( "%b" , $A['expired_un']));
  1870. $templates->set_var ('expired_B', strftime( "%B" , $A['expired_un']));
  1871. $templates->set_var ('expired_d', strftime( "%d" , $A['expired_un']));
  1872. $templates->set_var ('expired_e', strftime( "%e" , $A['expired_un']));
  1873. }
  1874. $templates->set_var ('lang_uuid', $LANG_DATABOX_ADMIN['uuid']);
  1875. $templates->set_var ('uuid', $uuid);
  1876. $templates->set_var ('lang_udatetime', $LANG_DATABOX_ADMIN['udatetime']);
  1877. $wary = COM_getUserDateTimeFormat($A['udatetime_un']);
  1878. $templates->set_var ('udatetime', $wary[0]);
  1879. $templates->set_var ('last_modify_uid', $A['uuid']);
  1880. $templates->set_var ('last_modify_name', $A['last_modify_name']);
  1881. $templates->set_var ('last_modify_fullname', $A['last_modify_fullname']);
  1882. //maps plugin link
  1883. $mkid="";
  1884. $marker="";
  1885. if (in_array("maps", $_PLUGINS)){
  1886. $mkid=DB_getItem($_TABLES['maps_markers'],"mkid","item_10='$code'");
  1887. if (! empty($mkid)) {
  1888. $sql = "SELECT * FROM {$_TABLES['maps_markers']} WHERE mkid = {$mkid} LIMIT 1";
  1889. $res = DB_query($sql, 0);
  1890. $AM = DB_fetchArray($res);
  1891. if (!SEC_hasAccess2($AM)) {
  1892. } else {
  1893. $marker = MAPS_getMarkerDetail($AM['mid'], $mkid);
  1894. }
  1895. }
  1896. }
  1897. $templates->set_var ('mkid', $mkid);
  1898. $templates->set_var ('marker', $marker);
  1899. //管理者の時「編集」
  1900. if ($m<>"view"){
  1901. if ( SEC_hasRights('databox.admin')) {
  1902. $icon_url = $_CONF['layout_url'] . '/images/edit.' . $_IMAGE_TYPE;
  1903. $attr = array('title' => $A['title']." ".$LANG_DATABOX_ADMIN['edit']);
  1904. $editiconhtml = COM_createImage($icon_url, $LANG_DATABOX_ADMIN['edit'], $attr);
  1905. $attr = array('class' => 'editlink', 'title' => $A['title']." ".$LANG_DATABOX_ADMIN['edit']);
  1906. $url = $_CONF['site_admin_url'];
  1907. $url .= '/plugins/databox/data.php';
  1908. $url .= '?mode=edit';
  1909. $url .= '&amp;'."id={$id}";
  1910. $icon = '&nbsp;' ;
  1911. $icon .= COM_createLink( $editiconhtml, $url, $attr );
  1912. $templates->set_var ('edit', $icon);
  1913. }else{
  1914. $rt=databox_chk_loaddata($id);
  1915. //編集権限のあるMyData
  1916. if ( $rt==="OK") {
  1917. $icon_url = $_CONF['layout_url'] . '/images/edit.' . $_IMAGE_TYPE;
  1918. $attr = array('title' => $LANG_DATABOX_ADMIN['edit']);
  1919. $editiconhtml = COM_createImage($icon_url, $LANG_DATABOX_ADMIN['edit'], $attr);
  1920. $attr = array('class' => 'editlink', 'title' => $A['title']." ".$LANG_DATABOX_ADMIN['edit']);
  1921. $url = $_CONF['site_url'];
  1922. $url .= '/databox/mydata/data.php';
  1923. $url .= '?mode=edit';
  1924. $url .= '&amp;'."id={$id}";
  1925. $icon = '&nbsp;' ;
  1926. $icon .= COM_createLink( $editiconhtml, $url, $attr );
  1927. $templates->set_var ('edit', $icon);
  1928. }else{
  1929. $templates->set_var ('edit', "");
  1930. }
  1931. }
  1932. }
  1933. // Call to plugins to set template variables in the databox
  1934. PLG_templateSetVars( 'databox', $templates );
  1935. if (function_exists('databox_custom_templateSetVars')) {
  1936. databox_custom_templateSetVars("data", $templates);
  1937. }
  1938. //------------
  1939. $templates->parse ('output', 'list');
  1940. $databox_content = $templates->finish ($templates->get_var ('output'));
  1941. $display=$databox_content;
  1942. if ($A['draft_flag']!==1){
  1943. if (!SEC_hasRights('databox.admin')) {
  1944. $id=$A['id'];
  1945. $hits=DB_getItem($_TABLES['DATABOX_stats'],"hits","id={$id}");
  1946. if (empty($hits)) {
  1947. $hits=0;
  1948. }
  1949. $fields.="id,hits ";
  1950. $values.="$id,$hits + 1";
  1951. DB_save($_TABLES['DATABOX_stats'],$fields,$values);
  1952. }
  1953. }
  1954. }
  1955. }else{
  1956. $cache_time=0;
  1957. if ($nohitmsg==="yes"){
  1958. $tmplfld=DATABOX_templatePath('data',$template,$pi_name);
  1959. $templates = new Template($tmplfld);
  1960. $templates->set_file (array (
  1961. 'list' => 'nohit.thtml',
  1962. ));
  1963. $templates->set_var ('lang_nohit', $LANG_DATABOX['nohit']);
  1964. $templates->set_var('xhtml', XHTML);
  1965. $templates->set_var('site_url', $_CONF['site_url']);
  1966. $templates->set_var('site_admin_url', $_CONF['site_admin_url']);
  1967. $templates->set_var('layout_url', $_CONF['layout_url']);
  1968. $templates->parse ('output', 'list');
  1969. $databox_content = $templates->finish ($templates->get_var ('output'));
  1970. $display=$databox_content;
  1971. }
  1972. }
  1973. $display =PLG_replacetags ($display);
  1974. if (($cache_time > 0 OR $cache_time == -1) AND $m==="page" ){
  1975. CACHE_create_instance($cacheInstance."_display", $display);
  1976. CACHE_create_instance($cacheInstance."_layout", $layout);
  1977. CACHE_create_instance($cacheInstance."_headercode", $headercode);
  1978. CACHE_create_instance($cacheInstance."_title", $title);
  1979. }
  1980. $retval['display']=$display;
  1981. $retval['layout']=$layout;
  1982. $retval['headercode']=$headercode;
  1983. $retval['title']=$title;
  1984. return $retval;
  1985. }
  1986. //
  1987. function databox_chk_loaddata(
  1988. $id
  1989. ){
  1990. $pi_name="databox";
  1991. global $_TABLES;
  1992. global $LANG_DATABOX_ADMIN;
  1993. $rt="";
  1994. $sql = "SELECT ";
  1995. $sql .= " id";
  1996. $sql .= " ,owner_id";
  1997. $sql .= " ,group_id";
  1998. $sql .= " ,perm_owner";
  1999. $sql .= " ,perm_group";
  2000. $sql .= " ,perm_members";
  2001. $sql .= " ,perm_anon";
  2002. $sql .= " FROM ";
  2003. $sql .= " {$_TABLES['DATABOX_base']} AS t";
  2004. $sql .= " WHERE ";
  2005. $sql .= " id=".$id;
  2006. $result = DB_query ($sql);
  2007. $numrows = DB_numRows ($result);
  2008. if ($numrows>0){
  2009. $A = DB_fetchArray($result);
  2010. if (!isset($A['owner_id'])) {
  2011. $A['owner_id'] = 1;
  2012. }
  2013. $access = SEC_hasAccess(
  2014. $A['owner_id']
  2015. , $A['group_id']
  2016. , $A['perm_owner']
  2017. , $A['perm_group']
  2018. , $A['perm_members']
  2019. , $A['perm_anon']);
  2020. if ($access >2) {
  2021. $rt="OK";
  2022. }else{
  2023. $rt=$LANG_DATABOX_ADMIN['err_permission_denied'];
  2024. }
  2025. }else{
  2026. $rt=$LANG_DATABOX_ADMIN['err_invalid'];
  2027. }
  2028. return $rt;
  2029. }
  2030. //$rt=databox_createdatabycode("aaa");
  2031. function databox_createdatabycode(
  2032. $code
  2033. ,$title=""
  2034. ){
  2035. $pi_name="databox";
  2036. global $_TABLES;
  2037. global $LANG_DATABOX_ADMIN;
  2038. global $_DATABOX_CONF;
  2039. global $_USER;
  2040. $rt=array();
  2041. $rt['st']="";
  2042. $rt['id']=0;
  2043. $id=DB_getItem($_TABLES['DATABOX_base'],"id","code='{$code}'");
  2044. if ($id<>""){
  2045. $rt['st']="ok";
  2046. $rt['id']=$id;
  2047. return $rt;
  2048. };
  2049. if ($_DATABOX_CONF['allow_data_insert']
  2050. OR SEC_hasRights('databox.submit')){
  2051. }else{
  2052. $rt['st']=$LANG_DATABOX_ADMIN['err_permission_denied'];
  2053. return $rt;
  2054. }
  2055. $uuid=$_USER['uid'];
  2056. if ($uuid===""){
  2057. $uuid=0;
  2058. }
  2059. $uid=$_USER['uid'];
  2060. $w=DB_getItem($_TABLES['DATABOX_base'],"max(id)","1=1");
  2061. if ($w=="") {
  2062. $w=0;
  2063. }
  2064. $id=$w+1;
  2065. if ($title==""){
  2066. $title=$code;
  2067. }
  2068. $group_id =$_DATABOX_CONF['grp_id_default'];//@@@@@20110613
  2069. $array = array();
  2070. SEC_setDefaultPermissions($array, $_DATABOX_CONF['default_perm']);
  2071. $perm_owner = $array['perm_owner'];
  2072. $perm_group = $array['perm_group'];
  2073. $perm_anon = $array['perm_anon'];
  2074. $perm_members = $array['perm_members'];
  2075. $sql=LB;
  2076. $sql.="INSERT INTO {$_TABLES['DATABOX_base']} (".LB;
  2077. $sql.=" `id`,`owner_id`,`modified`,`created`,`released`".LB;
  2078. $sql.=" ,`uuid`".LB;
  2079. $sql.=" ,`group_id`,`perm_owner`,`perm_group`,`perm_anon`,`perm_members`".LB;
  2080. $sql.=" ,`code`,`title`".LB;
  2081. $sql.=")".LB;
  2082. $sql .= " VALUES (".LB;
  2083. $sql .= "'{$id}','{$uid}',NOW( ),NOW( ),NOW( )".LB;
  2084. $sql.=" ,".$uuid .LB;
  2085. $sql.=" ,".$group_id.LB ;
  2086. $sql.=" ,".$perm_owner.LB ;
  2087. $sql.=" ,".$perm_group.LB ;
  2088. $sql.=" ,".$perm_anon.LB ;
  2089. $sql.=" ,".$perm_members.LB ;
  2090. $sql.=" ,'{$code}','{$title}'".LB ;
  2091. $sql .= ")";
  2092. DB_query ($sql);
  2093. //カテゴリ
  2094. //追加項目
  2095. $sql = "SELECT ";
  2096. $sql .= " field_id";
  2097. $sql .= " ,type";
  2098. $sql .= " ,selection";
  2099. $sql .= " FROM ";
  2100. $sql .= $_TABLES['DATABOX_def_field'];
  2101. $sql .= " order by field_id ";
  2102. $result = DB_query ($sql);
  2103. $numrows = DB_numRows ($result);
  2104. if ($numrows > 0) {
  2105. for ($i = 0; $i < $numrows; $i++) {
  2106. $A = DB_fetchArray ($result);
  2107. $field_id=$A['field_id'];
  2108. $type=$A['type'];
  2109. $selection=$A['selection'];
  2110. $sql2="INSERT INTO ".$_TABLES['DATABOX_addition'].LB;
  2111. $sql2.=" (`id`,`field_id`,`value`)".LB;
  2112. $sql2.=" VALUES (";
  2113. $sql2.=" ".$id;
  2114. $sql2.=" ,".$field_id;
  2115. //7 = 'オプションリスト';
  2116. //8 = 'ラジオボタンリスト';
  2117. if (($type==7 OR $type==8) AND ($selection<>"")){
  2118. $sql2.=",'0' ";
  2119. }else{
  2120. $sql2.=",'' ";
  2121. }
  2122. $sql2.=" )";
  2123. DB_query($sql2);
  2124. }
  2125. }
  2126. $rt['st']="created";
  2127. $rt['id']=$id;
  2128. return $rt;
  2129. }
  2130. // +---------------------------------------------------------------------------+
  2131. // | 機能 ブロック用 新着data一覧出力 |
  2132. // | 書式 databox_newlist |
  2133. // +---------------------------------------------------------------------------+
  2134. // | 引数 $m :省略時'ALL' id=id指定で選択 code指定で選択 |
  2135. // | 引数 $categories :選択トピック 省略時設定値or'ALL' |
  2136. // | 引数 $rss_file :RSS_file 省略時"" |
  2137. // | 引数 $title_trim_length :タイトル長の制限 省略時設定値or20 |
  2138. // | 引数 $intervalday :新着記事の期間 単位日 省略時設定値or90 |
  2139. // | 0の時 全件 |
  2140. // | 引数 $limitcnt :表示件数 省略時設定値or10 |
  2141. // | 引数 $newmarkday :新着マーク 省略時設定値or3 |
  2142. // | 引数 $thtml :テンプレートファイルのフォルダ layout/テーマ/XXXX/ |
  2143. // | 省略時は、プラグイン内のテンプレート |
  2144. // +---------------------------------------------------------------------------+
  2145. // | 戻値 nomal:新着data一覧 |
  2146. // +---------------------------------------------------------------------------+
  2147. // 2009/04/02 引数 $thtml追加
  2148. // 2009/04/02 テンプレート変数 class 追加
  2149. // 2009/04/02 $intervalday=0の時全件
  2150. // update20110128
  2151. function databox_newlist(
  2152. $m="ALL"
  2153. ,$categories=""
  2154. ,$rss_file=""
  2155. ,$title_trim_length=""
  2156. ,$intervalday=""
  2157. ,$limitcnt=""
  2158. ,$newmarkday=""
  2159. ,$thtml=null
  2160. ,$permission=null)
  2161. {
  2162. $pi_name="databox";
  2163. global $_USER;
  2164. global $_TABLES;
  2165. global $_CONF;
  2166. global $_DATABOX_CONF;
  2167. global $LANG_DATABOX;
  2168. //
  2169. if ($title_trim_length==""){
  2170. $title_trim_length=$_DATABOX_CONF['title_trim_length'];
  2171. if ($title_trim_length==""){
  2172. $title_trim_length=20;
  2173. }
  2174. }
  2175. //
  2176. if ($intervalday==""){
  2177. $intervalday=$_DATABOX_CONF['intervalday'];
  2178. if ($intervalday==""){
  2179. $intervalday=90;
  2180. }
  2181. }
  2182. //
  2183. if ($limitcnt==""){
  2184. $limitcnt=$_DATABOX_CONF['limitcnt'];
  2185. if ($limitcnt==""){
  2186. $limitcnt=10;
  2187. }
  2188. }
  2189. if ($newmarkday==""){
  2190. $newmarkday=$_DATABOX_CONF['newmarkday'];
  2191. if ($newmarkday==""){
  2192. $newmarkday=3;
  2193. }
  2194. }
  2195. if ($m===""){
  2196. $categories="ALL";
  2197. }else{
  2198. if ($categories==""){
  2199. $categories=$_DATABOX_CONF['categories'];
  2200. if ($categories==""){
  2201. $categories="ALL";
  2202. }
  2203. }elseif (strpos($categories,",")=="") {
  2204. $categories="'$categories'";
  2205. }else{
  2206. $ary=explode(",",$categories);
  2207. $b="";
  2208. for ($i = 1; $i <= count($ary); $i++) {
  2209. if ($m==="code"){
  2210. $b.="'".current($ary)."',";
  2211. }else{
  2212. $b.=current($ary).",";
  2213. }
  2214. next($ary);
  2215. }
  2216. $categories=rtrim($b,",");
  2217. }
  2218. }
  2219. //
  2220. $new_img=$_DATABOX_CONF['new_img'];
  2221. if ($new_img==""){
  2222. $new_img="New!";
  2223. }
  2224. $rss_img=$_DATABOX_CONF['rss_img'];
  2225. if ($rss_img=="") {
  2226. $rss_img="[RSS]";
  2227. }
  2228. if (is_null($thtml)){
  2229. $thtml="default";
  2230. }
  2231. //-------------------------------------------
  2232. $retval="";
  2233. //テンプレートフォルダの設定
  2234. $tmplfld=DATABOX_templatePath('newlist',$thtml,$pi_name);
  2235. $list = new Template($tmplfld);
  2236. $list->set_file (array (
  2237. 'list' => 'list.thtml',
  2238. 'col' => 'list_col.thtml'
  2239. ));
  2240. $datefield=$_DATABOX_CONF['datefield'];//使用する日付(編集日付、作成日付)
  2241. //-----
  2242. $tbl1=$_TABLES['DATABOX_base'] ;
  2243. $tbl2=$_TABLES['DATABOX_category'] ;
  2244. $tbl3=$_TABLES['DATABOX_def_category'] ;
  2245. $sql="SELECT ".LB;
  2246. $sql.=" t1.title".LB;
  2247. $sql.=" , UNIX_TIMESTAMP(t1.".$datefield .") AS day".LB;
  2248. $sql.=" , t1.id".LB;
  2249. $sql.=" , t1.code".LB;
  2250. $sql.=" , t1.description".LB;
  2251. $sql.=" ,t1.owner_id".LB;
  2252. $sql.=" ,t1.group_id".LB;
  2253. $sql.=" ,t1.perm_owner".LB;
  2254. $sql.=" ,t1.perm_group".LB;
  2255. $sql.=" ,t1.perm_members".LB;
  2256. $sql.=" ,t1.perm_anon".LB;
  2257. $sql .= " FROM ".LB;
  2258. $sql .= " {$tbl1} AS t1 ".LB;
  2259. if ($categories!=="ALL" ){
  2260. $sql .= " ,{$tbl2} AS t2 ".LB;
  2261. $sql .= " ,{$tbl3} AS t3 ".LB;
  2262. }
  2263. $sql.=" WHERE";
  2264. if ($categories==="ALL" ){
  2265. $sql.=" 1=1";
  2266. }else{
  2267. $sql.= " t1.id = t2.id ".LB;
  2268. $sql.= " AND t2.category_id = t3.category_id ".LB;
  2269. }
  2270. //管理者の時,下書データも含む
  2271. //if ( SEC_hasRights('databox.admin')) {
  2272. //}else{
  2273. $sql .= " AND t1.draft_flag=0".LB;
  2274. //}
  2275. //アクセス権のないデータ はのぞく
  2276. if ($_DATABOX_CONF['disable_permission_ignore']=="0" AND strtoupper($permission)=="IGNORE"){
  2277. }else{
  2278. $sql .= COM_getPermSql('AND').LB;
  2279. }
  2280. //公開日以前のデータはのぞく
  2281. $sql .= " AND (released <= NOW())".LB;
  2282. //公開終了日を過ぎたデータはのぞく
  2283. $sql .= " AND (expired=0 OR expired > NOW())".LB;
  2284. if ($intervalday<>0){
  2285. $sql.=" AND (".$datefield ." >= (date_sub(NOW(), INTERVAL $intervalday day)))".LB;
  2286. }
  2287. if ($categories!=="ALL" ){
  2288. if ($m==="id") {
  2289. $sql.=" AND t2.category_id IN ($categories)";
  2290. }else{
  2291. $sql.=" AND t3.code IN ($categories)";
  2292. }
  2293. }
  2294. $sql .= COM_getLangSQL ('code', 'AND', 't1').LB;
  2295. $sql.=" ORDER BY ".$datefield ." DESC";
  2296. $sql.=" LIMIT $limitcnt";
  2297. $result = DB_query ($sql);
  2298. $i=0;
  2299. while( $A = DB_fetchArray( $result ) ) {
  2300. $A = array_map('stripslashes', $A);
  2301. $title= COM_truncate( $A['title'], $title_trim_length,'...' );
  2302. $description = $A['description'];
  2303. $id = $A['id'];
  2304. $code = $A['code'];
  2305. $rt= databox_detail_link($id,$code,$title);
  2306. $list->set_var ('site_url', $_CONF['site_url']);
  2307. $list->set_var ('day', strftime($LANG_DATABOX['day'],$A['day']));
  2308. $chkday=strtotime("- $newmarkday days",time());
  2309. if (date("Ymd",$A['day']) >= date("Ymd",$chkday)){
  2310. $list->set_var ('new_img', $new_img);
  2311. }else{
  2312. $list->set_var ('new_img', '');
  2313. }
  2314. $list->set_var ('link', $rt['link']);//@@@@@
  2315. $list->set_var ('url', $rt['url']);
  2316. $list->set_var ('title', $title);
  2317. $list->set_var ('description', $description);
  2318. $permission=SEC_hasAccess2($A);
  2319. $list->set_var ('permission',$permission);
  2320. if ($permission>=2){
  2321. $list->set_var ('class_a', 'class="gl-tooltip"');
  2322. $list->set_var ('class_c', 'class="classic"');
  2323. }else{
  2324. $list->set_var ('class_a', 'class="databox_nolink"');
  2325. $list->set_var ('class_c', 'class="databox_displaynon"');
  2326. }
  2327. $n=($i%2)+1;
  2328. $class='class="row'.$n.'"';
  2329. $list->set_var ('class', 'class="row'.$n.'"');
  2330. //カテゴリ
  2331. DATABOX_getcategoriesDisp($A['id'],$list,$chk_user,0,$pi_name);
  2332. $list->parse ('list_col', 'col', true);
  2333. $i++;
  2334. }
  2335. $list->set_var ('site_url', $_CONF['site_url']);
  2336. $list->set_var ('day', strftime($LANG_DATABOX['day'],$A['day']));
  2337. //
  2338. if ($rss_file<>""){
  2339. $list->set_var ('rss_url', $_CONF['site_url'] . '/backend/'.$rss_file);
  2340. $list->set_var ('rss_title', $rss_img);
  2341. }
  2342. //
  2343. $more_title=$LANG_DATABOX['more'];
  2344. if ($categories==="ALL" OR strpos($categories,",")<>"") {
  2345. $more_url=COM_buildUrl($_CONF['site_url'] . '/databox/index.php');//
  2346. }else{
  2347. //コード使用の時
  2348. if ($m="code"){
  2349. $more_url.="m=code";
  2350. $more_url.="&amp;code=".ltrim(rtrim($categories,"'"),"'");
  2351. }else{
  2352. $more_url.="m=id";
  2353. $more_url.="&amp;id=".ltrim(rtrim($categories,"'"),"'");
  2354. }
  2355. $more_url=$_CONF['site_url'] . "/databox/index.php".$more_url;//@@@@@
  2356. }
  2357. $more_url = COM_buildUrl( $more_url );
  2358. $more_link= COM_createLink($title, $more_url);
  2359. $list->set_var ('more_url', $more_url);
  2360. $list->set_var ('more_title', $more_title);
  2361. $list->parse ('output', 'list');
  2362. $retval .= $list->finish ($list->get_var ('output'));
  2363. return $retval;
  2364. }
  2365. // | 書式 databox_order ($url, $templates, $order)
  2366. // +---------------------------------------------------------------------------+
  2367. // | 機能 ORDER指定LINK出力
  2368. // | 書式 databox_order()
  2369. // +---------------------------------------------------------------------------+
  2370. // | 引数 $url:
  2371. // | 引数 $templates
  2372. // | 引数 $cur_order:
  2373. // +---------------------------------------------------------------------------+
  2374. function databox_order(
  2375. $url=""
  2376. ,$templates
  2377. ,$cur_order="id"
  2378. )
  2379. {
  2380. global $LANG_DATABOX_ORDER;
  2381. global $_TABLES;
  2382. $templates->set_var('cur_order',$cur_order);
  2383. $order_ary=array();
  2384. $order_ary[]='random';
  2385. $order_ary[]='date';
  2386. $order_ary[]='orderno';
  2387. $order_ary[]='code';
  2388. $order_ary[]='title';
  2389. $order_ary[]='description';
  2390. $order_ary[]='id';
  2391. $order_ary[]='released';
  2392. $sql="SELECT ";
  2393. $sql.= " field_id ";
  2394. $sql.= ",name ";
  2395. $sql.= ",templatesetvar";
  2396. $sql.=" FROM";
  2397. $sql.=" {$_TABLES['DATABOX_def_field']} ";
  2398. $sql.=" where allow_display=0";
  2399. $result = DB_query ($sql);
  2400. $numrows = DB_numRows ($result);
  2401. $addfield_ary=array();
  2402. for ($i = 1; $i <= $numrows; $i++) {
  2403. $A = DB_fetchArray ($result);
  2404. $field_id=COM_stripslashes($A['field_id']);
  2405. $addfield_ary[$field_id]['name']=COM_stripslashes($A['name']);
  2406. $addfield_ary[$field_id]['templatesetvar']=COM_stripslashes($A['templatesetvar']);
  2407. $order_ary[]="addfield".$field_id;
  2408. }
  2409. for ($i = 1; $i <= count($order_ary); $i++) {
  2410. $c=current($order_ary);
  2411. if (substr($c,0,8)==="addfield"){
  2412. $field_id=substr($c,8);
  2413. $order=$addfield_ary[$field_id]['templatesetvar'];
  2414. $order_name=$addfield_ary[$field_id]['name'];
  2415. $order_name.=$LANG_DATABOX_ORDER['order'];
  2416. }else{
  2417. $order=$c;
  2418. $order_name=$LANG_DATABOX_ORDER[$c];
  2419. }
  2420. $order_url=$url;
  2421. $order_url.=$order;
  2422. //$order_url = COM_buildUrl( $order_url );
  2423. $rt= COM_createLink($order_name, $order_url);
  2424. $templates->set_var('order_'.$order,$rt);
  2425. next($order_ary);
  2426. }
  2427. return ;
  2428. }
  2429. function databox_datalink(
  2430. $id
  2431. ,$code
  2432. ,$linktext
  2433. )
  2434. {
  2435. global $_CONF;
  2436. global $_TABLES;
  2437. $url="";
  2438. if ($id<>"") {
  2439. $url=$_CONF['site_url']."/databox/data.php?";
  2440. $url.="m=id&amp;id=".$id;
  2441. if ($linktext==""){
  2442. $linktext = stripslashes(DB_getItem($_TABLES['DATABOX_base'],'title', "id = '$id'"));
  2443. }
  2444. }else if ($code<>""){
  2445. $code=DATABOX_swichlang($code);
  2446. $url=$_CONF['site_url']."/databox/data.php?";
  2447. $url.="code=".$code;
  2448. $url.="&amp;m=code";
  2449. if ($linktext==""){
  2450. $linktext = stripslashes(DB_getItem($_TABLES['DATABOX_base'],'title', "code = '$code'"));
  2451. }
  2452. }
  2453. if ($url<>""){
  2454. $url = COM_buildUrl($url);
  2455. $url = COM_createLink($linktext, $url);
  2456. }
  2457. return $url;
  2458. }
  2459. function databox_mydataentrylink(
  2460. $fieldset_id = ""
  2461. ,$templatedir =""
  2462. ,$linktext =""
  2463. )
  2464. {
  2465. global $_CONF;
  2466. global $_TABLES;
  2467. global $LANG_DATABOX_ADMIN;
  2468. global $_DATABOX_CONF;
  2469. $url="";
  2470. //ユーザに更新と新規登録を許可するかまたは、新規登録権を持ったユーザの場合
  2471. if ($_DATABOX_CONF['allow_data_update'] AND $_DATABOX_CONF['allow_data_insert'] OR
  2472. SEC_hasRights('databox.submit')){
  2473. if ($fieldset_id=="" OR $fieldset_id==0) {
  2474. $url=$_CONF['site_url']."/databox/mydata/data.php?";
  2475. $url.="mode=new";
  2476. if ($templatedir){
  2477. $url.="&amp;template=".$templatedir;
  2478. }
  2479. if ($linktext==""){
  2480. $linktext = $LANG_DATABOX_ADMIN["new"];
  2481. }
  2482. }else{
  2483. if (DB_getItem($_TABLES['DATABOX_def_fieldset'],'fieldset_id', "fieldset_id = '$fieldset_id'")==$fieldset_id){
  2484. $url=$_CONF['site_url']."/databox/mydata/data.php?";
  2485. $url.="type_id=".$fieldset_id;
  2486. if ($templatedir){
  2487. $url.="&amp;template=".$templatedir;
  2488. }
  2489. if ($linktext==""){
  2490. $linktext = stripslashes(DB_getItem($_TABLES['DATABOX_def_fieldset'],'name', "fieldset_id = '$fieldset_id'"));
  2491. }
  2492. }
  2493. }
  2494. $url = COM_createLink($linktext, $url);
  2495. }
  2496. return $url;
  2497. }
  2498. function databox_mydata(
  2499. $templatedir =""
  2500. ,$linktext =""
  2501. )
  2502. {
  2503. global $_CONF;
  2504. global $_TABLES;
  2505. global $_DATABOX_CONF;
  2506. global $LANG_DATABOX;
  2507. $url="";
  2508. //ユーザに更新を許可するかまたは、更新権を持ったユーザの場合
  2509. if ($_DATABOX_CONF['allow_data_update'] OR SEC_hasRights('databox.edit')){
  2510. $url=$_CONF['site_url']."/databox/mydata/data.php?";
  2511. if ($templatedir){
  2512. $url.="&amp;template=".$templatedir;
  2513. }
  2514. if ($linktext==""){
  2515. $linktext = $LANG_DATABOX['mydata'];
  2516. }
  2517. $url = COM_createLink($linktext, $url);
  2518. }
  2519. return $url;
  2520. }
  2521. function databox_Comment(
  2522. $id
  2523. ,$code
  2524. )
  2525. // +---------------------------------------------------------------------------+
  2526. // | 機能 コメント表示
  2527. // | 書式 databox_Comment($id,$code)
  2528. // +---------------------------------------------------------------------------+
  2529. // | 戻値 nomal:
  2530. // +---------------------------------------------------------------------------+
  2531. {
  2532. global $_CONF;
  2533. global $_TABLES;
  2534. //
  2535. $order = '';
  2536. if (isset ($_REQUEST['order'])) {
  2537. $order = COM_applyFilter ($_REQUEST['order']);
  2538. }
  2539. $mode = '';
  2540. if (isset ($_REQUEST['mode'])) {
  2541. $mode = COM_applyFilter ($_POST['mode']);
  2542. }
  2543. $page = 1;
  2544. if (isset ($_REQUEST['cpage'])) {
  2545. $page = COM_applyFilter ($_REQUEST['cpage']);
  2546. }
  2547. //
  2548. $tbl=$_TABLES['DATABOX_base'] ;
  2549. //-----
  2550. $sql = "SELECT ";
  2551. $sql .= "commentcode ";
  2552. $sql .= ",owner_id";
  2553. $sql .= ",group_id";
  2554. $sql .= ",perm_owner";
  2555. $sql .= ",perm_group";
  2556. $sql .= ",perm_members";
  2557. $sql .= ",perm_anon";
  2558. $sql .= ",title";
  2559. $sql .= ",id";
  2560. $sql .= " FROM ";
  2561. $sql .= " {$tbl} AS t ";//base
  2562. $sql .= " WHERE ";
  2563. if ($id<>0) {
  2564. $sql .= " id=".$id;
  2565. }else{
  2566. $sql .= " code='".$code."'";
  2567. }
  2568. $sql .= " AND t.draft_flag=0".LB;
  2569. //アクセス権のないデータ はのぞく
  2570. $sql .= COM_getPermSql('AND');
  2571. //公開日以前のデータはのぞく
  2572. $sql .= " AND (released <= NOW())";
  2573. //公開終了日を過ぎたデータはのぞく
  2574. $sql .= " AND (expired=0 OR expired > NOW())";
  2575. //
  2576. $result = DB_query ($sql);
  2577. $numrows = DB_numRows ($result);
  2578. if ($numrows > 0) {
  2579. $A = DB_fetchArray ($result);
  2580. $A = array_map('stripslashes', $A);
  2581. if ($A['commentcode']>=0){
  2582. $delete_option = (SEC_hasRights('databox.edit') &&
  2583. SEC_hasAccess($A['owner_id'], $A['group_id'],
  2584. $A['perm_owner'], $A['perm_group'], $A['perm_members'],
  2585. $A['perm_anon']) == 3 ? true : false);
  2586. require_once $_CONF['path_system'] . 'lib-comment.php';
  2587. $retval .= CMT_userComments(
  2588. $A['id']
  2589. , $A['title']
  2590. , 'databox'
  2591. , $order
  2592. , $mode
  2593. , 0
  2594. , $page
  2595. , false
  2596. , $delete_option
  2597. , $A['commentcode']
  2598. );
  2599. }
  2600. }
  2601. return $retval;
  2602. }
  2603. function databox_detail_link(
  2604. $id
  2605. ,$code
  2606. ,$title
  2607. )
  2608. // +---------------------------------------------------------------------------+
  2609. // | 機能 個別データlink
  2610. // | 書式 databox_detail_link($id,$code,$title);
  2611. // +---------------------------------------------------------------------------+
  2612. // | 引数 $id :
  2613. // | 引数 $code :
  2614. // | 引数 $title :
  2615. // +---------------------------------------------------------------------------+
  2616. // | 戻値 nomal:$return['link'] $return['url']
  2617. // +---------------------------------------------------------------------------+
  2618. {
  2619. global $_CONF;
  2620. global $_DATABOX_CONF;
  2621. $return['link']="" ;
  2622. $return['url']="" ;
  2623. if ($id==0 AND $code==""){
  2624. return $return;
  2625. }
  2626. if ($_DATABOX_CONF['detail']==""){
  2627. $prg="data.php";
  2628. }else{
  2629. $prg=$_DATABOX_CONF['detail'];
  2630. }
  2631. $url=$_CONF['site_url'] . "/databox/".$_DATABOX_CONF['detail'];
  2632. $url.="?";
  2633. if ($prg=="data.php"){
  2634. if ($_DATABOX_CONF['datacode'] OR $id==0){
  2635. $url.="code=".$code;
  2636. $url.="&amp;m=code";
  2637. }else{
  2638. $url.="id=".$id;
  2639. $url.="&amp;m=id";
  2640. }
  2641. }else{
  2642. if ($code<>""){
  2643. $url.="code=".$code;
  2644. }
  2645. }
  2646. $return['url']= COM_buildUrl( $url );
  2647. $return['link']= COM_createLink($title, $return['url']);
  2648. return $return;
  2649. }
  2650. function databox_search(
  2651. $autotag
  2652. ,$argary
  2653. )
  2654. // +---------------------------------------------------------------------------+
  2655. // | 機能 検索リスト
  2656. // | 書式 databox_search($autotag,$argary);
  2657. // +---------------------------------------------------------------------------+
  2658. // | 引数 $autotag :
  2659. // | 引数 $argary :
  2660. // +---------------------------------------------------------------------------+
  2661. // | 戻値 nomal:検索リスト
  2662. // +---------------------------------------------------------------------------+
  2663. {
  2664. $pi_name="databox";
  2665. global $_CONF;
  2666. global $_TABLES;
  2667. global $_DATABOX_CONF;
  2668. global $LANG_DATABOX;
  2669. global $LANG_DATABOX_ADMIN;
  2670. global $_IMAGE_TYPE;
  2671. global $LANG_confignames;
  2672. global $_PLUGINS;
  2673. global $_MAPS_CONF;
  2674. //ログイン要否チェック
  2675. if (COM_isAnonUser()){
  2676. if ($_CONF['loginrequired']
  2677. OR ($_DATABOX_CONF['loginrequired'] >1) ){
  2678. return $LANG_DATABOX['loginrequired'];
  2679. }
  2680. }
  2681. if (! defined('THIS_SCRIPT')) {
  2682. define ('THIS_SCRIPT', 'databox/search.php');
  2683. }
  2684. //-----テーブル
  2685. $tbl1=$_TABLES['DATABOX_category'] ;
  2686. $tbl2=$_TABLES['DATABOX_base'] ;
  2687. $tbl3=$_TABLES['DATABOX_addition'] ;
  2688. //
  2689. $tbl5=$_TABLES['DATABOX_def_category'] ;
  2690. $tbl6=$_TABLES['DATABOX_stats'];
  2691. $tbl7=$_TABLES['DATABOX_def_fieldset'];
  2692. //
  2693. $datefield=$_DATABOX_CONF['datefield'];//使用する日付(編集日付、作成日付、公開日)
  2694. $new_img=$_DATABOX_CONF['new_img'];
  2695. if ($new_img==""){
  2696. $new_img="New!";
  2697. }
  2698. $newmarkday=$_DATABOX_CONF['newmarkday'];
  2699. if ($newmarkday==""){
  2700. $newmarkday=3;
  2701. }
  2702. $chkday=strtotime("- $newmarkday days",time());
  2703. //-----Argument checking 引数チェック
  2704. $arg_sv="";//---Argument save 引数退避 order page を除く
  2705. foreach((array)$argary as $key => $value) {
  2706. if (is_array($value)){
  2707. $ary=$value;
  2708. foreach($ary as $key2 => $value2){
  2709. if ($arg_sv<>""){
  2710. $arg_sv.="&amp;";
  2711. }
  2712. $arg_sv.=$key."[]=".$value2;
  2713. }
  2714. }else{
  2715. if ($key=="order" OR $key=="page"){
  2716. }else{
  2717. if ($arg_sv<>""){
  2718. $arg_sv.="&amp;";
  2719. }
  2720. $arg_sv.=$key."=".$value;
  2721. }
  2722. }
  2723. }
  2724. if ($argary['fieldset_id']==""){
  2725. $argary['fieldset_id']=0;
  2726. }
  2727. $fieldset_name=COM_applyFilter(DB_getItem( $tbl7 ,"name","fieldset_id={$argary['fieldset_id']}"));
  2728. if ($argary['perpage']===0 OR is_null($argary['perpage'])){
  2729. $argary['perpage']=$_DATABOX_CONF['perpage'];
  2730. }
  2731. if ($argary['page']===0 OR is_null($argary['page'])){
  2732. $argary['page']=1;
  2733. }
  2734. if (is_null($argary['nohitmsg'])){
  2735. $argary['nohitmsg']="yes";
  2736. }
  2737. if (is_null($argary['expired'])){
  2738. $argary['expired']="no";
  2739. }
  2740. if (is_null($argary['order'])){
  2741. $argary['order']="date";
  2742. }
  2743. //============
  2744. $cary=array();
  2745. $acnt=0;
  2746. $afield=array();
  2747. $afile=array();
  2748. $awhere=array();
  2749. foreach((array)$argary as $key => $value) {
  2750. if (is_array($value)){
  2751. $k = explode ('_', $key);
  2752. $ids="";
  2753. $ary=$value;
  2754. if ($k[0]=="gor"){
  2755. foreach($ary as $key2 => $value2){
  2756. $w= COM_applyFilter($value2);
  2757. if ($w<>""){
  2758. if ($ids<>""){
  2759. $ids.=",";
  2760. }
  2761. $ids.= COM_applyFilter($value2);
  2762. }
  2763. }
  2764. if ($ids<>""){
  2765. $cary[]= "(t2.id IN (SELECT id FROM {$tbl1}"
  2766. ." WHERE t2.id=id AND category_id IN ({$ids})) )";
  2767. }
  2768. }else if ($k[0]=="gand"){
  2769. foreach($ary as $key2 => $value2){
  2770. $w= COM_applyFilter($value2);
  2771. if ($w<>""){
  2772. if ($ids<>""){
  2773. $ids.=" AND ";
  2774. }
  2775. $ids.= $w;
  2776. $ids.= " IN (SELECT category_id";
  2777. $ids.=" FROM {$tbl1} ";
  2778. $ids.=" WHERE t2.id = id )";
  2779. }
  2780. }
  2781. if ($ids<>""){
  2782. $cary[]= " (" .$ids." ) ";
  2783. }
  2784. }else if ($k[0]=="ams"){
  2785. foreach($ary as $key2 => $value2){
  2786. $w= COM_applyFilter($value2);
  2787. if ($w<>""){
  2788. if ($ids<>""){
  2789. $ids.=",";
  2790. }
  2791. $ids.= COM_applyFilter($value2);
  2792. }
  2793. }
  2794. if ($ids<>""){
  2795. $dummy= databox_searchfield($k[0],COM_applyFilter($k[1]),$ids,$acnt,$afield,$afile,$awhere);
  2796. }
  2797. }
  2798. }else if ( substr($key,0,3)=="aeq" OR substr($key,0,3)=="afr"
  2799. OR substr($key,0,3)=="ato" OR substr($key,0,1)=="a") {
  2800. $k = explode ('_', $key);
  2801. if ($value<>""){
  2802. $dummy= databox_searchfield($k[0],COM_applyFilter($k[1]),$value,$acnt,$afield,$afile,$awhere);
  2803. }
  2804. }
  2805. }
  2806. $dummy=databox_orderby($datefield,$argary['order'],$orderby,$addfieldorder,$field_id);
  2807. //-----
  2808. $sql = "SELECT ";
  2809. $sql .= " t2.id ".LB;
  2810. $sql .= " ,t2.title ".LB;
  2811. $sql .= " ,t2.code ".LB;
  2812. $sql .= " ,t2.description ".LB;
  2813. $sql .= " ,t2.released ".LB;
  2814. $sql .= " ,t2.expired ".LB;
  2815. $sql .= " ,t2.".$datefield." AS datefield ".LB;
  2816. $sql .= " ,t2.fieldset_id ".LB;
  2817. $sql .= " ,UNIX_TIMESTAMP(t2.".$datefield.") AS datefield_un ".LB;
  2818. $sql .= " ,UNIX_TIMESTAMP(t2.released ) AS released_un ".LB;
  2819. $sql .= " ,UNIX_TIMESTAMP(t2.expired ) AS expired_un ".LB;
  2820. $sql .= " ,t2.group_id".LB;
  2821. $sql .= " ,t2.owner_id".LB;
  2822. if ($acnt>0){
  2823. for ($i = 1; $i <= $acnt; $i++) {
  2824. $sql .= $afield[$i].LB;
  2825. }
  2826. }
  2827. if ($addfieldorder){
  2828. $sql .= " ,t3.value ".LB;
  2829. }
  2830. //--FROM
  2831. $sql .= " FROM ".LB;
  2832. $sql .= " {$tbl2} AS t2 ".LB;
  2833. if ($addfieldorder){
  2834. $sql .= " ,{$tbl3} AS t3 ".LB;
  2835. }
  2836. if ($acnt>0){
  2837. for ($i = 1; $i <= $acnt; $i++) {
  2838. $sql .= $afile[$i].LB;
  2839. }
  2840. }
  2841. //--WHERE
  2842. $sql .= " WHERE ".LB;
  2843. //タイプ
  2844. $sql .= " t2.fieldset_id=".$argary['fieldset_id'].LB;
  2845. //additionfield 追加項目でsort する時
  2846. if ($addfieldorder){
  2847. $sql .= " AND t3.field_id=".$field_id.LB;
  2848. $sql .= " AND t3.id=t2.id".LB;
  2849. }
  2850. //条件
  2851. if ($argary['teq']<>""){
  2852. $sql .= " AND (title="."'".$argary['teq']."')".LB;
  2853. }
  2854. if ($argary['t']<>""){
  2855. $sql .= " AND (title LIKE '%".$argary['t']."%')".LB;
  2856. }
  2857. foreach((array)$cary as $value) {
  2858. $sql .= " AND ".$value.LB;
  2859. }
  2860. if ($acnt>0){
  2861. for ($i = 1; $i <= $acnt; $i++) {
  2862. $sql .= " AND ".$awhere[$i].LB;
  2863. }
  2864. }
  2865. //下書データを除く
  2866. $sql .= " AND t2.draft_flag=0".LB;
  2867. //アクセス権のないデータ はのぞく
  2868. $sql .= COM_getPermSql('AND',0,2,"t2");
  2869. //公開日以前のデータはのぞく
  2870. $sql .= " AND (released <= NOW())".LB;
  2871. //公開終了日を過ぎたデータはのぞく
  2872. if (strtoupper($argary['expired'])=="NO"){
  2873. $sql .= " AND (expired=0 OR expired > NOW())";
  2874. }
  2875. //--ORDER
  2876. $sql .= " ORDER BY ".LB;
  2877. $sql .= $orderby.LB;
  2878. //echo "sql=".$sql."<br>";
  2879. $result = DB_query ($sql);
  2880. $cnt = DB_numRows ($result);
  2881. $pages = 0;
  2882. if ($argary['perpage'] > 0) {
  2883. $pages = ceil($cnt / $argary['perpage']);
  2884. }
  2885. $offset = ($argary['page'] - 1) * $argary['perpage'];
  2886. $sql .= " LIMIT $offset, ".$argary['perpage'];
  2887. //自動タグでない時 ヘッダ、左ブロック
  2888. if ($autotag==="notautotag"){
  2889. if ($argary['page'] > 1) {
  2890. $page_title = sprintf ('%s (%d)', $LANG_DATABOX_ADMIN['piname'], $argary['page']);
  2891. } else {
  2892. $page_title = sprintf ('%s ', $LANG_DATABOX_ADMIN['piname']);
  2893. }
  2894. // Meta Tags
  2895. $title=$_CONF['site_name'] ."-". $fieldset_name;//og_title
  2896. $description=$_CONF['meta_description'];//og_description
  2897. $keywords=$_CONF['meta_keywords'];//og_description
  2898. //meta
  2899. $headercode=DATABOX_getheadercode(
  2900. "search"
  2901. ,$argary['templatedir']
  2902. ,$pi_name
  2903. ,""
  2904. ,$title
  2905. ,$description
  2906. ,$keywords
  2907. ,$description
  2908. ,""
  2909. ,""
  2910. ,""
  2911. ,$argary['fieldset_id']
  2912. ,$fieldset_name
  2913. );
  2914. }
  2915. $result = DB_query ($sql);
  2916. $numrows = DB_numRows ($result);
  2917. if ($numrows > 0) {
  2918. $tmplfld=DATABOX_templatePath('search',$argary['templatedir'],$pi_name);
  2919. $templates = new Template($tmplfld);
  2920. $templates->set_file (array (
  2921. 'list' => 'list_detail.thtml',
  2922. 'arg' => 'argument.thtml',
  2923. 'nav' => 'navigation_detail.thtml',
  2924. 'row' => 'row.thtml',
  2925. 'col' => "col_detail.thtml",
  2926. ));
  2927. $dummy=databox_searchargedit($argary,$templates);
  2928. $languageid=COM_getLanguageId();
  2929. $language= COM_getLanguage();
  2930. $templates->set_var ('languageid', $languageid);
  2931. $templates->set_var ('language', $language);
  2932. if ($languageid<>"") {
  2933. $templates->set_var ('_languageid', "_".$languageid);
  2934. }else{
  2935. $templates->set_var ('_languageid', "");
  2936. }
  2937. //
  2938. $templates->set_var ('site_url',$_CONF['site_url']);
  2939. $templates->set_var ('this_script',THIS_SCRIPT);
  2940. //bread
  2941. $templates->set_var ('home',$LANG_DATABOX['home']);
  2942. //page
  2943. $templates->set_var ('cnt', $cnt);
  2944. $lin1=$offset+1;
  2945. $lin2=$lin1+$argary['perpage'] - 1;
  2946. if ($lin2>$cnt){
  2947. $lin2=$cnt;
  2948. }
  2949. //summary navigation
  2950. $templates->set_var ('lang_view', $LANG_DATABOX['view']);
  2951. $templates->set_var ('lin', $lin1."-".($lin2));
  2952. $templates->set_var ('cnt', $cnt);
  2953. //
  2954. $templates->set_var ('lang_title', $LANG_DATABOX_ADMIN['title']);
  2955. $templates->set_var ('lang_code', $LANG_DATABOX_ADMIN['code']);
  2956. $templates->set_var ('lang_id', $LANG_DATABOX_ADMIN['id']);
  2957. $templates->set_var ('lang_description', $LANG_DATABOX_ADMIN['description']);
  2958. $templates->set_var ('lang_date', $LANG_DATABOX_ADMIN[$datefield]);
  2959. $templates->set_var ('lang_released', $LANG_DATABOX_ADMIN['released']);
  2960. $templates->set_var ('lang_expired', $LANG_DATABOX_ADMIN['expired']);
  2961. $templates->set_var ('lang_remaingdays', $LANG_DATABOX_ADMIN['remaingdays']);
  2962. $templates->set_var ('lang_addfield', $addfield_name);
  2963. // 追加項目のヘッダ
  2964. $addition_def=DATABOX_getadditiondef($pi_name);
  2965. //
  2966. $templates->set_var('lang_imgfile_frd', $LANG_confignames['databox']['imgfile_frd']);
  2967. $templates->set_var ('imgfile_frd', $_DATABOX_CONF['imgfile_frd']);
  2968. $templates->set_var ('data_img_url', $_CONF['site_url']."/".$_DATABOX_CONF['imgfile_frd']);
  2969. $templates->set_var('lang_imgfile_thumb_frd', $LANG_confignames['databox']['imgfile_thumb_frd']);
  2970. $templates->set_var ('imgfile_thumb_frd', $_DATABOX_CONF['imgfile_thumb_frd']);
  2971. $templates->set_var ('data_thumb_img_url', $_CONF['site_url']."/".$_DATABOX_CONF['imgfile_thumb_frd']);
  2972. $referer =$_SERVER['HTTP_REFERER'];
  2973. $templates->set_var ('referer', $referer);
  2974. $templates->set_var ('lang_referer',$LANG_DATABOX['return']);
  2975. $templates->set_var ('fieldset_name',$fieldset_name);
  2976. $mkids="";
  2977. for ($i = 0; $i < $numrows; $i++) {
  2978. $A = DB_fetchArray ($result);
  2979. $A = array_map('stripslashes', $A);
  2980. $title=$A['title'];
  2981. $description=$A['description'];
  2982. $code=COM_applyFilter($A['code']);
  2983. $id=COM_applyFilter($A['id']);
  2984. $datefield=COM_applyFilter($A['datefield']);
  2985. $released=COM_applyFilter($A['released']);
  2986. $expired=COM_applyFilter($A['expired']);
  2987. $fieldset_id=COM_applyFilter($A['fieldset_id']);
  2988. $datefield_ary = COM_getUserDateTimeFormat($A['datefield_un']);
  2989. $released_ary = COM_getUserDateTimeFormat($A['released_un']);
  2990. if ($expired==="0000-00-00 00:00:00"){
  2991. $expired_ary=array();
  2992. }else{
  2993. $expired_ary = COM_getUserDateTimeFormat($A['expired_un']);
  2994. }
  2995. $curdate_ary = COM_getUserDateTimeFormat();
  2996. $value=COM_applyFilter($A['value']);
  2997. $group_id = $A['group_id'];
  2998. $owner_id = $A['owner_id'];
  2999. $url=$_CONF['site_url'] . "/databox/data.php";
  3000. $url.="?";
  3001. //コード使用の時
  3002. if ($_DATABOX_CONF['datacode']){
  3003. $url.="code=".$code;
  3004. $url.="&amp;m=code";
  3005. }else{
  3006. $url.="id=".$id;
  3007. $url.="&amp;m=id";
  3008. }
  3009. $url = COM_buildUrl( $url );
  3010. $link= COM_createLink($title, $url);
  3011. $templates->set_var ('data_link', $link);
  3012. $templates->set_var ('data_title', $title);
  3013. $templates->set_var ('data_code', $code);
  3014. $templates->set_var ('data_description', $description);
  3015. $templates->set_var ('data_id', $id);
  3016. $templates->set_var ('data_url', $url);
  3017. $templates->set_var ('data_datefield', $datefield_ary[0]);
  3018. $templates->set_var ('data_value', $value);
  3019. $templates->set_var ('data_datefield_shortdate', strftime( $_CONF['shortdate'], $A['datefield_un'] ));
  3020. $templates->set_var ('data_datefield_date', strftime( $_CONF['date'], $A['datefield_un'] ));
  3021. $templates->set_var ('data_datefield_daytime', strftime( $_CONF['daytime'], $A['datefield_un'] ));
  3022. $templates->set_var ('data_datefield_dateonly', strftime( $_CONF['dateonly'], $A['datefield_un'] ));
  3023. $templates->set_var ('data_datefield_timeonly', strftime( $_CONF['timeonly'], $A['datefield_un'] ));
  3024. $templates->set_var ('data_datefield_b', strftime( "%b" , $A['datefield_un']));
  3025. $templates->set_var ('data_datefield_B', strftime( "%B" , $A['datefield_un']));
  3026. $templates->set_var ('data_datefield_d', strftime( "%d" , $A['datefield_un']));
  3027. $templates->set_var ('data_datefield_e', strftime( "%e" , $A['datefield_un']));
  3028. $templates->set_var ('data_released', $released_ary[0]);
  3029. $templates->set_var ('data_released_shortdate', strftime( $_CONF['shortdate'], $A['released_un'] ));
  3030. $templates->set_var ('data_released_date', strftime( $_CONF['date'], $A['released_un'] ));
  3031. $templates->set_var ('data_released_daytime', strftime( $_CONF['daytime'], $A['released_un'] ));
  3032. $templates->set_var ('data_released_dateonly', strftime( $_CONF['dateonly'], $A['released_un'] ));
  3033. $templates->set_var ('data_released_timeonly', strftime( $_CONF['timeonly'], $A['released_un'] ));
  3034. $templates->set_var ('data_released_b', strftime( "%b" , $A['released_un']));
  3035. $templates->set_var ('data_released_B', strftime( "%B" , $A['released_un']));
  3036. $templates->set_var ('data_released_d', strftime( "%d" , $A['released_un']));
  3037. $templates->set_var ('data_released_e', strftime( "%e" , $A['released_un']));
  3038. //公開終了日 Expired to publish
  3039. if ($A['expired'] ==="0000-00-00 00:00:00"){
  3040. $templates->set_var ('data_expired', "");
  3041. $templates->set_var ('data_expired_shortdate', "" );
  3042. $templates->set_var ('data_expired_date', "" );
  3043. $templates->set_var ('data_expired_daytime', "" );
  3044. $templates->set_var ('data_expired_dateonly', "" );
  3045. $templates->set_var ('data_expired_timeonly', "" );
  3046. $templates->set_var ('data_expired_b', "" );
  3047. $templates->set_var ('data_expired_B', "" );
  3048. $templates->set_var ('data_expired_d', "" );
  3049. $templates->set_var ('data_expired_e', "" );
  3050. }else{
  3051. $wary = COM_getUserDateTimeFormat($A['expired_un']);
  3052. $templates->set_var ('data_expired', $expired_ary[0]);
  3053. $templates->set_var ('data_expired_shortdate', strftime( $_CONF['shortdate'], $A['expired_un'] ));
  3054. $templates->set_var ('data_expired_date', strftime( $_CONF['date'], $A['expired_un'] ));
  3055. $templates->set_var ('data_expired_daytime', strftime( $_CONF['daytime'], $A['expired_un'] ));
  3056. $templates->set_var ('data_expired_dateonly', strftime( $_CONF['dateonly'], $A['expired_un'] ));
  3057. $templates->set_var ('data_expired_timeonly', strftime( $_CONF['timeonly'], $A['expired_un'] ));
  3058. $templates->set_var ('data_expired_b', strftime( "%b" , $A['expired_un']));
  3059. $templates->set_var ('data_expired_B', strftime( "%B" , $A['expired_un']));
  3060. $templates->set_var ('data_expired_d', strftime( "%d" , $A['expired_un']));
  3061. $templates->set_var ('data_expired_e', strftime( "%e" , $A['expired_un']));
  3062. }
  3063. $remaingdays="";
  3064. if ($expired<>"0000-00-00 00:00:00") {
  3065. if ($expired_ary[1]>=$curdate_ary[1]){
  3066. $remaingdays=COM_dateDiff( "d", $expired_ary[1], $curdate_ary[1] ) + 1;
  3067. }
  3068. }
  3069. $templates->set_var ('data_remaingdays', $remaingdays);//@@@@@@
  3070. if (date("Ymd",strtotime($datefield)) >= date("Ymd",$chkday)){
  3071. $templates->set_var ('new_img', $new_img);
  3072. }else{
  3073. $templates->set_var ('new_img', '');
  3074. }
  3075. $hits=COM_applyFilter(DB_getItem( $tbl6 ,"hits","id={$id}"),true);
  3076. $templates->set_var('lang_hits', $LANG_DATABOX_ADMIN['hits']);
  3077. $templates->set_var('data_hits', $hits);
  3078. //カテゴリ@@@@@
  3079. $templates->set_var('lang_category', $LANG_DATABOX_ADMIN['category']);
  3080. DATABOX_getcategoriesDisp($A['id'],$templates,$chk_user,0,$pi_name);
  3081. //追加項目
  3082. $chk_user=DATABOX_chkuser($group_id,$owner_id,"databox.admin");
  3083. $additionfields = DATABOX_getadditiondatas($id,$pi_name);
  3084. DATABOX_getaddtionfieldsDisp($additionfields,$addition_def,$templates,$chk_user,$pi_name,$fieldset_id);
  3085. //管理者の時「編集」
  3086. if ( SEC_hasRights('databox.admin')) {
  3087. $icon_url = $_CONF['layout_url'] . '/images/edit.' . $_IMAGE_TYPE;
  3088. $attr = array('title' => $title." ".$LANG_DATABOX_ADMIN['edit']);
  3089. $editiconhtml = COM_createImage($icon_url, $LANG_DATABOX_ADMIN['edit'], $attr);
  3090. $attr = array('class' => 'editlink', 'title' => $title." ".$LANG_DATABOX_ADMIN['edit']);
  3091. $url = $_CONF['site_admin_url'];
  3092. $url .= '/plugins/databox/data.php';
  3093. $url .= '?mode=edit';
  3094. $url .= '&amp;'."id={$id}";
  3095. $icon = '&nbsp;' ;
  3096. $icon .= COM_createLink( $editiconhtml, $url, $attr );
  3097. $templates->set_var ('data_edit', $icon);
  3098. }else{
  3099. $rt=databox_chk_loaddata($id);
  3100. //編集権限のあるMyData
  3101. if ( $rt==="OK") {
  3102. $icon_url = $_CONF['layout_url'] . '/images/edit.' . $_IMAGE_TYPE;
  3103. $attr = array('title' => $LANG_DATABOX_ADMIN['edit']);
  3104. $editiconhtml = COM_createImage($icon_url, $LANG_DATABOX_ADMIN['edit'], $attr);
  3105. $attr = array('class' => 'editlink', 'title' => $title." ".$LANG_DATABOX_ADMIN['edit']);
  3106. $url = $_CONF['site_url'];
  3107. $url .= '/databox/mydata/data.php';
  3108. $url .= '?mode=edit';
  3109. $url .= '&amp;'."id={$id}";
  3110. $icon = '&nbsp;' ;
  3111. $icon .= COM_createLink( $editiconhtml, $url, $attr );
  3112. $templates->set_var ('data_edit', $icon);
  3113. }else{
  3114. $templates->set_var ('data_edit', "");
  3115. }
  3116. }
  3117. //maps plugin link
  3118. $mkid="";
  3119. if (in_array("maps", $_PLUGINS)){
  3120. if ($code<>""){
  3121. $mkid=DB_getItem($_TABLES['maps_markers'],"mkid","item_10='$code'");
  3122. if ($mkid<>""){
  3123. $mkids.=$mkid." ";
  3124. }
  3125. }
  3126. }
  3127. //=====
  3128. $templates->parse ('col_var', 'col', true);
  3129. $templates->parse ('row_var', 'row', true);
  3130. $templates->set_var ('col_var', '');
  3131. }
  3132. $mkids=rtrim($mkids," ");
  3133. $mkidary=array();
  3134. $mkid_ary=split(" " , $mkids);
  3135. $selectedMarkers="";
  3136. if (function_exists("MAPS_selectedMarkers") AND $mkids<>"") {
  3137. $selectedMarkers=MAPS_selectedMarkers(
  3138. $_MAPS_CONF['map_width']
  3139. ,$_MAPS_CONF['map_height']
  3140. ,$_MAPS_CONF['map_zoom']
  3141. ,$mkid_ary);
  3142. }
  3143. $templates->set_var ('mkids', $mkids);
  3144. $templates->set_var ('selectedMarkers', $selectedMarkers);
  3145. // Call to plugins to set template variables in the databox
  3146. PLG_templateSetVars( 'databox', $templates );
  3147. //------------
  3148. //-----navigation
  3149. $url = $_CONF['site_url'] . '/';
  3150. $url.=THIS_SCRIPT;
  3151. $url.="?";
  3152. $url.=$arg_sv;
  3153. $url .= "&amp;order=";
  3154. //-----order navigation
  3155. $dummy=databox_order ($url, $templates, $argary['order']) ;
  3156. //-----page navigation
  3157. $url .= $argary['order'];
  3158. $templates->set_var ('page_navigation',
  3159. COM_printPageNavigation ($url,$argary['page'], $pages));
  3160. $templates->set_var ( 'pagenavinone', '' );
  3161. //------------
  3162. $templates->parse ('arg_var', 'arg', true);
  3163. $templates->parse ('nav_var', 'nav', true);
  3164. $templates->set_var ('msg', "");
  3165. $templates->parse ('output', 'list');
  3166. $content = $templates->finish ($templates->get_var ('output'));
  3167. }else{
  3168. if ($argary['nohitmsg']==="yes"){
  3169. $tmplfld=DATABOX_templatePath('search',$argary['templatedir'],$pi_name);
  3170. $templates = new Template($tmplfld);
  3171. $templates->set_file (array (
  3172. 'list' => 'nohit.thtml',
  3173. 'arg' => 'argument.thtml',
  3174. ));
  3175. $dummy=databox_searchargedit($argary,$templates);
  3176. $templates->set_var ('home',$LANG_DATABOX['home']);
  3177. $referer =$_SERVER['HTTP_REFERER'];
  3178. $templates->set_var ('referer', $referer);
  3179. $templates->set_var ('lang_referer',$LANG_DATABOX['return']);
  3180. $templates->set_var ('fieldset_name',$fieldset_name);
  3181. $templates->set_var('xhtml', XHTML);
  3182. $templates->set_var('site_url', $_CONF['site_url']);
  3183. $templates->set_var('site_admin_url', $_CONF['site_admin_url']);
  3184. $templates->set_var('layout_url', $_CONF['layout_url']);
  3185. $templates->set_var ('lang_nohit', $LANG_DATABOX['nohit']);
  3186. $templates->parse ('arg_var', 'arg', true);
  3187. $templates->parse ('output', 'list');
  3188. $content = $templates->finish ($templates->get_var ('output'));
  3189. }
  3190. }
  3191. if ($autotag==="notautotag"){
  3192. $retval["pagetitle"] =$pagetitle;
  3193. $retval["headercode"] =$headercode;
  3194. $retval["display"] =PLG_replacetags ($content);
  3195. }else{
  3196. $retval=PLG_replacetags ($content);
  3197. }
  3198. return $retval;
  3199. }
  3200. function databox_searcharg(
  3201. $autotag
  3202. ,$arg
  3203. )
  3204. // +---------------------------------------------------------------------------+
  3205. // | 機能 検索リスト
  3206. // | 書式 databox_searcharg($autotag,$arg);
  3207. // +---------------------------------------------------------------------------+
  3208. // | 引数 $autotag :notautotag 自動タグでない
  3209. // | 引数 $arg :
  3210. // +---------------------------------------------------------------------------+
  3211. // | 戻値 $argary:検索引数配列
  3212. // +---------------------------------------------------------------------------+
  3213. {
  3214. if ($autotag==="notautotag"){
  3215. foreach((array)$arg as $key => $value){
  3216. $key=COM_applyFilter($key);
  3217. if ($key<>""){
  3218. if (is_array($value) ) {
  3219. foreach($value as $key2 => $value2){
  3220. $argary[$key][]=Ltrim(COM_applyFilter($value2,true),0);
  3221. }
  3222. }else{
  3223. if ($key=="fieldset") {
  3224. $argary['fieldset']=COM_applyFilter($value,true);
  3225. $argary['fieldset_id']=COM_applyFilter($value,true);
  3226. }else if ($key=="page" OR $key=="perpage") {
  3227. $argary[$key]=COM_applyFilter($value,true);
  3228. }else {
  3229. $argary[$key]=COM_applyFilter($value);
  3230. }
  3231. }
  3232. }
  3233. }
  3234. }else{
  3235. $ary = explode ('&', $arg);
  3236. $argary = array();
  3237. foreach($ary as $key => $value){
  3238. $k = explode ('=', $value);
  3239. $k0= COM_applyFilter($k[0]);
  3240. //$k1= COM_applyFilter($k[1]);
  3241. if ($k0<>""){
  3242. if ($k0=="fieldset") {
  3243. $argary['fieldset']=COM_applyFilter($k[1],true);
  3244. $argary['fieldset_id']=COM_applyFilter($k[1],true);
  3245. }else if ($k0=="page" OR $k0=="perpage") {
  3246. $argary[$k0]=COM_applyFilter($k[1],true);
  3247. }else if ( substr($k0,0,3)=="gor" OR substr($k0,0,4)=="gand" OR substr($k0,0,3)=="ams" ) {
  3248. $argary[$k0][]=ltrim(COM_applyFilter($k[1],true),0);
  3249. }else {
  3250. $argary[$k0]=COM_applyFilter($k[1]);
  3251. }
  3252. }
  3253. }
  3254. }
  3255. return $argary;
  3256. }
  3257. function databox_searchfield(
  3258. $operate
  3259. ,$field_id
  3260. ,$value
  3261. ,&$acnt
  3262. ,&$afield
  3263. ,&$afile
  3264. ,&$awhere
  3265. )
  3266. // +---------------------------------------------------------------------------+
  3267. // | 機能 追加項目の条件 を編集
  3268. // | 書式 databox_searchfield($operate,$field_id,$value,$acnt,$afield,$afile,$awhere);
  3269. // +---------------------------------------------------------------------------+
  3270. // | 引数 $operate
  3271. // | 引数 $field_id
  3272. // | 引数戻値 $acnt
  3273. // | 引数戻値 $afield
  3274. // | 引数戻値 $afile
  3275. // | 引数戻値 $awhire
  3276. // +---------------------------------------------------------------------------+
  3277. {
  3278. global $_TABLES;
  3279. $return=false;
  3280. $sql="SELECT ";
  3281. $sql.= " field_id ";
  3282. $sql.= ",name ";
  3283. $sql.= ",type ";
  3284. $sql.=" FROM";
  3285. $sql.=" {$_TABLES['DATABOX_def_field']} ";
  3286. $sql.=" WHERE field_id=".$field_id;
  3287. // 表示する項目のみ
  3288. $sql.=" AND allow_display='0'";
  3289. if ($operate=="ams"){
  3290. //9:オプションリスト(マスター)
  3291. //16:ラジオボタンリスト(マスター)
  3292. //18:マルチセレクトリスト(マスター)
  3293. $sql.=" AND type IN (9,16,18)";
  3294. }else{
  3295. //0: 一行テキストフィールド
  3296. //1: 複数行テキストフィールド
  3297. //20:HTML 10:TinyMCE 19:CKEditor
  3298. //15:数値 21:通貨
  3299. $sql.=" AND type IN (0,1,10,19,20,15,21)";
  3300. }
  3301. $result = DB_query ($sql);
  3302. $numrows = DB_numRows ($result);
  3303. if ($numrows>0){
  3304. $A = DB_fetchArray ($result);
  3305. $acnt=$acnt+1;
  3306. $afield[$acnt]=" ,a".$acnt.".value AS value".$acnt;
  3307. $afile[$acnt]=" ,{$_TABLES['DATABOX_addition']} AS a".$acnt;
  3308. $w="a".$acnt.".field_id=".$field_id;
  3309. $w.=" AND a".$acnt.".id=t2.id";
  3310. if ($operate=="aeq"){
  3311. $w.=" AND a".$acnt.".value='".$value."'";
  3312. }else if ($operate=="a"){
  3313. $w.=" AND a".$acnt.".value LIKE '%".$value."%'";
  3314. }else if ($operate=="afr"){
  3315. if ($A['type']==15 OR $A['type']==21){
  3316. $w.=" AND (a".$acnt.".value + 0) >='".$value."'";
  3317. }else{
  3318. $w.=" AND a".$acnt.".value>='".$value."'";
  3319. }
  3320. }else if ($operate=="ato"){
  3321. if ($A['type']==15 OR $A['type']==21){
  3322. $w.=" AND (a".$acnt.".value + 0) <='".$value."'";
  3323. }else{
  3324. $w.=" AND a".$acnt.".value<='".$value."'";
  3325. }
  3326. }else if ($operate=="ams"){
  3327. $w.=" AND a".$acnt.".value IN ({$value})";
  3328. }
  3329. $awhere[$acnt]=$w;
  3330. $return=true;
  3331. }
  3332. return ;
  3333. }
  3334. function databox_searchargedit(
  3335. $arg
  3336. ,&$templates
  3337. )
  3338. {
  3339. global $LANG_DATABOX;
  3340. global $_CONF;
  3341. global $_TABLES;
  3342. $rt="";
  3343. $templates->set_var ('site_url',$_CONF['site_url']);
  3344. $templates->set_var ('this_script',THIS_SCRIPT);
  3345. $templates->set_var ("lang_search",$LANG_DATABOX['search']);
  3346. foreach((array)$arg as $key => $value) {
  3347. if (is_array($value)){
  3348. $k = explode ('_', $key);
  3349. $ary=$value;
  3350. if ($k[0]=="gor" OR $k[0]=="gand"){
  3351. $wnames="";
  3352. foreach($ary as $key2 => $value2){
  3353. $key2p1=$key2+1;
  3354. $w= COM_applyFilter($value2);
  3355. $ary[$key2]=$w;
  3356. $templates->set_var ($key."_".$key2p1."_id",$w);
  3357. if ($w<>""){
  3358. $wname=COM_applyFilter(
  3359. DB_getItem($_TABLES['DATABOX_def_category']
  3360. ,"name","category_id={$w}"));
  3361. $wnames.=$wname." ";
  3362. }else{
  3363. $wname="";
  3364. }
  3365. $templates->set_var ($key."_".$key2p1."_name",$wname);
  3366. }
  3367. $checklist=DATABOX_getcheckList ("categorygroup",$ary,"databox",$k[1],$key);
  3368. $templates->set_var ($key,$checklist);
  3369. $templates->set_var ($key."_names",$wnames);
  3370. }else if ($k[0]=="ams" ){
  3371. $kind=COM_applyFilter(
  3372. DB_getItem($_TABLES['DATABOX_def_field']
  3373. ,"selectlist","field_id={$k[1]}"));
  3374. $wnames="";
  3375. foreach($ary as $key2 => $value2){
  3376. $key2p1=$key2+1;
  3377. $w= COM_applyFilter($value2);
  3378. $ary[$key2]=$w;
  3379. $templates->set_var ($key."_".$key2p1."_no",$w);
  3380. if ($w<>""){
  3381. $wname=COM_applyFilter(
  3382. DB_getItem($_TABLES['DATABOX_mst']
  3383. ,"value","kind='{$kind}' AND no={$w}"));
  3384. $wnames.=$wname." ";
  3385. }else{
  3386. $wname="";
  3387. }
  3388. $templates->set_var ($key."_".$key2p1."_name",$wname);
  3389. }
  3390. $checklist=DATABOX_getcheckList ($kind,$ary,"databox",$k[1],$key);
  3391. $templates->set_var ($key,$checklist);
  3392. $templates->set_var ($key."_names",$wnames);
  3393. }
  3394. }else if ($value<>""){
  3395. $w=COM_applyFilter($value);
  3396. $templates->set_var ($key,$w);
  3397. }
  3398. }
  3399. return ;
  3400. }
  3401. ?>