JOOMLA中国
  • Joomla中国首页
  • 社区
  • 教程
  • 应用市场
  • B计划
Joomla! Framework TM
  • Namespace
  • Class
  • Tree
  • Deprecated

Namespaces

  • Composer
    • Autoload
  • Joomla
    • Application
      • Cli
        • Output
          • Processor
      • Web
    • Data
    • DI
      • Exception
    • Event
    • Filter
    • Input
    • Ldap
    • Registry
      • Format
    • Session
      • Storage
    • String
    • Uri
    • Utilities
  • None
  • PasswordCompat
    • binary
  • PHP
  • Psr
    • Log
  • Symfony
    • Component
      • Yaml
        • Exception
    • Polyfill
      • Util

Classes

  • CallbackFilterIterator
  • ComposerAutoloaderInit205c915b9c7d3e718e7c95793ee67ffe
  • easyparse
  • EasyPeasyICS
  • FOFAutoloaderComponent
  • FOFAutoloaderFof
  • FOFConfigDomainDispatcher
  • FOFConfigDomainTables
  • FOFConfigDomainViews
  • FOFConfigProvider
  • FOFController
  • FOFDatabase
  • FOFDatabaseDriver
  • FOFDatabaseDriverJoomla
  • FOFDatabaseDriverMysql
  • FOFDatabaseDriverMysqli
  • FOFDatabaseDriverOracle
  • FOFDatabaseDriverPdo
  • FOFDatabaseDriverPdomysql
  • FOFDatabaseDriverPostgresql
  • FOFDatabaseDriverSqlazure
  • FOFDatabaseDriverSqlite
  • FOFDatabaseDriverSqlsrv
  • FOFDatabaseFactory
  • FOFDatabaseInstaller
  • FOFDatabaseIterator
  • FOFDatabaseIteratorAzure
  • FOFDatabaseIteratorMysql
  • FOFDatabaseIteratorMysqli
  • FOFDatabaseIteratorOracle
  • FOFDatabaseIteratorPdo
  • FOFDatabaseIteratorPdomysql
  • FOFDatabaseIteratorPostgresql
  • FOFDatabaseIteratorSqlite
  • FOFDatabaseIteratorSqlsrv
  • FOFDatabaseQuery
  • FOFDatabaseQueryElement
  • FOFDatabaseQueryMysql
  • FOFDatabaseQueryMysqli
  • FOFDatabaseQueryOracle
  • FOFDatabaseQueryPdo
  • FOFDatabaseQueryPdomysql
  • FOFDatabaseQueryPostgresql
  • FOFDatabaseQuerySqlazure
  • FOFDatabaseQuerySqlite
  • FOFDatabaseQuerySqlsrv
  • FOFDispatcher
  • FOFDownload
  • FOFDownloadAdapterAbstract
  • FOFDownloadAdapterCurl
  • FOFDownloadAdapterFopen
  • FOFEncryptAes
  • FOFEncryptAesAbstract
  • FOFEncryptAesMcrypt
  • FOFEncryptAesOpenssl
  • FOFEncryptBase32
  • FOFEncryptRandval
  • FOFEncryptTotp
  • FOFForm
  • FOFFormFieldAccesslevel
  • FOFFormFieldActions
  • FOFFormFieldButton
  • FOFFormFieldCachehandler
  • FOFFormFieldCalendar
  • FOFFormFieldCaptcha
  • FOFFormFieldCheckbox
  • FOFFormFieldCheckboxes
  • FOFFormFieldComponents
  • FOFFormFieldEditor
  • FOFFormFieldEmail
  • FOFFormFieldGroupedbutton
  • FOFFormFieldGroupedlist
  • FOFFormFieldHidden
  • FOFFormFieldImage
  • FOFFormFieldImagelist
  • FOFFormFieldInteger
  • FOFFormFieldLanguage
  • FOFFormFieldList
  • FOFFormFieldMedia
  • FOFFormFieldModel
  • FOFFormFieldOrdering
  • FOFFormFieldPassword
  • FOFFormFieldPlugins
  • FOFFormFieldPublished
  • FOFFormFieldRadio
  • FOFFormFieldRelation
  • FOFFormFieldRules
  • FOFFormFieldSelectrow
  • FOFFormFieldSessionhandler
  • FOFFormFieldSpacer
  • FOFFormFieldSql
  • FOFFormFieldTag
  • FOFFormFieldTel
  • FOFFormFieldText
  • FOFFormFieldTextarea
  • FOFFormFieldTimezone
  • FOFFormFieldTitle
  • FOFFormFieldUrl
  • FOFFormFieldUser
  • FOFFormFieldUsergroup
  • FOFFormHeader
  • FOFFormHeaderAccesslevel
  • FOFFormHeaderField
  • FOFFormHeaderFielddate
  • FOFFormHeaderFieldfilterable
  • FOFFormHeaderFieldsearchable
  • FOFFormHeaderFieldselectable
  • FOFFormHeaderFieldsql
  • FOFFormHeaderFilterdate
  • FOFFormHeaderFilterfilterable
  • FOFFormHeaderFiltersearchable
  • FOFFormHeaderFilterselectable
  • FOFFormHeaderFiltersql
  • FOFFormHeaderLanguage
  • FOFFormHeaderModel
  • FOFFormHeaderOrdering
  • FOFFormHeaderPublished
  • FOFFormHeaderRowselect
  • FOFFormHelper
  • FOFHalDocument
  • FOFHalLink
  • FOFHalLinks
  • FOFHalRenderJson
  • FOFInflector
  • FOFInput
  • FOFIntegrationJoomlaFilesystem
  • FOFIntegrationJoomlaPlatform
  • FOFLayoutFile
  • FOFLayoutHelper
  • FOFLess
  • FOFLessFormatterClassic
  • FOFLessFormatterCompressed
  • FOFLessFormatterJoomla
  • FOFLessFormatterLessjs
  • FOFLessParser
  • FOFModel
  • FOFModelBehavior
  • FOFModelBehaviorAccess
  • FOFModelBehaviorEmptynonzero
  • FOFModelBehaviorEnabled
  • FOFModelBehaviorFilters
  • FOFModelBehaviorLanguage
  • FOFModelBehaviorPrivate
  • FOFModelDispatcherBehavior
  • FOFModelField
  • FOFModelFieldBoolean
  • FOFModelFieldDate
  • FOFModelFieldNumber
  • FOFModelFieldText
  • FOFPlatform
  • FOFPlatformFilesystem
  • FOFQueryAbstract
  • FOFRenderAbstract
  • FOFRenderJoomla
  • FOFRenderJoomla3
  • FOFRenderStrapper
  • FOFStringUtils
  • FOFTable
  • FOFTableBehavior
  • FOFTableBehaviorAssets
  • FOFTableBehaviorContenthistory
  • FOFTableBehaviorTags
  • FOFTableDispatcherBehavior
  • FOFTableNested
  • FOFTableRelations
  • FOFTemplateUtils
  • FOFToolbar
  • FOFUtilsArray
  • FOFUtilsCacheCleaner
  • FOFUtilsConfigHelper
  • FOFUtilsFilescheck
  • FOFUtilsIniParser
  • FOFUtilsInstallscript
  • FOFUtilsIp
  • FOFUtilsObject
  • FOFUtilsObservableDispatcher
  • FOFUtilsObservableEvent
  • FOFUtilsPhpfunc
  • FOFUtilsTimer
  • FOFUtilsUpdate
  • FOFUtilsUpdateCollection
  • FOFUtilsUpdateExtension
  • FOFUtilsUpdateJoomla
  • FOFView
  • FOFViewCsv
  • FOFViewForm
  • FOFViewHtml
  • FOFViewJson
  • FOFViewRaw
  • idna_convert
  • JAccess
  • JAccessRule
  • JAccessRules
  • JAccessWrapperAccess
  • JAdapter
  • JAdapterInstance
  • JApplication
  • JApplicationAdministrator
  • JApplicationBase
  • JApplicationCli
  • JApplicationCms
  • JApplicationDaemon
  • JApplicationHelper
  • JApplicationSite
  • JApplicationWeb
  • JApplicationWebRouter
  • JApplicationWebRouterBase
  • JApplicationWebRouterRest
  • JArchive
  • JArchiveBzip2
  • JArchiveGzip
  • JArchiveTar
  • JArchiveWrapperArchive
  • JArchiveZip
  • JArrayHelper
  • JAssociationExtensionHelper
  • JAuthentication
  • JAuthenticationHelper
  • JAuthenticationResponse
  • JBrowser
  • JBuffer
  • JButton
  • JCache
  • JCacheController
  • JCacheControllerCallback
  • JCacheControllerOutput
  • JCacheControllerPage
  • JCacheControllerView
  • JCacheStorage
  • JCacheStorageApc
  • JCacheStorageApcu
  • JCacheStorageCachelite
  • JCacheStorageFile
  • JCacheStorageHelper
  • JCacheStorageMemcache
  • JCacheStorageMemcached
  • JCacheStorageRedis
  • JCacheStorageWincache
  • JCacheStorageXcache
  • JCaptcha
  • JCategories
  • JCategoryNode
  • JClassLoader
  • JCli
  • JClientFtp
  • JClientHelper
  • JClientLdap
  • JClientWrapperHelper
  • JComponentHelper
  • JComponentRecord
  • JComponentRouterBase
  • JComponentRouterLegacy
  • JComponentRouterRulesMenu
  • JComponentRouterRulesNomenu
  • JComponentRouterRulesStandard
  • JComponentRouterView
  • JComponentRouterViewconfiguration
  • JControllerAdmin
  • JControllerBase
  • JControllerForm
  • JControllerLegacy
  • JCrypt
  • JCryptCipher3Des
  • JCryptCipherBlowfish
  • JCryptCipherCrypto
  • JCryptCipherMcrypt
  • JCryptCipherRijndael256
  • JCryptCipherSimple
  • JCryptKey
  • JCryptPasswordSimple
  • JDaemon
  • JDatabase
  • JDatabaseDriver
  • JDatabaseDriverMysql
  • JDatabaseDriverMysqli
  • JDatabaseDriverOracle
  • JDatabaseDriverPdo
  • JDatabaseDriverPdomysql
  • JDatabaseDriverPostgresql
  • JDatabaseDriverSqlazure
  • JDatabaseDriverSqlite
  • JDatabaseDriverSqlsrv
  • JDatabaseExporter
  • JDatabaseExporterMysql
  • JDatabaseExporterMysqli
  • JDatabaseExporterPdomysql
  • JDatabaseExporterPostgresql
  • JDatabaseFactory
  • JDatabaseImporter
  • JDatabaseImporterMysql
  • JDatabaseImporterMysqli
  • JDatabaseImporterPdomysql
  • JDatabaseImporterPostgresql
  • JDatabaseInterface
  • JDatabaseIterator
  • JDatabaseIteratorMysql
  • JDatabaseIteratorMysqli
  • JDatabaseIteratorOracle
  • JDatabaseIteratorPdo
  • JDatabaseIteratorPdomysql
  • JDatabaseIteratorPostgresql
  • JDatabaseIteratorSqlazure
  • JDatabaseIteratorSqlite
  • JDatabaseIteratorSqlsrv
  • JDatabaseMysql
  • JDatabaseMysqli
  • JDatabaseQuery
  • JDatabaseQueryElement
  • JDatabaseQueryLimitable
  • JDatabaseQueryMysql
  • JDatabaseQueryMysqli
  • JDatabaseQueryOracle
  • JDatabaseQueryPdo
  • JDatabaseQueryPdomysql
  • JDatabaseQueryPostgresql
  • JDatabaseQueryPreparable
  • JDatabaseQuerySqlazure
  • JDatabaseQuerySqlite
  • JDatabaseQuerySqlsrv
  • JDatabaseSqlazure
  • JDatabaseSqlsrv
  • JDate
  • JDispatcher
  • JDocument
  • JDocumentError
  • JDocumentFeed
  • JDocumentHtml
  • JDocumentImage
  • JDocumentJson
  • JDocumentOpensearch
  • JDocumentRaw
  • JDocumentRenderer
  • JDocumentRendererAtom
  • JDocumentRendererComponent
  • JDocumentRendererFeedAtom
  • JDocumentRendererFeedRss
  • JDocumentRendererHead
  • JDocumentRendererHtmlComponent
  • JDocumentRendererHtmlHead
  • JDocumentRendererHtmlMessage
  • JDocumentRendererHtmlModule
  • JDocumentRendererHtmlModules
  • JDocumentRendererMessage
  • JDocumentRendererModule
  • JDocumentRendererModules
  • JDocumentRendererRSS
  • JDocumentXml
  • JEditor
  • JError
  • JErrorPage
  • JEvent
  • JEventDispatcher
  • JExtension
  • JFacebook
  • JFacebookAlbum
  • JFacebookCheckin
  • JFacebookComment
  • JFacebookEvent
  • JFacebookGroup
  • JFacebookLink
  • JFacebookNote
  • JFacebookOAuth
  • JFacebookObject
  • JFacebookPhoto
  • JFacebookPost
  • JFacebookStatus
  • JFacebookUser
  • JFacebookVideo
  • JFactory
  • JFeed
  • JFeedEnclosure
  • JFeedEntry
  • JFeedFactory
  • JFeedImage
  • JFeedItem
  • JFeedLink
  • JFeedParser
  • JFeedParserAtom
  • JFeedParserRss
  • JFeedParserRssItunes
  • JFeedParserRssMedia
  • JFeedPerson
  • JFile
  • JFilesystemHelper
  • JFilesystemPatcher
  • JFilesystemWrapperFile
  • JFilesystemWrapperFolder
  • JFilesystemWrapperPath
  • JFilterInput
  • JFilterOutput
  • JFilterWrapperOutput
  • JFolder
  • JForm
  • JFormField
  • JFormFieldAccessLevel
  • JFormFieldAliastag
  • JFormFieldAuthor
  • JFormFieldCacheHandler
  • JFormFieldCalendar
  • JFormFieldCaptcha
  • JFormFieldCategory
  • JFormFieldCheckbox
  • JFormFieldCheckboxes
  • JFormFieldChromeStyle
  • JFormFieldColor
  • JFormFieldCombo
  • JFormFieldComponentlayout
  • JFormFieldComponents
  • JFormFieldContenthistory
  • JFormFieldContentlanguage
  • JFormFieldContenttype
  • JFormFieldDatabaseConnection
  • JFormFieldEditor
  • JFormFieldEMail
  • JFormFieldFile
  • JFormFieldFileList
  • JFormFieldFolderList
  • JFormFieldFrontend_Language
  • JFormFieldGroupedList
  • JFormFieldHeadertag
  • JFormFieldHelpsite
  • JFormFieldHidden
  • JFormFieldImageList
  • JFormFieldInteger
  • JFormFieldLanguage
  • JFormFieldLastvisitDateRange
  • JFormFieldLimitbox
  • JFormFieldList
  • JFormFieldMedia
  • JFormFieldMenu
  • JFormFieldMenuitem
  • JFormFieldMeter
  • JFormFieldModulelayout
  • JFormFieldModuleOrder
  • JFormFieldModulePosition
  • JFormFieldModuletag
  • JFormFieldNote
  • JFormFieldNumber
  • JFormFieldOrdering
  • JFormFieldPassword
  • JFormFieldPlugin_Status
  • JFormFieldPlugins
  • JFormFieldPredefinedList
  • JFormFieldRadio
  • JFormFieldRange
  • JFormFieldRegistrationDateRange
  • JFormFieldRepeatable
  • JFormFieldRules
  • JFormFieldSessionHandler
  • JFormFieldSpacer
  • JFormFieldSQL
  • JFormFieldStatus
  • JFormFieldSubform
  • JFormFieldTag
  • JFormFieldTel
  • JFormFieldTemplatestyle
  • JFormFieldText
  • JFormFieldTextarea
  • JFormFieldTimezone
  • JFormFieldUrl
  • JFormFieldUser
  • JFormFieldUserActive
  • JFormFieldUsergroup
  • JFormFieldUserGroupList
  • JFormFieldUserState
  • JFormHelper
  • JFormRule
  • JFormRuleBoolean
  • JFormRuleCalendar
  • JFormRuleCaptcha
  • JFormRuleColor
  • JFormRuleEmail
  • JFormRuleEquals
  • JFormRuleNotequals
  • JFormRuleNumber
  • JFormRuleOptions
  • JFormRulePassword
  • JFormRuleRules
  • JFormRuleTel
  • JFormRuleUrl
  • JFormRuleUsername
  • JFormWrapperHelper
  • JFTP
  • JGithub
  • JGithubAccount
  • JGithubCommits
  • JGithubForks
  • JGithubHooks
  • JGithubHttp
  • JGithubMeta
  • JGithubMilestones
  • JGithubObject
  • JGithubPackage
  • JGithubPackageActivity
  • JGithubPackageActivityEvents
  • JGithubPackageActivityNotifications
  • JGithubPackageActivityStarring
  • JGithubPackageActivityWatching
  • JGithubPackageAuthorization
  • JGithubPackageData
  • JGithubPackageDataBlobs
  • JGithubPackageDataCommits
  • JGithubPackageDataRefs
  • JGithubPackageDataTags
  • JGithubPackageDataTrees
  • JGithubPackageGists
  • JGithubPackageGistsComments
  • JGithubPackageGitignore
  • JGithubPackageIssues
  • JGithubPackageIssuesAssignees
  • JGithubPackageIssuesComments
  • JGithubPackageIssuesEvents
  • JGithubPackageIssuesLabels
  • JGithubPackageIssuesMilestones
  • JGithubPackageMarkdown
  • JGithubPackageOrgs
  • JGithubPackageOrgsMembers
  • JGithubPackageOrgsTeams
  • JGithubPackagePulls
  • JGithubPackagePullsComments
  • JGithubPackageRepositories
  • JGithubPackageRepositoriesCollaborators
  • JGithubPackageRepositoriesComments
  • JGithubPackageRepositoriesCommits
  • JGithubPackageRepositoriesContents
  • JGithubPackageRepositoriesDownloads
  • JGithubPackageRepositoriesForks
  • JGithubPackageRepositoriesHooks
  • JGithubPackageRepositoriesKeys
  • JGithubPackageRepositoriesMerging
  • JGithubPackageRepositoriesStatistics
  • JGithubPackageRepositoriesStatuses
  • JGithubPackageSearch
  • JGithubPackageUsers
  • JGithubPackageUsersEmails
  • JGithubPackageUsersFollowers
  • JGithubPackageUsersKeys
  • JGithubRefs
  • JGithubStatuses
  • JGoogle
  • JGoogleAuth
  • JGoogleAuthOauth2
  • JGoogleData
  • JGoogleDataAdsense
  • JGoogleDataCalendar
  • JGoogleDataPicasa
  • JGoogleDataPicasaAlbum
  • JGoogleDataPicasaPhoto
  • JGoogleDataPlus
  • JGoogleDataPlusActivities
  • JGoogleDataPlusComments
  • JGoogleDataPlusPeople
  • JGoogleEmbed
  • JGoogleEmbedAnalytics
  • JGoogleEmbedMaps
  • JGrid
  • JHelp
  • JHelper
  • JHelperContent
  • JHelperContenthistory
  • JHelperMedia
  • JHelperRoute
  • JHelperTags
  • JHelperUsergroups
  • JHtml
  • JHtmlAccess
  • JHtmlActionsDropdown
  • JHtmlBatch
  • JHtmlBehavior
  • JHtmlBootstrap
  • JHtmlCategory
  • JHtmlContent
  • JHtmlContentLanguage
  • JHtmlDate
  • JHtmlDebug
  • JHtmlDropdown
  • JHtmlEmail
  • JHtmlForm
  • JHtmlFormbehavior
  • JHtmlGrid
  • JHtmlIcons
  • JHtmlJGrid
  • JHtmlJquery
  • JHtmlLinks
  • JHtmlList
  • JHtmlMenu
  • JHtmlNumber
  • JHtmlRules
  • JHtmlSearchtools
  • JHtmlSelect
  • JHtmlSidebar
  • JHtmlSliders
  • JHtmlSortablelist
  • JHtmlString
  • JHtmlTabs
  • JHtmlTag
  • JHtmlTel
  • JHtmlUser
  • JHttp
  • JHttpFactory
  • JHttpResponse
  • JHttpTransportCurl
  • JHttpTransportSocket
  • JHttpTransportStream
  • JHttpWrapperFactory
  • JImage
  • JImageFilter
  • JImageFilterBackgroundfill
  • JImageFilterBrightness
  • JImageFilterContrast
  • JImageFilterEdgedetect
  • JImageFilterEmboss
  • JImageFilterGrayscale
  • JImageFilterNegate
  • JImageFilterSketchy
  • JImageFilterSmooth
  • JInput
  • JInputCli
  • JInputCookie
  • JInputFiles
  • JInputJSON
  • JInstaller
  • JInstallerAdapter
  • JInstallerAdapterComponent
  • JInstallerAdapterFile
  • JInstallerAdapterLanguage
  • JInstallerAdapterLibrary
  • JInstallerAdapterModule
  • JInstallerAdapterPackage
  • JInstallerAdapterPlugin
  • JInstallerAdapterTemplate
  • JInstallerComponent
  • JInstallerExtension
  • JInstallerFile
  • JInstallerHelper
  • JInstallerLanguage
  • JInstallerLibrary
  • JInstallerManifest
  • JInstallerManifestLibrary
  • JInstallerManifestPackage
  • JInstallerModule
  • JInstallerPackage
  • JInstallerPlugin
  • JInstallerScript
  • JInstallerTemplate
  • JKeychain
  • JLanguage
  • JLanguageAssociations
  • JLanguageHelper
  • JLanguageMultilang
  • JLanguageStemmer
  • JLanguageStemmerPorteren
  • JLanguageTransliterate
  • JLanguageWrapperHelper
  • JLanguageWrapperText
  • JLanguageWrapperTransliterate
  • JLayoutBase
  • JLayoutFile
  • JLayoutHelper
  • JLDAP
  • JLess
  • JLessFormatterJoomla
  • JLibraryHelper
  • JLinkedin
  • JLinkedinCommunications
  • JLinkedinCompanies
  • JLinkedinGroups
  • JLinkedinJobs
  • JLinkedinOauth
  • JLinkedinObject
  • JLinkedinPeople
  • JLinkedinStream
  • JLoader
  • JLog
  • JLogEntry
  • JLogger
  • JLogLogger
  • JLogLoggerCallback
  • JLogLoggerDatabase
  • JLogLoggerEcho
  • JLogLoggerFormattedtext
  • JLogLoggerMessagequeue
  • JLogLoggerSyslog
  • JLogLoggerW3c
  • JMail
  • JMailHelper
  • JMailWrapperHelper
  • JMediawiki
  • JMediawikiCategories
  • JMediawikiHttp
  • JMediawikiImages
  • JMediawikiLinks
  • JMediawikiObject
  • JMediawikiPages
  • JMediawikiSearch
  • JMediawikiSites
  • JMediawikiUsers
  • JMenu
  • JMenuAdministrator
  • JMenuItem
  • JMenuSite
  • JMicrodata
  • JModelAdmin
  • JModelBase
  • JModelDatabase
  • JModelForm
  • JModelItem
  • JModelLegacy
  • JModelList
  • JModuleHelper
  • JNode
  • JOAuth1Client
  • JOAuth2Client
  • JObject
  • JObservable
  • JObserver
  • JObserverMapper
  • JObserverUpdater
  • JObserverWrapperMapper
  • JOpenSearchImage
  • JOpenSearchUrl
  • JOpenstreetmap
  • JOpenstreetmapChangesets
  • JOpenstreetmapElements
  • JOpenstreetmapGps
  • JOpenstreetmapInfo
  • JOpenstreetmapOauth
  • JOpenstreetmapObject
  • JOpenstreetmapUser
  • JPagination
  • JPaginationObject
  • JPath
  • JPathway
  • JPathwaySite
  • JPlatform
  • JPlugin
  • JPluginHelper
  • JProfiler
  • JRequest
  • JResponse
  • JResponseJson
  • JRoute
  • JRouter
  • JRouterAdministrator
  • JRouterSite
  • JRouteWrapperRoute
  • JRule
  • JRules
  • JSchemaChangeitem
  • JSchemaChangeitemMysql
  • JSchemaChangeitemPostgresql
  • JSchemaChangeitemSqlsrv
  • JSchemaChangeset
  • JSearchHelper
  • JSession
  • JSessionHandlerJoomla
  • JSessionHandlerNative
  • JSessionStorage
  • JSessionStorageApc
  • JSessionStorageDatabase
  • JSessionStorageMemcache
  • JSessionStorageMemcached
  • JSessionStorageNone
  • JSessionStorageWincache
  • JSessionStorageXcache
  • JSimplecrypt
  • JSimplepieFactory
  • JStream
  • JStreamString
  • JString
  • JStringController
  • JStringPunycode
  • JStringWrapperNormalise
  • JStringWrapperPunycode
  • JTable
  • JTableAsset
  • JTableCategory
  • JTableContent
  • JTableContenthistory
  • JTableContenttype
  • JTableCorecontent
  • JTableExtension
  • JTableInterface
  • JTableLanguage
  • JTableMenu
  • JTableMenuType
  • JTableModule
  • JTableNested
  • JTableObserver
  • JTableObserverContenthistory
  • JTableObserverTags
  • JTableSession
  • JTableUcm
  • JTableUpdate
  • JTableUpdatesite
  • JTableUser
  • JTableUsergroup
  • JTableViewlevel
  • JText
  • JToolbar
  • JToolbarButton
  • JToolbarButtonConfirm
  • JToolbarButtonCustom
  • JToolbarButtonHelp
  • JToolbarButtonLink
  • JToolbarButtonPopup
  • JToolbarButtonSeparator
  • JToolbarButtonSlider
  • JToolbarButtonStandard
  • JTree
  • JTwitter
  • JTwitterBlock
  • JTwitterDirectmessages
  • JTwitterFavorites
  • JTwitterFriends
  • JTwitterHelp
  • JTwitterLists
  • JTwitterOAuth
  • JTwitterObject
  • JTwitterPlaces
  • JTwitterProfile
  • JTwittersearch
  • JTwitterStatuses
  • JTwitterTrends
  • JTwitterUsers
  • JUcmBase
  • JUcmContent
  • JUcmType
  • JUpdate
  • JUpdateAdapter
  • JUpdater
  • JUpdaterCollection
  • JUpdaterExtension
  • JUri
  • JUser
  • JUserHelper
  • JUserWrapperHelper
  • JUtility
  • JVersion
  • JViewBase
  • JViewCategories
  • JViewCategory
  • JViewCategoryfeed
  • JViewHtml
  • JViewLegacy
  • JWeb
  • JWebClient
  • JXMLElement
  • lessc
  • lessc_formatter_classic
  • lessc_formatter_compressed
  • lessc_formatter_lessjs
  • lessc_parser
  • lessify
  • Net_IDNA_php4
  • nodecounter
  • ntlm_sasl_client_class
  • PHPMailer
  • PHPMailerOAuth
  • PHPMailerOAuthGoogle
  • POP3
  • SimplePie
  • SimplePie_Author
  • SimplePie_Autoloader
  • SimplePie_Cache
  • SimplePie_Cache_DB
  • SimplePie_Cache_File
  • SimplePie_Cache_Memcache
  • SimplePie_Cache_MySQL
  • SimplePie_Caption
  • SimplePie_Category
  • SimplePie_Content_Type_Sniffer
  • SimplePie_Copyright
  • SimplePie_Core
  • SimplePie_Credit
  • SimplePie_Decode_HTML_Entities
  • SimplePie_Enclosure
  • SimplePie_File
  • SimplePie_gzdecode
  • SimplePie_HTTP_Parser
  • SimplePie_IRI
  • SimplePie_Item
  • SimplePie_Locator
  • SimplePie_Misc
  • SimplePie_Net_IPv6
  • SimplePie_Parse_Date
  • SimplePie_Parser
  • SimplePie_Rating
  • SimplePie_Registry
  • SimplePie_Restriction
  • SimplePie_Sanitize
  • SimplePie_Source
  • SimplePie_XML_Declaration_Parser
  • SMTP
  • tagparse
  • TypeError

