إدارة تصنيفات الحساسية في عروض PowerPoint التقديمية باستخدام PHP
نظرة عامة
تساعد تصنيفات الحساسية في Microsoft Purview المؤسسات على تصنيف المستندات وإدارتها. أثناء معالجة العرض التقديمي تلقائيًا، قد يحتاج التطبيق إلى الحفاظ على تصنيف موجود، أو تطبيق تصنيف مختار بواسطة سياسة، أو تحديث حالته، أو ترحيل بيانات تعريف التصنيف التي كتبها سير عمل Microsoft Information Protection (MIP) القديم.
تُظهر Aspose.Slides for PHP عبر Java بيانات تعريف تصنيفات الحساسية الحديثة من خلال Presentation::getSensitivityLabels. تُعيد هذه الطريقة مجموعة SensitivityLabelCollection التي يمكن فحصها وتعديلها قبل حفظ العرض التقديمي كملف PPTX.
Note
معرفات تصنيف الحساسية ومعلومات السياسة يتم تعريفها بواسطة إعدادات Microsoft Purview الخاصة بك. تحقق من توفر التصنيف ومتطلبات السياسة في بيئتك قبل إضافة أو ترحيل البيانات الوصفية. قيم SensitivityLabel::getContentMarkTypes تصف العلامات المحتوى المرتبطة بالتصنيف؛ هي لا تضيف نصًا مرئيًا أو أشكالًا إلى الشرائح بحد ذاتها.فهم خصائص تصنيف الحساسية
كل SensitivityLabel يحتوي على البيانات الوصفية التالية:
| الطرق | الغرض |
|---|---|
| SensitivityLabel::getId و SensitivityLabel::setId | الحصول على أو تعيين معرف تصنيف الحساسية في سياسة Purview. |
| SensitivityLabel::getSiteId و SensitivityLabel::setSiteId | الحصول على أو تعيين الموقع المرتبط بسياسة التصنيف. |
| SensitivityLabel::isEnabled و SensitivityLabel::setEnabled | الحصول على أو تعيين ما إذا كان التصنيف مفعلاً. |
| SensitivityLabel::isRemoved و SensitivityLabel::setRemoved | الحصول على أو تعيين ما إذا تم إزالة التصنيف. اضبط القيمة إلى true عندما يجب الاحتفاظ بحالة الإزالة في البيانات الوصفية. |
| SensitivityLabel::getAssignmentMethodType و SensitivityLabel::setAssignmentMethodType | الحصول على أو تعيين ما إذا تم تطبيق التصنيف تلقائيًا أو عبر قرار المستخدم. |
| SensitivityLabel::getContentMarkTypes | الحصول على أنواع العلامات المحتوى المرتبطة بالتصنيف. |
تحدد فئة SensitivityLabelAssignmentType كيفية تعيين التصنيف:
- SensitivityLabelAssignmentType::Standard يمثل تصنيفًا افتراضيًا أو مُطبقًا تلقائيًا.
- SensitivityLabelAssignmentType::Privileged يمثل تصنيفًا تم تطبيقه عبر قرار المستخدم، بما في ذلك التصنيفات المطبقة يدويًا، الموصى بها، والإلزامية.
تحدد فئة SensitivityLabelContentType العلامة المرتبطة بالتصنيف:
| القيمة | المعنى |
|---|---|
| SensitivityLabelContentType::None | تم تطبيق التصنيف افتراضيًا أو تلقائيًا. |
| SensitivityLabelContentType::Header | ترتبط علامة محتوى الرأس بالتصنيف. |
| SensitivityLabelContentType::Footer | ترتبط علامة محتوى التذييل بالتصنيف. |
| SensitivityLabelContentType::Watermark | ترتبط علامة محتوى العلامة المائية بالتصنيف. |
| SensitivityLabelContentType::Encryption | ترتبط حماية التشفير بالتصنيف. |
يمكن ربط أنواع علامات متعددة بتصنيف واحد.
قائمة تصنيفات الحساسية الموجودة
اقرأ مجموعة التصنيفات الحديثة من خلال Presentation::getSensitivityLabels وابدأ في تعدادها. المثال التالي يسرد كل خاصية وعلامة محتوى مخزنة لكل تصنيف:
$presentation = new Presentation("presentation.pptx");
try {
$sensitivityLabels = $presentation->getSensitivityLabels();
$sensitivityLabelCount = java_values($sensitivityLabels->getCount());
for ($labelIndex = 0; $labelIndex < $sensitivityLabelCount; $labelIndex++) {
$sensitivityLabel = $sensitivityLabels->get_Item($labelIndex);
echo "Label ID: " . java_values($sensitivityLabel->getId()) . PHP_EOL;
echo "Site ID: " . java_values($sensitivityLabel->getSiteId()->toString()) . PHP_EOL;
echo "Enabled: " . (java_values($sensitivityLabel->isEnabled()) ? "true" : "false") . PHP_EOL;
echo "Removed: " . (java_values($sensitivityLabel->isRemoved()) ? "true" : "false") . PHP_EOL;
echo "Assignment method: " . java_values($sensitivityLabel->getAssignmentMethodType()) . PHP_EOL;
$contentMarkIterator = $sensitivityLabel->getContentMarkTypes()->iterator();
while (java_values($contentMarkIterator->hasNext())) {
$contentMarkType = java_values($contentMarkIterator->next());
echo "Content marking: " . $contentMarkType . PHP_EOL;
}
}
} finally {
$presentation->dispose();
}
إضافة تصنيف حساس مع علامة محتوى
استخدم SensitivityLabelCollection::add مع معرف التصنيف، ومعرف الموقع، وحالة التفعيل، وطريقة التعيين. بعد أن تُعيد الطريقة كائن SensitivityLabel الجديد، أضف قيم العلامات المطلوبة عبر القائمة التي تُعيدها SensitivityLabel::getContentMarkTypes.
المثال التالي يضيف تصنيفًا مختارًا يدويًا مرتبطًا بعلامتي التذييل والعلامة المائية، ثم يحفظ النتيجة كملف PPTX:
$presentation = new Presentation("presentation.pptx");
try {
$sensitivityLabels = $presentation->getSensitivityLabels();
$labelIdentifier = "{11111111-2222-3333-4444-555555555555}";
$UUID = new JavaClass("java.util.UUID");
$siteIdentifier = $UUID->fromString("aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee");
$isEnabled = true;
$assignmentMethod = SensitivityLabelAssignmentType::Privileged;
$sensitivityLabel = $sensitivityLabels->add(
$labelIdentifier,
$siteIdentifier,
$isEnabled,
$assignmentMethod
);
$contentMarkTypes = $sensitivityLabel->getContentMarkTypes();
$contentMarkTypes->addItem(SensitivityLabelContentType::Footer);
$contentMarkTypes->addItem(SensitivityLabelContentType::Watermark);
$presentation->save("presentation_with_label.pptx", SaveFormat::Pptx);
} finally {
$presentation->dispose();
}
تحديث تصنيف حساس
قِيَم SensitivityLabel قابلة للقراءة والكتابة، باستثناء القائمة التي تُعيدها SensitivityLabel::getContentMarkTypes والتي تُعدَّل عبر عمليات القائمة الخاصة بها. بعد تحديد التصنيف المطلوب، يمكنك تحديث معرفه، ومعرف الموقع، وحالة التفعيل، وطريقة التعيين، وحالة الإزالة، وأنواع العلامات المحتوى. احفظ العرض التقديمي لتطبيق التغييرات.
المثال التالي يحدّث حالة التفعيل وطريقة التعيين للتصنيف الأول:
$presentation = new Presentation("presentation.pptx");
try {
$sensitivityLabels = $presentation->getSensitivityLabels();
$sensitivityLabelCount = java_values($sensitivityLabels->getCount());
if ($sensitivityLabelCount > 0) {
$sensitivityLabel = $sensitivityLabels->get_Item(0);
$sensitivityLabel->setEnabled(true);
$sensitivityLabel->setAssignmentMethodType(SensitivityLabelAssignmentType::Privileged);
}
$presentation->save("presentation_with_updated_label.pptx", SaveFormat::Pptx);
} finally {
$presentation->dispose();
}
تمييز تصنيف حساس كمُزالة
للحفاظ على حقيقة أن التصنيف قد تمت إزالته، ابحث عن التصنيف واستدعِ SensitivityLabel::setRemoved مع القيمة true. هذا يحتفظ بمدخل التصنيف مع تسجيل حالة إزالته. إذا كنت تحتاج بدلاً من ذلك إلى حذف مدخل من المجموعة الحديثة، استخدم SensitivityLabelCollection::removeAt؛ واستخدم SensitivityLabelCollection::clear لحذف جميع المدخلات.
المثال التالي يضع علامة على تصنيف محدد كمرَجع ويحفظ العرض التقديمي المحدث:
$presentation = new Presentation("presentation.pptx");
try {
$sensitivityLabels = $presentation->getSensitivityLabels();
$targetLabelIdentifier = "{11111111-2222-3333-4444-555555555555}";
$sensitivityLabelCount = java_values($sensitivityLabels->getCount());
for ($labelIndex = 0; $labelIndex < $sensitivityLabelCount; $labelIndex++) {
$sensitivityLabel = $sensitivityLabels->get_Item($labelIndex);
$labelIdentifier = java_values($sensitivityLabel->getId());
$isTargetLabel = strcasecmp($labelIdentifier, $targetLabelIdentifier) === 0;
if ($isTargetLabel) {
$sensitivityLabel->setRemoved(true);
break;
}
}
$presentation->save("presentation_with_removed_label.pptx", SaveFormat::Pptx);
} finally {
$presentation->dispose();
}
قراءة وترحيل تصنيفات الحساسية القديمة من MIP
يمكن لتدفقات العمل القديمة القائمة على MIP تخزين بيانات تعريف تصنيفات الحساسية في خصائص المستند المخصصة بدلاً من مجموعة التصنيفات الحديثة. اقرأ تلك البيانات باستخدام DocumentProperties::getSensitivityLabels. تقوم الطريقة بتحليل الخصائص المخصصة القديمة وتعيد مصفوفة جافا من كائنات SensitivityLabel.
للترحيل، أضف كل تصنيف تم إرجاعه إلى مجموعة SensitivityLabelCollection الحديثة عبر SensitivityLabelCollection::add. نظرًا لأن إضافة معرف تصنيف مكرر يسبب استثناءً، يتحقق المثال من المجموعة الوجهة قبل نسخ كل تصنيف. يمكنك إضافة تحقق إضافي للتأكد من أن كل تصنيف قديم لا يزال موجودًا في سياسة Purview الحالية.
$presentation = new Presentation("presentation_with_legacy_labels.pptx");
try {
$legacySensitivityLabels = $presentation->getDocumentProperties()->getSensitivityLabels();
$modernSensitivityLabels = $presentation->getSensitivityLabels();
$Array = new JavaClass("java.lang.reflect.Array");
$legacyLabelCount = java_values($Array->getLength($legacySensitivityLabels));
for ($legacyLabelIndex = 0; $legacyLabelIndex < $legacyLabelCount; $legacyLabelIndex++) {
$legacySensitivityLabel = $legacySensitivityLabels[$legacyLabelIndex];
$legacyLabelIdentifier = java_values($legacySensitivityLabel->getId());
$labelAlreadyExists = false;
$modernLabelCount = java_values($modernSensitivityLabels->getCount());
for ($modernLabelIndex = 0; $modernLabelIndex < $modernLabelCount; $modernLabelIndex++) {
$modernSensitivityLabel = $modernSensitivityLabels->get_Item($modernLabelIndex);
$modernLabelIdentifier = java_values($modernSensitivityLabel->getId());
$labelAlreadyExists = strcasecmp(
$modernLabelIdentifier,
$legacyLabelIdentifier
) === 0;
if ($labelAlreadyExists) {
break;
}
}
if (!$labelAlreadyExists) {
$modernSensitivityLabels->add($legacySensitivityLabel);
}
}
$presentation->save("presentation_with_modern_labels.pptx", SaveFormat::Pptx);
} finally {
$presentation->dispose();
}
تنقل النسخة المستخرجة من الكائنات إلى المجموعة الحديثة. لا يتطلب ذلك مسح جميع خصائص المستند المخصصة، لذا تظل البيانات الوصفية غير المتعلقة بالمستند سليمة. استخدم Presentation::save مع SaveFormat::Pptx لكتابة بيانات تعريف التصنيفات الحديثة إلى ملف PPTX.
الأسئلة الشائعة
هل يؤدي إضافة نوع علامة محتوى إلى إنشاء رأس أو تذييل أو علامة مائية مرئية على الشرائح؟
لا. القيم المضافة عبر القائمة التي تُعيدها SensitivityLabel::getContentMarkTypes تصف العلامات المرتبطة بتصنيف الحساسية. هي لا تُنشئ نصًا أو أشكالًا مرئية في العرض التقديمي. أضف محتوى الشريحة المقابل بشكل منفصل إذا كان سير عملك يتوجب عرض تلك العلامات.
ما الفرق بين وضع علامة على تصنيف كمُزالة وحذفّه من المجموعة؟
استدعاء SensitivityLabel::setRemoved مع القيمة true يحافظ على مدخل التصنيف ويسجل حالة إزالته. استدعاء SensitivityLabelCollection::removeAt يحذف المدخل من المجموعة الحديثة. اختر العملية التي تتوافق مع متطلبات مؤسستك للاحتفاظ بالبيانات الوصفية.
هل يمكن أن يحتوي عرض تقديمي على كلٍ من بيانات MIP القديمة وتصنيفات الحساسية الحديثة؟
نعم. يمكن أن تظل التصنيفات القديمة في خصائص المستند المخصصة بينما تكون التصنيفات الحديثة متاحة عبر Presentation::getSensitivityLabels. استخدم DocumentProperties::getSensitivityLabels لقراءة البيانات الوصفية القديمة وترحيل التصنيفات الصالحة فقط التي لا توجد بالفعل في المجموعة الحديثة.
ماذا يحدث عندما يُضاف تصنيف بنفس المعرف أكثر من مرة؟
يرفع SensitivityLabelCollection::add استثناءً عندما تحتوي المجموعة بالفعل على تصنيف بنفس المعرف. تحقق من القيم الموجودة التي تُعيدها SensitivityLabel::getId قبل إضافة أو ترحيل التصنيفات.
ما هو تنسيق الإخراج الذي يجب استخدامه للحفاظ على تصنيفات الحساسية المحدثة؟
احفظ العرض التقديمي كملف PPTX عن طريق استدعاء Presentation::save مع SaveFormat::Pptx، كما هو موضح في الأمثلة أعلاه.