''TimeMark DESCClassID = :AClassIDTimeMark DESCClassID = :AClassID AND AuditObjectID = :AObjectIDTimeMark DESCUserID = :AUserIDTimeMark DESC(:FromDate IS NULL OR TimeMark >= :FromDate) AND (:ToDate IS NULL OR TimeMark <= :ToDate)
'1' AND EXISTS(
SELECT NULL
FROM "InfoCore"."GroupMembers"
WHERE "GroupID" = -2
AND "UserID" = @AUserID)
RETURN(240); -- 0xF0
SET @Res = 0;
DECLARE __cur CURSOR LOCAL FOR
SELECT p."AllowMask"
FROM
"InfoCore"."Permissions" p,
(
SELECT "GroupID"
FROM "InfoCore"."GroupMembers"
WHERE "UserID" = @AUserID
UNION ALL
SELECT -1 -- группа "ВСЕ"
) g
WHERE
p."GroupID" = g."GroupID"
AND p."AccessType" = @AccessType
AND p."IsAudit" = @ForAudit
AND (@AccessType = 1
OR @AccessType = 2 AND p."ClassID" = @ClassID
OR p."ClassID" = @ClassID AND p."ObjectID" = @ObjectID);
OPEN __cur;
FETCH NEXT FROM __cur INTO @AMask;
WHILE @@FETCH_STATUS = 0
BEGIN
SET @Res = @Res | @AMask;
FETCH NEXT FROM __cur INTO @AMask;
END;
CLOSE __cur;
RETURN(@Res);
]]>
8 RETURN(0);
SET @IsAudit = '1';
SET @PermissionType = @PermissionType - 4;
END;
SET @DenyBit = Power(2, @PermissionType - 1);
SET @AllowBit = 16 * @DenyBit;
-- Проверяем права для типа доступа "Экземпляр объекта"
SET @AMask = "Info"."GetPermissionMaskEx"(4, @IsAudit, @ClassID, @ObjectID, @AUserID);
IF @AMask & @DenyBit <> 0 RETURN(-1); -- Установлен запрет
IF @AMask & @AllowBit <> 0 RETURN(1); -- Установлено разрешение
-- Проверяем права для типа доступа "Иерархия" (если передали ParentID)
IF @ParentID IS NOT NULL AND @ParentID <> 0
BEGIN
SELECT @RootClassID = "RootClassID"
FROM "InfoCore"."CachedClassInfo"
WHERE "ClassID" = @ClassID;
IF @RootClassID IS NULL
SET @RootClassID = @ClassID;
WHILE 1 = 1
BEGIN
-- Получим RootClassID для родителя объекта
SET @NextClassID = "Info"."GetAncestorClassIDByRootClassID"(@RootClassID);
IF @NextClassID IS NOT NULL
SET @RootClassID = @NextClassID;
-- Для AFTER-триггеров остаётся проблема с удалением записи: вернёт NULL
SET @NextClassID = "Info"."GetObjectClassIDByRootClass"(@ParentID, @RootClassID);
-- У статических классов ClassID соавпадает с RootClassID
IF @NextClassID IS NULL
SET @NextClassID = @RootClassID;
SET @AMask = "Info"."GetPermissionMaskEx"(3, @IsAudit, @NextClassID, @ParentID, @AUserID);
IF @AMask & @DenyBit <> 0 RETURN(-1); -- Установлен запрет
IF @AMask & @AllowBit <> 0 RETURN(1); -- Установлено разрешение
-- Если не нашли родителя, на котором заданы права доступа для иерархии,
-- то продолжаем цикл вверх по иерархии
SET @ObjectID = @ParentID;
-- Получим код родительского объекта
SET @ParentID = "Info"."GetObjectParentIDByRootClass"(@ObjectID, @RootClassID);
-- Защита от зацикливания
IF @ParentID IS NULL OR @ParentID = 0 OR @ParentID = @ObjectID
BREAK;
END;
END;
-- Проверяем права для типа доступа "Класс"
SET @AMask = "Info"."GetPermissionMaskEx"(2, @IsAudit, @ClassID, 0, @AUserID);
IF @AMask & @DenyBit <> 0 RETURN(-1);
IF @AMask & @AllowBit <> 0 RETURN(1);
-- Проверяем права для типа доступа "Система"
SET @AMask = "Info"."GetPermissionMaskEx"(1, @IsAudit, 0, 0, @AUserID);
IF @AMask & @DenyBit <> 0 RETURN(-1);
IF @AMask & @AllowBit <> 0 RETURN(1);
RETURN(0);
{endif}
]]>
4
SET @PermissionType = @PermissionType - 4;
IF 1 > @PermissionType OR @PermissionType > 4
RETURN(0);
SET @CheckBit = Power(2, @PermissionType - 1);
IF @ForSuccess = 1
SET @CheckBit = 16 * @CheckBit;
-- Проверяем права для типа доступа "Экземпляр объекта"
SET @AMask = "Info"."GetPermissionMaskEx"(4, '1', @ClassID, @ObjectID, @AUserID);
IF @AMask & @CheckBit <> 0 RETURN(1);
-- Проверяем права для типа доступа "Иерархия" (если передали ParentID)
IF @ParentID IS NOT NULL AND @ParentID <> 0
BEGIN
SELECT @RootClassID = "RootClassID"
FROM "InfoCore"."CachedClassInfo"
WHERE "ClassID" = @ClassID;
IF @RootClassID IS NULL
SET @RootClassID = @ClassID;
WHILE 1 = 1
BEGIN
-- Получим RootClassID для родителя объекта
SET @NextClassID = "Info"."GetAncestorClassIDByRootClassID"(@RootClassID);
IF @NextClassID IS NOT NULL
SET @RootClassID = @NextClassID;
-- Для AFTER-триггеров остаётся проблема с удалением записи: вернёт NULL
SET @NextClassID = "Info"."GetObjectClassIDByRootClass"(@ParentID, @RootClassID);
-- У статических классов ClassID соавпадает с RootClassID
IF @NextClassID IS NULL
SET @NextClassID = @RootClassID;
SET @AMask = "Info"."GetPermissionMaskEx"(3, '1', @NextClassID, @ParentID, @AUserID);
IF @AMask & @CheckBit <> 0 RETURN(1);
-- Если не нашли родителя, на котором заданы права доступа для иерархии,
-- то продолжаем цикл вверх по иерархии
SET @ObjectID = @ParentID;
-- Получим код родительского объекта
SET @ParentID = "Info"."GetObjectParentIDByRootClass"(@ObjectID, @RootClassID);
-- Защита от зацикливания
IF @ParentID IS NULL OR @ParentID = 0 OR @ParentID = @ObjectID
BREAK;
END;
END;
-- Проверяем права для типа доступа "Класс"
SET @AMask = "Info"."GetPermissionMaskEx"(2, '1', @ClassID, 0, @AUserID);
IF @AMask & @CheckBit <> 0 RETURN(1);
-- Проверяем права для типа доступа "Система"
SET @AMask = "Info"."GetPermissionMaskEx"(1, '1', 0, 0, @AUserID);
IF @AMask & @CheckBit <> 0 RETURN(1);
RETURN(0);
{endif}
]]>
@B THEN @A
ELSE @B
END
]]>
=0) DEFAULT 0
-- На случай старой модели удаляем все связи
{if SQLServer}
DECLARE @fkName nvarchar(100)
DECLARE @tName nvarchar(100)
DECLARE @tSchema nvarchar(100)
DECLARE cur CURSOR FOR
SELECT t1.name, t2.name AS Expr1, t2_is.TABLE_SCHEMA
FROM sysobjects t1
INNER JOIN sysobjects t2 ON t1.parent_obj = t2.id
INNER JOIN INFORMATION_SCHEMA.Tables AS t2_is
ON t2.name = t2_is.TABLE_NAME
WHERE (t1.xtype = 'F')
ORDER BY t2.name
OPEN cur
FETCH NEXT FROM cur
INTO @fkName, @tName, @tSchema
WHILE @@FETCH_STATUS = 0
BEGIN
EXEC ('ALTER TABLE ' + @tSchema+'.'+@tName+
' DROP '+@fkName)
FETCH NEXT FROM cur
INTO @fkName, @tName, @tSchema
END
CLOSE cur
DEALLOCATE cur
{endif}
{if Oracle}
declare
v_sql varchar2(255);
begin
for c in
(select constraint_name, table_name
from user_constraints)
loop
v_sql := 'alter table '+c.table_name+
' drop constraint '+c.constraint_name;
execute immediate v_sql;
end loop;
end;
{endif}
]]> ''{'''
)
EXEC ('ALTER TABLE ' + @tSchema+'.'+@tName+
' ENABLE TRIGGER ALL')
FETCH NEXT FROM defcur
INTO @constraintName, @tName, @tSchema, @cName
END
CLOSE defcur
DEALLOCATE defcur
DROP TABLE #TmpDefaultConstraints
]]>= 1) AND (Permission <= 4)')
]]> p1."PermissionID")
]]> 4
GROUP BY
"AccessType", "GroupID", "ClassID", "ObjectID", "HID", "HLevel");
-- Удаляем временную таблицу
DROP TABLE DBO.#tmp_strict_check;
DELETE FROM "InfoCore"."Permissions"
WHERE "HID" IS NULL OR "HID" <> -1;
UPDATE "InfoCore"."Permissions"
SET "HID" = NULL;
IF EXISTS (SELECT NULL FROM sys.Triggers WHERE name LIKE 'OnChangePermissions')
ENABLE TRIGGER "InfoCore"."OnChangePermissions" ON "InfoCore"."Permissions";
-- Удаляем Check & Default Constraints
DECLARE @CName nvarchar(100);
DECLARE cur CURSOR LOCAL FOR
SELECT name
FROM sysobjects
WHERE parent_obj = object_id('"InfoCore"."Permissions"')
AND xtype IN ('C', 'D');
OPEN cur;
FETCH NEXT FROM cur INTO @CName;
WHILE @@FETCH_STATUS = 0
BEGIN
EXEC ('ALTER TABLE "InfoCore"."Permissions" DROP CONSTRAINT ' + @CName);
FETCH NEXT FROM cur INTO @CName;
END;
CLOSE cur;
DEALLOCATE cur;
-- Удаляем старые функции и зависящие от них виды
IF Object_Id('"Info"."Schemes"') IS NOT NULL
DROP VIEW "Info"."Schemes";
IF Object_Id('"Info"."InfoLayers"') IS NOT NULL
DROP VIEW "Info"."InfoLayers";
IF Object_Id('"Info"."GetHierarchyObjectPermission"') IS NOT NULL
DROP FUNCTION "Info"."GetHierarchyObjectPermission";
IF Object_Id('"Info"."GetObjectPermissionWithHierarchy"') IS NOT NULL
DROP FUNCTION "Info"."GetObjectPermissionWithHierarchy";
-- Удаляем старые колонки
ALTER TABLE "InfoCore"."Permissions" DROP COLUMN "Allow";
ALTER TABLE "InfoCore"."Permissions" DROP COLUMN "Permission";
END;
]]>
PK
NE9H $ DataModels/InfoSchemes-9-0.datamodel
'Фигура №' + CONVERT(nvarchar, :FigureID)Geometry.STEnvelope().STPointN(1).STXGeometry.STEnvelope().STPointN(1).STYGeometry.STEnvelope().STPointN(3).STXGeometry.STEnvelope().STPointN(3).STY
'NOLOCK'
RETURN;
EXEC @Result = sp_getapplock @Cmd, "Exclusive", "Session", 0;
END
ELSE
BEGIN
-- Нет блокировки - выходим
IF @LockMode = 'NOLOCK'
RETURN;
EXEC @Result = sp_releaseapplock @Cmd, "Session";
END;
{endif}
]]>
1
RETURN(-1);
RETURN(
SELECT req_spid
FROM sys.syslockinfo
WHERE rsc_dbid = DB_ID()
AND rsc_type = 10
AND rsc_text LIKE '%Lay:' + LTrim(STR(@LayerID)) + ':%')
{endif}
]]>
stPoint
WHEN 1 THEN 3 -- sftShapePolyline -> stPolyline
WHEN 2 THEN 5 -- sftShapePolygon -> stPolygon
WHEN 3 THEN 9 -- sftShapeCollection -> stCollection
END
WHERE ShapeType IS NOT NULL
]]> 0;
]]>
PK
hEגT T &