153 lines
6.2 KiB
PHP
153 lines
6.2 KiB
PHP
|
<?php
|
||
|
|
||
|
/**
|
||
|
* [Discuz!] (C)2001-2099 Comsenz Inc.
|
||
|
* This is NOT a freeware, use is subject to license terms
|
||
|
*
|
||
|
* $Id: extend_thread_image.php 32709 2013-03-04 03:28:55Z zhangjie $
|
||
|
*/
|
||
|
|
||
|
if(!defined('IN_DISCUZ')) {
|
||
|
exit('Access Denied');
|
||
|
}
|
||
|
|
||
|
|
||
|
class extend_thread_image extends extend_thread_base {
|
||
|
|
||
|
public function after_newthread() {
|
||
|
$threadimageaid = 0;
|
||
|
$threadimage = array();
|
||
|
$tid = $this->tid;
|
||
|
$pid = $this->pid;
|
||
|
$fid = $this->forum['fid'];
|
||
|
if($this->param['special'] == 4 && $_GET['activityaid']) {
|
||
|
$threadimageaid = $_GET['activityaid'];
|
||
|
convertunusedattach($_GET['activityaid'], $tid, $pid);
|
||
|
}
|
||
|
$this->mobile_upload();
|
||
|
if(($this->group['allowpostattach'] || $this->group['allowpostimage']) && ($_GET['attachnew'] || $this->param['sortid'] || !empty($_GET['activityaid']))) {
|
||
|
updateattach($this->param['displayorder'] == -4 || $this->param['modnewthreads'], $tid, $pid, $_GET['attachnew']);
|
||
|
if(!$threadimageaid) {
|
||
|
$threadimage = C::t('forum_attachment_n')->fetch_max_image('tid:'.$tid, 'tid', $tid);
|
||
|
$threadimageaid = $threadimage['aid'];
|
||
|
}
|
||
|
}
|
||
|
|
||
|
$values = array('fid' => $fid, 'tid' => $tid, 'pid' => $pid, 'coverimg' => '');
|
||
|
$param = array();
|
||
|
if($this->forum['picstyle']) {
|
||
|
if(!setthreadcover($pid, 0, $threadimageaid) && !defined('IN_MOBILE')) {
|
||
|
$imglist = array();
|
||
|
preg_match_all("/(\[img\]|\[img=\d{1,4}[x|\,]\d{1,4}\])\s*([^\[\<\r\n]+?)\s*\[\/img\]/is", $this->param['message'], $imglist, PREG_SET_ORDER);
|
||
|
$values['coverimg'] = "<p id=\"showsetcover\">".lang('message', 'post_newthread_set_cover')."<span id=\"setcoverwait\"></span></p><script>if($('forward_a')){\$('forward_a').style.display='none';setTimeout(\"$('forward_a').style.display=''\", 5000);};ajaxget('forum.php?mod=ajax&action=setthreadcover&tid=$tid&pid=$pid&fid=$fid&imgurl={$imglist[0][2]}&newthread=1', 'showsetcover', 'setcoverwait')</script>";
|
||
|
$param['clean_msgforward'] = 1;
|
||
|
$param['timeout'] = $param['refreshtime'] = 15;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if($threadimageaid) {
|
||
|
if(!$threadimage) {
|
||
|
$threadimage = C::t('forum_attachment_n')->fetch('tid:'.$tid, $threadimageaid);
|
||
|
}
|
||
|
$threadimage = daddslashes($threadimage);
|
||
|
C::t('forum_threadimage')->insert(array(
|
||
|
'tid' => $tid,
|
||
|
'attachment' => $threadimage['attachment'],
|
||
|
'remote' => $threadimage['remote'],
|
||
|
));
|
||
|
}
|
||
|
|
||
|
$this->param['values'] = array_merge((array)$this->param['values'], $values);
|
||
|
$this->param['param'] = array_merge((array)$this->param['param'], $param);
|
||
|
}
|
||
|
private function mobile_upload() {
|
||
|
if($_GET['mobile'] == 'yes' && !empty($_FILES['Filedata'])) {
|
||
|
$forumattachextensions = '';
|
||
|
if($_G['forum']) {
|
||
|
$forum = $_G['forum'];
|
||
|
if($forum['status'] == 3 && $forum['level']) {
|
||
|
$levelinfo = C::t('forum_grouplevel')->fetch($forum['level']);
|
||
|
if($postpolicy = $levelinfo['postpolicy']) {
|
||
|
$postpolicy = dunserialize($postpolicy);
|
||
|
$forumattachextensions = $postpolicy['attachextensions'];
|
||
|
}
|
||
|
} else {
|
||
|
$forumattachextensions = $forum['attachextensions'];
|
||
|
}
|
||
|
if($forumattachextensions) {
|
||
|
$_G['group']['attachextensions'] = $forumattachextensions;
|
||
|
}
|
||
|
}
|
||
|
$upload = new forum_upload(1);
|
||
|
if($upload) {
|
||
|
$_GET['attachnew'][$upload->getaid] = array('description' => '');
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
public function after_newreply() {
|
||
|
$this->mobile_upload();
|
||
|
($this->group['allowpostattach'] || $this->group['allowpostimage']) && ($_GET['attachnew'] || $this->param['special'] == 2 && $_GET['tradeaid']) && updateattach($this->thread['displayorder'] == -4 || $this->param['modnewreplies'], $this->thread['tid'], $this->pid, $_GET['attachnew']);
|
||
|
}
|
||
|
|
||
|
public function before_editpost($parameters) {
|
||
|
global $_G;
|
||
|
$isfirstpost = $this->post['first'] ? 1 : 0;
|
||
|
$attachupdate = !empty($_GET['delattachop']) || ($this->group['allowpostattach'] || $this->group['allowpostimage']) && ($_GET['attachnew'] || $parameters['special'] == 2 && $_GET['tradeaid'] || $parameters['special'] == 4 && $_GET['activityaid'] || $isfirstpost && $parameters['sortid']);
|
||
|
|
||
|
if($attachupdate) {
|
||
|
updateattach($this->thread['displayorder'] == -4 || $_G['forum_auditstatuson'], $this->thread['tid'], $this->post['pid'], $_GET['attachnew'], $_GET['attachupdate'], $this->post['authorid']);
|
||
|
}
|
||
|
|
||
|
|
||
|
if($isfirstpost && $attachupdate) {
|
||
|
if(!$this->param['threadimageaid']) {
|
||
|
$this->param['threadimage'] = C::t('forum_attachment_n')->fetch_max_image('tid:'.$this->thread['tid'], 'pid', $this->post['pid']);
|
||
|
$this->param['threadimageaid'] = $this->param['threadimage']['aid'];
|
||
|
}
|
||
|
|
||
|
if($this->forum['picstyle']) {
|
||
|
if(empty($this->thread['cover'])) {
|
||
|
setthreadcover($this->post['pid'], 0, $this->param['threadimageaid']);
|
||
|
} else {
|
||
|
setthreadcover($this->post['pid'], $this->thread['tid'], 0, 1);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if($this->param['threadimageaid']) {
|
||
|
if(!$this->param['threadimage']) {
|
||
|
$this->param['threadimage'] = C::t('forum_attachment_n')->fetch_max_image('tid:'.$this->thread['tid'], 'tid', $this->thread['tid']);
|
||
|
}
|
||
|
C::t('forum_threadimage')->delete_by_tid($this->thread['tid']);
|
||
|
C::t('forum_threadimage')->insert(array(
|
||
|
'tid' => $this->thread['tid'],
|
||
|
'attachment' => $this->param['threadimage']['attachment'],
|
||
|
'remote' => $this->param['threadimage']['remote'],
|
||
|
));
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public function before_deletepost($parameters) {
|
||
|
$thread_attachment = $post_attachment = 0;
|
||
|
foreach(C::t('forum_attachment_n')->fetch_all_by_id('tid:'.$this->thread['tid'], 'tid', $this->thread['tid']) as $attach) {
|
||
|
if($attach['pid'] == $this->post['pid']) {
|
||
|
if($this->thread['displayorder'] >= 0) {
|
||
|
$post_attachment++;
|
||
|
}
|
||
|
dunlink($attach);
|
||
|
} else {
|
||
|
$thread_attachment = 1;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
$this->param['updatefieldarr']['attachment'] = array($thread_attachment);
|
||
|
|
||
|
if($post_attachment) {
|
||
|
C::t('forum_attachment')->delete_by_id('pid', $this->post['pid']);
|
||
|
DB::query("DELETE FROM ".DB::table(getattachtablebytid($this->thread['tid']))." WHERE pid='".$this->post['pid']."'", 'UNBUFFEREED');
|
||
|
updatecreditbyaction('postattach', $this->post['authorid'], array(), '', -$post_attachment);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
?>
|