jcb-compiler/README.md
2023-05-01 14:00:54 +02:00

99 KiB

███████╗██╗   ██╗██████╗ ███████╗██████╗
██╔════╝██║   ██║██╔══██╗██╔════╝██╔══██╗
███████╗██║   ██║██████╔╝█████╗  ██████╔╝
╚════██║██║   ██║██╔═══╝ ██╔══╝  ██╔══██╗
███████║╚██████╔╝██║     ███████╗██║  ██║
╚══════╝ ╚═════╝ ╚═╝     ╚══════╝╚═╝  ╚═╝
██████╗  ██████╗ ██╗    ██╗███████╗██████╗ ███████╗
██╔══██╗██╔═══██╗██║    ██║██╔════╝██╔══██╗██╔════╝
██████╔╝██║   ██║██║ █╗ ██║█████╗  ██████╔╝███████╗
██╔═══╝ ██║   ██║██║███╗██║██╔══╝  ██╔══██╗╚════██║
██║     ╚██████╔╝╚███╔███╔╝███████╗██║  ██║███████║
╚═╝      ╚═════╝  ╚══╝╚══╝ ╚══════╝╚═╝  ╚═╝╚══════╝

What is JCB Super Powers?

The Joomla Component Builder (JCB) Super Power features are designed to enhance JCB's functionality and streamline the development process. These Super Powers enable developers to efficiently manage and share their custom powers across multiple JCB instances through repositories hosted on https://git.vdm.dev/[username]/[repository-name]. JCB Super Powers are managed using a combination of layers, events, tasks, methods, switches, and algorithms, which work together to provide powerful customization and extensibility options. More details on JCB Super Powers can be found in the Super Powers Documentation.

In summary, JCB Super Powers offer a flexible and efficient way to manage and share functionalities between JCB instances. By utilizing a sophisticated system of layers, events, tasks, methods, switches, and algorithms, developers can seamlessly integrate JCB core powers and their custom powers. For more information on how to work with JCB Super Powers, refer to the Super Powers User Guide.

What can I find here?

This repository contains an index (see below) of all the approved powers within the JCB GUI. During the compilation of a component, these powers are automatically added to the repository, ensuring a well-organized and accessible collection of functionalities.

Index of powers

Class Diagrams

VDM Joomla Componentbuilder Compiler

namespace VDM\Joomla\Componentbuilder\Compiler

@startuml

namespace VDM\Joomla\Componentbuilder\Compiler #Olive {


  abstract Factory  #Orange {
    # static $container
    # static $JoomlaVersion
    + {static} _() : mixed
    + {static} _J() : mixed
    + {static} getContainer() : Container
    # {static} createContainer() : Container
  }

  class Component  #Gold {
    + __construct()
    + __get()
  }

  class Config  #Gold {
    # JoomlaRegistry $config
    + __construct()
    # getGiteatoken() : ?string
    # getAddcontributors() : bool
    # getAddajax() : bool
    # getAddsiteajax() : bool
    # getAddeximport() : bool
    # getAddcheckin() : bool
    # getComponentid() : int
    # getComponentversion() : string
    # getComponentcodename() : string
    # getComponentcontext() : string
    # getComponentcodenamelength() : int
    # getJoomlaversion() : int
    # getJoomlaversions() : array
    # getJoomlaversionname() : string
    # getSetjoomlafields() : bool
    # getShowadvancedoptions() : bool
    # getIndentationvalue() : string
    # getAddbuilddate() : int
    # getBuilddate() : string
    # getBackup() : int
    # getRepository() : int
    # getDebuglinenr() : int
    # getMinify() : int
    # getRemovelinebreaks() : bool
    # getTidy() : bool
    # getSettidywarning() : bool
    # getSettaghistory() : bool
    # getLangtag() : string
    # getLangprefix() : string
    # getLangtarget() : string
    # getLangstringtargets() : array
    # getLangstringkeytargets() : array
    # getFieldbuildertype() : int
    # getDefaultfields() : array
    # getTmppath() : string
    # getCompilerpath() : string
    # getJcbpowerspath() : string
    # getLocalpowersrepositorypath() : string
    # getApprovedpaths() : array
    # getBompath() : string
    # getCustomfolderpath() : string
    # getAddassetstablefix() : int
    # getAddassetstablenamefix() : bool
    # getAccessworsecase() : int
    # getMysqltablekeys() : array
    # getAddplaceholders() : bool
    # getAddpower() : bool
    # getAddsuperpowers() : bool
    # getAddownpowers() : bool
    # getBuildtarget() : string
    # getCryptiontypes() : array
    # getBasicencryption() : bool
    # getMediumencryption() : bool
    # getWhmcsencryption() : bool
    # getRemovesitefolder() : bool
    # getRemovesiteeditfolder() : bool
    # getUikit() : int
    # getGooglechart() : bool
    # getFootable() : bool
    # getFootableversion() : int
  }

  class Content  #Gold {
    # key() : string
    # firstKey() : string
    # secondKey() : string
  }

  class Customcode  #Gold {
    + array $functionNameMemory
    + $active
    + $memory
    # $data
    # Config $config
    # Placeholder $placeholder
    # Extractor $extractor
    # Power $power
    # External $external
    # $db
    + __construct()
    + update() : string
    + set() : string
    + get() : bool
    # insert() : string
    # buildPlaceholders() : void
    # check() : Mixed
  }

  class Field  #Gold {
    # Data $data
    # Name $name
    # TypeName $typeName
    # UniqueName $uniqueName
    + __construct()
    + set() : void
  }

  class Language  #Gold {
    # array $content
    # Config $config
    + __construct()
    + key() : string
    + exist() : bool
    + get() : string
    + getTarget() : array
    + setTarget() : void
    + set() : void
    # fix() : string
  }

  class Placeholder  #Gold {
    + array $active
    # Config $config
    + __construct()
    + set() : void
    + get() : mixed
    + exist() : bool
    + add() : void
    + remove() : void
    + set_() : void
    + get_() : mixed
    + exist_() : bool
    + add_() : void
    + remove_() : void
    + set_h() : void
    + get_h() : mixed
    + exist_h() : bool
    + add_h() : void
    + remove_h() : void
    + setType() : void
    + clearType() : void
    + update() : string
    + update_() : string
    + keys() : array
  }

  class Power  #Gold {
    + array $active
    + array $namespace
    + array $composer
    + array $superpowers
    # string $fixUrl
    # array $state
    # array $retry
    # Config $config
    # Placeholder $placeholder
    # Customcode $customcode
    # Gui $gui
    # Superpower $superpower
    # \JDatabaseDriver $db
    # CMSApplication $app
    + __construct()
    + load() : void
    + get() : ?object
    - set() : bool
    - isPowerSet() : bool
    - isGuidValid() : bool
    - getPowerData() : ?object
    - setNamespace() : bool
    - setUseSelection() : void
    - setLoadSelection() : void
    - setComposer() : void
    - setImplements() : void
    - setExtend() : void
    - setUseAs() : void
    - getCleanNamespace() : string
    - getUseNamespace() : string
    - addToHeader() : void
    - setLicensingTemplate() : void
    - setHeader() : void
    - setMainClassCode() : void
    - setSuperPowers() : void
  }

  class Registry  #Gold {
    # $indent
    + varExport() : ?string
    # convertIndent() : string
  }
}


