=0;$i--) { if($articlename[$i]=='/') { $subpos = $i; break; } } $okdir = substr($articlename,0,$subpos); CreateDir($okdir); return $articlename; } } /** * 获得文件相对于主站点根目录的物理文件名(动态网址返回url) * * @param int $aid 文档ID * @param int $typeid 栏目ID * @param int $timetag 时间戳 * @param string $title 标题 * @param int $ismake 是否生成 * @param int $rank 阅读权限 * @param string $namerule 名称规则 * @param string $typedir 栏目dir * @param string $money 需要金币 * @param string $filename 文件名称 * @return string */ if ( ! function_exists('GetFileName')) { function GetFileName($aid,$typeid,$timetag,$title,$ismake=0,$rank=0,$namerule='',$typedir='',$money=0,$filename='') { global $cfg_rewrite, $cfg_cmspath, $cfg_arcdir, $cfg_special, $cfg_arc_dirname; //没指定栏目时用固定规则(专题) if(empty($namerule)) { $namerule = $cfg_special.'/arc-{aid}.html'; $typeid = -1; } if($rank!=0 || $ismake==-1 || $typeid==0 || $money>0) { //动态文章 if($cfg_rewrite == 'Y') { return $GLOBALS["cfg_plus_dir"]."/view-".$aid.'-1.html'; } else { return $GLOBALS['cfg_phpurl']."/view.php?aid=$aid"; } } else { $articleDir = MfTypedir($typedir); $articleRule = strtolower($namerule); if($articleRule=='') { $articleRule = strtolower($GLOBALS['cfg_df_namerule']); } if($typedir=='') { $articleDir = $GLOBALS['cfg_cmspath'].$GLOBALS['cfg_arcdir']; } $dtime = GetDateMk($timetag); list($y, $m, $d) = explode('-', $dtime); $arr_rpsource = array('{typedir}','{y}','{m}','{d}','{timestamp}','{aid}','{cc}'); $arr_rpvalues = array($articleDir,$y, $m, $d, $timetag, $aid, dd2char($m.$d.$aid.$y)); if($filename != '') { $articleRule = dirname($articleRule).'/'.$filename.$GLOBALS['cfg_df_ext']; } $articleRule = str_replace($arr_rpsource,$arr_rpvalues,$articleRule); if(preg_match("/\{p/", $articleRule)) { $articleRule = str_replace('{pinyin}',GetPinyin($title).'_'.$aid,$articleRule); $articleRule = str_replace('{py}',GetPinyin($title,1).'_'.$aid,$articleRule); } $articleUrl = '/'.preg_replace("/^\//", '', $articleRule); if(preg_match("/index\.html/", $articleUrl) && $cfg_arc_dirname=='Y') { $articleUrl = str_replace('index.html', '', $articleUrl); } return $articleUrl; } } } /** * 获得指定类目的URL链接 * 对于使用封面文件和单独页面的情况,强制使用默认页名称 * * @param int $typeid 栏目ID * @param string $typedir 栏目目录 * @param int $isdefault 是否默认 * @param string $defaultname 默认名称 * @param int $ispart 栏目属性 * @param string $namerule2 名称规则 * @param string $moresite 多站点 * @param string $siteurl 站点地址 * @param string $sitepath 站点目录 * @return string */ if ( ! function_exists('GetTypeUrl')) { function GetTypeUrl($typeid,$typedir,$isdefault,$defaultname,$ispart,$namerule2,$moresite=0,$siteurl='',$sitepath='') { global $cfg_typedir_df; $typedir = MfTypedir($typedir); $sitepath = MfTypedir($sitepath); if($isdefault==-1) { //动态 $reurl = $GLOBALS['cfg_phpurl']."/list.php?tid=".$typeid; } else if($ispart==2) { //跳转网址 $reurl = $typedir; return $reurl; } else { if($isdefault==0 && $ispart==0) { $reurl = str_replace("{page}","1",$namerule2); $reurl = str_replace("{tid}",$typeid,$reurl); $reurl = str_replace("{typedir}",$typedir,$reurl); } else { if($cfg_typedir_df=='N' || $isdefault==0) $reurl = $typedir.'/'.$defaultname; else $reurl = $typedir.'/'; } } if( !preg_match("/^http:\/\//",$reurl) ) { $reurl = preg_replace("/\/{1,}/i", '/', $reurl); } if($GLOBALS['cfg_multi_site']=='Y') { if($siteurl=='') { $siteurl = $GLOBALS['cfg_basehost']; } if($moresite==1 ) { $reurl = preg_replace("#^".$sitepath."#", '', $reurl); } if( !preg_match("/^http:\/\//", $reurl) ) { $reurl = $siteurl.$reurl; } } return $reurl; } } /** * 魔法变量,用于获取两个可变的值 * * @param string $v1 第一个变量 * @param string $v2 第二个变量 * @return string */ if ( ! function_exists('MagicVar')) { function MagicVar($v1,$v2) { return $GLOBALS['autoindex']%2==0 ? $v1 : $v2; } } /** * 获取某个类目的所有上级栏目id * * @param int $tid 栏目ID * @return string */ if ( ! function_exists('GetTopids')) { function GetTopids($tid) { $arr = GetParentIds($tid); return join(',',$arr); } } /** * 获取上级ID列表 * * @access public * @param string $tid 栏目ID * @return string */ if ( ! function_exists('GetParentIds')) { function GetParentIds($tid) { global $cfg_Cs; $GLOBALS['pTypeArrays'][] = $tid; if(!is_array($cfg_Cs)) { require_once(DEDEDATA."/cache/inc_catalog_base.inc"); } if(!isset($cfg_Cs[$tid]) || $cfg_Cs[$tid][0]==0) { return $GLOBALS['pTypeArrays']; } else { return GetParentIds($cfg_Cs[$tid][0]); } } } /** * 检测栏目是否是另一个栏目的父目录 * * @access public * @param string $sid 顶级目录id * @param string $pid 下级目录id * @return bool */ if ( ! function_exists('IsParent')) { function IsParent($sid, $pid) { $pTypeArrays = GetParentIds($sid); return in_array($pid, $pTypeArrays); } } /** * 获取一个类目的顶级类目id * * @param string $tid 栏目ID * @return string */ if ( ! function_exists('GetTopid')) { function GetTopid($tid) { global $cfg_Cs; if(!is_array($cfg_Cs)) { require_once(DEDEDATA."/cache/inc_catalog_base.inc"); } if(!isset($cfg_Cs[$tid][0]) || $cfg_Cs[$tid][0]==0) { return $tid; } else { return GetTopid($cfg_Cs[$tid][0]); } } } /** * 获得某id的所有下级id * * @param string $id 栏目id * @param string $channel 模型ID * @param string $addthis 是否包含本身 * @return string */ function GetSonIds($id,$channel=0,$addthis=true) { global $cfg_Cs; $GLOBALS['idArray'] = array(); if( !is_array($cfg_Cs) ) { require_once(DEDEDATA."/cache/inc_catalog_base.inc"); } GetSonIdsLogic($id,$cfg_Cs,$channel,$addthis); $rquery = join(',',$GLOBALS['idArray']); $rquery = preg_replace("/,$/", '', $rquery); return $rquery; } //递归逻辑 function GetSonIdsLogic($id,$sArr,$channel=0,$addthis=false) { if($id!=0 && $addthis) { $GLOBALS['idArray'][$id] = $id; } if(is_array($sArr)) { foreach($sArr as $k=>$v) { if( $v[0]==$id && ($channel==0 || $v[1]==$channel )) { GetSonIdsLogic($k,$sArr,$channel,true); } } } } /** * 栏目目录规则 * * @param string $typedir 栏目目录 * @return string */ function MfTypedir($typedir) { if(preg_match("/^http:|^ftp:/i", $typedir)) return $typedir; $typedir = str_replace("{cmspath}",$GLOBALS['cfg_cmspath'],$typedir); $typedir = preg_replace("/\/{1,}/", "/", $typedir); return $typedir; } /** * 模板目录规则 * * @param string $tmpdir 模板目录 * @return string */ function MfTemplet($tmpdir) { $tmpdir = str_replace("{style}", $GLOBALS['cfg_df_style'], $tmpdir); $tmpdir = preg_replace("/\/{1,}/", "/", $tmpdir); return $tmpdir; } /** * 清除用于js的空白块 * * @param string $atme 字符 * @return string */ function FormatScript($atme) { return $atme==' ' ? '' : $atme; } /** * 给属性默认值 * * @param array $atts 属性 * @param array $attlist 属性列表 * @return string */ function FillAttsDefault(&$atts, $attlist) { $attlists = explode(',', $attlist); for($i=0; isset($attlists[$i]); $i++) { list($k, $v) = explode('|', $attlists[$i]); if(!isset($atts[$k])) { $atts[$k] = $v; } } } /** * 给块标记赋值 * * @param object $dtp 模板解析引擎 * @param object $refObj 实例化对象 * @param object $parfield * @return string */ function MakeOneTag(&$dtp, &$refObj, $parfield='Y') { global $cfg_disable_tags; $cfg_disable_tags = isset($cfg_disable_tags)? $cfg_disable_tags : 'php'; $disable_tags = explode(',', $cfg_disable_tags); $alltags = array(); $dtp->setRefObj($refObj); //读取自由调用tag列表 $dh = dir(DEDEINC.'/taglib'); while($filename = $dh->read()) { if(preg_match("/\.lib\./", $filename)) { $alltags[] = str_replace('.lib.php','',$filename); } } $dh->Close(); //遍历tag元素 if(!is_array($dtp->CTags)) { return ''; } foreach($dtp->CTags as $tagid=>$ctag) { $tagname = $ctag->GetName(); if($tagname=='field' && $parfield=='Y') { $vname = $ctag->GetAtt('name'); if( $vname=='array' && isset($refObj->Fields) ) { $dtp->Assign($tagid,$refObj->Fields); } else if(isset($refObj->Fields[$vname])) { $dtp->Assign($tagid,$refObj->Fields[$vname]); } else if($ctag->GetAtt('noteid') != '') { if( isset($refObj->Fields[$vname.'_'.$ctag->GetAtt('noteid')]) ) { $dtp->Assign($tagid, $refObj->Fields[$vname.'_'.$ctag->GetAtt('noteid')]); } } continue; } //由于考虑兼容性,原来文章调用使用的标记别名统一保留,这些标记实际调用的解析文件为inc_arclist.php if(preg_match("/^(artlist|likeart|hotart|imglist|imginfolist|coolart|specart|autolist)$/", $tagname)) { $tagname='arclist'; } if($tagname=='friendlink') { $tagname='flink'; } if(in_array($tagname,$alltags)) { if(in_array($tagname, $disable_tags)) { if(DEBUG_LEVEL) echo 'DedeCMS Error:Tag disabled:"'.$tagname.'" more...!'; continue; } if (DEBUG_LEVEL==TRUE) { $ttt1 = ExecTime(); } $filename = DEDEINC.'/taglib/'.$tagname.'.lib.php'; include_once($filename); $funcname = 'lib_'.$tagname; $dtp->Assign($tagid,$funcname($ctag,$refObj)); if (DEBUG_LEVEL==TRUE) { $queryTime = ExecTime() - $ttt1; echo '