array('string'),'REQUEST_URI'=>array('string'),'REDIRECT_URL'=>array('string','mandatory'=>false)); Validator::validateArray($_SERVER,$basicIV); include_once '../../config.php'; function checkPeriod($period){ if(is_numeric($period)){ $year=0; $month=1; $day=1; switch(strlen($period)){ case 8: $day=substr($period,6,2); case 6: $month=substr($period,4,2); case 4: $year=substr($period,0,4); return checkdate($month,$day,$year); } } return false; } function getTimeFromPeriod($period){ if(is_numeric($period)){ $year=0; $month=1; $day=1; switch(strlen($period)){ case 8: $day=substr($period,6,2); case 6: $month=substr($period,4,2); case 4: $year=substr($period,0,4); if(checkdate($month,$day,$year)) return mktime(0,0,0,$month,$day,$year); } } return false; } function addPeriod($period,$inc=1){ if(checkPeriod($period)!==false){ switch(strlen($period)){ case 4: return strftime('%Y',mktime(0,0,0,1,1,$period+$inc)); case 6: return strftime('%Y%m',mktime(0,0,0,substr($period,4)+$inc,1,substr($period,0,4))); case 8: return strftime('%Y%m%d',mktime(0,0,0,substr($period,4,2),substr($period,6,2)+$inc,substr($period,0,4))); } } return false; } function getPeriodLabel($period){ $name=strval($period); switch(strlen($name)){ case 4: return $name; case 6: return substr($name,0,4).'/'.substr($name,4); case 8: return substr($name,0,4).'/'.substr($name,4,2).'/'.substr($name,6).''; } } function escapeJSInAttribute($str){ return htmlspecialchars(str_replace(array('\\','\r','\n','\''),array('\\\\','\\r','\\n','\\\''),$str)); } function escapeJSInCData($str){ return preg_replace(array('//','/\r*\n|\r/'),array('\x3C','\x3E','\\\\$0'),addslashes($str)); } 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 decorateSrcInObejct($html){ $count=preg_match_all('@src="(.+)"@iU',$html,$matches,PREG_PATTERN_ORDER); while($count>0){ $orig=$matches[0][$count-1]; $filename=$matches[1][$count-1]; if(strncasecmp($filename,'http://',7)!=0){ $html=str_replace($orig,substr($orig,0,4).'"http://'.$_SERVER['HTTP_HOST'].$filename.'"',$html); } $count--; } return $html; } function avoidFlashBorder($html,$tag='object'){ $pos1=$pos2=0; $str=strtolower($html); $result=''; while(($pos1=strpos($str,"<$tag",$pos2))!==false){ $result.=substr($html,$pos2,$pos1-$pos2); $pos2=$pos1; while(true){ if(($pos2=strpos($str,"",$pos2))===false) return $result.'_'; $pos2+=strlen($tag)+3; $chunk=substr($str,$pos1,$pos2-$pos1); if(substr_count($chunk,"<$tag")==substr_count($chunk,"")) break; } $result.='_'; } return $result.substr($html,$pos2); } 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 doesExistTable($tablename){ $likeEscape=array('/_/','/%/'); $likeReplace=array('\\_','\\%'); $escapename=preg_replace($likeEscape,$likeReplace,$tablename); $result=mysql_query("SHOW TABLES LIKE '$escapename' "); if($result==false) return false; if(mysql_num_rows($result)>0) return true; return 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(); preg_match_all('/([^=\s]+)\s*=\s*"([^"]*)/',$str,$matches); for($i=0;$iopen($xml,$service['encoding']); if($xmls->getValue('/skin/default/contentWidth')){ $contentWidth=$xmls->getValue('/skin/default/contentWidth'); } } return $contentWidth; } function getWaterMarkPosition(){ $waterMarkPosition=getUserSetting("waterMarkPosition","left=10|bottom=10"); list($horizontalPos,$verticalPos)=explode("|",$waterMarkPosition); $horizontalPos=explode("=",$horizontalPos); $verticalPos=explode("=",$verticalPos); if($horizontalPos[0]=="left"){ if($horizontalPos[1]>0){ $horizontalValue=$horizontalPos[1]; }else{ $horizontalValue="left"; } }elseif($horizontalPos[0]=="center"){ $horizontalValue="center"; }elseif($horizontalPos[0]=="right"){ if($horizontalPos[1]>0){ $horizontalValue=$horizontalPos[1]-$horizontalPos[1]*2; }else{ $horizontalValue="right"; } } if($verticalPos[0]=="top"){ if($verticalPos[1]>0){ $verticalValue=$verticalPos[1]; }else{ $verticalValue="top"; } }elseif($verticalPos[0]=="middle"){ $verticalValue="middle"; }elseif($verticalPos[0]=="bottom"){ if($verticalPos[1]>0){ $verticalValue=$verticalPos[1]-$verticalPos[1]*2; }else{ $verticalValue="bottom"; } } return "$horizontalValue $verticalValue"; } function getWaterMarkGamma(){ return 100; } function getThumbnailPadding(){ $thumbnailPadding=getUserSetting("thumbnailPadding",false); if($thumbnailPadding==false){ return array("top"=>0,"right"=>0,"bottom"=>0,"left"=>0); }else{ $tempArray=explode("|",$thumbnailPadding); return array("top"=>intval($tempArray[0]),"right"=>intval($tempArray[1]),"bottom"=>intval($tempArray[2]),"left"=>intval($tempArray[3])); } } function getThumbnailPaddingColor(){ return getUserSetting("thumbnailPaddingColor","FFFFFF"); } function makeThumbnail($imgString,$originSrc,$paddingArray,$waterMarkArray,$useAbsolutePath){ global $database,$owner,$blogURL,$serviceURL,$pathURL; if(is_null(getUserSetting("resamplingDefault"))){ return $imgString; }else{ $waterMarkOn=getUserSetting("waterMarkDefault","no"); } requireComponent('Tattertools.Function.Image'); if(!is_dir("../../cache/thumbnail")){ @mkdir("../../cache/thumbnail"); @chmod("../../cache/thumbnail",0777); } if(!is_dir("../../cache/thumbnail/$owner")){ @mkdir("../../cache/thumbnail/$owner"); @chmod("../../cache/thumbnail/$owner",0777); } $contentWidth=getContentWidth(); if(preg_match('/class="(tt-resampling|tt-watermark)"/i',$imgString,$temp)){ $originFileName=basename($originSrc); switch($temp[1]){ case "tt-resampling": $resampleType="resampled"; break; case "tt-watermark": if($waterMarkOn=='no') $resampleType="resampled"; else $resampleType="watermarked"; break; } if(preg_match('/width="([1-9][0-9]*)"/i',$imgString,$temp)){ $tempWidth=$temp[1]; } if(preg_match('/height="([1-9][0-9]*)"/i',$imgString,$temp)){ $tempHeight=$temp[1]; } $newTempFileName=preg_replace("/\.([[:alnum:]]+)$/i",".w{$tempWidth}-h{$tempHeight}.{$resampleType}.\\1",$originFileName); $tempSrc=ROOT."/cache/thumbnail/$owner/".$newTempFileName; $tempURL=$pathURL."/thumbnail/$owner/".$newTempFileName; if($useAbsolutePath==true){ $tempURL="$serviceURL/cache/thumbnail/$owner/$newTempFileName"; } $checkResult=Image::checkExistingThumbnail($originSrc,$tempSrc,$tempWidth,$tempHeight,$paddingArray,$waterMarkArray); switch($checkResult){ case 1: deleteFilesByRegExp("../../cache/thumbnail/$owner/","^".preg_replace("/\.([[:alnum:]]+)$/i","\.",$originFileName)); case 2: $isSuccessful=true; $AttachedImage=new Image(); $AttachedImage->imageFile=$originSrc; if($AttachedImage->resample($tempWidth,$tempHeight,$paddingArray)){ if($resampleType=="watermarked"&&$waterMarkOn=="yes"){ $waterMarkType=$AttachedImage->getImageType($waterMarkArray['path']); $AttachedImage->impressWaterMark($waterMarkArray['path'],$waterMarkArray['position'],$waterMarkArray['gamma']); } if($AttachedImage->createThumbnailIntoFile($tempSrc)){ $imgString=preg_replace('/src="([^"]+)"/i','src="'.$tempURL.'"',$imgString); $imgString=preg_replace('/width="([^"]+)"/i','width="'.$tempWidth.'"',$imgString); $imgString=preg_replace('/height="([^"]+)"/i','height="'.$tempHeight.'"',$imgString); switch($resampleType){ case "resampled": @unlink(str_replace(".resampled.",".watermarked.",$tempSrc)); break; case "watermarked": if($waterMarkOn=="yes") @unlink(str_replace(".watermarked.",".resampled.",$tempSrc)); break; } $originImageInfo=getimagesize($originSrc); $tempFileName=preg_replace("/\.([[:alnum:]]+)$/i",".w{$originImageInfo[0]}-h{$originImageInfo[1]}.{$resampleType}.\\1",$originFileName); if($resampleType=="watermarked"&&$waterMarkOn=="yes"){ if($AttachedImage->resample($originImageInfo[0],$originImageInfo[1],NULL)){ $AttachedImage->impressWaterMark($waterMarkArray['path'],$waterMarkArray['position'],$waterMarkArray['gamma']); if($AttachedImage->createThumbnailIntoFile("../../cache/thumbnail/$owner/$tempFileName")){ @unlink(ROOT."/cache/thumbnail/$owner/".str_replace(".watermarked.",".resampled.",$tempFileName)); $imgString=preg_replace('/onclick="open_img\(\'([^\']+)\'\)"/',"onclick=\"open_img('$blogURL/thumbnail/$owner/$tempFileName')\"",$imgString); } } }else{ @unlink(ROOT."/cache/thumbnail/$owner/".str_replace(".resampled.",".watermarked.",$tempFileName)); } }else{ $isSuccessful=false; } }else{ $isSuccessful=false; } if($isSuccessful==false){ $imgString=preg_replace('/width="([^"]+)"/i','width="'.$tempWidth.'"',$imgString); $imgString=preg_replace('/height="([^"]+)"/i','height="'.$tempHeight.'"',$imgString); } unset($AttachedImage); break; default: $imgString=preg_replace('/src="([^"]+)"/i','src="'.$tempURL.'"',$imgString); $imgString=preg_replace('/width="([^"]+)"/i','width="'.$tempWidth.'"',$imgString); $imgString=preg_replace('/height="([^"]+)"/i','height="'.$tempHeight.'"',$imgString); $originImageInfo=getimagesize($originSrc); $tempFileName=preg_replace("/\.([[:alnum:]]+)$/i",".w{$originImageInfo[0]}-h{$originImageInfo[1]}.{$resampleType}.\\1",$originFileName); if($resampleType=="watermarked"){ if(file_exists("../../cache/thumbnail/$owner/$tempFileName")){ $imgString=preg_replace('/onclick="open_img\(\'([^\']+)\'\)"/',"onclick=\"open_img('$blogURL/thumbnail/$owner/$tempFileName')\"",$imgString); }elseif(file_exists(ROOT."/cache/thumbnail/$owner/".str_replace(".watermarked.",".resampled.",$tempFileName))){ $imgString=preg_replace('/onclick="open_img\(\'([^\']+)\'\)"/',"onclick=\"open_img('$blogURL/thumbnail/$owner/".str_replace(".watermarked.",".resampled.",$tempFileName)."')\"",$imgString); } }elseif($resampleType=="resampled"&&file_exists("../../cache/thumbnail/$owner/$tempFileName")){ $imgString=preg_replace('/onclick="open_img\(\'([^\']+)\'\)"/',"onclick=\"open_img('$blogURL/thumbnail/$owner/$tempFileName')\"",$imgString); } break; } } return $imgString; } function deleteFilesByRegExp($path,$regexp){ $path=eregi("/$",$path,$temp)?$path:$path."/"; if(!file_exists($path)) return false; $handle=opendir($path); while($tempFile=readdir($handle)){ if(($regexp=="*"||eregi("$regexp",$tempFile,$temp))&&($tempFile!="."&&$tempFile!="..")){ @unlink($path.$tempFile); } } return true; } mysql_connect($database['server'],$database['username'],$database['password']); mysql_select_db($database['database']); # MySQL 4.0->4.1 로 변경하면서 생긴 인코딩 문제 해결 # if(mysql_query('SET CHARACTER SET utf8')){ # $database['utf8']=true; # function mysql_lessen($str,$length=255,$tail='..'){ # return UTF8::lessen($str,$length,$tail); # } # }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\''); if(function_exists('mysql_real_escape_string')&&(mysql_real_escape_string('ㅋ')=='ㅋ')){ function mysql_tt_escape_string($string,$link=null){ return is_null($link)?mysql_real_escape_string($string):mysql_real_escape_string($string,$link); } }else{ function mysql_tt_escape_string($string,$link=null){ return mysql_escape_string($string); } } function getOwner($name){ global $database; return fetchQueryCell("select owner from {$database['prefix']}BlogSettings where name = '$name'"); } function getOwnerBySecondaryDomain($domain){ global $database; return DBQuery::queryCell("SELECT owner FROM {$database['prefix']}BlogSettings WHERE secondaryDomain = '$domain' OR secondaryDomain = '".(substr($domain,0,4)=='www.'?substr($domain,4):'www.'.$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,$service; if($result=mysql_query("SELECT * FROM {$database['prefix']}SkinSettings WHERE owner = $owner")){ $retval=mysql_fetch_array($result); if($retval!=FALSE){ if(!Validator::directory($retval['skin'])&&($retval['skin']!="customize/$owner")){ $retval['skin']=$service['skin']; } return $retval; } } $retval=array('owner'=>$owner,'skin'=>$service['skin'],'entriesOnRecent'=>5,'commentsOnRecent'=>5,'commentsOnGuestbook'=>5,'tagsOnTagbox'=>30,'tagboxAlign'=>3,'trackbacksOnRecent'=>5,'expandComment'=>1,'expandTrackback'=>1,'recentNoticeLength'=>25,'recentEntryLength'=>30,'recentCommentLength'=>30,'recentTrackbackLength'=>30,'linkLength'=>30,'showListOnCategory'=>1,'showListOnArchive'=>1,'tree'=>'base','colorOnTree'=>'000000','bgColorOnTree'=>'','activeColorOnTree'=>'FFFFFF','activeBgColorOnTree'=>'00ADEF','labelLengthOnTree'=>27,'showValueOnTree'=>1); return $retval; } function getDefaultURL($uid){ global $database,$service; $blog=DBQuery::queryRow("SELECT name, secondaryDomain, defaultDomain FROM {$database['prefix']}BlogSettings WHERE owner = $uid"); switch($service['type']){ case 'domain': if($blog['defaultDomain']&&$blog['secondaryDomain']) return ('http://'.$blog['secondaryDomain'].(isset($service['port'])?':'.$service['port']:'').$service['path']); else return ('http://'.$blog['name'].'.'.$service['domain'].(isset($service['port'])?':'.$service['port']:'').$service['path']); case 'path': return ('http://'.$service['domain'].(isset($service['port'])?':'.$service['port']:'').$service['path'].'/'.$blog['name']); case 'single': default: return ('http://'.$service['domain'].(isset($service['port'])?':'.$service['port']:'').$service['path']); } } function getArchives($owner){ global $database; $archives=array(); $visibility=doesHaveOwnership()?'':'AND visibility > 0'; $query=mysql_query("SELECT archivesOnPage FROM {$database['prefix']}SkinSettings WHERE owner = $owner"); $row=mysql_fetch_row($query); $archivesOnPage=$row[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 $archivesOnPage"); 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_tt_escape_string($name); return fetchQueryRow("select * from {$database['prefix']}Attachments where owner = $owner and name = '$name'"); } function getCategoryNameById($owner,$id){ global $database; $result=fetchQueryCell("SELECT name FROM {$database['prefix']}Categories WHERE owner = $owner AND id = $id"); if(is_null($result)) return _text('전체'); else return $result; } function getCategoryBodyIdById($owner,$id){ global $database; $result=fetchQueryCell("SELECT bodyId FROM {$database['prefix']}Categories WHERE owner = $owner AND id = $id"); if(($id===0)||($result=='')||($id===null)) return 'tt-body-category'; return $result; } function getCategories($owner){ global $database; $rows=fetchQueryAll("SELECT * FROM {$database['prefix']}Categories WHERE owner = $owner AND id > 0 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'],'itemColor'=>"{$setting['colorOnTree']}",'itemBgColor'=>"{$setting['bgColorOnTree']}",'activeItemColor'=>"{$setting['activeColorOnTree']}",'activeItemBgColor'=>"{$setting['activeBgColorOnTree']}",); return $skin; } function getCommentsWithPagingForGuestbook($owner,$page,$count){ global $database; $sql="SELECT * FROM {$database['prefix']}Comments WHERE owner = $owner"; $sql.=' AND entry = 0 AND parent is null AND isFiltered = 0'; $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 and isFiltered = 0 $aux"; if($result=mysql_query($sql)){ while($comment=mysql_fetch_array($result)){ if(($comment['secret']==1)&&!$authorized){ $comment['name']=''; $comment['homepage']=''; $comment['comment']=_text('관리자만 볼 수 있는 댓글입니다.'); } 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 and isFiltered = 0 order by id")){ while($comment=mysql_fetch_array($result)){ if(($comment['secret']==1)&&!$authorized){ $comment['name']=''; $comment['homepage']=''; $comment['comment']=_text('관리자만 볼 수 있는 댓글입니다.'); } 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 AND isFiltered = 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 >= 2 AND entry > 0 AND isFiltered = 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']=_text('관리자만 볼 수 있는 댓글입니다.'); } array_push($comments,$comment); } } return $comments; } function getCommentCountPart($commentCount,&$skin){ $noneCommentMessage=$skin->noneCommentMessage; $singleCommentMessage=$skin->singleCommentMessage; if($commentCount==0&&!empty($noneCommentMessage)){ dress('article_rep_rp_cnt',0,$noneCommentMessage); $commentView=$noneCommentMessage; }elseif($commentCount==1&&!empty($singleCommentMessage)){ dress('article_rep_rp_cnt',1,$singleCommentMessage); $commentView=$singleCommentMessage; }else{ $commentPart=$skin->commentCount; dress('article_rep_rp_cnt',$commentCount,$commentPart); $commentView=$commentPart; } return array("rp_count",$commentView); } 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 getEntryListWithPagingByTag($owner,$tag,$page,$count){ global $database,$suri,$folderURL; if($tag===null) return array(); $tag=mysql_tt_escape_string($tag); $visibility=doesHaveOwnership()?'':'AND e.visibility > 0'; $sql="SELECT e.* FROM {$database['prefix']}Entries e LEFT JOIN {$database['prefix']}TagRelations t ON e.id = t.entry AND e.owner = t.owner WHERE e.owner = $owner AND e.draft = 0 $visibility AND e.category >= 0 AND t.tag = '$tag' ORDER BY published DESC"; return fetchWithPaging($sql,$page,$count,"$folderURL/{$suri['value']}"); } function getEntriesWithPagingByTag($owner,$tag,$page,$count){ global $database,$folderURL,$suri; if($tag===null) return fetchWithPaging(null,$page,$count,"$folderURL/{$suri['value']}"); $tag=mysql_tt_escape_string($tag); $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 LEFT JOIN {$database['prefix']}TagRelations t ON e.id = t.entry AND e.owner = t.owner WHERE e.owner = $owner AND e.draft = 0 $visibility AND e.category >= 0 AND t.tag = '$tag' ORDER BY e.published DESC"; return fetchWithPaging($sql,$page,$count,"$folderURL/{$suri['value']}"); } 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 getEntryVisibilityName($visibility){ switch(abs($visibility)){ case 0: return _text('비공개'); case 1: return _text('보호'); case 2: return _text('공개'); case 3: default: return _text('발행'); } } function getKeywordNames($owner){ global $database; $names=array(); $visibility=doesHaveOwnership()?'':'AND visibility > 0'; $result=mysql_query("SELECT title FROM {$database['prefix']}Entries WHERE owner = $owner AND draft = 0 $visibility AND category = -1"); while(list($name)=mysql_fetch_array($result)) array_push($names,$name); return $names; } 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']; if($paging['pages']>0) $paging['prev']=$paging['pages']-1; } if($paging['page']>1) $paging['prev']=$paging['page']-1; if($paging['page']<$paging['pages']) $paging['next']=$paging['page']+1; $offset=($paging['page']-1)*$count; if($offset<0) $offset=0; return array(fetchQueryAll("$sql LIMIT $offset, $count"),$paging); } function getCurrentSetting($name){ global $database,$owner,$activePlugins; if(!in_array($name,$activePlugins)) return false; $name=mysql_tt_escape_string($name); $result=mysql_query("SELECT settings FROM {$database['prefix']}Plugins WHERE owner = $owner AND name = '$name'"); if(false===$result) return false; $out=mysql_fetch_array($result); return $out['settings']; } function treatPluginTable($plugin,$name,$fields,$keys,$version){ global $database; if(doesExistTable($database['prefix'].$name)){ $keyname='Database_'.$name; $value=$plugin; $query="SELECT value FROM {$database['prefix']}ServiceSettings WHERE name='{$keyname}'"; $result=DBQuery::queryCell($query); if(is_null($result)){ $keyname=mysql_tt_escape_string(mysql_lessen($keyname,32)); $value=mysql_tt_escape_string(mysql_lessen($plugin.'/'.$version,255)); DBQuery::execute("INSERT INTO {$database['prefix']}ServiceSettings SET name='$keyname', value ='$value'"); }else{ $keyname=mysql_tt_escape_string(mysql_lessen($keyname,32)); $value=mysql_tt_escape_string(mysql_lessen($plugin.'/'.$version,255)); $values=explode('/',$result,2); if(strcmp($plugin,$values[0])!=0){ return false; }elseif(strcmp($version,$values[1])!=0){ DBQuery::execute("UPDATE {$database['prefix']}ServiceSettings SET value ='$value' WHERE name='$keyname'"); $eventName='UpdateDB_'.$name; fireEvent($eventName,$values[1]); } } return true; }else{ $query="CREATE TABLE {$database['prefix']}{$name} (owner int(11) NOT NULL default '0',"; foreach($fields as $field){ $isNull=($field['isnull']==0)?' NOT NULL ':' NULL '; $defaultValue=is_null($field['default'])?'':" DEFAULT '".mysql_tt_escape_string($field['default'])."' "; $fieldLength=($field['length']>=0)?"(".$field['length'].")":''; $sentence=$field['name']." ".$field['attribute'].$fieldLength.$isNull.$defaultValue.","; $query.=$sentence; } array_unshift($keys,'owner'); $query.=" PRIMARY KEY (".implode(',',$keys).")"; $query.=") TYPE=MyISAM DEFAULT CHARSET=utf8"; if(DBQuery::execute($query)){ $keyname=mysql_tt_escape_string(mysql_lessen('Database_'.$name,32)); $value=mysql_tt_escape_string(mysql_lessen($plugin.'/'.$version,255)); DBQuery::execute("INSERT INTO {$database['prefix']}ServiceSettings SET name='$keyname', value ='$value'"); return true; }else return false; } return true; } function getSidebarModuleOrderData($sidebarCount){ if(!is_null($tempValue=getUserSetting("sidebarOrder",NULL))){ $emptyArray=unserialize($tempValue); }else{ $emptyArray=false; } if($emptyArray===false) return ; return $emptyArray; } function getUserSetting($name,$default=null){ global $database,$owner; $value=DBQuery::queryCell("SELECT value FROM {$database['prefix']}UserSettings WHERE user = $owner AND name = '".mysql_tt_escape_string($name)."'"); return ($value===null)?$default:$value; } function setUserSetting($name,$value){ global $database,$owner; $name=mysql_tt_escape_string($name); $value=mysql_tt_escape_string($value); return DBQuery::execute("REPLACE INTO {$database['prefix']}UserSettings VALUES($owner, '$name', '$value')"); } 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_tt_escape_string(mysql_lessen($referer['host'],64)); $url=mysql_tt_escape_string(mysql_lessen($_SERVER['HTTP_REFERER'],255)); 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 AND isFiltered = 0 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 AND isFiltered = 0 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 AND isFiltered = 0 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 getTrackbackCountPart($trackbackCount,&$skin){ $noneTrackbackMessage=$skin->noneTrackbackMessage; $singleTrackbackMessage=$skin->singleTrackbackMessage; if($trackbackCount==0&&!empty($noneTrackbackMessage)){ dress('article_rep_tb_cnt',0,$noneTrackbackMessage); $trackbackView=$noneTrackbackMessage; }elseif($trackbackCount==1&&!empty($singleTrackbackMessage)){ dress('article_rep_tb_cnt',1,$singleTrackbackMessage); $trackbackView=$singleTrackbackMessage; }else{ $trackbackPart=$skin->trackbackCount; dress('article_rep_tb_cnt',$trackbackCount,$trackbackPart); $trackbackView=$trackbackPart; } return array("tb_count",$trackbackView); } function getTagId($owner,$name){ global $database; $name=mysql_tt_escape_string($name); return fetchQueryCell("SELECT id FROM {$database['prefix']}Tags WHERE name = '$name'"); } function getTags($entry){ global $database,$owner; $tags=array(); if(doesHaveOwnership()) $result=mysql_query("SELECT * FROM `{$database['prefix']}Tags` t, `{$database['prefix']}TagRelations` r WHERE t.id = r.tag AND r.entry = $entry AND r.owner = $owner GROUP BY r.tag ORDER BY t.name"); else $result=mysql_query("SELECT * FROM `{$database['prefix']}Tags` t, `{$database['prefix']}TagRelations` r, `{$database['prefix']}Entries` e WHERE r.entry = e.id AND e.visibility > 0 AND t.id = r.tag AND r.entry = $entry AND r.owner = $owner GROUP BY r.tag ORDER BY t.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){ if(doesHaveOwnership()) $result=mysql_query("SELECT `name`, count(*) `cnt` FROM `{$database['prefix']}Tags` t, `{$database['prefix']}TagRelations` r WHERE t.id = r.tag and r.owner = $owner GROUP BY r.tag ORDER BY cnt DESC $aux"); else $result=mysql_query("SELECT `name`, count(*) `cnt` FROM `{$database['prefix']}Tags` t, `{$database['prefix']}TagRelations` r, `{$database['prefix']}Entries` e WHERE r.entry = e.id AND e.visibility > 0 AND t.id = r.tag AND r.owner = $owner GROUP BY r.tag ORDER BY `cnt` DESC $aux"); }elseif($skinSetting['tagboxAlign']==2){ if(doesHaveOwnership()) $result=mysql_query("SELECT DISTINCT name FROM `{$database['prefix']}Tags` t, `{$database['prefix']}TagRelations` r WHERE t.id = r.tag AND r.owner = $owner GROUP BY r.tag ORDER BY t.name $aux"); else $result=mysql_query("SELECT DISTINCT name FROM `{$database['prefix']}Tags` t, `{$database['prefix']}TagRelations` r, `{$database['prefix']}Entries` e WHERE r.entry = e.id AND e.visibility > 0 AND t.id = r.tag AND r.owner = $owner GROUP BY r.tag ORDER BY t.name $aux"); }else{ if(doesHaveOwnership()) $result=mysql_query("SELECT `name` FROM `{$database['prefix']}Tags` t, `{$database['prefix']}TagRelations` r WHERE t.id = r.tag AND r.owner = $owner GROUP BY r.tag ORDER BY RAND() $aux"); else $result=mysql_query("SELECT `name` FROM `{$database['prefix']}Tags` t, `{$database['prefix']}TagRelations` r, `{$database['prefix']}Entries` e WHERE r.entry = e.id AND e.visibility > 0 AND t.id = r.tag AND r.owner = $owner GROUP BY r.tag ORDER BY RAND() $aux"); } if($result){ while(list($tag)=mysql_fetch_row($result)) array_push($tags,$tag); } return $tags; } function getSiteTags($owner){ global $database; $names=array(); if(doesHaveOwnership()) $result=mysql_query("SELECT `name` FROM `{$database['prefix']}Tags` t, `{$database['prefix']}TagRelations` r WHERE t.id = r.tag AND r.owner = $owner GROUP BY r.tag ORDER BY t.name LIMIT 2000"); else $result=mysql_query("SELECT `name` FROM `{$database['prefix']}Tags` t, `{$database['prefix']}TagRelations` r, `{$database['prefix']}Entries` e WHERE r.entry = e.id AND e.visibility > 0 AND t.id = r.tag AND r.owner = $owner GROUP BY r.tag ORDER BY t.name LIMIT 2000"); if($result){ while(list($name)=mysql_fetch_array($result)) array_push($names,$name); } return $names; } function getTagFrequencyRange(){ global $database,$owner; $max=$min=0; if(doesHaveOwnership()) $result=mysql_query("SELECT count(r.entry) `cnt` FROM `{$database['prefix']}TagRelations` r WHERE r.owner = $owner GROUP BY r.tag ORDER BY `cnt` DESC LIMIT 1"); else $result=mysql_query("SELECT count(r.entry) `cnt` FROM `{$database['prefix']}TagRelations` r, `{$database['prefix']}Entries` e WHERE r.entry = e.id AND e.visibility > 0 AND r.owner = $owner GROUP BY r.tag ORDER BY `cnt` DESC LIMIT 1"); if($result){ if(list($count)=mysql_fetch_array($result)) $max=$count; } if(doesHaveOwnership()) $result=mysql_query("SELECT count(r.entry) `cnt` FROM `{$database['prefix']}TagRelations` r WHERE r.owner = $owner GROUP BY r.tag ORDER BY `cnt` LIMIT 1"); else $result=mysql_query("SELECT count(r.entry) `cnt` FROM `{$database['prefix']}TagRelations` r, `{$database['prefix']}Entries` e WHERE r.entry = e.id AND e.visibility > 0 AND r.owner = $owner GROUP BY r.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; if(doesHaveOwnership()) $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_tt_escape_string($tag)."'"); else $count=fetchQueryCell("SELECT count(*) FROM `{$database['prefix']}Tags` t, `{$database['prefix']}TagRelations` r, `{$database['prefix']}Entries` e WHERE r.entry = e.id AND e.visibility > 0 AND t.id = r.tag AND r.owner = $owner AND t.name = '".mysql_tt_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]); if($owner===null) $owner=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']; if(!isset($serviceURL)) $serviceURL='http://'.$service['domain'].(isset($service['port'])?':'.$service['port']:'').$service['path']; switch($service['type']){ case 'domain': $pathURL=$service['path']; if($blog['defaultDomain']&&$blog['secondaryDomain']){ $defaultURL='http://'.$blog['secondaryDomain'].(isset($service['port'])?':'.$service['port']:'').$pathURL; if($_SERVER['HTTP_HOST']==$blog['secondaryDomain']) $baseURL=$service['path']; else $baseURL=$defaultURL; }else{ $defaultURL='http://'.$blog['name'].'.'.$service['domain'].(isset($service['port'])?':'.$service['port']:'').$pathURL; if($_SERVER['HTTP_HOST']==($blog['name'].'.'.$service['domain'])) $baseURL=$service['path']; else $baseURL=$defaultURL; } break; case 'path': $pathURL=$service['path'].'/'.$blog['name']; $defaultURL='http://'.$service['domain'].(isset($service['port'])?':'.$service['port']:'').$pathURL; if($_SERVER['HTTP_HOST']==$service['domain']) $baseURL=$service['path'].'/'.$blog['name']; else $baseURL=$defaultURL; break; case 'single': default: $pathURL=$service['path']; $defaultURL='http://'.$service['domain'].(isset($service['port'])?':'.$service['port']:'').$pathURL; if($_SERVER['HTTP_HOST']==$service['domain']) $baseURL=$service['path']; else $baseURL=$defaultURL; break; } $hostURL='http://'.$_SERVER['HTTP_HOST'].(isset($service['port'])?':'.$service['port']:''); $blogURL=$pathURL; $folderURL=rtrim($blogURL.$suri['directive'],'/'); unset($url,$domain); $adminSkinSetting=array(); $adminSkinSetting['skin']="/style/admin/".getUserSetting("adminSkin","default"); if(file_exists("../../skin/{$skinSetting['skin']}/wysiwyg.css")) $adminSkinSetting['editorTemplate']="/skin/{$skinSetting['skin']}/wysiwyg.css"; else $adminSkinSetting['editorTemplate']="/style/default-wysiwyg.css"; if(file_exists("../../attach/$owner/watermark.gif")){ $waterMarkPath="../../attach/$owner/watermark.gif"; }else{ $waterMarkPath=NULL; } $waterMarkArray=array(); $waterMarkArray['path']=$waterMarkPath; $waterMarkArray['position']=getWaterMarkPosition(); $waterMarkArray['gamma']=getWaterMarkGamma(); $paddingArray=array(); $padding=getThumbnailPadding(); $paddingArray['top']=$padding['top']; $paddingArray['right']=$padding['right']; $paddingArray['bottom']=$padding['bottom']; $paddingArray['left']=$padding['left']; $paddingArray['bgColor']=getThumbnailPaddingColor(); unset($padding); unset($waterMarkPath); if(!file_exists('../../config.php')){ header('Location: '.'../../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=sessionQuery("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_tt_escape_string($data); $server=mysql_tt_escape_string($_SERVER['HTTP_HOST']); $request=mysql_tt_escape_string($_SERVER['REQUEST_URI']); $referer=isset($_SERVER['HTTP_REFERER'])?mysql_tt_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=@sessionQuery("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=sessionQuery("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); } function sessionQuery($sql){ global $database,$sessionDBRepair; $result=mysql_query($sql); if($result===false){ if(!isset($sessionDBRepair)){ mysql_query("REPAIR TABLE {$database['prefix']}Sessions"); $result=mysql_query($sql); $sessionDBRepair=true; } } return $result; } 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()); $user['name']=DBQuery::queryCell("SELECT name FROM {$database['prefix']}Users WHERE userid = {$user['id']}"); $user['homepage']=getDefaultURL($user['id']); }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']); if(!isset($blog['blogLanguage'])){ $blog['blogLanguage']=$service['language']; } if(is_file($__locale['directory'].'/'.$blog['blogLanguage'].".php")){ $__outText=getOutLanguage($__locale['directory'].'/'.$blog['blogLanguage'].".php"); } function getOutLanguage($languageFile){ include ($languageFile); return $__text; } function _text($t){ global $__outText; if(isset($__outText)&&isset($__outText[$t])){ return $__outText[$t]; }else{ return $t; } } $activePlugins=array(); $eventMappings=array(); $tagMappings=array(); $sidebarMappings=array(); $centerMappings=array(); $storageMappings=array(); $storageKeymappings=array(); $adminMenuMappings=array(); $adminHandlerMappings=array(); $configMappings=array(); $baseConfigPost=$service['path'].'/owner/setting/plugins/currentSetting'; $configPost=''; $configVal=''; $typeSchema=null; 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)){ $version=''; if($xmls->doesExist('/plugin/version')){ $version=$xmls->getValue('/plugin/version'); } if($xmls->doesExist('/plugin/storage')){ foreach($xmls->selectNodes('/plugin/storage/table') as $table){ $storageMappings=array(); $storageKeymappings=array(); if(empty($table['name'][0]['.value'])) continue; $tableName=htmlspecialchars($table['name'][0]['.value']); if(!empty($table['fields'][0]['field'])){ foreach($table['fields'][0]['field'] as $field){ if(!isset($field['name'])) continue; $fieldName=$field['name'][0]['.value']; if(!isset($field['attribute'])) continue; $fieldAttribute=$field['attribute'][0]['.value']; $fieldLength=isset($field['length'])?$field['length'][0]['.value']:-1; $fieldIsNull=isset($field['isnull'])?$field['isnull'][0]['.value']:1; $fieldDefault=isset($field['default'])?$field['default'][0]['.value']:null; array_push($storageMappings,array('name'=>$fieldName,'attribute'=>$fieldAttribute,'length'=>$fieldLength,'isnull'=>$fieldIsNull,'default'=>$fieldDefault)); } } if(!empty($table['key'][0]['.value'])){ foreach($table['key'] as $key){ array_push($storageKeymappings,$key['.value']); } } treatPluginTable($plugin,$tableName,$storageMappings,$storageKeymappings,$version); unset($tableName); unset($storageMappings); unset($storageKeymappings); } } 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); } if($xmls->doesExist('/plugin/binding/center')){ $title=htmlspecialchars($xmls->getValue('/plugin/title[lang()]')); foreach($xmls->selectNodes('/plugin/binding/center') as $center){ if(!empty($center['.attributes']['handler'])){ array_push($centerMappings,array('plugin'=>$plugin,'handler'=>$center['.attributes']['handler'],'title'=>$title)); } } unset($title); unset($center); } if($xmls->doesExist('/plugin/binding/sidebar')){ $title=htmlspecialchars($xmls->getValue('/plugin/title[lang()]')); foreach($xmls->selectNodes('/plugin/binding/sidebar') as $sidebar){ if(!empty($sidebar['.attributes']['handler'])){ $parameters=array(); if(isset($sidebar['params'])&&isset($sidebar['params'][0])&&isset($sidebar['params'][0]['param'])){ foreach($sidebar['params'][0]['param'] as $param){ $parameter=array('name'=>$param['name'][0]['.value'],'type'=>$param['type'][0]['.value'],'title'=>XMLStruct::getValueByLocale($param['title'])); array_push($parameters,$parameter); } } array_push($sidebarMappings,array('plugin'=>$plugin,'title'=>$sidebar['.attributes']['title'],'display'=>$title,'handler'=>$sidebar['.attributes']['handler'],'parameters'=>$parameters)); } } unset($sidebar); } if($xmls->doesExist('/plugin/binding/config')){ $config=$xmls->selectNode('/plugin/binding/config'); if(!empty($config['.attributes']['dataValHandler'])) $configMappings[$plugin]=array('config'=>'ok','dataValHandler'=>$config['.attributes']['dataValHandler']); else $configMappings[$plugin]=array('config'=>'ok'); } if($xmls->doesExist('/plugin/binding/adminMenu')){ $title=htmlspecialchars($xmls->getValue('/plugin/title[lang()]')); if($xmls->doesExist('/plugin/binding/adminMenu/viewMethods')){ foreach($xmls->selectNodes('/plugin/binding/adminMenu/viewMethods/method') as $adminViewMenu){ $menutitle=htmlspecialchars(XMLStruct::getValueByLocale($adminViewMenu['title'])); if(empty($menutitle)) continue; $menuposition=empty($adminViewMenu['position'][0]['.value'])?'menu-plugin':$adminViewMenu['position'][0]['.value']; $menuhelpurl=empty($adminViewMenu['helpurl'][0]['.value'])?'':$adminViewMenu['helpurl'][0]['.value']; if(!isset($adminViewMenu['handler'][0]['.value'])) continue; $viewhandler=htmlspecialchars($adminViewMenu['handler'][0]['.value']); if(empty($viewhandler)) continue; $params=array(); if(isset($adminViewMenu['params'][0]['param'])){ foreach($adminViewMenu['params'][0]['param'] as $methodParam){ if(!isset($methodParam['name'][0]['.value'])||!isset($methodParam['type'][0]['.value'])) continue; array_push($params,array('name'=>$methodParam['name'][0]['.value'],'type'=>$methodParam['type'][0]['.value'],'mandatory'=>@$methodParam['mandatory'][0]['.value'],'default'=>@$methodParam['default'][0]['.value'])); } } $adminMenuMappings[$plugin.'/'.$viewhandler]=array('plugin'=>$plugin,'title'=>$menutitle,'position'=>$menuposition,'handler'=>$viewhandler,'params'=>$params,'helpurl'=>$menuhelpurl); } } unset($menutitle); unset($viewhandler); unset($adminViewMenu); unset($params); if($xmls->doesExist('/plugin/binding/adminMenu/methods')){ foreach($xmls->selectNodes('/plugin/binding/adminMenu/methods/method') as $adminMethods){ $method=array(); $method['plugin']=$plugin; if(!isset($adminMethods['handler'][0]['.value'])) continue; $method['handler']=$adminMethods['handler'][0]['.value']; $method['params']=array(); if(isset($adminMethods['params'][0]['param'])){ foreach($adminMethods['params'][0]['param'] as $methodParam){ if(!isset($methodParam['name'][0]['.value'])||!isset($methodParam['type'][0]['.value'])) continue; array_push($method['params'],array('name'=>$methodParam['name'][0]['.value'],'type'=>$methodParam['type'][0]['.value'],'mandatory'=>@$methodParam['mandatory'][0]['.value'],'default'=>@$methodParam['default'][0]['.value'])); } } $adminHandlerMappings[$plugin.'/'.$method['handler']]=$method; } } unset($method); unset($methodParam); unset($adminMethods); } }else{ $plugin=mysql_tt_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,$pluginPath,$configMappings,$configVal; 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'])){ if(!empty($configMappings[$mapping['plugin']]['config'])) $configVal=getCurrentSetting($mapping['plugin']); else $configVal=null; $pluginURL="{$service['path']}/plugins/{$mapping['plugin']}"; $pluginPath="../../plugins/{$mapping['plugin']}"; $target=call_user_func($mapping['listener'],$target,$mother); } } return $target; } function handleTags(&$content){ global $service,$tagMappings,$pluginURL,$pluginPath,$configMappings,$configVal; 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'])){ if(!empty($configMappings[$mapping['plugin']]['config'])) $configVal=getCurrentSetting($mapping['plugin']); else $configVal=''; $pluginURL="{$service['path']}/plugins/{$mapping['plugin']}"; $pluginPath="../../plugins/{$mapping['plugin']}"; $target=call_user_func($mapping['handler'],$target); } } dress($tag,$target,$content); } } } function handleSidebars(&$sval,&$obj,$previewMode){ global $service,$pluginURL,$pluginPath,$configVal,$configMappings; $newSidebarAllOrders=array(); $sidebarCount=count($obj->sidebarBasicModules); $sidebarAllOrders=getSidebarModuleOrderData($sidebarCount); if($previewMode==true) $sidebarAllOrders=null; for($i=0;$i<$sidebarCount;$i++){ $str=""; if((!is_null($sidebarAllOrders))&&((array_key_exists($i,$sidebarAllOrders)))){ $currentSidebarOrder=$sidebarAllOrders[$i]; for($j=0;$jsidebarBasicModules[$skini])&&isset($obj->sidebarBasicModules[$skini][$skinj])){ $str.=$obj->sidebarBasicModules[$skini][$skinj]['body']; } }elseif($currentSidebarOrder[$j]['type']==2){ }elseif($currentSidebarOrder[$j]['type']==3){ $plugin=$currentSidebarOrder[$j]['id']['plugin']; $handler=$currentSidebarOrder[$j]['id']['handler']; include_once ("../../plugins/{$plugin}/index.php"); if(function_exists($handler)){ $str.="[##_temp_sidebar_element_{$i}_{$j}_##]"; $parameters=$currentSidebarOrder[$j]['parameters']; $pluginURL="{$service['path']}/plugins/{$plugin}"; $pluginPath="../../plugins/{$plugin}"; if(!empty($configMappings[$plugin]['config'])) $configVal=getCurrentSetting($plugin); else $configVal=''; if(function_exists($handler)){ $obj->sidebarStorage["temp_sidebar_element_{$i}_{$j}"]=call_user_func($handler,$parameters); }else{ $obj->sidebarStorage["temp_sidebar_element_{$i}_{$j}"]=""; } } }else{ } } }else{ $newSidebarAllOrders[$i]=array(); for($j=0;$jsidebarBasicModules[$i]);$j++){ $str.=$obj->sidebarBasicModules[$i][$j]['body']; array_push($newSidebarAllOrders[$i],array('type'=>'1','id'=>"$i",'parameters'=>"$j")); } } dress("sidebar_{$i}",$str,$sval); } if(count($newSidebarAllOrders)>0){ if($previewMode==false) setUserSetting("sidebarOrder",serialize($newSidebarAllOrders)); } } function fetchConfigVal($DATA){ $xmls=new XMLStruct(); $outVal=array(); if(!$xmls->open($DATA)){ unset($xmls); return ; } if(is_null($xmls->selectNodes('/config/field'))){ unset($xmls); return ; } foreach($xmls->selectNodes('/config/field') as $field){ if(empty($field['.attributes']['name'])||empty($field['.attributes']['type'])){ unset($xmls); return ; } $outVal[$field['.attributes']['name']]=$field['.value']; } unset($xmls); return ($outVal); } function respondErrorPage($message=NULL,$buttonValue=NULL,$buttonLink=NULL){ global $service;?> <?php echo TATTERTOOLS_NAME;?>