Interfaces

  • FOFConfigDomainInterface
  • FOFDatabaseInterface
  • FOFDatabaseQueryLimitable
  • FOFDatabaseQueryPreparable
  • FOFDownloadInterface
  • FOFEncryptAesInterface
  • FOFEncryptRandvalinterface
  • FOFFormField
  • FOFHalRenderInterface
  • FOFPlatformFilesystemInterface
  • FOFPlatformInterface
  • JArchiveExtractable
  • JAssociationExtensionInterface
  • JCacheException
  • JComponentRouterInterface
  • JComponentRouterRulesInterface
  • JController
  • JCryptCipher
  • JCryptPassword
  • JFeedParserNamespace
  • JHttpTransport
  • JLayout
  • JModel
  • JObservableInterface
  • JObserverInterface
  • JObserverUpdaterInterface
  • JSessionHandlerInterface
  • JsonSerializable
  • JUcm
  • JView
  • SimplePie_Cache_Base

Exceptions

  • Error
  • JAccessExceptionNotallowed
  • JCacheExceptionConnecting
  • JCacheExceptionUnsupported
  • JComponentExceptionMissing
  • JDatabaseException
  • JDatabaseExceptionConnecting
  • JDatabaseExceptionExecuting
  • JDatabaseExceptionUnsupported
  • JException
  • JSessionExceptionUnsupported
  • LogException
  • phpmailerException
  • SimplePie_Exception