@enduml

VDM Joomla Componentbuilder Interfaces

namespace VDM\Joomla\Componentbuilder\Interfaces

@startuml

namespace VDM\Joomla\Componentbuilder\Interfaces #Olive {


  interface Cryptinterface  #Lavender {
    + encrypt() : string
    + decrypt() : string
  }

  interface FactoryInterface  #Lavender {
    + {static} _() : Mixed
    + {static} getContainer() : Container
  }

  interface LoadInterface  #Lavender {
    + rows() : ?array
    + items() : ?array
    + row() : ?array
    + item() : ?object
    + value() : mixed
  }

  interface Mapperdoubleinterface  #Lavender {
    + isActive_() : bool
    + set_() : void
    + get_() : mixed
    + exist_() : bool
    + add_() : void
    + remove_() : void
  }

  interface Mappersingleinterface  #Lavender {
    + isActive() : bool
    + set() : void
    + get() : mixed
    + exist() : bool
    + add() : void
    + remove() : void
  }

  interface Serverinterface  #Lavender {
    + set() : self
    + move() : bool
  }

  interface Tableinterface  #Lavender {
    + get() : mixed
    + title() : ?array
    + titleName() : string
    + tables() : array
    + exist() : bool
    + fields() : ?array
  }
}


@enduml

VDM Joomla Componentbuilder Power

namespace VDM\Joomla\Componentbuilder\Power

@startuml

namespace VDM\Joomla\Componentbuilder\Power #Olive {


  class Grep << (F,LightGreen) >> #Green {
    + ?string $path
    + ?array $paths
    # Contents $contents
    # CMSApplication $app
    + __construct()
    + get() : ?object
    - searchLocal() : ?object
    - searchRemote() : ?object
    - getLocal() : ?object
    - getRemote() : ?object
    - init() : void
    - localIndex() : void
    - remoteIndex() : void
    - loadRemoteFile() : mixed
    - getFunctionName() : ?string
  }

  class Model << (F,LightGreen) >> #Green {
    + value() : mixed
    # validateBefore() : bool
    # validateAfter() : bool
    # getTable() : string
  }

  class Super << (F,LightGreen) >> #Green {
    # Grep $grep
    # Insert $insert
    # Update $update
    + __construct()
    + load() : bool
    - insert() : bool
    - update() : bool
    - action() : string
  }
}


@enduml

VDM Joomla Componentbuilder Utilities

namespace VDM\Joomla\Componentbuilder\Utilities

@startuml

namespace VDM\Joomla\Componentbuilder\Utilities #Olive {


  class Constantpaths  #Gold {
    # array $paths
    + get() : array|string|null
  }
}


@enduml

VDM Joomla Componentbuilder Compiler Adminview

namespace VDM\Joomla\Componentbuilder\Compiler\Adminview

@startuml

namespace VDM\Joomla\Componentbuilder\Compiler\Adminview #LightGreen {


  class Data  #Gold {
    # array $data
    # Config $config
    # Registry $registry
    # EventInterface $event
    # Placeholder $placeholder
    # Dispenser $dispenser
    # Customtabs $customtabs
    # Tabs $tabs
    # Fields $fields
    # Historyadminview $history
    # Permissions $permissions
    # Conditions $conditions
    # Relations $relations
    # Linkedviews $linkedviews
    # Javascriptadminview $javascript
    # Cssadminview $css
    # Phpadminview $php
    # Custombuttons $custombuttons
    # Customimportscripts $customimportscripts
    # Ajaxadmin $ajax
    # Customalias $customalias
    # Sql $sql
    # Mysqlsettings $mysqlsettings
    # \JDatabaseDriver $db
    + __construct()
    + get() : ?object
  }
}


@enduml

VDM Joomla Componentbuilder Compiler Alias

namespace VDM\Joomla\Componentbuilder\Compiler\Alias

@startuml

namespace VDM\Joomla\Componentbuilder\Compiler\Alias #LightGreen {


  class Data  #Gold {
    # Config $config
    # Registry $registry
    # Customcode $customcode
    # Gui $gui
    # Loader $loader
    # Libraries $libraries
    # \JDatabaseDriver $db
    + __construct()
    + get() : ?array
    # set() : void
  }
}


@enduml

VDM Joomla Componentbuilder Compiler Component

namespace VDM\Joomla\Componentbuilder\Compiler\Component

@startuml