Download Mp3/Mp3 MusicTop Chartsdownload R.E.M. music lyricdownload Leona Lewis music lyricdownload Portishead music lyricdownload Iron Maiden music lyricdownload Led Zeppelin music lyricdownload Beth Rowley music lyricdownload Mariah Carey music lyricdownload Bruce Springsteen music lyricdownload AC/DC music lyricdownload Linkin Park music lyricdownload OneRepublic music lyricdownload Bob Dylan music lyricdownload Metallica music lyricdownload The Who music lyricdownload Rihanna music lyricdownload Al Green music lyricdownload The Kooks music lyricdownload U2 music lyricdownload David Bowie music lyricdownload Prince music lyricdownload Alanis Morissette music lyricdownload Putumayo music lyricdownload Elvis Presley music lyricdownload Willie Nelson music lyricdownload Jon Bon Jovi music lyriclovely lowrider bike

lovely lowrider bike

call female teacher pantyhose stories

female teacher pantyhose stories

again faith boobs bed

faith boobs bed

above piss on a redhead

piss on a redhead

nor after breast aspiration

after breast aspiration

tail flat chested lesbian sites

flat chested lesbian sites

felt nudity reba mcentire

nudity reba mcentire

grass gia primo sex clip

gia primo sex clip

clean lesbian her first kiss

