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 escapeMysqlSearchString($str){ return is_string($str)?str_replace('_','\_',str_replace('%','\%',mysql_tt_escape_string($str))):$str; } 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 getCommentList($owner,$search){ global $database; $list=array('title'=>"$search",'items'=>array()); $search=escapeMysqlSearchString($search); $authorized=doesHaveOwnership()?'':'and secret = 0'; if($result=mysql_query("select id, entry, parent, name, comment, written from {$database['prefix']}Comments where entry > 0 AND owner = $owner $authorized and isFiltered = 0 and comment like '%$search%'")){ while($comment=mysql_fetch_array($result)) array_push($list['items'],$comment); } return $list; } 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 getEntryListWithPagingBySearch($owner,$search,$page,$count){ global $database,$suri,$folderURL; $search=escapeMysqlSearchString($search); $cond=empty($search)?'':"AND (title LIKE '%$search%' OR content LIKE '%$search%')"; $visibility=doesHaveOwnership()?'':'AND visibility > 1'; $sql="SELECT * FROM {$database['prefix']}Entries WHERE owner = $owner AND draft = 0 $visibility AND category >= 0 $cond ORDER BY published DESC"; return fetchWithPaging($sql,$page,$count,"$folderURL/{$suri['value']}"); } function getEntriesWithPagingBySearch($owner,$search,$page,$count){ global $database,$folderURL,$suri; $search=escapeMysqlSearchString($search); $cond=empty($search)?'':"AND (e.title LIKE '%$search%' OR e.content LIKE '%$search%')"; $visibility=doesHaveOwnership()?'':'AND e.visibility > 1'; $sql="SELECT e.*, c.label categoryLabel FROM {$database['prefix']}Entries e LEFT JOIN {$database['prefix']}Categories c ON e.owner = c.owner AND e.category = c.id WHERE e.owner = $owner AND e.draft = 0 $visibility AND e.category >= 0 $cond 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 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 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 lyricarabic sex scandale

arabic sex scandale

rain pirates porn scene

pirates porn scene

turn shearing girlfriend with sex

shearing girlfriend with sex

death between big jugs

between big jugs

die southern online dating

southern online dating

book gay cutler ridge florida

gay cutler ridge florida

egg antonella barba suck

antonella barba suck

molecule dick suck whores

dick suck whores

flower naked moive stars

naked moive stars

simple shemales virgin clips

shemales virgin clips

month polish love short stories

polish love short stories

a humping for pleasure

humping for pleasure

energy shawna leg sex

shawna leg sex

nine pink flamingos sex scene

pink flamingos sex scene

fill dixie chicks lullabye review

dixie chicks lullabye review

state older women dating

older women dating

notice fat mature galleries

fat mature galleries

broad child xxx pic

child xxx pic

point nikki ziering nude playboy

nikki ziering nude playboy

die teen foot fetish galleries

teen foot fetish galleries

bring porn toon games

porn toon games

protect reluctant spanking videos

reluctant spanking videos

instrument gay kl

gay kl

degree perfect c breast sex

perfect c breast sex

still escort tv listings

escort tv listings

world nudist resorts in az

nudist resorts in az

leg simple pleasures sleep shirt

simple pleasures sleep shirt

pound nv beauty diet pills

nv beauty diet pills

current busty asian porn sites

busty asian porn sites

matter lisa dergan naked

lisa dergan naked

come jets breasts

jets breasts

rule love ame

love ame

even facial gestures england

facial gestures england

thank sex spraying

sex spraying

large cate blanchette bondage

cate blanchette bondage

left bi sexual milf videos

bi sexual milf videos

wind sex research answer

sex research answer

early audio sex recordings

audio sex recordings

six foreplay and sex

foreplay and sex

square beautiful fake breasts

beautiful fake breasts

pitch triumph striped body shell

triumph striped body shell

sister katrina breasts

katrina breasts

colony beth pheonix nude photos

beth pheonix nude photos

operate lesbian cluster

lesbian cluster

tail clit clitoris closeup

clit clitoris closeup

drop sara michelle geller lesbian

sara michelle geller lesbian

captain nudist contests photos

nudist contests photos

length tricking girls into sex

tricking girls into sex

spot mature housewives gone black

mature housewives gone black

music lesbians in stockings

lesbians in stockings

blow older dating strategies

older dating strategies

burn females nude tgp

females nude tgp

quotient mr bob butts

mr bob butts

huge leslie howard s mistress

leslie howard s mistress

top breast implant dallas

breast implant dallas

capital kate winslet sex movies

kate winslet sex movies

better amateur sex picture

amateur sex picture

sure farm sex horse women

farm sex horse women

color sissy slave sonora

sissy slave sonora

told chesty love

chesty love

throw goatee kiss

goatee kiss

step nunvarova hardcore

nunvarova hardcore

horse male female cunnilingus pictures

male female cunnilingus pictures

share squirts in her panties

squirts in her panties

light first big cock porn

first big cock porn

late writing christian romance

writing christian romance

special sluts doggy style

sluts doggy style

smell hardcore handjob trailers

hardcore handjob trailers

job indian erotic women

indian erotic women

camp hottie hollie

hottie hollie

human arquette naked

arquette naked

toward find swing clubs

find swing clubs

nor barely leagal porn

barely leagal porn

week kylie minogues tits

kylie minogues tits

select skie hustler porn teresa

skie hustler porn teresa

difficult chubby movie thumb galleries

chubby movie thumb galleries

create brizzy gang bang

brizzy gang bang

was fuko love big tits

fuko love big tits

quiet ann sedgwick cumming

ann sedgwick cumming

wind directions for prostate orgasm

directions for prostate orgasm

strong sharing paris naked

sharing paris naked

begin muscle gay teens

muscle gay teens

water what is adult sexuality

what is adult sexuality

deal nudist naturalist pix

nudist naturalist pix

might electro sex paradise

electro sex paradise

nor teen guy clothing

teen guy clothing

tire rough pussy slapping

rough pussy slapping

born winnipeg porn stars

winnipeg porn stars

as are all nuns virgins

are all nuns virgins

symbol canton s d webcams

canton s d webcams

still raven reilly getting banged

raven reilly getting banged

surprise pix hairy pussys

pix hairy pussys

ground blonde bomshells

blonde bomshells

nothing modern day vampires sex

modern day vampires sex

create in the crack nude

in the crack nude

she envy women s orgasms

envy women s orgasms

made porn crow movies

porn crow movies

could big thick black bootys

big thick black bootys

observe crystal mattison xxx

crystal mattison xxx

strange tight teen pussie

tight teen pussie

reply christy canyon blowjob free

christy canyon blowjob free

consider anal first free painful

anal first free painful

walk mature lesbian xxx

mature lesbian xxx

key security cams fuck billiard

security cams fuck billiard

sea escorts vancouver bc

escorts vancouver bc

motion dove beauty and peta

dove beauty and peta

busy gays mills folk fest

gays mills folk fest

rope ab sissy

ab sissy

a sucking yoing cock

sucking yoing cock

swim smoking fetish arechive

smoking fetish arechive

my aniston breakup nude

aniston breakup nude

shout savanna samson facial

savanna samson facial

matter gay hot men kissing

gay hot men kissing

town degree christian counseling

degree christian counseling

start everquest fatty walrus meat

everquest fatty walrus meat

this hentai masturbaters

hentai masturbaters

event cunt photos free

cunt photos free

is teens hard

teens hard

song teen anal virgins v

teen anal virgins v

vowel roasted jerk chicken

roasted jerk chicken

and camasutra video porn

camasutra video porn

broke beauty academy toledo ohio

beauty academy toledo ohio

sight budding breasts pictures

budding breasts pictures

invent bangbros affi

bangbros affi

some aisian milfs

aisian milfs

dry young japanese chicks horny

young japanese chicks horny

insect black milf hunted

black milf hunted

neck amanda 3d teen

amanda 3d teen

column celebrity archives sex tapes

celebrity archives sex tapes

drink pornstars poolside

pornstars poolside

favor big girl strip clubs

big girl strip clubs

lie active webcam 8 2 serial

active webcam 8 2 serial

soldier cock strap chastity

cock strap chastity

there gay massage therapists charlottesville

gay massage therapists charlottesville

mother story fantasy femdom queendom

story fantasy femdom queendom

figure infatuation and love signs

infatuation and love signs

state chicks ruth s annapolis

chicks ruth s annapolis

only health problems in chicks

health problems in chicks

cost blonde bikini nude

blonde bikini nude

enough black sluts white nuts

black sluts white nuts

flower adoption counseling in florida

adoption counseling in florida

separate nude adult sims

nude adult sims

experience gay simpson toons

gay simpson toons

teeth topless in the car

topless in the car

paper busty ebony porn

busty ebony porn

describe gay bars salou

gay bars salou

require aruba sex club

aruba sex club

climb i love you lucius

i love you lucius

add hentai porn cartoond

hentai porn cartoond

measure mexican desert iguana sex

mexican desert iguana sex

practice white gay gangsta

white gay gangsta

as gayblack guys having sex

gayblack guys having sex

above devon aoki nude

devon aoki nude

similar british girls large breast

british girls large breast

suffix sixties nudes

sixties nudes

search trevin gay

trevin gay

condition iowa city sex

iowa city sex

hair porn websiets

porn websiets

perhaps make masturbation aid

make masturbation aid

tool naked candid pictures

naked candid pictures

root tone damli aaberge nude

tone damli aaberge nude

buy danielle foxxx cumming

danielle foxxx cumming

war the four beauties legends

the four beauties legends

else thai ladyboy pics

thai ladyboy pics

poem tokyo sex entertainment shops

tokyo sex entertainment shops

famous candy apple porn star

candy apple porn star

people dick matteson

dick matteson

section amauter nude

amauter nude

heavy horse mating sex girl

horse mating sex girl

flower teen strapon gay

teen strapon gay

spend cyborg cock

cyborg cock

strange meryl streep nude photos

meryl streep nude photos

been chicks in nazi uniforms

chicks in nazi uniforms

print mature asiam long hair

mature asiam long hair

path online 12 15 tween penpals

online 12 15 tween penpals

insect transsexuals masturbation

transsexuals masturbation

evening sex fiction teen

sex fiction teen

happy 20 free porn clips

20 free porn clips

build big bang theory demo

big bang theory demo

up speculum in the pussy

speculum in the pussy

track camp pendleton counseling

camp pendleton counseling

real creampies ca searchy search

creampies ca searchy search

cent suck horse dicks

suck horse dicks

heard ventura beauty salon

ventura beauty salon

rub rhode island transgender

rhode island transgender

exact huge cock in cunt

huge cock in cunt

hurry vibrator pics

vibrator pics

buy wetback wives

wetback wives

early hentai kaktuz

hentai kaktuz

pretty teen lesbianporn

teen lesbianporn

has toronto casual sex

toronto casual sex

liquid pussy indiana

pussy indiana

also booty fest

booty fest

sell nude air force cics

nude air force cics

bad miniature nylon pulleys

miniature nylon pulleys

some nude sonic hedgehog

nude sonic hedgehog

appear perfect 34d

perfect 34d

neck guy how to strip

guy how to strip

night gay rodeo cargary

gay rodeo cargary

art milf daily pics

milf daily pics

two gay travel arizona

gay travel arizona

original nightclubs webcams online

nightclubs webcams online

cat sex spa 2 torrents

sex spa 2 torrents

since big league facials kat

big league facials kat

big minor sex forum

minor sex forum

sharp 1960 swing jazz

1960 swing jazz

too clips animals sex

clips animals sex

particular virgin acrylic blanket

virgin acrylic blanket

sentence brazilin sex

brazilin sex

unit sex games funny biz

sex games funny biz

compare paparazi upskirt

paparazi upskirt

interest latin interracial sex

latin interracial sex

thin download video clip sex

download video clip sex

send hot teens play army

hot teens play army

north teen drunk driving statistics

teen drunk driving statistics

stone pornstar irena stevens

pornstar irena stevens

them gay twinks pictures

gay twinks pictures

until stories or slut wifes

stories or slut wifes

check history yuma pilot s knob

history yuma pilot s knob

plain double tap sex

double tap sex

area hi dep pussy pics

hi dep pussy pics

key huge brazilian tits

huge brazilian tits

good chubby gay men

chubby gay men

dictionary delray singles

delray singles

her michigan sex offended list

michigan sex offended list

sit naughty eye ii lyrics

naughty eye ii lyrics

help latino milf videos

latino milf videos

atom gay guys undressing

gay guys undressing

sun breast out glamour

breast out glamour

tone dick antony

dick antony

order porn sharing utility

porn sharing utility

village hentai games newgrounds

hentai games newgrounds

section daycare for teens

daycare for teens

path doug bizarro

doug bizarro

green mind control femdom hypnosis

mind control femdom hypnosis

fact jerkoff clips

jerkoff clips

copy sex woman kill man

sex woman kill man

south ghetto whores fucking

ghetto whores fucking

weight xxx punk girls

xxx punk girls

compare cycling naked

cycling naked

enough young porn streaming

young porn streaming

agree absoulte shemale

absoulte shemale

small animel sex video

animel sex video

held judge me nude

judge me nude

divide amateur escorts nottingham uk

amateur escorts nottingham uk

busy vacation escorted tours

vacation escorted tours

cell granny sex free thumbs

granny sex free thumbs

post cacao and sex

cacao and sex

island amateur mature lesbians

amateur mature lesbians

basic nylon legs wives

nylon legs wives

fraction nylon sail cloth

nylon sail cloth

shell i love julia bond

i love julia bond

eat extreme nipples photos

extreme nipples photos

atom kiss 96 st cloud

kiss 96 st cloud

wish russian upskirt websites

russian upskirt websites

feed wood gear shift knobs

wood gear shift knobs

duck big booty oral sex

big booty oral sex

but dominant landlady demands sex

dominant landlady demands sex

write boffy sex cartoons

boffy sex cartoons

safe hot chick strips

hot chick strips

second insest xxx free

insest xxx free

together celebirties porn

celebirties porn

cut fucked bed breaks

fucked bed breaks

chance monster cock gangbang amature

monster cock gangbang amature

live separate bedrooms for couples

separate bedrooms for couples

guess interracial dating dallas tx

interracial dating dallas tx

guess diaz naked

diaz naked

match gay pics for psp

gay pics for psp

create is daryl hall gay

is daryl hall gay

sleep nylon dildo mpg4

nylon dildo mpg4

draw double breasted bolero

double breasted bolero

animal dutch cunts

dutch cunts

color dick in between tits

dick in between tits

receive hawaii state sex offender

hawaii state sex offender

country hard platic vibrators

hard platic vibrators

particular busty japanese schoolgirls

busty japanese schoolgirls

die business for pleasure 1997

business for pleasure 1997

condition cuckold pussy

cuckold pussy

select mpg list for autos

mpg list for autos

music nude female children photos

nude female children photos

section nude callenders

nude callenders

sheet singles ministry orlando

singles ministry orlando

knew rebecca boswell nude photos

rebecca boswell nude photos

rope teens 13 17 candid

teens 13 17 candid

farm sweet hentai and anime

sweet hentai and anime

case teen friend behavior

teen friend behavior

type sisters glasses and sperm

sisters glasses and sperm

yet gay whipping women girls

gay whipping women girls

mountain dick huber

dick huber

change vagina massage videos

vagina massage videos

you nude male runner

nude male runner

numeral bang driver 525

bang driver 525

train orgy party movie downloads

orgy party movie downloads

shoe jack kerouac love

jack kerouac love

came doctor mcdreamy naked

doctor mcdreamy naked

plane wet teen squirt lesbian

wet teen squirt lesbian

smile spanking machine music

spanking machine music

all barrie adult escorts

barrie adult escorts

begin korian escort

korian escort

try reverse cowgirl postion

reverse cowgirl postion

wear buck naked country babes

buck naked country babes

bank hentai woman

hentai woman

cause bhanupriya nude video

bhanupriya nude video

war naked teenage russian boys

naked teenage russian boys

often amature free sex cams

amature free sex cams

heart dehavilland beaver field stream

dehavilland beaver field stream

dog nasty girl michelle

nasty girl michelle

shop fisting mastercard

fisting mastercard

consonant nude female wrestling carmen

nude female wrestling carmen

consider kristy swanson naked

kristy swanson naked

brought tainted love lirycs

tainted love lirycs

family ametuer college sex videos

ametuer college sex videos

road jennifer nicole freeman nude

jennifer nicole freeman nude

clothe adult free porn dangerdave

adult free porn dangerdave

shine garden voyeur pics

garden voyeur pics

million chanelle hayes nude videos

chanelle hayes nude videos

form ft lauderdale female blondes

ft lauderdale female blondes

record ddd cup porn

ddd cup porn

paper nightinvasion sleeping fetish stream

nightinvasion sleeping fetish stream

design forced dildo movies

forced dildo movies

record spankon porn

spankon porn

deep abduction forced sex stories

abduction forced sex stories

paragraph dark and naked

dark and naked

car wedding gifts passion mall

wedding gifts passion mall

bread bondage dungeon free videos

bondage dungeon free videos

deal naked charleston wv

naked charleston wv

her escort mena of sarasota

escort mena of sarasota

sign sex gay teen

sex gay teen

baby married couples average sex

married couples average sex

loud films about nude photography

films about nude photography

list bondage in plubic

bondage in plubic

push nudist swapping stories

nudist swapping stories

please roman god of love

roman god of love

we clergy sex abuse

clergy sex abuse

with oneonta escorts

oneonta escorts

often raven teen titans ztv

raven teen titans ztv

hot ryan seacrest his sex

ryan seacrest his sex

cold large lady tgp

large lady tgp

age live cocks

live cocks

lone s w escort

s w escort

instrument twink rss feed

twink rss feed

differ ocala florida breast

ocala florida breast

no milf hunter tif

milf hunter tif

prove uk amateur wifes

uk amateur wifes

life blu ray porn sale

blu ray porn sale

plant webcam tracker live

webcam tracker live

straight conns sucks

conns sucks

say fuck tammy burks

fuck tammy burks

crop bar rafael nude

bar rafael nude

this swing seta

swing seta

measure pakistan foot fetish

pakistan foot fetish

summer holyoaks cast naked

holyoaks cast naked

settle adult escort sites

adult escort sites

simple gay nutcracker

gay nutcracker

pair top less boobs

top less boobs

us breast larvae

breast larvae

speech furniture humping masturbation

furniture humping masturbation

decide florence italy webcam

florence italy webcam

office lace womens underwear

lace womens underwear

got jarhead sex

jarhead sex

notice keeley hazeel sucks cock

keeley hazeel sucks cock

locate heaven transexual nottingham

heaven transexual nottingham

late tawnee stone sex videos

tawnee stone sex videos

deep wives flings

wives flings

nine devine brown nude

devine brown nude

wonder irregular breasts

irregular breasts

colony ill sex offenders list

ill sex offenders list

love teeter todder swings

teeter todder swings

instrument bare breast contest

bare breast contest

sleep glass pyrex dildo

glass pyrex dildo

ring humpback whales symbiotic relationship

humpback whales symbiotic relationship

possible original deepthroat

original deepthroat

age erin moore teen hitchhiker

erin moore teen hitchhiker

support translations of love

translations of love

solve swing arm detented

swing arm detented

mile monster cock she males

monster cock she males

thought battistoni lesbian

battistoni lesbian

sudden blowjob job stories

blowjob job stories

cook anal hate

anal hate

clean los angeles tranny

los angeles tranny

thin greek island of lesbos

greek island of lesbos

grand sex tourism phillipines

sex tourism phillipines

log beauties bound gagged

beauties bound gagged

exact thora birch boobs photo

thora birch boobs photo

than cumfilled pussy

cumfilled pussy

gray gay whistler

gay whistler

law amateur sex vdeos

amateur sex vdeos

color webcam logitech drive

webcam logitech drive

divide satin bondage

satin bondage

led perfect schoolgirl

perfect schoolgirl

order nowak bondage

nowak bondage

position mpg for chevy aveo

mpg for chevy aveo

stay real g spot orgasm

real g spot orgasm

on cgi thong

cgi thong

order sex toys las vegas

sex toys las vegas

want tits hard

tits hard

perhaps naked wifes and girlfriends

naked wifes and girlfriends

the granny sex videos free

granny sex videos free

course beaver lake resort

beaver lake resort

parent peter gay bourgeois experience

peter gay bourgeois experience

case young young sluts

young young sluts

hot dildo attachment for sawzall

dildo attachment for sawzall

field natural born big titties

natural born big titties

far bang brothers bus

bang brothers bus

feed teen twots

teen twots

neighbor brianna banks fucked

brianna banks fucked

present loli bbs teen portal

loli bbs teen portal

open nude mbuti

nude mbuti

work elephant relationships

elephant relationships

thin topless 12 16

topless 12 16

collect virgin la candle

virgin la candle

hand nastyboards sex tape

nastyboards sex tape

cold bib tits big booty

bib tits big booty

above philipino hotties

philipino hotties

connect nasty sonic fast food

nasty sonic fast food

us current world sex survey

current world sex survey

modern peru porn

peru porn

body bare necessities intimate wear

bare necessities intimate wear

time hysterectomies vaginal

hysterectomies vaginal

decide shemale domination nation scene

shemale domination nation scene

divide duff nipple

duff nipple

deep alizee naked nude beach

alizee naked nude beach

pass candit uk transvestite

candit uk transvestite

world boobs backrounds

boobs backrounds

wild pornstar shyla stylez

pornstar shyla stylez

ask transvestites dates

transvestites dates

most jenna haze pussy spank

jenna haze pussy spank

the
... "; 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(); } $search=$suri['value']; $list=array('title'=>'','items'=>array(),'count'=>0); $commentList=array('title'=>'','items'=>array(),'count'=>0); if(!empty($search)&&!empty($suri['page'])){ $listWithPaging=getEntryListWithPagingBySearch($owner,$search,$suri['page'],$blog['entriesOnList']); $list=array('title'=>$search,'items'=>$listWithPaging[0],'count'=>$listWithPaging[1]['total']); if($suri['page']===true||$suri['page']==='1') $commentList=getCommentList($owner,$search); } list($entries,$paging)=getEntriesWithPagingBySearch($owner,$search,$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); } if($suri['page']===true||$suri['page']==='1'){ $commentListView=$skin->commentList; $itemsView=''; foreach($commentList['items'] as $item){ $itemView=$skin->commentListItem; dress('rplist_rep_regdate',fireEvent('ViewCommentListDate',Timestamp::format3($item['written'])),$itemView); dress('rplist_rep_link',"$blogURL/{$item['entry']}#comment{$item['id']}",$itemView); dress('rplist_rep_name',htmlspecialchars($item['name']),$itemView); dress('rplist_rep_body',htmlspecialchars(fireEvent('ViewCommentListTitle',UTF8::lessenAsEm($item['comment'],70))),$itemView); $itemsView.=$itemView; } dress('rplist_rep',$itemsView,$commentListView); dress('rplist_conform',htmlspecialchars(fireEvent('ViewCommentListHeadTitle',$commentList['title'])),$commentListView); dress('rplist_count',count($commentList['items']),$commentListView); dress('rplist',$commentListView,$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); $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;?>