function block_updateitem($bid, $items = array()) { global $_G; $block = $_G['block'][$bid]; if (!$block) { if (!($block = C::t('common_block')->fetch($bid))) { return false; } $_G['block'][$bid] = $block; } $block['shownum'] = max($block['shownum'], 1); $showlist = array(); $archivelist = array(); $prelist = array(); $oldvalue = $fixedvalue = $fixedkeys = array(); foreach (C::t('common_block_item')->fetch_all_by_bid($bid, true) as $value) { $key = $value['idtype'] . '_' . $value['id']; if ($value['itemtype'] == '1') { $fixedvalue[$value['displayorder']][] = $value; $fixedkeys[$key] = 1; continue; } elseif (!isset($oldvalue[$key])) { $oldvalue[$key] = $value; } else { $archivelist[$value['itemid']] = 1; } } $processkeys = array(); $itemcount = count($items); for ($k = 0; $k < $itemcount; $k++) { $v = $items[$k]; $key = $v['idtype'] . '_' . $v['id']; if (isset($fixedkeys[$key])) { $items[$k] = null; } elseif (isset($oldvalue[$key]) && !isset($processkeys[$key])) { if ($oldvalue[$key]['itemtype'] == '2') { $items[$k] = $oldvalue[$key]; } else { $items[$k]['itemid'] = $oldvalue[$key]['itemid']; } unset($oldvalue[$key]); $processkeys[$key] = 1; } elseif (isset($processkeys[$key])) { unset($items[$k]); } } $items = array_filter($items); foreach ($oldvalue as $value) { $archivelist[$value['itemid']] = 1; } for ($i = 1; $i <= $block['shownum']; $i++) { $jump = false; if (isset($fixedvalue[$i])) { foreach ($fixedvalue[$i] as $value) { if ($value['startdate'] > TIMESTAMP) { $prelist[] = $value; } elseif ((!$value['startdate'] || $value['startdate'] <= TIMESTAMP) && (!$value['enddate'] || $value['enddate'] > TIMESTAMP)) { $showlist[] = $value; $jump = true; } else { $archivelist[$value['itemid']] = 1; } } } if (!$jump) { $curitem = array(); if (!($curitem = array_shift($items))) { break; } $curitem['displayorder'] = $i; $curitem['makethumb'] = 0; if ($block['picwidth'] && $block['picheight'] && $curitem['picflag']) { //picflag=0为url地址 $thumbpath = empty($curitem['thumbpath']) ? block_thumbpath($block, $curitem) : $curitem['thumbpath']; if ($_G['setting']['ftp']['on']) { if (empty($ftp) || empty($ftp->connectid)) { $ftp =& discuz_ftp::instance(); $ftp->connect(); } if ($ftp->ftp_size($thumbpath) > 0) { $curitem['makethumb'] = 1; $curitem['picflag'] = 2; } } else { if (file_exists($_G['setting']['attachdir'] . $thumbpath)) { $curitem['makethumb'] = 1; $curitem['picflag'] = 1; } } $curitem['thumbpath'] = $thumbpath; } if (is_array($curitem['fields'])) { $curitem['fields'] = serialize($curitem['fields']); } $showlist[] = $curitem; } } foreach ($items as $value) { if (!empty($value['itemid'])) { $archivelist[$value['itemid']] = 1; } } if ($archivelist) { $delids = array_keys($archivelist); C::t('common_block_item')->delete_by_itemid_bid($delids, $bid); block_delete_pic($bid, $delids); } $inserts = $itemlist = array(); $itemlist = array_merge($showlist, $prelist); C::t('common_block_item')->insert_batch($bid, $itemlist); $showlist = array_filter($showlist); return $showlist; }
} elseif ($value['datatype'] == 'date') { $_POST[$key] = strtotime($_POST[$key]); } else { $_POST[$key] = $_POST[$key]; } $item['fields'][$key] = $_POST[$key]; } } if (isset($item['fields']['fulltitle'])) { $item['fields']['fulltitle'] = $item['title']; } $item['fields'] = serialize($item['fields']); $item['title'] = cutstr($item['title'], $block['param']['titlelength'], ''); if ($_POST['icflag']) { $item['makethumb'] = 1; $item['thumbpath'] = block_thumbpath($block, $item); } if (submitcheck('itemsubmit')) { if ($op == 'additem' && !$item['id']) { $item['id'] = ($pushid = intval($_POST['push_id'])) ? $pushid : mt_rand(1, 9999); $item['idtype'] = 'rand'; } if ($item['startdate'] > $_G['timestamp']) { C::t('common_block_item')->insert($item, false, true); } elseif (empty($item['enddate']) || $item['enddate'] > $_G['timestamp']) { C::t('common_block_item')->delete_by_bid_displayorder($bid, $item['displayorder']); C::t('common_block_item')->insert($item, false, true); } else { C::t('common_block_item')->delete_by_itemid_bid($item['itemid'], $bid); } block_updatecache($bid, true);
$cboxheight = $_GET['height'] > 50 ? intval($_GET['height']) : 300; $cbgboxwidth = $cboxwidth + 300; $cbgboxheight = $cboxheight + 300; $dragpt = ($cbgboxwidth - $cboxwidth) / 2; $dragpl = ($cbgboxheight - $cboxheight) / 2; } else { $prefix = $_GET['picflag'] == 2 ? $_G['setting']['ftp']['attachurl'] : $_G['setting']['attachurl']; } include_once template("common/misc_imgcropper"); } else { $cropfile = md5($_GET['cutimg']) . '.jpg'; $ictype = $_GET['ictype']; if ($ictype == 'block') { require_once libfile('function/block'); $block = C::t('common_block')->fetch($_GET['bid']); $cropfile = block_thumbpath($block, array('picflag' => intval($_GET['picflag']), 'pic' => $_GET['cutimg'])); $cutwidth = $block['picwidth']; $cutheight = $block['picheight']; } else { $cutwidth = $_GET['cutwidth']; $cutheight = $_GET['cutheight']; } $top = intval($_GET['cuttop'] < 0 ? 0 : $_GET['cuttop']); $left = intval($_GET['cutleft'] < 0 ? 0 : $_GET['cutleft']); $picwidth = $cutwidth > $_GET['picwidth'] ? $cutwidth : $_GET['picwidth']; $picheight = $cutheight > $_GET['picheight'] ? $cutheight : $_GET['picheight']; require_once libfile('class/image'); $image = new image(); $prefix = $_GET['picflag'] == 2 ? $_G['setting']['ftp']['attachurl'] : $_G['setting']['attachurl']; if (!$image->Thumb($prefix . $_GET['cutimg'], $cropfile, $picwidth, $picheight)) { showmessage('imagepreview_errorcode_' . $image->errorcode, null, null, array('showdialog' => true, 'closetime' => true));
function block_updateitem($bid, $items = array()) { global $_G; $block = $_G['block'][$bid]; if (!$block) { $block = DB::fetch_first('SELECT * FROM ' . DB::table('common_block') . " WHERE bid='{$bid}'"); if (!$block) { return false; } $_G['block'][$bid] = $block; } $block['shownum'] = max($block['shownum'], 1); $showlist = array(); $archivelist = array(); $prelist = array(); $query = DB::query('SELECT * FROM ' . DB::table('common_block_item') . " WHERE bid='{$bid}' ORDER BY displayorder, itemtype DESC"); $oldvalue = $fixedvalue = $fixedkeys = array(); while ($value = DB::fetch($query)) { $key = $value['idtype'] . '_' . $value['id']; if ($value['itemtype'] == '1') { $fixedvalue[$value['displayorder']][] = $value; $fixedkeys[$key] = 1; continue; } else { $oldvalue[$key] = $value; } } $itemcount = count($items); for ($k = 0; $k < $itemcount; $k++) { $v = $items[$k]; $key = $v['idtype'] . '_' . $v['id']; if (isset($fixedkeys[$key])) { $items[$k] = null; } elseif (isset($oldvalue[$key])) { if ($oldvalue[$key]['itemtype'] == '2') { $items[$k] = $oldvalue[$key]; } else { $items[$k]['itemid'] = $oldvalue[$key]['itemid']; } unset($oldvalue[$key]); } } $items = array_filter($items); foreach ($oldvalue as $value) { $archivelist[$value['itemid']] = 1; } for ($i = 1; $i <= $block['shownum']; $i++) { $jump = false; if (isset($fixedvalue[$i])) { foreach ($fixedvalue[$i] as $value) { if ($value['startdate'] > TIMESTAMP) { $prelist[] = $value; } elseif ((!$value['startdate'] || $value['startdate'] <= TIMESTAMP) && (!$value['enddate'] || $value['enddate'] > TIMESTAMP)) { $showlist[] = $value; $jump = true; } else { $archivelist[$value['itemid']] = 1; } } } if (!$jump) { $curitem = array(); if (!($curitem = array_shift($items))) { break; } $curitem['displayorder'] = $i; $curitem['makethumb'] = 0; /*vot*/ if ($block['picwidth'] && $block['picheight'] && $curitem['picflag']) { //picflag=0 for the local Url address $thumbpath = empty($curitem['thumbpath']) ? block_thumbpath($block, $curitem) : $curitem['thumbpath']; if ($_G['setting']['ftp']['on']) { if (empty($ftp) || empty($ftp->connectid)) { require_once libfile('class/ftp'); $ftp =& discuz_ftp::instance(); $ftp->connect(); } if ($ftp->ftp_size($thumbpath) > 0) { $curitem['makethumb'] = 1; $curitem['picflag'] = 2; } } else { if (file_exists($_G['setting']['attachdir'] . $thumbpath)) { $curitem['makethumb'] = 1; $curitem['picflag'] = 1; } } $curitem['thumbpath'] = $thumbpath; } if (is_array($curitem['fields'])) { $curitem['fields'] = serialize($curitem['fields']); } $showlist[] = $curitem; } } foreach ($items as $value) { if (!empty($value['itemid'])) { $archivelist[$value['itemid']] = 1; } } if ($archivelist) { $delids = array_keys($archivelist); DB::query('DELETE FROM ' . DB::table('common_block_item') . " WHERE bid='{$bid}' AND itemid IN (" . dimplode($delids) . ")"); block_delete_pic($bid, $delids); } $inserts = $itemlist = array(); $itemlist = array_merge($showlist, $prelist); foreach ($itemlist as $value) { if ($value) { $value = daddslashes($value); $inserts[] = "('{$value['itemid']}', '{$bid}', '{$value['itemtype']}', '{$value['id']}', '{$value['idtype']}', '{$value['title']}',\r\n\t\t\t\t '{$value['url']}', '{$value['pic']}', '{$value['picflag']}', '{$value['makethumb']}', '{$value['thumbpath']}', '{$value['summary']}',\r\n\t\t\t\t '{$value['showstyle']}', '{$value['related']}', '{$value['fields']}', '{$value['displayorder']}', '{$value['startdate']}', '{$value['enddate']}')"; } } if ($inserts) { DB::query('REPLACE INTO ' . DB::table('common_block_item') . "(itemid, bid, itemtype, id, idtype, title, url, pic, picflag, makethumb, thumbpath, summary, showstyle, related, `fields`, displayorder, startdate, enddate) VALUES " . implode(',', $inserts)); } $showlist = array_filter($showlist); return $showlist; }
function block_updateitem($bid, $items = array()) { global $_G; $block = $_G['block'][$bid]; if (!$block) { $block = DB::fetch_first('SELECT * FROM ' . DB::table('common_block') . " WHERE bid='{$bid}'"); $_G['block'][$bid] = $block; } if (!$block) { return false; } $block['shownum'] = max($block['shownum'], 1); $showlist = array_fill(1, $block['shownum'], array()); $archivelist = array(); $prelist = array(); $manualkeys = array(); $autokeys = array(); $modlist = array(); $query = DB::query('SELECT * FROM ' . DB::table('common_block_item') . " WHERE bid='{$bid}'"); while ($value = DB::fetch($query)) { $key = $value['idtype'] . '_' . $value['id']; if ($value['itemtype'] == '1') { if ($value['startdate'] > TIMESTAMP) { $prelist[] = $value; } elseif ((!$value['startdate'] || $value['startdate'] <= TIMESTAMP) && (!$value['enddate'] || $value['enddate'] > TIMESTAMP)) { $showlist[$value['displayorder']] = $value; $key = $value['idtype'] . '_' . $value['id']; $manualkeys[$key] = true; } else { $archivelist[$value['itemid']] = $value; } } elseif ($value['itemtype'] == '2') { $modlist[$key] = $value; $archivelist[$value['itemid']] = $value; } else { $archivelist[$value['itemid']] = $value; $autokeys[$key] = $value['itemid']; } } $itemindex = 0; for ($i = 1; $i <= $block['shownum']; $i++) { if ($showlist[$i]) { if ($block['picwidth'] && $block['picheight']) { if (file_exists($_G['setting']['attachdir'] . block_thumbpath($block, $showlist[$i]))) { $showlist[$i]['makethumb'] = 1; } else { $showlist[$i]['makethumb'] = 0; } } } else { $key = $items[$itemindex]['idtype'] . '_' . $items[$itemindex]['id']; while (!empty($manualkeys[$key])) { $itemindex++; $key = $items[$itemindex]['idtype'] . '_' . $items[$itemindex]['id']; } if (!isset($items[$itemindex])) { break; } if (isset($modlist[$key])) { $modlist[$key]['displayorder'] = $i; $showlist[$i] = $modlist[$key]; } else { $items[$itemindex]['displayorder'] = $i; if ($block['picwidth'] && $block['picheight']) { if (file_exists($_G['setting']['attachdir'] . block_thumbpath($block, $items[$itemindex]))) { $items[$itemindex]['makethumb'] = 1; } else { $items[$itemindex]['makethumb'] = 0; } } $items[$itemindex]['fields'] = serialize($items[$itemindex]['fields']); $key = $items[$itemindex]['idtype'] . '_' . $items[$itemindex]['id']; if ($autokeys[$key]) { $items[$itemindex]['itemid'] = $autokeys[$key]; unset($archivelist[$autokeys[$key]]); } $showlist[$i] = $items[$itemindex]; } $itemindex++; } } if ($archivelist) { $delids = array_keys($archivelist); DB::query('DELETE FROM ' . DB::table('common_block_item') . " WHERE bid='{$bid}' AND itemid IN (" . dimplode($delids) . ")"); $inserts = array(); foreach ($archivelist as $value) { $value = daddslashes($value); $inserts[] = "('{$value['bid']}', '{$value['id']}', '{$value['idtype']}', '{$value['title']}',\n\t\t\t\t '{$value['url']}', '{$value['pic']}', '{$value['summary']}', '{$value['showstyle']}', '{$value['related']}',\n\t\t\t\t '{$value['fields']}', '{$value['displayorder']}', '{$value['startdate']}', '{$value['enddate']}', '{$value['picflag']}', '{$value['makethumb']}')"; } DB::query('REPLACE INTO ' . DB::table('common_block_item_archive') . "(bid, id, idtype, title, url, pic, summary, showstyle, related, `fields`, displayorder, startdate, enddate, picflag, makethumb) VALUES " . implode(',', $inserts)); } $inserts = $itemlist = array(); $itemlist = array_merge($showlist, $prelist); foreach ($itemlist as $value) { if ($value) { $value = daddslashes($value); $inserts[] = "('{$value['itemid']}', '{$bid}', '{$value['itemtype']}', '{$value['id']}', '{$value['idtype']}', '{$value['title']}',\n\t\t\t\t '{$value['url']}', '{$value['pic']}', '{$value['summary']}', '{$value['showstyle']}', '{$value['related']}',\n\t\t\t\t '{$value['fields']}', '{$value['displayorder']}', '{$value['startdate']}', '{$value['enddate']}', '{$value['picflag']}', '{$value['makethumb']}')"; } } if ($inserts) { DB::query('REPLACE INTO ' . DB::table('common_block_item') . "(itemid, bid, itemtype, id, idtype, title, url, pic, summary, showstyle, related, `fields`, displayorder, startdate, enddate, picflag, makethumb) VALUES " . implode(',', $inserts)); } $showlist = array_filter($showlist); return $showlist; }