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 form
  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 JFormHelper::loadFieldClass('rules');
 12 
 13 /**
 14  * Form Field class for FOF
 15  * Joomla! ACL Rules
 16  *
 17  * @package  FrameworkOnFramework
 18  * @since    2.1
 19  */
 20 class FOFFormFieldRules extends JFormFieldRules implements FOFFormField
 21 {
 22     protected $static;
 23 
 24     protected $repeatable;
 25 
 26     /** @var   FOFTable  The item being rendered in a repeatable form field */
 27     public $item;
 28 
 29     /** @var int A monotonically increasing number, denoting the row number in a repeatable view */
 30     public $rowid;
 31 
 32     /**
 33      * Method to get certain otherwise inaccessible properties from the form field object.
 34      *
 35      * @param   string  $name  The property name for which to the the value.
 36      *
 37      * @return  mixed  The property value or null.
 38      *
 39      * @since   2.0
 40      */
 41     public function __get($name)
 42     {
 43         switch ($name)
 44         {
 45             // This field cannot provide a static display
 46             case 'static':
 47                 return '';
 48                 break;
 49 
 50             // This field cannot provide a repeateable display
 51             case 'repeatable':
 52                 return '';
 53                 break;
 54 
 55             default:
 56                 return parent::__get($name);
 57         }
 58     }
 59 
 60     /**
 61      * Get the rendering of this field type for static display, e.g. in a single
 62      * item view (typically a "read" task).
 63      *
 64      * @since 2.0
 65      *
 66      * @return  string  The field HTML
 67      */
 68     public function getStatic()
 69     {
 70         return '';
 71     }
 72 
 73     /**
 74      * Get the rendering of this field type for a repeatable (grid) display,
 75      * e.g. in a view listing many item (typically a "browse" task)
 76      *
 77      * @since 2.1
 78      *
 79      * @return  string  The field HTML
 80      */
 81     public function getRepeatable()
 82     {
 83         return '';
 84     }
 85 
 86     /**
 87      * At the timing of this writing (2013-12-03), the Joomla "rules" field is buggy. When you are
 88      * dealing with a new record it gets the default permissions from the root asset node, which
 89      * is fine for the default permissions of Joomla articles, but unsuitable for third party software.
 90      * We had to copy & paste the whole code, since we can't "inject" the correct asset id if one is
 91      * not found. Our fixes are surrounded by `FOF Library fix` remarks.
 92      *
 93      * @return  string  The input field's HTML for this field type
 94      */
 95     public function getInput()
 96     {
 97         if (version_compare(JVERSION, '3.0', 'ge'))
 98         {
 99             return $this->getInput3x();
100         }
101         else
102         {
103             return $this->getInput25();
104         }
105     }
106 
107     protected function getInput25()
108     {
109         JHtml::_('behavior.tooltip');
110 
111         // Initialise some field attributes.
112         $section = $this->element['section'] ? (string) $this->element['section'] : '';
113         $component = $this->element['component'] ? (string) $this->element['component'] : '';
114         $assetField = $this->element['asset_field'] ? (string) $this->element['asset_field'] : 'asset_id';
115 
116         // Get the actions for the asset.
117         $actions = JAccess::getActions($component, $section);
118 
119         // Iterate over the children and add to the actions.
120         foreach ($this->element->children() as $el)
121         {
122             if ($el->getName() == 'action')
123             {
124                 $actions[] = (object) array('name' => (string) $el['name'], 'title' => (string) $el['title'],
125                     'description' => (string) $el['description']);
126             }
127         }
128 
129         // Get the explicit rules for this asset.
130         if ($section == 'component')
131         {
132             // Need to find the asset id by the name of the component.
133             $db    = FOFPlatform::getInstance()->getDbo();
134             $query = $db->getQuery(true);
135             $query->select($db->quoteName('id'));
136             $query->from($db->quoteName('#__assets'));
137             $query->where($db->quoteName('name') . ' = ' . $db->quote($component));
138             $db->setQuery($query);
139             $assetId = (int) $db->loadResult();
140 
141             if ($error = $db->getErrorMsg())
142             {
143                 JError::raiseNotice(500, $error);
144             }
145         }
146         else
147         {
148             // Find the asset id of the content.
149             // Note that for global configuration, com_config injects asset_id = 1 into the form.
150             $assetId = $this->form->getValue($assetField);
151 
152             // ==== FOF Library fix - Start ====
153             // If there is no assetId (let's say we are dealing with a new record), let's ask the table
154             // to give it to us. Here you should implement your logic (ie getting default permissions from
155             // the component or from the category)
156             if(!$assetId)
157             {
158                 $table   = $this->form->getModel()->getTable();
159                 $assetId = $table->getAssetParentId();
160             }
161             // ==== FOF Library fix - End   ====
162         }
163 
164         // Use the compact form for the content rules (deprecated).
165         //if (!empty($component) && $section != 'component') {
166         //  return JHtml::_('rules.assetFormWidget', $actions, $assetId, $assetId ? null : $component, $this->name, $this->id);
167         //}
168 
169         // Full width format.
170 
171         // Get the rules for just this asset (non-recursive).
172         $assetRules = JAccess::getAssetRules($assetId);
173 
174         // Get the available user groups.
175         $groups = $this->getUserGroups();
176 
177         // Build the form control.
178         $curLevel = 0;
179 
180         // Prepare output
181         $html = array();
182         $html[] = '<div id="permissions-sliders" class="pane-sliders">';
183         $html[] = '<p class="rule-desc">' . JText::_('JLIB_RULES_SETTINGS_DESC') . '</p>';
184         $html[] = '<ul id="rules">';
185 
186         // Start a row for each user group.
187         foreach ($groups as $group)
188         {
189             $difLevel = $group->level - $curLevel;
190 
191             if ($difLevel > 0)
192             {
193                 $html[] = '<li><ul>';
194             }
195             elseif ($difLevel < 0)
196             {
197                 $html[] = str_repeat('</ul></li>', -$difLevel);
198             }
199 
200             $html[] = '<li>';
201 
202             $html[] = '<div class="panel">';
203             $html[] = '<h3 class="pane-toggler title"><a href="javascript:void(0);"><span>';
204             $html[] = str_repeat('<span class="level">|&ndash;</span> ', $curLevel = $group->level) . $group->text;
205             $html[] = '</span></a></h3>';
206             $html[] = '<div class="pane-slider content pane-hide">';
207             $html[] = '<div class="mypanel">';
208             $html[] = '<table class="group-rules">';
209             $html[] = '<thead>';
210             $html[] = '<tr>';
211 
212             $html[] = '<th class="actions" id="actions-th' . $group->value . '">';
213             $html[] = '<span class="acl-action">' . JText::_('JLIB_RULES_ACTION') . '</span>';
214             $html[] = '</th>';
215 
216             $html[] = '<th class="settings" id="settings-th' . $group->value . '">';
217             $html[] = '<span class="acl-action">' . JText::_('JLIB_RULES_SELECT_SETTING') . '</span>';
218             $html[] = '</th>';
219 
220             // The calculated setting is not shown for the root group of global configuration.
221             $canCalculateSettings = ($group->parent_id || !empty($component));
222             if ($canCalculateSettings)
223             {
224                 $html[] = '<th id="aclactionth' . $group->value . '">';
225                 $html[] = '<span class="acl-action">' . JText::_('JLIB_RULES_CALCULATED_SETTING') . '</span>';
226                 $html[] = '</th>';
227             }
228 
229             $html[] = '</tr>';
230             $html[] = '</thead>';
231             $html[] = '<tbody>';
232 
233             foreach ($actions as $action)
234             {
235                 $html[] = '<tr>';
236                 $html[] = '<td headers="actions-th' . $group->value . '">';
237                 $html[] = '<label class="hasTip" for="' . $this->id . '_' . $action->name . '_' . $group->value . '" title="'
238                     . htmlspecialchars(JText::_($action->title) . '::' . JText::_($action->description), ENT_COMPAT, 'UTF-8') . '">';
239                 $html[] = JText::_($action->title);
240                 $html[] = '</label>';
241                 $html[] = '</td>';
242 
243                 $html[] = '<td headers="settings-th' . $group->value . '">';
244 
245                 $html[] = '<select name="' . $this->name . '[' . $action->name . '][' . $group->value . ']" id="' . $this->id . '_' . $action->name
246                     . '_' . $group->value . '" title="'
247                     . JText::sprintf('JLIB_RULES_SELECT_ALLOW_DENY_GROUP', JText::_($action->title), trim($group->text)) . '">';
248 
249                 $inheritedRule = JAccess::checkGroup($group->value, $action->name, $assetId);
250 
251                 // Get the actual setting for the action for this group.
252                 $assetRule = $assetRules->allow($action->name, $group->value);
253 
254                 // Build the dropdowns for the permissions sliders
255 
256                 // The parent group has "Not Set", all children can rightly "Inherit" from that.
257                 $html[] = '<option value=""' . ($assetRule === null ? ' selected="selected"' : '') . '>'
258                     . JText::_(empty($group->parent_id) && empty($component) ? 'JLIB_RULES_NOT_SET' : 'JLIB_RULES_INHERITED') . '</option>';
259                 $html[] = '<option value="1"' . ($assetRule === true ? ' selected="selected"' : '') . '>' . JText::_('JLIB_RULES_ALLOWED')
260                     . '</option>';
261                 $html[] = '<option value="0"' . ($assetRule === false ? ' selected="selected"' : '') . '>' . JText::_('JLIB_RULES_DENIED')
262                     . '</option>';
263 
264                 $html[] = '</select>&#160; ';
265 
266                 // If this asset's rule is allowed, but the inherited rule is deny, we have a conflict.
267                 if (($assetRule === true) && ($inheritedRule === false))
268                 {
269                     $html[] = JText::_('JLIB_RULES_CONFLICT');
270                 }
271 
272                 $html[] = '</td>';
273 
274                 // Build the Calculated Settings column.
275                 // The inherited settings column is not displayed for the root group in global configuration.
276                 if ($canCalculateSettings)
277                 {
278                     $html[] = '<td headers="aclactionth' . $group->value . '">';
279 
280                     // This is where we show the current effective settings considering currrent group, path and cascade.
281                     // Check whether this is a component or global. Change the text slightly.
282 
283                     if (JAccess::checkGroup($group->value, 'core.admin', $assetId) !== true)
284                     {
285                         if ($inheritedRule === null)
286                         {
287                             $html[] = '<span class="icon-16-unset">' . JText::_('JLIB_RULES_NOT_ALLOWED') . '</span>';
288                         }
289                         elseif ($inheritedRule === true)
290                         {
291                             $html[] = '<span class="icon-16-allowed">' . JText::_('JLIB_RULES_ALLOWED') . '</span>';
292                         }
293                         elseif ($inheritedRule === false)
294                         {
295                             if ($assetRule === false)
296                             {
297                                 $html[] = '<span class="icon-16-denied">' . JText::_('JLIB_RULES_NOT_ALLOWED') . '</span>';
298                             }
299                             else
300                             {
301                                 $html[] = '<span class="icon-16-denied"><span class="icon-16-locked">' . JText::_('JLIB_RULES_NOT_ALLOWED_LOCKED')
302                                     . '</span></span>';
303                             }
304                         }
305                     }
306                     elseif (!empty($component))
307                     {
308                         $html[] = '<span class="icon-16-allowed"><span class="icon-16-locked">' . JText::_('JLIB_RULES_ALLOWED_ADMIN')
309                             . '</span></span>';
310                     }
311                     else
312                     {
313                         // Special handling for  groups that have global admin because they can't  be denied.
314                         // The admin rights can be changed.
315                         if ($action->name === 'core.admin')
316                         {
317                             $html[] = '<span class="icon-16-allowed">' . JText::_('JLIB_RULES_ALLOWED') . '</span>';
318                         }
319                         elseif ($inheritedRule === false)
320                         {
321                             // Other actions cannot be changed.
322                             $html[] = '<span class="icon-16-denied"><span class="icon-16-locked">'
323                                 . JText::_('JLIB_RULES_NOT_ALLOWED_ADMIN_CONFLICT') . '</span></span>';
324                         }
325                         else
326                         {
327                             $html[] = '<span class="icon-16-allowed"><span class="icon-16-locked">' . JText::_('JLIB_RULES_ALLOWED_ADMIN')
328                                 . '</span></span>';
329                         }
330                     }
331 
332                     $html[] = '</td>';
333                 }
334 
335                 $html[] = '</tr>';
336             }
337 
338             $html[] = '</tbody>';
339             $html[] = '</table></div>';
340 
341             $html[] = '</div></div>';
342             $html[] = '</li>';
343 
344         }
345 
346         $html[] = str_repeat('</ul></li>', $curLevel);
347         $html[] = '</ul><div class="rule-notes">';
348         if ($section == 'component' || $section == null)
349         {
350             $html[] = JText::_('JLIB_RULES_SETTING_NOTES');
351         }
352         else
353         {
354             $html[] = JText::_('JLIB_RULES_SETTING_NOTES_ITEM');
355         }
356         $html[] = '</div></div>';
357 
358         $js = "window.addEvent('domready', function(){ new Fx.Accordion($$('div#permissions-sliders.pane-sliders .panel h3.pane-toggler'),"
359             . "$$('div#permissions-sliders.pane-sliders .panel div.pane-slider'), {onActive: function(toggler, i) {toggler.addClass('pane-toggler-down');"
360             . "toggler.removeClass('pane-toggler');i.addClass('pane-down');i.removeClass('pane-hide');Cookie.write('jpanesliders_permissions-sliders"
361             . $component
362             . "',$$('div#permissions-sliders.pane-sliders .panel h3').indexOf(toggler));},"
363             . "onBackground: function(toggler, i) {toggler.addClass('pane-toggler');toggler.removeClass('pane-toggler-down');i.addClass('pane-hide');"
364             . "i.removeClass('pane-down');}, duration: 300, display: "
365             . JRequest::getInt('jpanesliders_permissions-sliders' . $component, 0, 'cookie') . ", show: "
366             . JRequest::getInt('jpanesliders_permissions-sliders' . $component, 0, 'cookie') . ", alwaysHide:true, opacity: false}); });";
367 
368         JFactory::getDocument()->addScriptDeclaration($js);
369 
370         return implode("\n", $html);
371     }
372 
373     protected function getInput3x()
374     {
375         JHtml::_('bootstrap.tooltip');
376 
377         // Initialise some field attributes.
378         $section    = $this->section;
379         $component  = $this->component;
380         $assetField = $this->assetField;
381 
382         // Get the actions for the asset.
383         $actions = JAccess::getActions($component, $section);
384 
385         // Iterate over the children and add to the actions.
386         foreach ($this->element->children() as $el)
387         {
388             if ($el->getName() == 'action')
389             {
390                 $actions[] = (object) array('name' => (string) $el['name'], 'title' => (string) $el['title'],
391                     'description' => (string) $el['description']);
392             }
393         }
394 
395         // Get the explicit rules for this asset.
396         if ($section == 'component')
397         {
398             // Need to find the asset id by the name of the component.
399             $db    = FOFPlatform::getInstance()->getDbo();
400             $query = $db->getQuery(true)
401                         ->select($db->quoteName('id'))
402                         ->from($db->quoteName('#__assets'))
403                         ->where($db->quoteName('name') . ' = ' . $db->quote($component));
404 
405             $assetId = (int) $db->setQuery($query)->loadResult();
406         }
407         else
408         {
409             // Find the asset id of the content.
410             // Note that for global configuration, com_config injects asset_id = 1 into the form.
411             $assetId = $this->form->getValue($assetField);
412 
413             // ==== FOF Library fix - Start ====
414             // If there is no assetId (let's say we are dealing with a new record), let's ask the table
415             // to give it to us. Here you should implement your logic (ie getting default permissions from
416             // the component or from the category)
417             if(!$assetId)
418             {
419                 $table   = $this->form->getModel()->getTable();
420                 $assetId = $table->getAssetParentId();
421             }
422             // ==== FOF Library fix - End   ====
423         }
424 
425         // Full width format.
426 
427         // Get the rules for just this asset (non-recursive).
428         $assetRules = JAccess::getAssetRules($assetId);
429 
430         // Get the available user groups.
431         $groups = $this->getUserGroups();
432 
433         // Prepare output
434         $html = array();
435 
436         // Description
437         $html[] = '<p class="rule-desc">' . JText::_('JLIB_RULES_SETTINGS_DESC') . '</p>';
438 
439         // Begin tabs
440         $html[] = '<div id="permissions-sliders" class="tabbable tabs-left">';
441 
442         // Building tab nav
443         $html[] = '<ul class="nav nav-tabs">';
444 
445         foreach ($groups as $group)
446         {
447             // Initial Active Tab
448             $active = "";
449 
450             if ($group->value == 1)
451             {
452                 $active = "active";
453             }
454 
455             $html[] = '<li class="' . $active . '">';
456             $html[] = '<a href="#permission-' . $group->value . '" data-toggle="tab">';
457             $html[] = str_repeat('<span class="level">&ndash;</span> ', $curLevel = $group->level) . $group->text;
458             $html[] = '</a>';
459             $html[] = '</li>';
460         }
461 
462         $html[] = '</ul>';
463 
464         $html[] = '<div class="tab-content">';
465 
466         // Start a row for each user group.
467         foreach ($groups as $group)
468         {
469             // Initial Active Pane
470             $active = "";
471 
472             if ($group->value == 1)
473             {
474                 $active = " active";
475             }
476 
477             $html[] = '<div class="tab-pane' . $active . '" id="permission-' . $group->value . '">';
478             $html[] = '<table class="table table-striped">';
479             $html[] = '<thead>';
480             $html[] = '<tr>';
481 
482             $html[] = '<th class="actions" id="actions-th' . $group->value . '">';
483             $html[] = '<span class="acl-action">' . JText::_('JLIB_RULES_ACTION') . '</span>';
484             $html[] = '</th>';
485 
486             $html[] = '<th class="settings" id="settings-th' . $group->value . '">';
487             $html[] = '<span class="acl-action">' . JText::_('JLIB_RULES_SELECT_SETTING') . '</span>';
488             $html[] = '</th>';
489 
490             // The calculated setting is not shown for the root group of global configuration.
491             $canCalculateSettings = ($group->parent_id || !empty($component));
492 
493             if ($canCalculateSettings)
494             {
495                 $html[] = '<th id="aclactionth' . $group->value . '">';
496                 $html[] = '<span class="acl-action">' . JText::_('JLIB_RULES_CALCULATED_SETTING') . '</span>';
497                 $html[] = '</th>';
498             }
499 
500             $html[] = '</tr>';
501             $html[] = '</thead>';
502             $html[] = '<tbody>';
503 
504             foreach ($actions as $action)
505             {
506                 $html[] = '<tr>';
507                 $html[] = '<td headers="actions-th' . $group->value . '">';
508                 $html[] = '<label for="' . $this->id . '_' . $action->name . '_' . $group->value . '" class="hasTooltip" title="'
509                     . htmlspecialchars(JText::_($action->title) . ' ' . JText::_($action->description), ENT_COMPAT, 'UTF-8') . '">';
510                 $html[] = JText::_($action->title);
511                 $html[] = '</label>';
512                 $html[] = '</td>';
513 
514                 $html[] = '<td headers="settings-th' . $group->value . '">';
515 
516                 $html[] = '<select class="input-small" name="' . $this->name . '[' . $action->name . '][' . $group->value . ']" id="' . $this->id . '_' . $action->name
517                     . '_' . $group->value . '" title="'
518                     . JText::sprintf('JLIB_RULES_SELECT_ALLOW_DENY_GROUP', JText::_($action->title), trim($group->text)) . '">';
519 
520                 $inheritedRule = JAccess::checkGroup($group->value, $action->name, $assetId);
521 
522                 // Get the actual setting for the action for this group.
523                 $assetRule = $assetRules->allow($action->name, $group->value);
524 
525                 // Build the dropdowns for the permissions sliders
526 
527                 // The parent group has "Not Set", all children can rightly "Inherit" from that.
528                 $html[] = '<option value=""' . ($assetRule === null ? ' selected="selected"' : '') . '>'
529                     . JText::_(empty($group->parent_id) && empty($component) ? 'JLIB_RULES_NOT_SET' : 'JLIB_RULES_INHERITED') . '</option>';
530                 $html[] = '<option value="1"' . ($assetRule === true ? ' selected="selected"' : '') . '>' . JText::_('JLIB_RULES_ALLOWED')
531                     . '</option>';
532                 $html[] = '<option value="0"' . ($assetRule === false ? ' selected="selected"' : '') . '>' . JText::_('JLIB_RULES_DENIED')
533                     . '</option>';
534 
535                 $html[] = '</select>&#160; ';
536 
537                 // If this asset's rule is allowed, but the inherited rule is deny, we have a conflict.
538                 if (($assetRule === true) && ($inheritedRule === false))
539                 {
540                     $html[] = JText::_('JLIB_RULES_CONFLICT');
541                 }
542 
543                 $html[] = '</td>';
544 
545                 // Build the Calculated Settings column.
546                 // The inherited settings column is not displayed for the root group in global configuration.
547                 if ($canCalculateSettings)
548                 {
549                     $html[] = '<td headers="aclactionth' . $group->value . '">';
550 
551                     // This is where we show the current effective settings considering currrent group, path and cascade.
552                     // Check whether this is a component or global. Change the text slightly.
553 
554                     if (JAccess::checkGroup($group->value, 'core.admin', $assetId) !== true)
555                     {
556                         if ($inheritedRule === null)
557                         {
558                             $html[] = '<span class="label label-important">' . JText::_('JLIB_RULES_NOT_ALLOWED') . '</span>';
559                         }
560                         elseif ($inheritedRule === true)
561                         {
562                             $html[] = '<span class="label label-success">' . JText::_('JLIB_RULES_ALLOWED') . '</span>';
563                         }
564                         elseif ($inheritedRule === false)
565                         {
566                             if ($assetRule === false)
567                             {
568                                 $html[] = '<span class="label label-important">' . JText::_('JLIB_RULES_NOT_ALLOWED') . '</span>';
569                             }
570                             else
571                             {
572                                 $html[] = '<span class="label"><i class="icon-lock icon-white"></i> ' . JText::_('JLIB_RULES_NOT_ALLOWED_LOCKED')
573                                     . '</span>';
574                             }
575                         }
576                     }
577                     elseif (!empty($component))
578                     {
579                         $html[] = '<span class="label label-success"><i class="icon-lock icon-white"></i> ' . JText::_('JLIB_RULES_ALLOWED_ADMIN')
580                             . '</span>';
581                     }
582                     else
583                     {
584                         // Special handling for  groups that have global admin because they can't  be denied.
585                         // The admin rights can be changed.
586                         if ($action->name === 'core.admin')
587                         {
588                             $html[] = '<span class="label label-success">' . JText::_('JLIB_RULES_ALLOWED') . '</span>';
589                         }
590                         elseif ($inheritedRule === false)
591                         {
592                             // Other actions cannot be changed.
593                             $html[] = '<span class="label label-important"><i class="icon-lock icon-white"></i> '
594                                 . JText::_('JLIB_RULES_NOT_ALLOWED_ADMIN_CONFLICT') . '</span>';
595                         }
596                         else
597                         {
598                             $html[] = '<span class="label label-success"><i class="icon-lock icon-white"></i> ' . JText::_('JLIB_RULES_ALLOWED_ADMIN')
599                                 . '</span>';
600                         }
601                     }
602 
603                     $html[] = '</td>';
604                 }
605 
606                 $html[] = '</tr>';
607             }
608 
609             $html[] = '</tbody>';
610             $html[] = '</table></div>';
611         }
612 
613         $html[] = '</div></div>';
614 
615         $html[] = '<div class="alert">';
616 
617         if ($section == 'component' || $section == null)
618         {
619             $html[] = JText::_('JLIB_RULES_SETTING_NOTES');
620         }
621         else
622         {
623             $html[] = JText::_('JLIB_RULES_SETTING_NOTES_ITEM');
624         }
625 
626         $html[] = '</div>';
627 
628         return implode("\n", $html);
629     }
630 }
631 
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.