public function cscms_skins($field, $str, $label, $row, $sorti = 1, $autoarr = array()) { preg_match_all('/\\[' . $field . ':\\s*([0-9a-zA-Z\\_\\-]+)([\\s]*[link|ulink|dir|level|zd|len|style]*)[=]??([\\d0-9a-zA-Z\\,\\{\\}\\/\\-\\\\:\\s]*)\\]/', $str, $field_arr); if (!empty($field_arr)) { //判断是否嵌套二级 preg_match('/{cscmstype:([\\S]+)\\s+(.*?)}([\\s\\S]+?){\\/cscmstype:\\1}/', $label, $type_arr); if (!empty($type_arr)) { $label = $this->cscms_sql_to($type_arr[1], $type_arr[2], $type_arr[0], $type_arr[3], $label, $row['id']); } unset($type_arr); for ($i = 0; $i < count($field_arr[0]); $i++) { $type = $field_arr[1][$i]; if (array_key_exists($type, $row) && trim($field_arr[2][$i]) != 'zd') { if ($type == 'addtime') { $label = str_replace('[' . $field . ':' . $type . ']', date('Y-m-d H:i:s', $row[$type]), $label); } else { $label = str_replace('[' . $field . ':' . $type . ']', $row[$type], $label); } //判断自定义标签 if (!empty($field_arr[2][$i]) && !empty($field_arr[3][$i])) { //格式化时间 if (trim($field_arr[2][$i]) == 'style' && trim($field_arr[3][$i]) == 'time') { $label = str_replace($field_arr[0][$i], datetime($row[$type]), $label); //获取IP地区 } elseif (trim($field_arr[2][$i]) == 'style' && trim($field_arr[3][$i]) == 'city') { $ci =& get_instance(); $ci->load->library('ip'); $label = str_replace($field_arr[0][$i], $ci->ip->address($row[$type]), $label); //自定义时间 } elseif (trim($field_arr[2][$i]) == 'style') { $label = str_replace($field_arr[0][$i], date(str_replace('f', 'i', $field_arr[3][$i]), $row[$type]), $label); //图片地址 } elseif (trim($field_arr[2][$i]) == 'dir') { $lall = explode(",", $field_arr[3][$i]); $lass = count($lall) > 1 ? $lall[1] : ''; $pic = piclink($lall[0], $row[$type], $lass); $label = str_replace($field_arr[0][$i], $pic, $label); } //字符截取 if (trim($field_arr[2][$i]) == 'len') { $label = str_replace($field_arr[0][$i], sub_str(str_checkhtml($row[$type]), $field_arr[3][$i]), $label); } } } else { //外部字段 switch ($type) { //序 case 'i': $label = str_replace($field_arr[0][$i], $sorti, $label); break; //序 //序 case 'addres': if (trim($field_arr[2][$i]) == 'zd' && !empty($field_arr[3][$i]) && array_key_exists($field_arr[3][$i], $row)) { $zd = $field_arr[3][$i]; $ci =& get_instance(); $ci->load->library('ip'); $label = str_replace($field_arr[0][$i], $ci->ip->address($row[$zd]), $label); } break; //数据统计 //数据统计 case 'count': if (trim($field_arr[2][$i]) == 'zdy' && !empty($field_arr[3][$i])) { $count = 0; $arr = explode(',', $field_arr[3][$i]); $table = $arr[0]; $czd = empty($arr[1]) ? 'id' : $arr[1]; $szd = empty($arr[2]) ? 'id' : $arr[2]; if (array_key_exists($szd, $row)) { $ci =& get_instance(); if (!isset($ci->db)) { $ci->load->database(); } $uid = !empty($row[$szd]) ? $row[$szd] : (!empty($row['uid']) ? $row['uid'] : 0); if (!empty($table) && $ci->db->table_exists(CS_SqlPrefix . $table) && $ci->db->field_exists($czd, CS_SqlPrefix . $table)) { if (!empty($arr[3]) && (!empty($arr[4]) || (int) $arr[4] == 0)) { if ($ci->db->field_exists($arr[3], CS_SqlPrefix . $table)) { $count = $ci->db->query("SELECT id FROM " . CS_SqlPrefix . $table . " where " . $czd . "='" . $uid . "' and " . $arr[3] . "='" . $arr[4] . "'")->num_rows(); } } else { $count = $ci->db->query("SELECT id FROM " . CS_SqlPrefix . $table . " where " . $czd . "='" . $uid . "'")->num_rows(); } } } $label = str_replace($field_arr[0][$i], $count, $label); } break; //会员信息 //会员信息 case 'user': if (($field == 'user' or array_key_exists('uid', $row) or array_key_exists('uidb', $row)) && trim($field_arr[2][$i]) == 'zd' && !empty($field_arr[3][$i])) { $ci =& get_instance(); if (!isset($ci->db)) { $ci->load->database(); } $ziduan = $field_arr[3][$i]; $zdneir = ($field == 'gbook' or $field == 'pl') ? '游客' : 'null'; if ($field == 'user') { $uid = $row['id']; } else { $lall = explode(",", $ziduan); if (!empty($lall[1])) { $uid = !empty($lall[1]) ? $lall[1] : 0; $ziduan = $lall[1]; } else { if (!empty($row['uid'])) { $uid = $row['uid']; } else { $uid = !empty($row['uidb']) ? $row['uidb'] : 0; } } } $czd = $ziduan == 'nichen' ? $ziduan . ',name' : $ziduan; if ($ci->db->field_exists($ziduan, CS_SqlPrefix . 'user')) { $rowu = $ci->db->query("SELECT " . $czd . " FROM " . CS_SqlPrefix . "user where id='" . $uid . "'")->row(); if ($rowu) { $zdneir = $field_arr[3][$i] == 'nichen' && empty($rowu->{$ziduan}) ? $rowu->name : $rowu->{$ziduan}; } } if ($ziduan == 'logo') { if ($uid == 0) { $zdneir = ''; } $zdneir = piclink('logo', $zdneir); } if ($ziduan == 'zid') { if ($zdneir == 0) { $zdneir = 1; } $zdneir = getzd('userzu', 'name', $zdneir); } if ($ziduan == 'qianm') { if (empty($zdneir)) { $zdneir = '暂时没有签名...'; } } if ($ziduan == 'city') { if (empty($zdneir)) { $zdneir = '保密'; } } $label = str_replace($field_arr[0][$i], $zdneir, $label); //会员等级 } elseif (($field == 'user' or array_key_exists('uid', $row) or array_key_exists('uidb', $row)) && trim($field_arr[2][$i]) == 'level' && !empty($field_arr[3][$i])) { $zdneir = ''; if ($field == 'user') { $uid = $row['id']; } else { $uid = !empty($row['uid']) ? $row['uid'] : (!empty($row['uidb']) ? $row['uidb'] : 0); } $jinyan = getzd('user', 'jinyan', $uid); if ($field_arr[3][$i] == '1') { //星星数 $zdneir = getlevel($jinyan, 1); } if ($field_arr[3][$i] == '2') { //下个级别需要经验 $zdneir = getlevel($jinyan, 2); } if ($field_arr[3][$i] == '3') { //下个级别剩余经验 $zdneir = getlevel($jinyan, 3); } if ($field_arr[3][$i] == '4') { //剩余百分比 $zdneir = getlevel($jinyan, 4); } if ($field_arr[3][$i] == '5') { //名称 $zdneir = getlevel($jinyan, 5); } $label = str_replace($field_arr[0][$i], $zdneir, $label); } break; //歌手信息 //歌手信息 case 'singer': if (array_key_exists('singerid', $row) && trim($field_arr[2][$i]) == 'zd' && !empty($field_arr[3][$i])) { $ci =& get_instance(); if (!isset($ci->db)) { $ci->load->database(); } $zdneir = 'null'; if ($ci->db->table_exists(CS_SqlPrefix . 'singer')) { //歌手表存在 $ziduan = $field_arr[3][$i]; if ($ci->db->field_exists($ziduan, CS_SqlPrefix . 'singer')) { $rows = $ci->db->query("SELECT " . $ziduan . " FROM " . CS_SqlPrefix . "singer where id='" . $row['singerid'] . "'")->row(); if ($rows) { $zdneir = $rows->{$ziduan}; } } if ($ziduan == 'pic') { if ($row['singerid'] == 0) { $zdneir = ''; } $zdneir = piclink('singer', $zdneir); } } $label = str_replace($field_arr[0][$i], $zdneir, $label); } break; //版块链接 //版块链接 case 'murl': if (array_key_exists('dir', $row)) { $link = cscmslink($row['dir']); $label = str_replace($field_arr[0][$i], $link, $label); } break; //网站链接 //网站链接 case 'url': //全局 if (array_key_exists('id', $row) && trim($field_arr[2][$i]) == 'link' && !empty($field_arr[3][$i])) { $lall = explode(",", $field_arr[3][$i]); $lass = count($lall) > 1 ? $lall[1] : ''; $link = linkurl($lall[0], $lass, $row['id']); $label = str_replace($field_arr[0][$i], $link, $label); } //会员 if ((array_key_exists('uid', $row) || array_key_exists('uidb', $row) || $field == 'user') && trim($field_arr[2][$i]) == 'ulink' && !empty($field_arr[3][$i])) { $ci =& get_instance(); if (!isset($ci->db)) { $ci->load->database(); } $link = ''; if ($field == 'user') { if (array_key_exists('id', $row) && array_key_exists('name', $row)) { $lall = explode(",", $field_arr[3][$i]); $lass = count($lall) > 1 ? $lall[1] : ''; $link = userlink($lall[0], $row['id'], $row['name'], $lass); } } else { $uid = !empty($row['uid']) ? $row['uid'] : (!empty($row['uidb']) ? $row['uidb'] : 0); $rowu = $ci->db->query("SELECT id,name FROM " . CS_SqlPrefix . "user where id='" . $uid . "'")->row(); if (!$rowu) { $link = 'http://' . Web_Url . Web_Path; } else { $lall = explode(",", $field_arr[3][$i]); $lass = count($lall) > 1 ? $lall[1] : ''; $link = userlink($lall[0], $rowu->id, $rowu->name, $lass); } } $label = str_replace($field_arr[0][$i], $link, $label); } //会员中心... if (trim($field_arr[2][$i]) == 'userlink' && !empty($field_arr[3][$i])) { $link = spacelink($field_arr[3][$i]); $label = str_replace($field_arr[0][$i], $link, $label); } //自定义URL,板块,字段,参数,参数... if (trim($field_arr[2][$i]) == 'zdy' && !empty($field_arr[3][$i])) { $lall = explode(",", $field_arr[3][$i]); if (!array_key_exists($lall[1], $row) || $row[$lall[1]] == 0) { $link = 'http://' . Web_Url . Web_Path; } else { $lass = count($lall) > 3 ? $lall[3] : ''; $link = linkurl($lall[2], $lass, $row[$lall[1]], 1, $lall[0]); } $label = str_replace($field_arr[0][$i], $link, $label); } break; } } } } unset($field_arr); return $label; }
public function topicshow_save() { if ($this->huri['topic/show']['check'] == 0) { admin_msg('专题内容未开启生成~!', 'javascript:history.back();', 'no'); } $tid = $this->input->get_post('tid', true); //需要生成的专题ID $ksid = intval($this->input->get_post('ksid')); //开始ID $jsid = intval($this->input->get_post('jsid')); //结束ID $kstime = $this->input->get_post('kstime', true); //开始日期 $jstime = $this->input->get_post('jstime', true); //结束日期 $pagesize = intval($this->input->get('pagesize')); //每页多少条 $pagejs = intval($this->input->get('pagejs')); //总页数 $datacount = intval($this->input->get('datacount')); //数据总数 $page = intval($this->input->get('page')); //当前页 if ($page == 0) { $page = 1; } $str = ''; //将数组转换成字符 if (is_array($tid)) { $tid = implode(',', $tid); } if ($ksid > 0 && $jsid > 0) { $str .= ' and id>' . ($ksid - 1) . ' and id<' . ($jsid + 1) . ''; } if (!empty($kstime) && !empty($jstime)) { $ktime = strtotime($kstime) - 86400; $jtime = strtotime($jstime) + 86400; $str .= ' and addtime>' . $ktime . ' and addtime<' . $jtime . ''; } if (!empty($tid)) { $str .= ' and id in (' . $tid . ')'; } if ($datacount == 0) { $sqlstr = "select id from " . CS_SqlPrefix . "vod_topic where yid=0 " . $str; $datacount = $this->db->query($sqlstr)->num_rows(); //总数量 $pagejs = ceil($datacount / Html_PageNum); } if ($datacount == 0) { $pagejs = 1; } $pagesize = Html_PageNum; if ($datacount < $pagesize) { $pagesize = $datacount; } //全部生成完毕 if ($datacount == 0 || $page > $pagejs) { admin_msg('所有专题内容页全部生成完毕~!', site_url('vod/admin/html/topic')); } //公众URI $uri = '?tid=' . $tid . '&ksid=' . $ksid . '&jsid=' . $jsid . '&kstime=' . $kstime . '&jstime=' . $jstime . '&pagesize=' . $pagesize . '&pagejs=' . $pagejs . '&datacount=' . $datacount; //重新定义模板路径 $this->load->get_templates('vod', 2); echo '<LINK href="' . base_url() . 'packs/admin/css/style.css" type="text/css" rel="stylesheet"><br>'; echo ' <b>正在开始生成专题内容,分<font color=red>' . $pagejs . '</font>次生成,当前第<font color=red>' . $page . '</font>次</b><br/>'; $sql_string = "select * from " . CS_SqlPrefix . "vod_topic where yid=0 " . $str . " order by id desc"; $sql_string .= ' limit ' . $pagesize * ($page - 1) . ',' . $pagesize; $query = $this->db->query($sql_string); foreach ($query->result_array() as $row) { ob_end_flush(); //关闭缓存 $id = $row['id']; //动态人气 unset($row['hits']); unset($row['yhits']); unset($row['zhits']); unset($row['rhits']); unset($row['shits']); //获取静态路径 $Htmllinks = LinkUrl('topic', 'show', $id, 1, 'vod'); //转换成生成路径 $Htmllink = adminhtml($Htmllinks, 'vod'); $ids['tid'] = $id; //装载模板并输出 $Mark_Text = $this->CsdjTpl->plub_show('topic', $row, $ids, true, 'topic-show.html', $row['name'], $row['name']); //评论 $Mark_Text = str_replace("[topic:pl]", get_pl('vod', $id, 1), $Mark_Text); //解析动态人气标签 $Mark_Text = str_replace("[topic:hits]", "<script src='" . hitslink('hits/dt/hits/' . $id . '/topic', 'vod') . "'></script>", $Mark_Text); $Mark_Text = str_replace("[topic:yhits]", "<script src='" . hitslink('hits/dt/yhits/' . $id . '/topic', 'vod') . "'></script>", $Mark_Text); $Mark_Text = str_replace("[topic:zhits]", "<script src='" . hitslink('hits/dt/zhits/' . $id . '/topic', 'vod') . "'></script>", $Mark_Text); $Mark_Text = str_replace("[topic:rhits]", "<script src='" . hitslink('hits/dt/rhits/' . $id . '/topic', 'vod') . "'></script>", $Mark_Text); $Mark_Text = str_replace("[topic:shits]", "<script src='" . hitslink('hits/dt/shits/' . $id . '/topic', 'vod') . "'></script>", $Mark_Text); //增加人气 $Mark_Text = hits_js($Mark_Text, cscmslink('vod')); //生成 write_file(FCPATH . $Htmllink, $Mark_Text); echo " <font style=font-size:10pt;>生成视频专题:<font color=red>" . $row['name'] . "</font>成功:<a href=" . $Htmllinks . " target=_blank>" . $Htmllinks . "</a></font><br/>"; ob_flush(); flush(); } $url = site_url('vod/admin/html/topicshow_save') . $uri . '&page=' . ($page + 1); $str = " <b>暂停" . Html_StopTime . "秒后继续 >>>> <a href='" . $url . "'>如果您的 浏览器没有跳转,请点击继续...</a></b>"; echo "</br>" . $str . "<script>setTimeout('updatenext();'," . Html_StopTime . "000);function updatenext(){location.href='" . $url . "';}</script>"; }