PageRenderTime 67ms CodeModel.GetById 28ms RepoModel.GetById 1ms app.codeStats 0ms

/xoops_trust_path/modules/d3diary/main/edit.php

http://xoopscube-modules.googlecode.com/
PHP | 1216 lines | 926 code | 185 blank | 105 comment | 193 complexity | 396ab21f0704c7db6fb8e5bebc345635 MD5 | raw file
Possible License(s): GPL-2.0, LGPL-2.1, AGPL-1.0
  1. <?php
  2. //--------------------------------------------------------------------
  3. // Config
  4. //--------------------------------------------------------------------
  5. require_once(dirname( dirname(__FILE__) ).'/lib/PEAR/XML/RPC.php');
  6. include_once dirname( dirname(__FILE__) ).'/class/diary.class.php';
  7. include_once dirname( dirname(__FILE__) ).'/class/category.class.php';
  8. include_once dirname( dirname(__FILE__) ).'/class/photo.class.php';
  9. include_once dirname( dirname(__FILE__) ).'/class/tag.class.php';
  10. include_once dirname( dirname(__FILE__) ).'/class/d3diaryConf.class.php';
  11. $diary =& D3diaryDiary::getInstance();
  12. $category =& D3diaryCategory::getInstance();
  13. $photoObj =& D3diaryPhoto::getInstance();
  14. $tag =& D3diaryTag::getInstance();
  15. require_once XOOPS_TRUST_PATH.'/libs/altsys/class/D3NotificationHandler.class.php' ;
  16. // define constants
  17. define ('_D3DIARY_PROCMODE_FORM', '1' ) ;
  18. define ('_D3DIARY_PROCMODE_PREVIEW', '2' ) ;
  19. define ('_D3DIARY_PROCMODE_CREATE', '3' ) ;
  20. define ('_D3DIARY_PROCMODE_EDIT', '4' ) ;
  21. define ('_D3DIARY_PROCMODE_DELETE', '8' ) ;
  22. define ('_D3DIARY_PROCMODE_PHOTODEL', '9' ) ;
  23. define ('_D3DIARY_PROCMODE_PHOTOROTATE', '10' ) ;
  24. //--------------------------------------------------------------------
  25. // GET Initial Values
  26. //--------------------------------------------------------------------
  27. $myname = "edit.php";
  28. $d3dConf =& D3diaryConf::getInstance($mydirname, 0, "edit");
  29. $func =& $d3dConf->func ;
  30. $myts =& $d3dConf->myts;
  31. $mPerm =& $d3dConf->mPerm ;
  32. $gPerm =& $d3dConf->gPerm ;
  33. $mod_config =& $d3dConf->mod_config ;
  34. $uid = $d3dConf->uid;
  35. $d3dConf->req_uid = $req_uid = isset($_GET['req_uid']) ? (int)$_GET['req_uid'] : $uid;
  36. $mPerm->ini_set();
  37. if( $uid<=0 ){
  38. redirect_header(XOOPS_URL.'/user.php',2,_MD_IVUID_ERR);
  39. exit();
  40. }
  41. if($d3dConf->dcfg->blogtype!=0){
  42. header("Location:". XOOPS_URL.'/modules/'.$mydirname.'/index.php?page=usr_config');
  43. exit();
  44. }
  45. $openarea = intval($d3dConf->dcfg->openarea)!=0 ? intval($d3dConf->dcfg->openarea) : 0;
  46. $now = date("Y-m-d H:i:s");
  47. $diary->bid = (int)$func->getpost_param('bid');
  48. $diary->uid = $req_uid;
  49. // edit parameters
  50. $eparam = array() ;
  51. $eparam['is_prev'] = 0 ;
  52. // photo parameters
  53. list( $eparam['uploaddir'] , $eparam['previewdir'] ) = $d3dConf->get_photodir() ; // photo upload dir, preview dir
  54. $eparam['th_size']= empty( $mod_config['photo_thumbsize'] ) ? 160 : intval($mod_config['photo_thumbsize']);
  55. // photo thumbnail size
  56. $eparam['postmax']= intval($mod_config['photo_maxpics']); // max photo numbers
  57. //
  58. // set mode for processing the branch
  59. //
  60. //$post_val['photodel'] = $func->getpost_param('photodel') ;
  61. //$post_val['photorotate'] = $func->getpost_param('photorotate') ;
  62. $post_val['delsub'] = $func->getpost_param('delsub') ;
  63. $post_val['submit1'] = $func->getpost_param('submit1') ;
  64. $post_val['preview'] = $func->getpost_param('preview') ;
  65. $post_val['phandle'] = $func->getpost_param('phandle') ;
  66. $action = (int)$func->getpost_param('action') ;
  67. if( !empty($post_val['phandle']) && $action == 5 && $diary->bid>0 ) {
  68. $eparam['mode'] = _D3DIARY_PROCMODE_PHOTODEL ; // delete photo
  69. } elseif( !empty($post_val['phandle']) && ($action == 2 || $action == 3) && $diary->bid>0 ) {
  70. $eparam['mode'] = _D3DIARY_PROCMODE_PHOTOROTATE ; // rotate photo
  71. } elseif( !empty($post_val['delsub'] ) && $diary->bid>0 ) {
  72. $eparam['mode'] = _D3DIARY_PROCMODE_DELETE ; // delete
  73. } elseif( !empty($post_val['preview']) ) {
  74. $eparam['mode'] =_D3DIARY_PROCMODE_PREVIEW ; // preview now
  75. } elseif( !empty($post_val['submit1']) ) {
  76. if( $diary->bid>0 ) {
  77. $eparam['mode'] = _D3DIARY_PROCMODE_EDIT ; // edit update
  78. } else {
  79. $eparam['mode'] = _D3DIARY_PROCMODE_CREATE ; // create newly
  80. }
  81. } else {
  82. $eparam['mode'] = _D3DIARY_PROCMODE_FORM ; // show form or preview
  83. }
  84. //
  85. // for access check
  86. //
  87. if ($mPerm->isadmin && 0 < intval($d3dConf->req_uid)) {
  88. $req_uid = intval($d3dConf->req_uid);
  89. $rtn = $func->get_xoopsuname($req_uid);
  90. $uname = $rtn['uname'];
  91. $name = (!empty($rtn['name'])) ? $rtn['name'] : "" ;
  92. $rtn = $func->get_xoopsuname($uid);
  93. $myuname = $rtn['uname'];
  94. $myname = (!empty($rtn['name'])) ? $rtn['name'] : "" ;
  95. } else {
  96. $req_uid = $uid;
  97. $rtn = $func->get_xoopsuname($uid);
  98. $uname = $rtn['uname'];
  99. $name = $rtn['name'];
  100. }
  101. $notif_name = $mod_config['use_name']==1 ? $name : $uname;
  102. // STEP0 check edit permission
  103. if(($diary->bid>0 and !$mPerm->check_editperm($diary->bid, $uid)) or ($uid != $req_uid && $diary->bid <= 0)){
  104. redirect_header(XOOPS_URL.'/user.php',2,_MD_NOPERM_EDIT);
  105. exit();
  106. }
  107. // get permission unames for each groupPermission
  108. // check edit permission by group
  109. $_tempGperm = $gPerm->getUidsByName( array_keys($gPerm->gperm_config) );
  110. if(!empty($_tempGperm['allow_edit'])){
  111. if(!isset($_tempGperm['allow_edit'][$uid])) {
  112. redirect_header(XOOPS_URL.'/user.php',2,_MD_NOPERM_EDIT);
  113. exit();
  114. }
  115. } else {
  116. redirect_header(XOOPS_URL.'/user.php',2,_MD_NOPERM_EDIT);
  117. exit();
  118. }
  119. // STEP 1: get photos name
  120. // set "is preview" for preview or delete photo
  121. if(!empty($post_val['preview']) || $eparam['mode'] == _D3DIARY_PROCMODE_PHOTODEL
  122. || $eparam['mode'] == _D3DIARY_PROCMODE_PHOTOROTATE){
  123. $eparam['is_prev'] = 1 ;
  124. }
  125. // set "was preview" for last access was preview
  126. $eparam['was_prev'] = (int)$func->getpost_param('was_prev') ;
  127. // pname in preview
  128. $prev_pname = $func->getpost_param('pname');
  129. $prev_pname = !empty($prev_pname) ? $prev_pname : array();
  130. $prev_pid = $func->getpost_param('pid');
  131. $prev_pid = !empty($prev_pid) ? $prev_pid : array();
  132. $prev_info = $func->getpost_param('pvinfo');
  133. $prev_info = !empty($prev_info) ? $prev_info : array();
  134. $form_photos = array() ;
  135. $count_pr_pid = count($prev_pid) ;
  136. if ( $count_pr_pid > 0 ) {
  137. for ($i=0; $i<$count_pr_pid; $i++) {
  138. $form_photo['pid'] = $prev_pid[$i] ;
  139. $form_photo['pname'] = $prev_pname[$i] ;
  140. $form_photo['info'] = $prev_info[$i] ;
  141. $form_photos[] = $form_photo ;
  142. }
  143. }
  144. // photo name by submit with photos
  145. $pinfo = $func->getpost_param('pinfo');
  146. $pinfo = !empty($pinfo) ? $pinfo : array();
  147. // photo delete check by submit with photos
  148. $temp_psels = $func->getpost_param('psel');
  149. $psels = array(); $psel_names = array();
  150. if (!empty($temp_psels)) {
  151. foreach ( $temp_psels as $temp_psel ) {
  152. list( $psels[], $psel_names[] ) = explode( "::", $temp_psel );
  153. }
  154. }
  155. //var_dump($psels); echo "<br><br>"; var_dump($psel_names); echo "<br><br>";
  156. // STEP 2: get registered diary and photos if existed
  157. if($diary->bid>0){
  158. $diary->readdb($mydirname);
  159. if ( $eparam['is_prev'] == 1 ) { $diary->diary = $func->getpost_param('diary'); }
  160. // get registered photos
  161. list( $yd_data['photo_num'] , $yd_photo )= d3diary_readdb_photo($mydirname);
  162. if ( 0 < count($form_photos) ) { d3diary_swap_photoinfo (); }
  163. } else {
  164. $yd_data['photo_num'] = 0 ;
  165. $yd_photo = array() ;
  166. }
  167. // STEP 3: branch to each processing mode
  168. switch ( $eparam['mode'] ) {
  169. // delete photo
  170. case _D3DIARY_PROCMODE_PHOTODEL :
  171. if($uid != $req_uid && $diary->bid <= 0){
  172. redirect_header(XOOPS_URL.'/user.php',2,_MD_NOPERM_EDIT);
  173. exit();
  174. }
  175. $rtnurl = $d3dConf->urluppr.$d3dConf->urlbase.$d3dConf->url4_all ;
  176. // delete registered photos ( $action == 5 )
  177. $result = $func->manage_photos( $photoObj, $diaryObj, $psels, $psel_names, $action, $eparam ) ;
  178. $_msg="";
  179. // readdb again after deleted
  180. list( $num_photos , $yd_photo )= d3diary_readdb_photo($mydirname);
  181. $yd_data['photo_num'] = $num_photos ;
  182. // read and add previewed photos
  183. $msg=d3diary_checkphoto( $mydirname );
  184. if(empty($msg)){
  185. list( $photo_num, $prev_photo ) = d3diary_prevphoto($mydirname);
  186. $i=0;
  187. $yd_photo = array_merge($yd_photo, $prev_photo);
  188. $yd_data['photo_num'] = $yd_data['photo_num'] + $photo_num;
  189. }
  190. // input form
  191. d3diary_showform( $mydirname ) ;
  192. break ;
  193. // rotate photo
  194. case _D3DIARY_PROCMODE_PHOTOROTATE :
  195. if($uid != $req_uid && $diary->bid <= 0){
  196. redirect_header(XOOPS_URL.'/user.php',2,_MD_NOPERM_EDIT);
  197. exit();
  198. }
  199. // rotate registered photos ( $action == 2 || $action == 3 )
  200. $result = $func->manage_photos( $photoObj, $diaryObj, $psels, $psel_names, $action, $eparam ) ;
  201. //$eparam['mode'] = _D3DIARY_PROCMODE_PREVIEW ;
  202. $rtnurl = XOOPS_URL.'/modules/'.$mydirname.'/index.php?page=detail&bid='.$diary->bid ;
  203. redirect_header( $rtnurl, 2, _MD_DIARY_UPDATED);
  204. // input form
  205. //d3diary_showform( $mydirname ) ;
  206. break ;
  207. // show form for edit or new input
  208. case _D3DIARY_PROCMODE_FORM :
  209. d3diary_showform( $mydirname ) ;
  210. break ;
  211. // create
  212. case _D3DIARY_PROCMODE_CREATE ;
  213. if($uid != $req_uid){
  214. redirect_header(XOOPS_URL.'/user.php',2,_MD_NOPERM_EDIT);
  215. exit();
  216. }
  217. $diary->title=$func->getpost_param('title');
  218. $diary->dohtml=intval($func->getpost_param('dohtml'));
  219. if ($diary->dohtml == 1) {
  220. $diary->diary = $func->htmlPurifier($func->getpost_param('diary'));
  221. } else {
  222. $diary->diary = $func->getpost_param('diary');
  223. }
  224. $diary->cid=$func->getpost_param('cid');
  225. $diary->openarea=$func->getpost_param('openarea');
  226. $chk_vgids= $func->getpost_param('vgids');
  227. $diary->vgids = $chk_vgids ? "|".implode("|", array_map("intval" ,$chk_vgids))."|" : "";
  228. $chk_vpids= $func->getpost_param('vpids');
  229. $diary->vpids = $chk_vpids ? "|".implode("|", array_map("intval" ,explode("," , $chk_vpids)))."|" : "";
  230. $openarea = intval($diary->openarea)!=0 ? intval($diary->openarea) : $openarea;
  231. $yd_data['dohtml'] = $func->getpost_param('dohtml');
  232. if ($func->getpost_param('reg_time')) {
  233. d3diary_reg_time();
  234. }
  235. $cname=$func->getpost_param('cname');
  236. $msg=d3diary_checkphoto($mydirname);
  237. if(empty($msg)){
  238. // new category
  239. if($diary->cid==-1){
  240. $category->cname=$cname;
  241. if(!empty($category->cname)){
  242. $category->uid=$req_uid;
  243. $diary->cid=$category->insertdb($mydirname);
  244. }else{
  245. $diary->cid=0; // not categorized/other
  246. }
  247. }
  248. $yd_data['uid'] = $req_uid;
  249. $yd_data['cid'] = $diary->cid;
  250. $yd_data['title'] = htmlSpecialChars($diary->title, ENT_QUOTES);
  251. $yd_data['diary'] = htmlSpecialChars($diary->diary, ENT_QUOTES);
  252. $diary->bid=$diary->insertdb($mydirname);
  253. $yd_data['bid'] = $diary->bid;
  254. $yd_data['openarea']=$diary->openarea; // naao added
  255. $yd_data['dohtml'] = $diary->dohtml;
  256. // needs bid
  257. if ($eparam['was_prev']==1){
  258. d3diary_regphoto($mydirname, "was_prev");
  259. } else {
  260. d3diary_regphoto($mydirname);
  261. }
  262. d3diary_regtags($mydirname);
  263. $category->cid = $diary->cid;
  264. $category->uid=$req_uid;
  265. $category->readdb($mydirname);
  266. // Trigger Notification using "Altsys D3NotificationHandler"
  267. $openarea_entry = intval($func->getpost_param('openarea'))!=0 ?
  268. intval($func->getpost_param('openarea')) : 0;
  269. $category->cid = (int)$diary->cid;
  270. $category->uid = $uid;
  271. $category->readdb($mydirname);
  272. $openarea_cat = intval($category->openarea)!=0 ? intval($category->openarea) : 0;
  273. $vgids_cat = !empty($category->vgids) ? $category->vgids : "";
  274. $vpids_cat = !empty($category->vpids) ? $category->vpids : "";
  275. // 1st parameter $openarea is byref
  276. $users2notify = $mPerm->get_users_can_read_entry( $openarea, $yd_data['openarea'], $openarea_cat, $diary->vgids, $diary->vpids, $vgids_cat, $vpids_cat );
  277. $not_handler =& D3NotificationHandler::getInstance() ;
  278. $comment_tags = array( 'ENTRY_TITLE' => $yd_data['title'] , 'ENTRY_URI' => XOOPS_URL.'/modules/'.$mydirname.'/index.php?page=detail&req_uid='.$req_uid.'&bid='.$diary->bid ) ;
  279. $not_handler->triggerEvent( $mydirname , 'd3diary' , 'global' , 0 , 'new_entry' , $comment_tags , $users2notify ) ;
  280. $comment_tags = array( 'ENTRY_TITLE' => $yd_data['title'] , 'ENTRY_BLOGGER' => $notif_name , 'ENTRY_URI' => XOOPS_URL.'/modules/'.$mydirname.'/index.php?page=detail&req_uid='.$req_uid.'&bid='.$diary->bid ) ;
  281. $not_handler->triggerEvent( $mydirname , 'd3diary' , 'blogger' , $req_uid , 'new_entry' , $comment_tags , $users2notify ) ;
  282. if (intval($func->getpost_param('update_ping'))==1 && $openarea==0 && ($diary->create_time <= $now)){
  283. $blogtitle=mb_convert_encoding($notif_name._MD_DIARY_TITLENAME, "UTF-8");
  284. $blogtopurl=mb_convert_encoding(XOOPS_URL.'/modules/'.$mydirname.'/index.php?req_uid='.$req_uid, "UTF-8");
  285. d3diary_ping_send($blogtitle, $blogtopurl);
  286. }
  287. // increment post added 2009/06/30 ver0.02
  288. if( is_object( @$xoopsUser ) ) {
  289. $xoopsUser->incrementPost() ;
  290. }
  291. redirect_header( XOOPS_URL.'/modules/'.$mydirname.'/index.php?page=detail&bid='.$diary->bid,2,_MD_DIARY_CREATED);
  292. }else{
  293. $yd_data['error'] = $msg;
  294. // input form
  295. $yd_data['cname'] = htmlSpecialChars($cname, ENT_QUOTES);
  296. $yd_data['bid'] = 0;
  297. $yd_data['uid'] = $req_uid;
  298. $yd_data['cid'] = $diary->cid;
  299. $yd_data['title'] = htmlSpecialChars($diary->title, ENT_QUOTES);
  300. $yd_data['diary'] = htmlSpecialChars($diary->diary, ENT_QUOTES);
  301. $yd_data['photo_num'] = $num_photos;
  302. $yd_data['openarea']=$diary->openarea; // naao added
  303. $yd_data['dohtml'] = $diary->dohtml;
  304. // set filename
  305. for($i=1;$i<=(3-$num_photos);$i++){
  306. $yd_data['filename'][$i] = $_FILES['filename']['name'][$i];
  307. }
  308. d3diary_showform( $mydirname ) ;
  309. break ;
  310. }
  311. // edit update
  312. case _D3DIARY_PROCMODE_EDIT :
  313. $diary->readdb($mydirname);
  314. if(empty($diary->create_time)){
  315. redirect_header( XOOPS_URL.'/modules/'.$mydirname.'/index.php?page=edit',2,_MD_NODIARY_ERR);
  316. exit();
  317. }
  318. $diary->title=$func->getpost_param('title');
  319. $diary->dohtml=intval($func->getpost_param('dohtml'));
  320. if ($diary->dohtml == 1) {
  321. $diary->diary = $func->htmlPurifier($func->getpost_param('diary'));
  322. } else {
  323. $diary->diary = $func->getpost_param('diary');
  324. }
  325. $diary->cid=$func->getpost_param('cid');
  326. $chk_vgids= $func->getpost_param('vgids');
  327. $diary->vgids = $chk_vgids ? "|".implode("|", array_map("intval" ,$chk_vgids))."|" : "";
  328. $chk_vpids= $func->getpost_param('vpids');
  329. $diary->vpids = $chk_vpids ? "|".implode("|", array_map("intval" ,explode("," , $chk_vpids)))."|" : "";
  330. if ( ($diary->openarea == 100) && (intval($func->getpost_param('openarea') != 100))) {
  331. if (intval($func->getpost_param('update_time'))==1) {
  332. $update_create_time = true;
  333. // Trigger Notification using "Altsys D3NotificationHandler"
  334. $openarea_entry = intval($func->getpost_param('openarea'))!=0 ?
  335. intval($func->getpost_param('openarea')) : 0;
  336. $category->cid = (int)$diary->cid;
  337. $category->uid = $uid;
  338. $category->readdb($mydirname);
  339. $openarea_cat = intval($category->openarea)!=0 ? intval($category->openarea) : 0;
  340. $vgids_cat = !empty($category->vgids) ? $category->vgids : "";
  341. $vpids_cat = !empty($category->vpids) ? $category->vpids : "";
  342. // 1st parameter $openarea is byref
  343. $users2notify = $mPerm->get_users_can_read_entry( $openarea, $openarea_entry, $openarea_cat,
  344. $diary->vgids, $diary->vpids, $vgids_cat, $vpids_cat );
  345. $not_handler =& D3NotificationHandler::getInstance() ;
  346. $comment_tags = array( 'ENTRY_TITLE' => $diary->title , 'ENTRY_URI' => XOOPS_URL.'/modules/'.$mydirname.'/index.php?page=detail&req_uid='.$req_uid.'&bid='.$diary->bid ) ;
  347. $not_handler->triggerEvent( $mydirname , 'd3diary' , 'global' , 0 , 'new_entry' , $comment_tags , $users2notify ) ;
  348. $comment_tags = array( 'ENTRY_TITLE' => $diary->title , 'ENTRY_BLOGGER' => $notif_name , 'ENTRY_URI' => XOOPS_URL.'/modules/'.$mydirname.'/index.php?page=detail&req_uid='.$req_uid.'&bid='.$diary->bid ) ;
  349. $not_handler->triggerEvent( $mydirname , 'd3diary' , 'blogger' , $req_uid , 'new_entry' , $comment_tags , $users2notify ) ;
  350. } else {
  351. $update_create_time = false;
  352. }
  353. } else {
  354. $update_create_time = false;
  355. }
  356. $diary->openarea=intval($func->getpost_param('openarea'));
  357. $openarea = intval($diary->openarea)!=0 ? intval($diary->openarea) : $openarea;
  358. if ($func->getpost_param('reg_time')) {
  359. d3diary_reg_time();
  360. }
  361. $cname=$func->getpost_param('cname');
  362. $msg=d3diary_checkphoto($mydirname);
  363. // subscribe
  364. if(empty($msg)){
  365. // new category
  366. if($diary->cid==-1){
  367. $category->cname= $cname;
  368. if(!empty($category->cname)){
  369. $category->uid=$req_uid;
  370. $diary->cid=$category->insertdb($mydirname);
  371. }else{
  372. $diary->cid=0; // not categorized/other
  373. }
  374. }
  375. $yd_data['bid'] = $diary->bid;
  376. $yd_data['uid'] = $req_uid;
  377. $yd_data['cid'] = $diary->cid;
  378. $yd_data['title'] = htmlSpecialChars($diary->title, ENT_QUOTES);
  379. $yd_data['dohtml'] = $diary->dohtml;
  380. $yd_data['diary'] = $yd_data['diary4edit'] = htmlSpecialChars($diary->diary, ENT_QUOTES);
  381. $yd_data['openarea']=$diary->openarea; // naao added
  382. $yd_data['groups'] = $diary->vgids;
  383. $diary->updatedb($mydirname, $update_create_time);
  384. // needs bid
  385. if ($eparam['was_prev']==1){
  386. d3diary_regphoto($mydirname, 'was_prev');
  387. } else {
  388. d3diary_regphoto($mydirname);
  389. }
  390. if ( $yd_data['photo_num'] > 0 ) {
  391. d3diary_update_photoinfo ( $mydirname ) ; //update photo info
  392. }
  393. d3diary_regtags($mydirname);
  394. $category->cid = $diary->cid;
  395. $category->uid=$req_uid;
  396. $category->readdb($mydirname);
  397. $openarea = intval($category->openarea)!=0 ? intval($category->openarea) : $openarea;
  398. if (intval($func->getpost_param('update_ping'))==1 && $openarea==0 && ($diary->create_time <= $now)){
  399. $blogtitle=mb_convert_encoding($uname._MD_DIARY_TITLENAME, "UTF-8");
  400. $blogtopurl=mb_convert_encoding(XOOPS_URL.'/modules/'.$mydirname.'/index.php?req_uid='.$req_uid, "UTF-8");
  401. d3diary_ping_send($blogtitle, $blogtopurl);
  402. }
  403. redirect_header( XOOPS_URL.'/modules/'.$mydirname.'/index.php?page=detail&bid='.$diary->bid,2,_MD_DIARY_UPDATED );
  404. }else{
  405. //redirect_header( XOOPS_URL.'/modules/'.$mydirname.'/index.php?page=edit&bid='.$diary->bid,2,$msg );
  406. $yd_data['error'] = $msg;
  407. d3diary_showform( $mydirname ) ;
  408. break ;
  409. }
  410. // preview
  411. case _D3DIARY_PROCMODE_PREVIEW :
  412. $msg=d3diary_checkphoto( $mydirname );
  413. if(empty($msg)){
  414. list( $photo_num, $prev_photo ) = d3diary_prevphoto($mydirname);
  415. $yd_photo = array_merge($yd_photo, $prev_photo);
  416. $yd_data['photo_num'] = count($yd_photo);
  417. } else {
  418. $yd_data['error'] = $msg;
  419. }
  420. d3diary_showform( $mydirname ) ;
  421. break ;
  422. // delete entry
  423. case _D3DIARY_PROCMODE_DELETE :
  424. $sql = "SELECT * FROM ".$xoopsDB->prefix($mydirname.'_photo')."
  425. WHERE uid='".intval($diary->uid)."' and bid='".intval($diary->bid)."'";
  426. $result = $xoopsDB->query($sql);
  427. $photoObj->uid=$diary->uid;
  428. $photoObj->bid=$diary->bid;
  429. while ( $dbdat = $xoopsDB->fetchArray($result) ) {
  430. $photoObj->pid=$dbdat['pid'];
  431. $photoObj->readdb($mydirname);
  432. /* delfile */
  433. unlink(XOOPS_ROOT_PATH.'/modules/'.$mydirname.'/upimg/'.$photoObj->pid.$photoObj->ptype);
  434. unlink(XOOPS_ROOT_PATH.'/modules/'.$mydirname.'/upimg/t_'.$photoObj->pid.$photoObj->ptype);
  435. $photoObj->deletedb($mydirname);
  436. }
  437. $diary->deletedb($mydirname);
  438. // delete tags
  439. $tag->uid=$diary->uid;
  440. $tag->bid=$diary->bid;
  441. $tag->delete_by_bid($mydirname);
  442. redirect_header( XOOPS_URL.'/modules/'.$mydirname.'/index.php?req_uid='.$uid,2,_MD_DIARY_DELETED);
  443. break;
  444. } // end switch $eparam['mode']
  445. // STEP 4: process tags
  446. $pop_tags=array(); $perso_tags=array(); $_entry_tags=array(); $entry_tags=array();
  447. $func->get_taglist($req_uid, $diary->bid, $pop_tags, $person_tags, $_entry_tags);
  448. // read tags
  449. // use post_tags for preview
  450. $post_tags = $func->getpost_param('tags');
  451. if(!empty($post_tags)) {
  452. if (function_exists('mb_convert_kana')){
  453. preg_match_all("/\[(.+)\]/U", mb_convert_kana($post_tags, 'asKV'), $tags);
  454. } else {
  455. preg_match_all("/\[(.+)\]/U", $post_tags, $tags);
  456. }
  457. $arr_tags = array_unique($tags[1]);
  458. $i=0;
  459. foreach ($arr_tags as $_tag){
  460. $entry_tags[$i]['tag'] = htmlspecialchars($d3dConf->myts->stripslashesGPC($_tag), ENT_QUOTES) ;
  461. //$entry_tags[$i]['tag_urlenc'] = rawurlencode($_tag);
  462. $i++;
  463. }
  464. } else {
  465. $entry_tags = $_entry_tags;
  466. }
  467. // assign module header for tags
  468. $d3diary_header = '<link rel="stylesheet" type="text/css" media="all" href="'.XOOPS_URL.'/modules/'.$mydirname.'/index.php?page=main_css" />'."\r\n";
  469. $d3diary_header .= '<script type="text/javascript" src="'.XOOPS_URL.'/modules/'.$mydirname.'/index.php?page=loader&src=tag.js"></script>'."\r\n";
  470. if(!empty($_tempGperm['allow_ppermission'])){
  471. if(isset($_tempGperm['allow_ppermission'][$uid])){
  472. $d3diary_header .= '<script type="text/javascript" src="'.XOOPS_URL.'/modules/'.$mydirname.'/index.php?page=loader&src=prototype,suggest,log.js"></script>'."\r\n";
  473. }
  474. }
  475. if($xoopsModuleConfig['body_htmleditor']=="common_fckeditor"){
  476. $d3diary_header .= '<script type="text/javascript" src="'.XOOPS_URL.'/common/fckeditor/fckeditor.js"></script>'."\r\n";
  477. }
  478. $smilylist = d3diary_get_smilylist();
  479. // menu
  480. if($mod_config['menu_layout']==1){
  481. $yd_layout = "left";
  482. }elseif($mod_config['menu_layout']==2){
  483. $yd_layout = "";
  484. }else{
  485. $yd_layout = "right";
  486. }
  487. $d3dConf->set_month ( $yd_data['year'], $yd_data['month'] );
  488. // breadcrumbs
  489. $bc_para['diary_title'] = $d3dConf->module_name;
  490. $bc_para['path'] = "index.php";
  491. $bc_para['uname'] = $uname;
  492. $bc_para['name'] = (!empty($name)) ? $name : $uname ;
  493. $bc_para['mode'] = "edit";
  494. $bc_para['bid'] = $yd_data['bid'];
  495. $bc_para['title'] = $yd_data['title'];
  496. $bc_para['bc_name'] = constant('_MD_DIARY_EDIT');
  497. $breadcrumbs = $func->get_breadcrumbs( $req_uid, $bc_para['mode'], $bc_para );
  498. // header ~ assign
  499. $xoopsOption['template_main']= $mydirname.'_edit.html';
  500. include XOOPS_ROOT_PATH."/header.php";
  501. // this page uses smarty template
  502. // this must be set before including main header.php
  503. $_temp_preview = $func->getpost_param('preview');
  504. if(!empty($_temp_preview) || $eparam['mode'] == _D3DIARY_PROCMODE_PHOTODEL){
  505. $xoopsTpl->assign("preview", "1");
  506. }
  507. $xoopsTpl->assign("yd_data", $yd_data);
  508. $xoopsTpl->assign(array(
  509. "yd_uid" => $req_uid,
  510. "yd_uname" => $uname,
  511. "yd_name" => $name,
  512. "yd_openarea" => intval($d3dConf->dcfg->openarea),
  513. "yd_layout" => $yd_layout,
  514. "yd_use_friend" => intval($mod_config['use_friend']),
  515. "yd_photo_maxsize" => intval($mod_config['photo_maxsize']),
  516. "yd_photo_maxpics" => intval($mod_config['photo_maxpics']),
  517. "yd_useresize" => intval($mod_config['photo_useresize']),
  518. "yd_data" => $yd_data,
  519. "yd_photo" => $yd_photo,
  520. "popTagArr" => $pop_tags,
  521. "myTagArr" => $person_tags,
  522. "bTagArr" => $entry_tags,
  523. "yd_counter" => $func->get_count_diary($diary->uid),
  524. "yd_use_open_entry" => intval($mod_config['use_open_entry']),
  525. "catopt" => d3diary_get_category_foredit($mydirname, $req_uid),
  526. "mydirname" => $mydirname,
  527. "xoops_breadcrumbs" => $breadcrumbs,
  528. "xoops_module_header" =>
  529. $xoopsTpl->get_template_vars( 'xoops_module_header' ).$d3diary_header,
  530. "mod_config" => $mod_config,
  531. "charset" => _CHARSET,
  532. "smilylist" => $smilylist,
  533. "allow_edit" => !empty($_tempGperm['allow_edit']) ? isset($_tempGperm['allow_edit'][$uid]) : false,
  534. "allow_html" => !empty($_tempGperm['allow_html']) ? isset($_tempGperm['allow_html'][$uid]) : false,
  535. "allow_regdate" => !empty($_tempGperm['allow_regdate']) ? isset($_tempGperm['allow_regdate'][$uid]) : false
  536. ));
  537. if(!empty($_tempGperm['allow_gpermission']) && ( $_oe == 10 || $_oe == 20 ))
  538. { $xoopsTpl->assign( 'allow_gpermission' , isset($_tempGperm['allow_gpermission'][$uid])); }
  539. if(!empty($_tempGperm['allow_ppermission']) && ( $_oe == 20 ))
  540. { $xoopsTpl->assign( 'allow_ppermission' , isset($_tempGperm['allow_ppermission'][$uid])); }
  541. include_once XOOPS_ROOT_PATH.'/footer.php';
  542. //
  543. // private functions
  544. //
  545. function d3diary_get_category_foredit($mydirname, $uid){
  546. global $xoopsDB, $myts, $mod_config;
  547. // changed for common category (uid=0)
  548. $sql = "SELECT *
  549. FROM ".$xoopsDB->prefix($mydirname.'_category')."
  550. WHERE uid='".intval($uid)."' OR uid='0' ORDER BY corder";
  551. $result = $xoopsDB->query($sql);
  552. $cat_options = array();
  553. while ( $dbdat = $xoopsDB->fetchArray($result) ) {
  554. if($dbdat['blogtype'] != 100){
  555. $catopt['cid'] = $dbdat['cid'];
  556. $catopt['cname'] = htmlspecialchars($dbdat['cname'], ENT_QUOTES);
  557. if (intval($mod_config['use_open_cat'])>=1){
  558. if ($dbdat['subcat']==1) $catopt['cname'] = "&nbsp;--&nbsp;".$catopt['cname'] ;
  559. switch ((int)$dbdat['openarea']) {
  560. case 0: $catopt['cname'] .= " &nbsp;[".constant('_MD_CONF2_FOLLOW')."]"; break;
  561. case 1: $catopt['cname'] .= " &nbsp;[".constant('_MD_CONF2_1OLOSE')."]"; break;
  562. case 2: $catopt['cname'] .= " &nbsp;[".constant('_MD_CONF2_2FRIEND')."]"; break;
  563. case 3: $catopt['cname'] .= " &nbsp;[".constant('_MD_CONF2_3FRIEND2')."]"; break;
  564. case 10: $catopt['cname'] .= " &nbsp;[".constant('_MD_CONF2_10GROUP')."]"; break;
  565. case 20: $catopt['cname'] .= " &nbsp;[".constant('_MD_CONF2_20PERSON')."]"; break;
  566. case 100: $catopt['cname'] .= " &nbsp; [".constant('_MD_CONF2_100HIDE')."]"; break;
  567. default:
  568. }
  569. }
  570. $catopt['corder'] = $dbdat['corder'];
  571. $catopt['openarea'] = $dbdat['openarea'];
  572. $catopt['blogtype'] = $dbdat['blogtype'];
  573. $catopt['dohtml'] = $dbdat['dohtml'];
  574. $cat_options[] = $catopt;
  575. }
  576. }
  577. return $cat_options;
  578. }
  579. function d3diary_readdb_photo($mydirname){
  580. global $diary, $photoObj, $xoopsDB, $myts, $func;
  581. global $form_photos, $del_pid;
  582. $photoObj->bids = array( intval($diary->bid) ) ;
  583. $photoObj->readdb_mul($mydirname) ;
  584. $rtn_photo = array() ;
  585. $i = 0 ;
  586. $_photos = !empty($photoObj->photos[$diary->bid]) ? $photoObj->photos[$diary->bid] : array() ;
  587. $num_photos = count($_photos) ;
  588. if ( 0 < $num_photos ) {
  589. foreach ( $_photos as $_photo) {
  590. if (!empty( $_photo['info'] )) {
  591. $_photo['pinfo'] = $myts->makeTboxData4Show( $_photo['info'] );
  592. $_photo['info'] = $func->stripPb_Tarea( $_photo['info'] );
  593. } elseif ( !empty($form_photos[$i]['info']) and ($form_photos[$i]['pid'] != $del_pid) ) {
  594. $_photo['pinfo'] = $myts->makeTboxData4Show( $form_photos[$i]['info'] );
  595. $_photo['info'] = $func->stripPb_Tarea( $form_photos[$i]['info'] );
  596. }
  597. if ( strstr( $diary->diary, $_photo['pname'] )) {
  598. $_photo['body_in'] = true;
  599. }
  600. $rtn_photo[] = $_photo;
  601. $i++;
  602. }
  603. }
  604. return array( $num_photos , $rtn_photo );
  605. }
  606. function d3diary_checkphoto($mydirname){
  607. global $diary, $xoopsOption, $mod_config, $eparam;
  608. $totalsize=0;
  609. for($i=0;$i<$eparam['postmax'];$i++){
  610. /* check filesize */
  611. $totalsize+=intval($_FILES['filename']['size'][$i]);
  612. if(!empty($_FILES['filename']['name'][$i])){
  613. if($_FILES['filename']['size'][$i] <=0){
  614. return _MD_NOFILE.":photo(".$i.")";
  615. }
  616. /* check filetype */
  617. $ptype = strrchr($_FILES['filename']['name'][$i], ".");
  618. if(strcasecmp($ptype, ".png")!=0 and strcasecmp($ptype, ".jpg")!=0 and
  619. strcasecmp($ptype, ".jpeg")!=0 and strcasecmp($ptype, ".gif")!=0){
  620. return _MD_IVTYPE.":photo(".$i.")";
  621. }
  622. list($width, $height, $type, $attr) = getimagesize($_FILES['filename']['tmp_name'][$i]);
  623. if($type <= 0 or $type >=4){
  624. return _MD_IVTYPE.":photo(".$i.")";
  625. }
  626. }
  627. }
  628. if($totalsize > ($mod_config['photo_maxsize']*1024)){
  629. return _MD_SIZEOVER;
  630. }
  631. }
  632. function d3diary_prevphoto($mydirname){
  633. global $photoObj, $diary, $xoopsOption, $func, $myts, $eparam;
  634. global $yd_data, $form_photos, $del_pid, $psels, $pinfo ;
  635. $prevdir = $eparam['previewdir'] ;
  636. $updir = $eparam['uploaddir'].$prevdir;
  637. $photoObj->uid=$diary->uid;
  638. $photoObj->bid=$diary->bid;
  639. /* create dir */
  640. // $updir = XOOPS_ROOT_PATH.'/modules/'.$mydirname.'/upimg/'.$diary->uid;
  641. // if(!is_dir($updir)){
  642. // if(!mkdir($updir)){
  643. // redirect_header(XOOPS_URL.'/index.php',3,_MD_MKDIRERR);
  644. // }
  645. // }
  646. $prevphotos = array();
  647. $arr_prevphotos = array();
  648. // for re-preview photos uploaded by last preview
  649. if (!empty($form_photos) ){
  650. $i=0;
  651. while ($i < count($form_photos)){
  652. $trim_pname = str_replace($prevdir, "", $form_photos[$i]['pname']);
  653. $trim_pid = str_replace($prevdir, "", $form_photos[$i]['pid']);
  654. if ( ($trim_pname != $form_photos[$i]['pname'] ) and (strlen($trim_pid) != strlen($form_photos[$i]['pid']))
  655. and !in_array( $form_photos[$i]['pid'], $psels ) ){
  656. $prevphotos['prev'] = 1;
  657. $prevphotos['pid'] = $form_photos[$i]['pid'];
  658. $prevphotos['pname'] = $form_photos[$i]['pname'];
  659. $prevphotos['thumbnail'] = $prevdir."t_".$trim_pname;
  660. $prevphotos['info'] = $func->stripPb_Tarea( $myts->stripslashesGPC($form_photos[$i]['info']) );
  661. $prevphotos['pinfo'] = $myts->makeTboxData4Show( $myts->stripslashesGPC($form_photos[$i]['info']) );
  662. $arr_prevphotos[] = $prevphotos;
  663. $yd_data['photo_num']++;
  664. }
  665. $i++;
  666. }
  667. }
  668. // uploaded photos at this time
  669. list( $photo_num , $prev_photo ) = d3diary_process_uploaded_photo( $mydirname , $updir) ;
  670. foreach ( $prev_photo as $p_photo) {
  671. $p_photo['prev'] = 1 ;
  672. $p_photo['pid'] = $prevdir.$p_photo['pid'];
  673. $p_photo['pname'] = $prevdir.$p_photo['pname'];
  674. $p_photo['thumbnail'] = $prevdir.$p_photo['thumbnail'] ;
  675. $_tmp_pinfo = $p_photo['info'] ;
  676. $p_photo['info'] = $func->stripPb_Tarea( $_tmp_pinfo );
  677. $p_photo['pinfo'] = $myts->makeTboxData4Show( $_tmp_pinfo );
  678. $arr_prevphotos[] = $p_photo;
  679. }
  680. return array( $yd_data['photo_num'] + $photo_num , $arr_prevphotos ) ;
  681. }
  682. function d3diary_regphoto($mydirname, $prev=""){
  683. global $photoObj, $diary, $xoopsOption, $d3dConf, $eparam;
  684. global $yd_data, $form_photos, $pinfo, $psels ;
  685. $updir = $eparam['uploaddir'] ;
  686. $prevdir = $eparam['previewdir'] ;
  687. $photoObj->uid=$diary->uid;
  688. $photoObj->bid=$diary->bid;
  689. /* create dir */
  690. // $updir = XOOPS_ROOT_PATH.'/modules/'.$mydirname.'/upimg/'.$diary->uid;
  691. // if(!is_dir($updir)){
  692. // if(!mkdir($updir)){
  693. // redirect_header(XOOPS_URL.'/index.php',3,_MD_MKDIRERR);
  694. // }
  695. // }
  696. $prevphotos = array();
  697. $arr_prevphotos = array();
  698. if ($prev=="is_prev"){
  699. $updir = $updir.$prevdir;
  700. }
  701. // for re-preview photos uploaded by preview
  702. if (!empty($form_photos) && $eparam['was_prev']==1 ){
  703. $i=0;
  704. while ($i < count($form_photos)){
  705. $trim_pname = str_replace($prevdir, "", $form_photos[$i]['pname']);
  706. $trim_pid = str_replace($prevdir, "", $form_photos[$i]['pid']);
  707. if (( $trim_pname != $form_photos[$i]['pname'] ) and (strlen($trim_pid) != strlen($form_photos[$i]['pid']) )){
  708. $photoObj->pid = $trim_pid;
  709. $photoObj->ptype = strrchr($trim_pname, ".");
  710. $f_from = $updir.$prevdir.$photoObj->pid.$photoObj->ptype;
  711. $f_to = $updir.$photoObj->pid.$photoObj->ptype;
  712. if (copy($f_from, $f_to)==true){
  713. unlink($f_from);
  714. } else {
  715. unlink($f_from);
  716. break;
  717. }
  718. $f_from = $updir.$prevdir.'t_'.$photoObj->pid.$photoObj->ptype;
  719. $f_to = $updir.'t_'.$photoObj->pid.$photoObj->ptype;
  720. if (copy($f_from, $f_to)==true){
  721. unlink($f_from);
  722. } else {
  723. unlink($f_from);
  724. break;
  725. }
  726. $photoObj->info = $form_photos[$i]['info'];
  727. $photoObj->insertdb($mydirname);
  728. }
  729. $i++;
  730. }
  731. }
  732. list( $photo_num , $reg_photos ) = d3diary_process_uploaded_photo( $mydirname , $updir) ;
  733. foreach ( $reg_photos as $reg_photo ) {
  734. $photoObj->pid = $reg_photo['pid'] ;
  735. $photoObj->ptype = $reg_photo['ptype'] ;
  736. $photoObj->info = $reg_photo['info'];
  737. $photoObj->insertdb($mydirname);
  738. }
  739. return array ( $photo_num , $reg_photos ) ;
  740. }
  741. function d3diary_swap_photoinfo (){
  742. global $yd_photo, $form_photos, $myts, $func ;
  743. $i=0;
  744. while ($i < count($form_photos)){
  745. $yd_photo[$i]['pinfo'] = $myts->makeTboxData4Show( $myts->stripslashesGPC($form_photos[$i]['info']) );
  746. $yd_photo[$i]['info'] = $func->stripPb_Tarea( $myts->stripslashesGPC($form_photos[$i]['info']) );
  747. $i++;
  748. }
  749. }
  750. function d3diary_update_photoinfo ( $mydirname ){
  751. global $photoObj, $form_photos ;
  752. $i=0;
  753. while ($i < count($form_photos)){
  754. $photoObj->pid = $form_photos[$i]['pid'];
  755. $photoObj->readdb($mydirname);
  756. if ( $photoObj->info != $form_photos[$i]['info'] ){
  757. $photoObj->info = $form_photos[$i]['info'];
  758. $photoObj->updatedb($mydirname);
  759. }
  760. $i++;
  761. }
  762. }
  763. // to process submit or preview uploaded photos
  764. function d3diary_process_uploaded_photo( $mydirname , $updir){
  765. global $photoObj, $diary, $xoopsOption, $mod_config, $eparam;
  766. global $yd_data, $pinfo ;
  767. $photo_num = 0 ; $arr_prevphotos = array() ;
  768. for($i=0;$i<=$eparam['postmax'];$i++){
  769. if(!empty($_FILES['filename']['name'][$i])){
  770. /* set timestamp to pid */
  771. //$photoObj->pid = md5(uniqid(rand(),1));
  772. $photoObj->pid = substr("0".(string)$i, -2). md5(uniqid(rand(),1));
  773. $photoObj->ptype = strrchr($_FILES['filename']['name'][$i], ".");
  774. $photoObj->info = $pinfo[$i];
  775. if(strcasecmp($photoObj->ptype, ".png")!=0 and strcasecmp($photoObj->ptype, ".jpg")!=0 and
  776. strcasecmp($photoObj->ptype, ".jpeg")!=0 and strcasecmp($photoObj->ptype, ".gif")!=0){
  777. continue;
  778. }
  779. list($width, $height, $type, $attr) = getimagesize($_FILES['filename']['tmp_name'][$i]);
  780. /* move */
  781. $uploadfile = $updir.$photoObj->pid.$photoObj->ptype;
  782. if (!move_uploaded_file($_FILES['filename']['tmp_name'][$i], $uploadfile)) {
  783. // redirect_header( XOOPS_URL.'/modules/'.$mydirname.'/index.php',3,_MD_IVFILE);
  784. }
  785. /* create thumbnail*/
  786. $th_file = $updir.'t_'.$photoObj->pid.$photoObj->ptype;
  787. if($type == 1){
  788. $src_id = imagecreatefromgif($uploadfile);
  789. } elseif($type == 2){
  790. $src_id = imagecreatefromjpeg($uploadfile);
  791. } else {
  792. $src_id = imagecreatefrompng($uploadfile);
  793. }
  794. if($mod_config['photo_useresize']==1){
  795. // shrink large size data(640px)
  796. if($width>640 or $height>640){
  797. if($width >= $height){
  798. $th_width = 640;
  799. $th_height = $height * $th_width / $width;
  800. } else {
  801. $th_height = 640;
  802. $th_width = $width * $th_height / $height;
  803. }
  804. $dst_id = imagecreatetruecolor($th_width, $th_height);
  805. imagecopyresampled($dst_id, $src_id, 0, 0, 0, 0, $th_width, $th_height, $width, $height);
  806. if($type == 1){
  807. imagegif($dst_id, $uploadfile);
  808. } elseif($type == 2){
  809. imagejpeg($dst_id, $uploadfile);
  810. } else {
  811. imagepng($dst_id, $uploadfile);
  812. }
  813. imagedestroy($dst_id);
  814. }
  815. }
  816. // make sumbnail and save
  817. if($width>$eparam['th_size'] or $height>$eparam['th_size']){
  818. if($width >= $height){
  819. $th_width = $eparam['th_size'];
  820. $th_height = $height * $th_width / $width;
  821. } else {
  822. $th_height = $eparam['th_size'];
  823. $th_width = $width * $th_height / $height;
  824. }
  825. }else{
  826. $th_width = $width;
  827. $th_height = $height;
  828. }
  829. $dst_id = imagecreatetruecolor($th_width, $th_height);
  830. imagecopyresampled($dst_id, $src_id, 0, 0, 0, 0, $th_width, $th_height, $width, $height);
  831. if($type == 1){
  832. imagegif($dst_id, $th_file);
  833. } elseif($type == 2){
  834. imagejpeg($dst_id, $th_file);
  835. } else {
  836. imagepng($dst_id, $th_file);
  837. }
  838. imagedestroy($src_id);
  839. imagedestroy($dst_id);
  840. $prevphotos['pid'] = $photoObj->pid;
  841. $prevphotos['ptype'] = $photoObj->ptype;
  842. $prevphotos['pname'] = $photoObj->pid.$photoObj->ptype;
  843. $prevphotos['thumbnail'] = "t_".$photoObj->pid.$photoObj->ptype;
  844. $prevphotos['info'] = $photoObj->info;
  845. $arr_prevphotos[] = $prevphotos;
  846. $photo_num++;
  847. }
  848. }
  849. return array( $photo_num, $arr_prevphotos) ;
  850. }
  851. function d3diary_showform($mydirname){
  852. global $photoObj, $diary, $xoopsOption, $func, $myts, $mPerm, $gPerm, $eparam, $d3diary_header ;
  853. global $yd_data, $del_pname, $form_photos, $_oe, $mod_config;
  854. $yd_data['bid'] = $diary->bid;
  855. $yd_data['uid'] = $diary->uid;
  856. // preview or photodel
  857. if( $eparam['is_prev']==1 ){
  858. $yd_data['cid']=$func->getpost_param('cid');
  859. if($yd_data['cid']>0){
  860. $category =& D3diaryCategory::getInstance();
  861. $category->uid = $diary->uid;
  862. $category->cid = intval($yd_data['cid']);
  863. $category->readdb($mydirname);
  864. $yd_data['cname'] = htmlSpecialChars($category->cname, ENT_QUOTES);
  865. }else{
  866. $yd_data['cname'] = htmlSpecialChars($myts->stripslashesGPC($func->getpost_param('cname')), ENT_QUOTES);
  867. }
  868. $yd_data['title'] = htmlSpecialChars($myts->stripslashesGPC($func->getpost_param('title')), ENT_QUOTES);
  869. $yd_data['openarea'] = $func->getpost_param('openarea');
  870. $yd_data['dohtml'] = $func->getpost_param('dohtml');
  871. $yd_data['update_ping'] = intval($func->getpost_param('update_ping'));
  872. $yd_data['diary'] = $func->stripPb_Tarea($myts->stripslashesGPC($func->getpost_param('diary')), $yd_data['dohtml']);
  873. $yd_data['diary4edit']= htmlSpecialChars($myts->stripslashesGPC($func->getpost_param('diary')), ENT_QUOTES);
  874. } else {
  875. $yd_data['cid'] = $diary->cid;
  876. $yd_data['title'] = htmlSpecialChars($diary->title, ENT_QUOTES);
  877. $yd_data['diary'] = $yd_data['diary4edit'] =htmlSpecialChars($diary->diary, ENT_QUOTES);
  878. $yd_data['openarea']=$diary->openarea; // naao added
  879. $yd_data['dohtml'] = $diary->dohtml;
  880. }
  881. if ($func->getpost_param('reg_time')) { //post by specified time
  882. $yd_data['reg_time'] = 1;
  883. d3diary_reg_time();
  884. $tmp_time = $yd_data['create_time_unformat'];
  885. } elseif(!empty($diary->create_time)){ //existing posted time
  886. $yd_data['create_time'] = $diary->create_time;
  887. $ctime = preg_split("/[-: ]/", $diary->create_time);
  888. $tmp_time = mktime($ctime[3],$ctime[4],$ctime[5],$ctime[1],$ctime[2],$ctime[0]);
  889. $yd_data['create_time_unformat'] = $tmp_time;
  890. } else {
  891. $tmp_time = time();
  892. }
  893. $week = intval($func->myformatTimestamp($tmp_time, "w"));
  894. $yd_data['year'] = $func->myformatTimestamp($tmp_time, "Y");
  895. $yd_data['month'] = intval($func->myformatTimestamp($tmp_time, "m"));
  896. $yd_data['day'] = intval($func->myformatTimestamp($tmp_time, "d"));
  897. $yd_data['time'] = $func->myformatTimestamp($tmp_time, "H:i");
  898. list( $arr_weeks, $arr_monthes, $arr_dclass, $arr_wclass ) = $func->initBoxArr();
  899. $yd_data['week'] = $arr_weeks [$week];
  900. $yd_data['b_month'] = $arr_monthes [$yd_data['month'] -1];
  901. $yd_data['dclass'] = $arr_dclass [$week];
  902. $yd_data['wclass'] = $arr_wclass [$week];
  903. $yd_data['group_list'] = array();
  904. $_oe = (int)$mod_config['use_open_entry'];
  905. if( $_oe == 10 || $_oe == 20 ) {
  906. $g_selcted = explode( "|", trim( $diary->vgids ,"|" ) );
  907. $group_list = array();
  908. foreach ( $gPerm->group_list as $_gid => $_name) {
  909. if($_gid >= 4 && (in_array($_gid, $mPerm->mygids) || $mPerm->isadmin)){
  910. $group_list[$_gid]['gname'] = $_name;
  911. $group_list[$_gid]['gsel'] = (in_array( $_gid, $g_selcted )) ? 1 : 0;
  912. }
  913. }
  914. $yd_data['group_list'] = $group_list;
  915. }
  916. if( $_oe == 20 ) {
  917. $p_selcted = array_map("intval", explode( "|", trim( $diary->vpids ,"|" )) );
  918. $pperm_list = implode( "," , $p_selcted ) ;
  919. $yd_data['pperm_list'] = $pperm_list;
  920. $unames = array(); $names = array();
  921. foreach ($p_selcted as $vpid) {
  922. if( $vpid >1 ) {
  923. $rtn = $func->get_xoopsuname($vpid);
  924. $uname = $rtn['uname'];
  925. $name = (!empty($rtn['name'])) ? $rtn['name'] : "" ;
  926. $unames[] = htmlspecialchars( $uname.'['.$vpid.'] ', ENT_QUOTES );
  927. $names[] = htmlspecialchars( $name.'['.$vpid.'] ', ENT_QUOTES );
  928. }
  929. }
  930. if( $mod_config['use_name'] == 1 ) {
  931. $yd_data['pperm_names'] = $names;
  932. } else {
  933. $yd_data['pperm_names'] = $unames;
  934. }
  935. }
  936. }
  937. function d3diary_get_smilylist(){
  938. global $xoopsDB;
  939. $sql = "SELECT *
  940. FROM ".$xoopsDB->prefix('smiles')."
  941. WHERE display='1'";
  942. $result = $xoopsDB->query($sql);
  943. $smilylist=_MD_SMILY_MENU;
  944. $smilylist.="&nbsp;[<a href='#moresmiley' onclick='javascript:openWithSelfMain(\"".XOOPS_URL."/misc.php?action=showpopups&amp;type=smilies&amp;target=diary\",\"smilies\",300,475);'>"._MD_MORE."</a>]<br />";
  945. $i=0;
  946. while ( $dbdat = $xoopsDB->fetchArray($result) ) {
  947. $smilylist.="<img onclick='xoopsCodeSmilie(\"diary\", \" ".$dbdat['code']." \");' onmouseover='style.cursor=\"hand\"' src='".XOOPS_URL."/uploads/".$dbdat['smile_url']."' alt='".$dbdat['emotion']."' />";
  948. $i++;
  949. if($i>=20){
  950. $i=0;
  951. $smilylist.="<br />";
  952. }
  953. }
  954. return $smilylist;
  955. }
  956. function d3diary_regtags($mydirname){
  957. global $xoopsDB, $tag, $diary, $func ;
  958. $post_tags = $func->getpost_param('tags');
  959. if(!empty($post_tags)) {
  960. if (function_exists('mb_convert_kana')){
  961. preg_match_all("/\[(.+)\]/U", mb_convert_kana($post_tags, 'asKV'), $tags);
  962. } else {
  963. preg_match_all("/\[(.+)\]/U", $post_tags, $tags);
  964. }
  965. $arr_tags = array_unique($tags[1]);
  966. } else {
  967. $arr_tags = array();
  968. }
  969. $sql = "SELECT *
  970. FROM ".$xoopsDB->prefix($mydirname.'_tag')."
  971. WHERE bid='".intval($diary->bid)."'";
  972. $result = $xoopsDB->query($sql);
  973. $db_tags = array();
  974. while ( $dbdat = $xoopsDB->fetchArray($result) ) {
  975. $db_tags[] = $dbdat['tag_name'];
  976. if(!in_array($dbdat['tag_name'],$arr_tags)){
  977. // delete the tag
  978. $tag->tag_id = $dbdat['tag_id'];
  979. $tag->deletedb($mydirname);
  980. }
  981. }
  982. foreach ($arr_tags as $post_tag) {
  983. if(!in_array($post_tag, $db_tags)){
  984. //insert db
  985. $tag->bid = intval($diary->bid);
  986. $tag->uid = intval($diary->uid);
  987. $tag->tag_name = $post_tag;
  988. $tag->insertdb($mydirname);
  989. }
  990. }
  991. }
  992. function d3diary_ping_send($blogtitle, $blogtopurl) {
  993. global $mod_config;
  994. if (!empty($mod_config['updateping_url'])) {
  995. $arr_ping_servers = explode("\n", $mod_config['updateping_url']);
  996. $arr_ping_servers = array_map("trim" ,$arr_ping_servers);
  997. $arr_ping_servers2 = array_map("parse_url" ,$arr_ping_servers);
  998. $ping = array();
  999. foreach ($arr_ping_servers2 as $ping_server){
  1000. $ping[$ping_server['host']] = $ping_server['path'] ;
  1001. }
  1002. $param = array(
  1003. new XML_RPC_Value($blogtitle, 'string'),
  1004. new XML_RPC_Value($blogtopurl, 'string')
  1005. );
  1006. $msg=new XML_RPC_Message('weblogUpdates.ping', $param);
  1007. foreach($ping as $pingServer => $pingPath) {
  1008. $client = new XML_RPC_Client($pingPath, $pingServer, 80);
  1009. $response = $client->send($msg);
  1010. if(!$response) {
  1011. echo "timeout : ".$pingServer."<br />\n";
  1012. }elseif($response->faultCode()) {
  1013. echo "failed : ".$pingServer."<br />\n";
  1014. }else {
  1015. echo "success!! : ".$pingServer."<br />\n";
  1016. }
  1017. }
  1018. }
  1019. }
  1020. function d3diary_reg_time(){
  1021. global $diary, $yd_data, $func;
  1022. if ($func->getpost_param('reg_time')) {
  1023. $pub = $func->getpost_param('published');
  1024. $pub = array_map('intval', $pub);
  1025. $tmp_time = mktime($pub['Time_Hour'],$pub['Time_Minute'],0,$pub['Date_Month'],$pub['Date_Day'],$pub['Date_Year']);
  1026. $yd_data['create_time_unformat'] = $tmp_time;
  1027. $yd_data['create_time'] = date("Y-m-d H:i:s", $tmp_time);
  1028. $diary->create_time = $yd_data['create_time'];
  1029. }
  1030. }
  1031. ?>