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     Joomla.Libraries
  4  * @subpackage  HTML
  5  *
  6  * @copyright   Copyright (C) 2005 - 2017 Open Source Matters, Inc. All rights reserved.
  7  * @license     GNU General Public License version 2 or later; see LICENSE.txt
  8  */
  9 
 10 defined('JPATH_PLATFORM') or die;
 11 
 12 use Joomla\Utilities\ArrayHelper;
 13 
 14 /**
 15  * Utility class for creating HTML select lists
 16  *
 17  * @since  1.5
 18  */
 19 abstract class JHtmlSelect
 20 {
 21     /**
 22      * Default values for options. Organized by option group.
 23      *
 24      * @var     array
 25      * @since   1.5
 26      */
 27     protected static $optionDefaults = array(
 28         'option' => array(
 29             'option.attr' => null,
 30             'option.disable' => 'disable',
 31             'option.id' => null,
 32             'option.key' => 'value',
 33             'option.key.toHtml' => true,
 34             'option.label' => null,
 35             'option.label.toHtml' => true,
 36             'option.text' => 'text',
 37             'option.text.toHtml' => true,
 38             'option.class' => 'class',
 39             'option.onclick' => 'onclick',
 40         ),
 41     );
 42 
 43     /**
 44      * Generates a yes/no radio list.
 45      *
 46      * @param   string  $name      The value of the HTML name attribute
 47      * @param   array   $attribs   Additional HTML attributes for the `<select>` tag
 48      * @param   string  $selected  The key that is selected
 49      * @param   string  $yes       Language key for Yes
 50      * @param   string  $no        Language key for no
 51      * @param   mixed   $id        The id for the field or false for no id
 52      *
 53      * @return  string  HTML for the radio list
 54      *
 55      * @since   1.5
 56      * @see     JFormFieldRadio
 57      */
 58     public static function booleanlist($name, $attribs = array(), $selected = null, $yes = 'JYES', $no = 'JNO', $id = false)
 59     {
 60         $arr = array(JHtml::_('select.option', '0', JText::_($no)), JHtml::_('select.option', '1', JText::_($yes)));
 61 
 62         return JHtml::_('select.radiolist', $arr, $name, $attribs, 'value', 'text', (int) $selected, $id);
 63     }
 64 
 65     /**
 66      * Generates an HTML selection list.
 67      *
 68      * @param   array    $data       An array of objects, arrays, or scalars.
 69      * @param   string   $name       The value of the HTML name attribute.
 70      * @param   mixed    $attribs    Additional HTML attributes for the `<select>` tag. This
 71      *                               can be an array of attributes, or an array of options. Treated as options
 72      *                               if it is the last argument passed. Valid options are:
 73      *                               Format options, see {@see JHtml::$formatOptions}.
 74      *                               Selection options, see {@see JHtmlSelect::options()}.
 75      *                               list.attr, string|array: Additional attributes for the select
 76      *                               element.
 77      *                               id, string: Value to use as the select element id attribute.
 78      *                               Defaults to the same as the name.
 79      *                               list.select, string|array: Identifies one or more option elements
 80      *                               to be selected, based on the option key values.
 81      * @param   string   $optKey     The name of the object variable for the option value. If
 82      *                               set to null, the index of the value array is used.
 83      * @param   string   $optText    The name of the object variable for the option text.
 84      * @param   mixed    $selected   The key that is selected (accepts an array or a string).
 85      * @param   mixed    $idtag      Value of the field id or null by default
 86      * @param   boolean  $translate  True to translate
 87      *
 88      * @return  string  HTML for the select list.
 89      *
 90      * @since   1.5
 91      */
 92     public static function genericlist($data, $name, $attribs = null, $optKey = 'value', $optText = 'text', $selected = null, $idtag = false,
 93         $translate = false)
 94     {
 95         // Set default options
 96         $options = array_merge(JHtml::$formatOptions, array('format.depth' => 0, 'id' => false));
 97 
 98         if (is_array($attribs) && func_num_args() === 3)
 99         {
100             // Assume we have an options array
101             $options = array_merge($options, $attribs);
102         }
103         else
104         {
105             // Get options from the parameters
106             $options['id'] = $idtag;
107             $options['list.attr'] = $attribs;
108             $options['list.translate'] = $translate;
109             $options['option.key'] = $optKey;
110             $options['option.text'] = $optText;
111             $options['list.select'] = $selected;
112         }
113 
114         $attribs = '';
115 
116         if (isset($options['list.attr']))
117         {
118             if (is_array($options['list.attr']))
119             {
120                 $attribs = ArrayHelper::toString($options['list.attr']);
121             }
122             else
123             {
124                 $attribs = $options['list.attr'];
125             }
126 
127             if ($attribs !== '')
128             {
129                 $attribs = ' ' . $attribs;
130             }
131         }
132 
133         $id = $options['id'] !== false ? $options['id'] : $name;
134         $id = str_replace(array('[', ']', ' '), '', $id);
135 
136         $baseIndent = str_repeat($options['format.indent'], $options['format.depth']++);
137         $html = $baseIndent . '<select' . ($id !== '' ? ' id="' . $id . '"' : '') . ' name="' . $name . '"' . $attribs . '>' . $options['format.eol']
138             . static::options($data, $options) . $baseIndent . '</select>' . $options['format.eol'];
139 
140         return $html;
141     }
142 
143     /**
144      * Method to build a list with suggestions
145      *
146      * @param   array    $data       An array of objects, arrays, or values.
147      * @param   string   $optKey     The name of the object variable for the option value. If
148      *                               set to null, the index of the value array is used.
149      * @param   string   $optText    The name of the object variable for the option text.
150      * @param   mixed    $idtag      Value of the field id or null by default
151      * @param   boolean  $translate  True to translate
152      *
153      * @return  string  HTML for the select list
154      *
155      * @since       3.2
156      * @deprecated  4.0  Just create the `<datalist>` directly instead
157      */
158     public static function suggestionlist($data, $optKey = 'value', $optText = 'text', $idtag = null, $translate = false)
159     {
160         // Log deprecated message
161         JLog::add(
162             'JHtmlSelect::suggestionlist() is deprecated. Create the <datalist> tag directly instead.',
163             JLog::WARNING,
164             'deprecated'
165         );
166 
167         // Note: $idtag is requried but has to be an optional argument in the funtion call due to argument order
168         if (!$idtag)
169         {
170             throw new InvalidArgumentException('$idtag is a required argument in deprecated JHtmlSelect::suggestionlist');
171         }
172 
173         // Set default options
174         $options = array_merge(JHtml::$formatOptions, array('format.depth' => 0, 'id' => false));
175 
176         // Get options from the parameters
177         $options['id'] = $idtag;
178         $options['list.attr'] = null;
179         $options['list.translate'] = $translate;
180         $options['option.key'] = $optKey;
181         $options['option.text'] = $optText;
182         $options['list.select'] = null;
183 
184         $id = ' id="' . $idtag . '"';
185 
186         $baseIndent = str_repeat($options['format.indent'], $options['format.depth']++);
187         $html = $baseIndent . '<datalist' . $id . '>' . $options['format.eol']
188             . static::options($data, $options) . $baseIndent . '</datalist>' . $options['format.eol'];
189 
190         return $html;
191     }
192 
193     /**
194      * Generates a grouped HTML selection list from nested arrays.
195      *
196      * @param   array   $data     An array of groups, each of which is an array of options.
197      * @param   string  $name     The value of the HTML name attribute
198      * @param   array   $options  Options, an array of key/value pairs. Valid options are:
199      *                            Format options, {@see JHtml::$formatOptions}.
200      *                            Selection options. See {@see JHtmlSelect::options()}.
201      *                            group.id: The property in each group to use as the group id
202      *                            attribute. Defaults to none.
203      *                            group.label: The property in each group to use as the group
204      *                            label. Defaults to "text". If set to null, the data array index key is
205      *                            used.
206      *                            group.items: The property in each group to use as the array of
207      *                            items in the group. Defaults to "items". If set to null, group.id and
208      *                            group. label are forced to null and the data element is assumed to be a
209      *                            list of selections.
210      *                            id: Value to use as the select element id attribute. Defaults to
211      *                            the same as the name.
212      *                            list.attr: Attributes for the select element. Can be a string or
213      *                            an array of key/value pairs. Defaults to none.
214      *                            list.select: either the value of one selected option or an array
215      *                            of selected options. Default: none.
216      *                            list.translate: Boolean. If set, text and labels are translated via
217      *                            JText::_().
218      *
219      * @return  string  HTML for the select list
220      *
221      * @since   1.5
222      * @throws  RuntimeException If a group has contents that cannot be processed.
223      */
224     public static function groupedlist($data, $name, $options = array())
225     {
226         // Set default options and overwrite with anything passed in
227         $options = array_merge(
228             JHtml::$formatOptions,
229             array('format.depth' => 0, 'group.items' => 'items', 'group.label' => 'text', 'group.label.toHtml' => true, 'id' => false),
230             $options
231         );
232 
233         // Apply option rules
234         if ($options['group.items'] === null)
235         {
236             $options['group.label'] = null;
237         }
238 
239         $attribs = '';
240 
241         if (isset($options['list.attr']))
242         {
243             if (is_array($options['list.attr']))
244             {
245                 $attribs = ArrayHelper::toString($options['list.attr']);
246             }
247             else
248             {
249                 $attribs = $options['list.attr'];
250             }
251 
252             if ($attribs !== '')
253             {
254                 $attribs = ' ' . $attribs;
255             }
256         }
257 
258         $id = $options['id'] !== false ? $options['id'] : $name;
259         $id = str_replace(array('[', ']', ' '), '', $id);
260 
261         // Disable groups in the options.
262         $options['groups'] = false;
263 
264         $baseIndent = str_repeat($options['format.indent'], $options['format.depth']++);
265         $html = $baseIndent . '<select' . ($id !== '' ? ' id="' . $id . '"' : '') . ' name="' . $name . '"' . $attribs . '>' . $options['format.eol'];
266         $groupIndent = str_repeat($options['format.indent'], $options['format.depth']++);
267 
268         foreach ($data as $dataKey => $group)
269         {
270             $label = $dataKey;
271             $id = '';
272             $noGroup = is_int($dataKey);
273 
274             if ($options['group.items'] == null)
275             {
276                 // Sub-list is an associative array
277                 $subList = $group;
278             }
279             elseif (is_array($group))
280             {
281                 // Sub-list is in an element of an array.
282                 $subList = $group[$options['group.items']];
283 
284                 if (isset($group[$options['group.label']]))
285                 {
286                     $label = $group[$options['group.label']];
287                     $noGroup = false;
288                 }
289 
290                 if (isset($options['group.id']) && isset($group[$options['group.id']]))
291                 {
292                     $id = $group[$options['group.id']];
293                     $noGroup = false;
294                 }
295             }
296             elseif (is_object($group))
297             {
298                 // Sub-list is in a property of an object
299                 $subList = $group->{$options['group.items']};
300 
301                 if (isset($group->{$options['group.label']}))
302                 {
303                     $label = $group->{$options['group.label']};
304                     $noGroup = false;
305                 }
306 
307                 if (isset($options['group.id']) && isset($group->{$options['group.id']}))
308                 {
309                     $id = $group->{$options['group.id']};
310                     $noGroup = false;
311                 }
312             }
313             else
314             {
315                 throw new RuntimeException('Invalid group contents.', 1);
316             }
317 
318             if ($noGroup)
319             {
320                 $html .= static::options($subList, $options);
321             }
322             else
323             {
324                 $html .= $groupIndent . '<optgroup' . (empty($id) ? '' : ' id="' . $id . '"') . ' label="'
325                     . ($options['group.label.toHtml'] ? htmlspecialchars($label, ENT_COMPAT, 'UTF-8') : $label) . '">' . $options['format.eol']
326                     . static::options($subList, $options) . $groupIndent . '</optgroup>' . $options['format.eol'];
327             }
328         }
329 
330         $html .= $baseIndent . '</select>' . $options['format.eol'];
331 
332         return $html;
333     }
334 
335     /**
336      * Generates a selection list of integers.
337      *
338      * @param   integer  $start     The start integer
339      * @param   integer  $end       The end integer
340      * @param   integer  $inc       The increment
341      * @param   string   $name      The value of the HTML name attribute
342      * @param   mixed    $attribs   Additional HTML attributes for the `<select>` tag, an array of
343      *                              attributes, or an array of options. Treated as options if it is the last
344      *                              argument passed.
345      * @param   mixed    $selected  The key that is selected
346      * @param   string   $format    The printf format to be applied to the number
347      *
348      * @return  string   HTML for the select list
349      *
350      * @since   1.5
351      */
352     public static function integerlist($start, $end, $inc, $name, $attribs = null, $selected = null, $format = '')
353     {
354         // Set default options
355         $options = array_merge(JHtml::$formatOptions, array('format.depth' => 0, 'option.format' => '', 'id' => null));
356 
357         if (is_array($attribs) && func_num_args() === 5)
358         {
359             // Assume we have an options array
360             $options = array_merge($options, $attribs);
361 
362             // Extract the format and remove it from downstream options
363             $format = $options['option.format'];
364             unset($options['option.format']);
365         }
366         else
367         {
368             // Get options from the parameters
369             $options['list.attr'] = $attribs;
370             $options['list.select'] = $selected;
371         }
372 
373         $start = (int) $start;
374         $end   = (int) $end;
375         $inc   = (int) $inc;
376 
377         $data = array();
378 
379         for ($i = $start; $i <= $end; $i += $inc)
380         {
381             $data[$i] = $format ? sprintf($format, $i) : $i;
382         }
383 
384         // Tell genericlist() to use array keys
385         $options['option.key'] = null;
386 
387         return JHtml::_('select.genericlist', $data, $name, $options);
388     }
389 
390     /**
391      * Create a placeholder for an option group.
392      *
393      * @param   string  $text     The text for the option
394      * @param   string  $optKey   The returned object property name for the value
395      * @param   string  $optText  The returned object property name for the text
396      *
397      * @return  stdClass
398      *
399      * @deprecated  4.0  Use JHtmlSelect::groupedList()
400      * @see     JHtmlSelect::groupedList()
401      * @since   1.5
402      */
403     public static function optgroup($text, $optKey = 'value', $optText = 'text')
404     {
405         JLog::add('JHtmlSelect::optgroup() is deprecated, use JHtmlSelect::groupedList() instead.', JLog::WARNING, 'deprecated');
406 
407         // Set initial state
408         static $state = 'open';
409 
410         // Toggle between open and close states:
411         switch ($state)
412         {
413             case 'open':
414                 $obj = new stdClass;
415                 $obj->$optKey = '<OPTGROUP>';
416                 $obj->$optText = $text;
417                 $state = 'close';
418                 break;
419             case 'close':
420                 $obj = new stdClass;
421                 $obj->$optKey = '</OPTGROUP>';
422                 $obj->$optText = $text;
423                 $state = 'open';
424                 break;
425         }
426 
427         return $obj;
428     }
429 
430     /**
431      * Create an object that represents an option in an option list.
432      *
433      * @param   string   $value    The value of the option
434      * @param   string   $text     The text for the option
435      * @param   mixed    $optKey   If a string, the returned object property name for
436      *                             the value. If an array, options. Valid options are:
437      *                             attr: String|array. Additional attributes for this option.
438      *                             Defaults to none.
439      *                             disable: Boolean. If set, this option is disabled.
440      *                             label: String. The value for the option label.
441      *                             option.attr: The property in each option array to use for
442      *                             additional selection attributes. Defaults to none.
443      *                             option.disable: The property that will hold the disabled state.
444      *                             Defaults to "disable".
445      *                             option.key: The property that will hold the selection value.
446      *                             Defaults to "value".
447      *                             option.label: The property in each option array to use as the
448      *                             selection label attribute. If a "label" option is provided, defaults to
449      *                             "label", if no label is given, defaults to null (none).
450      *                             option.text: The property that will hold the the displayed text.
451      *                             Defaults to "text". If set to null, the option array is assumed to be a
452      *                             list of displayable scalars.
453      * @param   string   $optText  The property that will hold the the displayed text. This
454      *                             parameter is ignored if an options array is passed.
455      * @param   boolean  $disable  Not used.
456      *
457      * @return  stdClass
458      *
459      * @since   1.5
460      */
461     public static function option($value, $text = '', $optKey = 'value', $optText = 'text', $disable = false)
462     {
463         $options = array(
464             'attr' => null,
465             'disable' => false,
466             'option.attr' => null,
467             'option.disable' => 'disable',
468             'option.key' => 'value',
469             'option.label' => null,
470             'option.text' => 'text',
471         );
472 
473         if (is_array($optKey))
474         {
475             // Merge in caller's options
476             $options = array_merge($options, $optKey);
477         }
478         else
479         {
480             // Get options from the parameters
481             $options['option.key'] = $optKey;
482             $options['option.text'] = $optText;
483             $options['disable'] = $disable;
484         }
485 
486         $obj = new stdClass;
487         $obj->{$options['option.key']}  = $value;
488         $obj->{$options['option.text']} = trim($text) ? $text : $value;
489 
490         /*
491          * If a label is provided, save it. If no label is provided and there is
492          * a label name, initialise to an empty string.
493          */
494         $hasProperty = $options['option.label'] !== null;
495 
496         if (isset($options['label']))
497         {
498             $labelProperty = $hasProperty ? $options['option.label'] : 'label';
499             $obj->$labelProperty = $options['label'];
500         }
501         elseif ($hasProperty)
502         {
503             $obj->{$options['option.label']} = '';
504         }
505 
506         // Set attributes only if there is a property and a value
507         if ($options['attr'] !== null)
508         {
509             $obj->{$options['option.attr']} = $options['attr'];
510         }
511 
512         // Set disable only if it has a property and a value
513         if ($options['disable'] !== null)
514         {
515             $obj->{$options['option.disable']} = $options['disable'];
516         }
517 
518         return $obj;
519     }
520 
521     /**
522      * Generates the option tags for an HTML select list (with no select tag
523      * surrounding the options).
524      *
525      * @param   array    $arr        An array of objects, arrays, or values.
526      * @param   mixed    $optKey     If a string, this is the name of the object variable for
527      *                               the option value. If null, the index of the array of objects is used. If
528      *                               an array, this is a set of options, as key/value pairs. Valid options are:
529      *                               -Format options, {@see JHtml::$formatOptions}.
530      *                               -groups: Boolean. If set, looks for keys with the value
531      *                                "&lt;optgroup>" and synthesizes groups from them. Deprecated. Defaults
532      *                                true for backwards compatibility.
533      *                               -list.select: either the value of one selected option or an array
534      *                                of selected options. Default: none.
535      *                               -list.translate: Boolean. If set, text and labels are translated via
536      *                                JText::_(). Default is false.
537      *                               -option.id: The property in each option array to use as the
538      *                                selection id attribute. Defaults to none.
539      *                               -option.key: The property in each option array to use as the
540      *                                selection value. Defaults to "value". If set to null, the index of the
541      *                                option array is used.
542      *                               -option.label: The property in each option array to use as the
543      *                                selection label attribute. Defaults to null (none).
544      *                               -option.text: The property in each option array to use as the
545      *                               displayed text. Defaults to "text". If set to null, the option array is
546      *                               assumed to be a list of displayable scalars.
547      *                               -option.attr: The property in each option array to use for
548      *                                additional selection attributes. Defaults to none.
549      *                               -option.disable: The property that will hold the disabled state.
550      *                                Defaults to "disable".
551      *                               -option.key: The property that will hold the selection value.
552      *                                Defaults to "value".
553      *                               -option.text: The property that will hold the the displayed text.
554      *                               Defaults to "text". If set to null, the option array is assumed to be a
555      *                               list of displayable scalars.
556      * @param   string   $optText    The name of the object variable for the option text.
557      * @param   mixed    $selected   The key that is selected (accepts an array or a string)
558      * @param   boolean  $translate  Translate the option values.
559      *
560      * @return  string  HTML for the select list
561      *
562      * @since   1.5
563      */
564     public static function options($arr, $optKey = 'value', $optText = 'text', $selected = null, $translate = false)
565     {
566         $options = array_merge(
567             JHtml::$formatOptions,
568             static::$optionDefaults['option'],
569             array('format.depth' => 0, 'groups' => true, 'list.select' => null, 'list.translate' => false)
570         );
571 
572         if (is_array($optKey))
573         {
574             // Set default options and overwrite with anything passed in
575             $options = array_merge($options, $optKey);
576         }
577         else
578         {
579             // Get options from the parameters
580             $options['option.key'] = $optKey;
581             $options['option.text'] = $optText;
582             $options['list.select'] = $selected;
583             $options['list.translate'] = $translate;
584         }
585 
586         $html = '';
587         $baseIndent = str_repeat($options['format.indent'], $options['format.depth']);
588 
589         foreach ($arr as $elementKey => &$element)
590         {
591             $attr = '';
592             $extra = '';
593             $label = '';
594             $id = '';
595 
596             if (is_array($element))
597             {
598                 $key = $options['option.key'] === null ? $elementKey : $element[$options['option.key']];
599                 $text = $element[$options['option.text']];
600 
601                 if (isset($element[$options['option.attr']]))
602                 {
603                     $attr = $element[$options['option.attr']];
604                 }
605 
606                 if (isset($element[$options['option.id']]))
607                 {
608                     $id = $element[$options['option.id']];
609                 }
610 
611                 if (isset($element[$options['option.label']]))
612                 {
613                     $label = $element[$options['option.label']];
614                 }
615 
616                 if (isset($element[$options['option.disable']]) && $element[$options['option.disable']])
617                 {
618                     $extra .= ' disabled="disabled"';
619                 }
620             }
621             elseif (is_object($element))
622             {
623                 $key = $options['option.key'] === null ? $elementKey : $element->{$options['option.key']};
624                 $text = $element->{$options['option.text']};
625 
626                 if (isset($element->{$options['option.attr']}))
627                 {
628                     $attr = $element->{$options['option.attr']};
629                 }
630 
631                 if (isset($element->{$options['option.id']}))
632                 {
633                     $id = $element->{$options['option.id']};
634                 }
635 
636                 if (isset($element->{$options['option.label']}))
637                 {
638                     $label = $element->{$options['option.label']};
639                 }
640 
641                 if (isset($element->{$options['option.disable']}) && $element->{$options['option.disable']})
642                 {
643                     $extra .= ' disabled="disabled"';
644                 }
645 
646                 if (isset($element->{$options['option.class']}) && $element->{$options['option.class']})
647                 {
648                     $extra .= ' class="' . $element->{$options['option.class']} . '"';
649                 }
650 
651                 if (isset($element->{$options['option.onclick']}) && $element->{$options['option.onclick']})
652                 {
653                     $extra .= ' onclick="' . $element->{$options['option.onclick']} . '"';
654                 }
655             }
656             else
657             {
658                 // This is a simple associative array
659                 $key = $elementKey;
660                 $text = $element;
661             }
662 
663             /*
664              * The use of options that contain optgroup HTML elements was
665              * somewhat hacked for J1.5. J1.6 introduces the grouplist() method
666              * to handle this better. The old solution is retained through the
667              * "groups" option, which defaults true in J1.6, but should be
668              * deprecated at some point in the future.
669              */
670 
671             $key = (string) $key;
672 
673             if ($key === '<OPTGROUP>' && $options['groups'])
674             {
675                 $html .= $baseIndent . '<optgroup label="' . ($options['list.translate'] ? JText::_($text) : $text) . '">' . $options['format.eol'];
676                 $baseIndent = str_repeat($options['format.indent'], ++$options['format.depth']);
677             }
678             elseif ($key === '</OPTGROUP>' && $options['groups'])
679             {
680                 $baseIndent = str_repeat($options['format.indent'], --$options['format.depth']);
681                 $html .= $baseIndent . '</optgroup>' . $options['format.eol'];
682             }
683             else
684             {
685                 // If no string after hyphen - take hyphen out
686                 $splitText = explode(' - ', $text, 2);
687                 $text = $splitText[0];
688 
689                 if (isset($splitText[1]) && $splitText[1] !== '' && !preg_match('/^[\s]+$/', $splitText[1]))
690                 {
691                     $text .= ' - ' . $splitText[1];
692                 }
693 
694                 if (!empty($label) && $options['list.translate'])
695                 {
696                     $label = JText::_($label);
697                 }
698 
699                 if ($options['option.label.toHtml'])
700                 {
701                     $label = htmlentities($label);
702                 }
703 
704                 if (is_array($attr))
705                 {
706                     $attr = ArrayHelper::toString($attr);
707                 }
708                 else
709                 {
710                     $attr = trim($attr);
711                 }
712 
713                 $extra = ($id ? ' id="' . $id . '"' : '') . ($label ? ' label="' . $label . '"' : '') . ($attr ? ' ' . $attr : '') . $extra;
714 
715                 if (is_array($options['list.select']))
716                 {
717                     foreach ($options['list.select'] as $val)
718                     {
719                         $key2 = is_object($val) ? $val->{$options['option.key']} : $val;
720 
721                         if ($key == $key2)
722                         {
723                             $extra .= ' selected="selected"';
724                             break;
725                         }
726                     }
727                 }
728                 elseif ((string) $key === (string) $options['list.select'])
729                 {
730                     $extra .= ' selected="selected"';
731                 }
732 
733                 if ($options['list.translate'])
734                 {
735                     $text = JText::_($text);
736                 }
737 
738                 // Generate the option, encoding as required
739                 $html .= $baseIndent . '<option value="' . ($options['option.key.toHtml'] ? htmlspecialchars($key, ENT_COMPAT, 'UTF-8') : $key) . '"'
740                     . $extra . '>';
741                 $html .= $options['option.text.toHtml'] ? htmlentities(html_entity_decode($text, ENT_COMPAT, 'UTF-8'), ENT_COMPAT, 'UTF-8') : $text;
742                 $html .= '</option>' . $options['format.eol'];
743             }
744         }
745 
746         return $html;
747     }
748 
749     /**
750      * Generates an HTML radio list.
751      *
752      * @param   array    $data       An array of objects
753      * @param   string   $name       The value of the HTML name attribute
754      * @param   string   $attribs    Additional HTML attributes for the `<select>` tag
755      * @param   mixed    $optKey     The key that is selected
756      * @param   string   $optText    The name of the object variable for the option value
757      * @param   string   $selected   The name of the object variable for the option text
758      * @param   boolean  $idtag      Value of the field id or null by default
759      * @param   boolean  $translate  True if options will be translated
760      *
761      * @return  string  HTML for the select list
762      *
763      * @since   1.5
764      */
765     public static function radiolist($data, $name, $attribs = null, $optKey = 'value', $optText = 'text', $selected = null, $idtag = false,
766         $translate = false)
767     {
768 
769         if (is_array($attribs))
770         {
771             $attribs = ArrayHelper::toString($attribs);
772         }
773 
774         $id_text = $idtag ?: $name;
775 
776         $html = '<div class="controls">';
777 
778         foreach ($data as $obj)
779         {
780             $k = $obj->$optKey;
781             $t = $translate ? JText::_($obj->$optText) : $obj->$optText;
782             $id = (isset($obj->id) ? $obj->id : null);
783 
784             $extra = '';
785             $id = $id ? $obj->id : $id_text . $k;
786 
787             if (is_array($selected))
788             {
789                 foreach ($selected as $val)
790                 {
791                     $k2 = is_object($val) ? $val->$optKey : $val;
792 
793                     if ($k == $k2)
794                     {
795                         $extra .= ' selected="selected" ';
796                         break;
797                     }
798                 }
799             }
800             else
801             {
802                 $extra .= ((string) $k === (string) $selected ? ' checked="checked" ' : '');
803             }
804 
805             $html .= "\n\t" . '<label for="' . $id . '" id="' . $id . '-lbl" class="radio">';
806             $html .= "\n\t\n\t" . '<input type="radio" name="' . $name . '" id="' . $id . '" value="' . $k . '" ' . $extra
807                 . $attribs . ' />' . $t;
808             $html .= "\n\t" . '</label>';
809         }
810 
811         $html .= "\n";
812         $html .= '</div>';
813         $html .= "\n";
814 
815         return $html;
816     }
817 }
818 
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.