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;?>
... ";
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'));
}
}?>