Example #1
0
 function linkage($field, $value)
 {
     $setting = string2array($this->fields[$field]['setting']);
     $datas = getcache($setting['linkageid'], 'linkage');
     $infos = $datas['data'];
     if ($setting['showtype'] == 1 || $setting['showtype'] == 3) {
         $result = get_linkage($value, $setting['linkageid'], $setting['space'], $setting['showtype']);
     } elseif ($setting['showtype'] == 2) {
         $result = $value;
     } else {
         $result = get_linkage($value, $setting['linkageid'], $setting['space'], 2);
     }
     return $result;
 }
Example #2
0
/**
 * 通过id获取显示联动菜单
 * @param  $linkageid 联动菜单ID
 * @param  $keyid 菜单keyid
 * @param  $space 菜单间隔符
 * @param  $tyoe 1 返回间隔符链接,完整路径名称 3 返回完整路径数组,2返回当前联动菜单名称,4 直接返回ID
 * @param  $result 递归使用字段1
 * @param  $infos 递归使用字段2
 */
function get_linkage($linkageid, $keyid, $space = '>', $type = 1, $result = array(), $infos = array())
{
    if ($space == '' || !isset($space)) {
        $space = '>';
    }
    if (!$infos) {
        $datas = getcache($keyid, 'linkage');
        $infos = $datas['data'];
    }
    if ($type == 1 || $type == 3 || $type == 4) {
        if (array_key_exists($linkageid, $infos)) {
            $result[] = $type == 1 ? $infos[$linkageid]['name'] : ($type == 4 ? $linkageid : $infos[$linkageid]);
            return get_linkage($infos[$linkageid]['parentid'], $keyid, $space, $type, $result, $infos);
        } else {
            if (count($result) > 0) {
                krsort($result);
                if ($type == 1 || $type == 4) {
                    $result = implode($space, $result);
                }
                return $result;
            } else {
                return $result;
            }
        }
    } else {
        return $infos[$linkageid]['name'];
    }
}
Example #3
0
 public function info_publish()
 {
     $memberinfo = $this->memberinfo;
     $grouplist = getcache('grouplist');
     $SEO['title'] = L('info_publish', '', 'info');
     //判断会员组是否允许投稿
     if (!$grouplist[$memberinfo['groupid']]['allowpost']) {
         showmessage(L('member_group') . L('publish_deny'), HTTP_REFERER);
     }
     //判断每日投稿数
     $this->content_check_db = pc_base::load_model('content_check_model');
     $todaytime = strtotime(date('y-m-d', SYS_TIME));
     $_username = $memberinfo['username'];
     $allowpostnum = $this->content_check_db->count("`inputtime` > {$todaytime} AND `username`='{$_username}'");
     if ($grouplist[$memberinfo['groupid']]['allowpostnum'] > 0 && $allowpostnum >= $grouplist[$memberinfo['groupid']]['allowpostnum']) {
         showmessage(L('allowpostnum_deny') . $grouplist[$memberinfo['groupid']]['allowpostnum'], HTTP_REFERER);
     }
     $siteids = getcache('category_content', 'commons');
     header("Cache-control: private");
     if (isset($_POST['dosubmit'])) {
         $catid = intval($_POST['info']['catid']);
         $siteid = $siteids[$catid];
         $CATEGORYS = getcache('category_content_' . $siteid, 'commons');
         $category = $CATEGORYS[$catid];
         $modelid = $category['modelid'];
         if (!$modelid) {
             showmessage(L('illegal_parameters'), HTTP_REFERER);
         }
         $this->content_db = pc_base::load_model('content_model');
         $this->content_db->set_model($modelid);
         $table_name = $this->content_db->table_name;
         $fields_sys = $this->content_db->get_fields();
         $this->content_db->table_name = $table_name . '_data';
         $fields_attr = $this->content_db->get_fields();
         $fields = array_merge($fields_sys, $fields_attr);
         $fields = array_keys($fields);
         $info = array();
         foreach ($_POST['info'] as $_k => $_v) {
             if (in_array($_k, $fields)) {
                 $info[$_k] = $_v;
             }
         }
         $post_fields = array_keys($_POST['info']);
         $post_fields = array_intersect_assoc($fields, $post_fields);
         $setting = string2array($category['setting']);
         if ($setting['presentpoint'] < 0 && $memberinfo['point'] < abs($setting['presentpoint'])) {
             showmessage(L('points_less_than', array('point' => $memberinfo['point'], 'need_point' => abs($setting['presentpoint']))), APP_PATH . 'index.php?m=pay&c=deposit&a=pay&exchange=point', 3000);
         }
         //判断会员组投稿是否需要审核
         if ($grouplist[$memberinfo['groupid']]['allowpostverify'] || !$setting['workflowid']) {
             $info['status'] = 99;
         } else {
             $info['status'] = 1;
         }
         $info['username'] = $memberinfo['username'];
         $this->content_db->siteid = $siteid;
         $id = $this->content_db->add_content($info);
         //检查投稿奖励或扣除积分
         $flag = $catid . '_' . $id;
         if ($setting['presentpoint'] > 0) {
             pc_base::load_app_class('receipts', 'pay', 0);
             receipts::point($setting['presentpoint'], $memberinfo['userid'], $memberinfo['username'], $flag, 'selfincome', L('contribute_add_point'), $memberinfo['username']);
         } else {
             pc_base::load_app_class('spend', 'pay', 0);
             spend::point($setting['presentpoint'], L('contribute_del_point'), $memberinfo['userid'], $memberinfo['username'], '', '', $flag);
         }
         //缓存结果
         $model_cache = getcache('model', 'commons');
         $infos = array();
         foreach ($model_cache as $modelid => $model) {
             if ($model['siteid'] == $siteid) {
                 $datas = array();
                 $this->content_db->set_model($modelid);
                 $datas = $this->content_db->select(array('username' => $memberinfo['username'], 'sysadd' => 0), 'id,catid,title,url,username,sysadd,inputtime,status', 100, 'id DESC');
             }
         }
         setcache('member_' . $memberinfo['userid'] . '_' . $siteid, $infos, 'content');
         //缓存结果 END
         if ($info['status'] == 99) {
             showmessage(L('contributors_success'), APP_PATH . 'index.php?m=member&c=content&a=info_top&id=' . $id . '&catid=' . $catid . '&msg=1');
         } else {
             showmessage(L('contributors_checked'), APP_PATH . 'index.php?m=member&c=content&a=info_top&id=' . $id . '&catid=' . $catid . '&msg=1');
         }
     } else {
         $show_header = $show_dialog = $show_validator = '';
         $step = $step_1 = $step_2 = $step_3 = $step_4;
         $temp_language = L('news', '', 'content');
         $sitelist = getcache('sitelist', 'commons');
         /*
         if(!isset($_GET['siteid']) && count($sitelist)>1) {
         	include template('member', 'content_publish_select_model');
         	exit;
         }
         */
         //设置cookie 在附件添加处调用
         param::set_cookie('module', 'content');
         $siteid = intval($_GET['siteid']);
         //获取信息模型类别、区域、城市信息
         $info_linkageid = getinfocache('info_linkageid');
         $cityid = getcity(trim($_GET['city']), 'linkageid');
         $cityname = getcity(trim($_GET['city']), 'name');
         $citypinyin = getcity(trim($_GET['city']), 'pinyin');
         $zone = intval($_GET['zone']);
         $zone_name = get_linkage($zone, $info_linkageid, '', 0);
         if (!$siteid) {
             $siteid = 1;
         }
         $CATEGORYS = getcache('category_content_' . $siteid, 'commons');
         $priv_db = pc_base::load_model('category_priv_model');
         //加载栏目权限表数据模型
         foreach ($CATEGORYS as $catid => $cat) {
             if ($cat['siteid'] == $siteid && $cat['child'] == 0 && $cat['type'] == 0 && $priv_db->get_one(array('catid' => $catid, 'roleid' => $memberinfo['groupid'], 'is_admin' => 0, 'action' => 'add'))) {
                 break;
             }
         }
         $catid = $_GET['catid'] ? intval($_GET['catid']) : $catid;
         if (!$catid) {
             showmessage(L('category') . L('publish_deny'), APP_PATH . 'index.php?m=member');
         }
         //判断本栏目是否允许投稿
         if (!$priv_db->get_one(array('catid' => $catid, 'roleid' => $memberinfo['groupid'], 'is_admin' => 0, 'action' => 'add'))) {
             showmessage(L('category') . L('publish_deny'), APP_PATH . 'index.php?m=member');
         }
         $category = $CATEGORYS[$catid];
         if ($category['siteid'] != $siteid) {
             showmessage(L('site_no_category'), '?m=member&c=content&a=info_publish');
         }
         $setting = string2array($category['setting']);
         if ($zone == 0 && !isset($_GET['catid'])) {
             $step = 1;
             include template('member', 'info_content_publish_select');
             exit;
         } elseif ($zone == 0 && $category['child']) {
             $step = 2;
             $step_1 = '<a href="' . APP_PATH . 'index.php?m=member&c=content&a=info_publish&siteid=' . $siteid . '&city=' . $citypinyin . '">' . $category['catname'] . '</a>';
             include template('member', 'info_content_publish_select');
             exit;
         } elseif ($zone == 0 && isset($_GET['catid'])) {
             $step = 3;
             $step_1 = '<a href="' . APP_PATH . 'index.php?m=member&c=content&a=info_publish&siteid=' . $siteid . '">' . $CATEGORYS[$category['parentid']]['catname'] . '</a>';
             $step_2 = '<a href="' . APP_PATH . 'index.php?m=member&c=content&a=info_publish&siteid=' . $siteid . '&city=' . $citypinyin . '&catid=' . $category['parentid'] . '">' . $category['catname'] . '</a>';
             $zone_arrchild = show_linkage($info_linkageid, $cityid, $cityid);
             include template('member', 'info_content_publish_select');
             exit;
         } elseif ($zone !== 0 && get_linkage_level($info_linkageid, $zone, 'child') && !$_GET['jumpstep']) {
             $step = 4;
             $step_1 = '<a href="' . APP_PATH . 'index.php?m=member&c=content&a=info_publish&siteid=' . $siteid . '&city=' . $citypinyin . '">' . $CATEGORYS[$category['parentid']]['catname'] . '</a>';
             $step_2 = '<a href="' . APP_PATH . 'index.php?m=member&c=content&a=info_publish&siteid=' . $siteid . '&city=' . $citypinyin . '&catid=' . $category['parentid'] . '">' . $category['catname'] . '</a>';
             $step_3 = '<a href="' . APP_PATH . 'index.php?m=member&c=content&a=info_publish&siteid=' . $siteid . '&city=' . $citypinyin . '&catid=' . $catid . '">' . $zone_name . '</a>';
             $zone_arrchild = get_linkage_level($info_linkageid, $zone, 'arrchildinfo');
             include template('member', 'info_content_publish_select');
             exit;
         }
         if ($setting['presentpoint'] < 0 && $memberinfo['point'] < abs($setting['presentpoint'])) {
             showmessage(L('points_less_than', array('point' => $memberinfo['point'], 'need_point' => abs($setting['presentpoint']))), APP_PATH . 'index.php?m=pay&c=deposit&a=pay&exchange=point', 3000);
         }
         if ($category['type'] != 0) {
             showmessage(L('illegal_operation'));
         }
         $modelid = $category['modelid'];
         require CACHE_MODEL_PATH . 'content_form.class.php';
         $content_form = new content_form($modelid, $catid, $CATEGORYS);
         $data = array('zone' => $zone, 'city' => $cityid);
         $forminfos_data = $content_form->get($data);
         $forminfos = array();
         foreach ($forminfos_data as $_fk => $_fv) {
             if ($_fv['isomnipotent']) {
                 continue;
             }
             if ($_fv['formtype'] == 'omnipotent') {
                 foreach ($forminfos_data as $_fm => $_fm_value) {
                     if ($_fm_value['isomnipotent']) {
                         $_fv['form'] = str_replace('{' . $_fm . '}', $_fm_value['form'], $_fv['form']);
                     }
                 }
             }
             $forminfos[$_fk] = $_fv;
         }
         $formValidator = $content_form->formValidator;
         //去掉栏目id
         unset($forminfos['catid']);
         $workflowid = $setting['workflowid'];
         header("Cache-control: private");
         include template('member', 'info_content_publish');
     }
 }