lesbian her first kiss

shout the neighbor dixie chicks

the neighbor dixie chicks

single hotties on

hotties on

ground evangelina anderson naked

evangelina anderson naked

make white girls blowjob

white girls blowjob

fall nigerian dating scam photo

nigerian dating scam photo

final couples sudsing a teens

couples sudsing a teens

still geneva escorts

geneva escorts

cat midget vaginal depth

midget vaginal depth

course diarys of a milf

diarys of a milf

able beauty pageant products

beauty pageant products

work good porn on limewire

good porn on limewire

choose cumming ga usda inspections

cumming ga usda inspections

final xxx from south africa

xxx from south africa

support older women orgy

older women orgy

basic day thong fm

day thong fm

plural black bitches blowjob

black bitches blowjob

ride nude redheades

nude redheades

spring mature saggy melons women

mature saggy melons women

prepare dicks getting sucked

dicks getting sucked

hot her first pregnancy xxx

her first pregnancy xxx

warm bbw web ring top

bbw web ring top

experience preschooler inverted nipples

preschooler inverted nipples

story delite escort

delite escort

old good sheppard cumming ga

good sheppard cumming ga

sent piss pants desperation

piss pants desperation

jump gay dads son stories

gay dads son stories

problem chatting with transsexuals

chatting with transsexuals

