From f81498db21c5fb765042dd9c26b7e55d9dc79804 Mon Sep 17 00:00:00 2001 From: Kembreg1405 Date: Mon, 21 Jul 2025 10:40:03 +0200 Subject: [PATCH 1/8] Add files via upload --- samples/EASYTABLES.php | 425 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 425 insertions(+) create mode 100644 samples/EASYTABLES.php diff --git a/samples/EASYTABLES.php b/samples/EASYTABLES.php new file mode 100644 index 0000000000..bb3657792f --- /dev/null +++ b/samples/EASYTABLES.php @@ -0,0 +1,425 @@ +addTable($TableStyle); +} + +function AddTableRow(){WordTable()->addRow();} + +function AddTableCell($Text,$FontStyle,$SpacingStyle) +{ +if(WordTableStyle('alignment')=='center'){WordTable()->addCell(WordTableStyle('width'),WordTableStyle())->addText($Text,$FontStyle,$SpacingStyle);return;} +$Padding='_____'; +$Invisible['color']='FFFFFF'; +$Invisible['size']=20/(WordTableStyle('numColumns')+2); +$Cell=WordTable()->addCell(WordTableStyle('width'),WordTableStyle()); +$TextRun=$Cell->addTextRun($SpacingStyle); +if(WordTableStyle('alignment')=='left') + { + if(WordTableStyle('numColumns')>3) $Invisible['size']=0; + $TextRun->addText($Padding,$Invisible);$TextRun->addText($Text,$FontStyle); + return; + } +$TextRun->addText($Text,$FontStyle); +$TextRun->addText($Padding,$Invisible); +} + +function TableCell($row,$column) +{ +$FontStyle=[]; +$TextStyle=[]; +$FontStyle['bold']=WordTableStyle('bold'); +$FontStyle['size']=WordTableStyle('size'); +$FontStyle['color']=WordTableStyle('color'); +$SpacingStyle['alignment']=WordTableStyle('alignment'); +$SpacingStyle['spaceAfter']=WordTableStyle('spaceAfter'); +$Text=WordTableText(); +$Text=$Text[$row-1][$column-1]; +if(mb_strpos($Text,WordTableStyle('fadeCue'))!==false) {$FontStyle['color']=WordTableStyle('colorFaded');$Text=str_replace(WordTableStyle('fadeCue'),'',$Text);} +$LetterThreshold=Round(WordTableStyle('width')/130); //Width 2000->Words longer than 15 letters will be hyphenated +if(WordTableStyle('abbreviate')) $Text=Abbreviated($Text,$LetterThreshold); //Width 2000, abbreviates to 10 letters. +if(!WordTableStyle('abbreviate')) if(WordTableStyle('hyphenate')) $Text=Hyphenated($Text,$LetterThreshold,WordTableStyle('langugage')); +AddTableCell($Text,$FontStyle,$SpacingStyle); +} + +function WordTableText($text=null) +{ +static $TextArray=[]; +static $Row=0; +static $Col=0; +if($text===null) return $TextArray;//Return the array. +if($text===row) {$Row++;$Col=0;return;}//Start new row +if(is_array($text)) + { + $text=array_filter($text,function($line){return trim($line)!=='';}); + $text=implode("\n",$text); + } +$TextArray[$Row][$Col]=$text;// Add text at current position +$Col++; +if($text!==clear) return;//Text was added. No need to return anything +$Row=0; +$Col=0; +$k=$TextArray; +$TextArray=null; +unset($TextArray); +return $k;//No argument=reset +} + +function WordTableStyle($ThisStyle='',$ThisValue='') +{ +static $StyleArray=[]; +if($ThisStyle==clear) {$StyleArray=null;unset($StyleArray);return;} +if($ThisStyle==='') return $StyleArray; +if($ThisValue===remove) {unset($StyleArray[$ThisStyle]);return;} +if($ThisValue==='') {return isset($StyleArray[$ThisStyle])?$StyleArray[$ThisStyle]:'';} +$StyleArray[$ThisStyle]=$ThisValue; +} + +function WordColumnWidth($Column='',$Width='') +{ +static $WidthArray=[]; +if($Column=='') {$WidthArray=null;unset($WidthArray);return;} +if($Column==clear) {$WidthArray=null;unset($WidthArray);return;} +if($Width=='') return $WidthArray[$Column]; +$WidthArray[$Column]=$Width; +} + +function WordColumnAlign($Column='',$Alignment='') +{ +static $AlignArray=[]; +if($Column=='') {$AlignArray=null;unset($AlignArray);return;} +if($Column==clear) {$AlignArray=null;unset($AlignArray);return;} +if($Alignment=='') return isset($AlignArray[$Column])?$AlignArray[$Column]:'left'; +$AlignArray[$Column]=$Alignment; +} + +function WordColumnBold($Column='',$IsBold='') +{ +static $BoldArray=[]; +if($Column=='') {$BoldArray=null;unset($BoldArray);return;} +if($Column==clear) {$BoldArray=null;unset($BoldArray);return;} +if($IsBold=='') return isset($BoldArray[$Column]); +$BoldArray[$Column]=$IsBold; +} + +function WordRowBold($Row='',$IsBold='') +{ +static $BoldArray=[]; +if($Row=='') {$BoldArray=null;unset($BoldArray);return;} +if($Row==clear) {$BoldArray=null;unset($BoldArray);return;} +if($IsBold=='') return isset($BoldArray[$Row]); +$BoldArray[$Row]=$IsBold; +} + +function Abbreviated($Word,$Theshold=10) +{ +if(mb_strpos($Word,'-')!==false) return $Word; +if(mb_strpos($Word,' ')!==false) return $Word; +if(mb_strlen($Word)<=$Theshold) return $Word; +if(preg_match('/^\d/',$Word)) return $Word; //Starts with a digit — looks like a number +$Word=mb_substr($Word,0,$Theshold-1).'...'; +echo "Abbreviated $Word
"; +return $Word; +} + +function ConsonantPairs($Language) +{ +if($Language=='de') return ['br','bl','ck','dr','ft','fr','gl','gr','kr','kl','nb','ng','nd','nk','nt','mp','pl','pr','pf','pz','rm','rp','rs','rt','sk','sl','st','sp','tg','tm','tr','tz']; +return ['ck','ct','mp','nd','nt','lt','rt','st','sp','sk','pl','pr','gr','bl','br','tr','cl','cr','dr','fr']; +} + +function Hyphenated($Word,$Theshold=10,$Language='en') +{ +if(preg_match('/^\d/',$Word)) return $Word; //Starts with a digit — looks like a number +if(mb_strpos($Word, '-')!==false) return $Word; +if(mb_strpos($Word, ' ')!==false) return $Word; + +$Length=mb_strlen($Word); +if($Length<$Theshold) return $Word; +if(mb_strpos($Word,'name')!==false) return str_replace('name','-name',$Word); + +$Middle = (int) floor($Length / 2); +$vowels = '/[aeiouy]/i'; +$Pairs=ConsonantPairs($Language); +$MaxOffset = 2; + + // Check for consonant pairs + for ($Offset = 0; $Offset <= $MaxOffset; $Offset++) + { + foreach (['back' => $Middle - $Offset - 1, 'forward' => $Middle + $Offset - 1] as $Pos) + { + + $Pair = mb_substr($Word, $Pos, 2); + if (in_array($Pair, $Pairs)) return mb_substr($Word, 0, $Pos + 1) . '-' . mb_substr($Word, $Pos + 1); + } + } + + // Check for identical letters + for ($Offset = 0; $Offset <= $MaxOffset; $Offset++) + { + foreach (['back' => $Middle - $Offset - 1, 'forward' => $Middle + $Offset - 1] as $Pos) + { + $Char = mb_substr($Word, $Pos, 1); + $Next = mb_substr($Word, $Pos + 1, 1); + if ($Char === $Next) return mb_substr($Word, 0, $Pos + 1) . '-' . mb_substr($Word, $Pos + 1); + } + } + + // Check for vowels near middle + for ($Offset = 0; $Offset < $Middle - 1; $Offset++) + { + foreach (['back' => $Middle - $Offset, 'forward' => $Middle + $Offset] as $Pos) + { + $Char = mb_substr($Word, $Pos, 1); + if (preg_match($vowels, $Char)) return mb_substr($Word, 0, $Pos + 1) . '-' . mb_substr($Word, $Pos + 1); + } + } + + // Fallback split at middle + return mb_substr($Word, 0, $Middle) . '-' . mb_substr($Word, $Middle); +} + +?> \ No newline at end of file From a4efce2e0f135c4851c85f369c18f8141729b2a0 Mon Sep 17 00:00:00 2001 From: Kembreg1405 Date: Mon, 21 Jul 2025 11:05:01 +0200 Subject: [PATCH 2/8] Update EASYTABLES.php Updated formatting --- samples/EASYTABLES.php | 89 +++++++++++++++++++----------------------- 1 file changed, 40 insertions(+), 49 deletions(-) diff --git a/samples/EASYTABLES.php b/samples/EASYTABLES.php index bb3657792f..012a72a51e 100644 --- a/samples/EASYTABLES.php +++ b/samples/EASYTABLES.php @@ -1,8 +1,8 @@ - $Middle - $Offset - 1, 'forward' => $Middle + $Offset - 1] as $Pos) - { - - $Pair = mb_substr($Word, $Pos, 2); - if (in_array($Pair, $Pairs)) return mb_substr($Word, 0, $Pos + 1) . '-' . mb_substr($Word, $Pos + 1); - } +// Check for consonant pairs +for ($Offset = 0; $Offset <= $MaxOffset; $Offset++) + foreach (['back' => $Middle - $Offset - 1, 'forward' => $Middle + $Offset - 1] as $Pos) { + $Pair = mb_substr($Word, $Pos, 2); + if (in_array($Pair, $Pairs)) return mb_substr($Word, 0, $Pos + 1) . '-' . mb_substr($Word, $Pos + 1); } + // Check for identical letters for ($Offset = 0; $Offset <= $MaxOffset; $Offset++) - { - foreach (['back' => $Middle - $Offset - 1, 'forward' => $Middle + $Offset - 1] as $Pos) - { - $Char = mb_substr($Word, $Pos, 1); - $Next = mb_substr($Word, $Pos + 1, 1); - if ($Char === $Next) return mb_substr($Word, 0, $Pos + 1) . '-' . mb_substr($Word, $Pos + 1); + foreach (['back' => $Middle - $Offset - 1, 'forward' => $Middle + $Offset - 1] as $Pos) { + $Char = mb_substr($Word, $Pos, 1); + $Next = mb_substr($Word, $Pos + 1, 1); + if ($Char === $Next) return mb_substr($Word, 0, $Pos + 1) . '-' . mb_substr($Word, $Pos + 1); } - } - + // Check for vowels near middle for ($Offset = 0; $Offset < $Middle - 1; $Offset++) - { - foreach (['back' => $Middle - $Offset, 'forward' => $Middle + $Offset] as $Pos) - { - $Char = mb_substr($Word, $Pos, 1); - if (preg_match($vowels, $Char)) return mb_substr($Word, 0, $Pos + 1) . '-' . mb_substr($Word, $Pos + 1); + foreach (['back' => $Middle - $Offset, 'forward' => $Middle + $Offset] as $Pos) { + $Char = mb_substr($Word, $Pos, 1); + if (preg_match($vowels, $Char)) return mb_substr($Word, 0, $Pos + 1) . '-' . mb_substr($Word, $Pos + 1); } - } - + // Fallback split at middle return mb_substr($Word, 0, $Middle) . '-' . mb_substr($Word, $Middle); } -?> \ No newline at end of file +?> From cef12fc5cbb56c1d86190d2d8bc181f7a0668ad8 Mon Sep 17 00:00:00 2001 From: Kembreg1405 Date: Mon, 21 Jul 2025 11:05:34 +0200 Subject: [PATCH 3/8] Update EASYTABLES.php Formatting --- samples/EASYTABLES.php | 2 -- 1 file changed, 2 deletions(-) diff --git a/samples/EASYTABLES.php b/samples/EASYTABLES.php index 012a72a51e..150de34d5b 100644 --- a/samples/EASYTABLES.php +++ b/samples/EASYTABLES.php @@ -412,5 +412,3 @@ function Hyphenated($Word,$Theshold=10,$Language='en') // Fallback split at middle return mb_substr($Word, 0, $Middle) . '-' . mb_substr($Word, $Middle); } - -?> From d46d1af250315b81cce0e434d2e3868fbde724a4 Mon Sep 17 00:00:00 2001 From: Kembreg1405 Date: Mon, 21 Jul 2025 11:15:47 +0200 Subject: [PATCH 4/8] Update EASYTABLES.php PHP-CS-Fixer --- samples/EASYTABLES.php | 44 +++++++++++++++++++++--------------------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/samples/EASYTABLES.php b/samples/EASYTABLES.php index 150de34d5b..842d79e074 100644 --- a/samples/EASYTABLES.php +++ b/samples/EASYTABLES.php @@ -56,7 +56,7 @@ //WordTableStyle('alignment','center'); //WordTableStyle('alignTable','left'); //WordTableStyle('abbreviate',true); //Used for abbrev... -//WordTableStyle('hyphenate',false); +//WordTableStyle('hyphenate',false); //WordTableStyle('langugage','en'); //Used for hyphenation //WordColumnWidth(3,3000); //WordColumnAlign(2,'right'); @@ -373,6 +373,11 @@ function ConsonantPairs($Language) function Hyphenated($Word,$Theshold=10,$Language='en') { +$Middle = (int) floor($Length / 2); +$vowels = '/[aeiouy]/i'; +$Pairs=ConsonantPairs($Language); +$MaxOffset = 2; + if(preg_match('/^\d/',$Word)) return $Word; //Starts with a digit — looks like a number if(mb_strpos($Word, '-')!==false) return $Word; if(mb_strpos($Word, ' ')!==false) return $Word; @@ -381,11 +386,6 @@ function Hyphenated($Word,$Theshold=10,$Language='en') if($Length<$Theshold) return $Word; if(mb_strpos($Word,'name')!==false) return str_replace('name','-name',$Word); -$Middle = (int) floor($Length / 2); -$vowels = '/[aeiouy]/i'; -$Pairs=ConsonantPairs($Language); -$MaxOffset = 2; - // Check for consonant pairs for ($Offset = 0; $Offset <= $MaxOffset; $Offset++) foreach (['back' => $Middle - $Offset - 1, 'forward' => $Middle + $Offset - 1] as $Pos) { @@ -394,21 +394,21 @@ function Hyphenated($Word,$Theshold=10,$Language='en') } - // Check for identical letters - for ($Offset = 0; $Offset <= $MaxOffset; $Offset++) - foreach (['back' => $Middle - $Offset - 1, 'forward' => $Middle + $Offset - 1] as $Pos) { - $Char = mb_substr($Word, $Pos, 1); - $Next = mb_substr($Word, $Pos + 1, 1); - if ($Char === $Next) return mb_substr($Word, 0, $Pos + 1) . '-' . mb_substr($Word, $Pos + 1); - } - - // Check for vowels near middle - for ($Offset = 0; $Offset < $Middle - 1; $Offset++) - foreach (['back' => $Middle - $Offset, 'forward' => $Middle + $Offset] as $Pos) { - $Char = mb_substr($Word, $Pos, 1); - if (preg_match($vowels, $Char)) return mb_substr($Word, 0, $Pos + 1) . '-' . mb_substr($Word, $Pos + 1); - } +// Check for identical letters +for ($Offset = 0; $Offset <= $MaxOffset; $Offset++) + foreach (['back' => $Middle - $Offset - 1, 'forward' => $Middle + $Offset - 1] as $Pos) { + $Char = mb_substr($Word, $Pos, 1); + $Next = mb_substr($Word, $Pos + 1, 1); + if ($Char === $Next) return mb_substr($Word, 0, $Pos + 1) . '-' . mb_substr($Word, $Pos + 1); + } + +// Check for vowels near middle +for ($Offset = 0; $Offset < $Middle - 1; $Offset++) + foreach (['back' => $Middle - $Offset, 'forward' => $Middle + $Offset] as $Pos) { + $Char = mb_substr($Word, $Pos, 1); + if (preg_match($vowels, $Char)) return mb_substr($Word, 0, $Pos + 1) . '-' . mb_substr($Word, $Pos + 1); + } - // Fallback split at middle - return mb_substr($Word, 0, $Middle) . '-' . mb_substr($Word, $Middle); +// Fallback split at middle +return mb_substr($Word, 0, $Middle) . '-' . mb_substr($Word, $Middle); } From 5de728f82a9f3a0f570599eae3d0a7a49ce618c9 Mon Sep 17 00:00:00 2001 From: Kembreg1405 Date: Mon, 21 Jul 2025 11:18:52 +0200 Subject: [PATCH 5/8] Update EASYTABLES.php Syntax correction --- samples/EASYTABLES.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/samples/EASYTABLES.php b/samples/EASYTABLES.php index 842d79e074..457190b49d 100644 --- a/samples/EASYTABLES.php +++ b/samples/EASYTABLES.php @@ -76,6 +76,11 @@ define('clear',8); +define('left',24); +define('right',25); +define('center',26); +define('row',27); +define('remove',28); define('colorBlue','#3944BC'); define('colorBlueDark','#0A1172'); define('colorBlueLight','#59788E'); From e6ce9887e0c21abc5a8d7ce04706926bd78aa0c5 Mon Sep 17 00:00:00 2001 From: Kembreg1405 Date: Mon, 21 Jul 2025 12:12:25 +0200 Subject: [PATCH 6/8] Update EASYTABLES.php Spelling correction in 'language' --- samples/EASYTABLES.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/samples/EASYTABLES.php b/samples/EASYTABLES.php index 457190b49d..e4fdb529ff 100644 --- a/samples/EASYTABLES.php +++ b/samples/EASYTABLES.php @@ -57,7 +57,7 @@ //WordTableStyle('alignTable','left'); //WordTableStyle('abbreviate',true); //Used for abbrev... //WordTableStyle('hyphenate',false); -//WordTableStyle('langugage','en'); //Used for hyphenation +//WordTableStyle('language','en'); //Used for hyphenation //WordColumnWidth(3,3000); //WordColumnAlign(2,'right'); //WordColumnBold(1,true); @@ -286,7 +286,7 @@ function TableCell($row,$column) if(mb_strpos($Text,WordTableStyle('fadeCue'))!==false) {$FontStyle['color']=WordTableStyle('colorFaded');$Text=str_replace(WordTableStyle('fadeCue'),'',$Text);} $LetterThreshold=Round(WordTableStyle('width')/130); //Width 2000->Words longer than 15 letters will be hyphenated if(WordTableStyle('abbreviate')) $Text=Abbreviated($Text,$LetterThreshold); //Width 2000, abbreviates to 10 letters. -if(!WordTableStyle('abbreviate')) if(WordTableStyle('hyphenate')) $Text=Hyphenated($Text,$LetterThreshold,WordTableStyle('langugage')); +if(!WordTableStyle('abbreviate')) if(WordTableStyle('hyphenate')) $Text=Hyphenated($Text,$LetterThreshold,WordTableStyle('language')); AddTableCell($Text,$FontStyle,$SpacingStyle); } From 24630ce12cddbb7cbffc80dbe4eace0416198887 Mon Sep 17 00:00:00 2001 From: Kembreg1405 Date: Mon, 21 Jul 2025 15:51:27 +0200 Subject: [PATCH 7/8] Update EASYTABLES.php Logic correction. --- samples/EASYTABLES.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/samples/EASYTABLES.php b/samples/EASYTABLES.php index e4fdb529ff..3c3d00e6f3 100644 --- a/samples/EASYTABLES.php +++ b/samples/EASYTABLES.php @@ -296,7 +296,7 @@ function WordTableText($text=null) static $Row=0; static $Col=0; if($text===null) return $TextArray;//Return the array. -if($text===row) {$Row++;$Col=0;return;}//Start new row +if($text===row) {if(!empty($TheArray))$Row++;$Col=0;return;}//Start new row if(is_array($text)) { $text=array_filter($text,function($line){return trim($line)!=='';}); @@ -328,7 +328,7 @@ function WordColumnWidth($Column='',$Width='') static $WidthArray=[]; if($Column=='') {$WidthArray=null;unset($WidthArray);return;} if($Column==clear) {$WidthArray=null;unset($WidthArray);return;} -if($Width=='') return $WidthArray[$Column]; +if($Width=='') return isset($WidthArray[$Column])?$WidthArray[$Column]:''; $WidthArray[$Column]=$Width; } From 4e2536ab562b9448d5cc283264e3b98466269302 Mon Sep 17 00:00:00 2001 From: Kembreg1405 Date: Mon, 21 Jul 2025 17:27:55 +0200 Subject: [PATCH 8/8] Update EASYTABLES.php Syntax --- samples/EASYTABLES.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/samples/EASYTABLES.php b/samples/EASYTABLES.php index 3c3d00e6f3..6d41c080b0 100644 --- a/samples/EASYTABLES.php +++ b/samples/EASYTABLES.php @@ -296,7 +296,8 @@ function WordTableText($text=null) static $Row=0; static $Col=0; if($text===null) return $TextArray;//Return the array. -if($text===row) {if(!empty($TheArray))$Row++;$Col=0;return;}//Start new row +if($text===row) if(empty($TextArray))return; //Start new row on on empty array. No go +if($text===row) {$Row++;$Col=0;return;}//Start new row if(is_array($text)) { $text=array_filter($text,function($line){return trim($line)!=='';});