namespace VDM\Joomla\Componentbuilder\Compiler\Component #LightGreen {


  class Dashboard  #Gold {
    # Registry $registry
    # Component $component
    # CMSApplication $app
    + __construct()
    + set() : void
  }

  class Data  #Gold {
    # Config $config
    # EventInterface $event
    # Placeholder $placeholder
    # ComponentPlaceholder $componentPlaceholder
    # Dispenser $dispenser
    # Customcode $customcode
    # Gui $gui
    # Field $field
    # FieldName $fieldName
    # UniqueName $uniqueName
    # Filesfolders $filesFolders
    # Historycomponent $history
    # Whmcs $whmcs
    # Sqltweaking $sqltweaking
    # Adminviews $adminviews
    # Siteviews $siteviews
    # Customadminviews $customadminviews
    # Updateserver $updateserver
    # Joomlamodules $modules
    # Joomlaplugins $plugins
    # \JDatabaseDriver $db
    + __construct()
    + get() : ?object
  }

  class Placeholder  #Gold {
    # $placeholders
    # $config
    # $db
    + __construct()
    + get() : array
  }

  class Settings  #Gold {
    # array $standardFolders
    # array $standardRootFiles
    # ?object $data
    # Config $config
    # Registry $registry
    # EventInterface $event
    # Placeholder $placeholder
    # Component $component
    # Paths $paths
    # Dynamicpath $dynamicpath
    # Pathfix $pathfix
    + __construct()
    + exists() : bool
    + structure() : object
    + multiple() : object
    + single() : object
    + standardFolder() : bool
    + standardRootFile() : bool
    - isSet() : bool
    - get() : ?object
    - readJsonFile() : ?object
    - isValidData() : bool
    - loadExtraFolders() : void
    - addImportViewFolder() : void
    - addPhpSpreadsheetFolder() : void
    - addUikitFolder() : void
    - addFooTableFolder() : void
    - loadExtraFiles() : void
    - addGoogleChartFiles() : void
    - addFolders() : void
    - addFiles() : void
  }

  class Structure  #Gold {
    # Settings $settings
    # Paths $paths
    # Folder $folder
    + __construct()
    + build() : bool
    # folders() : void
  }

  class Structuremultiple  #Gold {
    # Config $config
    # Registry $registry
    # Settings $settings
    # Component $component
    # Createdate $createdate
    # Modifieddate $modifieddate
    # Structure $structure
    + __construct()
    + build() : bool
    # admin() : bool
    # site() : bool
    # custom() : bool
    - isValidAdminView() : bool
    - isValidView() : bool
    - buildAdminView() : void
    - buildView() : void
  }

  class Structuresingle  #Gold {
    # string $newName
    # string $currentFullPath
    # string $packageFullPath
    # string $zipFullPath
    # Config $config
    # Registry $registry
    # Settings $settings
    # Component $component
    # Content $content
    # Counter $counter
    # Paths $paths
    # Files $files
    # CMSApplication $app
    + __construct()
    + build() : bool
    - doLicenseCheck() : bool
    - doReadmeCheck() : bool
    - doChangelogCheck() : bool
    - setNewName() : void
    - setPaths() : void
    - pathExist() : bool
    - setTarget() : void
    - moveFile() : void
    - registerFile() : void
    - setDynamicTarget() : void
    - setDynamicFolders() : void
  }
}


@enduml

VDM Joomla Componentbuilder Compiler Customcode

namespace VDM\Joomla\Componentbuilder\Compiler\Customcode

@startuml

namespace VDM\Joomla\Componentbuilder\Compiler\Customcode #LightGreen {


  class Dispenser  #Gold {
    + array $hub
    # Placeholder $placeholder
    # Customcode $customcode
    # Gui $gui
    # Hash $hash
    # LockBase $base64
    + __construct()
    + set() : bool
    + get() : mixed
    # initHub() : void
    # setHub() : void
  }

  class External  #Gold {
    # array $code
    # array $cutter
    # Placeholder $placeholder
    # \JDatabaseDriver $db
    # User $user
    # CMSApplication $app
    + __construct()
    + set() : string
    # getCode() : void
    # cut() : string
  }

  class Extractor  #Gold {
    # array $existing
    # array $new
    # array $done
    # array $counter
    # array $fileTypes
    # array $placeholders
    # string $today
    # Config $config
    # Gui $gui
    # Paths $paths
    # Reverse $reverse
    # Placeholder $componentPlaceholder
    # Pathfix $pathfix
    # User $user
    # \JDatabaseDriver $db
    # CMSApplication $app
    + __construct()
    + run() : void
    # searchFileContent() : array
    # insert() : void
    # update() : void
    # setStartReplace() : string
    # addLineChecker() : bool|int
    # getSystemID() : mixed
  }

  class Gui  #Gold {
    # Config $config
    # Reverse $reverse
    # Parser $parser
    # \JDatabaseDriver $db
    # CMSApplication $app
    + __construct()
    + set() : string
    + search() : void
    # check() : bool
  }

  class Hash  #Gold {
    # Placeholder $placeholder
    + __construct()
    + set() : string
  }

  class LockBase  #Gold {
    # Placeholder $placeholder
    + __construct()
    + set() : string
  }
}


@enduml

VDM Joomla Componentbuilder Compiler Customview

namespace VDM\Joomla\Componentbuilder\Compiler\Customview

@startuml

namespace VDM\Joomla\Componentbuilder\Compiler\Customview #LightGreen {


  class Data  #Gold {
    # array $data
    # Config $config
    # EventInterface $event
    # Customcode $customcode
    # Gui $gui
    # Libraries $libraries
    # Templatelayout $templateLayout
    # Dynamicget $dynamic
    # Loader $loader
    # Javascriptcustomview $javascript
    # Csscustomview $css
    # Phpcustomview $php
    # Custombuttons $custombuttons
    # Ajaxcustomview $ajax
    # \JDatabaseDriver $db
    + __construct()
    + get() : ?object
  }
}


@enduml

VDM Joomla Componentbuilder Compiler Dynamicget

namespace VDM\Joomla\Componentbuilder\Compiler\Dynamicget

@startuml

namespace VDM\Joomla\Componentbuilder\Compiler\Dynamicget #LightGreen {


  class Data  #Gold {
    # array $guiMapper
    # Config $config
    # Registry $registry
    # EventInterface $event
    # Customcode $customcode
    # Dispenser $dispenser
    # Gui $gui
    # Dynamicget $dynamic
    # \JDatabaseDriver $db
    + __construct()
    + get() : ?array
  }

  class Selection  #Gold {
    # array $name
    # Config $config
    # Registry $registry
    # \JDatabaseDriver $db
    + __construct()
    + get() : ?array
    # name() : string
  }
}


@enduml

VDM Joomla Componentbuilder Compiler Field

namespace VDM\Joomla\Componentbuilder\Compiler\Field

@startuml

namespace VDM\Joomla\Componentbuilder\Compiler\Field #LightGreen {


  class Customcode  #Gold {
    # array $views
    # Dispenser $dispenser
    + __construct()
    + update() : void
  }

  class Data  #Gold {
    # array $fields
    # Config $config
    # EventInterface $event
    # HistoryInterface $history
    # Placeholder $placeholder
    # Customcode $customcode
    # FieldCustomcode $fieldCustomcode
    # Validation $validation
    # \JDatabaseDriver $db
    + __construct()
    + get() : ?object
  }

  class DatabaseName  #Gold {
    # Registry $registry
    + __construct()
    + get() : ?string
  }

  class Name  #Gold {
    # Registry $registry
    # array $unique
    # Placeholder $placeholder
    # UniqueName $uniqueName
    + __construct()
    + get() : string
  }

  class TypeName  #Gold {
    + get() : string
  }

  class UniqueName  #Gold {
    # Registry $registry
    + __construct()
    + set() : void
    + get() : string
  }

  class Validation  #Gold {
    # Registry $registry
    # Gui $gui
    # Placeholder $placeholder
    # Customcode $customcode
    # CoreValidationInterface $validation
    + __construct()
    + set() : void
  }
}


@enduml