tree female orgasm vedios

female orgasm vedios

stood sex leather australia

sex leather australia

symbol noah huntley nude

noah huntley nude

bird washington dc strip

washington dc strip

rock tracy lines fetish

tracy lines fetish

again womens asshole pictures

womens asshole pictures

subject get a blowjob brisbane

get a blowjob brisbane

settle philipine escort angeles city

philipine escort angeles city

stretch lead test strips

lead test strips

quiet hoolywood nude video

hoolywood nude video

opposite vista slow mpg

vista slow mpg

break handicap sex clip

handicap sex clip

steel escorts burnaby

escorts burnaby

fair shawn kearney nebraska porn

shawn kearney nebraska porn

simple jessica sierra nude tape

jessica sierra nude tape

blow turbine beaver

turbine beaver

egg incall escorts in toronto

incall escorts in toronto

thank sex novelties

sex novelties

rather naked anchors

naked anchors

spoke fucked your mom porn

fucked your mom porn

mount entity relationship diagram narrative

entity relationship diagram narrative

sugar nude latina photography

nude latina photography

won't big pussy black

big pussy black

meant hardcore oxygenation

hardcore oxygenation

child anamie sex

anamie sex

light michelle melcher nude

michelle melcher nude

visit stories forced suck

stories forced suck

finger mauresmo s gay partner

mauresmo s gay partner

most kate mata naked

kate mata naked

told vancouver live webcam

vancouver live webcam

nothing gauge pornstar movies

gauge pornstar movies

wide catherine bell breast implants

catherine bell breast implants

visit extreme gapers

extreme gapers

pair malen gay web sites

malen gay web sites

skin betty and veronica naked

betty and veronica naked

plain bed bath door knobs

bed bath door knobs

cut final fantasy xxx free

final fantasy xxx free

except titty shag

titty shag

phrase ibm ananomous relationship

ibm ananomous relationship

cell hot teen boobies

hot teen boobies

ring vanessa hughnes naked

vanessa hughnes naked

set amature nude girls

amature nude girls

I vahine nudes

vahine nudes

life sex mobile phone pics

sex mobile phone pics

chart girls using dildos clips

girls using dildos clips

seed pamela sex ta e

pamela sex ta e

when black azz orgy 2

black azz orgy 2

captain renee o conner nude pics

renee o conner nude pics

plural alicia witt naked pictures

alicia witt naked pictures

with kelly porn princess

kelly porn princess

parent squiting cunt

squiting cunt

similar naked girls with weed

naked girls with weed

talk lol bbs tgp

lol bbs tgp

hard weasles strip club

weasles strip club

red lactating tits being sucked

lactating tits being sucked

position spermatozoa determination of sex

spermatozoa determination of sex

bank young virgin blow job

young virgin blow job

usual xxx dvd s cheaps prices

xxx dvd s cheaps prices

center naked virginia tech girls

naked virginia tech girls

melody dd milf boobs

dd milf boobs

glad summer love latin music

summer love latin music

rock gay in austin tx

gay in austin tx

edge men in sex submission

men in sex submission

bring rosa love

rosa love

life pornstar turned actress

pornstar turned actress

more teen challenge bakersfield ca

teen challenge bakersfield ca

enter yin yang hentai

yin yang hentai

prove fuck kari

fuck kari

feel horny black housewives

horny black housewives

instrument dead skin removal facial

dead skin removal facial

block trinity rochdale escort

trinity rochdale escort

bad passion fantasies

passion fantasies

shall sick piss shit

