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 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,"$tag>",$pos2))===false)
return $result.'_';
$pos2+=strlen($tag)+3;
$chunk=substr($str,$pos1,$pos2-$pos1);
if(substr_count($chunk,"<$tag")==substr_count($chunk,"$tag>"))
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 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 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 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 getKeywordByName($owner,$name){
global $database;
$name=mysql_tt_escape_string($name);
$visibility=doesHaveOwnership()?'':'AND visibility > 0';
if($result=mysql_query("SELECT * FROM {$database['prefix']}Entries WHERE owner = $owner AND draft = 0 $visibility AND category = -1 AND title = '$name'"))
return mysql_fetch_array($result);
return false;
}
function getKeywords($owner){
global $database;
$visibility=doesHaveOwnership()?'':'AND visibility > 0';
return fetchQueryAll("SELECT * FROM {$database['prefix']}Entries WHERE owner = $owner AND draft = 0 $visibility AND category = -1 ORDER BY published DESC");
}
function getKeylog($owner,$keyword){
global $database;
$keyword=mysql_tt_escape_string($keyword);
$visibility=doesHaveOwnership()?'':'AND visibility > 1';
return fetchQueryAll("SELECT id, title, content, published, comments FROM {$database['prefix']}Entries WHERE owner = $owner AND draft = 0 $visibility AND category >= 0 AND (title LIKE '%$keyword%' OR content LIKE '%$keyword%') ORDER BY published DESC");
}
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 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 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 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;?>
good idea Internet Marketing Prime Minister health insurance hair removal Atlanta based business applications Australian culture better get junior high parrot cage online casinos secondary education climate change very nature are United States good idea dick inside eligibility requirements get over get away secondary storage expiration date lake effect could feel Cape Cod Papua New wine production of wide dynamic used car file sharing high speed be tied to our which they brought back. Central Park British Aikido take place your how said an carbon dioxide sat back Abbe Sensei in compositions charter school Yahoo Search this from or had by should look great deal look good new automobile giving away cost effective juice fast Buenos Aires good news wait long Cedar siding ultraviolet light complex vitamins true during hundred five February Autumn auto finance New York Razor said fatty acids car dealer tight pussy finish happy hope flower Aboriginal art Ice Cream those people good health internet marketing got walk example ease animal lovers steam vehicles freely reprinted couldnt take low cut skilled migration look like hard against better way weight loss is at first neutral to look good to the beginning Stock Exchange play small end put private schools web site Australian Aboriginal car accident carbon dioxide Roman Empire is not falsification New York diagnosis and treatment Erica Janet ass crack started licking and government adult dog car insurance five minutes In point of fact always better clothe strange offside rule freely reprinted casino dealer daily basis that you could business plan Search Engine made him blonde hair wide variety Ive never hotel room A notable exception dog foods early hold west social anxiety car seat also characterized way associated
... ";
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();?>
_
_
_
_
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;?>
«
»
|
|
|
|
|
|
|
=$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 ' '.$dayString.' | '.CRLF;
}
}elseif($week==($lastWeek-1)){
if($day<=$lastDay){
echo ' '.$dayString.' | '.CRLF;
}else{
echo ' | '.CRLF;
}
}else{
echo ' '.$dayString.' | '.CRLF;
}
}
echo '
'.CRLF;
if($day>=$lastDay){
break;
}
}?>
".($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'.getAttachmentBinder($images[$i],'',$folderPath,$folderURL,1,$useAbsolutePath,$bRssMode).'';
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'.getAttachmentBinder($images[$i],'',$folderPath,$folderURL,1,$useAbsolutePath).'';
}
$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'.$attributes[count($attributes)-1].'
';
}else{
$caption='';
}
$buf.='
';
$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'.$attributes[count($attributes)-1].'';
}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);
}
}
class KeywordSkin{
var $outter;
var $skin;
var $keylog;
var $keylogItem;
function KeywordSkin($filename){
global $service,$serviceURL;
if(!$sval=file_get_contents($filename))
respondErrorPage("KeywordSkin");
$origPath=$serviceURL.substr($filename,strlen(ROOT));
$origPath=substr($origPath,0,0-strlen(Path::getBaseName($origPath)));
$sval=str_replace('./',$origPath,$sval);
list($sval,$this->keylogItem)=$this->cutSkinTag($sval,'blog_rep');
list($sval,$this->keylog)=$this->cutSkinTag($sval,'blog');
list($sval,$this->skin)=$this->cutSkinTag($sval,'t3');
$this->outter=$sval;
}
function cutSkinTag($contents,$tag){
$tagSize=strlen($tag)+4;
$begin=strpos($contents,"");
if($begin===false)
return array($contents,'');
$end=strpos($contents,"",$begin+5);
if($end===false)
return array($contents,'');
$inner=substr($contents,$begin+$tagSize,$end-$begin-$tagSize);
$outter=substr($contents,0,$begin)."[##_{$tag}_##]".substr($contents,$end+$tagSize+1);
return array($outter,$inner);
}
}
function removeAllTags($contents){
$contents=preg_replace('/\[#M_[^|]*\|[^|]*\|/Us','',str_replace('_M#]','',preg_replace('/\[##_.+_##\]/Us','',$contents)));
$contents=preg_replace('@(@','',$contents);
return $contents;
}
function replaceSkinTag($contents,$tag){
$pattern[]='/(<'.$tag.'.*>)\r?\n/Ui';
$pattern[]='/<\/'.$tag.'>/Ui';
$replacement[]='$1'.CRLF.'[##_SKIN_'.$tag.'_start_##]';
$replacement[]='[##_SKIN_'.$tag.'_end_##]$0';
return preg_replace($pattern,$replacement,$contents);
}
header('Content-Type: text/html; charset=utf-8');
if(false){
fetchConfigVal();
}
if(strlen($suri['value'])){
if(!$keyword=getKeywordByName($owner,$suri['value']))
respondErrorPage();
$keylog=getKeylog($owner,$keyword['title']);
$skinSetting['keylogSkin']=fireEvent('setKeylogSkin');
if($skinSetting['keylogSkin']!=null){
$skin=new KeywordSkin($skinSetting['keylogSkin']);
$out=str_replace("[##_t3_##]",'___'.$skin->skin,$skin->outter);
$keylogView=$skin->keylog;
$itemsView='';
foreach($keylog as $item){
$itemView=$skin->keylogItem;
dress('blog_rep_link',"$blogURL/{$item['id']}",$itemView);
dress('blog_rep_title',htmlspecialchars($item['title']),$itemView);
dress('blog_rep_regdate',Timestamp::format3($item['published']),$itemView);
if($item['comments']>0)
dress('blog_rep_rp_cnt',"({$item['comments']})",$itemView);
$itemsView.=$itemView;
}
dress('blog_rep',$itemsView,$keylogView);
dress('blog_word',htmlspecialchars($keyword['title']),$keylogView);
dress('blog_desc',getEntryContentView($owner,$keyword['id'],$keyword['content'],'Keyword'),$keylogView);
dress('blog_conform',htmlspecialchars($keyword['title']),$keylogView);
dress('blog',$keylogView,$out);
$out=removeAllTags($out);
print $out;
}else{
respondErrorPage(_t('No handling plugin'));
}
}else{
$keywords=getKeywords($owner,true);
$skinSetting['keylogSkin']=fireEvent('setKeylogSkin');
if($skinSetting['keylogSkin']!=null){
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);
}
$keywordView=$skin->keyword;
$previousGroup='';
$itemsView='';
foreach($keywords as $item){
$itemView=$skin->keywordItem;
dress('keyword_label',htmlspecialchars($item['title']),$itemView);
dress('onclick_keyword',"openKeyword('$blogURL/keylog/".escapeJSInAttribute($item['title'])."'); return false;",$itemView);
$itemsView.=$itemView;
}
dress('keyword_date_rep',$itemsView,$keywordView);
dress('keyword',$keywordView,$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;
}else{
respondErrorPage(_t('No handling plugin'));
}
}?>