VDM Joomla Componentbuilder Compiler Interfaces

namespace VDM\Joomla\Componentbuilder\Compiler\Interfaces

@startuml

namespace VDM\Joomla\Componentbuilder\Compiler\Interfaces #LightGreen {


  interface CustomcodeInterface  #Lavender {
    + update() : string
    + set() : string
    + get() : bool
  }

  interface EventInterface  #Lavender {
    + trigger() : void
  }

  interface GetScriptInterface  #Lavender {
    + get() : string
  }

  interface HistoryInterface  #Lavender {
    + get() : ?object
  }

  interface LanguageInterface  #Lavender {
    + key() : string
    + exist() : bool
    + get() : string
    + getTarget() : array
    + setTarget() : void
    + set() : void
  }

  interface PlaceholderInterface  #Lavender {
    + set() : void
    + get() : mixed
    + exist() : bool
    + add() : void
    + remove() : void
    + set_() : void
    + get_() : mixed
    + exist_() : bool
    + add_() : void
    + remove_() : void
    + set_h() : void
    + get_h() : mixed
    + exist_h() : bool
    + add_h() : void
    + remove_h() : void
    + setType() : void
    + clearType() : void
    + update() : string
    + update_() : string
    + keys() : array
  }

  interface PowerInterface  #Lavender {
    + load() : void
    + get() : mixed
  }
}


@enduml

VDM Joomla Componentbuilder Compiler JoomlaThree

namespace VDM\Joomla\Componentbuilder\Compiler\JoomlaThree

@startuml

namespace VDM\Joomla\Componentbuilder\Compiler\JoomlaThree #LightGreen {


  class Event  #Gold {
    # $activePlugins
    + __construct()
    + trigger() : void
  }

  class History  #Gold {
    # ?object $tmp
    # Config $config
    # \JDatabaseDriver $db
    + __construct()
    + get() : ?object
    # set() : bool
  }
}


@enduml

VDM Joomla Componentbuilder Compiler Joomlamodule

namespace VDM\Joomla\Componentbuilder\Compiler\Joomlamodule

@startuml

namespace VDM\Joomla\Componentbuilder\Compiler\Joomlamodule #LightGreen {


  class Data  #Gold {
    # array $data
    # Config $config
    # Customcode $customcode
    # Gui $gui
    # Placeholder $placeholder
    # Language $language
    # Field $field
    # FieldName $fieldName
    # Filesfolders $filesFolders
    # Libraries $libraries
    # Dynamicget $dynamic
    # \JDatabaseDriver $db
    + __construct()
    + get() : object|array|null
    + exists() : bool
    + set() : bool
  }

  class Structure  #Gold {
    # Module $module
    # Component $component
    # Config $config
    # Registry $registry
    # Dispenser $dispenser
    # EventInterface $event
    # Counter $counter
    # Folder $folder
    # File $file
    # Files $files
    + __construct()
    + build() : void
    # getXML() : string
    # getCustomScriptField() : string
  }
}


@enduml

VDM Joomla Componentbuilder Compiler Joomlaplugin

namespace VDM\Joomla\Componentbuilder\Compiler\Joomlaplugin

@startuml

namespace VDM\Joomla\Componentbuilder\Compiler\Joomlaplugin #LightGreen {


  class Data  #Gold {
    # array $data
    # Config $config
    # Customcode $customcode
    # Gui $gui
    # Placeholder $placeholder
    # Language $language
    # Field $field
    # FieldName $fieldName
    # Filesfolders $filesFolders
    # \JDatabaseDriver $db
    + __construct()
    + get() : object|array|null
    + exists() : bool
    + set() : bool
  }

  class Structure  #Gold {
    # Plugin $plugin
    # Component $component
    # Config $config
    # Registry $registry
    # Dispenser $dispenser
    # EventInterface $event
    # Counter $counter
    # Folder $folder
    # File $file
    # Files $files
    + __construct()
    + build() : void
    # getXML() : string
  }
}


@enduml

VDM Joomla Componentbuilder Compiler Language

namespace VDM\Joomla\Componentbuilder\Compiler\Language

@startuml

namespace VDM\Joomla\Componentbuilder\Compiler\Language #LightGreen {


  class Extractor  #Gold {
    + array $langKeys
    + array $langMismatch
    + array $langMatch
    # Config $config
    # Placeholder $placeholder
    # Language $language
    + __construct()
    + engine() : string
  }
}


@enduml

VDM Joomla Componentbuilder Compiler Library

namespace VDM\Joomla\Componentbuilder\Compiler\Library

@startuml

namespace VDM\Joomla\Componentbuilder\Compiler\Library #LightGreen {


  class Data  #Gold {
    # Config $config
    # Registry $registry
    # Customcode $customcode
    # Gui $gui
    # FieldData $field
    # Filesfolders $filesFolders
    # \JDatabaseDriver $db
    + __construct()
    + get() : object|bool
  }

  class Structure  #Gold {
    # Config $config
    # Registry $registry
    # EventInterface $event
    # Component $component
    # Content $content
    # Counter $counter
    # Paths $paths
    # Folder $folder
    # File $file
    + __construct()
    + build() : void
  }
}


@enduml

VDM Joomla Componentbuilder Compiler Model

namespace VDM\Joomla\Componentbuilder\Compiler\Model

@startuml

