/** * Find the internal and external target tables (tmp versions) * * @param $intPid * @return array */ public static function findTargetTables($intPid) { $objJob = JobModel::findByPk($intPid); $arrTargets = Helper::arrayOnly($objJob->targetTables); $objSteps = StepModel::findBy(array('tl_convertx_step.pid=?', 'tl_convertx_step.published=?', 'tl_convertx_step.action=?'), array($intPid, 1, 'converter')); if (!$objSteps) { return $arrTargets; } while ($objSteps->next()) { $objConverter = ConverterModel::findByPk($objSteps->converter); switch ($objConverter->targetType) { case 'InternalTable': // table names for internal data $arrTargets[] = 'cvx_' . $objConverter->targetTable; break; default: // tmp tables for external data get a name based on the converter id $arrTargets[] = 'cvx_' . $objConverter->id; break; } } return array_unique($arrTargets); }
/** * Finalize the table * * @param $strTarget * @param $objRun * @return bool */ public static function finalize($strTarget, $objRun) { $objConverter = ConverterModel::findOneBy('targetTable', $strTarget); $objJob = JobModel::findByPk($objRun->pid); // maybe there are tables not bound on a converter if (!$objConverter) { // do not finalize on simulation if ($objRun->simulation) { // drop tmp table $Database = Database::getInstance(); $Database->prepare("DROP TABLE IF EXISTS cvx_" . $strTarget)->execute(); return true; } // ----------------------------------------- // replace the original table return self::replaceByWorkingTable('cvx_' . $strTarget, $objRun->begin, $objJob->keepVersions, $objRun->simulation); } // do not finalize on simulation if ($objRun->simulation) { // drop tmp table $Database = Database::getInstance(); $Database->prepare("DROP TABLE IF EXISTS cvx_" . $objConverter->targetTable)->execute(); return true; } // ----------------------------------------- // replace the original table return self::replaceByWorkingTable('cvx_' . $objConverter->targetTable, $objRun->begin, $objJob->keepVersions, $objRun->sim); }
/** * Delete older logs, keep defined versions * * @param $objRun */ public static function deleteLogs($objRun) { // get job data $objJob = JobModel::findByPk($objRun->pid); $objRuns = RunModel::findBy('pid', $objRun->pid, array('order' => 'end DESC', 'offset' => $objJob->keepLogs)); // delete older logs if ($objRuns) { Database::getInstance()->prepare("DELETE FROM tl_convertx_run WHERE id IN (" . implode(',', $objRuns->fetchEach('id')) . ")")->execute(); Database::getInstance()->prepare("DELETE FROM tl_convertx_log WHERE pid IN (" . implode(',', $objRuns->fetchEach('id')) . ")")->execute(); } }