sick piss shit

discuss gordon lightfoot gay

gordon lightfoot gay

of expiration on condoms

expiration on condoms

property tiredness after sex

tiredness after sex

clear small town nudes

small town nudes

party school girl spankings

school girl spankings

study mr bob butts

mr bob butts

space creampie slappers 2006

creampie slappers 2006

claim all xxx movie

all xxx movie

duck pirate pinup girl tattoos

pirate pinup girl tattoos

multiply lesbian fortune teller

lesbian fortune teller

travel escorts west island

escorts west island

broad preggo tits

preggo tits

show crazy drunk chick

crazy drunk chick

nature nude exercise video preview

nude exercise video preview

soil san paulo gay brazil

san paulo gay brazil

student male ass mpegs

male ass mpegs

see strait couples

strait couples

develop virgin has sex

virgin has sex

crease perfect nude qomwn

perfect nude qomwn

liquid indian women porn gallery

indian women porn gallery

industry shemale tgp thumb

shemale tgp thumb

planet lesbians strip each other

lesbians strip each other

instant spotted dick dessert recipe

spotted dick dessert recipe

boy valeri begue nude

valeri begue nude

him women lesbian celebs movies

women lesbian celebs movies

his super tiwnk gay

super tiwnk gay

several nz pussy

nz pussy

children pur water filtered jugs

pur water filtered jugs

duck amateur domination

amateur domination

been naked asian pussy

naked asian pussy

remember sex positions illustrated

sex positions illustrated

leave teen barefoot girls

teen barefoot girls

bank nude starletts

nude starletts

shape romantic porn scenes

romantic porn scenes

list porn star lenny

porn star lenny

middle sex sample vidios

sex sample vidios

where adjustable bearing beaver county

adjustable bearing beaver county

bad secret amateur

secret amateur

care winnie the pooh ties

winnie the pooh ties

caught over30 drunk and fucks

over30 drunk and fucks

train extreme amateur porn clips

extreme amateur porn clips

blood photoshopping naked pictures

photoshopping naked pictures

bed cute girlfriend porn video

cute girlfriend porn video

ship hottest blonde naked

hottest blonde naked

slow sexual love songs

sexual love songs

five cock licking sluts

cock licking sluts

then vaginal penetration by horse

vaginal penetration by horse

whole rock chick dress

rock chick dress

broad april bowlby topless

april bowlby topless

section anna kournikova showering

anna kournikova showering

off affordable counseling

affordable counseling

dress fear caught naked

fear caught naked

some nudist sensual passion

nudist sensual passion

me bondage equipment sadistic sexual

bondage equipment sadistic sexual

free early teen choot

early teen choot

door porn dwarf

porn dwarf

call katie rees nude pictures

katie rees nude pictures

sentence mock beauty pageant talent

mock beauty pageant talent

choose lengthen your sex

lengthen your sex

simple thanksgiving gay philadelphia

thanksgiving gay philadelphia

special shemale danyella rodriguez

shemale danyella rodriguez

represent wynonna judd nude

wynonna judd nude

thousand fucking pusseys

fucking pusseys

race wyman ware sex toys

wyman ware sex toys

month nude girls cellphone wallpaper

nude girls cellphone wallpaper

hear schoolgirls collektion

schoolgirls collektion

shoe 50 s swing style

50 s swing style

either adult swinging uk personals

adult swinging uk personals

brought saddest love poems

saddest love poems

man sex forced female trabsformation

sex forced female trabsformation

three port ludlow amateur radio

port ludlow amateur radio

circle mr chews sin beaver

mr chews sin beaver

much cock torture table

cock torture table

after musiq soulchild love lyrics

musiq soulchild love lyrics

men amauteur cumshot

amauteur cumshot

last women with bg tits

women with bg tits

yellow arrow bikini underwear

arrow bikini underwear

said female vagina photos

female vagina photos

boat prague sex parties

prague sex parties

start melinda cuties

melinda cuties

allow disney high school nude

disney high school nude

our alfonso ribeiro nude

alfonso ribeiro nude

operate videos hot latino sluts

videos hot latino sluts

ask forced sex sample video

forced sex sample video

hand more discharge after sex

more discharge after sex

stream woman s boobs games

woman s boobs games

pick seattle milf videos

seattle milf videos

then miley curus nude

miley curus nude

hand old women pussy sex

old women pussy sex

party auburn blonde hair salon

auburn blonde hair salon

begin sex video dump

sex video dump

rail suck dick for money

suck dick for money

sudden san antonio gay events

san antonio gay events

us largest nudist gathering

largest nudist gathering

chair breast petals brown

breast petals brown

six lonny anderson nude

lonny anderson nude

flow my nasty sexy daughter

my nasty sexy daughter

stood priest sex infertile man

priest sex infertile man

lost rough pussy slapping

rough pussy slapping

always wives craves black dick

wives craves black dick

give vagina sizes up

vagina sizes up

caught watch virgin school

watch virgin school

value ethopian porn star

ethopian porn star

sand ping pong video sex

ping pong video sex

and girls pissing porn

girls pissing porn

evening gay halifax

gay halifax

win her kinky garter experience

her kinky garter experience

shape nude fuck photography

nude fuck photography

brother horny fish

horny fish

ring tera spencer nairn nude

tera spencer nairn nude

floor famous nude black women

famous nude black women

baby the world s largest breast

the world s largest breast

to nifty erotic story achive

nifty erotic story achive

bell teen flirting tips

teen flirting tips

green balck dick pictures

balck dick pictures

once sagging shirtless

sagging shirtless

cent cum shots free porn

cum shots free porn

rich orgies avi sample long

orgies avi sample long

dictionary jeunes gosses gays

jeunes gosses gays

under skye blue facial

skye blue facial

water heshe porn

heshe porn

truck electric breast

electric breast

many 3d nude art models

3d nude art models

lie annette benning nude

annette benning nude

hear naked volleyball internet game

naked volleyball internet game

note angry beavers myspace layout

angry beavers myspace layout

course fetters gay men

fetters gay men

down beauty bar san diego

beauty bar san diego

out asia sex tour

asia sex tour

use burning teens

burning teens

flow james brown gay

james brown gay

decimal amatuer naked photos

amatuer naked photos

guess christia aguilar pussy

christia aguilar pussy

she allen iverson nude

allen iverson nude

these mature small titties

mature small titties

from privat clips sex

privat clips sex

song hershey kisses stickers

hershey kisses stickers

row nanna gibson nude

nanna gibson nude

saw mans head inside vagina

mans head inside vagina

back catholic singles thailand

catholic singles thailand

came nova scotia highway webcams

nova scotia highway webcams

fall fat juicy booties

fat juicy booties

able sauk centre mn strip

sauk centre mn strip

tone butts massage

butts massage

add brunette deepthroat clip

brunette deepthroat clip

pitch swimsuit nudes

swimsuit nudes

science young blonde housewife

young blonde housewife

brought sam mitchell pussy

sam mitchell pussy

book nude female sports photos

nude female sports photos

atom public group hardcore sex

public group hardcore sex

hear live free webcam babes

live free webcam babes

crease logitech webcam twain

logitech webcam twain

sent cookie with chocolate kiss

cookie with chocolate kiss

game harold from snatch

harold from snatch

should swimming pantyhose

swimming pantyhose

grass monroe la whore

monroe la whore

quotient phlippine cyber sex

phlippine cyber sex

difficult bbw wives girlfriends

bbw wives girlfriends

turn laura bertram nude

laura bertram nude

chick uk mistresses new

uk mistresses new

hill violent lesbians

violent lesbians

event water park nipple slip

water park nipple slip

group teen model pics sheer

teen model pics sheer

carry kansas sex dating

kansas sex dating

station booty thumpin

booty thumpin

quotient unaware nudes

unaware nudes

pitch relationship trust self test

relationship trust self test

his tantra retreat for singles

tantra retreat for singles

ground chiks w diks

chiks w diks

provide guam porn

guam porn

planet broward county fl thongs

broward county fl thongs

love amature sex free pics

amature sex free pics

general pussy in heels

pussy in heels

process thai pornstars

thai pornstars

describe thailand blowjob bar

thailand blowjob bar

section eastern europen grs sex

eastern europen grs sex

whole fitness sports teen exercise

fitness sports teen exercise

whether 18 eighteen xtra xxx

18 eighteen xtra xxx

story sex teen lesbian

sex teen lesbian

jump humiliation sex galleries

humiliation sex galleries

home hardcore mature free clips

hardcore mature free clips

pound m 90 porn

m 90 porn

girl melanie papalia nude

melanie papalia nude

stay erotic caning stories

erotic caning stories

bone russian shirt laine nylon

russian shirt laine nylon

probable hairy bears n underwears

hairy bears n underwears

then hot mature female escorts

hot mature female escorts

corn longer sex without medication

longer sex without medication

moment hardcorem sex

hardcorem sex

die mexican resorts voyeurism

mexican resorts voyeurism

fig shemale on

shemale on

end firm breast exercises

firm breast exercises

subtract anal first time amatuers

anal first time amatuers

bring yng sex

yng sex

wire anal internal cumshot video

anal internal cumshot video

team photography erotic nudes pics

photography erotic nudes pics

went femdom torture story

femdom torture story

master mistress domination

mistress domination

nose trannys fuck guys

trannys fuck guys

flat peavey amp knobs

peavey amp knobs

power black mans dick

black mans dick

don't dick cheney attack iran

dick cheney attack iran

cook my favorite porn sites

my favorite porn sites

would elizabeth rohm gay

elizabeth rohm gay

season nudist camp pix

nudist camp pix

believe hi ary duff nude

hi ary duff nude

check pipe smoking gay

pipe smoking gay

hole dominant escort fisting london

dominant escort fisting london

hill lesbian toon

lesbian toon

bread public nipple slip

public nipple slip

set hardcore cartoonxxx porn

hardcore cartoonxxx porn

race 1 foot dick

1 foot dick

cause nude muscle males

nude muscle males

cost nudist youth images

nudist youth images

men sex change surgery thailand

sex change surgery thailand

list resorts that swing

resorts that swing

notice teen novels

teen novels

arrange teen bodypainting

teen bodypainting

even papa beaver story time

papa beaver story time

sudden nudism spain

nudism spain

sharp vanessa hutchensen nude picture

vanessa hutchensen nude picture

bat deanna troi fake nude

deanna troi fake nude

box anal sex and diarrhea

anal sex and diarrhea

toward nolita nude ads

nolita nude ads

equal swing trade systems

swing trade systems

eat congested vagina

congested vagina

usual suck uk design

suck uk design

dictionary vagina licker

vagina licker

shape nude star trek girls

nude star trek girls

lost playboy strip vidoes

playboy strip vidoes

straight milwaukee nude massage

milwaukee nude massage

much lucy love women s clothing

lucy love women s clothing

triangle was gary cooper gay

was gary cooper gay

does fetish latex mask

fetish latex mask

eye nelly shirtless

nelly shirtless

this femdom wife pedicure discipline

femdom wife pedicure discipline

track double breasted leather jacket

double breasted leather jacket

sit bald virgin pussy fucked

bald virgin pussy fucked

no vagina feels like

vagina feels like

oh the joy of nudity

the joy of nudity

planet red vs blue boobs

red vs blue boobs

chair african ass cunts

african ass cunts

bring asians fisting

asians fisting

sent outside lesbian orgy

outside lesbian orgy

came women getting big cock

women getting big cock

than mean dating

mean dating

always homemade amatuer nudes pics

homemade amatuer nudes pics

soon bright eyes counseling

bright eyes counseling

wait nude viet

nude viet

offer mistress sharon realtime

mistress sharon realtime

came sex sound vidios

sex sound vidios

duck naked whoe

naked whoe

to maduros gay

maduros gay

roll juliet naked

juliet naked

crowd petite amature

petite amature

this pics hot ass sluts

pics hot ass sluts

object horny women sites

horny women sites

log outer banks dating women

outer banks dating women

look nudist naturalist galleries

nudist naturalist galleries

hand doc johnson glass dildo

doc johnson glass dildo

move erotic vampire sites

erotic vampire sites

tube pictures of naked lesbiens

pictures of naked lesbiens

sure fishing reel replacement knob

fishing reel replacement knob

sentence role playing porn

role playing porn

spend brother sister sexual relationship

brother sister sexual relationship

their condom world puerto rico

condom world puerto rico

bank illegal cp child fuck

illegal cp child fuck

forward nipple reduction pics

nipple reduction pics

far sex at doctors

sex at doctors

metal bondage gear philadelphia

bondage gear philadelphia

hope song thing of beauty

song thing of beauty

dollar 400 swing sets

400 swing sets

sleep ladyboy katoey

ladyboy katoey

quick sexy black teen lesbians

sexy black teen lesbians

sharp love lifted me lyrics

love lifted me lyrics