namespace VDM\Joomla\Componentbuilder\Compiler\Model #LightGreen {


  class Adminviews  #Gold {
    # Adminview $admin
    # Registry $registry
    # Config $config
    + __construct()
    + set() : void
  }

  class Ajaxadmin  #Gold {
    # array $guiMapper
    # Config $config
    # Registry $registry
    # Dispenser $dispenser
    + __construct()
    + set() : void
  }

  class Ajaxcustomview  #Gold {
    # array $guiMapper
    # Config $config
    # Dispenser $dispenser
    + __construct()
    + set() : void
  }

  class Conditions  #Gold {
    # TypeName $typeName
    # FieldName $fieldName
    + __construct()
    + set() : void
  }

  class Createdate  #Gold {
    + get() : string
  }

  class Cssadminview  #Gold {
    # array $areas
    # Dispenser $dispenser
    + __construct()
    + set() : void
  }

  class Csscustomview  #Gold {
    # array $areas
    # Customcode $customcode
    + __construct()
    + set() : void
  }

  class Customadminviews  #Gold {
    # Customview $customadmin
    # Config $config
    + __construct()
    + set() : void
  }

  class Customalias  #Gold {
    # Registry $registry
    # FieldName $fieldName
    + __construct()
    + set() : void
  }

  class Custombuttons  #Gold {
    # array $areas
    # array $guiMapper
    # Customcode $customcode
    # Gui $gui
    # Templatelayout $templateLayout
    + __construct()
    + set() : void
  }

  class Customimportscripts  #Gold {
    # array $areas
    # array $guiMapper
    # Dispenser $dispenser
    + __construct()
    + set() : void
  }

  class Customtabs  #Gold {
    # Config $config
    # Registry $registry
    # Language $language
    # Placeholder $placeholder
    # Customcode $customcode
    + __construct()
    + set() : void
  }

  class Dynamicget  #Gold {
    # array $jointer
    # array $operator
    # array $guiMapper
    # Config $config
    # Registry $registry
    # Customcode $customcode
    # Gui $gui
    # Placeholder $placeholder
    # Selection $selection
    + __construct()
    + set() : void
  }

  class Fields  #Gold {
    # Config $config
    # Registry $registry
    # HistoryInterface $history
    # Customcode $customcode
    # Field $field
    # FieldName $fieldName
    # UpdateSql $updateSql
    # CMSApplication $app
    + __construct()
    + set() : void
  }

  class Filesfolders  #Gold {
    # array $keys
    + set() : void
  }

  class Historyadminview  #Gold {
    # Config $config
    # HistoryInterface $history
    # Updatesql $updatesql
    + __construct()
    + set() : void
  }

  class Historycomponent  #Gold {
    # Config $config
    # HistoryInterface $history
    # Updatesql $updatesql
    + __construct()
    + set() : void
    - setAdminView() : void
    - setComponent() : void
  }

  class Javascriptadminview  #Gold {
    # array $scripter
    # array $guiMapper
    # Dispenser $dispenser
    + __construct()
    + set() : void
  }

  class Javascriptcustomview  #Gold {
    # array $areas
    # array $guiMapper
    # Customcode $customcode
    # Gui $gui
    + __construct()
    + set() : void
  }

  class Joomlamodules  #Gold {
    # Module $module
    + __construct()
    + set() : void
  }

  class Joomlaplugins  #Gold {
    # Plugin $plugin
    + __construct()
    + set() : void
  }

  class Libraries  #Gold {
    # Config $config
    # Registry $registry
    # Library $library
    + __construct()
    + set() : void
  }

  class Linkedviews  #Gold {
    # Registry $registry
    + __construct()
    + set() : void
  }

  class Loader  #Gold {
    # Config $config
    # Registry $registry
    + __construct()
    + set() : void
    + uikit() : void
    # getFootableScripts() : bool
    # getGetModule() : bool
    # getGoogleChart() : bool
  }

  class Modifieddate  #Gold {
    # array $last
    + get() : string
    # getDate() : int
    # getModified() : int
    # getKey() : string
  }

  class Mysqlsettings  #Gold {
    # Config $config
    # Registry $registry
    + __construct()
    + set() : void
  }

  class Permissions  #Gold {
    + set() : void
  }

  class Phpadminview  #Gold {
    # array $areas
    # array $guiMapper
    # Dispenser $dispenser
    # Templatelayout $templateLayout
    + __construct()
    + set() : void
  }

  class Phpcustomview  #Gold {
    # array $areas
    # array $guiMapper
    # Customcode $customcode
    # Gui $gui
    # Loader $loader
    # Templatelayout $templateLayout
    + __construct()
    + set() : void
  }

  class Relations  #Gold {
    # Config $config
    # Registry $registry
    # Language $language
    # Customcode $customcode
    + __construct()
    + set() : void
  }

  class Siteviews  #Gold {
    # Customview $site
    # Config $config
    + __construct()
    + set() : void
  }

  class Sql  #Gold {
    # Dispenser $dispenser
    # Sqldump $dump
    + __construct()
    + set() : void
  }

  class Sqldump  #Gold {
    # Registry $registry
    # \JDatabaseDriver $db
    + __construct()
    + get() : ?string
    # escape() : string|array
  }

  class Sqltweaking  #Gold {
    # Registry $registry
    + __construct()
    + set() : void
    # tweak() : void
  }

  class Tabs  #Gold {
    + set() : void
  }

  class Updateserver  #Gold {
    + set() : void
    # changelog() : void
  }

  class Updatesql  #Gold {
    # array $name
    # Registry $registry
    + __construct()
    + set() : void
    # add() : void
    # name() : string
  }

  class Whmcs  #Gold {
    + set() : void
  }
}


@enduml

VDM Joomla Componentbuilder Compiler Placeholder

namespace VDM\Joomla\Componentbuilder\Compiler\Placeholder

@startuml

namespace VDM\Joomla\Componentbuilder\Compiler\Placeholder #LightGreen {


  class Reverse  #Gold {
    # Config $config
    # Placeholder $placeholder
    # Language $language
    # Extractor $extractor
    # Power $power
    + __construct()
    + engine() : string
    # setReverse() : string
    # reverseSuperPowers() : string
    # getReversePower() : ?array
    # reverseLanguage() : string
    # reverseCustomCode() : string
  }
}


@enduml

VDM Joomla Componentbuilder Compiler Power

namespace VDM\Joomla\Componentbuilder\Compiler\Power

@startuml

