1717use OCA \Libresign \Exception \LibresignException ;
1818use OCA \Libresign \Service \Policy \PolicyService ;
1919use OCA \Libresign \Service \Policy \Provider \CollectMetadata \CollectMetadataPolicy ;
20+ use OCA \Libresign \Service \Policy \Provider \SignatureText \SignatureTextPolicy as SignatureTextPolicyProvider ;
21+ use OCA \Libresign \Service \Policy \Provider \SignatureText \SignatureTextPolicy ;
2022use OCA \Libresign \Vendor \Twig \Environment ;
2123use OCA \Libresign \Vendor \Twig \Error \SyntaxError ;
2224use OCA \Libresign \Vendor \Twig \Loader \FilesystemLoader ;
@@ -105,12 +107,30 @@ public function save(
105107 $ template = strip_tags ((string )$ template );
106108 $ template = trim ($ template );
107109 $ template = html_entity_decode ($ template );
108- $ this ->appConfig ->setValueString (Application::APP_ID , 'signature_text_template ' , $ template );
109- $ this ->appConfig ->setValueFloat (Application::APP_ID , 'signature_width ' , $ signatureWidth );
110- $ this ->appConfig ->setValueFloat (Application::APP_ID , 'signature_height ' , $ signatureHeight );
111- $ this ->appConfig ->setValueFloat (Application::APP_ID , 'template_font_size ' , $ templateFontSize );
112- $ this ->appConfig ->setValueFloat (Application::APP_ID , 'signature_font_size ' , $ signatureFontSize );
113- $ this ->appConfig ->setValueString (Application::APP_ID , 'signature_render_mode ' , $ renderMode );
110+ if ($ this ->policyService !== null ) {
111+ try {
112+ $ this ->policyService ->saveSystemPolicy (SignatureTextPolicyProvider::KEY_TEMPLATE , $ template );
113+ $ this ->policyService ->saveSystemPolicy (SignatureTextPolicyProvider::KEY_SIGNATURE_WIDTH , $ signatureWidth );
114+ $ this ->policyService ->saveSystemPolicy (SignatureTextPolicyProvider::KEY_SIGNATURE_HEIGHT , $ signatureHeight );
115+ $ this ->policyService ->saveSystemPolicy (SignatureTextPolicyProvider::KEY_TEMPLATE_FONT_SIZE , $ templateFontSize );
116+ $ this ->policyService ->saveSystemPolicy (SignatureTextPolicyProvider::KEY_SIGNATURE_FONT_SIZE , $ signatureFontSize );
117+ $ this ->policyService ->saveSystemPolicy (SignatureTextPolicyProvider::KEY_RENDER_MODE , $ renderMode );
118+ } catch (\Throwable ) {
119+ $ this ->appConfig ->setValueString (Application::APP_ID , 'signature_text_template ' , $ template );
120+ $ this ->appConfig ->setValueFloat (Application::APP_ID , 'signature_width ' , $ signatureWidth );
121+ $ this ->appConfig ->setValueFloat (Application::APP_ID , 'signature_height ' , $ signatureHeight );
122+ $ this ->appConfig ->setValueFloat (Application::APP_ID , 'template_font_size ' , $ templateFontSize );
123+ $ this ->appConfig ->setValueFloat (Application::APP_ID , 'signature_font_size ' , $ signatureFontSize );
124+ $ this ->appConfig ->setValueString (Application::APP_ID , 'signature_render_mode ' , $ renderMode );
125+ }
126+ } else {
127+ $ this ->appConfig ->setValueString (Application::APP_ID , 'signature_text_template ' , $ template );
128+ $ this ->appConfig ->setValueFloat (Application::APP_ID , 'signature_width ' , $ signatureWidth );
129+ $ this ->appConfig ->setValueFloat (Application::APP_ID , 'signature_height ' , $ signatureHeight );
130+ $ this ->appConfig ->setValueFloat (Application::APP_ID , 'template_font_size ' , $ templateFontSize );
131+ $ this ->appConfig ->setValueFloat (Application::APP_ID , 'signature_font_size ' , $ signatureFontSize );
132+ $ this ->appConfig ->setValueString (Application::APP_ID , 'signature_render_mode ' , $ renderMode );
133+ }
114134 return $ this ->parse ($ template );
115135 }
116136
@@ -175,6 +195,13 @@ public function parse(string $template = '', array $context = []): array {
175195 }
176196
177197 public function getTemplate (): string {
198+ if ($ this ->policyService !== null ) {
199+ try {
200+ return (string )$ this ->policyService ->resolve (SignatureTextPolicyProvider::KEY_TEMPLATE )->effectiveValue ();
201+ } catch (\Throwable ) {
202+ // Fallback keeps legacy behavior during migration rollout.
203+ }
204+ }
178205 if ($ this ->appConfig ->hasKey (Application::APP_ID , 'signature_text_template ' )) {
179206 return $ this ->appConfig ->getValueString (Application::APP_ID , 'signature_text_template ' );
180207 }
@@ -449,15 +476,23 @@ public function getDefaultTemplate(): string {
449476 }
450477
451478 public function getFullSignatureWidth (): float {
452- return $ this ->getSanitizedDimension (' signature_width ' , self ::DEFAULT_SIGNATURE_WIDTH );
479+ return $ this ->getSanitizedDimension (SignatureTextPolicyProvider:: KEY_SIGNATURE_WIDTH , self ::DEFAULT_SIGNATURE_WIDTH );
453480 }
454481
455482 public function getFullSignatureHeight (): float {
456- return $ this ->getSanitizedDimension (' signature_height ' , self ::DEFAULT_SIGNATURE_HEIGHT );
483+ return $ this ->getSanitizedDimension (SignatureTextPolicyProvider:: KEY_SIGNATURE_HEIGHT , self ::DEFAULT_SIGNATURE_HEIGHT );
457484 }
458485
459486 public function getSignatureWidth (): float {
460- $ current = $ this ->appConfig ->getValueFloat (Application::APP_ID , 'signature_width ' , self ::DEFAULT_SIGNATURE_WIDTH );
487+ if ($ this ->policyService !== null ) {
488+ try {
489+ $ current = (float )$ this ->policyService ->resolve (SignatureTextPolicyProvider::KEY_SIGNATURE_WIDTH )->effectiveValue ();
490+ } catch (\Throwable ) {
491+ $ current = $ this ->appConfig ->getValueFloat (Application::APP_ID , 'signature_width ' , self ::DEFAULT_SIGNATURE_WIDTH );
492+ }
493+ } else {
494+ $ current = $ this ->appConfig ->getValueFloat (Application::APP_ID , 'signature_width ' , self ::DEFAULT_SIGNATURE_WIDTH );
495+ }
461496 if ($ this ->getRenderMode () === SignerElementsService::RENDER_MODE_GRAPHIC_ONLY || !$ this ->getTemplate ()) {
462497 return $ current ;
463498 }
@@ -469,7 +504,15 @@ public function getSignatureHeight(): float {
469504 }
470505
471506 private function getSanitizedDimension (string $ key , float $ default ): float {
472- $ value = $ this ->appConfig ->getValueFloat (Application::APP_ID , $ key , $ default );
507+ if ($ this ->policyService !== null ) {
508+ try {
509+ $ value = (float )$ this ->policyService ->resolve ($ key )->effectiveValue ();
510+ } catch (\Throwable ) {
511+ $ value = $ this ->appConfig ->getValueFloat (Application::APP_ID , $ key , $ default );
512+ }
513+ } else {
514+ $ value = $ this ->appConfig ->getValueFloat (Application::APP_ID , $ key , $ default );
515+ }
473516 if (!is_finite ($ value ) || $ value < self ::SIGNATURE_DIMENSION_MINIMUM ) {
474517 $ this ->appConfig ->setValueFloat (Application::APP_ID , $ key , $ default );
475518 $ this ->logger ->warning ('Invalid signature dimension found in app config. Falling back to default. ' , [
@@ -484,10 +527,15 @@ private function getSanitizedDimension(string $key, float $default): float {
484527
485528 public function getTemplateFontSize (): float {
486529 $ collectMetadata = $ this ->isCollectMetadataEnabled ();
487- if ($ collectMetadata ) {
488- return $ this ->appConfig ->getValueFloat (Application::APP_ID , 'template_font_size ' , self ::TEMPLATE_DEFAULT_FONT_SIZE - 1 );
530+ $ default = $ collectMetadata ? self ::TEMPLATE_DEFAULT_FONT_SIZE - 1 : self ::TEMPLATE_DEFAULT_FONT_SIZE ;
531+ if ($ this ->policyService !== null ) {
532+ try {
533+ return (float )$ this ->policyService ->resolve (SignatureTextPolicyProvider::KEY_TEMPLATE_FONT_SIZE )->effectiveValue ();
534+ } catch (\Throwable ) {
535+ // Fallback keeps legacy behavior during migration rollout.
536+ }
489537 }
490- return $ this ->appConfig ->getValueFloat (Application::APP_ID , 'template_font_size ' , self :: TEMPLATE_DEFAULT_FONT_SIZE );
538+ return $ this ->appConfig ->getValueFloat (Application::APP_ID , 'template_font_size ' , $ default );
491539 }
492540
493541 public function getDefaultTemplateFontSize (): float {
@@ -511,10 +559,24 @@ private function isCollectMetadataEnabled(): bool {
511559 }
512560
513561 public function getSignatureFontSize (): float {
562+ if ($ this ->policyService !== null ) {
563+ try {
564+ return (float )$ this ->policyService ->resolve (SignatureTextPolicyProvider::KEY_SIGNATURE_FONT_SIZE )->effectiveValue ();
565+ } catch (\Throwable ) {
566+ // Fallback keeps legacy behavior during migration rollout.
567+ }
568+ }
514569 return $ this ->appConfig ->getValueFloat (Application::APP_ID , 'signature_font_size ' , self ::SIGNATURE_DEFAULT_FONT_SIZE );
515570 }
516571
517572 public function getRenderMode (): string {
573+ if ($ this ->policyService !== null ) {
574+ try {
575+ return (string )$ this ->policyService ->resolve (SignatureTextPolicyProvider::KEY_RENDER_MODE )->effectiveValue ();
576+ } catch (\Throwable ) {
577+ // Fallback keeps legacy behavior during migration rollout.
578+ }
579+ }
518580 return $ this ->appConfig ->getValueString (Application::APP_ID , 'signature_render_mode ' , SignerElementsService::RENDER_MODE_DEFAULT );
519581 }
520582
0 commit comments