示例#1
0
 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);
             }
         }
     }
 }