namespace VDM\Joomla\Componentbuilder\Compiler\Power #LightGreen {


  class Extractor << (F,LightGreen) >> #Green {
    # array $powers
    # \JDatabaseDriver $db
    + __construct()
    + get_() : ?array
    + get() : ?array
    + reverse() : ?array
    + search() : void
    # load() : void
    # map() : ?array
    # filter() : ?array
    # namespaces() : ?array
  }

  class Injector << (F,LightGreen) >> #Green {
    # Power $power
    # Extractor $extractor
    # Parser $parser
    # Placeholder $placeholder
    # array $map
    # array $useStatements
    # array $traits
    + __construct()
    + power() : string
    # update() : string
    # inspect() : ?string
    # getName() : ?string
    # getUniqueName() : string
    # removeLastSpace() : string
    # addUseStatements() : string
    # addLines() : string
    # addLinesAfterDefinedLine() : string
  }

  class Parser << (F,LightGreen) >> #Green {
    + code() : array
    + getClassCode() : ?string
    + getClassLicense() : ?string
    + getUseStatements() : ?array
    + getTraits() : ?array
    - properties() : ?array
    - methods() : ?array
    - extractDocBlock() : ?string
    - extractFunctionArgumentDetails() : ?array
    - extractReturnType() : ?string
    - extractArgTypesFromComment() : ?array
    - extractArgTypesArguments() : ?array
    - extractReturnTypeFromComment() : ?string
    - extractSinceVersion() : ?string
    - extractDeprecatedVersion() : ?string
    - removeWhiteSpaceFromComment() : string
    - mergeArgumentTypes() : array
  }

  class Autoloader  #Gold {
    # Power $power
    # Config $config
    # Content $content
    # string $helper
    + __construct()
    + set() : void
    - loadPluginAutoloader() : bool
    - loadHelperAutoloader() : bool
    - loadSiteAutoloader() : bool
    - getPluginAutoloader() : string
    - getHelperAutoloader() : string
    - getBLockSiteLoading() : ?string
    - getAutoloader() : ?string
    - getComposer() : ?string
  }

  class Infusion  #Gold {
    # Config $config
    # Power $power
    # Content $content
    # Autoloader $autoloader
    # Parser $parser
    # RepoReadme $reporeadme
    # ReposReadme $reposreadme
    # Placeholder $placeholder
    # Event $event
    # array $linker
    + __construct()
    + set() : void
    - parsePowers() : void
    - setSuperPowers() : void
    - setPowers() : void
    - index() : string
    - code() : string
    - raw() : string
    - linker() : string
  }

  class Plantuml  #Gold {
    + namespaceDiagram() : string
    + classBasicDiagram() : string
    + classDetailedDiagram() : string
    - generatePropertiesPlantUML() : string
    - generateDetailedMethodsPlantUML() : array
    - generateBasicMethodsPlantUML() : string
    - generateMethodArgumentsAndNotes() : array
    - generateMethodNotes() : array
    - generateNotesPlantUML() : string
    - getAccessSign() : string
    - getClassTypeLable() : string
    - getClassTypeTag() : string
    - getClassColor() : string
    - getNamespaceColor() : string
  }

  class Structure  #Gold {
    # array $htaccess
    # Power $power
    # Config $config
    # Registry $registry
    # EventInterface $event
    # Counter $counter
    # Paths $paths
    # Folder $folder
    # File $file
    # Files $files
    # CMSApplication $app
    + __construct()
    + build() : void
    - createFile() : void
    - setHtaccess() : void
    - setDynamicFolders() : void
    - setSuperPowerDetails() : void
    - setSuperPowerFiles() : void
  }
}


@enduml

VDM Joomla Componentbuilder Compiler Service

namespace VDM\Joomla\Componentbuilder\Compiler\Service

@startuml

namespace VDM\Joomla\Componentbuilder\Compiler\Service #LightGreen {


  class Adminview  #Gold {
    + register() : void
    + getAdminviewData() : AdminviewData
  }

  class Builder  #Gold {
    + register() : void
    + getMysql() : Mysql
  }

  class Compiler  #Gold {
    + register() : void
    + getConfig() : Config
    + getRegistry() : Registry
    + getTable() : Table
  }

  class Component  #Gold {
    + register() : void
    + getComponent() : CompilerComponent
    + getSettings() : Settings
    + getDashboard() : Dashboard
    + getPlaceholder() : Placeholder
    + getData() : Data
    + getStructure() : Structure
    + getStructuresingle() : Structuresingle
    + getStructuremultiple() : Structuremultiple
  }

  class Customcode  #Gold {
    + register() : void
    + getCustomcode() : CustomcodeInterface
    + getExternal() : External
    + getGui() : Gui
    + getHash() : Hash
    + getLockBase() : LockBase
    + getDispenser() : Dispenser
    + getPaths() : Paths
    + getExtractor() : Extractor
  }

  class Customview  #Gold {
    + register() : void
    + getCustomviewData() : CustomviewData
    + getDynamicgetData() : DynamicgetData
    + getDynamicgetSelection() : DynamicgetSelection
  }

  class Database  #Gold {
    + register() : void
    + getLoad() : Load
    + getInsert() : Insert
    + getUpdate() : Update
  }

  class Event  #Gold {
    # $currentVersion
    + register() : void
    + getEvent() : EventInterface
    + getJ3Event() : J3Event
  }

  class Extension  #Gold {
    # $targetVersion
    + register() : void
    + getJ3ExtensionInstallScript() : J3InstallScript
    + getExtensionInstallScript() : GetScriptInterface
  }

  class Field  #Gold {
    # $targetVersion
    + register() : void
    + getField() : CompilerField
    + getData() : Data
    + getValidation() : Validation
    + getJ3CoreValidation() : J3CoreValidation
    + getCoreValidation() : CoreValidationInterface
    + getCustomcode() : Customcode
    + getFieldName() : Name
    + getFieldTypeName() : TypeName
    + getFieldUniqueName() : UniqueName
    + getFieldDatabaseName() : DatabaseName
  }

  class History  #Gold {
    # $currentVersion
    + register() : void
    + getHistory() : HistoryInterface
    + getJ3History() : J3History
  }

  class Joomlamodule  #Gold {
    + register() : void
    + getData() : Data
    + getStructure() : Structure
  }

  class Joomlaplugin  #Gold {
    + register() : void
    + getData() : Data
    + getStructure() : Structure
  }

  class Language  #Gold {
    + register() : void
    + getLanguage() : CompilerLanguage
    + getLanguageExtractor() : Extractor
  }

  class Library  #Gold {
    + register() : void
    + getData() : Data
    + getStructure() : Structure
  }

  class Mapper  #Gold {
    + register() : void
    + getContent() : Content
  }

  class Model  #Gold {
    + register() : void
    + getModelJoomlaplugins() : Joomlaplugins
    + getModelJoomlamodules() : Joomlamodules
    + getModelHistorycomponent() : Historycomponent
    + getModelCustomadminviews() : Customadminviews
    + getModelAjaxcustomview() : Ajaxcustomview
    + getModelJavascriptcustomview() : Javascriptcustomview
    + getModelCsscustomview() : Csscustomview
    + getModelPhpcustomview() : Phpcustomview
    + getModelDynamicget() : Dynamicget
    + getModelLibraries() : Libraries
    + getModelSiteviews() : Siteviews
    + getModelPermissions() : Permissions
    + getModelHistoryadminview() : Historyadminview
    + getModelMysqlsettings() : Mysqlsettings
    + getModelSql() : Sql
    + getModelCustomalias() : Customalias
    + getModelAjaxadmin() : Ajaxadmin
    + getModelCustomimportscripts() : Customimportscripts
    + getModelCustombuttons() : Custombuttons
    + getModelLoader() : Loader
    + getModelPhpadminview() : Phpadminview
    + getModelCssadminview() : Cssadminview
    + getModelJavascriptadminview() : Javascriptadminview
    + getModelLinkedviews() : Linkedviews
    + getModelRelations() : Relations
    + getModelConditions() : Conditions
    + getModelFields() : Fields
    + getModelUpdatesql() : Updatesql
    + getModelTabs() : Tabs
    + getModelCustomtabs() : Customtabs
    + getModelAdminviews() : Adminviews
    + getModelSqltweaking() : Sqltweaking
    + getModelSqldump() : Sqldump
    + getModelWhmcs() : Whmcs
    + getModifieddate() : Modifieddate
    + getCreatedate() : Createdate
    + getUpdateserver() : Updateserver
    + getModelFilesfolders() : Filesfolders
    + getServerLoad() : ServerLoad
  }

  class Placeholder  #Gold {
    + register() : void
    + getPlaceholder() : CompilerPlaceholder
    + getPlaceholderReverse() : Reverse
  }

  class Power  #Gold {
    + register() : void
    + getPowers() : Powers
    + getSuperpower() : Superpower
    + getGrep() : Grep
    + getAutoloader() : Autoloader
    + getInfusion() : Infusion
    + getStructure() : Structure
    + getParser() : Parser
    + getPlantuml() : Plantuml
    + getRepoReadme() : RepoReadme
    + getReposReadme() : ReposReadme
    + getExtractor() : Extractor
    + getInjector() : Injector
    + getModel() : Model
    + getInsert() : Insert
    + getUpdate() : Update
  }

  class Templatelayout  #Gold {
    + register() : void
    + getTemplatelayoutData() : TemplatelayoutData
    + getAliasData() : AliasData
  }

  class Utilities  #Gold {
    + register() : void
    + getFolder() : Folder
    + getFile() : File
    + getCounter() : Counter
    + getPaths() : Paths
    + getFiles() : Files
    + getConstantpaths() : Constantpaths
    + getDynamicpath() : Dynamicpath
    + getPathfix() : Pathfix
    + getStructure() : Structure
  }
}


