00001 <?php
00002
00003
00004 lt_include( PLOG_CLASS_PATH."class/config/config.class.php" );
00005 lt_include( PLOG_CLASS_PATH."class/misc/glob.class.php" );
00006 lt_include( PLOG_CLASS_PATH."class/file/file.class.php" );
00007 lt_include( PLOG_CLASS_PATH."class/template/templatesets/templatesets.class.php" );
00008
00009 define( "BLOG_BASE_TEMPLATE_FOLDER", "blog_" );
00010
00023 class TemplateSetStorage
00024 {
00025
00029 function TemplateSetStorage()
00030 {
00031
00032 }
00033
00041 function getTemplateFolder( $templateName, $blogId = 0 )
00042 {
00043 $config =& Config::getConfig();
00044 $baseFolder = $config->getValue( "template_folder" );
00045 if( $baseFolder[strlen($baseFolder)-1] != "/" )
00046 $baseFolder = $baseFolder."/";
00047
00048 if( $blogId == 0 ) {
00049 $templateFolder = $baseFolder.$templateName."/";
00050 }
00051 else {
00052 $templateFolder = $baseFolder.BLOG_BASE_TEMPLATE_FOLDER."$blogId/".$templateName."/";
00053 }
00054
00055 return $templateFolder;
00056 }
00057
00064 function getBaseTemplateFolder()
00065 {
00066 $config =& Config::getConfig();
00067
00068 $basePath = $config->getValue( "template_folder" );
00069
00070 return $basePath;
00071 }
00072
00080 function getBlogBaseTemplateFolder( $blogId )
00081 {
00082 $config =& Config::getConfig();
00083 $baseFolder = $config->getValue( "template_folder" );
00084 if( $baseFolder[strlen($baseFolder)-1] != "/" )
00085 $baseFolder = $baseFolder."/";
00086
00087 $templateFolder = $baseFolder.BLOG_BASE_TEMPLATE_FOLDER."$blogId/";
00088
00089 return $templateFolder;
00090 }
00091
00097 function _removeFolder( $folderName )
00098 {
00099
00100
00101 if( File::exists( $folderName ))
00102 $result = File::deleteDir( $folderName, true );
00103 else
00104 $result = true;
00105
00106 return( $result );
00107 }
00108
00112 function _removeTemplateFromArray( $array, $key )
00113 {
00114 $resultArray = Array();
00115 foreach( $array as $elem ) {
00116 if( $elem != $key )
00117 array_push( $resultArray, $elem );
00118 }
00119
00120 return $resultArray;
00121 }
00122
00128 function removeGlobalTemplate( $templateName )
00129 {
00130 $config =& Config::getConfig();
00131
00132
00133 $availableTemplates = $config->getValue( "templates" );
00134 if( !in_array( $templateName, $availableTemplates ))
00135 return false;
00136
00137
00138 $templateFolder = $this->getTemplateFolder( $templateName );
00139 $result = $this->_removeFolder( $templateFolder );
00140 if( !$result )
00141 return false;
00142
00143
00144 $newTemplateList = $this->_removeTemplateFromArray( $availableTemplates, $templateName );
00145
00146
00147 $config->saveValue( "templates", $newTemplateList );
00148
00149 return true;
00150 }
00151
00159 function removeBlogTemplate( $templateName, $blogId )
00160 {
00161 $config =& Config::getConfig();
00162
00163
00164 $blogs = new Blogs();
00165 $blog = $blogs->getBlogInfo( $blogId );
00166 $blogSettings = $blog->getSettings();
00167
00168
00169 if( empty($blogSettings) )
00170 return false;
00171
00172
00173 $blogTemplates = $blogSettings->getValue( "blog_templates" );
00174 if( !in_array($templateName, $blogTemplates ))
00175 return false;
00176
00177
00178 $templateFolder = $this->getTemplateFolder( $templateName, $blogId );
00179 $result = $this->_removeFolder( $templateFolder );
00180 if( !$result )
00181 return false;
00182
00183
00184 $newTemplateList = $this->_removeTemplateFromArray( $blogTemplates, $templateName );
00185
00186
00187 $blogSettings->setValue( "blog_templates", $newTemplateList );
00188 $blog->setSettings( $blogSettings );
00189 $blogs->updateBlog( $blog );
00190
00191 return true;
00192 }
00193
00206 function removeTemplate( $templateName, $blogId = 0 )
00207 {
00208 if( $blogId == 0 ) {
00209 $result = $this->removeGlobalTemplate( $templateName );
00210 }
00211 else {
00212 $result = $this->removeBlogTemplate( $templateName, $blogId );
00213 }
00214
00215 return $result;
00216 }
00217
00228 function addTemplate( $templateName, $blogId = 0 )
00229 {
00230 if( $blogId == 0 ) {
00231
00232 $result = $this->addGlobalTemplate( $templateName );
00233 }
00234 else {
00235
00236 $result = $this->addLocalTemplate( $templateName, $blogId );
00237 }
00238
00239 return $result;
00240 }
00241
00248 function addGlobalTemplate( $templateName )
00249 {
00250 $config =& Config::getConfig();
00251
00252
00253 $templateSets = new TemplateSets();
00254 if( $templateSets->isTemplate( $templateName ))
00255 return true;
00256
00257
00258
00259 $templates = $templateSets->getGlobalTemplates();
00260 if( !is_array($templates)) {
00261 print("recreating the array!");
00262 $templates = Array();
00263 }
00264
00265
00266 array_push( $templates, $templateName );
00267
00268
00269 $config->saveValue( "templates", $templates );
00270
00271 return true;
00272 }
00273
00282 function addLocalTemplate( $templateName, $blogId )
00283 {
00284 $blogs = new Blogs();
00285 $blog = $blogs->getBlogInfo( $blogId );
00286 $blogSettings = $blog->getSettings();
00287 if( empty($blogSettings) )
00288 return false;
00289
00290
00291 $blogTemplates = $blogSettings->getValue( "blog_templates" );
00292
00293
00294 if( $blogTemplates == "" || $blogTemplates == null )
00295 $blogTemplates = Array();
00296
00297 if( in_array( $templateName, $blogTemplates ))
00298 return true;
00299
00300 array_push( $blogTemplates, $templateName );
00301 $blogSettings->setValue( "blog_templates", $blogTemplates );
00302 $blog->setSettings( $blogSettings );
00303 $blogs->updateBlog( $blog );
00304
00305 return true;
00306 }
00307
00315 function createBlogTemplateFolder( $blogId )
00316 {
00317
00318 $templateFolder = $this->getBaseTemplateFolder();
00319 $blogTemplateFolder = "$templateFolder/blog_".$blogId;
00320 if( !File::isDir( $blogTemplateFolder )) {
00321 File::createDir( $blogTemplateFolder, 0755 );
00322 }
00323
00324 return $blogTemplateFolder;
00325 }
00326
00335 function templateExists( $fileName, $templateSet )
00336 {
00337 $filePath = $this->getBaseTemplateFolder()."/".$templateSet."/".$fileName.".template";
00338
00339
00340 if( !File::exists( $filePath, $templateSet ))
00341 return false;
00342
00343
00344 if( !File::isReadable( $filePath, $templateSet ))
00345 return false;
00346
00347 return true;
00348 }
00349
00355 function getAdminTemplateFolder()
00356 {
00357 $templatePath = TemplateSetStorage::getBaseTemplateFolder()."/admin";
00358
00359 return $templatePath;
00360 }
00361
00369 function getPluginTemplateFolder( $pluginId )
00370 {
00371 $templateFolder = "./plugins/".$pluginId."/templates/";
00372
00373 return $templateFolder;
00374 }
00375
00383 function isScreenshotAvailable( $templateName, $blogId = 0 )
00384 {
00385
00386 $templatePath = $this->getTemplateFolder( $templateName, $blogId );
00387
00388 $screenshotPath = $templatePath."/screenshot.jpg";
00389 return( File::isReadable( $screenshotPath ));
00390 }
00391
00399 function getScreenshotUrl( $templateName, $blogId = 0)
00400 {
00401
00402 if( !$this->isScreenshotAvailable( $templateName, $blogId ))
00403 return $this->getNoScreenshotUrl();
00404
00405 $config =& Config::getConfig();
00406 $templateFolder = $this->getBaseTemplateFolder();
00407 $baseUrl = $config->getValue( "base_url" );
00408 if( $blogId == 0 )
00409 $screenshotPath = "$baseUrl/$templateFolder/$templateName/screenshot.jpg";
00410 else
00411 $screenshotPath = "$baseUrl/$templateFolder/blog_{$blogId}/$templateName/screenshot.jpg";
00412
00413 return $screenshotPath;
00414 }
00415
00422 function getNoScreenshotUrl()
00423 {
00424 $config =& Config::getConfig();
00425 $baseUrl = $config->getValue( "base_url" );
00426 $url = $baseUrl."/imgs/no-template-screenshot.jpg";
00427
00428 return $url;
00429 }
00430
00437 function getMiscTemplateFolder()
00438 {
00439 $templatePath = TemplateSetStorage::getBaseTemplateFolder()."/misc";
00440 return $templatePath;
00441 }
00442 }
00443 ?>