issues: enabled resolving without explicitely creating a resolver (by using producer method), old resolvers are still working. Created example for "self-resolving" issue: AbbrecherAktiv

This commit is contained in:
Alexei Karpenko
2024-06-26 22:46:36 +02:00
parent 155d2f9651
commit 32e1e487a9
8 changed files with 245 additions and 166 deletions
+18 -7
View File
@@ -5,18 +5,18 @@
*/
abstract class IssueResolver_Controller extends JOB_Controller
{
protected $_codeLibMappings;
// mappings in form fehlercode -> resolverlibrary name, fehler which have explicit resolver class defined
protected $_codeLibMappings = [];
// mappings in form fehlercode -> producer library name, fehler which are resolved the same way they are produced
protected $_codeProducerLibMappings = [];
public function __construct()
{
parent::__construct();
// pass extension name if calling from extension
$extensionName = isset($this->_extensionName) ? $this->_extensionName : null;
$this->load->model('system/Issue_model', 'IssueModel');
$this->load->library('issues/PlausicheckResolverLib', ['extensionName' => $extensionName]);
}
/**
@@ -24,14 +24,25 @@ abstract class IssueResolver_Controller extends JOB_Controller
*/
public function run()
{
$this->load->library(
'issues/PlausicheckResolverLib',
[
'extensionName' => $this->_extensionName ?? null,
'codeLibMappings' => $this->_codeLibMappings,
'codeProducerLibMappings' => $this->_codeProducerLibMappings
]
);
$this->logInfo("Issue resolve job started");
// load open issues with given errorcodes
$openIssuesRes = $this->IssueModel->getOpenIssues(array_keys($this->_codeLibMappings));
$openIssuesRes = $this->IssueModel->getOpenIssues(
array_merge(array_keys($this->_codeLibMappings), array_keys($this->_codeProducerLibMappings))
);
$openIssues = hasData($openIssuesRes) ? getData($openIssuesRes) : [];
$result = $this->plausicheckresolverlib->resolvePlausicheckIssues($this->_codeLibMappings, $openIssues);
$result = $this->plausicheckresolverlib->resolvePlausicheckIssues($openIssues);
// log if error, or log info if inserted new issue
foreach ($result->errors as $error) $this->logError($error);
@@ -5,25 +5,19 @@
*/
abstract class PlausiIssueProducer_Controller extends JOB_Controller
{
protected $_fehlerLibMappings;
protected $_fehlerLibMappings = [];
protected $_app;
public function __construct($app = null)
{
parent::__construct();
// pass extension name if calling from extension
$extensionName = isset($this->_extensionName) ? $this->_extensionName : null;
// load libraries
$this->load->library('issues/PlausicheckProducerLib', array('extensionName' => $extensionName, 'app' => $this->_app));
}
protected function producePlausicheckIssues($params)
{
$this->load->library(
'issues/PlausicheckProducerLib',
['extensionName' => $this->_extensionName ?? null, 'app' => $this->_app, 'fehlerLibMappings' => $this->_fehlerLibMappings]
);
$this->logInfo("Plausicheck issue producer job started");
$result = $this->plausicheckproducerlib->producePlausicheckIssues($this->_fehlerLibMappings, $params);
$result = $this->plausicheckproducerlib->producePlausicheckIssues($params);
// log if error, or log info if inserted new issue
foreach ($result->errors as $error) $this->logError($error);