@enduml

VDM Joomla Componentbuilder Compiler Templatelayout

namespace VDM\Joomla\Componentbuilder\Compiler\Templatelayout

@startuml

namespace VDM\Joomla\Componentbuilder\Compiler\Templatelayout #LightGreen {


  class Data  #Gold {
    # Config $config
    # Registry $registry
    # Aliasdata $alias
    + __construct()
    + set() : bool
  }
}


@enduml

VDM Joomla Componentbuilder Compiler Utilities

namespace VDM\Joomla\Componentbuilder\Compiler\Utilities

@startuml

namespace VDM\Joomla\Componentbuilder\Compiler\Utilities #LightGreen {


  abstract FieldHelper  #Orange {
    + {static} check() : bool
  }

  abstract Indent  #Orange {
    + {static} _() : string
    - {static} indent() : string
    - {static} init() : void
  }

  abstract Line  #Orange {
    - static $add
    + {static} _() : string
    - {static} add() : bool
    - {static} init() : void
  }

  abstract Placefix  #Orange {
    + {static} _() : string
    + {static} b() : string
    + {static} d() : string
    + {static} _h() : string
    + {static} h() : string
  }

  abstract Unique  #Orange {
    + {static} get() : string
    + {static} code() : string
  }

  class Counter  #Gold {
    + int $folder
    + int $file
    + int $page
    + int $line
    + int $field
    # int $seconds
    # float $actualSeconds
    # int $folderSeconds
    # int $fileSeconds
    # int $lineSeconds
    # float $secondsDebugging
    # float $secondsPlanning
    # float $secondsMapping
    # float $secondsOffice
    # int $totalHours
    # int $debuggingHours
    # int $planningHours
    # int $mappingHours
    # int $officeHours
    # int $actualTotalHours
    # int $actualHoursSpent
    # int $actualDaysSpent
    # int $totalDays
    # int $actualTotalDays
    # float $projectWeekTime
    # float $projectMonthTime
    # float $start
    # float $end
    # float $timer
    # Content $content
    + __construct()
    + start() : void
    + end() : void
    + set() : void
    # calculate() : void
  }

  class Dynamicpath  #Gold {
    # Placeholder $placeholder
    # array $paths
    + __construct()
    + update() : string
  }

  class File  #Gold {
    # Counter $counter
    # Paths $paths
    + __construct()
    + html() : void
    + write() : bool
  }

  class Folder  #Gold {
    # Counter $counter
    # File $file
    + __construct()
    + create() : void
    + remove() : bool
  }

  class Pathfix  #Gold {
    + set() : void
  }

  class Paths  #Gold {
    # Config $config
    # Component $component
    + __construct()
    + __get() : string
    # key() : string
    - setTemplatePath() : void
    - setComponentSalesName() : void
    - setComponentBackupName() : void
    - setComponentFolderName() : void
    - setComponentPath() : void
    - setTemplatePathCustom() : void
  }

  class Structure  #Gold {
    # Settings $settings
    # Paths $paths
    # Counter $counter
    # File $file
    # Files $files
    # CMSApplication $app
    + __construct()
    + build() : bool
    - getFileDetails() : ?array
    - getPath() : ?string
    - getNewName() : string
  }
}


@enduml

VDM Joomla Componentbuilder Power Database

namespace VDM\Joomla\Componentbuilder\Power\Database

@startuml

namespace VDM\Joomla\Componentbuilder\Power\Database #LightGreen {


  class Insert << (F,LightGreen) >> #Green {
    # Model $model
    # Database $database
    + __construct()
    + value() : bool
    + row() : bool
    + rows() : bool
    + item() : bool
    + items() : bool
  }

  class Update << (F,LightGreen) >> #Green {
    # Model $model
    # Database $database
    + __construct()
    + value() : bool
    + row() : bool
    + rows() : bool
    + item() : bool
    + items() : bool
  }
}


@enduml

VDM Joomla Componentbuilder Compiler Builder Update

namespace VDM\Joomla\Componentbuilder\Compiler\Builder\Update

@startuml

namespace VDM\Joomla\Componentbuilder\Compiler\Builder\Update #DeepSkyBlue {


  class Mysql  #Gold {
    # key() : string
  }
}


@enduml

VDM Joomla Componentbuilder Compiler Customcode Extractor

namespace VDM\Joomla\Componentbuilder\Compiler\Customcode\Extractor

@startuml

namespace VDM\Joomla\Componentbuilder\Compiler\Customcode\Extractor #DeepSkyBlue {


  class Paths  #Gold {
    + array $active
    # array $componentPlaceholder
    # Config $config
    # Placeholder $placeholder
    # Customcode $customcode
    # Extractor $extractor
    # \JDatabaseDriver $db
    + __construct()
    # load() : void
    # getModuleIDs() : mixed
    # getModulePath() : mixed
    # getPluginIDs() : mixed
    # getPluginPath() : mixed
  }
}


