Overview

Namespaces

  • None
  • Xmf
    • Database
    • Module
      • Helper
    • Template
  • Xoops
    • Auth
    • Core
      • Cache
      • Database
        • Logging
        • Schema
      • Exception
      • Handler
        • Scheme
      • Kernel
        • Dtype
        • Handlers
        • Model
      • Lists
      • Locale
        • Punic
      • Service
        • Contract
      • Session
      • Text
        • Sanitizer
          • Extensions
      • Theme
        • Plugins
    • Form
    • Html
    • Locale
    • Module
      • Helper
      • Plugin

Classes

  • ArtObject
  • ArtObjectHandler
  • Avatars
  • AvatarsAvatar
  • AvatarsAvatar_userForm
  • AvatarsAvatarForm
  • AvatarsAvatarHandler
  • AvatarsLocale
  • AvatarsLocaleEn_US
  • AvatarsPreload
  • AvatarsProvider
  • AvatarsUserlink
  • AvatarsUserlinkHandler
  • AwesomeButton
  • BannerRender
  • Banners
  • BannersBanner
  • BannersBannerclient
  • BannersBannerclientForm
  • BannersBannerclientHandler
  • BannersBannerForm
  • BannersBannerHandler
  • BannersPreload
  • BloggerApi
  • CodexMenusPlugin
  • CodexSearchPlugin
  • CodexSystemPlugin
  • CodexUserconfigsPlugin
  • Comments
  • CommentsComment
  • CommentsCommentForm
  • CommentsCommentHandler
  • CommentsCommentRenderer
  • CommentsPreload
  • CommentsSystemPlugin
  • CommentsUserconfigsPlugin
  • Cookie
  • CountryFlagProvider
  • Criteria
  • CriteriaCompo
  • CriteriaElement
  • DebugbarLogger
  • DebugbarPreload
  • DebugbarUserconfigsPlugin
  • DefaultThemeLocale
  • DefaultThemeLocaleEn_US
  • FormDhtmlTextArea
  • FormTextArea
  • GravatarsPreload
  • GravatarsProvider
  • htmLawed
  • HtmlToPdfProvider
  • imageLib
  • Images
  • ImagesCategory
  • ImagesCategory_imagemanagerForm
  • ImagesCategoryForm
  • ImagesCategoryHandler
  • ImagesCategoryselectForm
  • ImagesImage
  • ImagesImage_Body
  • ImagesImage_imagemanagerForm
  • ImagesImagebody
  • ImagesImagebodyHandler
  • ImagesImageForm
  • ImagesImageHandler
  • ImagesPreload
  • JUpload
  • LegacyLogger
  • LoggerPreload
  • LoggerUserconfigsPlugin
  • Maintenance
  • MaintenanceMaintenanceForm
  • Menus
  • MenusBuilder
  • MenusConstantDecorator
  • MenusDecorator
  • MenusDecoratorAbstract
  • MenusDefaultDecorator
  • MenusDynamicDecorator
  • MenusMenu
  • MenusMenuHandler
  • MenusMenus
  • MenusMenus_menuForm
  • MenusMenus_menusForm
  • MenusMenusHandler
  • MenusPreload
  • MenusSmartyDecorator
  • MetaWeblogApi
  • MonologLogger
  • MonologPreload
  • MonologUserconfigsPlugin
  • MovableTypeApi
  • MyTextSanitizer
  • MyTextSanitizerExtended
  • Notifications
  • NotificationsNotification
  • NotificationsNotificationHandler
  • NotificationsPreload
  • NotificationsSystemPlugin
  • Page
  • PageCommentsPlugin
  • PageGroupPermHandler
  • PageLocale
  • PageLocaleEn_US
  • PageNotificationsPlugin
  • PagePage_content
  • PagePage_contentForm
  • PagePage_contentHandler
  • PagePage_rating
  • PagePage_ratingHandler
  • PagePage_related
  • PagePage_related_link
  • PagePage_related_linkHandler
  • PagePage_relatedForm
  • PagePage_relatedHandler
  • PagePreload
  • PageSearchPlugin
  • PageSystemPlugin
  • PdfPreload
  • PmMessage
  • PmMessageHandler
  • PmPreload
  • ProfileCategory
  • ProfileCategoryForm
  • ProfileCategoryHandler
  • ProfileCorePreload
  • ProfileField
  • ProfileFieldForm
  • ProfileFieldHandler
  • ProfileMenusPlugin
  • ProfileProfile
  • ProfileProfileHandler
  • ProfileRegstep
  • ProfileRegstepForm
  • ProfileRegstepHandler
  • ProfileVisibility
  • ProfileVisibilityHandler
  • Protector
  • protector_bruteforce_overrun_message
  • protector_crawler_overrun_message
  • protector_f5attack_overrun_message
  • protector_postcommon_post_deny_by_httpbl
  • protector_postcommon_post_deny_by_rbl
  • protector_postcommon_post_htmlpurify4everyone
  • protector_postcommon_post_htmlpurify4guest
  • protector_postcommon_post_need_multibyte
  • protector_postcommon_post_register_moratorium
  • protector_postcommon_register_insert_js_check
  • protector_precommon_badip_errorlog
  • protector_precommon_badip_message
  • protector_precommon_badip_redirection
  • protector_precommon_bwlimit_errorlog
  • protector_precommon_bwlimit_message
  • protector_prepurge_exit_message
  • protector_spamcheck_overrun_message
  • ProtectorCenterForm
  • ProtectorCorePreload
  • ProtectorFilterAbstract
  • ProtectorFilterHandler
  • ProtectorMySQLDatabase
  • Publisher
  • PublisherBlockForm
  • PublisherCategory
  • PublisherCategoryForm
  • PublisherCategoryHandler
  • PublisherCommentsPlugin
  • PublisherFile
  • PublisherFileForm
  • PublisherFileHandler
  • PublisherFormDateTime
  • PublisherGroupPermHandler
  • PublisherItem
  • PublisherItemForm
  • PublisherItemHandler
  • PublisherMenusPlugin
  • PublisherMetagen
  • PublisherMimetype
  • PublisherMimetypeHandler
  • PublisherNotificationsPlugin
  • PublisherPermissionHandler
  • PublisherPreload
  • PublisherRating
  • PublisherRatingHandler
  • PublisherSearchPlugin
  • PublisherSystemPlugin
  • PublisherUtils
  • QrcodePreload
  • QrcodeProvider
  • ReCaptchaResponse
  • RpcArrayHandler
  • RpcBase64Handler
  • RpcBooleanHandler
  • RpcDateTimeHandler
  • RpcDoubleHandler
  • RpcIntHandler
  • RpcMemberHandler
  • RpcMethodNameHandler
  • RpcNameHandler
  • RpcStringHandler
  • RpcStructHandler
  • RpcValueHandler
  • RssAuthorHandler
  • RssCategoryHandler
  • RssChannelHandler
  • RssCommentsHandler
  • RssCopyrightHandler
  • RssDescriptionHandler
  • RssDocsHandler
  • RssGeneratorHandler
  • RssGuidHandler
  • RssHeightHandler
  • RssImageHandler
  • RssItemHandler
  • RssLanguageHandler
  • RssLastBuildDateHandler
  • RssLinkHandler
  • RssManagingEditorHandler
  • RssNameHandler
  • RssPubDateHandler
  • RssSourceHandler
  • RssTextInputHandler
  • RssTitleHandler
  • RssTtlHandler
  • RssUrlHandler
  • RssWebMasterHandler
  • RssWidthHandler
  • SaxParser
  • Search
  • SearchPreload
  • SearchSearchForm
  • Smarty_Resource_Admin
  • Smarty_Resource_Block
  • Smarty_Resource_Db
  • Smarty_Resource_Module
  • Smilies
  • SmiliesPreload
  • SmiliesProvider
  • SmiliesSmiley
  • SmiliesSmileyHandler
  • SmiliesSmiliesForm
  • Snoopy
  • SqlUtility
  • System
  • SystemBlockForm
  • SystemBreadcrumb
  • SystemExtension
  • SystemGroupForm
  • SystemLocale
  • SystemLocaleEn_US
  • SystemMenuHandler
  • SystemModule
  • SystemPreferencesForm
  • SystemPreload
  • SystemUserForm
  • tar
  • ThemeSetAuthorHandler
  • ThemeSetDateCreatedHandler
  • ThemeSetDescriptionHandler
  • ThemeSetEmailHandler
  • ThemeSetFileTypeHandler
  • ThemeSetGeneratorHandler
  • ThemeSetImageHandler
  • ThemeSetLinkHandler
  • ThemeSetModuleHandler
  • ThemeSetNameHandler
  • ThemeSetTagHandler
  • ThemeSetTemplateHandler
  • Thumbs
  • ThumbsPreload
  • ThumbsProvider
  • TinyMCE
  • Userconfigs
  • UserconfigsConfigHandler
  • UserconfigsConfigsForm
  • UserconfigsItem
  • UserconfigsItemHandler
  • UserconfigsMenusPlugin
  • UserconfigsModulesForm
  • UserconfigsOption
  • UserconfigsOptionHandler
  • UserconfigsPreload
  • UserconfigsSystemPlugin
  • UserrankPreload
  • UserRankProvider
  • UserrankRank
  • UserrankRankHandler
  • UserrankRanksForm
  • Xcaptcha
  • XcaptchaCaptchaForm
  • XcaptchaImage
  • XcaptchaImageForm
  • XcaptchaRecaptcha
  • XcaptchaRecaptchaForm
  • XcaptchaText
  • XcaptchaTextForm
  • Xlanguage
  • XlanguageLanguage
  • XlanguageLanguageForm
  • XlanguagePreload
  • XlanguageTinymceForm
  • XlanguageXlanguageHandler
  • Xmf\Database\TableLoad
  • Xmf\Database\Tables
  • Xmf\Debug
  • Xmf\FilterInput
  • Xmf\Highlighter
  • Xmf\Language
  • Xmf\Loader
  • Xmf\Metagen
  • Xmf\Module\Admin
  • Xmf\Module\Cache
  • Xmf\Module\Helper
  • Xmf\Module\Helper\AbstractHelper
  • Xmf\Module\Helper\GenericHelper
  • Xmf\Module\Permission
  • Xmf\Module\Session
  • Xmf\Request
  • Xmf\Template\AbstractTemplate
  • Xmf\Template\Breadcrumb
  • Xmf\Template\Buttonbox
  • Xmf\Template\Feed
  • Xmf\Template\PrintContent
  • Xmf\Utilities
  • Xmf\Yaml
  • XmfPreload
  • XmlTagHandler
  • Xoops
  • Xoops\Auth\Ads
  • Xoops\Auth\AuthAbstract
  • Xoops\Auth\Factory
  • Xoops\Auth\Ldap
  • Xoops\Auth\Provisioning
  • Xoops\Auth\Xoops
  • Xoops\Cache
  • Xoops\Core\Assets
  • Xoops\Core\Cache\Access
  • Xoops\Core\Cache\CacheManager
  • Xoops\Core\Cache\DriverList
  • Xoops\Core\Cache\Legacy
  • Xoops\Core\ComposerUtility
  • Xoops\Core\Database\Connection
  • Xoops\Core\Database\Factory
  • Xoops\Core\Database\Logging\XoopsDebugStack
  • Xoops\Core\Database\QueryBuilder
  • Xoops\Core\Database\Schema\ExportVisitor
  • Xoops\Core\Database\Schema\ImportSchema
  • Xoops\Core\Database\Schema\PrefixStripper
  • Xoops\Core\Database\Schema\RemovePrefixes
  • Xoops\Core\Events
  • Xoops\Core\FilterInput
  • Xoops\Core\FixedGroups
  • Xoops\Core\Handler\Factory
  • Xoops\Core\Handler\FactorySpec
  • Xoops\Core\Handler\Scheme\FQN
  • Xoops\Core\Handler\Scheme\Kernel
  • Xoops\Core\Handler\Scheme\LegacyModule
  • Xoops\Core\HttpRequest
  • Xoops\Core\Kernel\Criteria
  • Xoops\Core\Kernel\CriteriaCompo
  • Xoops\Core\Kernel\CriteriaElement
  • Xoops\Core\Kernel\Dtype
  • Xoops\Core\Kernel\Dtype\DtypeAbstract
  • Xoops\Core\Kernel\Dtype\DtypeArray
  • Xoops\Core\Kernel\Dtype\DtypeDateTime
  • Xoops\Core\Kernel\Dtype\DtypeDecimal
  • Xoops\Core\Kernel\Dtype\DtypeEmail
  • Xoops\Core\Kernel\Dtype\DtypeEnumeration
  • Xoops\Core\Kernel\Dtype\DtypeFloat
  • Xoops\Core\Kernel\Dtype\DtypeInt
  • Xoops\Core\Kernel\Dtype\DtypeJson
  • Xoops\Core\Kernel\Dtype\DtypeMoney
  • Xoops\Core\Kernel\Dtype\DtypeOther
  • Xoops\Core\Kernel\Dtype\DtypeSimpleTime
  • Xoops\Core\Kernel\Dtype\DtypeSource
  • Xoops\Core\Kernel\Dtype\DtypeTextArea
  • Xoops\Core\Kernel\Dtype\DtypeTextBox
  • Xoops\Core\Kernel\Dtype\DtypeTimeZone
  • Xoops\Core\Kernel\Dtype\DtypeUrl
  • Xoops\Core\Kernel\Handlers\XoopsBlock
  • Xoops\Core\Kernel\Handlers\XoopsBlockHandler
  • Xoops\Core\Kernel\Handlers\XoopsBlockModuleLink
  • Xoops\Core\Kernel\Handlers\XoopsBlockModuleLinkHandler
  • Xoops\Core\Kernel\Handlers\XoopsConfigHandler
  • Xoops\Core\Kernel\Handlers\XoopsConfigItem
  • Xoops\Core\Kernel\Handlers\XoopsConfigItemHandler
  • Xoops\Core\Kernel\Handlers\XoopsConfigOption
  • Xoops\Core\Kernel\Handlers\XoopsConfigOptionHandler
  • Xoops\Core\Kernel\Handlers\XoopsGroup
  • Xoops\Core\Kernel\Handlers\XoopsGroupHandler
  • Xoops\Core\Kernel\Handlers\XoopsGroupPerm
  • Xoops\Core\Kernel\Handlers\XoopsGroupPermHandler
  • Xoops\Core\Kernel\Handlers\XoopsMemberHandler
  • Xoops\Core\Kernel\Handlers\XoopsMembership
  • Xoops\Core\Kernel\Handlers\XoopsMembershipHandler
  • Xoops\Core\Kernel\Handlers\XoopsModule
  • Xoops\Core\Kernel\Handlers\XoopsModuleHandler
  • Xoops\Core\Kernel\Handlers\XoopsOnline
  • Xoops\Core\Kernel\Handlers\XoopsOnlineHandler
  • Xoops\Core\Kernel\Handlers\XoopsPrivateMessage
  • Xoops\Core\Kernel\Handlers\XoopsPrivateMessageHandler
  • Xoops\Core\Kernel\Handlers\XoopsTplFile
  • Xoops\Core\Kernel\Handlers\XoopsTplFileHandler
  • Xoops\Core\Kernel\Handlers\XoopsTplSet
  • Xoops\Core\Kernel\Handlers\XoopsTplSetHandler
  • Xoops\Core\Kernel\Handlers\XoopsUser
  • Xoops\Core\Kernel\Handlers\XoopsUserHandler
  • Xoops\Core\Kernel\Model\Joint
  • Xoops\Core\Kernel\Model\Read
  • Xoops\Core\Kernel\Model\Stats
  • Xoops\Core\Kernel\Model\Sync
  • Xoops\Core\Kernel\Model\Write
  • Xoops\Core\Kernel\XoopsModelAbstract
  • Xoops\Core\Kernel\XoopsModelFactory
  • Xoops\Core\Kernel\XoopsObject
  • Xoops\Core\Kernel\XoopsObjectHandler
  • Xoops\Core\Kernel\XoopsPersistableObjectHandler
  • Xoops\Core\Lists\Country
  • Xoops\Core\Lists\Directory
  • Xoops\Core\Lists\Editor
  • Xoops\Core\Lists\File
  • Xoops\Core\Lists\HtmlFile
  • Xoops\Core\Lists\ImageFile
  • Xoops\Core\Lists\ListAbstract
  • Xoops\Core\Lists\Locale
  • Xoops\Core\Lists\Module
  • Xoops\Core\Lists\Month
  • Xoops\Core\Lists\SubjectIcon
  • Xoops\Core\Lists\SubSet
  • Xoops\Core\Lists\Theme
  • Xoops\Core\Lists\Time
  • Xoops\Core\Lists\TimeZone
  • Xoops\Core\Locale\LegacyCodes
  • Xoops\Core\Locale\Punic\Calendar
  • Xoops\Core\Locale\Time
  • Xoops\Core\Logger
  • Xoops\Core\MediaUploader
  • Xoops\Core\MimeTypes
  • Xoops\Core\PreloadItem
  • Xoops\Core\Psr0ClassLoader
  • Xoops\Core\Psr4ClassLoader
  • Xoops\Core\Random
  • Xoops\Core\Registry
  • Xoops\Core\Request
  • Xoops\Core\Security
  • Xoops\Core\Service\AbstractContract
  • Xoops\Core\Service\Manager
  • Xoops\Core\Service\NullProvider
  • Xoops\Core\Service\Provider
  • Xoops\Core\Service\Response
  • Xoops\Core\Session\Fingerprint
  • Xoops\Core\Session\Handler
  • Xoops\Core\Session\Manager
  • Xoops\Core\Session\RememberMe
  • Xoops\Core\Session\SessionUser
  • Xoops\Core\Text\Sanitizer
  • Xoops\Core\Text\Sanitizer\Configuration
  • Xoops\Core\Text\Sanitizer\ConfigurationAbstract
  • Xoops\Core\Text\Sanitizer\DefaultConfiguration
  • Xoops\Core\Text\Sanitizer\ExtensionAbstract
  • Xoops\Core\Text\Sanitizer\Extensions\Censor
  • Xoops\Core\Text\Sanitizer\Extensions\Clickable
  • Xoops\Core\Text\Sanitizer\Extensions\Embed
  • Xoops\Core\Text\Sanitizer\Extensions\Flash
  • Xoops\Core\Text\Sanitizer\Extensions\Iframe
  • Xoops\Core\Text\Sanitizer\Extensions\Image
  • Xoops\Core\Text\Sanitizer\Extensions\Mms
  • Xoops\Core\Text\Sanitizer\Extensions\Mp3
  • Xoops\Core\Text\Sanitizer\Extensions\Quote
  • Xoops\Core\Text\Sanitizer\Extensions\Rtsp
  • Xoops\Core\Text\Sanitizer\Extensions\SoundCloud
  • Xoops\Core\Text\Sanitizer\Extensions\SyntaxHighlight
  • Xoops\Core\Text\Sanitizer\Extensions\TextFilter
  • Xoops\Core\Text\Sanitizer\Extensions\UnorderedList
  • Xoops\Core\Text\Sanitizer\Extensions\Wiki
  • Xoops\Core\Text\Sanitizer\Extensions\Wmp
  • Xoops\Core\Text\Sanitizer\Extensions\XoopsCode
  • Xoops\Core\Text\Sanitizer\Extensions\Xss
  • Xoops\Core\Text\Sanitizer\Extensions\YouTube
  • Xoops\Core\Text\Sanitizer\FilterAbstract
  • Xoops\Core\Text\Sanitizer\NullExtension
  • Xoops\Core\Text\Sanitizer\NullFilter
  • Xoops\Core\Text\Sanitizer\SanitizerComponent
  • Xoops\Core\Text\Sanitizer\SanitizerConfigurable
  • Xoops\Core\Text\ShortCodes
  • Xoops\Core\Theme\AdminFactory
  • Xoops\Core\Theme\Factory
  • Xoops\Core\Theme\NullTheme
  • Xoops\Core\Theme\PluginAbstract
  • Xoops\Core\Theme\Plugins\Blocks
  • Xoops\Core\Theme\XoopsTheme
  • Xoops\Core\XoopsTpl
  • Xoops\Core\Yaml
  • Xoops\Form\BlockForm
  • Xoops\Form\Button
  • Xoops\Form\ButtonTray
  • Xoops\Form\Captcha
  • Xoops\Form\Checkbox
  • Xoops\Form\ColorPicker
  • Xoops\Form\DateSelect
  • Xoops\Form\DateTime
  • Xoops\Form\DhtmlTextArea
  • Xoops\Form\Editor
  • Xoops\Form\Element
  • Xoops\Form\ElementFactory
  • Xoops\Form\ElementTray
  • Xoops\Form\File
  • Xoops\Form\Form
  • Xoops\Form\GroupCheckbox
  • Xoops\Form\GroupFormCheckbox
  • Xoops\Form\GroupPermissionForm
  • Xoops\Form\Hidden
  • Xoops\Form\Label
  • Xoops\Form\Mail
  • Xoops\Form\OptionElement
  • Xoops\Form\Password
  • Xoops\Form\Radio
  • Xoops\Form\RadioYesNo
  • Xoops\Form\Raw
  • Xoops\Form\Select
  • Xoops\Form\SelectCountry
  • Xoops\Form\SelectEditor
  • Xoops\Form\SelectGroup
  • Xoops\Form\SelectLanguage
  • Xoops\Form\SelectLocale
  • Xoops\Form\SelectMatchOption
  • Xoops\Form\SelectTheme
  • Xoops\Form\SelectTimeZone
  • Xoops\Form\SelectUser
  • Xoops\Form\SimpleForm
  • Xoops\Form\Tab
  • Xoops\Form\TableForm
  • Xoops\Form\TabTray
  • Xoops\Form\Text
  • Xoops\Form\TextArea
  • Xoops\Form\ThemeForm
  • Xoops\Form\Token
  • Xoops\Form\Url
  • Xoops\Html\Attributes
  • Xoops\Html\Img
  • Xoops\Locale
  • Xoops\Locale\AbstractLocale
  • Xoops\Module\Admin
  • Xoops\Module\Helper
  • Xoops\Module\Helper\Dummy
  • Xoops\Module\Helper\HelperAbstract
  • Xoops\Module\Plugin
  • Xoops\Module\Plugin\ConfigCollector
  • Xoops\Module\Plugin\PluginAbstract
  • Xoops\Utils
  • Xoops_Locale_Mailer_Abstract
  • XoopsAdminThemeFactory
  • XoopsApi
  • XoopsArt
  • XoopsBaseConfig
  • XoopsBlock
  • XoopsBlockHandler
  • XoopsBlockmodulelink
  • XoopsBlockmodulelinkHandler
  • XoopsCache
  • XoopsCaptcha
  • XoopsCaptchaImage
  • XoopsCaptchaImageHandler
  • XoopsCaptchaMethod
  • XoopsCaptchaRecaptcha
  • XoopsCaptchaText
  • XoopsConfigHandler
  • XoopsConfigItem
  • XoopsConfigItemHandler
  • XoopsConfigOption
  • XoopsConfigOptionHandler
  • XoopsDatabase
  • XoopsDatabaseFactory
  • XoopsDatabaseManager
  • XoopsDownloader
  • XoopsEditor
  • XoopsEditorHandler
  • XoopsFile
  • XoopsFileHandler
  • XoopsFilterInput
  • XoopsFolderHandler
  • XoopsForm
  • XoopsFormButton
  • XoopsFormButtonTray
  • XoopsFormCaptcha
  • XoopsFormCheckBox
  • XoopsFormColorPicker
  • XoopsFormDateTime
  • XoopsFormDhtmlTextArea
  • XoopsFormEditor
  • XoopsFormElement
  • XoopsFormElementTray
  • XoopsFormFile
  • XoopsFormHidden
  • XoopsFormHiddenToken
  • XoopsFormLabel
  • XoopsFormPassword
  • XoopsFormRadio
  • XoopsFormRadioYN
  • XoopsFormSelect
  • XoopsFormSelectCheckGroup
  • XoopsFormSelectCountry
  • XoopsFormSelectEditor
  • XoopsFormSelectGroup
  • XoopsFormSelectLang
  • XoopsFormSelectMatchOption
  • XoopsFormSelectTheme
  • XoopsFormSelectTimezone
  • XoopsFormSelectUser
  • XoopsFormText
  • XoopsFormTextArea
  • XoopsFormTextDateSelect
  • XoopsFormTinymce
  • XoopsFormTinymce4
  • XoopsGroup
  • XoopsGroupHandler
  • XoopsGroupPerm
  • XoopsGroupPermForm
  • XoopsGroupPermHandler
  • XoopsGTicket
  • XoopsGuiDefault
  • XoopsInstallWizard
  • XoopsLists
  • XoopsLoad
  • XoopsLocal
  • XoopsLocale
  • XoopsLocaleEn_US
  • XoopsLogger
  • XoopsMailer
  • XoopsMailerLocal
  • XoopsMailerLocale
  • XoopsMediaUploader
  • XoopsMemberHandler
  • XoopsMembership
  • XoopsMembershipHandler
  • XoopsModule
  • XoopsModuleHandler
  • XoopsMultiMailer
  • XoopsMySQLDatabase
  • XoopsMySQLDatabaseProxy
  • XoopsMySQLDatabaseSafe
  • XoopsObject
  • XoopsObjectHandler
  • XoopsObjectTree
  • XoopsOnline
  • XoopsOnlineHandler
  • XoopsPageNav
  • XoopsPathController
  • XoopsPersistableObjectHandler
  • XoopsPreload
  • XoopsPreloadItem
  • XoopsPrivmessage
  • XoopsPrivmessageHandler
  • XoopsRequest
  • XoopsSecurity
  • XoopsSimpleForm
  • XoopsTableForm
  • XoopsTarDownloader
  • XoopsTheme
  • XoopsThemeBlocksPlugin
  • XoopsThemeFactory
  • XoopsThemeForm
  • XoopsThemePlugin
  • XoopsThemeSetParser
  • XoopsTpl
  • XoopsTplfile
  • XoopsTplfileHandler
  • XoopsTplset
  • XoopsTplsetHandler
  • XoopsUser
  • XoopsUserHandler
  • XoopsUserUtility
  • XoopsUtility
  • XoopsXmlRpcApi
  • XoopsXmlRpcArray
  • XoopsXmlRpcBase64
  • XoopsXmlRpcBoolean
  • XoopsXmlRpcDatetime
  • XoopsXmlRpcDocument
  • XoopsXmlRpcDouble
  • XoopsXmlRpcFault
  • XoopsXmlRpcInt
  • XoopsXmlRpcParser
  • XoopsXmlRpcRequest
  • XoopsXmlRpcResponse
  • XoopsXmlRpcString
  • XoopsXmlRpcStruct
  • XoopsXmlRpcTag
  • XoopsXmlRss2Parser
  • XoopsZipDownloader
  • zipfile

