Refactor initialization flow to accommodate future scalability and integration with all designated areas. Refactor the Creator Builders class. Refactor the FieldString and FieldXML classes.
148 lines
3.8 KiB
PHP
148 lines
3.8 KiB
PHP
<?php
|
|
/**
|
|
* @package Joomla.Component.Builder
|
|
*
|
|
* @created 4th September, 2022
|
|
* @author Llewellyn van der Merwe <https://dev.vdm.io>
|
|
* @git Joomla Component Builder <https://git.vdm.dev/joomla/Component-Builder>
|
|
* @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.
|
|
* @license GNU General Public License version 2 or later; see LICENSE.txt
|
|
*/
|
|
|
|
namespace VDM\Joomla\Componentbuilder\Snippet;
|
|
|
|
|
|
use Joomla\Registry\Registry as JoomlaRegistry;
|
|
use Joomla\CMS\Factory as JoomlaFactory;
|
|
use VDM\Joomla\Utilities\GetHelper;
|
|
use VDM\Joomla\Utilities\StringHelper;
|
|
use VDM\Joomla\Componentbuilder\Utilities\RepoHelper;
|
|
use VDM\Joomla\Componentbuilder\Abstraction\ComponentConfig;
|
|
|
|
|
|
/**
|
|
* Compiler Configurations
|
|
*
|
|
* All these functions are accessed via the direct name without the get:
|
|
* example: $this->component_code_name calls: $this->getComponentcodename()
|
|
*
|
|
* All values once called are cached, yet can be updated directly:
|
|
* example: $this->component_code_name = 'new_code_name'; // be warned!
|
|
*
|
|
* @since 5.1.1
|
|
*/
|
|
class Config extends ComponentConfig
|
|
{
|
|
/**
|
|
* The Global Joomla Configuration
|
|
*
|
|
* @var JoomlaRegistry
|
|
* @since 5.1.1
|
|
*/
|
|
protected JoomlaRegistry $config;
|
|
|
|
/**
|
|
* Constructor
|
|
*
|
|
* @param Input|null $input Input
|
|
* @param Registry|null $params The component parameters
|
|
* @param Registry|null $config The Joomla configuration
|
|
*
|
|
* @throws \Exception
|
|
* @since 5.1.1
|
|
*/
|
|
public function __construct(?Input $input = null, ?JoomlaRegistry $params = null, ?JoomlaRegistry $config = null)
|
|
{
|
|
parent::__construct($input, $params);
|
|
|
|
$this->config = $config ?: JoomlaFactory::getConfig();
|
|
}
|
|
|
|
/**
|
|
* get Gitea Username
|
|
*
|
|
* @return string the access token
|
|
* @since 5.1.1
|
|
*/
|
|
protected function getGiteausername(): ?string
|
|
{
|
|
return $this->params->get('gitea_username');
|
|
}
|
|
|
|
/**
|
|
* get Gitea Access Token
|
|
*
|
|
* @return string the access token
|
|
* @since 5.1.1
|
|
*/
|
|
protected function getGiteatoken(): ?string
|
|
{
|
|
return $this->params->get('gitea_token');
|
|
}
|
|
|
|
/**
|
|
* Get snippet core organisation
|
|
*
|
|
* @return string The snippet core organisation
|
|
* @since 5.1.1
|
|
*/
|
|
protected function getSnippetcoreorganisation(): string
|
|
{
|
|
// the VDM default organisation is [joomla]
|
|
$organisation = 'joomla';
|
|
|
|
return $this->params->get('snippet_core_organisation', $organisation);
|
|
}
|
|
|
|
/**
|
|
* Get Snippet init repos
|
|
*
|
|
* @return array The init repositories on Gitea
|
|
* @since 5.1.1
|
|
*/
|
|
protected function getSnippetinitrepos(): array
|
|
{
|
|
// some defaults repos we need by JCB
|
|
$repos = [];
|
|
// get the users own power repo (can overwrite all)
|
|
if (!empty($this->gitea_username))
|
|
{
|
|
$repos[$this->gitea_username . '.snippet'] = (object) ['organisation' => $this->gitea_username, 'repository' => 'snippet', 'read_branch' => 'master'];
|
|
}
|
|
$repos[$this->snippet_core_organisation . '.snippet'] = (object) ['organisation' => $this->snippet_core_organisation, 'repository' => 'snippet', 'read_branch' => 'master'];
|
|
|
|
return $repos;
|
|
}
|
|
|
|
/**
|
|
* Get joomla snippet approved paths
|
|
*
|
|
* @return array The approved paths to the repositories on Gitea
|
|
* @since 5.1.1
|
|
*/
|
|
protected function getApprovedjoomlapaths(): array
|
|
{
|
|
// some defaults repos we need by JCB
|
|
$approved = $this->snippet_init_repos;
|
|
|
|
$paths = RepoHelper::get(5); // Snippet = 5
|
|
|
|
if ($paths !== null)
|
|
{
|
|
foreach ($paths as $path)
|
|
{
|
|
$owner = $path->organisation ?? null;
|
|
$repo = $path->repository ?? null;
|
|
if ($owner !== null && $repo !== null)
|
|
{
|
|
// we make sure to get only the objects
|
|
$approved = ["{$owner}.{$repo}" => $path] + $approved;
|
|
}
|
|
}
|
|
}
|
|
|
|
return array_values($approved);
|
|
}
|
|
}
|
|
|