object canadian beaver tails recipe

canadian beaver tails recipe

represent milf candy

milf candy

lie
... "; dress('paging_rep_link_num','1',$itemView); dress('paging_rep_link',"href='$url$prefix{$paging['first']}$postfix'",$itemView); print ($itemView); }elseif($paging['page']>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','',$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); dress('no_more_prev',isset($paging['prev'])?'':'no-more-prev',$view); dress('no_more_next',isset($paging['next'])?'':'no-more-next',$view); return $view; } function dress($tag,$value,&$contents){ if(eregi("\[##_{$tag}_##\]",$contents,$temp)){ $contents=str_replace("[##_{$tag}_##]",$value,$contents); return true; }else{ return false; } } function getUpperView($paging){ global $service,$blogURL; ob_start();?> _ _ _ _ trackbackContainer; $trackbacksView=''; $trackbacks=getTrackbacks($entryId); foreach($trackbacks as $trackback){ $trackbackView=$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',fireEvent('ViewTrackbackDate',Timestamp::format5($trackback['written'])),$trackbackView); if(dress('tb_rep_id','trackback'.$trackback['id'],$trackbackView)==false){ $trackbackView="".$trackbackView; } $trackbacksView.=$trackbackView; } if(count($trackbacks)>0){ dress('tb_rep',$trackbacksView,$trackbacksContainer); }else{ $trackbacksContainer=''; } if($skinSetting['expandTrackback']==1||(($suri['url']!=$blogURL.'/index.php'&&$suri['url']!=$service['path'].'/index.php')&&($suri['directive']=='/'||$suri['directive']=='/entry')&&$suri['value']!='')){ $style='block'; }else{ $style='none'; } $trackbacksView="
".str_replace('[##_tb_container_##]',$trackbacksContainer,$skin->trackbacks).'
'; dress('tb_address',"$defaultURL/trackback/$entryId",$trackbacksView); return $trackbacksView; } function getCommentView($entryId,&$skin){ global $database,$blogURL,$service,$owner,$suri,$paging,$blog; $authorized=doesHaveOwnership(); $skinValue=getSkinSetting($owner); $blogSetting=getBlogSetting($owner); if($entryId>0){ $prefix1='rp'; $isComment=true; $SubItem='commentSubItem'; }else{ $prefix1='guest'; $isComment=false; $SubItem='guestSubItem'; } $commentView=($isComment?$skin->comment:$skin->guest); $commentItemsView=''; if($isComment==false){ 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']=_text('관리자만 볼 수 있는 댓글입니다.'); } } }else{ $comments=getComments($entryId); } foreach($comments as $commentItem){ $commentItemView=($isComment?$skin->commentItem:$skin->guestItem); $commentSubItemsView=''; $subComments=getCommentComments($commentItem['id']); foreach($subComments 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',fireEvent(($isComment?'ViewCommentDate':'ViewGuestCommentDate'),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); $rp_class=$prefix1.'_general'; if($owner==$commentSubItem['replier']) $rp_class=$prefix1.'_admin'; elseif($commentSubItem['secret']==1){ $rp_class=$prefix1.'_secret'; if(!$authorized) $rp_class.=' hiddenComment'; } dress($prefix1.'_rep_class',$rp_class,$commentSubItemView); if(dress($prefix1.'_rep_id','comment'.$commentSubItem['id'],$commentSubItemView)==false){ $commentSubItemView="".$commentSubItemView; } $commentSubItemsView.=$commentSubItemView; } $commentSubContainer=($isComment?$skin->commentSubContainer:$skin->guestSubContainer); dress(($isComment?'rp2_rep':'guest_reply_rep'),$commentSubItemsView,$commentSubContainer); if(count($subComments)>0){ dress(($isComment?'rp2_container':'guest_reply_container'),$commentSubContainer,$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',fireEvent(($isComment?'ViewCommentDate':'ViewGuestCommentDate'),Timestamp::format5($commentItem['written'])),$commentItemView); if($prefix1=='guest'&&$authorized!=true&&$blogSetting['allowWriteDoubleCommentOnGuestbook']==0){ $doubleCommentPermissionScript='alert(\''._text('댓글을 사용할 수 없습니다.').'\'); 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); $rp_class=$prefix1.'_general'; if($owner==$commentItem['replier']) $rp_class=$prefix1.'_admin'; elseif($commentItem['secret']==1){ $rp_class=$prefix1.'_secret'; if(!$authorized) $rp_class.=' hiddenComment'; } dress($prefix1.'_rep_class',$rp_class,$commentItemView); if(dress($prefix1.'_rep_id','comment'.$commentItem['id'],$commentItemView)==false){ $commentItemView="".$commentItemView; } $commentItemsView.=$commentItemView; } $commentContainer=($isComment?$skin->commentContainer:$skin->guestContainer); dress(($isComment?'rp_rep':'guest_rep'),$commentItemsView,$commentContainer); if(count($comments)>0){ dress($prefix1.'_container',$commentContainer,$commentView); } $acceptComment=fetchQueryCell("SELECT `acceptComment` FROM `{$database['prefix']}Entries` WHERE `id` = $entryId"); $useForm=false; if($isComment){ if(!($skin->commentForm=='')){ $commentRrevView=$commentView; $commentView=$skin->commentForm; $useForm=true; } }else{ if(!($skin->guestForm=='')){ $commentRrevView=$commentView; $commentView=$skin->guestForm; $useForm=true; } } if(doesHaveOwnership()||($isComment&&$acceptComment==1)||($isComment==false)||($useForm==false)){ 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); }elseif($useForm==true){ $commentView=''; } if($useForm==true){ dress($prefix1.'_input_form',"
".$commentView.'
',$commentRrevView); $commentView=$commentRrevView; }else{ $commentView="
".$commentView.'
'; } return $commentView; } function getCategoriesView($totalPosts,$categories,$selected,$xhtml=false){ global $blogURL,$owner; $tree=array('id'=>0,'label'=>getCategoryNameById($owner,0),'value'=>$totalPosts,'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'=>(doesHaveOwnership()?$category2['entriesInLogin']:$category2['entries']),'link'=>"$blogURL/category/".encodeURL($category2['label']),'children'=>array())); } array_push($tree['children'],array('id'=>$category1['id'],'label'=>$category1['name'],'value'=>(doesHaveOwnership()?$category1['entriesInLogin']:$category1['entries']),'link'=>"$blogURL/category/".encodeURL($category1['label']),'children'=>$children)); } ob_start(); printTreeView($tree,$selected,false,$xhtml); $view=ob_get_contents(); ob_end_clean(); return $view; } function printTreeView($tree,$selected,$embedJava=false,$xhtml=false){ global $skinSetting; $skin=$skinSetting; if($embedJava==false){ $skin=getCategoriesSkin(); } if($xhtml){ echo ''; return ; } $action=0;?> cellpadding="0" cellspacing="0" style="width: 100%;">
cellpadding="0" cellspacing="0">
>
({$tree['value']})";?>
id="category_" cellpadding="0" cellspacing="0">
>
({$row['value']})";?>
=$week*7&&($today+$firstWeekday)<($week+1)*7){ echo ' '.CRLF; }else{ echo ' '.CRLF; } for($weekday=0;$weekday<7;$weekday++){ $day++; $dayString=isset($calendar['days'][$day])?''.$day.'':$day; switch($weekday){ case 0: $className=" cal_day cal_day_sunday"; break; case 1: case 2: case 3: case 4: case 5: case 6: $className=" cal_day"; break; } $className.=$day==$today?" cal_day4":" cal_day3"; if($week==0){ if($weekday<$firstWeekday){ $day--; echo ' '.CRLF; }else{ echo ' '.CRLF; } }elseif($week==($lastWeek-1)){ if($day<=$lastDay){ echo ' '.CRLF; }else{ echo ' '.CRLF; } }else{ echo ' '.CRLF; } } echo ' '.CRLF; if($day>=$lastDay){ break; } }?>
«     »
 '.$dayString.''.$dayString.' '.$dayString.'
