extend_thread_image.php 6.15 KB
<?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);
		}
	}
}

?>