Constants

  • JERROR_CALLBACK_NOT_CALLABLE
  • JERROR_ILLEGAL_MODE
  • JERROR_ILLEGAL_OPTIONS
  • JREQUEST_ALLOWHTML
  • JREQUEST_ALLOWRAW
  • JREQUEST_NOTRIM
  • JROUTER_MODE_RAW
  • JROUTER_MODE_SEF

Functions

  • __autoload
  • array_column
  • boolval
  • composerRequire205c915b9c7d3e718e7c95793ee67ffe
  • gzopen
  • gzseek
  • gztell
  • hash_equals
  • hash_pbkdf2
  • HTMLFilter
  • jexit
  • jimport
  • json_last_error_msg
  • ldap_escape
  • password_get_info
  • password_hash
  • password_needs_rehash
  • password_verify
  • PHPMailerAutoload
  • random_bytes
  • random_int
  • RandomCompat_intval
  • RandomCompat_strlen
  • RandomCompat_substr
  • tln_body2div
  • tln_casenormalize
  • tln_deent
  • tln_defang
  • tln_findnxreg
  • tln_findnxstr
  • tln_fixatts
  • tln_fixstyle
  • tln_fixurl
  • tln_getnxtag
  • tln_sanitize
  • tln_skipspace
  • tln_tagprint
  • tln_unspace
  • utf8_accents_to_ascii
  • utf8_bad_explain
  • utf8_bad_find
  • utf8_bad_findall
  • utf8_bad_identify
  • utf8_bad_replace
  • utf8_bad_strip
  • utf8_byte_position
  • utf8_compliant
  • utf8_from_unicode
  • utf8_ireplace
  • utf8_is_ascii
  • utf8_is_ascii_ctrl
  • utf8_is_valid
  • utf8_is_word_chars
  • utf8_locate_current_chr
  • utf8_locate_next_chr
  • utf8_ltrim
  • utf8_ord
  • utf8_rtrim
  • utf8_specials_pattern
  • utf8_str_pad
  • utf8_str_split
  • utf8_strcasecmp
  • utf8_strcspn
  • utf8_strip_ascii_ctrl
  • utf8_strip_non_ascii
  • utf8_strip_non_ascii_ctrl
  • utf8_strip_specials
  • utf8_stristr
  • utf8_strlen
  • utf8_strpos
  • utf8_strrev
  • utf8_strrpos
  • utf8_strspn
  • utf8_strtolower
  • utf8_strtoupper
  • utf8_substr
  • utf8_substr_replace
  • utf8_to_unicode
  • utf8_trim
  • utf8_ucfirst
  • utf8_ucwords
  • utf8_ucwords_callback
  1 <?php
  2 /**
  3  * @package     FrameworkOnFramework
  4  * @subpackage  platform
  5  * @copyright   Copyright (C) 2010-2016 Nicholas K. Dionysopoulos / Akeeba Ltd. All rights reserved.
  6  * @license     GNU General Public License version 2 or later; see LICENSE.txt
  7  */
  8 // Protect from unauthorized access
  9 defined('FOF_INCLUDED') or die;
 10 
 11 /**
 12  * Part of the FOF Platform Abstraction Layer.
 13  *
 14  * This implements the platform class for Joomla! 2.5 or later
 15  *
 16  * @package  FrameworkOnFramework
 17  * @since    2.1
 18  */
 19 class FOFIntegrationJoomlaPlatform extends FOFPlatform implements FOFPlatformInterface
 20 {
 21     /**
 22      * The table and table field cache object, used to speed up database access
 23      *
 24      * @var  JRegistry|null
 25      */
 26     private $_cache = null;
 27 
 28     /**
 29      * Public constructor
 30      */
 31     public function __construct()
 32     {
 33         $this->name = 'joomla';
 34         $this->humanReadableName = 'Joomla!';
 35         $this->version = defined('JVERSION') ? JVERSION : '0.0';
 36     }
 37 
 38     /**
 39      * Checks if the current script is run inside a valid CMS execution
 40      *
 41      * @see FOFPlatformInterface::checkExecution()
 42      *
 43      * @return bool
 44      */
 45     public function checkExecution()
 46     {
 47         return defined('_JEXEC');
 48     }
 49 
 50     public function raiseError($code, $message)
 51     {
 52         if (version_compare($this->version, '3.0', 'ge'))
 53         {
 54             throw new Exception($message, $code);
 55         }
 56         else
 57         {
 58             return JError::raiseError($code, $message);
 59         }
 60     }
 61 
 62     /**
 63      * Is this platform enabled?
 64      *
 65      * @see FOFPlatformInterface::isEnabled()
 66      *
 67      * @return  boolean
 68      */
 69     public function isEnabled()
 70     {
 71         if (is_null($this->isEnabled))
 72         {
 73             $this->isEnabled = true;
 74 
 75             // Make sure _JEXEC is defined
 76             if (!defined('_JEXEC'))
 77             {
 78                 $this->isEnabled = false;
 79             }
 80 
 81             // We need JVERSION to be defined
 82             if ($this->isEnabled)
 83             {
 84                 if (!defined('JVERSION'))
 85                 {
 86                     $this->isEnabled = false;
 87                 }
 88             }
 89 
 90             // Check if JFactory exists
 91             if ($this->isEnabled)
 92             {
 93                 if (!class_exists('JFactory'))
 94                 {
 95                     $this->isEnabled = false;
 96                 }
 97             }
 98 
 99             // Check if JApplication exists
100             if ($this->isEnabled)
101             {
102                 $appExists = class_exists('JApplication');
103                 $appExists = $appExists || class_exists('JCli');
104                 $appExists = $appExists || class_exists('JApplicationCli');
105 
106                 if (!$appExists)
107                 {
108                     $this->isEnabled = false;
109                 }
110             }
111         }
112 
113         return $this->isEnabled;
114     }
115 
116     /**
117      * Main function to detect if we're running in a CLI environment and we're admin
118      *
119      * @return  array  isCLI and isAdmin. It's not an associtive array, so we can use list.
120      */
121     protected function isCliAdmin()
122     {
123         static $isCLI   = null;
124         static $isAdmin = null;
125 
126         if (is_null($isCLI) && is_null($isAdmin))
127         {
128             try
129             {
130                 if (is_null(JFactory::$application))
131                 {
132                     $isCLI = true;
133                 }
134                 else
135                 {
136                     $app = JFactory::getApplication();
137                     $isCLI = $app instanceof JException || $app instanceof JApplicationCli;
138                 }
139             }
140             catch (Exception $e)
141             {
142                 $isCLI = true;
143             }
144 
145             if ($isCLI)
146             {
147                 $isAdmin = false;
148             }
149             else
150             {
151                 $isAdmin = !JFactory::$application ? false : JFactory::getApplication()->isAdmin();
152             }
153         }
154 
155         return array($isCLI, $isAdmin);
156     }
157 
158     /**
159      * Returns absolute path to directories used by the CMS.
160      *
161      * @see FOFPlatformInterface::getPlatformBaseDirs()
162      *
163      * @return  array  A hash array with keys root, public, admin, tmp and log.
164      */
165     public function getPlatformBaseDirs()
166     {
167         return array(
168             'root'   => JPATH_ROOT,
169             'public' => JPATH_SITE,
170             'admin'  => JPATH_ADMINISTRATOR,
171             'tmp'    => JFactory::getConfig()->get('tmp_dir'),
172             'log'    => JFactory::getConfig()->get('log_dir')
173         );
174     }
175 
176     /**
177      * Returns the base (root) directories for a given component.
178      *
179      * @param   string  $component  The name of the component. For Joomla! this
180      *                              is something like "com_example"
181      *
182      * @see FOFPlatformInterface::getComponentBaseDirs()
183      *
184      * @return  array  A hash array with keys main, alt, site and admin.
185      */
186     public function getComponentBaseDirs($component)
187     {
188         if ($this->isFrontend())
189         {
190             $mainPath   = JPATH_SITE . '/components/' . $component;
191             $altPath    = JPATH_ADMINISTRATOR . '/components/' . $component;
192         }
193         else
194         {
195             $mainPath   = JPATH_ADMINISTRATOR . '/components/' . $component;
196             $altPath    = JPATH_SITE . '/components/' . $component;
197         }
198 
199         return array(
200             'main'  => $mainPath,
201             'alt'   => $altPath,
202             'site'  => JPATH_SITE . '/components/' . $component,
203             'admin' => JPATH_ADMINISTRATOR . '/components/' . $component,
204         );
205     }
206 
207     /**
208      * Return a list of the view template paths for this component.
209      *
210      * @param   string   $component  The name of the component. For Joomla! this
211      *                               is something like "com_example"
212      * @param   string   $view       The name of the view you're looking a
213      *                               template for
214      * @param   string   $layout     The layout name to load, e.g. 'default'
215      * @param   string   $tpl        The sub-template name to load (null by default)
216      * @param   boolean  $strict     If true, only the specified layout will be searched for.
217      *                               Otherwise we'll fall back to the 'default' layout if the
218      *                               specified layout is not found.
219      *
220      * @see FOFPlatformInterface::getViewTemplateDirs()
221      *
222      * @return  array
223      */
224     public function getViewTemplatePaths($component, $view, $layout = 'default', $tpl = null, $strict = false)
225     {
226         $isAdmin = $this->isBackend();
227 
228         $basePath = $isAdmin ? 'admin:' : 'site:';
229         $basePath .= $component . '/';
230         $altBasePath = $basePath;
231         $basePath .= $view . '/';
232         $altBasePath .= (FOFInflector::isSingular($view) ? FOFInflector::pluralize($view) : FOFInflector::singularize($view)) . '/';
233 
234         if ($strict)
235         {
236             $paths = array(
237                 $basePath . $layout . ($tpl ? "_$tpl" : ''),
238                 $altBasePath . $layout . ($tpl ? "_$tpl" : ''),
239             );
240         }
241         else
242         {
243             $paths = array(
244                 $basePath . $layout . ($tpl ? "_$tpl" : ''),
245                 $basePath . $layout,
246                 $basePath . 'default' . ($tpl ? "_$tpl" : ''),
247                 $basePath . 'default',
248                 $altBasePath . $layout . ($tpl ? "_$tpl" : ''),
249                 $altBasePath . $layout,
250                 $altBasePath . 'default' . ($tpl ? "_$tpl" : ''),
251                 $altBasePath . 'default',
252             );
253             $paths = array_unique($paths);
254         }
255 
256         return $paths;
257     }
258 
259     /**
260      * Get application-specific suffixes to use with template paths. This allows
261      * you to look for view template overrides based on the application version.
262      *
263      * @return  array  A plain array of suffixes to try in template names
264      */
265     public function getTemplateSuffixes()
266     {
267         $jversion = new JVersion;
268         $versionParts = explode('.', $jversion->RELEASE);
269         $majorVersion = array_shift($versionParts);
270         $suffixes = array(
271             '.j' . str_replace('.', '', $jversion->getHelpVersion()),
272             '.j' . $majorVersion,
273         );
274 
275         return $suffixes;
276     }
277 
278     /**
279      * Return the absolute path to the application's template overrides
280      * directory for a specific component. We will use it to look for template
281      * files instead of the regular component directorues. If the application
282      * does not have such a thing as template overrides return an empty string.
283      *
284      * @param   string   $component  The name of the component for which to fetch the overrides
285      * @param   boolean  $absolute   Should I return an absolute or relative path?
286      *
287      * @return  string  The path to the template overrides directory
288      */
289     public function getTemplateOverridePath($component, $absolute = true)
290     {
291         list($isCli, $isAdmin) = $this->isCliAdmin();
292 
293         if (!$isCli)
294         {
295             if ($absolute)
296             {
297                 $path = JPATH_THEMES . '/';
298             }
299             else
300             {
301                 $path = $isAdmin ? 'administrator/templates/' : 'templates/';
302             }
303 
304             if (substr($component, 0, 7) == 'media:/')
305             {
306                 $directory = 'media/' . substr($component, 7);
307             }
308             else
309             {
310                 $directory = 'html/' . $component;
311             }
312 
313             $path .= JFactory::getApplication()->getTemplate() .
314                 '/' . $directory;
315         }
316         else
317         {
318             $path = '';
319         }
320 
321         return $path;
322     }
323 
324     /**
325      * Load the translation files for a given component.
326      *
327      * @param   string  $component  The name of the component. For Joomla! this
328      *                              is something like "com_example"
329      *
330      * @see FOFPlatformInterface::loadTranslations()
331      *
332      * @return  void
333      */
334     public function loadTranslations($component)
335     {
336         if ($this->isBackend())
337         {
338             $paths = array(JPATH_ROOT, JPATH_ADMINISTRATOR);
339         }
340         else
341         {
342             $paths = array(JPATH_ADMINISTRATOR, JPATH_ROOT);
343         }
344 
345         $jlang = JFactory::getLanguage();
346         $jlang->load($component, $paths[0], 'en-GB', true);
347         $jlang->load($component, $paths[0], null, true);
348         $jlang->load($component, $paths[1], 'en-GB', true);
349         $jlang->load($component, $paths[1], null, true);
350     }
351 
352     /**
353      * Authorise access to the component in the back-end.
354      *
355      * @param   string  $component  The name of the component.
356      *
357      * @see FOFPlatformInterface::authorizeAdmin()
358      *
359      * @return  boolean  True to allow loading the component, false to halt loading
360      */
361     public function authorizeAdmin($component)
362     {
363         if ($this->isBackend())
364         {
365             // Master access check for the back-end, Joomla! 1.6 style.
366             $user = JFactory::getUser();
367 
368             if (!$user->authorise('core.manage', $component)
369                 && !$user->authorise('core.admin', $component))
370             {
371                 return false;
372             }
373         }
374 
375         return true;
376     }
377 
378     /**
379      * Return a user object.
380      *
381      * @param   integer  $id  The user ID to load. Skip or use null to retrieve
382      *                        the object for the currently logged in user.
383      *
384      * @see FOFPlatformInterface::getUser()
385      *
386      * @return  JUser  The JUser object for the specified user
387      */
388     public function getUser($id = null)
389     {
390         return JFactory::getUser($id);
391     }
392 
393     /**
394      * Returns the JDocument object which handles this component's response.
395      *
396      * @see FOFPlatformInterface::getDocument()
397      *
398      * @return  JDocument
399      */
400     public function getDocument()
401     {
402         $document = null;
403 
404         if (!$this->isCli())
405         {
406             try
407             {
408                 $document = JFactory::getDocument();
409             }
410             catch (Exception $exc)
411             {
412                 $document = null;
413             }
414         }
415 
416         return $document;
417     }
418 
419     /**
420      * Returns an object to handle dates
421      *
422      * @param   mixed   $time       The initial time
423      * @param   null    $tzOffest   The timezone offset
424      * @param   bool    $locale     Should I try to load a specific class for current language?
425      *
426      * @return  JDate object
427      */
428     public function getDate($time = 'now', $tzOffest = null, $locale = true)
429     {
430         if($locale)
431         {
432             return JFactory::getDate($time, $tzOffest);
433         }
434         else
435         {
436             return new JDate($time, $tzOffest);
437         }
438     }
439 
440     public function getLanguage()
441     {
442         return JFactory::getLanguage();
443     }
444 
445     public function getDbo()
446     {
447         return FOFDatabaseFactory::getInstance()->getDriver('joomla');
448     }
449 
450     /**
451      * This method will try retrieving a variable from the request (input) data.
452      *
453      * @param   string    $key           The user state key for the variable
454      * @param   string    $request       The request variable name for the variable
455      * @param   FOFInput  $input         The FOFInput object with the request (input) data
456      * @param   mixed     $default       The default value. Default: null
457      * @param   string    $type          The filter type for the variable data. Default: none (no filtering)
458      * @param   boolean   $setUserState  Should I set the user state with the fetched value?
459      *
460      * @see FOFPlatformInterface::getUserStateFromRequest()
461      *
462      * @return  mixed  The value of the variable
463      */
464     public function getUserStateFromRequest($key, $request, $input, $default = null, $type = 'none', $setUserState = true)
465     {
466         list($isCLI, $isAdmin) = $this->isCliAdmin();
467 
468         if ($isCLI)
469         {
470             return $input->get($request, $default, $type);
471         }
472 
473         $app = JFactory::getApplication();
474 
475         if (method_exists($app, 'getUserState'))
476         {
477             $old_state = $app->getUserState($key, $default);
478         }
479         else
480         {
481             $old_state = null;
482         }
483 
484         $cur_state = (!is_null($old_state)) ? $old_state : $default;
485         $new_state = $input->get($request, null, $type);
486 
487         // Save the new value only if it was set in this request
488         if ($setUserState)
489         {
490             if ($new_state !== null)
491             {
492                 $app->setUserState($key, $new_state);
493             }
494             else
495             {
496                 $new_state = $cur_state;
497             }
498         }
499         elseif (is_null($new_state))
500         {
501             $new_state = $cur_state;
502         }
503 
504         return $new_state;
505     }
506 
507     /**
508      * Load plugins of a specific type. Obviously this seems to only be required
509      * in the Joomla! CMS.
510      *
511      * @param   string  $type  The type of the plugins to be loaded
512      *
513      * @see FOFPlatformInterface::importPlugin()
514      *
515      * @return void
516      */
517     public function importPlugin($type)
518     {
519         if (!$this->isCli())
520         {
521             JLoader::import('joomla.plugin.helper');
522             JPluginHelper::importPlugin($type);
523         }
524     }
525 
526     /**
527      * Execute plugins (system-level triggers) and fetch back an array with
528      * their return values.
529      *
530      * @param   string  $event  The event (trigger) name, e.g. onBeforeScratchMyEar
531      * @param   array   $data   A hash array of data sent to the plugins as part of the trigger
532      *
533      * @see FOFPlatformInterface::runPlugins()
534      *
535      * @return  array  A simple array containing the results of the plugins triggered
536      */
537     public function runPlugins($event, $data)
538     {
539         if (!$this->isCli())
540         {
541             $app = JFactory::getApplication();
542 
543             if (method_exists($app, 'triggerEvent'))
544             {
545                 return $app->triggerEvent($event, $data);
546             }
547 
548             // IMPORTANT: DO NOT REPLACE THIS INSTANCE OF JDispatcher WITH ANYTHING ELSE. WE NEED JOOMLA!'S PLUGIN EVENT
549             // DISPATCHER HERE, NOT OUR GENERIC EVENTS DISPATCHER
550             if (class_exists('JEventDispatcher'))
551             {
552                 $dispatcher = JEventDispatcher::getInstance();
553             }
554             else
555             {
556                 $dispatcher = JDispatcher::getInstance();
557             }
558 
559             return $dispatcher->trigger($event, $data);
560         }
561         else
562         {
563             return array();
564         }
565     }
566 
567     /**
568      * Perform an ACL check.
569      *
570      * @param   string  $action     The ACL privilege to check, e.g. core.edit
571      * @param   string  $assetname  The asset name to check, typically the component's name
572      *
573      * @see FOFPlatformInterface::authorise()
574      *
575      * @return  boolean  True if the user is allowed this action
576      */
577     public function authorise($action, $assetname)
578     {
579         if ($this->isCli())
580         {
581             return true;
582         }
583 
584         return JFactory::getUser()->authorise($action, $assetname);
585     }
586 
587     /**
588      * Is this the administrative section of the component?
589      *
590      * @see FOFPlatformInterface::isBackend()
591      *
592      * @return  boolean
593      */
594     public function isBackend()
595     {
596         list ($isCli, $isAdmin) = $this->isCliAdmin();
597 
598         return $isAdmin && !$isCli;
599     }
600 
601     /**
602      * Is this the public section of the component?
603      *
604      * @see FOFPlatformInterface::isFrontend()
605      *
606      * @return  boolean
607      */
608     public function isFrontend()
609     {
610         list ($isCli, $isAdmin) = $this->isCliAdmin();
611 
612         return !$isAdmin && !$isCli;
613     }
614 
615     /**
616      * Is this a component running in a CLI application?
617      *
618      * @see FOFPlatformInterface::isCli()
619      *
620      * @return  boolean
621      */
622     public function isCli()
623     {
624         list ($isCli, $isAdmin) = $this->isCliAdmin();
625 
626         return !$isAdmin && $isCli;
627     }
628 
629     /**
630      * Is AJAX re-ordering supported? This is 100% Joomla!-CMS specific. All
631      * other platforms should return false and never ask why.
632      *
633      * @see FOFPlatformInterface::supportsAjaxOrdering()
634      *
635      * @return  boolean
636      */
637     public function supportsAjaxOrdering()
638     {
639         return version_compare(JVERSION, '3.0', 'ge');
640     }
641 
642     /**
643      * Is the global FOF cache enabled?
644      *
645      * @return  boolean
646      */
647     public function isGlobalFOFCacheEnabled()
648     {
649         return !(defined('JDEBUG') && JDEBUG);
650     }
651 
652     /**
653      * Saves something to the cache. This is supposed to be used for system-wide
654      * FOF data, not application data.
655      *
656      * @param   string  $key      The key of the data to save
657      * @param   string  $content  The actual data to save
658      *
659      * @return  boolean  True on success
660      */
661     public function setCache($key, $content)
662     {
663         $registry = $this->getCacheObject();
664 
665         $registry->set($key, $content);
666 
667         return $this->saveCache();
668     }
669 
670     /**
671      * Retrieves data from the cache. This is supposed to be used for system-side
672      * FOF data, not application data.
673      *
674      * @param   string  $key      The key of the data to retrieve
675      * @param   string  $default  The default value to return if the key is not found or the cache is not populated
676      *
677      * @return  string  The cached value
678      */
679     public function getCache($key, $default = null)
680     {
681         $registry = $this->getCacheObject();
682 
683         return $registry->get($key, $default);
684     }
685 
686     /**
687      * Gets a reference to the cache object, loading it from the disk if
688      * needed.
689      *
690      * @param   boolean  $force  Should I forcibly reload the registry?
691      *
692      * @return  JRegistry
693      */
694     private function &getCacheObject($force = false)
695     {
696         // Check if we have to load the cache file or we are forced to do that
697         if (is_null($this->_cache) || $force)
698         {
699             // Create a new JRegistry object
700             JLoader::import('joomla.registry.registry');
701             $this->_cache = new JRegistry;
702 
703             // Try to get data from Joomla!'s cache
704             $cache = JFactory::getCache('fof', '');
705             $data = $cache->get('cache', 'fof');
706 
707             // If data is not found, fall back to the legacy (FOF 2.1.rc3 and earlier) method
708             if ($data === false)
709             {
710                 // Find the path to the file
711                 $cachePath  = JPATH_CACHE . '/fof';
712                 $filename   = $cachePath . '/cache.php';
713                 $filesystem = $this->getIntegrationObject('filesystem');
714 
715                 // Load the cache file if it exists. JRegistryFormatPHP fails
716                 // miserably, so I have to work around it.
717                 if ($filesystem->fileExists($filename))
718                 {
719                     @include_once $filename;
720 
721                     $filesystem->fileDelete($filename);
722 
723                     $className = 'FOFCacheStorage';
724 
725                     if (class_exists($className))
726                     {
727                         $object = new $className;
728                         $this->_cache->loadObject($object);
729 
730                         $options = array(
731                             'class' => 'FOFCacheStorage'
732                         );
733                         $cache->store($this->_cache, 'cache', 'fof');
734                     }
735                 }
736             }
737             else
738             {
739                 $this->_cache = $data;
740             }
741         }
742 
743         return $this->_cache;
744     }
745 
746     /**
747      * Save the cache object back to disk
748      *
749      * @return  boolean  True on success
750      */
751     private function saveCache()
752     {
753         // Get the JRegistry object of our cached data
754         $registry = $this->getCacheObject();
755 
756         $cache = JFactory::getCache('fof', '');
757         return $cache->store($registry, 'cache', 'fof');
758     }
759 
760     /**
761      * Clears the cache of system-wide FOF data. You are supposed to call this in
762      * your components' installation script post-installation and post-upgrade
763      * methods or whenever you are modifying the structure of database tables
764      * accessed by FOF. Please note that FOF's cache never expires and is not
765      * purged by Joomla!. You MUST use this method to manually purge the cache.
766      *
767      * @return  boolean  True on success
768      */
769     public function clearCache()
770     {
771         $false = false;
772         $cache = JFactory::getCache('fof', '');
773         $cache->store($false, 'cache', 'fof');
774     }
775 
776     public function getConfig()
777     {
778         return JFactory::getConfig();
779     }
780 
781     /**
782      * logs in a user
783      *
784      * @param   array  $authInfo  authentification information
785      *
786      * @return  boolean  True on success
787      */
788     public function loginUser($authInfo)
789     {
790         JLoader::import('joomla.user.authentication');
791         $options = array('remember'      => false);
792         $authenticate = JAuthentication::getInstance();
793         $response = $authenticate->authenticate($authInfo, $options);
794 
795         // User failed to authenticate: maybe he enabled two factor authentication?
796         // Let's try again "manually", skipping the check vs two factor auth
797         // Due the big mess with encryption algorithms and libraries, we are doing this extra check only
798         // if we're in Joomla 2.5.18+ or 3.2.1+
799         if($response->status != JAuthentication::STATUS_SUCCESS && method_exists('JUserHelper', 'verifyPassword'))
800         {
801             $db    = $this->getDbo();
802             $query = $db->getQuery(true)
803                         ->select('id, password')
804                         ->from('#__users')
805                         ->where('username=' . $db->quote($authInfo['username']));
806             $result = $db->setQuery($query)->loadObject();
807 
808             if ($result)
809             {
810 
811                 $match = JUserHelper::verifyPassword($authInfo['password'], $result->password, $result->id);
812 
813                 if ($match === true)
814                 {
815                     // Bring this in line with the rest of the system
816                     $user = JUser::getInstance($result->id);
817                     $response->email = $user->email;
818                     $response->fullname = $user->name;
819 
820                     if (JFactory::getApplication()->isAdmin())
821                     {
822                         $response->language = $user->getParam('admin_language');
823                     }
824                     else
825                     {
826                         $response->language = $user->getParam('language');
827                     }
828 
829                     $response->status = JAuthentication::STATUS_SUCCESS;
830                     $response->error_message = '';
831                 }
832             }
833         }
834 
835         if ($response->status == JAuthentication::STATUS_SUCCESS)
836         {
837             $this->importPlugin('user');
838             $results = $this->runPlugins('onLoginUser', array((array) $response, $options));
839 
840             JLoader::import('joomla.user.helper');
841             $userid = JUserHelper::getUserId($response->username);
842             $user = $this->getUser($userid);
843 
844             $session = JFactory::getSession();
845             $session->set('user', $user);
846 
847             return true;
848         }
849 
850         return false;
851     }
852 
853     /**
854      * logs out a user
855      *
856      * @return  boolean  True on success
857      */
858     public function logoutUser()
859     {
860         JLoader::import('joomla.user.authentication');
861         $app = JFactory::getApplication();
862         $options = array('remember'  => false);
863         $parameters = array('username'   => $this->getUser()->username);
864 
865         return $app->triggerEvent('onLogoutUser', array($parameters, $options));
866     }
867 
868     public function logAddLogger($file)
869     {
870         if (!class_exists('JLog'))
871         {
872             return;
873         }
874 
875         JLog::addLogger(array('text_file' => $file), JLog::ALL, array('fof'));
876     }
877 
878     /**
879      * Logs a deprecated practice. In Joomla! this results in the $message being output in the
880      * deprecated log file, found in your site's log directory.
881      *
882      * @param   string  $message  The deprecated practice log message
883      *
884      * @return  void
885      */
886     public function logDeprecated($message)
887     {
888         if (!class_exists('JLog'))
889         {
890             return;
891         }
892 
893         JLog::add($message, JLog::WARNING, 'deprecated');
894     }
895 
896     public function logDebug($message)
897     {
898         if (!class_exists('JLog'))
899         {
900             return;
901         }
902 
903         JLog::add($message, JLog::DEBUG, 'fof');
904     }
905 
906     /**
907      * Returns the root URI for the request.
908      *
909      * @param   boolean  $pathonly  If false, prepend the scheme, host and port information. Default is false.
910      * @param   string   $path      The path
911      *
912      * @return  string  The root URI string.
913      */
914     public function URIroot($pathonly = false, $path = null)
915     {
916         JLoader::import('joomla.environment.uri');
917 
918         return JUri::root($pathonly, $path);
919     }
920 
921     /**
922      * Returns the base URI for the request.
923      *
924      * @param   boolean  $pathonly  If false, prepend the scheme, host and port information. Default is false.
925      * |
926      * @return  string  The base URI string
927      */
928     public function URIbase($pathonly = false)
929     {
930         JLoader::import('joomla.environment.uri');
931 
932         return JUri::base($pathonly);
933     }
934 
935     /**
936      * Method to set a response header.  If the replace flag is set then all headers
937      * with the given name will be replaced by the new one (only if the current platform supports header caching)
938      *
939      * @param   string   $name     The name of the header to set.
940      * @param   string   $value    The value of the header to set.
941      * @param   boolean  $replace  True to replace any headers with the same name.
942      *
943      * @return  void
944      */
945     public function setHeader($name, $value, $replace = false)
946     {
947         if (version_compare($this->version, '3.2', 'ge'))
948         {
949             JFactory::getApplication()->setHeader($name, $value, $replace);
950         }
951         else
952         {
953             JResponse::setHeader($name, $value, $replace);
954         }
955     }
956 
957     public function sendHeaders()
958     {
959         if (version_compare($this->version, '3.2', 'ge'))
960         {
961             JFactory::getApplication()->sendHeaders();
962         }
963         else
964         {
965             JResponse::sendHeaders();
966         }
967     }
968 }
969 
Joomla! Framework TM API documentation generated by ApiGen 2.8.0
Joomla!® and Joomla! Framework™ are trademarks of Open Source Matters, Inc. in the United States and other countries.