| Server IP : 195.130.67.5 / Your IP : 216.73.217.154 Web Server : Microsoft-IIS/10.0 System : Windows NT WEBSERVER1 10.0 build 17763 (Windows Server 2016) i586 User : IUSR ( 0) PHP Version : 7.4.19 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : OFF | Perl : OFF | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : C:/inetpub/wwwroot/icd/components/com_sobi2/ |
Upload File : |
<?php
/**
* @version $Id: config.class.php 5466 2010-08-18 14:39:20Z Sigrid Suski $
* @package: Sigsiu Online Business Index 2 (Sobi2)
* ===================================================
* @author
* Name: Sigrid & Radek Suski, Sigsiu.NET GmbH
* Email: sobi[at]sigsiu.net
* Url: http://www.sigsiu.net
* ===================================================
* @copyright Copyright (C) 2006 - 2010 Sigsiu.NET GmbH (http://www.sigsiu.net). All rights reserved.
* @license see http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU/GPL.
* You can use, redistribute this file and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation.
*/
defined( '_SOBI2_' ) || defined( '_JEXEC' ) || defined( '_VALID_MOS' ) || exit('Restricted access');
defined( '_SOBI2_' ) || define( '_SOBI2_', true );
defined( '_ISO' ) || define( '_ISO', 'charset=utf-8' );
if ( ! defined( 'DS' ) ) {
define( 'DS', DIRECTORY_SEPARATOR );
}
if ( ! function_exists( 'sefRelToAbs' ) && ! defined( '_JEXEC' ) ) {
require_once ( _SOBI_CMSROOT . DS . 'includes' . DS . 'sef.php' );
}
if ( ! function_exists( 'sobi_make_pattern' ) ) {
/**
* Enter description here...
*
* @param unknown_type $pat
*/
function sobi_make_pattern ( &$pat )
{
$pat = '/' . preg_quote( $pat, '/' ) . '/i';
}
}
if ( ! function_exists( 'str_ireplace' ) ) {
function str_ireplace ( $search, $replace, $subject )
{
if ( is_array( $search ) ) {
array_walk( $search, 'sobi_make_pattern' );
}
else {
$search = '/' . preg_quote( $search, '/' ) . '/i';
}
return preg_replace( $search, $replace, $subject );
}
}
defined( '_SOBI_FE_PATH' ) || define( '_SOBI_FE_PATH', dirname( __FILE__ ) );
defined( '_SOBI_CMSROOT' ) || define( "_SOBI_CMSROOT", str_replace( DS . "components" . DS . "com_sobi2", "", _SOBI_FE_PATH ) );
defined( "_SOBI2_" ) || define( "_SOBI2_", true );
sobi2Config::import( "includes|inc|custom.functions" );
/**
* Configuration keys and some helper funcions
*
*/
class sobi2Config
{
/**
* @var boolean
*/
var $forceLegacy = false;
/**
* @var boolean
*/
var $forceCustomHead = true;
/**
* @var boolean
*/
var $useSigsiuTree = true;
/**
* @var array
*/
var $debStore = array();
/**
* @var array
*/
var $aTreeImages = array();
/**
* @var array
*/
var $links = array();
/**
* @var boolean
*/
var $debug = 0;
/**
* @var boolean
*/
var $debugTmpl = 1;
/**
* @var boolean
*/
var $ssrs = 0;
/**
* @var boolean
*/
var $allowFeEntr = true;
/**
* @var boolean
*/
var $useDetailsView = 1;
/**
* @var boolean
*/
var $useFormTpl = 1;
/**
* @var array
*/
var $allowableFilesExt = array( 'gif' , 'jpg' , 'png' );
/**
* @var array
*/
var $allowedExtAudio = array( 'mp3' , 'wav' , 'wma' );
/**
* @var array
*/
var $allowedExtVideo = array( 'mpg' , 'mpeg' , 'wmv' , 'avi' , 'flv' , 'mov' , 'swf' );
/**
* @var array
*/
var $allowedEmbedUrl = array( 'http://www.youtube.com' , 'http://www.myvideo.de' );
/**
* disallowed tags in input fields
*
* @var string array
*/
var $disalowedtags = array( "script" , "object" , "iframe" , "applet" , "meta" , "form" , "onmouseover" , "onmouseout" );
/**
*
* @var array
*/
var $waySearchFields = array();
/**
*
* @var array
*/
var $storeHouse = array();
/**
* component name
*
* @var string
*/
var $componentName = null;
/**
* language for Sobi2
*
* @var string
*/
var $sobi2Language = null;
/**
* @var boolean
*/
var $showComponentLink = 1;
/**
* @var boolean
*/
var $showSearchLink = 1;
/**
* @var boolean
*/
var $showComponentDescInSearch = 1;
/**
* @var boolean
*/
var $showAddNewEntryLink = 1;
/**
* @var boolean - not used
*/
var $showLevelUpLink = 1;
/**
* @var boolean - not used
*/
var $showPromoted = 1;
/**
* @var integer - not used
*/
var $promoItemsInLine = 2;
/**
* @var integer - not used
*/
var $publishedItems = 0;
/**
* @var boolean
*/
var $useSecurityCode = 1;
/**
* @var int
*/
var $mailAdmGid = "25";
/**
* @var int
*/
var $mailSoJ = 0;
/**
* @var int
*/
var $mailFieldId = 7;
/**
* @var boolean
*/
var $needToAcceptEntryRules = 1;
/**
* @var frontend
*/
var $frontend = null;
/**
* first part of entry rules label
*
* @var string
*/
var $acceptEntryRules1 = null;
/**
* label for url in entry rules label
*
* @var string
*/
var $entryRulesURLlabel = null;
/**
* @var string
*/
var $header = null;
/**
* @var integer
*/
var $dmod = 775;
/**
* @var bool
*/
var $cmod = 0;
/**
* @var integer - not used
*/
var $fmod = 664;
/**
* second part of entry rules label
*
* @var string
*/
var $acceptEntryRules2 = null;
/**
* @var integer
*/
var $allowUsingImg = 1;
/**
* @var integer
*/
var $allowUsingIco = 1;
/**
* @var boolean - not used
*/
var $entryRulesURLextern = null;
/**
* @var string url for entry rules
*/
var $entryRulesURL = null;
/**
* @var string
*/
var $currency = null;
/**
* @var string
*/
var $payPalCurrency = null;
/**
* @var integer - number of allowed categories for one entry
*/
var $maxCatsForEntry = 1;
/**
* @var array
*/
var $catPrices = array();
/**
* @var boolean - nut used
*/
var $checkReferer = null;
/**
* @var time - std expirations time for an entry
*/
var $entryExpirationTime = 0;
/**
* @var time - std expirations time for an entry
*/
var $renewDiscount = 0;
/**
* @var time - std expirations time for an entry
*/
var $renewExpirationTime = 0;
/**
* @var boolean
*/
var $allowRenew = 0;
/**
* @var boolean
*/
var $allowRenewDaysForExp = 0;
/**
* @var boolean
*/
var $renewDeleteFees = 0;
/**
* @var boolean
*/
var $allowQuickEdit = 0;
/**
* @var boolean
*/
var $autopublishEntry = 0;
/**
* @var boolean - not used
*/
var $needToConfirmNew = 0;
/**
* @var boolean - notify admins about new entry
*/
var $notifyAdmins = 1;
/**
* @var array
*/
var $settings = array();
/**
* @var boolean - allow duplicating entries title
*/
var $allowMultiTitle = 0;
/**
* @var boolean
*/
var $showListingOnFp = 1;
/**
* @var integer
*/
var $itemsInLine = 3;
/**
* @var boleintegeran
*/
var $lineOnSite = 3;
/**
* @var boolean
*/
var $showCatListOnFp = 1;
/**
* @var boolean
*/
var $showCatListInCat = 1;
/**
* @var integer - not used
*/
var $catListAs = 2;
/**
* @var integer
*/
var $catsListInLine = 3;
/**
* @var boolean
*/
var $showEntriesFromSubcats = 1;
/**
* @var boolean
*/
var $showIcoInVC = 1;
/**
* @var boolean
*/
var $showImgInVC = 0;
/**
* @var float
*/
var $priceForImg = null;
/**
* @var float
*/
var $priceForIco = null;
/**
* @var boolean
*/
var $allowUserToEditEntry = null;
/**
* @var string
*/
var $imagesFolder = "/images/com_sobi2/clients/";
/**
* @var string
*/
var $catImagesFolder = "/images/stories/";
/**
* @var string
*/
var $templatesDir = "templates";
/**
* @var array
*/
var $templates = array();
/**
* @var string
*/
var $defTemplate = "default";
/**
* @var boolean
*/
var $useMeta = null;
/**
* @var boolean
*/
var $showIcoInDetails = null;
/**
* @var boolean
*/
var $showImageInDetails = null;
/**
* @var boolean
*/
var $useWaySearch = null;
/**
* @var boolean
*/
var $showAlphaIndex = true;
/**
* @var string
*/
var $waySearchUrl = null;
/**
* @var string
*/
var $waySearchLabel = null;
/**
* @var boolean - send email with selected not free options
*/
var $mailFees = null;
/**
* @var boolean
*/
var $useBankTransfer = null;
/**
* @var boolean
*/
var $usePayPal = null;
/**
* @var string
*/
var $bankData = null;
/**
* @var string
*/
var $payPalMail = null;
/**
* @var string
*/
var $payPalReturnUrl = null;
/**
* @var string
*/
var $payPalUrl = null;
/**
* @var string
*/
var $payTitle = null;
/**
* @var string
*/
var $curencyDecSeparator = '.';
/**
* @var integer
*/
var $allowUserDelete = 2;
/**
* @var string
*/
var $listingOrdering = "ordering";
/**
* @var string
*/
var $catsOrdering = "ordering";
/**
* @var string
*/
var $subcatsOrdering = "ordering";
/**
* @var int
*/
var $subcatsNumber = 5;
/**
* @var bool
*/
var $subcatsShow = 1;
/**
* @var string
*/
var $nullDate = null;
/**
* @var time
*/
var $checkOutTime = null;
/**
* @var boolean
*/
var $showComponentDescription = null;
/**
* @var boolean
*/
var $showCatDesc = null;
/**
* @var string - std background image
*/
var $sobi2BackgroundImg = null;
/**
* @var string - std border color
*/
var $sobi2BorderColor = null;
/**
* @var string - security image
*/
var $secImgBgColor = null;
/**
* @var string - security image
*/
var $secImgFontColor = null;
/**
* @var string - security image
*/
var $secImgLineColor = null;
/**
* @var string - security image
*/
var $secImgBorderColor = null;
/**
* @var boolean
*/
var $showAddedDate = null;
/**
* @var boolean
*/
var $showHits = null;
/**
* @var string - label of the entry title input box
*/
var $efEntryTitleLabel = null;
/**
* @var integer - length of the entry title input box
*/
var $efEntryTitleLength = 30;
/**
* @var string - label of the image input box
*/
var $efImgLabel = null;
/**
* @var string - label of the image input box
*/
var $efIcoLabel = null;
/**
* @var integer
*/
var $thumbWidth = 50;
/**
* @var integer
*/
var $thumbHeigth = 50;
/**
* @var integer
*/
var $imgWidth = 50;
/**
* @var integer
*/
var $imgHeigth = 50;
/**
* @var boolean - allow anonymous entries
*/
var $allowAnonymous = 0;
/**
* @var integer - sobi2 menu id (Joomla! - Itemid)
*/
var $sobi2Itemid = null;
/**
* @var bool
*/
var $forceMenuId = true;
/**
* @var boolean - notify author when he add a new entry
*/
var $notifyAuthorNew = null;
/**
* @var boolean - notify author about changes in his entry
*/
var $notifyAuthorChanges = null;
/**
* @var boolean - notify admin about changes
*/
var $notifyAdminChanges = null;
/**
* @var boolean
*/
var $notifyAuthorRenew = null;
/**
* @var boolean
*/
var $notifyAdminRenew = null;
/**
* @var boolean - notify author when his entry is approved
*/
var $emailOnAppr = null;
/**
* @var integer - max size of uploaded file
*/
var $maxFileSize = null;
/**
* @var string - google API key
*/
var $googleMapsApiKey = null;
/**
* @var integer
*/
var $googleMapsWidth = null;
/**
* @var integer
*/
var $googleMapsHeight = null;
/**
* @var integer
*/
var $googleMapsBubble = null;
/**
* @var integer - field id
*/
var $googleMapsLongField = null;
/**
* @var integer - field id
*/
var $googleMapsLatField = null;
/**
* @var integer
*/
var $googleMapsZoom = null;
/**
* @var boolean
*/
var $useGoogleMaps = null;
/**
* @var string
*/
var $mailFooter = null;
/**
* @var string
*/
var $AdmEmailOnSubmitTitle = null;
/**
* @var string
*/
var $AdmEmailOnSubmitText = null;
/**
* @var string
*/
var $AdmEmailOnUpdateTitle = null;
/**
* @var string
*/
var $AdmEmailOnUpdateText = null;
/**
* @var string
*/
var $AdmEmailPaymentsTitle = null;
/**
* @var string
*/
var $AdmEmailPaymentsText = null;
/**
* @var string
*/
var $UserEmailOnSubmitTitle = null;
/**
* @var string
*/
var $UserEmailOnSubmitText = null;
/**
* @var string
*/
var $UserEmailOnRenewTitle = null;
/**
* @var string
*/
var $UserEmailOnRenewText = null;
/**
* @var string
*/
var $AdmEmailOnRenewTitle = null;
/**
* @var string
*/
var $AdmEmailOnRenewText = null;
/**
* @var string
*/
var $UserEmailOnUpdateTitle = null;
/**
* @var string
*/
var $UserEmailOnUpdateText = null;
/**
* @var string
*/
var $UserEmailOnApproveTitle = null;
/**
* @var string
*/
var $UserEmailOnApproveText = null;
/**
* @var string
*/
var $UserEmailPaymentsTitle = null;
/**
* @var string
*/
var $UserEmailPaymentsText = null;
/**
* @var boolean - mail the selected not free options to admins too
*/
var $mailFeesAdm = null;
/**
* @var boolean - Show the number of entries and subcategories behind the category name in category list
*/
var $showCatItemsCount = 1;
/**
* @var boolean
*/
var $allowAddingToParentCats = null;
/**
* @var array - array of plugins objects
*/
var $S2_plugins = array();
/**
* @var string
*/
var $S2_pluginsPath = null;
/**
* @var integer - could change the administrations permisions
*/
var $admPermission = null;
/**
* @var boolean
*/
var $allowUsingBackground = null;
/**
* @var boolean - allow not registered user to see the details view page
*/
var $allowAnoDetails = null;
/**
* @var object - menu parameters
*/
var $params = null;
/**
* Price for basic entry
*
* @var float
*/
var $basicPrice = 0;
/**
* Label for basic entry - if not free
*
* @var string
*/
var $basicPriceLabel = '';
/**
* enable/disable cache
*
* @var boolean
*/
var $cacheEnabled = false;
/**
* caceh lifetime
*
* @var integer
*/
var $cacheLifetime = 0;
/**
* enable/disable cache
*
* @var boolean
*/
var $cacheL2Enabled = true;
/**
* enable/disable cache
*
* @var boolean
*/
var $cacheL2dvEnabled = false;
/**
* cache lifetime
*
* @var integer
*/
var $cacheL2Lifetime = 900;
/**
* cache lifetime
*
* @var integer
*/
var $cacheL2strLen = 50000;
/**
* enable/disable cache
*
* @var boolean
*/
var $cacheL3Enabled = true;
/**
*
* @var integer
*/
var $cacheL3strLen = 50000;
/**
* chache drectory
*
* @var string
*/
var $cacheDir = '';
/**
* @var boolean - small controls for google maps (zoom etc)
*/
var $googleSmallMapControl = true;
/**
* @var boolean - map type controls hybrid/map
*/
var $googleMapTypeControl = false;
/**
* Control for RSS Feeds
*
* @var boolean
*/
var $useRSSfeed = true;
/**
* sitch using of the ajax search
* @since RC 2.7.4
* @var bool
*/
var $useAjaxSearch = true;
/**
* @var bool
*/
var $ajaxSearchUseSlider = true;
/**
* @var bool
*/
var $ajaxSearchSlidInOnStart = true;
/**
* @var bool
*/
var $ajaxSearchSlidInAfterSearch = true;
/**
* @var bool
*/
var $ajaxSearchCatsForFields = false;
/**
* @var int
*/
var $ajaxSearchCatsContHeight = 100;
/**
* @var bool
*/
var $ajaxSearchCatsFieldsDepend = true;
/**
* all config values
*
* @var array
*/
var $configValues = array();
/**
* Cache object
*
* @var sobiCache
*/
var $sobiCache = null;
/**
* Mambo/Joomla database object
*
* @var database
*/
var $database = null;
/**
* Mambo/Joomla user object
*
* @var mosUser
*/
var $user = null;
/**
* @var string
*/
var $absolutePath = null;
/**
* @var string
*/
var $liveSite = null;
/**
* @var mosMainFrame
*/
var $mainframe = null;
/**
* @var string
*/
var $offset = null;
/**
* @var string
*/
var $sitename = null;
/**
* @var gacl
*/
var $acl = null;
/**
* @var string
*/
var $mailfrom = null;
/**
* @var string
*/
var $fromname = null;
/**
* @var string
*/
var $globalLang = null;
/**
* @var string
*/
var $DBhost = null;
/**
* @var string
*/
var $DBuser = null;
/**
* @var string
*/
var $DBpassword = null;
/**
* @var string
*/
var $DBname = null;
/**
* @var string
*/
var $DBprefix = null;
/**
* @var bool
*/
var $pby = true;
/**
* @var int
*/
var $memStart = 0;
/**
* @var int
*/
var $timeStart = 0;
/**
* @var int
*/
var $queryStart = 0;
/**
* @var string
*/
var $secret = null;
/**
* Default constructor - initialazing all standard configuration keys
*/
function sobi2Config ()
{
/* critical section */
$GLOBALS[ 'sobi2_config_construct_cs' ] = true;
if ( $settingsFile = sobi2Config::translatePath( "includes|inc|config", "front", true, ".ini" ) ) {
$this->settings = parse_ini_file( $settingsFile, true );
$this->imagesFolder = $this->key( "general", "images_folder", "/images/com_sobi2/clients/" );
$this->catImagesFolder = $this->key( "general", "cat_images_folder", "/images/stories/" );
$this->templatesDir = $this->key( "general", "templates_dir", "templates" );
$this->disalowedtags = explode( "|", $this->key( "general", "disallowed_tags", "script|object|iframe|applet|meta|form|onmouseover|onmouseout" ) );
array_walk( $this->disalowedtags, "sobi2trim" );
$this->allowableFilesExt = explode( "|", $this->key( "general", "allowed_files_ext", "gif|jpg|png" ) );
array_walk( $this->allowableFilesExt, "sobi2trim" );
$this->allowedExtAudio = explode( "|", $this->key( "general", "allowed_ext_audio", "mp3|wav|wma" ) );
array_walk( $this->allowedExtAudio, "sobi2trim" );
$this->allowedExtVideo = explode( "|", $this->key( "general", "allowed_ext_video", "mpg|mpeg|wmv|avi|flv|mov|swf" ) );
array_walk( $this->allowedExtVideo, "sobi2trim" );
$this->allowedEmbedUrl = explode( "|", $this->key( "general", "allowed_embbed_url", "http://www.youtube.com|http://www.myvideo.de" ) );
array_walk( $this->allowedEmbedUrl, "sobi2trim" );
$this->forceCustomHead = ( class_exists( 'JURI' ) && defined( '_JEXEC' ) ) ? false : $this->key( "general", "force_custom_head_tag", true );
//Kompatibilitaet f�r Schluessel die die Sektion gewechselt haben
if (isset ($this->settings['frontpage']['browser_title_separator'])) {
$this->settings['general']['browser_title_separator'] = $this->settings['frontpage']['browser_title_separator'];
}
if (isset ($this->settings['frontpage']['reverse_browser_title'])) {
$this->settings['general']['reverse_browser_title'] = $this->settings['frontpage']['reverse_browser_title'];
}
if (isset ($this->settings['frontpage']['generator_append'])) {
$this->settings['general']['generator_append'] = $this->settings['frontpage']['generator_append'];
}
if (isset ($this->settings['frontpage']['meta_keys_append'])) {
$this->settings['general']['meta_keys_append'] = $this->settings['frontpage']['meta_keys_append'];
}
if (isset ($this->settings['frontpage']['meta_desc_append'])) {
$this->settings['general']['meta_desc_append'] = $this->settings['frontpage']['meta_desc_append'];
}
}
sobi2Config::loadBridge();
sobi2bridge::init( $this );
if ( class_exists( 'JURI' ) && defined( '_JEXEC' ) ) { //J15
if ( ! defined( '_SOBI_ADM_PATH' ) && $this->mainframe->getName() != 'administrator' ) {
$params = & $this->mainframe->getPageParameters( 'com_sobi2' );
$this->set( 'params', $params );
}
}
else { //J10
if ( ! defined( '_SOBI_ADM_PATH' )) {
if ( ! defined( '_SOBI_MAMBO' ) ) {
$menu = $this->mainframe->get( 'menu' );
$params = new mosParameters( $menu->params );
$params->def( 'back_button', $this->mainframe->getCfg( 'back_button' ) );
$params->def( 'pageclass_sfx', '' );
}
else {
$params = new stdClass( );
if ( $config->sobi2Itemid ) {
sobi2Config::loadBridge();
$menu = & sobi2bridge::jMenu( $config->getDb() );
$menu->load( $config->sobi2Itemid );
$params = & sobi2bridge::jParams( $menu->params );
}
else {
$menu = null;
$params = new mosEmpty( );
}
$params->def( 'pageclass_sfx', $this->mainframe->getCfg( 'back_button' ) );
$params->def( 'back_button', $this->mainframe->getCfg( 'back_button' ) );
}
$this->set( 'params', $params );
}
}
if ( $this->key( "compat", "use_mos_conf_livesite", false ) ) {
if ( class_exists( 'JURI' ) ) {
$this->liveSite = substr_replace( JURI::root(), '', - 1, 1 );
}
else {
global $mosConfig_live_site;
$this->liveSite = $mosConfig_live_site;
}
}
else {
$protocol = ( ( sobi2Config::request( $_SERVER, "SERVER_PORT", 0 ) == 443 ) || sobi2Config::request( $_SERVER, "HTTPS", false ) ) ? "https" : "http";
$host = sobi2Config::request( $_SERVER, "HTTP_HOST", null );
if ( $host && $protocol ) {
$path = sobi2Config::request( $_SERVER, "SCRIPT_NAME", null );
$path = str_replace( array( "/index.php" , "/index2.php" , "/index3.php" ), null, $path );
$subdir = null;
if ( defined( "_SOBI2_ADMIN" ) ) {
if ( $path != "/administrator" ) {
$subdir = str_replace( "/administrator", null, $path );
}
}
else {
if ( strlen( $path ) ) {
$subdir = $path;
}
}
$this->liveSite = "{$protocol}://{$host}{$subdir}";
}
else {
trigger_error( "Cannot investigate live site address |{$protocol}://{$host}{$subdir}|" );
if ( class_exists( 'JURI' ) ) {
$this->liveSite = substr_replace( JURI::root(), '', - 1, 1 );
}
else {
global $mosConfig_live_site;
$this->liveSite = $mosConfig_live_site;
}
}
}
$query = "SELECT `configValue`, `configKey` FROM `#__sobi2_config`";
$this->database->setQuery( $query );
$configValues = $this->database->loadObjectList();
if ( $this->database->getErrorNum() ) {
trigger_error( "DB reports: " . $this->database->stderr(), E_USER_WARNING );
}
foreach ( $configValues as $value ) {
$this->configValues[ $value->configKey ] = $value->configValue;
}
$this->S2_pluginsPath = _SOBI_FE_PATH . DS . "plugins";
$this->nullDate = $this->getNullDate();
$this->sobi2Language = $this->getValueFromDB( "frontpage", "language" );
if ( $this->sobi2Language == 'default' ) {
$this->sobi2Language = $this->globalLang;
if ( ! defined( "_SOBI2_ADMIN" ) ) {
$this->efEntryTitleLabel = $this->key( $this->sobi2Language, "ef_entry_title_label", $this->getSobiStr( $this->getValueFromDB( "editForm", "efEntryTitleLabel" ) ) );
$this->efImgLabel = $this->key( $this->sobi2Language, "ef_img_label", $this->getSobiStr( $this->getValueFromDB( "editForm", "efImgLabel" ) ) );
$this->efIcoLabel = $this->key( $this->sobi2Language, "ef_ico_label", $this->getSobiStr( $this->getValueFromDB( "editForm", "efIcoLabel" ) ) );
$this->acceptEntryRules1 = $this->key( $this->sobi2Language, "ef_accept_entry_rules1", $this->getSobiStr( $this->getValueFromDB( "editForm", "acceptEntryRules1" ) ) );
$this->entryRulesURLlabel = $this->key( $this->sobi2Language, "ef_entry_rules_url_label", $this->getSobiStr( $this->getValueFromDB( "editForm", "entryRulesURLlabel" ) ) );
$this->acceptEntryRules2 = $this->key( $this->sobi2Language, "ef_accept_entry_rules2", $this->getSobiStr( $this->getValueFromDB( "editForm", "acceptEntryRules2" ) ) );
$this->entryRulesURL = $this->key( $this->sobi2Language, "ef_entry_rules_url", $this->getSobiStr( $this->getValueFromDB( "editForm", "entryRulesURL" ) ) );
$this->componentName = $this->key( $this->sobi2Language, "directory_name", $this->getSobiStr( $this->getValueFromDB( "editForm", "componentName" ) ) );
$this->basicPriceLabel = $this->key( $this->sobi2Language, "basic_price_label", $this->getSobiStr( $this->getValueFromDB( "general", "basicPriceLabel" ) ) );
}
else {
$this->efEntryTitleLabel = $this->getSobiStr( $this->getValueFromDB( "editForm", "efEntryTitleLabel" ) );
$this->efImgLabel = $this->getSobiStr( $this->getValueFromDB( "editForm", "efImgLabel" ) );
$this->efIcoLabel = $this->getSobiStr( $this->getValueFromDB( "editForm", "efIcoLabel" ) );
$this->acceptEntryRules1 = $this->getSobiStr( $this->getValueFromDB( "editForm", "acceptEntryRules1" ) );
$this->entryRulesURLlabel = $this->getSobiStr( $this->getValueFromDB( "editForm", "entryRulesURLlabel" ) );
$this->acceptEntryRules2 = $this->getValueFromDB( "editForm", "acceptEntryRules2" );
$this->entryRulesURL = $this->getValueFromDB( "editForm", "entryRulesURL" );
$this->componentName = $this->getSobiStr( $this->getValueFromDB( "general", "componentName" ) );
$this->basicPriceLabel = $this->getValueFromDB( "general", "basicPriceLabel" );
}
}
else {
$this->efEntryTitleLabel = $this->getSobiStr( $this->getValueFromDB( "editForm", "efEntryTitleLabel" ) );
$this->efImgLabel = $this->getSobiStr( $this->getValueFromDB( "editForm", "efImgLabel" ) );
$this->efIcoLabel = $this->getSobiStr( $this->getValueFromDB( "editForm", "efIcoLabel" ) );
$this->acceptEntryRules1 = $this->getSobiStr( $this->getValueFromDB( "editForm", "acceptEntryRules1" ) );
$this->entryRulesURLlabel = $this->getSobiStr( $this->getValueFromDB( "editForm", "entryRulesURLlabel" ) );
$this->acceptEntryRules2 = $this->getValueFromDB( "editForm", "acceptEntryRules2" );
$this->entryRulesURL = $this->getValueFromDB( "editForm", "entryRulesURL" );
$this->componentName = $this->getSobiStr( $this->getValueFromDB( "general", "componentName" ) );
$this->basicPriceLabel = $this->getValueFromDB( "general", "basicPriceLabel" );
}
$this->efEntryTitleLength = $this->getValueFromDB( "editForm", "efEntryTitleLength" );
$this->debug = $this->getValueFromDB( "frontpage", "debug" );
$this->debugTmpl = $this->getValueFromDB( "frontpage", "debugTmpl" );
if ( $this->debug == 0 ) {
$this->debug = 8;
}
$this->showComponentLink = $this->getValueFromDB( "frontpage", "showComponentLink" );
$this->showSearchLink = $this->getValueFromDB( "frontpage", "showSearchLink" );
$this->ssrs = $this->getValueFromDB( "general", "ssrs" );
$this->showAddNewEntryLink = $this->getValueFromDB( "frontpage", "showAddNewEntryLink" );
$this->entryExpirationTime = $this->getValueFromDB( "general", "entryExpirationTime" );
$this->autopublishEntry = $this->getValueFromDB( "general", "autopublishEntry" );
$this->showListingOnFp = $this->getValueFromDB( "frontpage", "showListingOnFp" );
$this->allowRenew = $this->getValueFromDB( "general", "allowRenew" );
$this->allowRenewDaysForExp = $this->getValueFromDB( "general", "allowRenewDaysForExp" );
$this->renewDeleteFees = $this->getValueFromDB( "payment", "renewDeleteFees" );
$this->renewDiscount = $this->getValueFromDB( "general", "renewDiscount" );
$this->renewExpirationTime = $this->getValueFromDB( "general", "renewExpirationTime" );
if ( ! $this->renewExpirationTime && ! defined( "_SOBI2_ADMIN" ) ) {
$this->renewExpirationTime = $this->entryExpirationTime;
}
$this->itemsInLine = $this->getValueFromDB( "frontpage", "itemsInLine" );
$this->itemsInLine = $this->itemsInLine > 0 ? $this->itemsInLine : 2;
$this->defTemplate = $this->getValueFromDB( "general", "defTpl" );
if ( $this->defTemplate != 'default' ) {
$this->loadTplCss( $this->defTemplate );
}
$this->lineOnSite = $this->getValueFromDB( "frontpage", "lineOnSite" );
$this->lineOnSite = $this->lineOnSite > 0 ? $this->lineOnSite : 4;
$this->showCatListOnFp = $this->getValueFromDB( "frontpage", "showCatListOnFp" );
$this->showCatListInCat = $this->getValueFromDB( "frontpage", "showCatListInCat" );
$this->catListAs = $this->getValueFromDB( "frontpage", "catListAs" );
$this->catsListInLine = $this->getValueFromDB( "frontpage", "catsListInLine" );
$this->catsListInLine = $this->catsListInLine > 0 ? $this->catsListInLine : 1;
$this->showEntriesFromSubcats = $this->getValueFromDB( "frontpage", "showEntriesFromSubcats" );
$this->currency = $this->getValueFromDB( "editForm", "currency" );
$this->showIcoInVC = $this->getValueFromDB( "frontpage", "showIcoInVC" );
$this->showImgInVC = $this->getValueFromDB( "frontpage", "showImgInVC" );
$this->curencyDecSeparator = $this->getValueFromDB( "general", "curencyDecSeparator" );
$this->allowUserToEditEntry = $this->getValueFromDB( "general", "allowUserToEditEntry" );
$this->allowUserDelete = $this->getValueFromDB( "general", "allowUserDelete" );
$this->allowQuickEdit = $this->getValueFromDB( "general", "allowQuickEdit" );
$this->listingOrdering = $this->getValueFromDB( "general", "listingOrdering" );
$this->catsOrdering = $this->getValueFromDB( "general", "catsOrdering" );
$this->useMeta = $this->getValueFromDB( "general", "useMeta" );
$this->checkOutTime = date( 'Y-m-d H:i:s', time() - ( 5 * 60 * 60 ) + ( $this->offset * 60 * 60 ) );
$this->showComponentDescription = $this->getValueFromDB( "frontpage", "showComponentDescription" );
$this->showCatDesc = $this->getValueFromDB( "frontpage", "showCatDesc" );
$this->subcatsShow = $this->getValueFromDB( "frontpage", "subcatsShow" );
$this->subcatsNumber = $this->getValueFromDB( "frontpage", "subcatsNumber" );
$this->subcatsOrdering = $this->getValueFromDB( "frontpage", "subcatsOrdering" );
$this->subcatsNumber = $this->subcatsNumber > 0 ? $this->subcatsNumber : 2;
$this->sobi2BorderColor = $this->getValueFromDB( "general", "sobi2BorderColor" );
$this->sobi2BackgroundImg = $this->getValueFromDB( "general", "sobi2BackgroundImg" );
$this->maxCatsForEntry = $this->getValueFromDB( "editForm", "maxCatsForEntry" );
$this->showCatItemsCount = $this->getValueFromDB( "general", "showCatItemsCount" );
$this->allowUsingBackground = $this->getValueFromDB( "general", "allowUsingBackground" );
$this->pby = $this->getValueFromDB( "general", "pby" );
$this->allowAnoDetails = $this->getValueFromDB( "general", "allowAnoDetails" );
$this->basicPrice = $this->getValueFromDB( "general", "basicPrice" );
$this->showAlphaIndex = $this->getValueFromDB( "frontpage", "showAlphaIndex" );
$this->ajaxSearchSlidInAfterSearch = $this->getValueFromDB( "frontpage", "ajaxSearchSlidInAfterSearch" );
$this->ajaxSearchSlidInOnStart = $this->getValueFromDB( "frontpage", "ajaxSearchSlidInOnStart" );
$this->ajaxSearchUseSlider = $this->getValueFromDB( "frontpage", "ajaxSearchUseSlider" );
$this->ajaxSearchCatsForFields = $this->getValueFromDB( "frontpage", "ajaxSearchCatsForFields" );
$this->ajaxSearchCatsContHeight = $this->getValueFromDB( "frontpage", "ajaxSearchCatsContHeight" );
$this->ajaxSearchCatsFieldsDepend = $this->getValueFromDB( "frontpage", "ajaxSearchCatsFieldsDepend" );
$this->mailAdmGid = $this->getValueFromDB( "general", "mailAdmGid" );
$this->mailFieldId = $this->getValueFromDB( "general", "mailFieldId" );
$this->mailSoJ = $this->getValueFromDB( "general", "mailSoJ" );
$this->showComponentDescInSearch = $this->getValueFromDB( "search", "showComponentDescInSearch" );
$this->allowFeEntr = $this->getValueFromDB( "general", "allowFeEntr" );
$this->cmod = $this->key( "general", "change_file_permissions", false );
$this->dmod = $this->key( "general", "directories_permissions", 755 );
$this->fmod = $this->key( "general", "files_permissions", 664 );
$this->useFormTpl = $this->getValueFromDB( "general", "useFormTpl" );
$this->cacheL2Enabled = $this->getValueFromDB( "cache", "cacheL2Enabled" );
$this->cacheL2dvEnabled = $this->cacheL2Enabled ? $this->getValueFromDB( "cache", "cacheL2dvEnabled" ) : false;
$this->cacheL2Lifetime = $this->getValueFromDB( "cache", "cacheL2Lifetime" );
$this->cacheL2strLen = $this->getValueFromDB( "cache", "cacheL2strLen" );
$this->cacheL3Enabled = $this->getValueFromDB( "cache", "cacheL3Enabled" );
$this->cacheL3strLen = $this->getValueFromDB( "cache", "cacheL3strLen" );
sobi2Config::import( 'sobi2.cache.class' );
$this->sobiCache = new sobiCache( $this );
$this->forceMenuId = $this->getValueFromDB( "general", "forceMenuId" );
$Itemid = ( int ) sobi2Config::request( $_REQUEST, "Itemid", 0 );
if ( ! ( $this->forceMenuId ) && ! ( defined( "_SOBI2_ADMIN" ) ) ) {
$query = "SELECT COUNT(*) FROM `#__menu` WHERE `id` = {$Itemid} AND `link` LIKE '%com_sobi2%' AND `published` = '1'";
$this->database->setQuery( $query );
$c = $this->database->loadResult();
if ( $this->database->getErrorNum() ) {
trigger_error( "DB reports: " . $this->database->stderr(), E_USER_WARNING );
}
if ( ! $c ) {
$this->forceMenuId = true;
}
}
if ( ( $this->forceMenuId || ! $Itemid ) ) {
if ( ! ( class_exists( 'JFactory' ) ) ) {
$query = "SELECT `id` FROM `#__menu` WHERE `link` LIKE '%index.php?option=com_sobi2%' AND `type` = 'components' AND `published` = '1' LIMIT 1";
}
else {
$query = "SELECT `id` FROM `#__menu` WHERE `link` LIKE '%index.php?option=com_sobi2' AND `type` = 'component' AND `published` = '1' LIMIT 1";
}
$this->database->setQuery( $query );
$this->sobi2Itemid = $this->database->loadResult();
if ( $this->database->getErrorNum() ) {
trigger_error( "DB reports: " . $this->database->stderr(), E_USER_WARNING );
}
sobi2Config::loadBridge();
$menu = & sobi2bridge::jMenu( $this->database );
$menu->load( $this->sobi2Itemid );
if ( empty( $this->sobi2Itemid ) ) {
$this->sobi2Itemid = 0;
}
}
else {
$this->sobi2Itemid = ( int ) $Itemid;
}
$this->useDetailsView = $this->getValueFromDB( "frontpage", "useDetailsView" );
$this->useRSSfeed = $this->getValueFromDB( "general", "useRSSfeed" );
$this->useSigsiuTree = $this->key( "compat", "use_sigsiutree", true );
$aTreeImgs = $this->getValueFromDB( "general", "SigsiuTreeImages" );
$aTreeImgs = explode( ",", $aTreeImgs );
foreach ( $aTreeImgs as $img ) {
$img = explode( "=", $img );
$this->aTreeImages[ trim( $img[ 0 ] ) ] = trim( $img[ 1 ] );
unset( $img );
}
unset( $aTreeImgs );
$waySearchFields = $this->getValueFromDB( "general", "waySearchFields" );
$waySearchFields = explode( ";", $waySearchFields );
foreach ( $waySearchFields as $field ) {
if ( $field && ! empty( $field ) ) {
$field = explode( "=", $field );
$this->waySearchFields[ trim( $field[ 0 ] ) ] = trim( $field[ 1 ] );
}
}
$this->googleSmallMapControl = $this->key( "google_maps", "small_map_control", true );
$this->googleMapTypeControl = $this->key( "google_maps", "map_type_control", false );
$this->publishedItems = $this->key( "users_own_listing", "can_see_expired" ) ? 4 : 0;
if ($this->key( "users_own_listing", "can_see_unpublished" ) == 1) {
$this->publishedItems = ($this->publishedItems) ? 7 : 6;
}
$this->getEmails();
$this->getDetails();
$this->getEditForm();
$s = explode( '.', $_SERVER['SERVER_ADDR'] );
if ( ( !defined( '_SOBI_ADM_PATH' ) ) || ( sobi2Config::request( $_REQUEST, 'no_html' ) ) || strstr( $_SERVER['SERVER_NAME'], 'localhost' ) || ( isset( $s[ 0 ] ) && ( $s[ 0 ] == 192 || $s[ 0 ] == 127 ) ) ) {
$this->ssrs = 1;
}
$GLOBALS[ 'sobi2_config_construct_cs' ] = false;
}
/**
* @param string $tpl
*/
function loadTplCss ( $tpl )
{
if ( $css = sobi2Config::translateDirPath( "templates|{$tpl}|css", 'front', true ) ) {
$cssDir = opendir( $css );
while ( $file = readdir( $cssDir ) ) {
$f = explode( '.', $file );
if ( strtolower( $f[ count( $f ) - 1 ] ) == 'css' ) {
$this->loadCSS( "components/com_sobi2/templates/{$tpl}/css/{$file}" );
}
}
}
}
/**
* @param string $name
* @param mixed $attr
*/
function set ( $name, $attr )
{
$this->storeHouse[ $name ] = $attr;
}
/**
* @param string $name
* @param mixed $default
* @return mixed
*/
function get ( $name, $default = null )
{
return isset( $this->storeHouse[ $name ] ) ? $this->storeHouse[ $name ] : $default;
}
/**
* @param string $name
* @param mixed $attr
*/
function set_ ( $name, &$attr )
{
$this->storeHouse[ $name ] = &$attr;
}
/**
* @param string $name
* @param mixed $default
* @return mixed
*/
function &get_ ( $name )
{
return $this->storeHouse[ $name ];
}
/**
* @param string $name
* @return bool
*/
function isset_ ( $name )
{
return isset( $this->storeHouse[ $name ] ) ? true : false;
}
/**
* Converting gived ini-string to an array
*
* @param string $str
* @return array
*/
function iniToArr ( $str )
{
sobi2Config::import( "includes|helper.class" );
return sobi2Helper::iniToArr( $str );
}
/**
* Converting gived array to ini-string
*
* @param unknown_type $arr
* @return unknown
*/
function arrToIni ( $arr )
{
sobi2Config::import( "includes|helper.class" );
return sobi2Helper::arrToIni( $arr );
}
/**
* @param string $section
* @param string $key
* @param string $def
* @return string
*/
function &key ( $section, $key = null, $def = false )
{
if ( ! $key ) {
if ( is_array( $this->settings ) && isset( $this->settings[ $section ] ) ) {
return $this->settings[ $section ];
}
else {
return $def;
}
}
elseif ( is_array( $this->settings ) && isset( $this->settings[ $section ][ $key ] ) ) {
return $this->settings[ $section ][ $key ];
}
else {
return $def;
}
}
/**
* importing file
*
* @param string $path
* @param string $start
* @param string $ext
* @param bool $require
* @param bool $once
* @param bool $warning
*/
function import ( $path, $start = "front", $warning = true, $once = true, $ext = ".php" )
{
switch ( $start )
{
case "root":
$include = _SOBI_CMSROOT . DS;
break;
case "front":
$include = _SOBI_FE_PATH . DS;
break;
case "adm":
if ( defined( "_SOBI_ADM_PATH" ) ) {
$include = _SOBI_ADM_PATH . DS;
}
else {
return false;
}
break;
default:
case "absolute":
$include = null;
break;
}
if ( strstr( $path, $ext ) ) {
$ext = null;
}
$include = $include ? $include . DS . $path . $ext : $path . $ext;
$include = str_replace( '|', DS, $include );
$include = str_replace( DS . DS, DS, $include );
if ( ! file_exists( $include ) || ! is_readable( $include ) ) {
if ( $warning ) {
trigger_error( "sobi2Config::import(): File {$include} does not exist or is not readable.", E_USER_WARNING );
}
return false;
}
else {
if ( $once ) {
if ( ! include_once ( $include ) ) {
if ( $warning ) {
trigger_error( "sobi2Config::import(): Cannot import file {$include}", E_USER_WARNING );
}
return false;
}
else {
return true;
}
}
else {
if ( ! include ( $include ) ) {
if ( $warning ) {
trigger_error( "sobi2Config::import(): Cannot import file {$include}", E_USER_WARNING );
}
return false;
}
else {
return true;
}
}
}
}
/**
* Enter description here...
*
* @param string $path
* @param string $start
* @param bool $existCheck
* @param string $ext
* @return string
*/
function translatePath ( $path, $start = "front", $existCheck = true, $ext = ".php" )
{
switch ( $start )
{
case "root":
$spoint = _SOBI_CMSROOT . DS;
break;
case "front":
$spoint = _SOBI_FE_PATH . DS;
break;
case "adm":
if ( defined( "_SOBI_ADM_PATH" ) ) {
$spoint = _SOBI_ADM_PATH . DS;
}
else {
return false;
}
break;
case "absolute":
default:
$spoint = null;
break;
}
if ( strlen( $ext ) && strstr( $path, $ext ) ) {
$ext = null;
}
$path = $spoint ? $spoint . DS . $path . $ext : $path . $ext;
$path = str_replace( "|", DS, $path );
$path = str_replace( DS . DS, DS, $path );
if ( $existCheck ) {
if ( ! file_exists( $path ) || ! is_readable( $path ) ) {
return false;
}
else {
return $path;
}
}
else {
return $path;
}
}
/**
* @param string $path
* @param string $start
* @param bool $existCheck
* @return string
*/
function translateDirPath ( $path, $start = "front", $existCheck = false )
{
return sobi2Config::translatePath( $path, $start, $existCheck, null );
}
/**
* @return mosUser
*/
function &getUser ()
{
return $this->user;
}
/**
* @return database
*/
function &getDb ()
{
return $this->database;
}
/**
* @return string
*/
function getAbsolutePath ()
{
return $this->absolutePath;
}
/**
* @return string
*/
function getLiveSite ()
{
return $this->liveSite;
}
/**
* @return string
*/
function getGlobalLang ()
{
return $this->globalLang;
}
/**
* @return string
*/
function getSiteName ()
{
return $this->sitename;
}
/**
* @return mosMainFrame
*/
function &getMainframe ()
{
return $this->mainframe;
}
/**
* @return frontend
*/
function &getFrontend ()
{
return $this->frontend;
}
/**
* @return frontend
*/
function setFrontend ( &$frontend )
{
$this->frontend = &$frontend;
}
/**
* @return string
*/
function getOffset ()
{
return $this->offset;
}
/**
* @return string
*/
function parseTemplate ( $tpl, $content = null )
{
static $parsed = array();
if ( in_array( $tpl, $parsed ) ) {
return true;
}
$parsed[] = $tpl;
ini_set( "display_errors", "on" );
@ini_set( 'track_errors', '1' );
$url = $_SERVER[ 'REQUEST_URI' ] . "&err=1&no_html=1";
$config = & sobi2Config::getInstance();
if ( ! file_exists( $tpl ) ) {
trigger_error( "sobi2config::parseTemplate(): Template file |{$tpl}| does not exist " );
sobi2config::debOut( "sobi2config::parseTemplate(): Template file |{$tpl}| does not exist " );
return false;
}
else {
if ( ! $content ) {
ob_start();
$content = eval( '?' . '>' . rtrim( file_get_contents( $tpl ) ) );
ob_end_clean();
}
if ( $content === false ) {
ob_end_clean();
header( 'Expires: Mon, 26 Jul 1997 05:00:00 GMT' );
header( 'Last-Modified: ' . gmdate( 'D, d M Y H:i:s' ) . ' GMT' );
header( 'Cache-Control: no-cache' );
ob_start();
highlight_file( $tpl );
$tplContent = ob_get_contents();
ob_end_clean();
if ( $stream = fopen( "{$config->liveSite}/{$url}", 'r' ) ) {
if ( function_exists( "stream_get_contents" ) ) {
$err = stream_get_contents( $stream );
}
else {
$err = null;
while ( ! feof( $stream ) ) {
$err .= fread( $stream, 8192 );
}
}
fclose( $stream );
}
else {
$err = null;
}
$tplContent = explode( "<br />", $tplContent );
if ( $err ) {
$l = strpos( $err, "Parse error:" );
$err = substr( $err, $l );
$l = strpos( $err, "on line" );
$errNr = str_replace( "on line", null, substr( $err, $l ) );
$errNr = sobi2_ereg_replace( "[^0-9]", null, $errNr );
$err = str_replace( _SOBI_FE_PATH, " ... ", $err );
$err = str_replace( "Parse error", "Sobi2 template parse error", $err );
$config->debOut( $err );
}
if ( $tplContent && isset( $errNr ) && $errNr ) {
$counter = 0;
foreach ( $tplContent as $line ) {
$counter ++;
if ( $errNr && $counter == $errNr ) {
echo "<div style=\"color:red; border-color: #990000; border-style:solid\">{$counter} ";
}
else {
echo "<b style=\"color:black;\">{$counter}:</b> ";
}
echo $line;
if ( $errNr && $counter == $errNr ) {
echo "</div>";
}
else {
echo "<br/>";
}
}
exit();
}
else {
trigger_error( "sobi2config::parseTemplate(): Cannot parse template file |{$tpl}| " );
sobi2config::debOut( "sobi2config::parseTemplate(): Cannot parse template file |{$tpl}| " );
}
return false;
}
else {
return true;
}
}
}
/**
* singleton
*
* @return sobi2Config
*/
function &getInstance ()
{
if ( isset( $GLOBALS[ 'sobi2_config_construct_cs' ] ) && $GLOBALS[ 'sobi2_config_construct_cs' ] == true ) {
sobi2Config::debOut( "Critical Error: calling \"getInstance\" method from the config constructor." );
sobi2Config::debOut( "Please notify <a href=\"http://www.sigsiu.net/forum/index.php/board,21.0.html\">Sobi2 Development Team</a>" );
ob_start();
if ( function_exists( 'debug_print_backtrace' ) ) {
debug_print_backtrace();
}
else {
print_r( debug_backtrace() );
}
$bugtrace = ob_get_contents();
ob_end_clean();
$bugtrace = str_replace( "\n", '<br/>', $bugtrace );
$bugtrace = str_replace( _SOBI_CMSROOT, null, $bugtrace );
sobi2Config::debOut( 'Debug Output: <br/><span style="color: red;">' . $bugtrace . '<span>' );
exit();
}
static $config;
if ( defined( '_SOBI2_ADMIN' ) ) {
return adminConfig::getInstance();
}
if ( ! is_a( $config, 'sobi2Config' ) ) {
$config = new sobi2Config( );
}
return $config;
}
/**
* Adding selected css script to header
*
* @param string $script - script name to add
*/
function loadCSS ( $script )
{
$this->addCustomHeadTag( "<link rel=\"stylesheet\" href=\"{$this->liveSite}/{$script}\" type=\"text/css\"/>" );
}
/**
* Adding selected script to header
*
* @param string $script - script name to add
* @param string $ext - script file extension
* @param string $params - parameters for script
*/
function loadScript ( $script, $ext = 'js', $params = null )
{
$params = $params ? "?{$params}" : null;
static $l = array();
if ( ! key_exists( $script, $l ) ) {
$l[] = $script;
$this->addCustomHeadTag( "<script type=\"text/javascript\" src=\"{$this->liveSite}/components/com_sobi2/includes/js/{$script}.{$ext}{$params}\"></script>" );
}
}
/**
* adding javascript to header
* @param string $script
* @param bool $noScriptTag
*/
function addCustomScript ( $script, $addScriptTag = true, $skipComments = false )
{
$s = null;
$s = $addScriptTag ? "\n\t<script type=\"text/javascript\">" : null;
if ( ! $skipComments ) {
$s .= "\n\t<!--";
$s .= "\n\t/* <![CDATA[ */";
$s .= "\n\t\t" . $script;
$s .= "\n\t/* ]]> */";
$s .= "\n\t// -->";
}
else {
$s .= $script;
}
$s = $addScriptTag ? $s . "\n </script>" : $s;
$this->addCustomHeadTag( $s );
}
/**
* @param string $html
* @param bool $force
*/
function addCustomHeadTag ( $html, $force = false )
{
if ( ( defined( "_SOBI_MAMBO" ) && ( defined( "_SOBI2_ADMIN" ) || sobi2_eregi( "index2.php", $_SERVER[ 'REQUEST_URI' ] ) ) ) || $force ) {
if ( $this->forceCustomHead ) {
if ( ! ( $this->forceAddCustomHeadTags( $html ) ) ) {
echo "\n<!-- not possible to add head tag -> direct output --> \n\t {$html} \n <!--//-->\n\n";
}
}
else {
echo $html;
}
}
else {
$this->mainframe->addCustomHeadTag( $html );
}
$this->header .= $html;
}
/**
* @param string $html
*/
function appendPathWay ( $html )
{
if ( defined( "_JEXEC" ) && class_exists( "JRequest" ) ) {
$pattern = '/"[^"]*"/';
preg_match( $pattern, $html, $matches );
$url = isset( $matches[ 0 ] ) ? $matches[ 0 ] : null;
if ( ! $url ) {
$title = strip_tags( str_replace( " ", null, $html ) );
}
else {
$url = str_replace( array( '"' , $this->liveSite . "/" , "amp;" ), null, $url );
$title = strip_tags( str_replace( " ", null, $html ) );
}
$pathway = & $this->mainframe->getPathway();
$pathway->addItem( $title, $url );
}
else {
$this->mainframe->appendPathWay( $html );
}
}
/**
* @param string $title
*/
function setPageTitle ( $title )
{
$this->mainframe->setPageTitle( html_entity_decode( $title ) );
}
/**
* security function to check if user have permision to be an admin
* @return boolean
*/
function checkPerm ()
{
$this->admPermission = $this->getValueFromDB( 'adm', 'admPermission' );
$return = false;
if ( ! $this->admPermission ) {
if ( class_exists( 'JFactory' ) ) {
$user = & JFactory::getUser();
if ( $user->authorize( 'com_users', 'manage' ) ) {
$return = true;
}
}
else {
if ( $this->acl->acl_check( 'administration', 'manage', 'users', $this->user->usertype, 'components', 'com_users' ) ) {
$return = true;
}
else {
$return = false;
}
}
}
elseif ( $this->admPermission == 1 ) {
if ( class_exists( 'JFactory' ) ) {
$user = & JFactory::getUser();
if ( $user->authorize( 'com_content', 'edit', 'content', 'all' ) ) {
$return = true;
}
}
else {
if ( $this->acl->acl_check( 'action', 'edit', 'users', $this->user->usertype, 'content', 'all' ) ) {
$return = true;
}
else {
$return = false;
}
}
}
if ( count( $this->S2_plugins ) ) {
foreach ( $this->S2_plugins as $plugin ) {
if ( method_exists( $plugin, 'permissionsCheck' ) ) {
$plugin->permissionsCheck( $return );
}
}
}
return $return;
}
/**
* initialazing all parameters needed for new entry/edit form
*
*/
function getEditForm ()
{
if ( $this->user->id && ! $this->key( "edit_form", "seccode_registered", true ) ) {
$this->useSecurityCode = false;
}
else {
$this->useSecurityCode = defined( "_JEXEC" ) ? false : $this->getValueFromDB( "editForm", "useSecurityCode" );
}
$this->secImgBgColor = $this->getValueFromDB( "editForm", "secImgBgColor" );
$this->secImgFontColor = $this->getValueFromDB( "editForm", "secImgFontColor" );
$this->secImgLineColor = $this->getValueFromDB( "editForm", "secImgLineColor" );
$this->secImgBorderColor = $this->getValueFromDB( "editForm", "secImgBorderColor" );
$this->needToAcceptEntryRules = $this->getValueFromDB( "editForm", "needToAcceptEntryRules" );
$this->entryRulesURLextern = $this->getValueFromDB( "editForm", "entryRulesURLextern" );
if ( ! $this->catPrices = $this->key( "cats_payment" ) ) {
$this->catPrices[ 2 ] = $this->getValueFromDB( "editForm", "cat2price" );
$this->catPrices[ 3 ] = $this->getValueFromDB( "editForm", "cat3price" );
$this->catPrices[ 4 ] = $this->getValueFromDB( "editForm", "cat4price" );
$this->catPrices[ 5 ] = $this->getValueFromDB( "editForm", "cat5price" );
}
else {
$this->maxCatsForEntry = count( $this->catPrices );
}
$this->checkReferer = $this->getValueFromDB( "editForm", "checkReferer" );
$this->allowMultiTitle = $this->getValueFromDB( "editForm", "allowMultiTitle" );
$this->allowUsingImg = $this->getValueFromDB( "editForm", "allowUsingImg" );
if ( $this->allowUsingImg ) {
$this->priceForImg = $this->getValueFromDB( "editForm", "priceForImg" );
}
$this->allowUsingIco = $this->getValueFromDB( "editForm", "allowUsingIco" );
if ( $this->allowUsingIco ) {
$this->priceForIco = $this->getValueFromDB( "editForm", "priceForIco" );
}
$this->needToConfirmNew = $this->getValueFromDB( "editForm", "needToConfirmNew" );
$this->thumbWidth = $this->getValueFromDB( "editForm", "thumbWidth" );
$this->thumbHeigth = $this->getValueFromDB( "editForm", "thumbHeigth" );
$this->imgWidth = $this->getValueFromDB( "editForm", "imgWidth" );
$this->imgHeigth = $this->getValueFromDB( "editForm", "imgHeigth" );
$this->allowAnonymous = $this->getValueFromDB( "editForm", "allowAnonymous" );
$this->notifyAuthorNew = $this->getValueFromDB( "editForm", "notifyAuthorNew" );
$this->notifyAuthorChanges = $this->getValueFromDB( "editForm", "notifyAuthorChanges" );
$this->notifyAdminChanges = $this->getValueFromDB( "editForm", "notifyAdminChanges" );
$this->notifyAdmins = $this->getValueFromDB( "editForm", "notifyAdmins" );
$this->emailOnAppr = $this->getValueFromDB( "editForm", "emailOnAppr" );
$this->maxFileSize = $this->getValueFromDB( "editForm", "maxFileSize" ) / 1024;
$this->mailFooter = "\n\n" . $this->getValueFromDB( "editForm", "mailFooter" );
$this->allowAddingToParentCats = $this->getValueFromDB( "editForm", "allowAddingToParentCats" );
}
/**
* initialazing all parameters for details view
*
*/
function getDetails ()
{
$this->showIcoInDetails = $this->getValueFromDB( "details", "showIcoInDetails" );
$this->showImageInDetails = $this->getValueFromDB( "details", "showImageInDetails" );
$this->useWaySearch = $this->getValueFromDB( "details", "useWaySearch" );
$this->waySearchUrl = $this->getValueFromDB( "details", "waySearchUrl" );
$this->waySearchLabel = $this->getValueFromDB( "details", "waySearchLabel" );
$this->showHits = $this->getValueFromDB( "details", "showHits" );
$this->showAddedDate = $this->getValueFromDB( "details", "showAddedDate" );
$this->useGoogleMaps = $this->getValueFromDB( "details", "useGoogleMaps" );
if ( $this->useGoogleMaps ) {
$this->getGoogleMaps();
}
}
/**
* initialazing all parameters for payment class
*/
function getPayment ()
{
$this->mailFees = $this->getValueFromDB( "payment", "mailFees" );
$this->mailFeesAdm = $this->getValueFromDB( "payment", "mailFeesAdm" );
$this->useBankTransfer = $this->getValueFromDB( "payment", "useBankTransfer" );
$this->usePayPal = $this->getValueFromDB( "payment", "usePayPal" );
$this->bankData = /*$this->getSobiStr*/( $this->getValueFromDB( "payment", "bankData" ) );
$this->payPalMail = $this->getValueFromDB( "payment", "payPalMail" );
$this->payPalUrl = $this->getValueFromDB( "payment", "payPalUrl" );
if ( ! $this->payPalUrl ) {
$this->payPalUrl = "https://www.paypal.com/cgi-bin/webscr";
}
$this->payTitle = $this->getSobiStr( $this->getValueFromDB( "payment", "payTitle" ) );
$this->payPalCurrency = $this->getValueFromDB( "payment", "payPalCurrency" );
$this->payPalReturnUrl = $this->getValueFromDB( "payment", "payPalReturnUrl" );
if ( ! $this->payPalReturnUrl ) {
$this->payPalReturnUrl = $this->liveSite;
}
$this->mailFooter = "\n\n" . $this->getValueFromDB( "editForm", "mailFooter" );
}
/**
* initialazing all parameters needed for google maps
*/
function getGoogleMaps ()
{
$this->googleMapsApiKey = $this->getValueFromDB( "google", "googleMapsApiKey" );
$this->googleMapsBubble = $this->getValueFromDB( "google", "googleMapsBubble" );
$this->googleMapsHeight = $this->getValueFromDB( "google", "googleMapsHeight" );
$this->googleMapsLatField = $this->getValueFromDB( "google", "googleMapsLatField" );
$this->googleMapsLongField = $this->getValueFromDB( "google", "googleMapsLongField" );
$this->googleMapsWidth = $this->getValueFromDB( "google", "googleMapsWidth" );
$this->googleMapsZoom = $this->getValueFromDB( "google", "googleMapsZoom" );
}
function restoreDefaultErrorHandler ()
{
restore_error_handler();
}
/**
* returning subcategories info
*
* @param integer $parent
* @return array
*/
function getCategories ( $parent = 1 )
{
$published = null;
if ( $parent < 1 ) {
$parent = 1;
}
if ( ! ( defined( '_SOBI2_ADMIN' ) ) ) {
$published = " published = 1 AND ";
}
/* don't know exactly why but if I do it with only one query this whole thing will not be translate with JoomFish */
/* Only if I split it in two queries it will b translated */
$query = "SELECT relations.catid " . "FROM `#__sobi2_categories`" . "LEFT JOIN `#__sobi2_cats_relations` AS relations ON `#__sobi2_categories`.catid = relations.catid " . "WHERE `parentid` = {$parent} AND `published` = 1 ";
$this->database->setQuery( $query );
$cids = $this->database->loadResultArray();
if ( $this->database->getErrorNum() ) {
trigger_error( "DB reports: " . $this->database->stderr(), E_USER_WARNING );
}
if ( count( $cids ) ) {
$ids = ( ! empty( $cids ) ) ? implode( " , ", $cids ) : null;
$query = "SELECT * FROM #__sobi2_categories WHERE catid IN({$ids}) AND published = 1 ORDER BY {$this->catsOrdering}";
$this->database->setQuery( $query );
}
$return = $this->database->loadObjectList();
if ( $this->database->getErrorNum() ) {
trigger_error( "DB reports: " . $this->database->stderr(), E_USER_WARNING );
}
return $return;
}
/**
* getting childs cats for a category
*
* @param int $catid
* @param array $catChilds
*/
function getChildCats ( $catid, &$catChilds )
{
if ( $catid != 1 ) {
array_push( $catChilds, $catid );
}
$query = "SELECT `catid` FROM `#__sobi2_cats_relations` WHERE `parentid`={$catid}";
$this->database->setQuery( $query );
$results = $this->database->loadObjectList();
/*
* if we still have a results
*/
if ( count( $results ) > 0 && $results != - 100 ) {
foreach ( $results as $result ) {
$this->getChildCats( $result->catid, $catChilds );
}
}
}
/**
* returning parent cats for
*
* @param integer $catid
* @param array $parents
*/
function getParentCats ( $catid, &$parents )
{
static $store = array();
static $subject = 0;
if ( ! isset( $store[ $catid ] ) ) {
if ( ! $subject ) {
$subject = $catid;
}
//hole papa von catid
$query = "SELECT parentid FROM #__sobi2_cats_relations WHERE catid={$catid}";
$this->database->setQuery( $query );
$r = $this->database->loadResult();
// if we still have a results
array_push( $parents, $catid );
if ( $r && $r > 1 ) {
$this->getParentCats( $r, $parents );
}
/* otherwise we are at the begin of the list, so we need to store it */
else {
$store[ $subject ] = $parents;
$subject = 0;
}
}
else {
$parents = array_merge( $parents, $store[ $catid ] );
$store[ $subject ] = $parents;
$subject = 0;
}
}
/**
* give all emails textes and titles
*
* @param string $lang - language
* @param boolean $remark - remark if sending email. No remark if editing email templates
*/
function getEmails ( $lang = null, $remark = true )
{
if ( ! $lang ) {
$lang = $this->sobi2Language;
}
$this->notifyAuthorNew = ( $this->getValueFromDB( "editForm", "notifyAuthorNew" ) );
$this->notifyAuthorChanges = ( $this->getValueFromDB( "editForm", "notifyAuthorChanges" ) );
$this->notifyAdminChanges = ( $this->getValueFromDB( "editForm", "notifyAdminChanges" ) );
$this->notifyAdmins = ( $this->getValueFromDB( "editForm", "notifyAdmins" ) );
$this->emailOnAppr = ( $this->getValueFromDB( "editForm", "emailOnAppr" ) );
$this->mailFeesAdm = ( $this->getValueFromDB( "payment", "mailFeesAdm" ) );
$this->notifyAuthorRenew = ( $this->getValueFromDB( "editForm", "emailOnRenew" ) );
$this->notifyAdminRenew = ( $this->getValueFromDB( "editForm", "emailOnRenewAdm" ) );
/*
* emails for admin
*/
$this->AdmEmailOnSubmitText = $this->getSobiStr( $this->getValueFromDB( "editForm", "email_on_submit_text" ) );
$this->AdmEmailOnSubmitTitle = $this->getSobiStr( $this->getValueFromDB( "editForm", "email_on_submit_title" ) );
$this->AdmEmailOnUpdateText = $this->getSobiStr( $this->getValueFromDB( "editForm", "email_on_update_text" ) );
$this->AdmEmailOnUpdateTitle = $this->getSobiStr( $this->getValueFromDB( "editForm", "email_on_update_title" ) );
$this->AdmEmailPaymentsText = $this->getSobiStr( $this->getValueFromDB( "payment", "email_payments_text" ) );
$this->AdmEmailPaymentsTitle = $this->getSobiStr( $this->getValueFromDB( "payment", "email_payments_title" ) );
$this->AdmEmailOnRenewText = $this->getSobiStr( $this->getValueFromDB( "editForm", "email_on_renew_text" ) );
$this->AdmEmailOnRenewTitle = $this->getSobiStr( $this->getValueFromDB( "editForm", "email_on_renew_title" ) );
/*
* emails for user
*/
$this->UserEmailOnApproveText = $this->getSobiStr( $this->getLangValue( "email_on_approve_text", "description", $lang ) );
$this->UserEmailOnApproveTitle = $this->getSobiStr( $this->getLangValue( "email_on_approve_title", "description", $lang ) );
$this->UserEmailOnSubmitText = $this->getSobiStr( $this->getLangValue( "email_on_submit_text", "description", $lang ) );
$this->UserEmailOnSubmitTitle = $this->getSobiStr( $this->getLangValue( "email_on_submit_title", "description", $lang ) );
$this->UserEmailOnUpdateText = $this->getSobiStr( $this->getLangValue( "email_on_update_text", "description", $lang ) );
$this->UserEmailOnUpdateTitle = $this->getSobiStr( $this->getLangValue( "email_on_update_title", "description", $lang ) );
$this->UserEmailPaymentsText = $this->getSobiStr( $this->getLangValue( "email_payments_text", "description", $lang ) );
$this->UserEmailPaymentsTitle = $this->getSobiStr( $this->getLangValue( "email_payments_title", "description", $lang ) );
$this->UserEmailOnRenewText = $this->getSobiStr( $this->getLangValue( "email_on_renew_text", "description", $lang ) );
$this->UserEmailOnRenewTitle = $this->getSobiStr( $this->getLangValue( "email_on_renew_title", "description", $lang ) );
/*
* if not editing
*/
if ( $remark ) {
$this->AdmEmailOnSubmitText = $this->stringDecode( $this->AdmEmailOnSubmitText );
$this->AdmEmailOnSubmitTitle = $this->stringDecode( $this->AdmEmailOnSubmitTitle );
$this->AdmEmailOnUpdateText = $this->stringDecode( $this->AdmEmailOnUpdateText );
$this->AdmEmailPaymentsText = $this->stringDecode( $this->AdmEmailPaymentsText );
$this->AdmEmailPaymentsTitle = $this->stringDecode( $this->AdmEmailPaymentsTitle );
$this->AdmEmailOnRenewText = $this->stringDecode( $this->AdmEmailOnRenewText );
$this->AdmEmailOnRenewTitle = $this->stringDecode( $this->AdmEmailOnRenewTitle );
$this->UserEmailOnApproveText = $this->stringDecode( $this->UserEmailOnApproveText );
$this->UserEmailOnApproveTitle = $this->stringDecode( $this->UserEmailOnApproveTitle );
$this->UserEmailOnSubmitText = $this->stringDecode( $this->UserEmailOnSubmitText );
$this->UserEmailOnSubmitTitle = $this->stringDecode( $this->UserEmailOnSubmitTitle );
$this->UserEmailOnUpdateText = $this->stringDecode( $this->UserEmailOnUpdateText );
$this->UserEmailOnUpdateTitle = $this->stringDecode( $this->UserEmailOnUpdateTitle );
$this->UserEmailPaymentsText = $this->stringDecode( $this->UserEmailPaymentsText );
$this->UserEmailPaymentsTitle = $this->stringDecode( $this->UserEmailPaymentsTitle );
$this->UserEmailOnRenewText = $this->stringDecode( $this->UserEmailOnRenewText );
$this->UserEmailOnRenewTitle = $this->stringDecode( $this->UserEmailOnRenewTitle );
$this->AdmEmailOnSubmitText = $this->replaceMarkers( $this->AdmEmailOnSubmitText );
$this->AdmEmailOnSubmitTitle = $this->replaceMarkers( $this->AdmEmailOnSubmitTitle );
$this->UserEmailOnSubmitText = $this->replaceMarkers( $this->UserEmailOnSubmitText );
$this->UserEmailOnSubmitTitle = $this->replaceMarkers( $this->UserEmailOnSubmitTitle );
$this->AdmEmailOnUpdateText = $this->replaceMarkers( $this->AdmEmailOnUpdateText );
$this->AdmEmailOnUpdateTitle = $this->replaceMarkers( $this->AdmEmailOnUpdateTitle );
$this->AdmEmailOnRenewText = $this->replaceMarkers( $this->AdmEmailOnRenewText );
$this->AdmEmailOnRenewTitle = $this->replaceMarkers( $this->AdmEmailOnRenewTitle );
$this->AdmEmailPaymentsText = $this->replaceMarkers( $this->AdmEmailPaymentsText );
$this->AdmEmailPaymentsTitle = $this->replaceMarkers( $this->AdmEmailPaymentsTitle );
$this->UserEmailPaymentsText = $this->replaceMarkers( $this->UserEmailPaymentsText );
$this->UserEmailPaymentsTitle = $this->replaceMarkers( $this->UserEmailPaymentsTitle );
$this->UserEmailOnApproveText = $this->replaceMarkers( $this->UserEmailOnApproveText );
$this->UserEmailOnApproveTitle = $this->replaceMarkers( $this->UserEmailOnApproveTitle );
$this->UserEmailOnUpdateText = $this->replaceMarkers( $this->UserEmailOnUpdateText );
$this->UserEmailOnUpdateTitle = $this->replaceMarkers( $this->UserEmailOnUpdateTitle );
$this->UserEmailOnRenewText = $this->replaceMarkers( $this->UserEmailOnRenewText );
$this->UserEmailOnRenewTitle = $this->replaceMarkers( $this->UserEmailOnRenewTitle );
}
}
/**
* Replacing general placeholders
*
* @param string $string - string to replace
* @return string $string
*/
function replaceMarkers ( $string )
{
$string = str_replace( "{sobi}", $this->componentName, $string );
$string = str_replace( "{sitename}", $this->sitename, $string );
if ( ! defined( '_SOBI2_ADMIN' ) && is_object( $this->user ) ) {
$string = str_replace( "{user}", $this->user->username, $string );
}
$string = str_replace( "{expiration_time}", $this->entryExpirationTime, $string );
return $string;
}
/**
* encoding email subject to 7-Bit ASCII
*
* @param string $str
* @return string
*/
function makeSubject ( $str )
{
if ( $this->key( "string", "mail_subject_base64", true ) ) {
$iso = defined( "_ISO" ) ? explode( '=', _ISO ) : array( null , "UTF-8" );
$str = base64_encode( $str );
$str = "=?{$iso[1]}?B?{$str}=?=";
}
return $str;
}
/**
* giving all available languages
*
* @param boolean $sbox - if sbox, returning it as selectbox.
* @param string $selected - selected language in selectbox
* @param string $js - javaScript for selectbox
* @param string $name - name of selectbox
* @return array
*/
function getLanguages ( $sbox = true, $selected = null, $js = null, $name = 'slang' )
{
sobi2Config::import( "includes|helper.class" );
return sobi2Helper::getLanguages( $sbox, $selected, $js, $name );
}
/**
* Enter description here...
*
* @param array $arr named array
* @param string $name key to search for
* @param mixed $def default value
* @param int $mask
* @return mixed
*/
function request ( &$arr, $name, $def = null, $mask = 0 )
{
if ( defined( "_JEXEC" ) && class_exists( "JRequest" ) ) {
if ( $arr === $_REQUEST ) {
$array = 'default';
}
elseif ( $arr === $_POST ) {
$array = 'POST';
}
elseif ( $arr === $_GET ) {
$array = 'GET';
}
elseif ( $arr === $_COOKIE ) {
$array = 'COOKIE';
}
elseif ( $arr === $_SERVER ) {
$array = 'SERVER';
}
elseif ( $arr === $_FILES ) {
$array = 'FILES';
}
elseif ( $arr === $_ENV ) {
$array = 'ENV';
}
return JRequest::getVar( $name, $def, $array, 'none', $mask );
}
else {
return mosGetParam( $arr, $name, $def, $mask );
}
}
/**
* @param string $url
* @return string
*/
function sef ( $url )
{
$config = & sobi2Config::getInstance();
if ( $config->key( 'general', 'extended_menu', true ) && class_exists( 'JURI' ) ) {
$url = $config->itemid( $url );
}
if ( $config->key( 'frontpage', 'sef_on', true ) ) {
if ( class_exists( 'JURI' ) ) {
$url = str_replace( '&', '&', $url );
$uri = JURI::getInstance();
$prefix = $uri->toString( array( 'scheme' , 'host' , 'port' ) );
$JURL = $prefix . JRoute::_( $url );
return $JURL;
}
else {
return sefRelToAbs( $url );
}
}
else {
return $config->liveSite . '/' . $url;
}
}
/**
* Check if given category is linked in Joomla! main manu
*
* @param int $cid
* @return int
*/
function checkCatItemid ( $cid )
{
$this->initMenu();
return isset( $this->links[ $cid ] ) ? $this->links[ $cid ][ 'id' ] : false;
}
/**
* Check if given category is linked in Joomla! main manu
*
* @param int $cid
* @return int
*/
function checkItemid ( $request = null, $parents = true )
{
$this->initMenu();
$Itemid = $this->checkCatItemid( $request );
if ( ! $Itemid ) {
if ( is_numeric( $request ) && $parents ) {
$parents = array();
$this->getParentCats( ( int ) $request, $parents );
if ( count( $parents ) ) {
$parents = array_reverse( $parents );
foreach ( $parents as $cid ) {
if ( isset( $this->links[ $cid ] ) ) {
$Itemid = $this->links[ $cid ][ 'id' ];
break;
}
}
}
}
}
return $Itemid ? $Itemid : $this->links[ 'default' ][ 'id' ];
}
/**
* Get all data from Joomla! 1.5 menu links to Sobi2
*/
function initMenu ()
{
if ( empty( $this->links ) ) {
$db = & $this->getDb();
$db->setQuery( 'SELECT id, link, name FROM #__menu WHERE link LIKE "%index.php?option=com_sobi2%" AND type = "component" AND published = 1' );
$items = $db->loadObjectList();
if ( count( $items ) ) {
foreach ( $items as $item ) {
if ( strstr( $item->link, 'catid' ) ) {
$link = null;
preg_match( '/catid=(\d+)/', $item->link, $link );
if ( ! empty( $link ) && isset( $link[ 1 ] ) ) {
$this->links[ $link[ 1 ] ][ 'id' ] = $item->id;
$this->links[ $link[ 1 ] ][ 'name' ] = $item->name;
}
if ( ! $link[ 1 ] ) {
$this->links[ 'default' ][ 'id' ] = $item->id;
}
}
elseif ( strstr( $item->link, 'sobi2Task' ) ) {
$link = null;
preg_match( '/sobi2Task=(\w+)/', $item->link, $link );
if ( ! empty( $link ) && isset( $link[ 1 ] ) ) {
$this->links[ $link[ 1 ] ][ 'id' ] = $item->id;
$this->links[ $link[ 1 ] ][ 'name' ] = $item->name;
}
}
else {
$this->links[ 'default' ][ 'id' ] = $item->id;
}
}
if ( ! isset( $this->links[ 'default' ] ) ) {
if ( ! $this->sobi2Itemid ) {
$query = "SELECT `id` FROM `#__menu` WHERE `link` LIKE '%index.php?option=com_sobi2' AND `type` = 'component' AND `published` = '1' LIMIT 1";
$this->database->setQuery( $query );
$this->sobi2Itemid = $this->database->loadResult();
}
$this->links[ 'default' ][ 'id' ] = $this->sobi2Itemid;
}
}
else {
$this->links[ 'default' ][ 'id' ] = 0;
}
}
}
function __destruct ()
{
if ( self::request( $_REQUEST, 'no_html', 0 ) ) {
return false;
}
self::debOut( '<h4>Debug End</h4><hr/>', false, true );
if ( count( $this->debStore ) > 1 ) {
echo '<pre style="background-color: #ffffff; background-image: none; padding-left: 10px;" class="sobi2debug">';
echo implode( '<hr/>', $this->debStore );
echo '</pre>';
}
}
function getSelectedCats ( $sid )
{
static $entry_catids = array();
if (!isset($entry_catids[$sid])) {
$config = & sobi2Config::getInstance();
$db = & $config->getDb();
$query = "SELECT rel.catid FROM #__sobi2_categories AS cat LEFT JOIN #__sobi2_cat_items_relations AS rel ON cat.catid = rel.catid AND cat.published = 1 WHERE itemid = {$sid} ";
$db->setQuery( $query );
$r = $db->loadResultArray();
if ( $db->getErrorNum() ) {
trigger_error( "sobi_sef::getSelectedCats(): DB reports: " . $db->stderr(), E_USER_WARNING );
}
$entry_catids[$sid] = $r;
}
return $entry_catids[$sid];
}
/**
* Parse url and replace Itemid if necessary
*
* @param string $url
* @return string
*/
function itemid ( $url )
{
if ( class_exists( 'JURI' ) ) {
static $store = array();
$hold = str_replace( array( 'index.php?option=com_sobi2' , '&' , '&' ), array( null , '|' , '|' ), $url );
if ( isset( $store[ $hold ] ) && ! empty( $store[ $hold ] ) ) {
return $store[ $hold ];
}
$this->initMenu();
$link = null;
if (strstr($url, 'catid')) {
preg_match( '/catid=(\d+)/', $url, $link );
}
if ( !empty($link) && isset($link[1]) && ($link[1] != 0) && ($link[1] != 1) ) {
if ( ! $link[ 1 ] ) {
$url = str_replace( array( '&catid=0' , '&catid=0' ), null, $url );
$url = preg_replace( '/Itemid=(\d+)/', "Itemid={$this->links[ 'default' ][ 'id' ]}", $url );
return $url;
}
$Itemid = $this->links[ 'default' ][ 'id' ];
if ( isset( $this->links[ $link[ 1 ] ] ) ) {
$Itemid = $this->links[ $link[ 1 ] ][ 'id' ];
}
/* if not me, maybe my parent */
else {
$parents = array();
$this->getParentCats( $link[ 1 ], $parents );
if ( count( $parents ) ) {
$parents = array_reverse( $parents );
foreach ( $parents as $cid ) {
if ( isset( $this->links[ $cid ] ) ) {
$Itemid = $this->links[ $cid ][ 'id' ];
}
}
}
}
$url = preg_replace( '/(Itemid=)(\d+)/', "Itemid={$Itemid}", $url );
}
elseif ( strstr( $url, 'sobi2Task' ) ) {
$link = null;
preg_match( '/sobi2Task=(\w+)/', $url, $link );
if ( ! empty( $link ) && isset( $link[ 1 ] ) ) {
if ($link[1] == 'sobi2Details') { //wenn Detailansicht
$link = null;
preg_match( '/sobi2Id=(\d+)/', $url, $link );
$cids = $this->getSelectedCats($link[1]);
$id = $this->checkItemid( $cids[ 0 ] );
$url = preg_replace( '/Itemid=(\d+)/', "Itemid={$id}", $url );
}
else {
if ( isset( $this->links[ $link[ 1 ] ] ) ) {
$url = preg_replace( '/Itemid=(\d+)/', "Itemid={$this->links[ $link[ 1 ] ][ 'id' ]}", $url );
}
}
}
}
else {
$url = preg_replace( '/Itemid=(\d+)/', "Itemid={$this->links[ 'default' ][ 'id' ]}", $url );
}
$store[ $hold ] = $url;
}
return $url;
}
function fixItemid( $url )
{
if( strstr( $url, 'com_sobi2' ) && !defined( '_SOBI2_ADMIN' ) ) {
if ( strstr( $url, 'catid' ) ) {
$link = null;
preg_match( '/catid=(\d+)/', $url, $link );
if ( ! empty( $link ) && isset( $link[ 1 ] ) ) {
$id = $this->checkItemid( $link[ 1 ] );
}
}
elseif ( strstr( $url, 'sobi2Task' ) ) {
$link = null;
preg_match( '/sobi2Task=(\w+)/', $url, $link );
if ( ! empty( $link ) && isset( $link[ 1 ] ) ) {
$id = $this->checkItemid( $link[ 1 ], false );
}
}
preg_match( '/Itemid=(\d+)/', $url, $link );
if ( ! empty( $link ) && isset( $link[ 1 ] ) ) {
$Itemid = $link[ 1 ];
}
if (isset( $id )) {
if( $Itemid && ($Itemid != $id) ) {
$url = str_replace( 'Itemid='.$Itemid, 'Itemid='.$id , $url );
}
else {
$url .= '&Itemid='.$id;
}
}
}
return $url;
}
/**
* @param string $url
* @param string $msg
*/
function redirect ( $url, $msg = null )
{
$config =& sobi2Config::getInstance();
$url = $config->fixItemid( $url );
if ( defined( '_JEXEC' ) && class_exists( 'JFactory' ) ) {
$msg = strip_tags( $msg );
$url = str_replace( "&", "&", $url );
$m = JFactory::getApplication( 'site' );
$m->redirect( $url, $msg );
}
sobi2Config::import( 'includes|phpInputFilter|class.inputfilter', 'root' );
$iFilter = new InputFilter( );
$url = $iFilter->process( $url );
if ( $iFilter->badAttributeValue( array( 'href' , $url ) ) ) {
$url = "index.php";
}
else {
if ( ! empty( $msg ) ) {
$msg = $iFilter->process( $msg );
}
if ( trim( $msg ) ) {
if ( strpos( $url, '?' ) ) {
$url .= '&mosmsg=' . urlencode( $msg );
}
else {
$url .= '?mosmsg=' . urlencode( $msg );
}
}
}
if ( headers_sent() ) {
echo "<script>document.location.href='{$url}';</script>\n";
}
else {
@ob_end_clean(); // clear output buffer
header( 'HTTP/1.1 301 Moved Permanently' );
header( "Location: " . $url );
}
exit();
}
/**
* getting language depends values
*
* @param string $key - config key to get
* @param string $value - field to get (configKey or description for lang keys)
* @param string $lang - language for this key
* @return string
*/
function getLangValue ( $key, $value, $lang = null )
{
if ( ! $lang ) {
$lang = $this->sobi2Language;
}
static $langValues = array();
static $loaded = false;
if ( ! $loaded ) {
$query = "SELECT * FROM `#__sobi2_language` ORDER BY `sobi2Lang`";
$this->database->setQuery( $query );
$v = $this->database->loadObjectList();
if ( $this->database->getErrorNum() ) {
trigger_error( "DB reports: " . $this->database->stderr(), E_USER_WARNING );
}
if ( ! empty( $v ) ) {
foreach ( $v as $k ) {
$langValues[ $k->sobi2Lang ][ $k->langKey ] = array( "langValue" => $k->langValue , "description" => $k->description , "sobi2Section" => $k->sobi2Section , "fieldid" => $k->fieldid );
}
}
$loaded = true;
}
$curLangValues = & $langValues[ $lang ];
if ( isset( $curLangValues[ $key ] ) && $curLangValues[ $key ] ) {
$return = $curLangValues[ $key ][ $value ];
}
else {
$query = "SELECT `{$value}` FROM `#__sobi2_language` " . "WHERE (`langKey` = '{$key}' AND `sobi2Lang` = '{$lang}')";
$this->database->setQuery( $query );
$return = $this->database->loadResult();
if ( $this->database->getErrorNum() ) {
trigger_error( "DB reports: " . $this->database->stderr(), E_USER_WARNING );
}
else
if ( ! $return ) {
$query = "SELECT `{$value}` FROM `#__sobi2_language` " . "WHERE (`langKey` = '{$key}' AND `sobi2Lang` = 'english')";
$this->database->setQuery( $query );
$return = $this->database->loadResult();
if ( $this->database->getErrorNum() ) {
trigger_error( "DB reports: " . $this->database->stderr(), E_USER_WARNING );
}
}
}
return $return;
}
/**
* This function getting values from Databes for configuration keys
*
* @param string $sobi2Section
* @param string $configKey
* @return string
*/
function getValueFromDB ( $sobi2Section, $configKey )
{
if ( ! isset( $this->configValues[ $configKey ] ) ) {
$query = "SELECT `configValue` FROM `#__sobi2_config` " . "WHERE (`configKey` = '{$configKey}' " . "AND `sobi2Section` = '{$sobi2Section}')";
$this->database->setQuery( $query );
$return = $this->database->loadResult();
if ( $this->database->getErrorNum() ) {
trigger_error( "DB reports: " . $this->database->stderr(), E_USER_WARNING );
}
else
return $return;
}
else {
return $this->configValues[ $configKey ];
}
}
/**
* lists all existing fields
*
* @param string $selected
* @param string $name
* @return sobiHTML::selectList
*/
function getExistingFieldsList ( $selected, $name = 'field' )
{
sobi2Config::import( "includes|helper.class" );
return sobi2Helper::getExistingFieldsList( $selected, $name );
}
/**
* getting latitude and longitude for google maps
*
* @param integer $sobiId - id of sobi entry
* @return array
*/
function getGeoPosition ( $sobiId )
{
sobi2Config::import( "includes|helper.class" );
return sobi2Helper::getGeoPosition( $sobiId );
}
/**
* getting null date for database
*
* @return string
*/
function getNullDate ()
{
/*
* fix for mambo (by Websmurf)
*/
if ( function_exists( "database::getNullDate" ) ) {
$nullDate = $this->database->getNullDate();
}
else {
$nullDate = "0000-00-00 00:00:00";
}
return $nullDate;
}
/**
* Function to check if a Header Tag ($headTag) has already been output in the HTML Header and if not, output it.
*
* @param string $headTag
* @return bool
*/
function forceAddCustomHeadTags ( $headTag )
{
/* Save the existing output buffer */
$buf = ob_get_contents();
$buf = trim( $buf );
if ( ! strstr( $buf, "<head>" ) ) {
return false;
}
if ( ! empty( $buf ) && ! headers_sent() ) {
/* Clean (erase) the output buffer */
ob_clean();
/* 'i' for case-insensitive search */
$strMatch = '/<\/head>/i';
$strReplace = $headTag . "</head>";
/* find and replace the first string match only */
if ( ! ( $buf = preg_replace( $strMatch, $strReplace, $buf, 1 ) ) ) {
echo $buf;
return false;
}
if ( ! strstr( $buf, $headTag ) ) {
echo $buf;
return false;
}
/* Output the updated output buffer */
echo $buf;
return true;
}
return false;
}
/**
* returning mos date or mos date + number of days
*
* @param integer $days
* @return datetime
*/
function getTimeAndDate ( $days = null )
{
if ( $days ) {
return date( 'Y-m-d H:i:s', time() + ( $days * 24 * 60 * 60 ) + ( $this->getOffset() * 60 * 60 ) );
}
else {
return date( 'Y-m-d H:i:s', time() + $this->getOffset() * 60 * 60 );
}
}
/**
* not used anymore.
*
* @param string $string
* @return string
*/
function cleanString ( $string )
{
sobi2Config::import( "includes|string.class" );
return sobi2String::cleanString( $string );
}
/**
* overloading
* @return void
*/
function loadOverlib ()
{
$no_html = sobi2Config::request( $_REQUEST, "no_html", 0, 2 );
if ( $no_html ) {
return false;
}
static $loaded = false;
$legacy = false;
$config = & sobi2Config::getInstance();
if ( ! $loaded ) {
if ( defined( "_JEXEC" ) && class_exists( "JHTML" ) ) {
if ( defined( "_SOBI2_ADMIN" ) ) {
if ( $config->key( "compat", "use_j10_tooltip_be" ) ) {
$legacy = true;
}
}
else {
if ( $config->key( "compat", "use_j10_tooltip_fe" ) ) {
$legacy = true;
}
}
}
else {
$legacy = true;
}
if ( $legacy ) {
$b = "\n<script language=\"javascript\" type=\"text/javascript\" src=\"{$config->liveSite}/includes/js/overlib_mini.js\"></script>";
$b .= "\n<script language=\"javascript\" type=\"text/javascript\" src=\"{$config->liveSite}/includes/js/overlib_hideform_mini.js\"></script>\n";
$config->addCustomHeadTag( $b );
}
else {
JHTML::_( 'behavior.tooltip' );
}
$loaded = true;
}
}
function loadCalendar ( $format = null, $theme = null )
{
static $loaded = false;
if ( ! $loaded ) {
if ( ! $theme ) {
$theme = $this->key( "calendar", "theme", "system" );
}
if ( ! ( sobi2Config::translatePath( "includes|js|jscalendar|calendar-{$theme}", "front", true, ".css" ) ) ) {
$theme = "system";
}
if ( ! $format ) {
$format = $this->key( "calendar", "date_format", _SOBI2_CALENDAR_FORMAT );
}
$formatTxt = $this->key( "calendar", "date_format_txt", "D, M d" );
$lang = $this->key( "calendar", "language", _SOBI2_CALENDAR_LANG );
if ( ! ( sobi2Config::translatePath( "includes|js|jscalendar|lang|calendar-{$lang}", "front", true, ".js" ) ) ) {
$lang = "en";
}
$this->addCustomHeadTag( "<link rel=\"stylesheet\" type=\"text/css\" media=\"all\" href=\"{$this->liveSite}/components/com_sobi2/includes/js/jscalendar/calendar-{$theme}.css\"/>" );
$this->addCustomHeadTag( "<script type=\"text/javascript\" src=\"{$this->liveSite}/components/com_sobi2/includes/js/jscalendar/calendar.js\"></script>" );
$this->addCustomScript( '
function showSobiCalendar( id, bid, format )
{
if( !format ) {
format = "' . $format . '";
}
var el = document.getElementById( id );
if ( calendar != null ) {
calendar.hide();
calendar.parseDate( el.value );
} else {
var cal = new Calendar( true, null, SobiSelectedDate, SobiCloseCal );
calendar = cal;
SobiCal = cal;
cal.setRange( 1900, 2090 );
calendar.create();
}
calendar.setDateFormat( format );
calendar.setTtDateFormat( "' . $formatTxt . '" )
calendar.parseDate( el.value );
calendar.sel = el;
calendar.showAtElement( document.getElementById( bid ) );
return false;
}
function SobiCloseCal( c ) {
c.hide();
}
function SobiSelectedDate( c, d ) {
c.sel.value = d;
}
' );
$this->addCustomHeadTag( "<script type=\"text/javascript\" src=\"{$this->liveSite}/components/com_sobi2/includes/js/jscalendar/lang/calendar-{$lang}.js\"></script>" );
$loaded = true;
}
}
/**
* not used anymore.
*
* @param string $string
* @return string
*/
function escapeSpacialHTML ( $string )
{
$trans = get_html_translation_table( ENT_QUOTES );
return strtr( $string, $trans );
}
/**
* transforming string to use it with javaScript
*
* @param string $str
* @return string
*/
function jsAddSlashes ( $str )
{
sobi2Config::import( "includes|string.class" );
return sobi2String::jsAddSlashes( $str );
}
/**
* adding "http://" to url's if not added
*
* @param string $entry
* @return string
*/
function checkHTTP ( $entry )
{
sobi2Config::import( "includes|helper.class" );
return sobi2Helper::checkHTTP( $entry );
}
/**
* MySQL injections filter
*
* @param string $string - string to clean
* @return string
*/
function clearSQLinjection ( $string )
{
if ( ! $string ) {
return null;
}
$iso = explode( '=', _ISO );
if ( ! strstr( strtoupper( $iso[ 1 ] ), 'UTF' ) ) {
$string = htmlentities( $string );
}
$string = addslashes( $string );
$string = $this->database->getEscaped( $string );
return $string;
}
function clearSQLinjectionLight ( $string )
{
$iso = explode( '=', _ISO );
if ( ! strstr( strtoupper( $iso[ 1 ] ), 'UTF' ) ) {
$string = htmlentities( $string );
}
$string = addslashes( $string );
$string = $this->database->getEscaped( $string );
return $string;
}
/**
* reversing MySQL injection filter
*
* @param string $string - string to decode
* @return string
*/
function getSobiStr ( $string )
{
if ( $string ) {
$iso = defined( "_ISO" ) ? explode( '=', _ISO ) : array( null , "UTF-8" );
if ( strtoupper( $iso[ 1 ] ) != "UTF-8" ) {
$string = stripcslashes( stripslashes( stripslashes( html_entity_decode( $string ) ) ) );
}
else {
$string = stripcslashes( stripslashes( stripslashes( $string ) ) );
}
if ( ! strstr( "<script", $string ) ) {
$string = str_replace( "& ", "& ", $string );
}
}
while ( strstr( $string, "\'" ) ) {
$string = stripcslashes( $string );
}
return $string;
}
/**
* global definied currency format
*
* @param float $value
* @param boolean $withCurrency - value to transform to curency format
* @return string
*/
function getCurrencyFormat ( $value, $withCurrency = true )
{
$string = number_format( $value, 2, $this->curencyDecSeparator, ' ' );
if ( $withCurrency ) {
$string = str_replace( array( "%value%" , "%currency%" ), array( $string , $this->currency ), $this->key( "string", "currency_format", "%value% %currency%" ) );
}
return $string;
}
/**
* checking if the category has child categories
*
* @param integer $catid - category id to check
* @return boolean
*/
function catHasChild ( $catid )
{
$query = "SELECT COUNT(`catid`) FROM `#__sobi2_cats_relations` WHERE `parentid` = '{$catid}'";
$this->database->setQuery( $query );
$hasChild = $this->database->loadResult();
return ( $hasChild ) ? true : false;
}
/**
* @param path The starting file or directory (no trailing slash)
* @return TRUE=all succeeded FALSE=one or more chmods failed
*/
function sobiChmodRecursive ( $path )
{
return sobi2Config::chmodRecursive( $path, $this->fmod, $this->dmod );
}
/**
* Orginal mosMakePath joomla function. Creating directory
* @param string - An existing base path
* @param string - A path to create from the base path
* @global integer - Directory permissions
* @return boolean - True if successful
*/
function sobiMakePath ( $base, $path = null, $mode = NULL )
{
sobi2Config::import( "includes|fsystem.class" );
return sobi2Fsystem::makePath( $this, $base, $path, $mode );
}
function loadBridge ()
{
static $loaded = false;
if ( $loaded ) {
return $loaded;
}
$file = ( defined( '_JEXEC' ) && class_exists( 'JRequest' ) && ! $this->forceLegacy ) ? 'j15' : 'j10';
sobi2Config::import( "includes|bridge|{$file}" );
$loaded = true;
}
/**
* to revert UTF-8 encoding (ajax)
*
* @param string $string
* @return string
*/
function stringDecode ( $string )
{
$iso = defined( "_ISO" ) ? explode( '=', _ISO ) : array( null , "UTF-8" );
if ( strtoupper( $iso[ 1 ] ) == 'UTF-8' ) {
return $string;
}
if ( $this->key( "string", "mb_convert_encoding", true ) && function_exists( "mb_convert_encoding" ) ) {
$string = mb_convert_encoding( $string, $iso[ 1 ], "UTF-8" );
}
elseif ( $this->key( "string", "iconv", true ) && function_exists( "iconv" ) ) {
$string = iconv( "UTF-8", $iso[ 1 ], $string );
}
else {
switch ( $iso[ 1 ] )
{
default:
case 'iso-8859-1':
$string = utf8_decode( $string );
break;
case 'iso-8859-2':
$string = $this->utf82iso88592( $string );
break;
case 'UTF-8':
break;
}
}
return $string;
}
/**
* to save in UTF-8 encoding (ajax)
*
* @param string $string
* @return string
*/
function stringEncode ( $string )
{
$iso = defined( "_ISO" ) ? explode( '=', _ISO ) : array( null , "UTF-8" );
if ( strtoupper( $iso[ 1 ] ) == 'UTF-8' ) {
return $string;
}
if ( $this->key( "string", "mb_convert_encoding", true ) && function_exists( "mb_convert_encoding" ) ) {
$string = mb_convert_encoding( $string, "UTF-8", $iso[ 1 ] );
}
if ( $this->key( "string", "iconv", true ) && function_exists( "iconv" ) ) {
$string = iconv( $iso[ 1 ], "UTF-8", $string );
}
else {
switch ( $iso[ 1 ] )
{
default:
case 'iso-8859-1':
$string = utf8_encode( $string );
break;
case 'iso-8859-2':
$string = $this->iso885922utf8( $string );
break;
case 'UTF-8':
break;
}
}
return $string;
}
/**
* Enter description here...
*
* @return array
*/
function translateUserAgent ()
{
static $browser;
if ( is_array( $browser ) && ! empty( $browser ) ) {
return $browser;
}
sobi2Config::import( "includes|helper.class" );
$browser = array();
$browser = sobi2Helper::getBrowser( sobi2Config::request( $_SERVER, "HTTP_USER_AGENT", 0, 0x0004 ) );
$os = sobi2Helper::getOs( sobi2Config::request( $_SERVER, "HTTP_USER_AGENT", 0, 0x0004 ) );
$browser[ "os" ] = $os[ "name" ];
$browser[ "os_ver" ] = $os[ "ver" ];
return $browser;
}
/**
* creating transparent png images for IE <= 6.0
*
* @param string $icon
* @param string $alt
* @return string
*/
function checkPNGImage ( $icon, $alt, $style = null, $class = null, $title = null )
{
sobi2Config::import( "includes|fsystem.class" );
return sobi2Fsystem::checkPNGImage( $icon, $alt, $style, $class, $title );
}
/**
* Enter description here...
*
* @param string $str
* @return string
*/
function replaceEntities ( $str )
{
// if(!$str || empty($str)) {
// return null;
// }
// $iso = explode( '=', _ISO );
// if(strtoupper($iso[1]) != "UTF-8") {
// $str = html_entity_decode($str);
// }
return $str;
}
/**
* janusz@poczta.fm 25-Oct-2003 05:54
* Here are functions to PROPERLY de/encode Unicode (UTF-8) string to ISO-8859-2 (Polish character set).
* Regards, Janusz
* @param string $tekscik
* @return string
*/
function utf82iso88592 ( $tekscik )
{
sobi2Config::import( "includes|string.class" );
return sobi2String::utf82iso88592( $tekscik );
}
/**
* janusz@poczta.fm 25-Oct-2003 05:54
* Here are functions to PROPERLY de/encode Unicode (UTF-8) string to ISO-8859-2 (Polish character set).
* Regards, Janusz
* @param string $tekscik
* @return string
*/
function iso885922utf8 ( $tekscik )
{
sobi2Config::import( "includes|string.class" );
return sobi2String::iso885922utf8( $tekscik );
}
/**
* function for send emails
*
* @param string $subject
* @param string $massage
* @param string $addresse
* @param boolean $forAdmin
* @param string $fromMail
* @param string $fromName
* @param integer $sobiId
* @param bool $html
* @param string $cc
* @param string $bcc
* @param string $replyTo
* @param string $replyToName
*/
function sendSobiMail ( $subject, $massage, $addresse = null, $forAdmin = false, $fromMail = null, $fromName = null, $sobiId = 0, $html = 0, $cc = null, $bcc = null, $replyTo = null, $replyToName = null )
{
sobi2Config::import( "includes|mail.class" );
return sobi2Mail::send( $subject, $massage, $addresse, $forAdmin, $fromMail, $fromName, $sobiId, $html, $cc, $bcc, $replyTo, $replyToName );
}
/**
* @param string $path
* @param int $fmode
* @param int $dmode
*/
function chmodRecursive ( $path, $fmode = null, $dmode = null, $force = false )
{
sobi2Config::import( "includes|fsystem.class" );
return sobi2Fsystem::chmodRecursive( $path, $fmode, $dmode, $force );
}
/**
* write errors to log file
*
* @param string $msg
*/
function logSobiError ( $msg )
{
if ( $this->debug == - 1 || ! ( strstr( $msg, "com_sobi2" ) ) || strstr( $msg, "session" ) ) {
return null;
}
@sobi2Config::chmodRecursive( _SOBI_CMSROOT . DS . "administrator" . DS . "components" . DS . "com_sobi2" . DS . "error_logfile.txt", 0777, 0777 );
if ( ! $log = @fopen( _SOBI_CMSROOT . DS . "administrator" . DS . "components" . DS . "com_sobi2" . DS . "error_logfile.txt", "a+" ) ) {
return null;
}
$now = $this->getTimeAndDate();
if ( isset( $_SERVER[ "REMOTE_ADDR" ] ) ) {
$ip = $_SERVER[ "REMOTE_ADDR" ];
}
else {
$ip = "none";
}
if ( isset( $_SERVER[ "HTTP_REFERER" ] ) ) {
$ref = $_SERVER[ "HTTP_REFERER" ];
}
else {
$ref = "none";
}
if ( isset( $_SERVER[ "HTTP_USER_AGENT" ] ) ) {
$browser = $_SERVER[ "HTTP_USER_AGENT" ];
}
else {
$browser = "none";
}
if ( isset( $_SERVER[ "REQUEST_URI" ] ) ) {
$requestet = $_SERVER[ "REQUEST_URI" ];
}
else {
$requestet = "none";
}
$msg = str_replace( "\n", " <br/> ", $msg );
$logMsg = "{$now}: \n" . "\t IP: {$ip} \n" . "\t Requestet URI: {$requestet} \n" . "\t Refferer: {$ref} \n" . "\t Browser: {$browser}\n" . "\t Error: {$msg} \n" . "---------------------------------------------------------\n";
fwrite( $log, $logMsg );
fclose( $log );
@sobi2Config::chmodRecursive( _SOBI_CMSROOT . DS . "administrator" . DS . "components" . DS . "com_sobi2" . DS . "error_logfile.txt", 0664, 0775 );
}
/**
* Clear and remove a directory recursive
*
* @param string $dir
*/
function removeDirRecursive ( $dir )
{
sobi2Config::import( "includes|fsystem.class" );
return sobi2Fsystem::removeDirRecursive( $dir );
}
function _d ( $str, $out = false )
{
return sobi2Config::debOut( $str, $out, true, true, 1 );
}
/**
* @param string $str
*/
function debOut ( $str, $out = false, $s = false, $file = false, $f = 0 )
{
static $store = array();
static $c = 0;
$o = null;
if($file) {
$from = debug_backtrace();
$called = $from[ $f ];
$called[ 'file' ] = str_replace( dirname( __FILE__ ) . DS, null, $called[ 'file' ] );
$cfrom = isset( $from[ $f + 1 ] ) ? $from[ $f + 1 ] : array( 'function' => '' , 'class' => '' );
$cClass = isset( $cfrom[ 'class' ] ) ? $cfrom[ 'class' ] : 'none';
$cFunct = isset( $cfrom[ 'function' ] ) ? $cfrom[ 'function' ] : 'none';
$function = " {$cClass}::{$cFunct} in ";
$o = "Called from{$function}file {$called[ 'file' ]}:{$called[ 'line' ]}";
}
if ( ! $str ) {
$str = "Empty";
}
if ( $out ) {
$o .= "<!--";
}
else {
$o .= "<h4>";
}
if ( is_array( $str ) || is_object( $str ) ) {
$o .= highlight_string( var_export( $str, true ), true );
}
else {
$o .= $str;
}
if ( $out ) {
$o .= "-->";
}
else {
$o .= "</h4>";
}
if ( $s ) {
if ( isset( $GLOBALS[ 'sobi2_config_construct_cs' ] ) && ! $GLOBALS[ 'sobi2_config_construct_cs' ] ) {
$config = & self::getInstance();
$config->debStore = & $store;
}
$c ++;
$store[] = "[{$c}] {$o}";
}
else {
echo $o;
}
}
function sobi2setcookie($name, $value) {
$config =& sobi2Config::getInstance();
//$cookieDomain = str_replace("http://", null, $config->getLiveSite());
$cycle = $config->key("search", "cookie_lifecycle", 0);
if ($cycle) {
$cycle = time() + $cycle;
}
setcookie($name, $value, $cycle, "/");
}
}
if ( ! function_exists( "overideErrorHandling" ) ) {
/**
* @param integer $errno
* @param string $msg
* @param string $file
* @param string $line
* @param array $context
*/
function overideErrorHandling ( $errno, $msg, $file, $line, $context )
{
/* if critical section do nothing */
if ( isset( $GLOBALS[ 'sobi2_config_construct_cs' ] ) && $GLOBALS[ 'sobi2_config_construct_cs' ] == true ) {
return false;
}
if ( ! stristr( $file, "com_sobi2" ) || strstr( $file, "session" ) || strstr( $msg, "ob_end_clean" ) ) {
return null;
}
$config = & sobi2Config::getInstance();
if ( $errno != 2048 ) {
if ( $config->debug > 100 ) {
$debugLevel = $config->debug - 100;
}
else {
$debugLevel = $config->debug;
}
if ( $debugLevel == 9 || ( $debugLevel == 8 && ( $errno < 8 || $errno == 512 || $errno == 256 ) ) || ( $debugLevel == 7 && $errno == 256 ) ) {
$config->logSobiError( "{$msg} (Error number:{$errno}) in file: {$file} at the line: {$line}." );
}
}
}
}
if ( ! function_exists( 'sobi2trim' ) ) {
/**
* @param array $v
*/
function sobi2trim ( &$v )
{
$v = trim( $v );
}
}
//Replacements for deprecated functions in PHP5.3
if (! function_exists('sobi2_ereg')) {
function sobi2_ereg ($pattern, $string)
{
return preg_match ('/'.$pattern.'/', $string);
}
}
if (! function_exists('sobi2_eregi')) {
function sobi2_eregi ($pattern, $string) {
return preg_match ('/'.$pattern.'/i', $string);
}
}
if (! function_exists('sobi2_eregi_replace')) {
function sobi2_eregi_replace($pattern, $replacement, $string)
{
return preg_replace ('/'.$pattern.'/i', $replacement, $string);
}
}
if (! function_exists('sobi2_ereg_replace')) {
function sobi2_ereg_replace($pattern, $replacement, $string)
{
return preg_replace ('/'.$pattern.'/', $replacement, $string);
}
}
if (! function_exists('sobi2_split')) {
function sobi2_split ($pattern, $string) {
return preg_split ('/'.$pattern.'/', $string);
}
}
?>