/','/\r*\n|\r/'),array('\x3C','\x3E','\\\\$0'),addslashes($str)); } function nl2brWithHTML($str){ $str=str_replace('[CODE]','[CODE][HTML]',$str); $str=str_replace('[/CODE]','[/HTML][/CODE]',$str); $inHTML=false; $out=''; while(true){ if($inHTML){ $end=strpos($str,'[/HTML]'); if($end===false) break; else{ $out.=substr($str,0,$end); $str=substr($str,$end+7); $inHTML=false; } }else{ $offset=strpos($str,'[HTML]'); if($offset===false){ $out.=nl2br($str); break; }else{ $out.=nl2br(substr($str,0,$offset)); $str=substr($str,$offset+6); $inHTML=true; } } } return $out; } function addLinkSense($text,$attributes=''){ return ereg_replace("(^| |\t|\r|\n|\"|')(http://[^ \t\r\n\"']+)","\\1\\2",$text); } function addProtocolSense($url,$protocol='http://'){ return ereg('^[[:alnum:]]+:',$url)?$url:$protocol.$url; } function fetchQueryAll($query,$type=MYSQL_BOTH){ $rows=array(); if($result=mysql_query($query)){ while($row=mysql_fetch_array($result,$type)) array_push($rows,$row); mysql_free_result($result); } return $rows; } function fetchQueryRow($query){ if($result=mysql_query($query)){ if($row=mysql_fetch_array($result)){ mysql_free_result($result); return $row; } mysql_free_result($result); } return ; } function fetchQueryColumn($query){ $column=array(); if($result=mysql_query($query)){ while($row=mysql_fetch_row($result)) array_push($column,$row[0]); mysql_free_result($result); } return $column; } function fetchQueryCell($query){ if($result=mysql_query($query)){ list($cell)=mysql_fetch_row($result); mysql_free_result($result); return $cell; } return ; } function executeQuery($query){ return mysql_query($query)?true:false; } function getFileExtension($path){ for($i=strlen($path)-1;$i>=0;$i--){ if($path{$i}=='.') return strtolower(substr($path,$i+1)); if(($path{$i}=='/')||($path{$i}=='\\')) break; } return ''; } function getAttributesFromString($str){ $attributes=array(); foreach(explode(' ',$str) as $value){ $value=trim($value); if(preg_match('/([^= ]+)="([^"]*)/',$value,$matches)){ $attributes[$matches[1]]=$matches[2]; }elseif(preg_match("/([^= ]+)='([^']*)/",$value,$matches)){ $attributes[$matches[1]]=$matches[2]; }elseif(preg_match('/([^= ]+)=([^ ]*)/',$value,$matches)){ $attributes[$matches[1]]=$matches[2]; } } return $attributes; } function checkResponseXML($responseText){ global $service; $xmls=new XMLStruct(); if(!$xmls->open(trim($responseText),$service['encoding'])) return false; if(($error=$xmls->getValue('/response/error'))!==null) return intval($error); else return false; } mysql_connect($database['server'],$database['username'],$database['password']); mysql_select_db($database['database']); if(mysql_query('SET CHARACTER SET utf8')){ $database['utf8']=true; }else{ $database['utf8']=false; function mysql_lessen($str,$length=255,$tail='..'){ return UTF8::lessenAsByte($str,$length,$tail); } } @mysql_query('SET SESSION collation_connection = \'utf8_general_ci\''); function getOwner($name){ global $database; return fetchQueryCell("select owner from {$database['prefix']}BlogSettings where name = '$name'"); } function getOwnerBySecondaryDomain($domain){ global $database; return fetchQueryCell("select owner from {$database['prefix']}BlogSettings where secondaryDomain = '$domain'"); } function getBlogSetting($owner){ global $database; if($result=mysql_query("select * from {$database['prefix']}BlogSettings where owner = $owner")){ return mysql_fetch_array($result); } return false; } function getSkinSetting($owner){ global $database; if($result=mysql_query("select * from {$database['prefix']}SkinSettings where owner = $owner")) return mysql_fetch_array($result); return false; } function getBlogURL($name=null,$domain=null,$path=null,$type=null){ global $service,$blog; if($type===null) $type=$service['type']; if($path===null) $path=$service['path']; if($domain===null) $domain=$service['domain'].(isset($service['port'])?":{$service['port']}":''); if($name===null) $name=$blog['name']; switch($type){ case 'domain': return "http://$name.$domain$path"; case 'path': return "http://$domain$path/$name"; case 'single': default: return "http://$domain$path"; } } function getArchives($owner){ global $database; $archives=array(); $visibility=doesHaveOwnership()?'':'AND visibility > 0'; $result=mysql_query("SELECT EXTRACT(year_month FROM FROM_UNIXTIME(published)) period, COUNT(*) count FROM {$database['prefix']}Entries WHERE owner = $owner AND draft = 0 $visibility AND category >= 0 GROUP BY period ORDER BY period DESC LIMIT 5"); if($result){ while($archive=mysql_fetch_array($result)) array_push($archives,$archive); } return $archives; } function getCalendar($owner,$period){ global $database; $calendar=array('days'=>array()); if(($period===true)||!checkPeriod($period)) $period=Timestamp::getYearMonth(); $calendar['period']=$period; $calendar['year']=substr($period,0,4); $calendar['month']=substr($period,4,2); $visibility=doesHaveOwnership()?'':'AND visibility > 0'; $result=mysql_query("SELECT DISTINCT DAYOFMONTH(FROM_UNIXTIME(published)) FROM {$database['prefix']}Entries WHERE owner = $owner AND draft = 0 $visibility AND category >= 0 AND YEAR(FROM_UNIXTIME(published)) = {$calendar['year']} AND MONTH(FROM_UNIXTIME(published)) = {$calendar['month']}"); if($result){ while(list($day)=mysql_fetch_array($result)) array_push($calendar['days'],$day); } $calendar['days']=array_flip($calendar['days']); return $calendar; } function getAttachmentByOnlyName($owner,$name){ global $database; $name=mysql_escape_string($name); return fetchQueryRow("select * from {$database['prefix']}Attachments where owner = $owner and name = '$name'"); } function getCategories($owner){ global $database; $rows=fetchQueryAll("SELECT * FROM {$database['prefix']}Categories WHERE owner = $owner ORDER BY parent, priority"); $categories=array(); foreach($rows as $category){ if($category['parent']==null){ $category['children']=array(); $categories[$category['id']]=$category; }elseif(isset($categories[$category['parent']])) array_push($categories[$category['parent']]['children'],$category); } return $categories; } function getCategoriesSkin(){ global $database; global $owner,$service; $sql="select * from {$database['prefix']}SkinSettings where owner = $owner"; $setting=fetchQueryRow($sql); $skin=array('name'=>"{$setting['skin']}",'url'=>$service['path']."/image/tree/{$setting['tree']}",'labelLength'=>$setting['labelLengthOnTree'],'showValue'=>$setting['showValueOnTree'],'bgColor'=>"{$setting['bgColorOnTree']}",'itemColor'=>"{$setting['colorOnTree']}",'itemBgColor'=>"{$setting['bgColorOnTree']}",'activeItemColor'=>"{$setting['activeColorOnTree']}",'activeItemBgColor'=>"{$setting['activeBgColorOnTree']}",); return $skin; } function updateEntriesOfCategory($owner,$id=-1){ global $database; $result=mysql_query("SELECT * FROM {$database['prefix']}Categories WHERE owner = $owner AND parent IS NULL"); while($row=mysql_fetch_array($result)){ $parent=$row['id']; $parentName=mysql_escape_string($row['name']); $countParent=fetchQueryCell("SELECT COUNT(id) FROM {$database['prefix']}Entries WHERE owner = $owner AND draft = 0 AND visibility > 0 AND category = $parent"); $countInLoginParent=fetchQueryCell("SELECT COUNT(id) FROM {$database['prefix']}Entries WHERE owner = $owner AND draft = 0 AND category = $parent"); $result2=mysql_query("SELECT * FROM {$database['prefix']}Categories WHERE owner = $owner AND parent = $parent"); while($rowChild=mysql_fetch_array($result2)){ $rowChild['name']=mysql_escape_string($rowChild['name']); $countChild=fetchQueryCell("SELECT COUNT(id) FROM {$database['prefix']}Entries WHERE owner = $owner AND draft = 0 AND visibility > 0 AND category = {$rowChild['id']}"); $countInLogInChild=fetchQueryCell("SELECT COUNT(id) FROM {$database['prefix']}Entries WHERE owner = $owner AND draft = 0 AND category = {$rowChild['id']}"); mysql_query("UPDATE {$database['prefix']}Categories SET entries = $countChild, entriesInLogin = $countInLogInChild, `label` = '$parentName/{$rowChild['name']}' WHERE owner = $owner AND id = {$rowChild['id']}"); $countParent+=$countChild; $countInLoginParent+=$countInLogInChild; } mysql_query("UPDATE {$database['prefix']}Categories SET entries = $countParent, entriesInLogin = $countInLoginParent, `label` = '$parentName' WHERE owner = $owner AND id = $parent"); } return true; } function getCommentsWithPagingForGuestbook($owner,$page,$count){ global $database; $sql="SELECT * FROM {$database['prefix']}Comments WHERE owner = $owner"; $sql.=' AND entry = 0 AND parent is null'; $sql.=' ORDER BY written DESC'; return fetchWithPaging($sql,$page,$count); } function getComments($entry){ global $database,$owner; $comments=array(); $authorized=doesHaveOwnership(); $aux=($entry==0?'ORDER BY written DESC':'order by id ASC'); $sql="select * from {$database['prefix']}Comments where owner = $owner and entry = $entry and parent is null $aux"; if($result=mysql_query($sql)){ while($comment=mysql_fetch_array($result)){ if(($comment['secret']==1)&&!$authorized){ $comment['name']=''; $comment['homepage']=''; $comment['comment']=_t('관리자만 볼 수 있는 댓글입니다'); } array_push($comments,$comment); } } return $comments; } function getCommentComments($parent){ global $database,$owner; $comments=array(); $authorized=doesHaveOwnership(); if($result=mysql_query("select * from {$database['prefix']}Comments where owner = $owner and parent = $parent order by id")){ while($comment=mysql_fetch_array($result)){ if(($comment['secret']==1)&&!$authorized){ $comment['name']=''; $comment['homepage']=''; $comment['comment']=_t('관리자만 볼 수 있는 댓글입니다'); } array_push($comments,$comment); } } return $comments; } function getRecentComments($owner){ global $skinSetting,$database; $comments=array(); $sql=doesHaveOwnership()?"SELECT * FROM {$database['prefix']}Comments WHERE owner = $owner AND entry>0 ORDER BY written DESC LIMIT {$skinSetting['commentsOnRecent']}":"SELECT r.* FROM {$database['prefix']}Comments r, {$database['prefix']}Entries e WHERE r.owner = $owner AND r.owner = e.owner AND r.entry = e.id AND e.draft = 0 AND e.visibility > 0 AND entry > 0 ORDER BY r.written DESC LIMIT {$skinSetting['commentsOnRecent']}"; if($result=mysql_query($sql)){ while($comment=mysql_fetch_array($result)){ if(($comment['secret']==1)&&!doesHaveOwnership()){ $comment['name']=''; $comment['homepage']=''; $comment['comment']=_t('관리자만 볼 수 있는 댓글입니다'); } array_push($comments,$comment); } } return $comments; } function notifyComment(){ global $database,$owner,$service,$blog,$hostURL; $blogURL=$hostURL.($service['type']=='path'?"{$service['path']}/{$blog['name']}":$service['path']); $sql=" select CN.*, CNQ.id AS queueId, CNQ.commentId AS commentId, CNQ.sendStatus AS sendStatus, CNQ.checkDate AS checkDate, CNQ.written AS queueWritten from {$database['prefix']}CommentsNotifiedQueue AS CNQ LEFT JOIN {$database['prefix']}Comments AS CN ON CNQ.commentId = CN.id where CNQ.sendStatus = '0' and CN.parent is not null ORDER BY CNQ.id ASC limit 0, 1 "; $queue=fetchQueryRow($sql); if(empty($queue)&&empty($queue['queueId'])){ executeQuery("DELETE FROM `{$database['prefix']}CommentsNotifiedQueue` WHERE `id`={$queue['queueId']}"); return false; } $comments=(fetchQueryRow("SELECT * FROM {$database['prefix']}Comments WHERE owner = $owner AND id = {$queue['commentId']}")); if(empty($comments['parent'])||$comments['secret']==1){ executeQuery("DELETE FROM `{$database['prefix']}CommentsNotifiedQueue` WHERE `id`={$queue['queueId']}"); return false; } $parentComments=(fetchQueryRow("SELECT * FROM {$database['prefix']}Comments WHERE owner = $owner AND id = {$comments['parent']}")); if(empty($parentComments['homepage'])){ executeQuery("DELETE FROM `{$database['prefix']}CommentsNotifiedQueue` WHERE `id`={$queue['queueId']}"); return false; } $entry=(fetchQueryRow("SELECT * FROM {$database['prefix']}Entries WHERE owner = $owner AND id={$comments['entry']}")); $data="url=".rawurlencode($blogURL)."&mode=fb"."&s_home_title=".rawurlencode($blog['title'])."&s_post_title=".rawurlencode($entry['title'])."&s_name=".rawurlencode($comments['name'])."&s_no=".rawurlencode($comments['entry'])."&s_url=".rawurlencode("$blogURL/".($blog['useSlogan']?"entry/{$entry['slogan']}":$entry['id']))."&r1_name=".rawurlencode($parentComments['name'])."&r1_no=".rawurlencode($parentComments['id'])."&r1_pno=".rawurlencode($comments['entry'])."&r1_rno=0"."&r1_homepage=".rawurlencode($parentComments['homepage'])."&r1_regdate=".rawurlencode($parentComments['written'])."&r1_url=".rawurlencode("$blogURL/".($blog['useSlogan']?"entry/{$entry['slogan']}":$entry['id'])."#comment".$parentComments['id'])."&r2_name=".rawurlencode($comments['name'])."&r2_no=".rawurlencode($comments['id'])."&r2_pno=".rawurlencode($comments['entry'])."&r2_rno=".rawurlencode($comments['parent'])."&r2_homepage=".rawurlencode($comments['homepage'])."&r2_regdate=".rawurlencode($comments['written'])."&r2_url=".rawurlencode("$blogURL/".($blog['useSlogan']?"entry/{$entry['slogan']}":$entry['id'])."#comment".$comments['id'])."&r1_body=".rawurlencode($parentComments['comment'])."&r2_body=".rawurlencode($comments['comment']); requireComponent('Eolin.PHP.HTTPRequest'); if(strpos($parentComments['homepage'],"http://")===false){ $homepage='http://'.$parentComments['homepage']; }else{ $homepage=$parentComments['homepage']; } $request=new HTTPRequest('POST',$homepage); $request->contentType='application/x-www-form-urlencoded; charset=utf-8'; $request->content=$data; if($request->send()){ $xmls=new XMLStruct(); if($xmls->open($request->responseText)){ $result=$xmls->selectNode('/response/error/'); if($result['.value']!='1'&&$result['.value']!='0'){ $homepage=rtrim($homepage,'/').'/index.php'; $request=new HTTPRequest('POST',$homepage); $request->contentType='application/x-www-form-urlencoded; charset=utf-8'; $request->content=$data; if($request->send()){ } } } }else{ } executeQuery("DELETE FROM `{$database['prefix']}CommentsNotifiedQueue` WHERE `id`={$queue['queueId']}"); } function receiveNotifiedComment($post){ if(empty($post['mode'])||$post['mode']!='fb') return 1; global $database,$owner; $title=mysql_real_escape_string($post['s_home_title']); $name=mysql_real_escape_string($post['s_name']); $entryId=mysql_real_escape_string($post['s_no']); $homepage=mysql_real_escape_string($post['url']); $entryUrl=mysql_real_escape_string($post['s_url']); $entryTitle=mysql_real_escape_string($post['s_post_title']); $parent_id=$post['r1_no']; $parent_name=mysql_real_escape_string($post['r1_name']); $parent_parent=$post['r1_rno']; $parent_homepage=mysql_real_escape_string($post['r1_homepage']); $parent_written=$post['r1_regdate']; $parent_comment=mysql_real_escape_string($post['r1_body']); $parent_url=mysql_real_escape_string($post['r1_url']); $child_id=$post['r2_no']; $child_name=mysql_real_escape_string($post['r2_name']); $child_parent=$post['r2_rno']; $child_homepage=mysql_real_escape_string($post['r2_homepage']); $child_written=$post['r2_regdate']; $child_comment=mysql_real_escape_string($post['r2_body']); $child_url=mysql_real_escape_string($post['r2_url']); $sql="SELECT id FROM `{$database['prefix']}CommentsNotifiedSiteInfo` WHERE url = '$homepage'"; $siteId=fetchQueryCell($sql); if(empty($siteId)){ if(executeQuery("INSERT INTO `{$database['prefix']}CommentsNotifiedSiteInfo` VALUES ('', '$title', '$name', '$homepage', UNIX_TIMESTAMP());")) $siteId=mysql_insert_id(); else return 2; } $parentId=fetchQueryCell("SELECT id FROM `{$database['prefix']}CommentsNotified` WHERE `entry` = $entryId AND `siteId` = $siteId AND owner = $owner AND remoteId = $parent_id"); if(empty($parentId)){ $sql="INSERT INTO `{$database['prefix']}CommentsNotified` ( `owner` , `replier` , `id` , `entry` , `parent` , `name` , `password` , `homepage` , `secret` , `comment` , `ip` , `written`, `modified` , `siteId` , `isNew` , `url` , `remoteId` ,`entryTitle` , `entryUrl` ) VALUES ( $owner, NULL , '', ".$entryId.", ".(empty($parent_parent)?'null':$parent_parent).", '".$parent_name."', '', '".$parent_homepage."', '', '".$parent_comment."', '', ".$parent_written.",UNIX_TIMESTAMP(), ".$siteId.", 1, '".$parent_url."',".$parent_id.", '".$entryTitle."', '".$entryUrl."' );"; if(!executeQuery($sql)) return 3; $parentId=mysql_insert_id(); } if(fetchQueryCell("SELECT count(*) FROM `{$database['prefix']}CommentsNotified` WHERE siteId=$siteId AND remoteId=$child_id")>0) return 4; $sql="INSERT INTO `{$database['prefix']}CommentsNotified` ( `owner` , `replier` , `id` , `entry` , `parent` , `name` , `password` , `homepage` , `secret` , `comment` , `ip` , `written`, `modified` , `siteId` , `isNew` , `url` , `remoteId` ,`entryTitle` , `entryUrl` ) VALUES ( $owner, NULL , '', ".$entryId.", $parentId, '$child_name', '', '$child_homepage', '', '$child_comment', '', $child_written, UNIX_TIMESTAMP(), $siteId, 1, '$child_url',$child_id, '$entryTitle', '$entryUrl');"; if(!executeQuery($sql)) return 5; $sql="UPDATE {$database['prefix']}CommentsNotified SET modified = UNIX_TIMESTAMP() WHERE id=$parentId"; if(!executeQuery($sql)) return 6; return 0; } function getEntriesTotalCount($owner){ global $database; $visibility=doesHaveOwnership()?'':'AND visibility > 0'; return fetchQueryCell("SELECT COUNT(*) FROM {$database['prefix']}Entries WHERE owner = $owner AND draft = 0 $visibility AND category >= 0"); } function getEntriesWithPaging($owner,$page,$count){ global $database; $visibility=doesHaveOwnership()?'':'AND e.visibility > 0'; $sql="SELECT e.*, c.label categoryLabel FROM {$database['prefix']}Entries e LEFT JOIN {$database['prefix']}Categories c ON e.owner = c.owner AND e.category = c.id WHERE e.owner = $owner AND e.draft = 0 $visibility AND e.category >= 0 ORDER BY e.published DESC"; return fetchWithPaging($sql,$page,$count); } function getRecentEntries($owner){ global $database,$skinSetting; $entries=array(); $visibility=doesHaveOwnership()?'':'AND visibility > 0'; $result=mysql_query("SELECT id, title, comments FROM {$database['prefix']}Entries WHERE owner = $owner AND draft = 0 $visibility AND category >= 0 ORDER BY published DESC LIMIT {$skinSetting['entriesOnRecent']}"); while($entry=mysql_fetch_array($result)){ array_push($entries,$entry); } return $entries; } function setEntryVisibility($id,$visibility){ global $database,$owner; if(($visibility<0)||($visibility>3)) return false; list($oldVisibility,$category)=fetchQueryRow("SELECT visibility, category FROM {$database['prefix']}Entries WHERE owner = $owner AND id = $id AND draft = 0"); if($oldVisibility===null) return false; if(($category==-1)&&(($visibility==1)||($visibility==3))) return false; if($visibility==$oldVisibility) return true; $result=mysql_query("UPDATE {$database['prefix']}Entries SET visibility = $visibility, modified = UNIX_TIMESTAMP() WHERE owner = $owner AND id = $id"); if(!$result) return false; if(mysql_affected_rows()==0) return true; if($oldVisibility==3) syndicateEntry($id,false); elseif($visibility==3){ if(!syndicateEntry($id)){ mysql_query("UPDATE {$database['prefix']}Entries SET visibility = $oldVisibility, modified = UNIX_TIMESTAMP() WHERE owner = $owner AND id = $id"); return false; } } if($category>=0){ if((($oldVisibility>=2)&&($visibility<2))||(($oldVisibility<2)&&($visibility>=2))) clearRSS(); if($category>0) updateEntriesOfCategory($owner,$category); } return true; } function syndicateEntry($id,$syndicate=true){ global $database,$owner; global $hostURL,$blogURL; $mode=($syndicate?1:0); requireComponent('Eolin.PHP.HTTPRequest'); $request=new HTTPRequest('POST',TATTERTOOLS_SYNC_URL); $request->contentType='application/x-www-form-urlencoded; charset=utf-8'; if($request->send("mode=$mode&path=".urlencode("$hostURL$blogURL/sync/$id"))&&(checkResponseXML($request->responseText)===0)) return true; return false; } function publishEntries(){ global $database,$owner; $entries=fetchQueryAll("SELECT id, visibility FROM {$database['prefix']}Entries WHERE owner = $owner AND draft = 0 AND visibility < 0 AND published < UNIX_TIMESTAMP()"); if(count($entries)==0) return ; foreach($entries as $i=>$entry){ $result=mysql_query("UPDATE {$database['prefix']}Entries SET visibility = 0 WHERE owner = $owner AND id = {$entry['id']} AND draft = 0"); if($result&&(mysql_affected_rows()>0)) setEntryVisibility($entry['id'],abs($entry['visibility'])); } } function getEntryVisibilityName($visibility){ switch(abs($visibility)){ case 0: return _t('비공개'); case 1: return _t('보호'); case 2: return _t('공개'); case 3: default: return _t('발행'); } } function isFiltered($owner,$mode,$value){ global $database; $value=mysql_escape_string($value); switch($mode){ case 'sitename': $table='URLFilters'; $column='url'; $value=str_replace('http://','',$value); $lastSlashPos=lastIndexOf($value,'/'); if($lastSlashPos>-1){ $value=substr($value,0,$lastSlashPos); } break; case 'name': $table='GuestFilters'; $column='name'; break; case 'address': $table='HostFilters'; $column='address'; break; case 'contents': $table='ContentFilters'; $column='word'; break; default: return false; } if($mode=='contents'){ $result=mysql_query("select $column from {$database['prefix']}$table WHERE owner = $owner"); while($row=mysql_fetch_row($result)){ if(eregi($row[0],$value)){ return true; } } return false; }else{ return mysql_result(mysql_query("select count(*) from {$database['prefix']}$table WHERE owner = $owner AND $column = '$value'"),0,0); } } function getKeywordNames($owner){ return array(); } function getNotices($owner){ global $database; $visibility=doesHaveOwnership()?'':'AND visibility = 2'; return fetchQueryAll("SELECT id, title, published FROM {$database['prefix']}Entries WHERE owner = $owner AND draft = 0 $visibility AND category = -2 ORDER BY published DESC"); } function getLinks($owner){ global $database; $links=array(); if($result=mysql_query("select * from {$database['prefix']}Links where owner = $owner ORDER BY name")){ while($link=mysql_fetch_array($result)) array_push($links,$link); } return $links; } function fetchWithPaging($sql,$page,$count,$url=null,$prefix='?page='){ global $folderURL; if($url===null) $url=$folderURL; $paging=array('url'=>$url,'prefix'=>$prefix,'postfix'=>''); if(empty($sql)) return array(array(),$paging); if(eregi('[[:space:]]{1}(FROM.*)$',$sql,$matches)) $from=$matches[1]; else return array(array(),$paging); $paging['total']=fetchQueryCell("SELECT COUNT(*) $from"); if($paging['total']===null) return array(array(),$paging); $paging['pages']=intval(ceil($paging['total']/$count)); $paging['page']=is_numeric($page)?$page:1; if($paging['page']>$paging['pages']){ $paging['page']=$paging['pages']+1; if($paging['pages']>0) $paging['prev']=$paging['pages']; return array(array(),$paging); } if($paging['page']>1) $paging['prev']=$paging['page']-1; if($paging['page']<$paging['pages']) $paging['next']=$paging['page']+1; $offset=($paging['page']-1)*$count; return array(fetchQueryAll("$sql LIMIT $offset, $count"),$paging); } function clearRSS(){ global $owner; @unlink("../cache/rss/$owner.xml"); } function getStatistics($owner){ global $database; $stats=array('total'=>0,'today'=>0,'yesterday'=>0); $result=mysql_query("select visits from {$database['prefix']}BlogStatistics where owner = $owner"); if(mysql_num_rows($result)==1) list($stats['total'])=mysql_fetch_array($result); $result=mysql_query("select visits from {$database['prefix']}DailyStatistics where owner = $owner and `date` = ".Timestamp::getDate()); if(mysql_num_rows($result)==1) list($stats['today'])=mysql_fetch_array($result); $result=mysql_query("select visits from {$database['prefix']}DailyStatistics where owner = $owner and `date` = ".Timestamp::getDate(time()-86400)); if(mysql_num_rows($result)==1) list($stats['yesterday'])=mysql_fetch_array($result); return $stats; } function updateVisitorStatistics($owner){ global $database,$blogURL; if(!fireEvent('UpdatingVisitorStatistics',true)) return ; if(doesHaveOwnership()) return ; $id=session_id(); $result=mysql_query("select blog from {$database['prefix']}SessionVisits where id = '$id' and address = '{$_SERVER['REMOTE_ADDR']}' and blog = $owner"); if($result&&(mysql_num_rows($result)>0)) return ; if(mysql_query("insert into {$database['prefix']}SessionVisits values('$id', '{$_SERVER['REMOTE_ADDR']}', $owner)")&&(mysql_affected_rows()>0)){ mysql_query("update {$database['prefix']}BlogStatistics set visits = visits + 1 where owner = $owner"); if(mysql_affected_rows()==0){ if(mysql_query("update {$database['prefix']}BlogStatistics set visits = visits + 1 where owner = $owner")||(mysql_affected_rows()==0)) mysql_query("insert into {$database['prefix']}BlogStatistics values($owner, 1)"); } $period=Timestamp::getDate(); mysql_query("update {$database['prefix']}DailyStatistics set visits = visits + 1 where owner = $owner and `date` = $period"); if(mysql_affected_rows()==0){ if(!mysql_query("insert into {$database['prefix']}DailyStatistics values($owner, $period, 1)")||(mysql_affected_rows()==0)) mysql_query("update {$database['prefix']}DailyStatistics set visits = visits + 1 where owner = $owner and `date` = $period"); } if(!empty($_SERVER['HTTP_REFERER'])){ $referer=parse_url($_SERVER['HTTP_REFERER']); if(!empty($referer['host'])&&(($referer['host']!=$_SERVER['HTTP_HOST'])||(strncmp($referer['path'],$blogURL,strlen($blogURL))!=0))){ requireComponent('Tattertools.Data.Filter'); if(Filter::isFiltered('ip',$_SERVER['REMOTE_ADDR'])||Filter::isFiltered('url',$_SERVER['HTTP_REFERER'])) return ; if(!fireEvent('AddingRefererLog',true,array('host'=>$referer['host'],'url'=>$_SERVER['HTTP_REFERER']))) return ; $host=mysql_escape_string($referer['host']); $url=mysql_escape_string($_SERVER['HTTP_REFERER']); mysql_query("insert into {$database['prefix']}RefererLogs values($owner, '$host', '$url', UNIX_TIMESTAMP())"); mysql_query("delete from {$database['prefix']}RefererLogs where referred < UNIX_TIMESTAMP() - 604800"); if(!mysql_query("update {$database['prefix']}RefererStatistics set count = count + 1 where owner = $owner and host = '$host'")||(mysql_affected_rows()==0)) mysql_query("insert into {$database['prefix']}RefererStatistics values($owner, '$host', 1)"); } } } } function getTrackbacks($entry){ global $database,$owner; $trackbacks=array(); $result=mysql_query("select * from {$database['prefix']}Trackbacks where owner = $owner AND entry = $entry order by written"); while($trackback=mysql_fetch_array($result)) array_push($trackbacks,$trackback); return $trackbacks; } function getRecentTrackbacks($owner){ global $database; global $skinSetting; $trackbacks=array(); $sql=doesHaveOwnership()?"SELECT * FROM {$database['prefix']}Trackbacks WHERE owner = $owner ORDER BY written DESC LIMIT {$skinSetting['trackbacksOnRecent']}":"SELECT t.* FROM {$database['prefix']}Trackbacks t, {$database['prefix']}Entries e WHERE t.owner = $owner AND t.owner = e.owner AND t.entry = e.id AND e.draft = 0 AND e.visibility >= 2 ORDER BY t.written DESC LIMIT {$skinSetting['trackbacksOnRecent']}"; if($result=mysql_query($sql)){ while($trackback=mysql_fetch_array($result)) array_push($trackbacks,$trackback); } return $trackbacks; } function lastIndexOf($string,$item){ $index=strpos(strrev($string),strrev($item)); if($index){ $index=strlen($string)-strlen($item)-$index; return $index; }else return -1; } function getTags($entry){ global $database,$owner; $tags=array(); $result=mysql_query("select * from {$database['prefix']}Tags, {$database['prefix']}TagRelations where id = tag and entry = $entry and owner = $owner group by name order by name"); if($result){ while($tag=mysql_fetch_array($result)) array_push($tags,$tag); } return $tags; } function getRandomTags($owner){ global $database,$skinSetting; $tags=array(); $aux=($skinSetting['tagsOnTagbox']==-1)?'':"limit {$skinSetting['tagsOnTagbox']}"; if($skinSetting['tagboxAlign']==1) $result=mysql_query("select name, count(*) cnt from {$database['prefix']}Tags, {$database['prefix']}TagRelations where id = tag and owner = $owner GROUP BY name ORDER BY cnt DESC $aux"); elseif($skinSetting['tagboxAlign']==2) $result=mysql_query("select distinct name from {$database['prefix']}Tags, {$database['prefix']}TagRelations where id = tag and owner = $owner ORDER BY name $aux"); else $result=mysql_query("select name from {$database['prefix']}Tags, {$database['prefix']}TagRelations where id = tag and owner = $owner GROUP BY name ORDER BY RAND() $aux"); if($result){ while(list($tag)=mysql_fetch_row($result)) array_push($tags,$tag); } return $tags; } function getTagFrequencyRange(){ global $database,$owner; $max=$min=0; $result=mysql_query("select count(entry) cnt from {$database['prefix']}TagRelations where owner = $owner group by tag order by cnt desc limit 1"); if($result){ if(list($count)=mysql_fetch_array($result)) $max=$count; } $result=mysql_query("select count(entry) cnt from {$database['prefix']}TagRelations where owner = $owner group by tag order by cnt limit 1"); if($result){ if(list($count)=mysql_fetch_array($result)) $min=$count; } return array($max,$min); } function getTagFrequency($tag,$max,$min){ global $database,$owner; $count=fetchQueryCell("select count(*) from {$database['prefix']}Tags t, {$database['prefix']}TagRelations r where t.id=r.tag and r.owner = $owner and t.name = '".mysql_escape_string($tag)."'"); $dist=$max/3; if($count==$min) return 5; elseif($count==$max) return 1; elseif($count>=$min+($dist*2)) return 2; elseif($count>=$min+$dist) return 3; else return 4; } $url=isset($_SERVER['REDIRECT_URL'])?$_SERVER['REDIRECT_URL']:$_SERVER['SCRIPT_NAME']; $suri=array('url'=>$url,'value'=>''); $owner=null; $depth=substr_count($service['path'],'/'); if($depth>0){ if(ereg("^((/+[^/]+){{$depth}})(.*)$",$url,$matches)) $url=$matches[3]; else respondNotFoundPage(); } if($service['type']=='single'){ $owner=1; }else{ if($service['type']=='domain'){ if($_SERVER['HTTP_HOST']==$service['domain']){ $owner=1; }else{ $domain=explode('.',$_SERVER['HTTP_HOST'],2); if($domain[1]==$service['domain']){ $owner=getOwner($domain[0]); if($owner===null) $owner=getOwnerBySecondaryDomain($_SERVER['HTTP_HOST']); }else{ $owner=getOwnerBySecondaryDomain($_SERVER['HTTP_HOST']); } } }else{ if($url=='/'){ $owner=1; }elseif(ereg('^/+([^/]+)(.*)$',$url,$matches)){ $owner=getOwner($matches[1]); $url=$matches[2]; }else{ respondNotFoundPage(); } } if($owner===null) respondNotFoundPage(); } $blog=getBlogSetting($owner); $skinSetting=getSkinSetting($owner); $depth=substr_count(ROOT,'/'); if($depth>0){ if(ereg("^((/+[^/]+){{$depth}})/*(.*)$",$url,$matches)){ $suri['directive']=$matches[1]; if($matches[3]!==false) $suri['value']=$matches[3]; }else respondNotFoundPage(); }else{ $suri['directive']='/'; $suri['value']=ltrim($url,'/'); } if(is_numeric($suri['value'])) $suri['id']=$suri['value']; $suri['page']=empty($_POST['page'])?(empty($_GET['page'])?true:$_GET['page']):$_POST['page']; $hostURL="http://{$_SERVER['HTTP_HOST']}".(isset($service['port'])?":{$service['port']}":''); $blogURL=$service['type']=='path'?"{$service['path']}/{$blog['name']}":$service['path']; $folderURL=rtrim($blogURL.$suri['directive'],'/'); unset($url,$domain); if(!file_exists('../config.php')){ header("Location: $blogURL/setup.php"); exit; } function respondNotFoundPage(){ header('HTTP/1.1 404 Not Found'); header("Connection: close"); exit; } function getMicrotimeAsFloat(){ list($usec,$sec)=explode(" ",microtime()); return ($usec+$sec); } $sessionMicrotime=getMicrotimeAsFloat(); function openSession($savePath,$sessionName){ return true; } function closeSession(){ return true; } function readSession($id){ global $database,$service; if($result=mysql_query("SELECT data FROM {$database['prefix']}Sessions WHERE id = '$id' AND address = '{$_SERVER['REMOTE_ADDR']}' AND updated >= (UNIX_TIMESTAMP() - {$service['timeout']})")){ if($session=mysql_fetch_array($result)) return $session['data']; } return ''; } function writeSession($id,$data){ global $database; global $sessionMicrotime; if(strlen($id)<32) return false; $userid=isset($_SESSION['userid'])?$_SESSION['userid']:'null'; $data=mysql_escape_string($data); $server=mysql_escape_string($_SERVER['HTTP_HOST']); $request=mysql_escape_string($_SERVER['REQUEST_URI']); $referer=isset($_SERVER['HTTP_REFERER'])?mysql_escape_string($_SERVER['HTTP_REFERER']):''; $timer=getMicrotimeAsFloat()-$sessionMicrotime; $result=mysql_query("UPDATE {$database['prefix']}Sessions SET userid = $userid, data = '$data', server = '$server', request = '$request', referer = '$referer', timer = $timer, updated = UNIX_TIMESTAMP() WHERE id = '$id' AND address = '{$_SERVER['REMOTE_ADDR']}'"); if($result&&(mysql_affected_rows()==1)) return true; return false; } function destroySession($id,$setCookie=false){ global $database; if(!isset($_SESSION['userid'])) return ; @mysql_query("DELETE FROM {$database['prefix']}Sessions WHERE id = '$id' AND address = '{$_SERVER['REMOTE_ADDR']}'"); gcSession(); } function gcSession($maxLifeTime=false){ global $database,$service; @mysql_query("DELETE FROM {$database['prefix']}Sessions WHERE updated < (UNIX_TIMESTAMP() - {$service['timeout']})"); $result=@mysql_query("SELECT DISTINCT v.id, v.address FROM {$database['prefix']}SessionVisits v LEFT JOIN {$database['prefix']}Sessions s ON v.id = s.id AND v.address = s.address WHERE s.id IS NULL AND s.address IS NULL"); if($result){ $gc=array(); while($g=mysql_fetch_row($result)) array_push($gc,$g); foreach($gc as $g) @mysql_query("DELETE FROM {$database['prefix']}SessionVisits WHERE id = '{$g[0]}' AND address = '{$g[1]}'"); } return true; } function getAnonymousSession(){ global $database; $result=mysql_query("SELECT id FROM {$database['prefix']}Sessions WHERE address = '{$_SERVER['REMOTE_ADDR']}' AND userid IS NULL AND preexistence IS NULL"); if($result&&(list($id)=mysql_fetch_array($result))) return $id; return false; } function newAnonymousSession(){ global $database; for($i=0;$i<100;$i++){ if(($id=getAnonymousSession())!==false) return $id; $id=dechex(rand(0x10000000,0x7FFFFFFF)).dechex(rand(0x10000000,0x7FFFFFFF)).dechex(rand(0x10000000,0x7FFFFFFF)).dechex(rand(0x10000000,0x7FFFFFFF)); mysql_query("INSERT INTO {$database['prefix']}Sessions(id, address, created, updated) VALUES('$id', '{$_SERVER['REMOTE_ADDR']}', UNIX_TIMESTAMP(), UNIX_TIMESTAMP())"); if(mysql_affected_rows()>0) return $id; } return false; } function setSessionAnonymous($currentId){ $id=getAnonymousSession(); if($id!==false){ if($id!=$currentId) session_id($id); return true; } $id=newAnonymousSession(); if($id!==false){ session_id($id); return true; } return false; } function isSessionAuthorized($id){ global $database; $result=mysql_query("select id from {$database['prefix']}Sessions where id = '$id' and address = '{$_SERVER['REMOTE_ADDR']}' and (userid is not null or preexistence is not null)"); if($result&&(mysql_num_rows($result)==1)) return true; return false; } function setSession(){ $id=empty($_COOKIE[session_name()])?'':$_COOKIE[session_name()]; if((strlen($id)<32)||!isSessionAuthorized($id)) setSessionAnonymous($id); } session_name('TSSESSION'); setSession(); session_set_save_handler('openSession','closeSession','readSession','writeSession','destroySession','gcSession'); session_cache_expire(1); session_set_cookie_params(0,'/',$service['domain']); if(session_start()!==true){ header('HTTP/1.1 503 Service Unavailable'); } function doesHaveMembership(){ return empty($_SESSION['userid'])?false:true; } function getUserId(){ return empty($_SESSION['userid'])?false:$_SESSION['userid']; } function doesHaveOwnership(){ global $owner; if(empty($_SESSION['userid'])||($_SESSION['userid']!=$owner)) return false; return true; } if(doesHaveMembership()){ $user=array('id'=>getUserId()); list($user['loginid'],$user['name'])=fetchQueryRow("select loginid, name from {$database['prefix']}Users where userid = {$user['id']}"); list($user['blog'],$user['timezone'])=fetchQueryRow("select name, timezone from {$database['prefix']}BlogSettings where owner = {$user['id']}"); $user['homepage']=getBlogURL($user['blog']); }else $user=null; Timezone::set(isset($blog['timezone'])?$blog['timezone']:$service['timezone']); mysql_query('SET time_zone = \''.Timezone::getCanonical().'\''); Locale::setDirectory('../language'); Locale::set(isset($blog['language'])?$blog['language']:$service['language']); $activePlugins=array(); $eventMappings=array(); $tagMappings=array(); if(!empty($owner)){ $activePlugins=fetchQueryColumn("SELECT name FROM {$database['prefix']}Plugins WHERE owner = $owner"); $xmls=new XMLStruct(); foreach($activePlugins as $plugin){ $manifest=@file_get_contents("../plugins/$plugin/index.xml"); if($manifest&&$xmls->open($manifest)){ if($xmls->doesExist('/plugin/binding/listener')){ foreach($xmls->selectNodes('/plugin/binding/listener') as $listener){ if(!empty($listener['.attributes']['event'])&&!empty($listener['.value'])){ if(!isset($eventMappings[$listener['.attributes']['event']])) $eventMappings[$listener['.attributes']['event']]=array(); array_push($eventMappings[$listener['.attributes']['event']],array('plugin'=>$plugin,'listener'=>$listener['.value'])); } } unset($listener); } if($xmls->doesExist('/plugin/binding/tag')){ foreach($xmls->selectNodes('/plugin/binding/tag') as $tag){ if(!empty($tag['.attributes']['name'])&&!empty($tag['.attributes']['handler'])){ if(!isset($tagMappings[$tag['.attributes']['name']])) $tagMappings[$tag['.attributes']['name']]=array(); array_push($tagMappings[$tag['.attributes']['name']],array('plugin'=>$plugin,'handler'=>$tag['.attributes']['handler'])); } } unset($tag); } }else{ $plugin=mysql_escape_string($plugin); mysql_query("DELETE FROM {$database['prefix']}Plugins WHERE owner = $owner AND name = '$plugin'"); } } unset($xmls); unset($plugin); } function fireEvent($event,$target=null,$mother=null,$condition=true){ global $service,$eventMappings,$pluginURL; if(!$condition) return $target; if(!isset($eventMappings[$event])) return $target; foreach($eventMappings[$event] as $mapping){ include_once ("../plugins/{$mapping['plugin']}/index.php"); if(function_exists($mapping['listener'])){ $pluginURL="{$service['path']}/plugins/{$mapping['plugin']}"; $target=call_user_func($mapping['listener'],$target,$mother); } } return $target; } function handleTags(&$content){ global $service,$tagMappings,$pluginURL; if(preg_match_all('/\[##_(\w+)_##\]/',$content,$matches)){ foreach($matches[1] as $tag){ if(!isset($tagMappings[$tag])) continue; $target=''; foreach($tagMappings[$tag] as $mapping){ include_once ("../plugins/{$mapping['plugin']}/index.php"); if(function_exists($mapping['handler'])){ $pluginURL="{$service['path']}/plugins/{$mapping['plugin']}"; $target=call_user_func($mapping['handler'],$target); } } dress($tag,$target,$content); } } } function respondErrorPage($message=''){ global $service;?> <?=TATTERTOOLS_NAME?>
5){ $itemView="$itemTemplate .."; dress('paging_rep_link_num','1',$itemView); dress('paging_rep_link',"href='$url{$prefix}1$postfix'",$itemView); print ($itemView); } if(isset($paging['before'])) $page=$paging['page']-count($paging['before']); else $page=$paging['page']<5?1:$paging['page']-4; if(isset($paging['before'])){ foreach($paging['before'] as $value){ $itemView=$itemTemplate; dress('paging_rep_link_num',"$page",$itemView); dress('paging_rep_link',"href='$url$prefix$value$postfix'",$itemView); print ($itemView); $page++; } }else{ for($i=0;($i<4)&&($page<$paging['page']);$i++){ $itemView=$itemTemplate; dress('paging_rep_link_num',"$page",$itemView); dress('paging_rep_link',"href='$url$prefix$page$postfix'",$itemView); print ($itemView); $page++; } } if(($page==$paging['page'])&&($page<=$paging['pages'])){ $itemView=$itemTemplate; dress('paging_rep_link_num',"$page",$itemView); dress('paging_rep_link','style="color:red" class="selected"',$itemView); print ($itemView); $page++; } if(isset($paging['before'])){ foreach($paging['after'] as $value){ $itemView=$itemTemplate; dress('paging_rep_link_num',"$page",$itemView); dress('paging_rep_link',"href='$url$prefix$value$postfix'",$itemView); print ($itemView); $page++; } }else{ for($i=0;($i<4)&&($page<=$paging['pages']);$i++){ $itemView=$itemTemplate; dress('paging_rep_link_num',"$page",$itemView); dress('paging_rep_link',"href='$url$prefix$page$postfix'",$itemView); print ($itemView); $page++; } } if(isset($paging['last'])){ $itemView=".. $itemTemplate"; dress('paging_rep_link_num',"{$paging['pages']}",$itemView); dress('paging_rep_link',"href='$url$prefix{$paging['last']}$postfix'",$itemView); print ($itemView); }elseif(($paging['pages']-$paging['page'])>4){ $itemView=".. $itemTemplate"; dress('paging_rep_link_num',"{$paging['pages']}",$itemView); dress('paging_rep_link',"href='$url$prefix{$paging['pages']}$postfix'",$itemView); print ($itemView); } $itemsView=ob_get_contents(); ob_end_clean(); $view=$template; dress('prev_page',isset($paging['prev'])?"href='$url$prefix{$paging['prev']}$postfix'":'',$view); dress('paging_rep',$itemsView,$view); dress('next_page',isset($paging['next'])?"href='$url$prefix{$paging['next']}$postfix'":'',$view); return $view; } function dress($tag,$value,&$contents){ $contents=str_replace("[##_{$tag}_##]",$value,$contents); } function getUpperView($paging){ global $g_version,$service,$blogURL; ob_start();?> ".$skin->trackback; dress('tb_rep_title',htmlspecialchars($trackback['subject']),$trackbackView); dress('tb_rep_site',htmlspecialchars($trackback['site']),$trackbackView); dress('tb_rep_url',htmlspecialchars($trackback['url']),$trackbackView); dress('tb_rep_desc',htmlspecialchars($trackback['excerpt']),$trackbackView); dress('tb_rep_onclick_delete',"deleteTrackback({$trackback['id']}, $entryId)",$trackbackView); dress('tb_rep_date',Timestamp::format5($trackback['written']),$trackbackView); $trackbacksView.=$trackbackView; } if($skinSetting['expandTrackback']==1||(($suri['directive']=='/'||$suri['directive']=='/entry')&&$suri['value']!='')){ $style='block'; }else{ $style='none'; } $trackbacksView="
".str_replace('[##_tb_rep_##]',$trackbacksView,$skin->trackbacks).'
'; dress('tb_address',"$hostURL$blogURL/trackback/$entryId",$trackbacksView); return $trackbacksView; } function getCommentView($entryId,&$skin){ global $blogURL,$owner,$suri,$paging,$blog; $authorized=doesHaveOwnership(); $skinValue=getSkinSetting($owner); $blogSetting=getBlogSetting($owner); if($entryId>0){ $prefix1='rp'; $prefix2='comment'; $isComment=true; $SubItem='commentSubItem'; }else{ $prefix1='guest'; $prefix2='guest'; $isComment=false; $SubItem='guestSubItem'; } $commentView="
".($isComment?$skin->comment:$skin->guest).'
'; $commentItemsView=''; if($entryId==0){ list($comments,$paging)=getCommentsWithPagingForGuestbook($owner,$suri['page'],$skinValue['commentsOnGuestbook']); foreach($comments as $key=>$value){ if($value['secret']==1&&!$authorized){ $comments[$key]['name']=''; $comments[$key]['homepage']=''; $comments[$key]['comment']=_t('관리자만 볼 수 있는 댓글입니다'); } } }else{ $comments=getComments($entryId); } foreach($comments as $commentItem){ $commentItemView="".($isComment?$skin->commentItem:$skin->guestItem); $commentSubItemsView=''; foreach(getCommentComments($commentItem['id']) as $commentSubItem){ $commentSubItemView="".($isComment?$skin->commentSubItem:$skin->guestSubItem); if(empty($commentSubItem['homepage'])) dress($prefix1.'_rep_name',fireEvent(($isComment?'ViewCommenter':'ViewGuestCommenter'),htmlspecialchars($commentSubItem['name']),$commentSubItem),$commentSubItemView); else dress($prefix1.'_rep_name',fireEvent(($isComment?'ViewCommenter':'ViewGuestCommenter'),''.htmlspecialchars($commentSubItem['name']).'',$commentSubItem),$commentSubItemView); dress($prefix1.'_rep_desc',fireEvent(($isComment?'ViewCommentContent':'ViewGuestCommentContent'),nl2br(addLinkSense(htmlspecialchars($commentSubItem['comment']),' onclick="return openLinkInNewWindow(this)"')),$commentSubItem),$commentSubItemView); dress($prefix1.'_rep_date',Timestamp::format5($commentSubItem['written']),$commentSubItemView); dress($prefix1.'_rep_link',"$blogURL/{$entryId}#comment{$commentSubItem['id']}",$commentSubItemView); dress($prefix1.'_rep_onclick_delete',"deleteComment({$commentSubItem['id']});return false",$commentSubItemView); $commentSubItemsView.=$commentSubItemView; } dress(($isComment?'rp2_rep':'guest_reply_rep'),$commentSubItemsView,$commentItemView); if(empty($commentItem['homepage'])) dress($prefix1.'_rep_name',fireEvent(($isComment?'ViewCommenter':'ViewGuestCommenter'),htmlspecialchars($commentItem['name']),$commentItem),$commentItemView); else dress($prefix1.'_rep_name',fireEvent(($isComment?'ViewCommenter':'ViewGuestCommenter'),''.htmlspecialchars($commentItem['name']).'',$commentItem),$commentItemView); dress($prefix1.'_rep_desc',fireEvent(($isComment?'ViewCommentContent':'ViewGuestCommentContent'),nl2br(addLinkSense(htmlspecialchars($commentItem['comment']),' onclick="return openLinkInNewWindow(this)"')),$commentItem),$commentItemView); dress($prefix1.'_rep_date',Timestamp::format5($commentItem['written']),$commentItemView); if($prefix1=='guest'&&$authorized!=true&&$blogSetting['allowWriteDoubleCommentOnGuestbook']==0){ $doubleCommentPermissionScript='alert(\''._t('댓글을 사용할 수 없습니다').'\');return false;'; }else{ $doubleCommentPermissionScript=''; } dress($prefix1.'_rep_onclick_reply',$doubleCommentPermissionScript."commentComment({$commentItem['id']});return false",$commentItemView); dress($prefix1.'_rep_onclick_delete',"deleteComment({$commentItem['id']});return false",$commentItemView); dress($prefix1.'_rep_link',"$blogURL/{$entryId}#comment{$commentItem['id']}",$commentItemView); $commentItemsView.=$commentItemView; } dress($prefix1.'_rep',$commentItemsView,$commentView); if(!doesHaveOwnership()){ $commentMemberView=($isComment?$skin->commentMember:$skin->guestMember); if(!doesHaveMembership()){ $commentGuestView=($isComment?$skin->commentGuest:$skin->guestGuest); dress($prefix1.'_input_name','name',$commentGuestView); dress($prefix1.'_input_password','password',$commentGuestView); dress($prefix1.'_input_homepage','homepage',$commentGuestView); if(!empty($_POST["name_$entryId"])) $guestName=htmlspecialchars($_POST["name_$entryId"]); elseif(!empty($_COOKIE['guestName'])) $guestName=htmlspecialchars($_COOKIE['guestName']); else $guestName=''; dress('guest_name',$guestName,$commentGuestView); if(!empty($_POST["homepage_$entryId"])&&$_POST["homepage_$entryId"]!='http://'){ if(strpos($_POST["homepage_$entryId"],'http://')===0) $guestHomepage=htmlspecialchars($_POST["homepage_$entryId"]); else $guestHomepage='http://'.htmlspecialchars($_POST["homepage_$entryId"]); }elseif(!empty($_COOKIE['guestHomepage'])) $guestHomepage=htmlspecialchars($_COOKIE['guestHomepage']); else $guestHomepage='http://'; dress('guest_homepage',$guestHomepage,$commentGuestView); dress($prefix1.($isComment?'_guest':'_form'),$commentGuestView,$commentMemberView); } dress($prefix1.'_input_is_secret','secret',$commentMemberView); dress($prefix1.'_member',$commentMemberView,$commentView); } dress($prefix1.'_input_comment','comment',$commentView); dress($prefix1.'_onclick_submit',"addComment(this, $entryId);return false",$commentView); dress($prefix1.'_textarea_body','comment',$commentView); dress($prefix1.'_textarea_body_value','',$commentView); return $commentView; } function getCategoriesView($categories,$selected,$skin,$xhtml=false){ global $blogURL,$owner; if(doesHaveOwnership()){ $entriesSign='entriesInLogin'; }else{ $entriesSign='entries'; } $tree=array('id'=>0,'label'=>_t('전체'),'value'=>getEntriesTotalCount($owner),'link'=>"$blogURL/category",'children'=>array()); foreach($categories as $category1){ $children=array(); foreach($category1['children'] as $category2){ array_push($children,array('id'=>$category2['id'],'label'=>$category2['name'],'value'=>$category2[$entriesSign],'link'=>"$blogURL/category/".encodeURL($category1['name'].'/'.$category2['name']),'children'=>array())); } array_push($tree['children'],array('id'=>$category1['id'],'label'=>$category1['name'],'value'=>$category1[$entriesSign],'link'=>"$blogURL/category/".encodeURL($category1['name']),'children'=>$children)); } ob_start(); printTreeView($tree,$selected,$skin,$xhtml); $view=ob_get_contents(); ob_end_clean(); return $view; } function printTreeView($tree,$selected,$skin,$xhtml=false){ if($xhtml){ echo ''; return ; } $action=0;?>
>
({$tree['value']})";?>
>
({$row['value']})";?>
',CRLF; for($day=1;$weekday<7;$weekday++,$day++){ if(isset($calendar['days'][$day])) echo ' ",CRLF; else echo ' ",CRLF; } echo ' ',CRLF; while(true){ echo ' ',CRLF; for($weekday=0;($weekday<7)&&($day<=$lastDay);$weekday++,$day++) if(isset($calendar['days'][$day])) echo ' ",CRLF; else echo ' ",CRLF; if($day>$lastDay){ for(;$weekday<7;$weekday++) echo ' ',CRLF; echo ' ',CRLF; break; } echo ' ',CRLF; }?>
<<     >>
S M T W T F S
9?$day:'0'.$day),"\">$day$day
9?$day:'0'.$day),"\">$day$day
".($entry['comments']>0?"({$entry['comments']})":'').'',$view); print $view; } $view=ob_get_contents(); ob_end_clean(); return $view; } function getRecentCommentsView($comments,&$template){ global $blogURL,$skinSetting; ob_start(); foreach($comments as $comment){ $view="$template"; dress('rctrp_rep_link',"$blogURL/{$comment['entry']}#comment{$comment['id']}",$view); dress('rctrp_rep_desc',htmlspecialchars(UTF8::lessenAsEm($comment['comment'],$skinSetting['recentCommentLength'])),$view); dress('rctrp_rep_time',Timestamp::format2($comment['written']),$view); dress('rctrp_rep_name',htmlspecialchars($comment['name']),$view); print $view; } $view=ob_get_contents(); ob_end_clean(); return $view; } function getRecentTrackbacksView($trackbacks,&$template){ global $blogURL,$skinSetting; ob_start(); foreach($trackbacks as $trackback){ $view="$template"; dress('rcttb_rep_link',"$blogURL/{$trackback['entry']}#trackback{$trackback['id']}",$view); dress('rcttb_rep_desc',htmlspecialchars(UTF8::lessenAsEm($trackback['subject'],$skinSetting['recentTrackbackLength'])),$view); dress('rcttb_rep_time',Timestamp::format2($trackback['written']),$view); dress('rcttb_rep_name',htmlspecialchars(UTF8::lessenAsEm($trackback['site'],$skinSetting['recentTrackbackLength'])),$view); print $view; } $view=ob_get_contents(); ob_end_clean(); return $view; } function getLinksView($links,&$template){ global $blogURL,$skinSetting; ob_start(); foreach($links as $link){ $view="$template"; dress('link_url',htmlspecialchars($link['url']),$view); dress('link_site',fireEvent('ViewLink',htmlspecialchars(UTF8::lessenAsEm($link['name'],$skinSetting['linkLength']))),$view); print $view; } $view=ob_get_contents(); ob_end_clean(); return $view; } function getRandomTagsView($tags,&$template){ global $blogURL; ob_start(); list($maxTagFreq,$minTagFreq)=getTagFrequencyRange(); foreach($tags as $tag){ $view=$template; dress('tag_link',"$blogURL/tag/".encodeURL($tag),$view); dress('tag_name',htmlspecialchars($tag),$view); dress('tag_class',"cloud".getTagFrequency($tag,$maxTagFreq,$minTagFreq),$view); print $view; } $view=ob_get_contents(); ob_end_clean(); return $view; } function getEntryContentView($owner,$id,$content,$keywords=array(),$type='Post',$useAbsolutePath=false){ global $service; $path="../attach/$owner"; $url="{$service['path']}/attach/$owner"; $view=bindAttachments($id,$path,$url,$content,$useAbsolutePath); $view=bindKeywords($keywords,$view); $view=bindTags($id,$view); $view=nl2brWithHTML($view); return fireEvent('View'.$type.'Content',$view,$id); } function bindTags($id,$content){ for($no=0;(($start=strpos($content,'[#M_'))!==false)&&(($end=strpos($content,'_M#]',$start+4))!==false);$no++){ $prefix=substr($content,0,$start); list($more,$less,$full)=explode('|',substr($content,$start+4,$end-$start-4),3); $postfix=substr($content,$end+4); $content=$prefix; { $content.="
$more
"; $content.="
$less$full
"; } $content.=$postfix; } return $content; } function bindKeywords($keywords,$content){ return $content; } function bindAttachments($entryId,$folderPath,$folderURL,$content,$useAbsolutePath=false){ global $service,$owner,$hostURL,$blogURL; $view=str_replace('[##_ATTACH_PATH_##]',($useAbsolutePath?"$hostURL{$service['path']}/attach/$owner":$folderURL),$content); $count=0; while((($start=strpos($view,'[##_'))!==false)&&(($end=strpos($view,'_##]',$start+4))!==false)){ $count++; $attributes=explode('|',substr($view,$start+4,$end-$start-4)); $prefix=''; $postfix=''; $buf=''; if($attributes[0]=='Gallery'){ if(count($attributes)%2==1) array_pop($attributes); { $id="Gallery$entryId$count"; $items=array(); for($i=1;$i'; $buf.=''; } }elseif($attributes[0]=='iMazing'){ { $params=getAttributesFromString($attributes[sizeof($attributes)-2]); $id=$entryId.$count; $imgs=array_slice($attributes,1,count($attributes)-3); $imgStr=''; for($i=0;$i'; }else{ $caption=''; } $buf.='
ZOOM'; $buf.=''; $buf.=''; $buf.=''; $buf.=''; $buf.='
'; $buf.=''; $buf.='
'.$caption.'
'; } }elseif($attributes[0]=='Jukebox'){ { $params=getAttributesFromString($attributes[sizeof($attributes)-2]); foreach($params as $key=>$value){ if($key=='autoPlay'){ unset($params['autoplay']); $params['autoplay']=$value; } } if($params['visible']==1){ $width='250px'; $height='27px'; }else{ $width='0px'; $height='0px'; } $id=$entryId.$count; $imgs=array_slice($attributes,1,count($attributes)-3); $imgStr=''; for($i=0;$i'; }else{ $caption=''; } $buf='
'; $buf.='
'; $buf.=''; $buf.='
'.$caption.'
'; } }else{ switch(count($attributes)){ case 4: { if(trim($attributes[3])==''){ $marginBottom='; margin-bottom: 10px'; $caption=''; }else{ $marginBottom=''; $caption="