Interfaces

  • CommentsPluginInterface
  • MenusDecoratorInterface
  • MenusPluginInterface
  • NotificationsPluginInterface
  • SearchPluginInterface
  • SystemPluginInterface
  • UserconfigsPluginInterface
  • Xoops\Core\AttributeInterface
  • Xoops\Core\Handler\Scheme\SchemeInterface
  • Xoops\Core\Service\Contract\AvatarInterface
  • Xoops\Core\Service\Contract\CountryflagInterface
  • Xoops\Core\Service\Contract\EmojiInterface
  • Xoops\Core\Service\Contract\HtmlToPdfInterface
  • Xoops\Core\Service\Contract\QrcodeInterface
  • Xoops\Core\Service\Contract\ThumbnailInterface
  • Xoops\Core\Service\Contract\UserRankInterface
  • Xoops\Core\Session\FingerprintInterface
  • Xoops\Form\ContainerInterface

Exceptions

  • Xoops\Core\Exception\InvalidHandlerSpecException
  • Xoops\Core\Exception\NoHandlerException

Functions

  • _changeMimeValue
  • _clearAddSessionVars
  • _clearEditSessionVars
  • _ee
  • _recaptcha_aes_encrypt
  • _recaptcha_aes_pad
  • _recaptcha_http_post
  • _recaptcha_mailhide_email_parts
  • _recaptcha_mailhide_urlbase64
  • _recaptcha_qsencode
  • _tt
  • add
  • addCriteria
  • admin_refcheck
  • b_comments_edit
  • b_comments_show
  • b_notification_show
  • b_search_show
  • b_system_info_edit
  • b_system_info_show
  • b_system_login_show
  • b_system_main_edit
  • b_system_main_show
  • b_system_newmembers_edit
  • b_system_newmembers_show
  • b_system_online_show
  • b_system_themes_edit
  • b_system_themes_show
  • b_system_topposters_edit
  • b_system_topposters_show
  • b_system_user_show
  • b_system_waiting_show
  • b_xlanguage_select_edit
  • b_xlanguage_select_show
  • banners_blocks_edit
  • banners_blocks_show
  • base_url
  • buildRssFeedCache
  • buildTable
  • check_files_extensions_on_path
  • check_files_extensions_on_phar
  • checkEmail
  • clearAddSession
  • clearEditSession
  • config_loading
  • create_folder
  • create_img
  • create_img_gd
  • createConfigform
  • createDir
  • createThemeform
  • dateSort
  • debugger
  • delete
  • deleteDir
  • duplicate_file
  • edit
  • endsWith
  • exception_handler
  • extensionSort
  • file_put_contents
  • filenameSort
  • filescount
  • fix_dirname
  • fix_filename
  • fix_get_params
  • fix_path
  • fix_strtolower
  • fix_strtoupper
  • foldersize
  • formatTimestamp
  • formatURL
  • genPathCheckHtml
  • get_file_by_url
  • get_writeoks_from_protector
  • getBrightness
  • getDbConnection
  • getDbConnectionParams
  • getDirList
  • handle_uploaded_files
  • http_response_code
  • image_check_memory_usage
  • install_acceptUser
  • install_finalize
  • installHtmlSpecialCharacters
  • is_function_callable
  • is_really_writable
  • load_functions
  • load_object
  • load_objectHandler
  • loadModuleAdminMenu
  • makeSize
  • manage
  • menus_block_edit
  • menus_block_show
  • menus_mainmenu_show
  • mod_clearCacheFile
  • mod_clearConfg
  • mod_clearConfig
  • mod_clearFile
  • mod_clearSmartyCache
  • mod_constant
  • mod_createCacheFile
  • mod_createCacheFile_byGroup
  • mod_createFile
  • mod_DB_prefix
  • mod_fetchConfg
  • mod_fetchConfig
  • mod_generateCacheId
  • mod_generateCacheId_byGroup
  • mod_getDirname
  • mod_getMysqlVersion
  • mod_isModuleAction
  • mod_loadCacheFile
  • mod_loadCacheFile_byGroup
  • mod_loadConfg
  • mod_loadConfig
  • mod_loadFile
  • mod_loadFunctions
  • mod_loadRenderer
  • mod_message
  • modify_chmod
  • new_thumbnails_creation
  • normalizeColor
  • page_blocks_edit
  • page_blocks_show
  • profile_getRegisterForm
  • profile_getUserForm
  • profile_install_addCategory
  • profile_install_addField
  • profile_install_addStep
  • profile_install_initializeProfiles
  • profile_install_setPermissions
  • protector_ip_cmp
  • protector_postcheck
  • protector_precheck
  • publisher_category_items_sel_edit
  • publisher_category_items_sel_show
  • publisher_cloneFileFolder
  • publisher_createLogo
  • publisher_date_to_date_edit
  • publisher_date_to_date_show
  • publisher_displayCategory
  • publisher_editCat
  • publisher_editFile
  • publisher_editItem
  • publisher_items_columns_edit
  • publisher_items_columns_show
  • publisher_items_menu_edit
  • publisher_items_menu_show
  • publisher_items_new_edit
  • publisher_items_new_show
  • publisher_items_random_item_show
  • publisher_items_recent_edit
  • publisher_items_recent_show
  • publisher_items_spot_edit
  • publisher_items_spot_show
  • publisher_latest_files_edit
  • publisher_latest_files_show
  • publisher_latest_news_edit
  • publisher_latest_news_show
  • publisher_mk_chkbox
  • publisher_mk_select
  • publisher_pagewrap_upload
  • publisher_search
  • publisher_search_show
  • publisher_tag_iteminfo
  • publisher_tag_synchronization
  • rcopy
  • recaptcha_check_answer
  • recaptcha_get_html
  • recaptcha_get_signup_url
  • recaptcha_mailhide_html
  • recaptcha_mailhide_url
  • redirect_header
  • rename_file
  • rename_folder
  • rrename
  • rrename_after_cleaner
  • search
  • sizeSort
  • smarty_block_assets
  • smarty_block_noshortcodes
  • smarty_compiler_xoAdminIcons
  • smarty_compiler_xoAdminNav
  • smarty_compiler_xoAppUrl
  • smarty_compiler_xoImgUrl
  • smarty_compiler_xoModuleIcons16
  • smarty_compiler_xoModuleIcons32
  • smarty_compiler_xoModuleIconsBookmarks
  • smarty_function_addBaseScript
  • smarty_function_addBaseStylesheet
  • smarty_function_securityToken
  • smarty_function_thumbnail
  • smarty_function_translate
  • smarty_function_translateTheme
  • smarty_function_xoblock
  • smarty_function_xoInboxCount
  • smarty_function_xoMemberInfo
  • smarty_function_xoops_link
  • smarty_function_xoPageNav
  • smarty_modifier_datetime
  • smarty_modifier_debug_print_var
  • smarty_outputfilter_shortcodes
  • synchronize
  • system_AdminIcons
  • system_adminVersion
  • system_cleanVars
  • system_loadLanguage
  • system_loadTemplate
  • updateMimeValue
  • userTimeToServerTime
  • xhtmlspecialchars
  • xlanguage_convert_encoding
  • xlanguage_convert_item
  • xlanguage_copyfile
  • xlanguage_detectLang
  • xlanguage_encoding
  • xlanguage_lang_detect
  • xlanguage_mkdirs
  • xlanguage_ml
  • xlanguage_ml_escape_bracket
  • xlanguage_select_show
  • xoBoolField
  • xoDiag
  • xoDiagBoolSetting
  • xoDiagIfWritable
  • xoFormField
  • xoops_comment_count
  • xoops_comment_delete
  • xoops_confirm
  • xoops_convert_encoding
  • xoops_cp_footer
  • xoops_cp_header
  • xoops_error
  • xoops_footer
  • xoops_getActiveModules
  • xoops_getbanner
  • xoops_getBaseDomain
  • xoops_getConfigOption
  • xoops_getcss
  • xoops_getenv
  • xoops_getHandler
  • xoops_getMailer
  • xoops_getModuleHandler
  • xoops_getModuleOption
  • xoops_getOption
  • xoops_getrank
  • xoops_getUrlDomain
  • xoops_getUserTimestamp
  • xoops_groupperm_deletebymoditem
  • xoops_header
  • xoops_isActiveModule
  • xoops_load
  • xoops_loadLanguage
  • xoops_makepass
  • xoops_message
  • xoops_module_install_avatars
  • xoops_module_install_banners
  • xoops_module_install_comments
  • xoops_module_install_debugbar
  • xoops_module_install_notifications
  • xoops_module_install_page
  • xoops_module_install_pm
  • xoops_module_install_profile
  • xoops_module_install_publisher
  • xoops_module_install_smilies
  • xoops_module_install_system
  • xoops_module_install_userrank
  • xoops_module_install_xlanguage
  • xoops_module_pre_uninstall_comments
  • xoops_module_pre_uninstall_notifications
  • xoops_module_update_comments
  • xoops_module_update_debugbar
  • xoops_module_update_notifications
  • xoops_module_update_pm
  • xoops_module_update_profile
  • xoops_module_update_publisher
  • xoops_module_update_search
  • xoops_module_update_system
  • xoops_module_update_xlanguage
  • xoops_notification_deletebyitem
  • xoops_notification_deletebymodule
  • xoops_notification_deletebyuser
  • xoops_result
  • xoops_setActiveModules
  • xoops_setConfigOption
  • xoops_substr
  • xoops_template_clear_module_cache
  • xoops_template_touch
  • xoops_trim
  • xoops_utf8_encode
  • xoopseditor_get_rootpath
  • xoPassField
  • xoPhpVersion
  • Overview
  • Namespace
  • Class
  • Tree
  1: <?php
  2: /*
  3:  You may not change or alter any portion of this comment or credits
  4:  of supporting developers from this source code or any supporting source code
  5:  which is considered copyrighted (c) material of the original comment or credit authors.
  6: 
  7:  This program is distributed in the hope that it will be useful,
  8:  but WITHOUT ANY WARRANTY; without even the implied warranty of
  9:  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 10:  */
 11: 
 12: namespace Xoops\Core;
 13: 
 14: /**
 15:  * XoopsFilterInput is a class for filtering input from any data source
 16:  *
 17:  * Forked from the php input filter library by Daniel Morris
 18:  *
 19:  * Original Contributors: Gianpaolo Racca, Ghislain Picard,
 20:  *                        Marco Wandschneider, Chris Tobin and Andrew Eddie.
 21:  *
 22:  * @category  Xoops\Core\FilterInput
 23:  * @package   Xoops\Core
 24:  * @author    Daniel Morris <dan@rootcube.com>
 25:  * @author    Louis Landry <louis.landry@joomla.org>
 26:  * @author    Grégory Mage (Aka Mage)
 27:  * @author    trabis <lusopoemas@gmail.com>
 28:  * @author    Richard Griffith <richard@geekwright.com>
 29:  * @copyright 2005 Daniel Morris
 30:  * @copyright 2005 - 2013 Open Source Matters, Inc. All rights reserved.
 31:  * @copyright 2011-2015 XOOPS Project (http://xoops.org)
 32:  * @license   GNU GPL 2 or later (http://www.gnu.org/licenses/gpl-2.0.html)
 33:  * @version   Release: 1.0
 34:  * @link      http://xoops.org
 35:  * @since     2.5.7
 36:  */
 37: class FilterInput
 38: {
 39:     protected $tagsArray;         // default = empty array
 40:     protected $attrArray;         // default = empty array
 41: 
 42:     protected $tagsMethod;        // default = 0
 43:     protected $attrMethod;        // default = 0
 44: 
 45:     protected $xssAuto;           // default = 1
 46:     protected $tagBlacklist = array(
 47:         'applet', 'body', 'bgsound', 'base', 'basefont', 'embed', 'frame',
 48:         'frameset', 'head', 'html', 'id', 'iframe', 'ilayer', 'layer',
 49:         'link', 'meta', 'name', 'object', 'script', 'style', 'title', 'xml'
 50:     );
 51:     // also will strip ALL event handlers
 52:     protected $attrBlacklist = array('action', 'background', 'codebase', 'dynsrc', 'lowsrc');
 53: 
 54:     /**
 55:       * Constructor
 56:       *
 57:       * @param Array $tagsArray  - list of user-defined tags
 58:       * @param Array $attrArray  - list of user-defined attributes
 59:       * @param int   $tagsMethod - 0 = allow just user-defined, 1 = allow all but user-defined
 60:       * @param int   $attrMethod - 0 = allow just user-defined, 1 = allow all but user-defined
 61:       * @param int   $xssAuto    - 0 = only auto clean essentials, 1 = allow clean blacklisted tags/attr
 62:       */
 63:     public function __construct(
 64:         $tagsArray = array(),
 65:         $attrArray = array(),
 66:         $tagsMethod = 0,
 67:         $attrMethod = 0,
 68:         $xssAuto = 1
 69:     ) {
 70:         // make sure user defined arrays are in lowercase
 71:         $countTagsArray = count($tagsArray);
 72:         for ($i = 0; $i < $countTagsArray; ++$i) {
 73:             $tagsArray[$i] = strtolower($tagsArray[$i]);
 74:         }
 75:         $countAttrArray = count($attrArray);
 76:         for ($i = 0; $i < $countAttrArray; ++$i) {
 77:             $attrArray[$i] = strtolower($attrArray[$i]);
 78:         }
 79:         // assign to member vars
 80:         $this->tagsArray = (array) $tagsArray;
 81:         $this->attrArray = (array) $attrArray;
 82:         $this->tagsMethod = $tagsMethod;
 83:         $this->attrMethod = $attrMethod;
 84:         $this->xssAuto = $xssAuto;
 85:     }
 86: 
 87:     /**
 88:      * Returns a reference to an input filter object, only creating it if it doesn't already exist.
 89:      *
 90:      * This method must be invoked as:
 91:      *   $filter = & XoopsFilterInput::getInstance();
 92:      *
 93:      * @param array $tagsArray  list of user-defined tags
 94:      * @param array $attrArray  list of user-defined attributes
 95:      * @param int   $tagsMethod WhiteList method = 0, BlackList method = 1
 96:      * @param int   $attrMethod WhiteList method = 0, BlackList method = 1
 97:      * @param int   $xssAuto    Only auto clean essentials = 0,
 98:      *                          Allow clean blacklisted tags/attr = 1
 99:      *
100:      * @return XoopsFilterInput object.
101:      * @since   1.5
102:      * @static
103:      */
104:     public static function getInstance(
105:         $tagsArray = array(),
106:         $attrArray = array(),
107:         $tagsMethod = 0,
108:         $attrMethod = 0,
109:         $xssAuto = 1
110:     ) {
111:         static $instances;
112: 
113:         $sig = md5(serialize(array($tagsArray, $attrArray, $tagsMethod, $attrMethod, $xssAuto)));
114: 
115:         if (!isset ($instances)) {
116:             $instances = array();
117:         }
118: 
119:         if (empty ($instances[$sig])) {
120:             $classname = __CLASS__ ;
121:             $instances[$sig] = new $classname ($tagsArray, $attrArray, $tagsMethod, $attrMethod, $xssAuto);
122:         }
123: 
124:         return $instances[$sig];
125:     }
126: 
127:     /**
128:       * Method to be called by another php script. Processes for XSS and
129:       * any specified bad code.
130:       *
131:       * @param Mixed $source - input string/array-of-string to be 'cleaned'
132:       *
133:       * @return String $source - 'cleaned' version of input parameter
134:       */
135:     public function process($source)
136:     {
137:         if (is_array($source)) {
138:             // clean all elements in this array
139:             foreach ($source as $key => $value) {
140:                 // filter element for XSS and other 'bad' code etc.
141:                 if (is_string($value)) {
142:                     $source[$key] = $this->remove($this->decode($value));
143:                 }
144:             }
145:             return $source;
146:         } elseif (is_string($source)) {
147:             // clean this string
148:             return $this->remove($this->decode($source));
149:         } else {
150:             // return parameter as given
151:             return $source;
152:         }
153:     }
154: 
155:     /**
156:      * Method to be called by another php script. Processes for XSS and
157:      * specified bad code.
158:      *
159:      * @param mixed  $source Input string/array-of-string to be 'cleaned'
160:      * @param string $type   Return/cleaning type for the variable, one of
161:      *                       (INTEGER, FLOAT, BOOLEAN, WORD, ALNUM, CMD, BASE64,
162:      *                        STRING, ARRAY, PATH, USERNAME, WEBURL, EMAIL, IP)
163:      *
164:      * @return mixed 'Cleaned' version of input parameter
165:      * @static
166:      */
167:     public static function clean($source, $type = 'string')
168:     {
169:         static $filter = null;
170: 
171:         // need an instance for methods, since this is supposed to be static
172:         // we must instantiate the class - this will take defaults
173:         if (!is_object($filter)) {
174:             $classname = get_called_class() ;
175:             $filter = $classname::getInstance();
176:         }
177: 
178:         // Handle the type constraint
179:         switch (strtoupper($type)) {
180:             case 'INT':
181:             case 'INTEGER':
182:                 // Only use the first integer value
183:                 preg_match('/-?[0-9]+/', (string) $source, $matches);
184:                 $result = @ (int) $matches[0];
185:                 break;
186: 
187:             case 'FLOAT':
188:             case 'DOUBLE':
189:                 // Only use the first floating point value
190:                 preg_match('/-?[0-9]+(\.[0-9]+)?/', (string) $source, $matches);
191:                 $result = @ (float) $matches[0];
192:                 break;
193: 
194:             case 'BOOL':
195:             case 'BOOLEAN':
196:                 $result = (bool) $source;
197:                 break;
198: 
199:             case 'WORD':
200:                 $result = (string) preg_replace('/[^A-Z_]/i', '', $source);
201:                 break;
202: 
203:             case 'ALNUM':
204:                 $result = (string) preg_replace('/[^A-Z0-9]/i', '', $source);
205:                 break;
206: 
207:             case 'CMD':
208:                 $result = (string) preg_replace('/[^A-Z0-9_\.-]/i', '', $source);
209:                 $result = strtolower($result);
210:                 break;
211: 
212:             case 'BASE64':
213:                 $result = (string) preg_replace('/[^A-Z0-9\/+=]/i', '', $source);
214:                 break;
215: 
216:             case 'STRING':
217:                 $result = (string) $filter->process($source);
218:                 break;
219: 
220:             case 'ARRAY':
221:                 $result = (array) $filter->process($source);
222:                 break;
223: 
224:             case 'PATH':
225:                 $source = trim((string) $source);
226:                 $pattern = '/^([-_\.\/A-Z0-9=&%?~]+)(.*)$/i';
227:                 preg_match($pattern, $source, $matches);
228:                 $result = @ (string) $matches[1];
229:                 break;
230: 
231:             case 'USERNAME':
232:                 $result = (string) preg_replace('/[\x00-\x1F\x7F<>"\'%&]/', '', $source);
233:                 break;
234: 
235:             case 'WEBURL':
236:                 $result = (string) $filter->process($source);
237:                 // allow only relative, http or https
238:                 $urlparts=parse_url($result);
239:                 if (!empty($urlparts['scheme'])
240:                     && !($urlparts['scheme']==='http' || $urlparts['scheme']==='https')
241:                 ) {
242:                     $result='';
243:                 }
244:                 // do not allow quotes, tag brackets or controls
245:                 if (!preg_match('#^[^"<>\x00-\x1F]+$#', $result)) {
246:                     $result='';
247:                 }
248:                 break;
249: 
250:             case 'EMAIL':
251:                 $result = (string) $source;
252:                 if (!filter_var((string) $source, FILTER_VALIDATE_EMAIL)) {
253:                     $result = '';
254:                 }
255:                 break;
256: 
257:             case 'IP':
258:                 $result = (string) $source;
259:                 // this may be too restrictive.
260:                 // Should the FILTER_FLAG_NO_PRIV_RANGE flag be excluded?
261:                 if (!filter_var((string) $source, FILTER_VALIDATE_IP)) {
262:                     $result = '';
263:                 }
264:                 break;
265: 
266:             default:
267:                 $result = $filter->process($source);
268:                 break;
269:         }
270: 
271:         return $result;
272:     }
273: 
274:     /**
275:       * Internal method to iteratively remove all unwanted tags and attributes
276:       *
277:       * @param String $source - input string to be 'cleaned'
278:       *
279:       * @return String $source - 'cleaned' version of input parameter
280:       */
281:     protected function remove($source)
282:     {
283:         $loopCounter=0;
284:         // provides nested-tag protection
285:         while ($source != $this->filterTags($source)) {
286:             $source = $this->filterTags($source);
287:             ++$loopCounter;
288:         }
289: 
290:         return $source;
291:     }
292: 
293:     /**
294:       * Internal method to strip a string of certain tags
295:       *
296:       * @param String $source - input string to be 'cleaned'
297:       *
298:       * @return String $source - 'cleaned' version of input parameter
299:       */
300:     protected function filterTags($source)
301:     {
302:         // filter pass setup
303:         $preTag = null;
304:         $postTag = $source;
305:         // find initial tag's position
306:         $tagOpen_start = strpos($source, '<');
307:         // interate through string until no tags left
308:         while ($tagOpen_start !== false) {
309:             // process tag interatively
310:             $preTag .= substr($postTag, 0, $tagOpen_start);
311:             $postTag = substr($postTag, $tagOpen_start);
312:             $fromTagOpen = substr($postTag, 1);
313:             // end of tag
314:             $tagOpen_end = strpos($fromTagOpen, '>');
315:             if ($tagOpen_end === false) {
316:                 break;
317:             }
318:             // next start of tag (for nested tag assessment)
319:             $tagOpen_nested = strpos($fromTagOpen, '<');
320:             if (($tagOpen_nested !== false) && ($tagOpen_nested < $tagOpen_end)) {
321:                 $preTag .= substr($postTag, 0, ($tagOpen_nested+1));
322:                 $postTag = substr($postTag, ($tagOpen_nested+1));
323:                 $tagOpen_start = strpos($postTag, '<');
324:                 continue;
325:             }
326:             $tagOpen_nested = (strpos($fromTagOpen, '<') + $tagOpen_start + 1);
327:             $currentTag = substr($fromTagOpen, 0, $tagOpen_end);
328:             $tagLength = strlen($currentTag);
329:             if (!$tagOpen_end) {
330:                 $preTag .= $postTag;
331:                 $tagOpen_start = strpos($postTag, '<');
332:             }
333:             // iterate through tag finding attribute pairs - setup
334:             $tagLeft = $currentTag;
335:             $attrSet = array();
336:             $currentSpace = strpos($tagLeft, ' ');
337:             if (substr($currentTag, 0, 1) === "/") {
338:                 // is end tag
339:                 $isCloseTag = true;
340:                 list($tagName) = explode(' ', $currentTag);
341:                 $tagName = substr($tagName, 1);
342:             } else {
343:                 // is start tag
344:                 $isCloseTag = false;
345:                 list($tagName) = explode(' ', $currentTag);
346:             }
347:             // excludes all "non-regular" tagnames OR no tagname OR remove if xssauto is on and tag is blacklisted
348:             if ((!preg_match("/^[a-z][a-z0-9]*$/i", $tagName))
349:                 || (!$tagName)
350:                 || ((in_array(strtolower($tagName), $this->tagBlacklist))
351:                 && ($this->xssAuto))
352:             ) {
353:                 $postTag = substr($postTag, ($tagLength + 2));
354:                 $tagOpen_start = strpos($postTag, '<');
355:                 // don't append this tag
356:                 continue;
357:             }
358:             // this while is needed to support attribute values with spaces in!
359:             while ($currentSpace !== false) {
360:                 $fromSpace = substr($tagLeft, ($currentSpace+1));
361:                 $nextSpace = strpos($fromSpace, ' ');
362:                 $openQuotes = strpos($fromSpace, '"');
363:                 $closeQuotes = strpos(substr($fromSpace, ($openQuotes+1)), '"') + $openQuotes + 1;
364:                 // another equals exists
365:                 if (strpos($fromSpace, '=') !== false) {
366:                     // opening and closing quotes exists
367:                     if (($openQuotes !== false)
368:                         && (strpos(substr($fromSpace, ($openQuotes+1)), '"') !== false)
369:                     ) {
370:                         $attr = substr($fromSpace, 0, ($closeQuotes+1));
371:                     } else {
372:                         $attr = substr($fromSpace, 0, $nextSpace);
373:                     }
374:                     // one or neither exist
375: 
376:                 } else {
377:                     // no more equals exist
378:                     $attr = substr($fromSpace, 0, $nextSpace);
379:                 }
380:                 // last attr pair
381:                 if (!$attr) {
382:                     $attr = $fromSpace;
383:                 }
384:                 // add to attribute pairs array
385:                 $attrSet[] = $attr;
386:                 // next inc
387:                 $tagLeft = substr($fromSpace, strlen($attr));
388:                 $currentSpace = strpos($tagLeft, ' ');
389:             }
390:             // appears in array specified by user
391:             $tagFound = in_array(strtolower($tagName), $this->tagsArray);
392:             // remove this tag on condition
393:             if ((!$tagFound && $this->tagsMethod) || ($tagFound && !$this->tagsMethod)) {
394:                 // reconstruct tag with allowed attributes
395:                 if (!$isCloseTag) {
396:                     $attrSet = $this->filterAttr($attrSet);
397:                     $preTag .= '<' . $tagName;
398:                     $countAttrSet = count($attrSet);
399:                     for ($i = 0; $i < $countAttrSet; ++$i) {
400:                         $preTag .= ' ' . $attrSet[$i];
401:                     }
402:                     // reformat single tags to XHTML
403:                     if (strpos($fromTagOpen, "</" . $tagName)) {
404:                         $preTag .= '>';
405:                     } else {
406:                         $preTag .= ' />';
407:                     }
408:                 } else {
409:                     // just the tagname
410:                     $preTag .= '</' . $tagName . '>';
411:                 }
412:             }
413:             // find next tag's start
414:             $postTag = substr($postTag, ($tagLength + 2));
415:             $tagOpen_start = strpos($postTag, '<');
416:         }
417:         // append any code after end of tags
418:         $preTag .= $postTag;
419: 
420:         return $preTag;
421:     }
422: 
423:     /**
424:       * Internal method to strip a tag of certain attributes
425:       *
426:       * @param array $attrSet attributes
427:       *
428:       * @return Array $newSet stripped attributes
429:       */
430:     protected function filterAttr($attrSet)
431:     {
432:         $newSet = array();
433:         // process attributes
434:         $countAttrSet = count($attrSet);
435:         for ($i = 0; $i < $countAttrSet; ++$i) {
436:             // skip blank spaces in tag
437:             if (!$attrSet[$i]) {
438:                 continue;
439:             }
440:             // split into attr name and value
441:             $attrSubSet = explode('=', trim($attrSet[$i]));
442:             list($attrSubSet[0]) = explode(' ', $attrSubSet[0]);
443:             // removes all "non-regular" attr names AND also attr blacklisted
444:             if ((!preg_match('/[a-z]*$/i', $attrSubSet[0]))
445:                 || (($this->xssAuto)
446:                 && ((in_array(strtolower($attrSubSet[0]), $this->attrBlacklist))
447:                 || (substr($attrSubSet[0], 0, 2) === 'on')))
448:             ) {
449:                 continue;
450:             }
451:             // xss attr value filtering
452:             if ($attrSubSet[1]) {
453:                 // strips unicode, hex, etc
454:                 $attrSubSet[1] = str_replace('&#', '', $attrSubSet[1]);
455:                 // strip normal newline within attr value
456:                 $attrSubSet[1] = preg_replace('/\s+/', '', $attrSubSet[1]);
457:                 // strip double quotes
458:                 $attrSubSet[1] = str_replace('"', '', $attrSubSet[1]);
459:                 // [requested feature] convert single quotes from either side to doubles
460:                 // (Single quotes shouldn't be used to pad attr value)
461:                 if ((substr($attrSubSet[1], 0, 1) === "'")
462:                     && (substr($attrSubSet[1], (strlen($attrSubSet[1]) - 1), 1) === "'")
463:                 ) {
464:                     $attrSubSet[1] = substr($attrSubSet[1], 1, (strlen($attrSubSet[1]) - 2));
465:                 }
466:                 // strip slashes
467:                 $attrSubSet[1] = stripslashes($attrSubSet[1]);
468:             }
469:             // auto strip attr's with "javascript:
470:             if (((strpos(strtolower($attrSubSet[1]), 'expression') !== false)
471:                     && (strtolower($attrSubSet[0]) === 'style')) ||
472:                 (strpos(strtolower($attrSubSet[1]), 'javascript:') !== false) ||
473:                 (strpos(strtolower($attrSubSet[1]), 'behaviour:') !== false) ||
474:                 (strpos(strtolower($attrSubSet[1]), 'vbscript:') !== false) ||
475:                 (strpos(strtolower($attrSubSet[1]), 'mocha:') !== false) ||
476:                 (strpos(strtolower($attrSubSet[1]), 'livescript:') !== false)
477:             ) {
478:                 continue;
479:             }
480: 
481:             // if matches user defined array
482:             $attrFound = in_array(strtolower($attrSubSet[0]), $this->attrArray);
483:             // keep this attr on condition
484:             if ((!$attrFound && $this->attrMethod) || ($attrFound && !$this->attrMethod)) {
485:                 if ($attrSubSet[1]) {
486:                     // attr has value
487:                     $newSet[] = $attrSubSet[0] . '="' . $attrSubSet[1] . '"';
488:                 } elseif ($attrSubSet[1] == "0") {
489:                     // attr has decimal zero as value
490:                     $newSet[] = $attrSubSet[0] . '="0"';
491:                 } else {
492:                     // reformat single attributes to XHTML
493:                     $newSet[] = $attrSubSet[0] . '="' . $attrSubSet[0] . '"';
494:                 }
495:             }
496:         }
497: 
498:         return $newSet;
499:     }
500: 
501:     /**
502:       * Try to convert to plaintext
503:       *
504:       * @param String $source string to decode
505:       *
506:       * @return String $source decoded
507:       */
508:     protected function decode($source)
509:     {
510:         // url decode
511:         $charset = defined('_CHARSET') ? constant('_CHARSET') : 'utf-8';
512:         $source = html_entity_decode($source, ENT_QUOTES, $charset);
513:         // convert decimal
514:         $source = preg_replace_callback(
515:             '/&#(\d+);/m',
516:             function ($matches) {
517:                 return chr($matches[1]);
518:             },
519:             $source
520:         );
521:         // convert hex
522:         $source = preg_replace_callback(
523:             '/&#x([a-f0-9]+);/mi',
524:             function ($matches) {
525:                 return chr('0x'.$matches[1]);
526:             },
527:             $source
528:         );   // hex notation
529: 
530:         return $source;
531:     }
532: 
533:     /**
534:      * gather - gather input from a source
535:      *
536:      * @param string $source    name of source superglobal, get, post or cookie
537:      * @param array  $input_map each element of the array is an array consisting of
538:      *                          elements to gather and clean from source
539:      *                            - name - key in source superglobal, no default
540:      *                            - type - XoopsFilterInput::clean type, default string
541:      *                            - default - default value, default ''
542:      *                            - trim - true to trim spaces from input, default true
543:      *                            - max length - maximum length to accept, 0=no limit, default 0
544:      *                          Example: array('op','string','view',true)
545:      * @param mixed  $require   name of required element, or false for nothing
546:      *                          required name. If the require name is set, values
547:      *                          will only be returned if the key $require is set
548:      *                          in the source array.
549:      *
550:      * @return array|false array of cleaned elements as specified by input_map, or
551:      *                     false if require key specified but not set
552:      */
553:     public static function gather($source, $input_map, $require = false)
554:     {
555:         $output = array();
556: 
557:         if (!empty($source)) {
558:             $source = strtolower($source);
559:             foreach ($input_map as $input) {
560:                 // set defaults
561:                 if (isset($input[0])) {
562:                     $name = $input[0];
563:                     $type = isset($input[1]) ? $input[1] : 'string';
564:                     $default = isset($input[2]) ?
565:                         (($require && $require==$name) ? '': $input[2]) : '';
566:                     $trim = isset($input[3]) ? $input[3] : true;
567:                     $maxlen = isset($input[4]) ? $input[4] : 0;
568:                     $value = $default;
569:                     switch ($source) {
570:                         case 'get':
571:                             if (isset($_GET[$name])) {
572:                                 $value=$_GET[$name];
573:                             }
574:                             break;
575:                         case 'post':
576:                             if (isset($_POST[$name])) {
577:                                 $value=$_POST[$name];
578:                             }
579:                             break;
580:                         case 'cookie':
581:                             if (isset($_COOKIE[$name])) {
582:                                 $value=$_COOKIE[$name];
583:                             }
584:                             break;
585:                     }
586:                     if ($trim) {
587:                         $value = trim($value);
588:                     }
589:                     if ($maxlen>0) {
590:                         if (function_exists('mb_strlen')) {
591:                             if (mb_strlen($value)>$maxlen) {
592:                                 $value=mb_substr($value, 0, $maxlen);
593:                             }
594:                         } else {
595:                             $value=substr($value, 0, $maxlen);
596:                         }
597:                         if ($trim) {
598:                             $value = trim($value);
599:                         }
600:                     }
601:                     $output[$name] = self::clean($value, $type);
602:                 }
603:             }
604:         }
605:         if ($require) {
606:             if (empty($output[$require])) {
607:                 $output = false;
608:             }
609:         }
610:         return $output;
611:     }
612: }
613: 
API documentation generated by ApiGen