public function saveTagsFromDefaults(\DataContainer $dc) { $arrDefaults = $dc->getDefaults(); $arrDca = $dc->getDca(); if (empty($arrDefaults)) { return false; } foreach ($arrDefaults as $strField => $varDefault) { $arrData = $arrDca['fields'][$strField]; if (!is_array($arrData) || $arrData['inputType'] != 'tag') { continue; } $arrValues = trimsplit(',', $varDefault); $blnTag = false; if (!is_array($arrValues) || empty($arrValues)) { $blnTag = false; } else { $objTags = TagModel::findByIdAndTable($dc->activeRecord->id, $dc->table); $arrSavedTags = array(); if ($objTags !== null) { $arrSavedTags = $objTags->fetchEach('tag'); $blnTag = true; } $arrNewTags = array_diff($arrValues, $arrSavedTags); if (is_array($arrNewTags) && !empty($arrNewTags)) { $blnTag = true; foreach ($arrNewTags as $strTag) { $objModel = new TagModel(); $objModel->tag = $strTag; $objModel->from_table = $dc->table; $objModel->tid = $dc->activeRecord->id; $objModel->save(); } } } $dc->activeRecord->{$strField} = $blnTag; $dc->activeRecord->save(); } }