".($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',fireEvent('ViewRecentCommentDate',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',fireEvent('ViewRecentTrackbackDate',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,$bRssMode=false){ global $service; $path="../../attach/$owner"; $url="{$service['path']}/attach/$owner"; $view=bindAttachments($id,$path,$url,$content,$useAbsolutePath,$bRssMode); $view=is_array($keywords)?bindKeywords($keywords,$view):$view; $view=bindTags($id,$view); if(!$useAbsolutePath) $view=avoidFlashBorder($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); if(strlen($more)==0) $more='more..'; if(strlen($less)==0) $less='less..'; $more2=htmlspecialchars(str_replace("\"",""",str_replace("'","'",$more))); $less2=htmlspecialchars(str_replace("\"",""",str_replace("'","'",$less))); $postfix=substr($content,$end+4); $content=$prefix; { $content.="

$more

$full
"; } $content.=$postfix; } return $content; } function bindKeywords($keywords,$content){ if(empty($keywords)) return $content; $result=preg_split('@( # ]+ )* )? # end of element > # redundant closure need to keep num of capturing patterns to 4 () | # TT special pattern \[\#\#_.*?_\#\#] )@x',$content,-1,PREG_SPLIT_DELIM_CAPTURE); $stack=array(); $buf=''; $i=0; $pattern=array(); foreach($keywords as $keyword) $pattern[]=preg_quote($keyword,'/'); $pattern='/'.implode('|',$pattern).'/e'; while(true){ if(count($stack)){ $buf.=$result[$i]; }else{ $buf.=preg_replace($pattern,'fireEvent("BindKeyword", "$0")',$result[$i]); } if(++$i>=count($result)) break; if($result[$i]{0}=='<'){ if($result[$i]{1}=='/'){ $index=array_search(strtolower($result[$i+1]),$stack); if($index===false){ $stack=array(); }else{ array_splice($stack,0,$index+1); } }else{ if(!in_array(strtolower($result[$i+1]),array('br','hr','img'))) array_unshift($stack,strtolower($result[$i+1])); } $buf.=$result[$i]; $i+=4; }else{ $buf.=$result[$i++]; } } return $buf; } function bindAttachments($entryId,$folderPath,$folderURL,$content,$useAbsolutePath=false,$bRssMode=false){ global $service,$owner,$hostURL,$blogURL; $view=str_replace('[##_ATTACH_PATH_##]',($useAbsolutePath?"$hostURL{$service['path']}/attach/$owner":$folderURL),$content); $view=str_replace('http://tt_attach_path/',($useAbsolutePath?"$hostURL{$service['path']}/attach/$owner/":($folderURL.'/')),$view); $count=0; $bWritedGalleryJS=false; 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); if(defined('__TATTERTOOLS_MOBILE__')||($bRssMode==true)){ $images=array_slice($attributes,1,count($attributes)-2); for($i=0;$i'; elseif(strlen($images[$i])>0) $buf.="
$images[$i]
"; } } }else{ $id="gallery$entryId$count"; $cssId="tt-gallery-$entryId-$count"; $items=array(); for($i=1;$i'.CRLF; $buf.=' '.CRLF; $buf.=' '.CRLF; $buf.=''.CRLF; } }elseif($attributes[0]=='iMazing'){ if(defined('__TATTERTOOLS_MOBILE__')||($bRssMode==true)){ $images=array_slice($attributes,1,count($attributes)-3); for($i=0;$i'; } $buf.=$attributes[count($attributes)-1]; }else{ $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.='
'._text('확대').''; $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{ $contentWidth=getContentWidth(); switch(count($attributes)){ case 4: list($newProperty,$onclickFlag)=createNewProperty($attributes[1],$contentWidth,$attributes[2]); { if(trim($attributes[3])==''){ $caption=''; }else{ $caption='

'.$attributes[3].'

'; } switch($attributes[0]){ case '1L': $prefix='
'; break; case '1R': $prefix='
'; break; case '1C': default: $prefix='
'; break; } $buf=$prefix.getAttachmentBinder($attributes[1],$newProperty,$folderPath,$folderURL,1,$useAbsolutePath,$bRssMode,$onclickFlag).$caption.'
'; } break; case 7: $eachImageWidth=floor(($contentWidth-5*3)/2); list($newProperty1,$onclickFlag1)=createNewProperty($attributes[1],$eachImageWidth,$attributes[2]); list($newProperty2,$onclickFlag2)=createNewProperty($attributes[4],$eachImageWidth,$attributes[5]); { $cap1=strlen(trim($attributes[3]))>0?'

'.$attributes[3].'

':''; $cap2=strlen(trim($attributes[6]))>0?'

'.$attributes[6].'

':''; $buf='
'.getAttachmentBinder($attributes[1],$newProperty1,$folderPath,$folderURL,2,$useAbsolutePath,$bRssMode,$onclickFlag1).$cap1.''.getAttachmentBinder($attributes[4],$newProperty2,$folderPath,$folderURL,2,$useAbsolutePath,$bRssMode,$onclickFlag2).$cap2.'
'; } break; case 10: $eachImageWidth=floor(($contentWidth-5*4)/3); list($newProperty1,$onclickFlag1)=createNewProperty($attributes[1],$eachImageWidth,$attributes[2]); list($newProperty2,$onclickFlag2)=createNewProperty($attributes[4],$eachImageWidth,$attributes[5]); list($newProperty3,$onclickFlag3)=createNewProperty($attributes[7],$eachImageWidth,$attributes[8]); { $cap1=strlen(trim($attributes[3]))>0?'

'.$attributes[3].'

':''; $cap2=strlen(trim($attributes[6]))>0?'

'.$attributes[6].'

':''; $cap3=strlen(trim($attributes[9]))>0?'

'.$attributes[9].'

':''; $buf='
'.getAttachmentBinder($attributes[1],$newProperty1,$folderPath,$folderURL,3,$useAbsolutePath,$bRssMode,$onclickFlag1).$cap1.''.getAttachmentBinder($attributes[4],$newProperty2,$folderPath,$folderURL,3,$useAbsolutePath,$bRssMode,$onclickFlag2).$cap2.''.getAttachmentBinder($attributes[7],$newProperty3,$folderPath,$folderURL,3,$useAbsolutePath,$bRssMode,$onclickFlag3).$cap3.'
'; } break; } } $view=substr($view,0,$start).$buf.substr($view,$end+4); } return $view; } function getAttachmentBinder($filename,$property,$folderPath,$folderURL,$imageBlocks=1,$useAbsolutePath=false,$bRssMode=false,$onclickFlag=false){ global $database,$skinSetting,$service,$owner,$blogURL,$hostURL,$waterMarkArray,$paddingArray,$serviceURL; $path="$folderPath/$filename"; if($useAbsolutePath) $url="$serviceURL/attach/$owner/$filename"; else $url="$folderURL/$filename"; $fileInfo=getAttachmentByOnlyName($owner,$filename); switch(getFileExtension($filename)){ case 'jpg': case 'jpeg': case 'gif': case 'png': case 'bmp': $bPassing=false; { if(($onclickFlag==true)&&($bRssMode==false)&&($bPassing==false)){ $imageStr=''; }else{ $imageStr=''; } return makeThumbnail(fireEvent('ViewAttachedImage',$imageStr,$path),$path,$paddingArray,$waterMarkArray,$useAbsolutePath); } break; case 'swf': $id=md5($url).rand(1,10000); if(($useAbsolutePath)&&(strncasecmp($url,'http://',7)==0)) $url=substr($url,7); return "_"; break; case 'wmv': case 'avi': case 'asf': case 'mpg': case 'mpeg': $id=md5($url).rand(1,10000); if(($useAbsolutePath)&&(strncasecmp($url,'http://',7)==0)) $url=substr($url,7); return "_"; break; case 'mp3': case 'mp2': case 'wma': case 'wav': case 'mid': case 'midi': $id=md5($url).rand(1,10000); if(($useAbsolutePath)&&(strncasecmp($url,'http://',7)==0)) $url=substr($url,7); return "_"; break; case 'mov': $id=md5($url).rand(1,10000); return "_"; break; default: if(file_exists(ROOT.'/image/extension/'.getFileExtension($filename).'.gif')){ return ''.fireEvent('ViewAttachedFileExtension','').' '.htmlspecialchars($fileInfo['label']).''; }else{ return ''.fireEvent('ViewAttachedFileExtension','').' '.htmlspecialchars($fileInfo['label']).''; } break; } } function printScript($filename,$obfuscate=true){ global $service,$hostURL,$blogURL; if(!$file=@file_get_contents("../../script/$filename")) return ''; $file=""; } function createNewProperty($filename,$imageWidth,$property){ global $owner; if(!file_exists("../../attach/$owner/$filename")) return array($property,false); if($tempInfo=getimagesize("../../attach/$owner/$filename")){ list($originWidth,$originHeight,$type,$attr)=$tempInfo; }else{ return array($property,false); } if(eregi('width="([0-9]*%?)"',$property,$temp)){ $currentWidth=$temp[1]; if(eregi("^([0-9]+)%$",$currentWidth)){ $currentWidth=$originWidth*($temp[1]/100); } }else{ $property.=' width="1"'; } if(eregi('height="([0-9]*%?)"',$property,$temp)){ $currentHeight=$temp[1]; if(eregi("^([0-9]+)%$",$currentHeight)){ $currentHeight=$originHeight*($temp[1]/100); } }else{ $property.=' height="1"'; } if(isset($currentWidth)&&!isset($currentHeight)){ $currentHeight=floor($originHeight*$currentWidth/$originWidth); }elseif(!isset($currentWidth)&&isset($currentHeight)){ $currentWidth=floor($originWidth*$currentHeight/$originHeight); }elseif(!isset($currentWidth)&&!isset($currentHeight)){ $currentWidth=$originWidth; $currentHeight=$originHeight; } if($currentWidth>$imageWidth){ $tempWidth=$imageWidth; $tempHeight=floor($currentHeight*$imageWidth/$currentWidth); }else{ $tempWidth=$currentWidth; $tempHeight=$currentHeight; } $property=eregi_replace('(^| )width="([0-9]+%?)"','\1width="'.$tempWidth.'"',$property); $property=eregi_replace('(^| )height="([0-9]+%?)"','\1height="'.$tempHeight.'"',$property); if($originWidth>$tempWidth||$originHeight>$tempHeight){ $onclickFlag=true; }else{ $onclickFlag=false; } return array($property,$onclickFlag); } 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 $guestForm; var $guestGuest; var $guestMember; var $guestContainer; var $guestItem; var $guestSubContainer; 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 $commentCount; var $commentForm; var $commentGuest; var $commentMember; var $commentContainer; var $commentItem; var $commentSubContainer; var $commentSubItem; var $trackbacks; var $trackbackContainer; var $trackback; var $trackbackCount; var $tagLabel; var $siteTag; var $siteTagItem; var $randomTags; var $s_link_rep; var $aux; var $sidebarBasicModules=array(); var $sidebarStorage=array(); var $sidebarOriginalContent=array(); var $sidebarName=array(); var $noneCommentMessage; var $singleCommentMessage; var $noneTrackbackMessage; var $singleTrackbackMessage; function Skin($name,$previewMode=false){ global $service,$blogURL; global $owner; $this->noneCommentMessage=getUserSetting('noneCommentMessage'); $this->singleCommentMessage=getUserSetting('singleCommentMessage'); $this->noneTrackbackMessage=getUserSetting('noneTrackbackMessage'); $this->singleTrackbackMessage=getUserSetting('singleTrackbackMessage'); if(strncmp($name,'customize/',10)==0){ $name="customize/$owner"; }else{ $name=Path::getBaseName($name); } if(($name=='.')||($name=='..')){ respondErrorPage(_text('스킨 정보가 존재하지 않습니다.'),_text('로그인'),$blogURL."/owner"); } $filename="../../skin/$name/skin.html"; if(!is_file($filename)){ respondErrorPage(_text('스킨 정보가 존재하지 않습니다.'),_text('로그인'),$blogURL."/owner"); } if(!$sval=file_get_contents($filename)) respondErrorPage(_text('스킨 정보가 존재하지 않습니다.'),_text('로그인'),$blogURL."/owner"); $sval=replaceSkinTag($sval,'html'); $sval=replaceSkinTag($sval,'head'); $sval=replaceSkinTag($sval,'body'); handleTags($sval); $sidebarCount=0; $noNameCount=1; while(ereg("",$sval)){ if(!isset($this->sidebarBasicModules[$sidebarCount])) $this->sidebarBasicModules[$sidebarCount]=array(); list($sval,$this->sidebarOriginalContent[$sidebarCount])=$this->cutSkinTag($sval,"sidebar","[##_sidebar_{$sidebarCount}_##]"); $moduleCount=0; $matchcount=preg_match_all('@.*@isU',$this->sidebarOriginalContent[$sidebarCount],$matches); if($matchcount!==false){ $rgSidebarContent=$matches[0]; }else{ $rgSidebarContent=array(); } for($i=0;$i/",$rgSidebarContent[$i],$temp); if(isset($temp[1])){ $tempTitle=trim($temp[1]); }else{ $tempTitle=_f('(이름 없음 %1)',$noNameCount); $noNameCount++; } $this->sidebarBasicModules[$sidebarCount][$moduleCount]=array('title'=>$tempTitle,'body'=>$rgSidebarContent[$i]); $moduleCount++; } $matchcount=preg_match('@@',$this->sidebarOriginalContent[$sidebarCount],$matches,PREG_OFFSET_CAPTURE); if($matchcount===false){ $firstPos=strlen($this->sidebarOriginalContent[$sidebarCount]); }else{ $firstPos=$matches[0][1]; } preg_match("//",substr($this->sidebarOriginalContent[$sidebarCount],0,$firstPos-1),$temp); if(isset($temp[1])){ $tempTitle=trim($temp[1]); }else{ $tempTitle=_t('사이드바').' '.($sidebarCount+1); } $this->sidebarName[$sidebarCount]=$tempTitle; $sidebarCount++; } handleSidebars($sval,$this,$previewMode); $sval=str_replace('./',"{$service['path']}/skin/$name/",$sval); list($sval,$this->listItem)=$this->cutSkinTag($sval,'list_rep'); list($sval,$this->list)=$this->cutSkinTag($sval,'list'); list($sval,$this->commentListItem)=$this->cutSkinTag($sval,'rplist_rep'); list($sval,$this->commentList)=$this->cutSkinTag($sval,'rplist'); list($sval,$this->rss_rep)=$this->cutSkinTag($sval,'rss_rep'); list($sval,$this->rss_date)=$this->cutSkinTag($sval,'rss_date'); list($sval,$this->rss)=$this->cutSkinTag($sval,'rss'); list($sval,$this->keywordItem)=$this->cutSkinTag($sval,'keyword_rep'); list($sval,$this->keywordGroup)=$this->cutSkinTag($sval,'keyword_date_rep'); list($sval,$this->keyword)=$this->cutSkinTag($sval,'keyword'); list($sval,$this->noticeItem)=$this->cutSkinTag($sval,'notice_rep'); list($sval,$this->recentNoticeItem)=$this->cutSkinTag($sval,'rct_notice_rep'); list($sval,$this->recentNotice)=$this->cutSkinTag($sval,'rct_notice'); list($sval,$this->locativeEntry)=$this->cutSkinTag($sval,'local_info_rep'); list($sval,$this->locativeSpot)=$this->cutSkinTag($sval,'local_spot_rep'); list($sval,$this->locative)=$this->cutSkinTag($sval,'local'); list($sval,$this->guestSubContainer)=$this->cutSkinTag($sval,'guest_reply_container'); if($this->guestSubContainer==''){ $this->guestSubContainer='[##_guest_reply_rep_##]'; list($sval,$this->guestSubItem)=$this->cutSkinTag($sval,'guest_reply_rep','[##_guest_reply_container_##]'); }else{ list($this->guestSubContainer,$this->guestSubItem)=$this->cutSkinTag($this->guestSubContainer,'guest_reply_rep'); } list($sval,$this->guestContainer)=$this->cutSkinTag($sval,'guest_container'); if($this->guestContainer==''){ $this->guestContainer='[##_guest_rep_##]'; list($sval,$this->guestItem)=$this->cutSkinTag($sval,'guest_rep','[##_guest_container_##]'); }else{ list($this->guestContainer,$this->guestItem)=$this->cutSkinTag($this->guestContainer,'guest_rep'); } list($sval,$this->guestGuest)=$this->cutSkinTag($sval,'guest_form'); list($sval,$this->guestMember)=$this->cutSkinTag($sval,'guest_member'); list($sval,$this->guestForm)=$this->cutSkinTag($sval,'guest_input_form'); list($sval,$this->guest)=$this->cutSkinTag($sval,'guest'); list($sval,$this->entryProtected)=$this->cutSkinTag($sval,'article_protected'); list($sval,$this->management)=$this->cutSkinTag($sval,'ad_div'); list($sval,$this->trackbackCount)=$this->cutSkinTag($sval,'tb_count'); if($this->trackbackCount==''){ list($sval,$this->trackbackCount)=$this->cutSkinReplacer($sval,'article_rep_tb_cnt','[##_tb_count_##]'); $this->noneTrackbackMessage=''; $this->singleTrackbackMessage=''; } list($sval,$this->commentCount)=$this->cutSkinTag($sval,'rp_count'); if($this->commentCount==''){ list($sval,$this->commentCount)=$this->cutSkinReplacer($sval,'article_rep_rp_cnt','[##_rp_count_##]'); $this->noneCommentMessage=''; $this->singleCommentMessage=''; } list($sval,$this->trackbackContainer)=$this->cutSkinTag($sval,'tb_container'); if($this->trackbackContainer==''){ $this->trackbackContainer='[##_tb_rep_##]'; list($sval,$this->trackback)=$this->cutSkinTag($sval,'tb_rep','[##_tb_container_##]'); }else{ list($this->trackbackContainer,$this->trackback)=$this->cutSkinTag($this->trackbackContainer,'tb_rep'); } list($sval,$this->trackbacks)=$this->cutSkinTag($sval,'tb'); list($sval,$this->tagLabel)=$this->cutSkinTag($sval,'tag_label'); list($sval,$this->siteTagItem)=$this->cutSkinTag($sval,'tag_rep'); list($sval,$this->siteTag)=$this->cutSkinTag($sval,'tag'); list($sval,$this->randomTags)=$this->cutSkinTag($sval,'random_tags'); list($sval,$this->commentSubContainer)=$this->cutSkinTag($sval,'rp2_container'); if($this->commentSubContainer==''){ $this->commentSubContainer='[##_rp2_rep_##]'; list($sval,$this->commentSubItem)=$this->cutSkinTag($sval,'rp2_rep','[##_rp2_container_##]'); }else{ list($this->commentSubContainer,$this->commentSubItem)=$this->cutSkinTag($this->commentSubContainer,'rp2_rep'); } list($sval,$this->commentContainer)=$this->cutSkinTag($sval,'rp_container'); if($this->commentContainer==''){ $this->commentContainer='[##_rp_rep_##]'; list($sval,$this->commentItem)=$this->cutSkinTag($sval,'rp_rep','[##_rp_container_##]'); }else{ list($this->commentContainer,$this->commentItem)=$this->cutSkinTag($this->commentContainer,'rp_rep'); } list($sval,$this->commentGuest)=$this->cutSkinTag($sval,'rp_guest'); list($sval,$this->commentMember)=$this->cutSkinTag($sval,'rp_member'); list($sval,$this->commentForm)=$this->cutSkinTag($sval,'rp_input_form'); list($sval,$this->comment)=$this->cutSkinTag($sval,'rp'); list($sval,$this->entry)=$this->cutSkinTag($sval,'article_rep'); list($sval,$this->pagingItem)=$this->cutSkinTag($sval,'paging_rep'); list($sval,$this->paging)=$this->cutSkinTag($sval,'paging'); list($sval,$this->archive)=$this->cutSkinTag($sval,'archive_rep'); list($sval,$this->search)=$this->cutSkinTag($sval,'search'); list($sval,$this->recentEntry)=$this->cutSkinTag($sval,'rctps_rep'); list($sval,$this->recentComments)=$this->cutSkinTag($sval,'rctrp_rep'); list($sval,$this->recentTrackback)=$this->cutSkinTag($sval,'rcttb_rep'); list($sval,$this->s_link_rep)=$this->cutSkinTag($sval,'link_rep'); list($sval,$this->skin)=$this->cutSkinTag($sval,'t3'); $this->outter=$sval; } function cutSkinTag($contents,$tag,$replace=null){ if(is_null($replace)){ $replace="[##_{$tag}_##]"; } $tagSize=strlen($tag)+4; $begin=strpos($contents,""); if($begin===false) return array($contents,NULL); $end=strpos($contents,"",$begin+4); if($end===false) return array($contents,NULL); $inner=substr($contents,$begin+$tagSize,$end-$begin-$tagSize); $outter=substr($contents,0,$begin).$replace.substr($contents,$end+$tagSize+1); return array($outter,$inner); } function cutSkinReplacer($contents,$tag,$replace=null){ if(is_null($replace)){ $replace="[##_{$tag}_##]"; } $tagSize=strlen("[##_{$tag}_##]"); $pos=strpos($contents,"[##_{$tag}_##]"); if($pos===false){ return array($contents,''); } $inner="[##_{$tag}_##]"; $outter=substr($contents,0,$pos).$replace.substr($contents,$pos+$tagSize); return array($outter,$inner); } } function removeAllTags($contents){ $contents=preg_replace('/\[#M_[^|]*\|[^|]*\|/Us','',str_replace('_M#]','',preg_replace('/\[##_.+_##\]/Us','',$contents))); $contents=preg_replace('@(@','',$contents); 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(false){ fetchConfigVal(); } if(strlen($suri['value'])){ $tag=getTagId($owner,$suri['value']); $listWithPaging=getEntryListWithPagingByTag($owner,$tag,$suri['page'],$blog['entriesOnList']); $list=array('title'=>$suri['value'],'items'=>$listWithPaging[0],'count'=>$listWithPaging[1]['total']); list($entries,$paging)=getEntriesWithPagingByTag($owner,$tag,$suri['page'],$blog['entriesOnList']); updateVisitorStatistics($owner); $stats=getStatistics($owner); if(!empty($entries)&&(count($entries)==1)) $pageTitle=$entries[0]['title']; else $pageTitle=''; if(!isset($skin)) $skin=new Skin($skinSetting['skin']); $view=str_replace('[##_t3_##]',getUpperView(isset($paging)?$paging:null).$skin->skin.getLowerView().getScriptsOnFoot(),$skin->outter); if($suri['directive']=='/'){ dress('body_id',"tt-body-page",$view); }elseif(!empty($category)){ dress('body_id',getCategoryBodyIdById($owner,$category)?getCategoryBodyIdById($owner,$category):'tt-body-category',$view); }elseif(!empty($search)){ dress('body_id',"tt-body-search",$view); }elseif(!empty($period)){ dress('body_id',"tt-body-archive",$view); }else{ dress('body_id',"tt-body-".ltrim($suri['directive'],'/'),$view); } if(isset($list)){ $listView=$skin->list; $itemsView=''; foreach($list['items'] as $item){ $itemsView.=str_replace(array('[##_list_rep_regdate_##]','[##_list_rep_link_##]','[##_list_rep_title_##]','[##_list_rep_rp_cnt_##]'),array(fireEvent('ViewListDate',Timestamp::format3($item['published'])),"$blogURL/".($blog['useSlogan']?'entry/'.encodeURL($item['slogan']):$item['id']),htmlspecialchars(fireEvent('ViewListTitle',$item['title'])),($item['comments']>0)?"({$item['comments']})":''),$skin->listItem); } dress('list_rep',$itemsView,$listView); dress('list_conform',fireEvent('ViewListHeadTitle',htmlspecialchars($list['title'])),$listView); dress('list_count',isset($list['count'])?$list['count']:'0',$listView); dress('list',$listView,$view); } $entriesView=''; foreach($entries as $entry){ if($suri['directive']=='/notice') $permalink="$blogURL/notice/{$entry['id']}"; elseif($suri['directive']=='/page') $permalink="$blogURL/page/{$entry['id']}"; else $permalink="$blogURL/".($blog['useSlogan']?"entry/".encodeURL($entry['slogan']):$entry['id']); if($entry['category']==-2){ $entryView=$skin->noticeItem; dress('notice_rep_date',fireEvent('ViewNoticeDate',Timestamp::format5($entry['published'])),$entryView); dress('notice_rep_title',htmlspecialchars(fireEvent('ViewNoticeTitle',$entry['title'],$entry['id'])),$entryView); if($suri['directive']=='/notice') dress('notice_rep_link',"$blogURL/notice/{$entry['id']}",$entryView); else dress('notice_rep_link',"$blogURL/page/{$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'])&&(trim($_COOKIE['GUEST_PASSWORD'])==trim($entry['password'])))){ $entryView=$skin->entry; dress('tb',getTrackbacksView($entry['id'],$skin),$entryView); if($skinSetting['expandComment']==1||(($suri['url']!=$blogURL.'/index.php'&&$suri['url']!=$service['path'].'/index.php')&&($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,"'.htmlspecialchars($entryTag['name']).''); $tags=fireEvent('ViewTagLists',$tags,$entry['id']); dress('tag_label_rep',implode(",\r\n",$tags),$tagLabelView); dress('tag_label',$tagLabelView,$entryView); } 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',_text('공개로 변경합니다'),$managementView); dress('s_ad_s2_onclick',"changeVisibility({$entry['id']}, 2); return false;",$managementView); }else{ dress('s_ad_s2_label',_text('비공개로 변경합니다'),$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(fireEvent('ViewPostTitle',$entry['title'],$entry['id'])),$entryView); dress('article_rep_desc',getEntryContentView($owner,$entry['id'],$entry['content'],getKeywordNames($owner)),$entryView); dress('article_rep_category',htmlspecialchars(empty($entry['category'])?_text('분류없음'):$entry['categoryLabel'],$entry['id']),$entryView); dress('article_rep_category_link',"$blogURL/category/".encodeURL($entry['categoryLabel']),$entryView); dress('article_rep_date',fireEvent('ViewPostDate',Timestamp::format5($entry['published'])),$entryView); dress('entry_archive_link',"$blogURL/archive/".Timestamp::getDate($entry['published']),$entryView); if($entry['acceptComment']||($entry['comments']>0)) dress('article_rep_rp_link',"toggleLayer('entry{$entry['id']}Comment'); return false",$entryView); else dress('article_rep_rp_link',"alert('"._text('이 글에는 댓글을 달 수 없습니다.')."'); return false",$entryView); list($tempTag,$commentView)=getCommentCountPart($entry['comments'],$skin); dress($tempTag,"{$commentView}",$entryView); if($entry['acceptTrackback']||($entry['trackbacks']>0)) dress('article_rep_tb_link',"toggleLayer('entry{$entry['id']}Trackback'); return false",$entryView); else dress('article_rep_tb_link',"alert('"._text('이 글에는 글을 걸 수 없습니다.')."'); return false",$entryView); list($tempTag,$trackbackView)=getTrackbackCountPart($entry['trackbacks'],$skin); dress($tempTag,$trackbackView,$entryView); $entriesView.=$entryView; }else{ $protectedEntryView=$skin->entryProtected; dress('article_rep_id',$entry['id'],$protectedEntryView); dress('article_rep_link',$permalink,$protectedEntryView); dress('article_rep_title',htmlspecialchars(fireEvent('ViewPostTitle',$entry['title'],$entry['id'])),$protectedEntryView); dress('article_rep_date',fireEvent('ViewPostDate',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); }else{ $siteTags=getSiteTags($owner); updateVisitorStatistics($owner); $stats=getStatistics($owner); if(!empty($entries)&&(count($entries)==1)) $pageTitle=$entries[0]['title']; else $pageTitle=''; if(!isset($skin)) $skin=new Skin($skinSetting['skin']); $view=str_replace('[##_t3_##]',getUpperView(isset($paging)?$paging:null).$skin->skin.getLowerView().getScriptsOnFoot(),$skin->outter); if($suri['directive']=='/'){ dress('body_id',"tt-body-page",$view); }elseif(!empty($category)){ dress('body_id',getCategoryBodyIdById($owner,$category)?getCategoryBodyIdById($owner,$category):'tt-body-category',$view); }elseif(!empty($search)){ dress('body_id',"tt-body-search",$view); }elseif(!empty($period)){ dress('body_id',"tt-body-archive",$view); }else{ dress('body_id',"tt-body-".ltrim($suri['directive'],'/'),$view); } $tagView=$skin->siteTag; list($maxTagFreq,$minTagFreq)=getTagFrequencyRange(); $itemsView=''; foreach($siteTags as $siteTag){ $itemView=$skin->siteTagItem; dress('tag_name',htmlspecialchars($siteTag),$itemView); dress('tag_link',"$blogURL/tag/".encodeURL($siteTag),$itemView); dress('tag_class',"cloud".getTagFrequency($siteTag,$maxTagFreq,$minTagFreq),$itemView); $itemsView.=$itemView; } dress('tag_rep',$itemsView,$tagView); dress('tag',$tagView,$view); } $writer=fetchQueryCell("SELECT name FROM {$database['prefix']}Users WHERE userid = $owner"); $pageTitle=trim($pageTitle); 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); $totalPosts=getEntriesTotalCount($owner); $categories=getCategories($owner); dress('category',getCategoriesView($totalPosts,$categories,isset($category)?$category:true),$view); dress('category_list',getCategoriesView($totalPosts,$categories,isset($category)?$category:true,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(fireEvent('ViewNoticeTitle',UTF8::lessenAsEm($notice['title'],$skinSetting['recentNoticeLength']),$notice['id'])),$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); dress('tattertools_name',TATTERTOOLS_NAME,$view); dress('tattertools_version',TATTERTOOLS_VERSION,$view); if(isset($paging)) dress('paging',getPagingView($paging,$skin->paging,$skin->pagingItem),$view); $sidebarElements=array_keys($skin->sidebarStorage); foreach($sidebarElements as $element){ dress($element,$skin->sidebarStorage[$element],$view); } $view=removeAllTags($view); print $view;?>