static function install(array $data) { if (!($statusId = $data['ID']) || !is_string($statusId)) { throw new SystemException('invalid status ID', 0, __FILE__, __LINE__); } if ($languages = $data['LANG']) { unset($data['LANG']); if (!is_array($languages)) { throw new SystemException('invalid status LANG', 0, __FILE__, __LINE__); } } $data['TYPE'] = static::TYPE; // install status if it is not installed if (!StatusTable::getById($statusId)->fetch()) { StatusTable::add($data); } // install status languages if they are not installed if ($languages) { $installedLanguages = array(); $result = StatusLangTable::getList(array('select' => array('LID'), 'filter' => array('=STATUS_ID' => $statusId))); while ($row = $result->fetch()) { $installedLanguages[$row['LID']] = true; } foreach ($languages as $language) { if (!is_array($language)) { throw new SystemException('invalid status language', 0, __FILE__, __LINE__); } if (!$installedLanguages[$language['LID']]) { $language['STATUS_ID'] = $statusId; StatusLangTable::add($language); } } } }