diff --git a/application/config/lrt.php b/application/config/lrt.php new file mode 100644 index 000000000..504f02d9a --- /dev/null +++ b/application/config/lrt.php @@ -0,0 +1,20 @@ +LogLibJob->setConfigs( + array( + 'dbExecuteUser' => 'LRTs queue system', + 'requestId' => 'LTR' + ) + ); + + // Loads LongRunTaskLib library + $this->load->library('LongRunTaskLib'); + } + + //------------------------------------------------------------------------------------------------------------------ + // Protected methods + + /** + * Get the oldest added LRTs to the queue having status = new + */ + protected function getLRTs() + { + $lrts = $this->longruntasklib->getLRTs(); + + // If an error occurred then log it in database + if (isError($lrts)) $this->logError(getError($lrts)); + + return $lrts; + } + + /** + * + */ + protected function addNewLRTsToQueue($type, $lrts) + { + $result = $this->longruntasklib->addNewLRTsToQueue($type, $lrts); + + // If an error occurred then log it in database + if (isError($result)) $this->logError(getError($result), $type); + + return $result; + } + + /** + * Utility method to generate a job with the given parameters and return it inside an array + * ready to be used by addNewJobsToQueue and updateJobsQueue + */ + protected function generateJobs($status, $input) + { + return JobsQueueLib::generateJobs($status, $input); + } +} + diff --git a/application/libraries/JobsQueueLib.php b/application/libraries/JobsQueueLib.php index 5871a3767..128a08994 100644 --- a/application/libraries/JobsQueueLib.php +++ b/application/libraries/JobsQueueLib.php @@ -2,6 +2,8 @@ if (!defined('BASEPATH')) exit('No direct script access allowed'); +use \stdClass as stdClass; + /** * Library that contains all the needed functionalities to operate with the Jobs Queue System */ @@ -24,12 +26,12 @@ class JobsQueueLib const PROPERTY_END_TIME = 'endtime'; const PROPERTY_ERROR = 'error'; - private $_ci; // CI instance + protected $_ci; // CI instance /** * Constructor */ - public function __construct($authenticate = true) + public function __construct() { // Gets CI instance $this->_ci =& get_instance(); diff --git a/application/libraries/LongRunTaskLib.php b/application/libraries/LongRunTaskLib.php new file mode 100644 index 000000000..4dded363b --- /dev/null +++ b/application/libraries/LongRunTaskLib.php @@ -0,0 +1,66 @@ +_ci->config->load('lrt'); + } + + //------------------------------------------------------------------------------------------------------------------ + // Public methods + + /** + * Get the oldest added LRTs to the queue having status = new + * The maximum number of returned queued LRTs is limited by: + * number of currently running LRTs - maximum allowed number of LRTs for the system + */ + public function getLRTs() + { + // Get all the running LRTs + $runningLrtsResult = $this->getJobsByTypeStatus($this->_ci->config->item(self::CFG_LRT_TYPES)), JobsQueueLib::STATUS_RUNNING); + + if (isError($runningLrtsResult)) return $runningLrtsResult; + + // The number of the currently running LRTs - the maximum LRTs for the system + $max_number_of_lrts = $this->_ci->config->item(self::CFG_LRT_MAX_NUMBER_SYSTEM)) - count(getData($runningLrtsResult)); + + // Get the oldest LRTs added to the queue + return $this->getOldestJobs($this->_ci->config->item(self::CFG_LRT_TYPES)), $max_number_of_lrts); + } + + /** + * + */ + public function addNewLRTsToQueue($type, $lrts) + { + return $this->addNewJobsToQueue($type, $lrts); + } + + //------------------------------------------------------------------------------------------------------------------ + // Public static methods + + /** + * Utility method to generate a LTR with the given parameters and return it inside an array + * ready to be used by addNewLRTsToQueue + */ + public static function generateLtrs($status, $input) + { + return self::generateJobs($status, $input); + } +} + diff --git a/system/dbupdate_3.4.php b/system/dbupdate_3.4.php index 8b6af9f2d..292f9409e 100644 --- a/system/dbupdate_3.4.php +++ b/system/dbupdate_3.4.php @@ -94,6 +94,7 @@ require_once('dbupdate_3.4/71399_dashboard_update_widget_paths.php'); require_once('dbupdate_3.4/71645_studvw_messagetab_ladezeit.php'); require_once('dbupdate_3.4/71566_studienordnungsdokument_neuer_organisationseinheitstyp_programm.php'); require_once('dbupdate_3.4/70376_lohnguide.php'); +require_once('dbupdate_3.4/76203_Asynchrone_Tasks.php'); // *** Pruefung und hinzufuegen der neuen Attribute und Tabellen echo '