Esempio n. 1
0
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;
}
Esempio n. 2
0
         } 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);
Esempio n. 3
0
        $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));
Esempio n. 4
0
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;
}
Esempio n. 5
0
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;
}