array('string'),'REQUEST_URI'=>array('string'),'REDIRECT_URL'=>array('string','mandatory'=>false)); Validator::validateArray($_SERVER,$basicIV); include_once '../../config.php'; function checkPeriod($period){ if(is_numeric($period)){ $year=0; $month=1; $day=1; switch(strlen($period)){ case 8: $day=substr($period,6,2); case 6: $month=substr($period,4,2); case 4: $year=substr($period,0,4); return checkdate($month,$day,$year); } } return false; } function getTimeFromPeriod($period){ if(is_numeric($period)){ $year=0; $month=1; $day=1; switch(strlen($period)){ case 8: $day=substr($period,6,2); case 6: $month=substr($period,4,2); case 4: $year=substr($period,0,4); if(checkdate($month,$day,$year)) return mktime(0,0,0,$month,$day,$year); } } return false; } function addPeriod($period,$inc=1){ if(checkPeriod($period)!==false){ switch(strlen($period)){ case 4: return strftime('%Y',mktime(0,0,0,1,1,$period+$inc)); case 6: return strftime('%Y%m',mktime(0,0,0,substr($period,4)+$inc,1,substr($period,0,4))); case 8: return strftime('%Y%m%d',mktime(0,0,0,substr($period,4,2),substr($period,6,2)+$inc,substr($period,0,4))); } } return false; } function getPeriodLabel($period){ $name=strval($period); switch(strlen($name)){ case 4: return $name; case 6: return substr($name,0,4).'/'.substr($name,4); case 8: return substr($name,0,4).'/'.substr($name,4,2).'/'.substr($name,6).''; } } function escapeJSInAttribute($str){ return htmlspecialchars(str_replace(array('\\','\r','\n','\''),array('\\\\','\\r','\\n','\\\''),$str)); } function escapeJSInCData($str){ return preg_replace(array('//','/\r*\n|\r/'),array('\x3C','\x3E','\\\\$0'),addslashes($str)); } function addLinkSense($text,$attributes=''){ return ereg_replace("(^| |\t|\r|\n|\"|')(http://[^ \t\r\n\"']+)","\\1\\2",$text); } function addProtocolSense($url,$protocol='http://'){ return ereg('^[[:alnum:]]+:',$url)?$url:$protocol.$url; } function decorateSrcInObejct($html){ $count=preg_match_all('@src="(.+)"@iU',$html,$matches,PREG_PATTERN_ORDER); while($count>0){ $orig=$matches[0][$count-1]; $filename=$matches[1][$count-1]; if(strncasecmp($filename,'http://',7)!=0){ $html=str_replace($orig,substr($orig,0,4).'"http://'.$_SERVER['HTTP_HOST'].$filename.'"',$html); } $count--; } return $html; } function avoidFlashBorder($html,$tag='object'){ $pos1=$pos2=0; $str=strtolower($html); $result=''; while(($pos1=strpos($str,"<$tag",$pos2))!==false){ $result.=substr($html,$pos2,$pos1-$pos2); $pos2=$pos1; while(true){ if(($pos2=strpos($str,"",$pos2))===false) return $result.'_'; $pos2+=strlen($tag)+3; $chunk=substr($str,$pos1,$pos2-$pos1); if(substr_count($chunk,"<$tag")==substr_count($chunk,"")) break; } $result.='_'; } return $result.substr($html,$pos2); } function fetchQueryAll($query,$type=MYSQL_BOTH){ $rows=array(); if($result=mysql_query($query)){ while($row=mysql_fetch_array($result,$type)) array_push($rows,$row); mysql_free_result($result); } return $rows; } function fetchQueryRow($query){ if($result=mysql_query($query)){ if($row=mysql_fetch_array($result)){ mysql_free_result($result); return $row; } mysql_free_result($result); } return ; } function fetchQueryColumn($query){ $column=array(); if($result=mysql_query($query)){ while($row=mysql_fetch_row($result)) array_push($column,$row[0]); mysql_free_result($result); } return $column; } function fetchQueryCell($query){ if($result=mysql_query($query)){ list($cell)=mysql_fetch_row($result); mysql_free_result($result); return $cell; } return ; } function doesExistTable($tablename){ $likeEscape=array('/_/','/%/'); $likeReplace=array('\\_','\\%'); $escapename=preg_replace($likeEscape,$likeReplace,$tablename); $result=mysql_query("SHOW TABLES LIKE '$escapename' "); if($result==false) return false; if(mysql_num_rows($result)>0) return true; return false; } function getFileExtension($path){ for($i=strlen($path)-1;$i>=0;$i--){ if($path{$i}=='.') return strtolower(substr($path,$i+1)); if(($path{$i}=='/')||($path{$i}=='\\')) break; } return ''; } function getAttributesFromString($str){ $attributes=array(); preg_match_all('/([^=\s]+)\s*=\s*"([^"]*)/',$str,$matches); for($i=0;$iopen($xml,$service['encoding']); if($xmls->getValue('/skin/default/contentWidth')){ $contentWidth=$xmls->getValue('/skin/default/contentWidth'); } } return $contentWidth; } function getWaterMarkPosition(){ $waterMarkPosition=getUserSetting("waterMarkPosition","left=10|bottom=10"); list($horizontalPos,$verticalPos)=explode("|",$waterMarkPosition); $horizontalPos=explode("=",$horizontalPos); $verticalPos=explode("=",$verticalPos); if($horizontalPos[0]=="left"){ if($horizontalPos[1]>0){ $horizontalValue=$horizontalPos[1]; }else{ $horizontalValue="left"; } }elseif($horizontalPos[0]=="center"){ $horizontalValue="center"; }elseif($horizontalPos[0]=="right"){ if($horizontalPos[1]>0){ $horizontalValue=$horizontalPos[1]-$horizontalPos[1]*2; }else{ $horizontalValue="right"; } } if($verticalPos[0]=="top"){ if($verticalPos[1]>0){ $verticalValue=$verticalPos[1]; }else{ $verticalValue="top"; } }elseif($verticalPos[0]=="middle"){ $verticalValue="middle"; }elseif($verticalPos[0]=="bottom"){ if($verticalPos[1]>0){ $verticalValue=$verticalPos[1]-$verticalPos[1]*2; }else{ $verticalValue="bottom"; } } return "$horizontalValue $verticalValue"; } function getWaterMarkGamma(){ return 100; } function getThumbnailPadding(){ $thumbnailPadding=getUserSetting("thumbnailPadding",false); if($thumbnailPadding==false){ return array("top"=>0,"right"=>0,"bottom"=>0,"left"=>0); }else{ $tempArray=explode("|",$thumbnailPadding); return array("top"=>intval($tempArray[0]),"right"=>intval($tempArray[1]),"bottom"=>intval($tempArray[2]),"left"=>intval($tempArray[3])); } } function getThumbnailPaddingColor(){ return getUserSetting("thumbnailPaddingColor","FFFFFF"); } function makeThumbnail($imgString,$originSrc,$paddingArray,$waterMarkArray,$useAbsolutePath){ global $database,$owner,$blogURL,$serviceURL,$pathURL; if(is_null(getUserSetting("resamplingDefault"))){ return $imgString; }else{ $waterMarkOn=getUserSetting("waterMarkDefault","no"); } requireComponent('Tattertools.Function.Image'); if(!is_dir("../../cache/thumbnail")){ @mkdir("../../cache/thumbnail"); @chmod("../../cache/thumbnail",0777); } if(!is_dir("../../cache/thumbnail/$owner")){ @mkdir("../../cache/thumbnail/$owner"); @chmod("../../cache/thumbnail/$owner",0777); } $contentWidth=getContentWidth(); if(preg_match('/class="(tt-resampling|tt-watermark)"/i',$imgString,$temp)){ $originFileName=basename($originSrc); switch($temp[1]){ case "tt-resampling": $resampleType="resampled"; break; case "tt-watermark": if($waterMarkOn=='no') $resampleType="resampled"; else $resampleType="watermarked"; break; } if(preg_match('/width="([1-9][0-9]*)"/i',$imgString,$temp)){ $tempWidth=$temp[1]; } if(preg_match('/height="([1-9][0-9]*)"/i',$imgString,$temp)){ $tempHeight=$temp[1]; } $newTempFileName=preg_replace("/\.([[:alnum:]]+)$/i",".w{$tempWidth}-h{$tempHeight}.{$resampleType}.\\1",$originFileName); $tempSrc=ROOT."/cache/thumbnail/$owner/".$newTempFileName; $tempURL=$pathURL."/thumbnail/$owner/".$newTempFileName; if($useAbsolutePath==true){ $tempURL="$serviceURL/cache/thumbnail/$owner/$newTempFileName"; } $checkResult=Image::checkExistingThumbnail($originSrc,$tempSrc,$tempWidth,$tempHeight,$paddingArray,$waterMarkArray); switch($checkResult){ case 1: deleteFilesByRegExp("../../cache/thumbnail/$owner/","^".preg_replace("/\.([[:alnum:]]+)$/i","\.",$originFileName)); case 2: $isSuccessful=true; $AttachedImage=new Image(); $AttachedImage->imageFile=$originSrc; if($AttachedImage->resample($tempWidth,$tempHeight,$paddingArray)){ if($resampleType=="watermarked"&&$waterMarkOn=="yes"){ $waterMarkType=$AttachedImage->getImageType($waterMarkArray['path']); $AttachedImage->impressWaterMark($waterMarkArray['path'],$waterMarkArray['position'],$waterMarkArray['gamma']); } if($AttachedImage->createThumbnailIntoFile($tempSrc)){ $imgString=preg_replace('/src="([^"]+)"/i','src="'.$tempURL.'"',$imgString); $imgString=preg_replace('/width="([^"]+)"/i','width="'.$tempWidth.'"',$imgString); $imgString=preg_replace('/height="([^"]+)"/i','height="'.$tempHeight.'"',$imgString); switch($resampleType){ case "resampled": @unlink(str_replace(".resampled.",".watermarked.",$tempSrc)); break; case "watermarked": if($waterMarkOn=="yes") @unlink(str_replace(".watermarked.",".resampled.",$tempSrc)); break; } $originImageInfo=getimagesize($originSrc); $tempFileName=preg_replace("/\.([[:alnum:]]+)$/i",".w{$originImageInfo[0]}-h{$originImageInfo[1]}.{$resampleType}.\\1",$originFileName); if($resampleType=="watermarked"&&$waterMarkOn=="yes"){ if($AttachedImage->resample($originImageInfo[0],$originImageInfo[1],NULL)){ $AttachedImage->impressWaterMark($waterMarkArray['path'],$waterMarkArray['position'],$waterMarkArray['gamma']); if($AttachedImage->createThumbnailIntoFile("../../cache/thumbnail/$owner/$tempFileName")){ @unlink(ROOT."/cache/thumbnail/$owner/".str_replace(".watermarked.",".resampled.",$tempFileName)); $imgString=preg_replace('/onclick="open_img\(\'([^\']+)\'\)"/',"onclick=\"open_img('$blogURL/thumbnail/$owner/$tempFileName')\"",$imgString); } } }else{ @unlink(ROOT."/cache/thumbnail/$owner/".str_replace(".resampled.",".watermarked.",$tempFileName)); } }else{ $isSuccessful=false; } }else{ $isSuccessful=false; } if($isSuccessful==false){ $imgString=preg_replace('/width="([^"]+)"/i','width="'.$tempWidth.'"',$imgString); $imgString=preg_replace('/height="([^"]+)"/i','height="'.$tempHeight.'"',$imgString); } unset($AttachedImage); break; default: $imgString=preg_replace('/src="([^"]+)"/i','src="'.$tempURL.'"',$imgString); $imgString=preg_replace('/width="([^"]+)"/i','width="'.$tempWidth.'"',$imgString); $imgString=preg_replace('/height="([^"]+)"/i','height="'.$tempHeight.'"',$imgString); $originImageInfo=getimagesize($originSrc); $tempFileName=preg_replace("/\.([[:alnum:]]+)$/i",".w{$originImageInfo[0]}-h{$originImageInfo[1]}.{$resampleType}.\\1",$originFileName); if($resampleType=="watermarked"){ if(file_exists("../../cache/thumbnail/$owner/$tempFileName")){ $imgString=preg_replace('/onclick="open_img\(\'([^\']+)\'\)"/',"onclick=\"open_img('$blogURL/thumbnail/$owner/$tempFileName')\"",$imgString); }elseif(file_exists(ROOT."/cache/thumbnail/$owner/".str_replace(".watermarked.",".resampled.",$tempFileName))){ $imgString=preg_replace('/onclick="open_img\(\'([^\']+)\'\)"/',"onclick=\"open_img('$blogURL/thumbnail/$owner/".str_replace(".watermarked.",".resampled.",$tempFileName)."')\"",$imgString); } }elseif($resampleType=="resampled"&&file_exists("../../cache/thumbnail/$owner/$tempFileName")){ $imgString=preg_replace('/onclick="open_img\(\'([^\']+)\'\)"/',"onclick=\"open_img('$blogURL/thumbnail/$owner/$tempFileName')\"",$imgString); } break; } } return $imgString; } function deleteFilesByRegExp($path,$regexp){ $path=eregi("/$",$path,$temp)?$path:$path."/"; if(!file_exists($path)) return false; $handle=opendir($path); while($tempFile=readdir($handle)){ if(($regexp=="*"||eregi("$regexp",$tempFile,$temp))&&($tempFile!="."&&$tempFile!="..")){ @unlink($path.$tempFile); } } return true; } mysql_connect($database['server'],$database['username'],$database['password']); mysql_select_db($database['database']); # MySQL 4.0->4.1 로 변경하면서 생긴 인코딩 문제 해결 # if(mysql_query('SET CHARACTER SET utf8')){ # $database['utf8']=true; # function mysql_lessen($str,$length=255,$tail='..'){ # return UTF8::lessen($str,$length,$tail); # } # }else{ # $database['utf8']=false; # function mysql_lessen($str,$length=255,$tail='..'){ # return UTF8::lessenAsByte($str,$length,$tail); # } # } @mysql_query('SET SESSION collation_connection = \'utf8_general_ci\''); if(function_exists('mysql_real_escape_string')&&(mysql_real_escape_string('ㅋ')=='ㅋ')){ function mysql_tt_escape_string($string,$link=null){ return is_null($link)?mysql_real_escape_string($string):mysql_real_escape_string($string,$link); } }else{ function mysql_tt_escape_string($string,$link=null){ return mysql_escape_string($string); } } function getOwner($name){ global $database; return fetchQueryCell("select owner from {$database['prefix']}BlogSettings where name = '$name'"); } function getOwnerBySecondaryDomain($domain){ global $database; return DBQuery::queryCell("SELECT owner FROM {$database['prefix']}BlogSettings WHERE secondaryDomain = '$domain' OR secondaryDomain = '".(substr($domain,0,4)=='www.'?substr($domain,4):'www.'.$domain)."'"); } function getBlogSetting($owner){ global $database; if($result=mysql_query("select * from {$database['prefix']}BlogSettings where owner = $owner")){ return mysql_fetch_array($result); } return false; } function getSkinSetting($owner){ global $database,$service; if($result=mysql_query("SELECT * FROM {$database['prefix']}SkinSettings WHERE owner = $owner")){ $retval=mysql_fetch_array($result); if($retval!=FALSE){ if(!Validator::directory($retval['skin'])&&($retval['skin']!="customize/$owner")){ $retval['skin']=$service['skin']; } return $retval; } } $retval=array('owner'=>$owner,'skin'=>$service['skin'],'entriesOnRecent'=>5,'commentsOnRecent'=>5,'commentsOnGuestbook'=>5,'tagsOnTagbox'=>30,'tagboxAlign'=>3,'trackbacksOnRecent'=>5,'expandComment'=>1,'expandTrackback'=>1,'recentNoticeLength'=>25,'recentEntryLength'=>30,'recentCommentLength'=>30,'recentTrackbackLength'=>30,'linkLength'=>30,'showListOnCategory'=>1,'showListOnArchive'=>1,'tree'=>'base','colorOnTree'=>'000000','bgColorOnTree'=>'','activeColorOnTree'=>'FFFFFF','activeBgColorOnTree'=>'00ADEF','labelLengthOnTree'=>27,'showValueOnTree'=>1); return $retval; } function getDefaultURL($uid){ global $database,$service; $blog=DBQuery::queryRow("SELECT name, secondaryDomain, defaultDomain FROM {$database['prefix']}BlogSettings WHERE owner = $uid"); switch($service['type']){ case 'domain': if($blog['defaultDomain']&&$blog['secondaryDomain']) return ('http://'.$blog['secondaryDomain'].(isset($service['port'])?':'.$service['port']:'').$service['path']); else return ('http://'.$blog['name'].'.'.$service['domain'].(isset($service['port'])?':'.$service['port']:'').$service['path']); case 'path': return ('http://'.$service['domain'].(isset($service['port'])?':'.$service['port']:'').$service['path'].'/'.$blog['name']); case 'single': default: return ('http://'.$service['domain'].(isset($service['port'])?':'.$service['port']:'').$service['path']); } } function getArchives($owner){ global $database; $archives=array(); $visibility=doesHaveOwnership()?'':'AND visibility > 0'; $query=mysql_query("SELECT archivesOnPage FROM {$database['prefix']}SkinSettings WHERE owner = $owner"); $row=mysql_fetch_row($query); $archivesOnPage=$row[0]; $result=mysql_query("SELECT EXTRACT(year_month FROM FROM_UNIXTIME(published)) period, COUNT(*) count FROM {$database['prefix']}Entries WHERE owner = $owner AND draft = 0 $visibility AND category >= 0 GROUP BY period ORDER BY period DESC LIMIT $archivesOnPage"); if($result){ while($archive=mysql_fetch_array($result)) array_push($archives,$archive); } return $archives; } function getCalendar($owner,$period){ global $database; $calendar=array('days'=>array()); if(($period===true)||!checkPeriod($period)) $period=Timestamp::getYearMonth(); $calendar['period']=$period; $calendar['year']=substr($period,0,4); $calendar['month']=substr($period,4,2); $visibility=doesHaveOwnership()?'':'AND visibility > 0'; $result=mysql_query("SELECT DISTINCT DAYOFMONTH(FROM_UNIXTIME(published)) FROM {$database['prefix']}Entries WHERE owner = $owner AND draft = 0 $visibility AND category >= 0 AND YEAR(FROM_UNIXTIME(published)) = {$calendar['year']} AND MONTH(FROM_UNIXTIME(published)) = {$calendar['month']}"); if($result){ while(list($day)=mysql_fetch_array($result)) array_push($calendar['days'],$day); } $calendar['days']=array_flip($calendar['days']); return $calendar; } function getAttachmentByOnlyName($owner,$name){ global $database; $name=mysql_tt_escape_string($name); return fetchQueryRow("select * from {$database['prefix']}Attachments where owner = $owner and name = '$name'"); } function getCategoryNameById($owner,$id){ global $database; $result=fetchQueryCell("SELECT name FROM {$database['prefix']}Categories WHERE owner = $owner AND id = $id"); if(is_null($result)) return _text('전체'); else return $result; } function getCategoryBodyIdById($owner,$id){ global $database; $result=fetchQueryCell("SELECT bodyId FROM {$database['prefix']}Categories WHERE owner = $owner AND id = $id"); if(($id===0)||($result=='')||($id===null)) return 'tt-body-category'; return $result; } function getCategories($owner){ global $database; $rows=fetchQueryAll("SELECT * FROM {$database['prefix']}Categories WHERE owner = $owner AND id > 0 ORDER BY parent, priority"); $categories=array(); foreach($rows as $category){ if($category['parent']==null){ $category['children']=array(); $categories[$category['id']]=$category; }elseif(isset($categories[$category['parent']])) array_push($categories[$category['parent']]['children'],$category); } return $categories; } function getCategoriesSkin(){ global $database; global $owner,$service; $sql="select * from {$database['prefix']}SkinSettings where owner = $owner"; $setting=fetchQueryRow($sql); $skin=array('name'=>"{$setting['skin']}",'url'=>$service['path']."/image/tree/{$setting['tree']}",'labelLength'=>$setting['labelLengthOnTree'],'showValue'=>$setting['showValueOnTree'],'itemColor'=>"{$setting['colorOnTree']}",'itemBgColor'=>"{$setting['bgColorOnTree']}",'activeItemColor'=>"{$setting['activeColorOnTree']}",'activeItemBgColor'=>"{$setting['activeBgColorOnTree']}",); return $skin; } function getCommentsWithPagingForGuestbook($owner,$page,$count){ global $database; $sql="SELECT * FROM {$database['prefix']}Comments WHERE owner = $owner"; $sql.=' AND entry = 0 AND parent is null AND isFiltered = 0'; $sql.=' ORDER BY written DESC'; return fetchWithPaging($sql,$page,$count); } function getComments($entry){ global $database,$owner; $comments=array(); $authorized=doesHaveOwnership(); $aux=($entry==0?'ORDER BY written DESC':'order by id ASC'); $sql="select * from {$database['prefix']}Comments where owner = $owner and entry = $entry and parent is null and isFiltered = 0 $aux"; if($result=mysql_query($sql)){ while($comment=mysql_fetch_array($result)){ if(($comment['secret']==1)&&!$authorized){ $comment['name']=''; $comment['homepage']=''; $comment['comment']=_text('관리자만 볼 수 있는 댓글입니다.'); } array_push($comments,$comment); } } return $comments; } function getCommentComments($parent){ global $database,$owner; $comments=array(); $authorized=doesHaveOwnership(); if($result=mysql_query("select * from {$database['prefix']}Comments where owner = $owner and parent = $parent and isFiltered = 0 order by id")){ while($comment=mysql_fetch_array($result)){ if(($comment['secret']==1)&&!$authorized){ $comment['name']=''; $comment['homepage']=''; $comment['comment']=_text('관리자만 볼 수 있는 댓글입니다.'); } array_push($comments,$comment); } } return $comments; } function getRecentComments($owner){ global $skinSetting,$database; $comments=array(); $sql=doesHaveOwnership()?"SELECT * FROM {$database['prefix']}Comments WHERE owner = $owner AND entry>0 AND isFiltered = 0 ORDER BY written DESC LIMIT {$skinSetting['commentsOnRecent']}":"SELECT r.* FROM {$database['prefix']}Comments r, {$database['prefix']}Entries e WHERE r.owner = $owner AND r.owner = e.owner AND r.entry = e.id AND e.draft = 0 AND e.visibility >= 2 AND entry > 0 AND isFiltered = 0 ORDER BY r.written DESC LIMIT {$skinSetting['commentsOnRecent']}"; if($result=mysql_query($sql)){ while($comment=mysql_fetch_array($result)){ if(($comment['secret']==1)&&!doesHaveOwnership()){ $comment['name']=''; $comment['homepage']=''; $comment['comment']=_text('관리자만 볼 수 있는 댓글입니다.'); } array_push($comments,$comment); } } return $comments; } function getCommentCountPart($commentCount,&$skin){ $noneCommentMessage=$skin->noneCommentMessage; $singleCommentMessage=$skin->singleCommentMessage; if($commentCount==0&&!empty($noneCommentMessage)){ dress('article_rep_rp_cnt',0,$noneCommentMessage); $commentView=$noneCommentMessage; }elseif($commentCount==1&&!empty($singleCommentMessage)){ dress('article_rep_rp_cnt',1,$singleCommentMessage); $commentView=$singleCommentMessage; }else{ $commentPart=$skin->commentCount; dress('article_rep_rp_cnt',$commentCount,$commentPart); $commentView=$commentPart; } return array("rp_count",$commentView); } function getEntriesTotalCount($owner){ global $database; $visibility=doesHaveOwnership()?'':'AND visibility > 0'; return fetchQueryCell("SELECT COUNT(*) FROM {$database['prefix']}Entries WHERE owner = $owner AND draft = 0 $visibility AND category >= 0"); } function getEntriesWithPagingByNotice($owner,$page,$count){ global $database,$folderURL,$suri; $visibility=doesHaveOwnership()?'':'AND visibility = 2'; $sql="SELECT *, '"._text('공지')."' categoryLabel FROM {$database['prefix']}Entries WHERE owner = $owner $visibility AND category = -2 ORDER BY 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 lyrichis first shemale his first shemale begin card captors hentai card captors hentai spell hot girlfreinds wives hot girlfreinds wives few nude girls from nh nude girls from nh full milfs gone anal 1 milfs gone anal 1 told dick enhancing men s jeans dick enhancing men s jeans subject sex xxx video free sex xxx video free number wetsuit seat covers wetsuit seat covers break eva mendez strip eva mendez strip sound mistress jade and florida mistress jade and florida nine suck fest suck fest night ex girlfriend sex sites ex girlfriend sex sites gas teens for cash anika teens for cash anika give hugh fucking tites hugh fucking tites last internet sex predators information internet sex predators information room airport shuttle love field airport shuttle love field other naked women and toys naked women and toys so andi pink naked movie andi pink naked movie could zeal without love zeal without love bottom gay embrace wallpaper gay embrace wallpaper half funny vibrator videos funny vibrator videos right janesville teen car accident janesville teen car accident rail yong gay teen boys yong gay teen boys children nice titties tight pussy nice titties tight pussy decimal lauren vitale pornstar lauren vitale pornstar side live webcams japan live webcams japan began mai hime nude characters mai hime nude characters bat male gay black escorts male gay black escorts certain tweens moods tweens moods we anne angel nude anne angel nude fraction tongue in cheek porn tongue in cheek porn gold unhealthy healthy relationships unhealthy healthy relationships stood denver winnie denver winnie material gay sex in anchorage gay sex in anchorage twenty daugthers fucks mom s boyfriend daugthers fucks mom s boyfriend radio lifespan sperm air lifespan sperm air as cock andballs cock andballs step office sex tpg office sex tpg equal norwegian lesbians free pics norwegian lesbians free pics street couples dominate subserviant couples dominate subserviant count excuses women use sex excuses women use sex weight rock dating argon rock dating argon write white tail park nudists white tail park nudists also bdsm needles bdsm needles side screw milf screw milf nose unserage sex unserage sex party teen s blue crush teen s blue crush your sex toys humm dinger sex toys humm dinger station nicole grave dildo video nicole grave dildo video begin size 38b tits size 38b tits spell naked college male naked college male minute kat von d vagina kat von d vagina above jennifer connolly lesbian video jennifer connolly lesbian video some 1960 s vintage porn 1960 s vintage porn final carla s thong carla s thong write all porn starz all porn starz string bbw porrn bbw porrn corner vegetable dildo sex vegetable dildo sex your european sex tour european sex tour huge ree sex porn ree sex porn engine bang bang the album bang bang the album language womans breast size womans breast size horse black muscle dick video black muscle dick video company story urdu sex story urdu sex among school teens getting fucked school teens getting fucked heard leyla milani naked leyla milani naked took love asley simpson love asley simpson my porn strip poker plus porn strip poker plus shell black hardcore dick sucking black hardcore dick sucking pull porn and animal porn and animal syllable matures and girls matures and girls piece erotic handjobs erotic handjobs long woman sneakers fetish woman sneakers fetish our erotic story spank erotic story spank string round and brown freeheaven round and brown freeheaven lake ann arbor escorts ann arbor escorts cat lesbian sex milf lesbian sex milf system teenage relationship abuse teenage relationship abuse fear bbw tillsonburg bbw tillsonburg shoulder teen party ordinances teen party ordinances poor cartoon pron site cartoon pron site method nasty moms tpg nasty moms tpg method annie cruz ejaculation annie cruz ejaculation behind xr50 swing arm bearings xr50 swing arm bearings or disney gay toon disney gay toon eat furry red pussy furry red pussy fun toe tgp toe tgp lake bald indian pussy bald indian pussy street adult escort sites adult escort sites quick hot teen sex vids hot teen sex vids charge rosewater facial toner rosewater facial toner even yakuza wives burning desire yakuza wives burning desire until vermont castings knob vermont castings knob her corposants moby dick corposants moby dick village black hung cock black hung cock try vintage naughty figurine vintage naughty figurine under ember porn star ember porn star train nipples small nipples small whole vanessa hudgens naked unedited vanessa hudgens naked unedited deal brawny studs brawny studs metal blowjob edmonton blowjob edmonton difficult hot pregnant milfs hot pregnant milfs basic umblical suck umblical suck baby dutch twinks dutch twinks bat gay nitelife long island gay nitelife long island certain sex styles and positions sex styles and positions clean download youtube mpg download youtube mpg major nude wwe raw divas nude wwe raw divas boat sex offenders registry tewas sex offenders registry tewas hat restricting gay adoptiong restricting gay adoptiong long natural large breasts free natural large breasts free perhaps cuming inside pussy cuming inside pussy lay gay pittsfield ma gay pittsfield ma lead multiple breast galleries multiple breast galleries spot ass blaster anal ass blaster anal busy transgender fiction transgender fiction grand naked male actor naked male actor wire virgin broadband wireless modem virgin broadband wireless modem mind porn and orange hair porn and orange hair thing jamaican porn movies jamaican porn movies draw real amateur wives real amateur wives rich tampa escorts fetish tampa escorts fetish effect uniqema ici tween uniqema ici tween dead paypal edible oral sex paypal edible oral sex page nude boys nz nude boys nz nature shemales fabyana shemales fabyana pitch paint on nude paint on nude fish thong swimsuit models thong swimsuit models neck nude teens videos nude teens videos follow motorcycles boobs motorcycles boobs child medical gyno fucked medical gyno fucked set nude sweedish nude sweedish doctor gay days speedo gay days speedo sit nude beach topic nude beach topic against xxx porn newscaster xxx porn newscaster period bulgaria sex escorts bulgaria sex escorts noise girl fucks corn girl fucks corn valley andrea roth sex pics andrea roth sex pics agree gay rate my dick gay rate my dick put twinks mature pics twinks mature pics bright missy suicide nude herself missy suicide nude herself certain kiss weave poles kiss weave poles stone nude niece nude niece yellow humorous bizarre news stories humorous bizarre news stories famous mens padded underwear mens padded underwear slip olsen twin nude fakes olsen twin nude fakes continue new hillbilly housewife new hillbilly housewife listen cock sucking good cock sucking good kill kidnapped free porn kidnapped free porn process age rangeof breast cancer age rangeof breast cancer person lncest porn lncest porn save penis pumps for impotence penis pumps for impotence women latin chicks black latin chicks black electric classic spanking movies classic spanking movies gun english actresses showing pussy english actresses showing pussy fraction lesbianback mountain sex scene lesbianback mountain sex scene practice fuko love big tits fuko love big tits boy vanessa transgender vanessa transgender stream porn bulletin board porn bulletin board allow horny litle girls horny litle girls should naked angelina jolie nude naked angelina jolie nude degree cell phone wallpapers porn cell phone wallpapers porn imagine listento love me tender listento love me tender father movies nude patch movies nude patch dress texas gay black men texas gay black men search lesbian porn free downloads lesbian porn free downloads low movie hot nylon movie hot nylon smell lesbian student videos lesbian student videos seat vagina or vulva vagina or vulva gather classic nudity classic nudity scale masturbation with condom masturbation with condom which kensie tits kensie tits fat choclate barbies escorts choclate barbies escorts window find bra sagging breasts find bra sagging breasts fast bangbros blue bra bangbros blue bra settle hentai naruto englich hentai naruto englich occur cowgirl ranch dressing cowgirl ranch dressing little the perfect royal mistress the perfect royal mistress tall sex with cerebral palsy sex with cerebral palsy study advice giving oral pleasure advice giving oral pleasure broke bang salad receipe bang salad receipe term meaningful beauty reviews meaningful beauty reviews over christchurch breast implants christchurch breast implants rub divas strip club wv divas strip club wv piece bbw cuckhold bbw cuckhold count white tiger pissed pic white tiger pissed pic broke trinity xxx trinity xxx cool boobs from hell boobs from hell speed chlmydia sex chlmydia sex put teen center okinawa teen center okinawa noun american beauty lyrics tab american beauty lyrics tab book busty lacy busty lacy hard gay bear sex gay bear sex very bowes and cocks bancroft bowes and cocks bancroft station younger teen porn galleries younger teen porn galleries speech erotic tanning renton erotic tanning renton bed crazy titty crazy titty star senior week nude senior week nude cloud bbw sex movie bbw sex movie fraction millky boobs millky boobs slave interfaith counseling houston texas interfaith counseling houston texas lake girls close up peeing girls close up peeing shine male exhibitionist fetish male exhibitionist fetish south teenies having sex teenies having sex bit nylon octa mathias nylon octa mathias lead jennifer lopez upskirt jennifer lopez upskirt gather blonde firehouse blonde firehouse tell canine facial paralysis canine facial paralysis move gay beeches gay beeches strange screw a porn star screw a porn star paint effects of exessive masturbation effects of exessive masturbation stood non nude beach non nude beach field big nipples twisted pics big nipples twisted pics loud condom rainbow colors condom rainbow colors shall pennsylvania breast enlargement doctor pennsylvania breast enlargement doctor tail cruel intentions naked cruel intentions naked quite bootcamp hotties bootcamp hotties day hairy asian nude hairy asian nude wish gay european sex gay european sex then jet pilots wives jet pilots wives together boda jerk boda jerk clothe husky gay pics husky gay pics fun amatuer naked old women amatuer naked old women wife switch fetish switch fetish melody anal crack anal crack check hardcore pics download warez hardcore pics download warez are kinky plastic kinky plastic cause illustrated sex posstions illustrated sex posstions sat hot animal sex videos hot animal sex videos branch fuck brad armstrong fuck brad armstrong far schoolgirl msn porn schoolgirl msn porn quick gay canada porn gay canada porn country gang bang questionnaire gang bang questionnaire shall worms in vagina worms in vagina party changing nipple hoops changing nipple hoops still art women nude sex art women nude sex spoke kristin cavallari thong kristin cavallari thong cloud tallahasse christian singles tallahasse christian singles rest ugly gay guys ugly gay guys sign poems of firey passion poems of firey passion tie nn teen lesbians nn teen lesbians us lesbian sex wmv lesbian sex wmv wife amature downloads amature downloads catch survivor sex survivor sex led adult toys vibrators adult toys vibrators move mixed wrestling boobs mixed wrestling boobs did las vegas strip cam las vegas strip cam continue high school blowjob high school blowjob modern grandmothers who fuck grandmothers who fuck select cock and ball pictures cock and ball pictures map feminized teen boys feminized teen boys open indian porn jayde indian porn jayde division nude girls beauti nude girls beauti noon pediatric gynecologist story fuck pediatric gynecologist story fuck page phat amature phat amature winter topless golf course topless golf course begin dex harden gay dex harden gay could girl anal creampies girl anal creampies describe online breast milk storage online breast milk storage phrase gay pride associations gay pride associations who shemale board shemale board probable sex orgasm healing sex orgasm healing every women being fist fucked women being fist fucked wrong mission cabnet knobs mission cabnet knobs they estella warran naked estella warran naked soldier blondes dildoing blondes dildoing figure karla sucks karla sucks her lucky virgins lucky virgins oh couples halloween cosutmes couples halloween cosutmes laugh preston idaho sluts preston idaho sluts done asain nude drummers asain nude drummers interest click pull bang soundtrack click pull bang soundtrack care ohio valley singles ohio valley singles sleep dick and rick hoyt dick and rick hoyt electric independent escorts reno independent escorts reno who youngest girls sucking cocks youngest girls sucking cocks cost blood rayne hentai blood rayne hentai base fast growing breast lump fast growing breast lump color gay anal barebacking gay anal barebacking noun sex a eleven sex a eleven old brittish nudepeep porn sites brittish nudepeep porn sites part erotic stories emily erotic stories emily half cum drinking gagging cum drinking gagging man facial cleanser sample facial cleanser sample chart teen tigth pussy teen tigth pussy hope xrated amputee xrated amputee people sex chnange surgory sex chnange surgory picture huns thumbzilla huns thumbzilla name femdom ideas forced bi femdom ideas forced bi next sista love atlanta sista love atlanta cook waterproof nipple covers waterproof nipple covers planet henderson singles clubs henderson singles clubs too hardcore sex girls begging hardcore sex girls begging our loversguide loversguide wind pron star movie zone pron star movie zone one lsg models nudes lsg models nudes when gay rights in canada gay rights in canada gone vw touareg deisel mpg vw touareg deisel mpg down eve baby got boobs eve baby got boobs colony petite model nude petite model nude govern spanking and shame spanking and shame nothing gay clubs sydney gay clubs sydney seem hardcore production la hardcore production la dress cum dripping anal cum dripping anal rise porn south carolina porn south carolina sugar escorts shrewsbury uk escorts shrewsbury uk sign wholes teens wholes teens history brazilian girls for sex brazilian girls for sex grow 96 1 kiss fm pa 96 1 kiss fm pa box redrum the innocent redrum the innocent condition labrador studs uk wales labrador studs uk wales wonder hairy studs tattoos hairy studs tattoos anger coupons for chick filet coupons for chick filet break horney girls fingering horney girls fingering decimal hardcore sex girls begging hardcore sex girls begging was sexy struggling bondage prisoners sexy struggling bondage prisoners ago hot little girls pussy hot little girls pussy went tgp gallery nakedelves tgp gallery nakedelves way vietnamese english pornstar vietnamese english pornstar mother women s singles tennis women s singles tennis swim tanya cooley porn tanya cooley porn valley hacking porn hacking porn control semen quality and masturbation semen quality and masturbation watch track sex offenders track sex offenders