コード例 #1
0
ファイル: highloadblock.php プロジェクト: DarneoStudio/bitrix
 public static function onAfterUserTypeAdd($field)
 {
     global $APPLICATION, $USER_FIELD_MANAGER;
     if (preg_match('/^HLBLOCK_(\\d+)$/', $field['ENTITY_ID'], $matches)) {
         $field['USER_TYPE'] = $USER_FIELD_MANAGER->getUserType($field['USER_TYPE_ID']);
         // get entity info
         $hlblock_id = $matches[1];
         $hlblock = HighloadBlockTable::getById($hlblock_id)->fetch();
         if (empty($hlblock)) {
             $APPLICATION->throwException(sprintf('Entity "HLBLOCK_%s" wasn\'t found.', $hlblock_id));
             return false;
         }
         // get usertype info
         $sql_column_type = $USER_FIELD_MANAGER->getUtsDBColumnType($field);
         // create field in db
         $connection = Application::getConnection();
         $sqlHelper = $connection->getSqlHelper();
         $connection->query(sprintf('ALTER TABLE %s ADD %s %s', $sqlHelper->quote($hlblock['TABLE_NAME']), $sqlHelper->quote($field['FIELD_NAME']), $sql_column_type));
         if ($field['MULTIPLE'] == 'Y') {
             // create table for this relation
             $hlentity = static::compileEntity($hlblock);
             $utmEntity = Entity\Base::getInstance(HighloadBlockTable::getUtmEntityClassName($hlentity, $field));
             $utmEntity->createDbTable();
             // add indexes
             $connection->query(sprintf('CREATE INDEX %s ON %s (%s)', $sqlHelper->quote('IX_UTM_HL' . $hlblock['ID'] . '_' . $field['ID'] . '_ID'), $sqlHelper->quote($utmEntity->getDBTableName()), $sqlHelper->quote('ID')));
             $connection->query(sprintf('CREATE INDEX %s ON %s (%s)', $sqlHelper->quote('IX_UTM_HL' . $hlblock['ID'] . '_' . $field['ID'] . '_VALUE'), $sqlHelper->quote($utmEntity->getDBTableName()), $sqlHelper->quote('VALUE')));
         }
         return array('PROVIDE_STORAGE' => false);
     }
     return true;
 }