load->model('system/Issue_model', 'IssueModel'); $this->load->library('IssuesLib'); } /** * Initializes issue resolution. */ public function run() { $this->logInfo("Issue resolve job started"); // load open issues with given errorcodes $openIssuesRes = $this->IssueModel->getOpenIssues(array_keys($this->_codeLibMappings)); // log error if occured if (isError($openIssuesRes)) { $this->logError(getError($openIssuesRes)); } else { // log info if no data found if (!hasData($openIssuesRes)) { $this->logInfo("No open issues found"); } else { $openIssues = getData($openIssuesRes); foreach ($openIssues as $issue) { if (isset($this->_codeLibMappings[$issue->fehlercode])) { $libName = $this->_codeLibMappings[$issue->fehlercode]; // add person id and oe kurzbz automatically as params, merge it with additional params // decode bewerbung_parameter into assoc array $params = array_merge( array('issue_id' => $issue->issue_id, 'issue_person_id' => $issue->person_id, 'issue_oe_kurzbz' => $issue->oe_kurzbz), isset($issue->behebung_parameter) ? json_decode($issue->behebung_parameter, true) : array() ); // if called from extension (extension name set), path includes extension names, otherwise it is the core library folder $libRootPath = isset($this->_extensionName) ? 'extensions/' . $this->_extensionName . '/' : ''; $issuesLibPath = $libRootPath . self::ISSUES_FOLDER . '/'; $issuesLibFilePath = DOC_ROOT . 'application/' . $libRootPath . 'libraries/' . self::ISSUES_FOLDER . '/' . $libName . '.php'; // check if library file exists if (!file_exists($issuesLibFilePath)) { // log error and continue with next issue if not $this->logError("Issue library file " . $issuesLibFilePath . " does not exist"); continue; } // load library connected to fehlercode $this->load->library( $issuesLibPath . $libName ); $lowercaseLibName = mb_strtolower($libName); // check if method is defined in libary class if (!is_callable(array($this->{$lowercaseLibName}, self::CHECK_ISSUE_RESOLVED_METHOD_NAME))) { // log error and continue with next issue if not $this->logError("Method " . self::CHECK_ISSUE_RESOLVED_METHOD_NAME . " is not defined in library $lowercaseLibName"); continue; } // call the function for checking for issue resolution $issueResolvedRes = $this->{$lowercaseLibName}->{self::CHECK_ISSUE_RESOLVED_METHOD_NAME}($params); if (isError($issueResolvedRes)) { $this->logError(getError($issueResolvedRes)); } else { $issueResolvedData = getData($issueResolvedRes); if ($issueResolvedData === true) { // set issue to resolved if needed $behobenRes = $this->issueslib->setBehoben($issue->issue_id, null); if (isError($behobenRes)) $this->logError(getError($behobenRes)); else $this->logInfo("Issue " . $issue->issue_id . " successfully resolved"); } } } } } } $this->logInfo("Issue resolve job ended"); } }