{$attributes[3]}

"; } if($attributes[0]=='1L'){ $prefix='
'; }elseif($attributes[0]=='1C') $prefix='
'; elseif($attributes[0]=='1R') $prefix='
'; $buf=$prefix.getAttachmentBinder($attributes[1],$attributes[2],$folderPath,$folderURL,1,$useAbsolutePath).$caption.'
'; } break; case 7: { $buf='
'.getAttachmentBinder($attributes[1],$attributes[2],$folderPath,$folderURL,2,$useAbsolutePath)."
{$attributes[3]}
".getAttachmentBinder($attributes[4],$attributes[5],$folderPath,$folderURL,2,$useAbsolutePath)."
{$attributes[6]}
"; } break; case 10: { $buf='
'.getAttachmentBinder($attributes[1],$attributes[2],$folderPath,$folderURL,3,$useAbsolutePath)."
{$attributes[3]}
".getAttachmentBinder($attributes[4],$attributes[5],$folderPath,$folderURL,3,$useAbsolutePath)."
{$attributes[6]}
".getAttachmentBinder($attributes[7],$attributes[8],$folderPath,$folderURL,3,$useAbsolutePath)."
{$attributes[9]}
"; } break; } } $view=substr($view,0,$start).$buf.substr($view,$end+4); } return $view; } function getAttachmentBinder($filename,$property,$folderPath,$folderURL,$imageBlocks=1,$useAbsolutePath=false){ global $service,$owner,$blogURL,$hostURL; $path="$folderPath/$filename"; if($useAbsolutePath) $url="$hostURL{$service['path']}/attach/$owner/$filename"; else $url="$folderURL/$filename"; $fileInfo=getAttachmentByOnlyName($owner,$filename); switch(getFileExtension($filename)){ case 'jpg': case 'jpeg': case 'gif': case 'png': case 'bmp': { list($width,$height)=@getimagesize($path); $setWidth=$width; $setHeight=$height; $scroll=0; if($width>800){ $setWidth=820; $scroll=1; } if($height>600){ $setWidth+=10; $setHeight=600; $scroll=1; } $property=str_replace('"','"',$property); if(strpos(str_replace('"','',$property),"width=$width")!==false&&strpos(str_replace('"','',$property),"height=$height")!==false) return fireEvent('ViewAttachedImage',"",$path); else{ $setWidth+=50; $setHeight+=150; return fireEvent('ViewAttachedImage',"",$path); } } break; case 'swf': $id=md5($url).rand(1,10000); return " "; break; case 'wmv': case 'avi': case 'asf': case 'mpg': case 'mpeg': $id=md5($url).rand(1,10000); return ""; break; case 'mp3': case 'mp2': case 'wma': case 'wav': case 'mid': case 'midi': $id=md5($url).rand(1,10000); return ""; break; case 'mov': $id=md5($url).rand(1,10000); return ""; break; default: if(file_exists(ROOT.'/image/'.getFileExtension($filename).'.gif')){ return ' '.htmlspecialchars($fileInfo['label']).''; }else{ return ' '.htmlspecialchars($fileInfo['label']).''; } break; } } function printScript($filename,$obfuscate=true){ global $service,$hostURL,$blogURL; if(!$file=@file_get_contents("../script/$filename")) return ''; $file=""; } class Skin{ var $outter; var $skin; var $list; var $listItem; var $commentList; var $commentListItem; var $rss; var $rss_date; var $rss_rep; var $keywordItem; var $keywordGroup; var $keyword; var $noticeItem; var $recentNotice; var $recentNoticeItem; var $locative; var $locativeSpot; var $locativeEntry; var $guest; var $guestGuest; var $guestMember; var $guestItem; var $guestSubItem; var $search; var $recentEntry; var $recentComments; var $recentTrackback; var $management; var $entryProtected; var $entry; var $paging; var $pagingItem; var $archive; var $s_ps; var $s_ps_rep; var $comment; var $commentGuest; var $commentMember; var $commentItem; var $commentSubItem; var $trackbacks; var $trackback; var $tagLabel; var $siteTag; var $siteTagItem; var $randomTags; var $s_link_rep; var $aux; function Skin($name){ global $service; $filename="../skin/$name/skin.html"; if(!$sval=file_get_contents($filename)) respondErrorPage('Skin'); $sval=replaceSkinTag($sval,'html'); $sval=replaceSkinTag($sval,'head'); $sval=replaceSkinTag($sval,'body'); handleTags($sval); $sval=str_replace('./',"{$service['path']}/skin/$name/",$sval); list($sval,$this->listItem)=cutSkinTag($sval,'list_rep'); list($sval,$this->list)=cutSkinTag($sval,'list'); list($sval,$this->commentListItem)=cutSkinTag($sval,'rplist_rep'); list($sval,$this->commentList)=cutSkinTag($sval,'rplist'); list($sval,$this->rss_rep)=cutSkinTag($sval,'rss_rep'); list($sval,$this->rss_date)=cutSkinTag($sval,'rss_date'); list($sval,$this->rss)=cutSkinTag($sval,'rss'); list($sval,$this->keywordItem)=cutSkinTag($sval,'keyword_rep'); list($sval,$this->keywordGroup)=cutSkinTag($sval,'keyword_date_rep'); list($sval,$this->keyword)=cutSkinTag($sval,'keyword'); list($sval,$this->noticeItem)=cutSkinTag($sval,'notice_rep'); list($sval,$this->recentNoticeItem)=cutSkinTag($sval,'rct_notice_rep'); list($sval,$this->recentNotice)=cutSkinTag($sval,'rct_notice'); list($sval,$this->locativeEntry)=cutSkinTag($sval,'local_info_rep'); list($sval,$this->locativeSpot)=cutSkinTag($sval,'local_spot_rep'); list($sval,$this->locative)=cutSkinTag($sval,'local'); list($sval,$this->guestSubItem)=cutSkinTag($sval,'guest_reply_rep'); list($sval,$this->guestItem)=cutSkinTag($sval,'guest_rep'); list($sval,$this->guestGuest)=cutSkinTag($sval,'guest_form'); list($sval,$this->guestMember)=cutSkinTag($sval,'guest_member'); list($sval,$this->guest)=cutSkinTag($sval,'guest'); list($sval,$this->entryProtected)=cutSkinTag($sval,'article_protected'); list($sval,$this->management)=cutSkinTag($sval,'ad_div'); list($sval,$this->trackback)=cutSkinTag($sval,'tb_rep'); list($sval,$this->trackbacks)=cutSkinTag($sval,'tb'); list($sval,$this->tagLabel)=cutSkinTag($sval,'tag_label'); list($sval,$this->siteTagItem)=cutSkinTag($sval,'tag_rep'); list($sval,$this->siteTag)=cutSkinTag($sval,'tag'); list($sval,$this->randomTags)=cutSkinTag($sval,'random_tags'); list($sval,$this->commentSubItem)=cutSkinTag($sval,'rp2_rep'); list($sval,$this->commentItem)=cutSkinTag($sval,'rp_rep'); list($sval,$this->commentGuest)=cutSkinTag($sval,'rp_guest'); list($sval,$this->commentMember)=cutSkinTag($sval,'rp_member'); list($sval,$this->comment)=cutSkinTag($sval,'rp'); list($sval,$this->entry)=cutSkinTag($sval,'article_rep'); list($sval,$this->pagingItem)=cutSkinTag($sval,'paging_rep'); list($sval,$this->paging)=cutSkinTag($sval,'paging'); list($sval,$this->archive)=cutSkinTag($sval,'archive_rep'); list($sval,$this->search)=cutSkinTag($sval,'search'); list($sval,$this->recentEntry)=cutSkinTag($sval,'rctps_rep'); list($sval,$this->recentComments)=cutSkinTag($sval,'rctrp_rep'); list($sval,$this->recentTrackback)=cutSkinTag($sval,'rcttb_rep'); list($sval,$this->s_link_rep)=cutSkinTag($sval,'link_rep'); list($sval,$this->skin)=cutSkinTag($sval,'t3'); $this->outter=$sval; } } function cutSkinTag($contents,$tag){ $tagSize=strlen($tag)+4; $begin=strpos($contents,""); if($begin===false) return array($contents,''); $end=strpos($contents,"",$begin+5); if($end===false) return array($contents,''); $inner=substr($contents,$begin+$tagSize,$end-$begin-$tagSize); $outter=substr($contents,0,$begin)."[##_{$tag}_##]".substr($contents,$end+$tagSize+1); return array($outter,$inner); } function removeAllTags($contents){ while(($begin=strpos($contents,'[##_'))!==false){ $end=strpos($contents,'_##]',$begin+4); if($end===false) break; $contents=substr($contents,0,$begin).substr($contents,$end+4); } return $contents; } function replaceSkinTag($contents,$tag){ $pattern[]='/(<'.$tag.'.*>)'.'\r\n/Ui'; $pattern[]='/<\/'.$tag.'>/Ui'; $replacement[]='$1'.CRLF.'[##_SKIN_'.$tag.'_start_##]'; $replacement[]='[##_SKIN_'.$tag.'_end_##]$0'; return preg_replace($pattern,$replacement,$contents); } header('Content-Type: text/html; charset=utf-8'); if(!empty($_POST['mode'])&&$_POST['mode']=='fb'){ $result=receiveNotifiedComment($_POST); if($result>0) echo "1error($result)"; else echo "0"; exit; }else{ notifyComment(); } publishEntries(); list($entries,$paging)=getEntriesWithPaging($owner,$suri['page'],$blog['entriesOnPage']); updateVisitorStatistics($owner); $stats=getStatistics($owner); if(!empty($entries)&&(count($entries)==1)) $pageTitle=$entries[0]['title']; else $pageTitle=''; $skin=new Skin($skinSetting['skin']); $view=str_replace('[##_t3_##]',getUpperView(isset($paging)?$paging:null).$skin->skin.getLowerView().getScriptsOnFoot(),$skin->outter); $entriesView=''; foreach($entries as $entry){ if($entry['category']==-2){ $entryView=$skin->noticeItem; dress('notice_rep_date',Timestamp::format5($entry['published']),$entryView); dress('notice_rep_title',htmlspecialchars($entry['title']),$entryView); dress('notice_rep_link',"$blogURL/notice/{$entry['id']}",$entryView); dress('notice_rep_desc',getEntryContentView($owner,$entry['id'],$entry['content'],getKeywordNames($owner),'Notice'),$entryView); $entriesView.=$entryView; }elseif(doesHaveOwnership()||($entry['visibility']>=2)||(isset($_COOKIE['GUEST_PASSWORD'])&&($_COOKIE['GUEST_PASSWORD']==$entry['password']))){ $entryView=$skin->entry; dress('tb',getTrackbacksView($entry['id'],$skin),$entryView); if($skinSetting['expandComment']==1||(($suri['directive']=='/'||$suri['directive']=='/entry')&&$suri['value']!='')){ $style='block'; }else{ $style='none'; } dress('rp',"
".getCommentView($entry['id'],$skin).'
',$entryView); $tagLabelView=$skin->tagLabel; $entryTags=getTags($entry['id']); if(sizeof($entryTags)>0){ $tags=array(); foreach($entryTags as $entryTag) array_push($tags,"'); dress('tag_label_rep',implode(",\r\n",$tags),$tagLabelView); dress('tag_label',$tagLabelView,$entryView); } if($suri['directive']=='/notice') $permalink="$blogURL/notice/{$entry['id']}"; else $permalink="$blogURL/".($blog['useSlogan']?"entry/".encodeURL($entry['slogan']):$entry['id']); if(doesHaveOwnership()){ $managementView=$skin->management; dress('s_ad_m_link',"$blogURL/owner/entry/edit/{$entry['id']}?returnURL=".(@$service['useEncodedURL']?$permalink:str_replace('%2F','/',rawurlencode($permalink))),$managementView); dress('s_ad_m_onclick',"editEntry({$entry['id']},'".(@$service['useEncodedURL']?$permalink:str_replace('%2F','/',rawurlencode($permalink)))."'); return false;",$managementView); dress('s_ad_s1_label',getEntryVisibilityName($entry['visibility']),$managementView); if($entry['visibility']<2){ dress('s_ad_s2_label',_t('공개로 변경합니다'),$managementView); dress('s_ad_s2_onclick',"changeVisibility({$entry['id']}, 2); return false;",$managementView); }else{ dress('s_ad_s2_label',_t('비공개로 변경합니다'),$managementView); dress('s_ad_s2_onclick',"changeVisibility({$entry['id']}, 0); return false;",$managementView); } dress('s_ad_t_onclick',"sendTrackback({$entry['id']}); return false;",$managementView); dress('s_ad_d_onclick',"deleteEntry({$entry['id']}); return false;",$managementView); dress('ad_div',$managementView,$entryView); } dress('article_rep_id',$entry['id'],$entryView); dress('article_rep_link',$permalink,$entryView); dress('article_rep_title',htmlspecialchars($entry['title']),$entryView); dress('article_rep_desc',getEntryContentView($owner,$entry['id'],$entry['content'],getKeywordNames($owner)),$entryView); dress('article_rep_category',htmlspecialchars(empty($entry['category'])?_t('분류없음'):$entry['categoryLabel']),$entryView); dress('article_rep_category_link',"$blogURL/category/".encodeURL($entry['categoryLabel']),$entryView); dress('article_rep_date',Timestamp::format5($entry['published']),$entryView); dress('entry_archive_link',"$blogURL/archive/".Timestamp::getDate($entry['published']),$entryView); if($entry['acceptComment']) dress('article_rep_rp_link',"toggleLayer('entry{$entry['id']}Comment'); return false",$entryView); else dress('article_rep_rp_link',"alert('"._t('이 글에는 댓글을 달 수 없습니다')."\\t'); return false",$entryView); dress('article_rep_rp_cnt',"".($entry['comments']>0?"({$entry['comments']})":'')."",$entryView); if($entry['acceptTrackback']) dress('article_rep_tb_link',"toggleLayer('entry{$entry['id']}Trackback'); return false",$entryView); else dress('article_rep_tb_link',"alert('"._t('이 글에는 트랙백을 달 수 없습니다')."\\t'); return false",$entryView); if($entry['trackbacks']>0) dress('article_rep_tb_cnt',"({$entry['trackbacks']})",$entryView); $entriesView.=$entryView; }else{ $protectedEntryView=$skin->entryProtected; dress('article_rep_id',$entry['id'],$protectedEntryView); dress('article_rep_title',htmlspecialchars($entry['title']),$protectedEntryView); dress('article_rep_date',Timestamp::format5($entry['published']),$protectedEntryView); dress('article_password',"entry{$entry['id']}password",$protectedEntryView); dress('article_dissolve',"reloadEntry({$entry['id']})",$protectedEntryView); if(isset($_POST['partial'])) $entriesView.=$protectedEntryView; else $entriesView.="
$protectedEntryView
"; } } dress('article_rep',$entriesView,$view); $writer=fetchQueryCell("SELECT name FROM {$database['prefix']}Users WHERE userid = $owner"); dress('page_title',htmlspecialchars($pageTitle),$view); dress('blogger',htmlspecialchars($writer),$view); dress('title',htmlspecialchars($blog['title']),$view); dress('desc',htmlspecialchars($blog['description']),$view); if(!empty($blog['logo'])) dress('image',"{$service['path']}/attach/$owner/{$blog['logo']}",$view); else dress('image',"{$service['path']}/image/spacer.gif",$view); dress('blog_link',"$blogURL/",$view); dress('keylog_link',"$blogURL/keylog",$view); dress('localog_link',"$blogURL/location",$view); dress('taglog_link',"$blogURL/tag",$view); dress('guestbook_link',"$blogURL/guestbook",$view); $searchView=$skin->search; dress('search_name','search',$searchView); dress('search_text',isset($search)?htmlspecialchars($search):'',$searchView); dress('search_onclick_submit',"try{window.location.href='$blogURL/search/' + document.getElementsByName('search')[0].value.replaceAll('%', '%25'); return false;}catch(e){}",$searchView); dress('search',$searchView,$view); dress('category',getCategoriesView(getCategories($owner),isset($category)?$category:true,getCategoriesSkin()),$view); dress('category_list',getCategoriesView(getCategories($owner),isset($category)?$category:true,getCategoriesSkin(),true),$view); dress('count_total',$stats['total'],$view); dress('count_today',$stats['today'],$view); dress('count_yesterday',$stats['yesterday'],$view); dress('archive_rep',getArchivesView(getArchives($owner),$skin->archive),$view); dress('calendar',getCalendarView(getCalendar($owner,isset($period)?$period:true)),$view); dress('random_tags',getRandomTagsView(getRandomTags($owner),$skin->randomTags),$view); $noticeView=$skin->recentNotice; $notices=getNotices($owner); if(sizeof($notices)>0){ $itemsView=''; foreach($notices as $notice){ $itemView=$skin->recentNoticeItem; dress('notice_rep_title',htmlspecialchars(UTF8::lessenAsEm($notice['title'],$skinSetting['recentNoticeLength'])),$itemView); dress('notice_rep_link',"$blogURL/notice/{$notice['id']}",$itemView); $itemsView.=$itemView; } dress('rct_notice_rep',$itemsView,$noticeView); dress('rct_notice',$noticeView,$view); } dress('rctps_rep',getRecentEntriesView(getRecentEntries($owner),$skin->recentEntry),$view); dress('rctrp_rep',getRecentCommentsView(getRecentComments($owner),$skin->recentComments),$view); dress('rcttb_rep',getRecentTrackbacksView(getRecentTrackbacks($owner),$skin->recentTrackback),$view); dress('link_rep',getLinksView(getLinks($owner),$skin->s_link_rep),$view); dress('rss_url',"$blogURL/rss",$view); dress('owner_url',"$blogURL/owner",$view); if(isset($paging)) dress('paging',getPagingView($paging,$skin->paging,$skin->pagingItem),$view); $view=removeAllTags($view); print $view;?>