',$result); return $str; } $access = check_permission($userid, 'Modify Site Preferences'); if (!$access) { die('Permission Denied'); // <- Pretty cruel huh? maybe redirection and message, or something. -Stikki- return; } $gCms = cmsms(); $db = $gCms->GetDb(); $config = $gCms->GetConfig(); $pretty_urls = $config['url_rewriting'] == 'none' ? 0 : 1; $error = ""; $message = ""; $mail_is_set = cms_siteprefs::get('mail_is_set',0); $testresults = lang('untested'); $thumbnail_width = 96; $thumbnail_height = 96; $sitedownexcludes = ''; $sitedownexcludeadmins = ''; $disallowed_contenttypes = ''; $basic_attributes = null; $xmlmodulerepository = ""; $checkversion = 1; $defaultdateformat = ""; $enablesitedownmessage = "0"; $lock_timeout = 60; $use_wysiwyg = 1; $sitedownmessage = "

Site is currently down. Check back later.

"; $sitedownmessagetemplate = "-1"; $metadata = ''; $sitename = 'CMSMS Website'; $frontendlang = ''; $frontendwysiwyg = ''; $global_umask = '022'; $logintheme = "default"; $backendwysiwyg = ''; $auto_clear_cache_age = 0; $allow_browser_cache = 0; $browser_cache_expiry = 60; $content_autocreate_urls = 0; $content_autocreate_flaturls = 0; $content_mandatory_urls = 0; $contentimage_useimagepath = 0; $content_imagefield_path = ''; $content_thumbnailfield_path = ''; $content_cssnameisblockname = 1; $contentimage_path = ''; $adminlog_lifetime = (3600*24*31); $search_module = 'Search'; $use_smartycache = 0; $use_smartycompilecheck = 1; $mailprefs = array('mailer'=>'mail', 'host'=>'localhost', 'port'=>25, 'from'=>'root@localhost.localdomain', 'fromuser'=>'CMS Administrator', 'sendmail'=>'/usr/sbin/sendmail', 'smtpauth'=>0, 'username'=>'', 'password'=>'', 'secure'=>'', 'timeout'=>60, 'charset'=>'utf-8'); if (isset($_POST["cancel"])) { redirect("index.php".$urlext); return; } /** * Get preferences */ $allow_browser_cache = cms_siteprefs::get('allow_browser_cache',$allow_browser_cache); $browser_cache_expiry = cms_siteprefs::get('browser_cache_expiry',$browser_cache_expiry); $auto_clear_cache_age = cms_siteprefs::get('auto_clear_cache_age',$auto_clear_cache_age); $thumbnail_width = cms_siteprefs::get('thumbnail_width',$thumbnail_width); $thumbnail_height = cms_siteprefs::get('thumbnail_height',$thumbnail_height); $global_umask = cms_siteprefs::get('global_umask',$global_umask); $frontendlang = cms_siteprefs::get('frontendlang',$frontendlang); $frontendwysiwyg = cms_siteprefs::get('frontendwysiwyg',$frontendwysiwyg); $enablesitedownmessage = cms_siteprefs::get('enablesitedownmessage',$enablesitedownmessage); $use_wysiwyg = cms_siteprefs::get('sitedown_use_wysiwyg',$use_wysiwyg); $sitedownmessage = cms_siteprefs::get('sitedownmessage',$sitedownmessage); $xmlmodulerepository = cms_siteprefs::get('xmlmodulerepository',$xmlmodulerepository); $checkversion = cms_siteprefs::get('checkversion',$checkversion); $defaultdateformat = cms_siteprefs::get('defaultdateformat',$defaultdateformat); $logintheme = cms_siteprefs::get('logintheme',$logintheme); $backendwysiwyg = cms_siteprefs::get('backendwysiwyg',$backendwysiwyg); $metadata = cms_siteprefs::get('metadata',$metadata); $sitename = cms_html_entity_decode(cms_siteprefs::get('sitename',$sitename)); $lock_timeout = (int)cms_siteprefs::get('lock_timeout',$lock_timeout); $sitedownexcludes = cms_siteprefs::get('sitedownexcludes',$sitedownexcludes); $sitedownexcludeadmins = cms_siteprefs::get('sitedownexcludeadmins',$sitedownexcludeadmins); $disallowed_contenttypes = cms_siteprefs::get('disallowed_contenttypes',$disallowed_contenttypes); $basic_attributes = cms_siteprefs::get('basic_attributes',$basic_attributes); $content_autocreate_urls = cms_siteprefs::get('content_autocreate_urls',$content_autocreate_urls); $content_autocreate_flaturls = cms_siteprefs::get('content_autocreate_flaturls',$content_autocreate_flaturls); $content_mandatory_urls = cms_siteprefs::get('content_mandatory_urls',$content_mandatory_urls); $content_imagefield_path = cms_siteprefs::get('content_imagefield_path',$content_imagefield_path); $content_thumbnailfield_path = cms_siteprefs::get('content_thumbnailfield_path',$content_thumbnailfield_path); $content_cssnameisblockname = cms_siteprefs::get('content_cssnameisblockname',$content_cssnameisblockname); $contentimage_path = cms_siteprefs::get('contentimage_path',$contentimage_path); $adminlog_lifetime = cms_siteprefs::get('adminlog_lifetime',$adminlog_lifetime); $search_module = cms_siteprefs::get('searchmodule',$search_module); $use_smartycache = cms_siteprefs::get('use_smartycache',$use_smartycache); $use_smartycompilecheck = cms_siteprefs::get('use_smartycompilecheck',$use_smartycompilecheck); $tmp = cms_siteprefs::get('mailprefs'); if( $tmp ) $mailprefs = unserialize($tmp); /** * Check tab */ $tab=''; if( isset($_POST['active_tab']) ) $tab = trim(cleanValue($_POST['active_tab'])); /** * Submit */ if( isset($_POST['testmail']) ) { if( !$mail_is_set ) { $error .= '
  • '.lang('error_mailnotset_notest').'
  • '; } else if( $_POST['mailtest_testaddress'] == '' ) { $error .= '
  • '.lang('error_mailtest_noaddress').'
  • '; } else { $addr = cleanValue($_POST['mailtest_testaddress']); $addr = cms_html_entity_decode($addr); if( !is_email($addr) ) { $error .= '
  • '.lang('error_mailtest_notemail').'
  • '; } else { // we got an email, and we have settings. try { $mailer = new cms_mailer(); $mailer->AddAddress($addr); $mailer->IsHTML(TRUE); $mailer->SetBody(lang('mail_testbody','siteprefs')); $mailer->SetSubject(lang('mail_testsubject','siteprefs')); $mailer->Send(); if( $mailer->IsError() ) { $error .= '
  • '.$mailer->GetErrorInfo().'
  • '; } $message .= lang('testmsg_success'); } catch( \Exception $e ) { $error .= '
  • '.$e->GetMessage().'
  • '; } } } } if (isset($_POST["testumask"])) { $testdir = TMP_CACHE_LOCATION; $testfile = $testdir.DIRECTORY_SEPARATOR.'dummy.tst'; if( !is_writable($testdir) ) { $testresults = lang('errordirectorynotwritable'); } else { @umask(octdec($global_umask)); $fh = @fopen($testfile,"w"); if( !$fh ) { $testresults = lang('errorcantcreatefile').' ('.$testfile.')'; } else { @fclose($fh); $filestat = stat($testfile); if( $filestat == FALSE ) $testresults = lang('errorcantcreatefile'); if(function_exists("posix_getpwuid")) { //function posix_getpwuid not available on WAMP systems $userinfo = @posix_getpwuid($filestat[4]); $username = isset($userinfo['name'])?$userinfo['name']:lang('unknown'); $permsstr = siteprefs_display_permissions(siteprefs_interpret_permissions($filestat[2])); $testresults = sprintf("%s: %s
    %s:
      %s",lang('owner'),$username,lang('permissions'),$permsstr); } else { $testresults = sprintf("%s: %s
    %s:
      %s",lang('owner'),"N/A",lang('permissions'),"N/A"); } @unlink($testfile); } } } if (isset($_POST["editsiteprefs"])) { if ($access) { switch( $tab ) { case 'general': // tab 1 // @todo: should validate input or fully trust users allowed to change these values if (isset($_POST['sitename'])) $sitename = cleanValue($_POST['sitename']); cms_siteprefs::set('sitename', $sitename); if (isset($_POST['frontendlang'])) $frontendlang = cleanValue($_POST['frontendlang']); cms_siteprefs::set('frontendlang', $frontendlang); if (isset($_POST['frontendwysiwyg'])) $frontendwysiwyg = cleanValue($_POST['frontendwysiwyg']); cms_siteprefs::set('frontendwysiwyg', $frontendwysiwyg); if (isset($_POST['metadata'])) $metadata = $_POST['metadata']; cms_siteprefs::set('metadata', $metadata); if (isset($_POST["logintheme"])) $logintheme = cleanValue($_POST["logintheme"]); cms_siteprefs::set('logintheme', $logintheme); if (isset($_POST['backendwysiwyg'])) $backendwysiwyg = cleanValue($_POST['backendwysiwyg']); cms_siteprefs::set('backendwysiwyg', $backendwysiwyg); if (isset($_POST["defaultdateformat"])) $defaultdateformat = str_replace('%','%',cleanValue($_POST["defaultdateformat"])); // have to undo some cleaning. cms_siteprefs::set('defaultdateformat', $defaultdateformat); if( isset($_POST['thumbnail_width']) ) $thumbnail_width = (int)$_POST['thumbnail_width']; if( isset($_POST['thumbnail_height']) ) $thumbnail_height = (int)$_POST['thumbnail_height']; cms_siteprefs::set('thumbnail_width',$thumbnail_width); cms_siteprefs::set('thumbnail_height',$thumbnail_height); if( isset($_POST['search_module']) ) { $search_module = trim(cleanValue($_POST['search_module'])); cms_siteprefs::set('searchmodule',$search_module); } break; case 'editcontent': if( $pretty_urls ) { $content_autocreate_urls = (int)$_POST['content_autocreate_urls']; cms_siteprefs::set('content_autocreate_urls',$content_autocreate_urls); $content_autocreate_flaturls = (int)$_POST['content_autocreate_flaturls']; cms_siteprefs::set('content_autocreate_flaturls',$content_autocreate_flaturls); $content_mandatory_urls = (int)$_POST['content_mandatory_urls']; cms_siteprefs::set('content_mandatory_urls',$content_mandatory_urls); } $content_imagefield_path = trim($_POST['content_imagefield_path']); cms_siteprefs::set('content_imagefield_path',$content_imagefield_path); $content_thumbnailfield_path = trim($_POST['content_thumbnailfield_path']); cms_siteprefs::set('content_thumbnailfield_path',$content_thumbnailfield_path); $contentimage_path = trim($_POST['contentimage_path']); cms_siteprefs::set('contentimage_path',$contentimage_path); $content_cssnameisblockname = (int)$_POST['content_cssnameisblockname']; cms_siteprefs::set('content_cssnameisblockname',$content_cssnameisblockname); if( isset($_POST['basic_attributes']) ) { $basic_attributes = implode(',',($_POST['basic_attributes'])); } else { $basic_attributes = null; } cms_siteprefs::set('basic_attributes',$basic_attributes); $disallowed_contenttypes = ''; if( isset($_POST['disallowed_contenttypes']) ) $disallowed_contenttypes = implode(',',$_POST['disallowed_contenttypes']); cms_siteprefs::set('disallowed_contenttypes',$disallowed_contenttypes); break; case 'sitedown': if( isset($_POST['sitedownexcludes']) ) $sitedownexcludes = trim($_POST['sitedownexcludes']); $sitedownexcludeadmins = (int)$_POST['sitedownexcludeadmins']; $prevsitedown = $enablesitedownmessage; if (isset($_POST["enablesitedownmessage"])) $enablesitedownmessage=$_POST['enablesitedownmessage']; if (isset($_POST["sitedownmessage"])) $sitedownmessage = $_POST["sitedownmessage"]; if (isset($_POST["use_wysiwyg"])) $use_wysiwyg = $_POST["use_wysiwyg"]; if( !$prevsitedown && $enablesitedownmessage ) { audit('','Global Settings','Sitedown enabled'); } else if( $prevsitedown && !$enablesitedownmessage ) { audit('','Global Settings','Sitedown disabled'); } $tmp = trim(strip_tags($sitedownmessage)); if( !$tmp ) $error .= lang('error_sitedownmessage'); if( !$error ) cms_siteprefs::set('enablesitedownmessage', $enablesitedownmessage); cms_siteprefs::set('sitedown_use_wysiwyg', $use_wysiwyg); cms_siteprefs::set('sitedownmessage', $sitedownmessage); cms_siteprefs::set('sitedownexcludes',$sitedownexcludes); cms_siteprefs::set('sitedownexcludeadmins',$sitedownexcludeadmins); break; case 'mail': // gather mailprefs $prefix = 'mailprefs_'; foreach( $_POST as $key => $val ) { if( !startswith($key,$prefix) ) continue; $key = substr($key,strlen($prefix)); $mailprefs[$key] = trim(filter_var($val,FILTER_SANITIZE_STRING)); } // validate if( $mailprefs['from'] == '' ) { $error .= '
  • '.lang('error_fromrequired').'
  • '; } else if( !is_email($mailprefs['from']) ) { $error .= '
  • '.lang('error_frominvalid').'
  • '; } if( $mailprefs['mailer'] == 'smtp' ) { if( $mailprefs['host'] == '' ) { $error .= '
  • '.lang('error_hostrequired').'
  • '; } if( $mailprefs['port'] == '' ) $mailprefs['port'] = 25; // convenience. if( $mailprefs['port'] < 1 || $mailprefs['port'] > 10240 ) { $error .= '
  • '.lang('error_portinvalid').'
  • '; } if( $mailprefs['timeout'] == '' ) $mailprefs['timeout'] = 180; if( $mailprefs['timeout'] < 1 || $mailprefs['timeout'] > 3600 ) { $error .= '
  • '.lang('error_timeoutinvalid').'
  • '; } if( $mailprefs['smtpauth'] ) { if( $mailprefs['username'] == '' ) $error .= '
  • '.lang('error_usernamerequired').'
  • '; if( $mailprefs['password'] == '' ) $error .= '
  • '.lang('error_passwordrequired').'
  • '; } } // save. if( !$error ) { cms_siteprefs::set('mail_is_set',1); cms_siteprefs::set('mailprefs',serialize($mailprefs)); } break; case 'setup': if (isset($_POST["lock_timeout"])) $lock_timeout = (int)$_POST['lock_timeout']; if (isset($_POST["xmlmodulerepository"])) $xmlmodulerepository = cleanValue($_POST["xmlmodulerepository"]); if (isset($_POST["checkversion"])) $checkversion = (int) $_POST["checkversion"]; if (isset($_POST['global_umask'])) $global_umask = cleanValue($_POST['global_umask']); cms_siteprefs::set('global_umask', $global_umask); cms_siteprefs::set('xmlmodulerepository', $xmlmodulerepository); cms_siteprefs::set('checkversion', $checkversion); cms_siteprefs::set('lock_timeout',$lock_timeout); if( isset($_POST['allow_browser_cache']) ) { $allow_browser_cache = (int)$_POST['allow_browser_cache']; cms_siteprefs::set('allow_browser_cache',$allow_browser_cache); } if( isset($_POST['browser_cache_expiry']) ) { $browser_cache_expiry = (int)$_POST['browser_cache_expiry']; cms_siteprefs::set('browser_cache_expiry',$browser_cache_expiry); } if( isset($_POST['auto_clear_cache_age']) ) { $auto_clear_cache_age = (int)$_POST['auto_clear_cache_age']; cms_siteprefs::set('auto_clear_cache_age',$auto_clear_cache_age); } if (isset($_POST["adminlog_lifetime"])) { $adminlog_lifetime = (int)$_POST["adminlog_lifetime"]; cms_siteprefs::set('adminlog_lifetime',$adminlog_lifetime); } break; case 'smarty': if( isset($_POST['use_smartycache']) ) { $use_smartycache = (int)$_POST['use_smartycache']; cms_siteprefs::set('use_smartycache',$use_smartycache); } if( isset($_POST['use_smartycompilecheck']) ) { $use_smartycompilecheck = (int)$_POST['use_smartycompilecheck']; cms_siteprefs::set('use_smartycompilecheck',$use_smartycompilecheck); } $gCms->clear_cached_files(); break; } // put mention into the admin log if( !$error ) { audit('', 'Global Settings', 'Edited'); $message .= lang('siteprefsupdated'); } } else { $error .= "
  • ".lang('noaccessto', array('Modify Site Permissions'))."
  • "; } } /** * Build page */ include_once("header.php"); if ($error != "") $themeObject->ShowErrors($error); if ($message != "") $themeObject->ShowMessage($message); // Make sure cache folder is writable if (FALSE == is_writable(TMP_CACHE_LOCATION) || FALSE == is_writable(TMP_TEMPLATES_C_LOCATION) ) { $themeObject->ShowErrors(lang('cachenotwritable')); } $modules = ModuleOperations::get_instance()->get_modules_with_capability('search'); if( is_array($modules) && count($modules) ) { $tmp = array(); $tmp['-1'] = lang('none'); for( $i = 0; $i < count($modules); $i++ ) { $tmp[$modules[$i]] = $modules[$i]; } $smarty->assign('search_modules',$tmp); } $maileritems = array(); $maileritems['mail'] = 'mail'; $maileritems['sendmail'] = 'sendmail'; $maileritems['smtp'] = 'smtp'; $smarty->assign('maileritems',$maileritems); $opts = array(); $opts[''] = lang('none'); $opts['ssl'] = 'SSL'; $opts['tls'] = 'TLS'; $smarty->assign('secure_opts',$opts); $smarty->assign('mail_is_set',$mail_is_set); $smarty->assign('mailprefs',$mailprefs); $smarty->assign('languages',get_language_list()); $smarty->assign('tab',$tab); $smarty->assign('pretty_urls',$pretty_urls); // need a list of wysiwyg modules. { $tmp = module_meta::get_instance()->module_list_by_capability('wysiwyg'); $tmp2 = array(-1=>lang('none')); for( $i = 0; $i < count($tmp); $i++ ) { $tmp2[$tmp[$i]] = $tmp[$i]; } $smarty->assign('wysiwyg',$tmp2); } if ($dir=opendir(dirname(__FILE__)."/themes/")) { $themes = array(); while (($file = readdir($dir)) !== false ) { if( @is_dir("themes/".$file) && ($file[0]!='.') && @is_readable("themes/{$file}/{$file}Theme.php")) { $themes[$file] = $file; } } $smarty->assign('themes',$themes); $smarty->assign('logintheme',cms_siteprefs::get('logintheme','default')); } $smarty->assign('tabs_end',$themeObject->EndTabContent()); $smarty->assign('general_start',$themeObject->StartTab("general")); $smarty->assign('editcontent_start',$themeObject->StartTab("editcontent")); $smarty->assign('sitedown_start',$themeObject->StartTab("sitedown")); $smarty->assign('setup_start',$themeObject->StartTab("setup")); $smarty->assign('smarty_start',$themeObject->StartTab("smarty")); $smarty->assign('tab_end',$themeObject->EndTab()); $smarty->assign('SECURE_PARAM_NAME',CMS_SECURE_PARAM_NAME); $smarty->assign('CMS_USER_KEY',$_SESSION[CMS_USER_KEY]); $smarty->assign('sitename',$sitename); $smarty->assign('global_umask',$global_umask); $smarty->assign('testresults',$testresults); $smarty->assign('frontendlang',$frontendlang); $smarty->assign('frontendwysiwyg',$frontendwysiwyg); $smarty->assign('backendwysiwyg',$backendwysiwyg); $smarty->assign('metadata',$metadata); $smarty->assign('enablesitedownmessage',$enablesitedownmessage); $smarty->assign('use_wysiwyg',$use_wysiwyg); $smarty->assign('textarea_sitedownmessage',create_textarea($use_wysiwyg,$sitedownmessage,'sitedownmessage','pagesmalltextarea')); $smarty->assign('checkversion',$checkversion); $smarty->assign('defaultdateformat',$defaultdateformat); $smarty->assign('lock_timeout',$lock_timeout); $smarty->assign('sitedownexcludes',$sitedownexcludes); $smarty->assign('sitedownexcludeadmins',$sitedownexcludeadmins); $smarty->assign('basic_attributes',explode(',',$basic_attributes)); $smarty->assign('disallowed_contenttypes',explode(',',$disallowed_contenttypes)); $smarty->assign('thumbnail_width',$thumbnail_width); $smarty->assign('thumbnail_height',$thumbnail_height); $smarty->assign('allow_browser_cache',$allow_browser_cache); $smarty->assign('browser_cache_expiry',$browser_cache_expiry); $smarty->assign('auto_clear_cache_age',$auto_clear_cache_age); $smarty->assign('content_autocreate_urls',$content_autocreate_urls); $smarty->assign('content_autocreate_flaturls',$content_autocreate_flaturls); $smarty->assign('content_mandatory_urls',$content_mandatory_urls); $smarty->assign('content_imagefield_path',$content_imagefield_path); $smarty->assign('content_thumbnailfield_path',$content_thumbnailfield_path); $smarty->assign('content_cssnameisblockname',$content_cssnameisblockname); $smarty->assign('contentimage_path',$contentimage_path); $smarty->assign('adminlog_lifetime',$adminlog_lifetime); $smarty->assign('search_module',$search_module); $smarty->assign('use_smartycache',$use_smartycache); $smarty->assign('use_smartycompilecheck',$use_smartycompilecheck); $tmp = array( 60*60*24=>lang('adminlog_1day'), 60*60*24*7=>lang('adminlog_1week'), 60*60*24*14=>lang('adminlog_2weeks'), 60*60*24*31=>lang('adminlog_1month'), 60*60*24*31*3=>lang('adminlog_3months'), 60*60*24*31*6=>lang('adminlog_6months'), -1=>lang('adminlog_manual')); $smarty->assign('adminlog_options',$tmp); $smarty->assign('lang_autoclearcache',lang('autoclearcache')); $smarty->assign('lang_cancel',lang('cancel')); $smarty->assign('lang_submit',lang('submit')); $smarty->assign('lang_clearcache',lang('clearcache')); $smarty->assign('lang_clear',lang('clear')); $smarty->assign('lang_frontendlang',lang('frontendlang')); $smarty->assign('lang_frontendwysiwygtouse',lang('frontendwysiwygtouse')); $smarty->assign('lang_template',lang('template')); $smarty->assign('lang_date_format_string_help',lang('date_format_string_help')); $smarty->assign('lang_info_sitedownexcludes',lang('info_sitedownexcludes')); $all_attributes = null; { $content_obj = new Content; // should this be the default type? $list = $content_obj->GetProperties(); if( is_array($list) && count($list) ) { // pre-remove some items. $all_attributes = array(); for( $i = 0; $i < count($list); $i++ ) { $obj = $list[$i]; if( $obj->tab == $content_obj::TAB_PERMS ) continue; if( !isset($all_attributes[$obj->tab]) ) $all_attributes[$obj->tab] = array('label'=>lang($obj->tab),'value'=>array()); $all_attributes[$obj->tab]['value'][] = array('value'=>$obj->name,'label'=>lang($obj->name)); } } $txt = CmsFormUtils::create_option($all_attributes); } $smarty->assign('all_attributes',$all_attributes); $smarty->assign('smarty_cacheoptions',array('always'=>lang('always'),'never'=>lang('never'),'moduledecides'=>lang('moduledecides'))); $smarty->assign('smarty_cacheoptions2',array('always'=>lang('always'),'never'=>lang('never'))); $contentops = cmsms()->GetContentOperations(); $all_contenttypes = $contentops->ListContentTypes(false,false); $smarty->assign('all_contenttypes',$all_contenttypes); $yesno = array(0=>lang('no'),1=>lang('yes')); $smarty->assign('yesno',$yesno); $titlemenu = array(0=>lang('menutext'),1=>lang('title')); $smarty->assign('titlemenu',$titlemenu); $smarty->assign('backurl', $themeObject->backUrl()); $smarty->assign('formurl', $thisurl); # begin outputg $smarty->display('siteprefs.tpl'); include_once("footer.php"); ?>