@enduml

VDM Joomla Componentbuilder Compiler Extension JoomlaThree

namespace VDM\Joomla\Componentbuilder\Compiler\Extension\JoomlaThree

@startuml

namespace VDM\Joomla\Componentbuilder\Compiler\Extension\JoomlaThree #DeepSkyBlue {


  class InstallScript  #Gold {
    # object $extension
    # array $methods
    # array $types
    # array $construct
    # array $install
    # array $update
    # array $uninstall
    # bool $preflightActive
    # bool $postflightActive
    + get() : string
    # build() : string
    # head() : string
    # construct() : string
    # main() : string
    # flight() : string
  }
}


@enduml

VDM Joomla Componentbuilder Compiler Field JoomlaThree

namespace VDM\Joomla\Componentbuilder\Compiler\Field\JoomlaThree

@startuml

namespace VDM\Joomla\Componentbuilder\Compiler\Field\JoomlaThree #DeepSkyBlue {


  class CoreValidation  #Gold {
    # ?array $rules
    # string $path
    + __construct()
    + get() : array
  }
}


@enduml

VDM Joomla Componentbuilder Compiler Interfaces Component

namespace VDM\Joomla\Componentbuilder\Compiler\Interfaces\Component

@startuml

namespace VDM\Joomla\Componentbuilder\Compiler\Interfaces\Component #DeepSkyBlue {


  interface PlaceholderInterface  #Lavender {
    + get() : array
  }
}


@enduml

VDM Joomla Componentbuilder Compiler Interfaces Customcode

namespace VDM\Joomla\Componentbuilder\Compiler\Interfaces\Customcode

@startuml

namespace VDM\Joomla\Componentbuilder\Compiler\Interfaces\Customcode #DeepSkyBlue {


  interface DispenserInterface  #Lavender {
    + set() : bool
    + get() : mixed
  }

  interface ExternalInterface  #Lavender {
    + set() : string
  }

  interface ExtractorInterface  #Lavender {
    + run() : void
  }

  interface GuiInterface  #Lavender {
    + set() : string
    + search() : void
  }

  interface LockBaseInterface  #Lavender {
    + set() : string
  }
}


@enduml

VDM Joomla Componentbuilder Compiler Interfaces Extension

namespace VDM\Joomla\Componentbuilder\Compiler\Interfaces\Extension

@startuml

namespace VDM\Joomla\Componentbuilder\Compiler\Interfaces\Extension #DeepSkyBlue {


  interface InstallInterface  #Lavender {
    + getOfficialName() : string
    + getClassName() : string
    + getInstallerClassName() : string
  }
}


@enduml

VDM Joomla Componentbuilder Compiler Interfaces Field

namespace VDM\Joomla\Componentbuilder\Compiler\Interfaces\Field

@startuml

namespace VDM\Joomla\Componentbuilder\Compiler\Interfaces\Field #DeepSkyBlue {


  interface CoreValidationInterface  #Lavender {
    + get() : array
  }
}


@enduml

VDM Joomla Componentbuilder Compiler Power Repo

namespace VDM\Joomla\Componentbuilder\Compiler\Power\Repo

@startuml

namespace VDM\Joomla\Componentbuilder\Compiler\Power\Repo #DeepSkyBlue {


  class Readme  #Gold {
    # Power $power
    # Plantuml $plantuml
    + __construct()
    + get() : string
  }
}


@enduml

VDM Joomla Componentbuilder Compiler Power Repos

namespace VDM\Joomla\Componentbuilder\Compiler\Power\Repos

@startuml

namespace VDM\Joomla\Componentbuilder\Compiler\Power\Repos #DeepSkyBlue {


  class Readme  #Gold {
    # Power $power
    # Plantuml $plantuml
    + __construct()
    + get() : string
    - readmeBuilder() : string
    - readmeModel() : string
    - generateIndex() : string
    - generateDiagramBucket() : string
    - defineTypeOrder() : array
    - sortClasses() : void
    - compareNamespace() : int
    - compareType() : int
    - compareName() : int
    - generateNamespaceDiagram() : string
    - indexLinkPower() : string
    - linkPowerRepo() : string
    - linkPowerCode() : string
    - linkPowerSettings() : string
    - linkPowerGuid() : string
  }
}


@enduml

     ██╗ ██████╗  ██████╗ ███╗   ███╗██╗      █████╗
     ██║██╔═══██╗██╔═══██╗████╗ ████║██║     ██╔══██╗
     ██║██║   ██║██║   ██║██╔████╔██║██║     ███████║
██   ██║██║   ██║██║   ██║██║╚██╔╝██║██║     ██╔══██║
╚█████╔╝╚██████╔╝╚██████╔╝██║ ╚═╝ ██║███████╗██║  ██║
 ╚════╝  ╚═════╝  ╚═════╝ ╚═╝     ╚═╝╚══════╝╚═╝  ╚═╝
 ██████╗ ██████╗ ███╗   ███╗██████╗  ██████╗ ███╗   ██╗███████╗███╗   ██╗████████╗
██╔════╝██╔═══██╗████╗ ████║██╔══██╗██╔═══██╗████╗  ██║██╔════╝████╗  ██║╚══██╔══╝
██║     ██║   ██║██╔████╔██║██████╔╝██║   ██║██╔██╗ ██║█████╗  ██╔██╗ ██║   ██║
██║     ██║   ██║██║╚██╔╝██║██╔═══╝ ██║   ██║██║╚██╗██║██╔══╝  ██║╚██╗██║   ██║
╚██████╗╚██████╔╝██║ ╚═╝ ██║██║     ╚██████╔╝██║ ╚████║███████╗██║ ╚████║   ██║
 ╚═════╝ ╚═════╝ ╚═╝     ╚═╝╚═╝      ╚═════╝ ╚═╝  ╚═══╝╚══════╝╚═╝  ╚═══╝   ╚═╝
██████╗ ██╗   ██╗██╗██╗     ██████╗ ███████╗██████╗
██╔══██╗██║   ██║██║██║     ██╔══██╗██╔════╝██╔══██╗
██████╔╝██║   ██║██║██║     ██║  ██║█████╗  ██████╔╝
██╔══██╗██║   ██║██║██║     ██║  ██║██╔══╝  ██╔══██╗
██████╔╝╚██████╔╝██║███████╗██████╔╝███████╗██║  ██║
╚═════╝  ╚═════╝ ╚═╝╚══════╝╚═════╝ ╚══════╝╚═╝  ╚═╝

Build with Joomla Component Builder