/** * Labels dor dropdown * @return array */ public static function getTypeLabels() { $labels = array(); $types = ProjectsType::find()->orderBy("sort")->all(); foreach ($types as $type) { $labels[$type->id] = $type->name; } return $labels; }
/** * Save or update project types * @param array $types * @return bool */ public function setTypes($types = array()) { if (empty($types)) { return true; } $_dbItemsIds = $_formItemsIds = array(); //Get all current menu items from database $_dbItemsData = ProjectsType::find()->all(); foreach ($_dbItemsData as $_dbItem) { $_dbItemsIds[] = $_dbItem->id; $_dbItems[$_dbItem->id] = $_dbItem; } foreach ($types['types'] as $type) { //Create new item if (empty($type['id'])) { $_newItem = new ProjectsType(); $_newItem->setAttributes($type, false); $_newItem->save(); $type['id'] = $_newItem->id; $_dbItems[$type['id']] = $_newItem; } $_dbItems[$type['id']]->updateAttributes($type); $_dbItems[$type['id']]->save(); $_formItemsIds[] = $type['id']; } //Check elements for deleting $_deleteItems = array_diff($_dbItemsIds, $_formItemsIds); if (sizeof($_deleteItems) > 0) { ProjectsType::deleteAll(['id' => $_deleteItems]); ProjectsTypeLang::deleteAll(['type_id' => $_deleteItems]); } }