Exemple #1
0
 /**
  * Between initialisation and job steps the temp tables are prepared (deletions, raw data import)
  *
  * @param $objRun
  * @return bool
  */
 protected function handleTmpTables($objRun)
 {
     // -----------------------------------------
     // only internal tmp tables can be updated
     if (!is_array($objRun->cleared)) {
         $objRun->cleared = array();
     }
     foreach ($objRun->targets as $strTarget) {
         if (is_numeric(str_replace('cvx_', '', $strTarget)) && !in_array($strTarget, $objRun->cleared)) {
             $arrNew = $objRun->cleared;
             $arrNew[] = $strTarget;
             $objRun->cleared = $arrNew;
             $objRun->save();
         }
     }
     // -----------------------------------------
     // handle raw import and pre-import deletion
     if (array_diff($objRun->sources, $objRun->filled) || array_diff($objRun->targets, $objRun->cleared)) {
         $objJob = JobModel::findByPk($objRun->pid);
         // fill tmp tables with external data
         if (array_diff($objRun->sources, $objRun->filled)) {
             if (count($objRun->filled) == 0) {
                 Tracking::log($objRun->id, $objRun->rootRun, $GLOBALS['TL_LANG']['tl_convertx_job']['fillTemporaryTables']);
             }
             // fill exactly 1 of the temp source tables at a time and reload
             $objFill = ExternalData::fillTable($objRun);
             if (!$objFill) {
                 return self::abort($objRun, array(sprintf($GLOBALS['TL_LANG']['tl_convertx_job']['jobTitle'], $objJob->id, $objJob->title), $GLOBALS['TL_LANG']['tl_convertx_job']['importError']));
             }
             $arrFilled = $objRun->filled;
             $arrFilled[] = 'cvx_' . $objFill . '_source';
             $objRun->filled = $arrFilled;
             $objRun->save();
         }
         // perform deletion routines on tmp target tables
         if (array_diff($objRun->targets, $objRun->cleared)) {
             if (count($objRun->cleared) == 0) {
                 Tracking::log($objRun->id, $objRun->rootRun, $GLOBALS['TL_LANG']['tl_convertx_job']['clearTemporaryTables']);
             }
             // clear exactly 1 of the temp target tables at a time and reload
             $objClear = InternalTable::clearTable($objRun);
             if (!$objClear) {
                 return self::abort($objRun, array(sprintf($GLOBALS['TL_LANG']['tl_convertx_job']['jobTitle'], $objJob->id, $objJob->title), $GLOBALS['TL_LANG']['tl_convertx_job']['deletingError']));
             }
             $arrCleared = $objRun->cleared;
             $arrCleared[] = $objClear;
             $objRun->cleared = $arrCleared;
             $objRun->save();
         }
         if (!array_diff($objRun->sources, $objRun->filled) && !array_diff($objRun->targets, $objRun->cleared)) {
             // determine next step when all temp source tables are filled
             $blnNextStep = true;
         }
     } else {
         // determine next step when all temp source tables are filled
         $blnNextStep = true;
     }
     return $blnNextStep;
 }