diff --git a/DOKU ENGLISCH/_css/inc.css.layout-styles-print.css b/DOKU ENGLISCH/_css/inc.css.layout-styles-print.css new file mode 100644 index 0000000..dab47d4 --- /dev/null +++ b/DOKU ENGLISCH/_css/inc.css.layout-styles-print.css @@ -0,0 +1,14 @@ + +/* =Main Layout +--------------------------------------------------------------------------------------------------*/ +#restrict-width { + position: relative; + left: 0; + top: 0; +} + +#grad-horiz-left, +#grad-horiz-right { + padding: 0; + background: none; +} \ No newline at end of file diff --git a/DOKU ENGLISCH/_css/inc.css.layout-styles.css b/DOKU ENGLISCH/_css/inc.css.layout-styles.css new file mode 100644 index 0000000..f1e4b95 --- /dev/null +++ b/DOKU ENGLISCH/_css/inc.css.layout-styles.css @@ -0,0 +1,74 @@ + +/* =General +--------------------------------------------------------------------------------------------------*/ + +/* Remove padding and margin */ +* { + margin: 0; + padding: 0; +} + + +/* =Main Layout +--------------------------------------------------------------------------------------------------*/ +body { + +} +#grad-horiz-left { + padding-left: 2em; + background: url(../_images/grad-horiz-white-to-gray.png) top left repeat-y; +} +#grad-horiz-right { + padding: 1em 2em 1em 0; + background: url(../_images/grad-horiz-gray-to-white.png) top right repeat-y; +} + + +/* =Main Menu +--------------------------------------------------------------------------------------------------*/ +ul.MainMenu { + clear: left; + list-style: none; + margin: 0; + padding: 0; + font-size: 0.8em; + margin-bottom: 1.8em; + line-height: 1.5; +} +ul.MainMenu li { + display: inline; + margin: 0; + padding: 0; +} +ul.MainMenu li span { + padding: 0 0.5em; +} +ul.MainMenu li a { + color: #999; +} +ul.MainMenu li a:hover { + color: #1240b0; +} +ul.MainMenu li.PlaceHolder { + float: none; +} + +.MainMenu .HighlightedLink { + color: #009999 +} + + +/* =Footer +--------------------------------------------------------------------------------------------------*/ +#footer { + border-top: 1px solid #036; + margin-top: 4em; + padding-top: 0.5em; + text-align: right; + font-size: 0.8em; + padding-bottom: 2em; +} +#ceon-button-logo, #jked-logo { + float: left; + margin-right: 14px; +} diff --git a/DOKU ENGLISCH/_css/inc.css.styles.css b/DOKU ENGLISCH/_css/inc.css.styles.css new file mode 100644 index 0000000..e6d18cf --- /dev/null +++ b/DOKU ENGLISCH/_css/inc.css.styles.css @@ -0,0 +1,597 @@ +/** + * Main CSS Stylesheet + */ + +/* =General +-----------------------------------------------------------------------------------------------------------------*/ + +/* Put margin back on certain elements */ +h1, h2, h3, h4, h5, h6, p, pre, blockquote, form, fieldset, table, ul { + margin: 1em 0; +} +ul, ol { padding-left: 1.5em; margin-top: 0.8em; margin-bottom: 0.8em; } +ul li { margin-bottom: 0.3em; } + +/* Remove border around linked images */ +a img { + border: 0; +} + +hr { + border: 0; + color: #777; + background-color: #777; + height: 2px; + margin-top: 0.7em; + margin-bottom: 0.7em; +} + +/* Selective display according to JavaScript availability/Print output being used */ +.JavaScriptOutput, .JavaScriptAndPrintOutput { + display: none; /* Disable until JavaScript is confirmed or print output is being used */ +} +.NoscriptAndPrintOutputBlock { + display: block; +} + + +/* =Forms +-----------------------------------------------------------------------------------------------------------------*/ + +form { + margin: 0; +} + +fieldset { + background: #f6f6f8; + padding: 0.5em 0.5em 0.5em 0.5em; + margin: 0 0 1em 0; + border: 1px solid #ccc; +} + +legend { + font-family : arial, helvetica, sans-serif; + font-weight: bold; +} + + +/* =Typography - General +-----------------------------------------------------------------------------------------------------------------*/ + +body { + font-family: arial, helvetica, sans-serif; + font-size: 85%; + line-height: 1.25; +} +p { + margin-top: 0; + margin-bottom: 0.8em; + line-height: 1.3em; +} +ul { + list-style: none; + margin: 0; + padding: 0; +} +ul ul { + list-style: disc; + margin-left: 3em; +} +ul li { + margin: 0; + padding: 0; + margin-bottom: 1em; + padding-bottom: 0; +} +ul li ul li { + margin-bottom: 0; + padding-bottom: 0; + padding-top: 0.2em; +} + + +/* =Headings - General +-----------------------------------------------------------------------------------------------------------------*/ +h1 { + letter-spacing : -0.5mm; + font-size: 170%; + color : #999999; + font-weight: bold; + margin-top: 0; + margin-bottom: 0.5em; +} +h2 { + font-size: 1.3em; + margin-top: 1.4em; + margin-bottom: 0.3em; + font-family: tahoma; +} +h3 { + font-size: 1.2em; + margin-top: 1.5em; + margin-bottom: 0.2em; + padding: 0; + font-family: tahoma; +} +h4 { + font-size: 1.1em; + margin-top: 1.3em; + margin-bottom: 0.5em; + font-family: tahoma; +} +h5 { + font-size: 1.05em; + margin-top: 1.8em; + margin-bottom: 0.5em; + padding-bottom: 0.2em; + border-bottom: 0.1em solid #ccc; + font-family: tahoma; +} +h6 { + font-size: 1em; + margin-top: 1.1em; + margin-bottom: 0.2em; + font-family: tahoma; +} + + +/* =Links +-----------------------------------------------------------------------------------------------------------------*/ +a:link { + text-decoration: none; + color: #1240b0; +} + +a:visited { + text-decoration: none; + color: #1240b0; +} + +a:hover { + text-decoration: underline; + color: #12b040; +} + +a:active { + text-decoration: none; + color: #1240b0; +} + + +/* =Layout - Tables +-----------------------------------------------------------------------------------------------------------------*/ +table { + border: 1px solid #999; + border-bottom: none; + border-right: none; + margin-bottom: 0.8em; +} +th { + text-align: left; + font-weight: normal; + font-size: 1.1em; + background: #ccc; +} +td { + vertical-align: top; +} +th, td { + padding: 0.3em; + border: 1px solid #999; + margin: 0; + border-left: none; + border-top: none; +} +table p { + margin-top: 0; +} + + +/* =Typography - General II +-----------------------------------------------------------------------------------------------------------------*/ +.FloatLeft { float: left; } +.FloatRight { float: right; } +.ClearBoth { clear: both; } +.ClearLeft { clear: left; } +.ClearRight { clear: right; } +.NoWrap { white-space: nowrap; } +.NoMarginTop { margin-top: 0; } +.NoMarginBottom { margin-bottom: 0 !important; } +.WeightNormal { font-weight: normal; } +.Underlined { text-decoration: underline; } +.FontStyleNormal { font-style: normal; } +.SpacerSmall { clear: both; font-size: 0.1em; line-height: 0.1em; height: 0.1em; } +.HorizontalSpacer { margin-left: 0.5em; margin-right: 0.5em; color: #ddd; } +.DoubleSpaceAbove { + margin-top: 2em; +} +.DoubleSpaceBelow { + margin-bottom: 2em; +} +.SpaceAbove { + margin-top: 1em; +} +.ExtraMarginLeft { + margin-left: 2em; +} + +h1.Title { float: left; line-height: 1em; padding-bottom: 0; } + +.TitleByLineWrapper { + line-height: 1.5em; + padding-bottom: 0.5em; + border-bottom: 1px solid #999; + margin-bottom: 0.5em; +} + +.CrossFadeText { + position: absolute; + top: 16px; + right: 0; + margin: 0 32px 0 0; + padding: 0; +} +#byline a { + color: #000; +} +#ceon-link a { + font-weight: bold; +} +#ceon-link a:visited { + color: #1240b0; +} +#ceon-link { + font-family: tahoma; + visibility: hidden; +} + +.DonationRequest { + width: 30%; + float: right; + background: #eee; + padding: 0.5em 0.5em 0.5em 0.5em; + border: 1px solid #999; + margin: 0 0 1em 2em; +} + +.OtherZenCartReleasesIntroBox { + width: 48%; + float: left; + background: #fafafa; + border: 1px solid #999; +} + +.OtherCeonSoftwareIntroBox { + width: 48%; + float: right; + background: #fafafa; + border: 1px solid #999; +} + +.OtherZenCartReleasesIntroBox, .OtherCeonSoftwareIntroBox { + margin-top: 1em; +} + +.OtherZenCartReleasesIntroBox h2, .OtherCeonSoftwareIntroBox h2 { + margin: 0; + padding: 0; + font-family: tahoma; +} +.OtherZenCartReleasesIntroBox h2, .OtherCeonSoftwareIntroBox h2 { + background: #eee; + padding: 0.5em 0.5em 0.5em 0.5em; +} +.OtherZenCartReleasesIntroBox h3, .OtherCeonSoftwareIntroBox h3 { + font-size: 1.3em; + font-weight: normal; + margin: 0 0 0.4em 0; + padding: 0.3em 0.5em 0.3em 0.5em; + background: #ddd; +} +.OtherZenCartReleasesIntroBox p, .OtherCeonSoftwareIntroBox p { + padding: 0 0.65em 0 0.65em; +} +#other-ceon-software-card-pay-logo { + margin-top: -5px; + margin-right: -5px; +} + +ul.OtherCeonReleasesMenu { + clear: left; + list-style: disc; + margin-left: 1em; + margin-top: 0.9em; + font-weight: bold; + padding: 0 0.65em 0.5em 0.65em; /* 0.5em x 1.3 */ +} +ul.OtherCeonReleasesMenu li { + font-size: 1em; + line-height: 1.3; + margin: 0 0 0.55em 0; +} + +h3.OtherReleasesSectionTitle { + margin-top: 2em; + border-bottom: 1px solid #999; + padding-bottom: 0.3em; + margin-bottom: 1.2em; + font-family: tahoma; +} + +fieldset.OtherReleases, fieldset.ModuleOverview { + margin: 0 0 2.3em 0; + line-height: 1.3; +} +fieldset.OtherReleases legend, fieldset.ModuleOverview legend { + font-size: 1.4em; +} +fieldset.OtherReleases h3.Top, fieldset.ModuleOverview h3.Top { + margin-top: 0; +} +fieldset.OtherReleases h3, fieldset.ModuleOverview h3 { + margin-bottom: 0.3em; +} +fieldset.OtherReleases .Example, fieldset.ModuleOverview .Example { + border-top: 3px solid #d8d8e8; + background: #efefff; +} +fieldset.OtherReleases ul h1 { + margin-bottom: 0.2em; +} + +#ceon-pv-dropdown-example { margin-right: 350px; margin-left: 65px; } +#ceon-pv-uri-mappings-example { margin-right: 80px; margin-left: 65px; } + +.JavaScriptAndPrintOutput { + display: none; +} + +ul.FeatureListMenu { list-style: disc; margin-left: 1.5em; } +ul.FeatureListMenu li { margin: 0; margin-top: 0.4em; padding-left: 0.5em; font-size: 1.2em; } +ul.FeatureListMenu li.MainFeature { font-weight: bold; } +.MainFeatureSublist { font-size: 0.8em; font-weight: normal; } +.ShowHide { margin-bottom: 0; } +.ShowHideWithMarginBottom { margin-bottom: 0.8em; } + +ul.SystemRequirements, ul.BulletedList { + list-style: disc; + margin-left: 2em; + margin-bottom: 0.8em; +} +ul.Steps { list-style: none; } +ul.SystemRequirements li, ul.TighterList li { margin-bottom: 0.5em; } +ul ul.NoBullets { list-style: none } + +ol#configuration-submenu { margin-left: 2em; margin-bottom: 0.8em; margin-top: 0.8em; } +ol#configuration-submenu li { margin-bottom: 0.5em; } + +ol#configuration-submenu ul { list-style: none; margin-left: 2em; margin-bottom: 0.5em; margin-top: 0.5em; } +ol#configuration-submenu ul li { margin-top: 0em; margin-bottom: 0.5em; } + +ol#configuration-submenu ol { margin-bottom: 0.5em; margin-top: 0.4em; } +ol#configuration-submenu ol li { margin-top: 0em; margin-bottom: 0.25em; } + +ol.TableOfContents { margin-left: 2em; margin-bottom: 2.5em; margin-top: 0.8em; } +ol.TableOfContents li { margin-bottom: 0.5em; } + +ol.TableOfContents ol { margin-bottom: 0.5em; margin-top: 0.4em; } +ol.TableOfContents ol li { margin-top: 0em; margin-bottom: 0.25em; } + +ol#installation-overview { margin-left: 2em; padding-left: 0em; } +ol#installation-overview li, ol.IntegrationOverview li { margin-bottom: 0.5em; } + +ol.InstallationSteps { margin-left: 2em; padding-left: 0em; } +ol.InstallationSteps li { margin-bottom: 2.2em; } + +ol.InstallationSteps ul.Steps { margin-left: 1em; } +ol.InstallationSteps ul.Steps li, ol.InstallationSteps ul.BulletedList li { margin-bottom: 0.5em; } + +ol.InstallationSteps ol.TableOfContents li { + margin-bottom: 0.4em; + padding: 0; +} + +p.Intro { clear: right; margin-top: 1em; } + +p.BackToTop, p.OtherReleasesBackToTop { + text-align: left; + font-size: 0.9em; + clear: both; + margin-top: 2em; +} +p.OtherReleasesBackToTop { margin: -1em 0 4em 0; } + +p.BackToTableOfContents { font-size: 0.9em; clear: both; margin: 1em 0 2.5em 0; } + +.FileName { font-style: italic; padding: 0 0.4em; white-space: nowrap; } + +.NewFeature { color: #3399ff; } + +.Steps, .Note { + background: #eee; + padding: 0.4em 0.5em 0.4em 0.5em; + border: 1px solid #999; + margin-bottom: 1em; +} +.Steps .FileName { + background: #e0e0e0; +} +.Steps p { + margin-top: 0; +} +.Steps h5 { + margin-top: 0; + border: none; + margin-bottom: 0.2em; +} +p.Note { padding-bottom: 0.5em; } +p.FeatureNote { margin-left: 2em; margin-right: 2em; font-size: 0.85em; } + +.Tip { margin-left: 2em; } + +.Example, li.Example { + background: #f4f4f4; + padding: 0.5em 0.5em 0.5em 0.5em; + border-top: 3px solid #ddd; + margin-bottom: 1em; + margin-left: 7em; + margin-right: 3.5em; +} + +li.Example { list-style: none; margin-top: 0.4em; margin-bottom: 0.4em; } + +.Testimonial { + float: right; + clear: right; + width: 13em; + margin: 0 0 1em 1.8em; + border: 1px solid #999; + padding: 0.5em; + background: #f4f4f4; + line-height: 1.3; +} + +.Testimonial p { + margin: 0 0 0.5em 0; +} +.Testimonial blockquote { + margin: 0; +} +.Testimonial p.TestimonialAuthor { margin-top: 0.4em; margin-bottom: 0; } + +.Testimonial blockquote { + font-family: georgia, times, serif; + font-style: italic; +} + +code { font-family: "Courier New", Courier, monospace; line-height: 1.3; } + +.CodeDifference { color: red; } + +ul.MerchantAccountsSupported { list-style: circle; padding-left: 2em; } + +img.Screenshot { + background: #eee; + padding: 0.5em; + border: 1px solid #999; + margin-bottom: 1em; + margin-left: 1em; +} + +img.RightImage { float: right; margin: 0 0 1em 1em; clear: right; } + +img.OtherReleasesLogo { margin-left: 20px; margin-right: 11px; } + +img.ExampleScreenshot { margin: 0.8em 0; border: 1px solid #999; } + +#upgrade-older-versions { display: none; } + +.ExtraEmphasis { + color: #12b040; +} +.ExtraEmphasis2 { + color: #1240b0; +} +.Feature { + color: #062a80; +} +h1.ExtraEmphasis { + letter-spacing: -0.40mm; +} +h2.ExtraEmphasis { + font-family : arial, helvetica, sans-serif; + font-size: 170%; + color: #12b040; + letter-spacing: -0.38mm; + margin-top: 0.9em; + margin-bottom: 0.5em; + line-height: 1.2; +} + +.FeatureTitle { + font-family: tahoma; +} +.FeatureExtraInfo { + font-size: 0.9em; + margin: 0.2em 0 0.6em 0; + line-height: 1.25; + color: #555 +} + +.Highlight1 { + background-color: #ffffd5 +} +.Highlight2 { + background-color: #d5ffff +} +.Highlight3 { + background-color: #ffd5ff +} + +ul.ExtraListItemSpacing li { + margin-bottom: 2.0em; +} +h4 em { + text-decoration: underline; + font-style: normal; +} + +.UnderlinedTitle { + margin-top: 1.3em; + margin-bottom: 0.6em; + padding-bottom: 0.15em; + border-bottom: 0.1em solid #ccc; +} +em.ConfigurationOption { + font-style: italic; + font-weight: bold; +} + +#faqs-content h4 { + font-family: arial, helvetica, sans-serif; +} + +.RevisionHistoryEntry { + margin-bottom: 0.3em; +} +.RevisionHistoryLastEntry { + margin-bottom: 0; +} + +.ScreenshotsWithCaption { + float: right; +} +.ScreenshotsWithCaption p { + width: 270px; + text-align: center; + font-size: 0.8em; + color: #999; + margin: 0.6em 0.2em 1em 1.4em; + padding: 0; +} + +.ScreenshotDesc { + margin-right: 265px; +} +.ScreenshotImageLink { + width: 280px; + float: right; +} + +.TextWithTooltipTitleNowrap { + cursor: help; + white-space: nowrap; +} + +.DonationButton { + float: right; + margin: 3px 3px 1em 1.2em; +} + +@media print +{ + .Title, .TitleByLineWrapper, ul.MainMenu { + display: none; + } + .NoscriptAndPrintOutputBlock { display: block; } +} \ No newline at end of file diff --git a/DOKU ENGLISCH/_css/litebox-ie.css b/DOKU ENGLISCH/_css/litebox-ie.css new file mode 100644 index 0000000..558972d --- /dev/null +++ b/DOKU ENGLISCH/_css/litebox-ie.css @@ -0,0 +1,16 @@ +#overlay { + filter:alpha(opacity=60); +} + +.clearfix { + /* Hides from IE-mac \*/ + height: 1%; + /* End hide from IE-mac */ +} + +#prevLink:hover, #prevLink:visited:hover { + background: url(../_images/litebox/prevlabel-no-trans.png) left 15% no-repeat; +} +#nextLink:hover, #nextLink:visited:hover { + background: url(../_images/litebox/nextlabel-no-trans.png) right 15% no-repeat; +} \ No newline at end of file diff --git a/DOKU ENGLISCH/_css/litebox.css b/DOKU ENGLISCH/_css/litebox.css new file mode 100644 index 0000000..8e23f19 --- /dev/null +++ b/DOKU ENGLISCH/_css/litebox.css @@ -0,0 +1,140 @@ +#lightbox { + position: absolute; + top: 10px; + left: 0; + width: 100%; + z-index: 100; + text-align: center; + line-height: 0; +} + +#lightbox a img { border: none; } + +#outerImageContainer { + position: relative; + background-color: #fff; + width: 250px; + height: 250px; + margin: 0 auto; +} + +#imageContainer { + padding: 8px; +} + +#loading { + position: absolute; + top: 40%; + left: 0%; + height: 25%; + width: 100%; + text-align: center; + line-height: 0; +} + +#hoverNav { + position: absolute; + top: 0; + left: 0; + height: 100%; + width: 100%; + z-index: 10; +} + +#imageContainer>#hoverNav { left: 0;} +#hoverNav a { outline: none; } + +#prevLink, #nextLink { + width: 49%; + height: 100%; + background: transparent url(../_images/litebox/blank.gif) no-repeat; /* Trick IE into showing hover */ + display: block; +} + +#prevLink { + left: 0; + float: left; +} + +#nextLink { + right: 0; + float: right; +} + +#prevLink:hover, #prevLink:visited:hover { + background: url(../_images/litebox/prevlabel.png) left 15% no-repeat; +} + +#nextLink:hover, #nextLink:visited:hover { + background: url(../_images/litebox/nextlabel.png) right 15% no-repeat; +} + + +#imageDataContainer { + font: 11px Tahoma, Arial, Verdana, Helvetica, sans-serif; + background-color: #fff; + margin: 0; + line-height: 1.2; +} + +#imageData { + padding: 8px 8px 0.2em 8px; +} + +#imageData #imageDetails { + width: 84%; + float: left; + text-align: left; +} + +#imageData #caption { + font-weight: bold; + color: #000; + padding-top: 0.3em; + line-height: 1.3; + width: 100%; +} + +#content #imageData #caption { + font-weight: bold; + color: #000; + line-height: 1.3; +} + +#imageData #numberDisplay { + display: block; + clear: left; + padding-top: 0.3em; + padding-bottom: 0.4em; +} + +#imageData #bottomNavClose { + width: 66px; + float: right; + padding-bottom: 0.7em; +} + +#overlay { + position: absolute; + top: 0; + left: 0; + z-index: 90; + width: 100%; + height: 500px; + background-color: #000; + -moz-opacity: 0.6; + opacity: 0.6; +} + +.clearfix:after { + content: "."; + display: block; + height: 0; + clear: both; + visibility: hidden; +} + +.clearfix { + display: inline-block; + width: 100%; +} \ No newline at end of file diff --git a/DOKU ENGLISCH/_images/advanced-shipper-localities-extension-logo-w150.png b/DOKU ENGLISCH/_images/advanced-shipper-localities-extension-logo-w150.png new file mode 100644 index 0000000..3bdcf5d Binary files /dev/null and b/DOKU ENGLISCH/_images/advanced-shipper-localities-extension-logo-w150.png differ diff --git a/DOKU ENGLISCH/_images/advanced-shipper-localities-screenshots/city-selection-example.png b/DOKU ENGLISCH/_images/advanced-shipper-localities-screenshots/city-selection-example.png new file mode 100644 index 0000000..1704e6f Binary files /dev/null and b/DOKU ENGLISCH/_images/advanced-shipper-localities-screenshots/city-selection-example.png differ diff --git a/DOKU ENGLISCH/_images/advanced-shipper-localities-screenshots/state-selection-example.png b/DOKU ENGLISCH/_images/advanced-shipper-localities-screenshots/state-selection-example.png new file mode 100644 index 0000000..1165104 Binary files /dev/null and b/DOKU ENGLISCH/_images/advanced-shipper-localities-screenshots/state-selection-example.png differ diff --git a/DOKU ENGLISCH/_images/advanced-shipper-logo-w150.png b/DOKU ENGLISCH/_images/advanced-shipper-logo-w150.png new file mode 100644 index 0000000..c6d66f2 Binary files /dev/null and b/DOKU ENGLISCH/_images/advanced-shipper-logo-w150.png differ diff --git a/DOKU ENGLISCH/_images/advanced-shipper-screenshots/combination-rate-example.png b/DOKU ENGLISCH/_images/advanced-shipper-screenshots/combination-rate-example.png new file mode 100644 index 0000000..3807b1c Binary files /dev/null and b/DOKU ENGLISCH/_images/advanced-shipper-screenshots/combination-rate-example.png differ diff --git a/DOKU ENGLISCH/_images/advanced-shipper-screenshots/method-comb-example.png b/DOKU ENGLISCH/_images/advanced-shipper-screenshots/method-comb-example.png new file mode 100644 index 0000000..92b8857 Binary files /dev/null and b/DOKU ENGLISCH/_images/advanced-shipper-screenshots/method-comb-example.png differ diff --git a/DOKU ENGLISCH/_images/advanced-shipper-screenshots/recurring-methods-example.png b/DOKU ENGLISCH/_images/advanced-shipper-screenshots/recurring-methods-example.png new file mode 100644 index 0000000..186b2df Binary files /dev/null and b/DOKU ENGLISCH/_images/advanced-shipper-screenshots/recurring-methods-example.png differ diff --git a/DOKU ENGLISCH/_images/advanced-shipper-zones-extension-logo-w150.png b/DOKU ENGLISCH/_images/advanced-shipper-zones-extension-logo-w150.png new file mode 100644 index 0000000..f3f393c Binary files /dev/null and b/DOKU ENGLISCH/_images/advanced-shipper-zones-extension-logo-w150.png differ diff --git a/DOKU ENGLISCH/_images/back-in-stock-notifications-screenshots/notification-form-link.png b/DOKU ENGLISCH/_images/back-in-stock-notifications-screenshots/notification-form-link.png new file mode 100644 index 0000000..ff8fe52 Binary files /dev/null and b/DOKU ENGLISCH/_images/back-in-stock-notifications-screenshots/notification-form-link.png differ diff --git a/DOKU ENGLISCH/_images/cardpay-sage-pay-edition-logo-w178.png b/DOKU ENGLISCH/_images/cardpay-sage-pay-edition-logo-w178.png new file mode 100644 index 0000000..d5cdff4 Binary files /dev/null and b/DOKU ENGLISCH/_images/cardpay-sage-pay-edition-logo-w178.png differ diff --git a/DOKU ENGLISCH/_images/cardpay-sage-pay-edition-screenshots/payment-confirmation-1-w250.png b/DOKU ENGLISCH/_images/cardpay-sage-pay-edition-screenshots/payment-confirmation-1-w250.png new file mode 100644 index 0000000..de55b97 Binary files /dev/null and b/DOKU ENGLISCH/_images/cardpay-sage-pay-edition-screenshots/payment-confirmation-1-w250.png differ diff --git a/DOKU ENGLISCH/_images/cardpay-sage-pay-edition-screenshots/payment-confirmation-1-w614.png b/DOKU ENGLISCH/_images/cardpay-sage-pay-edition-screenshots/payment-confirmation-1-w614.png new file mode 100644 index 0000000..c400e9d Binary files /dev/null and b/DOKU ENGLISCH/_images/cardpay-sage-pay-edition-screenshots/payment-confirmation-1-w614.png differ diff --git a/DOKU ENGLISCH/_images/cardpay-sage-pay-edition-screenshots/payment-form-1-w250.png b/DOKU ENGLISCH/_images/cardpay-sage-pay-edition-screenshots/payment-form-1-w250.png new file mode 100644 index 0000000..f191a5d Binary files /dev/null and b/DOKU ENGLISCH/_images/cardpay-sage-pay-edition-screenshots/payment-form-1-w250.png differ diff --git a/DOKU ENGLISCH/_images/cardpay-sage-pay-edition-screenshots/payment-form-1-w614.png b/DOKU ENGLISCH/_images/cardpay-sage-pay-edition-screenshots/payment-form-1-w614.png new file mode 100644 index 0000000..db5ecd3 Binary files /dev/null and b/DOKU ENGLISCH/_images/cardpay-sage-pay-edition-screenshots/payment-form-1-w614.png differ diff --git a/DOKU ENGLISCH/_images/cardpay-sage-pay-edition-screenshots/payment-form-2-tax-and-surcharge-w250.png b/DOKU ENGLISCH/_images/cardpay-sage-pay-edition-screenshots/payment-form-2-tax-and-surcharge-w250.png new file mode 100644 index 0000000..26b5c50 Binary files /dev/null and b/DOKU ENGLISCH/_images/cardpay-sage-pay-edition-screenshots/payment-form-2-tax-and-surcharge-w250.png differ diff --git a/DOKU ENGLISCH/_images/cardpay-sage-pay-edition-screenshots/payment-form-2-tax-and-surcharge-w614.png b/DOKU ENGLISCH/_images/cardpay-sage-pay-edition-screenshots/payment-form-2-tax-and-surcharge-w614.png new file mode 100644 index 0000000..00f0036 Binary files /dev/null and b/DOKU ENGLISCH/_images/cardpay-sage-pay-edition-screenshots/payment-form-2-tax-and-surcharge-w614.png differ diff --git a/DOKU ENGLISCH/_images/cardpay-sage-pay-edition-screenshots/payment-form-3-billing-and-email-addresses-w250.png b/DOKU ENGLISCH/_images/cardpay-sage-pay-edition-screenshots/payment-form-3-billing-and-email-addresses-w250.png new file mode 100644 index 0000000..e04ecaf Binary files /dev/null and b/DOKU ENGLISCH/_images/cardpay-sage-pay-edition-screenshots/payment-form-3-billing-and-email-addresses-w250.png differ diff --git a/DOKU ENGLISCH/_images/cardpay-sage-pay-edition-screenshots/payment-form-3-billing-and-email-addresses-w614.png b/DOKU ENGLISCH/_images/cardpay-sage-pay-edition-screenshots/payment-form-3-billing-and-email-addresses-w614.png new file mode 100644 index 0000000..8e7f5d3 Binary files /dev/null and b/DOKU ENGLISCH/_images/cardpay-sage-pay-edition-screenshots/payment-form-3-billing-and-email-addresses-w614.png differ diff --git a/DOKU ENGLISCH/_images/cardpay-sage-pay-edition-screenshots/payment-form-4-errors-w250.png b/DOKU ENGLISCH/_images/cardpay-sage-pay-edition-screenshots/payment-form-4-errors-w250.png new file mode 100644 index 0000000..19020b7 Binary files /dev/null and b/DOKU ENGLISCH/_images/cardpay-sage-pay-edition-screenshots/payment-form-4-errors-w250.png differ diff --git a/DOKU ENGLISCH/_images/cardpay-sage-pay-edition-screenshots/payment-form-4-errors-w614.png b/DOKU ENGLISCH/_images/cardpay-sage-pay-edition-screenshots/payment-form-4-errors-w614.png new file mode 100644 index 0000000..5d7afe4 Binary files /dev/null and b/DOKU ENGLISCH/_images/cardpay-sage-pay-edition-screenshots/payment-form-4-errors-w614.png differ diff --git a/DOKU ENGLISCH/_images/cardsave-logo-w150.png b/DOKU ENGLISCH/_images/cardsave-logo-w150.png new file mode 100644 index 0000000..05e857c Binary files /dev/null and b/DOKU ENGLISCH/_images/cardsave-logo-w150.png differ diff --git a/DOKU ENGLISCH/_images/ceon-button-logo.png b/DOKU ENGLISCH/_images/ceon-button-logo.png new file mode 100644 index 0000000..da70aa0 Binary files /dev/null and b/DOKU ENGLISCH/_images/ceon-button-logo.png differ diff --git a/DOKU ENGLISCH/_images/ceon-donation-button-white.png b/DOKU ENGLISCH/_images/ceon-donation-button-white.png new file mode 100644 index 0000000..fa3992f Binary files /dev/null and b/DOKU ENGLISCH/_images/ceon-donation-button-white.png differ diff --git a/DOKU ENGLISCH/_images/ceon-donation-button.png b/DOKU ENGLISCH/_images/ceon-donation-button.png new file mode 100644 index 0000000..1135976 Binary files /dev/null and b/DOKU ENGLISCH/_images/ceon-donation-button.png differ diff --git a/DOKU ENGLISCH/_images/ceon-product-variants-screenshots/aarck-and-aawe-attr-form-1.png b/DOKU ENGLISCH/_images/ceon-product-variants-screenshots/aarck-and-aawe-attr-form-1.png new file mode 100644 index 0000000..abc497b Binary files /dev/null and b/DOKU ENGLISCH/_images/ceon-product-variants-screenshots/aarck-and-aawe-attr-form-1.png differ diff --git a/DOKU ENGLISCH/_images/ceon-product-variants-screenshots/aarck-and-aawe-attr-form-2.png b/DOKU ENGLISCH/_images/ceon-product-variants-screenshots/aarck-and-aawe-attr-form-2.png new file mode 100644 index 0000000..05c7d8a Binary files /dev/null and b/DOKU ENGLISCH/_images/ceon-product-variants-screenshots/aarck-and-aawe-attr-form-2.png differ diff --git a/DOKU ENGLISCH/_images/ceon-product-variants-screenshots/aarck-and-aawe-attr-form-3.png b/DOKU ENGLISCH/_images/ceon-product-variants-screenshots/aarck-and-aawe-attr-form-3.png new file mode 100644 index 0000000..ca84262 Binary files /dev/null and b/DOKU ENGLISCH/_images/ceon-product-variants-screenshots/aarck-and-aawe-attr-form-3.png differ diff --git a/DOKU ENGLISCH/_images/ceon-product-variants-screenshots/aarck-and-aawe-dropdown-1-w250.png b/DOKU ENGLISCH/_images/ceon-product-variants-screenshots/aarck-and-aawe-dropdown-1-w250.png new file mode 100644 index 0000000..9b19432 Binary files /dev/null and b/DOKU ENGLISCH/_images/ceon-product-variants-screenshots/aarck-and-aawe-dropdown-1-w250.png differ diff --git a/DOKU ENGLISCH/_images/ceon-product-variants-screenshots/aarck-and-aawe-dropdown-1.png b/DOKU ENGLISCH/_images/ceon-product-variants-screenshots/aarck-and-aawe-dropdown-1.png new file mode 100644 index 0000000..3eb3bf5 Binary files /dev/null and b/DOKU ENGLISCH/_images/ceon-product-variants-screenshots/aarck-and-aawe-dropdown-1.png differ diff --git a/DOKU ENGLISCH/_images/ceon-product-variants-screenshots/aarck-and-aawe-dropdown-2.png b/DOKU ENGLISCH/_images/ceon-product-variants-screenshots/aarck-and-aawe-dropdown-2.png new file mode 100644 index 0000000..652226d Binary files /dev/null and b/DOKU ENGLISCH/_images/ceon-product-variants-screenshots/aarck-and-aawe-dropdown-2.png differ diff --git a/DOKU ENGLISCH/_images/ceon-product-variants-screenshots/admin-utility-1-w250.png b/DOKU ENGLISCH/_images/ceon-product-variants-screenshots/admin-utility-1-w250.png new file mode 100644 index 0000000..c782096 Binary files /dev/null and b/DOKU ENGLISCH/_images/ceon-product-variants-screenshots/admin-utility-1-w250.png differ diff --git a/DOKU ENGLISCH/_images/ceon-product-variants-screenshots/admin-utility-1.png b/DOKU ENGLISCH/_images/ceon-product-variants-screenshots/admin-utility-1.png new file mode 100644 index 0000000..023d4db Binary files /dev/null and b/DOKU ENGLISCH/_images/ceon-product-variants-screenshots/admin-utility-1.png differ diff --git a/DOKU ENGLISCH/_images/ceon-product-variants-screenshots/admin-utility-2.png b/DOKU ENGLISCH/_images/ceon-product-variants-screenshots/admin-utility-2.png new file mode 100644 index 0000000..8777122 Binary files /dev/null and b/DOKU ENGLISCH/_images/ceon-product-variants-screenshots/admin-utility-2.png differ diff --git a/DOKU ENGLISCH/_images/ceon-product-variants-screenshots/hires/aarck-and-aawe-attr-form-1.png b/DOKU ENGLISCH/_images/ceon-product-variants-screenshots/hires/aarck-and-aawe-attr-form-1.png new file mode 100644 index 0000000..390ec96 Binary files /dev/null and b/DOKU ENGLISCH/_images/ceon-product-variants-screenshots/hires/aarck-and-aawe-attr-form-1.png differ diff --git a/DOKU ENGLISCH/_images/ceon-product-variants-screenshots/hires/aarck-and-aawe-attr-form-2.png b/DOKU ENGLISCH/_images/ceon-product-variants-screenshots/hires/aarck-and-aawe-attr-form-2.png new file mode 100644 index 0000000..eccc66f Binary files /dev/null and b/DOKU ENGLISCH/_images/ceon-product-variants-screenshots/hires/aarck-and-aawe-attr-form-2.png differ diff --git a/DOKU ENGLISCH/_images/ceon-product-variants-screenshots/hires/aarck-and-aawe-attr-form-3.png b/DOKU ENGLISCH/_images/ceon-product-variants-screenshots/hires/aarck-and-aawe-attr-form-3.png new file mode 100644 index 0000000..2c6bdc2 Binary files /dev/null and b/DOKU ENGLISCH/_images/ceon-product-variants-screenshots/hires/aarck-and-aawe-attr-form-3.png differ diff --git a/DOKU ENGLISCH/_images/ceon-product-variants-screenshots/hires/aarck-and-aawe-dropdown-1.png b/DOKU ENGLISCH/_images/ceon-product-variants-screenshots/hires/aarck-and-aawe-dropdown-1.png new file mode 100644 index 0000000..50a7279 Binary files /dev/null and b/DOKU ENGLISCH/_images/ceon-product-variants-screenshots/hires/aarck-and-aawe-dropdown-1.png differ diff --git a/DOKU ENGLISCH/_images/ceon-product-variants-screenshots/hires/aarck-and-aawe-dropdown-2.png b/DOKU ENGLISCH/_images/ceon-product-variants-screenshots/hires/aarck-and-aawe-dropdown-2.png new file mode 100644 index 0000000..1fe3194 Binary files /dev/null and b/DOKU ENGLISCH/_images/ceon-product-variants-screenshots/hires/aarck-and-aawe-dropdown-2.png differ diff --git a/DOKU ENGLISCH/_images/ceon-product-variants-screenshots/hires/admin-utility-1-orig.png b/DOKU ENGLISCH/_images/ceon-product-variants-screenshots/hires/admin-utility-1-orig.png new file mode 100644 index 0000000..99a292b Binary files /dev/null and b/DOKU ENGLISCH/_images/ceon-product-variants-screenshots/hires/admin-utility-1-orig.png differ diff --git a/DOKU ENGLISCH/_images/ceon-product-variants-screenshots/hires/admin-utility-1.png b/DOKU ENGLISCH/_images/ceon-product-variants-screenshots/hires/admin-utility-1.png new file mode 100644 index 0000000..b5cb4c5 Binary files /dev/null and b/DOKU ENGLISCH/_images/ceon-product-variants-screenshots/hires/admin-utility-1.png differ diff --git a/DOKU ENGLISCH/_images/ceon-product-variants-screenshots/hires/admin-utility-2.png b/DOKU ENGLISCH/_images/ceon-product-variants-screenshots/hires/admin-utility-2.png new file mode 100644 index 0000000..f5f4319 Binary files /dev/null and b/DOKU ENGLISCH/_images/ceon-product-variants-screenshots/hires/admin-utility-2.png differ diff --git a/DOKU ENGLISCH/_images/ceon-product-variants-screenshots/hires/product-listing-1.png b/DOKU ENGLISCH/_images/ceon-product-variants-screenshots/hires/product-listing-1.png new file mode 100644 index 0000000..6937377 Binary files /dev/null and b/DOKU ENGLISCH/_images/ceon-product-variants-screenshots/hires/product-listing-1.png differ diff --git a/DOKU ENGLISCH/_images/ceon-product-variants-screenshots/product-listing-1.png b/DOKU ENGLISCH/_images/ceon-product-variants-screenshots/product-listing-1.png new file mode 100644 index 0000000..5860245 Binary files /dev/null and b/DOKU ENGLISCH/_images/ceon-product-variants-screenshots/product-listing-1.png differ diff --git a/DOKU ENGLISCH/_images/ceon-sage-pay-direct-screenshots/checkout-payment-page-1-w250.png b/DOKU ENGLISCH/_images/ceon-sage-pay-direct-screenshots/checkout-payment-page-1-w250.png new file mode 100644 index 0000000..2e77501 Binary files /dev/null and b/DOKU ENGLISCH/_images/ceon-sage-pay-direct-screenshots/checkout-payment-page-1-w250.png differ diff --git a/DOKU ENGLISCH/_images/ceon-sage-pay-direct-screenshots/checkout-payment-page-1-w545.png b/DOKU ENGLISCH/_images/ceon-sage-pay-direct-screenshots/checkout-payment-page-1-w545.png new file mode 100644 index 0000000..ecda411 Binary files /dev/null and b/DOKU ENGLISCH/_images/ceon-sage-pay-direct-screenshots/checkout-payment-page-1-w545.png differ diff --git a/DOKU ENGLISCH/_images/ceon-sage-pay-direct-screenshots/transaction-admin/payment-main-no-actions-yet-w250.png b/DOKU ENGLISCH/_images/ceon-sage-pay-direct-screenshots/transaction-admin/payment-main-no-actions-yet-w250.png new file mode 100644 index 0000000..fb26d17 Binary files /dev/null and b/DOKU ENGLISCH/_images/ceon-sage-pay-direct-screenshots/transaction-admin/payment-main-no-actions-yet-w250.png differ diff --git a/DOKU ENGLISCH/_images/ceon-sage-pay-direct-screenshots/transaction-admin/payment-main-no-actions-yet-w680.png b/DOKU ENGLISCH/_images/ceon-sage-pay-direct-screenshots/transaction-admin/payment-main-no-actions-yet-w680.png new file mode 100644 index 0000000..2f54543 Binary files /dev/null and b/DOKU ENGLISCH/_images/ceon-sage-pay-direct-screenshots/transaction-admin/payment-main-no-actions-yet-w680.png differ diff --git a/DOKU ENGLISCH/_images/ceon-sage-pay-direct-screenshots/transaction-admin/payment-main-totals-after-partial-refund-w680.png b/DOKU ENGLISCH/_images/ceon-sage-pay-direct-screenshots/transaction-admin/payment-main-totals-after-partial-refund-w680.png new file mode 100644 index 0000000..e4c7228 Binary files /dev/null and b/DOKU ENGLISCH/_images/ceon-sage-pay-direct-screenshots/transaction-admin/payment-main-totals-after-partial-refund-w680.png differ diff --git a/DOKU ENGLISCH/_images/ceon-sage-pay-direct-screenshots/transaction-admin/payment-refund-partial-amount-w680.png b/DOKU ENGLISCH/_images/ceon-sage-pay-direct-screenshots/transaction-admin/payment-refund-partial-amount-w680.png new file mode 100644 index 0000000..612f418 Binary files /dev/null and b/DOKU ENGLISCH/_images/ceon-sage-pay-direct-screenshots/transaction-admin/payment-refund-partial-amount-w680.png differ diff --git a/DOKU ENGLISCH/_images/ceon-sage-pay-direct-screenshots/transaction-admin/payment-summary-after-partial-refund-w680.png b/DOKU ENGLISCH/_images/ceon-sage-pay-direct-screenshots/transaction-admin/payment-summary-after-partial-refund-w680.png new file mode 100644 index 0000000..c8c80df Binary files /dev/null and b/DOKU ENGLISCH/_images/ceon-sage-pay-direct-screenshots/transaction-admin/payment-summary-after-partial-refund-w680.png differ diff --git a/DOKU ENGLISCH/_images/ceon-sage-pay-server-screenshots/iframe-wrapper-with-card-details-page-w584.png b/DOKU ENGLISCH/_images/ceon-sage-pay-server-screenshots/iframe-wrapper-with-card-details-page-w584.png new file mode 100644 index 0000000..b5dc6f3 Binary files /dev/null and b/DOKU ENGLISCH/_images/ceon-sage-pay-server-screenshots/iframe-wrapper-with-card-details-page-w584.png differ diff --git a/DOKU ENGLISCH/_images/ceon-uri-mappings-manager-screenshots/category-product-uris-import-w680.png b/DOKU ENGLISCH/_images/ceon-uri-mappings-manager-screenshots/category-product-uris-import-w680.png new file mode 100644 index 0000000..be159bc Binary files /dev/null and b/DOKU ENGLISCH/_images/ceon-uri-mappings-manager-screenshots/category-product-uris-import-w680.png differ diff --git a/DOKU ENGLISCH/_images/ceon-uri-mappings-manager-screenshots/create-manage-category-product-mappings-w250.png b/DOKU ENGLISCH/_images/ceon-uri-mappings-manager-screenshots/create-manage-category-product-mappings-w250.png new file mode 100644 index 0000000..43d39c1 Binary files /dev/null and b/DOKU ENGLISCH/_images/ceon-uri-mappings-manager-screenshots/create-manage-category-product-mappings-w250.png differ diff --git a/DOKU ENGLISCH/_images/ceon-uri-mappings-manager-screenshots/create-manage-category-product-mappings-w680.png b/DOKU ENGLISCH/_images/ceon-uri-mappings-manager-screenshots/create-manage-category-product-mappings-w680.png new file mode 100644 index 0000000..ef80ad5 Binary files /dev/null and b/DOKU ENGLISCH/_images/ceon-uri-mappings-manager-screenshots/create-manage-category-product-mappings-w680.png differ diff --git a/DOKU ENGLISCH/_images/ceon-uri-mappings-manager-screenshots/create-manage-other-pages-mappings-w680.png b/DOKU ENGLISCH/_images/ceon-uri-mappings-manager-screenshots/create-manage-other-pages-mappings-w680.png new file mode 100644 index 0000000..db00526 Binary files /dev/null and b/DOKU ENGLISCH/_images/ceon-uri-mappings-manager-screenshots/create-manage-other-pages-mappings-w680.png differ diff --git a/DOKU ENGLISCH/_images/grad-horiz-gray-to-white.png b/DOKU ENGLISCH/_images/grad-horiz-gray-to-white.png new file mode 100644 index 0000000..5b876d7 Binary files /dev/null and b/DOKU ENGLISCH/_images/grad-horiz-gray-to-white.png differ diff --git a/DOKU ENGLISCH/_images/grad-horiz-white-to-gray.png b/DOKU ENGLISCH/_images/grad-horiz-white-to-gray.png new file mode 100644 index 0000000..c5ac4c2 Binary files /dev/null and b/DOKU ENGLISCH/_images/grad-horiz-white-to-gray.png differ diff --git a/DOKU ENGLISCH/_images/iridium-logo-w150.png b/DOKU ENGLISCH/_images/iridium-logo-w150.png new file mode 100644 index 0000000..08a828b Binary files /dev/null and b/DOKU ENGLISCH/_images/iridium-logo-w150.png differ diff --git a/DOKU ENGLISCH/_images/jked-logo.gif b/DOKU ENGLISCH/_images/jked-logo.gif new file mode 100644 index 0000000..08388e6 Binary files /dev/null and b/DOKU ENGLISCH/_images/jked-logo.gif differ diff --git a/DOKU ENGLISCH/_images/litebox/blank.gif b/DOKU ENGLISCH/_images/litebox/blank.gif new file mode 100644 index 0000000..1d11fa9 Binary files /dev/null and b/DOKU ENGLISCH/_images/litebox/blank.gif differ diff --git a/DOKU ENGLISCH/_images/litebox/ceon-star-loading.gif b/DOKU ENGLISCH/_images/litebox/ceon-star-loading.gif new file mode 100644 index 0000000..50525dd Binary files /dev/null and b/DOKU ENGLISCH/_images/litebox/ceon-star-loading.gif differ diff --git a/DOKU ENGLISCH/_images/litebox/closelabel.gif b/DOKU ENGLISCH/_images/litebox/closelabel.gif new file mode 100644 index 0000000..87b4f8b Binary files /dev/null and b/DOKU ENGLISCH/_images/litebox/closelabel.gif differ diff --git a/DOKU ENGLISCH/_images/litebox/nextlabel-no-trans.png b/DOKU ENGLISCH/_images/litebox/nextlabel-no-trans.png new file mode 100644 index 0000000..835b153 Binary files /dev/null and b/DOKU ENGLISCH/_images/litebox/nextlabel-no-trans.png differ diff --git a/DOKU ENGLISCH/_images/litebox/nextlabel.gif b/DOKU ENGLISCH/_images/litebox/nextlabel.gif new file mode 100644 index 0000000..7c66121 Binary files /dev/null and b/DOKU ENGLISCH/_images/litebox/nextlabel.gif differ diff --git a/DOKU ENGLISCH/_images/litebox/nextlabel.png b/DOKU ENGLISCH/_images/litebox/nextlabel.png new file mode 100644 index 0000000..cd43d2d Binary files /dev/null and b/DOKU ENGLISCH/_images/litebox/nextlabel.png differ diff --git a/DOKU ENGLISCH/_images/litebox/prevlabel-no-trans.png b/DOKU ENGLISCH/_images/litebox/prevlabel-no-trans.png new file mode 100644 index 0000000..d2b9881 Binary files /dev/null and b/DOKU ENGLISCH/_images/litebox/prevlabel-no-trans.png differ diff --git a/DOKU ENGLISCH/_images/litebox/prevlabel.gif b/DOKU ENGLISCH/_images/litebox/prevlabel.gif new file mode 100644 index 0000000..0641876 Binary files /dev/null and b/DOKU ENGLISCH/_images/litebox/prevlabel.gif differ diff --git a/DOKU ENGLISCH/_images/litebox/prevlabel.png b/DOKU ENGLISCH/_images/litebox/prevlabel.png new file mode 100644 index 0000000..bbb9c1c Binary files /dev/null and b/DOKU ENGLISCH/_images/litebox/prevlabel.png differ diff --git a/DOKU ENGLISCH/_images/paymentsense-logo-w150.png b/DOKU ENGLISCH/_images/paymentsense-logo-w150.png new file mode 100644 index 0000000..84d4abd Binary files /dev/null and b/DOKU ENGLISCH/_images/paymentsense-logo-w150.png differ diff --git a/DOKU ENGLISCH/_images/realex-logo-w150.png b/DOKU ENGLISCH/_images/realex-logo-w150.png new file mode 100644 index 0000000..bb1580a Binary files /dev/null and b/DOKU ENGLISCH/_images/realex-logo-w150.png differ diff --git a/DOKU ENGLISCH/_images/sage-pay-accepted-cards.png b/DOKU ENGLISCH/_images/sage-pay-accepted-cards.png new file mode 100644 index 0000000..6a8cbbb Binary files /dev/null and b/DOKU ENGLISCH/_images/sage-pay-accepted-cards.png differ diff --git a/DOKU ENGLISCH/_images/sage-pay-logo-w150.png b/DOKU ENGLISCH/_images/sage-pay-logo-w150.png new file mode 100644 index 0000000..ca75c4d Binary files /dev/null and b/DOKU ENGLISCH/_images/sage-pay-logo-w150.png differ diff --git a/DOKU ENGLISCH/_javascript/inc.js.crossfade.js b/DOKU ENGLISCH/_javascript/inc.js.crossfade.js new file mode 100644 index 0000000..23a2a56 --- /dev/null +++ b/DOKU ENGLISCH/_javascript/inc.js.crossfade.js @@ -0,0 +1,147 @@ +// $Id: inc.js.crossfade.js 1027 2012-07-17 20:31:10Z conor $ + +/** + * @fileoverview Contains crossfade functions, used to fade between a list of HTML elements which are statically + * (absolutely) positioned on a page within an identifiable container. + * + * @author Conor Kerr + * @copyright 2010-2019 Ceon (http://ceon.net) + */ + +var crossfade_id = 'crossfade'; // The ID of the crossfade list +var crossfade_wrapper_element; // The object reference to the list +var crossfade_elements; // Array that will hold all child elements of the list +var current_element; // Keeps track of which image should currently be showing +var previous_element; +var pre_init_timer; +var first_time_pausing = true; + + +CeonCrossfadePreInit(); + + +function CeonCrossfadePreInit() +{ + // An inspired kludge that - in most cases - manages to initially hide the element list before + // even onload is triggered (at which point it's normally too late, and the whole list + // already appeared to the user before being remolded) + if ((document.getElementById) && (crossfade_wrapper_element = + document.getElementById(crossfade_id))) { + //crossfade_wrapper_element.style.visibility = 'hidden'; + + if (typeof pre_init_timer != 'undefined') { + clearTimeout(pre_init_timer); // thanks to Steve Clay http://mrclay.org/ for this small Opera fix + } + } else { + pre_init_timer = setTimeout("CeonCrossfadePreInit()", 2); + } +} + +/** + * Helper function to deal specifically with cross-browser differences in opacity handling + */ +function CeonSetOpacity(obj, opacity) +{ + if (obj.style) { + if (obj.style.MozOpacity != null) { + // Mozilla's pre-CSS3 proprietary rule + obj.style.MozOpacity = (opacity / 100) - .001; + } else if (obj.style.opacity != null) { + // CSS3 compatible + obj.style.opacity = (opacity / 100) - .001; + } else if (obj.style.filter != null) { + // IE's proprietary filter + obj.style.filter = "alpha(opacity=" + opacity + ")"; + } + } +} + +function CeonCrossfadeInit() +{ + if (document.getElementById) { + // Shouldn't be necessary, but IE can sometimes get ahead of itself and trigger + // CeonCrossfadeInit first + CeonCrossfadePreInit(); + + crossfade_elements = new Array; + + var node = crossfade_wrapper_element.firstChild; + + // Instead of using childNodes (which also gets empty nodes and messes up the script later) + // we do it the old-fashioned way and loop through the first child and its siblings + while (node) { + if (node.nodeType == 1) { + crossfade_elements.push(node); + } + node = node.nextSibling; + } + + for (i = 0; i < crossfade_elements.length; i++) { + // Loop through all these child nodes and set up their styles + /*crossfade_elements[i].style.position = 'absolute'; + crossfade_elements[i].style.top = "16px"; + crossfade_elements[i].style.right = 0;*/ + crossfade_elements[i].style.zIndex = 0; + + // Set their opacity to transparent + CeonSetOpacity(crossfade_elements[i], 0); + + crossfade_elements[i].style.visibility = 'visible'; + } + + // Make the list visible again + //crossfade_wrapper_element.style.visibility = 'visible'; + + // Initialise a few parameters to get the cycle going + current_element = 0; + previous_element = crossfade_elements.length - 1; + + opacity = 100; + + CeonSetOpacity(crossfade_elements[current_element], 100); + + // Start the whole crossfade process after a second's pause + window.setTimeout("CeonCrossfade(100)", 1000); + } +} + +function CeonCrossfade(opacity) +{ + if (opacity < 100) { + // Current element not faded up fully yet...so increase its opacity + CeonSetOpacity(crossfade_elements[current_element], opacity); + CeonSetOpacity(crossfade_elements[previous_element], 100 - opacity); + + opacity += 2; + + window.setTimeout("CeonCrossfade(" + opacity + ")", 30); + + } else { + // Make the previous element - which is now covered by the current one - fully transparent + CeonSetOpacity(crossfade_elements[previous_element], 0); + + // Current element is now previous element, as we advance in the list of elements + previous_element = current_element; + current_element += 1; + + if (current_element >= crossfade_elements.length) { + // Start over from first element if we cycled through all elements in the list + current_element = 0; + } + + // Make sure the current image is on top of the previous one + //crossfade_elements[previous_element].style.zIndex = 0; + //crossfade_elements[current_element].style.zIndex = 100; + + // Start the crossfade after a second's pause + opacity = 0; + + if (first_time_pausing) { + first_time_pausing = false; + + window.setTimeout("CeonCrossfade(" + opacity + ")", 1000); + } else { + window.setTimeout("CeonCrossfade(" + opacity + ")", 2300); + } + } +} \ No newline at end of file diff --git a/DOKU ENGLISCH/_javascript/inc.js.css-functions.js b/DOKU ENGLISCH/_javascript/inc.js.css-functions.js new file mode 100644 index 0000000..0bdaa47 --- /dev/null +++ b/DOKU ENGLISCH/_javascript/inc.js.css-functions.js @@ -0,0 +1,165 @@ +// $Id: inc.js.css-functions.js 1027 2012-07-17 20:31:10Z conor $ + +/** + * Looks for the very last occurrence (and therefore most significant) of a specified CSS style in the current + * document. Checks every stylesheet, including imported stylesheets. An optional media type can be specified to + * limit the search to that media type only. + * + * @author Conor Kerr + * @copyright 2008-2019 Ceon (http://ceon.net) + * @param selector {string} The selector for the style. + * @param media {string} The optional media type for the style. + * @returns {CSSStyle,boolean} The CSSStyle object matching or false if not found. + */ +function CeonGetCSSStyleRule(selector, media) +{ + var style_rule = false; + + for (i = 0; i < document.styleSheets.length; i++) { + var current_style_rule = + CeonSearchStyleSheetForCSSStyleRule(document.styleSheets[i], selector, media); + + if (current_style_rule != false) { + style_rule = current_style_rule; + } + } + + return style_rule; +} + +function CeonSearchStyleSheetForCSSStyleRule(ss, selector, media) +{ + var style_rule = false; + + if (media == undefined || media == null || media.length == 0) { + media = null; + } + + if (ss.imports) { + // IE + // IE doesn't support specifying media after import statement and lumps all CSS Rules (inc Media Rules) + // into same media as main stylesheet + // Only attempt to match any CSS Rules if the stylesheet if of the selected media type + var ss_media = ss.media; + + if (ss_media == '') { + ss_media = 'screen'; + } else if (typeof ss_media != 'string') { + ss_media = String(ss_media); + } + + if (media != null && ss_media.indexOf(media) == -1 && ss_media.indexOf('all') == -1) { + return false; + } + + var num_ss_import_rules = ss.imports.length; + + for (var i2 = 0; i2 < num_ss_import_rules; i2++) { + var current_style_rule = + CeonSearchStyleSheetForCSSStyleRule(ss.imports[i2], selector, media); + + if (current_style_rule != false) { + style_rule = current_style_rule; + } + } + } else if (ss.cssRules != undefined){ + // Other browsers + var num_potential_ss_import_rules = ss.cssRules.length; + + for (var i2 = 0; i2 < num_potential_ss_import_rules; i2++) { + if (ss.cssRules[i2].type == 3 && ss.cssRules[i2].styleSheet != undefined) { + var embedded_stylesheet = ss.cssRules[i2].styleSheet; + + var current_style_rule = + CeonSearchStyleSheetForCSSStyleRule(embedded_stylesheet, selector, media); + + if (current_style_rule != false) { + style_rule = current_style_rule; + } + } + } + } + + if (ss.rules != undefined && ss.cssRules == undefined) { + // IE + for (var j = 0; ss.rules.length > j; j++) { + rule = ss.rules[j]; + + try { + var current_selector = rule.selectorText + + if (current_selector == selector) { + style_rule = rule; + } + } catch (e) { d(e) } + } + } else if (ss.cssRules != undefined) { + // Other browsers + var ss_media = (ss.media != null ? ss.media.mediaText : ''); + + if (ss_media == '') { + ss_media = 'screen'; + } + + var ss_media_matches = false; + + if (ss_media.indexOf(media) != -1 || ss_media.indexOf('all') != -1) { + ss_media_matches = true; + } + + for (var j = 0; j < ss.cssRules.length; j++) { + var rule = ss.cssRules[j]; + + if (rule.type == CSSRule.MEDIA_RULE) { + if (media == null || rule.media.mediaText.indexOf(media) != -1) { + // Examine any rules embedded within this media rule + var num_media_rules = rule.cssRules.length; + + for (var m_i = 0; m_i < num_media_rules; m_i++) { + var m_rule = rule.cssRules[m_i]; + + if (m_rule.type == CSSRule.STYLE_RULE) { + try { + var current_selector = m_rule.selectorText + + if (current_selector == selector) { + style_rule = m_rule; + } + } catch (e) { d(e) } + } + } + } + } else if (ss_media_matches && rule.type == CSSRule.STYLE_RULE) { + try { + var current_selector = rule.selectorText + + if (current_selector == selector) { + style_rule = rule; + } + } catch (e) { d(e) } + } + } + } + + return style_rule; +} + + +/** + * Creates a new stylesheet of the specified media type and adds it to the current document. + * + * @author Conor Kerr + * @copyright 2008-2019 Ceon (http://ceon.net) + * @param media {string} The optional media type to assign to the newly created stylesheet. + */ +function CeonAddStyleSheet(media) +{ + if (media == undefined) { + media = 'all'; + } + + var style_node = document.createElement('style'); + style_node.setAttribute('type', 'text/css'); + style_node.setAttribute('media', media); + document.getElementsByTagName("head")[0].appendChild(style_node); +} \ No newline at end of file diff --git a/DOKU ENGLISCH/_javascript/inc.js.general-functions.js b/DOKU ENGLISCH/_javascript/inc.js.general-functions.js new file mode 100644 index 0000000..3a51a1d --- /dev/null +++ b/DOKU ENGLISCH/_javascript/inc.js.general-functions.js @@ -0,0 +1,89 @@ +// $Id: inc.js.general-functions.js 1027 2012-07-17 20:31:10Z conor $ + +/** + * Outputs information passed to the display. + * + * @param text {string} The information to be output to the browser. + */ +function d(text) +{ + document.writeln(text + "
"); +} + +/** + * Adds a function or an instaniated object and a method to the list of functions/methods which should be run when + * the page has been loaded. + * + * @author Conor Kerr + * @copyright 2008-2019 Ceon (http://ceon.net) + * @param func {string} The name of a function to run. + * @param obj {object} An object from which a method should be run. + * @param method {string} The name of the method within the specified object to run. + * @returns {none} + */ +function CeonAddLoadEvent(func, obj, method) +{ + var oldonload = window.onload; + + if (typeof window.onload != 'function') { + if (func == '') { + window.onload = function() + { + obj[method](); + } + } else { + window.onload = func; + } + } else { + window.onload = function() + { + if (oldonload) { + oldonload(); + } + if (func == '') { + obj[method](); + } else { + func(); + } + } + } +} + +/** + * Adds a function or an instaniated object and a method to the list of functions/methods which should be run when + * the page has been resized. + * + * @author Conor Kerr + * @copyright 2008-2019 Ceon (http://ceon.net) + * @param func {string} The name of a function to run. + * @param obj {object} An object from which a method should be run. + * @param method {string} The name of the method within the specified object to run. + * @returns {none} + */ +function CeonAddResizeEvent(func, obj, method) +{ + var oldonresize = window.onresize; + + if (typeof window.onresize != 'function') { + if (func == '') { + window.onresize = function() + { + obj[method](); + } + } else { + window.onresize = func; + } + } else { + window.onresize = function() + { + if (oldonresize) { + oldonresize(); + } + if (func == '') { + obj[method](); + } else { + func(); + } + } + } +} \ No newline at end of file diff --git a/DOKU ENGLISCH/_javascript/inc.js.restrict-width.js b/DOKU ENGLISCH/_javascript/inc.js.restrict-width.js new file mode 100644 index 0000000..710339b --- /dev/null +++ b/DOKU ENGLISCH/_javascript/inc.js.restrict-width.js @@ -0,0 +1,196 @@ +// $Id: inc.js.restrict-width.js 1027 2012-07-17 20:31:10Z conor $ + +/** + * @fileoverview Contains CeonRestrictWidth class, which can be used to restrict the width of a HTML page to a + * minimum and maximum width. In-between these limits the page can expand/contract as necessary to + * use as much of the browser window as allowed. + */ + +/** + * Outputs a div which is prevented from rendering beyond a maximum and below a minimum width. If the browser's + * window width is larger than the maximum width specified, the div is centered within the window. Intended to be + * used to wrap an entire page's contents so its width can be controlled. + * + * @class CeonRestrictWidth + * @author Conor Kerr + * @copyright 2008-2019 Ceon (http://ceon.net) + * @version 2.0.1 + * @param min_width_val {integer} The minimum width the div can be (in pixels). + * @param max_width_val {integer} The maximum width the div can be (in pixels). + */ +function CeonRestrictWidth(min_width_val, max_width_val) +{ + var in_use = false; + + var prev_width = 0; + var width = 0; + var min_width = min_width_val; + var max_width = max_width_val; + + var restrict_width_css_rule_obj = null; + + // Only use restrictWidth if screen is wide enough, saves CPU time for user + if (screen.width > max_width) { + in_use = true; + + _getCurrentWidth(); + + selector = '#restrict-width'; + + // Try to identify and use an existing rule if possible, rather than creating a new one + restrict_width_css_rule_obj = CeonGetCSSStyleRule(selector, 'screen'); + + if (!restrict_width_css_rule_obj) { + // Rule must be added as could not identify one (either because none exists or because of a browser + // security restriction, e.g. chrome with the file:// protocol) + + // Assume there is at least one stylesheet + if (document.styleSheets[0].insertRule) { + // Moz/others + if (document.styleSheets[0].cssRules != undefined) { + var last_rule = document.styleSheets[0].cssRules.length; + + try { + var inserted_at = document.styleSheets[0].insertRule( + '@media screen { ' + selector + '{ position:absolute; width:' + _determineHSize() + + '; left:' + _determineHPos() + '; }' + ' }', + last_rule); + + restrict_width_css_rule_obj = document.styleSheets[0].cssRules[inserted_at].cssRules[0]; + + } catch (e) { + // Safari can't handle media tag, must add new stylesheet for media + CeonAddStyleSheet('screen'); + + var last_style_sheet = document.styleSheets.length - 1; + + document.styleSheets[last_style_sheet].insertRule( + selector + ' { position:absolute; width:' + _determineHSize() + ';' + + ' left:' + _determineHPos() + '; }', + 0); + + restrict_width_css_rule_obj = document.styleSheets[last_style_sheet].rules[0]; + } + } else { + CeonAddStyleSheet('screen'); + + var last_style_sheet = document.styleSheets.length - 1; + + document.styleSheets[last_style_sheet].insertRule( + selector + ' { position:absolute; width:' + _determineHSize() + ';' + + ' left:' + _determineHPos() + '; }', + 0); + + restrict_width_css_rule_obj = document.styleSheets[last_style_sheet].rules[0]; + } + } else if (document.styleSheets[0].addRule) { + // IE doesn't support addition of media rules, add new stylesheet for media + CeonAddStyleSheet('screen'); + + var last_style_sheet = document.styleSheets.length - 1; + + document.styleSheets[last_style_sheet].addRule(selector, + 'position:absolute; width:' + _determineHSize() + '; left:' + _determineHPos() + ';', + 0); + + restrict_width_css_rule_obj = document.styleSheets[last_style_sheet].rules[0]; + } + } else { + restrict_width_css_rule_obj.style.position = 'absolute'; + } + + document.write('
'); + + CeonAddLoadEvent('', this, 'restrictWidth'); + CeonAddResizeEvent('', this, 'restrictWidth'); + } + + /** + * Public method which outputs resizeable div end tag if necessary. + * + * @member CeonRestrictWidth + * @returns {boolean} Returns true to prevent JS errors in Safari. + */ + this.outputClosingTag = function() + { + if (in_use) { + document.write("
"); + } + return true; + } + + /** + * Updates the CSSStyle for the resizeable div with the width it should be set to and the left position it + * should be placed at. + * + * @member CeonRestrictWidth + */ + this.restrictWidth = function() + { + _getCurrentWidth(); + + if (width != prev_width) { + if (width <= min_width) { + restrict_width_css_rule_obj.style.width = min_width + "px"; + restrict_width_css_rule_obj.style.left = 0; + } else { + // Determine width + restrict_width_css_rule_obj.style.width = _determineHSize(); + restrict_width_css_rule_obj.style.left = _determineHPos(); + } + prev_width = width; + } + } + + /** + * Private method which records the current width of the browser window. + * + * @member CeonRestrictWidth + * @private + */ + function _getCurrentWidth() + { + if (window.innerWidth) { + width = window.innerWidth; + } else if (document.documentElement.clientWidth) { + width = document.documentElement.clientWidth; + } else if (document.body.clientWidth) { + width = document.body.clientWidth; + } + } + + /** + * Private method which works out the string to be used to set the resizeable div to the maximum size allowed. + * + * @member CeonRestrictWidth + * @private + * @returns {string} The string to which the width of the resizeable div should be set. + */ + function _determineHSize() + { + if (width > max_width) { + // Client window is greater than the max width of the page + return max_width + "px"; + } else { + // Client window is smaller than max width of page so use full width + return "100%"; + } + } + + /** + * Private method which works out the string to be used to centre the resizeable div (by adjusting the value + * for its left position). + * + * @member CeonRestrictWidth + * @private + * @returns {string} The string to which the left position of the resizeable div should be set. + */ + function _determineHPos() + { + if (width > max_width) { + return parseInt((width - max_width) / 2) + "px"; + } else { + return "0"; + } + } +} \ No newline at end of file diff --git a/DOKU ENGLISCH/_javascript/litebox/litebox-1.2.js b/DOKU ENGLISCH/_javascript/litebox/litebox-1.2.js new file mode 100644 index 0000000..7942b60 --- /dev/null +++ b/DOKU ENGLISCH/_javascript/litebox/litebox-1.2.js @@ -0,0 +1,760 @@ +/** + * @fileoverview Contains "lightbox" image displayer popup class and functions, used to display images in a window + * with a semi-transparent overlay placed over the current browser viewport. Supports browsing + * through a list of linked images! + * + * @author Conor Kerr + * @author Based on Litebox 1.0 by detrate and gannon - http://doknowevil.net/litebox + * @author Source edited from Lightbox v2.02 by Lokesh Dhakar - http://www.huddletogether.com + * @author Scott Upton - http://uptonic.com + * @author Peter-Paul Koch - http://quirksmode.org + * @author Thomas Fuchs - http://mir.aculo.us + * @license Creative Commons Attribution 2.5 - http://creativecommons.org/licenses/by/2.5/ + * @version $Id: litebox-1.2.js 1027 2012-07-17 20:31:10Z conor $ + */ + +/** + * Configuration + */ +var litebox_images_prefix = (document.location.href.match(/sections/) ? '../_' : '_'); +var fileLoadingImage = litebox_images_prefix + 'images/litebox/ceon-star-loading.gif'; +var fileBottomNavCloseImage = litebox_images_prefix + 'images/litebox/closelabel.gif'; +var resizeSpeed = 6; // Controls the speed of the image resizing (1=slowest and 10=fastest) +var borderSize = 8; // If you adjust the padding in the CSS, you will need to update this variable + + +/** + * Global Variables + */ +var imageArray = new Array; +var activeImage; + +if (resizeSpeed > 10) { resizeSpeed = 10; } +if (resizeSpeed < 1) { resizeSpeed = 1; } +resizeDuration = (11 - resizeSpeed) * 100; + + +/** + * Additional methods for Element added by SU, Couloir + * - further additions by Lokesh Dhakar (huddletogether.com) + */ +Object.extend(Element, { + hide: function() + { + for (var i = 0; i < arguments.length; i++) { + var element = $(arguments[i]); + element.style.display = 'none'; + } + }, + show: function() + { + for (var i = 0; i < arguments.length; i++) { + var element = $(arguments[i]); + element.style.display = ''; + } + }, + getWidth: function(element) + { + element = $(element); + return element.offsetWidth; + }, + setWidth: function(element,w) + { + element = $(element); + element.style.width = w +"px"; + }, + getHeight: function(element) + { + element = $(element); + return element.offsetHeight; + }, + setHeight: function(element,h) + { + element = $(element); + element.style.height = h +"px"; + }, + setTop: function(element,t) + { + element = $(element); + element.style.top = t +"px"; + }, + setSrc: function(element,src) + { + element = $(element); + element.src = src; + }, + setInnerHTML: function(element,content) + { + element = $(element); + element.innerHTML = content; + } +}); + + +/** + * Extending built-in Array object + */ +Array.prototype.removeDuplicates = function () +{ + for(i = 1; i < this.length; i++){ + if(this[i][0] == this[i-1][0]){ + this.splice(i,1); + } + } +} + +Array.prototype.empty = function () +{ + for(i = 0; i <= this.length; i++){ + this.shift(); + } +} + + +/** + * Structuring of code inspired by Scott Upton (http://www.uptonic.com/) + */ +var Lightbox = Class.create(); + +Lightbox.prototype = +{ + // initialize() + // Constructor runs on completion of the DOM loading. Loops through anchor tags looking for 'lightbox' + // references and applies onclick events to appropriate links. The 2nd section of the function inserts html at + // the bottom of the page which is used to display the shadow overlay and the image container. + // + initialize: function() + { + if (!document.getElementsByTagName) { return; } + + var anchors = document.getElementsByTagName('a'); + + // loop through all anchor tags + for (var i=0; i= max_image_and_desc_height) { + use_hires_images = true; + } + + // if image is NOT part of a set.. + if ((lightbox_class == 'lightbox')) { + // add single image to imageArray + imageArray.push(new Array(imageLink.getAttribute('href'), imageLink.getAttribute('title'))); + } else { + // if image is part of a set.. + + // Adjust first image's path for hires folder, if appropriate + var first_image_path = imageLink.getAttribute('href') + + if (use_hires_images) { + var last_slash_pos = first_image_path.lastIndexOf('/'); + + if (last_slash_pos != -1) { + first_image_path = first_image_path.substring(0, last_slash_pos) + '/hires/' + + first_image_path.substring(last_slash_pos + 1); + } + } + + // Loop through anchors, find other images in set, and add them to imageArray + for (var i = 0; i < anchors.length; i++) { + var anchor = anchors[i]; + + if (anchor.getAttribute('href') && (anchor.getAttribute('rel') == lightbox_class)){ + var image_href = anchor.getAttribute('href'); + + if (use_hires_images) { + var last_slash_pos = image_href.lastIndexOf('/'); + + if (last_slash_pos != -1) { + image_href = image_href.substring(0, last_slash_pos) + '/hires/' + + image_href.substring(last_slash_pos + 1); + } + } + + imageArray.push(new Array(image_href, anchor.getAttribute('title'))); + } + } + imageArray.removeDuplicates(); + + while(imageArray[imageNum][0] != first_image_path) { imageNum++; } + } + + // calculate top offset for the lightbox and display + var arrayPageScroll = getPageScroll(); + + if (arrayPageSize[3] <= max_image_and_desc_height) { + // Don't waste space with largish borders on small viewports + var lightboxTop = arrayPageScroll[1] + 10; + } else { + // Base vertical centring on expected average tallest image and the textual description at the bottom + var lightboxTop = arrayPageScroll[1] + (((arrayPageSize[3] - tallest_image) / 2) - (desc_height / 2)); + } + + Element.setTop('lightbox', lightboxTop); + Element.show('lightbox'); + this.changeImage(imageNum); + }, + + // + // changeImage() + // Hide most elements and preload image in preparation for resizing image container. + // + changeImage: function(imageNum) + { + activeImage = imageNum; // update global var + + // Hide elements during transition + Element.show('loading'); + imageDetailsEffect.hide(); + imageEffect.hide(); + navEffect.hide(); + Element.hide('prevLink'); + Element.hide('nextLink'); + Element.hide('numberDisplay'); + + imgPreloader = new Image(); + + // Once image is preloaded, resize image container + imgPreloader.onload = function() + { + Element.setSrc('lightboxImage', imageArray[activeImage][0]); + myLightbox.resizeImageContainer(imgPreloader.width, imgPreloader.height); + } + + imgPreloader.src = imageArray[activeImage][0]; + }, + + // + // resizeImageContainer() + // + resizeImageContainer: function( imgWidth, imgHeight) + { + // Get current height and width + this.wCur = Element.getWidth('outerImageContainer'); + this.hCur = Element.getHeight('outerImageContainer'); + + // calculate size difference between new and old image, and resize if necessary + wDiff = (this.wCur - borderSize * 2) - imgWidth; + hDiff = (this.hCur - borderSize * 2) - imgHeight; + + // Resize the outerImageContainer very sexy like + reHeight = new fx.Height('outerImageContainer', { duration: resizeDuration }); + reHeight.custom(Element.getHeight('outerImageContainer'),imgHeight+(borderSize*2)); + reWidth = new fx.Width('outerImageContainer', { duration: resizeDuration, onComplete: function() + { + imageEffect.custom(0,1); + } + }); + + reWidth.custom(Element.getWidth('outerImageContainer'),imgWidth+(borderSize*2)); + + // If new and old image are same size and no scaling transition is necessary, do a quick pause to prevent + // image flicker. + if ((hDiff == 0) && (wDiff == 0)) { + if (navigator.appVersion.indexOf("MSIE")!=-1){ pause(250); } else { pause(100); } + } + + Element.setHeight('prevLink', imgHeight); + Element.setHeight('nextLink', imgHeight); + Element.setWidth('imageDataContainer', imgWidth + (borderSize * 2)); + Element.setWidth('hoverNav', imgWidth + (borderSize * 2)); + + this.showImage(); + }, + + // + // showImage() + // Display image and begin preloading neighbors. + // + showImage: function() + { + Element.hide('loading'); + myLightbox.updateDetails(); + this.preloadNeighborImages(); + }, + + // + // updateDetails() + // Display caption, image number, and bottom nav. + // + updateDetails: function() + { + Element.show('caption'); + Element.setInnerHTML( 'caption', imageArray[activeImage][1]); + + // If image is part of set display 'Image x of x' + if (imageArray.length > 1) { + var prev_image_link = ''; + var next_image_link = ''; + + if (activeImage != 0) { + prev_image_link = ' < '; + } + + if (activeImage != (imageArray.length - 1)) { + next_image_link = ' >'; + } + + Element.show('numberDisplay'); + Element.setInnerHTML('numberDisplay', prev_image_link + 'Image ' + eval(activeImage + 1) + ' of ' + + imageArray.length + next_image_link); + + if (activeImage != 0) { + document.getElementById('prev-image-link').onclick = function(e) { + myLightbox.changeImage(activeImage - 1); + + e = e||event; + e.stopPropagation ? e.stopPropagation() : e.cancelBubble = true; + + return false; + } + } + + if (activeImage != (imageArray.length - 1)) { + document.getElementById('next-image-link').onclick = function(e) + { + myLightbox.changeImage(activeImage + 1); + + e = e||event; + e.stopPropagation ? e.stopPropagation() : e.cancelBubble = true; + + return false; + } + } + } + + myLightbox.updateNav(); + }, + // + // updateNav() + // Display appropriate previous and next hover navigation. + // + updateNav: function() { + + // if not first image in set, display prev image button + if (activeImage != 0){ + Element.show('prevLink'); + + document.getElementById('prevLink').onclick = function() + { + myLightbox.changeImage(activeImage - 1); return false; + } + } + + // if not last image in set, display next image button + if (activeImage != (imageArray.length - 1)){ + Element.show('nextLink'); + + document.getElementById('nextLink').onclick = function() + { + myLightbox.changeImage(activeImage + 1); return false; + } + } + + this.enableKeyboardNav(); + }, + + // + // enableKeyboardNav() + // + enableKeyboardNav: function() + { + document.onkeydown = this.keyboardAction; + }, + + // + // disableKeyboardNav() + // + disableKeyboardNav: function() + { + document.onkeydown = ''; + }, + + // + // keyboardAction() + // + keyboardAction: function(e) + { + if (e == null) { + // IE + keycode = event.keyCode; + } else { + // Mozilla + keycode = e.which; + } + + key = String.fromCharCode(keycode).toLowerCase(); + + if ((key == 'x') || (key == 'o') || (key == 'c') || keycode == 27) { + // Close lightbox + myLightbox.end(); + } else if (key == 'p' || keycode == 37) { + // Display previous image + if (activeImage != 0) { + myLightbox.disableKeyboardNav(); + myLightbox.changeImage(activeImage - 1); + } + } else if (key == 'n' || keycode == 39) { + // Display next image + if (activeImage != (imageArray.length - 1)) { + myLightbox.disableKeyboardNav(); + myLightbox.changeImage(activeImage + 1); + } + } + }, + + // + // preloadNeighborImages() + // Preload previous and next images. + // + preloadNeighborImages: function() + { + if ((imageArray.length - 1) > activeImage) { + preloadNextImage = new Image(); + preloadNextImage.src = imageArray[activeImage + 1][0]; + } + if (activeImage > 0) { + preloadPrevImage = new Image(); + preloadPrevImage.src = imageArray[activeImage - 1][0]; + } + + }, + + // + // end() + // + end: function() + { + this.disableKeyboardNav(); + Element.hide('lightbox'); + imageEffect.toggle(); + overlayEffect.custom(0.8, 0); + showSelectBoxes(); + + // Reset the width and height so next call to the lightbox resizes from nothing - looks much + // better! + Element.setWidth('outerImageContainer', 0); + Element.setHeight('outerImageContainer', 0); + } +} + +// +// getPageScroll() +// Returns array with x,y page scroll values. +// Core code from - quirksmode.org +// +function getPageScroll() +{ + var yScroll; + + if (self.pageYOffset) { + yScroll = self.pageYOffset; + } else if (document.documentElement && document.documentElement.scrollTop){ + // Explorer 6 Strict + yScroll = document.documentElement.scrollTop; + } else if (document.body) { + // All other Explorers + yScroll = document.body.scrollTop; + } + + arrayPageScroll = new Array('',yScroll) ; + + return arrayPageScroll; +} + +// +// getPageSize() +// Returns array with page width, height and window width, height +// Core code from - quirksmode.org +// Edit for Firefox by pHaez +// +function getPageSize() +{ + var xScroll, yScroll; + + if (window.innerHeight && window.scrollMaxY) { + xScroll = document.body.scrollWidth; + yScroll = window.innerHeight + window.scrollMaxY; + } else if (document.body.scrollHeight > document.body.offsetHeight){ + // All but Explorer Mac + xScroll = document.body.scrollWidth; + yScroll = document.body.scrollHeight; + } else { + // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari + xScroll = document.body.offsetWidth; + yScroll = document.body.offsetHeight; + } + + var windowWidth, windowHeight; + if (self.innerHeight) { + // All except Explorer + windowWidth = self.innerWidth; + windowHeight = self.innerHeight; + } else if (document.documentElement && document.documentElement.clientHeight) { + // Explorer 6 Strict Mode + windowWidth = document.documentElement.clientWidth; + windowHeight = document.documentElement.clientHeight; + } else if (document.body) { + // Other Explorers + windowWidth = document.body.clientWidth; + windowHeight = document.body.clientHeight; + } + + // For small pages with total height less then height of the viewport + if (yScroll < windowHeight){ + pageHeight = windowHeight; + } else { + pageHeight = yScroll; + } + + // For small pages with total width less then width of the viewport + if (xScroll < windowWidth){ + pageWidth = windowWidth; + } else { + pageWidth = xScroll; + } + + arrayPageSize = new Array(pageWidth, pageHeight, windowWidth, windowHeight); + + return arrayPageSize; +} + +// +// getKey(key) +// Gets keycode. If 'x' is pressed then it hides the lightbox. +// +function getKey(e) +{ + if (e == null) { + // IE + keycode = event.keyCode; + } else { + // Mozilla + keycode = e.which; + } + + key = String.fromCharCode(keycode).toLowerCase(); + + if (key == 'x') { + } +} + +// +// listenKey() +// +function listenKey () { document.onkeypress = getKey; } + + +function showSelectBoxes() +{ + selects = document.getElementsByTagName("select"); + + for (i = 0; i != selects.length; i++) { + selects[i].style.visibility = "visible"; + } +} + + +function hideSelectBoxes() +{ + selects = document.getElementsByTagName("select"); + + for (i = 0; i != selects.length; i++) { + selects[i].style.visibility = "hidden"; + } +} + +// +// pause(numberMillis) +// Pauses code execution for specified time. Uses busy code, not good. +// Code from http://www.faqts.com/knowledge_base/view.phtml/aid/1602 +// +function pause(numberMillis) +{ + var now = new Date(); + var exitTime = now.getTime() + numberMillis; + + while (true) { + now = new Date(); + if (now.getTime() > exitTime) + return; + } +} + + +function initLightbox() { myLightbox = new Lightbox(); } \ No newline at end of file diff --git a/DOKU ENGLISCH/_javascript/litebox/moo.fx.js b/DOKU ENGLISCH/_javascript/litebox/moo.fx.js new file mode 100644 index 0000000..d70a1e4 --- /dev/null +++ b/DOKU ENGLISCH/_javascript/litebox/moo.fx.js @@ -0,0 +1,133 @@ +/* +moo.fx, simple effects library built with prototype.js (http://prototype.conio.net). +by Valerio Proietti (http://mad4milk.net) MIT-style LICENSE. +for more info (http://moofx.mad4milk.net). +Sunday, March 05, 2006 +v 1.2.3 +*/ + +var fx = new Object(); +//base +fx.Base = function(){}; +fx.Base.prototype = { + setOptions: function(options) { + this.options = { + duration: 500, + onComplete: '', + transition: fx.sinoidal + } + Object.extend(this.options, options || {}); + }, + + step: function() { + var time = (new Date).getTime(); + if (time >= this.options.duration+this.startTime) { + this.now = this.to; + clearInterval (this.timer); + this.timer = null; + if (this.options.onComplete) setTimeout(this.options.onComplete.bind(this), 10); + } + else { + var Tpos = (time - this.startTime) / (this.options.duration); + this.now = this.options.transition(Tpos) * (this.to-this.from) + this.from; + } + this.increase(); + }, + + custom: function(from, to) { + if (this.timer != null) return; + this.from = from; + this.to = to; + this.startTime = (new Date).getTime(); + this.timer = setInterval (this.step.bind(this), 13); + }, + + hide: function() { + this.now = 0; + this.increase(); + }, + + clearTimer: function() { + clearInterval(this.timer); + this.timer = null; + } +} + +//stretchers +fx.Layout = Class.create(); +fx.Layout.prototype = Object.extend(new fx.Base(), { + initialize: function(el, options) { + this.el = $(el); + this.el.style.overflow = "hidden"; + this.iniWidth = this.el.offsetWidth; + this.iniHeight = this.el.offsetHeight; + this.setOptions(options); + } +}); + +fx.Height = Class.create(); +Object.extend(Object.extend(fx.Height.prototype, fx.Layout.prototype), { + increase: function() { + this.el.style.height = this.now + "px"; + }, + + toggle: function() { + if (this.el.offsetHeight > 0) this.custom(this.el.offsetHeight, 0); + else this.custom(0, this.el.scrollHeight); + } +}); + +fx.Width = Class.create(); +Object.extend(Object.extend(fx.Width.prototype, fx.Layout.prototype), { + increase: function() { + this.el.style.width = this.now + "px"; + }, + + toggle: function(){ + if (this.el.offsetWidth > 0) this.custom(this.el.offsetWidth, 0); + else this.custom(0, this.iniWidth); + } +}); + +//fader +fx.Opacity = Class.create(); +fx.Opacity.prototype = Object.extend(new fx.Base(), { + initialize: function(el, options) { + this.el = $(el); + this.now = 1; + this.increase(); + this.setOptions(options); + }, + + increase: function() { + if (this.now == 1 && (/Firefox/.test(navigator.userAgent))) this.now = 0.9999; + this.setOpacity(this.now); + }, + + setOpacity: function(opacity) { + if (opacity == 0 && this.el.style.visibility != "hidden") this.el.style.visibility = "hidden"; + else if (this.el.style.visibility != "visible") this.el.style.visibility = "visible"; + if (window.ActiveXObject) this.el.style.filter = "alpha(opacity=" + opacity*100 + ")"; + this.el.style.opacity = opacity; + }, + + toggle: function() { + if (this.now > 0) this.custom(1, 0); + else this.custom(0, 1); + } +}); + +//transitions +fx.sinoidal = function(pos){ + return ((-Math.cos(pos*Math.PI)/2) + 0.5); + //this transition is from script.aculo.us +} +fx.linear = function(pos){ + return pos; +} +fx.cubic = function(pos){ + return Math.pow(pos, 3); +} +fx.circ = function(pos){ + return Math.sqrt(pos); +} \ No newline at end of file diff --git a/DOKU ENGLISCH/_javascript/litebox/prototype.lite.js b/DOKU ENGLISCH/_javascript/litebox/prototype.lite.js new file mode 100644 index 0000000..c60191a --- /dev/null +++ b/DOKU ENGLISCH/_javascript/litebox/prototype.lite.js @@ -0,0 +1,132 @@ +/* Prototype JavaScript framework + * (c) 2005 Sam Stephenson + * Prototype is freely distributable under the terms of an MIT-style license. + * For details, see the Prototype web site: http://prototype.conio.net/ +/*--------------------------------------------------------------------------*/ + +//note: modified & stripped down version of prototype, to be used with moo.fx by mad4milk (http://moofx.mad4milk.net). + +var Class = { + create: function() { + return function() { + this.initialize.apply(this, arguments); + } + } +} + +Object.extend = function(destination, source) { + for (property in source) destination[property] = source[property]; + return destination; +} + +Function.prototype.bind = function(object) { + var __method = this; + return function() { + return __method.apply(object, arguments); + } +} + +Function.prototype.bindAsEventListener = function(object) { +var __method = this; + return function(event) { + __method.call(object, event || window.event); + } +} + +function $() { + if (arguments.length == 1) return get$(arguments[0]); + var elements = []; + $c(arguments).each(function(el){ + elements.push(get$(el)); + }); + return elements; + + function get$(el){ + if (typeof el == 'string') el = document.getElementById(el); + return el; + } +} + +if (!window.Element) var Element = new Object(); + +Object.extend(Element, { + remove: function(element) { + element = $(element); + element.parentNode.removeChild(element); + }, + + hasClassName: function(element, className) { + element = $(element); + if (!element) return; + var hasClass = false; + element.className.split(' ').each(function(cn){ + if (cn == className) hasClass = true; + }); + return hasClass; + }, + + addClassName: function(element, className) { + element = $(element); + Element.removeClassName(element, className); + element.className += ' ' + className; + }, + + removeClassName: function(element, className) { + element = $(element); + if (!element) return; + var newClassName = ''; + element.className.split(' ').each(function(cn, i){ + if (cn != className){ + if (i > 0) newClassName += ' '; + newClassName += cn; + } + }); + element.className = newClassName; + }, + + cleanWhitespace: function(element) { + element = $(element); + $c(element.childNodes).each(function(node){ + if (node.nodeType == 3 && !/\S/.test(node.nodeValue)) Element.remove(node); + }); + }, + + find: function(element, what) { + element = $(element)[what]; + while (element.nodeType != 1) element = element[what]; + return element; + } +}); + +var Position = { + cumulativeOffset: function(element) { + var valueT = 0, valueL = 0; + do { + valueT += element.offsetTop || 0; + valueL += element.offsetLeft || 0; + element = element.offsetParent; + } while (element); + return [valueL, valueT]; + } +}; + +document.getElementsByClassName = function(className) { + var children = document.getElementsByTagName('*') || document.all; + var elements = []; + $c(children).each(function(child){ + if (Element.hasClassName(child, className)) elements.push(child); + }); + return elements; +} + +//useful array functions +Array.prototype.iterate = function(func){ + for(var i=0;i + + + + .:: Ceon :: Zen Cart :: Module :: Ceon URI Mapping ::. + + + + + + + + + + + + + + + + + + + + +
+
+ +

Ceon URI Mapping

+ + + + +
+

Donate by Credit/Debit Card or PayPal. We accept Visa, MasterCard, Maestro, American Express, Visa Debit, Visa Electron & MasterCard Debit!This module has taken over 14 weeks of work, with none of the time taken being paid for by anyone, so if you find it useful, please support us - just click the donate button.

+

Fewer than 1 in 500 people donate towards our software, so it would be greatly appreciated - Thanks!

+
+ +

Support is available through the Zen Cart forum thread: https://www.zen-cart.com/showthread.php?225478-Ceon-URI-Mapping-V5-0.

+

2017: Ceon.net was relaunched by Conor's family - https://ceon.net/

+

Thanks for using software from Ceon... we're sure it will contribute to making the store a great success!

+

The step-by-step Installation Instructions for this module are easy to follow, with the whole process taking just a few minutes.

+

You must read the first section of the configuration documentation. We've gone to great lengths to make it as easy to follow as possible, so you can set up the store's URI mappings quickly and easily.

+

If you have any problems configuring the software, or encounter any errors (for example “Bad Request” server errors etc.), please check the Frequently Asked Questions (FAQs) for quick solutions, or avail of the support that we offer.

+

Don't forget to check out our other software... we've no doubt you'll find it essential as well...

+ +
+ +
+

Build a better e-commerce store and get more orders from customers!

+

Other Zen Cart Releases from Ceon

+

We offer many modules essential for any Zen Cart store - check out the other modules we have available to help build a better and more profitable store...

+ + +
+ +
+

Take Credit/Debit Card Payments Online

+

Other Software from Ceon

+

We don't just write great software for Zen Cart, our main focus is in fact on more general software, some of which is essential for any business...

+

CardPay - the Online Payment Form software no business should be without!.

+

Accept card payments for invoices, orders... anything at all!

+
+ +
+ + + +

URI Mapping (SEO/SEF) Software

+ +
+ Ceon URI Mappings Manager + +

Easily manage URI Mappings (Static URLs/URIs) for existing/large stores. +
The intuitive interface makes generating and editing URIs quick and painless!

+ +
+ The Create/Manage Category/Product URIs section of Ceon URI Mappings Manager. Clicking auto-generate creates URI mappings for the selected categories and all their subcategories and products at once, with the URIs conforming to the format(s) specified in the URI Mapping Templates.. + + + + + +
+

Click the image above for some screenshots which show the great functionality this software offers to help stores manage their URIs quickly and effectively!

+
+ + +

Bulk-generate Static URIs for Pages

+ +
    +
  • Generate URI Mappings for entire categories at once - including their subcategories and all their products. +
      +
    • If the store uses software such as Easy Populate, or Apsona ShopAdmin, or other custom product feeds, Ceon URI Mappings Manager makes it easy to maintain the URIs, as they can be generated after products/categories are bulk-uploaded/updated.
    • +
    +
  • + +
  • Generate URI Mappings for all the standard “other” Zen Cart pages at once (Contact Us page, Shipping page, All Products listing page etc.), or for all Manufacturers or EZ-Pages at once.
  • +
+ + +

Redirect the Store's Old/Current URIs - Prevent Broken Links

+ +
    +
  • Stores that have URIs generated by other software, such as Ultimate SEO, Simple SEO, Magic SEO etc., can import these existing URIs as historical URI mappings.
  • +
  • The old SEO module's URIs will redirect to the new Ceon URI Mapping URIs, reducing the possibility of broken links from search engines and other sites!
  • +
+ + +

Set Auto-generation Templates

+ +
    +
  • Define auto-generation “templates” for the entire store, or for individual categories, manufacturers, EZ-Pages or “other” pages. E.g. Products could have their model included in the generated URIs: /{category-path}/{product-name}-{product-model}.
  • +
+ + +

Manage Current/Historical URI Mappings and Aliases

+ +
    +
  • Add, edit and delete URI mappings for any Zen Cart page through its intuitive interface - there's no longer any need to manually edit the database!
  • + +
  • Examine, add and delete historical URI mappings - prevent broken links by redirecting the visitor to the current URI for any page.
  • +
  • Add, edit and delete URI mapping aliases for other pages - optimise the site's keywords further!
  • +
+ +

Ceon URI Mappings Manager can save hours of work generating/adding URI mappings for each category/product/page for an existing store!

+ +

Find out more by visiting its website.

+
+ +

Back to top

+ + + +

Advanced Shipping Software

+ +
+ Ceon Advanced Shipper 6 +

Ceon Advanced ShipperSave a Fortune on Postage/Courier Costs!

+ +
+
+

“I think what you have done with the software is fantastic. It really is the only shipping mod ever needed.

+

“I don't know why people bother messing about with all the different shipping mods.

+

“The cost of Ceon Advanced Shipper doesn't break the bank and it's more than worth it!”

+
+

Shane Knight, +
1 Body 1 Life

+
+ +
    +
  • +

    Let the customers pay the actual shipping costs - not the store!

  • +
  • +

    Easily set rates for individual products, whole categories or even specific manufacturers - great for drop-shipping setups!

  • +
  • +

    Don't spend hours hacking other shipping modules together - set up methods quickly and easily - time is money too!

  • +
  • +

    No longer do shipping costs have to be built into the store's prices or set to a rate that puts customers off ordering!

  • +
+ +

Click here to show more info...

+ +
+ +

Product / Category / Manufacturer Rates

+

The Ceon Advanced Shipper module allows individual products and/or entire product categories and/or all products from specific manufacturer(s) to have their own specific shipping rates!

+

There is no limit on the number of methods which can be defined, products/categories/manufacturers/the whole store can have multiple shipping methods if desired (E.g. “Royal Mail 2nd Class”, “Royal Mail Next Day” etc.)!

+

If there are various shipping options for the items within a customer's shopping cart, they are presented with all possible combinations of shipping methods for those items, so they can choose the method (combination) that best suits them!

+

For example, if a customer has a magazine in their cart as well as a bookcase, they can be offered the following options, which let them choose between normal or express delivery for the magazine while having the bookcase shipped via a pallet service: +
Example of Shipping Method Combinations being offered to customer at checkout.

+

Being able to specify exactly which products/categories/manufacturers use which method(s) makes it very easy indeed to set up almost any type of shipping arrangement, including complex drop-shipping arrangements etc., something most/all other Zen Cart shipping modules can't do.

+

In fact, very few shopping cart software packages, commercial and/or open source, can match Ceon Advanced Shipper's functionality as integrated with Zen Cart, never mind its ease of use!

+ + +

Flexible Region Definitions

+

There are multiple mechanisms for defining Shipping Regions, including Geolocation and Country/Postcode Matching - a hugely flexible option which allows you to set up shipping regions quickly and easily by matching against the customer's postcode/zipcode etc.!

+ +

With the extra Ceon Advanced Shipper Zones module, an additional option, Country/Zone Matching, can be used to match against addresses using Zen Cart Zones. Stores which already have a list of Zones set up for shipping purposes may find this module very handy indeed!

+ +

Another expansion module, the Ceon Advanced Shipper Localities module, also adds additional options, Country/State Matching and Country/City Matching, which can be used to ensure that customers are only able to use a set list of States/Areas/Cities, thereby restricting shipping to places on that list - very useful for local delivery stores etc.!

+ + +

Comprehensive Rate Definition Options

+

Shipping rates are defined based on a combination of the customer's shipping address - the “Shipping Region” it is in - and the details for the applicable products; their total Weight, total Price or the Number of Items of applicable products, or the Total Order Price of all the products for an order (not just the total price of the applicable products for the method!).

+ +

If rates have been defined for individual products and/or categories and/or manufacturers, the overall rate will be calculated based on the composition of their shopping cart.

+ +

Rates can be entered as flat rates, percentage rates, a joint percentage rate & flat rate, as a block rate, as a series of combination rates or in several other ways...

+ +

Percentage Rates allow rates to be set up by weight/price/number of items quickly and easily, without having to enter long lists of limits & rates!

+ +

For Example, if a shipping method uses a courier service which charges by the Kg/lb, a £1.25/Kg (or $1.25/lb) charge could be applied with the following rate definition: +

<weight>*:125%</weight> +

For a 3.00Kg/lb order, this would be calculated as 125% x 3.00 = 3.75. +

+ +

Block Rates provide for the charging of a set rate per “block” or part of a block of the weight/price/number of items. The weight/price/number of items is divided up according to a “block size”, which is rounded up to the nearest whole number of blocks, and multiplied by the specified rate.

+ +

For Example, if a shipping method uses a courier service which charges £1.50 (or $1.50) for each 0.5Kg/lb or part thereof, the following rate definition could be used: +

<weight>*:[0.5:1.50]</weight> +

For a 1.25Kg/lb order, this would be calculated as 3 x 1.50 = 4.50. +

+ +

Combination Rates allow orders to be priced using multiple rates at the same time!

+

For Example, the same bookcase as above could be sent for an International Order by a method which uses a combination rate that charges more per Kg for the first 10Kg than the second: +
Example of Combination Rate being applied to a 20Kg product at checkout.

+ +

Minimum/Maximum Rates make setting up rates even simpler by allowing the specification of a minimum or maximum rate to be applied to any rate calculation. For example, it's easy to state that a rate should be based on a percentage of the weight of the applicable products in the cart, but should cost a minimum amount. This works independently of any surcharge which can also be added on!

+ +

Nested Tables of Rates - Ceon Advanced Shipper even allows multiple calculation methods to be used per individual shipping method! A very powerful option which allows ever more flexible shipping rate rules to be set up. For example:

+

<price>0-250: <weight>0-10: 2.50, 10-30: 4.50</weight>, 250-*: 0.00</price> +

For orders less than £250 in value, shipping for orders weighing 0-10Kg will cost £2.50 and for orders weighing 10-30Kg it will cost £4.50. +

For orders over £250, shipping will be free. +

+ +

UPS Rates Calculator - This can be used to have the module contact UPS for a custom set of shipping quotes for the applicable products. The Source Country and Source Zipcode/Postcode configuration options for each region of each method mean that it is easy to set up drop-shipping using UPS directly from a manufacturer or distribution centre etc., even for individual products/categories/manufacturers!

+ +

USPS Rates Calculator - This can be used to have the module contact USPS for a custom set of shipping quotes for the applicable products. The Source Country and Source Zipcode/Postcode configuration options for each region of each method mean that it is easy to set up drop-shipping using USPS directly from a manufacturer or distribution centre etc., even for individual products/categories/manufacturers!

+ +

FedEx Rates Calculator - This can be used to have the module contact FedEx for a custom set of shipping quotes for the applicable products. The Source Country and Source Zipcode/Postcode configuration options for each region of each method mean that it is easy to set up drop-shipping using FedEx directly from a manufacturer or distribution centre etc., even for individual products/categories/manufacturers!

+ +

Contact Store Message Rates can be used instead of a numerical rate for individual methods, to prevent customers from checking out with the particular item(s) they have in their cart and instead have the module display a message. (For example, a message such as “Please contact the store for a personal shipping arrangement” could be displayed).

+

This is a very handy option to have for awkward products/categories/manufacturers, or even to place limits on the number of a items a customer can order etc. (E.g. “To order more than 50 units please contact us for a special shipping arrangement”).

+ +

Contact Store After Order Message Rates can be used to allow customers to check out with the particular item(s) they have in their cart but also to request that they “Contact the store for a personal shipping arrangement after completing your order” - so no potential sales are lost but the customer is still kept informed!

+ +

Individual Rates Per Product - Ceon Advanced Shipper can even link to the products database to look up a rate for each applicable product. This allows the store to have specific rates for specific products! Multiple rates per product are supported, so it's possible to assign different rates to different delivery regions. (The individual rates should simply have been entered in a custom field in the products table).

+ + +
+
+

“Ceon have released the aspirin which will eventually cure all Zen Cart developers' headaches - Ceon Advanced Shipper.

+

“Thanks to this module I can now ditch the half hearted solutions I was forced to provide my clients.

+

“Thank you for saving me time, money and pain.”

+
+

Tom Harding,
+ Web Developer

+
+ +

Multiple Packages Support

+

If there is a maximum weight of applicable products which can be sent in a single package, and the ability to split the order into multiple packages is available to the store, the weight at which the products will be split into another package can be specified.

+

Ceon Advanced Shipper will automatically work out how to combine the applicable products into the least number of individual packages possible. It will also take into account any packaging weight that must be added on per package!

+ + +

Packaging Weights

+

For rates being calculated using the weight of the applicable products, a table of packaging weights to be added on to the weight of the applicable products - before the rate for the weight is calculated - can be specified.

+

In a similar fashion to the rates themselves, the additional packaging weights can be specified using flat weights, percentage weights, flat & percentage weights, block weights or combination weights!

+ + +

Surcharges/Discounts

+

As if all of that wasn't enough, an additional surcharge, or a discount against the calculated shipping rate, can also be specified for each individual shipping method/region!

+

It is simple to add on charges for insurance (for example, based on the total price of the products), to add on a charge for handling a large order (for example, one having several packages) etc. or to apply a discount to the calculated shipping rate (for example, to reduce the rate returned by UPS/USPS by a certain percentage).

+

The surcharge/discount can be a simple flat rate, or can use its own, full table of rates, based on the total Price or the Number of Items of the applicable products, the Total Order Price of all products in the order (not just the total price of the applicable products for the method), the Shipping Rate calculated for the method, the total Weight of all the packages calculated for the method (all the applicable products plus the packaging) or the Number of Packages being used to ship the applicable products by this method!

+ +

Method Availability Scheduling & Shipping Scheduling

+

Individual shipping methods can be set to be valid only for certain time periods, or a preferred shipping date (or selection of shipping dates) can be offered to the customer!

+ +

For example, a “Saturday Delivery” Method could be configured to be available from Thursdays (at 16:00) until Fridays (at 16:00). +
+
The Shipping Method would then only be available as an option from 4PM on Thursday afternoon until 4PM on Friday afternoon.

+ +

An example of offering a selection of shipping dates: +
Example of Offering Shipping Scheduling.

+ +

In addition, it is also possible to set a limit on the number of orders which can make use of a particular shipping method within its availability period.

+ +

For example, any stores offering delivery services can stop taking orders for Saturday delivery after the 20th order has come in!

+ +

Full Tax Support

+

Each Region can have its own “Tax Class” setting and rates can be entered including or excluding tax, with an independent “Rates Include Tax” setting able to be configured for each Region for a Shipping Method.

+ +

Intuitive Admin Configuration Utility

+

It would be impossible to offer all the options that the Ceon Advanced Shipper module does using the standard Zen Cart configuration shipping module procedures so a complete Configuration Utility has been built from the ground up.

+ +

The JavaScript-powered Configuration Utility makes it easy to add, configure and delete Shipping Method Configurations, Product/Category/Manufacturer Selections and Region Configurations.

+ + +

Save Money Now!

+

To cut the store's shipping bills, find out more about Ceon Advanced Shipper and try out a demo on the website.

+ +
+
+ + +
+ Ceon Advanced Shipper 6 Zones +

Ceon Advanced Shipper Zones ExtensionMatch customers' addresses using Zones.

+ +

Click here to show more info...

+ +
+ +

The Ceon Advanced Shipper Zones module is an extension to the Ceon Advanced Shipper 6 module which allows store owners to make use of the Zones that have been set up for the store.

+ +

Specific shipping methods can be made available for a Zone quickly and easily by choosing the Country and Zone to which the shipping method applies in the Ceon Advanced Shipper Configuration Utility.

+ +

The Ceon Advanced Shipper demo has this module installed... try it out!

+ +
+
+ + +
+ Ceon Advanced Shipper 6 Localities +

Ceon Advanced Shipper Localities ExtensionLimit customers' addresses to a set list of States/Areas/Cities. +
(For stores which only deliver to specific destinations).

+ +

Click here to show more info...

+ +
+ +

The Ceon Advanced Shipper Localities module is an extension to the Ceon Advanced Shipper 6 module which allows store owners to set up a list of States (e.g. “California”, “Florida” etc.), Areas (e.g. “L.A. Metropolitan Area”, “North California” etc.) and Towns/Cities (e.g. “Los Angeles”, “Long Beach” etc.) for a country, which customers can use when they create an account on the site or add an address to their address book.

+ +

Specific shipping methods can be made available to a State/Area/City quickly and easily by choosing the Country and State/Area/City to which the shipping method applies in the Ceon Advanced Shipper Configuration Utility.

+ +

The “Terms” used for each “Locality” can be changed to a store's preferences (e.g. instead of “State/Area/City”, it could be “Province/County/City”).

+ +

The module fully supports JavaScript remote loading so that, as a customer selects a State/Area, a dynamic list of Cities within that Area/State are displayed and able to be selected - there's no clicking “Next” and waiting on page reloads!

+ +

For Example, the counties of Northern Ireland, with an area “Greater Belfast” of “County Antrim” would appear as follows: +
Example of State/Sub-locality Selection on the Create Account page. +
Selecting “Greater Belfast” would display the towns/cities defined for that area: +
Example of City Selection on the Create Account page. +

+ +

Now it couldn't be easier to limit shipping only to places the store actually ships, thereby avoiding unfulfilled, refunded or cancelled orders!

+ +

Of course, for 100% compatibility, the module fully supports any browser that doesn't have JavaScript enabled so every customer will find it easy to sign up or add an address!

+ +

The Ceon Advanced Shipper demo has this module installed... try it out!

+ +

Please note: Ceon Advanced Shipper 6 Localities is not likely to be upgraded to be compatible with Zen Cart 2.0.x, it is for 1.2.x/1.3.x/1.5.x only.

+ +
+
+ +

Back to top

+ + +

Product Variants (Attributes with Stock) Software

+ +
+ Ceon Product Variants (inc. Attributes with Stock) +

Zen Cart's most ESSENTIAL module! +
Increase Sales - Make it Easier for Customers to Pick Products to Buy. +
Track the Stock of Products with Attributes!

+ +
+ Screenshot showing the display of the list of variants for a T-Shirt in a dropdown gadget. This is a quick and easy way for the customer to pick the variant they want to purchase. The label for the gadget, “Select a Size and Colour”, can be customised, as can the information displayed for each variant (the stock level info and/or the product's previous price if it is on sale/special offer). + + + + + + + + + + + + The comprehensive, intuitive admin utility enables the store to set up the variants for a product in no time at all! + + + +
+

Click either of the images above for a short slideshow showing how this module massively improves Zen Cart's products system!

+
+ +

Variant? What is a Variant?

+ +
    +
  • If a store sells a T-Shirt which comes in different sizes and colours, then the individual T-shirts, “Medium Blue”, “Large Black” are “variants” of the “main” T-Shirt product.
  • +
+ + +

Better than Zen Cart's Attributes Options/Values System!

+ +
    +
  • Ceon Product Variants massively improves Zen Cart's products system, making it easier for customers to pick the specific product they want to buy.
  • +
  • +

    Customers can buy exactly what they want with one click! The store can simply display a list of the variants of a product in a dropdown gadget, in product listings and on the product's info page, allowing customers to pick the product variant they want to buy with a single click!

    +

    E.g. pick the “Medium Blue” variant of the T-Shirt or the “Large Black” variant, straight from the dropdown gadget!

    +
  • +
  • +

    Or the store can make use of Zen Cart's attributes display form on the product's info page, so that customers can pick specific values for the various options for the product, e.g. pick the Size of the T-Shirt and the Colour of the T-Shirt.

    +

    With Ceon Product Variants the form is made dynamic, so as the user selects different options, the price, image, stock level info etc. are all updated on the page straight away - there is no longer a need to add a product to the cart to see the price!

    +
  • +
+ + +

Track the Stock Level of Products with Attributes!

+ +
    +
  • A store can now track the stock levels of their individual products.
  • +
  • At last, with Ceon Product Variants, Zen Cart store owners can prevent customers from purchasing products that are out of stock!
  • +
  • And with full Ceon Back In Stock Notifications Integration, customers can be offered the facility to subscribe to a notification list for, and/or ask a question about, any product variant that is out of stock, bringing them back to the store when the product variant is back in stock!
  • +
+ + +

Instant, Dynamic Display of Price/Stock/Model etc. Information - inc Price x Quantity Calculation!

+ +
    +
  • When a customer selects a variant from the dropdown gadget, or makes a selection from the product's attributes form (e.g. selects a Size and Colour), the product information on the page is updated instantly!
  • +
  • The price for the variant is displayed directly in a product listing or on the product page, and takes full account of the quantity being ordered!
  • +
  • Any variant-specific image is displayed, as is any information about the variant's stock level, its specific model code, its weight and even the date this variant of the product will become available to buy!
  • +
+ + +

Too many features to list here!

+ +
    +
  • +

    Check out the full list of features, including:

  • +
  • +

    Full Ceon URI Mapping Support - Create URIs for the Variants, e.g. for an "aarck and aawe" T-Shirt:

    +

    /t-shirts/aarck-and-aawe/medium-blue +
    /t-shirts/aarck-and-aawe/large-black

    +
  • +
  • An Intuitive, Comprehensive Admin Utility.
  • +
  • Easy Creation/Updating of Variants in an Attributes Grid - create/update all of the variants for a product at once, on one page - it couldn't be quicker/easier!
  • +
  • ..and more!
  • +
+ +

Upgrade your Zen Cart store!

+ +

See the software in action now by checking out the demo.

+ +
+ +

Back to top

+ + +

Marketing Modules

+ +
+ Back In Stock Notifications +

Don't miss any potential sales - bring customers back to the store!

+ +
+
+

“Time once again to thank Ceon for this amazing contribution!”

+

“Folks who are curious to know if it's worth adding: We have many marketing tools but this is the best marketing tool we have.”

+

“We just had a record sales day yesterday thanks entirely to it!”

+
+

Dan,
+ Brushwood Nursery

+
+ +

If a product goes out of stock, this module automatically offers customers the ability to subscribe to a “Back In Stock Notification List”. The store owner can then send a customised e-mail to the list of subscribed customers whenever the product(s) they are interested in are back in stock.

+

Screenshot showing the link that is shown when a product is out of stock; it is placed where the Buy Now button would normally be.

+ +

Customers can check their back in stock notification subscriptions and unsubscribe themselves if desired, for full compliance with data protection laws.

+

Many stores using the module have it said it greatly increases sales by bringing people back to the site!

+

Find out more and download the module from its website.

+
+ +

Back to top

+ + +

Tax Modules

+ +
+ Tax Declaration + +

The Tax Declaration module lets a store owner mark particular products as able to be exempt from tax if the customer signs a tax declaration upon checkout.

+

It allows the store to fully comply with Tax Declaration laws for people of special circumstance, for example those with disabilities in the UK.

+

Find out more and download the module from its website.

+
+ +

Back to top

+ + +

Payment Modules

+ +
+ Sage Pay +

Accept Credit/Debit Cards Quickly and Cost-Effectively!

+

Accept Visa, MasterCard, Maestro, American Express, Visa Debit, Visa Electron, MasterCard Debit, Diners Club International, JCB and Laser cards!Sage Pay (formerly Protx) offers one of the most cost-effective solutions for accepting Credit Cards and Debit Cards for UK/Ireland stores - we even use them ourselves!

+

Stores wishing to accept cards online through Sage Pay only need to sign up for a Sage Pay Go account and to link it with a merchant account. (If the store doesn't yet have a merchant account, Sage Pay can provide a good deal with their partners, Bank of Scotland!).

+

Once the store has a Sage Pay Go account, it then has three options for taking payment via Sage Pay at checkout time, each of which has its unique plus points, and all of which have been specifically tailored to Zen Cart by Ceon. All three are extremely easy to install and fully comprehensive:

+

+ Ceon Sage Pay Direct | + Ceon Sage Pay Server | + Ceon Sage Pay Form +

+ +
+ Screenshot showing streamlined integration of Ceon Sage Pay Direct payment form on the checkout payment page. + + + + Screenshot showing Transaction Admin functionality of Ceon Sage Pay modules integrated into the Zen Cart admin order page. + + + + + + + +
+

Click either of the images above for a short slideshow showing the fantastic level of integration these modules have with Zen Cart!

+
+ +

Streamlined Checkout Process

+ +
    +
  • We think that Ceon Sage Pay Direct is the best solution, as the customer remains on the store's website, they are not redirected to an external site to enter their details as with many other payment solutions, making this as professional a payment solution as you could possibly use with Zen Cart!
  • +
  • The whole checkout process is completely streamlined, allowing store owners to have a store which works just as well as any of the large e-commerce websites - including full 3D-Secure support using slick IFrame technology.
  • +
+ +

Transaction Admin

+ +
    +
  • +

    Manage transactions directly within Zen Cart!

    +

    All our Sage Pay modules come with a fantastic Transaction Admin, which integrates fluidly with the Zen Cart admin orders page, enabling stores to carry out many “Transaction Actions” directly within the Zen Cart admin:

    +
      +
    • Deferred transactions can be partially or fully Released or Aborted.
    • +
    • Authenticated transactions can be partially or fully Authorised, or Cancelled.
    • +
    • Orders which used “Immediate Charge” or “Deferred” can be Refunded in full or in part, or, if not yet settled, Voided. (At this time, Authenticated transactions can only be refunded through My Sage Pay).
    • +
    +
  • +
  • With all of the transaction actions, the Zen Cart totals for the order can be automatically updated, as can the overall Zen Cart order status - a level of integration never before seen in Zen Cart!
  • +
  • +

    Most stores should never need to use My Sage Pay again! The transaction admin is almost a complete replacement for My Sage Pay, having a live connection to Sage Pay which enables even more features:

    +
      +
    • Display of “The 3rd Man” fraud results for transactions.
    • +
    • Display of the up-to-the-moment status of transactions.
    • +
    • Automatic syncing of information about any transaction actions that have been performed against the initial transaction.
    • +
    +
  • +
+ +

Easier PCI Compliance/Setup

+ +
    +
  • The Ceon Sage Pay Server and Ceon Sage Pay Form modules both offer easier PCI compliance as the card details are handled on Sage Pay's PCI Level 1 Compliant server - the store never comes in contact with them.
  • +
  • Server is a little bit a nicer for the customer than Form, as Server uses IFrame technology, to allow the store to give the impression that the customer is staying on the store's website, whereas with Form the customer is redirected to Sage Pay's server.
  • +
  • Form is even simpler to set up than Direct or Server as no SSL certificate is required for it.
  • +
+ +

Compare Options

+ +

To make it easier to determine which solution is best for you/your client's store, we have created a comprehensive comparison of the three different options.

+ +

Save Money - Get £5.00 Off!

+ +

If you haven't already applied for a Sage Pay Go account, apply for one now (it's free to apply!) using this link and get £5.00 off the cost of any of our Sage Pay distributions!

+
+ + +
+ Realex Remote +

Realex Remote is an advanced payment module supporting the Realex Remote service from the UK/Ireland payment gateway Realex, including full support for RealMPI (3D-Secure) for even more secure payments.

+

The customer remains on the store's website; they are not redirected to an external site to enter their details as with many other payment solutions, making this as professional a payment solution as you could possibly use with Zen Cart!

+

The whole checkout process is completely streamlined, therefore allowing store owners to have a store which works just as well as any of the large e-commerce websites!

+
+ + +
+ Cardsave Direct +

Cardsave run one of the best value payment gateways in the UK.

+

For a small monthly fee they'll provide a payment gateway account and a FREE merchant account with Streamline. There are no setup fees and the Streamline account offers competitive card charges!

+

Our Cardsave Direct module for Zen Cart has been carefully written to be extremely easy to install and fully comprehensive. The customer remains on the store's website; they are not redirected to an external site to enter their details as with many other payment solutions, making this as professional a payment solution as you could possibly use with Zen Cart!

+

The whole checkout process is completely streamlined, allowing store owners to have a store which works just as well as any of the large e-commerce websites!

+ +

Get a FREE merchant account!

+ +

If you haven't already got a merchant account, sign up with Cardsave now and get a FREE merchant account with your Cardsave payment gateway account!

+
+ + +
+ PaymentSense Direct +

PaymentSense guarantee the lowest cost for a payment gateway in the UK.

+

They can also provide a merchant services account. And they do this faster than any other UK provider.

+

PaymentSense guarantee unbeatable prices along with the highest levels of security and reliability.

+

Our PaymentSense Direct module for Zen Cart has been carefully written to be extremely easy to install and fully comprehensive. The customer remains on the store's website; they are not redirected to an external site to enter their details as with many other payment solutions, making this as professional a payment solution as you could possibly use with Zen Cart!

+

The whole checkout process is completely streamlined, allowing store owners to have a store which works just as well as any of the large e-commerce websites!

+ +

Get the lowest cost payment gateway service in the UK

+ +

Sign up now and start accepting cards with PaymentSense within a few days!

+
+ + +
+ Iridium Direct +

Iridium run one of the best value payment gateways in the UK.

+

Set-up for the gateway is free and there are no charges for trying out their systems. Registration is required but it doesn't commit you to a contract or incur any initial cost. You can even get a UK Merchant Account through them with no setup fees (normally £250!).

+

Our Iridium Direct module for Zen Cart has been carefully written to be extremely easy to install and fully comprehensive. The customer remains on the store's website; they are not redirected to an external site to enter their details as with many other payment solutions, making this as professional a payment solution as you could possibly use with Zen Cart!

+

The whole checkout process is completely streamlined, allowing store owners to have a store which works just as well as any of the large e-commerce websites!

+
+ + +
+ Ceon Manual Card +

Ceon Manual Card provides everything a Zen Cart shop owner needs to accept Credit/Debit Card payments over the internet for inputting into a Manual/Offline Card Processing System.

+

It is reliable, capable and extremely easy to use, but is a very basic way to do business over the internet, and is therefore recommended for use by tiny stores only. Anyone serious about selling on the internet should look towards a professional gateway, such as that supported by our Sage Pay payment modules.

+
+ +

Back to top

+ + +

Other Software from Ceon

+

Here at Ceon we don't just write great software for Zen Cart, our main focus is in fact on more general software, some of which is essential for any business...

+ +
+ CardPay - Sage Pay Edition + +

CardPay - Sage Pay EditionTake Credit / Debit Card Payments Quickly and Easily!

+ +
    +
  • Offer clients/customers the ability to pay for goods/services using a credit or debit card!

  • +
+ +
    +
  • Create a Payment Request or set up a general Payment Request Template.

  • +
  • Send the client/customer the link for the Payment Request.

  • +
  • The client/customer browses to the link and enters their details.

  • +
  • Payment is received... Simple!

  • +
+ +

Click here to show more info and screenshots...

+ +
+ +

Screenshot of Payment Form, where the client/customer can enter the amount (no tax) and extra information about the payment if desired.Flexible Payment Form Setups

+ +
    +
  • Either send clients/customers a link to a payment form with parts of it already filled in.
  • +
  • Or let the client/customer fill in the necessary details themselves (Amount, what the Payment is For).
  • +
  • Specify whether the client/customer is allowed to adjust the payment amount!
  • +
  • Set specific tax rates and tax descriptions for payments.
  • +
+ + +

Screenshot of Payment Details Form with Tax and SurchargesFlexible Configuration Options

+ + + + + +
    +
  • Set the list of card types which can be used.
  • +
  • Set specific surcharges/discounts for individual card types (percentage rates and/or flat rates).
  • +
  • Specify the currency to be used for a payment.
  • +
+ + +

Maximum Security

+ +
    +
  • Maximum security is assured with full 3D-Secure support, smoothly integrated using IFrame technology.
  • +
+ + +

Easy to Install and Style

+ +
    +
  • Installation takes just a few minutes.
  • +
  • All aspects of the software can be styled quickly and easily through the use of a simple but powerful template system.
  • +
+ + +

Screenshot of the Payment Details Confirmation Page.Easy to Use, Comprehensive Admin

+ +
    +
  • Create Payment Requests/Payment Request Templates quickly and easily.
  • +
  • View all current/previous Payment Requests and re-issue requests.
  • +
  • View transaction information for completed requests.
  • +
+ +

Editions for various Payment Gateways

+ +
    +
  • Versions are available for Sage Pay, Cardsave, Realex and Iridium.
  • +
+ +

Every business needs software like this!

+ +

Find out more.. visit the CardPay website now!

+
+ +
+ +

Back to top

+ + + +
+
+ + + + + \ No newline at end of file diff --git a/DOKU ENGLISCH/sections/configuration.html b/DOKU ENGLISCH/sections/configuration.html new file mode 100644 index 0000000..b12559e --- /dev/null +++ b/DOKU ENGLISCH/sections/configuration.html @@ -0,0 +1,592 @@ + + + + + .:: Ceon :: Zen Cart :: Module :: Ceon URI Mapping ::. + + + + + + + + + + + + + + + + + + + + +
+
+ +

Ceon URI Mapping

+ + + +

Configuration

+ +

Essential Points - PLEASE READ!

+ +
    +
  1. +

    This module DOES NOT automatically add mappings for EXISTING Categories/Products/Manufacturers/EZ-Pages!

    +

    If the site has existing Categories/Products/Manufacturers/EZ-Pages, they'll continue to use the standard Zen Cart dynamic URIs, until a URI has been entered or auto-generated for them, by editing the respective Category/Product/Manufacturer/EZ-Page in the admin.

    +

    This means going in and editing every Category/Product/Manufacturer/EZ-Page for which a static URI mapping is desired.

    +

    This gives you full control over all of the site's URIs, one of the main points of this module.

    +

    Our URI Mappings Manager software has the ability to auto-generate URI mappings for all/selected Categories/Products/Manufacturers/EZ-Pages/Other Zen Cart Pages at once.

    +
  2. +
  3. +

    All URI mappings entered must be relative to the site's root. For example:

    + +

    /books/life-is-good +
    /clothes/children/t-shirts +
    /company/about-us

    + +

    This means that the same URIs will map correctly no matter what the actual domain name being used to access the site is (e.g. www.yourstore.com or yourstore.com).

    +

    If “http://www.yourstore.com” is entered for a URI mapping it will be stripped from the mapping.

    +
  4. + +
  5. +

    It is recommended that all URI mappings for products and categories should use a full path. For example:

    + +

    /category-one/subcategory-of-category-one +
    /category-one/subcategory-of-category-one/product-three +
    /category-one/subcategory-two-of-category-one +
    /category-one/subcategory-two-of-category-one/product-fifteen

    + +

    This keeps the site organised and avoids conflicts between two pages which are trying to use the same URI (e.g. “accessories” within one category being seen as the same URI as “accessories” within another category! In this case one of the categories could never be visited!).

    +
  6. + +
  7. +

    Any URI mappings created using the module's URI auto-generation functionality will comply with the above.

    +

    Auto-generated URI mappings will use the full path to a category/product and the name of the category/product. Auto-generated URI mappings for manufacturers will use the name of the page. Auto-generated URI mappings for EZ-Pages will use the title of the page.

    +
  8. +
+ +

Table Of Contents

+
    +
  1. Setting up a Rewrite Rule
  2. +
  3. Adjusting the Rewrite Rule (Apache/IIS webservers) +
      +
    1. Adding exceptions to the rule to prevent particular addresses (e.g. Control Panels etc.) from being handled by Zen Cart.
    2. +
    3. Modifying the rule to prevent files with particular file extensions (particular file types) from being “blocked” by Ceon URI Mapping.
    4. +
    5. Modifying the rule to allow URI mappings to be used which end with a particular file extension (e.g. “.html”).
    6. +
    +
  4. +
  5. Configuring the URI Mapping Auto-generation settings
  6. +
  7. Specifying Auto-manage Settings and URI Parts Text for standard Zen Cart pages related to a Product
  8. +
  9. Specifying the current URI Mapping for a Category
  10. +
  11. Specifying the current URI Mapping for a Product
  12. +
  13. Specifying the current URI Mapping for a Manufacturer
  14. +
  15. Specifying the current URI Mapping for an EZ-Page
  16. +
  17. Organise EZ-Pages into Site Sections
  18. +
  19. Specifying the current URI Mapping for any other Zen Cart page
  20. +
  21. Using Static URIs as an Alias for another Static URI
  22. +
  23. Enabling/Disabling the Ceon URI Mapping module
  24. +
+ + +
    +
  1. +

    Setting up a Rewrite Rule

    + +

    The URI mapping provided by this module is made possible using a very simple URI rewrite rule.

    +

    This rule must be added to the webserver configuration for the site.

    + +
      +
    • This software comes with “Example Rewrite Rule” functionality, which does its best to create a “base” rule for the store.
    • +
    • Please follow the instructions given in this Example Rewrite Rule section of the software.
    • +
    • If an error is encountered, please consult the FAQs for possible fixes or ask your webhost for help. Only after trying those two options should you request help from Ceon or the Zen Cart forum, as the problem is likely to be server-specific and therefore of no general interest to everyone else who needs to use the support thread!
    • +
    • Details of how to enable the rewrite functionality of the store's webserver (e.g. mod_rewrite for Apache, IIS ISAPI_Rewrite, IIS URL Rewrite) will not be given here. If information about that is required, please consult the webserver's documentation or search the internet for a guide, there are plenty of them.
    • +
    • Once you have a working rewrite rule you can customise the rule as necessary for the store, with the following instructions intended as a helpful reference...
    • +
    +
  2. + +
  3. +

    Adjusting the Rewrite Rule (Apache/IIS webservers)

    + +
      +
    1. Adding exceptions to the rule to prevent particular addresses (e.g. Control Panels etc.) from being handled by Zen Cart.
    2. +
    3. Modifying the rule to prevent files with particular file extensions (particular file types) from being “blocked” by Ceon URI Mapping.
    4. +
    5. Modifying the rule to allow URI mappings to be used which end with a particular file extension (e.g. “.html”).
    6. +
    + +
      +
    1. +
      Adding exceptions to the rule to prevent particular addresses (e.g. Control Panels etc.) from being handled by Zen Cart.
      + +

      If the rewrite rule is blocking access to particular addresses on the server (e.g., zc_install), exclusions need to be added to the rule for any addresses that should not be handled by Zen Cart.

      +

      Adding an exclusion for a path on the site is fairly easy, simply requiring the addition of a condition to the rewrite rule:

      + +

      # Don't rewrite "cpanel" directory +
      RewriteCond %{REQUEST_URI} !^/cpanel/ [NC]

      + +

      This stops any URI beginning with “/cpanel/” from being handled by Ceon URI Mapping.

      + +

      The condition should be placed before the RewriteRule line in the rule.

      +
    2. + +
    3. +
      Modifying the rule to prevent files with particular file extensions (particular file types) from being “blocked” by Ceon URI Mapping.
      + +

      The example rewrite rule by default does not rewrite URIs ending with a 2 to 5 letter file extension, nor does it rewrite URIs that end with some other popular file extensions that include numbers as well.

      +

      However, some stores may have files that use file extension(s) that the example rewrite rule may try to send to Ceon URI Mapping for mapping instead of being sent to the browser, therefore effectively “blocking” those files.

      +

      It's easy to prevent the Ceon URI Mapping module from handling URIs with particular file extensions by making a simple change to the rewrite rule.

      +

      Simply add exclusion(s) by adding a condition to the rewrite rule:

      + +
      +

      For example, to prevent files with the extension “3gp” from being blocked:

      +

      RewriteCond %{REQUEST_URI} !\.3gp$

      +

      Or, instead of adding multiple condition lines (one per file extension), a shorthand way to prevent files with the extensions “3gp”, “m4v” or “3dml” from being blocked is:

      +

      RewriteCond %{REQUEST_URI} !\.(3gp|m4v|3dml)$ [NC]

      +
      + +

      The condition(s) should be placed before the RewriteRule line in the rule.

      +
    4. + +
    5. +
      Modifying the rule to allow URI mappings to be used which end with a particular file extension (e.g. “.html”).
      + +

      The example rewrite rule by default does not rewrite URIs ending with a 2 to 5 letter file extension, to avoid wasteful attempts by the later rules to check if image files, CSS files etc. should have their URIs rewritten, and for maximum compatibility with other software being used to run the site.

      +

      However, some stores may want to use particular extensions - for example “.html” or “.php” - at the end of its URIs, possibly to match up with advertising literature, or to re-map URIs from a previous site.

      +

      It's easy to let the Ceon URI Mapping module manage URIs with any file extension by making a simple change to the rewrite rule.

      + +
      +

      For example, to allow the mapping of URIs ending in “.html”, the following RewriteCond from the example rule should be changed from:

      +

      RewriteCond %{REQUEST_URI} !\.[a-zA-Z]{2,5}$

      +

      to:

      +

      RewriteCond %{REQUEST_URI} !\.[a-zA-Z]{2,5}$ [OR] +
      RewriteCond %{REQUEST_URI} \.(html)$ [NC]

      +
      + +

      Additional extensions can be added by adding them to the RewriteCond with a ‘|’ in front of them.

      + +
      +

      For example, to allow the mapping of URIs ending in “.html”, “.htm” and “.php”, the following RewriteCond from the example rule should be changed from:

      +

      RewriteCond %{REQUEST_URI} !\.[a-zA-Z]{2,5}$

      +

      to:

      +

      RewriteCond %{REQUEST_URI} !\.[a-zA-Z]{2,5}$ [OR] +
      RewriteCond %{REQUEST_URI} \.(html|htm|php)$ [NC]

      +
      +
    6. +
    +

    Back to table of contents

    +
  4. + +
  5. +

    Configuring the URI Mapping Auto-generation settings

    +

    The Auto-generation settings in the configuration utility can be used to:

    +
      +
    • Change the Capitalisation setting,
    • +
    • Change the Whitespace Replacement Character,
    • +
    • Edit the list of words which are automatically Removed when auto-generating the URIs
    • +
    • Edit the list of characters/strings that will be Replaced when auto-generating URIs (along with their respective replacements).
    • +
    • Change the auto-addition of the language code (2-letter identifier) to the beginning of the URI when auto-generating the URIs and
    • +
    • Enable/disable the auto-appending of a number to product URI mappings that are clashing with existing mappings on the site.
    • +
    + +
      +
    • Go to Modules > URI Mapping (SEO) Config in the Zen Cart admin.
    • +
    + +

    Back to table of contents

    +
  6. + +
  7. +

    Specifying Auto-manage Settings and URI Parts Text for Products' “Reviews”, “Tell-A-Friend” and “Ask-A-Question” pages

    + +

    The various Reviews pages, the Tell-A-Friend pages and the Ask-A-Question pages can automatically be made “subsections” of products' info pages, by appending some specific URI parts to a product info page's static URI.

    + +

    Which pages have URI mappings “auto-managed” by the software, and what actual text to use, can be specified by adjusting the appropriate settings in the Config Utility.

    + +
      +
    • +

      Go to Modules > Ceon URI Mapping (SEO) Config in the Zen Cart Admin.

      +
    • +
    • +

      Then go to the Auto-managed Product Page URIs tab, adjust the settings appropriately for the store, and click “Save”.

      +
    • +
    + +

    Back to table of contents

    +
  8. + +
  9. +

    Specifying the current URI Mapping for a Category

    + +

    Specifying the current URI mapping for a Category, for each language used by the store, is easily accomplished:

    +
      +
    • Use Catalog > Categories/Products to navigate to the category the desired category is within.
    • +
    • Click the (green) icon for “Edit” alongside the category's name or click the “New Category” button if adding a new category.
    • +
    + +

    The URI mapping can be automatically generated using the store's URI mapping auto-generation settings:

    + +
      +
    • The URI mapping fields can be found at the bottom of the page.
    • +
    • Simply tick the URI mapping auto-generation text box and click “Save”.
    • +
    • The URI mapping will then be generated using the full path to the current category and the name of the category. For stores with multiple languages, a URI mapping will be generated for each language, using the respective category names entered for each language.
    • +
    + +

    Or the current URI mapping can be entered manually:

    + +
      +
    • The text field(s) for entering the URI mapping(s) which should map this category can be found at the bottom of the page.
    • +
    • If the URI mapping auto-generation text box is ticked, it must have the tick removed.
    • +
    • Simply enter the URI mappings for the category (for each language the store uses) in the text field(s) and click “Save”.
    • +
    • Please Remember: URI mappings entered manually must be relative to the root of the site (“/”), and must be the full path to the category. E.g. “/category-one/subcategory-of-category-one
    • +
    + + +

    Changing the current URI Mapping for a Category

    + +

    Changing the current URI mapping for a Category is easily accomplished by following the same steps as for specifying one in the first place.

    + +
      +
    • The URI mapping can be completely re-generated or a new URI mapping can be entered manually for each language the store is using.
    • +
    • If the store uses multiple languages and auto-generation is used to update the URI mappings, the URI mappings for all languages for the category will be updated, overwriting any previous values.
    • +
    + +

    Please Note: The previous URI mapping will still point towards the category but anyone using it will be redirected to the current URI - this prevents broken links.

    + + +

    Removing the current URI mapping for a Category

    + +
      +
    • Use Catalog > Categories/Products to navigate to the category the desired category is within.
    • +
    • Click the (green) icon for “Edit” alongside the category's name.
    • +
    • Clear the value entered in the text field for the appropriate language (or clear the values for all the languages!): Delete the text, leaving the text field blank.
    • +
    • Click “Save”
    • +
    + +

    Please Note: The previous URI mapping will still point towards the category but anyone using it will be redirected to the standard Zen Cart dynamic URI for the category - this prevents broken links.

    + +

    Back to table of contents

    +
  10. + +
  11. +

    Specifying the current URI Mapping for a Product

    + +

    Specifying the current URI mapping for a Product, for each language used by the store, is easily accomplished:

    +
      +
    • Use Catalog > Categories/Products to navigate to the product the desired product is within.
    • +
    • Click the (green) icon for “Edit” alongside the product's name or click the “New Product” button if adding a new product.
    • +
    + +

    The URI mapping can be automatically generated using the store's URI mapping auto-generation settings:

    + +
      +
    • The URI mapping fields can be found at the bottom of the page.
    • +
    • Simply tick the URI mapping auto-generation text box and click “Preview”.
    • +
    • The URI mapping will then be generated using the full path to the current product and the name of the product. For stores with multiple languages, a URI mapping will be generated for each language, using the respective product names entered for each language.
    • +
    • The auto-generated URI mappings for each language the store is using will be displayed below the product's description.
    • +
    • Click “Update” to save the product's information, including its URI mapping(s).
    • +
    + +

    Or the current URI mapping can be entered manually:

    + +
      +
    • The text field(s) for entering the URI mapping(s) which should map this product can be found at the bottom of the page.
    • +
    • If the URI mapping auto-generation text box is ticked, it must have the tick removed.
    • +
    • Simply enter the URI mappings for the product (for each language the store uses) in the text field(s) and click “Preview”.
    • +
    • Please Remember: URI mappings entered manually must be relative to the root of the site (“/”), and must be the full path to the product. E.g. “/category-one/subcategory-of-category-one/product-three
    • +
    • The entered URI mapping(s), for each language the store is using, will be displayed below the product's description, properly formatted to remove any unusable characters.
    • +
    • If satisfied with the format of the URI click “Update”. To make changes click “Back”.
    • +
    + + +

    Changing the current URI Mapping for a Product

    + +

    Changing the current URI mapping for a Product is easily accomplished by following the same steps as for specifying one in the first place.

    + +
      +
    • The URI mapping can be completely re-generated or a new URI mapping can be entered manually for each language the store is using.
    • +
    • If the store uses multiple languages and auto-generation is used to update the URI mappings, the URI mappings for all languages for the product will be updated, overwriting any previous values.
    • +
    + +

    Please Note: The previous URI mapping will still point towards the product but anyone using it will be redirected to the current URI - this prevents broken links.

    + +

    Removing the current URI mapping for a Product

    + +
      +
    • Use Catalog > Categories/Products to navigate to the product the desired product is within.
    • +
    • Click the (green) icon for “Edit” alongside the product's name.
    • +
    • Clear the value entered in the text field for the appropriate language (or clear the values for all the languages!): Delete the text, leaving the text field blank.
    • +
    • Click “Preview”.
    • +
    • The URI mapping(s) for the appropriate language(s), displayed below the product's description, should simply say “No URI Mapping”.
    • +
    • Click “Update” to save the product's details and delete the cleared URI mapping(s). To make changes click “Back”.
    • +
    + +

    Please Note: The previous URI mapping will still point towards the product but anyone using it will be redirected to the standard Zen Cart dynamic URI for the product - this prevents broken links.

    + +

    Back to table of contents

    +
  12. + + +
  13. +

    Specifying the current URI Mapping for a Manufacturer

    + +

    Specifying the current URI mapping for a Manufacturer, for each language used by the store, is easily accomplished:

    + +
      +
    • Use Catalog > Manufacturers to navigate to the desired manufacturer.
    • +
    • Click the (green) icon for “Edit” alongside the manufacturer's name or click the “Insert” button if adding a new manufacturer.
    • +
    + +

    The URI mapping can be automatically generated using the store's URI mapping auto-generation settings:

    + +
      +
    • The URI mapping fields can be found at the bottom of the page.
    • +
    • Simply tick the URI mapping auto-generation text box and click “Save”.
    • +
    • The URI mapping will then be generated using the full path to the current manufacturer and the name of the manufacturer. For stores with multiple languages, a URI mapping will be generated for each language, using the respective manufacturer names entered for each language.
    • +
    + +

    Or the current URI mapping can be entered manually:

    + +
      +
    • The text field(s) for entering the URI mapping(s) which should map this manufacturer can be found at the bottom of the page.
    • +
    • If the URI mapping auto-generation text box is ticked, it must have the tick removed.
    • +
    • Simply enter the URI mappings for the manufacturer (for each language the store uses) in the text field(s) and click “Save”.
    • +
    • Please Remember: URI mappings entered manually must be relative to the root of the site (“/”), and must be the full path to the manufacturer. E.g. “/ceon
    • +
    + + +

    Changing the current URI Mapping for a Manufacturer

    + +

    Changing the current URI mapping for a Manufacturer is easily accomplished by following the same steps as for specifying one in the first place.

    + +
      +
    • The URI mapping can be completely re-generated or a new URI mapping can be entered manually for each language the store is using.
    • +
    • If the store uses multiple languages and auto-generation is used to update the URI mappings, the URI mappings for all languages for the manufacturer will be updated, overwriting any previous values.
    • +
    + +

    Please Note: The previous URI mapping will still point towards the manufacturer but anyone using it will be redirected to the current URI - this prevents broken links.

    + + +

    Removing the current URI mapping for a Manufacturer

    + +
      +
    • Use Catalog > Manufacturers to navigate to the desired manufacturer.
    • +
    • Click the (green) icon for “Edit” alongside the manufacturer's name.
    • +
    • Clear the value entered in the text field for the appropriate language (or clear the values for all the languages!): Delete the text, leaving the text field blank.
    • +
    • Click “Save”
    • +
    + +

    Please Note: The previous URI mapping will still point towards the manufacturer but anyone using it will be redirected to the standard Zen Cart dynamic URI for the manufacturer - this prevents broken links.

    + +

    Back to table of contents

    +
  14. + + +
  15. +

    Specifying the current URI Mapping for an EZ-Page

    + +

    Specifying the current URI mapping for an EZ-Page, for each language used by the store, is easily accomplished:

    +
      +
    • Click Tools > EZ-Pages and navigate to the page the desired EZ-Page is on.
    • +
    • Click the (green) icon for “Edit” alongside the EZ-Page's title or click the “New File” button if adding a new EZ-Page.
    • +
    + +

    The URI mapping can be automatically generated using the store's URI mapping auto-generation settings:

    + +
      +
    • The URI mapping fields can be found at the bottom of the page.
    • +
    • Simply tick the URI mapping auto-generation text box and click “Update”/“Insert”.
    • +
    • The URI mapping will then be generated using the full path to the current EZ-Page and the title of the EZ-Page. As EZ-Pages only support one language, the same URI mapping will be generated for each language the store uses, using the EZ-Page title entered.
    • +
    + +

    Or the current URI mapping can be entered manually:

    + +
      +
    • The text field(s) for entering the URI mapping(s) which should map this EZ-Page can be found at the bottom of the page.
    • +
    • If the URI mapping auto-generation text box is ticked, it must have the tick removed.
    • +
    • Simply enter the URI mappings for the EZ-Page (for each language the store uses) in the text field(s) and click “Update”/“Insert”.
    • +
    • Please Remember: URI mappings entered manually must be relative to the root of the site (“/”), and must be the full path to the EZ-Page. E.g. “/about-us
    • +
    + + +

    Changing the current URI Mapping for an EZ-Page

    + +

    Changing the current URI mapping for an EZ-Page is easily accomplished by following the same steps as for specifying one in the first place.

    + +
      +
    • The URI mapping can be completely re-generated or a new URI mapping can be entered manually for each language the store is using.
    • +
    • If the store uses multiple languages and auto-generation is used to update the URI mappings, the URI mappings for all languages for the EZ-Page will be updated, overwriting any previous values.
    • +
    + +

    Please Note: The previous URI mapping will still point towards the EZ-Page but anyone using it will be redirected to the current URI - this prevents broken links.

    + + +

    Removing the current URI mapping for an EZ-Page

    +
      +
    • Click Tools > EZ-Pages and navigate to the page the desired EZ-Page is on.
    • +
    • Click the (green) icon for “Edit” alongside the EZ-Page's title.
    • +
    • Clear the value entered in the text field for the appropriate language (or clear the values for all the languages!): Delete the text, leaving the text field blank.
    • +
    • Click “Update”
    • +
    + +

    Please Note: The previous URI mapping will still point towards the EZ-Page but anyone using it will be redirected to the standard Zen Cart dynamic URI for the EZ-Page - this prevents broken links.

    + +

    Back to table of contents

    +
  16. + +
  17. +

    Organise EZ-Pages into Site Sections

    + +

    EZ-Pages can be organised into logical sections by simply putting a bit of thought into the format of their URI mappings.

    +
      +
    • A main section should use the first part of the URI. For example:
    • +
    • An EZ-Page with the main information about a company could use the URI mapping: +

      /company
    • +
    • A subsection should use a combination of the URI mapping for its parent section and a new part of the URI. For example:
    • +
    • An EZ-Page with directions on how to get to a company's offices could use the URI mapping: +

      /company/how-to-find-us
    • +
    • Another main section would use different text for the first part of the URI. For example:
    • +
    • An EZ-Page with the main support information for a company could use the URI mapping: +

      /support
    • +
    +

    Hard-coded menus (e.g. Javascript drop-down menus etc.) could then make use of these URIs to link directly to the appropriate section or page within a section, giving the illusion of a structured site with a logical hierarchy!

    + +

    Back to table of contents

    +
  18. + +
  19. +

    Specifying the current URI Mapping for any other Zen Cart page

    + +

    There are two ways to specify static URIs for a Zen Cart page.

    + +
      +
    1. +

      The first is the most useful as it results in all links on the site to that page using the static URI instead of the standard dynamic Zen Cart URI (just as with products etc. using URI mappings).

      +

      Please Note: Any query string parameters are still appended to the URI.

      +

      Basically, this first method can be used to replace the likes of:

      +

      index.php?main_page=products_all&disp_order=3

      +

      with:

      +

      /our-products?disp_order=3.

      + +
        +
      • Use software such as PHPMyAdmin to add a new record to the ceon_uri_mapping table.
      • +
      • The URI mapping to be mapped from should be entered in the uri field. (Remember to begin the URI with a slash ‘/’).
      • +
      • The number representing the language ID this URI mapping applies for should be entered in the language_id field.
      • +
      • The current_uri field should be set to “1” to make this the “current” URI.
      • +
      • The Zen Cart page to be mapped to should be entered in the main_page field.
      • +
      • The date/time this URI mapping was added should be set in the date_added field (or just use the “NOW()” SQL function).
      • +
      • The query_string_parameters, associated_db_id and alternate_uri fields are not used, they must be left as “NULL”. The redirection_type_code is not used either so it doesn't matter what value it has (it can just be left at the default value of 301).
      • +
      +
    2. +
    3. +

      The second is designed to allow data to be supplied to Zen Cart, by initialising the GET variables for the Zen Cart page when it is loaded.

      +
      +

      Please Note: Since the second method matches against the exact query string parameters entered, when generating links on the site, the query string parameters have to match exactly or the URI entered won't be used as the link to the Zen Cart page entered, the standard Zen Cart dynamic URI will.

      +

      Any other parameters in the query string will cause this URI not to be used as the static URI in links... even sort parameters (“disp_order=3”) will be enough to prevent the dynamic URI mapping to the URI entered here.

      +

      For this reason it's recommended in most cases just to match against the page's name using the first method, the second method really is only for very specific circumstances when data needs to be loaded for a page. For example:

      +

      When mapping a uri of ”/christmas-survey“ to a main_page of ”survey“ with query_string_parameters of “survey_id=12”.

      +
      + +
        +
      • Use software such as PHPMyAdmin to add a new record to the ceon_uri_mapping table.
      • +
      • The URI mapping to be mapped from should be entered in the uri field. (Remember to begin the URI with a slash ‘/’).
      • +
      • The number representing the language ID this URI mapping applies for should be entered in the language_id field.
      • +
      • The current_uri field should be set to “1” to make this the “current” URI.
      • +
      • The Zen Cart page to be mapped to should be entered in the main_page field.
      • +
      • If any GET variables should be set, simply enter them in the query_string_parameters field, separating each pair with an ampersand (‘&’), but not starting the string with a question mark or an ampersand.
      • +
      • For example, to map to a custom survey page, with the necessary survey_type and survey_id for the survey to be shown, the main_page field would be set to:
      • +
      • survey
      • +
      • and the query_string_parameters field would be set to:
      • +
      • survey_type=4&survey_id=23
      • +
      • The date/time this URI mapping was added should be set in the date_added field (or just use the “NOW()” SQL function).
      • +
      • The associated_db_id and alternate_uri fields are not used, they must be left as “NULL”. The redirection_type_code is not used either so it doesn't matter what value it has (it can just be left at the default value of 301).
      • +
      +
    4. +
    + +

    Back to table of contents

    +
  20. + + +
  21. +

    Using Static URIs as an Alias for another Static URI

    + +

    Redirecting from one URI mapping to another is easily done.

    + +
      +
    • Use software such as PHPMyAdmin to add a new record to the ceon_uri_mapping table.
    • +
    • The URI mapping to be mapped from should be entered in the uri field. (Remember to begin the URI with a slash ‘/’).
    • +
    • The number representing the language ID this URI mapping applies for should be entered in the language_id field.
    • +
    • The current_uri field should be set to “1” to make this the “current” URI.
    • +
    • The URI mapping to be mapped to should be entered in the alternate_uri field.
    • +
    • The type of redirection (temporary/permanent etc.) should be specified by entering the appropriate HTTP Status Code in the redirection_type_code field. Values supported by the module are: 301, 302, 303 & 307.
    • +
    • The date/time this URI mapping was added should be set in the date_added field (or just use the “NOW()” SQL function).
    • +
    • The main_page, query_string_parameters and associated_db_id fields are not used, they must be left as “NULL”.
    • +
    + +

    Back to table of contents

    +
  22. + +
  23. +

    Enabling/Disabling the Ceon URI Mapping module

    + +

    The URI mappings module is fully “backwards compatible” with Zen Cart's standard URIs so there's no realistic need ever to disable it. All of the store's existing Zen Cart URIs will continue to work as always (and will redirect to any current URI mapping which matches a particular page!).

    +

    However, some store owners may decide that they don't want the links in their site to use their newly-added static URIs until they've finished adding all the mappings.

    +

    The module can be disabled (and re-enabled again) easily through an option in the Zen Cart admin:

    + +
      +
    • Go to Configuration > URI Mapping (SEO) in the Zen Cart admin, the option to disable/enable the module can be changed there.
    • +
    + +

    Back to table of contents

    +
  24. +
+ +

Back to top

+ + + +
+
+ + + + + \ No newline at end of file diff --git a/DOKU ENGLISCH/sections/faqs.html b/DOKU ENGLISCH/sections/faqs.html new file mode 100644 index 0000000..b760c77 --- /dev/null +++ b/DOKU ENGLISCH/sections/faqs.html @@ -0,0 +1,430 @@ + + + + + .:: Ceon :: Zen Cart :: Module :: Ceon URI Mapping ::. + + + + + + + + + + + + + + + + + + + + +
+
+ +

Ceon URI Mapping

+ + + +

Frequently Asked Questions (FAQs)

+ +
    +
  1. The software is installed and working but the store's URIs still use dynamic Zen Cart ones (like index.php?main_page=xx).
  2. +
  3. A 404 server error is being displayed (e.g. a 404 error).
  4. +
  5. A server error is being displayed (e.g. a “500 Bad Request” error).
  6. +
  7. When Ceon URI Mapping is enabled, images stop appearing on the site!
  8. +
  9. When Ceon URI Mapping is enabled, the site's layout is messed up!
  10. +
  11. When Ceon URI Mapping is enabled, a module on the site doesn't work properly! (E.g. Dynamic menus/popups etc. stop working).
  12. +
  13. When the rewrite rule for Ceon URI Mapping is added, some file types on the site are blocked or showing up as 404s!
  14. +
  15. A session parameter (like “?zenid=XXXX”) is being added to the end of the store's URIs.
  16. +
  17. A string beginning with “?cPath” is being added to the end of a product's URI.
  18. +
  19. After adding the rewrite rule, access to part of the site (e.g. the site's control panel) is being blocked.
  20. +
  21. Some of the core files have already been modified for the site. How can the Ceon URI Mapping code be added?
  22. +
  23. Some of the template files for the site have already been modified. How can the Ceon URI Mapping code be added?
  24. +
  25. The software is installed but there is no “Ceon URI Mapping (SEO)” option in the store's “Configuration” menu.
  26. +
  27. When installing/upgrading the software for a Zen Cart 1.3.x store there is no menu item called “Ceon URI Mapping (SEO) Config” in the “Modules” menu of the store's Zen Cart admin.
  28. +
  29. Can we distribute this distribution to our clients?
  30. +
  31. How can I donate/help with the module?
  32. +
+ +
    +
  1. +

    The software is installed and working but the store's URIs still use dynamic Zen Cart ones (like index.php?main_page=xx).

    + +
      +
    • +

      Ceon URI Mapping does not automatically add mappings for existing Categories/Products/Manufacturers/EZ-Pages!

      + +

      You can read more about this here.

      +
    • + +
    • +

      If that is not the source of the “problem” and you have added some mappings, but the store is still using dynamic URIs where it should be mapping to static URIs, then a problem may have occurred during the installation of the software...

      + +

      This FAQ may have the answer to the problem.

      +
    • +
    + +

    Back to top

    +
  2. + +
  3. +

    A server error is being displayed (e.g. a 404 error).

    + +

    This is most likely caused by the person installing the software not having added a working Rewrite Rule.

    + +

    As is mentioned in the Setting up a Rewrite Rule section of the documentation, a RewriteRule needs to be added for the store, either to a .htaccess file or a VirtualHost Directive.

    + +

    Follow the instructions in the Setting up a Rewrite Rule section of the documentation.

    + +

    If that doesn't help, then, this kind of issue is something that is outside the scope of this documentation. There are plenty of guides to be found on the internet on how to configure a server properly for Rewrite handling.

    + +

    Please Note: If you attempt to contact Ceon directly about any such issues you may be required to pay for any support given, as outlined in the support documentation.

    + +

    Back to top

    +
  4. + +
  5. +

    A server error is being displayed (e.g. a “Bad Request” error).

    + +

    This is most likely caused by using the wrong path to “index.php” being used in the RewriteRule directive or by other rewrite rules on the server interfering with the rule being used for the Ceon URI Mapping module.

    + +
      +
    • If putting the rule in a .htaccess file, then care needs to be taken with the location of the file and the final path to index.php being used in the RewriteRule directive.
    • +
    • If putting the rule in a VirtualHost directive, the RewriteRule will need to have the relative path to the Zen Cart directory prepended to index.php.
    • +
    + +
      +
    • +

      If putting the rule in a .htaccess file, make sure the directory the shop is in (e.g. “shop/”) is before index.php in the last line of the Rewrite Rule. That may fix things!

      +

      For example, the line may end up looking as follows (note that there's no slash at the beginning of the shop's directory name):

      +

      RewriteRule .* shop/index.php?%{QUERY_STRING} [L]

      +
    • +
    • +

      If that doesn't work, try putting a slash in front of the path to the index.php file.

      +

      For example, the line may end up looking like one of the following:

      +

      RewriteRule .* /index.php?%{QUERY_STRING} [L]

      +

      RewriteRule .* /shop/index.php?%{QUERY_STRING} [L]

      +
    • +
    + +
      +
    • +

      If putting the rule in a VirtualHost directive, try adding the relative path to the shop (e.g. “/” or “/shop/”) before index.php in the last line of the Rewrite Rule and restart the webserver. Depending on your version of Apache, that may fix things!

      +

      For example, the line may end up looking as follows:

      +

      RewriteRule .* /shop/index.php?%{QUERY_STRING} [L]

      +
    • +
    + +

    If trying the above doesn't help, then, this kind of issue is something that is outside the scope of this documentation. There are plenty of guides to be found on the internet on how to configure a server properly for Rewrite handling.

    +

    Please Note: If you attempt to contact Ceon directly about any such issues you may be required to pay for any support given, as outlined in the support documentation.

    + +

    Back to top

    +
  6. + +
  7. +

    When Ceon URI Mapping is enabled images stop appearing on the site!

    + +

    Ceon URI Mapping enables a site to use static URIs.

    + +

    For a site to work with static URIs, all paths on the site must be relative to the site's root, NOT to the current page!

    + +

    These are often known as “absolute” paths.

    + +

    The site's root is “/”. E.g. http://storesite.com/.

    + +

    There are several things that can be done to make sure this happens.

    + +
      +
    • +

      First off, make sure that the site has a <base href="http://storesite.com/" /> tag set in the Zen Cart header file.

      +
    • +
    • +

      This tag must come before any tags that load in CSS or JavaScript files.

      +
    • +
    • +

      The tag is normally added by Zen Cart to the file includes/templates/template_default/common/html_header.php.

      +
    • +
    • +

      If the store uses a custom template, it may be using a file includes/templates/STORE-TEMPLATE/common/html_header.php.

      +
    • +
    • +

      Make sure that the <base href="... tag is present in one of the files the store uses - unfortunately some template creators, unprofessionally, accidentally leave out this essential tag.

      +
    • +
    + +

    If that doesn't fix things, then individual paths may need to be changed from relative paths to absolute paths.

    + +
      +
    • +

      Use paths that go right from the root to their final file.

      +

      For example, instead of a CSS file using a relative link to an image like:

      +

      url(../images/some-image-name.png)

      +

      Use a full, absolute path such as:

      +

      url(/includes/templates/STORE-TEMPLATE/images/some-image-name.png)

      + +
    • +
    + +

    Back to top

    +
  8. + +
  9. +

    When Ceon URI Mapping is enabled, the site's layout is messed up!

    + +

    This is the same issue that is covered in this FAQ.

    + +

    Back to top

    +
  10. + +
  11. +

    When Ceon URI Mapping is enabled, a module on the site doesn't work properly! (E.g. Dynamic menus/popups etc. stop working)

    + +

    This is quite likely to be a similar issue to that covered in this FAQ.

    + +

    Try reading and applying what is mentioned in that FAQ first.

    + +

    If the information in that FAQ doesn't enable you to fix things:

    + +
      +
    • If the module uses JavaScript/AJAX, check any JavaScript to make sure that it isn't expecting the current page's URI always to be the root of the store (e.g. http://storesite.com/shop/).
    • + +
    • As static URIs appear to be like “subfolders” to modules written using JavaScript, the module may need to be recoded to work with static URIs.
    • + +
    • This can be done by having paths within the software built from the root of the store and not relative to the current “subfolder” on the site, as static URIs break the idea of a site having folders in the URI.
    • +
    + +

    If that doesn't enable you to fix things:

    + +
      +
    • Check the module's code to see if it uses the $_SERVER['REQUEST_URI'] variable.
    • + +
    • As the use of static URIs means that the Zen Cart query string parameters are no longer present in $_SERVER['REQUEST_URI'], any code which checks against them in this variable will fail, and therefore needs to be rewritten to work with a Zen Cart that uses static URIs.
    • + +
    • +

      For example, if the code used a test such as:

      +

      strstr($_SERVER['REQUEST_URI'], 'create_account')

      +

      It could be changed to:

      +

      $_GET['main_page'] == 'create_account'

      +
    • +
    + +

    If none of the above helps, then, this kind of issue is something that is outside the scope of this documentation.

    +

    Please Note: If you attempt to contact Ceon directly about any such issues you may be required to pay for any support given, as outlined in the support documentation.

    + +

    Back to top

    +
  12. + +
  13. +

    When the rewrite rule for Ceon URI Mapping is added, some file types on the site are blocked or showing up as 404s!

    + +

    Information about preventing problems with Ceon URI Mapping “blocking” certain file types can found in the configuration documentation.

    + +

    Back to top

    +
  14. + +
  15. +

    A session parameter (like “?zenid=XXXX”) is being added to the end of the store's URIs.

    + +

    Zen Cart adds a session ID to the end of all links on the very first page that a user visits.

    +

    This is because when the user first arrives, no cookie has been set in their browser, so Zen Cart must assume that cookies are not enabled, and therefore it adds something like “?zenid=XXXX” to the end of all the links/URIs on the first page visited.

    +

    There is no way to avoid this; however it is not a problem!

    +

    Ceon URI Mapping has full Canonical URI support built in, so the search engines don't see the “?zenid=XXXX” bit at all and the site is not penalised in any way.

    +

    It may not look as nice as you'd like but it only appears for the first page and, as has just been said this is unavoidable - just ignore it!

    + +

    Back to top

    +
  16. + +
  17. +

    A string beginning with “?cPath” is being added to the end of a product's URI.

    + +

    The module retains Zen Cart's category history when linking to a linked product which is not within its “master” category, so the full path back through any parent categories is available. To do so, it is essential that the “cpath” query string parameter is added to the URI.

    +

    Without this feature all linked products would always show as belonging to their “master” category, which will not be the category the customer has accessed the product from.. this would make it appear to the customer that they had “jumped” to another part of the site, they would no longer be in the same category they were in previously!

    +

    There is no way to avoid the cPath parameter being added for linked products. It's advised to use linked products only when necessary and/or to simply accept that it's not possible in Zen Cart to omit the cPath parameter in the URI of linked products.

    + +

    Back to top

    +
  18. + +
  19. +

    After adding the rewrite rule access to part of the site (e.g. the site's control panel) is being blocked.

    + +

    Information about adding exceptions to the rewrite rule - and therefore restoring access to particular addresses on/sections of the site - can be found in the configuration documentation.

    + +

    Back to top

    +
  20. + +
  21. +

    Some of the core files have already been modified for the site. How can the Ceon URI Mapping code be added?

    + +

    Each change in the core files required for the Ceon URI Mapping module to work is clearly marked in the sample versions of the files.

    +

    Changes begin with a comment such as:

    +

    // BEGIN CEON URI MAPPING 1 of x

    +

    And end with a comment such as:

    +

    // END CEON URI MAPPING 1 of x

    +

    Where ‘x’ is the number of code changes within the current file which must be included for the Ceon URI Mapping module to use that file correctly.

    + +
      +
    • Each change should be copied and pasted into the modified core file at the exact same place it is present within the respective sample file.
    • +
    + +
      +
    • Using a “diff” software package, such as the free WinMerge software or the excellent, commercial, Beyond Compare software, makes this considerably easier to do without mistakes.
    • +
    + +

    Back to top

    +
  22. + +
  23. +

    Some of the template files for the site have already been modified. How can the Ceon URI Mapping code be added?

    + +

    The changes to the template files, which are required for static URIs to be able to be used by some of the standard Zen Cart sideboxes and by the product listing filter forms, are clearly marked in the sample versions of the files.

    +

    Changes begin with a comment such as:

    +

    // BEGIN CEON URI MAPPING 1 of x

    +

    And end with a comment:

    +

    // END CEON URI MAPPING 1 of x

    +

    Where ‘x’ is the number of code changes within the current file which must be included for the Ceon URI Mapping module to use that file correctly.

    + +
      +
    • Each change should be copied and pasted into the modified template file at the exact same place it is present within the respective sample file.
    • +
    + +
      +
    • Using a “diff” software package, such as the free WinMerge software or the excellent, commercial, Beyond Compare software, makes this considerably easier to do without mistakes.
    • +
    + +

    Back to top

    +
  24. + +
  25. +

    The software is installed but there is no “Ceon URI Mapping (SEO)” option in the store's “Configuration” menu.

    + +

    It is essential that there is a section in the “Configuration” menu of the store's Zen Cart admin called “Ceon URI Mapping (SEO)”.

    + +

    If this configuration group and option is missing Ceon URI Mapping will show and work within the Zen Cart admin but will not be enabled in the store - standard Zen Cart dynamic URIs will be used!

    + +

    For some reason, some servers fail to add the configuration group and option when installing Ceon URI Mapping.

    + +

    This can hopefully be fixed by the following...

    + +
      +
    • +

      Go to Modules > Ceon URI Mapping (SEO) Config in the Zen Cart Admin.

      +
    • +
    • +

      Then go to the Installation Check tab and click on the link to open the Installation Check utility page.

      +
    • +
    • +

      The module will now automatically carry out the installation check.

      +
    • +
    • +

      If any errors are listed, follow the instructions given by the software.

      +
    • +
    • +

      Now go back to Modules > Ceon URI Mapping (SEO) Config in the Zen Cart Admin.

      +
    • +
    • +

      Go back to the Installation Check tab and click on the link to run the configuration checker.

      +
    • +
    • +

      If any problems are found with the configuration, the software should hopefully be able to fix the problems.

      +
    • +
    + +

    If this does not fix things then there is simply something wrong with the server/site itself.

    + +

    Back to top

    +
  26. + +
  27. +

    When installing/upgrading the software for a Zen Cart 1.3.x store there is no menu item called “Ceon URI Mapping (SEO) Config” in the “Modules” menu of the store's Zen Cart admin.

    + +

    The additional file to add the link to the Ceon URI Mapping Config Utility to the store admin's modules menu must have accidentally been missed when installing/upgrading the software.

    + +
      +
    • +

      Copy the file missed out originally. Click here for more information on what file should be copied.

      +
    • +
    + +

    Back to top

    +
  28. + +
  29. +

    Can we distribute this distribution to our clients?

    + +

    Yes, the software is GPL. However, the documentation in this distribution is copyrighted to Ceon and must not be distributed in a modified form without our express permission.

    +

    As long as the documentation isn't modified, it can be freely distributed along with the software.

    +

    If you'd like to modify the documentation, for example by branding it with your company logo, please contact us for permission! A credit acknowledgement to Ceon and JKED will always be required.

    + +

    Back to top

    +
  30. + +
  31. +

    How can I donate/help with the module?

    + +

    If you have any feedback or a bug report, please send it to us! There's nothing that makes developing more rewarding than feeling that it is appreciated!

    + +
      +
    • +

      Donate by Credit/Debit Card or PayPal.  We accept Visa, MasterCard, Maestro, American Express, Visa Debit, Visa Electron & MasterCard Debit!This module has taken over 14 weeks of work, with none of the time taken being paid for by anyone, so if you find it useful, please support us - just click the donate button.

      +

      We'll have more time to keep this contribution up-to-date and to support those who need our help if some nice people donate.

      +

      Fewer than 1 in 500 people donate towards our software, so it would be greatly appreciated - Thanks!

      +
      +
    • +
    +
  32. +
+ +

Back to top

+ + + +
+
+ + + + + \ No newline at end of file diff --git a/DOKU ENGLISCH/sections/features.html b/DOKU ENGLISCH/sections/features.html new file mode 100644 index 0000000..776bf1b --- /dev/null +++ b/DOKU ENGLISCH/sections/features.html @@ -0,0 +1,289 @@ + + + + + .:: Ceon :: Zen Cart :: Module :: Ceon URI Mapping ::. + + + + + + + + + + + + + + + + + + + + +
+
+ +

Ceon URI Mapping

+ + + +

Features

+
    +
  • +

    Use Static URIs to Make Web Addresses Easier To Remember and Easier To Enter. Improve the store's Rankings in Search Engines!

    +
      +
    • Implementing a major part of all SEO (Search Engine Optimisation) practices, this module lets the store specify static, keyword-based URIs to be used instead of the dynamic, ID-based URIs which Zen Cart uses as standard.
    • +
    • For example, for a product, instead of dynamic URIs like this:

      +

      http://yourstore.com/index.php?main_page=product_info&cPath=3&products_id=5

    • +
    • A static address - easy to read, easy to type in and full of keywords - could be specified for the product:

      +

      http://yourstore.com/books/life-is-good

    • +
    +
  • + +
  • +

    Historical URI Mapping - No More Broken Links!

    +
      +
    • Each Category/Product/Manufacturer/EZ-Page/Zen Cart Page (subject) with URI mapping(s) has a single “Current” URI.
    • +
    • Any number of URIs can map to the same subject. However, when a customer uses a URI which is not the “current” URI they are quickly and automatically redirected to the “current” URI. This occurs before the site begins to display, so is completely transparent.
    • +
    • “Deleted”/“Previous” URI mappings still point towards their original subject, by redirecting the user to the “Current” URI for the subject (unless they have become overridden by a current or newer URI mapping which uses the same URI of course!).
    • +
    +
  • + +
  • +

    Canonical URIs

    +
      +
    • Any page with a static URI automatically has a canonical URI tag added to the page's header. This minimises “duplicate content” reports as it tells the search engines that multiple “pages” should be treated as one.
    • +
    • For example, instead of the search engine thinking that /all-products?disp_order=1 is a different page from /all-products?disp_order=3, Ceon URI Mapping lets it know that the page's “real” URI is just /all-products and that these other URIs are just variations for the same page.
    • +
    +
  • + +
  • +

    Easy-to-use Admin Integration for Categories, Products, Manufacturers and EZ-Pages

    +
      +
    • Specifying custom URI mappings for Categories, Products, Manufacturers and EZ-Pages is quick and easy... just browse to the appropriate Category/Product/Manufacturer/EZ-Page in the admin and enter the URI to be used in the text fields added by the module, or tick the “auto-generate” check box, if auto-generation is enabled!
    • +
    • Change existing Category/Product/Manufacturer/EZ-Page URI mappings in the same easy manner!
    • +
    +
  • + +
  • +

    URI Mapping Auto-generation

    +
      +
    • The module comes with very powerful, flexible and easy-to-use URI mapping auto-generation functionality.
    • +
    • If auto-generation is used to create a URI mapping for a Category, Product, Manufacturer or EZ-Page it automatically capitalises the Category/Product/Manufacturer Name or EZ-Page Title according to the store's preferred settings, replaces any whitespace with a preferred character, removes selected words and replaces particular characters/strings as specified in the configuration utility.
    • +
    • Please Note: This module does not automatically add mappings for existing Categories/Products/Manufacturers/EZ-Pages - if the site has existing Categories/Products/Manufacturers/EZ-Pages, they'll continue to use the standard Zen Cart dynamic URIs, until a URI has been entered or auto-generated for them, by editing the respective Category/Product/Manufacturer/EZ-Page in the admin.

      + +

      This means going in and editing every Category/Product/Manufacturer/EZ-Page for which a static URI mapping is desired. Ceon's URI Mappings Manager software can generate URIs for entire categories etc. at once.

    • +
    +
  • + +
  • +

    Full Multi-language Support - including Transliteration and UTF-8!

    +
      +
    • The module is fully multilingual - every page can have a URI mapping for each language supported by the store!
    • +
    • The module automatically causes Zen Cart to use the language the URI uses, greatly enhancing Zen Cart's language functionality!
    • +
    • This multi-language functionality makes it likely that the site will feature much higher in search engine listings specific to the various languages the store supports.
    • +
    • The module also has full support for transliteration! When using the URI mapping auto-generation functionality it transliterates the names/titles from any language into plain ASCII, the format used by URIs.
    • +
    • Transliteration support means that characters outside of the standard character set allowed in URIs won't just be stripped from the URI, leaving words with letters missing. For example, “á” is replaced with “a”, “ß” is replaced with “ss” etc.
    • +
    • The transliteration support extends to supporting the UTF-8 character set, so Japanese, Chinese characters etc. are all handled easily!
    • +
    +
  • + +
  • +

    Organise EZ-Pages into Site Sections

    +
      +
    • By putting a bit of thought into the format of URI mappings for EZ-Pages, it is possible to organise them into logical sections.
    • +
    • EZ-Pages no longer have to appear as being “root” pages of the site!
    • +
    • For example, a “Company” section could be created with 4 EZ-Pages using URI mappings such as the following:

      +

      /company +
      /company/about-us +
      /company/about-us/endorsements +
      /company/how-to-find-us

    • +
    +
  • + +
  • +

    Ability to use Static URIs for any Zen Cart page

    +
      +
    • There are two methods for using static URIs for any Zen Cart page, both of which have full support for having a “current” URI, as many historical/“old” URIs as necessary and are fully multi-lingual: +
        +
      1. Static URIs can be used for any Zen Cart page by directly entering the static URI for the page and the type of the page in the database table for the module. +
          +
        • Using this method to specify static URIs for a Zen Cart page will cause every link to that page to use the static URI instead of the dynamic Zen Cart URI.
        • +
        • For example, to create a static URI for “index.php?main_page=specials”:

          +

          uri: /latest-offers

          +

          main_page: specials

          +
        • +
        +
      2. +
      3. Static URIs being used for Zen Cart pages can also allow data to be supplied to Zen Cart. +
          +
        • This is achieved by initialising the GET variables for the Zen Cart page when it is loaded, which are set up by directly entering the static URI for the page, the type of the page and the GET variables to be loaded in the database table for the module.
        • +
        • For example:

          +

          uri: /surveys/shipping

          +
        • +
        • Could map to a custom survey page, with the necessary ID for the survey to be shown:

          +

          main_page: survey

          +

          query_string_parameters: survey_id=2

          +
        • +
        • Please Note: These URIs will only be used as the static URIs for links if the query string parameters being used to generate the link are exactly the same as the value of the “query_string_parameters” field (with the exception that the session parameter, if any, is ignored).
        • +
        +
      4. +
      +
    • +
    • Please note: There is no admin interface for entering these URI mappings in this module, they have to be entered manually (using software such as PHPMyAdmin). Alternatively, Ceon's URI Mappings Manager software has an easy-to-use interface for setting up and managing all the URI mappings this module can use.
    • +
    +
  • + +
  • +

    Automatic Usage of any URI mappings Defined for Categories, Products, Manufacturers, EZ-Pages or any other Zen Cart page!

    +
      +
    • The module modifies the main zen_href_link function slightly to make automatic use of any URI mappings defined for a category, product, manufacturer, EZ-Page or other Zen Cart page.
    • +
    • Having each page link to each other using their static URIs makes the site easier to navigate and increases the usage of keywords on the site, further helping SEO!
    • +
    +
  • + +
  • +

    Ability to use Static URIs as an Alias for any other Static URI

    +
      +
    • The module can be used to redirect from one static URI to an alternative URI (even to an external URI).
    • +
    • The exact type of redirection (temporary/permanent etc.) can even be controlled, by specifying the HTTP Status Code to be used for the redirection to the alternative URI.
    • +
    • Creating aliases allows the store to handle visits to broken/old links.
    • +
    • It also allows the store to increase the number of keywords being used to link to a page on the site through the creation of an alternative link/alias.
    • +
    • Please note: There is no admin interface for entering these URI mappings in this module, they have to be entered manually (using software such as PHPMyAdmin). Alternatively, Ceon's URI Mappings Manager software has an easy-to-use interface for setting up and managing all the URI mappings this module can use.
    • +
    +
  • + +
  • +

    Automated support for standard Zen Cart pages related to a Product

    +
      +
    • The Reviews and Tell-A-Friend sections can automatically be made “subsections” of the product's main info page, by appending some specific URI parts to the product info page's static URI.
    • +
    • This saves effort setting up URIs for these pages specifically for each product, as it creates static URIs such as:

      +

      /books/life-is-good/reviews

      +

      /books/life-is-good/tell-a-friend

      +
    • +
    • [New for 4.0.0] A section in the module's Config Utility allows the store to select which “Product Page URIs” are automatically managed by the software, and to set the text that should be used for the URIs.
    • +
    +
  • + +
  • +

    100% Compatibility with Zen Cart and Most Modules, Minimal Tweaks Required for Some Other Modules

    +
      +
    • Installing the module won't break any of the functionality of Zen Cart.
    • +
    • The module works using Zen Cart's Initsystem so it doesn't interfere with any of its workings. Zen Cart pages have no idea the module is even running, the run-time environment appears exactly as if the module wasn't installed.
    • +
    • This means that the module should work perfectly with most (and most likely all) other Zen Cart modules - as long as they don't use relative links/paths. Those modules which do use relative links/paths simply need to have their relative links/paths changed to static links/paths, something which is easily done by adding a single define to the start of the links/paths.
    • +
    • [New for 4.0.0] The software does its best to work out if it is being called by a third party script instead of directly from Zen Cart and will prevent itself from interfering with the running of the third party script!
    • +
    +
  • + +
  • +

    Transparently Handles URIs With or Without a Slash (/) at the End

    +
      +
    • The module sees URIs with a slash at the end as identical to those without one. For example, the following are equivalent:

      +

      http://yourstore.com/books/life-is-good +
      http://yourstore.com/books/life-is-good/

      +
    • +
    +
  • + +
  • +

    Respects Context of a Link to a Category/Product page

    +
      +
    • The module retains Zen Cart's category history when linking to a subcategory of another category or a linked product which is not within its “master” category, so the full path back through any parent categories is available. (Without this feature all categories being mapped to by a URI mapping would appear as if their only parent category was the root of the store and linked products would always show as belonging to their “master” category, which is not necessarily the category the customer has accessed the product from).
    • +
    +
  • + +
  • +

    Avoids Possibility of Duplicate URIs

    +
      +
    • [New for 4.0.0] The software won't allow a duplicate URI mapping to be created. It can be configured to warn the user when an attempt is being made to create a URI mapping which would clash with one already being used elsewhere.
    • +
    • For product URIs, the software can even be configured to automatically append a number to a URI when a clash is detected, to make the URI unique without the user having to manually change anything themselves!
    • +
    +
  • + +
  • +

    Support for all of Zen Cart's Standard Product Types (and more)!

    +
      +
    • The module has full support for the standard 5 product types in Zen Cart plus the product_book type (version 4 from the Zen Cart download area).
    • +
    +
  • + +
  • +

    Easy to Install and Keep Up To Date!

    +
      +
    • [New for 4.0.0] The module has an “Installation Check” section in its config utility which analyses the store's configuration, identifies any problems and tells you what they are and how to fix them!
    • +
    • [New for 4.0.0] Once the module has been installed initially, upgrading to a new version takes around 10 seconds. The files for the new version simply have to be copied across, then the software will take over and carry out any necessary updates itself!
    • +
    +
  • + +
  • +

    Compatible with the Most Popular Webservers

    +

    A webserver that supports rewrite rules is required. Currently tested/supported webservers are:

    +
      +
    • Apache with mod_rewrite.
    • +
    • IIS with ISAPI_Rewrite 3.
    • +
    • IIS with IIS URL Rewrite.
    • +
    • nginx.
    • +
    • Zeus Webserver (get in contact for integration details).
    • +
    +
  • + +
  • +

    Lightweight!

    +
      +
    • The module has a minimal impact on the server as it is very lightweight.
    • +
    +
  • +
+ +

Back to top

+ + + +
+
+ + + + + \ No newline at end of file diff --git a/DOKU ENGLISCH/sections/installation.html b/DOKU ENGLISCH/sections/installation.html new file mode 100644 index 0000000..f7cc1be --- /dev/null +++ b/DOKU ENGLISCH/sections/installation.html @@ -0,0 +1,503 @@ + + + + + .:: Ceon :: Zen Cart :: Module :: Ceon URI Mapping ::. + + + + + + + + + + + + + + + +
+
+ +

Ceon URI Mapping

+ + + +

Installation

+

Installation of the module has been made as simple as possible and shouldn't take long for any stores which have not already modified any of the core files which this module has to modify.

+

If any of the core files this distribution uses have already been modified (because of another third party module being installed for example) then the changes for the respective files should be applied manually by copying across the appropriate sections of code required for the Ceon URI Mapping module. These sections are clearly marked (with “// BEGIN” and “// END” comments) within the sample files provided in this distribution.

+ +

Requirements

+
    +
  • +

    A webserver that supports rewrite rules is required. Currently tested/supported webservers are:

    + +
      +
    • Apache with mod_rewrite
    • +
    • IIS with ISAPI_Rewrite 3
    • +
    • IIS with IIS URL Rewrite
    • +
    • nginx
    • +
    • Zeus Webserver (get in contact for integration details)
    • +
    +
  • +
+ + +

Installation Overview

+
    +
  1. Copy the new files from the distribution into the Zen Cart installation.
  2. +
  3. Copy the modified core files from the distribution into the Zen Cart installation, or modify the respective core files.
  4. +
  5. Copy the modified template files from the distribution into the Zen Cart installation or modify their equivalents in the store's existing template files.
  6. +
  7. [Zen Cart Versions 1.3.0 - 1.3.8 Only] Enable Canonical URI Support.
  8. +
  9. Create the Database Tables and Configuration and Configure the URI Auto-generation Settings.
  10. +
  11. Configure the settings for the Auto-managing of URIs for Products' “Reviews”, “Tell-A-Friend” and “Ask-a-Question” pages
  12. +
  13. Run the Installation Check
  14. +
  15. Add the rewrite rules to the webserver (Apache/IIS etc.).
  16. +
  17. [OPTIONAL but RECOMMENDED] Configure the Google Sitemap (XML) Module
  18. +
  19. [OPTIONAL but RECOMMENDED] Take a note of the FAQs
  20. +
  21. Set up the URI mappings for categories, products, manufacturers and EZ-Pages.
  22. +
+ +

Installation Steps

+
    +
  1. +

    New Files

    + +

    These are the new files which make up this module. Copy them all into their respective folders in the Zen Cart installation.

    + +

    Most files are used by all Zen Cart versions.

    +

    There is an additional file which is used only by Zen Cart 1.3.x; if the store uses Zen Cart 1.3.x, be sure to copy this extra file across from the folder files/additional_file_for_1.3.x.

    + +
    New files for the Admin directory
    + +

    Most Zen Cart stores have their admin directory renamed from the default of “admin”.

    +

    Copy all of the folders and files from the files/admin folder into the store's “admin” directory, whatever it is called.

    +

    The files are already in the correct directory structure, so a single drag-and-drop of the folders/files in the files/admin folder into the “admin” directory for the store will put the files in the correct locations.

    +

    Please do not copy the files individually - there's simply no need - doing so often results in files being missed out!

    + +
      +
    • admin/images/ceon-button-logo.png
    • +
    • admin/images/ceon-input-fade-tb-gray-white.png
    • +
    • admin/images/ceon-tab-background.png
    • +
    • admin/images/ceon-tab-background-selected.png
    • +
    • admin/includes/ceon_uri_mapping_javascript.php
    • +
    • admin/includes/classes/class.CeonURIMappingAdminCategoryPages.php
    • +
    • admin/includes/classes/class.CeonURIMappingAdminEZPagePages.php
    • +
    • admin/includes/classes/class.CeonURIMappingAdminManufacturerPages.php
    • +
    • admin/includes/classes/class.CeonURIMappingAdminProductPages.php
    • +
    • admin/includes/classes/class.CeonURIMappingConfigUtility.php
    • +
    • admin/includes/classes/class.CeonURIMappingInstallationCheck.php
    • +
    • admin/includes/classes/class.CeonURIMappingInstallOrUpgrade.php
    • +
    • admin/includes/classes/class.CeonURIMappingTabbedPanelAdminInterface.php
    • +
    • admin/includes/classes/class.CeonURIMappingVersion.php
    • +
    • admin/includes/classes/observers/class.CeonURIMappingAdminCategoriesObserver.php
    • +
    • admin/includes/classes/observers/class.CeonURIMappingAdminCopyObserver.php
    • +
    • admin/includes/classes/observers/class.CeonURIMappingAdminProductsObserver.php
    • +
    • admin/includes/classes/observers/class.CeonURIMappingDeleteCategoriesObserver.php
    • +
    • admin/includes/classes/observers/class.CeonURIMappingDeleteProductsObserver.php
    • +
    • admin/includes/classes/observers/class.CeonURIMappingLinkBuildAdmin.php
    • +
    • admin/includes/init_includes/init_ceon_category_collect_info.php
    • +
    • admin/includes/init_includes/init_ceon_ezpages_collect_info.php
    • +
    • admin/includes/init_includes/init_ceon_manufacturers_collect_info.php
    • +
    • admin/includes/init_includes/init_ceon_product_collect_info.php
    • +
    • admin/includes/extra_datafiles/ceon_uri_mapping_database_tables.php
    • +
    • admin/includes/extra_datafiles/ceon_uri_mapping_filenames.php
    • +
    • admin/includes/extra_datafiles/ceon_uri_mapping_product_pages.php
    • +
    • admin/includes/functions/extra_functions/ceon_uri_mapping_admin_page_reg.php
    • +
    • admin/includes/auto_loaders/config.ceon_uri_mapping.php
    • +
    • admin/includes/auto_loaders/config.ceon_uri_mapping_admin_categories_observer.php
    • +
    • admin/includes/auto_loaders/config.ceon_uri_mapping_admin_category_delete_observer.php
    • +
    • admin/includes/auto_loaders/config.ceon_uri_mapping_admin_category_info.php
    • +
    • admin/includes/auto_loaders/config.ceon_uri_mapping_admin_copy_observer.php
    • +
    • admin/includes/auto_loaders/config.ceon_uri_mapping_admin_ezpages_info.php
    • +
    • admin/includes/auto_loaders/config.ceon_uri_mapping_admin_manufacturers_info.php
    • +
    • admin/includes/auto_loaders/config.ceon_uri_mapping_admin_product_delete_observer.php
    • +
    • admin/includes/auto_loaders/config.ceon_uri_mapping_admin_product_info.php
    • +
    • admin/includes/auto_loaders/config.ceon_uri_mapping_admin_products_observer.php
    • +
    • admin/includes/languages/english/extra_definitions/ceon_uri_mapping.php
    • +
    • admin/includes/languages/english/ceon_uri_mapping_admin_pages.php
    • +
    • admin/includes/languages/english/ceon_uri_mapping_category_pages.php
    • +
    • admin/includes/languages/english/ceon_uri_mapping_config.php
    • +
    • admin/includes/languages/english/ceon_uri_mapping_default_uri_parts.php
    • +
    • admin/includes/languages/english/ceon_uri_mapping_ezpage_pages.php
    • +
    • admin/includes/languages/english/ceon_uri_mapping_installation_check.php
    • +
    • admin/includes/languages/english/ceon_uri_mapping_manufacturer_pages.php
    • +
    • admin/includes/languages/english/ceon_uri_mapping_product_pages.php
    • +
    • admin/includes/languages/english/ceon_uri_mapping_tabbed_panel_admin_interface.php
    • +
    • admin/ceon_uri_mapping_config.php
    • +
    • admin/ceon_uri_mapping_installation_check.php
    • +
    + +
    Additional File for Zen Cart 1.3.x
    + +

    Copy the file from the files/additional_file_for_1.3.x/admin folder into the store's “admin” directory, whatever it is called.

    + +
      +
    • admin/includes/boxes/extra_boxes/ceon_uri_mapping_modules_dhtml.php
    • +
    + + +
    New files for the main store directory
    + +

    Copy the includes folder from the files folder into the store's main directory.

    +

    The files are already in the correct directory structure, so a single drag-and-drop of the folder into the root directory for the store will put the files in the correct locations.

    +

    Please do not copy the files individually - there's simply no need - doing so often results in files being missed out!

    +

    Warning: Be careful NOT to copy the files from the files/includes folder into the store's admin/includes directory, they go in the includes directory which is alongside, not inside the store's admin directory.

    +

    Note that the file includes/extra_datafiles/ceon_uri_mapping_sessions_define.php is not needed for a new installation.

    + +
      +
    • includes/classes/transliteration (* This directory and ALL files in it!)
    • +
    • includes/classes/class.CeonURIMappingAdmin.php
    • +
    • includes/classes/class.CeonURIMappingAdminCategories.php
    • +
    • includes/classes/class.CeonURIMappingAdminCategoriesProducts.php
    • +
    • includes/classes/class.CeonURIMappingAdminEZPages.php
    • +
    • includes/classes/class.CeonURIMappingAdminManufacturers.php
    • +
    • includes/classes/class.CeonURIMappingAdminProducts.php
    • +
    • includes/classes/class.CeonURIMappingDBLookup.php
    • +
    • includes/classes/class.CeonURIMappingHandler.php
    • +
    • includes/classes/class.CeonURIMappingHandlerBase.php
    • +
    • includes/classes/class.CeonURIMappingHREFLinkBuilder.php
    • +
    • includes/classes/class.CeonString.php
    • +
    • includes/classes/class.Transliteration.php
    • +
    • includes/classes/observers/class.ceon_ask_a_question.php
    • +
    • includes/classes/observers/class.ceon_canonical.php
    • +
    • includes/classes/observers/class.ceon_uri_mapping_link_build.php
    • +
    • includes/init_includes/init_ceon_currencies.php
    • +
    • includes/init_includes/init_ceon_uri_mapping_sessions.php
    • +
    • includes/auto_loaders/config.ceon_ask_a_question.php
    • +
    • includes/auto_loaders/config.ceon_canonical.php
    • +
    • includes/auto_loaders/config.ceon_currencies.php
    • +
    • includes/auto_loaders/config.ceon_uri_mapping.php
    • +
    • includes/extra_datafiles/ceon_uri_mapping_database_tables.php
    • +
    • includes/extra_datafiles/ceon_uri_mapping_filenames.php
    • +
    • includes/extra_datafiles/ceon_uri_mapping_product_pages.php
    • +
    +
  2. + +
  3. +

    Modified Core Files

    + +

    A few core Zen Cart files must be modified to work with the Ceon URI Mapping module.

    + +
    Modified core files for the Admin directory
    + +
      +
    • +

      It is likely that none of these files have been modified for the store already, in which case it should be possible to simply back up the files and then overwrite the files with the pre-modified sample files from this distribution, for the version of Zen Cart being used by the store.

      +
    • +
    • +

      However, if any of these core files have already been modified for the store, the changes within the sample files included in this distribution must be applied to the previously modified core files.

      +

      The changes are clearly marked within the sample files in the distribution and should be easy enough to copy across, especially if a “diff” software package (such as the free WinMerge or the excellent, commercial, Beyond Compare) is used.

      +

      Instructions on how to copy across the modifications necessary for this module - to version of the respective core files which have previously been modified - can be found in this FAQ.

      +
    • +
    + +

    The modified core files can be found within the modified_core_files folder in the distribution. A list of the files follows.

    +

    If any of the “Product Types” (e.g. Document General or Product Book) aren't used by the store, there's no need to copy/modify the files in the respective directories (e.g. document_general or product_book).

    +

    If the store's core files haven't been modified then there's no need to copy the files individually - that often results in files being missed out! They already have the correct folder structure, so a single drag-and-drop of the folders/files in the modified_core_files folder (for the exact same version of Zen Cart) into the root directory for the store will put the files in the correct locations.

    + +

    Please Note: If the admin folder for the store is not named “admin”, then care must be taken to place the files from within the modified_core_files/admin folder into the store's admin folder. Simply copying across the modified_core_files/admin folder won't work!

    + +
      For Zen Cart 1.5.7 (no files)
      +
    • +
    + +
      For Zen Cart 1.5.6/6a/6b/6c (one file only)
      +
    • admin/includes/javascript_loader.php
    • +
    + +
      For Zen Cart versions at or below Zen Cart 1.5.5f
      +
    • admin/includes/functions/general.php
    • +
    • admin/includes/functions/html_output.php
    • +
    • admin/includes/modules/document_general/collect_info.php
    • +
    • admin/includes/modules/document_general/preview_info.php
    • +
    • admin/includes/modules/document_product/collect_info.php
    • +
    • admin/includes/modules/document_product/preview_info.php
    • +
    • admin/includes/modules/product/collect_info.php
    • +
    • admin/includes/modules/product/preview_info.php
    • +
    • admin/includes/modules/product_book/collect_info.php
    • +
    • admin/includes/modules/product_book/copy_to_confirm.php
    • +
    • admin/includes/modules/product_book/preview_info.php
    • +
    • admin/includes/modules/product_book/update_product.php
    • +
    • admin/includes/modules/product_free_shipping/collect_info.php
    • +
    • admin/includes/modules/product_free_shipping/preview_info.php
    • +
    • admin/includes/modules/product_music/collect_info.php
    • +
    • admin/includes/modules/product_music/copy_to_confirm.php
    • +
    • admin/includes/modules/product_music/preview_info.php
    • +
    • admin/includes/modules/product_music/update_product.php
    • +
    • admin/includes/modules/copy_to_confirm.php
    • +
    • admin/includes/modules/move_product_confirm.php
    • +
    • admin/includes/modules/sidebox_move_product.php
    • +
    • admin/includes/modules/update_product.php
    • +
    • admin/categories.php
    • +
    • admin/document_general.php
    • +
    • admin/document_product.php
    • +
    • admin/ezpages.php
    • +
    • admin/manufacturers.php
    • +
    • admin/product.php
    • +
    • admin/product_free_shipping.php
    • +
    • admin/product_music.php
    • +
    + +
    Modified core files for the main store directory
    + +

    Some versions of Zen Cart require modifications that others don't. Just apply the modifications to files that are present in the modified_core_files folder for the version of Zen Cart the store uses.

    + +

    If a file doesn't exist in the overrides directory, simply copy the pre-modified sample file from this distribution, for the version of Zen Cart being used by the store, into the overrides folder.

    + +
      +
    • includes/auto_loaders/config.canonical.php (Zen Cart 1.3.0 - 1.3.8)
    • +
    • includes/functions/html_output.php (Zen Cart 1.3.0 - 1.5.4)
    • +
    • includes/init_includes/overrides/init_add_crumbs.php (Zen Cart 1.3.5 - 1.5.7)
    • +
    • includes/init_includes/overrides/init_canonical.php (Zen Cart 1.3.0 - 1.5.4)
    • +
    • includes/init_includes/overrides/init_currencies.php (Zen Cart 1.3.0 - 1.5.4)
    • +
    • includes/init_includes/overrides/init_sessions.php (Zen Cart 1.3.9)
    • +
    +
  4. + +
  5. +

    Template Files For Zen Cart 1.3.x (still in use in Zen Cart 1.5.7)

    + +

    A few of the standard Zen Cart template files require modifications to work with this module as they weren't built in a way that supports static URIs.

    +

    Modifications to existing template files, for static URIs to be able to be used by some of the standard Zen Cart sideboxes and by the product listing filter forms, have been made to “clean” copies of the template files from a “fresh” installation of Zen Cart and are included as “sample” files in this distribution.

    + +
      +
    • +

      If any of these template files haven't already been modified for the store, the sample files included in this distribution can be copied into the store's template directory and will then override the standard versions of the files included in the Zen Cart distribution.

    • +
    • +

      If any of these template files have already been modified for the store, then the changes necessary to support the use of static URIs must be made to the store's modified file(s). The changes are clearly marked within the sample files in the distribution and should be easy enough to copy across, especially if a “diff” software package (such as the free WinMerge or the excellent, commercial, Beyond Compare) is used.

      +

      Instructions on how to copy across the modifications necessary for this module - to template files which have previously been modified - can be found in this FAQ.

    • + +
    + +

    The sample template files can be found within the template_override_files folder in the distribution. They are:

    + +
      +
    • includes/templates/STORE-TEMPLATE/sideboxes/tpl_manufacturers_select.php
    • +
    • includes/templates/STORE-TEMPLATE/sideboxes/tpl_music_genres_select.php
    • +
    • includes/templates/STORE-TEMPLATE/sideboxes/tpl_record_company_select.php
    • +
    • includes/templates/STORE-TEMPLATE/templates/tpl_index_product_list.php
    • +
    +
  6. + +
  7. +

    [Zen Cart Versions 1.3.0 - 1.3.8 Only] Enable Canonical URI Support

    + +

    This installation step doesn't apply for stores using Zen Cart versions 1.3.9 or 1.5.X.

    + +

    Canonical URI support is an absolutely essential feature of this module, so it must be enabled properly.

    + +

    If it isn't, search engines will penalise the site and it may well drop down in its rankings!

    + +

    Zen Cart versions 1.3.9 and 1.5.X have the necessary canonical code built into them already but previous versions of Zen Cart must have a file modified to add this support.

    + +

    The file includes/templates/STORE-TEMPLATE/common/html_header.php must be modified.

    + +
      +
    • +

      If the template file includes/templates/STORE-TEMPLATE/common/html_header.php does not yet exist, then simply copy across the file from the template_override_files folder for the version of Zen Cart the store is using.

      +
    • +
    • +

      If the template file includes/templates/STORE-TEMPLATE/common/html_header.php does exist for the store, then the simple change necessary for canonical URI support must be made to the store's html_header.php.

      +

      The change is clearly marked within the sample file in the distribution and should be easy enough to copy across, especially if a “diff” software package (such as the free WinMerge or the excellent, commercial, Beyond Compare) is used.

      +

      Instructions on how to copy across the modifications necessary for this module - to existing template files - can be found in this FAQ.

    • +
    +
  8. + +
  9. +

    Create the Database Tables and Configuration and Configure the URI Auto-generation Settings

    + +

    This software comes with some intelligent installation and error checking functionality which makes it easy to install the module and to keep the database and configuration up to date.

    + +

    This installation/upgrade functionality runs automatically when the configuration utility is accessed. (In the future, if the module is being upgraded, the configuration utility should also be accessed then.)

    + +
      +
    • +

      Simply go to Modules > URI Mapping Config in the Admin and the database tables and configuration will be automatically created.

      +
    • +
    + +

    Details of how to configure the URI auto-generation settings and set up the URI mappings for the store are provided in the configuration section.

    +
  10. + +
  11. +

    Configure the settings for the Auto-managing of URIs for Products' “Reviews”, “Tell-A-Friend” and “Ask-a-Question” pages

    + +

    It is highly recommended to configure these settings as, if the store doesn't use any of the “Reviews” pages, the “Tell-A-Friend” (which has been removed altogther from Zen Cart 1.5.0 onwards), or “Ask-a-Question” pages, disabling the automatic generation of URIs for these page types reduces the number of URI Mappings added to the store's database, keeping the software fast and efficient, and therefore avoiding a potentially wasteful slowdown of the site!

    + +
      +
    • +

      Go to Modules > Ceon URI Mapping (SEO) Config in the Zen Cart Admin.

      +
    • +
    • +

      Go to the Auto-managed Product Page URIs tab.

      +
    • +
    • +

      Untick the checkboxes for any page types the store doesn't use - or simply isn't interested in having static URIs for - and click “Save”.

      +
    • +
    +
  12. + +
  13. +

    Run the Installation Check

    + +

    This software comes with an amazingly handy Installation Check utility.

    + +

    The installation check will examine the store's configuration files and warn you about any mistakes in the files which you need to correct, and will even provide full information about what you should do.

    + +

    It will also check all the core files that must be modified for Ceon URI Mapping to work optimally, and warn you if any of the modifications are missing or out-of-date, again giving information on what you should do!

    + +

    A quick glance at this new admin page should help you identify and fix any problems with the installation quickly and easily!

    + +
      +
    • +

      Go to Modules > Ceon URI Mapping (SEO) Config in the Zen Cart Admin.

      +
    • +
    • +

      Then go to the Installation Check tab and click on the link to open the Installation Check utility page.

      +
    • +
    • +

      The module will now automatically carry out the installation check.

      +
    • +
    • +

      If any errors are listed, follow the instructions given by the software.

      +
    • +
    +
  14. + +
  15. +

    Add the Rewrite Rule to the Webserver (Apache/IIS etc.)

    + +

    Having a working rewrite rule installed is one of the most important aspects of installing this software.

    + +

    To make things as easy as possible, the module comes with handy “Example Rewrite Rule” functionality.

    + +

    The module will analyse the filesystem on the server and attempt to build a rewrite rule for the store that has any necessary exclusions added.

    +

    Note: when upgrading Zen Cart, that folder/sub-directory accessibility (zc_install) is affected by this rewrite rule.

    + +
      +
    • +

      Go to Modules > Ceon URI Mapping (SEO) Config in the Zen Cart Admin.

      +
    • +
    • +

      Then go to the Installation Check tab and click on the link to open the Installation Check utility page.

      +
    • +
    • +

      Since any errors with the store's configuration files should have been fixed after running the installation check in the previous step, the “Example Rewrite Rule” panel will be displayed.

      +
    • +
    • +

      Read the instructions given in that panel and copy and paste the new Rewrite Rule to the store's .htaccess file/VirtualHost directive, as desired.

      +
    • +
    • +

      Remember this is just an Example rewrite rule, some customisation may be required to take account of other software on the server which the site uses, needs to use, or other file type extensions etc. that the store wants to exclude or include.

      +
    • +
    • +

      Details of how to modify the necessary rewrite rule for the store are provided in the configuration section.

      +
    • +
    +
  16. + +
  17. +

    [OPTIONAL but RECOMMENDED] Configure the SitemapXML (formerly “Google Sitemap”) Module

    + +

    If the store uses the SitemapXML (Google Sitemap) module, it needs to be configured to work better with static URIs.

    + +

    Otherwise, the store's rankings may be penalised because of links in the sitemap redirecting to other links.

    + +
      +
    • +

      Go to Configuration > Sitemap XML in the Zen Cart Admin.

      +
    • +
    • +

      Newer versions of the module have the option “Using parameter language in links”. If this option exists, make sure to set it to “false”.

      +
    • +
    • +

      Older versions of the module have the option “Generate language_id for default language”. If this option exists, make sure to set it to “false”.

      +
    • +
    +
  18. + +
  19. +

    [OPTIONAL but RECOMMENDED] Take a note of the FAQs

    + +

    Lots of people ask us the same questions. It's worth reading the FAQs.

    + +

    At the very least, here are some of the most popular questions that are covered.

    + +

    If you are experiencing any problems, please check the FAQs for more questions and their answers. Support information is outlined in the support section.

    + + +
  20. + +
  21. +

    Set Up the URI Mappings for Categories, Products, Manufacturers and EZ-Pages

    + +

    Now all that has to be done is to set up the URI mappings for the store in the Zen Cart Admin.

    + +

    Details of how to configure the module and how to set up the URI mappings for the store are provided in the configuration section.

    +
  22. + +
  23. +

    That's it! Enjoy the new URIs!

    + +

    It may have taken a wee while, but the above should all have been fairly easy to do. And the Installation Check certainly helps!

    + +

    Please make sure to keep up-to-date with the software. Thanks to the way the module has been designed, with lots of auto-upgrade functionality built in, upgrading to subsequent versions will most likely just be a matter of overwriting some files, taking only a few seconds.

    + +

    Enjoy the software and the nice, readable and easy-to-type URIs it allows the store to have!

    +
  24. +
+ +

Back to top

+ + + +
+
+ + + + + \ No newline at end of file diff --git a/DOKU ENGLISCH/sections/module-info.html b/DOKU ENGLISCH/sections/module-info.html new file mode 100644 index 0000000..6e962e1 --- /dev/null +++ b/DOKU ENGLISCH/sections/module-info.html @@ -0,0 +1,195 @@ + + + + + .:: Ceon :: Zen Cart :: Module :: Ceon URI Mapping ::. + + + + + + + + + + + + + + + +
+
+ +

Ceon URI Mapping

+ + + +

Module Overview

+

Use Static URIs to make web addresses Easier to Remember and Easier to Enter.
Improve the store's Rankings in Search Engines!

+ +
+
+

“Ceon URI Mapping is absolutely fantastic and beats any other Zen Cart SEO module by a country mile.

+

“I have found Ceon ZC modules to be among the best ZC mods out there!”

+
+

Ewan Duthie,
+ Web Integrations Ltd.

+
+ +

The Ceon URI Mapping module is a very handy module that no Zen Cart site should be without!

+ +

Unlike other SEO modules, where the URIs are generated automatically when a customer visits a page, this module allows specific URIs to be entered within the admin, or even for auto-generation to be used to create a static URI for an individual category/product/manufacturer/EZ-Page/Zen Cart page.

+ +

We believe this to be a much better solution as the store is in control of its URIs.

+ + +

Static, Human-Readable, Keyword-Based URIs

+ +

Ceon URI Mapping lets the store specify static, human-readable, keyword-based URIs to be used instead of the dynamic, ID-based URIs which Zen Cart uses as standard.

+ +
+

For example, for a product, instead of dynamic URIs like this:

+

http://yourstore.com/index.php?main_page=product_info&cPath=3&products_id=5

+ +

a static address - easy to read, easy to type in, and full of keywords - could be specified for the product:

+

http://yourstore.com/books/life-is-good

+
+ + +

Easily Promote Sections of the Site

+ +

It's simple to promote sections of the site on advertising literature.

+ +
+

For example, the following URI could be mapped to the specials page and put on flyers, posters and other sites:

+ +

http://yourstore.com/EasterSpecials

+
+ + +

Packed Full of Features

+ +

Ceon URI Mapping is packed full of features, which include:

+ +
    +
  • Full Multi-Language Support

  • +
  • Canonical URI Support

  • +
  • Historical URI Redirection (Never have a broken link again!)

  • +
  • URI Auto-Generation

  • +
  • Transliteration Support

  • +
  • 100% Compatibility with Zen Cart

  • +
  • As well as many more!

  • +
+ +

Give potential customers easy to enter/remember URIs and improve the site's rankings in search engines - check out the full feature list!

+ +
+

Please Note: This module does not automatically add mappings for existing Categories/Products/Manufacturers/EZ-Pages - if the site has existing Categories/Products/Manufacturers/EZ-Pages, they'll continue to use the standard Zen Cart dynamic URIs, until a URI has been entered or auto-generated for them, by editing the respective Category/Product/Manufacturer/EZ-Page in the admin.

+ +

This means going in and editing every Category/Product/Manufacturer/EZ-Page for which a static URI mapping is desired. Ceon's URI Mappings Manager software is being developed, and will be able to generate URIs for entire categories etc. at once.

+
+ +

The version you have here is a completely new module, based in part on a module written for a client of JKED, a leading e-commerce firm - see what JKED can offer you!.

+ +

Essential Info

+

Here's the essential information about this release.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TitleInformation
Module Name:Ceon URI Mapping
Zen Cart Versions:1.3.0 - 1.5.x (May be rewritten for 2.0.0 when it is released, depending on the work involved).
PHP Versions:5.2 - 7.4
Website (inc. Downloads):The latest version of and information about this software can always be found at http://ceon.net/software/business/zen-cart/uri-mapping
License:This software is provided free of charge and released under the GPL but donations are happily accepted! License file is included in the release. +
The documentation is © Copyright Ceon, please check the FAQs for information about distributing it to clients.
Warranty:The software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Donations: +

Donate by Credit/Debit Card or PayPal. We accept Visa, MasterCard, Maestro, American Express, Visa Debit, Visa Electron & MasterCard Debit!This module has taken over 14 weeks of work, with none of the time taken being paid for by anyone, so if you find it useful, please support us - just click the donate button.

+

We'll have more time to keep this contribution up-to-date and to support those who need our help if some nice people donate.

+

Fewer than 1 in 500 people donate towards our software, so it would be greatly appreciated - Thanks!

+
Support:Information about support is available here.
Author: +

Conor Kerr, Ceon

+

The module also contains libraries based on libraries from The Horde Project, Drupal, Media Wiki and CPAN. Respective credits are in the relevant source files.

+
Copyright:© Copyright Ceon 2008-2020
+ +

Back to top

+ + + +
+
+ + + + + \ No newline at end of file diff --git a/DOKU ENGLISCH/sections/revision-history.html b/DOKU ENGLISCH/sections/revision-history.html new file mode 100644 index 0000000..8f9961b --- /dev/null +++ b/DOKU ENGLISCH/sections/revision-history.html @@ -0,0 +1,584 @@ + + + + + .:: Ceon :: Zen Cart :: Module :: Ceon URI Mapping ::. + + + + + + + + + + + + + + + +
+
+ +

Ceon URI Mapping

+ + + +

Revision History

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
DateVersionRelease Information
13th December 20205.1.0 +

[ADDED] Use of Zen Cart 1.5.7 notifier for copying URIs when copying a product.

+

[ADDED] Operation to modify date fields to comply with newer MySQL requirements.

+

[ADDED] Admin handling for the parameter action value differences introduced in Zen Cart 1.5.7.

+

[ADDED] Notifier CEON_CLASS_HANDLER_HANDLE_STATIC_URI_END to support adding rewrite rules similar to product reviews.

+

[UPDATED] Admin product observer for readability and early termination.

+

[BUGFIX] Admin product deletion observer for pre Zen Cart 1.5.3 operation to pass a null value to the standard observer code.

+

[UPDATED] Admin category page display to use/recognize the Zen Cart 1.5.7 html format for selection groups.

+

[BUGFIX] Admin product URI generation for PHP 7.x versions where expected information is not posted.

+

[UPDATED] URI data generation and handling for the newly assigned parameter for the ask a question feature as modified for Zen Cart 1.5.7.

+

[BUGFIX] URI Configuration window now transliterates proposed URI information.

+

[BUGFIX] Restored installation check of admin setting of the catalog server constant for containing a sub-directory when it begins with https.

+

[BUGFIX] Corrected notification of when required Ceon URI Mapping code is expected in includes/functions/html_output.php and admin/includes/functions/html_output.php.

+

[BUGFIX] Default values for newly created date fields to align with MySQL requirements moving forwards.

+

[UPDATED] Admin display of URIs to not include html encoded ampersands as Zen Cart 1.5.7 does not properly recognize the parameter when that link is followed.

+

[UPDATED] Admin process of providing selections for product copying associated with the new Zen Cart 1.5.7 page format.

+

[UPDATED] Observers to use/recognize the method naming added in Zen Cart 1.5.7.

+

[UPDATED] Transliteration conversions identified for updates at https://www.drupal.org/project/transliteration/issues.

+

[UPDATED] CeonString class method visibility.

+

[UPDATED] Removed the need to directly modify any Zen Cart core files as of Zen Cart 1.5.7. There is only one core file that is directly affected and it is only overridden.

+
17th August 20195.0.1 +

[ADDED] Preliminary files for Zen Cart 1.5.7.

+

[BUGFIX] Admin presentation of catalog side addresses, including possibility that admin/includes/configure.php may be moved to the catalog side.

+

[BUGFIX] Auto-generation of EZ-Page URI for Zen Cart 1.5.6+ when no ez-page name is provided..

+

[BUGFIX] Restore cookie location control to Zen Cart when the module is disabled.

+

[ADDED] Modification for the overridden Zen Cart 1.5.1 includes/functions/html_output.php file incorporated into other versions.

+

[UPDATED] Zen Cart 1.5.5 copy to confirm file to match the distributed version.

+

[UPDATED] The load point of the handler code to remain before the load point of init_sanitize (changed in Zen Cart 1.5.6c).

+

[UPDATED] Additional locations that would issue notices in PHP strict mode.

+

[UPDATED] Javascript file to support being called by an observer such as available in Zen Cart 1.5.7.

+
11th March 20195.0.0 +

[ADDED] Sample modified core file for Zen Cart 1.5.6/6a.

+

[ADDED] Updated override files for Zen Cart 1.5.6/6a to be replaced by another process in future revision.

+

[ADDED] Language code (e.g. en, de, es) into URI when auto-generating a URI.

+

[ADDED] Possibility of generating an Ask-a-Question style URI.

+

[UPDATED] Installation check to suggest removal of old file edits pre Zen-Cart 1.5.6.

+

[UPDATED] Sample .htaccess file for Zen Cart 1.5.6/6a.

+

[UPDATED] Code to address strict notifications with testing up to PHP 7.2 while retaining backwards compatibility with PHP 5.x.

+

[REMOVED] Outdated method (<= PHP 4.x) of referencing variables, methods, and functions to incorporate what Conor already knew was right or expected.

+

[UPDATED] Canonical URI to incorporate the modifications maintained by Torvista, thank you for your perseverence.

+

[ADDED] Class, init_includes and related code and files to support function incorporation without Zen Cart file modification. While it is expected that this will result in additional support enquiries, it is an aspect of this software that has been requested for many years.

+

[UPDATED] Usage of notifiers within the internal operation of the plugin, with additional incorporation remaining for the files in the includes/init_includes directory (next revision).

+

[ADDED] Template override files for Zen Cart 1.5.6a. Updated the common/html_header.php file to the version provided in Zen Cart 1.5.6a, making the file unnecessary for a standard installation but necessary for installation to an older style template.

+

[REMOVED] includes/init_includes/init_sessions.php for Zen Cart versions 1.5.0 and above in place of the constant CUSTOM_COOKIE_PATH being defined when loaded from includes/extra_datafiles. This is expected to be defined as '/' to provide the cookie location as the root of the store.

+

[REMOVED] includes/init_includes/init_currencies.php for Zen Cart versions 1.3.8 and above in place of loading the file includes/init_includes/init_ceon_currencies.php at a load point (123) after the load point for init_currencies.php (120) but before the currency's use.

+

[REMOVED] includes/init_includes/init_canonical.php for Zen Cart versions 1.5.5 and above to use the notifier that was added beginning in Zen Cart 1.5.5. This requires use of a load point before init_canonical.php loads so that the observer is in place upon execution.

+

[BUGFIX] String class that has become a reserved keyword in PHP 7.x is now named CeonString to correspond with the package for which it was installed.

+
6th July 20164.5.2 +

[ADDED] Sample modified core files for Zen Cart 1.5.5a added.

+
26th March 20164.5.1 +

[ADDED] Sample modified core files for Zen Cart 1.5.5 added.

+
4th February 20154.5.0 +

[ADDED] Sample modified core files for Zen Cart 1.5.4 added.

+

[UPDATED] Product Book files updated to include new admin logging

+
4th September 20144.4.3 +

[ADDED] Sample modified core files for Zen Cart 1.5.3 added.

+
16th May 20144.4.2[BUGFIX] PHP5.4. - Issue with predefined SID constant causing PHP out-of-memory condition:
22nd September 20124.4.1 +

[ADDED] Sample modified core files for Zen Cart 1.5.1 added.

+
17th September 20124.4.0 +

[ADDED] New core file modification added. The zen_catalog_href_link() function in the admin-side html_output.php file has been modified to make use of Ceon URI Mapping. This will mean that any properly written admin-side software will use static URIs instead of Zen Cart dynamic URIs when generating a link with this function!

+

[UPDATED] Installation check updated to check for new core file modification of the zen_catalog_href_link() function in the admin-side version of the file html_output.php.

+

[UPDATED] Updates to the installation and upgrading instructions, to make them even clearer and even easier to follow.

+
10th September 20124.2.1 +

[BUGFIX] A product review's page needs the ID included as part of the canonical URI, but this was not being set, meaning all product reviews were sharing the same canonical URI, breaking the functionality.

+

[BUGFIX] When an auto-generated URI clashed with an existing URI, instead of notifying the user, it was simply being stated that no mapping was being applied. Updated to now display an informative message and a link about the clash, to help resolve it.

+
18th July 20124.2.0 +

[ADDED] List of product pages is now maintained in its own data file in the includes/extra_datafiles folder, making it easy to add support for additional product page types.

+

[ADDED] Support for the nginx webserver added to the Installation Check. When an nginx webserver is detected, the example directive for the rewrite rule will be displayed.

+

[UPDATED] The filename define for the Tell A Friend page is no longer present in Zen Cart 1.5.x, so its use would cause PHP warnings in error logs on new installations. A check, included as part of the new additional product page type functionality, is now made to only use the define if it exists.

+

[UPDATED] All files updated to comply with Ceon Coding Guidelines (http://dev.ceon.net/software/coding-guidelines).

+

[BUGFIX] Call to method to build a URL encoded string for an array query parameter was broken, it was calling the old deprecated function (must not have been much of a problem as has been present ever since the version 4.x rewrite but went unnoticed/unreported by anyone for almost two years!).

+

[BUGFIX] Convenient link to select (and copy in IE) the content of the example rewrite rule text field was broken by removal of necessary tags in previous release's attempt for valid HTML output for the installation check interface.

+

[UPDATED] Installation instructions updated to make the purpose of the functionality to Auto-manage URIs for Products' Reviews and Tell-A-Friend pages clearer, and to make the instructions on how to configure this functionality much easier to follow.

+
24th February 20124.0.8 +

[ADDED] The Installation Check now analyses the server's environment variables, to try and determine the type of server being used, so that the instructions for adding the example rewrite rule are relevant to the server on which the software is being used. Servers currently supported for analysis are Apache, IIS with URL Rewrite and IIS with ISAPI_Rewrite.

+

[UPDATED] The setting for automatically generating and adding URIs for Tell-A-Friend pages is now set to off on new installations of Ceon URI Mapping as this functionality has been removed from Zen Cart 1.5.x. It is still fine to be used on both Zen Cart 1.3.x and Zen Cart 1.5.x but will have no useful benefit on 1.5.x, just taking up space in the database unnecessarily.

+

[UPDATED] Check for valid value of PHP_SELF environment variable updated to cope with stores using the ‘.php’ extension in URIs.

+

[BUGFIX] Example Rewrite Rule generator in Installation Check updated to cope with directories that have strange characters, such as spaces, in their names. The invalid rewrite conditions previously generated would cause a server error, taking down the site altogether.

+

[BUGFIX] Config Utility and Installation Check updated so their HTML output is fully valid.

+

[UPDATED] Installation instructions updated with information about integration with latest version of Sitemap XML (formerly “Google Sitemaps”) module.

+
24th October 20114.0.7 +

[BUGFIX] Serious bug meant that when a static URI could not be matched, Ceon URI Mapping was simply displaying the store's home page, instead of the File Not Found 404 page.

+
6th October 20114.0.6 +

[BUGFIX] When the user was using a different language from the default and then accessed a page which had the same URI mapping for the current language and the default language, a typo meant that the software would mistakenly return to the store's default language.

+

[BUGFIX] Sample modified core file admin/includes/modules/document_general/collect_info.php for Zen Cart versions 1.3.9h and 1.5.0beta had a line left in it from previous versions which shouldn't have been there, corrupting the PHP file and resulting in a blank page.

+

[UPDATED] FAQ updated to make it clear how to fix any clashes/problems with other modules.

+
29th September 20114.0.5 +

[UPDATED] Support added for changing the capitalisation of product URI mappings. Previously solely changing the capitalisation of a product URI mapping would result in a clash being flagged, preventing the change being saved. Changing the capitalisation is now allowed, with the process making full use of the historical URI functionality.

+

[UPDATED] The version Id header lines have been updated in some of the core modified files as they were out of sync with the lines in the equivalent fresh versions of Zen Cart. This has no effect whatsoever on anything other than to make the modification of files less ambiguous for those that don't have their comparison software configured to ignore version ID lines.

+
22nd September 20114.0.4 +

[ADDED] Installation check extended to check if old files from a previous version of the software remain. It attempts to deletes any files/folder which should have been removed when upgrading. If the attempt at deletion is unsuccessful, it will warn the user about the presence of the old files/folder as they can conflict or even break the new/updated functionality.

+

[ADDED] Module will now make sure that its configuration group is added to the Zen Cart admin in 1.5.x.

+

[UPDATED] Styling of config utility interface improved with CSS3 graphical effects.

+

[UPDATED] Styling of fieldsets updated with code to fix problems with IE's rendering engine.

+

[BUGFIX] The code to manually build the $PHP_SELF server environment variable had a mistake in it. This could result in the software mistakenly disabling itself on particular server setups.

+
13th August 20114.0.3 +

[ADDED] Sample modified files and extra required new files added for Zen Cart 1.5.0beta.

+

[ADDED] Information about, and the link to, the configuration checking functionality of Ceon URI Mapping added to the Installation Check section.

+

[ADDED] Flag to override the database privileges check added to the installation/upgrade functionality.

+

[UPDATED] Installation check updated with compatibility for the multi-language EZ-Pages module.

+

[BUGFIX] Character/String Replacement functionality of auto-generation wasn't working at all as the list of replacements wasn't being loaded by the software!

+

[BUGFIX] The call to the EZ-Pages URI Mapping auto-generation method was renamed in 4.0.2, but the file containing the updated class with the new method name was mistakenly only included in the UMM edition of the distribution, with the file for 4.0.1 remaining in the standard edition. This broke the auto-generation functionality for EZ-Pages in 4.0.2, resulting in a blank white page and an error message in the debug cache! The correct file, with the correct version of the class and method, has been included in 4.0.3.

+

[ADDED] FAQ about missing configuration group option added to the documentation.

+

[ADDED] FAQ about missing Zen Cart admin menu item added to the documentation.

+

[UPDATED] Documentation updated with up-to-date information for Zen Cart 1.5.0.

+
22nd July 20114.0.2 +

[UPDATED] When a product is having its URI mapping auto-generated, with an integer being auto-appended because the mapping clashes with an existing mapping, the auto-generation code now checks to see if the clash that is occurring is in fact simply with the product's own mapping. If so, no new URI mapping is generated.

+

[BUGFIX] When a URI was being made into a historical mapping and an identical historical mapping already existed, the code was wrongly deleting both the original, duplicate mapping and the new historical mapping, instead of only deleting the duplicate mapping.

+
19th July 20114.0.1 +

[UPDATED] If auto-generation fails to generate a URI mapping (because a category/product/manufacturer/EZ-Page has no name), an informative error message is now displayed, instead of simply stating that no URI mapping was generated.

+

[UPDATED] The example rewrite rule generated by the software included a slash at the end of the admin exclusion. It has now been adjusted to remove this slash, so that the admin URI can be accessed without having to end it with a slash (http://store.com/admin can be used to access the admin, instead of insisting upon http://store.com/admin/ or http://store.com/admin/index.php etc.).

+

[BUGFIX] Existing URI mappings for auto-managed product pages weren't being converted to historical URI mappings whenever a new URI mapping was entered/generated for a product.

+

[REMOVED] Sample modified core files, and template override files, for Zen Cart versions 1.3.0 to 1.3.7 removed from the distribution. Every store should really upgrade to Zen Cart 1.3.9h as previous versions are bug-ridden!

+
14th July 20104.0.0 +

[ADDED] Installation check and example rewrite rule functionality added. +
Once the Config Utility has been successfully installed, and the database & configuration installed or brought up to date, the user can access the installation check/example rewrite rule functionality from the config utility. This smart and useful addition to the software will analyse the store's configuration files and warn the user if there are any mistakes in the files which they need to correct, and will even provide full information about what they should do. It will also check all the core files that must be modified for Ceon URI Mapping to work optimally, and warn the user if any of the modifications are missing or out of date, again giving information on what the user should do! +
A quick glance at this new admin page should help the user identify and fix any problems with the installation quickly and easily! +
Finally, the check will analyse the store's filesystem and build an example rewrite rule for the store, along with instructions on how to get the rule working. Adding the rewrite rule should now just be a simple matter of copying and pasting the rule built by this new functionality!

+

[ADDED] Compatibility with IIS ISAPI_Rewrite 3 and IIS URL Rewrite added, in part by updating the sample rewrite rules. The example rules now use the “QSA” flag instead of appending the query string with “?%{QUERY_STRING}”. The updated rules remain compatible with all Apache versions, on any platform.

+

[ADDED] Checks added throughout rewritten software to prevent any URI mappings being added that clash with an existing (current) URI mapping. +
+ A setting has been added that lets the store choose whether they'd rather be notified about any such clashes, or (for products only at this time) whether they would rather the software automatically append a number to the end of the mapping to make it unique and therefore stop it from clashing with the existing URI mapping.

+

[ADDED] Checks added throughout rewritten software to prevent any duplicate historical URI mappings being created in the database.

+

[ADDED] Messages are now displayed in the message stack whenever a URI mapping is added, updated or converted to a historical URI. Gives assurance that the desired change(s) was/were made, especially since any auto-generated/entered/updated URI mapping is displayed within the respective success message. +
Any newly added/updated mapping is clickable within this message, so the user can see it working straight away in a new browser tab/window.

+

[ADDED] New settings added to allow the store to specify which “pages related to a product” should have their URIs auto-managed by the software. +
There are four page types which can be auto-managed: “Products Reviews”, “Product Review Info”, “Write a Review” and “Tell A Friend”. +
If a store doesn't use a particular page type, disabling its auto-management will mean that the URI mapping database isn't populated unnecessarily, making it smaller and therefore slightly more efficient/quicker. +
The page types which are to be auto-managed can be enabled/disabled in a new section in the config utility. The URI parts which are to be appended for the auto-managed URIs are now entered in another new section in the config utility, instead of being defined in language defines, as was the case previously, making it considerably easier to specify the desired URI parts. +
Also, as noted in a bugfix entry below, previous versions of the module didn't support multiple languages properly.

+

[ADDED] Functionality added to the module to “normalise” the effects of using a rewrite rule. Previously, with some server configurations, the use of a rewrite rule would result in the $PHP_SELF variable value having a useless value. The new code attempts to circumvent this problem and provide a meaningful value for the variable.

+

[ADDED] Ceon URI Mapping functionality implemented in product move and copy functionality for four more product types: document_general, document_product, product_free_shipping and product_music. Previously the Ceon URI mapping functionality for these product types was only available when adding or updating a product.

+

[ADDED] Sample modified core files for Zen Cart 1.3.9g and 1.3.9h added to the distribution.

+

[ADDED] Sample modified files for third party module “Multilanguage EZ-Pages” module added to the distribution.

+

[ADDED] Support for Ceon Model Code and automatic version checking functionality added.

+

[UPDATED] Module restructured into using a class-based structure. A base class provides shared functionality. Subclasses can then be created which differ in how they run. +
The “standard” class is designed for maximum compatibility and flexibility, while remaining as lightweight and nimble as possible. +
Alternative versions can be created which are specific to certain server setups, skipping unnecessary configuration checks and/or using more efficient code to map URIs, for maximum speed.

+

[UPDATED] URI mappings now have any trailing slashes stripped. URIs can no longer end in a trailing slash. Auto-upgrade functionality will automatically remove trailing slashes for any URI existing mappings.

+

[UPDATED] Excluded Files functionality removed as the new, improved Ceon URI Mapping instantiation code can determine whether or not Ceon URI Mapping should attempt to analyse and map the current URI. This means the module should be 100% compatible with all other Zen Cart modules capable of working with static URIs, without the store having to adjust anything at all!

+

[UPDATED] An alternate URI can now be as little as one character in length. Previously it could only be two characters or greater in length. This allows redirecting of URIs directly to the home page (/).

+

[UPDATED] The canonical tag is no longer added using an auto-loaded JavaScript file. For Zen Cart 1.3.9 it is now added by using Zen Cart's built-in canonical output functionality (overriding the code to use the Ceon URI Mapping canonical URI). For earlier versions of Zen Cart a small core file modification is now needed to the template file common/html_header.php, to bring it up to date and make it compatible with the canonical URI functionality of the module.

+

[UPDATED] Extra core file override (init_sessions.php) included for Zen Cart 1.3.9 as it doesn't set the cookie path to the root of the site, which is what is required for sites that use static URIs. The override prevents the propagation of the session ID (zenid=xxxx) in the URI beyond the second page visited, when the visitor accepts cookies. The first page visited will still have the session ID at the end of all links as that is an unavoidable aspect of how Zen Cart must work when no cookie has been supplied (i.e. a fresh visit to the site). Override is not needed for versions of Zen Cart before 1.3.9 as those versions set the session cookie relative to the site's root.

+

[UPDATED] The words “a” and “an” are no longer part of the default list of words to be removed from a URI when auto-generation is taking place.

+

[UPDATED] zen_href_link() modifications for Ceon URI Mapping updated to use new class instead of procedural code. Number of modifications to html_output.php has been reduced from 4 to 1, making this core file's modification easier to make.

+

[UPDATED] Ceon URI Mapping will no longer attempt to redirect from a static URI when the static URI is a historical URI, or the language is being changed, and a form is being POSTed. Nor will it attempt to redirect if it detects a form being POSTed to a dynamic URI that has a current URI mapping, as could happen if the form didn't include the “action” parameter that was previously being checked against. Avoids problems with modules that don't use zen_href_link() properly.

+

[UPDATED] Core admin file modifications changed to simply instantiate classes and call methods. This is a great improvement as it means that the Ceon URI Mapping code blocks in the modified core files are much simpler, each change now being just a few commands surrounded by the marker comments. This should make the core file modifications much easier to make. Also, since the actual code has been abstracted to classes, it will be much easier to update the software as the core files themselves probably won't need to be changed, the class files can simply be overwritten instead.

+

[UPDATED] Ceon URI Mapping admin functionality is no longer loaded for all Zen Cart admin pages. The files containing the classes are loaded only when needed, as opposed to the previous method of having the functions loaded for every Zen Cart admin page. Avoids needlessly using system resources in sections of the admin that don't use the Ceon URI Mapping functionality.

+

[UPDATED] Auto-upgrade functionality now checks if the current database user has the necessary ALTER TABLE privileges.

+

[UPDATED] Code to remove duplicate mappings updated to match against the base product URI, rather than building a unique URI to check against, for each of the 4 product-related page types, and one to check against product URIs with a trailing slash. Reduces the number of queries for this functionality from 6 to 2. Remaining two queries have also been cut down in scope, increasing their efficiency.

+

[UPDATED] Some admin functionality changed from using the Ceon String class to standard PHP functions as the specific functionality is only ever going to handle ASCII strings, which the PHP functions can handle more quickly/efficiently.

+

[BUGFIX] 303 and 307 redirects were using the wrong redirection code (both were using 302).

+

[BUGFIX] Plus (+) symbols weren't being escaped in the regular expressions which handle the list of words to be removed from auto-generated URIs. Using a plus symbol therefore broke these expressions, meaning that the Remove Words functionality didn't work as expected.

+

[BUGFIX] The list of words to be removed from auto-generated URIs wasn't being encoded properly for being output on the configuration page, breaking the encoding of certain characters.

+

[BUGFIX] The URIs being auto-generated for “pages related to a product” only ever used the defines for the language being used in the admin, even if the store had multiple languages. This meant that, for languages other than the one being used in the admin, the product part of the URI would be in the correct language but the URI part for the related page would be in the wrong language!

+

[BUGFIX] Ceon URI Mapping broke the Zen Cart functionality to automatically change the currency to the language's default currency whenever the language was changed. A new override file has been added for init_currencies so that the default language currency functionality works perfectly with static URIs.

+

[ADDED] New FAQs added to describe what to do whenever the use of the module causes images not to load, layout issues to occur (e.g. because of unloaded CSS files) or other Zen Cart modules (including those with AJAX functionality (e.g. JavaScript menus)) to stop working.

+

[ADDED] New FAQ added about how to deal with 404 errors being displayed.

+

[ADDED] New FAQ added about problems with particular file types being “blocked” whenever the rewrite rule is added.

+

[ADDED] Information added to the documentation on how to configure the Google Sitemap (XML) module to work properly with Ceon URI Mapping.

+

[REMOVED] Documentation and FAQ about excluded files functionality removed as the functionality is no longer necessary!

+

[BUGFIX] Documentation updated so that the dynamic functionality works when the documentation is being accessed from a local disk using Google Chrome.

+
7th September 20103.8.0 +

[UPDATED] Commas are now also converted to spaces before being replaced by the whitespace replacement character when auto-generating a URI.

+

[UPDATED] A dynamic Zen Cart URI with an empty main_page parameter, “index.php?main_page=”, is now redirected to the home page with a 301 permanent redirect.

+

[UPDATED] Mapped URIs are now deleted when the Zen Cart product or category deletion function is called. Previously the deletion code was called directly when a product/category was being deleted, but subcategories and products within a category being removed were not having their URIs deleted, wasting space in the database unnecessarily.

+

[BUGFIX] String replacements weren't being used in EZ-Page and Manufacturer URI autogeneration functions.

+

[ADDED] Exclusion for 3D-Secure IFrame wrapper file in new Ceon Cardsave Direct payment module added.

+

[ADDED] Sample modified core files for Zen Cart 1.3.9e added to the distribution.

+

[ADDED] Sample modified core files for Zen Cart 1.3.9f added to the distribution.

+
16th June 20103.6.3 +

[UPDATED] URI mapping lookup query updated to use a LIKE operator before the REGEXP operator. Limits the number of records that have to be examined by the REGEXP, resulting in vastly superior performance when the URI mappings table is large (especially if it is too large to be cached in memory by the SQL server software). Code update by Christian Pinder.

+

[INTERMED] Index added to the database table, for categories/products/EZ-pages, to speed up URI mapping. Gives a noticeable improvement with very large sites with tens of thousands of products. Thanks for suggestion for index format goes to Christian Pinder. Database structure shall be changing entirely in 4.0.0 for further optimisations (As always all changes are managed by the auto-upgrade functionality of the software).

+

[UPDATED] When URIs are being auto-generated, any forward slashes, pipe characters, plus symbols, colons, semicolons, brackets, square brackets or angle brackets in the name of a category/product/manufacturer/EZ-page will now be converted to a space, then replaced by the whitespace replacement character. This means that names with those characters in them will no longer have the words joined together.

+

[ADDED] Sample modified core files for Zen Cart 1.3.9d added to the distribution.

+
25th May 20103.6.2 +

[BUGFIX] Modified version of breadcrumb core file was missing from the distribution.

+

[BUGFIX] Modified version of canonical core file was in the wrong folder in the distribution - should have been in the init_includes overrides folder instead of the main init_includes folder.

+

[UPDATED] Minor documentation updates (including the correction of the incorrect information regarding the canonical override file).

+
24th May 20103.6.1 +

[ADDED] Sample modified core files for Zen Cart 1.3.9c added to the distribution.

+
24th May 20103.6.0 +

[ADDED] Support for filtered product listings having their own static URI added. Previously only a single unique set of query string parameters would allow a filter product listing to have its own static URI. The software can now extract the identifying query string parameters which allow product listing pages to have their own static URI.

+

[ADDED] Modified template files added to distribution to enable support for static URIs in the Manufacturers sidebox, the Music Genres sidebox, the Record Company sidebox and all of the product listing filter forms. This would seem to complete the support for static URIs in a standard Zen Cart installation. There are no further files known to have code which does not support static URIs!

+

[UPDATED] Software will now (once again) redirect to the static URI for a manufacturer's page, if it exists, when the index page is being accessed with the query string parameters identifying a manufacturer.

+

[BUGFIX] The canonical URI for the root of a site was incorrectly having its trailing slash removed.

+

[UPDATED] Checks against the query string parameters being used to build links are now case insensitive.

+

[UPDATED] Order of checks against query string parameters changed so that the check for the identifying parameter for a category is now the last check made. This has been done in case any other software uses links which have the category query string parameter in them, so that these [hypothetical] links won't have their static URIs incorrectly overridden by a static URI for the associated category.

+
17th May 20103.4.3 +

[BUGFIX] Code introduced in 3.4.0 to remove extra ampersands from the URI was being overzealous and removing an extra ampersand whenever the primary query string parameter for a mapped URI was not at the start of the query string, but was instead preceded by other query parameters. This broke the preceding and following query string parameters as the name of the following parameter was being appended to the preceding parameter's value.

+
15th May 20103.4.2 +

[BUGFIX] Auto-upgrade script was attempting to add the excluded_files column to the configuration database table when upgrading from version 3.2.4, even though this column is already present in the table.

+
13th May 20103.4.1 +

[ADDED] Check for link to index page added to link generation function. Saves having to call the database when linking to the index page, resulting in lighter usage of server resources.

+

[ADDED] Automatic redirection of variants of index page URIs added (index.php, index.php?main_page=index). Instead of having a default URI mapping for the index page, all links to the index page are now handled in code, with all links automatically being redirected to the root of the store (i.e. the value of DIR_WS_CATALOG, e.g. / or /shop).

+

[UPDATED] All canonical URIs are now absolute URIs. In 3.4.0 they were relative to the site's root, now they are full URIs (they include the http URI scheme and the site's domain name).

+

[UPDATED] Any previously added mappings for the index page will be automatically made into historical URIs as they are no longer needed.

+

[UPDATED] New function added so that when Ceon URI Mapping is redirecting to another URI, the query string is rebuilt with any array or multi-dimensional array parameters intact. (Standard Zen Cart function doesn't support passing arrays). To minimise server impact the functions are only loaded if needed.

+

[UPDATED] Support added for building canonical URIs for pages which are loaded by posting a HTML form which uses the GET method. Filters on product listing pages etc. use a form to build their URIs; previously this would result in each filter creating a new URI without a canonical hint tag. Now all pages always have a canonical tag, regardless of how the URI is built, by populating the canonical URI variable even when the only things that have changed in the URI are the filtering parameters.

+

[BUGFIX] The default index page mapping added in 3.4.0 meant that any manufacturer product listing page which didn't have a static URI mapping specified/generated redirected to the index page when trying to add a product to the cart directly from the listing, meaning that the add to cart functionality was broken. This redirection no longer takes place, so the add to cart functionality has been restored.

+

[UPDATED] FAQ added to documentation to point to the information needed to get some third party modules working when Ceon URI Mapping is enabled. Information about what needs to be looked at made clearer and more comprehensive.

+
8th May 20103.4.0 +

[ADDED] Canonical URI support added! Any page with a static URI will now have a canonical URI tag added to the page's header. This will minimise “duplicate content” reports as it tells the search engines that multiple pages should be treated as one, without actually redirecting the visitor.

+

The canonical URI hint causes any parameters added to the URI to be ignored, thereby preventing duplicate content reports when Zen Cart adds its session ID (?zenid=xxx) to the URI or when paged, sorted or filtered results listings add their parameters (e.g. if a page had a ?sort=2a parameter) etc.

+

[ADDED] Module now tracks whether or not the user has just selected a different language. If so, then instead of simply appending “&language” to the end of the URI, the module will automatically redirect to the specific URI mapping for the page for the newly selected language.

+

[ADDED] If the URI uses a different language from the session, the session is switched to use the new language. This means that the page will display in the language that the URI is specifically defined for. I.e. if a site has a page in two different languages and each has a translated URI (E.g. /chairs and /chaises), the session language will correctly reflect the URI being displayed in the address bar. This greatly enhances the language handling of Zen Cart!

+

[ADDED] Support for mapping hard-coded links containing “index.php?main_page=” added. EZ-Page alternative URLs use this format so they are now remapped to the appropriate static URI mappings.

+

[ADDED] Improved support for IIS ISAPI rewrite module added. URI Mapping module tries to use the original URI the IIS ISAPI rewrite module provides.

+

[UPDATED] The “cPath” query string parameter is now removed from the URI if the current category is simply the product's master category, as the category path information can be regenerated when the static URI is loaded. Results in neater URIs, and less “duplication” of pages as seen by the search engines.

+

[UPDATED] main_page query string parameter is no longer part of the main check to see whether or not an attempt should be made to identify and map the URI as some forms using the GET method provide the main_page variable. Main check is now made against the name of the script being loaded (that it doesn't include index.php).

+

[BUGFIX] Generated links to manufacturers weren't using the URI mapping entered for the manufacturer because of incorrect pattern matching in the zen_href_link function as modified for this module.

+

[BUGFIX] Typo in code to look up current URI mappings for a product was breaking the product preview info admin page when it was accessed directly from the “Preview” icon in the Categories/Products admin section. All admin/includes/modules/*/preview_info.php files need updating!

+

[BUGFIX] The product_id query string parameter is no longer removed if it includes attribute information, so that the attributes can be correctly pre-selected when clicking on a product in the shopping cart.

+

[BUGFIX] Support for arrays (inc multidimensional arrays) in query string added using new Array Query Parameter function.

+

[UPDATED] Extraneous ampersand character could be left over in the URI when removing used query string parameters from the URI.

+

[UPDATED] Example rewrite rules updated to support up to 5 characters for file extensions, rather than 4. This fixes the problem of 404 error handling pages with .shtml file extensions being processed by the rewrite rule, which was then causing Zen Cart to run and record the URI that generated the 404 in Zen Cart's “Who's online” database. Paths to missing files on the server will no longer be processed by Zen Cart and so won't show up in the “Who's online” database.

+

[ADDED] Sample modified core files for Zen Cart 1.3.9a added.

+

[UPDATED] Improvements to the documentation to make a few things clearer and information easier to find.

+
17th September 20093.2.4 +

[BUGFIX] When a URI was being mapped to a page for a different language from the default/current session's language, the module wasn't changing the language for the session to the language being mapped to.

+

[BUGFIX] Certain Zen Cart links to the product info page(s) don't use the category cPath variable like all the other links to these pages. Module updated to set this variable if it isn't set and therefore prevent these links breaking.

+
27th June 20093.2.3 +

[ADDED] Ability to exclude specific files added to ensure 100% compatibility with third party modules that have files which load up the Zen Cart system directly so they can process payment callbacks etc. To ensure that these files aren't adversely affected by the Ceon URI Mapping module, they should be excluded from being processed by the module by entering the file names in the configuration utility.

+

[UPDATED] Default URI Mapping is now added to map the dynamic URI for the store's home page (index.php?main_page=index) to its base static URI (e.g. / or /shop etc.) - avoids possible duplicated content issues with search engines.

+

[UPDATED] Extra checks added to minimise the number of situations in which the cPath query string parameter is appended to static URIs for products. The links to a product page for a product with a static URI are no longer checked against the cPath value for the global environment but are checked against the value the link function is called with. This should result in more matches and therefore the removal of the cPath variable more frequently, giving cleaner URIs.

+

[BUGFIX] A 404 page was being incorrectly displayed when the store's base URI was accessed with a query string appended. The index page is now displayed as expected.

+

[BUGFIX] Pagination, sorting and filtering functionality wasn't working when browsing by manufacturer as the module was clearing the query string parameters used to control this functionality.

+

[BUGFIX] Fixed a problem wherein an endless redirection loop could occur if a static URI used the main_page query string parameter.

+

[ADDED] Information about new Excluded Files functionality added to the documentation.

+
31st March 20093.2.2 +

[BUGFIX] Incorrect logic added in version 3.2.1 meant that some URIs for the index page were bringing up the page_not_found page, if the query string didn't have "main_page=index" in it and the store has Zen Cart installed in a subdirectory rather than the root directory of the site.

+
27th March 20093.2.1 +

[BUGFIX] The module was not compatible with Zen Cart's page_not_found/404 functionality.

+

[UPDATED] Default Whitespace Replacement Character for auto-generated URIs changed from a single underscore to a dash. (The primary reasons for this are that dashes are easier to find on the keyboard and type in for most people and dashes are more clearly read in underlined links).

+

[UPDATED] Documentation updated to use a single dash as the Whitespace Replacement Character.

+

[UPDATED] Documentation updated to make various information a little bit clearer and/or more specific.

+
17th March 20093.2.0 +

[ADDED] Ability to specify the current URI mapping for a manufacturer directly in the admin added.

+

[UPDATED] Support for mapping manufacturers to static URIs added to link generation and page identification functionality.

+

[UPDATED] Database format updated to use a separate field for query string parameters when setting up mappings for other Zen Cart pages.

+

[BUGFIX] For versions 3.0.0 to 3.0.2, the links to the home page could go to a category or product page instead of the home page as the module was using an ambiguous SQL query.

+

[BUGFIX] Static URIs for categories were overriding the manufacturer display functionality of Zen Cart as they have a similar dynamic URI structure. Fixed by new manufacturer handling code.

+

[UPDATED] Documentation completely rewritten. Installation documentation made simpler, layout of documentation made clearer, table of contents added to the configuration documentation.

+

[ADDED] New section added to the configuration documentation to help with setting up a working rewrite rule for the server and information about the new format for setting query string parameters added.

+
27th Feburary 20093.0.2 +

[BUGFIX] Format specifier for seconds part of date component was the wrong case, causing an illegal time to be generated. This caused an SQL error in stricter versions of MySQL.

+

[BUGFIX] Documentation regarding example rewrite rules updated to include a rule exclusion for the editors directory. Without this exclusion only the standard Zen Cart text editor could be used in the admin!

+

[UPDATED] Code added to init script to set the value of $PHP_SELF in certain circumstances, to prevent the rewrite rules interfering with the zen_href_link function in some very particular cases.

+
19th Feburary 20093.0.1 +

[BUGFIX] The standard Zen Cart initsystem initialises the languages system at one of the later stages, meaning that the language ID is set too late in the initsystem process for this module to work correctly when a non-human visits the site. The languages init code is now run in the URI Mapping initsystem script to fix this (major) problem. ALL users should upgrade.

+
16th Feburary 20093.0.0 +

[UPDATED] Completely new database structure implemented.

+

[ADDED] Idea of “Current” static URI made central concept behind handling of URIs in module. All admin URI functionality now inserts/updates mappings for the “Current” URI only.

+

[UPDATED] Ability to “delete” URI mappings removed. Instead, any “old” URI mappings are marked as no longer being current.

+

[ADDED] Historical URI mapping support added. “Deleted” URI mappings still point towards their original subject, by redirecting the user to the “Current” URI for the subject. URI mappings being updated don't have their old URI mappings retained; however, they can be added [back in] to the database manually if necessary.

+

[ADDED] Support for all Zen Cart pages added to the database, the module's code and its modifications to the zen_href_link function. Any Zen Cart page can now have a static URI, which will be linked to instead of the standard Zen Cart dynamic URI!

+

[ADDED] Automatic redirection of dynamic URIs to their current, active URI mapping added to URI Mapping. Any attempt to use a dynamic URI for a page which has a current static URI will result in the user being redirected to the current (static) URI.

+

[ADDED] Ability to specify the HTTP Status Code to be used for the redirection to an alternative URI added. Allows controlling of exact type of redirection (temporary/permanent etc.).

+

[ADDED] Support for pages related to the product info pages added. Reviews and Tell-A-Friend sections are now automatically made “subsections” of the product's main info page, by appending some specific URI parts to the product info page's static URI. These specific URI parts are defined in the admin languages file.

+

[UPDATED] Dynamic query string variable is no longer appended to static URI links for subcategories or links to product info pages (for those which aren't a link to a linked product). Results in cleaner, “nicer” URIs!

+

[BUGFIX] Missing filename definitions added for several product types. Links to products of these types now correctly use any static URI defined for the product.

+

[UPDATED] Documentation updated with information about new functionality and the methodology behind the new way the module works.

+
13th Feburary 20092.0.3 +

[BUGFIX] URIs being output for links on stores with a directory prefix other than “/” were incorrectly having the directory prefix prepended to the URIs!

+
21st January 20092.0.2 +

[BUGFIX] Module wasn't being run on the store side on servers which have an unexpected SCRIPT_NAME value. Updated to only use value of REQUEST_URI, SCRIPT_NAME is no longer used.

+

[BUGFIX] String class wasn't fully compatible with PHP 4.x.

+
14th January 20092.0.1

First public release!

+

[UPDATED] Installation documentation updated.

+
8th December 20082.0.0 +

[UPDATED] Complete rewrite - released for testing.

+

[ADDED] Multi-language support added. Each Product/Category/EZ-Page can now have a different URI mapping for each language used by the store.

+

[ADDED] Support for auto-generation of URI mappings added. Includes support for UTF-8 and transliteration - wow!

+

[ADDED] Full admin configuration utility added for URI mapping auto-generation functionality.

+
10th November 20081.2.0 +

[BUGFIX] Sometimes the session ID handling caused the URI parsing to fail as it left a trailing ampersand on the end of links.

+
25th September 20081.0.0 +

[ADDED] Support for all standard product types added (previously all products were displayed using the standard product type page/template instead of their custom page/template). Supported types now include document_general, document_product, product, product_book, product_free_shipping and product_music.

+
30th August 20081.0.0alpha1 +

Initial Release to private client of JKED.

+
+ +

Back to top

+ + + +
+
+ + + + + \ No newline at end of file diff --git a/DOKU ENGLISCH/sections/support.html b/DOKU ENGLISCH/sections/support.html new file mode 100644 index 0000000..6e90c8c --- /dev/null +++ b/DOKU ENGLISCH/sections/support.html @@ -0,0 +1,78 @@ + + + + + .:: Ceon :: Zen Cart :: Module :: Ceon URI Mapping ::. + + + + + + + + + + + + + + + +
+
+ +

Ceon URI Mapping

+ + + +

Support

+ +

Free support is available through the contribution's forum on the Zen Cart website.

+

Free support from Ceon is also included with a purchase of Ceon's URI Mappings Manager software.

+

You can also contact Ceon for direct, personal support. We have a minimum charge of £15 or a “Small Job Support Charge” of £23 - no-one ever has ever had to pay more than that for us to fix any problems they've had.

+

Of course, with our support charge, a full tax invoice for your business records is supplied, to write the charge off against tax as a business expense.

+

Your question may already have been anticipated, so for a quicker solution please check the FAQs first!

+ +

Back to top

+ + + +
+
+ + + + + \ No newline at end of file diff --git a/DOKU ENGLISCH/sections/upgrading.html b/DOKU ENGLISCH/sections/upgrading.html new file mode 100644 index 0000000..6853a70 --- /dev/null +++ b/DOKU ENGLISCH/sections/upgrading.html @@ -0,0 +1,1961 @@ + + + + + .:: Ceon :: Zen Cart :: Module :: Ceon URI Mapping ::. + + + + + + + + + + + + + + + +
+
+ +

Ceon URI Mapping

+ + + + +

Downloading the Latest Version

+

The latest version of the module distribution can always be found on its website, http://ceon.net/software/business/zen-cart/uri-mapping/downloads.

+ +

Upgrading

+

Simply follow the instructions for the version of Ceon URI Mapping already installed..

+ +
    +
  1. Upgrading to Version 5.1.0 from Version 5.0.1
  2. +
  3. Upgrading to Version 5.1.0 from Version 5.0.0
  4. +
  5. Upgrading to Version 5.1.0 from Version 4.5.x
  6. +
  7. Upgrading to Version 5.1.0 from Version 4.4.x
  8. +
  9. Upgrading to Version 5.1.0 from Version 4.2.x
  10. +
  11. Upgrading to Version 5.1.0 from Version 4.0.6 - 4.0.8
  12. +
  13. Upgrading to Version 5.1.0 from Version 4.0.0 - 4.0.5
  14. +
  15. Upgrading to Version 5.1.0 from Version 2.x/3.x
  16. +
+ + +

Upgrading to Ceon URI Mapping 5.1.0 from Ceon URI Mapping 5.0.1

+

It's simple to upgrade to version 5.1.0 from 5.0.1.

+ +
    +
  1. +

    Copy the New/Updated Files across

    + +

    These are the new/updated files which make up this module. Copy them all into their respective folders in the Zen Cart installation, overwriting the files from the previously installed version.

    + +
    New/Updated files for the Admin directory
    + +

    Most Zen Cart stores have their admin directory renamed from the default of “admin”.

    +

    Copy all of the folders and files from the files/admin folder into the store's “admin” directory, whatever it is called.

    +

    The files are already in the correct directory structure, so a single drag-and-drop of the folders/files in the files/admin folder into the “admin” directory for the store will put the files in the correct locations.

    +

    Please do not copy the files individually - there's simply no need - doing so often results in files being missed out!

    + +
      +
    • admin/includes/classes/observers/class.CeonURIMappingAdminCopyObserver.php
    • +
    • admin/includes/classes/observers/class.CeonURIMappingAdminProductsObserver.php
    • +
    • admin/includes/classes/observers/class.CeonURIMappingDeleteCategoriesObserver.php
    • +
    • admin/includes/classes/observers/class.CeonURIMappingDeleteProductsObserver.php
    • +
    • admin/includes/classes/observers/class.CeonURIMappingLinkBuildAdmin.php
    • +
    • admin/includes/classes/class.CeonURIMappingAdminCategoryPages.php
    • +
    • admin/includes/classes/class.CeonURIMappingAdminProductPages.php
    • +
    • admin/includes/classes/class.CeonURIMappingConfigUtility.php
    • +
    • admin/includes/classes/class.CeonURIMappingInstallationCheck.php
    • +
    • admin/includes/classes/class.CeonURIMappingInstallOrUpgrade.php
    • +
    • admin/includes/classes/class.CeonURIMappingTabbedPanelAdminInterface.php
    • +
    • admin/includes/classes/class.CeonURIMappingVersion.php
    • +
    • admin/includes/ceon_uri_mapping_javascript.php
    • +
    • admin/includes/init_includes/init_ceon_product_collect_info.php
    • +
    • admin/includes/auto_loaders/config.ceon_uri_mapping_admin_copy_observer.php
    • +
    + + +
    Updated files for the main store directory
    + +

    Copy the includes folder from the files folder into the store's main directory.

    +

    The files are already in the correct directory structure, so a single drag-and-drop of the folder into the root directory for the store will put the files in the correct locations.

    +

    Please do not copy the files individually - there's simply no need - doing so often results in files being missed out!

    +

    Warning: Be careful NOT to copy the files from the files/includes folder into the store's admin/includes directory, they go in the includes directory which is alongside, not inside the store's admin directory.

    + +
      +
    • includes/classes/observers/class.ceon_ask_a_question.php
    • +
    • includes/classes/observers/class.ceon_canonical.php
    • +
    • includes/classes/observers/class.ceon_uri_mapping_link_build.php
    • +
    • includes/classes/transliteration/x00.php
    • +
    • includes/classes/transliteration/x03.php
    • +
    • includes/classes/transliteration/x04.php
    • +
    • includes/classes/transliteration/x4e.php
    • +
    • includes/classes/transliteration/x06.php
    • +
    • includes/classes/transliteration/x14.php
    • +
    • includes/classes/transliteration/x15.php
    • +
    • includes/classes/transliteration/x21.php
    • +
    • includes/classes/class.CeonString.php
    • +
    • includes/classes/class.CeonURIMappingAdminEZPages.php
    • +
    • includes/classes/class.CeonURIMappingHandler.php
    • +
    • includes/classes/class.CeonURIMappingHandlerBase.php
    • +
    • includes/classes/class.CeonURIMappingHREFLinkBuilder.php
    • +
    • includes/auto_loaders/config.ceon_ask_a_question.php
    • +
    • includes/auto_loaders/config.ceon_uri_mapping.php
    • +
    + + +
    Installing to Zen Cart 1.5.7
    + +

    Copy all of the folders and files from the files/zen_cart_version_specific/v1.5.7/admin folder into the store's “admin” directory, whatever it is called.

    +

    The files are already in the correct directory structure, so a single drag-and-drop of the folders/files in the files/admin folder into the “admin” directory for the store will put the files in the correct locations.

    +

    Please do not copy the files individually - there's simply no need - doing so often results in files being missed out!

    + +
      +
    • admin/includes/classes/observers/class.CeonURIMappingJavaScriptLoader.php
    • +
    • admin/includes/auto_loaders/config.ceon_uri_mapping_admin_javascript_loader.php
    • +
    +
  2. + +
  3. +

    Remove the old file used by the previously installed version of the module

    + +

    Since the module had been rewritten (for Zen Cart Version 1.5.5 and above) to minimize core file modification, many of the old files were no longer used and needed to be removed/modified. The installer will also advise of file modifications that are to be removed in support of this version of the module.

    + +
    File to be deleted from the main store directory
    + +
      +
    • includes/extra_datafiles/ceon_uri_mapping_sessions_define.php    (Zen Cart 1.3.9c and above)
    • +
    +
  4. + +
  5. +

    Automatically update the database and configuration

    + +

    This software comes with some intelligent upgrade and error checking functionality which makes it easy to keep the database and configuration up to date.

    + +
      +
    • +

      Go to Modules > Ceon URI Mapping (SEO) Config in the Zen Cart Admin and the module will be updated automagically!

      +
    • +
    +
  6. + +
  7. +

    Run the Installation Check

    + +

    The installation check will examine all the core files that must be modified for Ceon URI Mapping to work optimally, and warn you if any of the modifications are present that should be removed, missing or out-of-date, again giving information on what you should do!

    + +

    A quick glance at this admin page should help you identify and fix any problems with the installation quickly and easily!

    + +
      +
    • +

      Go to Modules > Ceon URI Mapping (SEO) Config in the Zen Cart Admin.

      +
    • +
    • +

      Then go to the Installation Check tab and click on the link to open the Installation Check utility page.

      +
    • +
    • +

      The module will now automatically carry out the installation check.

      +
    • +
    • +

      If any errors are listed, follow the instructions given by the software.

      +
    • +
    +
  8. + +
  9. +

    That's it!

    + +

    Told you it was simple to upgrade!

    +
  10. +
+ +

Back to top

+ + +

Upgrading to Ceon URI Mapping 5.1.0 from Ceon URI Mapping 5.0.0

+

It's simple to upgrade to version 5.1.0 from 5.0.x.

+ +
    +
  1. +

    Copy the New/Updated Files across

    + +

    These are the new/updated files which make up this module. Copy them all into their respective folders in the Zen Cart installation, overwriting the files from the previously installed version.

    + +
    New/Updated files for the Admin directory
    + +

    Most Zen Cart stores have their admin directory renamed from the default of “admin”.

    +

    Copy all of the folders and files from the files/admin folder into the store's “admin” directory, whatever it is called.

    +

    The files are already in the correct directory structure, so a single drag-and-drop of the folders/files in the files/admin folder into the “admin” directory for the store will put the files in the correct locations.

    +

    Please do not copy the files individually - there's simply no need - doing so often results in files being missed out!

    + +
      +
    • admin/includes/classes/observers/class.CeonURIMappingAdminCopyObserver.php
    • +
    • admin/includes/classes/observers/class.CeonURIMappingAdminProductsObserver.php
    • +
    • admin/includes/classes/observers/class.CeonURIMappingDeleteCategoriesObserver.php
    • +
    • admin/includes/classes/observers/class.CeonURIMappingDeleteProductsObserver.php
    • +
    • admin/includes/classes/observers/class.CeonURIMappingLinkBuildAdmin.php
    • +
    • admin/includes/classes/class.CeonURIMappingAdminCategoryPages.php
    • +
    • admin/includes/classes/class.CeonURIMappingAdminProductPages.php
    • +
    • admin/includes/classes/class.CeonURIMappingConfigUtility.php
    • +
    • admin/includes/classes/class.CeonURIMappingInstallationCheck.php
    • +
    • admin/includes/classes/class.CeonURIMappingInstallOrUpgrade.php
    • +
    • admin/includes/classes/class.CeonURIMappingTabbedPanelAdminInterface.php
    • +
    • admin/includes/classes/class.CeonURIMappingVersion.php
    • +
    • admin/includes/init_includes/init_ceon_product_collect_info.php
    • +
    • admin/includes/auto_loaders/config.ceon_uri_mapping_admin_copy_observer.php
    • +
    • admin/includes/ceon_uri_mapping_javascript.php
    • +
    + + +
    Updated files for the main store directory
    + +

    Copy the includes folder from the files folder into the store's main directory.

    +

    The files are already in the correct directory structure, so a single drag-and-drop of the folder into the root directory for the store will put the files in the correct locations.

    +

    Please do not copy the files individually - there's simply no need - doing so often results in files being missed out!

    +

    Warning: Be careful NOT to copy the files from the files/includes folder into the store's admin/includes directory, they go in the includes directory which is alongside, not inside the store's admin directory.

    + +
      +
    • includes/classes/observers/class.ceon_ask_a_question.php
    • +
    • includes/classes/observers/class.ceon_canonical.php
    • +
    • includes/classes/observers/class.ceon_uri_mapping_link_build.php
    • +
    • includes/classes/transliteration/x00.php
    • +
    • includes/classes/transliteration/x03.php
    • +
    • includes/classes/transliteration/x04.php
    • +
    • includes/classes/transliteration/x4e.php
    • +
    • includes/classes/transliteration/x06.php
    • +
    • includes/classes/transliteration/x14.php
    • +
    • includes/classes/transliteration/x15.php
    • +
    • includes/classes/transliteration/x21.php
    • +
    • includes/classes/class.CeonString.php
    • +
    • includes/classes/class.CeonURIMappingHandlerBase.php
    • +
    • includes/classes/class.CeonURIMappingHREFLinkBuilder.php
    • +
    • includes/classes/class.CeonURIMappingAdminEZPages.php
    • +
    • includes/classes/class.CeonURIMappingHandler.php
    • +
    • includes/init_includes/init_ceon_uri_mapping_sessions.php
    • +
    • includes/extra_datafiles/ceon_uri_mapping_sessions_define.php (removed below)
    • +
    • includes/auto_loaders/config.ceon_ask_a_question.php
    • +
    • includes/auto_loaders/config.ceon_uri_mapping.php
    • +
    + + +
    Installing to Zen Cart 1.5.7
    + +

    Copy all of the folders and files from the files/zen_cart_version_specific/v1.5.7/admin folder into the store's “admin” directory, whatever it is called.

    +

    The files are already in the correct directory structure, so a single drag-and-drop of the folders/files in the files/admin folder into the “admin” directory for the store will put the files in the correct locations.

    +

    Please do not copy the files individually - there's simply no need - doing so often results in files being missed out!

    + +
      +
    • admin/includes/classes/observers/class.CeonURIMappingJavaScriptLoader.php
    • +
    • admin/includes/auto_loaders/config.ceon_uri_mapping_admin_javascript_loader.php
    • +
    +
  2. + +
  3. +

    Remove the old file used by the previously installed version of the module

    + +

    Since the module had been rewritten (for Zen Cart Version 1.5.5 and above) to minimize core file modification, many of the old files were no longer used and needed to be removed/modified. The installer will also advise of file modifications that are to be removed in support of this version of the module.

    + +
    File to be deleted from the main store directory
    + +
      +
    • includes/extra_datafiles/ceon_uri_mapping_sessions_define.php    (Zen Cart 1.3.9c and above)
    • +
    +
  4. + +
  5. +

    Automatically update the database and configuration

    + +

    This software comes with some intelligent upgrade and error checking functionality which makes it easy to keep the database and configuration up to date.

    + +
      +
    • +

      Go to Modules > Ceon URI Mapping (SEO) Config in the Zen Cart Admin and the module will be updated automagically!

      +
    • +
    +
  6. + +
  7. +

    Run the Installation Check

    + +

    The installation check will examine all the core files that must be modified for Ceon URI Mapping to work optimally, and warn you if any of the modifications are present that should be removed, missing or out-of-date, again giving information on what you should do!

    + +

    A quick glance at this admin page should help you identify and fix any problems with the installation quickly and easily!

    + +
      +
    • +

      Go to Modules > Ceon URI Mapping (SEO) Config in the Zen Cart Admin.

      +
    • +
    • +

      Then go to the Installation Check tab and click on the link to open the Installation Check utility page.

      +
    • +
    • +

      The module will now automatically carry out the installation check.

      +
    • +
    • +

      If any errors are listed, follow the instructions given by the software.

      +
    • +
    +
  8. + +
  9. +

    That's it!

    + +

    Told you it was simple to upgrade!

    +
  10. +
+ +

Back to top

+ + +

Upgrading to Ceon URI Mapping 5.1.0 from Ceon URI Mapping 4.5.x

+

It's simple to upgrade to version 5.1.0 from 4.5.x.

+ +
    +
  1. +

    Remove the old files used by the previously installed version of the module

    + +

    Since the module has been rewritten (for Zen Cart Version 1.5.5 and above) to minimize core file modification, many of the old files are no longer used and need to be removed/modified. The installer will advise of file modifications that are to be removed in support of this version of the module.

    + +
    Files to be deleted from the main store directory
    + +
      +
    • includes/auto_loaders/overrides/init_canonical.php  (Zen Cart 1.5.4 and above)
    • +
    • includes/auto_loaders/overrides/init_sessions.php    (Zen Cart 1.3.9c and above)
    • +
    • includes/auto_loaders/overrides/init_currencies.php  (Zen Cart 1.3.8a and above)
    • +
    • includes/classes/class.String.php
    • +
    +
  2. + +
  3. +

    Copy the New/Updated Files across

    + +

    These are the new/updated files which make up this module. Copy them all into their respective folders in the Zen Cart installation, overwriting the files from the previously installed version.

    + +
    New/Updated files for the Admin directory
    + +

    Most Zen Cart stores have their admin directory renamed from the default of “admin”.

    +

    Copy all of the folders and files from the files/admin folder into the store's “admin” directory, whatever it is called.

    +

    The files are already in the correct directory structure, so a single drag-and-drop of the folders/files in the files/admin folder into the “admin” directory for the store will put the files in the correct locations.

    +

    Please do not copy the files individually - there's simply no need - doing so often results in files being missed out!

    + +
      +
    • admin/includes/classes/class.CeonURIMappingAdminCategoryPages.php
    • +
    • admin/includes/classes/class.CeonURIMappingAdminEZPagePages.php
    • +
    • admin/includes/classes/class.CeonURIMappingAdminManufacturerPages.php
    • +
    • admin/includes/classes/class.CeonURIMappingAdminProductPages.php
    • +
    • admin/includes/classes/class.CeonURIMappingConfigUtility.php
    • +
    • admin/includes/classes/class.CeonURIMappingInstallationCheck.php
    • +
    • admin/includes/classes/class.CeonURIMappingInstallOrUpgrade.php
    • +
    • admin/includes/classes/class.CeonURIMappingTabbedPanelAdminInterface.php
    • +
    • admin/includes/classes/class.CeonURIMappingVersion.php
    • +
    • admin/includes/classes/observers/class.CeonURIMappingAdminCategoriesObserver.php
    • +
    • admin/includes/classes/observers/class.CeonURIMappingAdminCopyObserver.php
    • +
    • admin/includes/classes/observers/class.CeonURIMappingAdminProductsObserver.php
    • +
    • admin/includes/classes/observers/class.CeonURIMappingDeleteCategoriesObserver.php
    • +
    • admin/includes/classes/observers/class.CeonURIMappingDeleteProductsObserver.php
    • +
    • admin/includes/classes/observers/class.CeonURIMappingLinkBuildAdmin.php
    • +
    • admin/includes/extra_datafiles/ceon_uri_mapping_filenames.php
    • +
    • admin/includes/extra_datafiles/ceon_uri_mapping_product_pages.php
    • +
    • admin/includes/init_includes/init_ceon_category_collect_info.php
    • +
    • admin/includes/init_includes/init_ceon_ezpages_collect_info.php
    • +
    • admin/includes/init_includes/init_ceon_manufacturers_collect_info.php
    • +
    • admin/includes/init_includes/init_ceon_product_collect_info.php
    • +
    • admin/includes/functions/extra_functions/ceon_uri_mapping_admin_page_reg.php
    • +
    • admin/includes/languages/english/extra_definitions/ceon_uri_mapping.php
    • +
    • admin/includes/languages/english/ceon_uri_mapping_admin_pages.php
    • +
    • admin/includes/languages/english/ceon_uri_mapping_category_pages.php
    • +
    • admin/includes/languages/english/ceon_uri_mapping_config.php
    • +
    • admin/includes/languages/english/ceon_uri_mapping_default_uri_parts.php
    • +
    • admin/includes/languages/english/ceon_uri_mapping_ezpage_pages.php
    • +
    • admin/includes/languages/english/ceon_uri_mapping_installation_check.php
    • +
    • admin/includes/languages/english/ceon_uri_mapping_manufacturer_pages.php
    • +
    • admin/includes/languages/english/ceon_uri_mapping_product_pages.php
    • +
    • admin/includes/languages/english/ceon_uri_mapping_tabbed_panel_admin_interface.php
    • +
    • admin/includes/auto_loaders/config.ceon_uri_mapping.php
    • +
    • admin/includes/auto_loaders/config.ceon_uri_mapping_admin_categories_observer.php
    • +
    • admin/includes/auto_loaders/config.ceon_uri_mapping_admin_category_delete_observer.php
    • +
    • admin/includes/auto_loaders/config.ceon_uri_mapping_admin_category_info.php
    • +
    • admin/includes/auto_loaders/config.ceon_uri_mapping_admin_copy_observer.php
    • +
    • admin/includes/auto_loaders/config.ceon_uri_mapping_admin_ezpages_info.php
    • +
    • admin/includes/auto_loaders/config.ceon_uri_mapping_admin_manufacturers_info.php
    • +
    • admin/includes/auto_loaders/config.ceon_uri_mapping_admin_product_delete_observer.php
    • +
    • admin/includes/auto_loaders/config.ceon_uri_mapping_admin_product_info.php
    • +
    • admin/includes/auto_loaders/config.ceon_uri_mapping_admin_products_observer.php
    • +
    • admin/includes/ceon_uri_mapping_javascript.php
    • +
    • admin/ceon_uri_mapping_config.php
    • +
    • admin/ceon_uri_mapping_installation_check.php
    • +
    + +
    Additional File for Zen Cart 1.3.x
    + +

    Copy the file from the files/additional_file_for_1.3.x/admin folder into the store's “admin” directory, whatever it is called.

    + +
      +
    • admin/includes/boxes/extra_boxes/ceon_uri_mapping_modules_dhtml.php
    • +
    + + +
    Updated files for the main store directory
    + +

    Copy the includes folder from the files folder into the store's main directory.

    +

    The files are already in the correct directory structure, so a single drag-and-drop of the folder into the root directory for the store will put the files in the correct locations.

    +

    Please do not copy the files individually - there's simply no need - doing so often results in files being missed out!

    +

    Warning: Be careful NOT to copy the files from the files/includes folder into the store's admin/includes directory, they go in the includes directory which is alongside, not inside the store's admin directory.

    + +
      +
    • includes/classes/transliteration/x00.php
    • +
    • includes/classes/transliteration/x03.php
    • +
    • includes/classes/transliteration/x04.php
    • +
    • includes/classes/transliteration/x4e.php
    • +
    • includes/classes/transliteration/x06.php
    • +
    • includes/classes/transliteration/x14.php
    • +
    • includes/classes/transliteration/x15.php
    • +
    • includes/classes/transliteration/x21.php
    • +
    • includes/classes/class.CeonString.php
    • +
    • includes/classes/class.CeonURIMappingAdmin.php
    • +
    • includes/classes/class.CeonURIMappingAdminCategories.php
    • +
    • includes/classes/class.CeonURIMappingAdminCategoriesProducts.php
    • +
    • includes/classes/class.CeonURIMappingAdminEZPages.php
    • +
    • includes/classes/class.CeonURIMappingAdminManufacturers.php
    • +
    • includes/classes/class.CeonURIMappingAdminProducts.php
    • +
    • includes/classes/class.CeonURIMappingDBLookup.php
    • +
    • includes/classes/class.CeonURIMappingHandler.php
    • +
    • includes/classes/class.CeonURIMappingHandlerBase.php
    • +
    • includes/classes/class.CeonURIMappingHREFLinkBuilder.php
    • +
    • includes/classes/class.Transliteration.php
    • +
    • includes/classes/observers/class.ceon_ask_a_question.php
    • +
    • includes/classes/observers/class.ceon_uri_mapping_link_build.php
    • +
    • includes/classes/observers/class.ceon_canonical.php
    • +
    • includes/extra_datafiles/ceon_uri_mapping_filenames.php
    • +
    • includes/extra_datafiles/ceon_uri_mapping_product_pages.php
    • +
    • includes/init_includes/init_ceon_currencies.php
    • +
    • includes/init_includes/init_ceon_uri_mapping_sessions.php
    • +
    • includes/auto_loaders/config.ceon_ask_a_question.php
    • +
    • includes/auto_loaders/config.ceon_canonical.php
    • +
    • includes/auto_loaders/config.ceon_currencies.php
    • +
    • includes/auto_loaders/config.ceon_uri_mapping.php
    • +
    + + +
    Installing to Zen Cart 1.5.7
    + +

    Copy all of the folders and files from the files/zen_cart_version_specific/v1.5.7/admin folder into the store's “admin” directory, whatever it is called.

    +

    The files are already in the correct directory structure, so a single drag-and-drop of the folders/files in the files/admin folder into the “admin” directory for the store will put the files in the correct locations.

    +

    Please do not copy the files individually - there's simply no need - doing so often results in files being missed out!

    + +
      +
    • admin/includes/classes/observers/class.CeonURIMappingJavaScriptLoader.php
    • +
    • admin/includes/auto_loaders/config.ceon_uri_mapping_admin_javascript_loader.php
    • +
    +
  4. + +
  5. +

    Modify an additional Zen Cart Core File

    + +

    Based on your Zen Cart Version (1.5.4 and below) an additional core Zen Cart file should be modified, to add the new support for outputting static URIs instead of dynamic URIs in Zen Cart's admin.

    + +
      +
    • +

      It is likely that this file has not been modified for the store already, in which case it should be possible to simply back up the file and then overwrite the file with the pre-modified sample file from this distribution, for the version of Zen Cart being used by the store.

      +
    • +
    • +

      However, if the core file has also been modified for the store for other third party modules, the changes within the sample file included in this distribution must be applied carefully to the core file.

      + +

      The changes are clearly marked within the sample file in the distribution and should be easy enough to copy across, especially if a “diff” software package (such as the free WinMerge or the excellent, commercial, Beyond Compare) is used.

      + +

      Instructions on how to copy across the modifications necessary for this module - to the core file which has previously been modified - can be found in this FAQ.

      + +
    • +
    + +
    Modified core file for the Admin directory in Zen Cart 1.5.4 and below
    + +

    Please Note: If copying the file across, and the admin folder for the store is not named “admin”, then care must be taken to place the file from within the modified_core_files/ZC-version/admin folder into the store's admin folder.

    + +
      +
    • admin/includes/functions/html_output.php
    • +
    +
  6. + +
  7. +

    Automatically update the database and configuration

    + +

    This software comes with some intelligent upgrade and error checking functionality which makes it easy to keep the database and configuration up to date.

    + +
      +
    • +

      Go to Modules > Ceon URI Mapping (SEO) Config in the Zen Cart Admin and the module will be updated automagically!

      +
    • +
    +
  8. + +
  9. +

    Run the Installation Check

    + +

    The installation check will examine all the core files that must be modified for Ceon URI Mapping to work optimally, and warn you if any of the modifications are present that should be removed, missing or out-of-date, again giving information on what you should do!

    + +

    A quick glance at this admin page should help you identify and fix any problems with the installation quickly and easily!

    + +
      +
    • +

      Go to Modules > Ceon URI Mapping (SEO) Config in the Zen Cart Admin.

      +
    • +
    • +

      Then go to the Installation Check tab and click on the link to open the Installation Check utility page.

      +
    • +
    • +

      The module will now automatically carry out the installation check.

      +
    • +
    • +

      If any errors are listed, follow the instructions given by the software.

      +
    • +
    +
  10. + +
  11. +

    That's it!

    + +

    Told you it was simple to upgrade!

    +
  12. +
+ +

Back to top

+ + +

Upgrading to Ceon URI Mapping 5.1.0 from Ceon URI Mapping 4.4.x

+

It's simple to upgrade to version 5.1.0 from 4.4.x.

+ +
    +
  1. +

    Remove the old files used by the previously installed version of the module

    + +

    Since the module has been rewritten (for Zen Cart Version 1.5.5 and above) to minimize core file modification, many of the old files are no longer used and need to be removed/modified.

    + +
    File to be deleted from the main store directory
    + +
      +
    • includes/auto_loaders/overrides/init_canonical.php  (Zen Cart 1.5.4 and above)
    • +
    • includes/auto_loaders/overrides/init_sessions.php    (Zen Cart 1.3.9c and above)
    • +
    • includes/auto_loaders/overrides/init_currencies.php  (Zen Cart 1.3.8a and above)
    • +
    • includes/classes/class.String.php
    • +
    +
  2. + +
  3. +

    Copy the New/Updated Files across

    + +

    These are the new/updated files which make up this module. Copy them all into their respective folders in the Zen Cart installation, overwriting the files from the previously installed version.

    + +
    New/Updated files for the Admin directory
    + +

    Most Zen Cart stores have their admin directory renamed from the default of “admin”.

    +

    Copy all of the folders and files from the files/admin folder into the store's “admin” directory, whatever it is called.

    +

    The files are already in the correct directory structure, so a single drag-and-drop of the folders/files in the files/admin folder into the “admin” directory for the store will put the files in the correct locations.

    +

    Please do not copy the files individually - there's simply no need - doing so often results in files being missed out!

    + +
      +
    • admin/includes/classes/class.CeonURIMappingAdminCategoryPages.php
    • +
    • admin/includes/classes/class.CeonURIMappingAdminEZPagePages.php
    • +
    • admin/includes/classes/class.CeonURIMappingAdminManufacturerPages.php
    • +
    • admin/includes/classes/class.CeonURIMappingAdminProductPages.php
    • +
    • admin/includes/classes/class.CeonURIMappingConfigUtility.php
    • +
    • admin/includes/classes/class.CeonURIMappingInstallationCheck.php
    • +
    • admin/includes/classes/class.CeonURIMappingInstallOrUpgrade.php
    • +
    • admin/includes/classes/class.CeonURIMappingTabbedPanelAdminInterface.php
    • +
    • admin/includes/classes/class.CeonURIMappingVersion.php
    • +
    • admin/includes/classes/observers/class.CeonURIMappingAdminCategoriesObserver.php
    • +
    • admin/includes/classes/observers/class.CeonURIMappingAdminCopyObserver.php
    • +
    • admin/includes/classes/observers/class.CeonURIMappingAdminProductsObserver.php
    • +
    • admin/includes/classes/observers/class.CeonURIMappingDeleteCategoriesObserver.php
    • +
    • admin/includes/classes/observers/class.CeonURIMappingAdminCategoryPages.php
    • +
    • admin/includes/classes/observers/class.CeonURIMappingDeleteProductsObserver.php
    • +
    • admin/includes/classes/observers/class.CeonURIMappingLinkBuildAdmin.php
    • +
    • admin/includes/extra_datafiles/ceon_uri_mapping_database_tables.php
    • +
    • admin/includes/extra_datafiles/ceon_uri_mapping_filenames.php
    • +
    • admin/includes/extra_datafiles/ceon_uri_mapping_product_pages.php
    • +
    • admin/includes/functions/extra_functions/ceon_uri_mapping_admin_page_reg.php
    • +
    • admin/includes/init_includes/init_ceon_category_collect_info.php
    • +
    • admin/includes/init_includes/init_ceon_ezpages_collect_info.php
    • +
    • admin/includes/init_includes/init_ceon_manufacturers_collect_info.php
    • +
    • admin/includes/init_includes/init_ceon_product_collect_info.php
    • +
    • admin/includes/languages/english/extra_definitions/ceon_uri_mapping.php
    • +
    • admin/includes/languages/english/ceon_uri_mapping_admin_pages.php
    • +
    • admin/includes/languages/english/ceon_uri_mapping_category_pages.php
    • +
    • admin/includes/languages/english/ceon_uri_mapping_config.php
    • +
    • admin/includes/languages/english/ceon_uri_mapping_default_uri_parts.php
    • +
    • admin/includes/languages/english/ceon_uri_mapping_ezpage_pages.php
    • +
    • admin/includes/languages/english/ceon_uri_mapping_installation_check.php
    • +
    • admin/includes/languages/english/ceon_uri_mapping_manufacturer_pages.php
    • +
    • admin/includes/languages/english/ceon_uri_mapping_product_pages.php
    • +
    • admin/includes/languages/english/ceon_uri_mapping_tabbed_panel_admin_interface.php
    • +
    • admin/includes/auto_loaders/config.ceon_uri_mapping.php
    • +
    • admin/includes/auto_loaders/config.ceon_uri_mapping_admin_categories_observer.php
    • +
    • admin/includes/auto_loaders/config.ceon_uri_mapping_admin_category_delete_observer.php
    • +
    • admin/includes/auto_loaders/config.ceon_uri_mapping_admin_category_info.php
    • +
    • admin/includes/auto_loaders/config.ceon_uri_mapping_admin_copy_observer.php
    • +
    • admin/includes/auto_loaders/config.ceon_uri_mapping_admin_ezpages_info.php
    • +
    • admin/includes/auto_loaders/config.ceon_uri_mapping_admin_manufacturers_info.php
    • +
    • admin/includes/auto_loaders/config.ceon_uri_mapping_admin_product_delete_observer.php
    • +
    • admin/includes/auto_loaders/config.ceon_uri_mapping_admin_product_info.php
    • +
    • admin/includes/auto_loaders/config.ceon_uri_mapping_admin_products_observer.php
    • +
    • admin/includes/ceon_uri_mapping_javascript.php
    • +
    • admin/ceon_uri_mapping_config.php
    • +
    • admin/ceon_uri_mapping_installation_check.php
    • +
    + +
    Additional File for Zen Cart 1.3.x
    + +

    Copy the file from the files/additional_file_for_1.3.x/admin folder into the store's “admin” directory, whatever it is called.

    + +
      +
    • admin/includes/boxes/extra_boxes/ceon_uri_mapping_modules_dhtml.php
    • +
    + + +
    Updated files for the main store directory
    + +

    Copy the includes folder from the files folder into the store's main directory.

    +

    The files are already in the correct directory structure, so a single drag-and-drop of the folder into the root directory for the store will put the files in the correct locations.

    +

    Please do not copy the files individually - there's simply no need - doing so often results in files being missed out!

    +

    Warning: Be careful NOT to copy the files from the files/includes folder into the store's admin/includes directory, they go in the includes directory which is alongside, not inside the store's admin directory.

    + +
      +
    • includes/classes/transliteration/x00.php
    • +
    • includes/classes/transliteration/x03.php
    • +
    • includes/classes/transliteration/x04.php
    • +
    • includes/classes/transliteration/x4e.php
    • +
    • includes/classes/transliteration/x06.php
    • +
    • includes/classes/transliteration/x14.php
    • +
    • includes/classes/transliteration/x15.php
    • +
    • includes/classes/transliteration/x21.php
    • +
    • includes/classes/class.CeonURIMappingAdmin.php
    • +
    • includes/classes/class.CeonURIMappingAdminCategories.php
    • +
    • includes/classes/class.CeonURIMappingAdminCategoriesProducts.php
    • +
    • includes/classes/class.CeonURIMappingAdminEZPages.php
    • +
    • includes/classes/class.CeonURIMappingAdminManufacturers.php
    • +
    • includes/classes/class.CeonURIMappingAdminProducts.php
    • +
    • includes/classes/class.CeonURIMappingDBLookup.php
    • +
    • includes/classes/class.CeonURIMappingHandler.php
    • +
    • includes/classes/class.CeonURIMappingHandlerBase.php
    • +
    • includes/classes/class.CeonURIMappingHREFLinkBuilder.php
    • +
    • includes/classes/class.CeonString.php
    • +
    • includes/classes/class.Transliteration.php
    • +
    • includes/classes/observers/class.ceon_ask_a_question.php
    • +
    • includes/classes/observers/class.ceon_canonical.php
    • +
    • includes/classes/observers/class.ceon_uri_mapping_link_build.php
    • +
    • includes/extra_datafiles/ceon_uri_mapping_filenames.php
    • +
    • includes/extra_datafiles/ceon_uri_mapping_product_pages.php
    • +
    • includes/init_includes/init_ceon_currencies.php
    • +
    • includes/init_includes/init_ceon_uri_mapping_sessions.php
    • +
    • includes/auto_loaders/config.ceon_ask_a_question.php
    • +
    • includes/auto_loaders/config.ceon_canonical.php
    • +
    • includes/auto_loaders/config.ceon_currencies.php
    • +
    • includes/auto_loaders/config.ceon_uri_mapping.php
    • +
    + + +
    Installing to Zen Cart 1.5.7
    + +

    Copy all of the folders and files from the files/zen_cart_version_specific/v1.5.7/admin folder into the store's “admin” directory, whatever it is called.

    +

    The files are already in the correct directory structure, so a single drag-and-drop of the folders/files in the files/admin folder into the “admin” directory for the store will put the files in the correct locations.

    +

    Please do not copy the files individually - there's simply no need - doing so often results in files being missed out!

    + +
      +
    • admin/includes/classes/observers/class.CeonURIMappingJavaScriptLoader.php
    • +
    • admin/includes/auto_loaders/config.ceon_uri_mapping_admin_javascript_loader.php
    • +
    +
  4. + +
  5. +

    Modify an additional Zen Cart Core File

    + +

    Based on your Zen Cart Version (1.5.4 and below) an additional core Zen Cart file should be modified, to add the new support for outputting static URIs instead of dynamic URIs in Zen Cart's admin.

    + +
      +
    • +

      It is likely that this file has not been modified for the store already, in which case it should be possible to simply back up the file and then overwrite the file with the pre-modified sample file from this distribution, for the version of Zen Cart being used by the store.

      +
    • +
    • +

      However, if the core file has also been modified for the store for other third party modules, the changes within the sample file included in this distribution must be applied carefully to the core file.

      + +

      The changes are clearly marked within the sample file in the distribution and should be easy enough to copy across, especially if a “diff” software package (such as the free WinMerge or the excellent, commercial, Beyond Compare) is used.

      + +

      Instructions on how to copy across the modifications necessary for this module - to the core file which has previously been modified - can be found in this FAQ.

      + +
    • +
    + +
    Modified core file for the Admin directory in Zen Cart 1.5.4 and below
    + +

    Please Note: If copying the file across, and the admin folder for the store is not named “admin”, then care must be taken to place the file from within the modified_core_files/ZC-version/admin folder into the store's admin folder.

    + +
      +
    • admin/includes/functions/html_output.php
    • +
    +
  6. + +
  7. +

    Automatically update the database and configuration

    + +

    This software comes with some intelligent upgrade and error checking functionality which makes it easy to keep the database and configuration up to date.

    + +
      +
    • +

      Go to Modules > Ceon URI Mapping (SEO) Config in the Zen Cart Admin and the module will be updated automagically!

      +
    • +
    +
  8. + +
  9. +

    Run the Installation Check

    + +

    The installation check will examine all the core files that must be modified for Ceon URI Mapping to work optimally, and warn you if any of the modifications are present that should be removed, missing or out-of-date, again giving information on what you should do!

    + +

    A quick glance at this admin page should help you identify and fix any problems with the installation quickly and easily!

    + +
      +
    • +

      Go to Modules > Ceon URI Mapping (SEO) Config in the Zen Cart Admin.

      +
    • +
    • +

      Then go to the Installation Check tab and click on the link to open the Installation Check utility page.

      +
    • +
    • +

      The module will now automatically carry out the installation check.

      +
    • +
    • +

      If any errors are listed, follow the instructions given by the software.

      +
    • +
    +
  10. + +
  11. +

    That's it!

    + +

    Told you it was simple to upgrade!

    +
  12. +
+ +

Back to top

+ + +

Upgrading to Ceon URI Mapping 5.1.0 from Ceon URI Mapping 4.2.x

+

It's simple to upgrade to version 5.1.0 from 4.2.x.

+ +
    +
  1. +

    Remove the old files used by the previously installed version of the module

    + +

    Since the module has been rewritten (for Zen Cart Version 1.5.5 and above) to minimize core file modification, many of the old files are no longer used and need to be removed/modified.

    + +
    File to be deleted from the main store directory
    + +
      +
    • includes/auto_loaders/overrides/init_canonical.php  (Zen Cart 1.5.4 and above)
    • +
    • includes/auto_loaders/overrides/init_sessions.php    (Zen Cart 1.3.9c and above)
    • +
    • includes/auto_loaders/overrides/init_currencies.php  (Zen Cart 1.3.8a and above)
    • +
    • includes/classes/class.String.php
    • +
    +
  2. + +
  3. +

    Copy the New/Updated Files across

    + +

    These are the new/updated files which make up this module. Copy them all into their respective folders in the Zen Cart installation, overwriting the files from the previously installed version.

    + +
    New/Updated files for the Admin directory
    + +

    Most Zen Cart stores have their admin directory renamed from the default of “admin”.

    +

    Copy all of the folders and files from the files/admin folder into the store's “admin” directory, whatever it is called.

    +

    The files are already in the correct directory structure, so a single drag-and-drop of the folders/files in the files/admin folder into the “admin” directory for the store will put the files in the correct locations.

    +

    Please do not copy the files individually - there's simply no need - doing so often results in files being missed out!

    + +
      +
    • admin/images/ceon-button-logo.png
    • +
    • admin/images/ceon-input-fade-tb-gray-white.png
    • +
    • admin/images/ceon-tab-background.png
    • +
    • admin/images/ceon-tab-background-selected.png
    • +
    • admin/includes/classes/observers/class.CeonURIMappingAdminCategoriesObserver.php
    • +
    • admin/includes/classes/observers/class.CeonURIMappingAdminCopyObserver.php
    • +
    • admin/includes/classes/observers/class.CeonURIMappingAdminProductsObserver.php
    • +
    • admin/includes/classes/observers/class.CeonURIMappingDeleteCategoriesObserver.php
    • +
    • admin/includes/classes/observers/class.CeonURIMappingAdminCategoryPages.php
    • +
    • admin/includes/classes/observers/class.CeonURIMappingAdminCategoryPages.php
    • +
    • admin/includes/classes/observers/class.CeonURIMappingAdminCategoryPages.php
    • +
    • admin/includes/classes/class.CeonURIMappingAdminCategoryPages.php
    • +
    • admin/includes/classes/class.CeonURIMappingAdminEZPagePages.php
    • +
    • admin/includes/classes/class.CeonURIMappingAdminManufacturerPages.php
    • +
    • admin/includes/classes/class.CeonURIMappingAdminProductPages.php
    • +
    • admin/includes/classes/class.CeonURIMappingConfigUtility.php
    • +
    • admin/includes/classes/class.CeonURIMappingInstallationCheck.php
    • +
    • admin/includes/classes/class.CeonURIMappingInstallOrUpgrade.php
    • +
    • admin/includes/classes/class.CeonURIMappingTabbedPanelAdminInterface.php
    • +
    • admin/includes/classes/class.CeonURIMappingVersion.php
    • +
    • admin/includes/extra_datafiles/ceon_uri_mapping_database_tables.php
    • +
    • admin/includes/extra_datafiles/ceon_uri_mapping_filenames.php
    • +
    • admin/includes/extra_datafiles/ceon_uri_mapping_product_pages.php
    • +
    • admin/includes/functions/extra_functions/ceon_uri_mapping_admin_page_reg.php
    • +
    • admin/includes/init_includes/init_ceon_category_collect_info.php
    • +
    • admin/includes/init_includes/init_ceon_ezpages_collect_info.php
    • +
    • admin/includes/init_includes/init_ceon_manufacturers_collect_info.php
    • +
    • admin/includes/init_includes/init_ceon_product_collect_info.php
    • +
    • admin/includes/languages/english/extra_definitions/ceon_uri_mapping.php
    • +
    • admin/includes/languages/english/ceon_uri_mapping_admin_pages.php
    • +
    • admin/includes/languages/english/ceon_uri_mapping_category_pages.php
    • +
    • admin/includes/languages/english/ceon_uri_mapping_config.php
    • +
    • admin/includes/languages/english/ceon_uri_mapping_default_uri_parts.php
    • +
    • admin/includes/languages/english/ceon_uri_mapping_ezpage_pages.php
    • +
    • admin/includes/languages/english/ceon_uri_mapping_installation_check.php
    • +
    • admin/includes/languages/english/ceon_uri_mapping_manufacturer_pages.php
    • +
    • admin/includes/languages/english/ceon_uri_mapping_product_pages.php
    • +
    • admin/includes/languages/english/ceon_uri_mapping_tabbed_panel_admin_interface.php
    • +
    • admin/includes/auto_loaders/config.ceon_uri_mapping.php
    • +
    • admin/includes/auto_loaders/config.ceon_uri_mapping_admin_categories_observer.php
    • +
    • admin/includes/auto_loaders/config.ceon_uri_mapping_admin_category_delete_observer.php
    • +
    • admin/includes/auto_loaders/config.ceon_uri_mapping_admin_category_info.php
    • +
    • admin/includes/auto_loaders/config.ceon_uri_mapping_admin_copy_observer.php
    • +
    • admin/includes/auto_loaders/config.ceon_uri_mapping_admin_ezpages_info.php
    • +
    • admin/includes/auto_loaders/config.ceon_uri_mapping_admin_manufacturers_info.php
    • +
    • admin/includes/auto_loaders/config.ceon_uri_mapping_admin_product_delete_observer.php
    • +
    • admin/includes/auto_loaders/config.ceon_uri_mapping_admin_product_info.php
    • +
    • admin/includes/auto_loaders/config.ceon_uri_mapping_admin_products_observer.php
    • +
    • admin/includes/ceon_uri_mapping_javascript.php
    • +
    • admin/ceon_uri_mapping_config.php
    • +
    • admin/ceon_uri_mapping_installation_check.php
    • +
    + +
    Additional File for Zen Cart 1.3.x
    + +

    Copy the file from the files/additional_file_for_1.3.x/admin folder into the store's “admin” directory, whatever it is called.

    + +
      +
    • admin/includes/boxes/extra_boxes/ceon_uri_mapping_modules_dhtml.php
    • +
    + + +
    Updated files for the main store directory
    + +

    Copy the includes folder from the files folder into the store's main directory.

    +

    The files are already in the correct directory structure, so a single drag-and-drop of the folder into the root directory for the store will put the files in the correct locations.

    +

    Please do not copy the files individually - there's simply no need - doing so often results in files being missed out!

    +

    Warning: Be careful NOT to copy the files from the files/includes folder into the store's admin/includes directory, they go in the includes directory which is alongside, not inside the store's admin directory.

    + +
      +
    • includes/classes/transliteration (* This directory and ALL files in it!)
    • +
    • includes/classes/class.CeonURIMappingAdmin.php
    • +
    • includes/classes/class.CeonURIMappingAdminCategories.php
    • +
    • includes/classes/class.CeonURIMappingAdminCategoriesProducts.php
    • +
    • includes/classes/class.CeonURIMappingAdminEZPages.php
    • +
    • includes/classes/class.CeonURIMappingAdminManufacturers.php
    • +
    • includes/classes/class.CeonURIMappingAdminProducts.php
    • +
    • includes/classes/class.CeonURIMappingDBLookup.php
    • +
    • includes/classes/class.CeonURIMappingHandler.php
    • +
    • includes/classes/class.CeonURIMappingHandlerBase.php
    • +
    • includes/classes/class.CeonURIMappingHREFLinkBuilder.php
    • +
    • includes/classes/class.CeonString.php
    • +
    • includes/classes/class.Transliteration.php
    • +
    • includes/classes/observers/class.ceon_ask_a_question.php
    • +
    • includes/classes/observers/class.ceon_uri_mapping_link_build.php
    • +
    • includes/classes/observers/class.ceon_canonical.php
    • +
    • includes/extra_datafiles/ceon_uri_mapping_database_tables.php
    • +
    • includes/extra_datafiles/ceon_uri_mapping_filenames.php
    • +
    • includes/extra_datafiles/ceon_uri_mapping_product_pages.php
    • +
    • includes/init_includes/init_ceon_currencies.php
    • +
    • includes/init_includes/init_ceon_uri_mapping_sessions.php
    • +
    • includes/auto_loaders/config.ceon_ask_a_question.php
    • +
    • includes/auto_loaders/config.ceon_canonical.php
    • +
    • includes/auto_loaders/config.ceon_currencies.php
    • +
    • includes/auto_loaders/config.ceon_uri_mapping.php
    • +
    + + +
    Installing to Zen Cart 1.5.7
    + +

    Copy all of the folders and files from the files/zen_cart_version_specific/v1.5.7/admin folder into the store's “admin” directory, whatever it is called.

    +

    The files are already in the correct directory structure, so a single drag-and-drop of the folders/files in the files/admin folder into the “admin” directory for the store will put the files in the correct locations.

    +

    Please do not copy the files individually - there's simply no need - doing so often results in files being missed out!

    + +
      +
    • admin/includes/classes/observers/class.CeonURIMappingJavaScriptLoader.php
    • +
    • admin/includes/auto_loaders/config.ceon_uri_mapping_admin_javascript_loader.php
    • +
    +
  4. + +
  5. +

    Modify an additional Zen Cart Core File

    + +

    An additional core Zen Cart file should be modified, to add the new support for outputting static URIs instead of dynamic URIs in Zen Cart's admin.

    + +
      +
    • +

      It is likely that this file has not been modified for the store already, in which case it should be possible to simply back up the file and then overwrite the file with the pre-modified sample file from this distribution, for the version of Zen Cart being used by the store.

      +
    • +
    • +

      However, if the core file has also been modified for the store for other third party modules, the changes within the sample file included in this distribution must be applied carefully to the core file.

      + +

      The changes are clearly marked within the sample file in the distribution and should be easy enough to copy across, especially if a “diff” software package (such as the free WinMerge or the excellent, commercial, Beyond Compare) is used.

      + +

      Instructions on how to copy across the modifications necessary for this module - to the core file which has previously been modified - can be found in this FAQ.

      + +
    • +
    + +
    Modified core file for the Admin directory
    + +

    Please Note: If copying the file across, and the admin folder for the store is not named “admin”, then care must be taken to place the file from within the modified_core_files/ZC-version/admin folder into the store's admin folder.

    + +
      +
    • admin/includes/functions/html_output.php
    • +
    +
  6. + +
  7. +

    Automatically update the database and configuration

    + +

    This software comes with some intelligent upgrade and error checking functionality which makes it easy to keep the database and configuration up to date.

    + +
      +
    • +

      Go to Modules > Ceon URI Mapping (SEO) Config in the Zen Cart Admin and the module will be updated automagically!

      +
    • +
    +
  8. + +
  9. +

    Run the Installation Check

    + +

    The installation check will examine all the core files that must be modified for Ceon URI Mapping to work optimally, and warn you if any of the modifications are present that should be removed, missing or out-of-date, again giving information on what you should do!

    + +

    A quick glance at this admin page should help you identify and fix any problems with the installation quickly and easily!

    + +
      +
    • +

      Go to Modules > Ceon URI Mapping (SEO) Config in the Zen Cart Admin.

      +
    • +
    • +

      Then go to the Installation Check tab and click on the link to open the Installation Check utility page.

      +
    • +
    • +

      The module will now automatically carry out the installation check.

      +
    • +
    • +

      If any errors are listed, follow the instructions given by the software.

      +
    • +
    +
  10. + +
  11. +

    That's it!

    + +

    Told you it was simple to upgrade!

    +
  12. +
+ +

Back to top

+ + +

Upgrading to Ceon URI Mapping 5.1.0 from Ceon URI Mapping 4.0.6 - 4.0.8

+

It's simple to upgrade to version 5.1.0 from 4.0.6 - 4.0.8.

+ +
    +
  1. +

    Remove the old files used by the previously installed version of the module

    + +

    Since the module has been rewritten (for Zen Cart Version 1.5.5 and above) to minimize core file modification, many of the old files are no longer used and need to be removed/modified.

    + +
    File to be deleted from the main store directory
    + +
      +
    • includes/auto_loaders/overrides/init_canonical.php  (Zen Cart 1.5.4 and above)
    • +
    • includes/auto_loaders/overrides/init_sessions.php    (Zen Cart 1.3.9c and above)
    • +
    • includes/auto_loaders/overrides/init_currencies.php  (Zen Cart 1.3.8a and above)
    • +
    • includes/classes/class.String.php
    • +
    +
  2. + +
  3. +

    Copy the New/Updated Files across

    + +

    These are the new/updated files which make up this module. Copy them all into their respective folders in the Zen Cart installation, overwriting the files from the previously installed version.

    + +
    New/Updated files for the Admin directory
    + +

    Most Zen Cart stores have their admin directory renamed from the default of “admin”.

    +

    Copy all of the folders and files from the files/admin folder into the store's “admin” directory, whatever it is called.

    +

    The files are already in the correct directory structure, so a single drag-and-drop of the folders/files in the files/admin folder into the “admin” directory for the store will put the files in the correct locations.

    +

    Please do not copy the files individually - there's simply no need - doing so often results in files being missed out!

    + +
      +
    • admin/images/ceon-button-logo.png
    • +
    • admin/images/ceon-input-fade-tb-gray-white.png
    • +
    • admin/images/ceon-tab-background.png
    • +
    • admin/images/ceon-tab-background-selected.png
    • +
    • admin/includes/classes/class.CeonURIMappingAdminCategoryPages.php
    • +
    • admin/includes/classes/class.CeonURIMappingAdminEZPagePages.php
    • +
    • admin/includes/classes/class.CeonURIMappingAdminManufacturerPages.php
    • +
    • admin/includes/classes/class.CeonURIMappingAdminProductPages.php
    • +
    • admin/includes/classes/class.CeonURIMappingConfigUtility.php
    • +
    • admin/includes/classes/class.CeonURIMappingInstallationCheck.php
    • +
    • admin/includes/classes/class.CeonURIMappingInstallOrUpgrade.php
    • +
    • admin/includes/classes/class.CeonURIMappingTabbedPanelAdminInterface.php
    • +
    • admin/includes/classes/class.CeonURIMappingVersion.php
    • +
    • admin/includes/classes/observers/class.CeonURIMappingAdminCategoriesObserver.php
    • +
    • admin/includes/classes/observers/class.CeonURIMappingAdminCopyObserver.php
    • +
    • admin/includes/classes/observers/class.CeonURIMappingAdminProductsObserver.php
    • +
    • admin/includes/classes/observers/class.CeonURIMappingDeleteCategoriesObserver.php
    • +
    • admin/includes/classes/observers/class.CeonURIMappingDeleteProductsObserver.php
    • +
    • admin/includes/classes/observers/class.CeonURIMappingLinkBuildAdmin.php
    • +
    • admin/includes/extra_datafiles/ceon_uri_mapping_database_tables.php
    • +
    • admin/includes/extra_datafiles/ceon_uri_mapping_filenames.php
    • +
    • admin/includes/extra_datafiles/ceon_uri_mapping_product_pages.php
    • +
    • admin/includes/init_includes/init_ceon_category_collect_info.php
    • +
    • admin/includes/init_includes/init_ceon_ezpages_collect_info.php
    • +
    • admin/includes/init_includes/init_ceon_manufacturers_collect_info.php
    • +
    • admin/includes/init_includes/init_ceon_product_collect_info.php
    • +
    • admin/includes/functions/extra_functions/ceon_uri_mapping_admin_page_reg.php
    • +
    • admin/includes/languages/english/extra_definitions/ceon_uri_mapping.php
    • +
    • admin/includes/languages/english/ceon_uri_mapping_admin_pages.php
    • +
    • admin/includes/languages/english/ceon_uri_mapping_category_pages.php
    • +
    • admin/includes/languages/english/ceon_uri_mapping_config.php
    • +
    • admin/includes/languages/english/ceon_uri_mapping_default_uri_parts.php
    • +
    • admin/includes/languages/english/ceon_uri_mapping_ezpage_pages.php
    • +
    • admin/includes/languages/english/ceon_uri_mapping_installation_check.php
    • +
    • admin/includes/languages/english/ceon_uri_mapping_manufacturer_pages.php
    • +
    • admin/includes/languages/english/ceon_uri_mapping_product_pages.php
    • +
    • admin/includes/languages/english/ceon_uri_mapping_tabbed_panel_admin_interface.php
    • +
    • admin/includes/auto_loaders/config.ceon_uri_mapping.php
    • +
    • admin/includes/auto_loaders/config.ceon_uri_mapping_admin_categories_observer.php
    • +
    • admin/includes/auto_loaders/config.ceon_uri_mapping_admin_category_delete_observer.php
    • +
    • admin/includes/auto_loaders/config.ceon_uri_mapping_admin_category_info.php
    • +
    • admin/includes/auto_loaders/config.ceon_uri_mapping_admin_copy_observer.php
    • +
    • admin/includes/auto_loaders/config.ceon_uri_mapping_admin_ezpages_info.php
    • +
    • admin/includes/auto_loaders/config.ceon_uri_mapping_admin_manufacturers_info.php
    • +
    • admin/includes/auto_loaders/config.ceon_uri_mapping_admin_product_delete_observer.php
    • +
    • admin/includes/auto_loaders/config.ceon_uri_mapping_admin_product_info.php
    • +
    • admin/includes/auto_loaders/config.ceon_uri_mapping_admin_products_observer.php
    • +
    • admin/includes/ceon_uri_mapping_javascript.php
    • +
    • admin/ceon_uri_mapping_config.php
    • +
    • admin/ceon_uri_mapping_installation_check.php
    • +
    + +
    Additional File for Zen Cart 1.3.x
    + +

    Copy the file from the files/additional_file_for_1.3.x/admin folder into the store's “admin” directory, whatever it is called.

    + +
      +
    • admin/includes/boxes/extra_boxes/ceon_uri_mapping_modules_dhtml.php
    • +
    + + +
    Updated files for the main store directory
    + +

    Copy the includes folder from the files folder into the store's main directory.

    +

    The files are already in the correct directory structure, so a single drag-and-drop of the folder into the root directory for the store will put the files in the correct locations.

    +

    Please do not copy the files individually - there's simply no need - doing so often results in files being missed out!

    +

    Warning: Be careful NOT to copy the files from the files/includes folder into the store's admin/includes directory, they go in the includes directory which is alongside, not inside the store's admin directory.

    + +
      +
    • includes/classes/transliteration (* This directory and ALL files in it!)
    • +
    • includes/classes/class.CeonURIMappingAdmin.php
    • +
    • includes/classes/class.CeonURIMappingAdminCategories.php
    • +
    • includes/classes/class.CeonURIMappingAdminCategoriesProducts.php
    • +
    • includes/classes/class.CeonURIMappingAdminEZPages.php
    • +
    • includes/classes/class.CeonURIMappingAdminManufacturers.php
    • +
    • includes/classes/class.CeonURIMappingAdminProducts.php
    • +
    • includes/classes/class.CeonURIMappingDBLookup.php
    • +
    • includes/classes/class.CeonURIMappingHandler.php
    • +
    • includes/classes/class.CeonURIMappingHandlerBase.php
    • +
    • includes/classes/class.CeonURIMappingHREFLinkBuilder.php
    • +
    • includes/classes/class.CeonString.php
    • +
    • includes/classes/class.Transliteration.php
    • +
    • includes/classes/observers/class.ceon_ask_a_question.php
    • +
    • includes/classes/observers/class.ceon_uri_mapping_link_build.php
    • +
    • includes/classes/observers/class.ceon_canonical.php
    • +
    • includes/extra_datafiles/ceon_uri_mapping_database_tables.php
    • +
    • includes/extra_datafiles/ceon_uri_mapping_filenames.php
    • +
    • includes/extra_datafiles/ceon_uri_mapping_product_pages.php
    • +
    • includes/init_includes/init_ceon_currencies.php
    • +
    • includes/init_includes/init_ceon_uri_mapping_sessions.php
    • +
    • includes/auto_loaders/config.ceon_ask_a_question.php
    • +
    • includes/auto_loaders/config.ceon_canonical.php
    • +
    • includes/auto_loaders/config.ceon_currencies.php
    • +
    • includes/auto_loaders/config.ceon_uri_mapping.php
    • +
    + + +
    Installing to Zen Cart 1.5.7
    + +

    Copy all of the folders and files from the files/zen_cart_version_specific/v1.5.7/admin folder into the store's “admin” directory, whatever it is called.

    +

    The files are already in the correct directory structure, so a single drag-and-drop of the folders/files in the files/admin folder into the “admin” directory for the store will put the files in the correct locations.

    +

    Please do not copy the files individually - there's simply no need - doing so often results in files being missed out!

    + +
      +
    • admin/includes/classes/observers/class.CeonURIMappingJavaScriptLoader.php
    • +
    • admin/includes/auto_loaders/config.ceon_uri_mapping_admin_javascript_loader.php
    • +
    +
  4. + +
  5. +

    Modify an additional Zen Cart Core File

    + +

    An additional core Zen Cart file should be modified, to add the new support for outputting static URIs instead of dynamic URIs in Zen Cart's admin.

    + +
      +
    • +

      It is likely that this file has not been modified for the store already, in which case it should be possible to simply back up the file and then overwrite the file with the pre-modified sample file from this distribution, for the version of Zen Cart being used by the store.

      +
    • +
    • +

      However, if the core file has also been modified for the store for other third party modules, the changes within the sample file included in this distribution must be applied carefully to the core file.

      + +

      The changes are clearly marked within the sample file in the distribution and should be easy enough to copy across, especially if a “diff” software package (such as the free WinMerge or the excellent, commercial, Beyond Compare) is used.

      + +

      Instructions on how to copy across the modifications necessary for this module - to the core file which has previously been modified - can be found in this FAQ.

      + +
    • +
    + +
    Modified core file for the Admin directory
    + +

    Please Note: If copying the file across, and the admin folder for the store is not named “admin”, then care must be taken to place the file from within the modified_core_files/ZC-version/admin folder into the store's admin folder.

    + +
      +
    • admin/includes/functions/html_output.php
    • +
    +
  6. + +
  7. +

    Update a Zen Cart Core File already used by Ceon URI Mapping

    + +

    A core Zen Cart file that was modified for the previously installed version should be updated, as the code in it has changed slightly.

    + +
      +
    • +

      If this file was only modified when installing a previous version of Ceon URI Mapping, then it should be possible to simply back up the file and then simply overwrite the file with the pre-modified sample file from this distribution, for the version of Zen Cart being used by the store.

      +
    • +
    • +

      However, if the core file has also been modified for the store for other third party modules, the changes within the sample file included in this distribution must be applied carefully to the core file.

      +

      The changes are clearly marked within the sample file in the distribution and should be easy enough to copy across, especially if a “diff” software package (such as the free WinMerge or the excellent, commercial, Beyond Compare) is used.

      + +

      Instructions on how to copy across the modifications necessary for this module - to the core file which has previously been modified - can be found in this FAQ.

      + +
    • +
    + +
    Modified core file for the Admin directory
    + +

    Please Note: If copying the file across, and the admin folder for the store is not named “admin”, then care must be taken to place the file from within the modified_core_files/ZC-version/admin folder into the store's admin folder.

    + +
      +
    • admin/includes/functions/general.php
    • +
    +
  8. + +
  9. +

    Automatically update the database and configuration

    + +

    This software comes with some intelligent upgrade and error checking functionality which makes it easy to keep the database and configuration up to date.

    + +
      +
    • +

      Go to Modules > Ceon URI Mapping (SEO) Config in the Zen Cart Admin and the module will be updated automagically!

      +
    • +
    +
  10. + +
  11. +

    Run the Installation Check

    + +

    The installation check will examine all the core files that must be modified for Ceon URI Mapping to work optimally, and warn you if any of the modifications are missing or out of date, again giving information on what you should do!

    + +

    A quick glance at this admin page should help you identify and fix any problems with the installation quickly and easily!

    + +
      +
    • +

      Go to Modules > Ceon URI Mapping (SEO) Config in the Zen Cart Admin.

      +
    • +
    • +

      Then go to the Installation Check tab and click on the link to open the Installation Check utility page.

      +
    • +
    • +

      The module will now automatically carry out the installation check.

      +
    • +
    • +

      If any errors are listed, follow the instructions given by the software.

      +
    • +
    +
  12. + +
  13. +

    That's it!

    + +

    Told you it was simple to upgrade!

    +
  14. +
+ +

Back to top

+ +

Upgrading to Ceon URI Mapping 5.1.0 from Ceon URI Mapping 4.0.0 - 4.0.5

+

It's simple to upgrade to version 5.1.0 from 4.0.0 - 4.0.5.

+ +
    +
  1. +

    Remove the old files used by the previously installed version of the module

    + +

    Since the module has been rewritten (for Zen Cart Version 1.5.5 and above) to minimize core file modification, many of the old files are no longer used and need to be removed/modified.

    + +
    File to be deleted from the main store directory
    + +
      +
    • includes/auto_loaders/overrides/init_canonical.php  (Zen Cart 1.5.4 and above)
    • +
    • includes/auto_loaders/overrides/init_sessions.php    (Zen Cart 1.3.9c and above)
    • +
    • includes/auto_loaders/overrides/init_currencies.php  (Zen Cart 1.3.8a and above)
    • +
    • includes/classes/class.String.php
    • +
    +
  2. + +
  3. +

    Copy the Updated Files across

    + +

    These are the updated files which make up this module. Copy them all into their respective folders in the Zen Cart installation, overwriting the files from the previously installed version.

    + +
    New/updated files for the Admin directory
    + +

    Most Zen Cart stores have their admin directory renamed from the default of “admin”.

    +

    Copy all of the folders and files from the files/admin folder into the store's “admin” directory, whatever it is called.

    +

    The files are already in the correct directory structure, so a single drag-and-drop of the folders/files in the files/admin folder into the “admin” directory for the store will put the files in the correct locations.

    +

    Please do not copy the files individually - there's simply no need - doing so often results in files being missed out!

    + +
      +
    • admin/images/ceon-button-logo.png
    • +
    • admin/images/ceon-input-fade-tb-gray-white.png
    • +
    • admin/images/ceon-tab-background.png
    • +
    • admin/images/ceon-tab-background-selected.png
    • +
    • admin/includes/classes/class.CeonURIMappingAdminCategoryPages.php
    • +
    • admin/includes/classes/class.CeonURIMappingAdminEZPagePages.php
    • +
    • admin/includes/classes/class.CeonURIMappingAdminManufacturerPages.php
    • +
    • admin/includes/classes/class.CeonURIMappingAdminProductPages.php
    • +
    • admin/includes/classes/class.CeonURIMappingConfigUtility.php
    • +
    • admin/includes/classes/class.CeonURIMappingInstallationCheck.php
    • +
    • admin/includes/classes/class.CeonURIMappingInstallOrUpgrade.php
    • +
    • admin/includes/classes/class.CeonURIMappingTabbedPanelAdminInterface.php
    • +
    • admin/includes/classes/class.CeonURIMappingVersion.php
    • +
    • admin/includes/classes/observers/class.CeonURIMappingAdminCategoriesObserver.php
    • +
    • admin/includes/classes/observers/class.CeonURIMappingAdminCopyObserver.php
    • +
    • admin/includes/classes/observers/class.CeonURIMappingAdminProductsObserver.php
    • +
    • admin/includes/classes/observers/class.CeonURIMappingDeleteCategoriesObserver.php
    • +
    • admin/includes/classes/observers/class.CeonURIMappingDeleteProductsObserver.php
    • +
    • admin/includes/classes/observers/class.CeonURIMappingLinkBuildAdmin.php
    • +
    • admin/includes/extra_datafiles/ceon_uri_mapping_database_tables.php
    • +
    • admin/includes/extra_datafiles/ceon_uri_mapping_filenames.php
    • +
    • admin/includes/extra_datafiles/ceon_uri_mapping_product_pages.php
    • +
    • admin/includes/init_includes/init_ceon_category_collect_info.php
    • +
    • admin/includes/init_includes/init_ceon_ezpages_collect_info.php
    • +
    • admin/includes/init_includes/init_ceon_manufacturers_collect_info.php
    • +
    • admin/includes/init_includes/init_ceon_product_collect_info.php
    • +
    • admin/includes/functions/extra_functions/ceon_uri_mapping_admin_page_reg.php
    • +
    • admin/includes/languages/english/extra_definitions/ceon_uri_mapping.php
    • +
    • admin/includes/languages/english/ceon_uri_mapping_admin_pages.php
    • +
    • admin/includes/languages/english/ceon_uri_mapping_category_pages.php
    • +
    • admin/includes/languages/english/ceon_uri_mapping_config.php
    • +
    • admin/includes/languages/english/ceon_uri_mapping_default_uri_parts.php
    • +
    • admin/includes/languages/english/ceon_uri_mapping_ezpage_pages.php
    • +
    • admin/includes/languages/english/ceon_uri_mapping_installation_check.php
    • +
    • admin/includes/languages/english/ceon_uri_mapping_manufacturer_pages.php
    • +
    • admin/includes/languages/english/ceon_uri_mapping_product_pages.php
    • +
    • admin/includes/languages/english/ceon_uri_mapping_tabbed_panel_admin_interface.php
    • +
    • admin/includes/auto_loaders/config.ceon_uri_mapping.php
    • +
    • admin/includes/auto_loaders/config.ceon_uri_mapping_admin_categories_observer.php
    • +
    • admin/includes/auto_loaders/config.ceon_uri_mapping_admin_category_delete_observer.php
    • +
    • admin/includes/auto_loaders/config.ceon_uri_mapping_admin_category_info.php
    • +
    • admin/includes/auto_loaders/config.ceon_uri_mapping_admin_copy_observer.php
    • +
    • admin/includes/auto_loaders/config.ceon_uri_mapping_admin_ezpages_info.php
    • +
    • admin/includes/auto_loaders/config.ceon_uri_mapping_admin_manufacturers_info.php
    • +
    • admin/includes/auto_loaders/config.ceon_uri_mapping_admin_product_delete_observer.php
    • +
    • admin/includes/auto_loaders/config.ceon_uri_mapping_admin_product_info.php
    • +
    • admin/includes/auto_loaders/config.ceon_uri_mapping_admin_products_observer.php
    • +
    • admin/includes/ceon_uri_mapping_javascript.php
    • +
    • admin/ceon_uri_mapping_config.php
    • +
    • admin/ceon_uri_mapping_installation_check.php
    • +
    + +
    Additional File for Zen Cart 1.3.x
    + +

    Copy the file from the files/additional_file_for_1.3.x/admin folder into the store's “admin” directory, whatever it is called.

    + +
      +
    • admin/includes/boxes/extra_boxes/ceon_uri_mapping_modules_dhtml.php
    • +
    + + +
    New/updated files for the main store directory
    + +

    Copy the includes folder from the files folder into the store's main directory.

    +

    The files are already in the correct directory structure, so a single drag-and-drop of the folder into the root directory for the store will put the files in the correct locations.

    +

    Please do not copy the files individually - there's simply no need - doing so often results in files being missed out!

    +

    Warning: Be careful NOT to copy the files from the files/includes folder into the store's admin/includes directory, they go in the includes directory which is alongside, not inside the store's admin directory.

    + +
      +
    • includes/classes/transliteration (* This directory and ALL files in it!)
    • +
    • includes/classes/class.CeonURIMappingAdmin.php
    • +
    • includes/classes/class.CeonURIMappingAdminCategories.php
    • +
    • includes/classes/class.CeonURIMappingAdminCategoriesProducts.php
    • +
    • includes/classes/class.CeonURIMappingAdminEZPages.php
    • +
    • includes/classes/class.CeonURIMappingAdminManufacturers.php
    • +
    • includes/classes/class.CeonURIMappingAdminProducts.php
    • +
    • includes/classes/class.CeonURIMappingDBLookup.php
    • +
    • includes/classes/class.CeonURIMappingHandler.php
    • +
    • includes/classes/class.CeonURIMappingHandlerBase.php
    • +
    • includes/classes/class.CeonURIMappingHREFLinkBuilder.php
    • +
    • includes/classes/class.CeonString.php
    • +
    • includes/classes/class.Transliteration.php
    • +
    • includes/classes/observers/class.ceon_ask_a_question.php
    • +
    • includes/classes/observers/class.ceon_uri_mapping_link_build.php
    • +
    • includes/classes/observers/class.ceon_canonical.php
    • +
    • includes/extra_datafiles/ceon_uri_mapping_database_tables.php
    • +
    • includes/extra_datafiles/ceon_uri_mapping_filenames.php
    • +
    • includes/extra_datafiles/ceon_uri_mapping_product_pages.php
    • +
    • includes/init_includes/init_ceon_currencies.php
    • +
    • includes/init_includes/init_ceon_uri_mapping_sessions.php
    • +
    • includes/auto_loaders/config.ceon_ask_a_question.php
    • +
    • includes/auto_loaders/config.ceon_canonical.php
    • +
    • includes/auto_loaders/config.ceon_currencies.php
    • +
    • includes/auto_loaders/config.ceon_uri_mapping.php
    • +
    + + +
    Installing to Zen Cart 1.5.7
    + +

    Copy all of the folders and files from the files/zen_cart_version_specific/v1.5.7/admin folder into the store's “admin” directory, whatever it is called.

    +

    The files are already in the correct directory structure, so a single drag-and-drop of the folders/files in the files/admin folder into the “admin” directory for the store will put the files in the correct locations.

    +

    Please do not copy the files individually - there's simply no need - doing so often results in files being missed out!

    + +
      +
    • admin/includes/classes/observers/class.CeonURIMappingJavaScriptLoader.php
    • +
    • admin/includes/auto_loaders/config.ceon_uri_mapping_admin_javascript_loader.php
    • +
    +
  4. + +
  5. +

    Modify an additional Zen Cart Core File

    + +

    An additional core Zen Cart file should be modified, to add the new support for outputting static URIs instead of dynamic URIs in Zen Cart's admin.

    + +
      +
    • +

      It is likely that this file has not been modified for the store already, in which case it should be possible to simply back up the file and then overwrite the file with the pre-modified sample file from this distribution, for the version of Zen Cart being used by the store.

      +
    • +
    • +

      However, if the core file has also been modified for the store for other third party modules, the changes within the sample file included in this distribution must be applied carefully to the core file.

      + +

      The changes are clearly marked within the sample file in the distribution and should be easy enough to copy across, especially if a “diff” software package (such as the free WinMerge or the excellent, commercial, Beyond Compare) is used.

      + +

      Instructions on how to copy across the modifications necessary for this module - to the core file which has previously been modified - can be found in this FAQ.

      + +
    • +
    + +
    Modified core file for the Admin directory
    + +

    Please Note: If copying the file across, and the admin folder for the store is not named “admin”, then care must be taken to place the file from within the modified_core_files/ZC-version/admin folder into the store's admin folder.

    + +
      +
    • admin/includes/functions/html_output.php
    • +
    +
  6. + +
  7. +

    Update a Zen Cart Core File already used by Ceon URI Mapping

    + +

    A core Zen Cart file that was modified for the previously installed version should be updated, as the code in it has changed slightly.

    + +
      +
    • +

      If this file was only modified when installing a previous version of Ceon URI Mapping, then it should be possible to simply back up the file and then simply overwrite the file with the pre-modified sample file from this distribution, for the version of Zen Cart being used by the store.

      +
    • +
    • +

      However, if the core file has also been modified for the store for other third party modules, the changes within the sample file included in this distribution must be applied carefully to the core file.

      +

      The changes are clearly marked within the sample file in the distribution and should be easy enough to copy across, especially if a “diff” software package (such as the free WinMerge or the excellent, commercial, Beyond Compare) is used.

      + +

      Instructions on how to copy across the modifications necessary for this module - to the core file which has previously been modified - can be found in this FAQ.

      + +
    • +
    + +
    Modified core file for the Admin directory
    + +

    Please Note: If copying the file across, and the admin folder for the store is not named “admin”, then care must be taken to place the file from within the modified_core_files/ZC-version/admin folder into the store's admin folder.

    + +
      +
    • admin/includes/functions/general.php
    • +
    +
  8. + +
  9. +

    [Optional but RECOMMENDED] Update a “Document General” Product Type Core File used by Ceon URI Mapping

    + +

    For stores using the Document General product type and Zen Cart 1.3.9h or Zen Cart 1.5.0, a core Zen Cart file that was modified for the previously installed version should be updated, as there was a typo in the with versions 4.0.0 - 4.0.5.

    + +

    Other stores (those not using the Document General product type) can skip this step, if desired.

    + +
      +
    • +

      If this file was only modified when installing a previous version of Ceon URI Mapping, then it should be possible to simply back up the file and then simply overwrite the file with the pre-modified sample file from this distribution, for the version of Zen Cart being used by the store.

      +
    • +
    • +

      However, if the core file has also been modified for the store for other third party modules, the changes within the sample file included in this distribution must be applied carefully to the core file.

      +

      The changes are clearly marked within the sample file in the distribution and should be easy enough to copy across, especially if a “diff” software package (such as the free WinMerge or the excellent, commercial, Beyond Compare) is used.

      + +

      Instructions on how to copy across the modifications necessary for this module - to the core file which has previously been modified - can be found in this FAQ.

      + +
    • +
    + +
    Modified core file for the Admin directory
    + +

    Please Note: If copying the file across, and the admin folder for the store is not named “admin”, then care must be taken to place the file from within the modified_core_files/ZC-version/admin folder into the store's admin folder.

    + +
      +
    • admin/includes/modules/document_general/collect_info.php
    • +
    +
  10. + +
  11. +

    Automatically update the database and configuration

    + +

    This software comes with some intelligent upgrade and error checking functionality which makes it easy to keep the database and configuration up to date.

    + +
      +
    • +

      Go to Modules > Ceon URI Mapping (SEO) Config in the Zen Cart Admin and the module will be updated automagically!

      +
    • +
    +
  12. + +
  13. +

    Run the Installation Check

    + +

    The installation check will examine all the core files that must be modified for Ceon URI Mapping to work optimally, and warn you if any of the modifications are missing or out of date, again giving information on what you should do!

    + +

    A quick glance at this admin page should help you identify and fix any problems with the installation quickly and easily!

    + +
      +
    • +

      Go to Modules > Ceon URI Mapping (SEO) Config in the Zen Cart Admin.

      +
    • +
    • +

      Then go to the Installation Check tab and click on the link to open the Installation Check utility page.

      +
    • +
    • +

      The module will now automatically carry out the installation check.

      +
    • +
    • +

      If any errors are listed, follow the instructions given by the software.

      +
    • +
    +
  14. + +
  15. +

    That's it!

    + +

    Told you it was simple to upgrade!

    +
  16. +
+ +

Back to top

+ + +

Upgrading to Ceon URI Mapping 5.1.0 from Ceon URI Mapping 2.x/3.x

+

Ceon URI Mapping 4.x is a complete rewrite of the software.

+

Upgrading from an earlier version to 5.1.0 will take a little bit of time, but is easy to do.

+

The great thing is that once you've upgraded, not only will the software be better, but version 5.1.0 has a completely new file structure, and auto-upgrading functionality, which means that any subsequent upgrades (to 5.1.0, 4.2.2 etc.) will take just a few seconds!

+

So once v5.1.0 is installed, it'll be simple to keep up to date and to keep getting all the extra features new versions provide!

+ +
    +
  1. +

    Remove the old files used by the previously installed version of the module

    + +

    Since the module has been rewritten to use a new class based structure, many of the old files are no longer used and need to be removed.

    + +

    Please Note: The list below is exhaustive... it may well be that several of these files are not present in the store's folders... that's not a problem, some files only came with very specific versions of the software and may simply never have been part of the version of the software installed on the store's website.

    + +
    Folder and files to be deleted from the Admin directory
    + +

    Most Zen Cart stores have their admin directory renamed from the default of “admin”.

    +

    Delete any of the following files that exist in the store's “admin” directory, whatever it is called.

    + +
      +
    • admin/includes/classes/transliteration (Delete this folder and all files in it)
    • +
    • admin/includes/classes/class.String.php
    • +
    • admin/includes/classes/class.Transliteration.php
    • +
    • admin/includes/functions/extra_functions/ceon_uri_mapping.php
    • +
    • admin/ceon_uri_mapping_auto_upgrade.php
    • +
    + +
    Files to be deleted from the main store directory
    + +
      +
    • includes/extra_datafiles/ceon_uri_mapping_config.php
    • +
    • includes/functions/ceon_uri_mapping_functions.php
    • +
    • includes/init_includes/init_ceon_uri_mapping.php
    • +
    • includes/classes/class.String.php
    • +
    • includes/templates/template_default/jscript/jscript_ceon_uri_mapping_canonical_link_header_tag.php
    • +
    +
  2. + +
  3. +

    Copy the New/Updated Files across

    + +

    These are the new and updated files which make up this module. Copy them all into their respective folders in the Zen Cart installation, overwriting any which remain from the previously installed version.

    + +

    Most files are used by all Zen Cart versions.

    +

    There is an additional file which is used only by Zen Cart 1.3.x; if the store uses Zen Cart 1.3.x, be sure to copy this extra file across from the folder files/additional_file_for_1.3.x.

    + +
    New/updated files for the Admin directory
    + +

    Most Zen Cart stores have their admin directory renamed from the default of “admin”.

    +

    Copy all of the folders and files from the files/admin folder into the store's “admin” directory, whatever it is called.

    +

    The files are already in the correct directory structure, so a single drag-and-drop of the folders/files in the files/admin folder into the “admin” directory for the store will put the files in the correct locations.

    +

    Please do not copy the files individually - there's simply no need - doing so often results in files being missed out!

    + +
      +
    • admin/images/ceon-button-logo.png
    • +
    • admin/images/ceon-input-fade-tb-gray-white.png
    • +
    • admin/images/ceon-tab-background.png
    • +
    • admin/images/ceon-tab-background-selected.png
    • +
    • admin/includes/classes/class.CeonURIMappingAdminCategoryPages.php
    • +
    • admin/includes/classes/class.CeonURIMappingAdminEZPagePages.php
    • +
    • admin/includes/classes/class.CeonURIMappingAdminManufacturerPages.php
    • +
    • admin/includes/classes/class.CeonURIMappingAdminProductPages.php
    • +
    • admin/includes/classes/class.CeonURIMappingConfigUtility.php
    • +
    • admin/includes/classes/class.CeonURIMappingInstallationCheck.php
    • +
    • admin/includes/classes/class.CeonURIMappingInstallOrUpgrade.php
    • +
    • admin/includes/classes/class.CeonURIMappingTabbedPanelAdminInterface.php
    • +
    • admin/includes/classes/class.CeonURIMappingVersion.php
    • +
    • admin/includes/classes/observers/class.CeonURIMappingAdminCategoriesObserver.php
    • +
    • admin/includes/classes/observers/class.CeonURIMappingAdminCopyObserver.php
    • +
    • admin/includes/classes/observers/class.CeonURIMappingAdminProductsObserver.php
    • +
    • admin/includes/classes/observers/class.CeonURIMappingDeleteCategoriesObserver.php
    • +
    • admin/includes/classes/observers/class.CeonURIMappingDeleteProductsObserver.php
    • +
    • admin/includes/classes/observers/class.CeonURIMappingLinkBuildAdmin.php
    • +
    • admin/includes/extra_datafiles/ceon_uri_mapping_database_tables.php
    • +
    • admin/includes/extra_datafiles/ceon_uri_mapping_filenames.php
    • +
    • admin/includes/extra_datafiles/ceon_uri_mapping_product_pages.php
    • +
    • admin/includes/init_includes/init_ceon_category_collect_info.php
    • +
    • admin/includes/init_includes/init_ceon_ezpages_collect_info.php
    • +
    • admin/includes/init_includes/init_ceon_manufacturers_collect_info.php
    • +
    • admin/includes/init_includes/init_ceon_product_collect_info.php
    • +
    • admin/includes/functions/extra_functions/ceon_uri_mapping_admin_page_reg.php
    • +
    • admin/includes/languages/english/extra_definitions/ceon_uri_mapping.php
    • +
    • admin/includes/languages/english/ceon_uri_mapping_admin_pages.php
    • +
    • admin/includes/languages/english/ceon_uri_mapping_category_pages.php
    • +
    • admin/includes/languages/english/ceon_uri_mapping_config.php
    • +
    • admin/includes/languages/english/ceon_uri_mapping_default_uri_parts.php
    • +
    • admin/includes/languages/english/ceon_uri_mapping_ezpage_pages.php
    • +
    • admin/includes/languages/english/ceon_uri_mapping_installation_check.php
    • +
    • admin/includes/languages/english/ceon_uri_mapping_manufacturer_pages.php
    • +
    • admin/includes/languages/english/ceon_uri_mapping_product_pages.php
    • +
    • admin/includes/languages/english/ceon_uri_mapping_tabbed_panel_admin_interface.php
    • +
    • admin/includes/auto_loaders/config.ceon_uri_mapping.php
    • +
    • admin/includes/auto_loaders/config.ceon_uri_mapping_admin_categories_observer.php
    • +
    • admin/includes/auto_loaders/config.ceon_uri_mapping_admin_category_delete_observer.php
    • +
    • admin/includes/auto_loaders/config.ceon_uri_mapping_admin_category_info.php
    • +
    • admin/includes/auto_loaders/config.ceon_uri_mapping_admin_copy_observer.php
    • +
    • admin/includes/auto_loaders/config.ceon_uri_mapping_admin_ezpages_info.php
    • +
    • admin/includes/auto_loaders/config.ceon_uri_mapping_admin_manufacturers_info.php
    • +
    • admin/includes/auto_loaders/config.ceon_uri_mapping_admin_product_delete_observer.php
    • +
    • admin/includes/auto_loaders/config.ceon_uri_mapping_admin_product_info.php
    • +
    • admin/includes/auto_loaders/config.ceon_uri_mapping_admin_products_observer.php
    • +
    • admin/includes/ceon_uri_mapping_javascript.php
    • +
    • admin/ceon_uri_mapping_config.php
    • +
    • admin/ceon_uri_mapping_installation_check.php
    • +
    + +
    Additional File for Zen Cart 1.3.x
    + +

    Copy the file from the files/additional_file_for_1.3.x/admin folder into the store's “admin” directory, whatever it is called.

    + +
      +
    • admin/includes/boxes/extra_boxes/ceon_uri_mapping_modules_dhtml.php
    • +
    + + +
    New/updated files for the main store directory
    + +

    Copy the includes folder from the files folder into the store's main directory.

    +

    The files are already in the correct directory structure, so a single drag-and-drop of the folder into the root directory for the store will put the files in the correct locations.

    +

    Please do not copy the files individually - there's simply no need - doing so often results in files being missed out!

    +

    Warning: Be careful NOT to copy the files from the files/includes folder into the store's admin/includes directory, they go in the includes directory which is alongside, not inside the store's admin directory.

    + +
      +
    • includes/classes/transliteration (* This directory and ALL files in it!)
    • +
    • includes/classes/class.CeonURIMappingAdmin.php
    • +
    • includes/classes/class.CeonURIMappingAdminCategories.php
    • +
    • includes/classes/class.CeonURIMappingAdminCategoriesProducts.php
    • +
    • includes/classes/class.CeonURIMappingAdminEZPages.php
    • +
    • includes/classes/class.CeonURIMappingAdminManufacturers.php
    • +
    • includes/classes/class.CeonURIMappingAdminProducts.php
    • +
    • includes/classes/class.CeonURIMappingDBLookup.php
    • +
    • includes/classes/class.CeonURIMappingHandler.php
    • +
    • includes/classes/class.CeonURIMappingHandlerBase.php
    • +
    • includes/classes/class.CeonURIMappingHREFLinkBuilder.php
    • +
    • includes/classes/class.CeonString.php
    • +
    • includes/classes/class.Transliteration.php
    • +
    • includes/classes/observers/class.ceon_ask_a_question.php
    • +
    • includes/classes/observers/class.ceon_uri_mapping_link_build.php
    • +
    • includes/classes/observers/class.ceon_canonical.php
    • +
    • includes/extra_datafiles/ceon_uri_mapping_database_tables.php
    • +
    • includes/extra_datafiles/ceon_uri_mapping_filenames.php
    • +
    • includes/extra_datafiles/ceon_uri_mapping_product_pages.php
    • +
    • includes/init_includes/init_ceon_currencies.php
    • +
    • includes/init_includes/init_ceon_uri_mapping_sessions.php
    • +
    • includes/auto_loaders/config.ceon_ask_a_question.php
    • +
    • includes/auto_loaders/config.ceon_canonical.php
    • +
    • includes/auto_loaders/config.ceon_currencies.php
    • +
    • includes/auto_loaders/config.ceon_uri_mapping.php
    • +
    + + +
    Installing to Zen Cart 1.5.7
    + +

    Copy all of the folders and files from the files/zen_cart_version_specific/v1.5.7/admin folder into the store's “admin” directory, whatever it is called.

    +

    The files are already in the correct directory structure, so a single drag-and-drop of the folders/files in the files/admin folder into the “admin” directory for the store will put the files in the correct locations.

    +

    Please do not copy the files individually - there's simply no need - doing so often results in files being missed out!

    + +
      +
    • admin/includes/classes/observers/class.CeonURIMappingJavaScriptLoader.php
    • +
    • admin/includes/auto_loaders/config.ceon_uri_mapping_admin_javascript_loader.php
    • +
    +
  4. + +
  5. +

    Update the Zen Cart Core Files used by Ceon URI Mapping

    + +

    All of the core Zen Cart files that were modified for the previously installed version must be updated to work with the new version.

    + +

    There are also some additional files which need to be modified.

    + +

    As is mentioned above, this will take a little time, but subsequent versions of the software are unlikely to require further core file modifications so it's important to “get this step over and done with”.

    + +
      +
    • +

      If these files were only modified when installing a previous version of Ceon URI Mapping, then it should be possible to simply back up each file and then simply overwrite the file with the pre-modified sample file from this distribution, for the version of Zen Cart being used by the store.

      +
    • +
    • +

      However, if any of these core files have also been modified for the store for other third party modules, the changes within the sample files included in this distribution must be applied carefully to the core files.

      +

      The changes are clearly marked within the sample files in the distribution and should be easy enough to copy across, especially if a “diff” software package (such as the free WinMerge or the excellent, commercial, Beyond Compare) is used.

      + +
        +
      • +

        Most of the changes between earlier versions are made at the exact same place as they were previously, so it should be quite easy to “merge” the updated code.

        +
      • +
      • +

        Don't forget though that some of the files to be modified were not modified for previous versions, so no existing Ceon URI Mapping code will be present in those files.

        +
      • +
      • +

        Also, take care to note the numbers in the “marker comments” (1 of X) - for some files there are now fewer modifications than there were previously, so some modifications will also have to be removed when adding the updated modifications.

        +
      • +
      + +

      Instructions on how to copy across the modifications necessary for this module - to the version of the respective core files which have previously been modified - can be found in this FAQ.

      + +
    • +
    + +
    Modified core files for the Admin directory (Primarily for Zen Cart Version 1.5.4 and below)
    + +

    Please Note: If copying the files across, and the admin folder for the store is not named “admin”, then care must be taken to place the files from within the modified_core_files/ZC-version/admin folder into the store's admin folder. Simply copying across the modified_core_files/ZC-version/admin folder won't work!

    + +

    If any of the “Product Types” (e.g. Document General or Product Book) aren't used by the store, there's no real need to copy/modify the files in the respective directories (e.g. document_general or product_book). However, error messages will be displayed in the “Installation Check” if it detects unmodified files, so it is best to just take a minute or two and make the modifications now anyway.

    + +
      +
    • admin/includes/functions/general.php
    • +
    • admin/includes/functions/html_output.php
    • +
    • admin/includes/modules/document_general/collect_info.php
    • +
    • admin/includes/modules/document_general/preview_info.php
    • +
    • admin/includes/modules/document_product/collect_info.php
    • +
    • admin/includes/modules/document_product/preview_info.php
    • +
    • admin/includes/modules/product/collect_info.php
    • +
    • admin/includes/modules/product/preview_info.php
    • +
    • admin/includes/modules/product_book/collect_info.php
    • +
    • admin/includes/modules/product_book/copy_to_confirm.php
    • +
    • admin/includes/modules/product_book/preview_info.php
    • +
    • admin/includes/modules/product_book/update_product.php
    • +
    • admin/includes/modules/product_free_shipping/collect_info.php
    • +
    • admin/includes/modules/product_free_shipping/preview_info.php
    • +
    • admin/includes/modules/product_music/collect_info.php
    • +
    • admin/includes/modules/product_music/copy_to_confirm.php
    • +
    • admin/includes/modules/product_music/preview_info.php
    • +
    • admin/includes/modules/product_music/update_product.php
    • +
    • admin/includes/modules/copy_to_confirm.php
    • +
    • admin/includes/modules/move_product_confirm.php
    • +
    • admin/includes/modules/sidebox_move_product.php
    • +
    • admin/includes/modules/update_product.php
    • +
    • admin/categories.php
    • +
    • admin/document_general.php
    • +
    • admin/document_product.php
    • +
    • admin/ezpages.php
    • +
    • admin/manufacturers.php
    • +
    • admin/product.php
    • +
    • admin/product_free_shipping.php
    • +
    • admin/product_music.php
    • +
    + +
    Modified core files for the main store directory
    + +

    Some versions of Zen Cart require modifications that others don't. Just apply the modifications to files that are present in the modified_core_files folder for the version of Zen Cart the store uses.

    + +

    If a file doesn't exist in the overrides directory, simply copy the pre-modified sample file from this distribution, for the version of Zen Cart being used by the store, into the overrides folder.

    + +
      +
    • includes/auto_loaders/config.canonical.php (Zen Cart 1.3.0 - 1.3.8)
    • +
    • includes/functions/html_output.php (Zen Cart 1.3.0 - 1.5.4)
    • +
    • includes/init_includes/overrides/init_add_crumbs.php (Zen Cart 1.3.5 - 1.5.x)
    • +
    • includes/init_includes/overrides/init_canonical.php (Zen Cart 1.3.0 - 1.5.4)
    • +
    • includes/init_includes/overrides/init_currencies.php (Zen Cart 1.3.0 - 1.3.7)
    • +
    • includes/init_includes/overrides/init_sessions.php (Zen Cart 1.3.9/1.3.9b)
    • +
    +
  6. + +
  7. +

    [Upgrading From Ceon URI Mapping 2.0.0 - 3.6.3] Remove Old Core File Modifications

    + +

    If the store is upgrading from version prior to 3.8.0 then there are some Zen Cart core files which will have been modified for the previous version but which no longer require any modifications.

    + +

    It is advised that these modifications are removed:

    + +
      +
    • +

      The files admin/includes/modules/delete_product_confirm.php and admin/includes/modules/product_music/delete_product_confirm.php no longer need to be modified.

      +

      The modifications can be removed by editing these files and removing all the code including and between the // BEGIN CEON URI MAPPING 1 of 1 markers, or, if the files have not been modified for any other third party module, by copying over the files with “fresh” versions from the original Zen Cart distribution for the version of Zen Cart the store uses.

      +
    • +
    +
  8. + +
  9. +

    [Upgrading From Ceon URI Mapping 2.0.0 - 3.4.3] Template Files For Zen Cart 1.3.x

    + +

    This upgrade step doesn't apply for stores already using version 3.6.0 or later.

    + +

    A few of the standard Zen Cart template files require modifications to work with this module as they weren't built in a way that supports static URIs.

    +

    Modifications to existing template files, for static URIs to be able to be used by some of the standard Zen Cart sideboxes and by the product listing filter forms, have been made to “clean” copies of the template files from a “fresh” installation of Zen Cart and are included as “sample” files in this distribution.

    + +
      +
    • +

      If any of these template files haven't already been modified for the store, the sample files included in this distribution can be copied into the store's template directory and will then override the standard versions of the files included in the Zen Cart distribution.

    • +
    • +

      If any of these template files have already been modified for the store, then the changes necessary to support the use of static URIs must be made to the store's modified file(s). The changes are clearly marked within the sample files in the distribution and should be easy enough to copy across, especially if a “diff” software package (such as the free WinMerge or the excellent, commercial, Beyond Compare) is used.

      +

      Instructions on how to copy across the modifications necessary for this module - to template files which have previously been modified - can be found in this FAQ.

    • + +
    + +

    The sample template files can be found within the template_override_files folder in the distribution. They are:

    + +
      +
    • includes/templates/STORE-TEMPLATE/sideboxes/tpl_manufacturers_select.php
    • +
    • includes/templates/STORE-TEMPLATE/sideboxes/tpl_music_genres_select.php
    • +
    • includes/templates/STORE-TEMPLATE/sideboxes/tpl_record_company_select.php
    • +
    • includes/templates/STORE-TEMPLATE/templates/tpl_index_product_list.php
    • +
    +
  10. + +
  11. +

    [Zen Cart Versions 1.3.0 - 1.3.8 Only] Enable Canonical URI Support

    + +

    This upgrade step doesn't apply for stores using Zen Cart version 1.3.9 or 1.5.0.

    + +

    Canonical URI support is an absolutely essential feature of this module, so it must be enabled properly.

    + +

    If it isn't, search engines will penalise the site and it may well drop down in its rankings!

    + +

    Zen Cart versions 1.3.9 and 1.5.0 have the necessary canonical code built into them already but previous versions of Zen Cart must have a file modified to add this support.

    + +

    The file includes/templates/STORE-TEMPLATE/common/html_header.php must be modified.

    + +
      +
    • +

      If the template file includes/templates/STORE-TEMPLATE/common/html_header.php does not yet exist, then simply copy across the file from the template_override_files folder for the version of Zen Cart the store is using.

      +
    • +
    • +

      If the template file includes/templates/STORE-TEMPLATE/common/html_header.php does exist for the store, then the simple change necessary for canonical URI support must be made to the store's html_header.php.

      +

      The change is clearly marked within the sample file in the distribution and should be easy enough to copy across, especially if a “diff” software package (such as the free WinMerge or the excellent, commercial, Beyond Compare) is used.

      +

      Instructions on how to copy across the modifications necessary for this module - to existing template files - can be found in this FAQ.

    • +
    +
  12. + +
  13. +

    Automatically update the database and configuration

    + +

    This software comes with some intelligent upgrade and error checking functionality which makes it easy to keep the database and configuration up to date.

    + +
      +
    • +

      Go to Modules > Ceon URI Mapping (SEO) Config in the Zen Cart Admin and the module will be updated automagically!

      +
    • +
    +
  14. + +
  15. +

    Check/Adjust the New Auto-manage Settings for Products' “Reviews” and “Tell-A-Friend” pages

    + +

    This new version of the software has completely rewritten functionality for managing the URI mappings of “Product Related Pages”, such as the various “Reviews” pages and the “Tell-A-Friend” pages.

    + +

    In versions prior to 4.0.0, a bug in the software meant that the URI mappings being built for these pages only worked correctly for sites using one language.

    + +

    For stores that support multiple languages, it is essential to configure the new “Auto-managed Product Page URIs” settings.

    + +

    Even for stores that don't multiple languages, it is highly recommended to check these settings as, if the store doesn't use any of the “Reviews” or “Tell-A-Friend” pages, the settings can be changed so that the store's URI Mapping database doesn't fill up with lots of unused URI Mappings - this makes the software faster and more efficient, minimising preventable slowdown of the site!

    + +
      +
    • +

      Go to Modules > Ceon URI Mapping (SEO) Config in the Zen Cart Admin.

      +
    • +
    • +

      Then go to the Auto-managed Product Page URIs tab, adjust the settings appropriately for the store, and click “Save”.

      +
    • +
    +
  16. + +
  17. +

    Run the Installation Check

    + +

    This new version of the software comes with an amazingly handy Installation Check utility.

    + +

    The installation check will examine the store's configuration files and warn you about any mistakes in the files which you need to correct, and will even provide full information about what you should do.

    + +

    It will also check all the core files that must be modified for Ceon URI Mapping to work optimally, and warn you if any of the modifications are missing or out of date, again giving information on what you should do!

    + +

    A quick glance at this new admin page should help you identify and fix any problems with the installation quickly and easily!

    + +
      +
    • +

      Go to Modules > Ceon URI Mapping (SEO) Config in the Zen Cart Admin.

      +
    • +
    • +

      Then go to the Installation Check tab and click on the link to open the Installation Check utility page.

      +
    • +
    • +

      The module will now automatically carry out the installation check.

      +
    • +
    • +

      If any errors are listed, follow the instructions given by the software.

      +
    • +
    +
  18. + +
  19. +

    [OPTIONAL but RECOMMENDED] Update the Rewrite Rule

    + +

    The suggested “Example” Rewrite Rule supplied with this distribution has been further optimised, and should result in [slight, but welcome] performance gains for sites using the new format.

    + +

    To make things as easy as possible, this new version of the software comes with handy new “Example Rewrite Rule” functionality.

    + +

    The module will analyse the filesystem on the server and attempt to build a rewrite rule for the store that has any necessary exclusions added.

    + +
      +
    • +

      Go to Modules > Ceon URI Mapping (SEO) Config in the Zen Cart Admin.

      +
    • +
    • +

      Then go to the Installation Check tab and click on the link to open the Installation Check utility page.

      +
    • +
    • +

      Since any errors with the store's configuration files should have been fixed after running the installation check in the previous step, the “Example Rewrite Rule” panel will be displayed.

      +
    • +
    • +

      Read the instructions given in that panel and copy and paste the new Rewrite Rule to the store's .htaccess file/VirtualHost directive, if desired.

      +
    • +
    • +

      Remember this is just an Example rewrite rule, and although it's likely to be better than that used for a previous version of the software, it will not have any customisations made by whoever added the original rewrite rule... so be sure to carefully merge the changes as appropriate - this is your responsibility!

      +
    • +
    +
  20. + +
  21. +

    [OPTIONAL but RECOMMENDED] Configure the Google Sitemap (XML) Module

    + +

    If the store uses the Google Sitemap module, it needs to be configured to work better with static URIs.

    + +

    Otherwise, the store's rankings may be penalised because of links in the sitemap redirecting to other links.

    + +
      +
    • +

      Go to Configuration > Sitemap XML in the Zen Cart Admin.

      +
    • +
    • +

      Make sure that “Generate language_id for default language” is set to “false”.

      +
    • +
    +
  22. + +
  23. +

    [OPTIONAL but RECOMMENDED] Take a note of the FAQs

    + +

    Lots of people ask us the same questions. It's worth reading the FAQs.

    + +

    At the very least, here are some of the most popular questions that are covered:

    + + +
  24. + +
  25. +

    That's it!

    + +

    It may have taken a wee while this time, but the above should all have been fairly easy to do. And the new Installation Check certainly helps!

    + +

    As mentioned previously, that's likely to be the last involved upgrade of this software... upgrading to subsequent versions will most likely just be a matter of overwriting some files, taking only a few seconds.

    + +

    Enjoy the new version of the software, there are hundreds of hours of work in it and we hope you like all the new/improved functionality!

    +
  26. +
+ +

Back to top

+ + + +
+
+ + + + + \ No newline at end of file diff --git a/GEAENDERTE DATEIEN/includes/init_includes/overrides/init_add_crumbs.php b/GEAENDERTE DATEIEN/includes/init_includes/overrides/init_add_crumbs.php new file mode 100644 index 0000000..677179e --- /dev/null +++ b/GEAENDERTE DATEIEN/includes/init_includes/overrides/init_add_crumbs.php @@ -0,0 +1,89 @@ +add(HEADER_TITLE_CATALOG, zen_href_link(FILENAME_DEFAULT)); +/** + * add category names or the manufacturer name to the breadcrumb trail + */ +if (!isset($robotsNoIndex)) $robotsNoIndex = false; +// might need isset($_GET['cPath']) later ... right now need $cPath or breaks breadcrumb from sidebox etc. +if (isset($cPath_array) && isset($cPath)) { + for ($i=0, $n=sizeof($cPath_array); $i<$n; $i++) { + $categories_query = "select categories_name + from " . TABLE_CATEGORIES_DESCRIPTION . " + where categories_id = '" . (int)$cPath_array[$i] . "' + and language_id = '" . (int)$_SESSION['languages_id'] . "'"; + + $categories = $db->Execute($categories_query); + if ($categories->RecordCount() > 0) { + $breadcrumb->add($categories->fields['categories_name'], zen_href_link(FILENAME_DEFAULT, 'cPath=' . implode('_', array_slice($cPath_array, 0, ($i+1))))); + } elseif(SHOW_CATEGORIES_ALWAYS == 0) { + // if invalid, set the robots noindex/nofollow for this page + $robotsNoIndex = true; + break; + } + } +} +/** + * add get terms (e.g manufacturer, music genre, record company or other user defined selector) to breadcrumb + */ +$sql = "select * + from " . TABLE_GET_TERMS_TO_FILTER; +$get_terms = $db->execute($sql); +while (!$get_terms->EOF) { + if (isset($_GET[$get_terms->fields['get_term_name']])) { + $sql = "select " . $get_terms->fields['get_term_name_field'] . " + from " . constant($get_terms->fields['get_term_table']) . " + where " . $get_terms->fields['get_term_name'] . " = " . (int)$_GET[$get_terms->fields['get_term_name']]; + $get_term_breadcrumb = $db->execute($sql); + if ($get_term_breadcrumb->RecordCount() > 0) { +// BEGIN CEON URI MAPPING 1 of 2 + // Set the required parameters so that an attempt can be made to map the link to any static URI for the + // filtered page + $typefilter_parameters = ''; + + if ($get_terms->fields['get_term_name'] != 'manufacturers_id') { + $typefilter_parameters = 'typefilter=' . str_replace('_id', '', $get_terms->fields['get_term_name']) . '&'; + } + + $typefilter_parameters .= + $get_terms->fields['get_term_name'] . '=' . $_GET[$get_terms->fields['get_term_name']]; + + $breadcrumb->add($get_term_breadcrumb->fields[$get_terms->fields['get_term_name_field']], + zen_href_link(FILENAME_DEFAULT, $typefilter_parameters)); + /* +// END CEON URI MAPPING 1 of 2 + $breadcrumb->add($get_term_breadcrumb->fields[$get_terms->fields['get_term_name_field']], zen_href_link(FILENAME_DEFAULT, $get_terms->fields['get_term_name'] . "=" . $_GET[$get_terms->fields['get_term_name']])); +// BEGIN CEON URI MAPPING 2 of 2 + */ +// END CEON URI MAPPING 2 of 2 + } + } + $get_terms->movenext(); +} +/** + * add the products model to the breadcrumb trail + */ +if (isset($_GET['products_id'])) { + $productname_query = "select products_name + from " . TABLE_PRODUCTS_DESCRIPTION . " + where products_id = '" . (int)$_GET['products_id'] . "' + and language_id = '" . $_SESSION['languages_id'] . "'"; + + $productname = $db->Execute($productname_query); + + if ($productname->RecordCount() > 0) { + $breadcrumb->add($productname->fields['products_name'], zen_href_link(zen_get_info_page($_GET['products_id']), 'cPath=' . $cPath . '&products_id=' . $_GET['products_id'])); + } +} diff --git a/GEAENDERTE DATEIEN/includes/templates/DEINTEMPLATE/common/html_header.php b/GEAENDERTE DATEIEN/includes/templates/DEINTEMPLATE/common/html_header.php new file mode 100644 index 0000000..ec9be46 --- /dev/null +++ b/GEAENDERTE DATEIEN/includes/templates/DEINTEMPLATE/common/html_header.php @@ -0,0 +1,147 @@ + tag
+ * + + * @copyright Copyright 2003-2022 Zen Cart Development Team + * Zen Cart German Version - www.zen-cart-pro.at + * @copyright Portions Copyright 2003 osCommerce + * @license https://www.zen-cart-pro.at/license/3_0.txt GNU General Public License V3.0 + * @version $Id: html_header.php for CEON Uri Mapping 2022-02-18 20:06:39Z webchills $ + */ +if (!defined('IS_ADMIN_FLAG')) { + die('Illegal Access'); +} + +$zco_notifier->notify('NOTIFY_HTML_HEAD_START', $current_page_base, $template_dir); + +// Prevent clickjacking risks by setting X-Frame-Options:SAMEORIGIN +header('X-Frame-Options:SAMEORIGIN'); + +/** + * load the module for generating page meta-tags + */ +require(DIR_WS_MODULES . zen_get_module_directory('meta_tags.php')); +/** + * output main page HEAD tag and related headers/meta-tags, etc + */ +?> +isMobile(); + $isTablet = $detect->isTablet(); + if (!isset($layoutType)) $layoutType = ($isMobile ? ($isTablet ? 'tablet' : 'mobile') : 'default'); + if (!isset($layoutType)) $layoutType = 'legacy'; + if (!isset($max_display_page_links)) $max_display_page_links = ($layoutType == 'mobile' ? MAX_DISPLAY_PAGE_LINKS_MOBILE : MAX_DISPLAY_PAGE_LINKS); + if (!isset($paginateAsUL)) $paginateAsUL = $layoutType == 'mobile' || (isset($isMobile) && $isMobile) || (isset($isTablet) && $isTablet); + if (!isset($flag_disable_left)) { + $flag_disable_left = false; + } + if (!isset($flag_disable_right)) { + $flag_disable_right = false; + } + $display_as_mobile = ($detect->isMobile() && !$detect->isTablet() || $_SESSION['layoutType'] == 'mobile' or $detect->isTablet() || $_SESSION['layoutType'] == 'tablet'); + + +?> + +> + +<?php echo META_TAG_TITLE; ?> + + + + + + + + + + + + + + + + + + + + + + +catalog_languages) > 1) { + foreach($lng->catalog_languages as $key => $value) { + //bof CEON uri mapping + //CEON uri mapping produces a canonical link with no extra parameters: so no "?" after the url. + echo '' . "\n"; + //eof CEON uri mapping + } +} +// EOF hreflang for multilingual sites +?> + + + + + + + + +get('status') && (!isset($Ajax) || !$Ajax->status())){ + $RI_CJLoader->autoloadLoaders(); + $RI_CJLoader->loadCssJsFiles(); + $RC_loader_files = $RI_CJLoader->header(); + + if (!empty($RC_loader_files['meta'])) + foreach($RC_loader_files['meta'] as $file) { + include($file['src']); + echo "\n"; + } + + foreach($RC_loader_files['css'] as $file){ + if (!$file['defer']) { + if($file['include']) { + include($file['src']); + } else if (!$RI_CJLoader->get('minify_css')) { + + echo ''."\n"; + } else { + + echo ''."\n"; + } + } + else { + if (!$RI_CJLoader->get('minify_css') || $file['external']) { + echo ''."\n"; + } else { + echo ''."\n"; + } + } + } +} +?> +get_template_dir('super_data_head.php',DIR_WS_TEMPLATE, $current_page_base,'templates'). '/super_data_head.php'); ?> +notify('NOTIFY_HTML_HEAD_END', $current_page_base); +?> + + diff --git a/GEAENDERTE DATEIEN/includes/templates/DEINTEMPLATE/sideboxes/tpl_manufacturers_select.php b/GEAENDERTE DATEIEN/includes/templates/DEINTEMPLATE/sideboxes/tpl_manufacturers_select.php new file mode 100644 index 0000000..262c5c5 --- /dev/null +++ b/GEAENDERTE DATEIEN/includes/templates/DEINTEMPLATE/sideboxes/tpl_manufacturers_select.php @@ -0,0 +1,50 @@ +'; + $content.= zen_draw_form('manufacturers_form', zen_href_link(FILENAME_DEFAULT, '', $request_type, false), 'get'); + $content .= zen_draw_hidden_field('main_page', FILENAME_DEFAULT); + $content .= zen_draw_label(PLEASE_SELECT, 'select-manufacturers_id', 'class="sr-only"'); +// BEGIN CEON URI MAPPING 1 of 2 + // Build the JavaScript necessary to have the manufacturer selection directly redirect to the page for the + // manufacturer. This will result in the static URI for the manufacturer being used if one is associated with the + // manufacturers page, or simply the default dynamic URI being used + $content .= '\n"; + + $content .= zen_draw_pull_down_menu('manufacturers_id', $manufacturer_sidebox_array, + (isset($_GET['manufacturers_id']) ? $_GET['manufacturers_id'] : ''), + 'onchange="javascript:ceon_uri_mappingManufacturerSideboxRedirect(this);" size="' . MAX_MANUFACTURERS_LIST . + '" style="width: 90%; margin: auto;"') . zen_hide_session_id(); +/* +// END CEON URI MAPPING 1 of 2 + $content .= zen_draw_pull_down_menu('manufacturers_id', $manufacturer_sidebox_array, (isset($_GET['manufacturers_id']) ? $_GET['manufacturers_id'] : ''), 'onchange="this.form.submit();" size="' . MAX_MANUFACTURERS_LIST . '" style="width: 90%; margin: auto;"') . zen_hide_session_id(); +// BEGIN CEON URI MAPPING 2 of 2 +*/ +// END CEON URI MAPPING 2 of 2 + $content .= ''; + $content .= ''; diff --git a/GEAENDERTE DATEIEN/includes/templates/DEINTEMPLATE/sideboxes/tpl_music_genres_select.php b/GEAENDERTE DATEIEN/includes/templates/DEINTEMPLATE/sideboxes/tpl_music_genres_select.php new file mode 100644 index 0000000..0063aef --- /dev/null +++ b/GEAENDERTE DATEIEN/includes/templates/DEINTEMPLATE/sideboxes/tpl_music_genres_select.php @@ -0,0 +1,51 @@ +'; + $content .= zen_draw_form('music_genres_form', zen_href_link(FILENAME_DEFAULT, '', $request_type, false), 'get'); + $content .= zen_draw_hidden_field('main_page', FILENAME_DEFAULT) . zen_hide_session_id() . zen_draw_hidden_field('typefilter', 'music_genre'); + $content .= zen_draw_label(PLEASE_SELECT, 'select-music_genre_id', 'class="sr-only"'); +// BEGIN CEON URI MAPPING 1 of 2 + // Build the JavaScript necessary to have the music genre selection directly redirect to the page for the music + // genre. This will result in the static URI for the music genre being used if one is associated with the music + // genre page, or simply the default dynamic URI being used + $content .= '\n"; + + $content .= zen_draw_pull_down_menu('music_genre_id', $music_genres_array, + (isset($_GET['music_genre_id']) ? $_GET['music_genre_id'] : ''), + 'onchange="javascript:ceon_uri_mappingMusicGenreSideboxRedirect(this);" size="' . MAX_MUSIC_GENRES_LIST . + '" style="width: 90%; margin: auto;"') . zen_hide_session_id(); +/* +// END CEON URI MAPPING 1 of 2 + $content .= zen_draw_pull_down_menu('music_genre_id', $music_genres_array, (isset($_GET['music_genre_id']) ? $_GET['music_genre_id'] : ''), 'onchange="this.form.submit();" size="' . MAX_MUSIC_GENRES_LIST . '" style="width: 90%; margin: auto;"'); +// BEGIN CEON URI MAPPING 2 of 2 +*/ +// END CEON URI MAPPING 2 of 2 + $content .= ''; + $content .= ''; + diff --git a/GEAENDERTE DATEIEN/includes/templates/DEINTEMPLATE/sideboxes/tpl_record_company_select.php b/GEAENDERTE DATEIEN/includes/templates/DEINTEMPLATE/sideboxes/tpl_record_company_select.php new file mode 100644 index 0000000..a4f4d19 --- /dev/null +++ b/GEAENDERTE DATEIEN/includes/templates/DEINTEMPLATE/sideboxes/tpl_record_company_select.php @@ -0,0 +1,51 @@ +'; + $content .= zen_draw_form('record_company_form', zen_href_link(FILENAME_DEFAULT, '', $request_type, false), 'get'); + $content .= zen_draw_hidden_field('main_page', FILENAME_DEFAULT) . zen_hide_session_id() . zen_draw_hidden_field('typefilter', 'record_company'); + $content .= zen_draw_label(PLEASE_SELECT, 'select-record_company_id', 'class="sr-only"'); +// BEGIN CEON URI MAPPING 1 of 2 + // Build the JavaScript necessary to have the record company selection directly redirect to the page for the + // record company. This will result in the static URI for the record company being used if one is associated with + // the record company page, or simply the default dynamic URI being used + $content .= '\n"; + + $content .= zen_draw_pull_down_menu('record_company_id', $record_company_array, + (isset($_GET['record_company_id']) ? $_GET['record_company_id'] : ''), + 'onchange="javascript:ceon_uri_mappingRecordCompanySideboxRedirect(this);" size="' . MAX_RECORD_COMPANY_LIST . + '" style="width: 90%; margin: auto;"') . zen_hide_session_id(); +/* +// END CEON URI MAPPING 1 of 2 + $content .= zen_draw_pull_down_menu('record_company_id', $record_company_array, (isset($_GET['record_company_id']) ? $_GET['record_company_id'] : ''), 'onchange="this.form.submit();" size="' . MAX_RECORD_COMPANY_LIST . '" style="width: 90%; margin: auto;"'); +// BEGIN CEON URI MAPPING 2 of 2 +*/ +// END CEON URI MAPPING 2 of 2 + $content .= ''; + $content .= ''; diff --git a/GEAENDERTE DATEIEN/includes/templates/DEINTEMPLATE/templates/tpl_index_product_list.php b/GEAENDERTE DATEIEN/includes/templates/DEINTEMPLATE/templates/tpl_index_product_list.php new file mode 100644 index 0000000..102911a --- /dev/null +++ b/GEAENDERTE DATEIEN/includes/templates/DEINTEMPLATE/templates/tpl_index_product_list.php @@ -0,0 +1,272 @@ + + * Displays product-listing when a particular category/subcategory is selected for browsing + * + * @package templateSystem + * @copyright Copyright 2003-2022 Zen Cart Development Team + * Zen Cart German Version - www.zen-cart-pro.at + * @copyright Portions Copyright 2003 osCommerce + * @license https://www.zen-cart-pro.at/license/3_0.txt GNU General Public License V3.0 + * @version $Id: tpl_index_product_list.php for CEON Uri Mapping 2022-02-18 20:08:58Z webchills $ + */ +?> +
+ +

+ + +
+ + + +
+ + +Execute($check_for_alpha); + + if ($do_filter_list || isset($_GET['alpha_filter_id']) || ($check_for_alpha->RecordCount() > 0 && PRODUCT_LIST_ALPHA_SORTER == 'true')) { +// BEGIN CEON URI MAPPING 1 of 2 + // Build form action as link to index page including specific query string parameters, so that a static URI can + // be used if one has been specified for the specific query string paramters + $ceon_uri_mapping_handling_being_used = false; + + if (isset($_GET['manufacturers_id']) && $_GET['manufacturers_id'] > 0) { + $ceon_uri_mapping_handling_being_used = true; + + $form_action_uri = zen_href_link(FILENAME_DEFAULT, 'manufacturers_id=' . $_GET['manufacturers_id']); + + echo zen_draw_form('filter', $form_action_uri, 'get'); + + echo ''; + + if (strpos($form_action_uri, 'manufacturers_id') !== false) { + // No static URI for manufacturer page so must allow form to rebuild manufacturer info + echo zen_draw_hidden_field('main_page', FILENAME_DEFAULT); + echo zen_draw_hidden_field('manufacturers_id', $_GET['manufacturers_id']); + } + } else if (isset($_GET['typefilter']) && $_GET['typefilter'] != '' && + isset($_GET[$_GET['typefilter'] . '_id']) && $_GET[$_GET['typefilter'] . '_id'] != '') { + + $ceon_uri_mapping_handling_being_used = true; + + $form_action_uri = zen_href_link(FILENAME_DEFAULT, 'typefilter=' . $_GET['typefilter'] . '&' . + $_GET['typefilter'] . '_id=' . $_GET[$_GET['typefilter'] . '_id']); + + echo zen_draw_form('filter', $form_action_uri, 'get'); + + echo ''; + + if (strpos($form_action_uri, 'typefilter') !== false) { + // No static URI for filtered page so must allow form to rebuild filter info + echo zen_draw_hidden_field('main_page', FILENAME_DEFAULT); + echo zen_draw_hidden_field('typefilter', $_GET['typefilter']); + echo zen_draw_hidden_field($_GET['typefilter'] . '_id', $_GET[$_GET['typefilter'] . '_id']); + } + } else if (isset($_GET['cPath']) && $_GET['cPath'] > 0) { + $ceon_uri_mapping_handling_being_used = true; + + $form_action_uri = zen_href_link(FILENAME_DEFAULT, 'cPath=' . $_GET['cPath']); + + echo zen_draw_form('filter', $form_action_uri, 'get'); + + echo ''; + + if (strpos($form_action_uri, 'cPath') !== false) { + // No static URI for category page so must allow form to rebuild category info + echo zen_draw_hidden_field('main_page', FILENAME_DEFAULT); + echo zen_draw_hidden_field('cPath', $_GET['cPath']); + } + } + + if ($ceon_uri_mapping_handling_being_used) { + echo zen_hide_session_id(); + } else { + // Filter type not supported by Ceon URI Mapping so use standard Zen Cart filter form code +// END CEON URI MAPPING 1 of 2 + $form = zen_draw_form('filter', zen_href_link(FILENAME_DEFAULT), 'get') . ''; +?> + + + + + +
+ +get_template_dir('tpl_modules_product_listing.php', DIR_WS_TEMPLATE, $current_page_base,'templates'). '/' . 'tpl_modules_product_listing.php'); +?> + + +Execute("select categories_id from " . TABLE_CATEGORIES . " where categories_id='" . $cPath . "'"); + if ($check_category->RecordCount() == 0) { + $new_products_category_id = '0'; + $cPath= ''; + } +?> + +Execute(SQL_SHOW_PRODUCT_INFO_MISSING); + +while (!$show_display_category->EOF) { +?> + +fields['configuration_key'] == 'SHOW_PRODUCT_INFO_MISSING_FEATURED_PRODUCTS') { ?> + +get_template_dir('tpl_modules_featured_products.php',DIR_WS_TEMPLATE, $current_page_base,'templates'). '/tpl_modules_featured_products.php'); ?> + + +fields['configuration_key'] == 'SHOW_PRODUCT_INFO_MISSING_SPECIALS_PRODUCTS') { ?> + +get_template_dir('tpl_modules_specials_default.php',DIR_WS_TEMPLATE, $current_page_base,'templates'). '/tpl_modules_specials_default.php'); ?> + + +fields['configuration_key'] == 'SHOW_PRODUCT_INFO_MISSING_NEW_PRODUCTS') { ?> + +get_template_dir('tpl_modules_whats_new.php',DIR_WS_TEMPLATE, $current_page_base,'templates'). '/tpl_modules_whats_new.php'); ?> + + +fields['configuration_key'] == 'SHOW_PRODUCT_INFO_MISSING_UPCOMING') { + include(DIR_WS_MODULES . zen_get_module_directory(FILENAME_UPCOMING_PRODUCTS)); + } +?> +MoveNext(); +} // !EOF +?> + + +Execute(SQL_SHOW_PRODUCT_INFO_LISTING_BELOW); +if ($error_categories == false and $show_display_category->RecordCount() > 0) { +?> + +Execute(SQL_SHOW_PRODUCT_INFO_LISTING_BELOW); + while (!$show_display_category->EOF) { +?> + +fields['configuration_key'] == 'SHOW_PRODUCT_INFO_LISTING_BELOW_FEATURED_PRODUCTS') { ?> + +get_template_dir('tpl_modules_featured_products.php',DIR_WS_TEMPLATE, $current_page_base,'templates'). '/tpl_modules_featured_products.php'); ?> + + +fields['configuration_key'] == 'SHOW_PRODUCT_INFO_LISTING_BELOW_SPECIALS_PRODUCTS') { ?> + +get_template_dir('tpl_modules_specials_default.php',DIR_WS_TEMPLATE, $current_page_base,'templates'). '/tpl_modules_specials_default.php'); ?> + + +fields['configuration_key'] == 'SHOW_PRODUCT_INFO_LISTING_BELOW_NEW_PRODUCTS') { ?> + +get_template_dir('tpl_modules_whats_new.php',DIR_WS_TEMPLATE, $current_page_base,'templates'). '/tpl_modules_whats_new.php'); ?> + + +fields['configuration_key'] == 'SHOW_PRODUCT_INFO_LISTING_BELOW_UPCOMING') { + include(DIR_WS_MODULES . zen_get_module_directory(FILENAME_UPCOMING_PRODUCTS)); + } +?> +MoveNext(); + } // !EOF +?> + + + +
diff --git a/GEAENDERTE DATEIEN/includes/templates/DEINTEMPLATE_RESPONSIVE/common/html_header.php b/GEAENDERTE DATEIEN/includes/templates/DEINTEMPLATE_RESPONSIVE/common/html_header.php new file mode 100644 index 0000000..b2e34e3 --- /dev/null +++ b/GEAENDERTE DATEIEN/includes/templates/DEINTEMPLATE_RESPONSIVE/common/html_header.php @@ -0,0 +1,163 @@ + tag
+ * + * @copyright Copyright 2003-2022 Zen Cart Development Team + * Zen Cart German Version - www.zen-cart-pro.at + * @copyright Portions Copyright 2003 osCommerce + * @license https://www.zen-cart-pro.at/license/3_0.txt GNU General Public License V3.0 + * @version $Id: html_header.php for CEON Uri Mapping 2022-02-18 20:02:39Z webchills $ + */ +if (!defined('IS_ADMIN_FLAG')) { + die('Illegal Access'); +} +$zco_notifier->notify('NOTIFY_HTML_HEAD_START', $current_page_base, $template_dir); + +// Prevent clickjacking risks by setting X-Frame-Options:SAMEORIGIN +header('X-Frame-Options:SAMEORIGIN'); +/** + * load the module for generating page meta-tags + */ +require(DIR_WS_MODULES . zen_get_module_directory('meta_tags.php')); +/** + * output main page HEAD tag and related headers/meta-tags, etc + */ +?> +isMobile(); + $isTablet = $detect->isTablet(); + if (!isset($layoutType)) $layoutType = ($isMobile ? ($isTablet ? 'tablet' : 'mobile') : 'default'); + $paginateAsUL = true; + + +?> + +> + + + <?php echo META_TAG_TITLE; ?> + + + + + + + + + + + + + + + + + + + + +catalog_languages) > 1) { + foreach($lng->catalog_languages as $key => $value) { + //bof CEON uri mapping + //CEON uri mapping produces a canonical link with no extra parameters: so no "?" after the url. + echo '' . "\n"; + //eof CEON uri mapping + } + } + // EOF hreflang for multilingual sites +?> + + + + + + + + + + + +get('status') && (!isset($Ajax) || !$Ajax->status())){ + $RI_CJLoader->autoloadLoaders(); + $RI_CJLoader->loadCssJsFiles(); + $RC_loader_files = $RI_CJLoader->header(); + + if (!empty($RC_loader_files['meta'])) + foreach($RC_loader_files['meta'] as $file) { + include($file['src']); + echo "\n"; + } + + foreach($RC_loader_files['css'] as $file){ + if (!$file['defer']) { + if($file['include']) { + include($file['src']); + } else if (!$RI_CJLoader->get('minify_css')) { + + echo ''."\n"; + } else { + + echo ''."\n"; + } + } + else { + if (!$RI_CJLoader->get('minify_css') || $file['external']) { + echo ''."\n"; + } else { + echo ''."\n"; + } + } + } +} +?> +get_template_dir('super_data_head.php',DIR_WS_TEMPLATE, $current_page_base,'templates'). '/super_data_head.php'); ?> +get_template_dir('.css',DIR_WS_TEMPLATE, $current_page_base,'css') . '/' . 'responsive_mobile.css' . '" />'; +$responsive_tablet = ''; +$responsive_default = ''; +if (!isset($_SESSION['layoutType'])) { + $_SESSION['layoutType'] = 'legacy'; +} + +if (in_array($current_page_base,explode(",",'popup_image,popup_image_additional')) ) { + echo ''; +} else { + echo ''; + if ( $detect->isMobile() && !$detect->isTablet() || $_SESSION['layoutType'] == 'mobile' ) { + echo $responsive_mobile; + } else if ( $detect->isTablet() || $_SESSION['layoutType'] == 'tablet' ){ + echo $responsive_tablet; + } else if ( $_SESSION['layoutType'] == 'full' ) { + echo ''; + } else { + echo $responsive_default; + } +} +?> + + +notify('NOTIFY_HTML_HEAD_END', $current_page_base); +?> + + diff --git a/GEAENDERTE DATEIEN/includes/templates/DEINTEMPLATE_RESPONSIVE/sideboxes/tpl_manufacturers_select.php b/GEAENDERTE DATEIEN/includes/templates/DEINTEMPLATE_RESPONSIVE/sideboxes/tpl_manufacturers_select.php new file mode 100644 index 0000000..4c89201 --- /dev/null +++ b/GEAENDERTE DATEIEN/includes/templates/DEINTEMPLATE_RESPONSIVE/sideboxes/tpl_manufacturers_select.php @@ -0,0 +1,51 @@ +'; + $content.= zen_draw_form('manufacturers_form', zen_href_link(FILENAME_DEFAULT, '', $request_type, false), 'get'); + $content .= zen_draw_hidden_field('main_page', FILENAME_DEFAULT); + $content .= zen_draw_label(PLEASE_SELECT, 'select-manufacturers_id', 'class="sr-only"'); +// BEGIN CEON URI MAPPING 1 of 2 + // Build the JavaScript necessary to have the manufacturer selection directly redirect to the page for the + // manufacturer. This will result in the static URI for the manufacturer being used if one is associated with the + // manufacturers page, or simply the default dynamic URI being used + $content .= '\n"; + + $content .= zen_draw_pull_down_menu('manufacturers_id', $manufacturer_sidebox_array, + (isset($_GET['manufacturers_id']) ? $_GET['manufacturers_id'] : ''), + 'onchange="javascript:ceon_uri_mappingManufacturerSideboxRedirect(this);" size="' . MAX_MANUFACTURERS_LIST . + '" style="width: 90%; margin: auto;"') . zen_hide_session_id(); +/* +// END CEON URI MAPPING 1 of 2 + $content .= zen_draw_pull_down_menu('manufacturers_id', $manufacturer_sidebox_array, (isset($_GET['manufacturers_id']) ? $_GET['manufacturers_id'] : ''), 'onchange="this.form.submit();" size="' . MAX_MANUFACTURERS_LIST . '" style="width: 90%; margin: auto;"') . zen_hide_session_id(); +// BEGIN CEON URI MAPPING 2 of 2 +*/ +// END CEON URI MAPPING 2 of 2 + $content .= ''; + $content .= ''; diff --git a/GEAENDERTE DATEIEN/includes/templates/DEINTEMPLATE_RESPONSIVE/sideboxes/tpl_music_genres_select.php b/GEAENDERTE DATEIEN/includes/templates/DEINTEMPLATE_RESPONSIVE/sideboxes/tpl_music_genres_select.php new file mode 100644 index 0000000..78db7aa --- /dev/null +++ b/GEAENDERTE DATEIEN/includes/templates/DEINTEMPLATE_RESPONSIVE/sideboxes/tpl_music_genres_select.php @@ -0,0 +1,51 @@ +'; + $content .= zen_draw_form('music_genres_form', zen_href_link(FILENAME_DEFAULT, '', $request_type, false), 'get'); + $content .= zen_draw_hidden_field('main_page', FILENAME_DEFAULT) . zen_hide_session_id() . zen_draw_hidden_field('typefilter', 'music_genre'); + $content .= zen_draw_label(PLEASE_SELECT, 'select-music_genre_id', 'class="sr-only"'); +// BEGIN CEON URI MAPPING 1 of 2 + // Build the JavaScript necessary to have the music genre selection directly redirect to the page for the music + // genre. This will result in the static URI for the music genre being used if one is associated with the music + // genre page, or simply the default dynamic URI being used + $content .= '\n"; + + $content .= zen_draw_pull_down_menu('music_genre_id', $music_genres_array, + (isset($_GET['music_genre_id']) ? $_GET['music_genre_id'] : ''), + 'onchange="javascript:ceon_uri_mappingMusicGenreSideboxRedirect(this);" size="' . MAX_MUSIC_GENRES_LIST . + '" style="width: 90%; margin: auto;"') . zen_hide_session_id(); +/* +// END CEON URI MAPPING 1 of 2 + $content .= zen_draw_pull_down_menu('music_genre_id', $music_genres_array, (isset($_GET['music_genre_id']) ? $_GET['music_genre_id'] : ''), 'onchange="this.form.submit();" size="' . MAX_MUSIC_GENRES_LIST . '" style="width: 90%; margin: auto;"'); +// BEGIN CEON URI MAPPING 2 of 2 +*/ +// END CEON URI MAPPING 2 of 2 + $content .= ''; + $content .= ''; + diff --git a/GEAENDERTE DATEIEN/includes/templates/DEINTEMPLATE_RESPONSIVE/sideboxes/tpl_record_company_select.php b/GEAENDERTE DATEIEN/includes/templates/DEINTEMPLATE_RESPONSIVE/sideboxes/tpl_record_company_select.php new file mode 100644 index 0000000..7e948d4 --- /dev/null +++ b/GEAENDERTE DATEIEN/includes/templates/DEINTEMPLATE_RESPONSIVE/sideboxes/tpl_record_company_select.php @@ -0,0 +1,51 @@ +'; + $content .= zen_draw_form('record_company_form', zen_href_link(FILENAME_DEFAULT, '', $request_type, false), 'get'); + $content .= zen_draw_hidden_field('main_page', FILENAME_DEFAULT) . zen_hide_session_id() . zen_draw_hidden_field('typefilter', 'record_company'); + $content .= zen_draw_label(PLEASE_SELECT, 'select-record_company_id', 'class="sr-only"'); +// BEGIN CEON URI MAPPING 1 of 2 + // Build the JavaScript necessary to have the record company selection directly redirect to the page for the + // record company. This will result in the static URI for the record company being used if one is associated with + // the record company page, or simply the default dynamic URI being used + $content .= '\n"; + + $content .= zen_draw_pull_down_menu('record_company_id', $record_company_array, + (isset($_GET['record_company_id']) ? $_GET['record_company_id'] : ''), + 'onchange="javascript:ceon_uri_mappingRecordCompanySideboxRedirect(this);" size="' . MAX_RECORD_COMPANY_LIST . + '" style="width: 90%; margin: auto;"') . zen_hide_session_id(); +/* +// END CEON URI MAPPING 1 of 2 + $content .= zen_draw_pull_down_menu('record_company_id', $record_company_array, (isset($_GET['record_company_id']) ? $_GET['record_company_id'] : ''), 'onchange="this.form.submit();" size="' . MAX_RECORD_COMPANY_LIST . '" style="width: 90%; margin: auto;"'); +// BEGIN CEON URI MAPPING 2 of 2 +*/ +// END CEON URI MAPPING 2 of 2 + $content .= ''; + $content .= ''; diff --git a/GEAENDERTE DATEIEN/includes/templates/DEINTEMPLATE_RESPONSIVE/templates/tpl_index_product_list.php b/GEAENDERTE DATEIEN/includes/templates/DEINTEMPLATE_RESPONSIVE/templates/tpl_index_product_list.php new file mode 100644 index 0000000..dbeb31b --- /dev/null +++ b/GEAENDERTE DATEIEN/includes/templates/DEINTEMPLATE_RESPONSIVE/templates/tpl_index_product_list.php @@ -0,0 +1,287 @@ + + * Displays product-listing when a particular category/subcategory is selected for browsing + * + * @package templateSystem + * @copyright Copyright 2003-2022 Zen Cart Development Team + * @copyright Portions Copyright 2003 osCommerce + * @license http://www.zen-cart-pro.at/license/2_0.txt GNU Public License V2.0 + * @version $Id: tpl_index_product_list.php for CEON Uri Mapping 2022-02-18 20:05:58Z webchills $ + */ +?> +
+ +
+
+

+ + +
+ +
+ + +
+ +
+ +RecordCount()) { ?> +
+ + +Execute($check_for_alpha); + + if ($do_filter_list || isset($_GET['alpha_filter_id']) || ($check_for_alpha->RecordCount() > 0 && PRODUCT_LIST_ALPHA_SORTER == 'true')) { +// BEGIN CEON URI MAPPING 1 of 2 + // Build form action as link to index page including specific query string parameters, so that a static URI can + // be used if one has been specified for the specific query string paramters + $ceon_uri_mapping_handling_being_used = false; + + if (isset($_GET['manufacturers_id']) && $_GET['manufacturers_id'] > 0) { + $ceon_uri_mapping_handling_being_used = true; + + $form_action_uri = zen_href_link(FILENAME_DEFAULT, 'manufacturers_id=' . $_GET['manufacturers_id']); + + echo zen_draw_form('filter', $form_action_uri, 'get'); + + echo ''; + + if (strpos($form_action_uri, 'manufacturers_id') !== false) { + // No static URI for manufacturer page so must allow form to rebuild manufacturer info + echo zen_draw_hidden_field('main_page', FILENAME_DEFAULT); + echo zen_draw_hidden_field('manufacturers_id', $_GET['manufacturers_id']); + } + } else if (isset($_GET['typefilter']) && $_GET['typefilter'] != '' && + isset($_GET[$_GET['typefilter'] . '_id']) && $_GET[$_GET['typefilter'] . '_id'] != '') { + + $ceon_uri_mapping_handling_being_used = true; + + $form_action_uri = zen_href_link(FILENAME_DEFAULT, 'typefilter=' . $_GET['typefilter'] . '&' . + $_GET['typefilter'] . '_id=' . $_GET[$_GET['typefilter'] . '_id']); + + echo zen_draw_form('filter', $form_action_uri, 'get'); + + echo ''; + + if (strpos($form_action_uri, 'typefilter') !== false) { + // No static URI for filtered page so must allow form to rebuild filter info + echo zen_draw_hidden_field('main_page', FILENAME_DEFAULT); + echo zen_draw_hidden_field('typefilter', $_GET['typefilter']); + echo zen_draw_hidden_field($_GET['typefilter'] . '_id', $_GET[$_GET['typefilter'] . '_id']); + } + } else if (isset($_GET['cPath']) && $_GET['cPath'] > 0) { + $ceon_uri_mapping_handling_being_used = true; + + $form_action_uri = zen_href_link(FILENAME_DEFAULT, 'cPath=' . $_GET['cPath']); + + echo zen_draw_form('filter', $form_action_uri, 'get'); + + echo ''; + + if (strpos($form_action_uri, 'cPath') !== false) { + // No static URI for category page so must allow form to rebuild category info + echo zen_draw_hidden_field('main_page', FILENAME_DEFAULT); + echo zen_draw_hidden_field('cPath', $_GET['cPath']); + } + } + + if ($ceon_uri_mapping_handling_being_used) { + echo zen_hide_session_id(); + } else { + // Filter type not supported by Ceon URI Mapping so use standard Zen Cart filter form code +// END CEON URI MAPPING 1 of 2 + $form = zen_draw_form('filter', zen_href_link(FILENAME_DEFAULT), 'get') . ''; +?> + + + + + + + +RecordCount()) { ?> +
+ + + +get_template_dir('tpl_modules_product_listing.php', DIR_WS_TEMPLATE, $current_page_base,'templates'). '/' . 'tpl_modules_product_listing.php'); +?> + + +Execute("select categories_id from " . TABLE_CATEGORIES . " where categories_id='" . $cPath . "'"); + if ($check_category->RecordCount() == 0) { + $new_products_category_id = '0'; + $cPath= ''; + } +?> + +Execute(SQL_SHOW_PRODUCT_INFO_MISSING); + +while (!$show_display_category->EOF) { +?> + +fields['configuration_key'] == 'SHOW_PRODUCT_INFO_MISSING_FEATURED_PRODUCTS') { ?> + +get_template_dir('tpl_modules_featured_products.php',DIR_WS_TEMPLATE, $current_page_base,'templates'). '/tpl_modules_featured_products.php'); ?> + + +fields['configuration_key'] == 'SHOW_PRODUCT_INFO_MISSING_SPECIALS_PRODUCTS') { ?> + +get_template_dir('tpl_modules_specials_default.php',DIR_WS_TEMPLATE, $current_page_base,'templates'). '/tpl_modules_specials_default.php'); ?> + + +fields['configuration_key'] == 'SHOW_PRODUCT_INFO_MISSING_NEW_PRODUCTS') { ?> + +get_template_dir('tpl_modules_whats_new.php',DIR_WS_TEMPLATE, $current_page_base,'templates'). '/tpl_modules_whats_new.php'); ?> + + +fields['configuration_key'] == 'SHOW_PRODUCT_INFO_MISSING_UPCOMING') { + include(DIR_WS_MODULES . zen_get_module_directory(FILENAME_UPCOMING_PRODUCTS)); + } +?> +MoveNext(); +} // !EOF +?> + + +Execute(SQL_SHOW_PRODUCT_INFO_LISTING_BELOW); +if ($error_categories == false and $show_display_category->RecordCount() > 0) { +?> + +Execute(SQL_SHOW_PRODUCT_INFO_LISTING_BELOW); + while (!$show_display_category->EOF) { +?> + +fields['configuration_key'] == 'SHOW_PRODUCT_INFO_LISTING_BELOW_FEATURED_PRODUCTS') { ?> + +get_template_dir('tpl_modules_featured_products.php',DIR_WS_TEMPLATE, $current_page_base,'templates'). '/tpl_modules_featured_products.php'); ?> + + +fields['configuration_key'] == 'SHOW_PRODUCT_INFO_LISTING_BELOW_SPECIALS_PRODUCTS') { ?> + +get_template_dir('tpl_modules_specials_default.php',DIR_WS_TEMPLATE, $current_page_base,'templates'). '/tpl_modules_specials_default.php'); ?> + + +fields['configuration_key'] == 'SHOW_PRODUCT_INFO_LISTING_BELOW_NEW_PRODUCTS') { ?> + +get_template_dir('tpl_modules_whats_new.php',DIR_WS_TEMPLATE, $current_page_base,'templates'). '/tpl_modules_whats_new.php'); ?> + + +fields['configuration_key'] == 'SHOW_PRODUCT_INFO_LISTING_BELOW_UPCOMING') { + include(DIR_WS_MODULES . zen_get_module_directory(FILENAME_UPCOMING_PRODUCTS)); + } +?> +MoveNext(); + } // !EOF +?> + + + +
diff --git a/NEUE DATEIEN/DEINADMIN/ceon_uri_mapping_config.php b/NEUE DATEIEN/DEINADMIN/ceon_uri_mapping_config.php new file mode 100644 index 0000000..16b71e0 --- /dev/null +++ b/NEUE DATEIEN/DEINADMIN/ceon_uri_mapping_config.php @@ -0,0 +1,278 @@ + + * @copyright Copyright 2008-2019 Ceon + * @copyright Copyright 2003-2019 Zen Cart Development Team + * @copyright Portions Copyright 2003 osCommerce + * @link http://ceon.net/software/business/zen-cart/uri-mapping + * @license http://www.zen-cart.com/license/2_0.txt GNU Public License V2.0 + * @version $Id: ceon_uri_mapping_config.php 2019-07-04 16:31:10Z webchills $ + */ + +require('includes/application_top.php'); + +$languages = zen_get_languages(); +$num_languages = count($languages); + +/** + * Load in the Ceon URI Mapping Config Utility class + */ +require_once(DIR_WS_CLASSES . 'class.CeonURIMappingConfigUtility.php'); + +$config_utility = new CeonURIMappingConfigUtility(); + +?> + +> + + <?php echo HEADING_TITLE; ?> + + + + + + + + + + + + + + + + + +
+ +

+ +getOutput(); + +?> + +
+ + + + + + + + \ No newline at end of file diff --git a/NEUE DATEIEN/DEINADMIN/ceon_uri_mapping_installation_check.php b/NEUE DATEIEN/DEINADMIN/ceon_uri_mapping_installation_check.php new file mode 100644 index 0000000..9a7a95d --- /dev/null +++ b/NEUE DATEIEN/DEINADMIN/ceon_uri_mapping_installation_check.php @@ -0,0 +1,332 @@ + + * @copyright Copyright 2008-2019 Ceon + * @copyright Copyright 2003-2019 Zen Cart Development Team + * @copyright Portions Copyright 2003 osCommerce + * @link http://ceon.net/software/business/zen-cart/uri-mapping + * @license http://www.zen-cart.com/license/2_0.txt GNU Public License V2.0 + * @version $Id: ceon_uri_mapping_installation_check.php 2019-07-04 16:31:10Z webchills $ + */ + +require('includes/application_top.php'); + +$languages = zen_get_languages(); +$num_languages = count($languages); + +/** + * Load in the Ceon URI Mapping Installation Check class + */ +require_once(DIR_WS_CLASSES . 'class.CeonURIMappingInstallationCheck.php'); + +$installation_check = new CeonURIMappingInstallationCheck(); + +$installation_check->performChecks(); + +?> + +> + + <?php echo HEADING_TITLE; ?> + + + + + + + + + + + + + + + + + +
+

+ +getOutput(); + +?> +
+ + + + + + + + \ No newline at end of file diff --git a/NEUE DATEIEN/DEINADMIN/images/ceon-button-logo.png b/NEUE DATEIEN/DEINADMIN/images/ceon-button-logo.png new file mode 100644 index 0000000..da70aa0 Binary files /dev/null and b/NEUE DATEIEN/DEINADMIN/images/ceon-button-logo.png differ diff --git a/NEUE DATEIEN/DEINADMIN/images/ceon-input-fade-tb-gray-white.png b/NEUE DATEIEN/DEINADMIN/images/ceon-input-fade-tb-gray-white.png new file mode 100644 index 0000000..b596da2 Binary files /dev/null and b/NEUE DATEIEN/DEINADMIN/images/ceon-input-fade-tb-gray-white.png differ diff --git a/NEUE DATEIEN/DEINADMIN/images/ceon-tab-background-selected.png b/NEUE DATEIEN/DEINADMIN/images/ceon-tab-background-selected.png new file mode 100644 index 0000000..91479fb Binary files /dev/null and b/NEUE DATEIEN/DEINADMIN/images/ceon-tab-background-selected.png differ diff --git a/NEUE DATEIEN/DEINADMIN/images/ceon-tab-background.png b/NEUE DATEIEN/DEINADMIN/images/ceon-tab-background.png new file mode 100644 index 0000000..7feaa58 Binary files /dev/null and b/NEUE DATEIEN/DEINADMIN/images/ceon-tab-background.png differ diff --git a/NEUE DATEIEN/DEINADMIN/includes/auto_loaders/config.ceon_uri_mapping.php b/NEUE DATEIEN/DEINADMIN/includes/auto_loaders/config.ceon_uri_mapping.php new file mode 100644 index 0000000..5e183a7 --- /dev/null +++ b/NEUE DATEIEN/DEINADMIN/includes/auto_loaders/config.ceon_uri_mapping.php @@ -0,0 +1,29 @@ + + * @author torvista + * @copyright Copyright 2008-2019 Ceon + * @copyright Copyright 2003-2007 Zen Cart Development Team + * @copyright Portions Copyright 2003 osCommerce + * @link https://github.com/torvista/CEON-URI-Mapping + * @license http://www.zen-cart.com/license/2_0.txt GNU Public License V2.0 + * @version 2016 + */ + +if (!defined('IS_ADMIN_FLAG')) { + die('Illegal Access'); +} + +//steve added to use an observer with html_output.php function zen_href_catalog_link + +$autoLoadConfig[10][] = array('autoType' => 'class', + 'loadFile' => 'observers/class.CeonURIMappingLinkBuildAdmin.php', + 'classPath' => DIR_WS_CLASSES); + +$autoLoadConfig[90][] = array('autoType' => 'classInstantiate', + 'className' => 'CeonURIMappingLinkBuildAdmin', + 'objectName' => 'ceon_uri_mapping_link_build_admin'); diff --git a/NEUE DATEIEN/DEINADMIN/includes/auto_loaders/config.ceon_uri_mapping_admin_categories_observer.php b/NEUE DATEIEN/DEINADMIN/includes/auto_loaders/config.ceon_uri_mapping_admin_categories_observer.php new file mode 100644 index 0000000..8bf0409 --- /dev/null +++ b/NEUE DATEIEN/DEINADMIN/includes/auto_loaders/config.ceon_uri_mapping_admin_categories_observer.php @@ -0,0 +1,31 @@ + + * @author Ceon Support + * @copyright Copyright 2008-2019 Ceon + * @copyright Copyright 2003-2007 Zen Cart Development Team + * @copyright Portions Copyright 2003 osCommerce + * @link https://ceon.net + * @license http://www.zen-cart.com/license/2_0.txt GNU Public License V2.0 + * @version 2019 + */ + +if (!defined('IS_ADMIN_FLAG')) { + die('Illegal Access'); +} + +//added to use an observer with admin/categories.php for processing category modifications + $autoLoadConfig[0][] = array( + 'autoType' => 'class', + 'loadFile' => 'observers/class.CeonURIMappingAdminCategoriesObserver.php', + 'classPath'=>DIR_WS_CLASSES + ); + $autoLoadConfig[198][] = array( + 'autoType' => 'classInstantiate', + 'className' => 'CeonURIMappingAdminCategoriesObserver', + 'objectName' => 'CeonURIMappingAdminCategories_Observe' + ); diff --git a/NEUE DATEIEN/DEINADMIN/includes/auto_loaders/config.ceon_uri_mapping_admin_category_delete_observer.php b/NEUE DATEIEN/DEINADMIN/includes/auto_loaders/config.ceon_uri_mapping_admin_category_delete_observer.php new file mode 100644 index 0000000..6ea6ba6 --- /dev/null +++ b/NEUE DATEIEN/DEINADMIN/includes/auto_loaders/config.ceon_uri_mapping_admin_category_delete_observer.php @@ -0,0 +1,31 @@ + + * @author Ceon Support + * @copyright Copyright 2008-2019 Ceon + * @copyright Copyright 2003-2007 Zen Cart Development Team + * @copyright Portions Copyright 2003 osCommerce + * @link https://ceon.net + * @license http://www.zen-cart.com/license/2_0.txt GNU Public License V2.0 + * @version 2019 + */ + +if (!defined('IS_ADMIN_FLAG')) { + die('Illegal Access'); +} + +//added to use an observer admin/includes/functions/general.php function to delete a category + $autoLoadConfig[0][] = array( + 'autoType' => 'class', + 'loadFile' => 'observers/class.CeonURIMappingDeleteCategoriesObserver.php', + 'classPath'=>DIR_WS_CLASSES + ); + $autoLoadConfig[198][] = array( + 'autoType' => 'classInstantiate', + 'className' => 'ceonAdminRemoveCategory', + 'objectName' => 'ceonAdminRemoveCategoryObserve' + ); diff --git a/NEUE DATEIEN/DEINADMIN/includes/auto_loaders/config.ceon_uri_mapping_admin_category_info.php b/NEUE DATEIEN/DEINADMIN/includes/auto_loaders/config.ceon_uri_mapping_admin_category_info.php new file mode 100644 index 0000000..6edc235 --- /dev/null +++ b/NEUE DATEIEN/DEINADMIN/includes/auto_loaders/config.ceon_uri_mapping_admin_category_info.php @@ -0,0 +1,26 @@ + + * @author Ceon Support + * @copyright Copyright 2008-2019 Ceon + * @copyright Copyright 2003-2007 Zen Cart Development Team + * @copyright Portions Copyright 2003 osCommerce + * @link https://ceon.net + * @license http://www.zen-cart.com/license/2_0.txt GNU Public License V2.0 + * @version 2019 + */ + +if (!defined('IS_ADMIN_FLAG')) { + die('Illegal Access'); +} + +//added to support processing when working with categories as navigation occurs. + +$autoLoadConfig[199][] = array( + 'autoType'=>'init_script', + 'loadFile'=>'init_ceon_category_collect_info.php' + ); diff --git a/NEUE DATEIEN/DEINADMIN/includes/auto_loaders/config.ceon_uri_mapping_admin_copy_observer.php b/NEUE DATEIEN/DEINADMIN/includes/auto_loaders/config.ceon_uri_mapping_admin_copy_observer.php new file mode 100644 index 0000000..12490b6 --- /dev/null +++ b/NEUE DATEIEN/DEINADMIN/includes/auto_loaders/config.ceon_uri_mapping_admin_copy_observer.php @@ -0,0 +1,31 @@ + + * @author Ceon Support + * @copyright Copyright 2008-2019 Ceon + * @copyright Copyright 2003-2007 Zen Cart Development Team + * @copyright Portions Copyright 2003 osCommerce + * @link https://ceon.net + * @license http://www.zen-cart.com/license/2_0.txt GNU Public License V2.0 + * @version 2020 + */ + +if (!defined('IS_ADMIN_FLAG')) { + die('Illegal Access'); +} + +//added to use an observer with admin/product.php for processing product modifications + $autoLoadConfig[0][] = array( + 'autoType' => 'class', + 'loadFile' => 'observers/class.CeonURIMappingAdminCopyObserver.php', + 'classPath'=>DIR_WS_CLASSES + ); + $autoLoadConfig[197][] = array( + 'autoType' => 'classInstantiate', + 'className' => 'CeonURIMappingAdminCopyObserver', + 'objectName' => 'CeonURIMappingAdminCopy_Observe' + ); diff --git a/NEUE DATEIEN/DEINADMIN/includes/auto_loaders/config.ceon_uri_mapping_admin_ezpages_info.php b/NEUE DATEIEN/DEINADMIN/includes/auto_loaders/config.ceon_uri_mapping_admin_ezpages_info.php new file mode 100644 index 0000000..ac30ccf --- /dev/null +++ b/NEUE DATEIEN/DEINADMIN/includes/auto_loaders/config.ceon_uri_mapping_admin_ezpages_info.php @@ -0,0 +1,26 @@ + + * @author Ceon Support + * @copyright Copyright 2008-2019 Ceon + * @copyright Copyright 2003-2007 Zen Cart Development Team + * @copyright Portions Copyright 2003 osCommerce + * @link https://ceon.net + * @license http://www.zen-cart.com/license/2_0.txt GNU Public License V2.0 + * @version 2019 + */ + +if (!defined('IS_ADMIN_FLAG')) { + die('Illegal Access'); +} + +//added to support processing when working with products as navigation occurs. + +$autoLoadConfig[199][] = array( + 'autoType'=>'init_script', + 'loadFile'=>'init_ceon_ezpages_collect_info.php' + ); diff --git a/NEUE DATEIEN/DEINADMIN/includes/auto_loaders/config.ceon_uri_mapping_admin_javascript_loader.php b/NEUE DATEIEN/DEINADMIN/includes/auto_loaders/config.ceon_uri_mapping_admin_javascript_loader.php new file mode 100644 index 0000000..d851c31 --- /dev/null +++ b/NEUE DATEIEN/DEINADMIN/includes/auto_loaders/config.ceon_uri_mapping_admin_javascript_loader.php @@ -0,0 +1,29 @@ + + * @author Ceon Support + * @copyright Copyright 2008-2019 Ceon + * @copyright Copyright 2003-2019 Zen Cart Development Team + * @copyright Portions Copyright 2003 osCommerce + * @link https://github.com/torvista/CEON-URI-Mapping + * @license http://www.zen-cart.com/license/2_0.txt GNU Public License V2.0 + * @version 2019 added in Version 5.0.1 2019 August 18 + */ + +if (!defined('IS_ADMIN_FLAG')) { + die('Illegal Access'); +} + +// added to use an observer with the footer.php notifier supporting Zen Cart 1.5.7 and above. + +$autoLoadConfig[10][] = array('autoType' => 'class', + 'loadFile' => 'observers/class.CeonURIMappingJavaScriptLoader.php', + 'classPath' => DIR_WS_CLASSES); + +$autoLoadConfig[180][] = array('autoType' => 'classInstantiate', + 'className' => 'zcObserverClassCeonURIMappingJavaScriptLoader', + 'objectName' => 'zcObserverClassCeonURIMappingJavaScriptLoader'); diff --git a/NEUE DATEIEN/DEINADMIN/includes/auto_loaders/config.ceon_uri_mapping_admin_manufacturers_info.php b/NEUE DATEIEN/DEINADMIN/includes/auto_loaders/config.ceon_uri_mapping_admin_manufacturers_info.php new file mode 100644 index 0000000..e89c866 --- /dev/null +++ b/NEUE DATEIEN/DEINADMIN/includes/auto_loaders/config.ceon_uri_mapping_admin_manufacturers_info.php @@ -0,0 +1,26 @@ + + * @author Ceon Support + * @copyright Copyright 2008-2019 Ceon + * @copyright Copyright 2003-2007 Zen Cart Development Team + * @copyright Portions Copyright 2003 osCommerce + * @link https://ceon.net + * @license http://www.zen-cart.com/license/2_0.txt GNU Public License V2.0 + * @version 2019 + */ + +if (!defined('IS_ADMIN_FLAG')) { + die('Illegal Access'); +} + +//added to support processing when working with products as navigation occurs. + +$autoLoadConfig[199][] = array( + 'autoType'=>'init_script', + 'loadFile'=>'init_ceon_manufacturers_collect_info.php' + ); diff --git a/NEUE DATEIEN/DEINADMIN/includes/auto_loaders/config.ceon_uri_mapping_admin_product_delete_observer.php b/NEUE DATEIEN/DEINADMIN/includes/auto_loaders/config.ceon_uri_mapping_admin_product_delete_observer.php new file mode 100644 index 0000000..0b21dd5 --- /dev/null +++ b/NEUE DATEIEN/DEINADMIN/includes/auto_loaders/config.ceon_uri_mapping_admin_product_delete_observer.php @@ -0,0 +1,31 @@ + + * @author Ceon Support + * @copyright Copyright 2008-2019 Ceon + * @copyright Copyright 2003-2007 Zen Cart Development Team + * @copyright Portions Copyright 2003 osCommerce + * @link https://ceon.net + * @license http://www.zen-cart.com/license/2_0.txt GNU Public License V2.0 + * @version 2019 + */ + +if (!defined('IS_ADMIN_FLAG')) { + die('Illegal Access'); +} + +//added to use an observer with includes/functions/general.php for processing product removal + $autoLoadConfig[0][] = array( + 'autoType' => 'class', + 'loadFile' => 'observers/class.CeonURIMappingDeleteProductsObserver.php', + 'classPath'=>DIR_WS_CLASSES + ); + $autoLoadConfig[198][] = array( + 'autoType' => 'classInstantiate', + 'className' => 'ceonAdminRemoveProducts', + 'objectName' => 'ceonAdminRemoveProductsObserve' + ); diff --git a/NEUE DATEIEN/DEINADMIN/includes/auto_loaders/config.ceon_uri_mapping_admin_product_info.php b/NEUE DATEIEN/DEINADMIN/includes/auto_loaders/config.ceon_uri_mapping_admin_product_info.php new file mode 100644 index 0000000..03e3ba9 --- /dev/null +++ b/NEUE DATEIEN/DEINADMIN/includes/auto_loaders/config.ceon_uri_mapping_admin_product_info.php @@ -0,0 +1,26 @@ + + * @author Ceon Support + * @copyright Copyright 2008-2019 Ceon + * @copyright Copyright 2003-2007 Zen Cart Development Team + * @copyright Portions Copyright 2003 osCommerce + * @link https://ceon.net + * @license http://www.zen-cart.com/license/2_0.txt GNU Public License V2.0 + * @version 2019 + */ + +if (!defined('IS_ADMIN_FLAG')) { + die('Illegal Access'); +} + +//added to support processing when working with products as navigation occurs. + +$autoLoadConfig[199][] = array( + 'autoType'=>'init_script', + 'loadFile'=>'init_ceon_product_collect_info.php' + ); diff --git a/NEUE DATEIEN/DEINADMIN/includes/auto_loaders/config.ceon_uri_mapping_admin_products_observer.php b/NEUE DATEIEN/DEINADMIN/includes/auto_loaders/config.ceon_uri_mapping_admin_products_observer.php new file mode 100644 index 0000000..2f11205 --- /dev/null +++ b/NEUE DATEIEN/DEINADMIN/includes/auto_loaders/config.ceon_uri_mapping_admin_products_observer.php @@ -0,0 +1,31 @@ + + * @author Ceon Support + * @copyright Copyright 2008-2019 Ceon + * @copyright Copyright 2003-2007 Zen Cart Development Team + * @copyright Portions Copyright 2003 osCommerce + * @link https://ceon.net + * @license http://www.zen-cart.com/license/2_0.txt GNU Public License V2.0 + * @version 2019 + */ + +if (!defined('IS_ADMIN_FLAG')) { + die('Illegal Access'); +} + +//added to use an observer with admin/product.php for processing product modifications + $autoLoadConfig[0][] = array( + 'autoType' => 'class', + 'loadFile' => 'observers/class.CeonURIMappingAdminProductsObserver.php', + 'classPath'=>DIR_WS_CLASSES + ); + $autoLoadConfig[198][] = array( + 'autoType' => 'classInstantiate', + 'className' => 'CeonURIMappingAdminProductsObserver', + 'objectName' => 'CeonURIMappingAdminProducts_Observe' + ); diff --git a/NEUE DATEIEN/DEINADMIN/includes/ceon_uri_mapping_javascript.php b/NEUE DATEIEN/DEINADMIN/includes/ceon_uri_mapping_javascript.php new file mode 100644 index 0000000..3643093 --- /dev/null +++ b/NEUE DATEIEN/DEINADMIN/includes/ceon_uri_mapping_javascript.php @@ -0,0 +1,455 @@ + + + + + + + + + + + + + + + + + + + + + + * @copyright Copyright 2008-2019 Ceon + * @copyright Copyright 2003-2021 Zen Cart Development Team + * @copyright Portions Copyright 2003 osCommerce + * @link http://ceon.net/software/business/zen-cart/uri-mapping + * @license http://www.zen-cart.com/license/2_0.txt GNU Public License V2.0 + * @version $Id: class.CeonURIMappingAdminCategoryPages.php 2021-06-23 09:31:15Z webchills $ + */ + +if (!defined('IS_ADMIN_FLAG')) { + die('Illegal Access'); +} + +/** + * Load in the parent class if not already loaded + */ +require_once(DIR_FS_CATALOG . DIR_WS_CLASSES . 'class.CeonURIMappingAdminCategories.php'); + + +// {{{ CeonURIMappingAdminCategoryPages + +/** + * Handles the functionality for category pages within the Zen Cart admin. + * + * @package ceon_uri_mapping + * @author Conor Kerr + * @copyright Copyright 2008-2019 Ceon + * @copyright Copyright 2003-2007 Zen Cart Development Team + * @copyright Portions Copyright 2003 osCommerce + * @link http://ceon.net/software/business/zen-cart/uri-mapping + * @license http://www.zen-cart.com/license/2_0.txt GNU Public License V2.0 + */ +class CeonURIMappingAdminCategoryPages extends CeonURIMappingAdminCategories +{ + // {{{ Class Constructor + + /** + * Creates a new instance of the CeonURIMappingAdminCategoryPages class. + * + * @access public + */ + public function __construct() + { + // Load the language definition file for the current language + @include_once(DIR_WS_LANGUAGES . $_SESSION['language'] . '/' . 'ceon_uri_mapping_category_pages.php'); + + if (!defined('CEON_URI_MAPPING_TEXT_CATEGORY_URI') && $_SESSION['language'] != 'german') { + // Fall back to german language file + @include_once(DIR_WS_LANGUAGES . 'german/' . 'ceon_uri_mapping_category_pages.php'); + } + + parent::__construct(); + } + + // }}} + + + // {{{ insertUpdateHandler() + + /** + * Handles the Ceon URI Mapping functionality when a category is being inserted or updated. + * + * @access public + * @param integer $category_id The ID of the category. + * @param integer $current_category_id The ID of the category's parent category. + * @return none + */ + public function insertUpdateHandler($category_id, $current_category_id) + { + global $languages, $messageStack; + + $uri_mapping_autogen = (isset($_POST['uri-mapping-autogen']) ? true : false); + + for ($i = 0, $n = count($languages); $i < $n; $i++) { + $prev_uri_mapping = trim($_POST['prev-uri-mappings'][$languages[$i]['id']]); + + // Auto-generate the URI if requested + if ($uri_mapping_autogen) { + $uri_mapping = $this->autogenCategoryURIMapping((int) $category_id, $current_category_id, + $_POST['categories_name'][$languages[$i]['id']], $languages[$i]['code'], $languages[$i]['id']); + + if ($uri_mapping == CEON_URI_MAPPING_GENERATION_ATTEMPT_FOR_CATEGORY_WITH_NO_NAME || + $uri_mapping == CEON_URI_MAPPING_GENERATION_ATTEMPT_FOR_CATEGORY_PATH_PART_WITH_NO_NAME) { + // Can't generate the URI because of missing "uniqueness" data or invalid data + if ($uri_mapping == CEON_URI_MAPPING_GENERATION_ATTEMPT_FOR_CATEGORY_WITH_NO_NAME) { + $message = CEON_URI_MAPPING_TEXT_ERROR_AUTOGENERATION_CATEGORY_HAS_NO_NAME; + } else { + $message = CEON_URI_MAPPING_TEXT_ERROR_AUTOGENERATION_A_PARENT_CATEGORY_HAS_NO_NAME; + } + + $failure_message = sprintf($message, ucwords($languages[$i]['name'])); + + $messageStack->add_session($failure_message, 'error'); + + continue; + } + } else { + $uri_mapping = $_POST['uri-mappings'][$languages[$i]['id']]; + } + + if (strlen($uri_mapping) > 1) { + // Make sure URI mapping is relative to root of site and does not have a trailing slash or any + // illegal characters + $uri_mapping = $this->_cleanUpURIMapping($uri_mapping); + } + + $insert_uri_mapping = false; + $update_uri_mapping = false; + + if ($uri_mapping != '') { + // Check if the URI mapping is being updated or does not yet exist + if ($prev_uri_mapping == '') { + $insert_uri_mapping = true; + } else if ($prev_uri_mapping != $uri_mapping) { + $update_uri_mapping = true; + } + } + + if ($insert_uri_mapping || $update_uri_mapping) { + if ($update_uri_mapping) { + // Consign previous mapping to the history, so old URI mapping isn't broken + $this->makeURIMappingHistorical($prev_uri_mapping, $languages[$i]['id']); + } + + // Add the new URI mapping + $uri = $uri_mapping; + + $main_page = FILENAME_DEFAULT; + + $mapping_added = $this->addURIMapping($uri, $languages[$i]['id'], $main_page, null, $category_id); + + if ($mapping_added == CEON_URI_MAPPING_ADD_MAPPING_SUCCESS) { + if ($insert_uri_mapping) { + $success_message = sprintf(CEON_URI_MAPPING_TEXT_CATEGORY_MAPPING_ADDED, + ucwords($languages[$i]['name']), + '' . $uri . ''); + } else { + $success_message = sprintf(CEON_URI_MAPPING_TEXT_CATEGORY_MAPPING_UPDATED, + ucwords($languages[$i]['name']), + '' . $uri . ''); + } + + $messageStack->add_session($success_message, 'success'); + + } else { + if ($mapping_added == CEON_URI_MAPPING_ADD_MAPPING_ERROR_MAPPING_EXISTS) { + $failure_message = sprintf(CEON_URI_MAPPING_TEXT_ERROR_ADD_MAPPING_EXISTS, + ucwords($languages[$i]['name']), + '' . $uri . ''); + + } else if ($mapping_added == CEON_URI_MAPPING_ADD_MAPPING_ERROR_DATA_ERROR) { + $failure_message = sprintf(CEON_URI_MAPPING_TEXT_ERROR_ADD_MAPPING_DATA, + ucwords($languages[$i]['name']), $uri); + } else { + $failure_message = sprintf(CEON_URI_MAPPING_TEXT_ERROR_ADD_MAPPING_DB, + ucwords($languages[$i]['name']), $uri); + } + + $messageStack->add_session($failure_message, 'error'); + } + } else if ($prev_uri_mapping != '' && $uri_mapping == '') { + // No URI mapping, consign existing mapping to the history, so old URI mapping isn't broken + $this->makeURIMappingHistorical($prev_uri_mapping, $languages[$i]['id']); + + $success_message = sprintf(CEON_URI_MAPPING_TEXT_CATEGORY_MAPPING_MADE_HISTORICAL, + ucwords($languages[$i]['name'])); + + $messageStack->add_session($success_message, 'caution'); + } + } + } + + // }}} + + + // {{{ addURIMappingFieldsToAddCategoryFieldsArray() + + /** + * Adds the fields necessary for the Ceon URI Mapping options to the list of add category fields, accessing the + * list of add category fields directly, through a global variable. + * + * @access public + * @return none + */ + public function addURIMappingFieldsToAddCategoryFieldsArray() + { + global $contents; + + // New category doesn't have any previous URI mappings + $prev_uri_mappings = array(); + + $uri_mapping_input_fields = $this->buildCategoryURIMappingFields($prev_uri_mappings); + + $contents[] = array('text' => $uri_mapping_input_fields); + } + + // }}} + + +/// // {{{ addURIMappingFieldsToAddCategoryForm() + + /** + * Adds the fields necessary for the Ceon URI Mapping options to the screen, accessing the + * list of add category fields directly, through a global variable. + * + * @access public + * @return none + */ + public function addURIMappingFieldsToAddCategoryForm() + { + global $contents; + + // New category doesn't have any previous URI mappings + $prev_uri_mappings = array(); + + $uri_mapping_input_fields = $this->buildCategoryURIMappingFormFields($prev_uri_mappings); + + $contents[] = array('text' => $uri_mapping_input_fields); + } + +// // }}} + + + // {{{ addURIMappingFieldsToEditCategoryFieldsArray() + + /** + * Adds the fields necessary for the Ceon URI Mapping options to the list of edit category fields, accessing + * the list of edit category fields directly, through a global variable. + * + * @access public + * @param integer $category_id The ID of the category. + * @return none + */ + public function addURIMappingFieldsToEditCategoryFieldsArray($category_id) + { + global $contents; + + // Get any current category mappings from the database, up to one for each language + $prev_uri_mappings = array(); + + $columns_to_retrieve = array( + 'language_id', + 'uri' + ); + + $selections = array( + 'main_page' => FILENAME_DEFAULT, + 'associated_db_id' => $category_id, + 'current_uri' => 1 + ); + + $prev_uri_mappings_result = $this->getURIMappingsResultset($columns_to_retrieve, $selections); + + while (!$prev_uri_mappings_result->EOF) { + $prev_uri_mappings[$prev_uri_mappings_result->fields['language_id']] = + $prev_uri_mappings_result->fields['uri']; + + $prev_uri_mappings_result->MoveNext(); + } + + $uri_mapping_input_fields = $this->buildCategoryURIMappingFields($prev_uri_mappings); + + $contents[] = array('text' => $uri_mapping_input_fields); + } + + // }}} + + + // {{{ addURIMappingFieldsToEditCategoryForm() + + /** + * Adds the fields necessary for the Ceon URI Mapping options to the list of edit category fields, accessing + * the list of edit category fields directly, through a global variable. + * + * @access public + * @param integer $category_id The ID of the category. + * @return none + */ + public function addURIMappingFieldsToEditCategoryForm($category_id, $dividerClass = array('label' => 'col-sm-3 control-label', 'input_field'=>'col-sm-9 col-md-6')) + { + global $contents; + + // Get any current category mappings from the database, up to one for each language + $prev_uri_mappings = array(); + + $columns_to_retrieve = array( + 'language_id', + 'uri' + ); + + $selections = array( + 'main_page' => FILENAME_DEFAULT, + 'associated_db_id' => $category_id, + 'current_uri' => 1 + ); + + $prev_uri_mappings_result = $this->getURIMappingsResultset($columns_to_retrieve, $selections); + + while (!$prev_uri_mappings_result->EOF) { + $prev_uri_mappings[$prev_uri_mappings_result->fields['language_id']] = + $prev_uri_mappings_result->fields['uri']; + + $prev_uri_mappings_result->MoveNext(); + } + + $uri_mapping_input_fields = $this->buildCategoryURIMappingFormFields($prev_uri_mappings, $dividerClass); + + $contents[] = array('text' => $uri_mapping_input_fields); + } + + + // {{{ buildCategoryURIMappingFields() + + /** + * Builds the input fields for adding/editing URI mappings for categories. + * + * @access public + * @param array $prev_uri_mappings An array of the current values for the URI mappings, if any. + * @return string The source for the input fields. + */ + public function buildCategoryURIMappingFields($prev_uri_mappings) + { + global $languages; + + $num_prev_uri_mappings = count($prev_uri_mappings); + + $num_languages = count($languages); + + $uri_mapping_input_fields = zen_draw_separator('pixel_black.gif', '100%', '2'); + + $uri_mapping_input_fields .= '' . "\n\t"; + $uri_mapping_input_fields .= '' . "\n\t\t" . + '' . "\n\t\t" . + '' . "\n\t\n\t\n\t\t" . + '\n\t\n
'; + + $uri_mapping_input_fields .= CEON_URI_MAPPING_TEXT_CATEGORY_URI . '' . "\n"; + + for ($i = 0, $n = count($languages); $i < $n; $i++) { + $uri_mapping_input_fields .= "

"; + + if (!isset($prev_uri_mappings[$languages[$i]['id']])) { + $prev_uri_mappings[$languages[$i]['id']] = ''; + } + + $uri_mapping_input_fields .= zen_draw_hidden_field('prev-uri-mappings[' . $languages[$i]['id'] . ']', + $prev_uri_mappings[$languages[$i]['id']]); + + $uri_mapping_input_fields .= zen_image(DIR_WS_CATALOG_LANGUAGES . $languages[$i]['directory'] . + '/images/' . $languages[$i]['image'], $languages[$i]['name']) . ' ' . + zen_draw_input_field('uri-mappings[' . $languages[$i]['id'] . ']', + $prev_uri_mappings[$languages[$i]['id']], 'size="60"'); + + $uri_mapping_input_fields .= "

\n"; + } + + $uri_mapping_input_fields .= '
' . "\n"; + + $uri_mapping_input_fields .= "

"; + + if ($this->_autogenEnabled()) { + if ($num_languages == 1) { + $autogen_message = CEON_URI_MAPPING_TEXT_CATEGORY_URI_AUTOGEN; + } else { + $autogen_message = CEON_URI_MAPPING_TEXT_CATEGORY_URIS_AUTOGEN; + } + + if ($num_prev_uri_mappings == 0) { + $autogen_selected = true; + } else { + $autogen_selected = false; + + if ($num_prev_uri_mappings == 1) { + $autogen_message .= '
' . CEON_URI_MAPPING_TEXT_URI_AUTOGEN_ONE_EXISTING_MAPPING; + } else if ($num_prev_uri_mappings == $num_languages) { + $autogen_message .= '
' . CEON_URI_MAPPING_TEXT_URI_AUTOGEN_ALL_EXISTING_MAPPINGS; + } else { + $autogen_message .= '
' . CEON_URI_MAPPING_TEXT_URI_AUTOGEN_SOME_EXISTING_MAPPINGS; + } + } + + $uri_mapping_input_fields .= zen_draw_checkbox_field('uri-mapping-autogen', '1', $autogen_selected) . + ' ' . $autogen_message; + } else { + $uri_mapping_input_fields .= CEON_URI_MAPPING_TEXT_URI_AUTOGEN_DISABLED; + } + + $uri_mapping_input_fields .= "

"; + + $uri_mapping_input_fields .= "\n\t\t
\n"; + + $uri_mapping_input_fields .= zen_draw_separator('pixel_black.gif', '100%', '2'); + + return $uri_mapping_input_fields; + } + + /// }}} + + + // {{{ buildCategoryURIMappingFormFields() + + /** + * Builds the input fields for adding/editing URI mappings for categories. + * + * @access public + * @param array $prev_uri_mappings An array of the current values for the URI mappings, if any. + * @return string The source for the input fields. + */ + public function buildCategoryURIMappingFormFields($prev_uri_mappings, $dividerClass = array('label' => 'col-sm-3 control-label', 'input_field'=>'col-sm-9 col-md-6')) + { + global $languages; + + $num_prev_uri_mappings = sizeof($prev_uri_mappings); + + $num_languages = sizeof($languages); + + $uri_mapping_input_fields = zen_draw_separator('pixel_black.gif', '100%', '2'); + + $uri_mapping_input_fields .= "\n\t\t" . '
' . "\n\t\t\t"; + + $uri_mapping_input_fields .= zen_draw_label(CEON_URI_MAPPING_TEXT_CATEGORY_URI, 'prev-uri-mappings', 'class="' . $dividerClass['label'] . '"') . "\n\t\t\t"; + + $uri_mapping_input_fields .= '
' . "\n\t\t\t\t"; + + for ($i = 0, $n = sizeof($languages); $i < $n; $i++) { + $uri_mapping_input_fields .= '
' . "\n\t\t\t\t\t"; + + if (!isset($prev_uri_mappings[$languages[$i]['id']])) { + $prev_uri_mappings[$languages[$i]['id']] = ''; + } + + $uri_mapping_input_fields .= zen_draw_hidden_field('prev-uri-mappings[' . $languages[$i]['id'] . ']', + $prev_uri_mappings[$languages[$i]['id']]); + + $uri_mapping_input_fields .= "\n\t\t\t\t\t"; + $uri_mapping_input_fields .= '
' . "\n\t\t\t\t\t\t"; + $uri_mapping_input_fields .= '' . "\n\t\t\t\t\t\t\t"; + + $uri_mapping_input_fields .= zen_image(DIR_WS_CATALOG_LANGUAGES . $languages[$i]['directory'] . + '/images/' . $languages[$i]['image'], $languages[$i]['name']); // . ' '; + + $uri_mapping_input_fields .= "\n\t\t\t\t\t\t" . "" . "\n\t\t\t\t\t\t"; + $uri_mapping_input_fields .= zen_draw_input_field('uri-mappings[' . $languages[$i]['id'] . ']', + $prev_uri_mappings[$languages[$i]['id']], 'class="form-control"' . ' size="60"'); + + $uri_mapping_input_fields .= "\n\t\t\t\t\t" . "
" . "\n\t\t\t\t"; + $uri_mapping_input_fields .= "
" . "\n\t\t\t\t"; + } + + $uri_mapping_input_fields .= "

" . "\n\t\t\t\t\t"; + + if ($this->_autogenEnabled()) { + if ($num_languages == 1) { + $autogen_message = CEON_URI_MAPPING_TEXT_CATEGORY_URI_AUTOGEN; + } else { + $autogen_message = CEON_URI_MAPPING_TEXT_CATEGORY_URIS_AUTOGEN; + } + + if ($num_prev_uri_mappings == 0) { + $autogen_selected = true; + } else { + $autogen_selected = false; + + if ($num_prev_uri_mappings == 1) { + $autogen_message .= '
' . CEON_URI_MAPPING_TEXT_URI_AUTOGEN_ONE_EXISTING_MAPPING; + } else if ($num_prev_uri_mappings == $num_languages) { + $autogen_message .= '
' . CEON_URI_MAPPING_TEXT_URI_AUTOGEN_ALL_EXISTING_MAPPINGS; + } else { + $autogen_message .= '
' . CEON_URI_MAPPING_TEXT_URI_AUTOGEN_SOME_EXISTING_MAPPINGS; + } + } + + $uri_mapping_input_fields .= zen_draw_checkbox_field('uri-mapping-autogen', '1', $autogen_selected) . + ' ' . $autogen_message; + } else { + $uri_mapping_input_fields .= CEON_URI_MAPPING_TEXT_URI_AUTOGEN_DISABLED; + } + + $uri_mapping_input_fields .= "\n\t\t\t\t"; + + $uri_mapping_input_fields .= "

"; + + $uri_mapping_input_fields .= "\n\t\t\t
\n\t\t
\n\t"; + + $uri_mapping_input_fields .= zen_draw_separator('pixel_black.gif', '100%', '2'); + + $uri_mapping_input_fields .= "\n"; + + return $uri_mapping_input_fields; + } + + /// }}} + +} + +// }}} diff --git a/NEUE DATEIEN/DEINADMIN/includes/classes/class.CeonURIMappingAdminEZPagePages.php b/NEUE DATEIEN/DEINADMIN/includes/classes/class.CeonURIMappingAdminEZPagePages.php new file mode 100644 index 0000000..137543e --- /dev/null +++ b/NEUE DATEIEN/DEINADMIN/includes/classes/class.CeonURIMappingAdminEZPagePages.php @@ -0,0 +1,481 @@ + + * @copyright Copyright 2008-2019 Ceon + * @copyright Copyright 2003-2021 Zen Cart Development Team + * @copyright Portions Copyright 2003 osCommerce + * @link http://ceon.net/software/business/zen-cart/uri-mapping + * @license http://www.zen-cart.com/license/2_0.txt GNU Public License V2.0 + * @version $Id: class.CeonURIMappingAdminEZPagePages.php 2021-06-23 09:32:15Z webchills $ + */ + +if (!defined('IS_ADMIN_FLAG')) { + die('Illegal Access'); +} + +/** + * Load in the parent class if not already loaded + */ +require_once(DIR_FS_CATALOG . DIR_WS_CLASSES . 'class.CeonURIMappingAdminEZPages.php'); + + +// {{{ CeonURIMappingAdminEZPagePages + +/** + * Handles the URI mappings for EZ-pages. + * + * @package ceon_uri_mapping + * @author Conor Kerr + * @copyright Copyright 2008-2019 Ceon + * @copyright Copyright 2003-2019 Zen Cart Development Team + * @copyright Portions Copyright 2003 osCommerce + * @link http://ceon.net/software/business/zen-cart/uri-mapping + * @license http://www.zen-cart.com/license/2_0.txt GNU Public License V2.0 + */ +class CeonURIMappingAdminEZPagePages extends CeonURIMappingAdminEZPages +{ + // {{{ properties + + /** + * Maintains a copy of the current URI mappings entered/generated for the EZ-page. + * + * @var array + * @access protected + */ + protected $_uri_mappings = array(); + + /** + * Maintains a copy of any previous URI mappings for the EZ-page. + * + * @var array + * @access protected + */ + protected $_prev_uri_mappings = array(); + + /** + * Flag indicates whether or not auto-generation of URI mappings has been selected for the EZ-page. + * + * @var boolean + * @access protected + */ + protected $_uri_mapping_autogen = false; + + /** + * Maintains a list of any URI mappings for the EZ-page which clash with existing mappings. + * + * @var array + * @access protected + */ + protected $_clashing_mappings = array(); + + // }}} + + + // {{{ Class Constructor + + /** + * Creates a new instance of the CeonURIMappingAdminEZPagePages class. + * + * @access public + */ + public function __construct() + { + // Load the language definition file for the current language + @include_once(DIR_WS_LANGUAGES . $_SESSION['language'] . '/' . 'ceon_uri_mapping_ezpage_pages.php'); + + if (!defined('CEON_URI_MAPPING_TEXT_EZPAGES_URI') && $_SESSION['language'] != 'german') { + // Fall back to german language file + @include_once(DIR_WS_LANGUAGES . 'german/' . 'ceon_uri_mapping_ezpage_pages.php'); + } + + parent::__construct(); + } + + // }}} + + + // {{{ insertUpdateHandler() + + /** + * Handles the Ceon URI Mapping functionality when an EZ-page is being inserted or updated. + * + * @access public + * @param integer $page_id The ID of the EZ-page. + * @param integer $page_title The name for the EZ-Page. + * @param array $page_titles_array The names for the EZ-Page for the languages used by the store. + * @return none + */ + public function insertUpdateHandler($page_id, $page_title, $page_titles_array = null) + { + global $messageStack; + + $uri_mapping_autogen = (isset($_POST['uri-mapping-autogen']) ? true : false); + + $languages = zen_get_languages(); + + for ($i = 0, $n = count($languages); $i < $n; $i++) { + $prev_uri_mapping = (isset($_POST['prev-uri-mappings'][$languages[$i]['id']])) ? trim($_POST['prev-uri-mappings'][$languages[$i]['id']]) : ''; + + // Handle multilanguage EZ-Pages + if (!is_null($page_titles_array)) { + $page_title = $page_titles_array[$languages[$i]['id']]; + } + + // Auto-generate the URI if requested + if ($uri_mapping_autogen) { + $uri_mapping = $this->autogenEZPageURIMapping((int) $page_id, $page_title, + $languages[$i]['code'], $languages[$i]['id']); + + if ($uri_mapping == CEON_URI_MAPPING_GENERATION_ATTEMPT_FOR_EZ_PAGE_WITH_NO_NAME) { + // Can't generate the URI because of missing "uniqueness" data + $failure_message = sprintf(CEON_URI_MAPPING_TEXT_ERROR_AUTOGENERATION_EZ_PAGE_HAS_NO_NAME, + ucwords($languages[$i]['name'])); + + $messageStack->add_session($failure_message, 'error'); + + continue; + } + } else { + $uri_mapping = (isset($_POST['uri-mappings'][$languages[$i]['id']])) ? $_POST['uri-mappings'][$languages[$i]['id']] : ''; + } + + if (strlen($uri_mapping) > 1) { + // Make sure URI mapping is relative to root of site and does not have a trailing slash or any + // illegal characters + $uri_mapping = $this->_cleanUpURIMapping($uri_mapping); + } + + $insert_uri_mapping = false; + $update_uri_mapping = false; + + if ($uri_mapping != '') { + // Check if the URI mapping is being updated or does not yet exist + if ($prev_uri_mapping == '') { + $insert_uri_mapping = true; + } else if ($prev_uri_mapping != $uri_mapping) { + $update_uri_mapping = true; + } + } + + if ($insert_uri_mapping || $update_uri_mapping) { + if ($update_uri_mapping) { + // Consign previous mapping to the history, so old URI mapping isn't broken + $this->makeURIMappingHistorical($prev_uri_mapping, $languages[$i]['id']); + } + + // Add the new URI mapping + $uri = $uri_mapping; + + $main_page = FILENAME_EZPAGES; + + $mapping_added = + $this->addURIMapping($uri, $languages[$i]['id'], $main_page, null, $page_id); + + if ($mapping_added == CEON_URI_MAPPING_ADD_MAPPING_SUCCESS) { + if ($insert_uri_mapping) { + $success_message = sprintf(CEON_URI_MAPPING_TEXT_EZ_PAGE_MAPPING_ADDED, + ucwords($languages[$i]['name']), + '' . $uri . ''); + } else { + $success_message = sprintf(CEON_URI_MAPPING_TEXT_EZ_PAGE_MAPPING_UPDATED, + ucwords($languages[$i]['name']), + '' . $uri . ''); + } + + $messageStack->add_session($success_message, 'success'); + + } else { + if ($mapping_added == CEON_URI_MAPPING_ADD_MAPPING_ERROR_MAPPING_EXISTS) { + $failure_message = sprintf(CEON_URI_MAPPING_TEXT_ERROR_ADD_MAPPING_EXISTS, + ucwords($languages[$i]['name']), + '' . $uri . ''); + + } else if ($mapping_added == CEON_URI_MAPPING_ADD_MAPPING_ERROR_DATA_ERROR) { + $failure_message = sprintf(CEON_URI_MAPPING_TEXT_ERROR_ADD_MAPPING_DATA, + ucwords($languages[$i]['name']), $uri); + } else { + $failure_message = sprintf(CEON_URI_MAPPING_TEXT_ERROR_ADD_MAPPING_DB, + ucwords($languages[$i]['name']), $uri); + } + + $messageStack->add_session($failure_message, 'error'); + } + } else if ($prev_uri_mapping != '' && $uri_mapping == '') { + // No URI mapping, consign existing mapping to the history, so old URI mapping isn't broken + $this->makeURIMappingHistorical($prev_uri_mapping, $languages[$i]['id']); + + $success_message = sprintf(CEON_URI_MAPPING_TEXT_EZ_PAGE_MAPPING_MADE_HISTORICAL, + ucwords($languages[$i]['name'])); + + $messageStack->add_session($success_message, 'caution'); + } + } + } + + // }}} + + + // {{{ deleteConfirmHandler() + + /** + * Handles the Ceon URI Mapping functionality when an EZ-page is being deleted. + * + * @access public + * @param integer $page_id The ID of the EZ-page. + * @return none + */ + public function deleteConfirmHandler($page_id) + { + $selections = array( + 'main_page' => FILENAME_EZPAGES, + 'associated_db_id' => (int) $page_id + ); + + $this->deleteURIMappings($selections); + } + + // }}} + + + // {{{ configureEnvironment() + + /** + * Simply configures the Ceon URI Mapping variables when the EZ-Page admin page is being displayed/used. + * + * @access public + * @return none + */ + public function configureEnvironment() + { + // Get any current EZ-Page URI mappings from the database if necessary + if (isset($_GET['ezID']) && empty($_POST)) { + $columns_to_retrieve = array( + 'language_id', + 'uri' + ); + + $selections = array( + 'main_page' => FILENAME_EZPAGES, + 'associated_db_id' => (int) $_GET['ezID'], + 'current_uri' => 1 + ); + + $prev_uri_mappings_result = $this->getURIMappingsResultset($columns_to_retrieve, $selections); + + while (!$prev_uri_mappings_result->EOF) { + $this->_prev_uri_mappings[$prev_uri_mappings_result->fields['language_id']] = + $prev_uri_mappings_result->fields['uri']; + + $prev_uri_mappings_result->MoveNext(); + } + + $this->_uri_mappings = $this->_prev_uri_mappings; + + } else { + // Use the URI mappings passed in the POST variables + $this->_prev_uri_mappings = isset($_POST['prev-uri-mappings']) ? $_POST['prev-uri-mappings'] : array(); + $this->_uri_mappings = isset($_POST['uri-mappings']) ? $_POST['uri-mappings'] : array(); + + $this->_uri_mapping_autogen = (isset($_POST['uri-mapping-autogen']) ? true : false); + } + } + + // }}} + + + // {{{ buildEZPageURIMappingFields() + + /** + * Builds the input fields for adding/editing URI mappings for EZ-Pages. + * + * @access public + * @return string The source for the input fields. + */ + public function buildEZPageURIMappingFields() + { + $languages = zen_get_languages(); + + $num_uri_mappings = count($this->_uri_mappings); + + $num_languages = count($languages); + + $uri_mapping_input_fields = ''; + + $uri_mapping_input_fields .= ' + ' . zen_draw_separator('pixel_trans.gif', '1', '10') . ' + + + ' . zen_draw_separator('pixel_black.gif', '100%', '2') . ' + + + ' . + CEON_URI_MAPPING_TEXT_EZ_PAGE_URI . ' + ' . "\n"; + + for ($i = 0, $n = count($languages); $i < $n; $i++) { + $uri_mapping_input_fields .= "

"; + + if (!isset($this->_prev_uri_mappings[$languages[$i]['id']])) { + $this->_prev_uri_mappings[$languages[$i]['id']] = ''; + } + + if (!isset($this->_uri_mappings[$languages[$i]['id']])) { + $this->_uri_mappings[$languages[$i]['id']] = ''; + } + + $uri_mapping_input_fields .= zen_draw_hidden_field('prev-uri-mappings[' . $languages[$i]['id'] . ']', + $this->_prev_uri_mappings[$languages[$i]['id']]); + + $uri_mapping_input_fields .= zen_image(DIR_WS_CATALOG_LANGUAGES . $languages[$i]['directory'] . + '/images/' . $languages[$i]['image'], $languages[$i]['name']) . ' ' . + zen_draw_input_field('uri-mappings[' . $languages[$i]['id'] . ']', + $this->_uri_mappings[$languages[$i]['id']], 'size="60"'); + + $uri_mapping_input_fields .= "

\n"; + } + + $uri_mapping_input_fields .= "

"; + + if ($this->_autogenEnabled()) { + if ($num_languages == 1) { + $autogen_message = CEON_URI_MAPPING_TEXT_EZ_PAGE_URI_AUTOGEN; + } else { + $autogen_message = CEON_URI_MAPPING_TEXT_EZ_PAGE_URIS_AUTOGEN; + } + + if ($num_uri_mappings == 0) { + $autogen_selected = true; + } else { + $autogen_selected = false; + + if ($num_uri_mappings == 1) { + $autogen_message .= '
' . CEON_URI_MAPPING_TEXT_URI_AUTOGEN_ONE_EXISTING_MAPPING; + } else if ($num_uri_mappings == $num_languages) { + $autogen_message .= '
' . CEON_URI_MAPPING_TEXT_URI_AUTOGEN_ALL_EXISTING_MAPPINGS; + } else { + $autogen_message .= '
' . CEON_URI_MAPPING_TEXT_URI_AUTOGEN_SOME_EXISTING_MAPPINGS; + } + } + + if (!$autogen_selected && $this->_uri_mapping_autogen) { + $autogen_selected = true; + } + + $uri_mapping_input_fields .= + zen_draw_checkbox_field('uri-mapping-autogen', '1', $autogen_selected) . ' ' . $autogen_message; + } else { + $uri_mapping_input_fields .= CEON_URI_MAPPING_TEXT_URI_AUTOGEN_DISABLED; + } + + $uri_mapping_input_fields .= "

"; + + $uri_mapping_input_fields .= "\n\t\t\n\t"; + + $uri_mapping_input_fields .= ' + ' . zen_draw_separator('pixel_black.gif', '100%', '2') . ' + '; + + return $uri_mapping_input_fields; + } + + /// }}} + + + // {{{ buildEZPageURIMappingFieldsForm() + + /** + * Builds the input fields for adding/editing URI mappings for EZ-Pages. + * + * @access public + * @return string The source for the input fields. + */ + function buildEZPageURIMappingFieldsForm() + { + $languages = zen_get_languages(); + + $num_uri_mappings = sizeof($this->_uri_mappings); + + $num_languages = sizeof($languages); + + $uri_mapping_input_fields = ''; + + $uri_mapping_input_fields .= zen_draw_separator('pixel_trans.gif', '1', '10') . ' + ' . zen_draw_separator('pixel_black.gif', '100%', '2') . + zen_draw_label(CEON_URI_MAPPING_TEXT_EZ_PAGE_URI, 'uri-mappings', 'class ="col-sm-3 control label"') . ' +
' . "\n"; + + for ($i = 0, $n = sizeof($languages); $i < $n; $i++) { + $uri_mapping_input_fields .= ''; + + if (!isset($this->_prev_uri_mappings[$languages[$i]['id']])) { + $this->_prev_uri_mappings[$languages[$i]['id']] = ''; + } + + if (!isset($this->_uri_mappings[$languages[$i]['id']])) { + $this->_uri_mappings[$languages[$i]['id']] = ''; + } + + $uri_mapping_input_fields .= zen_draw_hidden_field('prev-uri-mappings[' . $languages[$i]['id'] . ']', + $this->_prev_uri_mappings[$languages[$i]['id']]); + + $uri_mapping_input_fields .= zen_image(DIR_WS_CATALOG_LANGUAGES . $languages[$i]['directory'] . + '/images/' . $languages[$i]['image'], $languages[$i]['name']) . '' . + zen_draw_input_field('uri-mappings[' . $languages[$i]['id'] . ']', + $this->_uri_mappings[$languages[$i]['id']], 'style="width:100%" class="form-control"'); + + $uri_mapping_input_fields .= "
\n"; + } + + $uri_mapping_input_fields .= '
'; + + if ($this->_autogenEnabled()) { + if ($num_languages == 1) { + $autogen_message = CEON_URI_MAPPING_TEXT_EZ_PAGE_URI_AUTOGEN; + } else { + $autogen_message = CEON_URI_MAPPING_TEXT_EZ_PAGE_URIS_AUTOGEN; + } + + if ($num_uri_mappings == 0) { + $autogen_selected = true; + } else { + $autogen_selected = false; + + if ($num_uri_mappings == 1) { + $autogen_message .= '
' . CEON_URI_MAPPING_TEXT_URI_AUTOGEN_ONE_EXISTING_MAPPING; + } else if ($num_uri_mappings == $num_languages) { + $autogen_message .= '
' . CEON_URI_MAPPING_TEXT_URI_AUTOGEN_ALL_EXISTING_MAPPINGS; + } else { + $autogen_message .= '
' . CEON_URI_MAPPING_TEXT_URI_AUTOGEN_SOME_EXISTING_MAPPINGS; + } + } + + if (!$autogen_selected && $this->_uri_mapping_autogen) { + $autogen_selected = true; + } + + $uri_mapping_input_fields .= + zen_draw_checkbox_field('uri-mapping-autogen', '1', $autogen_selected) . ' ' . $autogen_message; + } else { + $uri_mapping_input_fields .= CEON_URI_MAPPING_TEXT_URI_AUTOGEN_DISABLED; + } + + $uri_mapping_input_fields .= "

"; + + $uri_mapping_input_fields .= "\n\t\t
"; + + $uri_mapping_input_fields .= ' + ' . zen_draw_separator('pixel_black.gif', '100%', '2') . ' + '; + return $uri_mapping_input_fields; + } + + /// }}} +} + +// }}} diff --git a/NEUE DATEIEN/DEINADMIN/includes/classes/class.CeonURIMappingAdminManufacturerPages.php b/NEUE DATEIEN/DEINADMIN/includes/classes/class.CeonURIMappingAdminManufacturerPages.php new file mode 100644 index 0000000..654d6aa --- /dev/null +++ b/NEUE DATEIEN/DEINADMIN/includes/classes/class.CeonURIMappingAdminManufacturerPages.php @@ -0,0 +1,540 @@ + + * @copyright Copyright 2008-2019 Ceon + * @copyright Copyright 2003-2019 Zen Cart Development Team + * @copyright Portions Copyright 2003 osCommerce + * @link http://ceon.net/software/business/zen-cart/uri-mapping + * @license http://www.zen-cart.com/license/2_0.txt GNU Public License V2.0 + * @version $Id: class.CeonURIMappingAdminManufacturerPages.php 2019-07-05 07:45:15Z webchills $ + */ + +if (!defined('IS_ADMIN_FLAG')) { + die('Illegal Access'); +} + +/** + * Load in the parent class if not already loaded + */ +require_once(DIR_FS_CATALOG . DIR_WS_CLASSES . 'class.CeonURIMappingAdminManufacturers.php'); + + +// {{{ CeonURIMappingAdminManufacturerPages + +/** + * Handles the URI mappings for Manufacturers. + * + * @package ceon_uri_mapping + * @author Conor Kerr + * @copyright Copyright 2008-2019 Ceon + * @copyright Copyright 2003-2019 Zen Cart Development Team + * @copyright Portions Copyright 2003 osCommerce + * @link http://ceon.net/software/business/zen-cart/uri-mapping + * @license http://www.zen-cart.com/license/2_0.txt GNU Public License V2.0 + */ +class CeonURIMappingAdminManufacturerPages extends CeonURIMappingAdminManufacturers +{ + // {{{ properties + + /** + * Maintains a copy of the current URI mappings entered/generated for the Manufacturer. + * + * @var array + * @access protected + */ + protected $_uri_mappings = array(); + + /** + * Maintains a copy of any previous URI mappings for the Manufacturer. + * + * @var array + * @access protected + */ + protected $_prev_uri_mappings = array(); + + /** + * Flag indicates whether or not auto-generation of URI mappings has been selected for the Manufacturer. + * + * @var boolean + * @access protected + */ + protected $_uri_mapping_autogen = false; + + /** + * Maintains a list of any URI mappings for the Manufacturer which clash with existing mappings. + * + * @var array + * @access protected + */ + protected $_clashing_mappings = array(); + + // }}} + + + // {{{ Class Constructor + + /** + * Creates a new instance of the CeonURIMappingAdminManufacturerPages class. + * + * @access public + */ + public function __construct() + { + // Load the language definition file for the current language + @include_once(DIR_WS_LANGUAGES . $_SESSION['language'] . '/' . 'ceon_uri_mapping_manufacturer_pages.php'); + + if (!defined('CEON_URI_MAPPING_TEXT_MANUFACTURERS_URI') && $_SESSION['language'] != 'german') { + // Fall back to german language file + @include_once(DIR_WS_LANGUAGES . 'german/' . 'ceon_uri_mapping_manufacturer_pages.php'); + } + + parent::__construct(); + } + + // }}} + + + // {{{ insertSaveHandler() + + /** + * Handles the Ceon URI Mapping functionality when a manufacturer is being inserted or updated. + * + * @access public + * @param integer $manufacturer_id The ID of the manufacturer. + * @param integer $manufacturer_name The name of the manufacturer. + * @return none + */ + public function insertSaveHandler($manufacturer_id, $manufacturer_name) + { + global $messageStack; + + $uri_mapping_autogen = (isset($_POST['uri-mapping-autogen']) ? true : false); + + $languages = zen_get_languages(); + + for ($i = 0, $n = count($languages); $i < $n; $i++) { + $prev_uri_mapping = trim($_POST['prev-uri-mappings'][$languages[$i]['id']]); + + // Auto-generate the URI if requested + if ($uri_mapping_autogen) { + $uri_mapping = $this->autogenManufacturerURIMapping($manufacturer_id, $manufacturer_name, + $languages[$i]['code'], $languages[$i]['id']); + + if ($uri_mapping == CEON_URI_MAPPING_GENERATION_ATTEMPT_FOR_MANUFACTURER_WITH_NO_NAME) { + // Can't generate the URI because of missing "uniqueness" data + $failure_message = sprintf(CEON_URI_MAPPING_TEXT_ERROR_AUTOGENERATION_MANUFACTURER_HAS_NO_NAME, + ucwords($languages[$i]['name'])); + + $messageStack->add_session($failure_message, 'error'); + + continue; + } + } else { + $uri_mapping = $_POST['uri-mappings'][$languages[$i]['id']]; + } + + if (strlen($uri_mapping) > 1) { + // Make sure URI mapping is relative to root of site and does not have a trailing slash or any ~ + // illegal characters + $uri_mapping = $this->_cleanUpURIMapping($uri_mapping); + } + + $insert_uri_mapping = false; + $update_uri_mapping = false; + + if ($uri_mapping != '') { + // Check if the URI mapping is being updated or does not yet exist + if ($prev_uri_mapping == '') { + $insert_uri_mapping = true; + } else if ($prev_uri_mapping != $uri_mapping) { + $update_uri_mapping = true; + } + } + + $query_string_parameters = 'manufacturers_id=' . (int) $manufacturer_id; + + if ($insert_uri_mapping || $update_uri_mapping) { + if ($update_uri_mapping) { + // Consign previous mapping to the history, so old URI mapping isn't broken + $this->makeURIMappingHistorical($prev_uri_mapping, $languages[$i]['id']); + } + + // Add the new URI mapping + $uri = $uri_mapping; + + $main_page = FILENAME_DEFAULT; + + $mapping_added = + $this->addURIMapping($uri, $languages[$i]['id'], $main_page, $query_string_parameters); + + if ($mapping_added == CEON_URI_MAPPING_ADD_MAPPING_SUCCESS) { + if ($insert_uri_mapping) { + $success_message = sprintf(CEON_URI_MAPPING_TEXT_MANUFACTURER_MAPPING_ADDED, + ucwords($languages[$i]['name']), + '' . $uri . ''); + } else { + $success_message = sprintf(CEON_URI_MAPPING_TEXT_MANUFACTURER_MAPPING_UPDATED, + ucwords($languages[$i]['name']), + '' . $uri . ''); + } + + $messageStack->add_session($success_message, 'success'); + + } else { + if ($mapping_added == CEON_URI_MAPPING_ADD_MAPPING_ERROR_MAPPING_EXISTS) { + $failure_message = sprintf(CEON_URI_MAPPING_TEXT_ERROR_ADD_MAPPING_EXISTS, + ucwords($languages[$i]['name']), + '' . $uri . ''); + + } else if ($mapping_added == CEON_URI_MAPPING_ADD_MAPPING_ERROR_DATA_ERROR) { + $failure_message = sprintf(CEON_URI_MAPPING_TEXT_ERROR_ADD_MAPPING_DATA, + ucwords($languages[$i]['name']), $uri); + } else { + $failure_message = sprintf(CEON_URI_MAPPING_TEXT_ERROR_ADD_MAPPING_DB, + ucwords($languages[$i]['name']), $uri); + } + + $messageStack->add_session($failure_message, 'error'); + } + } else if ($prev_uri_mapping != '' && $uri_mapping == '') { + // No URI mapping, consign existing mapping to the history, so old URI mapping isn't broken + $this->makeURIMappingHistorical($prev_uri_mapping, $languages[$i]['id']); + + $success_message = sprintf(CEON_URI_MAPPING_TEXT_MANUFACTURER_MAPPING_MADE_HISTORICAL, + ucwords($languages[$i]['name'])); + + $messageStack->add_session($success_message, 'caution'); + } + } + } + + // }}} + + + // {{{ deleteConfirmHandler() + + /** + * Handles the Ceon URI Mapping functionality when a Manufacturer is being deleted. + * + * @access public + * @param integer $manufacturer_id The ID of the manufacturer. + * @return none + */ + public function deleteConfirmHandler($manufacturer_id) + { + $query_string_parameters = 'manufacturers_id=' . (int) $manufacturer_id; + + $selections = array( + 'main_page' => FILENAME_DEFAULT, + 'query_string_parameters' => $query_string_parameters + ); + + $this->deleteURIMappings($selections); + } + + // }}} + + + // {{{ addURIMappingFieldsToAddManufacturerFieldsArray() + + /** + * Adds the fields necessary for the Ceon URI Mapping options to the list of add manufacturer fields, accessing + * the list of add manufacturer fields directly, through a global variable. + * + * @access public + * @return none + */ + public function addURIMappingFieldsToAddManufacturerFieldsArray() + { + global $contents; + + // New manufacturer doesn't have any previous URI mappings + $prev_uri_mappings = array(); + + $uri_mapping_input_fields = $this->buildManufacturerURIMappingFields($prev_uri_mappings); + + $contents[] = array('text' => $uri_mapping_input_fields); + } + + // }}} + + + // {{{ addURIMappingFieldsToEditManufacturerFieldsArray() + + /** + * Adds the fields necessary for the Ceon URI Mapping options to the list of edit manufacturer fields, + * accessing the list of edit manufacturer fields directly, through a global variable. + * + * @access public + * @param integer $manufacturer_id The ID of the manufacturer. + * @return none + */ + public function addURIMappingFieldsToEditManufacturerFieldsArray($manufacturer_id) + { + global $contents; + + // Get any current manufacturer mappings from the database, up to one for each language + $prev_uri_mappings = array(); + + $columns_to_retrieve = array( + 'language_id', + 'uri' + ); + + $query_string_parameters = 'manufacturers_id=' . (int) $manufacturer_id; + + $selections = array( + 'main_page' => FILENAME_DEFAULT, + 'query_string_parameters' => $query_string_parameters, + 'current_uri' => 1 + ); + + $prev_uri_mappings_result = $this->getURIMappingsResultset($columns_to_retrieve, $selections); + + while (!$prev_uri_mappings_result->EOF) { + $prev_uri_mappings[$prev_uri_mappings_result->fields['language_id']] = + $prev_uri_mappings_result->fields['uri']; + + $prev_uri_mappings_result->MoveNext(); + } + + $uri_mapping_input_fields = $this->buildManufacturerURIMappingFields($prev_uri_mappings); + + $contents[] = array('text' => $uri_mapping_input_fields); + } + + // }}} + + + // {{{ addURIMappingFieldsToEditManufacturerFieldsFormArray() + + /** + * Adds the fields necessary for the Ceon URI Mapping options to the list of edit manufacturer fields, + * accessing the list of edit manufacturer fields directly, through a global variable. + * + * @access public + * @param integer $manufacturer_id The ID of the manufacturer. + * @return none + */ + public function addURIMappingFieldsToEditManufacturerFieldsFormArray($manufacturer_id) + { + global $contents; + + // Get any current manufacturer mappings from the database, up to one for each language + $prev_uri_mappings = array(); + + $columns_to_retrieve = array( + 'language_id', + 'uri' + ); + + $query_string_parameters = 'manufacturers_id=' . (int) $manufacturer_id; + + $selections = array( + 'main_page' => FILENAME_DEFAULT, + 'query_string_parameters' => $query_string_parameters, + 'current_uri' => 1 + ); + + $prev_uri_mappings_result = $this->getURIMappingsResultset($columns_to_retrieve, $selections); + + while (!$prev_uri_mappings_result->EOF) { + $prev_uri_mappings[$prev_uri_mappings_result->fields['language_id']] = + $prev_uri_mappings_result->fields['uri']; + + $prev_uri_mappings_result->MoveNext(); + } + + $uri_mapping_input_fields = $this->buildManufacturerURIMappingFormFields($prev_uri_mappings); + + $contents[] = array('text' => $uri_mapping_input_fields); + } + + // }}} + + + // {{{ buildManufacturerURIMappingFields() + + /** + * Builds the input fields for adding/editing URI mappings for manufacturers. + * + * @access public + * @param array $prev_uri_mappings An array of the current values for the URI mappings, if any. + * @return string The source for the input fields. + */ + public function buildManufacturerURIMappingFields($prev_uri_mappings) + { + global $languages; + + $num_prev_uri_mappings = count($prev_uri_mappings); + + $num_languages = count($languages); + + $uri_mapping_input_fields = zen_draw_separator('pixel_black.gif', '100%', '2'); + + $uri_mapping_input_fields .= '' . "\n\t"; + $uri_mapping_input_fields .= '' . "\n\t\t" . + '' . "\n\t\t" . + '' . "\n\t\n\t\n\t\t" . + '\n\t\n
'; + + $uri_mapping_input_fields .= CEON_URI_MAPPING_TEXT_MANUFACTURER_URI . '' . "\n"; + + for ($i = 0, $n = count($languages); $i < $n; $i++) { + $uri_mapping_input_fields .= "

"; + + if (!isset($prev_uri_mappings[$languages[$i]['id']])) { + $prev_uri_mappings[$languages[$i]['id']] = ''; + } + + $uri_mapping_input_fields .= zen_draw_hidden_field('prev-uri-mappings[' . $languages[$i]['id'] . ']', + $prev_uri_mappings[$languages[$i]['id']]); + + $uri_mapping_input_fields .= zen_image(DIR_WS_CATALOG_LANGUAGES . $languages[$i]['directory'] . + '/images/' . $languages[$i]['image'], $languages[$i]['name']) . ' ' . + zen_draw_input_field('uri-mappings[' . $languages[$i]['id'] . ']', + $prev_uri_mappings[$languages[$i]['id']], 'size="60"'); + + $uri_mapping_input_fields .= "

\n"; + } + + $uri_mapping_input_fields .= '
' . "\n"; + + $uri_mapping_input_fields .= "

"; + + if ($this->_autogenEnabled()) { + if ($num_languages == 1) { + $autogen_message = CEON_URI_MAPPING_TEXT_MANUFACTURER_URI_AUTOGEN; + } else { + $autogen_message = CEON_URI_MAPPING_TEXT_MANUFACTURER_URIS_AUTOGEN; + } + + if ($num_prev_uri_mappings == 0) { + $autogen_selected = true; + } else { + $autogen_selected = false; + + if ($num_prev_uri_mappings == 1) { + $autogen_message .= '
' . CEON_URI_MAPPING_TEXT_URI_AUTOGEN_ONE_EXISTING_MAPPING; + } else if ($num_prev_uri_mappings == $num_languages) { + $autogen_message .= '
' . CEON_URI_MAPPING_TEXT_URI_AUTOGEN_ALL_EXISTING_MAPPINGS; + } else { + $autogen_message .= '
' . CEON_URI_MAPPING_TEXT_URI_AUTOGEN_SOME_EXISTING_MAPPINGS; + } + } + + $uri_mapping_input_fields .= + zen_draw_checkbox_field('uri-mapping-autogen', '1', $autogen_selected) . ' ' . $autogen_message; + } else { + $uri_mapping_input_fields .= CEON_URI_MAPPING_TEXT_URI_AUTOGEN_DISABLED; + } + + $uri_mapping_input_fields .= "

"; + + $uri_mapping_input_fields .= "\n\t\t
\n"; + + $uri_mapping_input_fields .= zen_draw_separator('pixel_black.gif', '100%', '2'); + + return $uri_mapping_input_fields; + } + + /// }}} + + + // {{{ buildManufacturerURIMappingFormFields() + + /** + * Builds the input fields for adding/editing URI mappings for manufacturers. + * + * @access public + * @param array $prev_uri_mappings An array of the current values for the URI mappings, if any. + * @return string The source for the input fields. + */ + public function buildManufacturerURIMappingFormFields($prev_uri_mappings) + { + global $languages; + + $num_prev_uri_mappings = count($prev_uri_mappings); + + $num_languages = count($languages); + + $uri_mapping_input_fields = '
'; + + $uri_mapping_input_fields .= zen_draw_separator('pixel_black.gif', '100%', '2'); + +/* $uri_mapping_input_fields .= '' . "\n\t"; + $uri_mapping_input_fields .= '' . "\n\t\t" . + '' . "\n\t\t" . + '' . "\n\t\n\t\n\t\t" . + '\n\t\n
';*/ + + $uri_mapping_input_fields .= CEON_URI_MAPPING_TEXT_MANUFACTURER_URI /*. ''*/ . "\n"; + + for ($i = 0, $n = sizeof($languages); $i < $n; $i++) { + $uri_mapping_input_fields .= "

"; + + if (!isset($prev_uri_mappings[$languages[$i]['id']])) { + $prev_uri_mappings[$languages[$i]['id']] = ''; + } + + $uri_mapping_input_fields .= zen_draw_hidden_field('prev-uri-mappings[' . $languages[$i]['id'] . ']', + $prev_uri_mappings[$languages[$i]['id']]); + + $uri_mapping_input_fields .= zen_image(DIR_WS_CATALOG_LANGUAGES . $languages[$i]['directory'] . + '/images/' . $languages[$i]['image'], $languages[$i]['name']) . ' ' . + zen_draw_input_field('uri-mappings[' . $languages[$i]['id'] . ']', + $prev_uri_mappings[$languages[$i]['id']], 'class="form-control" size="60"'); + + $uri_mapping_input_fields .= "

\n"; + } + + $uri_mapping_input_fields .= /*'
' .*/ "\n"; + + $uri_mapping_input_fields .= "

"; + + if ($this->_autogenEnabled()) { + if ($num_languages == 1) { + $autogen_message = CEON_URI_MAPPING_TEXT_MANUFACTURER_URI_AUTOGEN; + } else { + $autogen_message = CEON_URI_MAPPING_TEXT_MANUFACTURER_URIS_AUTOGEN; + } + + if ($num_prev_uri_mappings == 0) { + $autogen_selected = true; + } else { + $autogen_selected = false; + + if ($num_prev_uri_mappings == 1) { + $autogen_message .= '
' . CEON_URI_MAPPING_TEXT_URI_AUTOGEN_ONE_EXISTING_MAPPING; + } else if ($num_prev_uri_mappings == $num_languages) { + $autogen_message .= '
' . CEON_URI_MAPPING_TEXT_URI_AUTOGEN_ALL_EXISTING_MAPPINGS; + } else { + $autogen_message .= '
' . CEON_URI_MAPPING_TEXT_URI_AUTOGEN_SOME_EXISTING_MAPPINGS; + } + } + + $uri_mapping_input_fields .= + zen_draw_checkbox_field('uri-mapping-autogen', '1', $autogen_selected) . ' ' . $autogen_message; + } else { + $uri_mapping_input_fields .= CEON_URI_MAPPING_TEXT_URI_AUTOGEN_DISABLED; + } + + $uri_mapping_input_fields .= "

"; + +// $uri_mapping_input_fields .= "\n\t\t
\n"; + + $uri_mapping_input_fields .= zen_draw_separator('pixel_black.gif', '100%', '2'); + + return $uri_mapping_input_fields; + } + + /// }}} +} + +// }}} diff --git a/NEUE DATEIEN/DEINADMIN/includes/classes/class.CeonURIMappingAdminProductPages.php b/NEUE DATEIEN/DEINADMIN/includes/classes/class.CeonURIMappingAdminProductPages.php new file mode 100644 index 0000000..ca9d1c4 --- /dev/null +++ b/NEUE DATEIEN/DEINADMIN/includes/classes/class.CeonURIMappingAdminProductPages.php @@ -0,0 +1,2071 @@ + + * @copyright Copyright 2008-2020 Ceon + * @copyright Copyright 2003-2021 Zen Cart Development Team + * @copyright Portions Copyright 2003 osCommerce + * @link http://ceon.net/software/business/zen-cart/uri-mapping + * @license http://www.zen-cart.com/license/2_0.txt GNU Public License V2.0 + * @version $Id: class.CeonURIMappingAdminProductPages.php 2021-06-23 13:07:15Z webchills $ + */ + +if (!defined('IS_ADMIN_FLAG')) { + die('Illegal Access'); +} + +/** + * Load in the parent class if not already loaded + */ +require_once(DIR_FS_CATALOG . DIR_WS_CLASSES . 'class.CeonURIMappingAdminProducts.php'); + + +// {{{ CeonURIMappingAdminProductPages + +/** + * Handles the functionality for product pages within the Zen Cart admin. + * + * @package ceon_uri_mapping + * @author Conor Kerr + * @copyright Copyright 2008-2019 Ceon + * @copyright Copyright 2003-2007 Zen Cart Development Team + * @copyright Portions Copyright 2003 osCommerce + * @link http://ceon.net/software/business/zen-cart/uri-mapping + * @license http://www.zen-cart.com/license/2_0.txt GNU Public License V2.0 + */ +class CeonURIMappingAdminProductPages extends CeonURIMappingAdminProducts +{ + // {{{ properties + + /** + * Maintains a copy of the current URI mappings entered/generated for the product. + * + * @var array + * @access protected + */ + protected $_uri_mappings = array(); + + /** + * Maintains a copy of any previous URI mappings for the product. + * + * @var array + * @access protected + */ + protected $_prev_uri_mappings = array(); + + /** + * Flag indicates whether or not auto-generation of URI mappings has been selected for the product. + * + * @var boolean + * @access protected + */ + protected $_uri_mapping_autogen = false; + + /** + * Maintains a list of any URI mappings for the product which clash with existing mappings. + * + * @var array + * @access protected + */ + protected $_clashing_mappings = array(); + + /** + * Maintains a list of any URI mappings for the product for which auto-generation failed to produce a valid + * mapping. + * + * @var array + * @access protected + */ + protected $_autogeneration_errors = array(); + + // }}} + + + // {{{ Class Constructor + + /** + * Creates a new instance of the CeonURIMappingAdminProductPages class. + * + * @access public + */ + public function __construct() + { + // Load the language definition file for the current language + @include_once(DIR_WS_LANGUAGES . $_SESSION['language'] . '/' . 'ceon_uri_mapping_product_pages.php'); + + if (!defined('CEON_URI_MAPPING_TEXT_PRODUCT_URI') && $_SESSION['language'] != 'german') { + // Fall back to german language file + @include_once(DIR_WS_LANGUAGES . 'german/' . 'ceon_uri_mapping_product_pages.php'); + } + + parent::__construct(); + } + + // }}} + + + // {{{ collectInfoHandler() + + /** + * Handles the Ceon URI Mapping functionality when the product admin page is being displayed. + * + * @access public + * @return none + */ + public function collectInfoHandler() + { + global $db; + + // Get any current product URI mappings from the database + if (isset($_GET['pID']) && empty($_POST)) { + // Get the product's type handler + $product_type_handler_query = " + SELECT + pt.type_handler + FROM + " . TABLE_PRODUCTS . " p + LEFT JOIN + " . TABLE_PRODUCT_TYPES . " pt + ON + pt.type_id = p.products_type + WHERE + p.products_id = '" . (int) $_GET['pID'] . "';"; + + $product_type_handler_result = $db->Execute($product_type_handler_query); + + $product_type_handler = $product_type_handler_result->fields['type_handler']; + + $columns_to_retrieve = array( + 'language_id', + 'uri' + ); + + $selections = array( + 'main_page' => $product_type_handler . '_info', + 'associated_db_id' => (int) $_GET['pID'], + 'current_uri' => 1 + ); + + $prev_uri_mappings_result = $this->getURIMappingsResultset($columns_to_retrieve, $selections); + + while (!$prev_uri_mappings_result->EOF) { + $this->_prev_uri_mappings[$prev_uri_mappings_result->fields['language_id']] = + $prev_uri_mappings_result->fields['uri']; + + $prev_uri_mappings_result->MoveNext(); + } + + $this->_uri_mappings = $this->_prev_uri_mappings; + + } else { + // Use the URI mappings passed in the POST variables + $this->_prev_uri_mappings = isset($_POST['prev-uri-mappings']) ? $_POST['prev-uri-mappings'] : array(); + $this->_uri_mappings = isset($_POST['uri-mappings']) ? $_POST['uri-mappings'] : array(); + + $this->_uri_mapping_autogen = (isset($_POST['uri-mapping-autogen']) ? true : false); + } + } + + // }}} + + + // {{{ collectInfoBuildURIMappingFields() + + /** + * Builds the input fields for adding/editing URI mappings for products. + * + * @access public + * @return string The source for the input fields. + */ + public function collectInfoBuildURIMappingFields() + { + global $languages; + + $num_uri_mappings = count($this->_uri_mappings); + + $num_languages = count($languages); + + $uri_mapping_input_fields = ''; + + $uri_mapping_input_fields .= ' + ' . zen_draw_separator('pixel_trans.gif', '1', '10') . ' + + + ' . zen_draw_separator('pixel_black.gif', '100%', '2') . ' + + + ' . + CEON_URI_MAPPING_TEXT_PRODUCT_URI . ' + ' . "\n"; + + for ($i = 0, $n = count($languages); $i < $n; $i++) { + $uri_mapping_input_fields .= "

"; + + if (!isset($this->_prev_uri_mappings[$languages[$i]['id']])) { + $this->_prev_uri_mappings[$languages[$i]['id']] = ''; + } + if (!isset($this->_uri_mappings[$languages[$i]['id']])) { + $this->_uri_mappings[$languages[$i]['id']] = ''; + } + + $uri_mapping_input_fields .= zen_draw_hidden_field('prev-uri-mappings[' . $languages[$i]['id'] . ']', + $this->_prev_uri_mappings[$languages[$i]['id']]); + + $uri_mapping_input_fields .= zen_image(DIR_WS_CATALOG_LANGUAGES . $languages[$i]['directory'] . + '/images/' . $languages[$i]['image'], $languages[$i]['name']) . ' ' . + zen_draw_input_field('uri-mappings[' . $languages[$i]['id'] . ']', + $this->_uri_mappings[$languages[$i]['id']], 'style="width:100%"'); + + $uri_mapping_input_fields .= "

\n"; + } + + $uri_mapping_input_fields .= "

"; + + if ($this->_autogenEnabled()) { + if ($num_languages == 1) { + $autogen_message = CEON_URI_MAPPING_TEXT_PRODUCT_URI_AUTOGEN; + } else { + $autogen_message = CEON_URI_MAPPING_TEXT_PRODUCT_URIS_AUTOGEN; + } + + if ($num_uri_mappings == 0) { + $autogen_selected = true; + } else { + $autogen_selected = false; + + if ($num_uri_mappings == 1) { + $autogen_message .= '
' . CEON_URI_MAPPING_TEXT_URI_AUTOGEN_ONE_EXISTING_MAPPING; + } else if ($num_uri_mappings == $num_languages) { + $autogen_message .= '
' . CEON_URI_MAPPING_TEXT_URI_AUTOGEN_ALL_EXISTING_MAPPINGS; + } else { + $autogen_message .= '
' . CEON_URI_MAPPING_TEXT_URI_AUTOGEN_SOME_EXISTING_MAPPINGS; + } + } + + if (!$autogen_selected && $this->_uri_mapping_autogen) { + $autogen_selected = true; + } + + $uri_mapping_input_fields .= zen_draw_checkbox_field('uri-mapping-autogen', '1', $autogen_selected) . + ' ' . $autogen_message; + } else { + $uri_mapping_input_fields .= CEON_URI_MAPPING_TEXT_URI_AUTOGEN_DISABLED; + } + + $uri_mapping_input_fields .= "

"; + + $uri_mapping_input_fields .= "\n\t\t\n\t"; + + $uri_mapping_input_fields .= ' + ' . zen_draw_separator('pixel_black.gif', '100%', '2') . ' + '; + + return $uri_mapping_input_fields; + } + + /// }}} + + + // {{{ collectInfoBuildURIMappingForm() + + /** + * Builds the input fields for adding/editing URI mappings for products. + * + * @access public + * @return string The source for the input fields. + */ + public function collectInfoBuildURIMappingForm() + { + global $languages; + + $num_uri_mappings = sizeof($this->_uri_mappings); + + $num_languages = sizeof($languages); + /* +
+ +
+ products_sort_order, 'class="form-control"'); ?> +
+*/ + $uri_mapping_input_fields = zen_draw_separator('pixel_trans.gif', '1', '10') . ' + ' . zen_draw_separator('pixel_black.gif', '100%', '2') . + zen_draw_label(CEON_URI_MAPPING_TEXT_PRODUCT_URI, 'uri-mappings', 'class ="col-sm-3 control-label"') . ' +
' . "\n"; + + for ($i = 0, $n = sizeof($languages); $i < $n; $i++) { + $uri_mapping_input_fields .= '
' . "\n" . ''; + + if (!isset($this->_prev_uri_mappings[$languages[$i]['id']])) { + $this->_prev_uri_mappings[$languages[$i]['id']] = ''; + } + if (!isset($this->_uri_mappings[$languages[$i]['id']])) { + $this->_uri_mappings[$languages[$i]['id']] = ''; + } + + $uri_mapping_input_fields .= zen_draw_hidden_field('prev-uri-mappings[' . $languages[$i]['id'] . ']', + $this->_prev_uri_mappings[$languages[$i]['id']]); + + $uri_mapping_input_fields .= '' . zen_image(DIR_WS_CATALOG_LANGUAGES . $languages[$i]['directory'] . + '/images/' . $languages[$i]['image'], $languages[$i]['name']) . '' . + zen_draw_input_field('uri-mappings[' . $languages[$i]['id'] . ']', + $this->_uri_mappings[$languages[$i]['id']], 'style="width:100%" class="form-control"');//steve removed size, added css width (WAS'size="60"') + + $uri_mapping_input_fields .= "
\n"; + } + + $uri_mapping_input_fields .= '
'; + + if ($this->_autogenEnabled()) { + if ($num_languages == 1) { + $autogen_message = CEON_URI_MAPPING_TEXT_PRODUCT_URI_AUTOGEN; + } else { + $autogen_message = CEON_URI_MAPPING_TEXT_PRODUCT_URIS_AUTOGEN; + } + + if ($num_uri_mappings == 0) { + $autogen_selected = true; + } else { + $autogen_selected = false; + + if ($num_uri_mappings == 1) { + $autogen_message .= '
' . CEON_URI_MAPPING_TEXT_URI_AUTOGEN_ONE_EXISTING_MAPPING; + } else if ($num_uri_mappings == $num_languages) { + $autogen_message .= '
' . CEON_URI_MAPPING_TEXT_URI_AUTOGEN_ALL_EXISTING_MAPPINGS; + } else { + $autogen_message .= '
' . CEON_URI_MAPPING_TEXT_URI_AUTOGEN_SOME_EXISTING_MAPPINGS; + } + } + + if (!$autogen_selected && $this->_uri_mapping_autogen) { + $autogen_selected = true; + } + + $uri_mapping_input_fields .= zen_draw_checkbox_field('uri-mapping-autogen', '1', $autogen_selected) . + ' ' . $autogen_message; + } else { + $uri_mapping_input_fields .= CEON_URI_MAPPING_TEXT_URI_AUTOGEN_DISABLED; + } + + $uri_mapping_input_fields .= "

"; + + $uri_mapping_input_fields .= "\n\t\t
"; + + $uri_mapping_input_fields .= " + " . zen_draw_separator('pixel_black.gif', '100%', '2') . " + "; + + return $uri_mapping_input_fields; + } + + /// }}} + + + // {{{ productPreviewProcessSubmission() + + /** + * Handles the Ceon URI Mapping functionality when a product page has been submitted for preview. + * + * @access public + * @param integer $current_category_id The ID of the original master category for the product. + * @return none + */ + public function productPreviewProcessSubmission($current_category_id) + { + //global $db; + + $this->_prev_uri_mappings = isset($_POST['prev-uri-mappings']) ? $_POST['prev-uri-mappings'] : array(); + $this->_uri_mappings = isset($_POST['uri-mappings']) ? $_POST['uri-mappings'] : array(); + + $languages = zen_get_languages(); + + // Are any supplied URIs to be overridden with generated URIs? If so, build a preview of these URIs to be + // displayed + $this->_uri_mapping_autogen = (isset($_POST['uri-mapping-autogen']) ? true : false); + + if ($this->_uri_mapping_autogen) { + // Is a linked product having its master category changed? + if (isset($_POST['master_category']) && $_POST['master_category'] > 0) { + $master_categories_id = (int) $_POST['master_category']; + } else { + // Find out where this product is being added/updated + $master_categories_id = (int) $current_category_id; + } + + // Need to store names so they can be appended to the URI being generated for the product + $names = isset($_POST['products_name']) ? $_POST['products_name'] : ''; + + for ($i = 0, $n = count($languages); $i < $n; $i++) { + $product_id = (isset($_GET['pID']) ? (int) $_GET['pID'] : null); + + $uri_mapping = $this->autogenProductURIMapping($product_id, $master_categories_id, + $names[$languages[$i]['id']], $languages[$i]['code'], $languages[$i]['id'], + $_POST['products_model']); + + if ($uri_mapping == CEON_URI_MAPPING_GENERATION_ATTEMPT_FOR_PRODUCT_WITH_NO_NAME || + $uri_mapping == CEON_URI_MAPPING_GENERATION_ATTEMPT_FOR_PRODUCT_WITH_NO_MODEL) { + // Can't generate the URI because of missing "uniqueness" data + if ($uri_mapping == CEON_URI_MAPPING_GENERATION_ATTEMPT_FOR_PRODUCT_WITH_NO_NAME) { + $message = CEON_URI_MAPPING_TEXT_PREVIEW_PRODUCT_ERROR_PRODUCT_HAS_NO_NAME; + } else { + $message = CEON_URI_MAPPING_TEXT_PREVIEW_PRODUCT_ERROR_PRODUCT_HAS_NO_MODEL; + } + + $this->_autogeneration_errors[$languages[$i]['id']] = $message; + + // Set the "new" mapping back to the previous, so it won't be updated + $this->_uri_mappings[$languages[$i]['id']] = $this->_prev_uri_mappings[$languages[$i]['id']]; + + } else if ($uri_mapping == + CEON_URI_MAPPING_GENERATION_ATTEMPT_FOR_CATEGORY_PATH_PART_WITH_NO_NAME) { + // Can't generate the URI because of invalid data + $this->_autogeneration_errors[$languages[$i]['id']] = + CEON_URI_MAPPING_TEXT_PREVIEW_PRODUCT_ERROR_CATEGORY_HAS_NO_NAME; + + // Set the "new" mapping back to the previous, so it won't be updated + $this->_uri_mappings[$languages[$i]['id']] = $this->_prev_uri_mappings[$languages[$i]['id']]; + + } else { + // Auto-generated URI is fine to use + $uri_mapping = $this->_cleanUpURIMapping($uri_mapping); + + $this->_uri_mappings[$languages[$i]['id']] = $uri_mapping; + } + } + } else { + for ($i = 0, $n = count($languages); $i < $n; $i++) { + $this->_uri_mappings[$languages[$i]['id']] = + $this->_cleanUpURIMapping($this->_uri_mappings[$languages[$i]['id']]); + } + } + + // Check that the mapping(s) just entered/generated doesn't/don't clash with any existing mapping(s), so + // the user can be notified + for ($i = 0, $n = count($languages); $i < $n; $i++) { + if ($this->_uri_mappings[$languages[$i]['id']] == $this->_prev_uri_mappings[$languages[$i]['id']]) { + // Don't check for a clash with the previous mapping! + continue; + } + + $mapping_clashed = false; + + $columns_to_retrieve = array( + 'main_page', + 'associated_db_id', + 'query_string_parameters' + ); + + $selections = array( + 'uri' => zen_db_prepare_input($this->_uri_mappings[$languages[$i]['id']]), + 'current_uri' => 1, + 'language_id' => $languages[$i]['id'] + ); + + $order_by = 'current_uri DESC'; + + $existing_uri_mapping_result = + $this->getURIMappingsResultset($columns_to_retrieve, $selections, $order_by, 1); + + // If the existing mapping is simply having some capitalisation changed then a case insensitive + // comparison might result in a false positive for a mapping clash, so prevent that by checking the + // mapping's settings don't match + if (!$existing_uri_mapping_result->EOF && + !($existing_uri_mapping_result->fields['main_page'] == + (zen_get_handler_from_type(zen_get_products_type((int) $_GET['pID'])) . '_info') && + $existing_uri_mapping_result->fields['associated_db_id'] == $_GET['pID'] && + !isset($existing_uri_mapping_result->fields['query_string_parameters']))) { + // This mapping clashes with an existing mapping + $mapping_clashed = true; + } + + if ($mapping_clashed) { + // Take a copy of the mapping which clashed + $this->_clashing_mappings[$languages[$i]['id']] = $this->_uri_mappings[$languages[$i]['id']]; + + if ($this->_mappingClashAutoAppendInteger()) { + // Attempt to find a unique variation of the mapping by appending an auto-incrementing integer + $uniqueness_integer = 1; + + $base_uri = $this->_uri_mappings[$languages[$i]['id']]; + + $unique_mapping_found = false; + + while (!$unique_mapping_found) { + $uri = $base_uri . $uniqueness_integer; + + $columns_to_retrieve = array( + 'main_page', + 'associated_db_id' + ); + + $selections = array( + 'uri' => zen_db_prepare_input($uri), + 'current_uri' => 1, + 'language_id' => $languages[$i]['id'] + ); + + $order_by = 'current_uri DESC'; + + $existing_uri_mapping_result = + $this->getURIMappingsResultset($columns_to_retrieve, $selections, $order_by, 1); + + if (!$existing_uri_mapping_result->EOF) { + // Perform a sanity check to see if this matches the product's current + // URI. If so, can take it that it was previously auto-appended + if ($existing_uri_mapping_result->fields['main_page'] == + (zen_get_handler_from_type(zen_get_products_type( + (int) $_GET['pID'])) . '_info') && + $existing_uri_mapping_result->fields['associated_db_id'] == + (int) $_GET['pID']) { + // Match found so assuming that the URI hasn't actually changed + unset($this->_clashing_mappings[$languages[$i]['id']]); + + $this->_uri_mappings[$languages[$i]['id']] = $uri; + + // Break out of this loop and advance to next URI language + continue 2; + } + } else { + // This variation of the mapping doesn't clash with an existing + // mapping, use it! + $unique_mapping_found = true; + } + + $uniqueness_integer++; + } + + // A unique URI has been generated, store it for use later + $this->_uri_mappings[$languages[$i]['id']] = $uri; + + } else { + // No attempt should be made to create a unique variation of the mapping, instead the user must + // be warned that the mapping was not created for this product + + // Set the "new" mapping back to the previous, so it won't be updated + $this->_uri_mappings[$languages[$i]['id']] = $this->_prev_uri_mappings[$languages[$i]['id']]; + } + } + } + } + + // }}} + + + // {{{ productPreviewInitialLoad() + + /** + * Handles the Ceon URI Mapping functionality when a product page is loaded for preview. + * + * @access public + * @param integer $product_id The product's ID. + * @param string $product_type The product's type (not its type ID). + * @return none + */ + public function productPreviewInitialLoad($product_id, $product_type) + { + $this->_prev_uri_mappings = array(); + $this->_uri_mappings = array(); + + $this->_uri_mapping_autogen = false; + + // Get any current product URI mappings from the database + $columns_to_retrieve = array( + 'language_id', + 'uri' + ); + + $selections = array( + 'main_page' => zen_db_prepare_input($product_type . '_info'), + 'associated_db_id' => $product_id, + 'current_uri' => 1 + ); + + $uri_mappings_result = $this->getURIMappingsResultset($columns_to_retrieve, $selections); + + while (!$uri_mappings_result->EOF) { + $this->_uri_mappings[$uri_mappings_result->fields['language_id']] = + $uri_mappings_result->fields['uri']; + + $uri_mappings_result->MoveNext(); + } + } + + // }}} + + + // {{{ productPreviewOutputURIMappingInfo() + + /** + * Outputs the information about the product's URI mapping(s) on the product preview page. + * + * @access public + * @param array $language_info An array of Zen Cart language info. + * @return none + */ + public function productPreviewOutputURIMappingInfo($language_info) + { + ?> + + + + + + + + + + +
+ _uri_mapping_autogen) { + echo CEON_URI_MAPPING_TEXT_PRODUCT_URI_AUTOGENERATED; + } else { + echo CEON_URI_MAPPING_TEXT_PRODUCT_URI_ENTERED; + } + ?> + + ' . zen_image(DIR_WS_CATALOG_LANGUAGES . + $language_info['directory'] . '/images/' . $language_info['image'], $language_info['name']) . + '

'; + + if ((isset($this->_uri_mappings[$language_info['id']]) && + strlen($this->_uri_mappings[$language_info['id']]) > 0) || + ($this->_uri_mapping_autogen && + !isset($this->_autogeneration_errors[$language_info['id']]))) { + if (isset($this->_clashing_mappings[$language_info['id']])) { + // The mapping clashed with an existing mapping + if ($this->_uri_mapping_autogen) { + if ($this->_mappingClashAutoAppendInteger()) { + // A new unique URI will have been generated + echo '

' . + CEON_URI_MAPPING_TEXT_URI_ORIGINALLY_GENERATED . '

'; + + echo '

' . + $this->_clashing_mappings[$language_info['id']] . '

'; + + echo '

' . + CEON_URI_MAPPING_TEXT_URI_GENERATED_AUTO_APPENDED . '

'; + + echo '

' . + $this->_uri_mappings[$language_info['id']] . '

'; + + echo '

' . + CEON_URI_MAPPING_TEXT_UPDATE_WILL_USE_AUTO_APPENDED_MAPPING; + + } else { + // User is simply to be warned about the clash + echo '

' . + CEON_URI_MAPPING_TEXT_URI_GENERATED_WHICH_IS_CLASHING . '

'; + + echo '

' . + $this->_clashing_mappings[$language_info['id']] . '

'; + } + } else { + if ($this->_mappingClashAutoAppendInteger()) { + // A new unique URI will have been generated + echo '

' . + CEON_URI_MAPPING_TEXT_URI_ORIGINALLY_ENTERED . '

'; + + echo '

' . + $this->_clashing_mappings[$language_info['id']] . '

'; + + echo '

' . + CEON_URI_MAPPING_TEXT_URI_ENTERED_AUTO_APPENDED . '

'; + + echo '

' . + $this->_uri_mappings[$language_info['id']] . '

'; + + echo '

' . + CEON_URI_MAPPING_TEXT_UPDATE_WILL_USE_AUTO_APPENDED_MAPPING; + + } else { + // User is simply to be warned about the clash + echo '

' . + CEON_URI_MAPPING_TEXT_URI_ENTERED_WHICH_IS_CLASHING . '

'; + + echo '

' . + $this->_clashing_mappings[$language_info['id']] . '

'; + } + } + } else { + echo '

' . + $this->_uri_mappings[$language_info['id']] . '

'; + } + } else if (isset($this->_autogeneration_errors[$language_info['id']])) { + // The attempt to auto-generate a mapping failed + echo '

' . + $this->_autogeneration_errors[$language_info['id']] . '

'; + } else { + echo '

' . + CEON_URI_MAPPING_TEXT_PRODUCT_NO_URI_ENTERED . '

'; + } + + echo "

\n"; + ?> +
+ + + + ' . zen_draw_separator('pixel_trans.gif', '1', '10') . ' +
+ + + + + + +
+ '; + if ($this->_uri_mapping_autogen) { + $contents .= CEON_URI_MAPPING_TEXT_PRODUCT_URI_AUTOGENERATED; + } else { + $contents .= CEON_URI_MAPPING_TEXT_PRODUCT_URI_ENTERED; + } + $contents .= ' + + ' . + '

' . zen_image(DIR_WS_CATALOG_LANGUAGES . + $language_info['directory'] . '/images/' . $language_info['image'], $language_info['name']) . + '

'; + + if ((isset($this->_uri_mappings[$language_info['id']]) && + strlen($this->_uri_mappings[$language_info['id']]) > 0) || + ($this->_uri_mapping_autogen && + !isset($this->_autogeneration_errors[$language_info['id']]))) { + if (isset($this->_clashing_mappings[$language_info['id']])) { + // The mapping clashed with an existing mapping + if ($this->_uri_mapping_autogen) { + if ($this->_mappingClashAutoAppendInteger()) { + // A new unique URI will have been generated + $contents .= '

' . + CEON_URI_MAPPING_TEXT_URI_ORIGINALLY_GENERATED . '

'; + + $contents .= '

' . + $this->_clashing_mappings[$language_info['id']] . '

'; + + $contents .= '

' . + CEON_URI_MAPPING_TEXT_URI_GENERATED_AUTO_APPENDED . '

'; + + $contents .= '

' . + $this->_uri_mappings[$language_info['id']] . '

'; + + $contents .= '

' . + CEON_URI_MAPPING_TEXT_UPDATE_WILL_USE_AUTO_APPENDED_MAPPING; + + } else { + // User is simply to be warned about the clash + $contents .= '

' . + CEON_URI_MAPPING_TEXT_URI_GENERATED_WHICH_IS_CLASHING . '

'; + + $contents .= '

' . + $this->_clashing_mappings[$language_info['id']] . '

'; + } + } else { + if ($this->_mappingClashAutoAppendInteger()) { + // A new unique URI will have been generated + $contents .= '

' . + CEON_URI_MAPPING_TEXT_URI_ORIGINALLY_ENTERED . '

'; + + $contents .= '

' . + $this->_clashing_mappings[$language_info['id']] . '

'; + + $contents .= '

' . + CEON_URI_MAPPING_TEXT_URI_ENTERED_AUTO_APPENDED . '

'; + + $contents .= '

' . + $this->_uri_mappings[$language_info['id']] . '

'; + + $contents .= '

' . + CEON_URI_MAPPING_TEXT_UPDATE_WILL_USE_AUTO_APPENDED_MAPPING; + + } else { + // User is simply to be warned about the clash + $contents .= '

' . + CEON_URI_MAPPING_TEXT_URI_ENTERED_WHICH_IS_CLASHING . '

'; + + $contents .= '

' . + $this->_clashing_mappings[$language_info['id']] . '

'; + } + } + } else { + $contents .= '

' . + $this->_uri_mappings[$language_info['id']] . '

'; + } + } else if (isset($this->_autogeneration_errors[$language_info['id']])) { + // The attempt to auto-generate a mapping failed + $contents .= '

' . + $this->_autogeneration_errors[$language_info['id']] . '

'; + } else { + $contents .= '

' . + CEON_URI_MAPPING_TEXT_PRODUCT_NO_URI_ENTERED . '

'; + } + + $contents .= "

\n"; + $contents .= ' +
+ '; + return $contents; + } + + // }}} + + + // {{{ productPreviewBuildHiddenFields() + + /** + * Outputs the values for Ceon URI Mapping for posting to the insert/update page. + * + * @access public + * @return string + */ + public function productPreviewBuildHiddenFields() + { + global $languages; + + $hidden_fields = ''; + + for ($i = 0, $n = count($languages); $i < $n; $i++) { + $hidden_fields .= zen_draw_hidden_field('prev-uri-mappings[' . $languages[$i]['id'] . ']', + isset($this->_prev_uri_mappings[$languages[$i]['id']]) ? htmlspecialchars(stripslashes($this->_prev_uri_mappings[$languages[$i]['id']])) : ''); + + $hidden_fields .= zen_draw_hidden_field('uri-mappings[' . $languages[$i]['id'] . ']', + isset($this->_uri_mappings[$languages[$i]['id']]) ? htmlspecialchars(stripslashes($this->_uri_mappings[$languages[$i]['id']])) : ''); + } + + return $hidden_fields; + } + + // }}} + + + // {{{ updateProductHandler() + + /** + * Handles the Ceon URI Mapping functionality when a product is being updated. + * + * @access public + * @param integer $product_id The ID of the product. + * @param string $product_type The product's type (not the type ID). + * @return none + */ + public function updateProductHandler($product_id, $product_type) + { + global $languages, $messageStack; + + // Build the information for the pages that must have URIs managed + $product_page_type = $product_type . '_info'; + + $page_types = array( + 'product_reviews', + 'product_reviews_info', + 'product_reviews_write', + 'ask_a_question' + ); + + $page_types_to_manage = array(); + + foreach ($page_types as $page_type) { + if ($this->autoManageProductRelatedPageURI($page_type)) { + $page_types_to_manage[] = $page_type; + } + } + + for ($i = 0, $n = count($languages); $i < $n; $i++) { + $prev_uri_mapping = isset($_POST['prev-uri-mappings']) && isset($_POST['prev-uri-mappings'][$languages[$i]['id']]) ? trim($_POST['prev-uri-mappings'][$languages[$i]['id']]) : ''; + $uri_mapping = isset($_POST['uri-mappings']) && isset($_POST['uri-mappings'][$languages[$i]['id']]) ? trim($_POST['uri-mappings'][$languages[$i]['id']]) : ''; + + $insert_uri_mapping = false; + $update_uri_mapping = false; + + if ($uri_mapping != '') { + // Check if the URI mapping is being updated or does not yet exist + if ($prev_uri_mapping == '') { + $insert_uri_mapping = true; + } else if ($prev_uri_mapping != $uri_mapping) { + $update_uri_mapping = true; + } + } + + if ($insert_uri_mapping || $update_uri_mapping) { + if ($update_uri_mapping) { + // Consign previous mapping to the history, so old URI mapping isn't broken + $this->makeURIMappingHistorical($prev_uri_mapping, $languages[$i]['id']); + } + + // Add the new URI mapping + $uri = $uri_mapping; + + $main_page = $product_page_type; + + $mapping_added = $this->addURIMapping($uri, $languages[$i]['id'], $main_page, null, $product_id); + + if ($mapping_added == CEON_URI_MAPPING_ADD_MAPPING_SUCCESS) { + if ($insert_uri_mapping) { + $success_message = sprintf(CEON_URI_MAPPING_TEXT_PRODUCT_MAPPING_ADDED, + ucwords($languages[$i]['name']), + '' . $uri . ''); + } else { + $success_message = sprintf(CEON_URI_MAPPING_TEXT_PRODUCT_MAPPING_UPDATED, + ucwords($languages[$i]['name']), + '' . $uri . ''); + } + + $messageStack->add_session($success_message, 'success'); + + } else { + if ($mapping_added == CEON_URI_MAPPING_ADD_MAPPING_ERROR_MAPPING_EXISTS) { + $failure_message = sprintf(CEON_URI_MAPPING_TEXT_ERROR_ADD_MAPPING_EXISTS, + ucwords($languages[$i]['name']), + '' . $uri . ''); + + } else if ($mapping_added == CEON_URI_MAPPING_ADD_MAPPING_ERROR_DATA_ERROR) { + $failure_message = sprintf(CEON_URI_MAPPING_TEXT_ERROR_ADD_MAPPING_DATA, + ucwords($languages[$i]['name']), $uri); + } else { + $failure_message = sprintf(CEON_URI_MAPPING_TEXT_ERROR_ADD_MAPPING_DB, + ucwords($languages[$i]['name']), $uri); + } + + $messageStack->add_session($failure_message, 'error'); + } + + // Now add the URI mappings for the review pages for this product + $base_uri = $uri . '/'; + + // Get the language code for the mapping's language + $language_code = strtolower($languages[$i]['code']); + + foreach ($page_types_to_manage as $page_type) { + // Mark any existing URI mapping for this product related page as no longer being the "primary" + // mapping, leaving it in the database so old links aren't broken. + $columns_to_retrieve = array( + 'uri' + ); + + $selections = array( + 'main_page' => $page_type, + 'associated_db_id' => (int) $product_id, + 'language_id' => (int) $languages[$i]['id'], + 'current_uri' => 1, + ); /* query_string_parameters */ + + $order_by = 'current_uri DESC'; + + $current_uri_mapping_result = + $this->getURIMappingsResultset($columns_to_retrieve, $selections, $order_by, 1); + + if (!$current_uri_mapping_result->EOF) { + $this->makeURIMappingHistorical($current_uri_mapping_result->fields['uri'], + $languages[$i]['id']); + } + + $uri_part = $this->getProductRelatedPageURIPart($page_type, $language_code); + + if ($uri_part == false) { + // Unexpected database problem encountered + continue; + } + + $uri_part = $this->_convertStringForURI($uri_part, $language_code); + + $uri = $base_uri . $uri_part; + + $main_page = constant('FILENAME_' . strtoupper($page_type)); + + $mapping_added = + $this->addURIMapping($uri, $languages[$i]['id'], $main_page, ($page_type == 'ask_a_question' ? 'pid=' . (int) $product_id : null), $product_id); + + if ($mapping_added == CEON_URI_MAPPING_ADD_MAPPING_SUCCESS) { + if ($insert_uri_mapping) { + $success_message = sprintf(CEON_URI_MAPPING_TEXT_PRODUCT_MAPPING_ADDED, + ucwords($languages[$i]['name']), + '' . $uri . ''); + } else { + $success_message = + sprintf(CEON_URI_MAPPING_TEXT_PRODUCT_MAPPING_UPDATED, + ucwords($languages[$i]['name']), + '' . $uri . ''); + } + + $messageStack->add_session($success_message, 'success'); + + } else { + if ($mapping_added == CEON_URI_MAPPING_ADD_MAPPING_ERROR_MAPPING_EXISTS) { + $failure_message = sprintf(CEON_URI_MAPPING_TEXT_ERROR_ADD_MAPPING_EXISTS, + ucwords($languages[$i]['name']), '' . $uri . ''); + + } else if ($mapping_added ==CEON_URI_MAPPING_ADD_MAPPING_ERROR_DATA_ERROR) { + $failure_message = sprintf(CEON_URI_MAPPING_TEXT_ERROR_ADD_MAPPING_DATA, + ucwords($languages[$i]['name']), $uri); + } else { + $failure_message = sprintf(CEON_URI_MAPPING_TEXT_ERROR_ADD_MAPPING_DB, + ucwords($languages[$i]['name']), $uri); + } + + $messageStack->add_session($failure_message, 'error'); + } + } + } else if ($prev_uri_mapping != '' && $uri_mapping == '') { + // No URI mapping, consign existing mappings to the history, so old URI mappings aren't broken + $this->makeURIMappingHistorical($prev_uri_mapping, $languages[$i]['id']); + + $success_message = sprintf(CEON_URI_MAPPING_TEXT_PRODUCT_MAPPING_MADE_HISTORICAL, + ucwords($languages[$i]['name'])); + + $messageStack->add_session($success_message, 'caution'); + + foreach ($page_types_to_manage as $page_type) { + $columns_to_retrieve = array( + 'uri' + ); + + $selections = array( + 'main_page' => $page_type, + 'associated_db_id' => (int) $product_id, + 'language_id' => (int) $languages[$i]['id'], + 'current_uri' => 1, + ); + + $order_by = 'current_uri DESC'; + + $current_uri_mapping_result = + $this->getURIMappingsResultset($columns_to_retrieve, $selections, $order_by, 1); + + if (!$current_uri_mapping_result->EOF) { + $prp_uri_mapping = $current_uri_mapping_result->fields['uri']; + + $this->makeURIMappingHistorical($prp_uri_mapping, $languages[$i]['id']); + + $success_message = sprintf( + CEON_URI_MAPPING_TEXT_PRODUCT_RELATED_PAGE_MAPPING_MADE_HISTORICAL, + ucwords($languages[$i]['name']), $prp_uri_mapping); + + $messageStack->add_session($success_message, 'caution'); + } + } + } + } + } + + // }}} + + + // {{{ addURIMappingFieldsToProductCopyFieldsArray() + + /** + * Adds the fields necessary for the Ceon URI Mapping options to the list of product copy fields, accessing the + * list of product copy fields directly, through a global variable. + * + * @access public + * @param integer $product_id The ID of the product being copied. + * @return none + */ + public function addURIMappingFieldsToProductCopyFieldsArray($product_id) + { + global $contents; + + $uri_mapping_input_fields = $this->buildProductCopyURIMappingFields($product_id); + + if ($uri_mapping_input_fields != false) { + $contents[] = array('text' => $uri_mapping_input_fields); + } + } + + // }}} + + + // {{{ buildProductCopyURIMappingFields() + + /** + * Builds the input fields for copying URI mappings, for a product that is being copied. + * + * @access public + * @param integer $product_id The ID of the product being copied. + * @return string|boolean The source for the input fields or false if no input fields necessary. + */ + public function buildProductCopyURIMappingFields($product_id) + { + global /*$db,*/ $languages, $ceon_uri_mapping_product_pages; + + if (!isset($languages) || !is_array($languages)) { + $languages = zen_get_languages(); + } + + $num_languages = count($languages); + + // Does this product have any existing mappings? + $product_has_mappings = false; + + $columns_to_retrieve = array( + 'uri' + ); + + $selections = array( + 'main_page' => $ceon_uri_mapping_product_pages, + 'associated_db_id' => (int) $product_id + ); + + $existing_product_uri_mappings_result = + $this->getURIMappingsResultset($columns_to_retrieve, $selections, null, 1); + + if (!$existing_product_uri_mappings_result->EOF) { + $product_has_mappings = true; + } + + if ($product_has_mappings || $this->_autogenEnabled()) { + $uri_mapping_input_fields = zen_draw_separator('pixel_black.gif', '0%', '2'); + + $uri_mapping_input_fields .= "
" . CEON_URI_MAPPING_TEXT_DUPLICATE_PRODUCT_URI_MAPPING . '
'; + + // Default to auto-generating URIs for product's copy + $autogen_selected = $this->_autogenEnabled(); + + $copy_selected = (($product_has_mappings && !$this->_autogenEnabled()) ? true : false); + + if ($this->_autogenEnabled()) { + if ($num_languages == 1) { + $autogen_message = CEON_URI_MAPPING_TEXT_COPY_AUTOGEN_URI; + } else { + $autogen_message = CEON_URI_MAPPING_TEXT_COPY_AUTOGEN_URIS; + } + + $uri_mapping_input_fields .= zen_draw_radio_field('uri-mapping', 'autogen', $autogen_selected) . + ' ' . $autogen_message . '
'; + } + + if ($product_has_mappings) { + if ($num_languages == 1) { + $copy_message = CEON_URI_MAPPING_TEXT_COPY_EXISTING_MAPPING; + } else { + $copy_message = CEON_URI_MAPPING_TEXT_COPY_EXISTING_MAPPINGS; + } + + $uri_mapping_input_fields .= zen_draw_radio_field('uri-mapping', 'copy', $copy_selected) . ' ' . + $copy_message . '
'; + } + + if ($this->_autogenEnabled() && !$product_has_mappings) { + if ($num_languages == 1) { + $ignore_message = CEON_URI_MAPPING_TEXT_COPY_PRODUCT_DONT_AUTOGEN_URI; + } else { + $ignore_message = CEON_URI_MAPPING_TEXT_COPY_PRODUCT_DONT_AUTOGEN_URIS; + } + } else if (!$this->_autogenEnabled() && $product_has_mappings) { + if ($num_languages == 1) { + $ignore_message = CEON_URI_MAPPING_TEXT_COPY_PRODUCT_DONT_COPY_URI; + } else { + $ignore_message = CEON_URI_MAPPING_TEXT_COPY_PRODUCT_DONT_COPY_URIS; + } + } else { + if ($num_languages == 1) { + $ignore_message = CEON_URI_MAPPING_TEXT_COPY_PRODUCT_DONT_AUTOGEN_COPY_URI; + } else { + $ignore_message = CEON_URI_MAPPING_TEXT_COPY_PRODUCT_DONT_AUTOGEN_COPY_URIS; + } + } + + $uri_mapping_input_fields .= + zen_draw_radio_field('uri-mapping', 'ignore', false) . ' ' . $ignore_message; + + $uri_mapping_input_fields .= "

"; + +// $uri_mapping_input_fields .= zen_draw_separator('pixel_black.gif', '100%', '2'); + + return $uri_mapping_input_fields; + } + + return false; + } + + /// }}} + + + // {{{ copyToConfirmHandler() + + /** + * Handles the Ceon URI Mapping functionality when a product is being copied. + * + * @access public + * @param integer $product_id_from The ID of the product being copied from. + * @param integer $product_id_to The ID of the product being top. + * @param integer $product_type_id The product's type ID. + * @param string $product_type The product's type (not its type ID). + * @param integer $dest_category_id The ID of the category the product is being copied to. + * @return none + */ + public function copyToConfirmHandler($product_id_from, $product_id_to, $product_type_id, $product_type, + $dest_category_id) + { + global /*$db,*/ $messageStack; + + // Generate new URI mapping for this new product? + $this->_uri_mapping_autogen = (($_POST['uri-mapping'] == 'autogen') ? true : false); + + // Copy existing URIs from product being copied? + $uri_mapping_copy = (($_POST['uri-mapping'] == 'copy') ? true : false); + + if ($this->_uri_mapping_autogen || $uri_mapping_copy) { + if ($uri_mapping_copy) { + // Look up and copy any URI mappings for the product being copied from + $existing_product_uri_mappings = array(); + + $columns_to_retrieve = array( + 'language_id', + 'uri' + ); + + $selections = array( + 'main_page' => $product_type . '_info', + 'associated_db_id' => (int) $product_id_from, + 'current_uri' => 1 + ); + + $existing_product_uri_mappings_result = + $this->getURIMappingsResultset($columns_to_retrieve, $selections); + + while (!$existing_product_uri_mappings_result->EOF) { + $existing_product_uri_mappings[$existing_product_uri_mappings_result->fields['language_id']] = + $existing_product_uri_mappings_result->fields['uri']; + + $existing_product_uri_mappings_result->MoveNext(); + } + } + + // Now insert the URI mappings for the new product into the database + $languages = zen_get_languages(); + + // Build the information for the pages that must have URIs managed + $product_page_type = $product_type . '_info'; + + $page_types = array( + 'product_reviews', + 'product_reviews_info', + 'product_reviews_write', + 'ask_a_question' + ); + + $page_types_to_manage = array(); + + foreach ($page_types as $page_type) { + if ($this->autoManageProductRelatedPageURI($page_type)) { + $page_types_to_manage[] = $page_type; + } + } + + for ($i = 0, $n = count($languages); $i < $n; $i++) { + $uri_mapping = ''; + + // Auto-generate the URI if requested + if ($this->_uri_mapping_autogen) { + $uri_mapping = $this->autogenProductURIMapping($product_id_to, null, null, + $languages[$i]['code'], $languages[$i]['id']); + + if ($uri_mapping == CEON_URI_MAPPING_GENERATION_ATTEMPT_FOR_PRODUCT_WITH_NO_NAME || + $uri_mapping == CEON_URI_MAPPING_GENERATION_ATTEMPT_FOR_PRODUCT_WITH_NO_MODEL) { + // Can't generate the URI because of missing "uniqueness" data + + // Build a link to the product's edit page so the user can fix the problem + // immediately + $product_type_admin_handler = $product_type . '.php'; + + if (!file_exists(DIR_FS_ADMIN . $product_type_admin_handler) && (PROJECT_VERSION_MAJOR > '1' || version_compare(PROJECT_VERSION_MAJOR . PROJECT_VERSION_MINOR, '1.5.6', '>='))) { + $product_type_admin_handler = 'product' . '.php'; + } + + $product_edit_link = zen_href_link($product_type_admin_handler, 'pID=' . $product_id_to . + '&product_type=' . $product_type_id . '&cPath=' . $dest_category_id . + '&action=new_product', 'NONSSL', true, true, false, false); + + if ($uri_mapping == CEON_URI_MAPPING_GENERATION_ATTEMPT_FOR_PRODUCT_WITH_NO_NAME) { + $message = CEON_URI_MAPPING_TEXT_ERROR_AUTOGENERATION_PRODUCT_HAS_NO_NAME; + } else { + $message = CEON_URI_MAPPING_TEXT_ERROR_AUTOGENERATION_PRODUCT_HAS_NO_MODEL; + } + + $failure_message = sprintf($message, ucwords($languages[$i]['name']), $product_edit_link); + + $messageStack->add_session($failure_message, 'error'); + + continue; + + } else if ($uri_mapping == + CEON_URI_MAPPING_GENERATION_ATTEMPT_FOR_CATEGORY_PATH_PART_WITH_NO_NAME) { + // Can't generate the URI because of invalid data + $failure_message = sprintf( + CEON_URI_MAPPING_TEXT_ERROR_AUTOGENERATION_PRODUCT_CATEGORY_HAS_NO_NAME, + ucwords($languages[$i]['name'])); + + $messageStack->add_session($failure_message, 'error'); + + continue; + } + } else { + // Copy any URI mappings for the product be copied from, they'll be changed to be unique + // shortly (in case admin user forgets to change the URI for the "new" product) + if (isset($existing_product_uri_mappings[$languages[$i]['id']])) { + $uri_mapping = $existing_product_uri_mappings[$languages[$i]['id']]; + } + } + + if (strlen($uri_mapping) > 1) { + // Make sure URI mapping is relative to root of site and does not have a + // trailing slash or any illegal characters + $uri_mapping = $this->_cleanUpURIMapping($uri_mapping); + } + + if ($uri_mapping != '') { + // URI mapping does not yet exist + $uri = $uri_mapping; + + $main_page = $product_page_type; + + // Check that the mapping just generated doesn't clash with any existing mapping + if (!$this->_uri_mapping_autogen) { + // Mapping already exists for product being copied from! + $mapping_clashed = true; + } else { + // Autogenerating URI so must check it is a unique URI + $mapping_clashed = false; + + $columns_to_retrieve = array( + 'uri' + ); + + $selections = array( + 'uri' => zen_db_prepare_input($uri), + 'current_uri' => 1, + 'language_id' => (int) $languages[$i]['id'] + ); + + $order_by = 'current_uri DESC'; + + $existing_uri_mapping_result = $this->getURIMappingsResultset( + $columns_to_retrieve, $selections, $order_by, 1); + + if (!$existing_uri_mapping_result->EOF) { + // This mapping clashes with an existing mapping + $mapping_clashed = true; + } + } + + if ($mapping_clashed) { + if (!$this->_uri_mapping_autogen || $this->_mappingClashAutoAppendInteger()) { + // Attempt to find a unique variation of the mapping by appending an auto-incrementing + // integer + $uniqueness_integer = 1; + + $base_uri = $uri; + + $unique_mapping_found = false; + + while (!$unique_mapping_found) { + $uri = $base_uri . $uniqueness_integer; + + $columns_to_retrieve = array( + 'main_page', + 'associated_db_id' + ); + + $selections = array( + 'uri' => zen_db_prepare_input($uri), + 'current_uri' => 1, + 'language_id' => (int) $languages[$i]['id'] + ); + + $order_by = 'current_uri DESC'; + + $existing_uri_mapping_result = $this->getURIMappingsResultset($columns_to_retrieve, + $selections, $order_by, 1); + + if ($existing_uri_mapping_result->EOF) { + // This variation of the mapping doesn't clash with an existing mapping, use + // it! + $unique_mapping_found = true; + } + + $uniqueness_integer++; + } + } else { + // No attempt should be made to create a unique variation of the mapping, instead the + // user must be warned that the mapping was not created for this copied product + + // Build a link to the product's edit page so the user can fix the problem immediately + $product_type_admin_handler = $product_type . '.php'; + + if (!file_exists(DIR_FS_ADMIN . $product_type_admin_handler) && (PROJECT_VERSION_MAJOR > '1' || version_compare(PROJECT_VERSION_MAJOR . PROJECT_VERSION_MINOR, '1.5.6', '>='))) { + $product_type_admin_handler = 'product' . '.php'; + } + + $product_edit_link = zen_href_link($product_type_admin_handler, 'pID=' . + $product_id_to . '&product_type=' . $product_type_id . '&cPath=' . + $dest_category_id . '&action=new_product', 'NONSSL', true, true, false, false); + + $failure_message = sprintf(CEON_URI_MAPPING_TEXT_ERROR_COPY_PRODUCT_MAPPING_CLASHED, + ucwords($languages[$i]['name']), '' . $uri . '', ucwords($languages[$i]['name']), + $product_edit_link); + + $messageStack->add_session($failure_message, 'error'); + + continue; + } + } + + $mapping_added = + $this->addURIMapping($uri, $languages[$i]['id'], $main_page, null, $product_id_to); + + if ($mapping_added == CEON_URI_MAPPING_ADD_MAPPING_SUCCESS) { + if ($this->_uri_mapping_autogen && !$mapping_clashed) { + $success_message = sprintf(CEON_URI_MAPPING_TEXT_PRODUCT_MAPPING_ADDED, + ucwords($languages[$i]['name']), '' . $uri . ''); + } else { + // Build a link to the product's edit page so the user can change the auto-appended URI + // immediately + $product_type_admin_handler = $product_type . '.php'; + + if (!file_exists(DIR_FS_ADMIN . $product_type_admin_handler) && (PROJECT_VERSION_MAJOR > '1' || version_compare(PROJECT_VERSION_MAJOR . PROJECT_VERSION_MINOR, '1.5.6', '>='))) { + $product_type_admin_handler = 'product' . '.php'; + } + + $product_edit_link = zen_href_link($product_type_admin_handler, 'pID=' . + $product_id_to . '&product_type=' . $product_type_id . '&cPath=' . + $dest_category_id . '&action=new_product', 'NONSSL', true, true, false, false); + + // Message differs according to whether or not the auto-append setting was used + // willingly or enforced + if ($this->_mappingClashAutoAppendInteger()) { + $message = CEON_URI_MAPPING_TEXT_PRODUCT_MAPPING_ADDED_WITH_AUTO_APPEND; + } else { + $message = CEON_URI_MAPPING_TEXT_PRODUCT_MAPPING_ADDED_ENFORCED_AUTO_APPEND; + } + + $success_message = sprintf($message, ucwords($languages[$i]['name']), + '' . $uri . '', + $product_edit_link); + } + + $messageStack->add_session($success_message, 'success'); + + } else { + if ($mapping_added == CEON_URI_MAPPING_ADD_MAPPING_ERROR_MAPPING_EXISTS) { + $failure_message = sprintf(CEON_URI_MAPPING_TEXT_ERROR_ADD_MAPPING_EXISTS, + ucwords($languages[$i]['name']), + '' . $uri . ''); + + } else if ($mapping_added == CEON_URI_MAPPING_ADD_MAPPING_ERROR_DATA_ERROR) { + $failure_message = sprintf(CEON_URI_MAPPING_TEXT_ERROR_ADD_MAPPING_DATA, + ucwords($languages[$i]['name']), $uri); + } else { + $failure_message = sprintf(CEON_URI_MAPPING_TEXT_ERROR_ADD_MAPPING_DB, + ucwords($languages[$i]['name']), $uri); + } + + $messageStack->add_session($failure_message, 'error'); + } + + // Now add the URI mappings for the review pages for this product + $base_uri = $uri . '/'; + + // Get the language code for the mapping's language + $language_code = strtolower($languages[$i]['code']); + + foreach ($page_types_to_manage as $page_type) { + $uri_part = $this->getProductRelatedPageURIPart($page_type, $language_code); + + if ($uri_part == false) { + // Unexpected database problem encountered + continue; + } + + $uri_part = $this->_convertStringForURI($uri_part, $language_code); + + $uri = $base_uri . $uri_part; + + $main_page = constant('FILENAME_' . strtoupper($page_type)); + + $mapping_added = + $this->addURIMapping($uri, $languages[$i]['id'], $main_page, ($page_type == 'ask_a_question' ? 'pid=' . (int) $product_id_to : null), $product_id_to); + + if ($mapping_added == CEON_URI_MAPPING_ADD_MAPPING_SUCCESS) { + $success_message = sprintf(CEON_URI_MAPPING_TEXT_PRODUCT_MAPPING_ADDED, + ucwords($languages[$i]['name']), + '' . $uri . ''); + + $messageStack->add_session($success_message, 'success'); + + } else { + if ($mapping_added == CEON_URI_MAPPING_ADD_MAPPING_ERROR_MAPPING_EXISTS) { + $failure_message = sprintf(CEON_URI_MAPPING_TEXT_ERROR_ADD_MAPPING_EXISTS, + ucwords($languages[$i]['name']), + '' . $uri . ''); + + } else if ($mapping_added == CEON_URI_MAPPING_ADD_MAPPING_ERROR_DATA_ERROR) { + $failure_message = sprintf(CEON_URI_MAPPING_TEXT_ERROR_ADD_MAPPING_DATA, + ucwords($languages[$i]['name']), $uri); + } else { + $failure_message = sprintf(CEON_URI_MAPPING_TEXT_ERROR_ADD_MAPPING_DB, + ucwords($languages[$i]['name']), $uri); + } + + $messageStack->add_session($failure_message, 'error'); + } + } + } + } + } + } + + // }}} + + + // {{{ addURIMappingFieldsToProductMoveFieldsArray() + + /** + * Adds the fields necessary for the Ceon URI Mapping options to the list of product move fields, accessing + * the list of product move fields directly, through a global variable. + * + * @access public + * @param integer $product_id The ID of the product being moved. + * @return none + */ + public function addURIMappingFieldsToProductMoveFieldsArray($product_id) + { + global $contents; + + $uri_mapping_input_fields = $this->buildProductMoveURIMappingFields($product_id); + + if ($uri_mapping_input_fields != false) { + $contents[] = array('text' => $uri_mapping_input_fields); + } + } + + // }}} + + + // {{{ buildProductMoveURIFields() + + /** + * Builds the input fields for dealing with URI mappings for a product being moved. + * + * @access public + * @param integer $product_id The ID of the product being moved. + * @return string|boolean The source for the input fields or false if no input fields necessary. + */ + public function buildProductMoveURIMappingFields($product_id) + { + global /*$db,*/ $languages, $ceon_uri_mapping_product_pages; + + if (!isset($languages) || !is_array($languages)) { + $languages = zen_get_languages(); + } + + $num_languages = count($languages); + + // Does this product have any existing mappings? + $product_has_mappings = false; + + $columns_to_retrieve = array( + 'uri' + ); + + $selections = array( + 'main_page' => $ceon_uri_mapping_product_pages, + 'associated_db_id' => (int) $product_id + ); + + $existing_product_uri_mappings_result = + $this->getURIMappingsResultset($columns_to_retrieve, $selections, null, 1); + + if (!$existing_product_uri_mappings_result->EOF) { + $product_has_mappings = true; + } + + if ($product_has_mappings || $this->_autogenEnabled()) { + $uri_mapping_input_fields = zen_draw_separator('pixel_black.gif', '100%', '2'); + + $uri_mapping_input_fields .= "

" . CEON_URI_MAPPING_TEXT_MOVE_PRODUCT_URI_MAPPING . + '
'; + + // Default to auto-generating URIs for product's new location + $autogen_selected = $this->_autogenEnabled(); + $move_selected = (($product_has_mappings && !$this->_autogenEnabled()) ? true : false); + + if ($this->_autogenEnabled()) { + if ($num_languages == 1) { + $autogen_message = CEON_URI_MAPPING_TEXT_MOVE_AUTOGEN_URI; + } else { + $autogen_message = CEON_URI_MAPPING_TEXT_MOVE_AUTOGEN_URIS; + } + $uri_mapping_input_fields .= zen_draw_radio_field('uri-mapping', 'autogen', $autogen_selected) . + ' ' . $autogen_message . '
'; + } + + if ($product_has_mappings) { + if ($num_languages == 1) { + $move_message = CEON_URI_MAPPING_TEXT_MOVE_USE_EXISTING_MAPPING; + } else { + $move_message = CEON_URI_MAPPING_TEXT_MOVE_USE_EXISTING_MAPPINGS; + } + $uri_mapping_input_fields .= zen_draw_radio_field('uri-mapping', 'use-existing', $move_selected) . + ' ' . $move_message . '
'; + } + + if ($this->_autogenEnabled() && !$product_has_mappings) { + if ($num_languages == 1) { + $ignore_message = CEON_URI_MAPPING_TEXT_MOVE_PRODUCT_DONT_AUTOGEN_URI; + } else { + $ignore_message = CEON_URI_MAPPING_TEXT_MOVE_PRODUCT_DONT_AUTOGEN_URIS; + } + } else if (!$this->_autogenEnabled() && $product_has_mappings) { + if ($num_languages == 1) { + $ignore_message = CEON_URI_MAPPING_TEXT_MOVE_PRODUCT_DONT_MOVE_URI; + } else { + $ignore_message = CEON_URI_MAPPING_TEXT_MOVE_PRODUCT_DONT_MOVE_URIS; + } + } else { + if ($num_languages == 1) { + $ignore_message = CEON_URI_MAPPING_TEXT_MOVE_PRODUCT_DONT_AUTOGEN_MOVE_URI; + } else { + $ignore_message = CEON_URI_MAPPING_TEXT_MOVE_PRODUCT_DONT_AUTOGEN_MOVE_URIS; + } + } + + $uri_mapping_input_fields .= + zen_draw_radio_field('uri-mapping', 'drop-existing', false) . ' ' . $ignore_message; + + $uri_mapping_input_fields .= "

"; + + $uri_mapping_input_fields .= zen_draw_separator('pixel_black.gif', '100%', '2'); + + return $uri_mapping_input_fields; + } + + return false; + } + + /// }}} + + + // {{{ moveProductConfirmHandler() + + /** + * Handles the Ceon URI Mapping functionality when a product is being moved. + * + * @access public + * @param integer $product_id The ID of the product being moved. + * @param integer $product_type_id The product's type ID. + * @param string $product_type The product's type (not its type ID). + * @param integer $dest_category_id The ID of the category the product is being moved to. + * @return void + */ + public function moveProductConfirmHandler($product_id, $product_type_id, $product_type, $dest_category_id) + { + global /*$db,*/ $messageStack; + + $languages = zen_get_languages(); + + // Generate new URI mapping for this product? + $this->_uri_mapping_autogen = (($_POST['uri-mapping'] == 'autogen') ? true : false); + + // Drop existing URIs ? + $uri_mapping_drop_existing = (($_POST['uri-mapping'] == 'drop-existing') ? true : false); + + if (!$this->_uri_mapping_autogen && !$uri_mapping_drop_existing) { + // Nothing to be done! + return; + } + + // Build the information for the pages that must have URIs managed + $product_page_type = $product_type . '_info'; + + $page_types = array( + 'product_reviews', + 'product_reviews_info', + 'product_reviews_write', + 'ask_a_question' + ); + + $page_types_to_manage = array(); + + foreach ($page_types as $page_type) { + if ($this->autoManageProductRelatedPageURI($page_type)) { + $page_types_to_manage[] = $page_type; + } + } + + if ($this->_uri_mapping_autogen) { + // Generate the new URI mappings for the product + for ($i = 0, $n = count($languages); $i < $n; $i++) { + // Mark any existing URI mapping for the product as no longer being the "primary" mapping, leaving + // it in the database so old links aren't broken. + $columns_to_retrieve = array( + 'uri' + ); + + $selections = array( + 'main_page' => $product_page_type, + 'associated_db_id' => (int) $product_id, + 'language_id' => (int) $languages[$i]['id'], + 'current_uri' => 1, + ); + + $order_by = 'current_uri DESC'; + + $current_uri_mapping_result = + $this->getURIMappingsResultset($columns_to_retrieve, $selections, $order_by, 1); + + if (!$current_uri_mapping_result->EOF) { + $this->makeURIMappingHistorical($current_uri_mapping_result->fields['uri'], + $languages[$i]['id']); + } + + //$uri_mapping = ''; + + $uri_mapping = $this->autogenProductURIMapping($product_id, null, null, $languages[$i]['code'], + $languages[$i]['id']); + + if ($uri_mapping == CEON_URI_MAPPING_GENERATION_ATTEMPT_FOR_PRODUCT_WITH_NO_NAME || + $uri_mapping == CEON_URI_MAPPING_GENERATION_ATTEMPT_FOR_PRODUCT_WITH_NO_MODEL) { + // Can't generate the URI because of missing "uniqueness" data + + // Build a link to the product's edit page so the user can fix the problem immediately + $product_type_admin_handler = $product_type . '.php'; + + $product_edit_link = zen_href_link($product_type_admin_handler, 'pID=' . $product_id . + '&product_type=' . $product_type_id . '&cPath=' . $dest_category_id . + '&action=new_product', 'NONSSL', true, true, false, false); + + if ($uri_mapping == CEON_URI_MAPPING_GENERATION_ATTEMPT_FOR_PRODUCT_WITH_NO_NAME) { + $message = CEON_URI_MAPPING_TEXT_ERROR_AUTOGENERATION_PRODUCT_HAS_NO_NAME; + } else { + $message = CEON_URI_MAPPING_TEXT_ERROR_AUTOGENERATION_PRODUCT_HAS_NO_MODEL; + } + + $failure_message = sprintf($message, ucwords($languages[$i]['name']), + $product_edit_link); + + $messageStack->add_session($failure_message, 'error'); + + continue; + + } else if ($uri_mapping == + CEON_URI_MAPPING_GENERATION_ATTEMPT_FOR_CATEGORY_PATH_PART_WITH_NO_NAME) { + // Can't generate the URI because of invalid data + $failure_message = sprintf( + CEON_URI_MAPPING_TEXT_ERROR_AUTOGENERATION_PRODUCT_CATEGORY_HAS_NO_NAME, + ucwords($languages[$i]['name'])); + + $messageStack->add_session($failure_message, 'error'); + + continue; + } + + // Make sure URI mapping is relative to root of site and does not have a trailing slash or any + // illegal characters + $uri_mapping = $this->_cleanUpURIMapping($uri_mapping); + + if ($uri_mapping != '') { + // URI mapping no longer exists for this newly moved product + $uri = $uri_mapping; + + $main_page = $product_page_type; + + // Check that the mapping just generated doesn't clash with any existing mapping + $mapping_clashed = false; + + $columns_to_retrieve = array( + 'uri' + ); + + $selections = array( + 'uri' => zen_db_prepare_input($uri), + 'current_uri' => 1, + 'language_id' => (int) $languages[$i]['id'] + ); + + $order_by = 'current_uri DESC'; + + $existing_uri_mapping_result = + $this->getURIMappingsResultset($columns_to_retrieve, $selections, $order_by, 1); + + if (!$existing_uri_mapping_result->EOF) { + // This mapping clashes with an existing mapping + $mapping_clashed = true; + } + + if ($mapping_clashed) { + if ($this->_mappingClashAutoAppendInteger()) { + // Attempt to find a unique variation of the mapping by appending an + // auto-incrementing integer + $uniqueness_integer = 1; + + $base_uri = $uri; + + $unique_mapping_found = false; + + while (!$unique_mapping_found) { + $uri = $base_uri . $uniqueness_integer; + + $columns_to_retrieve = array( + 'uri' + ); + + $selections = array( + 'uri' => zen_db_prepare_input($uri), + 'current_uri' => 1, + 'language_id' => (int) $languages[$i]['id'] + ); + + $order_by = 'current_uri DESC'; + + $existing_uri_mapping_result = $this->getURIMappingsResultset($columns_to_retrieve, + $selections, $order_by, 1); + + if ($existing_uri_mapping_result->EOF) { + // This variation of the mapping doesn't clash with an existing + // mapping, use it! + $unique_mapping_found = true; + } + + $uniqueness_integer++; + } + } else { + // No attempt should be made to create a unique variation of the mapping, instead the + // user must be warned that the mapping was not created for this moved product + + // Build a link to the product's edit page so the user can fix the problem immediately + $product_type_admin_handler = $product_type . '.php'; + + $product_edit_link = zen_href_link($product_type_admin_handler, 'pID=' . $product_id . + '&product_type=' . $product_type_id . '&cPath=' . $dest_category_id . + '&action=new_product', 'NONSSL', true, true, false, false); + + $failure_message = sprintf(CEON_URI_MAPPING_TEXT_ERROR_MOVE_PRODUCT_MAPPING_CLASHED, + ucwords($languages[$i]['name']), '' . $uri . '', ucwords($languages[$i]['name']), + $product_edit_link); + + $messageStack->add_session($failure_message, 'error'); + + continue; + } + } + + $mapping_added = + $this->addURIMapping($uri, $languages[$i]['id'], $main_page, null, $product_id); + + if ($mapping_added == CEON_URI_MAPPING_ADD_MAPPING_SUCCESS) { + if (!$mapping_clashed) { + $success_message = sprintf(CEON_URI_MAPPING_TEXT_PRODUCT_MAPPING_ADDED, + ucwords($languages[$i]['name']), '' . $uri . ''); + } else { + // Build a link to the product's edit page so the user can change the auto-appended URI + // immediately + $product_type_admin_handler = $product_type . '.php'; + + $product_edit_link = zen_href_link($product_type_admin_handler, 'pID=' . $product_id . + '&product_type=' . $product_type_id . '&cPath=' . $dest_category_id . + '&action=new_product', 'NONSSL', true, true, false, false); + + $success_message = sprintf( + CEON_URI_MAPPING_TEXT_PRODUCT_MAPPING_ADDED_WITH_AUTO_APPEND, + ucwords($languages[$i]['name']), + '' . $uri . '', + $product_edit_link); + } + + $messageStack->add_session($success_message, 'success'); + + } else { + if ($mapping_added == CEON_URI_MAPPING_ADD_MAPPING_ERROR_MAPPING_EXISTS) { + $failure_message = sprintf(CEON_URI_MAPPING_TEXT_ERROR_ADD_MAPPING_EXISTS, + ucwords($languages[$i]['name']), + '' . $uri . ''); + + } else if ($mapping_added == CEON_URI_MAPPING_ADD_MAPPING_ERROR_DATA_ERROR) { + $failure_message = sprintf(CEON_URI_MAPPING_TEXT_ERROR_ADD_MAPPING_DATA, + ucwords($languages[$i]['name']), $uri); + } else { + $failure_message = sprintf(CEON_URI_MAPPING_TEXT_ERROR_ADD_MAPPING_DB, + ucwords($languages[$i]['name']), $uri); + } + + $messageStack->add_session($failure_message, 'error'); + } + + // Now add the URI mappings for the review pages for this product + $base_uri = $uri . '/'; + + // Get the language code for the mapping's language + $language_code = strtolower($languages[$i]['code']); + + foreach ($page_types_to_manage as $page_type) { + // Mark any existing URI mapping for this product related page as no longer being the + // "primary" mapping, leaving it in the database so old links aren't broken. + $columns_to_retrieve = array( + 'uri' + ); + + $selections = array( + 'main_page' => $page_type, + 'associated_db_id' => (int) $product_id, + 'language_id' => (int) $languages[$i]['id'], + 'current_uri' => 1, + ); + + $order_by = 'current_uri DESC'; + + $current_uri_mapping_result = + $this->getURIMappingsResultset($columns_to_retrieve, $selections, $order_by, 1); + + if (!$current_uri_mapping_result->EOF) { + $this->makeURIMappingHistorical($current_uri_mapping_result->fields['uri'], + $languages[$i]['id']); + } + + $uri_part = $this->getProductRelatedPageURIPart($page_type, $language_code); + + if ($uri_part == false) { + // Unexpected database problem encountered + continue; + } + + $uri_part = $this->_convertStringForURI($uri_part, $language_code); + + $uri = $base_uri . $uri_part; + + $main_page = constant('FILENAME_' . strtoupper($page_type)); + + $mapping_added = $this->addURIMapping($uri, $languages[$i]['id'], + $main_page, ($page_type == 'ask_a_question' ? 'pid=' . (int)$product_id : null), $product_id); + + if ($mapping_added == CEON_URI_MAPPING_ADD_MAPPING_SUCCESS) { + $success_message = sprintf(CEON_URI_MAPPING_TEXT_PRODUCT_MAPPING_ADDED, + ucwords($languages[$i]['name']), + '' . $uri . ''); + + $messageStack->add_session($success_message, 'success'); + + } else { + if ($mapping_added == CEON_URI_MAPPING_ADD_MAPPING_ERROR_MAPPING_EXISTS) { + $failure_message = sprintf(CEON_URI_MAPPING_TEXT_ERROR_ADD_MAPPING_EXISTS, + ucwords($languages[$i]['name']), + '' . $uri . ''); + + } else if ($mapping_added == CEON_URI_MAPPING_ADD_MAPPING_ERROR_DATA_ERROR) { + $failure_message = sprintf(CEON_URI_MAPPING_TEXT_ERROR_ADD_MAPPING_DATA, + ucwords($languages[$i]['name']), $uri); + } else { + $failure_message = sprintf(CEON_URI_MAPPING_TEXT_ERROR_ADD_MAPPING_DB, + ucwords($languages[$i]['name']), $uri); + } + + $messageStack->add_session($failure_message, 'error'); + } + } + } + } + } else if ($uri_mapping_drop_existing) { + // Mark any existing URI mappings for this product and its related pages as no longer being the + // "primary" mappings, leaving them in the database so old links aren't broken. + for ($i = 0, $n = count($languages); $i < $n; $i++) { + $columns_to_retrieve = array( + 'uri' + ); + + $selections = array( + 'main_page' => $product_page_type, + 'associated_db_id' => (int) $product_id, + 'language_id' => (int) $languages[$i]['id'], + 'current_uri' => 1, + ); + + $order_by = 'current_uri DESC'; + + $current_uri_mapping_result = + $this->getURIMappingsResultset($columns_to_retrieve, $selections, $order_by, 1); + + if (!$current_uri_mapping_result->EOF) { + $this->makeURIMappingHistorical($current_uri_mapping_result->fields['uri'], + $languages[$i]['id']); + + $success_message = sprintf(CEON_URI_MAPPING_TEXT_PRODUCT_MAPPING_MADE_HISTORICAL, + ucwords($languages[$i]['name'])); + + $messageStack->add_session($success_message, 'caution'); + } + + foreach ($page_types_to_manage as $page_type) { + $columns_to_retrieve = array( + 'uri' + ); + + $selections = array( + 'main_page' => $page_type, + 'associated_db_id' => (int) $product_id, + 'language_id' => (int) $languages[$i]['id'], + 'current_uri' => 1, + ); + + $order_by = 'current_uri DESC'; + + $current_uri_mapping_result = + $this->getURIMappingsResultset($columns_to_retrieve, $selections, $order_by, 1); + + if (!$current_uri_mapping_result->EOF) { + $prp_uri_mapping = $current_uri_mapping_result->fields['uri']; + + $this->makeURIMappingHistorical($prp_uri_mapping, $languages[$i]['id']); + + $success_message = sprintf( + CEON_URI_MAPPING_TEXT_PRODUCT_RELATED_PAGE_MAPPING_MADE_HISTORICAL, + ucwords($languages[$i]['name']), $prp_uri_mapping); + + $messageStack->add_session($success_message, 'caution'); + } + } + } + } + } + + // }}} +} + +// }}} diff --git a/NEUE DATEIEN/DEINADMIN/includes/classes/class.CeonURIMappingConfigUtility.php b/NEUE DATEIEN/DEINADMIN/includes/classes/class.CeonURIMappingConfigUtility.php new file mode 100644 index 0000000..949757e --- /dev/null +++ b/NEUE DATEIEN/DEINADMIN/includes/classes/class.CeonURIMappingConfigUtility.php @@ -0,0 +1,1130 @@ + + * @copyright Copyright 2008-2019 Ceon + * @copyright Copyright 2003-2021 Zen Cart Development Team + * @copyright Portions Copyright 2003 osCommerce + * @link http://ceon.net/software/business/zen-cart/uri-mapping + * @license http://www.zen-cart.com/license/2_0.txt GNU Public License V2.0 + * @version $Id: class.CeonURIMappingConfigUtility.php 2021-06-23 13:00:15Z webchills $ + */ + +/** + * Load in the Ceon URI Mapping Version class so it can be extended + */ +require_once(DIR_WS_CLASSES . 'class.CeonURIMappingVersion.php'); + + +// {{{ CeonURIMappingConfigUtility + +/** + * Installs/upgrades the module, handles the configuration utility of the module, including building its interface + * output, performs configuration checks and builds the configuration check interface output. + * + * @package ceon_uri_mapping + * @author Conor Kerr + * @copyright Copyright 2008-2019 Ceon + * @copyright Copyright 2003-2019 Zen Cart Development Team + * @copyright Portions Copyright 2003 osCommerce + * @link http://ceon.net/software/business/zen-cart/uri-mapping + * @license http://www.zen-cart.com/license/2_0.txt GNU Public License V2.0 + */ +class CeonURIMappingConfigUtility extends CeonURIMappingVersion +{ + // {{{ properties + + /** + * Maintains a list of any errors encountered in the current configuration, or an installation or upgrade. + * + * @var array + * @access protected + */ + protected $_error_messages = array(); + + /** + * Whether or not auto-generation is enabled. + * + * @var boolean + * @access protected + */ + protected $_autogen_new = null; + + /** + * The whitespace replacement setting for the store. + * + * @var integer + * @access protected + */ + protected $_whitespace_replacement = null; + + /** + * The capitalisation setting for the store. + * + * @var integer + * @access protected + */ + protected $_capitalisation = null; + + /** + * The list of words to be removed from auto-generated URIs. + * + * @var string + * @access protected + */ + protected $_remove_words = null; + + /** + * The list of character/string replacements to be applied when auto-generating URIs. + * + * @var string + * @access protected + */ + protected $_char_str_replacements = null; + + /** + * The add language code identifier to URI setting for the store. + * + * @var integer + * @access protected + */ + protected $_language_code_add = null; + + /** + * The action to be taken if a URI mapping being auto-generated clashes with an existing mapping. + * + * @var string + * @access protected + */ + protected $_mapping_clash_action = null; + + /** + * Whether or not product reviews pages should have their URIs auto-managed. + * + * @var boolean + * @access protected + */ + protected $_manage_product_reviews_mappings = null; + + /** + * Whether or not products' review info pages should have their URIs auto-managed. + * + * @var boolean + * @access protected + */ + protected $_manage_product_reviews_info_mappings = null; + + /** + * Whether or not products' write a review pages should have their URIs auto-managed. + * + * @var boolean + * @access protected + */ + protected $_manage_product_reviews_write_mappings = null; + + /** + * Whether or not product ask a question pages should have their URIs auto-managed. + * + * @var boolean + * @access protected + */ + protected $_manage_ask_a_question_mappings = null; + + /** + * The list of URI part's text for products' reviews pages, for the various languages the store uses. + * + * @var array + * @access protected + */ + protected $_product_reviews_pages_uri_parts = array(); + + /** + * The list of URI part's text for product review info pages, for the various languages the + * store uses. + * + * @var array + * @access protected + */ + protected $_product_reviews_info_pages_uri_parts = array(); + + /** + * The list of URI part's text for product write a review pages, for the various languages the store uses. + * + * @var array + * @access protected + */ + protected $_product_reviews_write_pages_uri_parts = array(); + + + // }}} + + // {{{ Class Constructor + + /** + * Creates a new instance of the class. Handles the display and processing of the configuration utility. Also + * instigates the installation/upgrade functionality if necessary. + * + * @access public + */ + public function __construct() + { + // Set the flag so that the configuration isn't autoladed by the admin superclass - it may not exist or yet + // or it may be out of date! + parent::__construct(false); + + if (!$this->_lookUpInstalledVersion()) { + // Error occurred when attempting to get the version number + } + + // If the configuration options are being submitted then the configuration has previously been loaded and + // tested. If not, it must be loaded and checked now + if (!isset($_POST['autogen-new'])) { + if (!$this->_checkInstalledAndUpToDate()) { + $this->_buildVersionErrorOutput(); + + $this->_buildFooter(); + + return; + } + + $this->_loadConfig(); + + } else { + $this->_processConfigFormSubmission(); + } + + $this->_buildConfigUtilityInterface(); + } + + // }}} + + + // {{{ _checkInstalledAndUpToDate() + + /** + * Checks that the module is installed and that the database and configuration are up to date. + * + * @access protected + * @return boolean True if the module is installed and the database and configuration are up to date, false + * otherwise. + */ + public function _checkInstalledAndUpToDate() + { + global $messageStack; + + if ((is_null($this->_installed_version) || $this->_installed_version != $this->_version) || + isset($_GET['check-config'])) { + // Main variable holds list of installation/upgrade errors (if any) + $version_errors = array(); + + // Instantiate and run the installation/upgrade class + require_once('class.CeonURIMappingInstallOrUpgrade.php'); + + $install_or_upgrade = new CeonURIMappingInstallOrUpgrade($this->_version, $this->_installed_version); + + if (count($install_or_upgrade->error_messages) > 0) { + $this->_error_messages = $install_or_upgrade->error_messages; + + return false; + + } else { + // Version has been brought up to date + if (is_null($this->_installed_version)) { + $messageStack->add(sprintf(SUCCESS_MODULE_INSTALLED, $this->_version), 'success'); + } else { + if ($install_or_upgrade->actionPerformed() || $this->_installed_version != $this->_version) { + $messageStack->add(sprintf(SUCCESS_DATABASE_AND_CONFIG_UPDATED, $this->_version), + 'success'); + } else { + // Things can be assumed to have been up to date (e.g. user has run a manual config check + // when everything is already fine) + $messageStack->add(sprintf(SUCCESS_DATABASE_AND_CONFIG_UP_TO_DATE, $this->_version), + 'success'); + } + } + + $this->_installed_version = $this->_version; + } + } + + return true; + } + + // }}} + + + // {{{ _buildVersionErrorOutput() + + /** + * Builds the HTML for the error messages to be displayed to the user when a problem occurs in the installation + * or upgrade process. + * + * @access protected + * @return none + */ + public function _buildVersionErrorOutput() + { + //$num_errors = sizeof($this->_error_messages); + + foreach ($this->_error_messages as $version_error) { + $this->_output .= '

' . $version_error . '

' . "\n"; + } + } + + // }}} + + + // {{{ _loadConfig() + + /** + * Loads the configuration for the module from the database. + * + * @access protected + * @return none + */ + protected function _loadConfig() + { + global $db; + + // Only one config currently supported so its ID is hard-coded in the following SQL + $load_config_sql = " + SELECT + version, + autogen_new, + whitespace_replacement, + capitalisation, + remove_words, + char_str_replacements, + language_code_add, + mapping_clash_action, + manage_product_reviews_mappings, + manage_product_reviews_info_mappings, + manage_product_reviews_write_mappings, + manage_ask_a_question_mappings, + automatic_version_checking + FROM + " . TABLE_CEON_URI_MAPPING_CONFIGS . " + WHERE + id = '1';"; + + $load_config_result = $db->Execute($load_config_sql); + + if ($load_config_result->EOF) { + + } else { + $this->_installed_version = $load_config_result->fields['version']; + + $this->_autogen_new = $load_config_result->fields['autogen_new']; + $this->_whitespace_replacement = $load_config_result->fields['whitespace_replacement']; + $this->_capitalisation = $load_config_result->fields['capitalisation']; + $this->_remove_words = $load_config_result->fields['remove_words']; + $this->_char_str_replacements = $load_config_result->fields['char_str_replacements']; + $this->_language_code_add = $load_config_result->fields['language_code_add']; + $this->_mapping_clash_action = $load_config_result->fields['mapping_clash_action']; + + $this->_manage_product_reviews_mappings = + ($load_config_result->fields['manage_product_reviews_mappings'] == 1 ? true : false); + + $this->_manage_product_reviews_info_mappings = + ($load_config_result->fields['manage_product_reviews_info_mappings'] == 1 ? true : false); + + $this->_manage_product_reviews_write_mappings = + ($load_config_result->fields['manage_product_reviews_write_mappings'] == 1 ? true : false); + $this->_manage_ask_a_question_mappings = + ($load_config_result->fields['manage_ask_a_question_mappings'] == 1 ? true : false); + + $this->_automatic_version_checking = + ($load_config_result->fields['automatic_version_checking'] == 1 ? true : false); + + $uri_parts_sql = " + SELECT + page_type, + language_code, + uri_part + FROM + " . TABLE_CEON_URI_MAPPING_PRODUCT_RELATED_PAGES_URI_PARTS . " + WHERE + 1 = 1;"; + + $uri_parts_result = $db->Execute($uri_parts_sql); + + while (!$uri_parts_result->EOF) { + switch ($uri_parts_result->fields['page_type']) { + case 'product_reviews': + $this->_product_reviews_pages_uri_parts + [$uri_parts_result->fields['language_code']] = + $uri_parts_result->fields['uri_part']; + break; + case 'product_reviews_info': + $this->_product_reviews_info_pages_uri_parts + [$uri_parts_result->fields['language_code']] = + $uri_parts_result->fields['uri_part']; + break; + case 'product_reviews_write': + $this->_product_reviews_write_pages_uri_parts + [$uri_parts_result->fields['language_code']] = + $uri_parts_result->fields['uri_part']; + break; + + case 'ask_a_question': + $this->_ask_a_question_pages_uri_parts + [$uri_parts_result->fields['language_code']] = + $uri_parts_result->fields['uri_part']; + break; + } + + $uri_parts_result->MoveNext(); + } + } + } + + // }}} + + + // {{{ _processConfigFormSubmission() + + /** + * Processes the submission of configuration values through the configuration utility. Any mistakes/errors are + * added to the list of error messages, for display later. + * + * @access protected + * @return bool + */ + protected function _processConfigFormSubmission() + { + global $db, $languages, $num_languages, $ceon_uri_mapping_demo, $messageStack; + + $this->_autogen_new = $_POST['autogen-new']; + $this->_whitespace_replacement = $_POST['whitespace-replacement']; + $this->_capitalisation = $_POST['capitalisation']; + $this->_remove_words = trim($_POST['remove-words']); + $this->_char_str_replacements = trim($_POST['char-str-replacements']); + $this->_language_code_add = $_POST['language-code-add']; + $this->_mapping_clash_action = trim($_POST['mapping-clash-action']); + + $this->_manage_product_reviews_mappings = + (isset($_POST['manage-product-reviews-mappings']) ? true : false); + + $this->_manage_product_reviews_info_mappings = + (isset($_POST['manage-product-reviews-info-mappings']) ? true : false); + + $this->_manage_product_reviews_write_mappings = + (isset($_POST['manage-product-reviews-write-mappings']) ? true : false); + + $this->_manage_ask_a_question_mappings = (isset($_POST['manage-ask-a-question-mappings']) ? true : false); + + if (!class_exists('CeonString')) { + require_once DIR_FS_CATALOG . DIR_WS_CLASSES . 'class.CeonString.php'; + } + + for ($i = 0; $i < $num_languages; $i++) { + $language_code = strtolower($languages[$i]['code']); + +// transliterate here. + $uri_part = CeonString::transliterate($_POST['product-reviews-pages-uri-parts'][$language_code], CHARSET, $language_code); + + $uri_part = trim(preg_replace('|[^a-zA-Z0-9\.\-_\/ ]|', '', + $uri_part)); +/* $uri_part = trim(preg_replace('|[^a-zA-Z0-9\.\-_\/ ]|', '', + $_POST['product-reviews-pages-uri-parts'][$language_code]));*/ + + // Remove any slashes at the start of the URI part + while (substr($uri_part, 0, 1) == '/') { + $uri_part = substr($uri_part, 1, strlen($uri_part) -1); + } + + // Remove any trailing slashes + while (substr($uri_part, -1) == '/') { + $uri_part = substr($uri_part, 0, strlen($uri_part) -1); + } + + $this->_product_reviews_pages_uri_parts[$language_code] = $uri_part; + + if ($this->_manage_product_reviews_mappings && strlen($uri_part) == 0) { + // URI Part is required + $this->_error_messages['product-reviews-pages-uri-parts-' . $language_code] = + TEXT_ERROR_URI_PART_MUST_BE_ENTERED; + } + + + $uri_part = CeonString::transliterate($_POST['product-reviews-info-pages-uri-parts'][$language_code], CHARSET, $language_code); + + $uri_part = trim(preg_replace('|[^a-zA-Z0-9\.\-_\/ ]|', '', + $uri_part)); +/* $uri_part = trim(preg_replace('|[^a-zA-Z0-9\.\-_\/ ]|', '', + $_POST['product-reviews-info-pages-uri-parts'][$language_code]));*/ + + // Remove any slashes at the start of the URI part + while (substr($uri_part, 0, 1) == '/') { + $uri_part = substr($uri_part, 1, strlen($uri_part) -1); + } + + // Remove any trailing slashes + while (substr($uri_part, -1) == '/') { + $uri_part = substr($uri_part, 0, strlen($uri_part) -1); + } + + $this->_product_reviews_info_pages_uri_parts[$language_code] = $uri_part; + + if ($this->_manage_product_reviews_info_mappings && strlen($uri_part) == 0) { + // URI Part is required + $this->_error_messages['product-reviews-info-pages-uri-parts-' . $language_code] = + TEXT_ERROR_URI_PART_MUST_BE_ENTERED; + } + + + $uri_part = CeonString::transliterate($_POST['product-reviews-write-pages-uri-parts'][$language_code], CHARSET, $language_code); + + $uri_part = trim(preg_replace('|[^a-zA-Z0-9\.\-_\/ ]|', '', + $uri_part)); +/* $uri_part = trim(preg_replace('|[^a-zA-Z0-9\.\-_\/ ]|', '', + $_POST['product-reviews-write-pages-uri-parts'][$language_code]));*/ + + // Remove any slashes at the start of the URI part + while (substr($uri_part, 0, 1) == '/') { + $uri_part = substr($uri_part, 1, strlen($uri_part) -1); + } + + // Remove any trailing slashes + while (substr($uri_part, -1) == '/') { + $uri_part = substr($uri_part, 0, strlen($uri_part) -1); + } + + $this->_product_reviews_write_pages_uri_parts[$language_code] = $uri_part; + + if ($this->_manage_product_reviews_write_mappings && strlen($uri_part) == 0) { + // URI Part is required + $this->_error_messages['product-reviews-write-pages-uri-parts-' . $language_code] = + TEXT_ERROR_URI_PART_MUST_BE_ENTERED; + } + + $uri_part = CeonString::transliterate($_POST['ask-a-question-pages-uri-parts'][$language_code], CHARSET, $language_code); + + $uri_part = trim(preg_replace('|[^a-zA-Z0-9\.\-_\/ ]|', '', + $uri_part)); +/* $uri_part = trim(preg_replace('|[^a-zA-Z0-9\.\-_\/ ]|', '', + $_POST['ask-a-question-pages-uri-parts'][$language_code]));*/ + + // Remove any slashes at the start of the URI part + while (substr($uri_part, 0, 1) == '/') { + $uri_part = substr($uri_part, 1, strlen($uri_part) -1); + } + + // Remove any trailing slashes + while (substr($uri_part, -1) == '/') { + $uri_part = substr($uri_part, 0, strlen($uri_part) -1); + } + + $this->_ask_a_question_pages_uri_parts[$language_code] = $uri_part; + + if ($this->_manage_ask_a_question_mappings && strlen($uri_part) == 0) { + // URI Part is required + $this->_error_messages['ask-a-question-pages-uri-parts-' . $language_code] = + TEXT_ERROR_URI_PART_MUST_BE_ENTERED; + } + } + + $this->_automatic_version_checking = $_POST['automatic-version-checking']; + + // Save the configuration + if (!$ceon_uri_mapping_demo && count($this->_error_messages) == 0) { + + $save_config_data_array = array( + 'autogen_new' => $this->_autogen_new, + 'whitespace_replacement' => $this->_whitespace_replacement, + 'capitalisation' => $this->_capitalisation, + 'remove_words' => ((strlen($this->_remove_words) == 0) ? 'null' : $this->_remove_words), + 'char_str_replacements' => + ((strlen($this->_char_str_replacements) == 0) ? 'null' : $this->_char_str_replacements), + 'language_code_add' =>$this->_language_code_add, + 'mapping_clash_action' => $this->_mapping_clash_action, + 'manage_product_reviews_mappings' => ($this->_manage_product_reviews_mappings ? 1 : 0), + 'manage_product_reviews_info_mappings' => ($this->_manage_product_reviews_info_mappings ? 1 : 0), + 'manage_product_reviews_write_mappings' => ($this->_manage_product_reviews_write_mappings ? 1 : 0), + 'manage_ask_a_question_mappings' => ($this->_manage_ask_a_question_mappings ? 1 : 0), + 'automatic_version_checking' => $this->_automatic_version_checking + ); + + // Only one config currently supported so ID is hard-coded + $selection_sql = "id = '1'"; + + $save_config_result = zen_db_perform(TABLE_CEON_URI_MAPPING_CONFIGS, + $save_config_data_array, 'update', $selection_sql); + + $remove_current_prp_uri_part_records = " + DELETE FROM + " . TABLE_CEON_URI_MAPPING_PRODUCT_RELATED_PAGES_URI_PARTS . " + WHERE + 1 = 1;"; + + $db->Execute($remove_current_prp_uri_part_records); + + for ($i = 0; $i < $num_languages; $i++) { + $language_code = strtolower($languages[$i]['code']); + + $uri_parts_data_array = array( + 'page_type' => 'product_reviews', + 'language_code' => $language_code, + 'uri_part' => $this->_product_reviews_pages_uri_parts[$language_code] + ); + + zen_db_perform(TABLE_CEON_URI_MAPPING_PRODUCT_RELATED_PAGES_URI_PARTS, $uri_parts_data_array); + + $uri_parts_data_array = array( + 'page_type' => 'product_reviews_info', + 'language_code' => $language_code, + 'uri_part' => $this->_product_reviews_info_pages_uri_parts[$language_code] + ); + + zen_db_perform(TABLE_CEON_URI_MAPPING_PRODUCT_RELATED_PAGES_URI_PARTS, $uri_parts_data_array); + + $uri_parts_data_array = array( + 'page_type' => 'product_reviews_write', + 'language_code' => $language_code, + 'uri_part' => $this->_product_reviews_write_pages_uri_parts[$language_code] + ); + + zen_db_perform(TABLE_CEON_URI_MAPPING_PRODUCT_RELATED_PAGES_URI_PARTS, $uri_parts_data_array); + + $uri_parts_data_array = array( + 'page_type' => 'ask_a_question', + 'language_code' => $language_code, + 'uri_part' => $this->_ask_a_question_pages_uri_parts[$language_code] + ); + + zen_db_perform(TABLE_CEON_URI_MAPPING_PRODUCT_RELATED_PAGES_URI_PARTS, $uri_parts_data_array); + + } + + if ($save_config_result) { + if ($ceon_uri_mapping_demo) { + $messageStack->add(SUCCESS_CONFIGURATION_SAVED_DEMO, 'success'); + } else { + $messageStack->add(SUCCESS_CONFIGURATION_SAVED, 'success'); + } + } + } + + return true; + } + + // }}} + + + // {{{ _buildConfigUtilityInterface() + + /** + * Builds the interface for the configuration utility. + * + * @access protected + * @return none + */ + protected function _buildConfigUtilityInterface() + { + // Build the panels this utility uses, adding each to the list of panels + $this->_buildAutogenerationConfigPanel(); + + $this->_buildAutoManagedProductURIsConfigPanel(); + + $this->_buildVersionCheckingConfigPanel(); + + $this->_buildInstallationCheckPanel(); + + + // Build the actual output for the utility + + // Display a count of the number of errors (if any) at the top of the page + $num_errors = count($this->_error_messages); + + if ($num_errors > 0) { + if ($num_errors == 1) { + $this->_output .= '

' . TEXT_ERROR_IN_CONFIG . '

'; + } else if ($num_errors > 0 ) { + $this->_output .= sprintf('

' . TEXT_ERRORS_IN_CONFIG, $num_errors) . '

'; + } + } + + $this->_buildTabbedPanelMenu(); + + $this->_buildPanels(); + + $this->_buildSubmitAndCancelButtons(); + + $this->_buildFooter(); + } + + // }}} + + + // {{{ _getSelectedPanelID() + + /** + * Gets the ID of the panel which should be selected by default when the tabbed panel admin interface is built. + * + * @access protected + * @return string The ID of the selected panel. + */ + protected function _getSelectedPanelID() + { + // Currently only the auto-managed product page URIs tab can have errors, so if any error messages are + // being displayed, it will be for that panel, so show it. Otherwise default to showing the auto-generation + // panel + if (count($this->_error_messages) > 0) { + $selected_panel_id = 'auto-managed-product-uris-panel'; + } else { + $selected_panel_id = 'autogen-panel'; + } + + return $selected_panel_id; + } + + // }}} + + + // {{{ _buildAutogenerationConfigPanel() + + /** + * Builds the configuration panel used to display the settings for the autogeneration functionality. Adds the + * panel to the list of panels. + * + * @access protected + * @return none + */ + protected function _buildAutogenerationConfigPanel() + { + // Variable holds the table rows being built for the options for this panel + $option_output_rows = ''; + + + // Autogeneration enabled/disabled setting + $option_output_rows .= $this->_buildConfigSettingDescRow('autogen-new', TEXT_LABEL_AUTOGEN_ENABLED_NEW, + TEXT_CONFIG_DESC_AUTOGEN_ENABLED_NEW); + + $option_output_rows .= ' + ' . "\n"; + + $option_output_rows .= '

' . zen_draw_radio_field('autogen-new', '1', + ($this->_autogen_new == 1 ? true : false), '', 'id="autogen-new-yes"') . + '' . "\n"; + + $option_output_rows .= '
' . zen_draw_radio_field('autogen-new', '0', + ($this->_autogen_new == 1 ? false : true), '', 'id="autogen-new-no"') . + '' . "

\n"; + + $option_output_rows .= ' + ' . "\n"; + + + // Whitespace replacement setting + + /** + * Variable holds values for the whitespace replacement options + */ + $whitespace_replacement_options = array( + array( + 'id' => CEON_URI_MAPPING_SINGLE_UNDERSCORE, + 'text' => TEXT_WHITESPACE_REPLACEMENT_SINGLE_UNDERSCORE + ), + array( + 'id' => CEON_URI_MAPPING_SINGLE_DASH, + 'text' => TEXT_WHITESPACE_REPLACEMENT_SINGLE_DASH + ), + array( + 'id' => CEON_URI_MAPPING_SINGLE_FULL_STOP, + 'text' => TEXT_WHITESPACE_REPLACEMENT_SINGLE_FULL_STOP + ), + array( + 'id' => CEON_URI_MAPPING_REMOVE, + 'text' => TEXT_WHITESPACE_REPLACEMENT_REMOVE + ) + ); + + $option_output_rows .= $this->_buildConfigSettingDescRow('whitespace-replacement', + TEXT_LABEL_WHITESPACE_REPLACEMENT, TEXT_CONFIG_DESC_WHITESPACE_REPLACEMENT); + + $option_output_rows .= ' + ' . "\n"; + + $option_output_rows .= zen_draw_pull_down_menu('whitespace-replacement', + $whitespace_replacement_options, $this->_whitespace_replacement, '') . "\n"; + + $option_output_rows .= ' + ' . "\n"; + + + // Capitalisation setting + $option_output_rows .= $this->_buildConfigSettingDescRow('capitalisation', + TEXT_LABEL_CAPITALISATION, TEXT_CONFIG_DESC_CAPITALISATION); + + $option_output_rows .= ' + ' . "\n"; + + $option_output_rows .= '

' . zen_draw_radio_field('capitalisation', + CEON_URI_MAPPING_CAPITALISATION_LOWERCASE, + ($this->_capitalisation == CEON_URI_MAPPING_CAPITALISATION_LOWERCASE ? true : false), + '', 'id="capitalisation-lowercase"') . + '' . "\n"; + + $option_output_rows .= '
' . zen_draw_radio_field('capitalisation', + CEON_URI_MAPPING_CAPITALISATION_AS_IS, + ($this->_capitalisation == CEON_URI_MAPPING_CAPITALISATION_AS_IS ? true : false), '', + 'id="capitalisation-as-is"') . + '' . "\n"; + + $option_output_rows .= '
' . zen_draw_radio_field('capitalisation', + CEON_URI_MAPPING_CAPITALISATION_UCFIRST, + ($this->_capitalisation == CEON_URI_MAPPING_CAPITALISATION_UCFIRST ? true : false), '', + 'id="capitalisation-ucfirst"') . + '' . "

\n"; + + $option_output_rows .= ' + ' . "\n"; + + + // Remove words setting + $option_output_rows .= $this->_buildConfigSettingDescRow('remove-words', + TEXT_LABEL_REMOVE_WORDS, TEXT_CONFIG_DESC_REMOVE_WORDS); + + $option_output_rows .= ' + ' . "\n"; + + $option_output_rows .= zen_draw_textarea_field('remove-words', 'virtual', 50, 6, + htmlentities($this->_remove_words, ENT_COMPAT, CHARSET)); + + $option_output_rows .= ' + ' . "\n"; + + + // Character/string replacements setting + $option_output_rows .= $this->_buildConfigSettingDescRow('char-str-replacements', + TEXT_LABEL_CHAR_STR_REPLACEMENTS, TEXT_CONFIG_DESC_CHAR_STR_REPLACEMENTS); + + $option_output_rows .= ' + ' . "\n"; + + $option_output_rows .= zen_draw_textarea_field('char-str-replacements', 'virtual', 50, 2, + $this->_char_str_replacements); + + $option_output_rows .= ' + ' . "\n"; + + + // Add the language code enabled/disabled setting + $option_output_rows .= $this->_buildConfigSettingDescRow('language-code-add', + TEXT_LABEL_LANGUAGE_CODE_ADD_ENABLED, TEXT_CONFIG_DESC_LANGUAGE_CODE_ADD_ENABLED); + + $option_output_rows .= ' + ' . "\n"; + + $option_output_rows .= '

' . zen_draw_radio_field('language-code-add', '1', + ($this->_language_code_add == 1 ? true : false), '', 'id="language-code-add-yes"') . + '' . "\n"; + + $option_output_rows .= '
' . zen_draw_radio_field('language-code-add', '0', + ($this->_language_code_add == 1 ? false : true), '', 'id="language-code-add-no"') . + '' . "

\n"; + + $option_output_rows .= ' + ' . "\n"; + + // Clashing mapping action setting + $option_output_rows .= $this->_buildConfigSettingDescRow('mapping-clash-action', + TEXT_LABEL_MAPPING_CLASH_ACTION, TEXT_CONFIG_DESC_MAPPING_CLASH_ACTION); + + $option_output_rows .= ' + ' . "\n"; + + $option_output_rows .= '

' . zen_draw_radio_field('mapping-clash-action', + 'warn', ($this->_mapping_clash_action == 'warn' ? true : false), + '', 'id="mapping-clash-action-warn"') . + '' . "\n"; + + $option_output_rows .= '
' . zen_draw_radio_field('mapping-clash-action', + 'auto-append', ($this->_mapping_clash_action == 'auto-append' ? true : false), '', + 'id="mapping-clash-action-auto-append"') . + '' . "\n"; + + $option_output_rows .= ' + ' . "\n"; + + + // Now build the containing panel and add the rows to it + $this->_addPanel('autogen-panel', TEXT_AUTOGEN_CONFIG, null, + $this->_buildConfigPanel('autogen-panel', TEXT_AUTOGEN_CONFIG, $option_output_rows)); + } + + // }}} + + + // {{{ _buildAutoManagedProductURIsConfigPanel() + + /** + * Builds the configuration panel used to display the settings for the auto-managed product URIs functionality. + * Adds the panel to the list of panels. + * + * @access protected + * @return none + */ + protected function _buildAutoManagedProductURIsConfigPanel() + { + global $languages, $num_languages; + + // Variable holds the table rows being built for the options for this panel + $option_output_rows = ''; + + + // Auto-managed Product Related Page URI Mappings enabled/disabled settings + $option_output_rows .= $this->_buildConfigSettingDescRow('auto-managed-product-uris', + TEXT_LABEL_AUTO_MANAGED_PRODUCT_URIS, TEXT_CONFIG_DESC_AUTO_MANAGED_PRODUCT_URIS); + + $option_output_rows .= ' + ' . "\n"; + + $option_output_rows .= '

' . + TEXT_INSTRUCTIONS_AUTO_MANAGED_PRODUCT_URIS . "

\n"; + + $option_output_rows .= '

' . zen_draw_checkbox_field('manage-product-reviews-mappings', + $this->_manage_product_reviews_mappings, $this->_manage_product_reviews_mappings, '', + 'id="manage-product-reviews-mappings"'); + + $option_output_rows .= '

\n"; + + $option_output_rows .= '

' . zen_draw_checkbox_field( + 'manage-product-reviews-info-mappings', $this->_manage_product_reviews_info_mappings, + $this->_manage_product_reviews_info_mappings, '', + 'id="manage-product-reviews-info-mappings"'); + + $option_output_rows .= '

\n"; + + $option_output_rows .= '

' . zen_draw_checkbox_field( + 'manage-product-reviews-write-mappings', $this->_manage_product_reviews_write_mappings, + $this->_manage_product_reviews_write_mappings, '', + 'id="manage-product-reviews-write-mappings"'); + + $option_output_rows .= '

\n"; + + + $option_output_rows .= '

' . zen_draw_checkbox_field('manage-ask-a-question-mappings', + $this->_manage_ask_a_question_mappings, $this->_manage_ask_a_question_mappings, '', + 'id="manage-ask-a-question-mappings"'); + + $option_output_rows .= '

\n"; + + $option_output_rows .= ' + ' . "\n"; + + + // Product Related Pages URI Parts textfields + $option_output_rows .= $this->_buildConfigSettingDescRow( + 'auto-managed-product-uris-uri-parts', TEXT_LABEL_AUTO_MANAGED_PRODUCT_URIS_URI_PARTS, + TEXT_CONFIG_DESC_AUTO_MANAGED_PRODUCT_URIS_URI_PARTS); + + $option_output_rows .= ' + ' . "\n"; + + + // Product reviews pages URI part textfields are displayed in a subpanel. Build its content here + $subpanel = ''; + + for ($i = 0; $i < $num_languages; $i++) { + $language_code = strtolower($languages[$i]['code']); + + $subpanel .= zen_image(DIR_WS_CATALOG_LANGUAGES . $languages[$i]['directory'] . '/images/' . + $languages[$i]['image'], $languages[$i]['name']) . ' ' . + zen_draw_input_field('product-reviews-pages-uri-parts[' . $language_code . ']', + $this->_product_reviews_pages_uri_parts[$language_code], 'size="20" class="Textfield"') . "\n"; + + if (isset($this->_error_messages['product-reviews-pages-uri-parts-' . $language_code])) { + $subpanel .= '
' . TEXT_ERROR_URI_PART_MUST_BE_ENTERED . "\n"; + } + + if ($i < $num_languages - 1) { + $subpanel .= '
'; + } + } + + $option_output_rows .= $this->_buildSubPanel(TEXT_LABEL_AUTO_MANAGED_URI_REVIEWS, $subpanel); + + + // Product review info pages URI part textfields are displayed in a subpanel. Build its content here + $subpanel = ''; + + for ($i = 0; $i < $num_languages; $i++) { + $language_code = strtolower($languages[$i]['code']); + + $subpanel .= zen_image(DIR_WS_CATALOG_LANGUAGES . $languages[$i]['directory'] . '/images/' . + $languages[$i]['image'], $languages[$i]['name']) . ' ' . + zen_draw_input_field('product-reviews-info-pages-uri-parts[' . $language_code . ']', + $this->_product_reviews_info_pages_uri_parts[$language_code], 'size="20" class="Textfield"') . + "\n"; + + if (isset($this->_error_messages['product-reviews-info-pages-uri-parts-' . $languages[$i]['id']])) { + $subpanel .= '
' . TEXT_ERROR_URI_PART_MUST_BE_ENTERED . "\n"; + } + + if ($i < $num_languages - 1) { + $subpanel .= '
'; + } + } + + $option_output_rows .= $this->_buildSubPanel(TEXT_LABEL_AUTO_MANAGED_URI_REVIEW_INFO, $subpanel); + + + // Product write a review pages URI part textfields are displayed in a subpanel. Build its content here + $subpanel = ''; + + for ($i = 0; $i < $num_languages; $i++) { + $language_code = strtolower($languages[$i]['code']); + + $subpanel .= zen_image(DIR_WS_CATALOG_LANGUAGES . $languages[$i]['directory'] . '/images/' . + $languages[$i]['image'], $languages[$i]['name']) . ' ' . + zen_draw_input_field('product-reviews-write-pages-uri-parts[' . $language_code . ']', + $this->_product_reviews_write_pages_uri_parts[$language_code], 'size="20" class="Textfield"') . + "\n"; + + if (isset($this->_error_messages['product-reviews-write-pages-uri-parts-' . $languages[$i]['id']])) { + $subpanel .= '
' . TEXT_ERROR_URI_PART_MUST_BE_ENTERED . "\n"; + } + + if ($i < $num_languages - 1) { + $subpanel .= '
'; + } + } + + $option_output_rows .= $this->_buildSubPanel(TEXT_LABEL_AUTO_MANAGED_URI_WRITE_A_REVIEW, $subpanel); + + + + // Ask a question pages URI part textfields are displayed in a subpanel. Build its content here + $subpanel = ''; + + for ($i = 0; $i < $num_languages; $i++) { + $language_code = strtolower($languages[$i]['code']); + + $subpanel .= zen_image(DIR_WS_CATALOG_LANGUAGES . $languages[$i]['directory'] . '/images/' . + $languages[$i]['image'], $languages[$i]['name']) . ' ' . + zen_draw_input_field('ask-a-question-pages-uri-parts[' . $language_code . ']', + $this->_ask_a_question_pages_uri_parts[$language_code], 'size="20" class="Textfield"') . "\n"; + + if (isset($this->_error_messages['ask-a-question-pages-uri-parts-' . $language_code])) { + $subpanel .= '
' . TEXT_ERROR_URI_PART_MUST_BE_ENTERED . "\n"; + } + + if ($i < $num_languages - 1) { + $subpanel .= '
'; + } + } + + $option_output_rows .= $this->_buildSubPanel(TEXT_LABEL_AUTO_MANAGED_URI_ASK_A_QUESTION, $subpanel); + $option_output_rows .= ' + ' . "\n"; + + + // Now build the containing panel and add the rows to it + $this->_addPanel('auto-managed-product-uris-panel', TEXT_AUTO_MANAGED_PRODUCT_URIS, null, + $this->_buildConfigPanel('auto-managed-product-uris-panel', TEXT_AUTO_MANAGED_PRODUCT_URIS, + $option_output_rows)); + } + + // }}} + + + // {{{ _buildVersionCheckingConfigPanel() + + /** + * Builds the configuration panel used to display the setting for the version checking functionality. Adds the + * panel to the list of panels. + * + * @access protected + * @return none + */ + protected function _buildVersionCheckingConfigPanel() + { + // Variable holds the table rows being built for the options for this panel + $option_output_rows = ''; + + + // Autogeneration enabled/disabled setting + $option_output_rows .= $this->_buildConfigSettingDescRow('automatic-version-checking', + TEXT_LABEL_AUTOMATIC_VERSION_CHECKING, TEXT_CONFIG_DESC_AUTOMATIC_VERSION_CHECKING); + + $option_output_rows .= ' + ' . "\n"; + + $option_output_rows .= '

' . zen_draw_radio_field('automatic-version-checking', '1', + ($this->_automatic_version_checking == 1 ? true : false), '', + 'id="automatic-version-checking-yes"') . + '' . "\n"; + + $option_output_rows .= '
' . zen_draw_radio_field('automatic-version-checking', '0', + ($this->_automatic_version_checking == 1 ? false : true), '', + 'id="automatic-version-checking-no"') . + '' . "

\n"; + + $option_output_rows .= ' + ' . "\n"; + + // Now build the containing panel and add the rows to it + $this->_addPanel('version-checking-panel', TEXT_VERSION_CHECKING, null, + $this->_buildConfigPanel('version-checking-panel', TEXT_VERSION_CHECKING, $option_output_rows)); + } + + // }}} + + + // {{{ _buildInstallationCheckPanel() + + /** + * Builds a HTML panel which simply links to the installation check page and to the URI to let a user run the + * config check. Adds the panel to the list of panels. + * + * @access protected + * @return none + */ + protected function _buildInstallationCheckPanel() + { + $panel = '
+ '; + + $panel .= TEXT_INSTALLATION_CHECK; + + $panel .= '' . "\n"; + + $panel .= '

' . TEXT_INSTALLATION_CHECK . '

'; + + $panel .= '

' . TEXT_INSTALLATION_DESC . '

'; + + $panel .= '

' . TEXT_LINK_TO_INSTALLATION_CHECK . '

' . "\n"; + + + $panel .= '

' . TEXT_CONFIG_CHECK . '

'; + + $panel .= '

' . TEXT_CONFIG_DESC . '

'; + + $panel .= '

' . TEXT_LINK_TO_CONFIG_CHECK . '

' . "\n"; + + $panel .= '
' . "\n"; + + $this->_addPanel('installation-check-panel', TEXT_INSTALLATION_CHECK, null, $panel); + } + + // }}} +} + +// }}} diff --git a/NEUE DATEIEN/DEINADMIN/includes/classes/class.CeonURIMappingInstallOrUpgrade.php b/NEUE DATEIEN/DEINADMIN/includes/classes/class.CeonURIMappingInstallOrUpgrade.php new file mode 100644 index 0000000..69cc120 --- /dev/null +++ b/NEUE DATEIEN/DEINADMIN/includes/classes/class.CeonURIMappingInstallOrUpgrade.php @@ -0,0 +1,1664 @@ + + * @copyright Copyright 2008-2019 Ceon + * @copyright Copyright 2003-2021 Zen Cart Development Team + * @copyright Portions Copyright 2003 osCommerce + * @link http://ceon.net/software/business/zen-cart/uri-mapping + * @license http://www.zen-cart.com/license/2_0.txt GNU Public License V2.0 + * @version $Id: class.CeonURIMappingInstallOrUpgrade.php 2022-02-19 21:13:05Z webchills $ + */ + + +// {{{ CeonURIMappingInstallOrUpgrade + +/** + * Installs or upgrades Ceon URI Mapping. If a previous installation/upgrade attempt failed before it completed, + * the class can be run again as it will attempt to find and fix any configuration/database issues. + * + * @package ceon_uri_mapping + * @author Conor Kerr + * @copyright Copyright 2008-2019 Ceon + * @copyright Copyright 2003-2019 Zen Cart Development Team + * @copyright Portions Copyright 2003 osCommerce + * @link http://ceon.net/software/business/zen-cart/uri-mapping + * @license http://www.zen-cart.com/license/2_0.txt GNU Public License V2.0 + */ +class CeonURIMappingInstallOrUpgrade +{ + // {{{ properties + + /** + * The version of the module. + * + * @var string + * @access protected + */ + protected $_version = null; + + /** + * The version of the module which is currently installed. + * + * @var string + * @access protected + */ + protected $_installed_version = null; + + /** + * Tracks if any updates were performed. + * + * @var boolean + * @access protected + */ + protected $_actions_performed = false; + + /** + * Tracks if the URI mappings table has just been created. + * + * @var boolean + * @access protected + */ + protected $_uri_mappings_table_created = false; + + /** + * Tracks if the configs table has just been created. + * + * @var boolean + * @access protected + */ + protected $_uri_mapping_configs_table_created = false; + + /** + * Tracks if the product related pages URI parts table has just been created. + * + * @var boolean + * @access protected + */ + protected $_uri_mapping_prp_uri_parts_table_created = false; + + /** + * Maintains a list of any errors encountered in an installation or upgrade. + * + * @var array + * @access public + */ + public $error_messages = array(); + + // }}} + + + // {{{ Class Constructor + + /** + * Creates a new instance of the class. Installs/upgrades the database and adds or updates configuration + * options. + * + * @access public + * @param string $version The version of the module. + * @param string $installed_version The currently installed version of the module. + */ + public function __construct($version, $installed_version) + { + global $db; + + $this->_version = $version; + + $this->_installed_version = $installed_version; + + $this->_checkCreateDatabases(); + + if (count($this->error_messages) > 0) { + // Can't progress without working databases + return; + } + + // Make sure the product related pages URI parts table is fully populated as it may be needed to upgrade + // from any previous version + $this->_checkProductRelatedPagesURIPartsExistForLanguages(); + + $database_up_to_date = $this->_ensureDatabaseIsUpToDate(); + + $this->_checkForDefaultConfig(); + + if (((int) substr($this->_installed_version, 0, 1)) < 4) { + $this->_changeDefaultRemoveWordsSetting(); + } + + $this->_checkZenCartConfigGroupAndOption(); + + if (!$this->_uri_mappings_table_created && + substr($this->_installed_version, 0, 1) == '2' || + substr($this->_installed_version, 0, 3) == '3.0' || + substr($this->_installed_version, 0, 3) == '3.2' || $this->_installed_version == '3.4.0') { + // From 3.4.1 onwards the index page is always mapped to the main directory - i.e. the value of + // DIR_WS_CATALOG (e.g. / or /shop). Make any mappings for the index page historical + $this->_makeIndexPageMappingsHistorical(); + } + + if (((int) substr($this->_installed_version, 0, 1)) < 4) { + $this->_stripTrailingSlashesFromMappings(); + } + + // If updates were performed and all were successful, update version number + if (count($this->error_messages) == 0 && $this->_installed_version != $this->_version) { + // Only one config currently supported so the ID is hard-coded in the following SQL + $update_db_version_number_sql = " + UPDATE + " . TABLE_CEON_URI_MAPPING_CONFIGS . " + SET + version = '" . $this->_version . "' + WHERE + id = '1';"; + + $update_db_version_number_result = $db->Execute($update_db_version_number_sql); + + // Reset the version check status as it may change when the software is upgraded + if (isset($this->_ceon_base_model_code) && isset($_SESSION[$this->_ceon_base_model_code . '_vc_response'])) { + unset($_SESSION[$this->_ceon_base_model_code . '_vc_response']); + } + } + } + + // }}} + + + // {{{ actionPerformed() + + /** + * Simply returns whether or not any action was performed during the running of this instance. + * + * @access public + * @return boolean Whether or not any action was performed. + */ + public function actionPerformed() + { + return $this->_actions_performed; + } + + // }}} + + + // {{{ _checkCreateDatabases() + + /** + * Makes sure that the database tables exist. Creates any that don't. + * + * @access protected + * @return boolean False if a problem occurred when creating a database table, true otherwise. + */ + protected function _checkCreateDatabases() + { + global $db, $messageStack; + + // Add the URI Mappings table if it doesn't exist + $table_exists_query = 'SHOW TABLES LIKE "' . TABLE_CEON_URI_MAPPINGS . '";'; + $table_exists_result = $db->Execute($table_exists_query); + + if ($table_exists_result->EOF) { + if (!$this->_DBUserHasPrivilege('CREATE')) { + $this->error_messages[] = 'Database table could not be created! The database user may not have' . + ' CREATE TABLE privileges?!'; + + return false; + } + + $create_uri_mappings_table_sql = " + CREATE TABLE + `" . TABLE_CEON_URI_MAPPINGS . "` + ( + `uri` TEXT NOT NULL, + `language_id` INT(11) UNSIGNED DEFAULT NULL, + `current_uri` INT(1) UNSIGNED DEFAULT '0', + `main_page` VARCHAR(45) NULL, + `query_string_parameters` VARCHAR(255) DEFAULT NULL, + `associated_db_id` INT(11) UNSIGNED DEFAULT NULL, + `alternate_uri` VARCHAR(255) DEFAULT NULL, + `redirection_type_code` VARCHAR(3) DEFAULT '301', + `date_added` DATETIME DEFAULT NULL, + INDEX `assoc_db_id_idx` (`language_id`, `current_uri`, `main_page`, `associated_db_id`) + );"; + + $create_uri_mappings_table_result = $db->Execute($create_uri_mappings_table_sql); + + // Check the table was created + $table_exists_query = 'SHOW TABLES LIKE "' . TABLE_CEON_URI_MAPPINGS . '";'; + $table_exists_result = $db->Execute($table_exists_query); + + if ($table_exists_result->EOF) { + $this->error_messages[] = 'Database table could not be created! The database user may not have' . + ' CREATE TABLE privileges?!'; + + return false; + } + + $this->_actions_performed = true; + + $this->_uri_mappings_table_created = true; + + $messageStack->add('Mappings database table successfully created.', 'success'); + } + + + // Add the configuration table if it doesn't exist + $table_exists_query = 'SHOW TABLES LIKE "' . TABLE_CEON_URI_MAPPING_CONFIGS . '";'; + $table_exists_result = $db->Execute($table_exists_query); + + if ($table_exists_result->EOF) { + if (!$this->_DBUserHasPrivilege('CREATE')) { + $this->error_messages[] = 'Database table could not be created! The database user may not have' . + ' CREATE TABLE privileges?!'; + + return false; + } + + $create_uri_mapping_configs_table_sql = " + CREATE TABLE IF NOT EXISTS + `" . TABLE_CEON_URI_MAPPING_CONFIGS . "` + ( + `id` INT UNSIGNED NOT NULL, + `version` VARCHAR(14) NOT NULL, + `autogen_new` INT(1) UNSIGNED NOT NULL, + `whitespace_replacement` INT(1) UNSIGNED NOT NULL, + `capitalisation` INT(1) UNSIGNED NOT NULL, + `remove_words` TEXT DEFAULT NULL, + `char_str_replacements` TEXT DEFAULT NULL, + `language_code_add` INT(1) UNSIGNED NOT NULL, + `mapping_clash_action` VARCHAR(11) DEFAULT 'warn', + `manage_product_reviews_mappings` INT(1) UNSIGNED DEFAULT 1, + `manage_product_reviews_info_mappings` INT(1) UNSIGNED DEFAULT 1, + `manage_product_reviews_write_mappings` INT(1) UNSIGNED DEFAULT 1, + `manage_ask_a_question_mappings` INT(1) UNSIGNED DEFAULT 1, + `automatic_version_checking` INT(1) UNSIGNED DEFAULT 1, + PRIMARY KEY (`id`) + );"; + + $create_uri_mapping_configs_table_result = $db->Execute($create_uri_mapping_configs_table_sql); + + // Check the table was created + $table_exists_query = 'SHOW TABLES LIKE "' . TABLE_CEON_URI_MAPPING_CONFIGS . '";'; + + $table_exists_result = $db->Execute($table_exists_query); + + if ($table_exists_result->EOF) { + $this->error_messages[] = 'Database table could not be created! The database' . + ' user may not have CREATE TABLE privileges?!'; + + return false; + + } + + $this->_actions_performed = true; + + $this->_uri_mapping_configs_table_created = true; + + $messageStack->add('Configuration database table successfully created.', 'success'); + } + + + // Add the product related pages URI parts table if it doesn't exist + $table_exists_query = 'SHOW TABLES LIKE "' . TABLE_CEON_URI_MAPPING_PRODUCT_RELATED_PAGES_URI_PARTS . '";'; + $table_exists_result = $db->Execute($table_exists_query); + + if ($table_exists_result->EOF) { + if (!$this->_DBUserHasPrivilege('CREATE')) { + $this->error_messages[] = 'Database table could not be created! The database user may not have' . + ' CREATE TABLE privileges?!'; + + return false; + } + + $create_uri_mapping_prp_uri_parts_table_sql = " + CREATE TABLE IF NOT EXISTS + `" . TABLE_CEON_URI_MAPPING_PRODUCT_RELATED_PAGES_URI_PARTS . "` + ( + `page_type` VARCHAR(21) NOT NULL, + `language_code` CHAR(2) NOT NULL, + `uri_part` VARCHAR(50) NOT NULL, + PRIMARY KEY (`page_type`, `language_code`) + );"; + + $create_uri_mapping_prp_uri_parts_table_result = + $db->Execute($create_uri_mapping_prp_uri_parts_table_sql); + + // Check the table was created + $table_exists_query = + 'SHOW TABLES LIKE "' . TABLE_CEON_URI_MAPPING_PRODUCT_RELATED_PAGES_URI_PARTS . '";'; + $table_exists_result = $db->Execute($table_exists_query); + + if ($table_exists_result->EOF) { + $this->error_messages[] = 'Database table could not be created! The database user may not have' . + ' CREATE TABLE privileges?!'; + + return false; + } + + $this->_actions_performed = true; + + $this->_uri_mapping_prp_uri_parts_table_created = true; + + $messageStack->add('Product related pages URI parts database table successfully created.', 'success'); + } + + return true; + } + + // }}} + + + // {{{ _checkProductRelatedPagesURIPartsExistForLanguages() + + /** + * Makes sure that every language has values for all the product related pages URI parts. + * + * @access protected + * @return void + */ + protected function _checkProductRelatedPagesURIPartsExistForLanguages() + { + global $db; + + $languages = zen_get_languages(); + + // Check if URI parts are missing for any language + $page_types = array( + 'product_reviews', + 'product_reviews_info', + 'product_reviews_write', + 'ask_a_question' + ); + + // Variable holds the list of URIs parts for each language as currently specified in the database + $current_uri_parts = array(); + + $current_uri_parts_sql = " + SELECT + page_type, + language_code, + uri_part + FROM + " . TABLE_CEON_URI_MAPPING_PRODUCT_RELATED_PAGES_URI_PARTS . " + WHERE + 1 = 1;"; + + $current_uri_parts_result = $db->Execute($current_uri_parts_sql); + + while (!$current_uri_parts_result->EOF) { + if (!isset($current_uri_parts[$current_uri_parts_result->fields['language_code']])) { + $current_uri_parts[$current_uri_parts_result->fields['language_code']] = array(); + } + + $current_uri_parts[$current_uri_parts_result->fields['language_code']] + [$current_uri_parts_result->fields['page_type']] = $current_uri_parts_result->fields['uri_part']; + + $current_uri_parts_result->MoveNext(); + } + + $uri_parts_missing = false; + + for ($i = 0, $n = count($languages); $i < $n; $i++) { + $language_code = strtolower($languages[$i]['code']); + + if (!isset($current_uri_parts[$language_code])) { + $uri_parts_missing = true; + + break; + } + + foreach ($page_types as $page_type) { + if (!isset($current_uri_parts[$language_code][$page_type]) || + (isset($current_uri_parts[$language_code][$page_type]) && + (is_null($current_uri_parts[$language_code][$page_type]) || + strlen($current_uri_parts[$language_code][$page_type]) == 0))) { + $uri_parts_missing = true; + + break 2; + } + } + } + + if (!$uri_parts_missing) { + // Everything is in order, nothing else to do + return; + } + + // Reaching this point means that at least one URI part is missing, must populate the + // missing URI part(s) + + + // Variable holds the list of URIs parts for each language as defined in the language + // definition files for each language + $default_uri_parts = array(); + + // Attempt to get the specific defines for each store the language uses + for ($i = 0, $n = count($languages); $i < $n; $i++) { + $language_name = $languages[$i]['name']; + + $language_code_lower = strtolower($languages[$i]['code']); + $language_code_upper = strtoupper($languages[$i]['code']); + + if (file_exists(DIR_WS_LANGUAGES . $language_name . 'ceon_uri_mapping_default_uri_parts.php')) { + include_once (DIR_WS_LANGUAGES . $language_name . 'ceon_uri_mapping_default_uri_parts.php'); + + $default_uri_parts[$language_code_lower] = array(); + + foreach ($page_types as $page_type) { + if (defined('DEFAULT_URI_PART_' . strtoupper($page_type) . $language_code_upper)) { + $default_uri_parts[$language_code_lower][$page_type] = + constant('DEFAULT_URI_PART_' . strtoupper($page_type) . $language_code_upper); + } + } + } + } + + // Variable holds the defines to be used for languages that don't have any custom defines + // If the store's default language is missing any defines, defines for English are used. If English defines + // aren't found, English is used, hard-coded here + $default_language_code = strtolower(DEFAULT_LANGUAGE); + + + // Populate any missing URI parts for any language + for ($i = 0, $n = count($languages); $i < $n; $i++) { + $language_code = strtolower($languages[$i]['code']); + + if (!isset($default_uri_parts[$language_code])) { + $default_uri_parts[$language_code] = array(); + } + + + } + + // Add the missing URI parts to the database + for ($i = 0, $n = count($languages); $i < $n; $i++) { + $language_code = strtolower($languages[$i]['code']); + + // Are there no URI Parts for this language? Or are any empty? + if (!isset($current_uri_parts[$language_code])) { + // URI Parts are missing for this language, so add default values + foreach ($page_types as $page_type) { + $add_uri_part_sql = " + INSERT INTO + " . TABLE_CEON_URI_MAPPING_PRODUCT_RELATED_PAGES_URI_PARTS . " + ( + page_type, + language_code, + uri_part + ) + VALUES + ( + '" . zen_db_input($page_type) . "', + '" . zen_db_input($language_code) . "', + '" . zen_db_input($default_uri_parts[$language_code][$page_type]) . "' + );"; + + $add_uri_part_result = $db->Execute($add_uri_part_sql); + } + } else { + foreach ($page_types as $page_type) { + if (is_null($current_uri_parts[$language_code][$page_type]) || + strlen($current_uri_parts[$language_code][$page_type]) == 0) { + // URI Part has no value for this language, use the default URI part identified earlier + $update_uri_part_sql = " + UPDATE + " . TABLE_CEON_URI_MAPPING_PRODUCT_RELATED_PAGES_URI_PARTS . " + SET + uri_part = '" . zen_db_input( + $default_uri_parts[$language_code][$page_type]) . "' + WHERE + page_type = '" . zen_db_input($page_type) . "' + AND + language_code = '" . zen_db_input($language_code) . "';"; + + $update_uri_part_result = $db->Execute($update_uri_part_sql); + } + } + } + } + + $this->_actions_performed = true; + } + + // }}} + + + // {{{ _ensureDatabaseIsUpToDate() + + /** + * Makes sure that the database tables are up to date. + * + * @access protected + * @return boolean False if a problem occurred when updating a database table, true otherwise. + */ + protected function _ensureDatabaseIsUpToDate() + { + global $db; + + // If a problem occurs trying to update a table, take note but continue to try and update any other table, + // so things are as good as can be in a bad situation + $problem_updating_table = false; + + if (!$this->_uri_mappings_table_created) { + if (!$this->_checkUpdateURIMappingsTable()) { + $problem_updating_table = true; + } + } + + if (!$this->_uri_mapping_configs_table_created) { + if (!$this->_checkUpdateConfigsTable()) { + $problem_updating_table = true; + } + } + + if ($problem_updating_table) { + return false; + } + + return true; + } + + // }}} + + + // {{{ _checkUpdateURIMappingsTable() + + /** + * Adds any columns which are missing from the main URI mappings table and migrates the URI mappings from + * really old versions. + * + * @access protected + * @return boolean Whether or not the database table is up to date. + */ + protected function _checkUpdateURIMappingsTable() + { + global $db, $messageStack; + + // Get the list of columns in the database table + $columns = array(); + + $columns_query = 'SHOW COLUMNS FROM ' . TABLE_CEON_URI_MAPPINGS . ';'; + $columns_result = $db->Execute($columns_query); + + while (!$columns_result->EOF) { + $columns[] = $columns_result->fields['Field']; + $columns_result->MoveNext(); + } + + if (!in_array('current_uri', $columns)) { + // Updating old version 2 database table + if (!$this->_DBUserHasPrivilege('ALTER')) { + $this->error_messages[] = 'Database table can not be updated! The database user' . + ' does not have ALTER TABLE privileges!'; + + return false; + } + + // Add the new current uri column to the uri mappings table + $add_column_sql = " + ALTER TABLE + " . TABLE_CEON_URI_MAPPINGS . " + ADD + `current_uri` INT(1) UNSIGNED DEFAULT '0' + AFTER + `language_id`;"; + + $add_column_result = $db->Execute($add_column_sql); + + + // Verify that the column was added + $columns_query = 'SHOW COLUMNS FROM ' . TABLE_CEON_URI_MAPPINGS . ';'; + $columns_result = $db->Execute($columns_query); + + $columns = array(); + + while (!$columns_result->EOF) { + $columns[] = $columns_result->fields['Field']; + $columns_result->MoveNext(); + } + + if (!in_array('current_uri', $columns)) { + // Unable to add column to table! The database user may not actually have ALTER TABLE privileges + $this->error_messages[] = 'Unable to add column to table! The database user may' . + ' not have ALTER TABLE privileges'; + + return false; + } + + $this->_actions_performed = true; + + // Assume all other ALTER operations will work fine if the first one did + + // Add the new main page column to the uri mappings table + $add_column_sql = " + ALTER TABLE + " . TABLE_CEON_URI_MAPPINGS . " + ADD + `main_page` VARCHAR(45) NULL + AFTER + `current_uri`;"; + + $add_column_result = $db->Execute($add_column_sql); + + // Add the new associated DB ID column to the uri mappings table + $add_column_sql = " + ALTER TABLE + " . TABLE_CEON_URI_MAPPINGS . " + ADD + `associated_db_id` INT(11) UNSIGNED DEFAULT NULL + AFTER + `main_page`;"; + + $add_column_result = $db->Execute($add_column_sql); + + // Add the new redirection type code column to the uri mappings table + $add_column_sql = " + ALTER TABLE + " . TABLE_CEON_URI_MAPPINGS . " + ADD + `redirection_type_code` VARCHAR(3) DEFAULT '301' + AFTER + `alternate_uri`;"; + + $add_column_result = $db->Execute($add_column_sql); + + // Add the new date added column to the uri mappings table + $add_column_sql = " + ALTER TABLE + " . TABLE_CEON_URI_MAPPINGS . " + ADD + `date_added` DATETIME DEFAULT NULL + AFTER + `redirection_type_code`;"; + + $add_column_result = $db->Execute($add_column_sql); + + // URI mappings format has changed and URIs will need to be updated + $this->_migrateVersion2URIMappings(); + + // Remove the old columns + $drop_columns_sql = " + ALTER TABLE + " . TABLE_CEON_URI_MAPPINGS . " + DROP + `category_id`, + DROP + `product_id`, + DROP + `page_id`;"; + + $drop_columns_result = $db->Execute($drop_columns_sql); + + $version_2_table_updated = true; + } + + if (!in_array('query_string_parameters', $columns)) { + // Version 2.x/3.0.x table needs updating + if (!$this->_DBUserHasPrivilege('ALTER')) { + $this->error_messages[] = 'Database table could not be created! The database user may not have' . + ' does not have ALTER TABLE privileges!'; + + return false; + } + + // Add the new query string column to the uri mappings table + $add_column_sql = " + ALTER TABLE + " . TABLE_CEON_URI_MAPPINGS . " + ADD + `query_string_parameters` VARCHAR(255) DEFAULT NULL + AFTER + `main_page`;"; + + $add_column_result = $db->Execute($add_column_sql); + + + // Verify that the column was added + $columns_query = 'SHOW COLUMNS FROM ' . TABLE_CEON_URI_MAPPINGS . ';'; + $columns_result = $db->Execute($columns_query); + + $columns = array(); + + while (!$columns_result->EOF) { + $columns[] = $columns_result->fields['Field']; + $columns_result->MoveNext(); + } + + if (!in_array('query_string_parameters', $columns)) { + // Unable to add column to table! The database user may not actually have ALTER TABLE privileges + $this->error_messages[] = 'Unable to add column to table! The database user may' . + ' not have ALTER TABLE privileges'; + + return false; + } + + $this->_migrateFromOldAlternateURIMappingFormat(); + + $this->_actions_performed = true; + + $version_2_table_updated = true; + $version_3_table_updated = true; + } + + if (in_array('date_added', $columns)) { + // Verify that the column allows null values + $columns_query = 'SHOW COLUMNS FROM ' . TABLE_CEON_URI_MAPPINGS . ';'; + $columns_result = $db->Execute($columns_query); + + while (!$columns_result->EOF) { + if ($columns_result->fields['Field'] == 'date_added') { + if ($columns_result->fields['Null'] == "NO") { + $update_column_sql = " + ALTER TABLE + " . TABLE_CEON_URI_MAPPINGS . " + MODIFY COLUMN + `date_added` DATETIME DEFAULT NULL;"; + + $update_column_result = $db->Execute($update_column_sql); + + $this->_actions_performed = true; + + $version_4_updated = true; + } + + $column_data_sql = "SELECT date_added FROM + " . TABLE_CEON_URI_MAPPINGS . " + WHERE date_added <= '0001-01-01 00:00:00' AND + date_added IS NOT NULL;"; + $column_data_result = $db->Execute($column_data_sql); + + if (!$column_data_result->EOF) { + $update_data_sql = "UPDATE + " . TABLE_CEON_URI_MAPPINGS . " + SET date_added = NULL WHERE date_added <= '0001-01-01 00:00:00' AND + date_added IS NOT NULL;"; + + $update_data_result = $db->Execute($update_data_sql); + + $this->_actions_performed = true; + + $version_4_updated = true; + } + + break; + } + $columns_result->MoveNext(); + } + } + + // Add the index if it doesn't exist + $indexes_exist_query = 'SHOW INDEXES FROM ' . TABLE_CEON_URI_MAPPINGS . ';'; + $indexes_exist_result = $db->Execute($indexes_exist_query); + + $indexes = array(); + + while (!$indexes_exist_result->EOF) { + $indexes[] = $indexes_exist_result->fields['Column_name']; + $indexes_exist_result->MoveNext(); + } + + if (!in_array('language_id', $indexes)) { + // Add an index to speed up database lookups for categories, products, manufacturers and EZ-Pages. + // Index format suggested by Christian Pinder. + $add_index_sql = " + ALTER TABLE + " . TABLE_CEON_URI_MAPPINGS . " + ADD INDEX `assoc_db_id_idx` + ( + `language_id`, + `current_uri`, + `main_page`, + `associated_db_id` + );"; + + $add_index_result = $db->Execute($add_index_sql); + + $this->_actions_performed = true; + + $version_2_table_updated = true; + $version_3_table_updated = true; + } + + if (isset($version_4_updated)) { + $messageStack->add('Mappings database table successfully updated from old version 4.x format.', + 'success'); + } else if (isset($version_3_updated)) { + $messageStack->add('Mappings database table successfully updated from old version 3.x format.', + 'success'); + } else if (isset($version_2_updated)) { + $messageStack->add('Mappings database table successfully updated from old version 2.x format.', + 'success'); + } + } + + // }}} + + + // {{{ _migrateVersion2URIMappings() + + /** + * Migrates the URI mappings from the old version 2 format to the current format. + * + * @access protected + * @return none + */ + protected function _migrateVersion2URIMappings() + { + global $db, $languages; + + $uri_mappings_query = " + SELECT + um.*, + pt.type_handler + FROM + " . TABLE_CEON_URI_MAPPINGS . " um + LEFT JOIN + " . TABLE_PRODUCTS . " p + ON + p.products_id = um.product_id + LEFT JOIN + " . TABLE_PRODUCT_TYPES . " pt + ON + pt.type_id = p.products_type + WHERE + 1 = 1;"; + + $uri_mappings_result = $db->Execute($uri_mappings_query); + + while (!$uri_mappings_result->EOF) { + $main_page = null; + + if (!is_null($uri_mappings_result->fields['category_id'])) { + $main_page = FILENAME_DEFAULT; + $associated_db_id = $uri_mappings_result->fields['category_id']; + + $selection_query_part = "category_id = '" . $uri_mappings_result->fields['category_id'] . "'"; + + } else if (!is_null($uri_mappings_result->fields['product_id'])) { + $main_page = $uri_mappings_result->fields['type_handler'] . '_info'; + $associated_db_id = $uri_mappings_result->fields['product_id']; + + $selection_query_part = "product_id = '" . $uri_mappings_result->fields['product_id'] . "'"; + + } else if (!is_null($uri_mappings_result->fields['page_id'])) { + $main_page = FILENAME_EZPAGES; + $associated_db_id = $uri_mappings_result->fields['page_id']; + + $selection_query_part = "page_id = '" . $uri_mappings_result->fields['page_id'] . "'"; + } + + if (!is_null($main_page)) { + $update_record_format_query = " + UPDATE + " . TABLE_CEON_URI_MAPPINGS . " + SET + current_uri = '1', + main_page = '" . zen_db_input($main_page) . "', + associated_db_id = '" . zen_db_input($associated_db_id) . "' + WHERE + " . $selection_query_part . ";"; + + $update_record_format_result = $db->Execute($update_record_format_query); + } + + if (!is_null($uri_mappings_result->fields['product_id'])) { + // Must add the default URI mappings for the other product-related pages + $uri_mapping = $uri_mappings_result->fields['uri']; + + if (substr($uri_mapping, -1) != '/') { + $uri_mapping .= '/'; + } + + $sql_data_array = array( + 'language_id' => $uri_mappings_result->fields['language_id'], + 'current_uri' => 1, + 'associated_db_id' => $associated_db_id, + 'alternate_uri' => 'null', + 'redirection_type_code' => '301', + 'date_added' => $uri_mappings_result->fields['date_added'] + ); + + require_once(DIR_WS_FUNCTIONS . 'ceon_uri_mapping_products.php'); + + $page_types = array( + 'product_reviews', + 'product_reviews_info', + 'product_reviews_write', + 'ask_a_question' + ); + + // Get the language code for the mapping's language + for ($i = 0, $n = count($languages); $i < $n; $i++) { + if ($languages[$i]['id'] == $uri_mappings_result->fields['language_id']) { + $language_code = strtolower($languages[$i]['code']); + break; + } + } + + foreach ($page_types as $page_type) { + if (ceon_uri_mappingAutoManageProductRelatedPageURI($page_type)) { + $uri_part = ceon_uri_mappingGetProductRelatedPageURIPart($page_type, $language_code); + + if ($uri_part == false) { + // Unexpected database problem encountered + continue; + } + + $uri_part = ceon_uri_mappingConvertStringForURI($uri_part, $language_code); + + $sql_data_array['uri'] = zen_db_prepare_input($uri_mapping . $uri_part); + + $sql_data_array['main_page'] = + zen_db_prepare_input(constant('FILENAME_' . strtoupper($page_type))); + } + + zen_db_perform(TABLE_CEON_URI_MAPPINGS, $sql_data_array); + } + } + + $uri_mappings_result->MoveNext(); + } + + // Update the date fields to give them a default date + $update_date_added_query = " + UPDATE + " . TABLE_CEON_URI_MAPPINGS . " + SET + date_added = '" . date('Y-m-d H:i:s', time()) . "' + WHERE + 1 = 1;"; + + $update_date_added_result = $db->Execute($update_date_added_query); + + // Set the alternate_uri column's values to null where appropriate + $update_alternate_uri_query = " + UPDATE + " . TABLE_CEON_URI_MAPPINGS . " + SET + alternate_uri = NULL + WHERE + alternate_uri = 'null';"; + + $update_alternate_uri_result = $db->Execute($update_alternate_uri_query); + } + + // }}} + + + // {{{ _migrateFromOldAlternateURIMappingFormat() + + /** + * Modifies mappings which used the old alternate URI format, updating them to use the newly added + * query_string_parameter format. + * + * @access protected + * @return none + */ + protected function _migrateFromOldAlternateURIMappingFormat() + { + global $db; + + $uri_mappings_query = " + SELECT + um.* + FROM + " . TABLE_CEON_URI_MAPPINGS . " um + WHERE + alternate_uri LIKE '%index.php?main_page=%';"; + + $uri_mappings_result = $db->Execute($uri_mappings_query); + + while (!$uri_mappings_result->EOF) { + // Have matched an alternative URI which is a Zen Cart page with preset parameters + // Extract the values for the main page variable and the query string parameter variable + $pattern = '/index\.php\?main_page\=([^\&]+)\&?(.*)/'; + + if (preg_match($pattern, $uri_mappings_result->fields['alternate_uri'], $matches)) { + // Alternative URI is a Zen Cart page, get any parameters to be set + $main_page = $matches[1]; + $parameter_string = $matches[2]; + + if (strlen($parameter_string) == 0) { + $parameter_string = null; + } + + $update_record_format_query = " + UPDATE + " . TABLE_CEON_URI_MAPPINGS . " + SET + main_page = '" . zen_db_input($main_page) . "', + query_string_parameters = " . (is_null($parameter_string) ? 'null' : + "'" . zen_db_input($parameter_string) . "'") . ", + alternate_uri = NULL + WHERE + alternate_uri = '" . $uri_mappings_result->fields['alternate_uri'] . "' + AND + language_id = '" . $uri_mappings_result->fields['language_id'] . "' + AND + current_uri = '" . $uri_mappings_result->fields['current_uri'] . "' + AND + date_added = '" . $uri_mappings_result->fields['date_added'] . "';"; + + $update_record_format_result = $db->Execute($update_record_format_query); + } + + $uri_mappings_result->MoveNext(); + } + } + + // }}} + + + // {{{ _checkUpdateConfigsTable() + + /** + * Adds any columns which are missing from the configs table and removes an unneeded column. + * + * @access protected + * @return boolean Whether or not the database table is up to date. + */ + protected function _checkUpdateConfigsTable() + { + global $db, $messageStack; + + // Get the list of columns in the database table + $columns = array(); + + $columns_query = 'SHOW COLUMNS FROM ' . TABLE_CEON_URI_MAPPING_CONFIGS . ';'; + $columns_result = $db->Execute($columns_query); + + while (!$columns_result->EOF) { + $columns[] = $columns_result->fields['Field']; + $columns_result->MoveNext(); + } + + if (in_array('language_code_add', $columns)) { + // Can assume other columns are present + return true; + } + + if (!$this->_DBUserHasPrivilege('ALTER')) { + $this->error_messages[] = 'Database table can not be updated! The database user' . + ' does not have ALTER TABLE privileges!'; + + return false; + } + + $add_column_sql = " + ALTER TABLE + " . TABLE_CEON_URI_MAPPING_CONFIGS . " + ADD + `language_code_add` INT(1) UNSIGNED NOT NULL + AFTER + `char_str_replacements`;"; + + $add_column_result = $db->Execute($add_column_sql); + + // Verify that the column was added + $columns_query = 'SHOW COLUMNS FROM ' . TABLE_CEON_URI_MAPPING_CONFIGS . ';'; + $columns_result = $db->Execute($columns_query); + + $columns = array(); + + while (!$columns_result->EOF) { + $columns[] = $columns_result->fields['Field']; + $columns_result->MoveNext(); + } + + if (!in_array('language_code_add', $columns)) { + // Unable to add column to table! The database user may not actually have ALTER TABLE privileges + $this->error_messages[] = 'Unable to add column to table! The database user may not have ALTER TABLE' . + ' privileges'; + + return false; + } + + $this->_actions_performed = true; + + // Assume all other ALTER operations will work fine if the first one did + + if (!in_array('mapping_clash_action', $columns)) { + $add_column_sql = " + ALTER TABLE + " . TABLE_CEON_URI_MAPPING_CONFIGS . " + ADD + `mapping_clash_action` VARCHAR(11) DEFAULT 'warn' + AFTER + `language_code_add`;"; + + $add_column_result = $db->Execute($add_column_sql); + } + + if (!in_array('manage_product_reviews_mappings', $columns)) { + $add_column_sql = " + ALTER TABLE + " . TABLE_CEON_URI_MAPPING_CONFIGS . " + ADD + `manage_product_reviews_mappings` INT(1) UNSIGNED DEFAULT 1 + AFTER + `mapping_clash_action`;"; + + $add_column_result = $db->Execute($add_column_sql); + } + + if (!in_array('manage_product_reviews_info_mappings', $columns)) { + $add_column_sql = " + ALTER TABLE + " . TABLE_CEON_URI_MAPPING_CONFIGS . " + ADD + `manage_product_reviews_info_mappings` INT(1) UNSIGNED DEFAULT 1 + AFTER + `manage_product_reviews_mappings`;"; + + $add_column_result = $db->Execute($add_column_sql); + } + + if (!in_array('manage_product_reviews_write_mappings', $columns)) { + $add_column_sql = " + ALTER TABLE + " . TABLE_CEON_URI_MAPPING_CONFIGS . " + ADD + `manage_product_reviews_write_mappings` INT(1) UNSIGNED DEFAULT 1 + AFTER + `manage_product_reviews_info_mappings`;"; + + $add_column_result = $db->Execute($add_column_sql); + } + + + if (!in_array('manage_ask_a_question_mappings', $columns)) { + $add_column_sql = " + ALTER TABLE + " . TABLE_CEON_URI_MAPPING_CONFIGS . " + ADD + `manage_ask_a_question_mappings` INT(1) UNSIGNED DEFAULT 1 + AFTER + `manage_tell_a_friend_mappings`;"; + + $add_column_result = $db->Execute($add_column_sql); + } + if (!in_array('automatic_version_checking', $columns)) { + $add_column_sql = " + ALTER TABLE + " . TABLE_CEON_URI_MAPPING_CONFIGS . " + ADD + `automatic_version_checking` INT(1) UNSIGNED DEFAULT 1 + AFTER + `manage_ask_a_question_mappings`;"; + + $add_column_result = $db->Execute($add_column_sql); + } + + + // Remove old excluded files column + if (in_array('excluded_files', $columns)) { + $remove_column_sql = " + ALTER TABLE + " . TABLE_CEON_URI_MAPPING_CONFIGS . " + DROP + `excluded_files`;"; + + $remove_column_result = $db->Execute($remove_column_sql); + } + + return true; + } + + // }}} + + + // {{{ _checkForDefaultConfig() + + /** + * Makes sure that the default configuration exists. If not, it is created. + * + * @access protected + * @return void + */ + protected function _checkForDefaultConfig() + { + global $db; + + $check_config_exists_sql = " + SELECT + id + FROM + " . TABLE_CEON_URI_MAPPING_CONFIGS . " + WHERE + 1 = 1;"; + + $check_config_exists_result = $db->Execute($check_config_exists_sql); + + if (!$check_config_exists_result->EOF) { + // Config already exists + return; + } + + $create_default_config_sql = " + INSERT INTO + " . TABLE_CEON_URI_MAPPING_CONFIGS . " + ( + id, + version, + autogen_new, + whitespace_replacement, + capitalisation, + remove_words, + char_str_replacements, + language_code_add, + mapping_clash_action, + manage_product_reviews_mappings, + manage_product_reviews_info_mappings, + manage_product_reviews_write_mappings, + manage_ask_a_question_mappings, + automatic_version_checking + ) + VALUES + ( + '1', + '" . $this->_version . "', + '1', + '" . CEON_URI_MAPPING_SINGLE_DASH . "', + '" . CEON_URI_MAPPING_CAPITALISATION_LOWERCASE . "', + '-', + '$=>USD,€=>EUR', + '0', + 'warn', + '1', + '1', + '1', + '0', + '1' + );"; + + $create_default_config_result = $db->Execute($create_default_config_sql); + + $this->_actions_performed = true; + } + + // }}} + + + // {{{ _changeDefaultRemoveWordsSetting() + + /** + * Makes a small adjustment to the default configuration. The words "a" and "an" are no longer removed by + * default. + * + * @access protected + * @return void + */ + protected function _changeDefaultRemoveWordsSetting() + { + global $db; + + $get_remove_words_value_sql = " + SELECT + remove_words + FROM + " . TABLE_CEON_URI_MAPPING_CONFIGS . " + WHERE + id ='1';"; + + $get_remove_words_value_result = $db->Execute($get_remove_words_value_sql); + + if ($get_remove_words_value_result->EOF) { + // Error, config not found + return; + } + + $remove_words = $get_remove_words_value_result->fields['remove_words']; + + $orig_remove_words = explode(',', $remove_words); + + $new_remove_words = array(); + + for ($i = 0, $n = count($orig_remove_words); $i < $n; $i++) { + $orig_remove_words[$i] = trim($orig_remove_words[$i]); + + if ($orig_remove_words[$i] != 'a' && $orig_remove_words[$i] != 'an') { + $new_remove_words[] = $orig_remove_words[$i]; + } + } + + $new_remove_words = implode(',', $new_remove_words); + + $adjust_remove_words_setting_sql = " + UPDATE + " . TABLE_CEON_URI_MAPPING_CONFIGS . " + SET + remove_words = '" . zen_db_input($new_remove_words) . "' + WHERE + id = '1';"; + + $adjust_remove_words_setting_result = $db->Execute($adjust_remove_words_setting_sql); + + $this->_actions_performed = true; + } + + // }}} + + + // {{{ _checkZenCartConfigGroupAndOption() + + /** + * Makes sure that the configuration group and option are present in the Zen Cart configuration table. If + * either is missing, it is created. + * + * @access protected + * @return boolean Whether or not the configuration group and option are present and valid. + */ + protected function _checkZenCartConfigGroupAndOption() + { + global $db, $messageStack; + + $check_config_group_exists_sql = " + SELECT + configuration_group_id + FROM + " . TABLE_CONFIGURATION_GROUP . " + WHERE + configuration_group_title = 'Ceon URI Mapping (SEO)';"; + + $check_config_group_exists_result = $db->Execute($check_config_group_exists_sql); + + if (!$check_config_group_exists_result->EOF) { + $configuration_group_id = $check_config_group_exists_result->fields['configuration_group_id']; + } else { + $add_config_group_options_sql = " + INSERT INTO + " . TABLE_CONFIGURATION_GROUP . " + ( + configuration_group_title, + language_id, + configuration_group_description, + sort_order, + visible + ) + VALUES + ( + 'Ceon URI Mapping (SEO)', + '43', + 'Set Ceon URI Mapping (SEO) Options', + '1', + '1' + );"; + + $add_config_group_options_result = $db->Execute($add_config_group_options_sql); + + $this->_actions_performed = true; + + $configuration_group_id_sql = " + SELECT + configuration_group_id + FROM + " . TABLE_CONFIGURATION_GROUP . " + WHERE + configuration_group_title = 'Ceon URI Mapping (SEO)';"; + + $configuration_group_id_result = $db->Execute($configuration_group_id_sql); + + if (!$configuration_group_id_result->EOF) { + $configuration_group_id = $configuration_group_id_result->fields['configuration_group_id']; + } else { + // Problem getting ID! + $this->error_messages[] = 'Couldn\'t get the ID of the configuration group!'; + + return false; + } + + $set_group_sort_order_sql = " + UPDATE + " . TABLE_CONFIGURATION_GROUP . " + SET + sort_order = '" . $configuration_group_id . "' + WHERE + configuration_group_id = '" . $configuration_group_id . "';"; + + $set_group_sort_order_result = $db->Execute($set_group_sort_order_sql); + + $messageStack->add('Configuration group created.', 'success'); + } + + $check_config_option_exists_sql = " + SELECT + configuration_group_id + FROM + " . TABLE_CONFIGURATION . " + WHERE + configuration_key = 'CEON_URI_MAPPING_ENABLED';"; + + $check_config_option_exists_result = $db->Execute($check_config_option_exists_sql); + + if (!$check_config_option_exists_result->EOF) { + // Make sure the option is assigned to the correct group + if ($check_config_option_exists_result->fields['configuration_group_id'] != $configuration_group_id) { + + $set_group_id_sql = " + UPDATE + " . TABLE_CONFIGURATION . " + SET + configuration_group_id = '" . $configuration_group_id . "' + WHERE + configuration_key = 'CEON_URI_MAPPING_ENABLED';"; + + $set_group_id_result = $db->Execute($set_group_id_sql); + + $messageStack->add('Configuration option assigned to correct group.', 'success'); + + $this->_actions_performed = true; + } + } else { + $add_config_option_sql = " + INSERT INTO + " . TABLE_CONFIGURATION . " + ( + `configuration_title`, + `configuration_key`, + `configuration_value`, + `configuration_description`, + `configuration_group_id`, + `sort_order`, + `set_function`, + `date_added` + ) + VALUES + ( + 'Enable/Disable URI Mapping', + 'CEON_URI_MAPPING_ENABLED', + '1', + 'If enabled, any Categories/Products/Manufacturers/EZ-Pages/other pages which have a static URI Mapping specified for them in the database will use those static URIs instead of the standard Zen Cart dynamically-built URIs.

0 = off
1 = on', + '" . $configuration_group_id . "', + '1', + 'zen_cfg_select_option(array(''0'', ''1''), ', + NOW() + );"; + + $add_config_option_result = $db->Execute($add_config_option_sql); + + $messageStack->add('Configuration group option added.', 'success'); + + $this->_actions_performed = true; + } + + // Make sure configuration group can be displayed in admin menu + if (function_exists('zen_register_admin_page')) { + if (!zen_page_key_exists('ceon_uri_mapping_config_group')) { + // Add the link to the Ceon URI Mapping Zen Cart configuration options to the admin menu + zen_register_admin_page('ceon_uri_mapping_config_group', 'BOX_CEON_URI_MAPPING_CONFIG_GROUP', + 'FILENAME_CONFIGURATION', 'gID=' . $configuration_group_id, 'configuration', 'Y', + $configuration_group_id); + + $messageStack->add('Configuration group added to admin menu.', 'success'); + } + } + + return true; + } + + // }}} + + + // {{{ _makeIndexPageMappingsHistorical() + + /** + * Makes any mappings for the index page historical. + * + * @access protected + * @return none + */ + protected function _makeIndexPageMappingsHistorical() + { + global $db; + + $make_index_page_mapping_historical_query = " + UPDATE + " . TABLE_CEON_URI_MAPPINGS . " + SET + current_uri = '0' + WHERE + main_page = 'index' + AND + current_uri = '1' + AND + query_string_parameters IS NULL + AND + associated_db_id IS NULL;"; + + $make_index_page_mapping_historical_result = $db->Execute($make_index_page_mapping_historical_query); + } + + // }}} + + + // {{{ _stripTrailingSlashesFromMappings() + + /** + * Strips any trailing slashes from existing URI mappings, to comply with the new format. + * + * @access protected + * @return none + */ + protected function _stripTrailingSlashesFromMappings() + { + global $db; + + set_time_limit(0); + + $uris_with_trailing_slashes_sql = " + SELECT + uri, + language_id, + current_uri + FROM + " . TABLE_CEON_URI_MAPPINGS . " + WHERE + uri LIKE '%/';"; + + $uris_with_trailing_slashes_result = $db->Execute($uris_with_trailing_slashes_sql); + + while (!$uris_with_trailing_slashes_result->EOF) { + + $uri = $uris_with_trailing_slashes_result->fields['uri']; + + while (substr($uri, -1) == '/') { + $uri = substr($uri, 0, strlen($uri) - 1); + } + + // Don't bother updating this mapping if it was the result of someone having manually added a URI + // mapping for the root of the site! + if (strlen($uri) > 1) { + $strip_trailing_slashes_sql = " + UPDATE + " . TABLE_CEON_URI_MAPPINGS . " + SET + uri = '" . zen_db_input($uri) . "' + WHERE + uri = '" . zen_db_input($uris_with_trailing_slashes_result->fields['uri']) . "' + AND + language_id = '" . + zen_db_input($uris_with_trailing_slashes_result->fields['language_id']) . "' + AND + current_uri = '" . + zen_db_input($uris_with_trailing_slashes_result->fields['current_uri']) . "';"; + + $strip_trailing_slashes_result = $db->Execute($strip_trailing_slashes_sql); + + $this->_actions_performed = true; + } + + $uris_with_trailing_slashes_result->MoveNext(); + } + } + + // }}} + + + // {{{ _DBUserHasPrivilege() + + /** + * Checks if the current database user has a particular privilege type for the store's database. + * + * @access protected + * @param string $privilege_type The type of privilege to be checked for. + * @return boolean Whether or not the current database user has the specified privilege. + */ + protected function _DBUserHasPrivilege($privilege_type) + { + global $db; + + if (isset($_GET['override-db-privileges-check'])) { + // Unfortunately some servers have been found to not return the correct list of privileges! Make things + // easier for the user by allowing an override flag to be used + return true; + } + + $privilege_type = strtoupper($privilege_type); + + $db_user_has_privilege = false; + + $check_user_privileges_sql = "SHOW GRANTS;"; + + $check_user_privileges_result = $db->Execute($check_user_privileges_sql); + + while (!$check_user_privileges_result->EOF) { + // Check each GRANT for the current user to see if it covers the current database and gives the + // specified privilege + foreach ($check_user_privileges_result->fields as $current_grant_string) { + if (preg_match('/GRANT (.*) ON (.*) TO /i', $current_grant_string, $matches)) { + // Get the privilege string + $privilege_string = strtoupper($matches[1]); + + // Extract the database name for this grant string by removing all the characters/strings it + // could be surrounded with or followed by + $database_name = $matches[2]; + + $database_name = str_replace('`', '', $database_name); + $database_name = str_replace("'", '', $database_name); + $database_name = str_replace('.*', '', $database_name); + $database_name = preg_replace('/@.*$/', '', $database_name); + $database_name = str_replace('\_', '_', $database_name); + + if (($database_name == '*' || $database_name == DB_DATABASE) && + (strpos($privilege_string, 'ALL PRIVILEGES') !== false || + strpos($privilege_string, $privilege_type) !== false)) { + // This grant gives the specified privilege for the Zen Cart database, no need to examine + // any others + $db_user_has_privilege = true; + + break 2; + } + } + } + + $check_user_privileges_result->MoveNext(); + } + + return $db_user_has_privilege; + } + + // }}} +} + +// }}} diff --git a/NEUE DATEIEN/DEINADMIN/includes/classes/class.CeonURIMappingInstallationCheck.php b/NEUE DATEIEN/DEINADMIN/includes/classes/class.CeonURIMappingInstallationCheck.php new file mode 100644 index 0000000..1752b26 --- /dev/null +++ b/NEUE DATEIEN/DEINADMIN/includes/classes/class.CeonURIMappingInstallationCheck.php @@ -0,0 +1,3051 @@ + + * @copyright Copyright 2008-2019 Ceon + * @copyright Copyright 2003-2021 Zen Cart Development Team + * @copyright Portions Copyright 2003 osCommerce + * @link http://ceon.net/software/business/zen-cart/uri-mapping + * @license http://www.zen-cart.com/license/2_0.txt GNU Public License V2.0 + * @version $Id: class.CeonURIMappingInstallationCheck.php 2021-06-23 09:45:15Z webchills $ + */ + +/** + * Load in the Ceon URI Mapping Version class so it can be extended + */ +require_once(DIR_WS_CLASSES . 'class.CeonURIMappingVersion.php'); + + +// {{{ CeonURIMappingInstallationCheck + +/** + * Examines the store/server's settings and warns the user of any issues. Builds a minimal RewriteRule which should + * hopefully work with the store, as well as a more comprehensive RewriteRule which should provide better + * integration with other directories that share the store's directory. Checks all the files used by the software + * to make sure that all core file modifications are in place. + * + * @package ceon_uri_mapping + * @author Conor Kerr + * @copyright Copyright 2008-2019 Ceon + * @copyright Copyright 2003-2019 Zen Cart Development Team + * @copyright Portions Copyright 2003 osCommerce + * @link http://ceon.net/software/business/zen-cart/uri-mapping + * @license http://www.zen-cart.com/license/2_0.txt GNU Public License V2.0 + */ +class CeonURIMappingInstallationCheck extends CeonURIMappingVersion +{ + // {{{ properties + + /** + * Maintains a list of any errors found with the store's configuration files. + * + * @var array + * @access protected + */ + protected $_config_files_error_messages = array(); + + /** + * Maintains a list of any errors found with the core files which should have been modified for Ceon URI + * Mapping. + * + * @var array + * @access protected + */ + protected $_modified_core_files_error_messages = array(); + + /** + * Maintains a list of any errors found because files for an old version of Ceon URI Mapping remain in the + * store's filesystem. + * + * @var array + * @access protected + */ + protected $_old_files_dirs_error_messages = array(); + + /** + * Holds the basic example rewrite rule for the store, as built by this instance. + * + * @var string + * @access protected + */ + protected $_basic_rewrite_rule = ''; + + /** + * Holds and example rewrite rule for the store, as built by this instance, which attempts to exclude all + * custom folders the store is using. + * + * @var string + * @access protected + */ + protected $_guestimated_rewrite_rule = ''; + + // }}} + + + // {{{ Class Constructor + + /** + * Creates a new instance of the class. + * + * @access public + */ + public function __construct() + { + parent::__construct(); + + if (!$this->_lookUpInstalledVersion()) { + // Error occurred when attempting to get the version number + } + + if (!$this->_lookUpAutomaticVersionCheckingEnabled()) { + // Error occurred when attempting to get the version number + } + } + + // }}} + + + // {{{ _lookUpAutomaticVersionCheckingEnabled() + + /** + * Checks if the automatic version checking funcitonality is enabled and stores the status in this instance's + * property. + * + * @access protected + * @return boolean True if the check completed without failure, false otherwise. The module not being + * installed yet is not counted as a failure. + */ + protected function _lookUpAutomaticVersionCheckingEnabled() + { + global $db; + + $table_exists_query = 'SHOW TABLES LIKE "' . TABLE_CEON_URI_MAPPING_CONFIGS . '";'; + $table_exists_result = $db->Execute($table_exists_query); + + if (!$table_exists_result->EOF) { + // Database table exists, get version info + + // Only one config currently supported so its ID is hard-coded in the following SQL + $automatic_version_checking_sql = " + SELECT + automatic_version_checking + FROM + " . TABLE_CEON_URI_MAPPING_CONFIGS . " + WHERE + id ='1';"; + + $automatic_version_checking_result = $db->Execute($automatic_version_checking_sql); + + if (!$automatic_version_checking_result->EOF) { + $this->_automatic_version_checking = ($automatic_version_checking_result->fields + ['automatic_version_checking'] == 1 ? true : false); + } + } + + return true; + } + + // }}} + + + // {{{ performChecks() + + /** + * Performs the installation checks, building a list of messages in the appropriate properties of this + * instance, to be used to build the output later. + * + * @access public + * @return none + */ + public function performChecks() + { + // Examine the current installation's configure.php files' settings + $this->_checkConfigureFilesSettings(); + + $this->_checkModifiedCoreFiles(); + + $this->_checkOldFilesDirsRemaining(); + } + + // }}} + + + // {{{ _checkConfigureFilesSettings() + + /** + * Examines the store's configure files to check for common mistakes. Adds the appropriate error messages to + * the main error messages property. + * + * @access protected + * @return none + */ + protected function _checkConfigureFilesSettings() + { + // Check the admin's configure settings first.. they'll already be defined as this is called + // from within the admin + if (preg_match('|^https?://[a-z0-9\-\.]+/.+$|i', HTTP_CATALOG_SERVER)) { + $this->_config_files_error_messages[] = array( + 'initial_desc' => + sprintf(TEXT_ERROR_VALUE_FOR_ADMIN_SERVER_VARIABLE, 'HTTP_CATALOG_SERVER'), + 'current_value' => array( + sprintf(TEXT_CURRENT_INCORRECT_VALUE_FOR_SERVER_VARIABLE, 'HTTP_CATALOG_SERVER', + HTTP_CATALOG_SERVER), + ), + 'extra_desc' => array( + sprintf(TEXT_HTTP_SERVER_VALUES_CANNOT_USE_SUBDIRECTORY, 'HTTP_CATALOG_SERVER'), + sprintf(TEXT_HTTP_SERVER_VALUE_MUST_BE, 'HTTP_CATALOG_SERVER'), + TEXT_HTTP_SERVER_FORMAT_EXAMPLE + ), + 'instructions' => array( + sprintf(TEXT_REMOVE_SUBDIRECTORY_FROM_END, 'HTTP_CATALOG_SERVER'), + sprintf(TEXT_SUBDIRECTORY_SETTINGS_INFO, 'HTTP_CATALOG_SERVER') + ) + ); + } else if (preg_match('|/$|i', HTTP_CATALOG_SERVER)) { + $this->_config_files_error_messages[] = array( + 'initial_desc' => + sprintf(TEXT_ERROR_VALUE_FOR_ADMIN_SERVER_VARIABLE, 'HTTP_CATALOG_SERVER'), + 'current_value' => array( + sprintf(TEXT_CURRENT_INCORRECT_VALUE_FOR_SERVER_VARIABLE, 'HTTP_CATALOG_SERVER', + HTTP_CATALOG_SERVER), + ), + 'extra_desc' => array( + sprintf(TEXT_HTTP_SERVER_VALUES_CANNOT_HAVE_A_SLASH_AT_END, + 'HTTP_CATALOG_SERVER') + ), + 'instructions' => array( + sprintf(TEXT_REMOVE_SLASH_FROM_END, 'HTTP_CATALOG_SERVER') + ) + ); + } + + if (preg_match('|^https://[a-z0-9\-\.]+/.+$|i', HTTPS_CATALOG_SERVER)) { + $this->_config_files_error_messages[] = array( + 'initial_desc' => + sprintf(TEXT_ERROR_VALUE_FOR_ADMIN_SERVER_VARIABLE, 'HTTPS_CATALOG_SERVER'), + 'current_value' => array( + sprintf(TEXT_CURRENT_INCORRECT_VALUE_FOR_SERVER_VARIABLE, + 'HTTPS_CATALOG_SERVER', HTTPS_CATALOG_SERVER), + ), + 'extra_desc' => array( + sprintf(TEXT_HTTP_SERVER_VALUES_CANNOT_USE_SUBDIRECTORY, 'HTTPS_CATALOG_SERVER'), + sprintf(TEXT_HTTPS_SERVER_VALUE_MUST_BE, 'HTTPS_CATALOG_SERVER'), + TEXT_HTTPS_SERVER_FORMAT_EXAMPLE + ), + 'instructions' => array( + sprintf(TEXT_REMOVE_SUBDIRECTORY_FROM_END, 'HTTPS_CATALOG_SERVER'), + sprintf(TEXT_SUBDIRECTORY_SETTINGS_INFO, 'HTTPS_CATALOG_SERVER') + ) + ); + } else if (preg_match('|/$|i', HTTPS_CATALOG_SERVER)) { + $this->_config_files_error_messages[] = array( + 'initial_desc' => + sprintf(TEXT_ERROR_VALUE_FOR_ADMIN_SERVER_VARIABLE, 'HTTPS_CATALOG_SERVER'), + 'current_value' => array( + sprintf(TEXT_CURRENT_INCORRECT_VALUE_FOR_SERVER_VARIABLE, 'HTTPS_CATALOG_SERVER', + HTTPS_CATALOG_SERVER), + ), + 'extra_desc' => array( + sprintf(TEXT_HTTP_SERVER_VALUES_CANNOT_HAVE_A_SLASH_AT_END, + 'HTTPS_CATALOG_SERVER') + ), + 'instructions' => array( + sprintf(TEXT_REMOVE_SLASH_FROM_END, 'HTTPS_CATALOG_SERVER') + ) + ); + } + + + if (!defined('DIR_WS_CATALOG') || strlen(DIR_WS_CATALOG) == 0) { + $this->_config_files_error_messages[] = array( + 'initial_desc' => sprintf(TEXT_ERROR_VALUE_NOT_SPECIFIED_FOR_ADMIN_SERVER_VARIABLE, + 'DIR_WS_CATALOG'), + 'extra_desc' => array( + TEXT_SERVER_VALUE_REQUIRED + ), + 'instructions' => array( + sprintf(TEXT_SET_VALUE_TO_SLASH, 'DIR_WS_CATALOG'), + sprintf(TEXT_SET_VALUE_TO_SUBDIRECTORY_NAME, 'DIR_WS_CATALOG') + ) + ); + } else if (DIR_WS_CATALOG != '/' && (substr(DIR_WS_CATALOG, 0, 1) != '/' + || substr(DIR_WS_CATALOG, -1) != '/')) { + $error_message = array( + 'initial_desc' => + sprintf(TEXT_ERROR_VALUE_FOR_ADMIN_SERVER_VARIABLE, 'DIR_WS_CATALOG'), + 'current_value' => array( + sprintf(TEXT_CURRENT_INCORRECT_VALUE_FOR_SERVER_VARIABLE, 'DIR_WS_CATALOG', DIR_WS_CATALOG), + ) + ); + + if (substr(DIR_WS_CATALOG, 0, 1) != '/' && substr(DIR_WS_CATALOG, -1) != '/') { + $error_message['extra_desc'] = array( + sprintf(TEXT_VALUE_MUST_START_AND_END_WITH_SLASH, 'DIR_WS_CATALOG') + ); + + $error_message['instructions'] = array( + sprintf(TEXT_ADD_A_STARTING_SLASH, 'DIR_WS_CATALOG'), + sprintf(TEXT_ADD_AN_ENDING_SLASH, 'DIR_WS_CATALOG') + ); + } else if (substr(DIR_WS_CATALOG, 0, 1) != '/') { + $error_message['extra_desc'] = array( + sprintf(TEXT_VALUE_MUST_START_WITH_SLASH, 'DIR_WS_CATALOG') + ); + + $error_message['instructions'] = array( + sprintf(TEXT_ADD_A_STARTING_SLASH, 'DIR_WS_CATALOG') + ); + } else if (substr(DIR_WS_CATALOG, -1) != '/') { + $error_message['extra_desc'] = array( + sprintf(TEXT_VALUE_MUST_END_WITH_SLASH, 'DIR_WS_CATALOG') + ); + + $error_message['instructions'] = array( + sprintf(TEXT_ADD_AN_ENDING_SLASH, 'DIR_WS_CATALOG') + ); + } + + $this->_config_files_error_messages[] = $error_message; + } + + if (!defined('DIR_WS_HTTPS_CATALOG') || strlen(DIR_WS_HTTPS_CATALOG) == 0) { + $this->_config_files_error_messages[] = array( + 'initial_desc' => sprintf(TEXT_ERROR_VALUE_NOT_SPECIFIED_FOR_ADMIN_SERVER_VARIABLE, + 'DIR_WS_HTTPS_CATALOG'), + 'extra_desc' => array( + TEXT_SERVER_VALUE_REQUIRED + ), + 'instructions' => array( + sprintf(TEXT_SET_VALUE_TO_SLASH, 'DIR_WS_HTTPS_CATALOG'), + sprintf(TEXT_SET_VALUE_TO_SUBDIRECTORY_NAME, 'DIR_WS_HTTPS_CATALOG') + ) + ); + } else if (DIR_WS_HTTPS_CATALOG != '/' && (substr(DIR_WS_HTTPS_CATALOG, 0, 1) != '/' + || substr(DIR_WS_HTTPS_CATALOG, -1) != '/')) { + $error_message = array( + 'initial_desc' => + sprintf(TEXT_ERROR_VALUE_FOR_ADMIN_SERVER_VARIABLE, 'DIR_WS_HTTPS_CATALOG'), + 'current_value' => array( + sprintf(TEXT_CURRENT_INCORRECT_VALUE_FOR_SERVER_VARIABLE, 'DIR_WS_HTTPS_CATALOG', + DIR_WS_HTTPS_CATALOG), + ) + ); + + if (substr(DIR_WS_HTTPS_CATALOG, 0, 1) != '/' && substr(DIR_WS_HTTPS_CATALOG, -1) != '/') { + $error_message['extra_desc'] = array( + sprintf(TEXT_VALUE_MUST_START_AND_END_WITH_SLASH, 'DIR_WS_HTTPS_CATALOG') + ); + + $error_message['instructions'] = array( + sprintf(TEXT_ADD_A_STARTING_SLASH, 'DIR_WS_HTTPS_CATALOG'), + sprintf(TEXT_ADD_AN_ENDING_SLASH, 'DIR_WS_HTTPS_CATALOG') + ); + } else if (substr(DIR_WS_HTTPS_CATALOG, 0, 1) != '/') { + $error_message['extra_desc'] = array( + sprintf(TEXT_VALUE_MUST_START_WITH_SLASH, 'DIR_WS_HTTPS_CATALOG') + ); + + $error_message['instructions'] = array( + sprintf(TEXT_ADD_A_STARTING_SLASH, 'DIR_WS_HTTPS_CATALOG') + ); + } else if (substr(DIR_WS_HTTPS_CATALOG, -1) != '/') { + $error_message['extra_desc'] = array( + sprintf(TEXT_VALUE_MUST_END_WITH_SLASH, 'DIR_WS_HTTPS_CATALOG') + ); + + $error_message['instructions'] = array( + sprintf(TEXT_ADD_AN_ENDING_SLASH, 'DIR_WS_HTTPS_CATALOG') + ); + } + + $this->_config_files_error_messages[] = $error_message; + } + + if (DIR_WS_CATALOG != DIR_WS_HTTPS_CATALOG) { + $this->_config_files_error_messages[] = array( + 'initial_desc' => sprintf(TEXT_ERROR_ADMIN_HTTP_MUST_MATCH_HTTPS, 'DIR_WS_CATALOG', + 'DIR_WS_HTTPS_CATALOG'), + 'current_value' => array( + sprintf(TEXT_CURRENT_INCORRECT_VALUE_FOR_SERVER_VARIABLE, 'DIR_WS_CATALOG', DIR_WS_CATALOG), + sprintf(TEXT_CURRENT_INCORRECT_VALUE_FOR_SERVER_VARIABLE, + 'DIR_WS_HTTPS_CATALOG', DIR_WS_HTTPS_CATALOG), + ), + 'extra_desc' => array( + TEXT_WHEN_USING_STATIC_URIS_HTTP_MUST_MATCH_HTTPS, + TEXT_SHARED_SSL_CANNOT_BE_USED + ), + 'instructions' => array( + sprintf(TEXT_CHANGE_HTTP_TO_MATCH_HTTPS, 'DIR_WS_CATALOG', + 'DIR_WS_HTTPS_CATALOG'), + TEXT_MAY_MEAN_PURCHASING_SSL_CERTIFICATE + ) + ); + } + + // Now check the store's configure.php file + + // Must load in the text of the file so that its values can be parsed + $store_config_file = @file_get_contents(DIR_FS_CATALOG . DIR_WS_INCLUDES . 'configure.php'); + + if (!$store_config_file || strlen($store_config_file) < 10) { + // Try the folder directly below the current folder + $this->_config_files_error_messages[] = array( + 'initial_desc' => TEXT_ERROR_UNABLE_TO_OPEN_STORE_CONFIGURE_FILE, + 'current_value' => array( + sprintf(TEXT_PATH_TO_STORE_CONFIGURE_FILE, DIR_FS_CATALOG . DIR_WS_INCLUDES . 'configure.php'), + ), + 'instructions' => array( + TEXT_CHECK_PATH_TO_STORE_CONFIGURE_FILE + ) + ); + } else { + // Extract the values for the store's configure.php file + $http_server = null; + $https_server = null; + $dir_ws_catalog = null; + $dir_ws_https_catalog = null; + + if (!preg_match('|HTTP_SERVER[\'"]{1}[^,]*,[^\'"]*[\'"]{1}([^\'"]+)[\'"]{1}|', $store_config_file, + $matches)) { + // Couldn't find HTTP_SERVER value! + } else { + $http_server = $matches[1]; + } + + if (!preg_match('|HTTPS_SERVER[\'"]{1}[^,]*,[^\'"]*[\'"]{1}([^\'"]+)[\'"]{1}|', $store_config_file, + $matches)) { + // Couldn't find HTTPS_SERVER value! + } else { + $https_server = $matches[1]; + } + + if (!preg_match('|DIR_WS_CATALOG[\'"]{1}[^,]*,[^\'"]*[\'"]{1}([^\'"]*)[\'"]{1}|', $store_config_file, + $matches)) { + // Couldn't find DIR_WS_CATALOG value! + } else { + $dir_ws_catalog = $matches[1]; + } + + if (!preg_match('|DIR_WS_HTTPS_CATALOG[\'"]{1}[^,]*,[^\'"]*[\'"]{1}([^\'"]*)[\'"]{1}|', + $store_config_file, $matches)) { + // Couldn't find DIR_WS_HTTPS_CATALOG value! + } else { + $dir_ws_https_catalog = $matches[1]; + } + + if (preg_match('|^https?://[a-z0-9\-\.]+/.+$|i', $http_server)) { + $this->_config_files_error_messages[] = array( + 'initial_desc' => + sprintf(TEXT_ERROR_VALUE_FOR_SERVER_VARIABLE, 'HTTP_SERVER'), + 'current_value' => array( + sprintf(TEXT_CURRENT_INCORRECT_VALUE_FOR_SERVER_VARIABLE, 'HTTP_SERVER', $http_server), + ), + 'extra_desc' => array( + sprintf(TEXT_HTTP_SERVER_VALUES_CANNOT_USE_SUBDIRECTORY, 'HTTP_SERVER'), + sprintf(TEXT_HTTP_SERVER_VALUE_MUST_BE, 'HTTP_SERVER'), + TEXT_HTTP_SERVER_FORMAT_EXAMPLE + ), + 'instructions' => array( + sprintf(TEXT_REMOVE_SUBDIRECTORY_FROM_END, 'HTTP_SERVER'), + sprintf(TEXT_SUBDIRECTORY_SETTINGS_INFO, 'HTTP_SERVER') + ) + ); + } else if (preg_match('|/$|i', $http_server)) { + $this->_config_files_error_messages[] = array( + 'initial_desc' => + sprintf(TEXT_ERROR_VALUE_FOR_SERVER_VARIABLE, 'HTTP_SERVER'), + 'current_value' => array( + sprintf(TEXT_CURRENT_INCORRECT_VALUE_FOR_SERVER_VARIABLE, 'HTTP_SERVER', $http_server), + ), + 'extra_desc' => array( + sprintf(TEXT_HTTP_SERVER_VALUES_CANNOT_HAVE_A_SLASH_AT_END, 'HTTP_SERVER') + ), + 'instructions' => array( + sprintf(TEXT_REMOVE_SLASH_FROM_END, 'HTTP_SERVER') + ) + ); + } + + if (preg_match('|^https://[a-z0-9\-\.]+/.+$|i', $https_server)) { + $this->_config_files_error_messages[] = array( + 'initial_desc' => + sprintf(TEXT_ERROR_VALUE_FOR_SERVER_VARIABLE, 'HTTPS_SERVER'), + 'current_value' => array( + sprintf(TEXT_CURRENT_INCORRECT_VALUE_FOR_SERVER_VARIABLE, 'HTTPS_SERVER', $https_server), + ), + 'extra_desc' => array( + sprintf(TEXT_HTTP_SERVER_VALUES_CANNOT_USE_SUBDIRECTORY, 'HTTPS_SERVER'), + sprintf(TEXT_HTTPS_SERVER_VALUE_MUST_BE, 'HTTPS_SERVER'), + TEXT_HTTPS_SERVER_FORMAT_EXAMPLE + ), + 'instructions' => array( + sprintf(TEXT_REMOVE_SUBDIRECTORY_FROM_END, 'HTTPS_SERVER'), + sprintf(TEXT_SUBDIRECTORY_SETTINGS_INFO, 'HTTPS_SERVER') + ) + ); + } else if (preg_match('|/$|i', $https_server)) { + $this->_config_files_error_messages[] = array( + 'initial_desc' => + sprintf(TEXT_ERROR_VALUE_FOR_SERVER_VARIABLE, 'HTTPS_SERVER'), + 'current_value' => array( + sprintf(TEXT_CURRENT_INCORRECT_VALUE_FOR_SERVER_VARIABLE, 'HTTPS_SERVER', $https_server), + ), + 'extra_desc' => array( + sprintf(TEXT_HTTP_SERVER_VALUES_CANNOT_HAVE_A_SLASH_AT_END, + 'HTTPS_SERVER') + ), + 'instructions' => array( + sprintf(TEXT_REMOVE_SLASH_FROM_END, 'HTTPS_SERVER') + ) + ); + } + + + if (strlen($dir_ws_catalog) == 0) { + $this->_config_files_error_messages[] = array( + 'initial_desc' => sprintf(TEXT_ERROR_VALUE_NOT_SPECIFIED_FOR_SERVER_VARIABLE, + 'DIR_WS_CATALOG'), + 'extra_desc' => array( + TEXT_SERVER_VALUE_REQUIRED + ), + 'instructions' => array( + sprintf(TEXT_SET_VALUE_TO_SLASH, 'DIR_WS_CATALOG'), + sprintf(TEXT_SET_VALUE_TO_SUBDIRECTORY_NAME, 'DIR_WS_CATALOG') + ) + ); + } else if ($dir_ws_catalog != '/' && (substr($dir_ws_catalog, 0, 1) != '/' + || substr($dir_ws_catalog, -1) != '/')) { + $error_message = array( + 'initial_desc' => + sprintf(TEXT_ERROR_VALUE_FOR_SERVER_VARIABLE, 'DIR_WS_CATALOG'), + 'current_value' => array( + sprintf(TEXT_CURRENT_INCORRECT_VALUE_FOR_SERVER_VARIABLE, 'DIR_WS_CATALOG', + $dir_ws_catalog), + ) + ); + + if (substr($dir_ws_catalog, 0, 1) != '/' && substr($dir_ws_catalog, -1) != '/') { + $error_message['extra_desc'] = array( + sprintf(TEXT_VALUE_MUST_START_AND_END_WITH_SLASH, 'DIR_WS_CATALOG') + ); + + $error_message['instructions'] = array( + sprintf(TEXT_ADD_A_STARTING_SLASH, 'DIR_WS_CATALOG'), + sprintf(TEXT_ADD_AN_ENDING_SLASH, 'DIR_WS_CATALOG') + ); + } else if (substr($dir_ws_catalog, 0, 1) != '/') { + $error_message['extra_desc'] = array( + sprintf(TEXT_VALUE_MUST_START_WITH_SLASH, 'DIR_WS_CATALOG') + ); + + $error_message['instructions'] = array( + sprintf(TEXT_ADD_A_STARTING_SLASH, 'DIR_WS_CATALOG') + ); + } else if (substr($dir_ws_catalog, -1) != '/') { + $error_message['extra_desc'] = array( + sprintf(TEXT_VALUE_MUST_END_WITH_SLASH, 'DIR_WS_CATALOG') + ); + + $error_message['instructions'] = array( + sprintf(TEXT_ADD_AN_ENDING_SLASH, 'DIR_WS_CATALOG') + ); + } + + $this->_config_files_error_messages[] = $error_message; + } + + if (strlen($dir_ws_https_catalog) == 0) { + $this->_config_files_error_messages[] = array( + 'initial_desc' => sprintf(TEXT_ERROR_VALUE_NOT_SPECIFIED_FOR_SERVER_VARIABLE, + 'DIR_WS_HTTPS_CATALOG'), + 'extra_desc' => array( + TEXT_SERVER_VALUE_REQUIRED + ), + 'instructions' => array( + sprintf(TEXT_SET_VALUE_TO_SLASH, 'DIR_WS_HTTPS_CATALOG'), + sprintf(TEXT_SET_VALUE_TO_SUBDIRECTORY_NAME, 'DIR_WS_HTTPS_CATALOG') + ) + ); + } else if ($dir_ws_https_catalog != '/' && (substr($dir_ws_https_catalog, 0, 1) != '/' + || substr($dir_ws_https_catalog, -1) != '/')) { + $error_message = array( + 'initial_desc' => + sprintf(TEXT_ERROR_VALUE_FOR_SERVER_VARIABLE, 'DIR_WS_HTTPS_CATALOG'), + 'current_value' => array( + sprintf(TEXT_CURRENT_INCORRECT_VALUE_FOR_SERVER_VARIABLE, 'DIR_WS_HTTPS_CATALOG', + $dir_ws_https_catalog), + ) + ); + + if (substr($dir_ws_https_catalog, 0, 1) != '/' && substr($dir_ws_https_catalog, -1) != '/') { + $error_message['extra_desc'] = array( + sprintf(TEXT_VALUE_MUST_START_AND_END_WITH_SLASH, 'DIR_WS_HTTPS_CATALOG') + ); + + $error_message['instructions'] = array( + sprintf(TEXT_ADD_A_STARTING_SLASH, 'DIR_WS_HTTPS_CATALOG'), + sprintf(TEXT_ADD_AN_ENDING_SLASH, 'DIR_WS_HTTPS_CATALOG') + ); + } else if (substr($dir_ws_https_catalog, 0, 1) != '/') { + $error_message['extra_desc'] = array( + sprintf(TEXT_VALUE_MUST_START_WITH_SLASH, 'DIR_WS_HTTPS_CATALOG') + ); + + $error_message['instructions'] = array( + sprintf(TEXT_ADD_A_STARTING_SLASH, 'DIR_WS_HTTPS_CATALOG') + ); + } else if (substr($dir_ws_https_catalog, -1) != '/') { + $error_message['extra_desc'] = array( + sprintf(TEXT_VALUE_MUST_END_WITH_SLASH, 'DIR_WS_HTTPS_CATALOG') + ); + + $error_message['instructions'] = array( + sprintf(TEXT_ADD_AN_ENDING_SLASH, 'DIR_WS_HTTPS_CATALOG') + ); + } + + $this->_config_files_error_messages[] = $error_message; + } + + if ($dir_ws_catalog != $dir_ws_https_catalog) { + $this->_config_files_error_messages[] = array( + 'initial_desc' => sprintf(TEXT_ERROR_HTTP_MUST_MATCH_HTTPS, 'DIR_WS_CATALOG', + 'DIR_WS_HTTPS_CATALOG'), + 'current_value' => array( + sprintf(TEXT_CURRENT_INCORRECT_VALUE_FOR_SERVER_VARIABLE, 'DIR_WS_CATALOG', + $dir_ws_catalog), + sprintf(TEXT_CURRENT_INCORRECT_VALUE_FOR_SERVER_VARIABLE, + 'DIR_WS_HTTPS_CATALOG', $dir_ws_https_catalog), + ), + 'extra_desc' => array( + TEXT_WHEN_USING_STATIC_URIS_HTTP_MUST_MATCH_HTTPS, + TEXT_SHARED_SSL_CANNOT_BE_USED + ), + 'instructions' => array( + sprintf(TEXT_CHANGE_HTTP_TO_MATCH_HTTPS, 'DIR_WS_CATALOG', + 'DIR_WS_HTTPS_CATALOG'), + TEXT_MAY_MEAN_PURCHASING_SSL_CERTIFICATE + ) + ); + } + + // Make sure admin configure file values match store side's values + + } + } + + // }}} + + + // {{{ _checkModifiedCoreFiles() + + /** + * Examines the store's files to check if any of the Ceon URI Mapping core file modifications are missing, or + * if any old modificiations haven't been updated to the new ones. Adds the appropriate error messages to the + * main error messages property. + * + * @access protected + * @return none + */ + protected function _checkModifiedCoreFiles() + { + // Main variable holds the list of files to check and information about the modifications expected to be + // found in each, in order for Ceon URI Mapping's functionality to have been correctly installed + $core_file_modifications = array(); + + $core_file_modifications[] = array( + 'path' => DIR_WS_INCLUDES . 'javascript_loader.php', + 'num_mods' => 1, + 'new_snippets' => array( + array( + '|1 of 1 --\>[\s]+\<\?php if \(file_exists\(DIR_WS_INCLUDES \. \'ceon_uri_mapping_javascript\.php\'\)\) require DIR_WS_INCLUDES \. \'ceon_uri_mapping_javascript\.php\'; \?\>|', +/* 'require DIR_WS_INCLUDES \. \'ceon_uri_mapping_javascript.php\';'*/ + ), + ), + 'min_version_add' => array( + '1.5.6' + ), + 'min_version_rem' => array( + '1.5.7' + ), + ); + + $core_file_modifications[] = array( + 'path' => DIR_WS_FUNCTIONS . 'general.php', + 'num_mods' => 2, + 'new_snippets' => array( + array( + '|1 of 2[\s]+global \$ceon_uri_mapping_admin;|', + '$ceon_uri_mapping_admin->deleteURIMappings($selections);' + ), + array( + '|2 of 2[\s]+global \$ceon_uri_mapping_admin, \$ceon_uri_mapping_product_pages,|', + '$ceon_uri_mapping_admin->deleteURIMappings($selections);' + ) + ), + 'old_snippets' => array( + 'MAPPING |2 of 2[\s]+global $ceon_uri_mapping_admin;', + '|main_page = \'" \. FILENAME_DEFAULT \. "\'[\s]+AND[\s]+associated_db_id = \'" \. \(int\) \$category_id|', + '|main_page = \'" \. zen_db_input\(FILENAME_TELL_A_FRIEND\) \. "\'[\s]+\)[\s]+AND[\s]+associated_db_id = \'" \. \(int\) \$product_id|' + ), + 'min_version_rem' => array( + '1.5.5' + ), + ); + + $core_file_modifications[] = array( + 'path' => DIR_WS_FUNCTIONS . 'html_output.php', + 'num_mods' => 1, + 'new_snippets' => array( + array( + '|1 of 1[\s]+if \(defined\(\'CEON_URI_MAPPING_ENABLED\'\)|', + '|return \$ceon_uri_mapping_href_link_builder\->getHREFLink\(\);|' + ) + ), + 'min_version_rem' => array( + '1.5.5' + ), + ); + + // As the product types share their modifications, a basic template is defined here to save wasted coding + $product_type_collect_info_modifications = array( + 'num_mods' => 2, + 'new_snippets' => array( + array( + 'require_once(DIR_WS_CLASSES . \'class.CeonURIMappingAdminProductPages.php\');', + '$ceon_uri_mapping_admin->collectInfoHandler();' + ), + array( + 'echo $ceon_uri_mapping_admin->collectInfoBuildURIMappingFields();' + ) + ), + 'old_snippets' => array( + '$uri_mapping_autogen = false;', + 'echo ceon_uri_mapping_build_product_uri_fields($prev_uri_mappings, $uri_mappings,' + ), + 'min_version_rem' => array( + '1.5.6' + ), + ); + + $product_type_preview_info_modifications = array( + 'num_mods' => 4, + 'new_snippets' => array( + array( + '|1 of 4[\s]+require_once\(DIR_WS_CLASSES \. \'class\.CeonURIMappingAdminProd|', + '$ceon_uri_mapping_admin->productPreviewProcessSubmission($current_category_id)' + ), + array( + '|2 of 4[\s]+require_once\(DIR_WS_CLASSES \. \'class\.CeonURIMappingAdminProd|', + '$ceon_uri_mapping_admin->productPreviewInitialLoad((int) $_GET[\'pID\'],' + ), + array( + '$ceon_uri_mapping_admin->productPreviewOutputURIMappingInfo($languages[$i]);' + ), + array( + 'echo $ceon_uri_mapping_admin->productPreviewBuildHiddenFields();' + ) + ), + 'old_snippets' => array( + '$prev_uri_mappings = $_POST[\'prev_uri_mappings\'];', + '$prev_uri_mappings = array();', + 'if (!is_null($uri_mappings[$languages[$i][\'id\']]) &&', + 'echo zen_draw_hidden_field(\'prev_uri_mappings' + ), + 'min_version_rem' => array( + '1.5.6' + ), + ); + + $product_types = array( + 'document_general', + 'document_product', + 'product', + 'product_book', + 'product_free_shipping', + 'product_music' + ); + + foreach ($product_types as $product_type) { + // Add the collect info modifications information for this product type to the main array + $current_product_collect_info_modifications = $product_type_collect_info_modifications; + + $current_product_collect_info_modifications['path'] = + DIR_WS_MODULES . $product_type . '/' . 'collect_info.php'; + + $core_file_modifications[] = $current_product_collect_info_modifications; + + // Add the preview info modifications information for this product type to the main array + $current_product_preview_info_modifications = $product_type_preview_info_modifications; + + $current_product_preview_info_modifications['path'] = + DIR_WS_MODULES . $product_type . '/' . 'preview_info.php'; + + $core_file_modifications[] = $current_product_preview_info_modifications; + } + + $core_file_modifications[] = array( + 'path' => DIR_WS_MODULES . 'copy_to_confirm.php', + 'num_mods' => 1, + 'new_snippets' => array( + array( + 'require_once(DIR_WS_CLASSES . \'class.CeonURIMappingAdminProductPages.php\');', + '$ceon_uri_mapping_admin->copyToConfirmHandler($products_id_from,' + ) + ), + 'old_snippets' => array( + '$uri_mapping_autogen = (($_POST[\'uri_mapping\'] == \'autogen\')' + ), + 'min_version_rem' => array( + '1.5.6' + ), + ); + + $core_file_modifications[] = array( + 'path' => DIR_WS_MODULES . 'delete_product_confirm.php', + 'num_mods' => 0, + 'num_prev_mods' => 1, + 'old_snippets' => array( + '$db->Execute("DELETE FROM " . TABLE_CEON_URI_MAPPINGS' + ), + 'min_version_rem' => array( + '1.5.6' + ), + ); + + $core_file_modifications[] = array( + 'path' => DIR_WS_MODULES . 'move_product_confirm.php', + 'num_mods' => 1, + 'new_snippets' => array( + array( + 'require_once(DIR_WS_CLASSES . \'class.CeonURIMappingAdminProductPages.php\');', + '$ceon_uri_mapping_admin->moveProductConfirmHandler($products_id, $product_type' + ) + ), + 'old_snippets' => array( + '$uri_mapping_autogen = (($_POST[\'uri_mapping\'] == \'autogen\')' + ), + 'min_version_rem' => array( + '1.5.6' + ), + ); + + $core_file_modifications[] = array( + 'path' => DIR_WS_MODULES . 'sidebox_move_product.php', + 'num_mods' => 1, + 'new_snippets' => array( + array( + 'require_once(DIR_WS_CLASSES . \'class.CeonURIMappingAdminProductPages.php\');', + '$ceon_uri_mapping_admin->addURIMappingFieldsToProductMoveFieldsArray(' + ) + ), + 'old_snippets' => array( + '$uri_mapping_input_fields = ceon_uri_mapping_build_product_move_uri_fields(' + ), + 'min_version_rem' => array( + '1.5.6' + ), + ); + + $core_file_modifications[] = array( + 'path' => DIR_WS_MODULES . 'update_product.php', + 'num_mods' => 1, + 'new_snippets' => array( + array( + 'require_once(DIR_WS_CLASSES . \'class.CeonURIMappingAdminProductPages.php\');', + 'updateProductHandler($products_id, $zc_products->get_handler($product_type));' + ) + ), + 'old_snippets' => array( + '$prev_uri_mapping = trim($_POST[\'prev_uri_mappings' + ), + 'min_version_rem' => array( + '1.5.6' + ), + ); + + $core_file_modifications[] = array( + 'path' => DIR_WS_MODULES . 'product_book/copy_to_confirm.php', + 'num_mods' => 1, + 'new_snippets' => array( + array( + 'require_once(DIR_WS_CLASSES . \'class.CeonURIMappingAdminProductPages.php\');', + '$ceon_uri_mapping_admin->copyToConfirmHandler($products_id_from,' + ) + ), + 'old_snippets' => array( + '$uri_mapping_autogen = (($_POST[\'uri_mapping\'] == \'autogen\')' + ), + 'min_version_rem' => array( + '1.5.6' + ), + ); + + $core_file_modifications[] = array( + 'path' => DIR_WS_MODULES . 'product_book/delete_product_confirm.php', + 'num_mods' => 0, + 'num_prev_mods' => 1, + 'old_snippets' => array( + '$db->Execute("DELETE FROM " . TABLE_CEON_URI_MAPPINGS' + ), + 'min_version_rem' => array( + '1.5.6' + ), + ); + + $core_file_modifications[] = array( + 'path' => DIR_WS_MODULES . 'product_book/update_product.php', + 'num_mods' => 1, + 'new_snippets' => array( + array( + 'require_once(DIR_WS_CLASSES . \'class.CeonURIMappingAdminProductPages.php\');', + 'updateProductHandler($products_id, $zc_products->get_handler($product_type));' + ) + ), + 'old_snippets' => array( + '$prev_uri_mapping = trim($_POST[\'prev_uri_mappings' + ), + 'min_version_rem' => array( + '1.5.6' + ), + ); + + $core_file_modifications[] = array( + 'path' => DIR_WS_MODULES . 'product_music/copy_to_confirm.php', + 'num_mods' => 1, + 'new_snippets' => array( + array( + 'require_once(DIR_WS_CLASSES . \'class.CeonURIMappingAdminProductPages.php\');', + '$ceon_uri_mapping_admin->copyToConfirmHandler($products_id_from,' + ) + ), + 'old_snippets' => array( + '$uri_mapping_autogen = (($_POST[\'uri_mapping\'] == \'autogen\')' + ), + 'min_version_rem' => array( + '1.5.6' + ), + ); + + $core_file_modifications[] = array( + 'path' => DIR_WS_MODULES . 'product_music/delete_product_confirm.php', + 'num_mods' => 0, + 'num_prev_mods' => 1, + 'old_snippets' => array( + '$db->Execute("DELETE FROM " . TABLE_CEON_URI_MAPPINGS' + ), + 'min_version_rem' => array( + '1.5.6' + ), + ); + + $core_file_modifications[] = array( + 'path' => DIR_WS_MODULES . 'product_music/update_product.php', + 'num_mods' => 1, + 'new_snippets' => array( + array( + 'require_once(DIR_WS_CLASSES . \'class.CeonURIMappingAdminProductPages.php\');', + 'updateProductHandler($products_id, $zc_products->get_handler($product_type));' + ) + ), + 'old_snippets' => array( + '$prev_uri_mapping = trim($_POST[\'prev_uri_mappings' + ), + 'min_version_rem' => array( + '1.5.6' + ), + ); + + $core_file_modifications[] = array( + 'path' => 'categories.php', + 'num_mods' => 3, + 'new_snippets' => array( + array( + '|1 of 3[\s]+require_once\(DIR_WS_CLASSES \. \'class\.CeonURIMappingAdminCate|', + '$ceon_uri_mapping_admin->insertUpdateHandler($categories_id, $current_category' + ), + array( + '|2 of 3[\s]+require_once\(DIR_WS_CLASSES \. \'class\.CeonURIMappingAdminCate|', + '$ceon_uri_mapping_admin->addURIMappingFieldsToAddCategoryFieldsArray();' + ), + array( + '|3 of 3[\s]+require_once\(DIR_WS_CLASSES \. \'class\.CeonURIMappingAdminCate|', + '$ceon_uri_mapping_admin->addURIMappingFieldsToEditCategoryFieldsArray(' + ) + ), + 'old_snippets' => array( + '$uri_mapping_autogen = (isset($_POST[\'uri_mapping_autogen', + '$db->Execute("DELETE FROM " . TABLE_CEON_URI_MAPPINGS . "', + '$db->Execute("DELETE FROM " . TABLE_CEON_URI_MAPPINGS . "', + '// New category doesn\'t have any previous URI mappings', + '$prev_uri_mappings_sql = "' + ), + 'min_version_rem' => array( + '1.5.6' + ), + ); + + $core_file_modifications[] = array( + 'path' => 'document_general.php', + 'num_mods' => 3, + 'new_snippets' => array( + array( + '|1 of 3[\s]+require_once\(DIR_WS_CLASSES \. \'class\.CeonURIMappingAdminCate|', + '$ceon_uri_mapping_admin->addURIMappingFieldsToAddCategoryFieldsArray();' + ), + array( + '|2 of 3[\s]+require_once\(DIR_WS_CLASSES \. \'class\.CeonURIMappingAdminCate|', + '$ceon_uri_mapping_admin->addURIMappingFieldsToEditCategoryFieldsArray(' + ), + array( + 'require_once(DIR_WS_CLASSES . \'class.CeonURIMappingAdminProductPages.php\');', + '$ceon_uri_mapping_admin->addURIMappingFieldsToProductCopyFieldsArray((int) $_G' + ) + ), + 'min_version_rem' => array( + '1.5.6' + ), + ); + + $core_file_modifications[] = array( + 'path' => 'document_product.php', + 'num_mods' => 3, + 'new_snippets' => array( + array( + '|1 of 3[\s]+require_once\(DIR_WS_CLASSES \. \'class\.CeonURIMappingAdminCate|', + '$ceon_uri_mapping_admin->addURIMappingFieldsToAddCategoryFieldsArray();' + ), + array( + '|2 of 3[\s]+require_once\(DIR_WS_CLASSES \. \'class\.CeonURIMappingAdminCate|', + '$ceon_uri_mapping_admin->addURIMappingFieldsToEditCategoryFieldsArray(' + ), + array( + 'require_once(DIR_WS_CLASSES . \'class.CeonURIMappingAdminProductPages.php\');', + '$ceon_uri_mapping_admin->addURIMappingFieldsToProductCopyFieldsArray((int) $_G' + ) + ), + 'min_version_rem' => array( + '1.5.6' + ), + ); + + $core_file_modifications[] = array( + 'path' => 'ezpages.php', + 'num_mods' => 4, + 'new_snippets' => array( + array( + '|1 of 4[\s]+require_once\(DIR_WS_CLASSES \. \'class\.CeonURIMappingAdminEZPa|', + '$ceon_uri_mapping_admin->insertUpdateHandler($pages_id,' + ), + array( + '|2 of 4[\s]+require_once\(DIR_WS_CLASSES \. \'class\.CeonURIMappingAdminEZPa|', + '$ceon_uri_mapping_admin->deleteConfirmHandler($pages_id);' + ), + array( + '|3 of 4[\s]+require_once\(DIR_WS_CLASSES \. \'class\.CeonURIMappingAdminEZPa|', + '$ceon_uri_mapping_admin->configureEnvironment();' + ), + array( + 'echo $ceon_uri_mapping_admin->buildEZPageURIMappingFields();' + ) + ), + 'old_snippets' => array( + '$uri_mapping_autogen = (isset($_POST[\'uri_mapping_autogen', + '$db->Execute("DELETE FROM " . TABLE_CEON_URI_MAPPINGS . "', + '$uri_mapping_autogen = false;', + 'echo ceon_uri_mapping_build_ez_page_uri_fields($prev_uri_mappings, $uri_mappings,' + ), + 'min_version_rem' => array( + '1.5.6' + ), + ); + + $core_file_modifications[] = array( + 'path' => 'manufacturers.php', + 'num_mods' => 4, + 'new_snippets' => array( + array( + '|1 of 4[\s]+require_once\(DIR_WS_CLASSES \. \'class\.CeonURIMappingAdminManu|', + '$ceon_uri_mapping_admin->insertSaveHandler((int) $manufacturers_id, $manufactu' + ), + array( + '|2 of 4[\s]+require_once\(DIR_WS_CLASSES \. \'class\.CeonURIMappingAdminManu|', + '$ceon_uri_mapping_admin->deleteConfirmHandler((int) $manufacturers_id);' + ), + array( + '|3 of 4[\s]+require_once\(DIR_WS_CLASSES \. \'class\.CeonURIMappingAdminManu|', + '$ceon_uri_mapping_admin->addURIMappingFieldsToAddManufacturerFieldsArray();' + ), + array( + '|4 of 4[\s]+require_once\(DIR_WS_CLASSES \. \'class\.CeonURIMappingAdminManu|', + '$ceon_uri_mapping_admin->addURIMappingFieldsToEditManufacturerFieldsArray(' + ) + ), + 'old_snippets' => array( + '$uri_mapping_autogen = (isset($_POST[\'uri_mapping_autogen', + '$db->Execute("DELETE FROM " . TABLE_CEON_URI_MAPPINGS . "', + '// New manufacturer doesn\'t have any previous URI mappings', + '$prev_uri_mappings_sql = "' + ), + 'min_version_rem' => array( + '1.5.6' + ), + ); + + $core_file_modifications[] = array( + 'path' => 'product.php', + 'num_mods' => 3, + 'new_snippets' => array( + array( + '|1 of 3[\s]+require_once\(DIR_WS_CLASSES \. \'class\.CeonURIMappingAdminCate|', + '$ceon_uri_mapping_admin->addURIMappingFieldsToAddCategoryFieldsArray();' + ), + array( + '|2 of 3[\s]+require_once\(DIR_WS_CLASSES \. \'class\.CeonURIMappingAdminCate|', + '$ceon_uri_mapping_admin->addURIMappingFieldsToEditCategoryFieldsArray(' + ), + array( + 'require_once(DIR_WS_CLASSES . \'class.CeonURIMappingAdminProductPages.php\');', + '$ceon_uri_mapping_admin->addURIMappingFieldsToProductCopyFieldsArray((int) $_G' + ) + ), + 'old_snippets' => array( + '// New category doesn\'t have any previous URI mappings', + '$prev_uri_mappings_sql = "', + '$uri_mapping_input_fields = ceon_uri_mapping_build_product_copy_uri_fields(' + ), + 'min_version_rem' => array( + '1.5.6' + ), + ); + + $core_file_modifications[] = array( + 'path' => 'product_music.php', + 'num_mods' => 3, + 'new_snippets' => array( + array( + '|1 of 3[\s]+require_once\(DIR_WS_CLASSES \. \'class\.CeonURIMappingAdminCate|', + '$ceon_uri_mapping_admin->addURIMappingFieldsToAddCategoryFieldsArray();' + ), + array( + '|2 of 3[\s]+require_once\(DIR_WS_CLASSES \. \'class\.CeonURIMappingAdminCate|', + '$ceon_uri_mapping_admin->addURIMappingFieldsToEditCategoryFieldsArray(' + ), + array( + 'require_once(DIR_WS_CLASSES . \'class.CeonURIMappingAdminProductPages.php\');', + '$ceon_uri_mapping_admin->addURIMappingFieldsToProductCopyFieldsArray((int) $_G' + ) + ), + 'min_version_rem' => array( + '1.5.6' + ), + ); + + $core_file_modifications[] = array( + 'path' => 'product_free_shipping.php', + 'num_mods' => 3, + 'new_snippets' => array( + array( + '|1 of 3[\s]+require_once\(DIR_WS_CLASSES \. \'class\.CeonURIMappingAdminCate|', + '$ceon_uri_mapping_admin->addURIMappingFieldsToAddCategoryFieldsArray();' + ), + array( + '|2 of 3[\s]+require_once\(DIR_WS_CLASSES \. \'class\.CeonURIMappingAdminCate|', + '$ceon_uri_mapping_admin->addURIMappingFieldsToEditCategoryFieldsArray(' + ), + array( + 'require_once(DIR_WS_CLASSES . \'class.CeonURIMappingAdminProductPages.php\');', + '$ceon_uri_mapping_admin->addURIMappingFieldsToProductCopyFieldsArray((int) $_G' + ) + ), + 'min_version_rem' => array( + '1.5.6' + ), + ); + + $core_file_modifications[] = array( + 'path' => DIR_FS_CATALOG . DIR_WS_FUNCTIONS . 'html_output.php', + 'num_mods' => 1, + 'new_snippets' => array( + array( + 'if (!isset($ceon_uri_mapping_href_link_builder)) {', + 'return $ceon_uri_mapping_href_link_builder->getHREFLink();' + ) + ), + 'old_snippets' => array( + '|1 of [3-4]+[\s]+global \$db|', + 'if (defined(\'CEON_URI_MAPPING_ENABLED\') && CEON_URI_MAPPING_ENABLED == 1) {', + '|3 of 4[\s]+}|', + 'if (strpos($link, \'?\') === false) {' + ), + 'min_version_rem' => array( + '1.5.5' + ), + ); + + $core_file_modifications[] = array( + 'path' => DIR_FS_CATALOG . DIR_WS_INCLUDES . 'init_includes/overrides/init_add_crumbs.php', + 'num_mods' => 2, + 'file_required' => true, + 'new_snippets' => array( + array( + '$typefilter_parameters = \'\';', + 'zen_href_link(FILENAME_DEFAULT, $typefilter_parameters));' + ), + array( + '|2 of 2[\s]+\*/|' + ) + ) + ); + + $core_file_modifications[] = array( + 'path' => DIR_FS_CATALOG . DIR_WS_INCLUDES . 'init_includes/overrides/init_canonical.php', + 'num_mods' => 2, + 'file_required' => true, + 'new_snippets' => array( + array( + 'if (isset($ceon_uri_mapping_canonical_uri)) {' + ), + array( + '|2 of 2[\s]+\}|' + ) + ), + 'old_snippets' => array( + 'if (!isset($ceon_uri_mapping_canonical_uri)) {' + ), + 'min_version_rem' => array( + '1.5.5' + ), + ); + + $core_file_modifications[] = array( + 'path' => DIR_FS_CATALOG . DIR_WS_INCLUDES . 'init_includes/overrides/init_currencies.php', + 'num_mods' => 1, + 'file_required' => true, + 'new_snippets' => array( + array( + 'if (isset($ceon_uri_mapping)) {' + ) + ), + 'min_version_rem' => array( + '1.3.8' + ), + ); + + $core_file_modifications[] = array( + 'path' => DIR_FS_CATALOG . DIR_WS_INCLUDES . 'extra_datafiles/ceon_uri_mapping_sessions_define.php', + 'num_mods' => 0, + 'old_snippets' => array( + 'define(\'CUSTOM_COOKIE_PATH\', \'/\')', + ), + ); + + // Next two checks are for specific Zen Cart versions + $zen_cart_minor_version = (float) substr(PROJECT_VERSION_MINOR, 0, 3); + + // Sessions used root until 1.3.9 + if (PROJECT_VERSION_MAJOR == '1' && $zen_cart_minor_version >= 3.9) { + $core_file_modifications[] = array( + 'path' => DIR_FS_CATALOG . DIR_WS_INCLUDES . + 'init_includes/overrides/init_sessions.php', + 'num_mods' => 1, + 'file_required' => true, + 'new_snippets' => array( + array( + '|for the root[\s]+\$path = \'/\';|' + ) + ), + 'min_version_rem' => array( + '1.5.0' + ), + ); + } + + // html_header.php is only modified for really old Zen Cart versions + if (PROJECT_VERSION_MAJOR == '1' && $zen_cart_minor_version < 3.9) { + global $template_dir; + + $core_file_modifications[] = array( + 'path' => DIR_FS_CATALOG_TEMPLATES . $template_dir . '/common/html_header.php', + 'file_required' => true, + 'num_mods' => 1, + 'new_snippets' => array( + array( + 'if (isset($canonicalLink) && $canonicalLink !=' + ) + ) + ); + } + + // Now that the list of core file modifications info has been built, analyse the store's files to see if + // there are any missing/wrong + // @TODO This doesn't take into account snippets which have the correct start but the wrong end and a + // following snippet has the same start. Both the start and end must match for the snippet to be considered + // matched, and the scan to be moved on + foreach ($core_file_modifications as $core_file_modification) { + $file_source = @file_get_contents($core_file_modification['path']); + + // Ignore files that cannot be found/opened unless specifically told not to + if (!$file_source && isset($core_file_modification['file_required']) && + $core_file_modification['file_required'] && + (isset($core_file_modification['min_version_rem'][0]) ? + (PROJECT_VERSION_MAJOR . '.' . $zen_cart_minor_version) < $core_file_modification['min_version_rem'][0] : + (isset($core_file_modification['min_version_add'][0]) ? + (PROJECT_VERSION_MAJOR . '.' . $zen_cart_minor_version) >= $core_file_modification['min_version_add'][0] : + true))) { + // Let user know that this file must be uploaded and modified + if ($core_file_modification['num_mods'] == 1) { + $this->_modified_core_files_error_messages[] = array( + 'initial_desc' => TEXT_ERROR_FILE_MUST_BE_MODIFIED_BUT_DOES_NOT_EXIST, + 'current_value' => array( + sprintf(TEXT_THE_PATH_TO_THE_FILE_IS, $core_file_modification['path']) + ), + 'instructions' => array( + TEXT_ADD_MISSING_FILE_WITH_MODIFICATIONS + ) + ); + } else { + $this->_modified_core_files_error_messages[] = array( + 'initial_desc' => + TEXT_ERROR_FILE_MUST_HAVE_MULTIPLE_MODS_BUT_DOES_NOT_EXIST, + 'current_value' => array( + sprintf(TEXT_THE_PATH_TO_THE_FILE_IS, $core_file_modification['path']) + ), + 'instructions' => array( + TEXT_ADD_MISSING_FILE_WITH_MODIFICATIONS + ) + ); + } + + continue; + + } else if (!$file_source && + (isset($core_file_modification['min_version_rem'][0]) ? + (PROJECT_VERSION_MAJOR . '.' . $zen_cart_minor_version) < $core_file_modification['min_version_rem'][0] : + (isset($core_file_modification['min_version_add'][0]) ? + (PROJECT_VERSION_MAJOR . '.' . $zen_cart_minor_version) >= $core_file_modification['min_version_add'][0] : + true))) { + continue; + } + + // Check how many of the new modifications are present in the file ///////////////////// + $num_new_code_snippets_present = 0; + + $new_code_snippets_present = array(); + + $new_code_snippets_missing = array(); + + $old_code_snippets_present = array(); + + // Check how many of the old modifications are present in the file + $num_previous_code_snippets_remaining = 0; + + $offset = 0; + + // Need to add check against removed files based on version. + for ($i = 0, $n = (isset($core_file_modification['new_snippets']) ? sizeof($core_file_modification['new_snippets']) : 0); $i < $n; $i++) { + $snippet_start_line = $core_file_modification['new_snippets'][$i][0]; + + $snippet_start_line_pos = strpos($file_source, $snippet_start_line, $offset); + + // Is this a regular expression or a simple string comparison? + if (substr($snippet_start_line, 0, 1) == '|') { + $snippet_start_line_pos = false; + + // Regular expression + if (preg_match($snippet_start_line, $file_source, $matches, PREG_OFFSET_CAPTURE, $offset)) { + $snippet_start_line_pos = $matches[0][1]; + + // The start line is not the regular expression but the string it matched + $snippet_start_line = $matches[0][0]; + } + } + + $snippet_end_line = null; + $snippet_end_line_pos = false; + + // Move the scan on to after this snippet + if ($snippet_start_line_pos !== false) { + $offset_for_end_search = $snippet_start_line_pos + strlen($snippet_start_line); + + if (isset($core_file_modification['new_snippets'][$i][1])) { + $snippet_end_line = $core_file_modification['new_snippets'][$i][1]; + + $snippet_end_line_pos = + strpos($file_source, $snippet_end_line, $offset_for_end_search); + + // Is this a regular expression or a simple string comparison? + if (substr($snippet_end_line, 0, 1) == '|') { + $snippet_end_line_pos = false; + + // Regular expression + if (preg_match($snippet_end_line, $file_source, $matches, PREG_OFFSET_CAPTURE, + $offset_for_end_search)) { + $snippet_end_line_pos = $matches[0][1]; + + // The end line is not the regular expression but the string it + // matched + $snippet_end_line = $matches[0][0]; + } + } + } + } + + if ($snippet_start_line_pos !== false && + (is_null($snippet_end_line) || $snippet_end_line_pos !== false)) { + // Found a snippet. + if (isset($core_file_modification['min_version_rem'][0]) ? + PROJECT_VERSION_MAJOR . '.' . $zen_cart_minor_version < $core_file_modification['min_version_rem'][0] : + (isset($core_file_modification['min_version_add'][0]) ? + (PROJECT_VERSION_MAJOR . '.' . $zen_cart_minor_version) >= $core_file_modification['min_version_add'][0] : + true)) { + $new_code_snippets_present[] = $i + 1; + + $num_new_code_snippets_present++; + } else { + $core_file_modification['num_mods']--; + $num_previous_code_snippets_remaining++; + $old_code_snippets_present[] = $i + 1; + } + + $offset = $snippet_end_line_pos + strlen($snippet_end_line); + + if (is_null($snippet_end_line)) { + $offset = $snippet_start_line_pos + strlen($snippet_start_line); + } + } else { + // new needed snippet is missing. + if (isset($core_file_modification['min_version_rem'][0]) ? + PROJECT_VERSION_MAJOR . '.' . $zen_cart_minor_version < $core_file_modification['min_version_rem'][0] : + (isset($core_file_modification['min_version_add'][0]) ? + (PROJECT_VERSION_MAJOR . '.' . $zen_cart_minor_version) >= $core_file_modification['min_version_add'][0] : + true)) { + $new_code_snippets_missing[] = $i + 1; + } else { + $core_file_modification['num_mods']--; + $old_code_snippets_present[] = $i + 1; + } + } + } + + + $old_code_snippets_remaining = array(); + + $offset = 0; + + for ($i = 0, $n = (isset($core_file_modification['old_snippets']) ? count($core_file_modification['old_snippets']) : 0); $i < $n; $i++) { + $snippet_start_line = $core_file_modification['old_snippets'][$i]; + $snippet_start_line_pos = strpos($file_source, $snippet_start_line, $offset); + + // Is this a regular expression or a simple string comparison? + if (substr($snippet_start_line, 0, 1) == '|') { + $snippet_start_line_pos = false; + + // Regular expression + if (preg_match($snippet_start_line, $file_source, $matches, PREG_OFFSET_CAPTURE, $offset)) { + $snippet_start_line_pos = $matches[0][1]; + + // The start line is not the regular expression but the string it matched + $snippet_start_line = $matches[0][0]; + } + } + + if ($snippet_start_line_pos !== false) { + $num_previous_code_snippets_remaining++; + + // Move the scan on to after this snippet + $offset = $snippet_start_line_pos + strlen($snippet_start_line); + + $old_code_snippets_remaining[] = $i + 1; + } + } + + // Check how many code comment lines are present in the modified core file ///////////// + $num_mod_start_lines_in_file = + preg_match_all('|// BEGIN CEON URI MAPPING ([0-9]{1,2}) of [0-9]{1,2}|', + $file_source, $mod_start_matches, PREG_SET_ORDER); + + $num_mod_end_lines_in_file = preg_match_all('|// END CEON URI MAPPING ([0-9]{1,2}) of [0-9]{1,2}|', + $file_source, $mod_end_matches, PREG_SET_ORDER); + + $num_mod_lines = $num_mod_start_lines_in_file + $num_mod_end_lines_in_file; + + $mod_start_lines_with_missing_end = array(); + $mod_end_lines_with_missing_start = array(); + + foreach ($mod_start_matches as $mod_start_line_info) { + foreach ($mod_end_matches as $mod_end_line_info) { + if ($mod_start_line_info[1] == $mod_end_line_info[1]) { + continue 2; + } + } + + // Reaching this point means no match was found for the current start line + $mod_start_lines_with_missing_end[] = $mod_start_line_info[1]; + } + + foreach ($mod_end_matches as $mod_end_line_info) { + foreach ($mod_start_matches as $mod_start_line_info) { + if ($mod_end_line_info[1] == $mod_start_line_info[1]) { + continue 2; + } + } + + // Reaching this point means no match was found for the current end line + $mod_end_lines_with_missing_start[] = $mod_end_line_info[1]; + } + + + // Analyse the data and warn the user about any mistakes they've made modifying the file + if ($core_file_modification['num_mods'] == 0 && ($num_mod_lines > 0 || + $num_previous_code_snippets_remaining > 0)) { + // This file no longer has modifications but comments have been found in it + if ($num_previous_code_snippets_remaining == 1) { + // Add error message for file which no longer has snippets but has one old one remaining + $this->_modified_core_files_error_messages[] = array( + 'initial_desc' => TEXT_ERROR_MODS_NO_LONGER_ONE_OLD_REMAINS, + 'current_value' => array( + sprintf(TEXT_THE_PATH_TO_THE_FILE_IS, realpath($core_file_modification['path'])) + ), + 'extra_desc' => array( + TEXT_FILE_MODIFICATION_NO_LONGER_REQUIRED + ), + 'instructions' => array( + TEXT_REMOVE_THE_MODIFICATION, + TEXT_ALTERNATIVELY_REPLACE_FILE_TO_REMOVE_MODIFICATIONS + ) + ); + } else if ($num_previous_code_snippets_remaining > 1) { + // Add error message for file which no longer has snippets but has x old ones remaining + $this->_modified_core_files_error_messages[] = array( + 'initial_desc' => sprintf(TEXT_ERROR_MODS_NO_LONGER_X_REMAIN, + $num_previous_code_snippets_remaining), + 'current_value' => array( + sprintf(TEXT_THE_PATH_TO_THE_FILE_IS, realpath($core_file_modification['path'])) + ), + 'extra_desc' => array( + TEXT_FILE_MODIFICATION_NO_LONGER_REQUIRED + ), + 'instructions' => array( + TEXT_REMOVE_THE_MODIFICATIONS, + TEXT_REMOVE_THE_MODIFICATIONS_2, + TEXT_ALTERNATIVELY_REPLACE_FILE_TO_REMOVE_MODIFICATIONS + ) + ); + } else if ($num_mod_lines == 1) { + // Add error message for file which no longer has snippets but has 1 comment remaining + $this->_modified_core_files_error_messages[] = array( + 'initial_desc' => TEXT_ERROR_MODS_NO_LONGER_COMMENT_REMAINS, + 'current_value' => array( + sprintf(TEXT_THE_PATH_TO_THE_FILE_IS, realpath($core_file_modification['path'])) + ), + 'extra_desc' => array( + TEXT_MARKER_COMMENT_FOUND, + TEXT_MARKER_COMMENTS_FOUND_2 + ), + 'instructions' => array( + TEXT_CHECK_MODIFICATIONS_REMOVED_PROPERLY_1_COMMENT, + TEXT_MARKER_COMMENTS_INFO, + TEXT_ALTERNATIVELY_REPLACE_FILE_TO_REMOVE_MODIFICATIONS + ) + ); + } else { + // Add error message for file which no longer has snippets but has x comments remaining + $this->_modified_core_files_error_messages[] = array( + 'initial_desc' => sprintf(TEXT_ERROR_MODS_NO_LONGER_COMMENTS_REMAIN, $num_mod_lines), + 'current_value' => array( + sprintf(TEXT_THE_PATH_TO_THE_FILE_IS, realpath($core_file_modification['path'])) + ), + 'extra_desc' => array( + sprintf(TEXT_MARKER_COMMENTS_FOUND, $num_mod_lines), + TEXT_MARKER_COMMENTS_FOUND_2 + ), + 'instructions' => array( + TEXT_CHECK_MODIFICATIONS_REMOVED_PROPERLY_X_COMMENTS, + TEXT_MARKER_COMMENTS_INFO, + TEXT_ALTERNATIVELY_REPLACE_FILE_TO_REMOVE_MODIFICATIONS + ) + ); + } + } else if ($num_new_code_snippets_present != $core_file_modification['num_mods']) { + if ($num_new_code_snippets_present == 0) { + // None of the new code snippets are present + if ($num_previous_code_snippets_remaining > 0) { + // At least one old snippet remains + if ($core_file_modification['num_mods'] == $num_previous_code_snippets_remaining) { + // Assuming user forgot to update the file + if ($core_file_modification['num_mods'] == 1) { + // Add error message for file with its single snippet still using old code + $this->_modified_core_files_error_messages[] = array( + 'initial_desc' => TEXT_ERROR_OLD_MOD_PRESENT, + 'current_value' => array( + sprintf(TEXT_THE_PATH_TO_THE_FILE_IS, + realpath($core_file_modification['path'])) + ), + 'extra_desc' => array( + TEXT_FILE_MODIFICATION_NEEDS_UPDATING + ), + 'instructions' => array( + TEXT_UPDATE_THE_MODIFICATION, + TEXT_ALTERNATIVELY_REPLACE_FILE_TO_REAPPLY_MODIFICATIONS + ) + ); + } else { + // Add error message for file with all snippets still using old code + $this->_modified_core_files_error_messages[] = array( + 'initial_desc' => sprintf(TEXT_ERROR_X_OLD_MODS_PRESENT, + $core_file_modification['num_mods']), + 'current_value' => array( + sprintf(TEXT_THE_PATH_TO_THE_FILE_IS, + realpath($core_file_modification['path'])) + ), + 'extra_desc' => array( + TEXT_FILE_MODIFICATIONS_NEED_UPDATING + ), + 'instructions' => array( + sprintf(TEXT_UPDATE_THE_MODIFICATIONS, + $num_previous_code_snippets_remaining, + $num_previous_code_snippets_remaining), + TEXT_ALTERNATIVELY_REPLACE_FILE_TO_REAPPLY_MODIFICATIONS + ) + ); + } + } else if ($core_file_modification['num_mods'] == 1) { + // Add error message for file with its single snippet missing but x old snippets + // remaining + $this->_modified_core_files_error_messages[] = array( + 'initial_desc' => TEXT_ERROR_MOD_MISSING_OLD_MODS_PRESENT, + 'current_value' => array( + sprintf(TEXT_THE_PATH_TO_THE_FILE_IS, + realpath($core_file_modification['path'])) + ), + 'extra_desc' => array( + TEXT_FILE_MODIFICATION_NEEDS_APPLYING_OLD_REMOVING + ), + 'instructions' => array( + sprintf(TEXT_REMOVE_X_OLD_MODS_APPLY_NEW, + $num_previous_code_snippets_remaining), + TEXT_ALTERNATIVELY_REPLACE_FILE_TO_REAPPLY_MODIFICATIONS + ) + ); + } else if ($num_previous_code_snippets_remaining == 1) { + // Add error message for file with its x snippets missing but an old snippet remaining + $this->_modified_core_files_error_messages[] = array( + 'initial_desc' => + sprintf(TEXT_ERROR_ALL_X_MODS_MISSING_OLD_MOD_REMAINS, + $core_file_modification['num_mods']), + 'current_value' => array( + sprintf(TEXT_THE_PATH_TO_THE_FILE_IS, + realpath($core_file_modification['path'])) + ), + 'extra_desc' => array( + TEXT_FILE_HAS_BEEN_MODIFIED_NEW_MODS_NEED_APPLYING + ), + 'instructions' => array( + sprintf(TEXT_REMOVE_OLD_MOD_APPLY_X_NEW, $core_file_modification['num_mods']), + TEXT_ALTERNATIVELY_REPLACE_FILE_TO_REAPPLY_MODIFICATIONS + ) + ); + } else { + // Add error message for file with its x snippets missing but x old snippets remaining + $this->_modified_core_files_error_messages[] = array( + 'initial_desc' => + sprintf(TEXT_ERROR_ALL_X_MODS_MISSING_X_OLD_MODS_REMAIN, + $core_file_modification['num_mods'], + $num_previous_code_snippets_remaining), + 'current_value' => array( + sprintf(TEXT_THE_PATH_TO_THE_FILE_IS, + realpath($core_file_modification['path'])) + ), + 'extra_desc' => array( + TEXT_FILE_HAS_BEEN_MODIFIED_NEW_MODS_NEED_APPLYING + ), + 'instructions' => array( + sprintf(TEXT_REMOVE_X_OLD_MODS_APPLY_X_NEW, + $num_previous_code_snippets_remaining, + $core_file_modification['num_mods']), + TEXT_ALTERNATIVELY_REPLACE_FILE_TO_REAPPLY_MODIFICATIONS + ) + ); + } + } else if ($num_mod_lines > 0) { + // Although no modifications have been found, comment(s) are in the file + if ($core_file_modification['num_mods'] == 1) { + // Add error message for file with its single snippet missing but x comments found + $this->_modified_core_files_error_messages[] = array( + 'initial_desc' => sprintf(TEXT_ERROR_MOD_MISSING_X_COMMENTS_PRESENT, + $num_mod_lines), + 'current_value' => array( + sprintf(TEXT_THE_PATH_TO_THE_FILE_IS, + realpath($core_file_modification['path'])) + ), + 'extra_desc' => array( + TEXT_FILE_HAS_BEEN_MODIFIED_SOMEHOW_MOD_MISSING + ), + 'instructions' => array( + TEXT_CHECK_FILE_APPLY_MOD, + TEXT_ALTERNATIVELY_REPLACE_FILE_TO_REAPPLY_MODIFICATIONS + ) + ); + } else { + // Add error message for core file not having been modified but comment(s) found + $this->_modified_core_files_error_messages[] = array( + 'initial_desc' => sprintf(TEXT_ERROR_ALL_X_MODS_MISSING_X_COMMENTS_PRESENT, + $core_file_modification['num_mods'], $num_mod_lines), + 'current_value' => array( + sprintf(TEXT_THE_PATH_TO_THE_FILE_IS, + realpath($core_file_modification['path'])) + ), + 'extra_desc' => array( + TEXT_FILE_HAS_BEEN_MODIFIED_SOMEHOW_MODS_MISSING + ), + 'instructions' => array( + sprintf(TEXT_CHECK_FILE_APPLY_MODS, $core_file_modification['num_mods']), + TEXT_ALTERNATIVELY_REPLACE_FILE_TO_REAPPLY_MODIFICATIONS + ) + ); + } + } else { + // There have been no core file modifications for this file at all + if ($core_file_modification['num_mods'] == 1) { + // Add error message for core file not having been modified, with snippet not having + // been added + $this->_modified_core_files_error_messages[] = array( + 'initial_desc' => TEXT_ERROR_MOD_MISSING, + 'current_value' => array( + sprintf(TEXT_THE_PATH_TO_THE_FILE_IS, + realpath($core_file_modification['path'])) + ), + 'instructions' => array( + TEXT_APPLY_MOD, + TEXT_ALTERNATIVELY_REPLACE_FILE_TO_APPLY_MODIFICATIONS + ) + ); + } else { + // Add error message for core file not having been modified, with x + // snippets not having been added + $this->_modified_core_files_error_messages[] = array( + 'initial_desc' => sprintf(TEXT_ERROR_X_MODS_MISSING, + $core_file_modification['num_mods']), + 'current_value' => array( + sprintf(TEXT_THE_PATH_TO_THE_FILE_IS, + realpath($core_file_modification['path'])) + ), + 'instructions' => array( + sprintf(TEXT_APPLY_X_MODS, $core_file_modification['num_mods']), + TEXT_ALTERNATIVELY_REPLACE_FILE_TO_APPLY_MODIFICATIONS + ) + ); + } + } + } else { + // Some but not all of the new snippets are present + $num_missing_snippets = $core_file_modification['num_mods'] - $num_new_code_snippets_present; + + if ($num_missing_snippets == 1) { + // All but one of the snippets are missing + if ($core_file_modification['num_mods'] == 2) { + // A snippet has been applied but one is missing + if ($num_previous_code_snippets_remaining > 0) { + // At least one old snippet remains + if ($num_previous_code_snippets_remaining == $num_missing_snippets) { + // User may have forgotten to update the other snippet + + // @TODO Try to match up the snippet start and end blocks. In meantime, just + // assuming that only snippet content mistakes have been made + + // Add error message for file with one snippet in place but either one missing + // and/or (an) other still using old code + if ($new_code_snippets_missing[0] == 1) { + // The first modification is missing + $error_desc = TEXT_ERROR_SECOND_MOD_PRESENT_FIRST_MISSING_OLD_MOD_PRESENT; + + $extra_desc = array( + TEXT_COULD_BE_THAT_FIRST_MISSED_OLD_REMAINS, + TEXT_COULD_BE_THAT_FIRST_MOD_MISSED_EXTRA_OLD_REMAINS + ); + } else { + // The second modification is missing + $error_desc = TEXT_ERROR_FIRST_MOD_PRESENT_SECOND_MISSING_OLD_MOD_PRESENT; + + $extra_desc = array( + TEXT_COULD_BE_THAT_SECOND_MISSED_OLD_REMAINS, + TEXT_COULD_BE_THAT_SECOND_MOD_MISSED_EXTRA_OLD_REMAINS + ); + } + + $instructions1 = sprintf(TEXT_CHECK_FILE_APPLY_MISSING_MOD_X, + $new_code_snippets_missing[0]); + + $this->_modified_core_files_error_messages[] = array( + 'initial_desc' => $error_desc, + 'current_value' => array( + sprintf(TEXT_THE_PATH_TO_THE_FILE_IS, + realpath($core_file_modification['path'])) + ), + 'extra_desc' => $extra_desc, + 'instructions' => array( + $instructions1, + TEXT_ALTERNATIVELY_REPLACE_FILE_TO_REAPPLY_MODIFICATIONS + ) + ); + } else { + // Add error message for file with one snippet in place but one missing and x + // old snippets remaining + if ($new_code_snippets_missing[0] == 1) { + // The first modification is missing + $error_desc = sprintf( + TEXT_ERROR_SECOND_MOD_PRESENT_FIRST_MISSING_X_OLD_MODS_PRESENT, + $num_previous_code_snippets_remaining); + + $extra_desc = array( + sprintf(TEXT_COULD_BE_THAT_FIRST_MISSED_X_OLD_REMAIN, + $num_previous_code_snippets_remaining), + sprintf(TEXT_COULD_BE_THAT_FIRST_MOD_MISSED_X_EXTRA_OLD_REMAIN, + $num_previous_code_snippets_remaining) + ); + } else { + // The second modification is missing + $error_desc = sprintf( + TEXT_ERROR_FIRST_MOD_PRESENT_SECOND_MISSING_X_OLD_MODS_PRESENT, + $num_previous_code_snippets_remaining); + + $extra_desc = array( + sprintf(TEXT_COULD_BE_THAT_SECOND_MISSED_X_OLD_REMAIN, + $num_previous_code_snippets_remaining), + sprintf(TEXT_COULD_BE_THAT_SECOND_MOD_MISSED_X_EXTRA_OLD_REMAIN, + $num_previous_code_snippets_remaining) + ); + } + + $instructions1 = sprintf(TEXT_CHECK_FILE_APPLY_MISSING_MOD_X, + $new_code_snippets_missing[0]); + + $this->_modified_core_files_error_messages[] = array( + 'initial_desc' => $error_desc, + 'current_value' => array( + sprintf(TEXT_THE_PATH_TO_THE_FILE_IS, + realpath($core_file_modification['path'])) + ), + 'extra_desc' => $extra_desc, + 'instructions' => array( + $instructions1, + TEXT_ALTERNATIVELY_REPLACE_FILE_TO_REAPPLY_MODIFICATIONS + ) + ); + } + } else { + // Add error message for file with one snippet in place but one missing + + if ($new_code_snippets_missing[0] == 1) { + // The first modification is missing + $error_desc = TEXT_ERROR_SECOND_MOD_PRESENT_FIRST_MISSING; + } else { + // The second modification is missing + $error_desc = TEXT_ERROR_FIRST_MOD_PRESENT_SECOND_MISSING; + } + + $this->_modified_core_files_error_messages[] = array( + 'initial_desc' => $error_desc, + 'current_value' => array( + sprintf(TEXT_THE_PATH_TO_THE_FILE_IS, + realpath($core_file_modification['path'])) + ), + 'instructions' => array( + sprintf(TEXT_CHECK_FILE_APPLY_MISSING_MOD_X, + $new_code_snippets_missing[0]), + TEXT_ALTERNATIVELY_REPLACE_FILE_TO_APPLY_MODIFICATIONS + ) + ); + } + } else { + // Several snippets have been applied but one is missing + + // Build a description of the list of modifications which have been made successfully + if (count($new_code_snippets_present) == 2) { + $list_of_new_code_snippets_present = + implode(' & ', $new_code_snippets_present); + } else { + $list_of_new_code_snippets_present = implode(', ', $new_code_snippets_present); + + // Replace last comma with an ampersand + $last_comma_pos = strrpos($list_of_new_code_snippets_present, ','); + + $list_of_new_code_snippets_present = substr( + $list_of_new_code_snippets_present, 0, $last_comma_pos) . ' & ' . + substr($list_of_new_code_snippets_present, $last_comma_pos + 1, + strlen($list_of_new_code_snippets_present) - 1); + } + + if ($num_previous_code_snippets_remaining > 0) { + // At least one old snippet remains + if ($num_previous_code_snippets_remaining == $num_missing_snippets) { + // User may have forgotten to update the final snippet + + // Add error message for file with x snippets in place but either one missing + // and/or (an) other still using old code + $this->_modified_core_files_error_messages[] = array( + 'initial_desc' => sprintf( + TEXT_ERROR_X_MODS_PRESENT_MOD_X_MISSING_OLD_MOD_PRESENT, + $core_file_modification['num_mods'], + $list_of_new_code_snippets_present, $new_code_snippets_missing[0]), + 'current_value' => array( + sprintf(TEXT_THE_PATH_TO_THE_FILE_IS, + realpath($core_file_modification['path'])) + ), + 'extra_desc' => array( + sprintf(TEXT_COULD_BE_THAT_MOD_X_MISSED_OLD_REMAINS, + $list_of_new_code_snippets_present, $new_code_snippets_missing[0]), + sprintf(TEXT_COULD_BE_THAT_MOD_X_MISSED_EXTRA_OLD_REMAINS, + $list_of_new_code_snippets_present, $new_code_snippets_missing[0]) + ), + 'instructions' => array( + sprintf(TEXT_CHECK_FILE_APPLY_MISSING_MOD_X, + $new_code_snippets_missing[0]), + TEXT_ALTERNATIVELY_REPLACE_FILE_TO_REAPPLY_MODIFICATIONS + ) + ); + } else { + // Add error message for file with x snippets in place but one missing and x + // old snippets remaining + $this->_modified_core_files_error_messages[] = array( + 'initial_desc' => sprintf( + TEXT_ERROR_X_MODS_PRESENT_MOD_X_MISSING_X_OLD_MODS_PRESENT, + $core_file_modification['num_mods'], + $list_of_new_code_snippets_present, $new_code_snippets_missing[0], + $num_previous_code_snippets_remaining), + 'current_value' => array( + sprintf(TEXT_THE_PATH_TO_THE_FILE_IS, + realpath($core_file_modification['path'])) + ), + 'extra_desc' => array( + sprintf(TEXT_COULD_BE_THAT_X_MODS_MADE_X_OLD_REMAIN_MOD_X_MISSED, + $list_of_new_code_snippets_present, + $num_previous_code_snippets_remaining, + $new_code_snippets_missing[0]), + sprintf(TEXT_COULD_BE_THAT_X_MODS_MADE_MOD_MISSED_X_EXTRA_OLD_REMAIN, + $list_of_new_code_snippets_present, $new_code_snippets_missing[0], + $num_previous_code_snippets_remaining) + ), + 'instructions' => array( + sprintf(TEXT_CHECK_FILE_APPLY_MISSING_MOD_X, + $new_code_snippets_missing[0]), + TEXT_ALTERNATIVELY_REPLACE_FILE_TO_REAPPLY_MODIFICATIONS + ) + ); + } + } else { + // Add error message for file with x snippets in place but one missing + $this->_modified_core_files_error_messages[] = array( + 'initial_desc' => sprintf(TEXT_ERROR_X_MODS_PRESENT_MOD_X_MISSING, + $core_file_modification['num_mods'], $list_of_new_code_snippets_present, + $new_code_snippets_missing[0]), + 'current_value' => array( + sprintf(TEXT_THE_PATH_TO_THE_FILE_IS, + realpath($core_file_modification['path'])) + ), + 'instructions' => array( + sprintf(TEXT_APPLY_MISSING_MOD_X, $new_code_snippets_missing[0]), + TEXT_ALTERNATIVELY_REPLACE_FILE_TO_REAPPLY_MODIFICATIONS + ) + ); + } + } + } else { + // 2 or more of the required snippets are missing + $num_applied_snippets = $core_file_modification['num_mods'] - $num_missing_snippets; + + // Build a description of the list of modifications which are missing + if (count($new_code_snippets_missing) == 2) { + $list_of_new_code_snippets_missing = implode(' & ', $new_code_snippets_missing); + + $list_of_new_code_snippets_missing_or = implode(' ' . TEXT_OR . ' ', + $new_code_snippets_missing); + } else { + $list_of_new_code_snippets_missing = implode(', ', $new_code_snippets_missing); + + // Replace last comma with an ampersand + $last_comma_pos = strrpos($list_of_new_code_snippets_missing, ','); + + $list_of_new_code_snippets_missing = + substr($list_of_new_code_snippets_missing, 0, $last_comma_pos) . ' & ' . + substr($list_of_new_code_snippets_missing, $last_comma_pos + 1, + strlen($list_of_new_code_snippets_missing) - 1); + + $list_of_new_code_snippets_missing_or = str_replace('&', TEXT_OR, + $list_of_new_code_snippets_missing); + } + + if ($num_applied_snippets == 1) { + // A snippet has been applied but the rest are missing + if ($num_previous_code_snippets_remaining > 0) { + // At least one old snippet remains + if ($num_previous_code_snippets_remaining == $num_applied_snippets) { + // User may have forgotten to update the other snippets + + // Add error message for file with one snippet in place but x missing and/or 1 + // other still using old code + $this->_modified_core_files_error_messages[] = array( + 'initial_desc' => sprintf( + TEXT_ERROR_MOD_X_PRESENT_X_MODS_MISSING_OLD_MOD_PRESENT, + $core_file_modification['num_mods'], $new_code_snippets_present[0], + $list_of_new_code_snippets_missing), + 'current_value' => array( + sprintf(TEXT_THE_PATH_TO_THE_FILE_IS, + realpath($core_file_modification['path'])) + ), + 'extra_desc' => array( + sprintf(TEXT_COULD_BE_THAT_MOD_X_MADE_MODS_X_MISSED_OLD_REMAINS, + $new_code_snippets_present[0], $list_of_new_code_snippets_missing, + $list_of_new_code_snippets_missing_or), + sprintf(TEXT_COULD_BE_THAT_MOD_X_MADE_MODS_X_MISSED_EXTRA_OLD_REMAINS, + $new_code_snippets_present[0], $list_of_new_code_snippets_missing) + ), + 'instructions' => array( + sprintf(TEXT_CHECK_FILE_APPLY_MISSING_MODS_X, + $list_of_new_code_snippets_missing), + TEXT_ALTERNATIVELY_REPLACE_FILE_TO_REAPPLY_MODIFICATIONS + ) + ); + } else { + // Add error message for file with one snippet in place but x missing and x old + // snippets remaining + $this->_modified_core_files_error_messages[] = array( + 'initial_desc' => sprintf( + TEXT_ERROR_MOD_X_PRESENT_X_MODS_MISSING_X_OLD_MODS_PRESENT, + $core_file_modification['num_mods'], $new_code_snippets_present[0], + $list_of_new_code_snippets_missing, + $num_previous_code_snippets_remaining), + 'current_value' => array( + sprintf(TEXT_THE_PATH_TO_THE_FILE_IS, + realpath($core_file_modification['path'])) + ), + 'extra_desc' => array( + sprintf(TEXT_COULD_BE_THAT_MOD_X_MADE_MODS_X_MISSED_X_OLD_REMAIN, + $new_code_snippets_present[0], $list_of_new_code_snippets_missing, + $num_previous_code_snippets_remaining, + $list_of_new_code_snippets_missing_or), + sprintf(TEXT_COULD_BE_THAT_MOD_X_MADE_MODS_X_MISSED_X_EXTRA_OLD_REMAIN, + $new_code_snippets_present[0], $list_of_new_code_snippets_missing, + $num_previous_code_snippets_remaining) + ), + 'instructions' => array( + sprintf(TEXT_CHECK_FILE_APPLY_MISSING_MODS_X, + $list_of_new_code_snippets_missing), + TEXT_ALTERNATIVELY_REPLACE_FILE_TO_REAPPLY_MODIFICATIONS + ) + ); + } + } else { + // Add error message for file with one snippet in place but x missing + $this->_modified_core_files_error_messages[] = array( + 'initial_desc' => sprintf(TEXT_ERROR_MOD_X_PRESENT_X_MODS_MISSING, + $core_file_modification['num_mods'], $new_code_snippets_present[0], + $list_of_new_code_snippets_missing), + 'current_value' => array( + sprintf(TEXT_THE_PATH_TO_THE_FILE_IS, + realpath($core_file_modification['path'])) + ), + 'instructions' => array( + sprintf(TEXT_APPLY_MISSING_MODS_X, $list_of_new_code_snippets_missing), + TEXT_ALTERNATIVELY_REPLACE_FILE_TO_REAPPLY_MODIFICATIONS + ) + ); + } + } else { + // Several snippets have been applied but the rest are missing + + // Build a description of the list of modifications which have been made successfully + if (count($new_code_snippets_present) == 2) { + $list_of_new_code_snippets_present = + implode(' & ', $new_code_snippets_present); + } else { + $list_of_new_code_snippets_present = implode(', ', $new_code_snippets_present); + + // Replace last comma with an ampersand + $last_comma_pos = strrpos($list_of_new_code_snippets_present, ','); + + $list_of_new_code_snippets_present = + substr($list_of_new_code_snippets_present, 0, $last_comma_pos) . ' & ' . + substr($list_of_new_code_snippets_present, $last_comma_pos + 1, + strlen($list_of_new_code_snippets_present) - 1); + } + + if ($num_previous_code_snippets_remaining > 0) { + // At least one old snippet remains + if ($num_previous_code_snippets_remaining == 1) { + // Add error message for file with x snippets in place but x missing and an old + // snippet remaining + $this->_modified_core_files_error_messages[] = array( + 'initial_desc' => sprintf( + TEXT_ERROR_MODS_X_PRESENT_MODS_X_MISSING_OLD_MOD_PRESENT, + $core_file_modification['num_mods'], + $list_of_new_code_snippets_present, + $list_of_new_code_snippets_missing), + 'current_value' => array( + sprintf(TEXT_THE_PATH_TO_THE_FILE_IS, + realpath($core_file_modification['path'])) + ), + 'extra_desc' => array( + sprintf(TEXT_COULD_BE_THAT_MODS_X_MADE_MODS_X_MISSED_OLD_REMAINS, + $list_of_new_code_snippets_present, + $list_of_new_code_snippets_missing, + $list_of_new_code_snippets_missing_or), + sprintf(TEXT_COULD_BE_THAT_MODS_X_MADE_MODS_X_MISSED_EXTRA_OLD_REMAINS, + $list_of_new_code_snippets_present, + $list_of_new_code_snippets_missing) + ), + 'instructions' => array( + sprintf(TEXT_CHECK_FILE_APPLY_MISSING_MODS_X, + $list_of_new_code_snippets_missing), + TEXT_ALTERNATIVELY_REPLACE_FILE_TO_REAPPLY_MODIFICATIONS + ) + ); + } else if ($num_previous_code_snippets_remaining == $num_missing_snippets) { + // Same number of missing snippets as old snippets. User may have forgotten to + // update the other snippets + + // Add error message for file with x snippets in place but x are missing and/or + // x others still using old code + $this->_modified_core_files_error_messages[] = array( + 'initial_desc' => sprintf( + TEXT_ERROR_MODS_X_PRESENT_MODS_X_MISSING_X_OLD_MODS_PRESENT, + $core_file_modification['num_mods'], + $list_of_new_code_snippets_present, $list_of_new_code_snippets_missing, + $num_previous_code_snippets_remaining), + 'current_value' => array( + sprintf(TEXT_THE_PATH_TO_THE_FILE_IS, + realpath($core_file_modification['path'])) + ), + 'extra_desc' => array( + sprintf( + TEXT_COULD_BE_THAT_MODS_X_MADE_MODS_X_MISSED_SAME_X_OLD_REMAIN, + $list_of_new_code_snippets_present, + $list_of_new_code_snippets_missing, + $num_previous_code_snippets_remaining, + $list_of_new_code_snippets_missing), + sprintf( + TEXT_COULD_BE_THAT_MODS_X_MADE_MODS_X_MISSED_EXTRA_X_OLD_REMAIN, + $list_of_new_code_snippets_present, + $list_of_new_code_snippets_missing, + $num_previous_code_snippets_remaining) + ), + 'instructions' => array( + sprintf(TEXT_CHECK_FILE_APPLY_MISSING_MODS_X, + $list_of_new_code_snippets_missing), + TEXT_ALTERNATIVELY_REPLACE_FILE_TO_REAPPLY_MODIFICATIONS + ) + ); + } else { + // Add error message for file with x snippets in place but x missing and x old + // snippets remaining (more old snippets remaining than snippets which are + // missing - very unlikely but meh) + $this->_modified_core_files_error_messages[] = array( + 'initial_desc' => sprintf( + TEXT_ERROR_MODS_X_PRESENT_MODS_X_MISSING_X_OLD_MODS_PRESENT, + $core_file_modification['num_mods'], + $list_of_new_code_snippets_present, + $list_of_new_code_snippets_missing, + $num_previous_code_snippets_remaining), + 'current_value' => array( + sprintf(TEXT_THE_PATH_TO_THE_FILE_IS, + realpath($core_file_modification['path'])) + ), + 'extra_desc' => array( + sprintf(TEXT_COULD_BE_THAT_MODS_X_MADE_MODS_X_MISSED_X_OLD_REMAIN, + $list_of_new_code_snippets_present, + $list_of_new_code_snippets_missing, + $num_previous_code_snippets_remaining), + sprintf( + TEXT_COULD_BE_THAT_MODS_X_MADE_MODS_X_MISSED_EXTRA_X_OLD_REMAIN, + $list_of_new_code_snippets_present, + $list_of_new_code_snippets_missing, + $num_previous_code_snippets_remaining) + ), + 'instructions' => array( + sprintf(TEXT_CHECK_FILE_APPLY_MISSING_MODS_X, + $list_of_new_code_snippets_missing), + TEXT_ALTERNATIVELY_REPLACE_FILE_TO_REAPPLY_MODIFICATIONS + ) + ); + } + } else { + // Add error message for file with x snippets in place but x missing + $this->_modified_core_files_error_messages[] = array( + 'initial_desc' => sprintf(TEXT_ERROR_X_MODS_PRESENT_X_MODS_MISSING, + $core_file_modification['num_mods'], $list_of_new_code_snippets_present, + $list_of_new_code_snippets_missing), + 'current_value' => array( + sprintf(TEXT_THE_PATH_TO_THE_FILE_IS, + realpath($core_file_modification['path'])) + ), + 'instructions' => array( + sprintf(TEXT_APPLY_MISSING_MODS_X, $list_of_new_code_snippets_missing), + TEXT_ALTERNATIVELY_REPLACE_FILE_TO_REAPPLY_MODIFICATIONS + ) + ); + } + } + } + } + } else { + // Correct number of new snippets present. Make sure no old snippets remain + if ($core_file_modification['num_mods'] == 1) { + if ($num_previous_code_snippets_remaining == 1) { + // Add error message for file with its snippet in place but one old snippet remaining + $this->_modified_core_files_error_messages[] = array( + 'initial_desc' => TEXT_ERROR_MOD_PRESENT_OLD_MOD_REMAINS, + 'current_value' => array( + sprintf(TEXT_THE_PATH_TO_THE_FILE_IS, realpath($core_file_modification['path'])) + ), + 'instructions' => array( + TEXT_REMOVE_OLD_MOD, + TEXT_ALTERNATIVELY_REPLACE_FILE_TO_REAPPLY_MODIFICATIONS + ) + ); + } else if ($num_previous_code_snippets_remaining > 0) { + // Add error message for file with its snippet in place but x old snippet remaining + $this->_modified_core_files_error_messages[] = array( + 'initial_desc' => sprintf(TEXT_ERROR_MOD_PRESENT_X_OLD_MODS_REMAIN, + $num_previous_code_snippets_remaining), + 'current_value' => array( + sprintf(TEXT_THE_PATH_TO_THE_FILE_IS, realpath($core_file_modification['path'])) + ), + 'instructions' => array( + TEXT_REMOVE_OLD_MOD, + TEXT_ALTERNATIVELY_REPLACE_FILE_TO_REAPPLY_MODIFICATIONS + ) + ); + } + } else { + if ($num_previous_code_snippets_remaining == 1) { + // Add error message for file with its x snippets in place but one old snippet remaining + $this->_modified_core_files_error_messages[] = array( + 'initial_desc' => sprintf(TEXT_ERROR_X_MODS_PRESENT_OLD_MOD_REMAINS, + $core_file_modification['num_mods']), + 'current_value' => array( + sprintf(TEXT_THE_PATH_TO_THE_FILE_IS, realpath($core_file_modification['path'])) + ), + 'instructions' => array( + TEXT_REMOVE_OLD_MOD, + TEXT_ALTERNATIVELY_REPLACE_FILE_TO_REAPPLY_MODIFICATIONS + ) + ); + } else if ($num_previous_code_snippets_remaining > 0) { + // Add error message for file with its x snippets in place but x old snippet remaining + $this->_modified_core_files_error_messages[] = array( + 'initial_desc' => sprintf(TEXT_ERROR_X_MODS_PRESENT_X_OLD_MODS_REMAIN, + $core_file_modification['num_mods'], $num_previous_code_snippets_remaining), + 'current_value' => array( + sprintf(TEXT_THE_PATH_TO_THE_FILE_IS, realpath($core_file_modification['path'])) + ), + 'instructions' => array( + TEXT_REMOVE_OLD_MOD, + TEXT_ALTERNATIVELY_REPLACE_FILE_TO_REAPPLY_MODIFICATIONS + ) + ); + } + } + } + } + } + + // }}} + + + // {{{ _checkOldFilesDirsRemaining() + + /** + * Examines the store's files to check if any files/directories for an old version of Ceon URI Mapping remain + * in the store's filesystem. Some of these files can cause clashes and therefore PHP errors. Adds the + * appropriate error messages to the main error messages property. + * + * @access protected + * @return none + */ + protected function _checkOldFilesDirsRemaining() + { + // Main variable holds the list of files to check + $old_files_dirs = array(); + + $old_files_dirs[] = array( + 'file' => DIR_WS_CLASSES . 'class.String.php', + ); + + $old_files_dirs[] = array( + 'file' => DIR_WS_CLASSES . 'class.Transliteration.php', + ); + + $old_files_dirs[] = array( + 'dir' => DIR_WS_CLASSES . 'transliteration', + ); + + $old_files_dirs[] = array( + 'file' => DIR_WS_FUNCTIONS . 'extra_functions/ceon_uri_mapping.php', + ); + + $old_files_dirs[] = array( + 'file' => 'ceon_uri_mapping_auto_upgrade.php', + ); + + $old_files_dirs[] = array( + 'file' => DIR_FS_CATALOG . DIR_WS_CLASSES . 'class.String.php', + ); + + $old_files_dirs[] = array( + 'file' => DIR_FS_CATALOG . DIR_WS_CLASSES . 'class.StringHelper.php', + ); + + $old_files_dirs[] = array( + 'file' => DIR_FS_CATALOG . DIR_WS_INCLUDES . 'extra_datafiles/ceon_uri_mapping_config.php', + ); + + $old_files_dirs[] = array( + 'file' => DIR_FS_CATALOG . DIR_WS_FUNCTIONS . 'ceon_uri_mapping_functions.php', + ); + + $old_files_dirs[] = array( + 'file' => DIR_FS_CATALOG . DIR_WS_INCLUDES . 'init_includes/init_ceon_uri_mapping.php', + ); + + $old_files_dirs[] = array( + 'file' => DIR_FS_CATALOG . DIR_WS_INCLUDES . 'templates/template_default/jscript/' . + 'jscript_ceon_uri_mapping_canonical_link_header_tag.php', + ); + + foreach ($old_files_dirs as $old_file_or_dir) { + // Attempt to remove the file/directory + $path = isset($old_file_or_dir['file']) ? $old_file_or_dir['file'] : $old_file_or_dir['dir']; + + if (file_exists($path)) { + if (!is_dir($path)) { + @unlink($path); + } else { + $this->_deleteDir($path); + } + + if (file_exists($path)) { + $this->_old_files_dirs_error_messages[] = array( + 'initial_desc' => (isset($old_file_or_dir['file']) ? + TEXT_ERROR_OLD_FILE_REMAINS : TEXT_ERROR_OLD_DIR_REMAINS), + 'current_value' => array( + sprintf((isset($old_file_or_dir['file']) ? + TEXT_THE_PATH_TO_THE_FILE_IS : TEXT_THE_PATH_TO_THE_DIR_IS), realpath($path)) + ), + 'instructions' => array( + (isset($old_file_or_dir['file']) ? TEXT_DELETE_FILE : TEXT_DELETE_DIR) + ) + ); + } + } + } + } + + // }}} + + + // {{{ _deleteDir() + + /** + * Simply deletes a directory, deleting all files and subdirectories within first, as required by PHP's file + * functions. + * + * @access protected + * @param string $path The path to the directory to be deleted. + * @return none + */ + protected function _deleteDir($path) + { + $dir_obj = dir($path); + + while ($current_file = $dir_obj->read()) { + if ($current_file != '.' && $current_file != '..') { + $current_file = $path . '/' . $current_file; + + if (!is_dir($current_file)) { + @unlink($current_file); + } else { + $this->_deleteDir($current_file); + } + } + } + + $dir_obj->close(); + + @rmdir($path); + } + + // }}} + + + // {{{ getOutput() + + /** + * Builds and returns the output for this instance. + * + * @access public + * @return string The HTML for the installation check's output. + */ + public function getOutput() + { + $this->_buildOutput(); + + return $this->_output; + } + + // }}} + + + // {{{ _buildOutput() + + /** + * Builds the interface for the installation check. + * + * @access protected + * @return none + */ + protected function _buildOutput() + { + // Build the panel this page uses, adding it to the list of panels + $this->_buildMainPanel(); + + // Build the actual output + $this->_buildTabbedPanelMenu(); + + $this->_buildPanels(); + + $this->_buildFooter(); + } + + // }}} + + + // {{{ _getSelectedPanelID() + + /** + * Gets the ID of the panel which should be selected by default when the tabbed panel admin interface is built. + * + * @access protected + * @return string The ID of the selected panel. + */ + protected function _getSelectedPanelID() + { + $selected_panel_id = 'installation-check-panel'; + + return $selected_panel_id; + } + + // }}} + + + // {{{ _buildMainPanel() + + /** + * Builds a panel with a title/intro and, if any errors were encountered in the installation checks, + * subpanel(s) with a list of messages about these installation issues. Also builds a subpanel with example + * rewrite rule for the store. Adds the panel to the list of panels. + * + * @access protected + * @return none + */ + protected function _buildMainPanel() + { + $panel = '
' . "\n"; + + $panel .= '' . TEXT_INSTALLATION_CHECK . '' . "\n"; + + $num_config_files_error_messages = count($this->_config_files_error_messages); + + $num_modified_core_files_error_messages = + count($this->_modified_core_files_error_messages); + + $num_old_files_dirs_error_messages = count($this->_old_files_dirs_error_messages); + + // Build the intro for the panel + $panel .= '
' . "\n"; + + if ($num_config_files_error_messages == 0 && $num_modified_core_files_error_messages == 0 && + $num_old_files_dirs_error_messages == 0) { + $panel .= '

' . TEXT_NO_ERRORS_FOUND_TITLE . '

' . "\n"; + $panel .= '

' . TEXT_NO_ERRORS_FOUND . '

' . "\n"; + $panel .= '

' . TEXT_NO_CHECKS_MADE_FOR_REWRITE_RULE . '

' . "\n"; + + } else if ($num_config_files_error_messages > 0) { + if ($num_config_files_error_messages == 1 && $num_modified_core_files_error_messages == 0) { + $panel .= '

' . TEXT_ERROR_FOUND_TITLE . '

' . "\n"; + } else { + $panel .= '

' . TEXT_ERRORS_FOUND_TITLE . '

' . "\n"; + } + + if ($num_config_files_error_messages == 1) { + $panel .= '

' . + TEXT_CONFIG_FILE_ERROR_SO_NO_REWRITE_RULE_OUTPUT . '

' . "\n"; + $panel .= '

' . TEXT_PLEASE_FIX_CONFIG_FILE_ERRORS . '

' . + "\n"; + } else { + $panel .= '

' . sprintf( + TEXT_CONFIG_FILE_ERRORS_SO_NO_REWRITE_RULE_OUTPUT, + $num_config_files_error_messages) . '

' . "\n"; + $panel .= '

' . TEXT_PLEASE_FIX_CONFIG_FILE_ERROR . '

' . + "\n"; + } + } else { + // Problems have been found with the modified core files or with old files remaining from a previous + // version of the software, but the configuration files are okay, so the example rewrite rule panel can + // be built and shown.. link to it for the user's convenience + if (($num_modified_core_files_error_messages + $num_old_files_dirs_error_messages) == 1) { + $panel .= '

' . TEXT_ERROR_FOUND_TITLE . '

' . "\n"; + } else { + $panel .= '

' . TEXT_ERRORS_FOUND_TITLE . '

' . "\n"; + } + + if ($num_modified_core_files_error_messages == 1) { + $panel .= '

' . TEXT_MODIFIED_CORE_FILE_ERROR . '

' . "\n"; + $panel .= '

' . TEXT_PLEASE_FIX_MODIFIED_CORE_FILE_ERROR . '

' . "\n"; + } else if ($num_modified_core_files_error_messages > 1) { + $panel .= '

' . sprintf(TEXT_MODIFIED_CORE_FILE_ERRORS, + $num_modified_core_files_error_messages) . '

' . "\n"; + $panel .= '

' . TEXT_PLEASE_FIX_MODIFIED_CORE_FILE_ERRORS . '

' . "\n"; + } + + if ($num_old_files_dirs_error_messages == 1) { + $panel .= '

' . TEXT_OLD_FILE_DIR_ERROR . '

' . "\n"; + $panel .= '

' . TEXT_PLEASE_FIX_OLD_FILE_DIR_ERROR . '

' . "\n"; + } else if ($num_old_files_dirs_error_messages > 1) { + $panel .= '

' . sprintf(TEXT_OLD_FILE_DIR_ERRORS, + $num_old_files_dirs_error_messages) . '

' . "\n"; + $panel .= '

' . TEXT_PLEASE_FIX_OLD_FILE_DIR_ERRORS . '

' . "\n"; + } + + $panel .= '' . "\n"; + } + + $panel .= '
' . "\n"; + + // Output the information about any problems found within the store's configuration files + if ($num_config_files_error_messages > 0) { + + $panel .= '
'; + + $panel .= '' . TEXT_STORE_CONFIGURATION_FILES_CHECK . '' . "\n"; + + foreach ($this->_config_files_error_messages as $error_message) { + $panel .= '
' . "\n"; + + $panel .= '

' . $error_message['initial_desc'] . "

\n"; + + if (isset($error_message['current_value'])) { + foreach ($error_message['current_value'] as $current_value) { + $panel .= '

' . $current_value . "

\n"; + } + } + + if (isset($error_message['extra_desc'])) { + $panel .= '
    ' . "\n"; + + foreach ($error_message['extra_desc'] as $extra_desc) { + $panel .= '
  • ' . $extra_desc . "
  • \n"; + } + + $panel .= '
' . "\n"; + } + + if (count($error_message['instructions']) > 0) { + $panel .= '
    ' . "\n"; + + foreach ($error_message['instructions'] as $instruction) { + $panel .= '
  • ' . $instruction . "
  • \n"; + } + + $panel .= '
' . "\n"; + } + + $panel .= '
' . "\n"; + } + + $panel .= '
' . "\n"; + } + + + // Output the information about any problems found when checking the modified core files + if ($num_modified_core_files_error_messages > 0) { + + $panel .= '
'; + + $panel .= '' . TEXT_MODIFIED_CORE_FILES_CHECK . '' . "\n"; + + foreach ($this->_modified_core_files_error_messages as $error_message) { + $panel .= '
' . "\n"; + + $panel .= '

' . + $error_message['initial_desc'] . "

\n"; + + if (isset($error_message['current_value'])) { + foreach ($error_message['current_value'] as $current_value) { + $panel .= '

' . $current_value . "

\n"; + } + } + + if (isset($error_message['extra_desc'])) { + $panel .= '
    ' . "\n"; + + foreach ($error_message['extra_desc'] as $extra_desc) { + $panel .= '
  • ' . $extra_desc . "
  • \n"; + } + + $panel .= '
' . "\n"; + } + + if (count($error_message['instructions']) > 0) { + $panel .= '
    ' . "\n"; + + foreach ($error_message['instructions'] as $instruction) { + $panel .= '
  • ' . $instruction . "
  • \n"; + } + + $panel .= '
' . "\n"; + } + + $panel .= '
' . "\n"; + } + + $panel .= '
' . "\n"; + } + + // Output the information about any problems found when checking the old files or directories + if ($num_old_files_dirs_error_messages > 0) { + + $panel .= '
'; + + $panel .= '' . TEXT_MODIFIED_OLD_FILES_DIRS_CHECK . '' . "\n"; + + foreach ($this->_old_files_dirs_error_messages as $error_message) { + $panel .= '
' . "\n"; + + $panel .= '

' . + $error_message['initial_desc'] . "

\n"; + + if (isset($error_message['current_value'])) { + foreach ($error_message['current_value'] as $current_value) { + $panel .= '

' . $current_value . "

\n"; + } + } + + if (count($error_message['instructions']) > 0) { + $panel .= '
    ' . "\n"; + + foreach ($error_message['instructions'] as $instruction) { + $panel .= '
  • ' . $instruction . "
  • \n"; + } + + $panel .= '
' . "\n"; + } + + $panel .= '
' . "\n"; + } + + $panel .= '
' . "\n"; + } + + // Build the example rewrite rule sub panel if possible + if ($num_config_files_error_messages == 0) { + $panel .= '
'; + + $panel .= '' . TEXT_EXAMPLE_REWRITE_RULE . '' . "\n"; + + $panel .= $this->_buildExampleRewriteRulePanelContent(); + + $panel .= '
' . "\n"; + } + + + $panel .= '
' . "\n"; + + $this->_addPanel('installation-check-panel', TEXT_INSTALLATION_CHECK, null, $panel); + } + + // }}} + + + // {{{ _buildExampleRewriteRulePanelContent() + + /** + * Analyses the store's settings and builds the example rewrite rule for the server and the HTML content for + * the example rewrite rule panel for the store. + * + * @access protected + * @return string The HTML for the content of the Example Rewrite Rule panel. + */ + protected function _buildExampleRewriteRulePanelContent() + { + $content = ''; + + // Determine what server type is being used, so that the most appropriate information can be displayed. + // Types which can be identified: + // + // apache: Apache (Then assumed to have mod_rewrite) + // iis-url-rewrite: M$ IIS with URL Rewrite module + // iis-isapi-rewrite: M$ IIS with ISAPI Rewrite module + // nginx: + $server_type = ''; + + if (!isset($_SERVER['REQUEST_URI'])) { + $_SERVER['REQUEST_URI'] = ''; + } + + if (!isset($_SERVER['SERVER_SOFTWARE'])) { + $_SERVER['SERVER_SOFTWARE'] = ''; + } + + if (empty($_SERVER['REQUEST_URI']) || strpos($_SERVER['SERVER_SOFTWARE'], 'Microsoft-IIS') !== false) { + if (isset($_SERVER['HTTP_X_ORIGINAL_URL'])) { + // IIS URL Rewrite module is being used + $server_type = 'iis-url-rewrite'; + + } else if (isset($_SERVER['HTTP_X_REWRITE_URL'])) { + // IIS ISAPI_Rewrite module is being used + $server_type = 'iis-isapi-rewrite'; + } + } else if (strpos(strtolower($_SERVER['SERVER_SOFTWARE']), 'apache') !== false) { + $server_type = 'apache'; + + } else if (strpos(strtolower($_SERVER['SERVER_SOFTWARE']), 'nginx') !== false) { + $server_type = 'nginx'; + } + + // Build the example rule + if ($server_type == 'nginx') { + // The rule for nginx is very simple so is built here + $this->_guestimated_rewrite_rule = 'try_files $uri /$uri /index.php$is_args$args;'; + } else { + $this->_buildBasicRewriteRule(); + + $this->_buildRewriteRuleWithGuestimatedExclusions(); + } + + + $content .= '

' . TEXT_EXAMPLE_REWRITE_RULE_BUILT_INTRO . '

' . "\n"; + + $content .= '

' . TEXT_EXAMPLE_REWRITE_RULE_GOOD_BASIS . '

' . "\n"; + + // Fall back to showing instructions for Apache if server type cannot be determined + if ($server_type == 'apache' || $server_type == '') { + + if ($server_type == 'apache') { + $content .= '

' . TEXT_APACHE_TITLE . '

' . "\n"; + + $content .= '

' . TEXT_SERVER_APPEARS_TO_BE_APACHE . '

' . "\n"; + } + + $content .= '

' . TEXT_PLACE_REWRITE_RULE_IN_HTACCESS_FILE_OR_VIRTUALHOST_DIRECTIVE . '

' . "\n"; + + $content .= '

' . TEXT_PLACE_REWRITE_RULE_HTACCESS_FILE_TITLE . '

' . "\n"; + + if (strlen(DIR_WS_CATALOG) > 1 && + strpos(strtolower(DIR_FS_CATALOG), strtolower(DIR_WS_CATALOG)) === false) { + $content .= '

' . sprintf(TEXT_ERROR_DIR_FS_CATALOG_PROBLEM, DIR_WS_CATALOG, DIR_FS_CATALOG) . + '

' . "\n"; + + $content .= '

' . TEXT_ERROR_DIR_FS_CATALOG_PROBLEM_POSSIBLE_REASON . "

\n"; + + } else { + // Build the path to the store's root .htaccess file + $htaccess_file = substr(DIR_FS_CATALOG, 0, strlen(DIR_FS_CATALOG) - strlen(DIR_WS_CATALOG)) . + '/.htaccess'; + + if (file_exists($htaccess_file)) { + $content .= '

' . TEXT_PLACE_REWRITE_RULE_HTACCESS_FILE_INFO_EXISTS . '

' . "\n"; + } else { + $content .= '

' . TEXT_PLACE_REWRITE_RULE_HTACCESS_FILE_INFO . '

' . "\n"; + } + + $content .= '

' . $htaccess_file . '

' . "\n"; + + if (DIR_WS_CATALOG != '/') { + $content .= '

' . TEXT_PLACE_REWRITE_RULE_HTACCESS_FILE_INFO_SUBDIR . '

' . "\n"; + } + } + + + $content .= '

' . TEXT_PLACE_REWRITE_RULE_VIRTUALHOST_DIRECTIVE_TITLE . '

' . "\n"; + + $content .= '

' . TEXT_PLACE_REWRITE_RULE_VIRTUALHOST_DIRECTIVE_INFO . '

' . "\n"; + + $content .= '

' . sprintf(TEXT_PLACE_REWRITE_RULE_VIRTUALHOST_DIRECTIVE_INSTRUCTIONS, + substr(DIR_WS_CATALOG, 1, strlen(DIR_WS_CATALOG) - 1) . 'index.php', 'RewriteRule .* /' . + substr(DIR_WS_CATALOG, 1, strlen(DIR_WS_CATALOG) - 1) . 'index.php [QSA,L]') . '

' . "\n"; + + } else if ($server_type == 'iis-isapi-rewrite') { + $content .= '

' . TEXT_IIS_ISAPI_REWRITE_TITLE . '

' . "\n"; + + $content .= '

' . TEXT_SERVER_APPEARS_TO_BE_IIS_ISAPI_REWRITE . '

' . "\n"; + + $content .= '

' . TEXT_PLACE_REWRITE_RULE_ISAPI_REWRITE_LITE_VERSION_TITLE . '

' . "\n"; + + $content .= '

' . TEXT_PLACE_REWRITE_RULE_IN_ISAPI_REWRITE_GLOBAL_HTTPD_CONF_INFO . '

' . "\n"; + + $content .= '

' . TEXT_PLACE_REWRITE_RULE_ISAPI_REWRITE_FULL_VERSION_DIRECTIVE_TITLE . '

' . + "\n"; + + // Build the path to the store's root .htaccess file + $htaccess_file = substr(DIR_FS_CATALOG, 0, strlen(DIR_FS_CATALOG) - strlen(DIR_WS_CATALOG)) . + '/.htaccess'; + + if (file_exists($htaccess_file)) { + $content .= '

' . TEXT_PLACE_REWRITE_RULE_IN_ISAPI_REWRITE_LOCAL_HTACCESS_INFO_EXISTS . '

' . + "\n"; + } else { + $content .= '

' . TEXT_PLACE_REWRITE_RULE_IN_ISAPI_REWRITE_LOCAL_HTACCESS_INFO . '

' . "\n"; + } + + $content .= '

' . $htaccess_file . '

' . "\n"; + + if (DIR_WS_CATALOG != '/') { + $content .= '

' . TEXT_PLACE_REWRITE_RULE_HTACCESS_FILE_INFO_SUBDIR . '

' . "\n"; + } + } else if ($server_type == 'iis-url-rewrite') { + $content .= '

' . TEXT_IIS_URL_REWRITE_TITLE . '

' . "\n"; + + $content .= '

' . TEXT_SERVER_APPEARS_TO_BE_IIS_URL_REWRITE . '

' . "\n"; + + $content .= '

' . TEXT_IMPORT_REWRITE_RULE_IIS_URL_REWRITE_TITLE . '

' . "\n"; + + $content .= '

' . TEXT_IMPORT_REWRITE_RULE_IIS_URL_REWRITE_INFO . '

' . "\n"; + + $content .= '

' . TEXT_IMPORT_REWRITE_RULE_IIS_URL_REWRITE_HINTS . '

' . "\n"; + + } else if ($server_type == 'nginx') { + $content .= '

' . TEXT_NGINX_TITLE . '

' . "\n"; + + $content .= '

' . TEXT_SERVER_APPEARS_TO_BE_NGINX . '

' . "\n"; + + $content .= '

' . TEXT_PLACE_REWRITE_DIRECTIVE_NGINX_TITLE . '

' . "\n"; + + $content .= '

' . sprintf(TEXT_PLACE_REWRITE_DIRECTIVE_NGINX_INFO, DIR_WS_CATALOG, DIR_WS_CATALOG) . + '

' . "\n"; + } + + if ($server_type != 'nginx') { + $content .= '

' . TEXT_REWRITE_RULE_PROBLEMS_TITLE . '

' . "\n"; + + $content .= '

' . TEXT_REWRITE_RULE_ERRORS_INTRO . '

' . "\n"; + + $content .= '

' . sprintf(TEXT_REWRITE_RULE_ERROR_TRY_ADDING_SLASH, + substr(DIR_WS_CATALOG, 1, strlen(DIR_WS_CATALOG) - 1) . 'index.php', 'RewriteRule .* /' . + substr(DIR_WS_CATALOG, 1, strlen(DIR_WS_CATALOG) - 1) . 'index.php [QSA,L]') . '

' . "\n"; + } + + // Add JavaScript function for quick and easy selection of the rule's content + $content .= << + + +SELECT_AND_COPY_JS; + + $content .= '
' . "\n"; + + $content .= '' . "\n"; + + $content .= '

' . TEXT_SELECT_ALL_AND_COPY . '

' . + "\n"; + + $content .= '
' . "\n"; + + if ($server_type == 'nginx') { + $content .= '

' . TEXT_NGINX_EXAMPLE_INTRO . '

' . "\n"; + + $content .= '
' . sprintf(TEXT_NGINX_EXAMPLE, DIR_WS_CATALOG,
+				$this->_guestimated_rewrite_rule) . '
' . "\n"; + } + + return $content; + } + + // }}} + + + // {{{ _buildBasicRewriteRule() + + /** + * Builds an example rewrite rule for the store which has only the essential Zen Cart exclusions. + * + * @access protected + * @return none + */ + protected function _buildBasicRewriteRule() + { + $basic_rule = '## BEGIN CEON URI MAPPING REWRITE RULE + +RewriteEngine On' . "\n\n"; + + if (DIR_WS_CATALOG != '/') { + $basic_rule .= '# ONLY rewrite URIs beginning with ' . DIR_WS_CATALOG . "\n"; + $basic_rule .= 'RewriteCond %{REQUEST_URI} ^' . DIR_WS_CATALOG . ' [NC]' . "\n"; + } + + $dir_ws_admin = DIR_WS_ADMIN; + + while (substr($dir_ws_admin, -1) == '/') { + $dir_ws_admin = substr($dir_ws_admin, 0, strlen($dir_ws_admin) - 1); + } + + $basic_rule .= "# Don't rewrite any URIs ending with a file extension (ending with .[xxxxx]) +RewriteCond %{REQUEST_URI} !\.[a-z]{2,5}$ [NC] +# Don't rewrite any URIs for some, popular specific file format extensions, +# which are not covered by main file extension condition above +RewriteCond %{REQUEST_URI} !\.(mp3|mp4|h264|woff2)$ [NC] +# Don't rewrite admin directory +RewriteCond %{REQUEST_URI} !^" . $dir_ws_admin . " [NC] +# Don't rewrite editors directory +RewriteCond %{REQUEST_URI} !^" . DIR_WS_CATALOG . "editors/ [NC] +# Handle all other URIs using Zen Cart (its index.php) +RewriteRule .* " . substr(DIR_WS_CATALOG, 1, strlen(DIR_WS_CATALOG) - 1) . 'index.php [QSA,L] + +## END CEON URI MAPPING REWRITE RULE'; + + $this->_basic_rewrite_rule = $basic_rule; + } + + // }}} + + + // {{{ _buildRewriteRuleWithGuestimatedExclusions() + + /** + * Builds an example rewrite rule for the store which has the essential Zen Cart exclusions as well as + * exclusions for any folders that could be broken by a fairly inclusive rule such as the basic one. + * + * @access protected + * @return none + */ + protected function _buildRewriteRuleWithGuestimatedExclusions() + { + // Base the rule on the basic rule + $guestimated_rule = $this->_basic_rewrite_rule; + + // Add a list of less popular file extensions + $additional_file_extensions_condition = "# Don't rewrite any URIs for some specific file format extensions, +# which are not covered by main file extension condition above +# Uncomment the following line to apply this condition! (Remove the # at the start of the next line) +#RewriteCond %{REQUEST_URI} !\.(3gp|3g2|h261|h263|mj2|mjp2|mp4v|mpg4|m1v|m2v|m4u|f4v|m4v|3dml)$ [NC]"; + + $guestimated_rule = str_replace('h264)$ [NC]', 'h264)$ [NC]' . "\n" . + $additional_file_extensions_condition, $guestimated_rule); + + // Check the folders in the Zen Cart installation, to see if they should be excluded + $exclude_dirs = array(); + + // Variable holds the list of folders expected to be found in a Zen Cart installation, which shouldn't need + // to be excluded + $zen_cart_dirs = array( + str_replace('/', '', str_replace(DIR_WS_CATALOG, '', DIR_WS_ADMIN)), + 'cache', + 'docs', + 'download', + 'editors', + 'email', + 'extras', + 'images', + 'includes', + 'media', + 'pub' + ); + + // Variable holds list of some third party module's folders, which shouldn't need to be excluded (any .php + // files within them will be excluded by another rule, so saves processing time to have fewer conditions in + // the rewrite rule) + $third_party_module_dirs = array( + 'facebox', + 'fec', + 'module_version', + 'plugins', + 'quick_checkout' + ); + + // Scan the list of files in the Zen Cart directory, checking for some renamed directories (like a renamed + // installation directory) by looking for files expected to be found within those directories. All other + // directories are candidates for exclusion rule + $dir_name = DIR_FS_CATALOG; + + if ($search_dir = opendir($dir_name)) { + // Open directory for reading + while ($current_file = readdir($search_dir)) { + // Make sure it's not the dots + if ($current_file != '.' && $current_file != '..') { + // Build file/directory name + $full_path = $dir_name; + + $full_path = str_replace('\\', '/', $full_path); + + if (substr($dir_name, strlen($dir_name) - 1, 1) != '/') { + $full_path .= '/'; + } + + $full_path .= $current_file; + + if (is_dir($full_path) && !in_array($current_file, $zen_cart_dirs) && + !in_array($current_file, $third_party_module_dirs)) { + // Attempt to determine if this is a renamed installation folder + if (file_exists($full_path . '/' . 'popup_help_screen.php')) { + // Is likely to be the ZC installation directory + continue; + } + + $exclude_dirs[] = $current_file; + } + } + } + } + + $exclude_dir_conditions = ''; + + foreach ($exclude_dirs as $exclude_dir) { + $exclude_dir_conditions .= "# Don't rewrite " . $exclude_dir . ' directory' . "\n"; + + // Make directory name compatible with rewrite rule format + $exclude_dir = preg_quote($exclude_dir); + + $exclude_dir = str_replace(' ', '\ ', $exclude_dir); + + $exclude_dir = str_replace('\\ ', '\ ', $exclude_dir); + + $exclude_dir_conditions .= + 'RewriteCond %{REQUEST_URI} !^' . DIR_WS_CATALOG . $exclude_dir . '/ [NC]' . "\n"; + } + + $exclude_dir_conditions = trim($exclude_dir_conditions); + + if (strlen($exclude_dir_conditions) > 0) { + $guestimated_rule = str_replace('editors/ [NC]', 'editors/ [NC]' . "\n" . $exclude_dir_conditions, + $guestimated_rule); + } + + $this->_guestimated_rewrite_rule = $guestimated_rule; + } + + // }}} +} + +// }}} diff --git a/NEUE DATEIEN/DEINADMIN/includes/classes/class.CeonURIMappingTabbedPanelAdminInterface.php b/NEUE DATEIEN/DEINADMIN/includes/classes/class.CeonURIMappingTabbedPanelAdminInterface.php new file mode 100644 index 0000000..4b703f2 --- /dev/null +++ b/NEUE DATEIEN/DEINADMIN/includes/classes/class.CeonURIMappingTabbedPanelAdminInterface.php @@ -0,0 +1,666 @@ + + * @copyright Copyright 2008-2019 Ceon + * @copyright Copyright 2003-2021 Zen Cart Development Team + * @copyright Portions Copyright 2003 osCommerce + * @link http://ceon.net/software/business/zen-cart/uri-mapping + * @license http://www.zen-cart.com/license/2_0.txt GNU Public License V2.0 + * @version $Id: class.CeonURIMappingTabbedPanelAdminInterface.php 2021-06-23 09:45:15Z webchills $ + */ + +if (!defined('IS_ADMIN_FLAG')) { + die('Illegal Access'); +} + +/** + * Load in the parent class if not already loaded + */ +require_once(DIR_FS_CATALOG . DIR_WS_CLASSES . 'class.CeonURIMappingAdmin.php'); + + +// {{{ CeonURIMappingTabbedPanelAdminInterface + +/** + * Provides shared functionality to allow the building of a set of tabbed panels as the basis of an admin interface + * for a module within the main Zen Cart admin. + * + * @package ceon_uri_mapping + * @abstract + * @author Conor Kerr + * @copyright Copyright 2008-2019 Ceon + * @copyright Copyright 2003-2019 Zen Cart Development Team + * @copyright Portions Copyright 2003 osCommerce + * @link http://ceon.net/software/business/zen-cart/uri-mapping + * @license http://www.zen-cart.com/license/2_0.txt GNU Public License V2.0 + */ +class CeonURIMappingTabbedPanelAdminInterface extends CeonURIMappingAdmin +{ + // {{{ properties + + /** + * The Ceon base model code for the module this admin interface is being built for. + * + * @var string + * @access protected + */ + protected $_ceon_base_model_code = null; + + /** + * The Ceon model edition code of the module this admin interface is being built for. + * + * @var string + * @access protected + */ + protected $_ceon_model_edition_code = null; + + /** + * The version of the module this admin interface is being built for. + * + * @var string + * @access protected + */ + protected $_version = null; + + /** + * The localised edition title of the module this admin interface is being built for. + * + * @var string + * @access protected + */ + protected $_edition_title = null; + + /** + * The version of the module that is currently installed. + * + * @var string + * @access protected + */ + protected $_installed_version = null; + + /** + * The start year of the copyright range for the module. + * + * @var integer + * @access protected + */ + protected $_copyright_start_year = null; + + /** + * The URI part for the module's web address. + * + * @var string + * @access protected + */ + protected $_web_address_uri_part = null; + + /** + * Whether or not automatic version checking is enabled. + * + * @var boolean + * @access protected + */ + protected $_automatic_version_checking = null; + + /** + * The list of panels that this instance is to use. + * + * @var array + * @access protected + */ + protected $_panels = array(); + + /** + * The HTML output built by this instance. + * + * @var string + * @access protected + */ + protected $_output = null; + + // }}} + + + // {{{ Class Constructor + + /** + * Creates a new instance of the class. + * + * @param boolean Whether or not the autogeneration configuration should be loaded when + * instantiating the class. + * @access public + */ + public function __construct($load_config = true) + { + parent::__construct($load_config); + + // Load the language definition file for the current language + @include_once(DIR_WS_LANGUAGES . $_SESSION['language'] . '/' . + 'ceon_uri_mapping_tabbed_panel_admin_interface.php'); + + if (!defined('TEXT_ERROR_VERSION_CHECK_PROBLEM') && $_SESSION['language'] != 'german') { + // Fall back to english language file + @include_once(DIR_WS_LANGUAGES . 'german/' . 'ceon_uri_mapping_tabbed_panel_admin_interface.php'); + } + } + + // }}} + + + // {{{ _lookUpInstalledVersion() + + /** + * Looks up the currently installed version. + * + * @access protected + * @abstract + * @return boolean True if the version number check completed without failure, false otherwise. The module + * not being installed yet is not counted as a failure. + */ + protected function _lookUpInstalledVersion() {} + + // }}} + + + // {{{ getEditionCode() + + /** + * Simply returns the Ceon model edition code for the software. + * + * @access public + * @return string The Ceon model edition code for this software. + */ + public function getEditionCode() + { + return $this->_ceon_model_edition_code; + } + + // }}} + + + // {{{ getVersion() + + /** + * Simply returns the version of the software. + * + * @access public + * @return string The version of this software. + */ + public function getVersion() + { + return $this->_version; + } + + // }}} + + + // {{{ getOutput() + + /** + * Simply returns the output built by this instance. + * + * @access public + * @return string The HTML output for the configuration utility's output. + */ + public function getOutput() + { + return $this->_output; + } + + // }}} + + + // {{{ _addPanel() + + /** + * Adds a panel to the list of panels that are part of this tabbed panel admin interface. + * + * @access protected + * @param string $id The ID of the panel. + * @param string $title The title of the panel, to be used as the tab's text. + * @param string $link If the tab is to link to another page, the link. + * @param string $content If the panel's content is to be displayed directly within the tabbed panel + * admin interface, the content that makes up the panel. + * @return none + */ + protected function _addPanel($id, $title, $link, $content = null) + { + $this->_panels[] = array( + 'id' => $id, + 'title' => $title, + 'link' => $link, + 'content' => $content + ); + } + + // }}} + + + // {{{ _getSelectedPanelID() + + /** + * Gets the ID of the panel which should be selected by default when the tabbed panel admin interface is built. + * + * @access protected + * @return string The ID of the selected panel. + */ + protected function _getSelectedPanelID() + { + return null; + } + + // }}} + + + // {{{ _buildTabbedPanelMenu() + + /** + * Builds the menu for the various panels, adding it to the output content. Implements a bar of tabs which can + * be used to show/hide the various panels or navigate between the various panels' pages. + * + * @access protected + * @return none + */ + protected function _buildTabbedPanelMenu() + { + $selected_panel_id = $this->_getSelectedPanelID(); + + // Have the panel selected and displayed automatically + if (!is_null($selected_panel_id)) { + $this->_output .= '' . "\n"; + } + + $this->_output .= << +var current_panel_id = '$selected_panel_id'; + +function CeonShowPanel(id) { + selected_class = 'CeonPanelTabSelected'; + + // Hide previous panel + prev_panel_el = document.getElementById(current_panel_id); + prev_panel_el.style.display = 'none'; + + new_panel_el = document.getElementById(id); + new_panel_el.style.display = 'block'; + + prev_panel_tab_el = document.getElementById(current_panel_id + '-tab'); + new_panel_tab_el = document.getElementById(id + '-tab'); + + if (new_panel_tab_el.className.indexOf(selected_class) == -1) { + new_panel_tab_el.className = new_panel_tab_el.className + " " + selected_class; + } + + prev_panel_tab_el.className = prev_panel_tab_el.className.replace(selected_class, ""); + + current_panel_id = id; +} + + +TABBED_PANELS_MENU_JS; + + + $this->_output .= '' . "\n"; + } + + // }}} + + + // {{{ _buildPanels() + + /** + * Outputs any panels that have content. + * + * @access protected + * @return none + */ + protected function _buildPanels() + { + $this->_output .= '
' . "\n"; + + foreach ($this->_panels as $panel) { + if (!is_null($panel['content'])) { + $this->_output .= $panel['content']; + } + } + + $this->_output .= '
' . "\n"; + } + + // }}} + + + // {{{ _buildConfigSettingDescRow() + + /** + * Builds a HTML table row with a label and description. + * + * @access protected + * @param string $id The ID of the form element (if any) the label is for. + * @param string $label The text for the label. + * @param string $description The description. + * @return string The HTML source for the row. + */ + protected function _buildConfigSettingDescRow($id, $label, $description) + { + $table_row = ' + ' . "\n"; + + $table_row .= ' ' . "\n"; + + $table_row .= $description . "\n"; + + $table_row .= ' + ' . "\n"; + + return $table_row; + } + + // }}} + + + // {{{ _buildConfigPanel() + + /** + * Builds a HTML panel using a fieldset and an enclosed table or content. + * + * @access protected + * @param string $id The ID for the panel. + * @param string $title The title for the panel. + * @param string $table_rows The content of the panel, as HTML rows. + * @param string $content The content of the panel, as HTML. + * @return string The HTML source for the panel. + */ + protected function _buildConfigPanel($id, $title, $table_rows, $content = null) + { + $panel = '
+ '; + + $panel .= $title; + + $panel .= '' . "\n"; + + if (is_null($content)) { + // The panel's content is built using table rows + $panel .= '' . "\n"; + + $panel .= $table_rows; + + $panel .= '
'; + } else { + $panel .= $content; + } + + $panel .= '
' . "\n"; + + return $panel; + } + + // }}} + + + // {{{ _buildSubPanel() + + /** + * Builds a HTML subpanel using a fieldset and HTML content. + * + * @access protected + * @param string $title The title for the subpanel. + * @param string $content The content for the panel, as HTML. + * @return string The HTML source for the subpanel. + */ + protected function _buildSubPanel($title, $content) + { + $panel = '
+ '; + + $panel .= $title; + + $panel .= '' . "\n"; + + $panel .= $content; + + $panel .= '
' . "\n"; + + return $panel; + } + + // }}} + + + // {{{ _buildSubmitAndCancelButtons() + + /** + * Builds the HTML for the submit and cancel buttons. Adds it to the output content. + * + * @access protected + * @return none + */ + protected function _buildSubmitAndCancelButtons() + { + $buttons = '
' . "\n"; + + $buttons .= zen_image_submit('button_save.gif', IMAGE_SAVE, 'name="save" value="save" id="save"'); + + $buttons .= ' ' . + zen_image_button('button_cancel.gif', IMAGE_CANCEL) . '' . "\n"; + + $this->_output .= $buttons; + } + + // }}} + + + // {{{ _buildFooter() + + /** + * Builds the HTML for the module copyright and version information. Adds it to the output content. + * + * @access protected + * @return none + */ + protected function _buildFooter() + { + $footer = '
' . "\n" . '\n"; + + $this->_output .= $footer; + } + + // }}} + + + // {{{ _getVersionCheckerOutput() + + /** + * If automatic version checking is enabled, connects to Ceon's version checker server to check if the current + * version is out of date. If the current version is out of date, information about the latest version and a + * link to download the update are returned. If an error is encountered, it is returned for display. + * + * If automatic checking is disabled, a link to check the version manually is returned. + * + * @access protected + * @return string The information about the latest version, an error message, or a link to manually check + * the version. + */ + protected function _getVersionCheckerOutput() + { + $output = ''; + + $output_manual_link = false; + + if (isset($_GET['reset-version-checker-response']) && + isset($_SESSION[$this->_ceon_base_model_code . '_vc_response'])) { + unset($_SESSION[$this->_ceon_base_model_code . '_vc_response']); + } + + if (extension_loaded('curl') && (is_null($this->_automatic_version_checking) || + $this->_automatic_version_checking)) { + // If a response has been recorded for this session, don't try again in this session + if (isset($_SESSION[$this->_ceon_base_model_code . '_vc_response'])) { + $version_checker_response = $_SESSION[$this->_ceon_base_model_code . '_vc_response']; + } else { + // Post the information needed for the version check to the Ceon version checker server + + // Build the data required for the version check + $uri = 'https://version-checker.ceon.net/'; + + $data = 'base_model_code=' . $this->_ceon_base_model_code; + + if (!is_null($this->_ceon_model_edition_code)) { + $data .= '&model_edition_code=' . $this->_ceon_model_edition_code; + } + + $data .= '&version=' . $this->_version; + + $data .= '&language_code=' . $_SESSION['languages_code']; + + $ch = curl_init(); + + curl_setopt($ch, CURLOPT_URL, $uri); + curl_setopt($ch, CURLOPT_FRESH_CONNECT, 1); + curl_setopt($ch, CURLOPT_HEADER, 0); + curl_setopt($ch, CURLOPT_TIMEOUT, 15); + curl_setopt($ch, CURLOPT_REFERER, HTTP_SERVER); + curl_setopt($ch, CURLOPT_POST, 1); + curl_setopt($ch, CURLOPT_POSTFIELDS, $data); + curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); + curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); + curl_setopt($ch, CURLOPT_DNS_USE_GLOBAL_CACHE, 0); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); + + $version_checker_response = curl_exec($ch); + + curl_close($ch); + } + + // Parse information returned from version check and display appropriate output to user + if (strlen($version_checker_response) == 0) { + $output .= '

' . TEXT_ERROR_VERSION_CHECK_NO_RESPONSE . '

'; + + $output_manual_link = true; + + } else if ($version_checker_response == '1') { + // Version is up to date + $_SESSION[$this->_ceon_base_model_code . '_vc_response'] = $version_checker_response; + + $output .= '

'; + + if (!is_null($this->_installed_version)) { + $output .= TEXT_MOST_UP_TO_DATE_VERSION_INSTALLED; + } else { + $output .= TEXT_MOST_UP_TO_DATE_VERSION_FILES_PRESENT; + } + + $output .= '

'; + + } else if (substr($version_checker_response, 0, 1) == '-') { + // Error occurred looking up version number + $_SESSION[$this->_ceon_base_model_code . '_vc_response'] = $version_checker_response; + + $output .= '

' . TEXT_ERROR_VERSION_CHECK_PROBLEM . '

'; + + $output .= '

' . substr($version_checker_response, 3) . '

'; + + $output_manual_link = true; + + } else if (preg_match('/^[0-9]+\.[0-9]+\.[0-9]+[^,]*,/', $version_checker_response)) { + // Version is out of date, display latest version info and download link + $_SESSION[$this->_ceon_base_model_code . '_vc_response'] = $version_checker_response; + + $latest_version_info = explode(',', $version_checker_response); + + $output .= + '

' . '' . TEXT_OUT_OF_DATE . '' . '

'; + + $output .= '

' . TEXT_LATEST_VERSION_IS . ' ' . + $latest_version_info[0] . + (!is_null($this->_edition_title) ? ' ' . $this->_edition_title : '') . '

'; + + if (isset($latest_version_info[2])) { + // Display any additional message provided by the version checker server + $output .= '

' . $latest_version_info[2] . '

'; + } + + $output .= '

' . '' . + TEXT_CLICK_HERE_TO_DOWNLOAD_LATEST_VERSION . '

'; + } else { + $output .= '

' . TEXT_ERROR_VERSION_CHECK_PROBLEM_PARSING . + '

'; + + // Output the response received as a HTML comment so that the error can be possibly be identified + $output .= "\n"; + + $output_manual_link = true; + } + } else { + $output_manual_link = true; + } + + + + return $output; + } + + // }}} +} + +// }}} diff --git a/NEUE DATEIEN/DEINADMIN/includes/classes/class.CeonURIMappingVersion.php b/NEUE DATEIEN/DEINADMIN/includes/classes/class.CeonURIMappingVersion.php new file mode 100644 index 0000000..8be9c75 --- /dev/null +++ b/NEUE DATEIEN/DEINADMIN/includes/classes/class.CeonURIMappingVersion.php @@ -0,0 +1,115 @@ + + * @copyright Copyright 2008-2019 Ceon + * @copyright Copyright 2003-2019 Zen Cart Development Team + * @copyright Portions Copyright 2003 osCommerce + * @link http://ceon.net/software/business/zen-cart/uri-mapping + * @license http://www.zen-cart.com/license/2_0.txt GNU Public License V2.0 + * @version $Id: class.CeonURIMappingVersion.php 2022-02-19 20:29:15Z webchills $ + */ + +/** + * Load in the Ceon Tabbed Panel Admin Interface class so it can be extended + */ +require_once(DIR_WS_CLASSES . 'class.CeonURIMappingTabbedPanelAdminInterface.php'); + + +// {{{ CeonURIMappingVersion + +/** + * Specifies the essential version properties for the module and implements the installed version's version number + * (if any). Allows the extending class to access the version information for the module easily. + * + * @package ceon_uri_mapping + * @abstract + * @author Conor Kerr + * @copyright Copyright 2008-2019 Ceon + * @copyright Copyright 2003-2019 Zen Cart Development Team + * @copyright Portions Copyright 2003 osCommerce + * @link http://ceon.net/software/business/zen-cart/uri-mapping + * @license http://www.zen-cart.com/license/2_0.txt GNU Public License V2.0 + */ +class CeonURIMappingVersion extends CeonURIMappingTabbedPanelAdminInterface +{ + // {{{ Class Constructor + + /** + * Creates a new instance of the class. + * + * @param boolean Whether or not the autogeneration configuration should be loaded when instantiating the + * class. + * @access public + */ + public function __construct($load_config = true) + { + parent::__construct($load_config); + + // Load the language definition file for the current language + @include_once(DIR_WS_LANGUAGES . $_SESSION['language'] . '/' . + 'ceon_uri_mapping_config.php'); + + if (!defined('TEXT_EDITION_TITLE') && $_SESSION['language'] != 'german') { + // Fall back to german language file + @include_once(DIR_WS_LANGUAGES . 'german/' . 'ceon_uri_mapping_config.php'); + } + + // Set up the basic version settings for this module + $this->_ceon_base_model_code = 'S-ZC-UM'; + + $this->_version = '5.1.1'; + + $this->_copyright_start_year = 2008; + + $this->_web_address_uri_part = 'uri-mapping'; + } + + // }}} + + + // {{{ _lookUpInstalledVersion() + + /** + * Looks up the currently installed version and stores it in this instance's property. + * + * @access protected + * @return boolean True if the version number look up completed without failure, false otherwise. The module + * not being installed yet is not counted as a failure. + */ + protected function _lookUpInstalledVersion() + { + global $db; + + $table_exists_query = 'SHOW TABLES LIKE "' . TABLE_CEON_URI_MAPPING_CONFIGS . '";'; + $table_exists_result = $db->Execute($table_exists_query); + + if (!$table_exists_result->EOF) { + // Database table exists, get version info + + // Only one config currently supported so its ID is hard-coded in the following SQL + $installed_version_sql = " + SELECT + version + FROM + " . TABLE_CEON_URI_MAPPING_CONFIGS . " + WHERE + id ='1';"; + + $installed_version_result = $db->Execute($installed_version_sql); + + if (!$installed_version_result->EOF) { + $this->_installed_version = $installed_version_result->fields['version']; + } + } + + return true; + } + + // }}} +} + +// }}} diff --git a/NEUE DATEIEN/DEINADMIN/includes/classes/observers/class.CeonURIMappingAdminCategoriesObserver.php b/NEUE DATEIEN/DEINADMIN/includes/classes/observers/class.CeonURIMappingAdminCategoriesObserver.php new file mode 100644 index 0000000..a43e566 --- /dev/null +++ b/NEUE DATEIEN/DEINADMIN/includes/classes/observers/class.CeonURIMappingAdminCategoriesObserver.php @@ -0,0 +1,48 @@ + + * @author Ceon Support + * @copyright Copyright 2008-2019 Ceon + * @copyright Copyright 2003-2019 Zen Cart Development Team + * @copyright Portions Copyright 2003 osCommerce + * @link https://ceon.net + * @license http://www.zen-cart.com/license/2_0.txt GNU Public License V2.0 + * @version 2019 + */ +class CeonURIMappingAdminCategoriesObserver extends base +{ + /** + * ZC 1.5.6: $zco_notifier->notify('NOTIFY_BEGIN_ADMIN_CATEGORIES', $action); + * + */ + function __construct() + { + $this->attach($this, array('NOTIFY_BEGIN_ADMIN_CATEGORIES')); + } + + function update(&$callingClass, $notifier, $action) + { +// Can't capture updated information until after it has been processed. Best opportunity is to +// grab the information on redirect. + // Identify that expectation is that the category is inserted or updated. + if (defined('CEON_URI_MAPPING_ENABLED') && isset($action) && ($action == 'insert_category' || $action == 'update_category')) { + // Set a session variable here to that of the current_category_id, because the final $categories_id is not known until the end of execution + // and redirection to the next page. + $_SESSION['ceon_uri_mapping_' . $action] = array(); + $_SESSION['ceon_uri_mapping_' . $action]['current_category_id'] = $GLOBALS['current_category_id']; + $_SESSION['ceon_uri_mapping_' . $action]['post'] = $_POST; + } + + // Make class functions available to the global space for execution. + if (defined('CEON_URI_MAPPING_ENABLED') && isset($action) && ($action == 'new_category' || $action == 'edit_category')) { + require_once(DIR_WS_CLASSES . 'class.CeonURIMappingAdminCategoryPages.php'); + + $GLOBALS['ceon_uri_mapping_admin'] = new CeonURIMappingAdminCategoryPages(); + } + } +} \ No newline at end of file diff --git a/NEUE DATEIEN/DEINADMIN/includes/classes/observers/class.CeonURIMappingAdminCopyObserver.php b/NEUE DATEIEN/DEINADMIN/includes/classes/observers/class.CeonURIMappingAdminCopyObserver.php new file mode 100644 index 0000000..38539cd --- /dev/null +++ b/NEUE DATEIEN/DEINADMIN/includes/classes/observers/class.CeonURIMappingAdminCopyObserver.php @@ -0,0 +1,79 @@ + + * @author Ceon Support + * @copyright Copyright 2008-2020 Ceon + * @copyright Copyright 2003-2007 Zen Cart Development Team + * @copyright Portions Copyright 2003 osCommerce + * @link https://ceon.net + * @license http://www.zen-cart.com/license/2_0.txt GNU Public License V2.0 + * @version 2020 + */ +class CeonURIMappingAdminCopyObserver extends base +{ + + var $ceon_uri_mapping_copy_product_confirmed; + + function __construct() + { + $attachNotifier = array(); + $attachNotifier[] = 'NOTIFY_MODULES_COPY_TO_CONFIRM_DUPLICATE'; + + $this->attach($this, $attachNotifier); + + $this->ceon_uri_mapping_copy_product_confirmed = false; + } + + function notify_modules_copy_to_confirm_duplicate(&$callingClass, $notifier, $product_data) + { + + if (isset($_POST['products_id'], $_POST['categories_id'], $_POST['copy_as']) && $_POST['copy_as'] == 'duplicate') { + // Copy attributes to duplicate product + // $products_id_from=$products_id; + // created a new product that now has products_id of $dup_products_id, so need + // to find the new product_id that has information matching the old. + // The $products_id on the uri is equal to $dup_products_id or $products_id_to + // $products_id_to= $dup_products_id; + global $zc_products; + + $products_id_from = $product_data['products_id']; + $products_id_to = $product_data['dup_products_id']; + $categories_id = (int)$_POST['categories_id']; +// $products_id_from = (int)zen_db_prepare_input($_POST['products_id']); +// $categories_id = !empty($_GET['cPath']) ? (int)$_GET['cPath'] : 0; +// $products_id_to = !empty($_GET['pID']) ? (int)$_GET['pID'] : 0; + + $sql = "SELECT products_type FROM " . TABLE_PRODUCTS . " WHERE products_id=" . (int)$products_id_to; + $product = $GLOBALS['db']->Execute($sql); + + $this->ceon_uri_mapping_copy_product_confirmed = true; + unset($_SESSION['ceon_uri_mapping_copy_product_confirm']); + + if ($product->RecordCount() == 0) { + return; + } + + require_once(DIR_WS_CLASSES . 'class.CeonURIMappingAdminProductPages.php'); + + $ceon_uri_mapping_admin = new CeonURIMappingAdminProductPages(); + + $ceon_uri_mapping_admin->copyToConfirmHandler($products_id_from, $products_id_to, + $product->fields['products_type'], $zc_products->get_handler($product->fields['products_type']), + $categories_id); + } + } + + function updateNotifyModulesCopyToConfirmDuplicate(&$callingClass, $notifier, $product_data) + { + return $this->notify_modules_copy_to_confirm_duplicate($callingClass, $notifier, $product_data); + } + + function update(&$callingClass, $notifier, $action) + { + } +} \ No newline at end of file diff --git a/NEUE DATEIEN/DEINADMIN/includes/classes/observers/class.CeonURIMappingAdminProductsObserver.php b/NEUE DATEIEN/DEINADMIN/includes/classes/observers/class.CeonURIMappingAdminProductsObserver.php new file mode 100644 index 0000000..23d5855 --- /dev/null +++ b/NEUE DATEIEN/DEINADMIN/includes/classes/observers/class.CeonURIMappingAdminProductsObserver.php @@ -0,0 +1,122 @@ + + * @author Ceon Support + * @copyright Copyright 2008-2020 Ceon + * @copyright Copyright 2003-2007 Zen Cart Development Team + * @copyright Portions Copyright 2003 osCommerce + * @link https://ceon.net + * @license http://www.zen-cart.com/license/2_0.txt GNU Public License V2.0 + * @version 2020 + */ +class CeonURIMappingAdminProductsObserver extends base +{ + function __construct() + { + $this->attach($this, array('NOTIFY_BEGIN_ADMIN_PRODUCTS')); + } + + function update(&$callingClass, $notifier, $action) + { + if (!defined('CEON_URI_MAPPING_ENABLED')) { + return; + } + if (!isset($action)) { + return; + } + + // new_product perform (acts on collect_info.php) + // Adds $ceon_uri_mapping_admin to global space + if (($action == 'new_product' || $action == 'update_product' || ($action == 'insert_product' && empty($_GET['pID'])))) { + + // BEGIN CEON URI MAPPING 1 of 1 + require_once DIR_WS_CLASSES . 'class.CeonURIMappingAdminProductPages.php'; + + $GLOBALS['ceon_uri_mapping_admin'] = new CeonURIMappingAdminProductPages(); + + $GLOBALS['ceon_uri_mapping_admin']->collectInfoHandler(); + + // END CEON URI MAPPING 1 of 1 + + // Can't capture updated information until after it has been processed. Best opportunity is to + // grab the information on redirect. + // if (defined('CEON_URI_MAPPING_ENABLED') && CEON_URI_MAPPING_ENABLED == 1 && isset($action) && $action == 'update_category') { + // The categories_id and products_id are both known because this is an update of an existing product + /* if (isset($_POST['categories_id'])) { + $categories_id = zen_db_prepare_input($_POST['categories_id']); + } + + require_once(DIR_WS_CLASSES . 'class.CeonURIMappingAdminCategoryPages.php'); + + $GLOBALS['ceon_uri_mapping_admin'] = new CeonURIMappingAdminCategoryPages(); + + $GLOBALS['ceon_uri_mapping_admin']->insertUpdateHandler((int)$categories_id, (int)$GLOBALS['current_category_id']); + */ + } + + // new_product_preview perform + // Adds $ceon_uri_mapping_admin to global space + if ($action == 'new_product_preview') { + require_once(DIR_WS_CLASSES . 'class.CeonURIMappingAdminProductPages.php'); + + $GLOBALS['ceon_uri_mapping_admin'] = new CeonURIMappingAdminProductPages(); + + if (zen_not_null($_POST)) { + $GLOBALS['ceon_uri_mapping_admin']->productPreviewProcessSubmission($GLOBALS['current_category_id']); + + // END CEON URI MAPPING 1 of 4 + } else { + $GLOBALS['ceon_uri_mapping_admin']->productPreviewInitialLoad((int) $_GET['pID'], + $GLOBALS['zc_products']->get_handler((int) (isset($_POST['product_type']) ? $_POST['product_type'] : (isset($_GET['pID']) ? zen_get_products_type($_GET['pID']) : 1)))); + + // END CEON URI MAPPING 2 of 4 + } + } // EOF of the action for categories file. + + // insert_product or update_product initialize + // Detect that planning to insert or update a product and establish a sesion value for page change. + if ($action == 'insert_product' || ($action == 'update_product' && (empty($_POST['edit']) || $_POST['edit'] != 'edit'))) { + + unset($_SESSION['ceon_uri_mapping_' . $_GET['action']]); + if ($action == 'update_product') { + unset($_SESSION['ceon_uri_mapping_insert_product']); + } + if (isset($_POST['edit_x']) || isset($_POST['edit_y'])) { + // $action = 'new_product'; + } elseif ((isset($_POST['products_model']) ? $_POST['products_model'] : '') . (isset($_POST['products_url']) ? implode('', $_POST['products_url']) : '') . (isset($_POST['products_name']) ? implode('', $_POST['products_name']) : '') . (isset($_POST['products_description']) ? implode('', $_POST['products_description']) : '') != '') { + $_SESSION['ceon_uri_mapping_' . $_GET['action']] = $_POST; + } + } + + // Identify that expectation is that the category is inserted or updated. + if (($action == 'insert_category' || $action == 'update_category')) { + // Set a session variable here to that of the current_category_id, because the final $categories_id is not known until the end of execution + // and redirection to the next page. + $_SESSION['ceon_uri_mapping_' . $action] = array(); + $_SESSION['ceon_uri_mapping_' . $action]['current_category_id'] = $GLOBALS['current_category_id']; + $_SESSION['ceon_uri_mapping_' . $action]['post'] = $_POST; + } + + // Make class functions available to the global space for execution. + if (($action == 'new_category' || $action == 'edit_category')) { +/* + if ($action == 'new_category' || $action == 'edit_category') { + // BEGIN CEON URI MAPPING 2 of 4 + require_once(DIR_WS_CLASSES . 'class.CeonURIMappingAdminCategoryPages.php'); + + $ceon_uri_mapping_admin = new CeonURIMappingAdminCategoryPages(); + // END CEON URI MAPPING 2 of 4 +*/ + // BEGIN CEON URI MAPPING 2 of 4 + require_once(DIR_WS_CLASSES . 'class.CeonURIMappingAdminCategoryPages.php'); + + $GLOBALS['ceon_uri_mapping_admin'] = new CeonURIMappingAdminCategoryPages(); + // END CEON URI MAPPING 2 of 4 + } + } +} \ No newline at end of file diff --git a/NEUE DATEIEN/DEINADMIN/includes/classes/observers/class.CeonURIMappingDeleteCategoriesObserver.php b/NEUE DATEIEN/DEINADMIN/includes/classes/observers/class.CeonURIMappingDeleteCategoriesObserver.php new file mode 100644 index 0000000..20c9cd5 --- /dev/null +++ b/NEUE DATEIEN/DEINADMIN/includes/classes/observers/class.CeonURIMappingDeleteCategoriesObserver.php @@ -0,0 +1,59 @@ + + * @copyright Copyright 2008-2019 Ceon + * @copyright Copyright 2003-2021 Zen Cart Development Team + * @copyright Portions Copyright 2003 osCommerce + * @link http://ceon.net/software/business/zen-cart/uri-mapping + * @license http://www.zen-cart.com/license/2_0.txt GNU Public License V2.0 + * @version $Id: class.CeonURIMappingDeleteCategoriesObserver.php 1028 2021-06-23 09:31:10Z webchills $ + */ + +require_once DIR_FS_CATALOG . DIR_WS_CLASSES . 'class.CeonURIMappingAdmin.php'; + +class ceonAdminRemoveCategory extends CeonURIMappingAdmin { + + + /* + * This is the observer for the admin side of Ceon URI Mapping currently covering admin/includes/functions/general.php file to support when removing a category. + */ + function __construct() { + global $zco_notifier; + + $attachNotifier = array(); + $attachNotifier[] = 'NOTIFIER_ADMIN_ZEN_REMOVE_CATEGORY'; + + $zco_notifier->attach($this, $attachNotifier); + } + +/** + *zc 1.5.5 - + *zc 1.5.6 $zco_notifier->notify('NOTIFIER_ADMIN_ZEN_REMOVE_CATEGORY', array(), $category_id); + */ + public function notifier_admin_zen_remove_category(&$callingClass, $notifier, $paramsArray, &$category_id) { + + $selections = array( + 'main_page' => FILENAME_DEFAULT, + 'associated_db_id' => (int) $category_id + ); + + $this->deleteURIMappings($selections); + } + +/** + *zc 1.5.5 - + *zc 1.5.6 $zco_notifier->notify('NOTIFIER_ADMIN_ZEN_REMOVE_CATEGORY', array(), $category_id); + */ + public function updateNotifierAdminZenRemoveCategory(&$callingClass, $notifier, $paramsArray, &$category_id) { + $this->notifier_admin_zen_remove_category($callingClass, $notifier, $paramsArray, $category_id); + } + + public function update(&$callingClass, $notifier, $p1, &$p2 = null)//can use "update" or camelized notifier name. & required for &$link to modify it inside here + { + $this->notifier_admin_zen_remove_category($callingClass, $notifier, $p1, $p2); + } +} // EOF Class diff --git a/NEUE DATEIEN/DEINADMIN/includes/classes/observers/class.CeonURIMappingDeleteProductsObserver.php b/NEUE DATEIEN/DEINADMIN/includes/classes/observers/class.CeonURIMappingDeleteProductsObserver.php new file mode 100644 index 0000000..f594213 --- /dev/null +++ b/NEUE DATEIEN/DEINADMIN/includes/classes/observers/class.CeonURIMappingDeleteProductsObserver.php @@ -0,0 +1,59 @@ + + * @copyright Copyright 2008-2019 Ceon + * @copyright Copyright 2003-2021 Zen Cart Development Team + * @copyright Portions Copyright 2003 osCommerce + * @link http://ceon.net/software/business/zen-cart/uri-mapping + * @license http://www.zen-cart.com/license/2_0.txt GNU Public License V2.0 + * @version $Id: class.CeonURIMappingDeleteCategoriesObserver.php 1028 2021-06-23 09:45:10Z webchills $ + */ + +require_once DIR_FS_CATALOG . DIR_WS_CLASSES . 'class.CeonURIMappingAdmin.php'; + +class ceonAdminRemoveProducts extends CeonURIMappingAdmin { + + + /* + * This is the observer for the admin side of Ceon URI Mapping currently covering admin/includes/functions/general.php file to support when removing a product. + * zc 1.5.5: $zco_notifier->notify('NOTIFIER_ADMIN_ZEN_REMOVE_PRODUCT', array(), $product_id, $ptc); + */ + function __construct() { + global $zco_notifier; + + $attachNotifier = array(); + $attachNotifier[] = 'NOTIFIER_ADMIN_ZEN_REMOVE_PRODUCT'; + + $zco_notifier->attach($this, $attachNotifier); + } + +/** + *zc 1.5.5-1.5.6 $zco_notifier->notify('NOTIFIER_ADMIN_ZEN_REMOVE_PRODUCT', array(), $product_id, $ptc); + */ + public function notifier_admin_zen_remove_product(&$callingClass, $notifier, $paramsArray, &$product_id, &$ptc) { + global $ceon_uri_mapping_product_pages, $ceon_uri_mapping_product_related_pages; + + $selections = array( + 'main_page' => array_merge($ceon_uri_mapping_product_pages, $ceon_uri_mapping_product_related_pages), + 'associated_db_id' => (int) $product_id + ); + + $this->deleteURIMappings($selections); + } + +/** + *zc 1.5.5-1.5.6 $zco_notifier->notify('NOTIFIER_ADMIN_ZEN_REMOVE_PRODUCT', array(), $product_id, $ptc); + */ + public function updateNotifierAdminZenRemoveProduct(&$callingClass, $notifier, $paramsArray, &$product_id, &$ptc) { + $this->notifier_admin_zen_remove_product($callingClass, $notifier, $paramsArray, $product_id, $ptc); + } + + public function update(&$callingClass, $notifier, $p1, &$p2 = null)//can use "update" or camelized notifier name. & required for &$link to modify it inside here + { + $this->notifier_admin_zen_remove_product($callingClass, $notifier, $p1, $p2, null); + } +} // EOF Class diff --git a/NEUE DATEIEN/DEINADMIN/includes/classes/observers/class.CeonURIMappingLinkBuildAdmin.php b/NEUE DATEIEN/DEINADMIN/includes/classes/observers/class.CeonURIMappingLinkBuildAdmin.php new file mode 100644 index 0000000..9084852 --- /dev/null +++ b/NEUE DATEIEN/DEINADMIN/includes/classes/observers/class.CeonURIMappingLinkBuildAdmin.php @@ -0,0 +1,76 @@ + + * @author torvista + * @copyright Copyright 2008-2019 Ceon + * @copyright Copyright 2003-2021 Zen Cart Development Team + * @copyright Portions Copyright 2003 osCommerce + * @link https://ceon.net + * @license http://www.zen-cart.com/license/2_0.txt GNU Public License V2.0 + * @version $Id: class.CeonURIMappingLinkBuildAdmin.php 2021-06-23 09:43:10Z webchills $ + */ +class CeonURIMappingLinkBuildAdmin extends base +{ + public function __construct() + { + $this->attach($this, array('NOTIFY_SEFU_INTERCEPT_ADMCATHREF')); + } + + public function notify_sefu_intercept_admcathref(&$callingClass, $notifier, $p1, &$link, $page, $parameters, $connection)//can use "update" or camelized notifier name. & required for &$link to modify it inside here + { + if (!isset($link) && !isset($page) && !isset($parameters) && !isset($connection) && !isset($_SESSION['NotifySEFUInterceptAdmcathref'])) { + trigger_error('System not updated to handle editable notifier parameters. Need to properly update the operating system. This message will not be repeated for this session.', E_USER_WARNING); + $_SESSION['NotifySEFUInterceptAdmcathref'] = false; + } + + if (!defined('CEON_URI_MAPPING_ENABLED') || CEON_URI_MAPPING_ENABLED != 1 || isset($_SESSION['NotifySEFUInterceptAdmcathref'])) { + return; + } + + static $ceon_uri_mapping_href_link_builder; + + if (!isset($ceon_uri_mapping_href_link_builder)) { + require_once(DIR_FS_CATALOG . DIR_WS_CLASSES . 'class.CeonURIMappingHREFLinkBuilder.php'); + + $ceon_uri_mapping_href_link_builder = new CeonURIMappingHREFLinkBuilder(); + } + + if ($connection == 'NONSSL') { + $link = defined('HTTP_CATALOG_SERVER') ? HTTP_CATALOG_SERVER : HTTP_SERVER; + } elseif ($connection == 'SSL') { + if (ENABLE_SSL_CATALOG == 'true') { + $link = defined('HTTPS_CATALOG_SERVER') ? HTTPS_CATALOG_SERVER : (defined('HTTPS_SERVER') ? HTTPS_SERVER : HTTP_SERVER); + } else { + $link = defined('HTTP_CATALOG_SERVER') ? HTTP_CATALOG_SERVER : HTTP_SERVER; + } + } + + if ($ceon_uri_mapping_href_link_builder->buildHREFLink($link, $page, $parameters, $connection, false)) { + $link = $ceon_uri_mapping_href_link_builder->getHREFLink(); + } else { + $link = null; + } + } + + public function updateNotifySEFUInterceptAdmcathref(&$callingClass, $notifier, $p1, &$link, $page, $parameters, $connection)//can use "update" or camelized notifier name. & required for &$link to modify it inside here + { + $this->notify_sefu_intercept_admcathref($callingClass, $notifier, $p1, $link, $page, $parameters, $connection); + } + + public function update(&$callingClass, $notifier, $p1, &$link = null, $page = null, $parameters = null, $connection = null)//can use "update" or camelized notifier name. & required for &$link to modify it inside here + { + if (!isset($link) && !isset($page) && !isset($parameters) && !isset($connection) && !isset($_SESSION['NotifySEFUInterceptAdmcathref'])) { + trigger_error('System not updated to handle editable notifier parameters. Need to properly update the operating system. This message will not be repeated for this session.', E_USER_WARNING); + $_SESSION['NotifySEFUInterceptAdmcathref'] = false; + } + + if (!isset($_SESSION['NotifySEFUInterceptAdmcathref'])) { + $this->notify_sefu_intercept_admcathref($callingClass, $notifier, $p1, $link, $page, $parameters, $connection); + } + } +} \ No newline at end of file diff --git a/NEUE DATEIEN/DEINADMIN/includes/extra_datafiles/ceon_uri_mapping_database_tables.php b/NEUE DATEIEN/DEINADMIN/includes/extra_datafiles/ceon_uri_mapping_database_tables.php new file mode 100644 index 0000000..b4ed053 --- /dev/null +++ b/NEUE DATEIEN/DEINADMIN/includes/extra_datafiles/ceon_uri_mapping_database_tables.php @@ -0,0 +1,21 @@ + + * @copyright Copyright 2008-2019 Ceon + * @copyright Copyright 2003-2019 Zen Cart Development Team + * @copyright Portions Copyright 2003 osCommerce + * @link http://ceon.net/software/business/zen-cart/uri-mapping + * @license http://www.zen-cart.com/license/2_0.txt GNU Public License V2.0 + * @version $Id: ceon_uri_mapping_database_tables.php 2019-07-04 10:31:10Z webchills $ + */ + +if (!defined('IS_ADMIN_FLAG')) { + die('Illegal Access'); +} + +define('TABLE_CEON_URI_MAPPINGS', DB_PREFIX . 'ceon_uri_mappings'); +define('TABLE_CEON_URI_MAPPING_CONFIGS', DB_PREFIX . 'ceon_uri_mapping_configs'); +define('TABLE_CEON_URI_MAPPING_PRODUCT_RELATED_PAGES_URI_PARTS', DB_PREFIX . 'ceon_uri_mapping_prp_uri_parts'); \ No newline at end of file diff --git a/NEUE DATEIEN/DEINADMIN/includes/extra_datafiles/ceon_uri_mapping_filenames.php b/NEUE DATEIEN/DEINADMIN/includes/extra_datafiles/ceon_uri_mapping_filenames.php new file mode 100644 index 0000000..dbff15a --- /dev/null +++ b/NEUE DATEIEN/DEINADMIN/includes/extra_datafiles/ceon_uri_mapping_filenames.php @@ -0,0 +1,46 @@ + + * @copyright Copyright 2008-2019 Ceon + * @copyright Copyright 2003-2022 Zen Cart Development Team + * @copyright Portions Copyright 2003 osCommerce + * @link http://ceon.net/software/business/zen-cart/uri-mapping + * @license http://www.zen-cart.com/license/2_0.txt GNU Public License V2.0 + * @version $Id: ceon_uri_mapping_filenames.php 2022-02-19 20:31:10Z webchills $ + */ + +if (!defined('FILENAME_CEON_URI_MAPPING_CONFIG')) { + define('FILENAME_CEON_URI_MAPPING_CONFIG', 'ceon_uri_mapping_config'); +} +if (!defined('FILENAME_CEON_URI_MAPPING_INSTALLATION_CHECK')) { + define('FILENAME_CEON_URI_MAPPING_INSTALLATION_CHECK', 'ceon_uri_mapping_installation_check'); +} + +/** + * Product type info pages which are missing their defines. + */ +if (!defined('FILENAME_DOCUMENT_GENERAL_INFO')) { + define('FILENAME_DOCUMENT_GENERAL_INFO', 'document_general_info'); +} +if (!defined('FILENAME_DOCUMENT_PRODUCT_INFO')) { + define('FILENAME_DOCUMENT_PRODUCT_INFO', 'document_product_info'); +} +if (!defined('FILENAME_EZPAGES_POPUP')) { + define('FILENAME_EZPAGES_POPUP', 'ezpages_popup'); +} +if (!defined('FILENAME_PRODUCT_BOOK_INFO')) { + define('FILENAME_PRODUCT_BOOK_INFO', 'product_book_info'); +} +if (!defined('FILENAME_PRODUCT_FREE_SHIPPING_INFO')) { + define('FILENAME_PRODUCT_FREE_SHIPPING_INFO', 'product_free_shipping_info'); +} +if (!defined('FILENAME_PRODUCT_MUSIC_INFO')) { + define('FILENAME_PRODUCT_MUSIC_INFO', 'product_music_info'); +} +if (!defined('FILENAME_ASK_A_QUESTION')) { + define('FILENAME_ASK_A_QUESTION', 'ask_a_question'); +} diff --git a/NEUE DATEIEN/DEINADMIN/includes/extra_datafiles/ceon_uri_mapping_product_pages.php b/NEUE DATEIEN/DEINADMIN/includes/extra_datafiles/ceon_uri_mapping_product_pages.php new file mode 100644 index 0000000..7b5af76 --- /dev/null +++ b/NEUE DATEIEN/DEINADMIN/includes/extra_datafiles/ceon_uri_mapping_product_pages.php @@ -0,0 +1,17 @@ + + * @copyright Copyright 2008-2019 Ceon + * @copyright Copyright 2003-2019 Zen Cart Development Team + * @copyright Portions Copyright 2003 osCommerce + * @link http://ceon.net/software/business/zen-cart/uri-mapping + * @license http://www.zen-cart.com/license/2_0.txt GNU Public License V2.0 + * @version $Id: ceon_uri_mapping_product_pages.php 2019-07-04 17:31:10Z webchills $ + */ + +require_once(DIR_FS_ADMIN . DIR_WS_INCLUDES . 'extra_datafiles/ceon_uri_mapping_filenames.php'); +require_once(DIR_FS_CATALOG . DIR_WS_INCLUDES . 'extra_datafiles/ceon_uri_mapping_product_pages.php'); \ No newline at end of file diff --git a/NEUE DATEIEN/DEINADMIN/includes/functions/extra_functions/ceon_uri_mapping_admin_page_reg.php b/NEUE DATEIEN/DEINADMIN/includes/functions/extra_functions/ceon_uri_mapping_admin_page_reg.php new file mode 100644 index 0000000..f6d1a76 --- /dev/null +++ b/NEUE DATEIEN/DEINADMIN/includes/functions/extra_functions/ceon_uri_mapping_admin_page_reg.php @@ -0,0 +1,60 @@ + + * @copyright Copyright 2008-2019 Ceon + * @copyright Copyright 2003-2019 Zen Cart Development Team + * @copyright Portions Copyright 2003 osCommerce + * @link http://ceon.net/software/business/zen-cart/uri-mapping + * @license http://www.zen-cart.com/license/2_0.txt GNU Public License V2.0 + * @version $Id: ceon_uri_mapping_admin_page_reg.php 2019-07-04 17:31:10Z webchills $ + */ + +if (!defined('IS_ADMIN_FLAG')) { + die('Illegal Access'); +} + +// This file should normally only need to be run once, but if the user hasn't installed the software properly it +// may need to be run again. Flag tracks the situation +$can_autodelete = true; + +if (function_exists('zen_register_admin_page')) { + if (!zen_page_key_exists('ceon_uri_mapping_config')) { + // Register the Ceon URI Mapping Config Utility with the Zen Cart admin + + // Quick sanity check in case user hasn't uploaded a necessary file on which this depends + $error_messages = array(); + + if (!defined('FILENAME_CEON_URI_MAPPING_CONFIG')) { + $error_messages[] = 'The Ceon URI Mapping filename define is missing. Please check that the file ' . + DIR_WS_INCLUDES . 'extra_datafiles/' . 'ceon_uri_mapping_filenames.php has been uploaded.'; + + $can_autodelete = false; + + } + + if (count($error_messages) > 0) { + // Let the user know that there are problem(s) with the installation + foreach ($error_messages as $error_message) { + print '

' . + 'Error: ' . $error_message . "

\n"; + } + } else { + // Necessary file is in place so can register the admin page and have the menu item created + zen_register_admin_page('ceon_uri_mapping_config', 'BOX_CEON_URI_MAPPING', + 'FILENAME_CEON_URI_MAPPING_CONFIG', '', 'modules', 'Y', 40); + } + } +} + +if ($can_autodelete) { + // Either the config utility file has been registered, or it doesn't need to be. Can stop the wasteful process + // of having this script run again by having it delete itself + @unlink(DIR_WS_INCLUDES . 'functions/extra_functions/ceon_uri_mapping_admin_page_reg.php'); +} diff --git a/NEUE DATEIEN/DEINADMIN/includes/init_includes/init_ceon_category_collect_info.php b/NEUE DATEIEN/DEINADMIN/includes/init_includes/init_ceon_category_collect_info.php new file mode 100644 index 0000000..dee7689 --- /dev/null +++ b/NEUE DATEIEN/DEINADMIN/includes/init_includes/init_ceon_category_collect_info.php @@ -0,0 +1,118 @@ +notify('NOTIFY_BEGIN_ADMIN_CATEGORIES', $action); + $_POST = !empty($_SESSION['ceon_uri_mapping_insert_category']) ? $_SESSION['ceon_uri_mapping_insert_category']['post'] : $_SESSION['ceon_uri_mapping_update_category']['post']; + + if (!isset($languages)) { + $languages = zen_get_languages(); + $ceon_unset_languages = true; + } + + unset($_SESSION['ceon_uri_mapping_insert_category']); + unset($_SESSION['ceon_uri_mapping_update_category']); + + // BEGIN CEON URI MAPPING 1 of 3 + require_once(DIR_WS_CLASSES . 'class.CeonURIMappingAdminCategoryPages.php'); + + $ceon_uri_mapping_admin = new CeonURIMappingAdminCategoryPages(); + + $ceon_uri_mapping_admin->insertUpdateHandler($categories_id, $current_category_id); + // END CEON URI MAPPING 1 of 3 + + if (isset($ceon_unset_languages) && $ceon_unset_languages) { + unset($languages); + unset($ceon_unset_languages); + } + + zen_redirect(zen_href_link(FILENAME_CATEGORY_PRODUCT_LISTING, zen_get_all_get_params())); +} + +// Move_category_confirm perform +if (defined('FILENAME_CATEGORY_PRODUCT_LISTING') && $_SERVER['SCRIPT_NAME'] == DIR_WS_ADMIN . (!strstr(FILENAME_CATEGORY_PRODUCT_LISTING, '.php') ? FILENAME_CATEGORY_PRODUCT_LISTING . '.php' : FILENAME_CATEGORY_PRODUCT_LISTING) && isset($_SESSION['ceon_uri_mapping_move_category_confirm'])) { + $new_parent_id = isset($_GET['cPath']) ? $_GET['cPath'] : 0; + $current_category_id = !empty($_SESSION['ceon_uri_mapping_move_category']) ? $_SESSION['ceon_uri_mapping_insert_category']['current_category_id'] : 0; +// zen_redirect(zen_href_link(FILENAME_CATEGORY_PRODUCT_LISTING, 'cPath=' . $cPath . '&cID=' . $categories_id . ((isset($_GET['search']) && !empty($_GET['search'])) ? '&search=' . $_GET['search'] : ''))); +// categories was the calling file redirecting indicating that need to store data. +// 1 of 3 of the categories file. + +// action to be taken if the above redirect occurs and the conditions to get +// to the categories file support taking action. +// notifier +// $zco_notifier->notify('NOTIFY_BEGIN_ADMIN_CATEGORIES', $action); + $_POST = !empty($_SESSION['ceon_uri_mapping_move_category_confirm']) ? $_SESSION['ceon_uri_mapping_move_category_confirm'] : $_POST; + + if (!(isset($_POST['categories_id']) && ($_POST['categories_id'] != $_POST['move_to_category_id']))) { + unset($_SESSION['ceon_uri_mapping_move_category']); + zen_redirect(zen_href_link(FILENAME_CATEGORY_PRODUCT_LISTING, zen_get_all_get_params())); + } + + if (!isset($languages)) { + $languages = zen_get_languages(); + $ceon_unset_languages = true; + } + + $categories_id = zen_db_prepare_input($_POST['categories_id']); + $new_parent_id = zen_db_prepare_input($_POST['move_to_category_id']); + + unset($_SESSION['ceon_uri_mapping_move_category_confirm']); + + // BEGIN CEON URI MAPPING 1 of 3 + require_once(DIR_WS_CLASSES . 'class.CeonURIMappingAdminCategoryPages.php'); + + $ceon_uri_mapping_admin = new CeonURIMappingAdminCategoryPages(); + +// $ceon_uri_mapping_admin->insertUpdateHandler($categories_id, $current_category_id); + // END CEON URI MAPPING 1 of 3 + + if (isset($ceon_unset_languages) && $ceon_unset_languages) { + unset($languages); + unset($ceon_unset_languages); + } + + zen_redirect(zen_href_link(FILENAME_CATEGORY_PRODUCT_LISTING, zen_get_all_get_params())); +} + +// move_category_confirm initialize +// Because the operation will redirect at completion, want to identify if +// an action had been identified as to be done so that can be triggered at the +// next redirect. +if (defined('FILENAME_CATEGORY_PRODUCT_LISTING') && $_SERVER['SCRIPT_NAME'] == DIR_WS_ADMIN . (!strstr(FILENAME_CATEGORY_PRODUCT_LISTING, '.php') ? FILENAME_CATEGORY_PRODUCT_LISTING . '.php' : FILENAME_CATEGORY_PRODUCT_LISTING) && isset($_GET['action']) && $_GET['action'] == 'move_category_confirm') { + unset($_SESSION['ceon_uri_mapping_move_category_confirm']); + + // Need to set session if the conditions to perform the operation are correct. + if (isset($_POST['categories_id']) && ($_POST['categories_id'] != $_POST['move_to_category_id'])) { + $ceon_categories_id = zen_db_prepare_input($_POST['categories_id']); + $ceon_new_parent_id = zen_db_prepare_input($_POST['move_to_category_id']); + + $ceon_path = explode('_', zen_get_generated_category_path_ids($ceon_new_parent_id)); + + if (!in_array($ceon_categories_id, $ceon_path)) { + $_SESSION['ceon_uri_mapping_move_category_confirm'] = $_POST; + } + } +} diff --git a/NEUE DATEIEN/DEINADMIN/includes/init_includes/init_ceon_ezpages_collect_info.php b/NEUE DATEIEN/DEINADMIN/includes/init_includes/init_ceon_ezpages_collect_info.php new file mode 100644 index 0000000..98b15a6 --- /dev/null +++ b/NEUE DATEIEN/DEINADMIN/includes/init_includes/init_ceon_ezpages_collect_info.php @@ -0,0 +1,138 @@ + + * @author Ceon Support + * @copyright Copyright 2008-2019 Ceon + * @copyright Copyright 2003-2019 Zen Cart Development Team + * @copyright Portions Copyright 2003 osCommerce + * @link https://ceon.net + * $Id: init_ceon_ezpages_collect_info.php xxxx 2016-11-14 20:31:10Z Ceon Support $ + */ + + +if (defined('FILENAME_EZPAGES_ADMIN') && $_SERVER['SCRIPT_NAME'] == DIR_WS_ADMIN . (!strstr(FILENAME_EZPAGES_ADMIN, '.php') ? FILENAME_EZPAGES_ADMIN . '.php' : FILENAME_EZPAGES_ADMIN) && isset($_GET['action']) && $_GET['action'] == 'deleteconfirm') { + $pages_id = zen_db_prepare_input($_POST['ezID']); + + // BEGIN CEON URI MAPPING 2 of 4 + require_once(DIR_WS_CLASSES . 'class.CeonURIMappingAdminEZPagePages.php'); + + $ceon_uri_mapping_admin = new CeonURIMappingAdminEZPagePages(); + + $ceon_uri_mapping_admin->deleteConfirmHandler($pages_id); + + // END CEON URI MAPPING 2 of 4 + +} // EOF of the action for categories file. + +if (defined('FILENAME_EZPAGES_ADMIN') && $_SERVER['SCRIPT_NAME'] == DIR_WS_ADMIN . (!strstr(FILENAME_EZPAGES_ADMIN, '.php') ? FILENAME_EZPAGES_ADMIN . '.php' : FILENAME_EZPAGES_ADMIN) && (isset($_SESSION['ceon_uri_mapping_ezpages_insert']) || isset($_SESSION['ceon_uri_mapping_ezpages_update']))) { + $_POST = !empty($_SESSION['ceon_uri_mapping_ezpages_insert']) ? $_SESSION['ceon_uri_mapping_ezpages_insert'] : $_SESSION['ceon_uri_mapping_ezpages_update']; + + unset($_SESSION['ceon_uri_mapping_ezpages_insert']); + unset($_SESSION['ceon_uri_mapping_ezpages_update']); + + $pages_id = isset($_GET['ezID']) ? (int)$_GET['ezID'] : 0; + $pages_title_array = zen_db_prepare_input($_POST['pages_title']); + + // BEGIN CEON URI MAPPING 1 of 4 + require_once(DIR_WS_CLASSES . 'class.CeonURIMappingAdminEZPagePages.php'); + + $ceon_uri_mapping_admin = new CeonURIMappingAdminEZPagePages(); + + $ceon_uri_mapping_admin->insertUpdateHandler($pages_id, $pages_title_array, ((!empty($pages_title_array) && is_array($pages_title_array)) ? $pages_title_array : null)); + + // END CEON URI MAPPING 1 of 4 + + // Really should just redirect to the same uri that currently have... Will reduce the amount of work in the future. + zen_redirect(zen_href_link(FILENAME_EZPAGES_ADMIN, zen_get_all_get_params())); +} + + + + +if (defined('FILENAME_EZPAGES_ADMIN') && $_SERVER['SCRIPT_NAME'] == DIR_WS_ADMIN . (!strstr(FILENAME_EZPAGES_ADMIN, '.php') ? FILENAME_EZPAGES_ADMIN . '.php' : FILENAME_EZPAGES_ADMIN) && isset($_GET['action']) && ($_GET['action'] == 'insert' || $_GET['action'] == 'update')) { + + unset($_SESSION['ceon_uri_mapping_ezpages_insert']); + unset($_SESSION['ceon_uri_mapping_ezpages_update']); + + $languages = zen_get_languages(); + + if (isset($_POST['pages_id'])) { + $pages_id = zen_db_prepare_input($_POST['pages_id']); + } + + $page_open_new_window = (int)$_POST['page_open_new_window']; + $status_visible = (int)$_POST['status_visible']; + + + + + $alt_url = zen_db_prepare_input($_POST['alt_url']); + + $alt_url_external = zen_db_prepare_input($_POST['alt_url_external']); + + + + $pages_header_sort_order = (int)$_POST['header_sort_order']; + $pages_sidebox_sort_order = (int)$_POST['sidebox_sort_order']; + $pages_footer_sort_order = (int)$_POST['footer_sort_order']; + $pages_toc_sort_order = (int)$_POST['toc_sort_order']; + + $toc_chapter = (int)$_POST['toc_chapter']; + + $status_header = ($pages_header_sort_order == 0 ? 0 : (int)$_POST['status_header']); + $status_sidebox = ($pages_sidebox_sort_order == 0 ? 0 : (int)$_POST['status_sidebox']); + $status_footer = ($pages_footer_sort_order == 0 ? 0 : (int)$_POST['status_footer']); + $status_toc = ($pages_toc_sort_order == 0 ? 0 : (int)$_POST['status_toc']); + + $page_error = false; + for ($i = 0, $n = sizeof($languages); $i < $n; $i++) { + if (empty($_POST['pages_title'][$languages[$i]['id']])) { + $page_error = true; + } + } + + $zv_link_method_cnt = 0; + if ($alt_url != '') { + $zv_link_method_cnt++; + } + if ($alt_url_external != '') { + $zv_link_method_cnt++; + } + + $pages_html_text_count = 0; + for ($i = 0, $n = sizeof($languages); $i < $n; $i++) { + if (!empty($pages_html_text[$languages[$i]['id']]) && strlen(trim($pages_html_text[$languages[$i]['id']])) > 6) { + $pages_html_text_count = $i + 1; + } + } + if ($pages_html_text_count > 0) { + $zv_link_method_cnt++; + } + if ($zv_link_method_cnt > 1) { + $page_error = true; + } + + if ($page_error == false) { + // SET SESSION VARIABLE AWAITING REDIRECT. WHERE +// zen_redirect(zen_href_link(FILENAME_EZPAGES_ADMIN, (isset($_GET['page']) ? 'page=' . $_GET['page'] . '&' : '') . 'ezID=' . $pages_id)); + + $_SESSION['ceon_uri_mapping_ezpages_' . $_GET['action']] = $_POST; + } + +} + +if (defined('FILENAME_EZPAGES_ADMIN') && $_SERVER['SCRIPT_NAME'] == DIR_WS_ADMIN . (!strstr(FILENAME_EZPAGES_ADMIN, '.php') ? FILENAME_EZPAGES_ADMIN . '.php' : FILENAME_EZPAGES_ADMIN) && isset($_GET['action']) && $_GET['action'] == 'new') { + + $languages = zen_get_languages(); + + // BEGIN CEON URI MAPPING 3 of 4 + require_once(DIR_WS_CLASSES . 'class.CeonURIMappingAdminEZPagePages.php'); + + $ceon_uri_mapping_admin = new CeonURIMappingAdminEZPagePages(); + + $ceon_uri_mapping_admin->configureEnvironment(); + + // END CEON URI MAPPING 3 of 4 +} + diff --git a/NEUE DATEIEN/DEINADMIN/includes/init_includes/init_ceon_manufacturers_collect_info.php b/NEUE DATEIEN/DEINADMIN/includes/init_includes/init_ceon_manufacturers_collect_info.php new file mode 100644 index 0000000..cbcf947 --- /dev/null +++ b/NEUE DATEIEN/DEINADMIN/includes/init_includes/init_ceon_manufacturers_collect_info.php @@ -0,0 +1,64 @@ + + * @author Ceon Support + * @copyright Copyright 2008-2019 Ceon + * @copyright Copyright 2003-2019 Zen Cart Development Team + * @copyright Portions Copyright 2003 osCommerce + * @link https://ceon.net + * $Id: init_ceon_manufacturers_collect_info.php xxxx 2016-11-14 20:31:10Z Ceon Support $ + */ + + +if (defined('FILENAME_MANUFACTURERS') && $_SERVER['SCRIPT_NAME'] == DIR_WS_ADMIN . (!strstr(FILENAME_MANUFACTURERS, '.php') ? FILENAME_MANUFACTURERS . '.php' : FILENAME_MANUFACTURERS) && isset($_GET['action']) && $_GET['action'] == 'deleteconfirm') { + + if (!function_exists('zen_admin_demo') || !zen_admin_demo()) { + $manufacturers_id = zen_db_prepare_input($_POST['mID']); + + // BEGIN CEON URI MAPPING 2 of 4 + require_once(DIR_WS_CLASSES . 'class.CeonURIMappingAdminManufacturerPages.php'); + + $ceon_uri_mapping_admin = new CeonURIMappingAdminManufacturerPages(); + + $ceon_uri_mapping_admin->deleteConfirmHandler((int) $manufacturers_id); + + // END CEON URI MAPPING 2 of 4 + // don't redirect as this delete is to occur before the redirect of the manufacturers.php page. + } +} // EOF of the action for categories file. + +// $_SESSION['ceon_uri_mapping_manufacturers_insert'] || $_SESSION['ceon_uri_mapping_manufacturers_save'] +// Either is set identifying that such a request was made. +if (defined('FILENAME_MANUFACTURERS') && $_SERVER['SCRIPT_NAME'] == DIR_WS_ADMIN . (!strstr(FILENAME_MANUFACTURERS, '.php') ? FILENAME_MANUFACTURERS . '.php' : FILENAME_MANUFACTURERS) && (isset($_SESSION['ceon_uri_mapping_manufacturers_insert']) || isset($_SESSION['ceon_uri_mapping_manufacturers_save']))) { + $_POST = !empty($_SESSION['ceon_uri_mapping_manufacturers_insert']) ? $_SESSION['ceon_uri_mapping_manufacturers_insert'] : $_SESSION['ceon_uri_mapping_manufacturers_save']; + + unset($_SESSION['ceon_uri_mapping_manufacturers_insert']); + unset($_SESSION['ceon_uri_mapping_manufacturers_save']); + + $manufacturers_id = isset($_GET['mID']) ? (int)$_GET['mID'] : 0; + $manufacturers_name = zen_db_prepare_input($_POST['manufacturers_name']); + + // BEGIN CEON URI MAPPING 1 of 4 + require_once(DIR_WS_CLASSES . 'class.CeonURIMappingAdminManufacturerPages.php'); + + $ceon_uri_mapping_admin = new CeonURIMappingAdminManufacturerPages(); + + $ceon_uri_mapping_admin->insertSaveHandler((int) $manufacturers_id, $manufacturers_name); + + // END CEON URI MAPPING 1 of 4 + + // Really should just redirect to the same uri that currently have... Will reduce the amount of work in the future. + zen_redirect(zen_href_link(FILENAME_MANUFACTURERS, zen_get_all_get_params())); +} + +if (defined('FILENAME_MANUFACTURERS') && $_SERVER['SCRIPT_NAME'] == DIR_WS_ADMIN . (!strstr(FILENAME_MANUFACTURERS, '.php') ? FILENAME_MANUFACTURERS . '.php' : FILENAME_MANUFACTURERS) && isset($_GET['action']) && ($_GET['action'] == 'insert' || $_GET['action'] == 'save')) { + + unset($_SESSION['ceon_uri_mapping_manufacturers_insert']); + unset($_SESSION['ceon_uri_mapping_manufacturers_save']); + + // SET SESSION VARIABLE AWAITING REDIRECT. WHERE + // zen_redirect(zen_href_link(FILENAME_MANUFACTURERS, (isset($_GET['page']) ? 'page=' . $_GET['page'] . '&' : '') . 'mID=' . $manufacturers_id)); + $_SESSION['ceon_uri_mapping_manufacturers_' . $_GET['action']] = $_POST; +} + diff --git a/NEUE DATEIEN/DEINADMIN/includes/init_includes/init_ceon_product_collect_info.php b/NEUE DATEIEN/DEINADMIN/includes/init_includes/init_ceon_product_collect_info.php new file mode 100644 index 0000000..b6677dd --- /dev/null +++ b/NEUE DATEIEN/DEINADMIN/includes/init_includes/init_ceon_product_collect_info.php @@ -0,0 +1,137 @@ +ceon_uri_mapping_copy_product_confirmed)) { + unset($CeonURIMappingAdminCopy_Observe->ceon_uri_mapping_copy_product_confirmed); + unset($_SESSION['ceon_uri_mapping_copy_product_confirm']); + return; + } + $_POST = $_SESSION['ceon_uri_mapping_copy_product_confirm']; + $products_id_from = (int)zen_db_prepare_input($_POST['products_id']); + + $categories_id = !empty($_GET['cPath']) ? (int)$_GET['cPath'] : 0; + $products_id_to = !empty($_GET['pID']) ? (int)$_GET['pID'] : 0; + + $sql = "select products_type from " . TABLE_PRODUCTS . " where products_id=" . (int)$products_id_to; + $product = $db->Execute($sql); + + unset($_SESSION['ceon_uri_mapping_copy_product_confirm']); + + require_once(DIR_WS_CLASSES . 'class.CeonURIMappingAdminProductPages.php'); + + $ceon_uri_mapping_admin = new CeonURIMappingAdminProductPages(); + + $ceon_uri_mapping_admin->copyToConfirmHandler($products_id_from, $products_id_to, + $product->fields['products_type'], $zc_products->get_handler($product->fields['products_type']), + $categories_id); + + zen_redirect(zen_href_link(FILENAME_CATEGORY_PRODUCT_LISTING, zen_get_all_get_params())); +} // EOF of the action for category product listing file. + +// copy_product_confirm initialize +if (defined('FILENAME_CATEGORY_PRODUCT_LISTING') && $_SERVER['SCRIPT_NAME'] == DIR_WS_ADMIN . (!strstr(FILENAME_CATEGORY_PRODUCT_LISTING, '.php') ? FILENAME_CATEGORY_PRODUCT_LISTING . '.php' : FILENAME_CATEGORY_PRODUCT_LISTING) && isset($_GET['action']) && $_GET['action'] == 'copy_product_confirm') { + +// This information is to be captured on the front end + unset($_SESSION['ceon_uri_mapping_copy_product_confirm']); + + if (isset($_POST['products_id']) && isset($_POST['categories_id'])) { +// Copy attributes to duplicate product +// $products_id_from=$products_id; + if ($_POST['copy_as'] == 'duplicate') { + // created a new product that now has products_id of $dup_products_id, so need + // to find the new product_id that has information matching the old. + // The $products_id on the uri is equal to $dup_products_id or $products_id_to + // $products_id_to= $dup_products_id; + $_SESSION['ceon_uri_mapping_copy_product_confirm'] = $_POST; + } + } +} + +// insert_product and/or update_product perform +// Take action when a redirect occurs and previously detected that going to insert or update a product +// zen_redirect(zen_href_link(FILENAME_CATEGORY_PRODUCT_LISTING, 'cPath=' . $cPath . '&pID=' . $products_id . (isset($_GET['page']) ? '&page=' . $_GET['page'] : '') . (isset($_POST['search']) ? '&search=' . $_POST['search'] : ''))); +if (defined('FILENAME_CATEGORY_PRODUCT_LISTING') && $_SERVER['SCRIPT_NAME'] == DIR_WS_ADMIN . (!strstr(FILENAME_CATEGORY_PRODUCT_LISTING, '.php') ? FILENAME_CATEGORY_PRODUCT_LISTING . '.php' : FILENAME_CATEGORY_PRODUCT_LISTING) && (isset($_SESSION['ceon_uri_mapping_insert_product']) || isset($_SESSION['ceon_uri_mapping_update_product']))) { + + // BEGIN CEON URI MAPPING 1 of 1 + $products_id = $_GET['pID']; + $_POST = !empty($_SESSION['ceon_uri_mapping_insert_product']) ? $_SESSION['ceon_uri_mapping_insert_product'] : $_SESSION['ceon_uri_mapping_update_product']; + $product_type = (int)$_POST['product_type']; + + if (!isset($languages)) { + $languages = zen_get_languages(); + $ceon_unset_languages = true; + } + + require_once(DIR_WS_CLASSES . 'class.CeonURIMappingAdminProductPages.php'); + + $ceon_uri_mapping_admin = new CeonURIMappingAdminProductPages(); + + $ceon_uri_mapping_admin->updateProductHandler($products_id, $zc_products->get_handler($product_type)); + + if (isset($ceon_unset_languages) && $ceon_unset_languages) { + unset($languages); + unset($ceon_unset_languages); + } + + unset($_SESSION['ceon_uri_mapping_insert_product']); + unset($_SESSION['ceon_uri_mapping_update_product']); + + zen_redirect(zen_href_link(FILENAME_CATEGORY_PRODUCT_LISTING, zen_get_all_get_params())); +} + + +// notifier +// $zco_notifier->notify('NOTIFY_BEGIN_ADMIN_CATEGORIES', $action); + +// move_product_confirm perform +// zen_redirect(zen_href_link(FILENAME_CATEGORY_PRODUCT_LISTING, 'cPath=' . $new_parent_id . '&pID=' . $products_id . (isset($_GET['page']) ? '&page=' . $_GET['page'] : ''))); +if (defined('FILENAME_CATEGORY_PRODUCT_LISTING') && $_SERVER['SCRIPT_NAME'] == DIR_WS_ADMIN . (!strstr(FILENAME_CATEGORY_PRODUCT_LISTING, '.php') ? FILENAME_CATEGORY_PRODUCT_LISTING . '.php' : FILENAME_CATEGORY_PRODUCT_LISTING) && isset($_SESSION['ceon_uri_mapping_move_product_confirm'])) { + + $new_parent_id = $_GET['cPath']; + $products_id = $_GET['pID']; + $_POST = $_SESSION['ceon_uri_mapping_move_product_confirm']; + + // BEGIN CEON URI MAPPING 1 of 1 + require_once(DIR_WS_CLASSES . 'class.CeonURIMappingAdminProductPages.php'); + + $ceon_uri_mapping_admin = new CeonURIMappingAdminProductPages(); + + $ceon_uri_mapping_admin->moveProductConfirmHandler($products_id, zen_get_products_type($products_id), $zc_products->get_handler(zen_get_products_type($products_id)), $new_parent_id); //torvista https://github.com/torvista/CEON-URI-Mapping/pull/3/files#diff-0 + + // END CEON URI MAPPING 1 of 1 + unset($_SESSION['ceon_uri_mapping_move_product_confirm']); + + zen_redirect(zen_href_link(FILENAME_CATEGORY_PRODUCT_LISTING, zen_get_all_get_params())); +} + +// move_product_confirm initialize +if (defined('FILENAME_CATEGORY_PRODUCT_LISTING') && $_SERVER['SCRIPT_NAME'] == DIR_WS_ADMIN . (!strstr(FILENAME_CATEGORY_PRODUCT_LISTING, '.php') ? FILENAME_CATEGORY_PRODUCT_LISTING . '.php' : FILENAME_CATEGORY_PRODUCT_LISTING) && isset($_GET['action']) && $_GET['action'] == 'move_product_confirm') { + + unset($_SESSION['ceon_uri_mapping_move_product_confirm']); + + $products_id = zen_db_prepare_input($_POST['products_id']); + $new_parent_id = zen_db_prepare_input($_POST['move_to_category_id']); + + $duplicate_check = $db->Execute("SELECT COUNT(*) AS total + FROM " . TABLE_PRODUCTS_TO_CATEGORIES . " + WHERE products_id = " . (int)$products_id . " + AND categories_id = " . (int)$new_parent_id); + + if ($duplicate_check->fields['total'] < 1) { + $_SESSION['ceon_uri_mapping_move_product_confirm'] = $_POST; + } +} + diff --git a/NEUE DATEIEN/DEINADMIN/includes/languages/english/ceon_uri_mapping_admin_pages.php b/NEUE DATEIEN/DEINADMIN/includes/languages/english/ceon_uri_mapping_admin_pages.php new file mode 100644 index 0000000..43c73cd --- /dev/null +++ b/NEUE DATEIEN/DEINADMIN/includes/languages/english/ceon_uri_mapping_admin_pages.php @@ -0,0 +1,23 @@ + + * @copyright Copyright 2008-2019 Ceon + * @copyright Copyright 2003-2019 Zen Cart Development Team + * @copyright Portions Copyright 2003 osCommerce + * @link http://ceon.net/software/business/zen-cart/uri-mapping + * @license http://www.zen-cart.com/license/2_0.txt GNU Public License V2.0 + * @version $Id: ceon_uri_mapping_admin_pages.php 2018-03-29 08:31:10Z webchills $ + */ + +define('CEON_URI_MAPPING_TEXT_URI_AUTOGEN_ONE_EXISTING_MAPPING', 'Please Note: The existing mapping will be replaced by an auto-generated URI if this box is ticked!'); +define('CEON_URI_MAPPING_TEXT_URI_AUTOGEN_ALL_EXISTING_MAPPINGS', 'Please Note: All the existing mappings will be replaced by auto-generated URIs if this box is ticked!'); +define('CEON_URI_MAPPING_TEXT_URI_AUTOGEN_SOME_EXISTING_MAPPINGS', 'Please Note: The existing mappings will be replaced by auto-generated URIs if this box is ticked!'); +define('CEON_URI_MAPPING_TEXT_URI_AUTOGEN_DISABLED', '(Auto-generation of URIs is disabled. Any URI mappings must be entered manually.)'); + +define('CEON_URI_MAPPING_TEXT_ERROR_ADD_MAPPING_EXISTS', '%s URI Mapping NOT added as a mapping already exists for %s'); +define('CEON_URI_MAPPING_TEXT_ERROR_ADD_MAPPING_DATA', '%s URI Mapping NOT added as the data supplied was invalid %s'); +define('CEON_URI_MAPPING_TEXT_ERROR_ADD_MAPPING_DB', '%s URI Mapping NOT added as database error was encountered %s'); \ No newline at end of file diff --git a/NEUE DATEIEN/DEINADMIN/includes/languages/english/ceon_uri_mapping_category_pages.php b/NEUE DATEIEN/DEINADMIN/includes/languages/english/ceon_uri_mapping_category_pages.php new file mode 100644 index 0000000..ec95032 --- /dev/null +++ b/NEUE DATEIEN/DEINADMIN/includes/languages/english/ceon_uri_mapping_category_pages.php @@ -0,0 +1,30 @@ + + * @copyright Copyright 2008-2019 Ceon + * @copyright Copyright 2003-2019 Zen Cart Development Team + * @copyright Portions Copyright 2003 osCommerce + * @link http://ceon.net/software/business/zen-cart/uri-mapping + * @license http://www.zen-cart.com/license/2_0.txt GNU Public License V2.0 + * @version $Id: ceon_uri_mapping_category_pages.php 2018-03-29 08:31:10Z webchills $ + */ + +define('CEON_URI_MAPPING_TEXT_CATEGORY_URI', 'URI Mapping:'); + +define('CEON_URI_MAPPING_TEXT_CATEGORY_URI_AUTOGEN', 'Tick this box to have the URI auto-generated for this category.'); +define('CEON_URI_MAPPING_TEXT_CATEGORY_URIS_AUTOGEN', 'Tick this box to have the URIs auto-generated for this category.'); + +define('CEON_URI_MAPPING_TEXT_CATEGORY_MAPPING_ADDED', '%s URI Mapping added: %s'); +define('CEON_URI_MAPPING_TEXT_CATEGORY_MAPPING_UPDATED', '%s URI Mapping updated: %s'); +define('CEON_URI_MAPPING_TEXT_CATEGORY_MAPPING_MADE_HISTORICAL', '%s URI Mapping converted to historical mapping'); + +if (!defined('CEON_URI_MAPPING_TEXT_URI_AUTOGEN_ONE_EXISTING_MAPPING')) { + require_once('ceon_uri_mapping_admin_pages.php'); +} + +define('CEON_URI_MAPPING_TEXT_ERROR_AUTOGENERATION_CATEGORY_HAS_NO_NAME', '%s URI Mapping cannot be generated as the category has no name!'); +define('CEON_URI_MAPPING_TEXT_ERROR_AUTOGENERATION_A_PARENT_CATEGORY_HAS_NO_NAME', '%s URI Mapping cannot be generated for category as a category it is in has no name!'); \ No newline at end of file diff --git a/NEUE DATEIEN/DEINADMIN/includes/languages/english/ceon_uri_mapping_config.php b/NEUE DATEIEN/DEINADMIN/includes/languages/english/ceon_uri_mapping_config.php new file mode 100644 index 0000000..660ed58 --- /dev/null +++ b/NEUE DATEIEN/DEINADMIN/includes/languages/english/ceon_uri_mapping_config.php @@ -0,0 +1,89 @@ + + * @copyright Copyright 2008-2019 Ceon + * @copyright Copyright 2003-2022 Zen Cart Development Team + * @copyright Portions Copyright 2003 osCommerce + * @link http://ceon.net/software/business/zen-cart/uri-mapping + * @license http://www.zen-cart.com/license/2_0.txt GNU Public License V2.0 + * @version $Id: ceon_uri_mapping_config.php 2022-02-19 20:34:10Z webchills $ + */ + +define('HEADING_TITLE', 'Ceon URI Mapping (SEO) Config'); + +define('SUCCESS_MODULE_INSTALLED', 'Module (version %s) was installed successfully.'); +define('SUCCESS_DATABASE_AND_CONFIG_UPDATED', 'Database and configuration were successfully updated to version %s'); +define('SUCCESS_DATABASE_AND_CONFIG_UP_TO_DATE', 'Database and configuration are up to date, using version %s'); + +if (!defined('TEXT_YES')) { define('TEXT_YES', 'Yes'); } +if (!defined('TEXT_NO')) { define('TEXT_NO', 'No'); } + +define('TEXT_AUTOGEN_CONFIG', 'URI Auto-generation Settings'); +define('TEXT_LABEL_AUTOGEN_ENABLED_NEW', 'Offer Auto-generation of URIs for Categories, Products, Manufacturers and EZ-Pages:'); +define('TEXT_CONFIG_DESC_AUTOGEN_ENABLED_NEW', '

Should the option to auto-generate URIs be offered in the admin for Categories/Products/Manufacturers/EZ-Pages?

Generated URIs are based on their Category Names/Product Names/Manufacturer Names/EZ-Page Titles. For Products/Categories the full Category Path is used.

'); + +define('TEXT_LABEL_WHITESPACE_REPLACEMENT', 'Whitespace Replacement:'); +define('TEXT_CONFIG_DESC_WHITESPACE_REPLACEMENT', '

What should whitespace be replaced with in auto-generated URIs?

'); + +define('TEXT_WHITESPACE_REPLACEMENT_SINGLE_UNDERSCORE', 'Single Underscore "_"'); +define('TEXT_WHITESPACE_REPLACEMENT_SINGLE_DASH', 'Single Dash "-"'); +define('TEXT_WHITESPACE_REPLACEMENT_SINGLE_FULL_STOP', 'Single Full Stop/Period "."'); +define('TEXT_WHITESPACE_REPLACEMENT_REMOVE', 'Remove whitespace altogether'); + +define('TEXT_LABEL_CAPITALISATION', 'Capitalisation:'); +define('TEXT_CONFIG_DESC_CAPITALISATION', '

What capitalisation should be used in auto-generated URIs?

Please note: Customers can use any capitalisation they want without breaking the store as all URIs are mapped case-insensitively. Using capitalisation can make the store URIs look “prettier” though!

'); + +define('TEXT_CAPITALISATION_LOWERCASE', 'Convert Category Names/Product Names/Manufacturer Names/EZ-Page Titles to lowercase (E.g. “medalofhonor”/“medal-of-honor”).'); +define('TEXT_CAPITALISATION_AS_IS', 'Use the names/titles as they are (E.g. “MedalofHonor”/“Medal-of-Honor”).'); +define('TEXT_CAPITALISATION_UCFIRST', 'Capitalise the first letter of each word in the names/titles (E.g. “MedalOfHonor”/“Medal-Of-Honor”).'); + +define('TEXT_LABEL_REMOVE_WORDS', 'Remove Words:'); +define('TEXT_CONFIG_DESC_REMOVE_WORDS', '

This is a comma-separated list of words which will be removed from the auto-generated URIs. Single characters can also be entered but will only be removed if they are surrounded by spaces (e.g. “-” entered below will remove the dash from “Star Wars - Director\'s Cut” but not from “Spider-Man”).

For example, if the store would like to remove “-”, “and” and “an” from the URIs you\'d enter the following:

-, and, an

'); + +define('TEXT_LABEL_CHAR_STR_REPLACEMENTS', 'Character/String Replacements:'); +define('TEXT_CONFIG_DESC_CHAR_STR_REPLACEMENTS', '

This is a comma-separated list of pairs of characters/strings and replacement characters/strings.

The characters/strings to be replaced in the auto-generated URIs should be separated from their replacements using “=>”. E.g. “£=>GBP, $=>USD”.

Any spacing entered for a replacement will be used but replaced with the usual whitespace replacement character (so be careful not leave an extra space at the end of the text entered below if it is not intended!). Spacing entered for the strings/characters to be replaced will be removed/ignored; so it\'s fine to add a space after each comma, to make things easier to read.

To remove a character/string simply replace it with nothing. E.g. “£=>, $=>” removes £ and $ dollar signs from the auto-generated URI.

'); + +define('TEXT_LABEL_MAPPING_CLASH_ACTION', 'Mapping Clash Action:'); +define('TEXT_CONFIG_DESC_MAPPING_CLASH_ACTION', '

What action should be taken when a URI mapping being auto-generated clashes with an existing URI mapping?

(Please note the auto-append functionality only applies for product mappings; any clashes which occur with other page types will simply result in a warning being displayed and no changes being made).

'); + +define('TEXT_LABEL_LANGUAGE_CODE_ADD_ENABLED', 'Add Language identifier to URI:'); +define('TEXT_CONFIG_DESC_LANGUAGE_CODE_ADD_ENABLED', '

Should the option to auto-generate URIs be offered in the admin for Categories/Products/Manufacturers/EZ-Pages with the language code (en, de, etc...)?

Generated URIs based on their Category Names/Product Names/Manufacturer Names/EZ-Page Titles can include the language code identifier. For Products/Categories the full Category Path is used with the language code before any other rewritten URI part.

'); + +define('TEXT_MAPPING_CLASH_ACTION_WARN', 'Warn User - The mapping should not be created and instead the user should be warned that the mapping could not be saved/auto-generated.'); +define('TEXT_MAPPING_CLASH_ACTION_AUTO_APPEND', 'Auto-append a Number - A unique mapping should be automatically generated by appending a number (an integer) to the end of any product mapping that clashes. E.g. if the mapping /books/life-is-good already existed, an attempt would be made to use /books/life-is-good1, then /books/life-is-good2 etc.'); + +define('TEXT_AUTO_MANAGED_PRODUCT_URIS', 'Auto-managed Product Page URIs'); +define('TEXT_LABEL_AUTO_MANAGED_PRODUCT_URIS', 'Automatically Managed URIs for Pages Related to a Product:'); +define('TEXT_CONFIG_DESC_AUTO_MANAGED_PRODUCT_URIS', '

When adding/updating a URI mapping for a product, mappings can also be automatically added/updated for pages related to the product page.

For any page type enabled below, whenever a product URI is added/updated, the respective “URI part”, for the appropriate language, will be appended to the product\'s URI and saved as the URI mapping for that page.

For example, if a new product is added with a URI mapping of “/books/life-is-good”, and auto-adding is enabled for the “tell a friend” page, with a URI part of “tell-a-friend”, a new URI mapping of “/books/life-is-good/tell-a-friend” will be added for that product\'s tell a friend page.

Whenever a product\'s URI is changed, the page types enabled below will also have their URIs updated accordingly.

'); +define('TEXT_INSTRUCTIONS_AUTO_MANAGED_PRODUCT_URIS', 'Tick the page types which should have their URIs auto-managed...'); +define('TEXT_LABEL_AUTO_MANAGED_URI_REVIEWS', 'Products\' Reviews Pages'); +define('TEXT_LABEL_AUTO_MANAGED_URI_REVIEW_INFO', 'Products\' Review Info Pages'); +define('TEXT_LABEL_AUTO_MANAGED_URI_WRITE_A_REVIEW', 'Products\' Write A Review Pages'); +define('TEXT_LABEL_AUTO_MANAGED_URI_ASK_A_QUESTION', 'Products\' Ask A Question Pages'); +define('TEXT_LABEL_AUTO_MANAGED_PRODUCT_URIS_URI_PARTS', 'URI Parts Text:'); +define('TEXT_CONFIG_DESC_AUTO_MANAGED_PRODUCT_URIS_URI_PARTS', '

Enter the text to be used for the URI parts to be appended to the product URIs when auto-managing the respective pages.

Whenever a URI mapping is being created using these URI parts, the standard auto-generation rules (Whitespace Replacement, Capitalisation etc.) will be applied, so these URI parts\' text can contain spaces and capital letters, which will then be adjusted if necessary when creating a mapping, according to the store\'s settings above.

'); + +define('TEXT_ERROR_URI_PART_MUST_BE_ENTERED', 'A URI part must be entered here.'); + +define('TEXT_VERSION_CHECKING', 'Version Checking'); +define('TEXT_LABEL_AUTOMATIC_VERSION_CHECKING', 'Automatic Version Checking:'); +define('TEXT_CONFIG_DESC_AUTOMATIC_VERSION_CHECKING', '

Use Automatic or Manual Version Checking?

With automatic version checking, the latest version information is displayed at the bottom right of this page. (The check only takes place once, when this Config Utility page is first loaded).

With manual checking, you must click the link at the bottom right of this page to find out what the latest version of the software is.

'); +define('TEXT_AUTOMATIC_VERSION_CHECKING', 'Automatic Version Checking'); +define('TEXT_MANUAL_VERSION_CHECKING', 'Manual Version Checking'); + +define('TEXT_INSTALLATION_CHECK', 'Installation Check'); +define('TEXT_INSTALLATION_DESC', 'The installation check will examine the store\'s configuration files and warn you about any mistakes in the files which you need to correct, and will even provide full information about what you should do.

It will also check all the core files that must be modified for Ceon URI Mapping to work optimally, and warn you if any of the modifications are missing or out of date, again giving information on what you should do!'); +define('TEXT_LINK_TO_INSTALLATION_CHECK', 'Click here to go to the Ceon URI Mapping Installation Check page.'); +define('TEXT_CONFIG_CHECK', 'Configuration Check'); +define('TEXT_CONFIG_DESC', 'If a problem occurred when installing or upgrading Ceon URI Mapping, the configuration can be checked and, hopefully, repaired automagically.'); +define('TEXT_LINK_TO_CONFIG_CHECK', 'Click here to run the configuration checker.'); + +define('TEXT_ERROR_IN_CONFIG', 'A problem was found with the configuration. Please fix the error highlighted below, then try again to save the changes.'); +define('TEXT_ERRORS_IN_CONFIG', '%s problems were found with the configuration. Please fix the errors highlighted below, then try again to save the changes.'); + +define('SUCCESS_CONFIGURATION_SAVED', 'Configuration was successfully saved!'); +define('SUCCESS_CONFIGURATION_SAVED_DEMO', '[DEMO MODE] Configuration would have been saved if module was not in demo mode!'); \ No newline at end of file diff --git a/NEUE DATEIEN/DEINADMIN/includes/languages/english/ceon_uri_mapping_default_uri_parts.php b/NEUE DATEIEN/DEINADMIN/includes/languages/english/ceon_uri_mapping_default_uri_parts.php new file mode 100644 index 0000000..f37c606 --- /dev/null +++ b/NEUE DATEIEN/DEINADMIN/includes/languages/english/ceon_uri_mapping_default_uri_parts.php @@ -0,0 +1,40 @@ + + * @copyright Copyright 2008-2019 Ceon + * @copyright Copyright 2003-2022 Zen Cart Development Team + * @copyright Portions Copyright 2003 osCommerce + * @link http://ceon.net/software/business/zen-cart/uri-mapping + * @license http://www.zen-cart.com/license/2_0.txt GNU Public License V2.0 + * @version $Id: ceon_uri_mapping_default_uri_parts.php 2022-02-19 20:35:10Z webchills $ + */ + +/** + * The language defines for the default URI part text to be used for the product related pages' URI + * parts (the product reviews pages). + * + * These defines are only used when installing or updating the module, as fallbacks, if the store + * hasn't already specified custom URI part text for a language the store uses. + * + * 1) If translating this for other languages: first, Thanks! + * + * Copy this file to admin/includes/LANGUAGE/ceon_uri_mapping_default_uri_parts.php + * + * 2) EACH LANGUAGE REQUIRES A UNIQUELY NAMED DEFINE. + * + * The last two letters in the define names should be the language's two letter code. + * + * 3) The entire define name must be uppercase. + * + * For example: + * + * DEFAULT_URI_PART_PRODUCT_REVIEWS_DE for German or DEFAULT_URI_PART_PRODUCT_REVIEWS_FR for French + */ +define('DEFAULT_URI_PART_PRODUCT_REVIEWS_EN', 'Reviews'); +define('DEFAULT_URI_PART_REVIEWS_INFO_EN', 'Review'); +define('DEFAULT_URI_PART_REVIEWS_WRITE_EN', 'Add a Review'); +define('DEFAULT_URI_PART_ASK_A_QUESTION_EN', 'Ask a Question'); diff --git a/NEUE DATEIEN/DEINADMIN/includes/languages/english/ceon_uri_mapping_ezpage_pages.php b/NEUE DATEIEN/DEINADMIN/includes/languages/english/ceon_uri_mapping_ezpage_pages.php new file mode 100644 index 0000000..4f434e4 --- /dev/null +++ b/NEUE DATEIEN/DEINADMIN/includes/languages/english/ceon_uri_mapping_ezpage_pages.php @@ -0,0 +1,29 @@ + + * @copyright Copyright 2008-2019 Ceon + * @copyright Copyright 2003-2019 Zen Cart Development Team + * @copyright Portions Copyright 2003 osCommerce + * @link http://ceon.net/software/business/zen-cart/uri-mapping + * @license http://www.zen-cart.com/license/2_0.txt GNU Public License V2.0 + * @version $Id: ceon_uri_mapping_ezpage_pages.php 2018-03-29 08:31:10Z webchills $ + */ + +define('CEON_URI_MAPPING_TEXT_EZ_PAGE_URI', 'URI Mapping:'); + +define('CEON_URI_MAPPING_TEXT_EZ_PAGE_URI_AUTOGEN', 'Tick this box to have the URI auto-generated for this EZ-Page.'); +define('CEON_URI_MAPPING_TEXT_EZ_PAGE_URIS_AUTOGEN', 'Tick this box to have the URIs auto-generated for this EZ-Page.'); + +define('CEON_URI_MAPPING_TEXT_EZ_PAGE_MAPPING_ADDED', '%s URI Mapping added: %s'); +define('CEON_URI_MAPPING_TEXT_EZ_PAGE_MAPPING_UPDATED', '%s URI Mapping updated: %s'); +define('CEON_URI_MAPPING_TEXT_EZ_PAGE_MAPPING_MADE_HISTORICAL', '%s URI Mapping converted to historical mapping'); + +if (!defined('CEON_URI_MAPPING_TEXT_URI_AUTOGEN_ONE_EXISTING_MAPPING')) { + require_once('ceon_uri_mapping_admin_pages.php'); +} + +define('CEON_URI_MAPPING_TEXT_ERROR_AUTOGENERATION_EZ_PAGE_HAS_NO_NAME', '%s URI Mapping cannot be generated as the EZ-Page has no name!'); \ No newline at end of file diff --git a/NEUE DATEIEN/DEINADMIN/includes/languages/english/ceon_uri_mapping_installation_check.php b/NEUE DATEIEN/DEINADMIN/includes/languages/english/ceon_uri_mapping_installation_check.php new file mode 100644 index 0000000..1c50743 --- /dev/null +++ b/NEUE DATEIEN/DEINADMIN/includes/languages/english/ceon_uri_mapping_installation_check.php @@ -0,0 +1,291 @@ + + * @copyright Copyright 2008-2019 Ceon + * @copyright Copyright 2003-2019 Zen Cart Development Team + * @copyright Portions Copyright 2003 osCommerce + * @link http://ceon.net/software/business/zen-cart/uri-mapping + * @license http://www.zen-cart.com/license/2_0.txt GNU Public License V2.0 + * @version $Id: ceon_uri_mapping_installation_check.php 1027 2012-07-17 20:31:10Z conor $ + */ + +define('HEADING_TITLE', 'Ceon URI Mapping Installation Check'); + +define('TEXT_INSTALLATION_CHECK', 'Installation Check'); + +define('TEXT_NO_ERRORS_FOUND_TITLE', 'Congratulations! All the checks passed!'); +define('TEXT_NO_ERRORS_FOUND', 'No problems were found with the settings in the store\'s configuration files, and all the modified core files have the correct modifications present!'); +define('TEXT_NO_CHECKS_MADE_FOR_REWRITE_RULE', 'This installation check does not check the rewrite rule for the store though, so please read and apply the following if you have not already done so..'); + +define('TEXT_ERROR_FOUND_TITLE', 'Error Found!'); +define('TEXT_ERRORS_FOUND_TITLE', 'Errors Found!'); +define('TEXT_CONFIG_FILE_ERROR_SO_NO_REWRITE_RULE_OUTPUT', 'A problem was found the settings in the store\'s configuration files, so the example rewrite rule panel cannot yet be built.'); +define('TEXT_CONFIG_FILE_ERRORS_SO_NO_REWRITE_RULE_OUTPUT', '%s problems were found the settings in the store\'s configuration files, so the example rewrite rule panel cannot yet be built.'); +define('TEXT_PLEASE_FIX_CONFIG_FILE_ERROR', 'Please fix the error in the configuration files, as listed below...'); +define('TEXT_PLEASE_FIX_CONFIG_FILE_ERRORS', 'Please fix the errors in the configuration files, as listed below...'); + +define('TEXT_MODIFIED_CORE_FILE_ERROR', 'A problem was found with one of the core files that needs to be modified for Ceon URI Mapping to work optimally.'); +define('TEXT_MODIFIED_CORE_FILE_ERRORS', '%s problems were found with core files that need to be modified for Ceon URI Mapping to work optimally.'); +define('TEXT_PLEASE_FIX_MODIFIED_CORE_FILE_ERROR', 'The error should be fixed as soon as possible. In the meantime though, since the store\'s configure files have been checked and found to be valid, information about the example rewrite rule for the store was able to be built.'); +define('TEXT_PLEASE_FIX_MODIFIED_CORE_FILE_ERRORS', 'The errors should be fixed as soon as possible. In the meantime though, since the store\'s configure files have been checked and found to be valid, information about the example rewrite rule for the store was able to be built.'); + +define('TEXT_OLD_FILE_DIR_ERROR', 'A file/directory for an older version of Ceon URI Mapping was found. The attempt to delete it failed, so it must be manually deleted.'); +define('TEXT_OLD_FILE_DIR_ERRORS', '%s files/directories for an older version of Ceon URI Mapping were found. The attempt to delete them failed, so they must be manually deleted.'); +define('TEXT_PLEASE_FIX_OLD_FILE_DIR_ERROR', 'The file/directory should be deleted as soon as possible as otherwise a blank page may be displayed. In the meantime though, since the store\'s configure files have been checked and found to be valid, information about the example rewrite rule for the store was able to be built.'); +define('TEXT_PLEASE_FIX_OLD_FILE_DIR_ERRORS', 'The files/directories should be deleted as soon as possible as otherwise a blank page may be displayed. In the meantime though, since the store\'s configure files have been checked and found to be valid, information about the example rewrite rule for the store was able to be built.'); + +define('TEXT_STORE_CONFIGURATION_FILES_CHECK', 'Store Configuration Files Check'); +define('TEXT_MODIFIED_CORE_FILES_CHECK', 'Modified Core Files Check'); +define('TEXT_MODIFIED_OLD_FILES_DIRS_CHECK', 'Old Version Files/Directories Check'); + +define('TEXT_ERROR_VALUE_FOR_ADMIN_SERVER_VARIABLE', 'The value for %s in the store\'s admin configure.php file is wrong.'); +define('TEXT_ERROR_VALUE_FOR_SERVER_VARIABLE', 'The value for %s in the store side\'s configure.php file is wrong.'); +define('TEXT_CURRENT_INCORRECT_VALUE_FOR_SERVER_VARIABLE', 'The current value for %s is “%s”.'); + +define('TEXT_HTTP_SERVER_VALUES_CANNOT_HAVE_A_SLASH_AT_END', 'The value for %s cannot have a slash at the end.'); +define('TEXT_REMOVE_SLASH_FROM_END', 'You must update the value for %s to remove the slash from the end.'); +define('TEXT_HTTP_SERVER_VALUES_CANNOT_USE_SUBDIRECTORY', 'The value for %s cannot include a subdirectory.'); +define('TEXT_HTTP_SERVER_VALUE_MUST_BE', 'This value must be a domain name preceded by http://, with no subdirectory after the domain name and no slash at the end.'); +define('TEXT_HTTPS_SERVER_VALUE_MUST_BE', 'This value must be a domain name preceded by https://, with no subdirectory after the domain name and no slash at the end.'); +define('TEXT_HTTP_SERVER_FORMAT_EXAMPLE', 'The only valid formats are http://store-domain.com or http://www.store-domain.com etc.'); +define('TEXT_HTTPS_SERVER_FORMAT_EXAMPLE', 'The only valid formats are https://store-domain.com or https://www.store-domain.com etc.'); +define('TEXT_REMOVE_SUBDIRECTORY_FROM_END', 'The path to the subdirectory must be removed from after the domain name definition in %s.'); +define('TEXT_SUBDIRECTORY_SETTINGS_INFO', 'If the store is in a subdirectory, then the name of the subdirectory should instead be placed in DIR_WS_CATALOG, preceded and followed by slashes, e.g. /store/ - the subdirectory name cannot be part of the %s domain name setting.

'); + +define('TEXT_ERROR_VALUE_NOT_SPECIFIED_FOR_ADMIN_SERVER_VARIABLE', 'The value for %s has not been specified in the store\'s admin configure.php file.'); +define('TEXT_ERROR_VALUE_NOT_SPECIFIED_FOR_SERVER_VARIABLE', 'The value for %s has not been specified in the store side\'s configure.php file.'); +define('TEXT_SERVER_VALUE_REQUIRED', 'A value is required for this variable.'); +define('TEXT_SET_VALUE_TO_SLASH', 'If the store is at the root of the site (not in a subdirectory), set the value for %s to /'); +define('TEXT_SET_VALUE_TO_SUBDIRECTORY_NAME', 'If the store is in a subdirectory, set the value for %s to the name of the subdirectory, with a slash at the start and a slash at the end. For example: /store/'); + +define('TEXT_VALUE_MUST_START_AND_END_WITH_SLASH', 'The value for %s must start and end with a slash.'); +define('TEXT_VALUE_MUST_START_WITH_SLASH', 'The value for %s must start with a slash.'); +define('TEXT_VALUE_MUST_END_WITH_SLASH', 'The value for %s must end with a slash.'); +define('TEXT_ADD_A_STARTING_SLASH', 'Add a slash, /, to the start of %s.'); +define('TEXT_ADD_AN_ENDING_SLASH', 'Add a slash, /, to the end of %s.'); + +define('TEXT_ERROR_ADMIN_HTTP_MUST_MATCH_HTTPS', 'The value for %s does not match the value for %s in the store\'s admin configure.php file.'); +define('TEXT_ERROR_HTTP_MUST_MATCH_HTTPS', 'The value for %s does not match the value for %s in the store side\'s configure.php file.'); +define('TEXT_WHEN_USING_STATIC_URIS_HTTP_MUST_MATCH_HTTPS', 'As Ceon URI Mapping uses static URIs, it is not possible for the store to use different paths for the base of the store\'s URIs. For example, different subdirectories cannot be used.'); +define('TEXT_SHARED_SSL_CANNOT_BE_USED', 'This means a shared SSL certificate - for example, of the format http://shared-ssl-domain.com/store-username - cannot be used for the site once static URIs are being used.'); +define('TEXT_CHANGE_HTTP_TO_MATCH_HTTPS', 'You must change the value for %s to match that of %s.'); +define('TEXT_MAY_MEAN_PURCHASING_SSL_CERTIFICATE', 'To be able to make this change, and still have the site work correctly, may require purchasing and installing an SSL certificate for the store\'s domain.'); + +define('TEXT_ERROR_UNABLE_TO_OPEN_STORE_CONFIGURE_FILE', 'The store side\'s configure.php file could not be opened so that its values could be checked.'); +define('TEXT_PATH_TO_STORE_CONFIGURE_FILE', 'The path to the store side\'s configure.php file was being worked out as %s'); +define('TEXT_CHECK_PATH_TO_STORE_CONFIGURE_FILE', 'Check that this path is correct and that the correct permissions are set.'); + + +/** + * Error messages, info messages and instructions for core file modifications + */ +if (!defined('TEXT_OR')) { + define('TEXT_OR', 'or'); +} + +define('TEXT_THE_PATH_TO_THE_FILE_IS', 'The path to the file is %s'); + +define('TEXT_ALTERNATIVELY_REPLACE_FILE_TO_REMOVE_MODIFICATIONS', 'Alternatively, if the file was modified only for Ceon URI Mapping and not for any other module, back up the file (e.g. copy it to your local computer) and replace it with a “fresh” version of the file from a “fresh” set of Zen Cart files.'); +define('TEXT_ALTERNATIVELY_REPLACE_FILE_TO_REAPPLY_MODIFICATIONS', 'Alternatively, if the file was modified only for Ceon URI Mapping and not for any other module, back up the file (e.g. copy it to your local computer), and replace it with the pre-modified sample file from the distribution, for the version of Zen Cart being used by the store.'); +define('TEXT_ALTERNATIVELY_REPLACE_FILE_TO_APPLY_MODIFICATIONS', 'Alternatively, if the file has not been modified for the store yet, back up the file (e.g. copy it to your local computer), and replace it with the pre-modified sample file from the distribution, for the version of Zen Cart being used by the store.'); + +/** + * Error messages for file that is missing + */ +define('TEXT_ERROR_FILE_MUST_BE_MODIFIED_BUT_DOES_NOT_EXIST', 'A file must have a modification made to it, to work with Ceon URI Mapping, but the file does not exist at all!'); +define('TEXT_ERROR_FILE_MUST_HAVE_MULTIPLE_MODS_BUT_DOES_NOT_EXIST', 'A file must have modifications made to it, to work with Ceon URI Mapping, but the file does not exist at all!'); + +define('TEXT_ADD_MISSING_FILE_WITH_MODIFICATIONS', 'Add the missing file and make sure you apply the modifications required for Ceon URI Mapping.'); + +/** + * Error messages for files that no longer have modifications + */ +define('TEXT_ERROR_MODS_NO_LONGER_ONE_OLD_REMAINS', 'A file has had a modification made to it, for an older version of Ceon URI Mapping, but this modification is no longer needed.'); +define('TEXT_ERROR_MODS_NO_LONGER_X_REMAIN', 'A file has had %s modifications made to it, for an older version of Ceon URI Mapping, but the modifications are no longer needed.'); +define('TEXT_ERROR_MODS_NO_LONGER_COMMENTS_REMAIN', 'A file has had modifications made to it, for an older version of Ceon URI Mapping, but the modifications are no longer needed.'); +define('TEXT_ERROR_MODS_NO_LONGER_COMMENT_REMAINS', 'A file has had modifications made to it, for an older version of Ceon URI Mapping, but the modifications are no longer needed.'); + +define('TEXT_FILE_MODIFICATION_NO_LONGER_REQUIRED', 'Although the file had to be modified for a previous version of the module, this version works differently and the file is not modified for this version.'); + +define('TEXT_REMOVE_THE_MODIFICATION', 'Remove the modification from the file by editing the file and removing the block beginning with // BEGIN CEON URI MAPPING 1 of 1 and ending with // END CEON URI MAPPING 1 of 1 - including those two “marker comments”.'); +define('TEXT_REMOVE_THE_MODIFICATIONS', 'Remove the modifications from the file by editing the file and removing the blocks beginning with // BEGIN CEON URI MAPPING x of y and ending with // END CEON URI MAPPING x of y (where x is the number of the modification and y is the total number of modifications in the file).'); +define('TEXT_REMOVE_THE_MODIFICATIONS_2', 'Make sure to also remove the two “marker comments” for each modification.'); + +define('TEXT_MARKER_COMMENT_FOUND', 'Although this check hasn\'t identified old Ceon URI Mapping code in the file, it has identified that a marker comment remains in the file.'); +define('TEXT_MARKER_COMMENTS_FOUND', 'Although this check hasn\'t identified old Ceon URI Mapping code in the file, it has identified that %s marker comments remain in the file.'); +define('TEXT_MARKER_COMMENTS_FOUND_2', 'This could mean that the modification(s) weren\'t removed properly and that old code remains.'); + +define('TEXT_CHECK_MODIFICATIONS_REMOVED_PROPERLY_1_COMMENT', 'It would be a good idea to recheck the file to make sure all previous traces of the modifications have been removed, including the marker comment this check has found.'); +define('TEXT_CHECK_MODIFICATIONS_REMOVED_PROPERLY_X_COMMENTS', 'It would be a good idea to recheck the file to make sure all previous traces of the modifications have been removed, including the marker comments this check has found.'); +define('TEXT_MARKER_COMMENTS_INFO', 'Marker comments look like // BEGIN CEON URI MAPPING x of y or // END CEON URI MAPPING x of y (where x is the number of the modification and y is the total number of modifications in the file).'); + +/** + * Error messages for files that are missing all of their new modifications + */ +define('TEXT_ERROR_OLD_MOD_PRESENT', 'A file requires a modification to be made for it but the modification made to it is for an older version of Ceon URI Mapping.'); +define('TEXT_ERROR_X_OLD_MODS_PRESENT', 'A file requires %s modifications to be made for it but the modifications made to it are for an older version of Ceon URI Mapping.'); +define('TEXT_ERROR_MOD_MISSING_OLD_MODS_PRESENT', 'A file requires a modification to be made for it but the modification has not yet been made. The file does however have old modifications, made to it for an older version of Ceon URI Mapping.'); +define('TEXT_ERROR_ALL_X_MODS_MISSING_OLD_MOD_REMAINS', 'A file requires %s modifications to be made for it but they have not yet been made. The file has an old modification in it, made to it for an older version of Ceon URI Mapping.'); +define('TEXT_ERROR_ALL_X_MODS_MISSING_X_OLD_MODS_REMAIN', 'A file requires %s modifications to be made for it but they have not yet been made. The file has %s old modifications in it, made to it for an older version of Ceon URI Mapping.'); +define('TEXT_ERROR_MOD_MISSING_X_COMMENTS_PRESENT', 'A file requires a modification to be made for it but the modification has not yet been made. The file does however have %s comment marker(s) in it.'); +define('TEXT_ERROR_ALL_X_MODS_MISSING_X_COMMENTS_PRESENT', 'A file requires %s modifications to be made for it but the modifications have not yet been made. The file does however have %s comment marker(s) in it.'); +define('TEXT_ERROR_MOD_MISSING', 'A file requires a modification to be made for it but the modification has not been made.'); +define('TEXT_ERROR_X_MODS_MISSING', 'A file requires %s modifications to be made for it but none of the modifications have been made.'); + +define('TEXT_FILE_MODIFICATION_NEEDS_UPDATING', 'The file appears to have been modified for an older version of Ceon URI Mapping but the modification has not been updated for this version of the software.'); +define('TEXT_FILE_MODIFICATIONS_NEED_UPDATING', 'The file appears to have been modified for an older version of Ceon URI Mapping but the modifications have not been updated for this version of the software.'); +define('TEXT_FILE_MODIFICATION_NEEDS_APPLYING_OLD_REMOVING', 'The file appears to have been modified for an older version of Ceon URI Mapping but the modification for this version of the software has not been applied.'); +define('TEXT_FILE_HAS_BEEN_MODIFIED_NEW_MODS_NEED_APPLYING', 'The file appears to have been modified for an older version of Ceon URI Mapping but the modifications for this version of the software have not been applied.'); +define('TEXT_FILE_HAS_BEEN_MODIFIED_NEW_MODS_NEED_APPLYING', 'The file appears to have been modified for an older version of Ceon URI Mapping but the modifications for this version of the software have not been applied.'); +define('TEXT_FILE_HAS_BEEN_MODIFIED_SOMEHOW_MOD_MISSING', 'The file appears to have been modified in some way for Ceon URI Mapping, but the required modification could not be identified, it does not appear to have been applied correctly.'); +define('TEXT_FILE_HAS_BEEN_MODIFIED_SOMEHOW_MODS_MISSING', 'The file appears to have been modified in some way for Ceon URI Mapping, but the required modifications could not be identified, they don\'t appear to have been applied correctly.'); + +define('TEXT_UPDATE_THE_MODIFICATION', 'Update the modification by removing the old modification and applying the new modification.'); +define('TEXT_UPDATE_THE_MODIFICATIONS', 'Update the modifications by removing the %s old modifications and applying the %s new modifications.'); +define('TEXT_REMOVE_X_OLD_MODS_APPLY_NEW', 'Remove all the old modifications (there are %s), and then apply the new modification (there is only one in this version).'); +define('TEXT_REMOVE_OLD_MOD_APPLY_X_NEW', 'Remove the old modification (there is just one), and then apply the %s new modifications.'); +define('TEXT_REMOVE_X_OLD_MODS_APPLY_X_NEW', 'Remove all the old modifications (there are %s), and then apply the %s new modifications.'); +define('TEXT_CHECK_FILE_APPLY_MOD', 'Check the file and remove any old pieces of code or code that wasn\'t fully applied. Then apply the modification required for this version of the software.'); +define('TEXT_CHECK_FILE_APPLY_MODS', 'Check the file and remove any old pieces of code or code that wasn\'t fully applied. Then apply the %s modifications required for this version of the software.'); +define('TEXT_APPLY_MOD', 'Apply the modification required for Ceon URI Mapping.'); +define('TEXT_APPLY_X_MODS', 'Apply the %s modifications required for Ceon URI Mapping.'); + +/** + * Error messages for files that have one new modification applied but one is missing + */ +define('TEXT_ERROR_SECOND_MOD_PRESENT_FIRST_MISSING_OLD_MOD_PRESENT', 'A file requires 2 modifications to be made for it, the second of which has been made, but the first modification is missing and a modification for an older version of Ceon URI Mapping has been found.'); +define('TEXT_ERROR_FIRST_MOD_PRESENT_SECOND_MISSING_OLD_MOD_PRESENT', 'A file requires 2 modifications to be made for it, the first of which has been made, but the second modification is missing and a modification for an older version of Ceon URI Mapping has been found.'); +define('TEXT_ERROR_SECOND_MOD_PRESENT_FIRST_MISSING_X_OLD_MODS_PRESENT', 'A file requires 2 modifications to be made for it, the second of which has been made, but the first modification is missing and %s modifications for an older version of Ceon URI Mapping have been found.'); +define('TEXT_ERROR_FIRST_MOD_PRESENT_SECOND_MISSING_X_OLD_MODS_PRESENT', 'A file requires 2 modifications to be made for it, the first of which has been made, but the second modification is missing and %s modifications for an older version of Ceon URI Mapping have been found.'); +define('TEXT_ERROR_SECOND_MOD_PRESENT_FIRST_MISSING', 'A file requires 2 modifications to be made for it, the second of which has been made, but the first modification is missing.'); +define('TEXT_ERROR_FIRST_MOD_PRESENT_SECOND_MISSING', 'A file requires 2 modifications to be made for it, the first of which has been made, but the second modification is missing.'); + +define('TEXT_COULD_BE_THAT_FIRST_MISSED_OLD_REMAINS', 'It could be that modification number 2 for this version of the software was made, and that an old modification, for an older version of Ceon URI Mapping, was left in by mistake, instead of updating modification number 1.'); +define('TEXT_COULD_BE_THAT_SECOND_MISSED_OLD_REMAINS', 'It could be that modification number 1 for this version of the software was made, and that an old modification, for an older version of Ceon URI Mapping, was left in by mistake, instead of updating modification number 2.'); +define('TEXT_COULD_BE_THAT_FIRST_MOD_MISSED_EXTRA_OLD_REMAINS', 'Or it could be that this version of the software has different modifications from the previous version and that, although modification number 2 was applied correctly, modification number 1 was missed out, and an additional, old modification, for an older version of Ceon URI Mapping, was also left in by mistake.'); +define('TEXT_COULD_BE_THAT_SECOND_MOD_MISSED_EXTRA_OLD_REMAINS', 'Or it could be that this version of the software has different modifications from the previous version and that, although modification number 1 was applied correctly, modification number 2 was missed out, and an additional, old modification, for an older version of Ceon URI Mapping, was also left in by mistake.'); + +define('TEXT_COULD_BE_THAT_FIRST_MISSED_X_OLD_REMAIN', 'It could be that modification number 2 for this version of the software was made and that %s old modifications, for an older version of Ceon URI Mapping, were left in by mistake, instead of updating modification number 1.'); +define('TEXT_COULD_BE_THAT_SECOND_MISSED_X_OLD_REMAIN', 'It could be that modification number 1 for this version of the software was made and that %s old modifications, for an older version of Ceon URI Mapping, were left in by mistake, instead of updating modification number 2.'); +define('TEXT_COULD_BE_THAT_FIRST_MOD_MISSED_X_EXTRA_OLD_REMAIN', 'Or it could be that this version of the software has different modifications from the previous version and that, although modification number 2 was applied correctly, modification number 1 was missed out, and %s additional, old modifications, for an older version of Ceon URI Mapping, were also left in by mistake.'); +define('TEXT_COULD_BE_THAT_SECOND_MOD_MISSED_X_EXTRA_OLD_REMAIN', 'Or it could be that this version of the software has different modifications from the previous version and that, although modification number 1 was applied correctly, modification number 2 was missed out, and %s additional, old modifications, for an older version of Ceon URI Mapping, were also left in by mistake.'); + +define('TEXT_CHECK_FILE_APPLY_MISSING_MOD_X', 'Check the file and remove any old pieces of code. Then apply modification number %s, which was missed out, but which is required for this version of the software.'); +define('TEXT_APPLY_MISSING_MOD_X', 'Apply modification number %s, which was missed out, but which is required for this version of the software.'); + +/** + * Error messages for files that have several new modifications applied but are missing one + */ +define('TEXT_ERROR_X_MODS_PRESENT_MOD_X_MISSING_OLD_MOD_PRESENT', 'A file requires %s modifications to be made for it, modification numbers %s have been made, but modification number %s is missing and a modification for an older version of Ceon URI Mapping has been found.'); +define('TEXT_ERROR_X_MODS_PRESENT_MOD_X_MISSING_X_OLD_MODS_PRESENT', 'A file requires %s modifications to be made for it, modification numbers %s have been made, but modification number %s is missing and %s modifications for an older version of Ceon URI Mapping have been found.'); +define('TEXT_ERROR_X_MODS_PRESENT_MOD_X_MISSING', 'A file requires %s modifications to be made for it, modification numbers %s have been made, but modification number %s is missing.'); + +define('TEXT_COULD_BE_THAT_MOD_X_MISSED_OLD_REMAINS', 'It could be that modification numbers %s for this version of the software were made, and that an old modification, for an older version of Ceon URI Mapping, was left in by mistake, instead of updating modification number %s.'); +define('TEXT_COULD_BE_THAT_X_MODS_MADE_X_OLD_REMAIN_MOD_X_MISSED', 'It could be that modification numbers %s for this version of the software were made and that %s old modifications, for an older version of Ceon URI Mapping, were left in by mistake, instead of updating modification number %s.'); +define('TEXT_COULD_BE_THAT_MOD_X_MISSED_EXTRA_OLD_REMAINS', 'Or it could be that this version of the software has different modifications from the previous version and that, although modification numbers %s were applied correctly, modification number %s was missed out, and an additional, old modification, for an older version of Ceon URI Mapping, was also left in by mistake.'); +define('TEXT_COULD_BE_THAT_X_MODS_MADE_MOD_MISSED_X_EXTRA_OLD_REMAIN', 'Or it could be that this version of the software has different modifications from the previous version and that, although modification numbers %s were applied correctly, modification number %s was missed out, and %s additional, old modifications, for an older version of Ceon URI Mapping, were also left in by mistake.'); + +/** + * Error messages for files that have one new modification applied but are missing several + */ +define('TEXT_ERROR_MOD_X_PRESENT_X_MODS_MISSING_OLD_MOD_PRESENT', 'A file requires %s modifications to be made for it, modification number %s has been made, but modification numbers %s are missing and a modification for an older version of Ceon URI Mapping has been found.'); +define('TEXT_ERROR_MOD_X_PRESENT_X_MODS_MISSING_X_OLD_MODS_PRESENT', 'A file requires %s modifications to be made for it, modification number %s has been made, but modification numbers %s are missing and %s modifications for an older version of Ceon URI Mapping have been found.'); +define('TEXT_ERROR_MOD_X_PRESENT_X_MODS_MISSING', 'A file requires %s modifications to be made for it, modification number %s has been made, but modification numbers %s are missing.'); + +define('TEXT_COULD_BE_THAT_MOD_X_MADE_MODS_X_MISSED_OLD_REMAINS', 'It could be that modification number %s for this version of the software was made, but somehow modification numbers %s were missed, and that an old modification, for an older version of Ceon URI Mapping, was left in by mistake, instead of updating one of modification numbers %s.'); +define('TEXT_COULD_BE_THAT_MOD_X_MADE_MODS_X_MISSED_X_OLD_REMAIN', 'It could be that modification number %s for this version of the software was made, but somehow modification numbers %s were missed, and that %s old modifications, for an older version of Ceon URI Mapping, were left in by mistake, instead of updating the equivalent modification (modification number %s).'); +define('TEXT_COULD_BE_THAT_MOD_X_MADE_MODS_X_MISSED_EXTRA_OLD_REMAINS', 'Or it could be that this version of the software has different modifications from the previous version and that, although modification number %s was applied correctly, modification numbers %s were missed out, and an additional, old modification, for an older version of Ceon URI Mapping, was also left in by mistake.'); +define('TEXT_COULD_BE_THAT_MOD_X_MADE_MODS_X_MISSED_X_EXTRA_OLD_REMAIN', 'Or it could be that this version of the software has different modifications from the previous version and that, although modification number %s was applied correctly, modification numbers %s were missed out, and %s additional, old modifications, for an older version of Ceon URI Mapping, were also left in by mistake.'); + +define('TEXT_CHECK_FILE_APPLY_MISSING_MODS_X', 'Check the file and remove any old pieces of code. Then apply modification numbers %s, which were missed out, but which are required for this version of the software.'); +define('TEXT_APPLY_MISSING_MODS_X', 'Apply modification numbers %s, which were missed out, but which are required for this version of the software.'); + +/** + * Error messages for files that have one several modification applied but are still missing several + */ +define('TEXT_ERROR_MODS_X_PRESENT_MODS_X_MISSING_OLD_MOD_PRESENT', 'A file requires %s modifications to be made for it, modification numbers %s have been made, but modification numbers %s are missing and a modification for an older version of Ceon URI Mapping has been found.'); +define('TEXT_ERROR_MODS_X_PRESENT_MODS_X_MISSING_X_OLD_MODS_PRESENT', 'A file requires %s modifications to be made for it, modification numbers %s have been made, but modification numbers %s are missing and %s modifications for an older version of Ceon URI Mapping have been found.'); +define('TEXT_ERROR_X_MODS_PRESENT_X_MODS_MISSING', 'A file requires %s modifications to be made for it, modification numbers %s have been made, but modification numbers %s are missing.'); + +define('TEXT_COULD_BE_THAT_MODS_X_MADE_MODS_X_MISSED_OLD_REMAINS', 'It could be that modification numbers %s for this version of the software were made, but somehow modification numbers %s were missed, and that an old modification, for an older version of Ceon URI Mapping, was left in by mistake, instead of updating one of modification numbers %s.'); +define('TEXT_COULD_BE_THAT_MODS_X_MADE_MODS_X_MISSED_SAME_X_OLD_REMAIN', 'It could be that modification numbers %s for this version of the software were made, but somehow modification numbers %s were missed, and that %s old modifications, for an older version of Ceon URI Mapping, were left in by mistake, instead of updating modification numbers %s.'); +define('TEXT_COULD_BE_THAT_MODS_X_MADE_MODS_X_MISSED_X_OLD_REMAIN', 'It could be that modification numbers %s for this version of the software were made, but somehow modification numbers %s were missed, and that %s old modifications, for an older version of Ceon URI Mapping, were left in by mistake, instead of updating the appropriate modifications and/or being removed altogether.'); +define('TEXT_COULD_BE_THAT_MODS_X_MADE_MODS_X_MISSED_EXTRA_OLD_REMAINS', 'Or it could be that this version of the software has different modifications from the previous version and that, although modification numbers %s were applied correctly, modification numbers %s were missed out, and an additional, old modification, for an older version of Ceon URI Mapping, was also left in by mistake'); +define('TEXT_COULD_BE_THAT_MODS_X_MADE_MODS_X_MISSED_EXTRA_X_OLD_REMAIN', 'Or it could be that this version of the software has different modifications from the previous version and that, although modification numbers %s were applied correctly, modification numbers %s were missed out, and %s additional, old modifications, for an older version of Ceon URI Mapping, were also left in by mistake'); + +define('TEXT_ERROR_MOD_PRESENT_OLD_MOD_REMAINS', 'A file requires a modification to be made for it, which has been made successfully, but an old modification, for an older version of Ceon URI Mapping, still remains.'); +define('TEXT_ERROR_MOD_PRESENT_X_OLD_MODS_REMAIN', 'A file requires a modification to be made for it, which has been made successfully, but %s old modifications, for an older version of Ceon URI Mapping, still remain.'); +define('TEXT_ERROR_X_MODS_PRESENT_OLD_MOD_REMAINS', 'A file requires %s modification to be made for it, which have been made successfully, but an old modification, for an older version of Ceon URI Mapping, still remains.'); +define('TEXT_ERROR_X_MODS_PRESENT_X_OLD_MODS_REMAIN', 'A file requires %s modification to be made for it, which have been made successfully, but %s old modifications, for an older version of Ceon URI Mapping, still remain.'); + +define('TEXT_REMOVE_OLD_MOD', 'Check the file and remove any old pieces of code. '); + + +/** + * Error messages, info messages and instructions for old files/dirs + */ +define('TEXT_THE_PATH_TO_THE_DIR_IS', 'The path to the directory is %s'); + +define('TEXT_ERROR_OLD_FILE_REMAINS', 'A file for an older version of Ceon URI Mapping was found. The attempt to delete it failed, so it must be manually deleted.'); +define('TEXT_ERROR_OLD_DIR_REMAINS', 'A directory for an older version of Ceon URI Mapping was found. The attempt to delete it failed, so it must be manually deleted.'); + +define('TEXT_DELETE_FILE', 'Delete the file to prevent it causing any problems.'); +define('TEXT_DELETE_DIR', 'Delete the directory to prevent its contents causing any problems.'); + + +/** + * Defines for the example rewrite rule functionality + */ +define('TEXT_EXAMPLE_REWRITE_RULE', 'Example Rewrite Rule'); + +define('TEXT_EXAMPLE_REWRITE_RULE_BUILT_INTRO', 'The installation check has analysed the store\'s directories and built the following example rewrite rule for the store.'); +define('TEXT_EXAMPLE_REWRITE_RULE_GOOD_BASIS', 'It is likely to be a good basis for the rewrite rule to be used for the store, but it is up to you to adapt it as necessary. You can read up on rewrite rules on the internet if needs be, please don\'t contact Ceon for help with customising this rule, unless you\'re willing to pay for the support.'); + +define('TEXT_APACHE_TITLE', 'Apache Webserver'); +define('TEXT_SERVER_APPEARS_TO_BE_APACHE', 'The server appears to be using the Apache webserver.'); +define('TEXT_PLACE_REWRITE_RULE_IN_HTACCESS_FILE_OR_VIRTUALHOST_DIRECTIVE', 'The rule below should be placed in a .htaccess file or the VirtualHost Directive for the site (although in this case the rule will have to modified slightly).'); +define('TEXT_PLACE_REWRITE_RULE_HTACCESS_FILE_TITLE', 'If using a .htaccess file'); +define('TEXT_ERROR_DIR_FS_CATALOG_PROBLEM', 'The path to the .htaccess file can\'t be constructed as there appears to be a problem with the paths in the store\'s configure.php file. The catalog folder, %s, is not the end part of the path to the store: %s.'); +define('TEXT_ERROR_DIR_FS_CATALOG_PROBLEM_POSSIBLE_REASON', 'The values for DIR_WS_CATALOG and DIR_FS_CATALOG should be checked and fixed.'); +define('TEXT_PLACE_REWRITE_RULE_HTACCESS_FILE_INFO', 'If placing the rule in a .htaccess file, the .htaccess file into which it should be placed is the site root\'s .htaccess file, which should be created if it doesn\'t exist:'); +define('TEXT_PLACE_REWRITE_RULE_HTACCESS_FILE_INFO_EXISTS', 'If placing the rule in a .htaccess file, the .htaccess file into which it should be placed is the site root\'s .htaccess file, which is:'); +define('TEXT_PLACE_REWRITE_RULE_HTACCESS_FILE_INFO_SUBDIR', 'Although the store is in a subdirectory, the .htaccess file into which the example rewrite rule should be placed is NOT a .htaccess file within the Zen Cart folder, the rewrite rule below is for the site root\'s .htaccess file - place it in the above file!'); + +define('TEXT_PLACE_REWRITE_RULE_VIRTUALHOST_DIRECTIVE_TITLE', 'If using an Apache VirtualHost Directive'); +define('TEXT_PLACE_REWRITE_RULE_VIRTUALHOST_DIRECTIVE_INFO', 'If the store runs on a server using Apache and it is possible to modify the VirtualHost Directive for the store, then the rule can be modified and entered into the VirtualHost Directive for the store.'); +define('TEXT_PLACE_REWRITE_RULE_VIRTUALHOST_DIRECTIVE_INSTRUCTIONS', 'Simply add a slash to the front of %s, to make the rule compatible with the VirtualHost Directive:

%s'); + +define('TEXT_IIS_ISAPI_REWRITE_TITLE', 'IIS Server with IIS ISAPI_Rewrite'); +define('TEXT_SERVER_APPEARS_TO_BE_IIS_ISAPI_REWRITE', 'The server appears to be using the Micro$oft IIS webserver with the ISAPI_Rewrite module.'); +define('TEXT_PLACE_REWRITE_RULE_ISAPI_REWRITE_LITE_VERSION_TITLE', 'If using the “Lite” version of ISAPI_Rewrite'); +define('TEXT_PLACE_REWRITE_RULE_IN_ISAPI_REWRITE_GLOBAL_HTTPD_CONF_INFO', 'The Lite version of ISAPI_Rewrite only allows rewrite rules to be placed in a global file called httpd.conf, which should be in the ISAPI_Rewrite installation folder. Place the example rewrite rule in that file.'); +define('TEXT_PLACE_REWRITE_RULE_ISAPI_REWRITE_FULL_VERSION_DIRECTIVE_TITLE', 'If using the “Full” version of ISAPI_Rewrite'); +define('TEXT_PLACE_REWRITE_RULE_IN_ISAPI_REWRITE_LOCAL_HTACCESS_INFO', 'The full version of ISAPI_Rewrite allows rewrite rules to be placed in a file called .htaccess, which is placed in the site root\'s folder, and which should be created if it doesn\'t yet exist:'); +define('TTEXT_PLACE_REWRITE_RULE_IN_ISAPI_REWRITE_LOCAL_HTACCESS_INFO_EXISTS', 'The full version of ISAPI_Rewrite allows rewrite rules to be placed in a file called .htaccess, which is placed in the site root\'s folder:'); + +define('TEXT_IIS_URL_REWRITE_TITLE', 'IIS Server with IIS URL Rewrite'); +define('TEXT_SERVER_APPEARS_TO_BE_IIS_URL_REWRITE', 'The server appears to be using the Micro$oft IIS webserver with the IIS URL Rewrite module.'); +define('TEXT_IMPORT_REWRITE_RULE_IIS_URL_REWRITE_TITLE', 'Import the rewrite rule'); +define('TEXT_IMPORT_REWRITE_RULE_IIS_URL_REWRITE_INFO', 'On servers using IIS URL Rewrite, the rule below can be imported through its administration interface.'); +define('TEXT_IMPORT_REWRITE_RULE_IIS_URL_REWRITE_HINTS', 'In IIS Manager\'s “Features View” for a domain, look for “URL Rewrite”. Then in the “Actions” pane, click “Import Rules”. The rule below can then be copied and pasted into the text area.'); + +define('TEXT_NGINX_TITLE', 'nginx'); +define('TEXT_SERVER_APPEARS_TO_BE_NGINX', 'The server appears to be using the nginx webserver.'); +define('TEXT_PLACE_REWRITE_DIRECTIVE_NGINX_TITLE', 'Add directive to main nginx.conf or virtual host file'); +define('TEXT_PLACE_REWRITE_DIRECTIVE_NGINX_INFO', 'On servers using nginx, the directive below can be added to the location %s block of the server block in the main nginx.conf file, or to the location %s block of the server block in any virtual host file which has been created for the domain (e.g. something like /etc/nginx/sites-available/store.com).'); +define('TEXT_NGINX_EXAMPLE_INTRO', 'It doesn\'t really matter where in the block you place it. As an example, the location block could end up looking something like:'); +define('TEXT_NGINX_EXAMPLE', 'location %s { +    root   html; +    index  index.php; +    %s +}'); + +define('TEXT_REWRITE_RULE_PROBLEMS_TITLE', 'Getting 404 or 500 errors after adding the rule?'); +define('TEXT_REWRITE_RULE_ERRORS_INTRO', 'If after adding this rule (and a URI mapping to test) navigating to the new static URI results in a 404 or a 500 error, then it may be worth trying a slight variation of the rule, which some servers seem to require.'); +define('TEXT_REWRITE_RULE_ERROR_TRY_ADDING_SLASH', 'Try adding a slash to the front of %s, this may resolve the problem: %s'); + +define('TEXT_SELECT_ALL_AND_COPY', 'Click this link to Select All of the above text  (& automatically Copy it to the Clipboard in IE)'); \ No newline at end of file diff --git a/NEUE DATEIEN/DEINADMIN/includes/languages/english/ceon_uri_mapping_manufacturer_pages.php b/NEUE DATEIEN/DEINADMIN/includes/languages/english/ceon_uri_mapping_manufacturer_pages.php new file mode 100644 index 0000000..39f5af3 --- /dev/null +++ b/NEUE DATEIEN/DEINADMIN/includes/languages/english/ceon_uri_mapping_manufacturer_pages.php @@ -0,0 +1,29 @@ + + * @copyright Copyright 2008-2019 Ceon + * @copyright Copyright 2003-2019 Zen Cart Development Team + * @copyright Portions Copyright 2003 osCommerce + * @link http://ceon.net/software/business/zen-cart/uri-mapping + * @license http://www.zen-cart.com/license/2_0.txt GNU Public License V2.0 + * @version $Id: ceon_uri_mapping_manufacturer_pages.php 2018-03-29 08:31:10Z conor $ + */ + +define('CEON_URI_MAPPING_TEXT_MANUFACTURER_URI', 'URI Mapping:'); + +define('CEON_URI_MAPPING_TEXT_MANUFACTURER_URI_AUTOGEN', 'Tick this box to have the URI auto-generated for this manufacturer.'); +define('CEON_URI_MAPPING_TEXT_MANUFACTURER_URIS_AUTOGEN', 'Tick this box to have the URIs auto-generated for this manufacturer.'); + +define('CEON_URI_MAPPING_TEXT_MANUFACTURER_MAPPING_ADDED', '%s URI Mapping added: %s'); +define('CEON_URI_MAPPING_TEXT_MANUFACTURER_MAPPING_UPDATED', '%s URI Mapping updated: %s'); +define('CEON_URI_MAPPING_TEXT_MANUFACTURER_MAPPING_MADE_HISTORICAL', '%s URI Mapping converted to historical mapping'); + +if (!defined('CEON_URI_MAPPING_TEXT_URI_AUTOGEN_ONE_EXISTING_MAPPING')) { + require_once('ceon_uri_mapping_admin_pages.php'); +} + +define('CEON_URI_MAPPING_TEXT_ERROR_AUTOGENERATION_MANUFACTURER_HAS_NO_NAME', '%s URI Mapping cannot be generated as the manufacturer has no name!'); \ No newline at end of file diff --git a/NEUE DATEIEN/DEINADMIN/includes/languages/english/ceon_uri_mapping_product_pages.php b/NEUE DATEIEN/DEINADMIN/includes/languages/english/ceon_uri_mapping_product_pages.php new file mode 100644 index 0000000..3677846 --- /dev/null +++ b/NEUE DATEIEN/DEINADMIN/includes/languages/english/ceon_uri_mapping_product_pages.php @@ -0,0 +1,80 @@ + + * @copyright Copyright 2008-2019 Ceon + * @copyright Copyright 2003-2019 Zen Cart Development Team + * @copyright Portions Copyright 2003 osCommerce + * @link http://ceon.net/software/business/zen-cart/uri-mapping + * @license http://www.zen-cart.com/license/2_0.txt GNU Public License V2.0 + * @version $Id: ceon_uri_mapping_product_pages.php 2018-03-29 08:31:10Z webchills $ + */ + +define('BOX_CEON_URI_MAPPING', 'Ceon URI Mapping (SEO) Config'); + +define('CEON_URI_MAPPING_TEXT_PRODUCT_URI', 'URI Mapping:'); +define('CEON_URI_MAPPING_TEXT_PRODUCT_NO_URI', 'This product is not mapped to a URI.'); + +define('CEON_URI_MAPPING_TEXT_PRODUCT_URI_AUTOGEN', 'Tick this box to have the URI auto-generated for this product.'); +define('CEON_URI_MAPPING_TEXT_PRODUCT_URIS_AUTOGEN', 'Tick this box to have the URIs auto-generated for this product.'); + +define('CEON_URI_MAPPING_TEXT_PRODUCT_URI_AUTOGENERATED', 'Auto-generated URI Mapping:'); +define('CEON_URI_MAPPING_TEXT_PRODUCT_URIS_AUTOGENERATED', 'Auto-generated URI Mappings:'); +define('CEON_URI_MAPPING_TEXT_PRODUCT_URI_ENTERED', 'Entered URI Mapping:'); +define('CEON_URI_MAPPING_TEXT_PRODUCT_URIS_ENTERED', 'Entered URI Mappings:'); +define('CEON_URI_MAPPING_TEXT_PREVIEW_PRODUCT_ERROR_PRODUCT_HAS_NO_NAME', 'URI Mapping cannot be generated as the product has no name!'); +define('CEON_URI_MAPPING_TEXT_PREVIEW_PRODUCT_ERROR_PRODUCT_HAS_NO_MODEL', 'URI Mapping cannot be generated as the product has no model code!'); +define('CEON_URI_MAPPING_TEXT_PREVIEW_PRODUCT_ERROR_CATEGORY_HAS_NO_NAME', 'URI Mapping cannot be generated for product as a category it is in has no name!'); +define('CEON_URI_MAPPING_TEXT_URI_ORIGINALLY_GENERATED', 'The URI Mapping originally generated clashes with a URI already in use on the site. That URI Mapping is:'); +define('CEON_URI_MAPPING_TEXT_URI_GENERATED_AUTO_APPENDED', 'As auto-append is enabled, a new, unique URI Mapping has been generated, by appending a number:'); +define('CEON_URI_MAPPING_TEXT_UPDATE_WILL_USE_AUTO_APPENDED_MAPPING', 'Clicking “Update” will use this new URI Mapping, with its auto-appended number. If this isn\'t the desired result, then either:

  • Copy the URI mapping, click “Back” and enter and change it.
  • Or make the necessary changes to this product\'s name, or whatever is using the desired URI mapping, so that the desired URI can be used for this product without this clash (for example, check that this product is not using the same name as another in the same category etc.).
'); +define('CEON_URI_MAPPING_TEXT_URI_GENERATED_WHICH_IS_CLASHING', 'The URI Mapping auto-generated cannot be used as it clashes with a URI Mapping already in use for the site:'); +define('CEON_URI_MAPPING_TEXT_URI_ORIGINALLY_ENTERED', 'The URI Mapping originally entered clashes with a URI already in use on the site. That URI Mapping is:'); +define('CEON_URI_MAPPING_TEXT_URI_ENTERED_AUTO_APPENDED', 'As auto-append is enabled, a new, unique URI Mapping has been generated, by appending a number:'); +define('CEON_URI_MAPPING_TEXT_URI_ENTERED_WHICH_IS_CLASHING', 'The URI Mapping entered clashes with a URI already in use on the site, so it will not be saved. The URI Mapping entered was:'); +define('CEON_URI_MAPPING_TEXT_PRODUCT_NO_URI_ENTERED', 'No URI Mapping'); + +define('CEON_URI_MAPPING_TEXT_PRODUCT_MAPPING_ADDED', '%s URI Mapping added: %s'); +define('CEON_URI_MAPPING_TEXT_PRODUCT_MAPPING_ADDED_WITH_AUTO_APPEND', '%s URI Mapping added. The URI mapping was already being used, so an auto-appended integer was added, as per the site\'s configuration settings: %s - The mapping can be manually changed by editing the product.'); +define('CEON_URI_MAPPING_TEXT_PRODUCT_MAPPING_ADDED_ENFORCED_AUTO_APPEND', '%s URI Mapping added. The URI mapping was already being used, so an auto-appended integer was added, to make the URI mapping unique and prevent it clashing with the existing mapping: %s - The mapping can be manually changed by editing the product.'); +define('CEON_URI_MAPPING_TEXT_PRODUCT_MAPPING_UPDATED', '%s URI Mapping updated: %s'); +define('CEON_URI_MAPPING_TEXT_PRODUCT_MAPPING_MADE_HISTORICAL', '%s URI Mapping converted to historical mapping'); +define('CEON_URI_MAPPING_TEXT_PRODUCT_RELATED_PAGE_MAPPING_MADE_HISTORICAL', '%s URI Mapping converted to historical mapping (%s)'); + +if (!defined('CEON_URI_MAPPING_TEXT_URI_AUTOGEN_ONE_EXISTING_MAPPING')) { + require_once('ceon_uri_mapping_admin_pages.php'); +} + +define('CEON_URI_MAPPING_TEXT_DUPLICATE_PRODUCT_URI_MAPPING', 'URI Mapping (only applies if product is being duplicated):'); +define('CEON_URI_MAPPING_TEXT_COPY_AUTOGEN_URI', 'Auto-generate a new URI mapping for the duplicate product.'); +define('CEON_URI_MAPPING_TEXT_COPY_AUTOGEN_URIS', 'Auto-generate new URI mappings for the duplicate product.'); +define('CEON_URI_MAPPING_TEXT_COPY_EXISTING_MAPPING', 'Copy existing product\'s URI mapping to the duplicate product (it will have a number appended so that the URI mapping is unique and therefore doesn\'t conflict with the URI mapping of the product being copied).'); +define('CEON_URI_MAPPING_TEXT_COPY_EXISTING_MAPPINGS', 'Copy existing product\'s URI mappings to the duplicate product (they will have a number appended so that the URI mappings are unique and therefore don\'t conflict with the URI mappings of the product being copied).'); +define('CEON_URI_MAPPING_TEXT_COPY_PRODUCT_DONT_AUTOGEN_URI', 'Don\'t auto-generate a new URI mapping for the duplicate product.'); +define('CEON_URI_MAPPING_TEXT_COPY_PRODUCT_DONT_AUTOGEN_URIS', 'Don\'t auto-generate URI mappings for the duplicate product.'); +define('CEON_URI_MAPPING_TEXT_COPY_PRODUCT_DONT_COPY_URI', 'Don\'t copy existing product\'s URI mapping to the duplicate product.'); +define('CEON_URI_MAPPING_TEXT_COPY_PRODUCT_DONT_COPY_URIS', 'Don\'t copy existing product\'s URI mappings to the duplicate product.'); +define('CEON_URI_MAPPING_TEXT_COPY_PRODUCT_DONT_AUTOGEN_COPY_URI', 'Don\'t auto-generate the URI mapping or copy the existing product\'s URI mapping for the duplicate product.'); +define('CEON_URI_MAPPING_TEXT_COPY_PRODUCT_DONT_AUTOGEN_COPY_URIS', 'Don\'t auto-generate the URI mappings or copy the existing product\'s URI mappings for the duplicate product.'); + +define('CEON_URI_MAPPING_TEXT_MOVE_PRODUCT_URI_MAPPING', 'URI Mapping:'); +define('CEON_URI_MAPPING_TEXT_MOVE_AUTOGEN_URI', 'Auto-generate a new URI mapping according the category being moved to.'); +define('CEON_URI_MAPPING_TEXT_MOVE_AUTOGEN_URIS', 'Auto-generate new URI mappings according the category being moved to.'); +define('CEON_URI_MAPPING_TEXT_MOVE_USE_EXISTING_MAPPING', 'Use product\'s existing URI mapping after the product has been moved to its new category.'); +define('CEON_URI_MAPPING_TEXT_MOVE_USE_EXISTING_MAPPINGS', 'Use product\'s existing URI mappings after the product has been moved to its new category.'); +define('CEON_URI_MAPPING_TEXT_MOVE_PRODUCT_DONT_AUTOGEN_URI', 'Don\'t auto-generate a URI mapping for the product after it has been moved.'); +define('CEON_URI_MAPPING_TEXT_MOVE_PRODUCT_DONT_AUTOGEN_URIS', 'Don\'t auto-generate URI mappings for the product after it has been moved.'); +define('CEON_URI_MAPPING_TEXT_MOVE_PRODUCT_DONT_MOVE_URI', 'Drop existing URI mapping for the product after it has been moved.'); +define('CEON_URI_MAPPING_TEXT_MOVE_PRODUCT_DONT_MOVE_URIS', 'Drop existing URI mappings for the product after it has been moved.'); +define('CEON_URI_MAPPING_TEXT_MOVE_PRODUCT_DONT_AUTOGEN_MOVE_URI', 'Drop existing URI mapping for the product after it has been moved, and don\'t generate a new one (the moved product will have no current URI mapping).'); +define('CEON_URI_MAPPING_TEXT_MOVE_PRODUCT_DONT_AUTOGEN_MOVE_URIS', 'Drop existing URI mappings for the product after it has been moved, and don\'t generate new ones (the moved product will have no current URI mappings).'); + +define('CEON_URI_MAPPING_TEXT_ERROR_AUTOGENERATION_PRODUCT_HAS_NO_NAME', '%s URI Mapping cannot be generated as the product has no name! - Edit the product'); +define('CEON_URI_MAPPING_TEXT_ERROR_AUTOGENERATION_PRODUCT_HAS_NO_MODEL', '%s URI Mapping cannot be generated as the product has no model code! - Edit the product'); +define('CEON_URI_MAPPING_TEXT_ERROR_AUTOGENERATION_PRODUCT_CATEGORY_HAS_NO_NAME', '%s URI Mapping cannot be generated for product as a category it is in has no name!'); + +define('CEON_URI_MAPPING_TEXT_ERROR_COPY_PRODUCT_MAPPING_CLASHED', '%s URI Mapping NOT added as the desired URI mapping clashes with an existing mapping: %s - The product has no URI mapping for %s, it must be added manually by editing the product.'); +define('CEON_URI_MAPPING_TEXT_ERROR_MOVE_PRODUCT_MAPPING_CLASHED', '%s URI Mapping NOT added as the desired URI mapping clashes with an existing mapping: %s - The product has no URI mapping for %s, it must be added manually by editing the product.'); \ No newline at end of file diff --git a/NEUE DATEIEN/DEINADMIN/includes/languages/english/ceon_uri_mapping_tabbed_panel_admin_interface.php b/NEUE DATEIEN/DEINADMIN/includes/languages/english/ceon_uri_mapping_tabbed_panel_admin_interface.php new file mode 100644 index 0000000..5dc5d10 --- /dev/null +++ b/NEUE DATEIEN/DEINADMIN/includes/languages/english/ceon_uri_mapping_tabbed_panel_admin_interface.php @@ -0,0 +1,27 @@ + + * @copyright Copyright 2008-2019 Ceon + * @copyright Copyright 2003-2019 Zen Cart Development Team + * @copyright Portions Copyright 2003 osCommerce + * @link http://ceon.net/software/business/zen-cart/uri-mapping + * @license http://www.zen-cart.com/license/2_0.txt GNU Public License V2.0 + * @version $Id: ceon_uri_mapping_tabbed_panel_admin_interface.php 2018-03-29 08:31:10Z webchills $ + */ + +define('TEXT_FILES_VERSION', 'Files Version'); +define('TEXT_INSTALLED_VERSION', 'Installed Version'); +define('TEXT_NOT_INSTALLED', 'Not Installed'); +define('TEXT_MOST_UP_TO_DATE_VERSION_INSTALLED', 'Most up-to-date version is installed'); +define('TEXT_MOST_UP_TO_DATE_VERSION_FILES_PRESENT', 'Most up-to-date version of files are present'); +define('TEXT_ERROR_VERSION_CHECK_NO_RESPONSE', 'Problem occurred performing version check: no response received'); +define('TEXT_ERROR_VERSION_CHECK_PROBLEM', 'Problem occurred performing version check:'); +define('TEXT_OUT_OF_DATE', 'Out of Date!'); +define('TEXT_LATEST_VERSION_IS', 'The latest version of the software is'); +define('TEXT_CLICK_HERE_TO_DOWNLOAD_LATEST_VERSION', 'Click here to download the latest version'); +define('TEXT_ERROR_VERSION_CHECK_PROBLEM_PARSING', 'Problem occurred performing version check: Unable to parse response'); +define('TEXT_CHECK_FOR_UPDATES', 'Check for updates'); \ No newline at end of file diff --git a/NEUE DATEIEN/DEINADMIN/includes/languages/english/extra_definitions/ceon_uri_mapping.php b/NEUE DATEIEN/DEINADMIN/includes/languages/english/extra_definitions/ceon_uri_mapping.php new file mode 100644 index 0000000..c6793fc --- /dev/null +++ b/NEUE DATEIEN/DEINADMIN/includes/languages/english/extra_definitions/ceon_uri_mapping.php @@ -0,0 +1,3 @@ + + * @copyright Copyright 2008-2019 Ceon + * @copyright Copyright 2003-2019 Zen Cart Development Team + * @copyright Portions Copyright 2003 osCommerce + * @link http://ceon.net/software/business/zen-cart/uri-mapping + * @license http://www.zen-cart.com/license/2_0.txt GNU Public License V2.0 + * @version $Id: ceon_uri_mapping_admin_pages.php 2018-03-29 08:31:10Z webchills $ + */ + +define('CEON_URI_MAPPING_TEXT_URI_AUTOGEN_ONE_EXISTING_MAPPING', 'Please Note: The existing mapping will be replaced by an auto-generated URI if this box is ticked!'); +define('CEON_URI_MAPPING_TEXT_URI_AUTOGEN_ALL_EXISTING_MAPPINGS', 'Please Note: All the existing mappings will be replaced by auto-generated URIs if this box is ticked!'); +define('CEON_URI_MAPPING_TEXT_URI_AUTOGEN_SOME_EXISTING_MAPPINGS', 'Please Note: The existing mappings will be replaced by auto-generated URIs if this box is ticked!'); +define('CEON_URI_MAPPING_TEXT_URI_AUTOGEN_DISABLED', '(Auto-generation of URIs is disabled. Any URI mappings must be entered manually.)'); + +define('CEON_URI_MAPPING_TEXT_ERROR_ADD_MAPPING_EXISTS', '%s URI Mapping NOT added as a mapping already exists for %s'); +define('CEON_URI_MAPPING_TEXT_ERROR_ADD_MAPPING_DATA', '%s URI Mapping NOT added as the data supplied was invalid %s'); +define('CEON_URI_MAPPING_TEXT_ERROR_ADD_MAPPING_DB', '%s URI Mapping NOT added as database error was encountered %s'); \ No newline at end of file diff --git a/NEUE DATEIEN/DEINADMIN/includes/languages/german/ceon_uri_mapping_category_pages.php b/NEUE DATEIEN/DEINADMIN/includes/languages/german/ceon_uri_mapping_category_pages.php new file mode 100644 index 0000000..ec95032 --- /dev/null +++ b/NEUE DATEIEN/DEINADMIN/includes/languages/german/ceon_uri_mapping_category_pages.php @@ -0,0 +1,30 @@ + + * @copyright Copyright 2008-2019 Ceon + * @copyright Copyright 2003-2019 Zen Cart Development Team + * @copyright Portions Copyright 2003 osCommerce + * @link http://ceon.net/software/business/zen-cart/uri-mapping + * @license http://www.zen-cart.com/license/2_0.txt GNU Public License V2.0 + * @version $Id: ceon_uri_mapping_category_pages.php 2018-03-29 08:31:10Z webchills $ + */ + +define('CEON_URI_MAPPING_TEXT_CATEGORY_URI', 'URI Mapping:'); + +define('CEON_URI_MAPPING_TEXT_CATEGORY_URI_AUTOGEN', 'Tick this box to have the URI auto-generated for this category.'); +define('CEON_URI_MAPPING_TEXT_CATEGORY_URIS_AUTOGEN', 'Tick this box to have the URIs auto-generated for this category.'); + +define('CEON_URI_MAPPING_TEXT_CATEGORY_MAPPING_ADDED', '%s URI Mapping added: %s'); +define('CEON_URI_MAPPING_TEXT_CATEGORY_MAPPING_UPDATED', '%s URI Mapping updated: %s'); +define('CEON_URI_MAPPING_TEXT_CATEGORY_MAPPING_MADE_HISTORICAL', '%s URI Mapping converted to historical mapping'); + +if (!defined('CEON_URI_MAPPING_TEXT_URI_AUTOGEN_ONE_EXISTING_MAPPING')) { + require_once('ceon_uri_mapping_admin_pages.php'); +} + +define('CEON_URI_MAPPING_TEXT_ERROR_AUTOGENERATION_CATEGORY_HAS_NO_NAME', '%s URI Mapping cannot be generated as the category has no name!'); +define('CEON_URI_MAPPING_TEXT_ERROR_AUTOGENERATION_A_PARENT_CATEGORY_HAS_NO_NAME', '%s URI Mapping cannot be generated for category as a category it is in has no name!'); \ No newline at end of file diff --git a/NEUE DATEIEN/DEINADMIN/includes/languages/german/ceon_uri_mapping_config.php b/NEUE DATEIEN/DEINADMIN/includes/languages/german/ceon_uri_mapping_config.php new file mode 100644 index 0000000..660ed58 --- /dev/null +++ b/NEUE DATEIEN/DEINADMIN/includes/languages/german/ceon_uri_mapping_config.php @@ -0,0 +1,89 @@ + + * @copyright Copyright 2008-2019 Ceon + * @copyright Copyright 2003-2022 Zen Cart Development Team + * @copyright Portions Copyright 2003 osCommerce + * @link http://ceon.net/software/business/zen-cart/uri-mapping + * @license http://www.zen-cart.com/license/2_0.txt GNU Public License V2.0 + * @version $Id: ceon_uri_mapping_config.php 2022-02-19 20:34:10Z webchills $ + */ + +define('HEADING_TITLE', 'Ceon URI Mapping (SEO) Config'); + +define('SUCCESS_MODULE_INSTALLED', 'Module (version %s) was installed successfully.'); +define('SUCCESS_DATABASE_AND_CONFIG_UPDATED', 'Database and configuration were successfully updated to version %s'); +define('SUCCESS_DATABASE_AND_CONFIG_UP_TO_DATE', 'Database and configuration are up to date, using version %s'); + +if (!defined('TEXT_YES')) { define('TEXT_YES', 'Yes'); } +if (!defined('TEXT_NO')) { define('TEXT_NO', 'No'); } + +define('TEXT_AUTOGEN_CONFIG', 'URI Auto-generation Settings'); +define('TEXT_LABEL_AUTOGEN_ENABLED_NEW', 'Offer Auto-generation of URIs for Categories, Products, Manufacturers and EZ-Pages:'); +define('TEXT_CONFIG_DESC_AUTOGEN_ENABLED_NEW', '

Should the option to auto-generate URIs be offered in the admin for Categories/Products/Manufacturers/EZ-Pages?

Generated URIs are based on their Category Names/Product Names/Manufacturer Names/EZ-Page Titles. For Products/Categories the full Category Path is used.

'); + +define('TEXT_LABEL_WHITESPACE_REPLACEMENT', 'Whitespace Replacement:'); +define('TEXT_CONFIG_DESC_WHITESPACE_REPLACEMENT', '

What should whitespace be replaced with in auto-generated URIs?

'); + +define('TEXT_WHITESPACE_REPLACEMENT_SINGLE_UNDERSCORE', 'Single Underscore "_"'); +define('TEXT_WHITESPACE_REPLACEMENT_SINGLE_DASH', 'Single Dash "-"'); +define('TEXT_WHITESPACE_REPLACEMENT_SINGLE_FULL_STOP', 'Single Full Stop/Period "."'); +define('TEXT_WHITESPACE_REPLACEMENT_REMOVE', 'Remove whitespace altogether'); + +define('TEXT_LABEL_CAPITALISATION', 'Capitalisation:'); +define('TEXT_CONFIG_DESC_CAPITALISATION', '

What capitalisation should be used in auto-generated URIs?

Please note: Customers can use any capitalisation they want without breaking the store as all URIs are mapped case-insensitively. Using capitalisation can make the store URIs look “prettier” though!

'); + +define('TEXT_CAPITALISATION_LOWERCASE', 'Convert Category Names/Product Names/Manufacturer Names/EZ-Page Titles to lowercase (E.g. “medalofhonor”/“medal-of-honor”).'); +define('TEXT_CAPITALISATION_AS_IS', 'Use the names/titles as they are (E.g. “MedalofHonor”/“Medal-of-Honor”).'); +define('TEXT_CAPITALISATION_UCFIRST', 'Capitalise the first letter of each word in the names/titles (E.g. “MedalOfHonor”/“Medal-Of-Honor”).'); + +define('TEXT_LABEL_REMOVE_WORDS', 'Remove Words:'); +define('TEXT_CONFIG_DESC_REMOVE_WORDS', '

This is a comma-separated list of words which will be removed from the auto-generated URIs. Single characters can also be entered but will only be removed if they are surrounded by spaces (e.g. “-” entered below will remove the dash from “Star Wars - Director\'s Cut” but not from “Spider-Man”).

For example, if the store would like to remove “-”, “and” and “an” from the URIs you\'d enter the following:

-, and, an

'); + +define('TEXT_LABEL_CHAR_STR_REPLACEMENTS', 'Character/String Replacements:'); +define('TEXT_CONFIG_DESC_CHAR_STR_REPLACEMENTS', '

This is a comma-separated list of pairs of characters/strings and replacement characters/strings.

The characters/strings to be replaced in the auto-generated URIs should be separated from their replacements using “=>”. E.g. “£=>GBP, $=>USD”.

Any spacing entered for a replacement will be used but replaced with the usual whitespace replacement character (so be careful not leave an extra space at the end of the text entered below if it is not intended!). Spacing entered for the strings/characters to be replaced will be removed/ignored; so it\'s fine to add a space after each comma, to make things easier to read.

To remove a character/string simply replace it with nothing. E.g. “£=>, $=>” removes £ and $ dollar signs from the auto-generated URI.

'); + +define('TEXT_LABEL_MAPPING_CLASH_ACTION', 'Mapping Clash Action:'); +define('TEXT_CONFIG_DESC_MAPPING_CLASH_ACTION', '

What action should be taken when a URI mapping being auto-generated clashes with an existing URI mapping?

(Please note the auto-append functionality only applies for product mappings; any clashes which occur with other page types will simply result in a warning being displayed and no changes being made).

'); + +define('TEXT_LABEL_LANGUAGE_CODE_ADD_ENABLED', 'Add Language identifier to URI:'); +define('TEXT_CONFIG_DESC_LANGUAGE_CODE_ADD_ENABLED', '

Should the option to auto-generate URIs be offered in the admin for Categories/Products/Manufacturers/EZ-Pages with the language code (en, de, etc...)?

Generated URIs based on their Category Names/Product Names/Manufacturer Names/EZ-Page Titles can include the language code identifier. For Products/Categories the full Category Path is used with the language code before any other rewritten URI part.

'); + +define('TEXT_MAPPING_CLASH_ACTION_WARN', 'Warn User - The mapping should not be created and instead the user should be warned that the mapping could not be saved/auto-generated.'); +define('TEXT_MAPPING_CLASH_ACTION_AUTO_APPEND', 'Auto-append a Number - A unique mapping should be automatically generated by appending a number (an integer) to the end of any product mapping that clashes. E.g. if the mapping /books/life-is-good already existed, an attempt would be made to use /books/life-is-good1, then /books/life-is-good2 etc.'); + +define('TEXT_AUTO_MANAGED_PRODUCT_URIS', 'Auto-managed Product Page URIs'); +define('TEXT_LABEL_AUTO_MANAGED_PRODUCT_URIS', 'Automatically Managed URIs for Pages Related to a Product:'); +define('TEXT_CONFIG_DESC_AUTO_MANAGED_PRODUCT_URIS', '

When adding/updating a URI mapping for a product, mappings can also be automatically added/updated for pages related to the product page.

For any page type enabled below, whenever a product URI is added/updated, the respective “URI part”, for the appropriate language, will be appended to the product\'s URI and saved as the URI mapping for that page.

For example, if a new product is added with a URI mapping of “/books/life-is-good”, and auto-adding is enabled for the “tell a friend” page, with a URI part of “tell-a-friend”, a new URI mapping of “/books/life-is-good/tell-a-friend” will be added for that product\'s tell a friend page.

Whenever a product\'s URI is changed, the page types enabled below will also have their URIs updated accordingly.

'); +define('TEXT_INSTRUCTIONS_AUTO_MANAGED_PRODUCT_URIS', 'Tick the page types which should have their URIs auto-managed...'); +define('TEXT_LABEL_AUTO_MANAGED_URI_REVIEWS', 'Products\' Reviews Pages'); +define('TEXT_LABEL_AUTO_MANAGED_URI_REVIEW_INFO', 'Products\' Review Info Pages'); +define('TEXT_LABEL_AUTO_MANAGED_URI_WRITE_A_REVIEW', 'Products\' Write A Review Pages'); +define('TEXT_LABEL_AUTO_MANAGED_URI_ASK_A_QUESTION', 'Products\' Ask A Question Pages'); +define('TEXT_LABEL_AUTO_MANAGED_PRODUCT_URIS_URI_PARTS', 'URI Parts Text:'); +define('TEXT_CONFIG_DESC_AUTO_MANAGED_PRODUCT_URIS_URI_PARTS', '

Enter the text to be used for the URI parts to be appended to the product URIs when auto-managing the respective pages.

Whenever a URI mapping is being created using these URI parts, the standard auto-generation rules (Whitespace Replacement, Capitalisation etc.) will be applied, so these URI parts\' text can contain spaces and capital letters, which will then be adjusted if necessary when creating a mapping, according to the store\'s settings above.

'); + +define('TEXT_ERROR_URI_PART_MUST_BE_ENTERED', 'A URI part must be entered here.'); + +define('TEXT_VERSION_CHECKING', 'Version Checking'); +define('TEXT_LABEL_AUTOMATIC_VERSION_CHECKING', 'Automatic Version Checking:'); +define('TEXT_CONFIG_DESC_AUTOMATIC_VERSION_CHECKING', '

Use Automatic or Manual Version Checking?

With automatic version checking, the latest version information is displayed at the bottom right of this page. (The check only takes place once, when this Config Utility page is first loaded).

With manual checking, you must click the link at the bottom right of this page to find out what the latest version of the software is.

'); +define('TEXT_AUTOMATIC_VERSION_CHECKING', 'Automatic Version Checking'); +define('TEXT_MANUAL_VERSION_CHECKING', 'Manual Version Checking'); + +define('TEXT_INSTALLATION_CHECK', 'Installation Check'); +define('TEXT_INSTALLATION_DESC', 'The installation check will examine the store\'s configuration files and warn you about any mistakes in the files which you need to correct, and will even provide full information about what you should do.

It will also check all the core files that must be modified for Ceon URI Mapping to work optimally, and warn you if any of the modifications are missing or out of date, again giving information on what you should do!'); +define('TEXT_LINK_TO_INSTALLATION_CHECK', 'Click here to go to the Ceon URI Mapping Installation Check page.'); +define('TEXT_CONFIG_CHECK', 'Configuration Check'); +define('TEXT_CONFIG_DESC', 'If a problem occurred when installing or upgrading Ceon URI Mapping, the configuration can be checked and, hopefully, repaired automagically.'); +define('TEXT_LINK_TO_CONFIG_CHECK', 'Click here to run the configuration checker.'); + +define('TEXT_ERROR_IN_CONFIG', 'A problem was found with the configuration. Please fix the error highlighted below, then try again to save the changes.'); +define('TEXT_ERRORS_IN_CONFIG', '%s problems were found with the configuration. Please fix the errors highlighted below, then try again to save the changes.'); + +define('SUCCESS_CONFIGURATION_SAVED', 'Configuration was successfully saved!'); +define('SUCCESS_CONFIGURATION_SAVED_DEMO', '[DEMO MODE] Configuration would have been saved if module was not in demo mode!'); \ No newline at end of file diff --git a/NEUE DATEIEN/DEINADMIN/includes/languages/german/ceon_uri_mapping_default_uri_parts.php b/NEUE DATEIEN/DEINADMIN/includes/languages/german/ceon_uri_mapping_default_uri_parts.php new file mode 100644 index 0000000..f37c606 --- /dev/null +++ b/NEUE DATEIEN/DEINADMIN/includes/languages/german/ceon_uri_mapping_default_uri_parts.php @@ -0,0 +1,40 @@ + + * @copyright Copyright 2008-2019 Ceon + * @copyright Copyright 2003-2022 Zen Cart Development Team + * @copyright Portions Copyright 2003 osCommerce + * @link http://ceon.net/software/business/zen-cart/uri-mapping + * @license http://www.zen-cart.com/license/2_0.txt GNU Public License V2.0 + * @version $Id: ceon_uri_mapping_default_uri_parts.php 2022-02-19 20:35:10Z webchills $ + */ + +/** + * The language defines for the default URI part text to be used for the product related pages' URI + * parts (the product reviews pages). + * + * These defines are only used when installing or updating the module, as fallbacks, if the store + * hasn't already specified custom URI part text for a language the store uses. + * + * 1) If translating this for other languages: first, Thanks! + * + * Copy this file to admin/includes/LANGUAGE/ceon_uri_mapping_default_uri_parts.php + * + * 2) EACH LANGUAGE REQUIRES A UNIQUELY NAMED DEFINE. + * + * The last two letters in the define names should be the language's two letter code. + * + * 3) The entire define name must be uppercase. + * + * For example: + * + * DEFAULT_URI_PART_PRODUCT_REVIEWS_DE for German or DEFAULT_URI_PART_PRODUCT_REVIEWS_FR for French + */ +define('DEFAULT_URI_PART_PRODUCT_REVIEWS_EN', 'Reviews'); +define('DEFAULT_URI_PART_REVIEWS_INFO_EN', 'Review'); +define('DEFAULT_URI_PART_REVIEWS_WRITE_EN', 'Add a Review'); +define('DEFAULT_URI_PART_ASK_A_QUESTION_EN', 'Ask a Question'); diff --git a/NEUE DATEIEN/DEINADMIN/includes/languages/german/ceon_uri_mapping_ezpage_pages.php b/NEUE DATEIEN/DEINADMIN/includes/languages/german/ceon_uri_mapping_ezpage_pages.php new file mode 100644 index 0000000..4f434e4 --- /dev/null +++ b/NEUE DATEIEN/DEINADMIN/includes/languages/german/ceon_uri_mapping_ezpage_pages.php @@ -0,0 +1,29 @@ + + * @copyright Copyright 2008-2019 Ceon + * @copyright Copyright 2003-2019 Zen Cart Development Team + * @copyright Portions Copyright 2003 osCommerce + * @link http://ceon.net/software/business/zen-cart/uri-mapping + * @license http://www.zen-cart.com/license/2_0.txt GNU Public License V2.0 + * @version $Id: ceon_uri_mapping_ezpage_pages.php 2018-03-29 08:31:10Z webchills $ + */ + +define('CEON_URI_MAPPING_TEXT_EZ_PAGE_URI', 'URI Mapping:'); + +define('CEON_URI_MAPPING_TEXT_EZ_PAGE_URI_AUTOGEN', 'Tick this box to have the URI auto-generated for this EZ-Page.'); +define('CEON_URI_MAPPING_TEXT_EZ_PAGE_URIS_AUTOGEN', 'Tick this box to have the URIs auto-generated for this EZ-Page.'); + +define('CEON_URI_MAPPING_TEXT_EZ_PAGE_MAPPING_ADDED', '%s URI Mapping added: %s'); +define('CEON_URI_MAPPING_TEXT_EZ_PAGE_MAPPING_UPDATED', '%s URI Mapping updated: %s'); +define('CEON_URI_MAPPING_TEXT_EZ_PAGE_MAPPING_MADE_HISTORICAL', '%s URI Mapping converted to historical mapping'); + +if (!defined('CEON_URI_MAPPING_TEXT_URI_AUTOGEN_ONE_EXISTING_MAPPING')) { + require_once('ceon_uri_mapping_admin_pages.php'); +} + +define('CEON_URI_MAPPING_TEXT_ERROR_AUTOGENERATION_EZ_PAGE_HAS_NO_NAME', '%s URI Mapping cannot be generated as the EZ-Page has no name!'); \ No newline at end of file diff --git a/NEUE DATEIEN/DEINADMIN/includes/languages/german/ceon_uri_mapping_installation_check.php b/NEUE DATEIEN/DEINADMIN/includes/languages/german/ceon_uri_mapping_installation_check.php new file mode 100644 index 0000000..1c50743 --- /dev/null +++ b/NEUE DATEIEN/DEINADMIN/includes/languages/german/ceon_uri_mapping_installation_check.php @@ -0,0 +1,291 @@ + + * @copyright Copyright 2008-2019 Ceon + * @copyright Copyright 2003-2019 Zen Cart Development Team + * @copyright Portions Copyright 2003 osCommerce + * @link http://ceon.net/software/business/zen-cart/uri-mapping + * @license http://www.zen-cart.com/license/2_0.txt GNU Public License V2.0 + * @version $Id: ceon_uri_mapping_installation_check.php 1027 2012-07-17 20:31:10Z conor $ + */ + +define('HEADING_TITLE', 'Ceon URI Mapping Installation Check'); + +define('TEXT_INSTALLATION_CHECK', 'Installation Check'); + +define('TEXT_NO_ERRORS_FOUND_TITLE', 'Congratulations! All the checks passed!'); +define('TEXT_NO_ERRORS_FOUND', 'No problems were found with the settings in the store\'s configuration files, and all the modified core files have the correct modifications present!'); +define('TEXT_NO_CHECKS_MADE_FOR_REWRITE_RULE', 'This installation check does not check the rewrite rule for the store though, so please read and apply the following if you have not already done so..'); + +define('TEXT_ERROR_FOUND_TITLE', 'Error Found!'); +define('TEXT_ERRORS_FOUND_TITLE', 'Errors Found!'); +define('TEXT_CONFIG_FILE_ERROR_SO_NO_REWRITE_RULE_OUTPUT', 'A problem was found the settings in the store\'s configuration files, so the example rewrite rule panel cannot yet be built.'); +define('TEXT_CONFIG_FILE_ERRORS_SO_NO_REWRITE_RULE_OUTPUT', '%s problems were found the settings in the store\'s configuration files, so the example rewrite rule panel cannot yet be built.'); +define('TEXT_PLEASE_FIX_CONFIG_FILE_ERROR', 'Please fix the error in the configuration files, as listed below...'); +define('TEXT_PLEASE_FIX_CONFIG_FILE_ERRORS', 'Please fix the errors in the configuration files, as listed below...'); + +define('TEXT_MODIFIED_CORE_FILE_ERROR', 'A problem was found with one of the core files that needs to be modified for Ceon URI Mapping to work optimally.'); +define('TEXT_MODIFIED_CORE_FILE_ERRORS', '%s problems were found with core files that need to be modified for Ceon URI Mapping to work optimally.'); +define('TEXT_PLEASE_FIX_MODIFIED_CORE_FILE_ERROR', 'The error should be fixed as soon as possible. In the meantime though, since the store\'s configure files have been checked and found to be valid, information about the example rewrite rule for the store was able to be built.'); +define('TEXT_PLEASE_FIX_MODIFIED_CORE_FILE_ERRORS', 'The errors should be fixed as soon as possible. In the meantime though, since the store\'s configure files have been checked and found to be valid, information about the example rewrite rule for the store was able to be built.'); + +define('TEXT_OLD_FILE_DIR_ERROR', 'A file/directory for an older version of Ceon URI Mapping was found. The attempt to delete it failed, so it must be manually deleted.'); +define('TEXT_OLD_FILE_DIR_ERRORS', '%s files/directories for an older version of Ceon URI Mapping were found. The attempt to delete them failed, so they must be manually deleted.'); +define('TEXT_PLEASE_FIX_OLD_FILE_DIR_ERROR', 'The file/directory should be deleted as soon as possible as otherwise a blank page may be displayed. In the meantime though, since the store\'s configure files have been checked and found to be valid, information about the example rewrite rule for the store was able to be built.'); +define('TEXT_PLEASE_FIX_OLD_FILE_DIR_ERRORS', 'The files/directories should be deleted as soon as possible as otherwise a blank page may be displayed. In the meantime though, since the store\'s configure files have been checked and found to be valid, information about the example rewrite rule for the store was able to be built.'); + +define('TEXT_STORE_CONFIGURATION_FILES_CHECK', 'Store Configuration Files Check'); +define('TEXT_MODIFIED_CORE_FILES_CHECK', 'Modified Core Files Check'); +define('TEXT_MODIFIED_OLD_FILES_DIRS_CHECK', 'Old Version Files/Directories Check'); + +define('TEXT_ERROR_VALUE_FOR_ADMIN_SERVER_VARIABLE', 'The value for %s in the store\'s admin configure.php file is wrong.'); +define('TEXT_ERROR_VALUE_FOR_SERVER_VARIABLE', 'The value for %s in the store side\'s configure.php file is wrong.'); +define('TEXT_CURRENT_INCORRECT_VALUE_FOR_SERVER_VARIABLE', 'The current value for %s is “%s”.'); + +define('TEXT_HTTP_SERVER_VALUES_CANNOT_HAVE_A_SLASH_AT_END', 'The value for %s cannot have a slash at the end.'); +define('TEXT_REMOVE_SLASH_FROM_END', 'You must update the value for %s to remove the slash from the end.'); +define('TEXT_HTTP_SERVER_VALUES_CANNOT_USE_SUBDIRECTORY', 'The value for %s cannot include a subdirectory.'); +define('TEXT_HTTP_SERVER_VALUE_MUST_BE', 'This value must be a domain name preceded by http://, with no subdirectory after the domain name and no slash at the end.'); +define('TEXT_HTTPS_SERVER_VALUE_MUST_BE', 'This value must be a domain name preceded by https://, with no subdirectory after the domain name and no slash at the end.'); +define('TEXT_HTTP_SERVER_FORMAT_EXAMPLE', 'The only valid formats are http://store-domain.com or http://www.store-domain.com etc.'); +define('TEXT_HTTPS_SERVER_FORMAT_EXAMPLE', 'The only valid formats are https://store-domain.com or https://www.store-domain.com etc.'); +define('TEXT_REMOVE_SUBDIRECTORY_FROM_END', 'The path to the subdirectory must be removed from after the domain name definition in %s.'); +define('TEXT_SUBDIRECTORY_SETTINGS_INFO', 'If the store is in a subdirectory, then the name of the subdirectory should instead be placed in DIR_WS_CATALOG, preceded and followed by slashes, e.g. /store/ - the subdirectory name cannot be part of the %s domain name setting.

'); + +define('TEXT_ERROR_VALUE_NOT_SPECIFIED_FOR_ADMIN_SERVER_VARIABLE', 'The value for %s has not been specified in the store\'s admin configure.php file.'); +define('TEXT_ERROR_VALUE_NOT_SPECIFIED_FOR_SERVER_VARIABLE', 'The value for %s has not been specified in the store side\'s configure.php file.'); +define('TEXT_SERVER_VALUE_REQUIRED', 'A value is required for this variable.'); +define('TEXT_SET_VALUE_TO_SLASH', 'If the store is at the root of the site (not in a subdirectory), set the value for %s to /'); +define('TEXT_SET_VALUE_TO_SUBDIRECTORY_NAME', 'If the store is in a subdirectory, set the value for %s to the name of the subdirectory, with a slash at the start and a slash at the end. For example: /store/'); + +define('TEXT_VALUE_MUST_START_AND_END_WITH_SLASH', 'The value for %s must start and end with a slash.'); +define('TEXT_VALUE_MUST_START_WITH_SLASH', 'The value for %s must start with a slash.'); +define('TEXT_VALUE_MUST_END_WITH_SLASH', 'The value for %s must end with a slash.'); +define('TEXT_ADD_A_STARTING_SLASH', 'Add a slash, /, to the start of %s.'); +define('TEXT_ADD_AN_ENDING_SLASH', 'Add a slash, /, to the end of %s.'); + +define('TEXT_ERROR_ADMIN_HTTP_MUST_MATCH_HTTPS', 'The value for %s does not match the value for %s in the store\'s admin configure.php file.'); +define('TEXT_ERROR_HTTP_MUST_MATCH_HTTPS', 'The value for %s does not match the value for %s in the store side\'s configure.php file.'); +define('TEXT_WHEN_USING_STATIC_URIS_HTTP_MUST_MATCH_HTTPS', 'As Ceon URI Mapping uses static URIs, it is not possible for the store to use different paths for the base of the store\'s URIs. For example, different subdirectories cannot be used.'); +define('TEXT_SHARED_SSL_CANNOT_BE_USED', 'This means a shared SSL certificate - for example, of the format http://shared-ssl-domain.com/store-username - cannot be used for the site once static URIs are being used.'); +define('TEXT_CHANGE_HTTP_TO_MATCH_HTTPS', 'You must change the value for %s to match that of %s.'); +define('TEXT_MAY_MEAN_PURCHASING_SSL_CERTIFICATE', 'To be able to make this change, and still have the site work correctly, may require purchasing and installing an SSL certificate for the store\'s domain.'); + +define('TEXT_ERROR_UNABLE_TO_OPEN_STORE_CONFIGURE_FILE', 'The store side\'s configure.php file could not be opened so that its values could be checked.'); +define('TEXT_PATH_TO_STORE_CONFIGURE_FILE', 'The path to the store side\'s configure.php file was being worked out as %s'); +define('TEXT_CHECK_PATH_TO_STORE_CONFIGURE_FILE', 'Check that this path is correct and that the correct permissions are set.'); + + +/** + * Error messages, info messages and instructions for core file modifications + */ +if (!defined('TEXT_OR')) { + define('TEXT_OR', 'or'); +} + +define('TEXT_THE_PATH_TO_THE_FILE_IS', 'The path to the file is %s'); + +define('TEXT_ALTERNATIVELY_REPLACE_FILE_TO_REMOVE_MODIFICATIONS', 'Alternatively, if the file was modified only for Ceon URI Mapping and not for any other module, back up the file (e.g. copy it to your local computer) and replace it with a “fresh” version of the file from a “fresh” set of Zen Cart files.'); +define('TEXT_ALTERNATIVELY_REPLACE_FILE_TO_REAPPLY_MODIFICATIONS', 'Alternatively, if the file was modified only for Ceon URI Mapping and not for any other module, back up the file (e.g. copy it to your local computer), and replace it with the pre-modified sample file from the distribution, for the version of Zen Cart being used by the store.'); +define('TEXT_ALTERNATIVELY_REPLACE_FILE_TO_APPLY_MODIFICATIONS', 'Alternatively, if the file has not been modified for the store yet, back up the file (e.g. copy it to your local computer), and replace it with the pre-modified sample file from the distribution, for the version of Zen Cart being used by the store.'); + +/** + * Error messages for file that is missing + */ +define('TEXT_ERROR_FILE_MUST_BE_MODIFIED_BUT_DOES_NOT_EXIST', 'A file must have a modification made to it, to work with Ceon URI Mapping, but the file does not exist at all!'); +define('TEXT_ERROR_FILE_MUST_HAVE_MULTIPLE_MODS_BUT_DOES_NOT_EXIST', 'A file must have modifications made to it, to work with Ceon URI Mapping, but the file does not exist at all!'); + +define('TEXT_ADD_MISSING_FILE_WITH_MODIFICATIONS', 'Add the missing file and make sure you apply the modifications required for Ceon URI Mapping.'); + +/** + * Error messages for files that no longer have modifications + */ +define('TEXT_ERROR_MODS_NO_LONGER_ONE_OLD_REMAINS', 'A file has had a modification made to it, for an older version of Ceon URI Mapping, but this modification is no longer needed.'); +define('TEXT_ERROR_MODS_NO_LONGER_X_REMAIN', 'A file has had %s modifications made to it, for an older version of Ceon URI Mapping, but the modifications are no longer needed.'); +define('TEXT_ERROR_MODS_NO_LONGER_COMMENTS_REMAIN', 'A file has had modifications made to it, for an older version of Ceon URI Mapping, but the modifications are no longer needed.'); +define('TEXT_ERROR_MODS_NO_LONGER_COMMENT_REMAINS', 'A file has had modifications made to it, for an older version of Ceon URI Mapping, but the modifications are no longer needed.'); + +define('TEXT_FILE_MODIFICATION_NO_LONGER_REQUIRED', 'Although the file had to be modified for a previous version of the module, this version works differently and the file is not modified for this version.'); + +define('TEXT_REMOVE_THE_MODIFICATION', 'Remove the modification from the file by editing the file and removing the block beginning with // BEGIN CEON URI MAPPING 1 of 1 and ending with // END CEON URI MAPPING 1 of 1 - including those two “marker comments”.'); +define('TEXT_REMOVE_THE_MODIFICATIONS', 'Remove the modifications from the file by editing the file and removing the blocks beginning with // BEGIN CEON URI MAPPING x of y and ending with // END CEON URI MAPPING x of y (where x is the number of the modification and y is the total number of modifications in the file).'); +define('TEXT_REMOVE_THE_MODIFICATIONS_2', 'Make sure to also remove the two “marker comments” for each modification.'); + +define('TEXT_MARKER_COMMENT_FOUND', 'Although this check hasn\'t identified old Ceon URI Mapping code in the file, it has identified that a marker comment remains in the file.'); +define('TEXT_MARKER_COMMENTS_FOUND', 'Although this check hasn\'t identified old Ceon URI Mapping code in the file, it has identified that %s marker comments remain in the file.'); +define('TEXT_MARKER_COMMENTS_FOUND_2', 'This could mean that the modification(s) weren\'t removed properly and that old code remains.'); + +define('TEXT_CHECK_MODIFICATIONS_REMOVED_PROPERLY_1_COMMENT', 'It would be a good idea to recheck the file to make sure all previous traces of the modifications have been removed, including the marker comment this check has found.'); +define('TEXT_CHECK_MODIFICATIONS_REMOVED_PROPERLY_X_COMMENTS', 'It would be a good idea to recheck the file to make sure all previous traces of the modifications have been removed, including the marker comments this check has found.'); +define('TEXT_MARKER_COMMENTS_INFO', 'Marker comments look like // BEGIN CEON URI MAPPING x of y or // END CEON URI MAPPING x of y (where x is the number of the modification and y is the total number of modifications in the file).'); + +/** + * Error messages for files that are missing all of their new modifications + */ +define('TEXT_ERROR_OLD_MOD_PRESENT', 'A file requires a modification to be made for it but the modification made to it is for an older version of Ceon URI Mapping.'); +define('TEXT_ERROR_X_OLD_MODS_PRESENT', 'A file requires %s modifications to be made for it but the modifications made to it are for an older version of Ceon URI Mapping.'); +define('TEXT_ERROR_MOD_MISSING_OLD_MODS_PRESENT', 'A file requires a modification to be made for it but the modification has not yet been made. The file does however have old modifications, made to it for an older version of Ceon URI Mapping.'); +define('TEXT_ERROR_ALL_X_MODS_MISSING_OLD_MOD_REMAINS', 'A file requires %s modifications to be made for it but they have not yet been made. The file has an old modification in it, made to it for an older version of Ceon URI Mapping.'); +define('TEXT_ERROR_ALL_X_MODS_MISSING_X_OLD_MODS_REMAIN', 'A file requires %s modifications to be made for it but they have not yet been made. The file has %s old modifications in it, made to it for an older version of Ceon URI Mapping.'); +define('TEXT_ERROR_MOD_MISSING_X_COMMENTS_PRESENT', 'A file requires a modification to be made for it but the modification has not yet been made. The file does however have %s comment marker(s) in it.'); +define('TEXT_ERROR_ALL_X_MODS_MISSING_X_COMMENTS_PRESENT', 'A file requires %s modifications to be made for it but the modifications have not yet been made. The file does however have %s comment marker(s) in it.'); +define('TEXT_ERROR_MOD_MISSING', 'A file requires a modification to be made for it but the modification has not been made.'); +define('TEXT_ERROR_X_MODS_MISSING', 'A file requires %s modifications to be made for it but none of the modifications have been made.'); + +define('TEXT_FILE_MODIFICATION_NEEDS_UPDATING', 'The file appears to have been modified for an older version of Ceon URI Mapping but the modification has not been updated for this version of the software.'); +define('TEXT_FILE_MODIFICATIONS_NEED_UPDATING', 'The file appears to have been modified for an older version of Ceon URI Mapping but the modifications have not been updated for this version of the software.'); +define('TEXT_FILE_MODIFICATION_NEEDS_APPLYING_OLD_REMOVING', 'The file appears to have been modified for an older version of Ceon URI Mapping but the modification for this version of the software has not been applied.'); +define('TEXT_FILE_HAS_BEEN_MODIFIED_NEW_MODS_NEED_APPLYING', 'The file appears to have been modified for an older version of Ceon URI Mapping but the modifications for this version of the software have not been applied.'); +define('TEXT_FILE_HAS_BEEN_MODIFIED_NEW_MODS_NEED_APPLYING', 'The file appears to have been modified for an older version of Ceon URI Mapping but the modifications for this version of the software have not been applied.'); +define('TEXT_FILE_HAS_BEEN_MODIFIED_SOMEHOW_MOD_MISSING', 'The file appears to have been modified in some way for Ceon URI Mapping, but the required modification could not be identified, it does not appear to have been applied correctly.'); +define('TEXT_FILE_HAS_BEEN_MODIFIED_SOMEHOW_MODS_MISSING', 'The file appears to have been modified in some way for Ceon URI Mapping, but the required modifications could not be identified, they don\'t appear to have been applied correctly.'); + +define('TEXT_UPDATE_THE_MODIFICATION', 'Update the modification by removing the old modification and applying the new modification.'); +define('TEXT_UPDATE_THE_MODIFICATIONS', 'Update the modifications by removing the %s old modifications and applying the %s new modifications.'); +define('TEXT_REMOVE_X_OLD_MODS_APPLY_NEW', 'Remove all the old modifications (there are %s), and then apply the new modification (there is only one in this version).'); +define('TEXT_REMOVE_OLD_MOD_APPLY_X_NEW', 'Remove the old modification (there is just one), and then apply the %s new modifications.'); +define('TEXT_REMOVE_X_OLD_MODS_APPLY_X_NEW', 'Remove all the old modifications (there are %s), and then apply the %s new modifications.'); +define('TEXT_CHECK_FILE_APPLY_MOD', 'Check the file and remove any old pieces of code or code that wasn\'t fully applied. Then apply the modification required for this version of the software.'); +define('TEXT_CHECK_FILE_APPLY_MODS', 'Check the file and remove any old pieces of code or code that wasn\'t fully applied. Then apply the %s modifications required for this version of the software.'); +define('TEXT_APPLY_MOD', 'Apply the modification required for Ceon URI Mapping.'); +define('TEXT_APPLY_X_MODS', 'Apply the %s modifications required for Ceon URI Mapping.'); + +/** + * Error messages for files that have one new modification applied but one is missing + */ +define('TEXT_ERROR_SECOND_MOD_PRESENT_FIRST_MISSING_OLD_MOD_PRESENT', 'A file requires 2 modifications to be made for it, the second of which has been made, but the first modification is missing and a modification for an older version of Ceon URI Mapping has been found.'); +define('TEXT_ERROR_FIRST_MOD_PRESENT_SECOND_MISSING_OLD_MOD_PRESENT', 'A file requires 2 modifications to be made for it, the first of which has been made, but the second modification is missing and a modification for an older version of Ceon URI Mapping has been found.'); +define('TEXT_ERROR_SECOND_MOD_PRESENT_FIRST_MISSING_X_OLD_MODS_PRESENT', 'A file requires 2 modifications to be made for it, the second of which has been made, but the first modification is missing and %s modifications for an older version of Ceon URI Mapping have been found.'); +define('TEXT_ERROR_FIRST_MOD_PRESENT_SECOND_MISSING_X_OLD_MODS_PRESENT', 'A file requires 2 modifications to be made for it, the first of which has been made, but the second modification is missing and %s modifications for an older version of Ceon URI Mapping have been found.'); +define('TEXT_ERROR_SECOND_MOD_PRESENT_FIRST_MISSING', 'A file requires 2 modifications to be made for it, the second of which has been made, but the first modification is missing.'); +define('TEXT_ERROR_FIRST_MOD_PRESENT_SECOND_MISSING', 'A file requires 2 modifications to be made for it, the first of which has been made, but the second modification is missing.'); + +define('TEXT_COULD_BE_THAT_FIRST_MISSED_OLD_REMAINS', 'It could be that modification number 2 for this version of the software was made, and that an old modification, for an older version of Ceon URI Mapping, was left in by mistake, instead of updating modification number 1.'); +define('TEXT_COULD_BE_THAT_SECOND_MISSED_OLD_REMAINS', 'It could be that modification number 1 for this version of the software was made, and that an old modification, for an older version of Ceon URI Mapping, was left in by mistake, instead of updating modification number 2.'); +define('TEXT_COULD_BE_THAT_FIRST_MOD_MISSED_EXTRA_OLD_REMAINS', 'Or it could be that this version of the software has different modifications from the previous version and that, although modification number 2 was applied correctly, modification number 1 was missed out, and an additional, old modification, for an older version of Ceon URI Mapping, was also left in by mistake.'); +define('TEXT_COULD_BE_THAT_SECOND_MOD_MISSED_EXTRA_OLD_REMAINS', 'Or it could be that this version of the software has different modifications from the previous version and that, although modification number 1 was applied correctly, modification number 2 was missed out, and an additional, old modification, for an older version of Ceon URI Mapping, was also left in by mistake.'); + +define('TEXT_COULD_BE_THAT_FIRST_MISSED_X_OLD_REMAIN', 'It could be that modification number 2 for this version of the software was made and that %s old modifications, for an older version of Ceon URI Mapping, were left in by mistake, instead of updating modification number 1.'); +define('TEXT_COULD_BE_THAT_SECOND_MISSED_X_OLD_REMAIN', 'It could be that modification number 1 for this version of the software was made and that %s old modifications, for an older version of Ceon URI Mapping, were left in by mistake, instead of updating modification number 2.'); +define('TEXT_COULD_BE_THAT_FIRST_MOD_MISSED_X_EXTRA_OLD_REMAIN', 'Or it could be that this version of the software has different modifications from the previous version and that, although modification number 2 was applied correctly, modification number 1 was missed out, and %s additional, old modifications, for an older version of Ceon URI Mapping, were also left in by mistake.'); +define('TEXT_COULD_BE_THAT_SECOND_MOD_MISSED_X_EXTRA_OLD_REMAIN', 'Or it could be that this version of the software has different modifications from the previous version and that, although modification number 1 was applied correctly, modification number 2 was missed out, and %s additional, old modifications, for an older version of Ceon URI Mapping, were also left in by mistake.'); + +define('TEXT_CHECK_FILE_APPLY_MISSING_MOD_X', 'Check the file and remove any old pieces of code. Then apply modification number %s, which was missed out, but which is required for this version of the software.'); +define('TEXT_APPLY_MISSING_MOD_X', 'Apply modification number %s, which was missed out, but which is required for this version of the software.'); + +/** + * Error messages for files that have several new modifications applied but are missing one + */ +define('TEXT_ERROR_X_MODS_PRESENT_MOD_X_MISSING_OLD_MOD_PRESENT', 'A file requires %s modifications to be made for it, modification numbers %s have been made, but modification number %s is missing and a modification for an older version of Ceon URI Mapping has been found.'); +define('TEXT_ERROR_X_MODS_PRESENT_MOD_X_MISSING_X_OLD_MODS_PRESENT', 'A file requires %s modifications to be made for it, modification numbers %s have been made, but modification number %s is missing and %s modifications for an older version of Ceon URI Mapping have been found.'); +define('TEXT_ERROR_X_MODS_PRESENT_MOD_X_MISSING', 'A file requires %s modifications to be made for it, modification numbers %s have been made, but modification number %s is missing.'); + +define('TEXT_COULD_BE_THAT_MOD_X_MISSED_OLD_REMAINS', 'It could be that modification numbers %s for this version of the software were made, and that an old modification, for an older version of Ceon URI Mapping, was left in by mistake, instead of updating modification number %s.'); +define('TEXT_COULD_BE_THAT_X_MODS_MADE_X_OLD_REMAIN_MOD_X_MISSED', 'It could be that modification numbers %s for this version of the software were made and that %s old modifications, for an older version of Ceon URI Mapping, were left in by mistake, instead of updating modification number %s.'); +define('TEXT_COULD_BE_THAT_MOD_X_MISSED_EXTRA_OLD_REMAINS', 'Or it could be that this version of the software has different modifications from the previous version and that, although modification numbers %s were applied correctly, modification number %s was missed out, and an additional, old modification, for an older version of Ceon URI Mapping, was also left in by mistake.'); +define('TEXT_COULD_BE_THAT_X_MODS_MADE_MOD_MISSED_X_EXTRA_OLD_REMAIN', 'Or it could be that this version of the software has different modifications from the previous version and that, although modification numbers %s were applied correctly, modification number %s was missed out, and %s additional, old modifications, for an older version of Ceon URI Mapping, were also left in by mistake.'); + +/** + * Error messages for files that have one new modification applied but are missing several + */ +define('TEXT_ERROR_MOD_X_PRESENT_X_MODS_MISSING_OLD_MOD_PRESENT', 'A file requires %s modifications to be made for it, modification number %s has been made, but modification numbers %s are missing and a modification for an older version of Ceon URI Mapping has been found.'); +define('TEXT_ERROR_MOD_X_PRESENT_X_MODS_MISSING_X_OLD_MODS_PRESENT', 'A file requires %s modifications to be made for it, modification number %s has been made, but modification numbers %s are missing and %s modifications for an older version of Ceon URI Mapping have been found.'); +define('TEXT_ERROR_MOD_X_PRESENT_X_MODS_MISSING', 'A file requires %s modifications to be made for it, modification number %s has been made, but modification numbers %s are missing.'); + +define('TEXT_COULD_BE_THAT_MOD_X_MADE_MODS_X_MISSED_OLD_REMAINS', 'It could be that modification number %s for this version of the software was made, but somehow modification numbers %s were missed, and that an old modification, for an older version of Ceon URI Mapping, was left in by mistake, instead of updating one of modification numbers %s.'); +define('TEXT_COULD_BE_THAT_MOD_X_MADE_MODS_X_MISSED_X_OLD_REMAIN', 'It could be that modification number %s for this version of the software was made, but somehow modification numbers %s were missed, and that %s old modifications, for an older version of Ceon URI Mapping, were left in by mistake, instead of updating the equivalent modification (modification number %s).'); +define('TEXT_COULD_BE_THAT_MOD_X_MADE_MODS_X_MISSED_EXTRA_OLD_REMAINS', 'Or it could be that this version of the software has different modifications from the previous version and that, although modification number %s was applied correctly, modification numbers %s were missed out, and an additional, old modification, for an older version of Ceon URI Mapping, was also left in by mistake.'); +define('TEXT_COULD_BE_THAT_MOD_X_MADE_MODS_X_MISSED_X_EXTRA_OLD_REMAIN', 'Or it could be that this version of the software has different modifications from the previous version and that, although modification number %s was applied correctly, modification numbers %s were missed out, and %s additional, old modifications, for an older version of Ceon URI Mapping, were also left in by mistake.'); + +define('TEXT_CHECK_FILE_APPLY_MISSING_MODS_X', 'Check the file and remove any old pieces of code. Then apply modification numbers %s, which were missed out, but which are required for this version of the software.'); +define('TEXT_APPLY_MISSING_MODS_X', 'Apply modification numbers %s, which were missed out, but which are required for this version of the software.'); + +/** + * Error messages for files that have one several modification applied but are still missing several + */ +define('TEXT_ERROR_MODS_X_PRESENT_MODS_X_MISSING_OLD_MOD_PRESENT', 'A file requires %s modifications to be made for it, modification numbers %s have been made, but modification numbers %s are missing and a modification for an older version of Ceon URI Mapping has been found.'); +define('TEXT_ERROR_MODS_X_PRESENT_MODS_X_MISSING_X_OLD_MODS_PRESENT', 'A file requires %s modifications to be made for it, modification numbers %s have been made, but modification numbers %s are missing and %s modifications for an older version of Ceon URI Mapping have been found.'); +define('TEXT_ERROR_X_MODS_PRESENT_X_MODS_MISSING', 'A file requires %s modifications to be made for it, modification numbers %s have been made, but modification numbers %s are missing.'); + +define('TEXT_COULD_BE_THAT_MODS_X_MADE_MODS_X_MISSED_OLD_REMAINS', 'It could be that modification numbers %s for this version of the software were made, but somehow modification numbers %s were missed, and that an old modification, for an older version of Ceon URI Mapping, was left in by mistake, instead of updating one of modification numbers %s.'); +define('TEXT_COULD_BE_THAT_MODS_X_MADE_MODS_X_MISSED_SAME_X_OLD_REMAIN', 'It could be that modification numbers %s for this version of the software were made, but somehow modification numbers %s were missed, and that %s old modifications, for an older version of Ceon URI Mapping, were left in by mistake, instead of updating modification numbers %s.'); +define('TEXT_COULD_BE_THAT_MODS_X_MADE_MODS_X_MISSED_X_OLD_REMAIN', 'It could be that modification numbers %s for this version of the software were made, but somehow modification numbers %s were missed, and that %s old modifications, for an older version of Ceon URI Mapping, were left in by mistake, instead of updating the appropriate modifications and/or being removed altogether.'); +define('TEXT_COULD_BE_THAT_MODS_X_MADE_MODS_X_MISSED_EXTRA_OLD_REMAINS', 'Or it could be that this version of the software has different modifications from the previous version and that, although modification numbers %s were applied correctly, modification numbers %s were missed out, and an additional, old modification, for an older version of Ceon URI Mapping, was also left in by mistake'); +define('TEXT_COULD_BE_THAT_MODS_X_MADE_MODS_X_MISSED_EXTRA_X_OLD_REMAIN', 'Or it could be that this version of the software has different modifications from the previous version and that, although modification numbers %s were applied correctly, modification numbers %s were missed out, and %s additional, old modifications, for an older version of Ceon URI Mapping, were also left in by mistake'); + +define('TEXT_ERROR_MOD_PRESENT_OLD_MOD_REMAINS', 'A file requires a modification to be made for it, which has been made successfully, but an old modification, for an older version of Ceon URI Mapping, still remains.'); +define('TEXT_ERROR_MOD_PRESENT_X_OLD_MODS_REMAIN', 'A file requires a modification to be made for it, which has been made successfully, but %s old modifications, for an older version of Ceon URI Mapping, still remain.'); +define('TEXT_ERROR_X_MODS_PRESENT_OLD_MOD_REMAINS', 'A file requires %s modification to be made for it, which have been made successfully, but an old modification, for an older version of Ceon URI Mapping, still remains.'); +define('TEXT_ERROR_X_MODS_PRESENT_X_OLD_MODS_REMAIN', 'A file requires %s modification to be made for it, which have been made successfully, but %s old modifications, for an older version of Ceon URI Mapping, still remain.'); + +define('TEXT_REMOVE_OLD_MOD', 'Check the file and remove any old pieces of code. '); + + +/** + * Error messages, info messages and instructions for old files/dirs + */ +define('TEXT_THE_PATH_TO_THE_DIR_IS', 'The path to the directory is %s'); + +define('TEXT_ERROR_OLD_FILE_REMAINS', 'A file for an older version of Ceon URI Mapping was found. The attempt to delete it failed, so it must be manually deleted.'); +define('TEXT_ERROR_OLD_DIR_REMAINS', 'A directory for an older version of Ceon URI Mapping was found. The attempt to delete it failed, so it must be manually deleted.'); + +define('TEXT_DELETE_FILE', 'Delete the file to prevent it causing any problems.'); +define('TEXT_DELETE_DIR', 'Delete the directory to prevent its contents causing any problems.'); + + +/** + * Defines for the example rewrite rule functionality + */ +define('TEXT_EXAMPLE_REWRITE_RULE', 'Example Rewrite Rule'); + +define('TEXT_EXAMPLE_REWRITE_RULE_BUILT_INTRO', 'The installation check has analysed the store\'s directories and built the following example rewrite rule for the store.'); +define('TEXT_EXAMPLE_REWRITE_RULE_GOOD_BASIS', 'It is likely to be a good basis for the rewrite rule to be used for the store, but it is up to you to adapt it as necessary. You can read up on rewrite rules on the internet if needs be, please don\'t contact Ceon for help with customising this rule, unless you\'re willing to pay for the support.'); + +define('TEXT_APACHE_TITLE', 'Apache Webserver'); +define('TEXT_SERVER_APPEARS_TO_BE_APACHE', 'The server appears to be using the Apache webserver.'); +define('TEXT_PLACE_REWRITE_RULE_IN_HTACCESS_FILE_OR_VIRTUALHOST_DIRECTIVE', 'The rule below should be placed in a .htaccess file or the VirtualHost Directive for the site (although in this case the rule will have to modified slightly).'); +define('TEXT_PLACE_REWRITE_RULE_HTACCESS_FILE_TITLE', 'If using a .htaccess file'); +define('TEXT_ERROR_DIR_FS_CATALOG_PROBLEM', 'The path to the .htaccess file can\'t be constructed as there appears to be a problem with the paths in the store\'s configure.php file. The catalog folder, %s, is not the end part of the path to the store: %s.'); +define('TEXT_ERROR_DIR_FS_CATALOG_PROBLEM_POSSIBLE_REASON', 'The values for DIR_WS_CATALOG and DIR_FS_CATALOG should be checked and fixed.'); +define('TEXT_PLACE_REWRITE_RULE_HTACCESS_FILE_INFO', 'If placing the rule in a .htaccess file, the .htaccess file into which it should be placed is the site root\'s .htaccess file, which should be created if it doesn\'t exist:'); +define('TEXT_PLACE_REWRITE_RULE_HTACCESS_FILE_INFO_EXISTS', 'If placing the rule in a .htaccess file, the .htaccess file into which it should be placed is the site root\'s .htaccess file, which is:'); +define('TEXT_PLACE_REWRITE_RULE_HTACCESS_FILE_INFO_SUBDIR', 'Although the store is in a subdirectory, the .htaccess file into which the example rewrite rule should be placed is NOT a .htaccess file within the Zen Cart folder, the rewrite rule below is for the site root\'s .htaccess file - place it in the above file!'); + +define('TEXT_PLACE_REWRITE_RULE_VIRTUALHOST_DIRECTIVE_TITLE', 'If using an Apache VirtualHost Directive'); +define('TEXT_PLACE_REWRITE_RULE_VIRTUALHOST_DIRECTIVE_INFO', 'If the store runs on a server using Apache and it is possible to modify the VirtualHost Directive for the store, then the rule can be modified and entered into the VirtualHost Directive for the store.'); +define('TEXT_PLACE_REWRITE_RULE_VIRTUALHOST_DIRECTIVE_INSTRUCTIONS', 'Simply add a slash to the front of %s, to make the rule compatible with the VirtualHost Directive:

%s'); + +define('TEXT_IIS_ISAPI_REWRITE_TITLE', 'IIS Server with IIS ISAPI_Rewrite'); +define('TEXT_SERVER_APPEARS_TO_BE_IIS_ISAPI_REWRITE', 'The server appears to be using the Micro$oft IIS webserver with the ISAPI_Rewrite module.'); +define('TEXT_PLACE_REWRITE_RULE_ISAPI_REWRITE_LITE_VERSION_TITLE', 'If using the “Lite” version of ISAPI_Rewrite'); +define('TEXT_PLACE_REWRITE_RULE_IN_ISAPI_REWRITE_GLOBAL_HTTPD_CONF_INFO', 'The Lite version of ISAPI_Rewrite only allows rewrite rules to be placed in a global file called httpd.conf, which should be in the ISAPI_Rewrite installation folder. Place the example rewrite rule in that file.'); +define('TEXT_PLACE_REWRITE_RULE_ISAPI_REWRITE_FULL_VERSION_DIRECTIVE_TITLE', 'If using the “Full” version of ISAPI_Rewrite'); +define('TEXT_PLACE_REWRITE_RULE_IN_ISAPI_REWRITE_LOCAL_HTACCESS_INFO', 'The full version of ISAPI_Rewrite allows rewrite rules to be placed in a file called .htaccess, which is placed in the site root\'s folder, and which should be created if it doesn\'t yet exist:'); +define('TTEXT_PLACE_REWRITE_RULE_IN_ISAPI_REWRITE_LOCAL_HTACCESS_INFO_EXISTS', 'The full version of ISAPI_Rewrite allows rewrite rules to be placed in a file called .htaccess, which is placed in the site root\'s folder:'); + +define('TEXT_IIS_URL_REWRITE_TITLE', 'IIS Server with IIS URL Rewrite'); +define('TEXT_SERVER_APPEARS_TO_BE_IIS_URL_REWRITE', 'The server appears to be using the Micro$oft IIS webserver with the IIS URL Rewrite module.'); +define('TEXT_IMPORT_REWRITE_RULE_IIS_URL_REWRITE_TITLE', 'Import the rewrite rule'); +define('TEXT_IMPORT_REWRITE_RULE_IIS_URL_REWRITE_INFO', 'On servers using IIS URL Rewrite, the rule below can be imported through its administration interface.'); +define('TEXT_IMPORT_REWRITE_RULE_IIS_URL_REWRITE_HINTS', 'In IIS Manager\'s “Features View” for a domain, look for “URL Rewrite”. Then in the “Actions” pane, click “Import Rules”. The rule below can then be copied and pasted into the text area.'); + +define('TEXT_NGINX_TITLE', 'nginx'); +define('TEXT_SERVER_APPEARS_TO_BE_NGINX', 'The server appears to be using the nginx webserver.'); +define('TEXT_PLACE_REWRITE_DIRECTIVE_NGINX_TITLE', 'Add directive to main nginx.conf or virtual host file'); +define('TEXT_PLACE_REWRITE_DIRECTIVE_NGINX_INFO', 'On servers using nginx, the directive below can be added to the location %s block of the server block in the main nginx.conf file, or to the location %s block of the server block in any virtual host file which has been created for the domain (e.g. something like /etc/nginx/sites-available/store.com).'); +define('TEXT_NGINX_EXAMPLE_INTRO', 'It doesn\'t really matter where in the block you place it. As an example, the location block could end up looking something like:'); +define('TEXT_NGINX_EXAMPLE', 'location %s { +    root   html; +    index  index.php; +    %s +}'); + +define('TEXT_REWRITE_RULE_PROBLEMS_TITLE', 'Getting 404 or 500 errors after adding the rule?'); +define('TEXT_REWRITE_RULE_ERRORS_INTRO', 'If after adding this rule (and a URI mapping to test) navigating to the new static URI results in a 404 or a 500 error, then it may be worth trying a slight variation of the rule, which some servers seem to require.'); +define('TEXT_REWRITE_RULE_ERROR_TRY_ADDING_SLASH', 'Try adding a slash to the front of %s, this may resolve the problem: %s'); + +define('TEXT_SELECT_ALL_AND_COPY', 'Click this link to Select All of the above text  (& automatically Copy it to the Clipboard in IE)'); \ No newline at end of file diff --git a/NEUE DATEIEN/DEINADMIN/includes/languages/german/ceon_uri_mapping_manufacturer_pages.php b/NEUE DATEIEN/DEINADMIN/includes/languages/german/ceon_uri_mapping_manufacturer_pages.php new file mode 100644 index 0000000..39f5af3 --- /dev/null +++ b/NEUE DATEIEN/DEINADMIN/includes/languages/german/ceon_uri_mapping_manufacturer_pages.php @@ -0,0 +1,29 @@ + + * @copyright Copyright 2008-2019 Ceon + * @copyright Copyright 2003-2019 Zen Cart Development Team + * @copyright Portions Copyright 2003 osCommerce + * @link http://ceon.net/software/business/zen-cart/uri-mapping + * @license http://www.zen-cart.com/license/2_0.txt GNU Public License V2.0 + * @version $Id: ceon_uri_mapping_manufacturer_pages.php 2018-03-29 08:31:10Z conor $ + */ + +define('CEON_URI_MAPPING_TEXT_MANUFACTURER_URI', 'URI Mapping:'); + +define('CEON_URI_MAPPING_TEXT_MANUFACTURER_URI_AUTOGEN', 'Tick this box to have the URI auto-generated for this manufacturer.'); +define('CEON_URI_MAPPING_TEXT_MANUFACTURER_URIS_AUTOGEN', 'Tick this box to have the URIs auto-generated for this manufacturer.'); + +define('CEON_URI_MAPPING_TEXT_MANUFACTURER_MAPPING_ADDED', '%s URI Mapping added: %s'); +define('CEON_URI_MAPPING_TEXT_MANUFACTURER_MAPPING_UPDATED', '%s URI Mapping updated: %s'); +define('CEON_URI_MAPPING_TEXT_MANUFACTURER_MAPPING_MADE_HISTORICAL', '%s URI Mapping converted to historical mapping'); + +if (!defined('CEON_URI_MAPPING_TEXT_URI_AUTOGEN_ONE_EXISTING_MAPPING')) { + require_once('ceon_uri_mapping_admin_pages.php'); +} + +define('CEON_URI_MAPPING_TEXT_ERROR_AUTOGENERATION_MANUFACTURER_HAS_NO_NAME', '%s URI Mapping cannot be generated as the manufacturer has no name!'); \ No newline at end of file diff --git a/NEUE DATEIEN/DEINADMIN/includes/languages/german/ceon_uri_mapping_product_pages.php b/NEUE DATEIEN/DEINADMIN/includes/languages/german/ceon_uri_mapping_product_pages.php new file mode 100644 index 0000000..3677846 --- /dev/null +++ b/NEUE DATEIEN/DEINADMIN/includes/languages/german/ceon_uri_mapping_product_pages.php @@ -0,0 +1,80 @@ + + * @copyright Copyright 2008-2019 Ceon + * @copyright Copyright 2003-2019 Zen Cart Development Team + * @copyright Portions Copyright 2003 osCommerce + * @link http://ceon.net/software/business/zen-cart/uri-mapping + * @license http://www.zen-cart.com/license/2_0.txt GNU Public License V2.0 + * @version $Id: ceon_uri_mapping_product_pages.php 2018-03-29 08:31:10Z webchills $ + */ + +define('BOX_CEON_URI_MAPPING', 'Ceon URI Mapping (SEO) Config'); + +define('CEON_URI_MAPPING_TEXT_PRODUCT_URI', 'URI Mapping:'); +define('CEON_URI_MAPPING_TEXT_PRODUCT_NO_URI', 'This product is not mapped to a URI.'); + +define('CEON_URI_MAPPING_TEXT_PRODUCT_URI_AUTOGEN', 'Tick this box to have the URI auto-generated for this product.'); +define('CEON_URI_MAPPING_TEXT_PRODUCT_URIS_AUTOGEN', 'Tick this box to have the URIs auto-generated for this product.'); + +define('CEON_URI_MAPPING_TEXT_PRODUCT_URI_AUTOGENERATED', 'Auto-generated URI Mapping:'); +define('CEON_URI_MAPPING_TEXT_PRODUCT_URIS_AUTOGENERATED', 'Auto-generated URI Mappings:'); +define('CEON_URI_MAPPING_TEXT_PRODUCT_URI_ENTERED', 'Entered URI Mapping:'); +define('CEON_URI_MAPPING_TEXT_PRODUCT_URIS_ENTERED', 'Entered URI Mappings:'); +define('CEON_URI_MAPPING_TEXT_PREVIEW_PRODUCT_ERROR_PRODUCT_HAS_NO_NAME', 'URI Mapping cannot be generated as the product has no name!'); +define('CEON_URI_MAPPING_TEXT_PREVIEW_PRODUCT_ERROR_PRODUCT_HAS_NO_MODEL', 'URI Mapping cannot be generated as the product has no model code!'); +define('CEON_URI_MAPPING_TEXT_PREVIEW_PRODUCT_ERROR_CATEGORY_HAS_NO_NAME', 'URI Mapping cannot be generated for product as a category it is in has no name!'); +define('CEON_URI_MAPPING_TEXT_URI_ORIGINALLY_GENERATED', 'The URI Mapping originally generated clashes with a URI already in use on the site. That URI Mapping is:'); +define('CEON_URI_MAPPING_TEXT_URI_GENERATED_AUTO_APPENDED', 'As auto-append is enabled, a new, unique URI Mapping has been generated, by appending a number:'); +define('CEON_URI_MAPPING_TEXT_UPDATE_WILL_USE_AUTO_APPENDED_MAPPING', 'Clicking “Update” will use this new URI Mapping, with its auto-appended number. If this isn\'t the desired result, then either:

  • Copy the URI mapping, click “Back” and enter and change it.
  • Or make the necessary changes to this product\'s name, or whatever is using the desired URI mapping, so that the desired URI can be used for this product without this clash (for example, check that this product is not using the same name as another in the same category etc.).
'); +define('CEON_URI_MAPPING_TEXT_URI_GENERATED_WHICH_IS_CLASHING', 'The URI Mapping auto-generated cannot be used as it clashes with a URI Mapping already in use for the site:'); +define('CEON_URI_MAPPING_TEXT_URI_ORIGINALLY_ENTERED', 'The URI Mapping originally entered clashes with a URI already in use on the site. That URI Mapping is:'); +define('CEON_URI_MAPPING_TEXT_URI_ENTERED_AUTO_APPENDED', 'As auto-append is enabled, a new, unique URI Mapping has been generated, by appending a number:'); +define('CEON_URI_MAPPING_TEXT_URI_ENTERED_WHICH_IS_CLASHING', 'The URI Mapping entered clashes with a URI already in use on the site, so it will not be saved. The URI Mapping entered was:'); +define('CEON_URI_MAPPING_TEXT_PRODUCT_NO_URI_ENTERED', 'No URI Mapping'); + +define('CEON_URI_MAPPING_TEXT_PRODUCT_MAPPING_ADDED', '%s URI Mapping added: %s'); +define('CEON_URI_MAPPING_TEXT_PRODUCT_MAPPING_ADDED_WITH_AUTO_APPEND', '%s URI Mapping added. The URI mapping was already being used, so an auto-appended integer was added, as per the site\'s configuration settings: %s - The mapping can be manually changed by editing the product.'); +define('CEON_URI_MAPPING_TEXT_PRODUCT_MAPPING_ADDED_ENFORCED_AUTO_APPEND', '%s URI Mapping added. The URI mapping was already being used, so an auto-appended integer was added, to make the URI mapping unique and prevent it clashing with the existing mapping: %s - The mapping can be manually changed by editing the product.'); +define('CEON_URI_MAPPING_TEXT_PRODUCT_MAPPING_UPDATED', '%s URI Mapping updated: %s'); +define('CEON_URI_MAPPING_TEXT_PRODUCT_MAPPING_MADE_HISTORICAL', '%s URI Mapping converted to historical mapping'); +define('CEON_URI_MAPPING_TEXT_PRODUCT_RELATED_PAGE_MAPPING_MADE_HISTORICAL', '%s URI Mapping converted to historical mapping (%s)'); + +if (!defined('CEON_URI_MAPPING_TEXT_URI_AUTOGEN_ONE_EXISTING_MAPPING')) { + require_once('ceon_uri_mapping_admin_pages.php'); +} + +define('CEON_URI_MAPPING_TEXT_DUPLICATE_PRODUCT_URI_MAPPING', 'URI Mapping (only applies if product is being duplicated):'); +define('CEON_URI_MAPPING_TEXT_COPY_AUTOGEN_URI', 'Auto-generate a new URI mapping for the duplicate product.'); +define('CEON_URI_MAPPING_TEXT_COPY_AUTOGEN_URIS', 'Auto-generate new URI mappings for the duplicate product.'); +define('CEON_URI_MAPPING_TEXT_COPY_EXISTING_MAPPING', 'Copy existing product\'s URI mapping to the duplicate product (it will have a number appended so that the URI mapping is unique and therefore doesn\'t conflict with the URI mapping of the product being copied).'); +define('CEON_URI_MAPPING_TEXT_COPY_EXISTING_MAPPINGS', 'Copy existing product\'s URI mappings to the duplicate product (they will have a number appended so that the URI mappings are unique and therefore don\'t conflict with the URI mappings of the product being copied).'); +define('CEON_URI_MAPPING_TEXT_COPY_PRODUCT_DONT_AUTOGEN_URI', 'Don\'t auto-generate a new URI mapping for the duplicate product.'); +define('CEON_URI_MAPPING_TEXT_COPY_PRODUCT_DONT_AUTOGEN_URIS', 'Don\'t auto-generate URI mappings for the duplicate product.'); +define('CEON_URI_MAPPING_TEXT_COPY_PRODUCT_DONT_COPY_URI', 'Don\'t copy existing product\'s URI mapping to the duplicate product.'); +define('CEON_URI_MAPPING_TEXT_COPY_PRODUCT_DONT_COPY_URIS', 'Don\'t copy existing product\'s URI mappings to the duplicate product.'); +define('CEON_URI_MAPPING_TEXT_COPY_PRODUCT_DONT_AUTOGEN_COPY_URI', 'Don\'t auto-generate the URI mapping or copy the existing product\'s URI mapping for the duplicate product.'); +define('CEON_URI_MAPPING_TEXT_COPY_PRODUCT_DONT_AUTOGEN_COPY_URIS', 'Don\'t auto-generate the URI mappings or copy the existing product\'s URI mappings for the duplicate product.'); + +define('CEON_URI_MAPPING_TEXT_MOVE_PRODUCT_URI_MAPPING', 'URI Mapping:'); +define('CEON_URI_MAPPING_TEXT_MOVE_AUTOGEN_URI', 'Auto-generate a new URI mapping according the category being moved to.'); +define('CEON_URI_MAPPING_TEXT_MOVE_AUTOGEN_URIS', 'Auto-generate new URI mappings according the category being moved to.'); +define('CEON_URI_MAPPING_TEXT_MOVE_USE_EXISTING_MAPPING', 'Use product\'s existing URI mapping after the product has been moved to its new category.'); +define('CEON_URI_MAPPING_TEXT_MOVE_USE_EXISTING_MAPPINGS', 'Use product\'s existing URI mappings after the product has been moved to its new category.'); +define('CEON_URI_MAPPING_TEXT_MOVE_PRODUCT_DONT_AUTOGEN_URI', 'Don\'t auto-generate a URI mapping for the product after it has been moved.'); +define('CEON_URI_MAPPING_TEXT_MOVE_PRODUCT_DONT_AUTOGEN_URIS', 'Don\'t auto-generate URI mappings for the product after it has been moved.'); +define('CEON_URI_MAPPING_TEXT_MOVE_PRODUCT_DONT_MOVE_URI', 'Drop existing URI mapping for the product after it has been moved.'); +define('CEON_URI_MAPPING_TEXT_MOVE_PRODUCT_DONT_MOVE_URIS', 'Drop existing URI mappings for the product after it has been moved.'); +define('CEON_URI_MAPPING_TEXT_MOVE_PRODUCT_DONT_AUTOGEN_MOVE_URI', 'Drop existing URI mapping for the product after it has been moved, and don\'t generate a new one (the moved product will have no current URI mapping).'); +define('CEON_URI_MAPPING_TEXT_MOVE_PRODUCT_DONT_AUTOGEN_MOVE_URIS', 'Drop existing URI mappings for the product after it has been moved, and don\'t generate new ones (the moved product will have no current URI mappings).'); + +define('CEON_URI_MAPPING_TEXT_ERROR_AUTOGENERATION_PRODUCT_HAS_NO_NAME', '%s URI Mapping cannot be generated as the product has no name! - Edit the product'); +define('CEON_URI_MAPPING_TEXT_ERROR_AUTOGENERATION_PRODUCT_HAS_NO_MODEL', '%s URI Mapping cannot be generated as the product has no model code! - Edit the product'); +define('CEON_URI_MAPPING_TEXT_ERROR_AUTOGENERATION_PRODUCT_CATEGORY_HAS_NO_NAME', '%s URI Mapping cannot be generated for product as a category it is in has no name!'); + +define('CEON_URI_MAPPING_TEXT_ERROR_COPY_PRODUCT_MAPPING_CLASHED', '%s URI Mapping NOT added as the desired URI mapping clashes with an existing mapping: %s - The product has no URI mapping for %s, it must be added manually by editing the product.'); +define('CEON_URI_MAPPING_TEXT_ERROR_MOVE_PRODUCT_MAPPING_CLASHED', '%s URI Mapping NOT added as the desired URI mapping clashes with an existing mapping: %s - The product has no URI mapping for %s, it must be added manually by editing the product.'); \ No newline at end of file diff --git a/NEUE DATEIEN/DEINADMIN/includes/languages/german/ceon_uri_mapping_tabbed_panel_admin_interface.php b/NEUE DATEIEN/DEINADMIN/includes/languages/german/ceon_uri_mapping_tabbed_panel_admin_interface.php new file mode 100644 index 0000000..5dc5d10 --- /dev/null +++ b/NEUE DATEIEN/DEINADMIN/includes/languages/german/ceon_uri_mapping_tabbed_panel_admin_interface.php @@ -0,0 +1,27 @@ + + * @copyright Copyright 2008-2019 Ceon + * @copyright Copyright 2003-2019 Zen Cart Development Team + * @copyright Portions Copyright 2003 osCommerce + * @link http://ceon.net/software/business/zen-cart/uri-mapping + * @license http://www.zen-cart.com/license/2_0.txt GNU Public License V2.0 + * @version $Id: ceon_uri_mapping_tabbed_panel_admin_interface.php 2018-03-29 08:31:10Z webchills $ + */ + +define('TEXT_FILES_VERSION', 'Files Version'); +define('TEXT_INSTALLED_VERSION', 'Installed Version'); +define('TEXT_NOT_INSTALLED', 'Not Installed'); +define('TEXT_MOST_UP_TO_DATE_VERSION_INSTALLED', 'Most up-to-date version is installed'); +define('TEXT_MOST_UP_TO_DATE_VERSION_FILES_PRESENT', 'Most up-to-date version of files are present'); +define('TEXT_ERROR_VERSION_CHECK_NO_RESPONSE', 'Problem occurred performing version check: no response received'); +define('TEXT_ERROR_VERSION_CHECK_PROBLEM', 'Problem occurred performing version check:'); +define('TEXT_OUT_OF_DATE', 'Out of Date!'); +define('TEXT_LATEST_VERSION_IS', 'The latest version of the software is'); +define('TEXT_CLICK_HERE_TO_DOWNLOAD_LATEST_VERSION', 'Click here to download the latest version'); +define('TEXT_ERROR_VERSION_CHECK_PROBLEM_PARSING', 'Problem occurred performing version check: Unable to parse response'); +define('TEXT_CHECK_FOR_UPDATES', 'Check for updates'); \ No newline at end of file diff --git a/NEUE DATEIEN/DEINADMIN/includes/languages/german/extra_definitions/ceon_uri_mapping.php b/NEUE DATEIEN/DEINADMIN/includes/languages/german/extra_definitions/ceon_uri_mapping.php new file mode 100644 index 0000000..c6793fc --- /dev/null +++ b/NEUE DATEIEN/DEINADMIN/includes/languages/german/extra_definitions/ceon_uri_mapping.php @@ -0,0 +1,3 @@ + + * @copyright Copyright 2008-2020 Ceon + * @copyright Copyright 2003-2020 Zen Cart Development Team + * @copyright Portions Copyright 2003 osCommerce + * @link http://ceon.net/software/business/zen-cart/uri-mapping + * @license http://www.zen-cart.com/license/2_0.txt GNU Public License V2.0 + * @version $Id: config.ceon_ask_a_question.php 1027 2020-08-02 20:31:10Z conor v5.0.0 Ceon Support$ + **/ + +if (!defined('IS_ADMIN_FLAG')) { + die('Illegal Access'); +} + +$autoLoadConfig[0][] = array( + 'autoType' => 'class', + 'loadFile' => 'observers/class.ceon_ask_a_question.php', + ); +$autoLoadConfig[200][] = array( + 'autoType' => 'classInstantiate', + 'className' => 'zcObserverCeonAskAQuestion', + 'objectName' => 'ceon_ask_a_question', + ); diff --git a/NEUE DATEIEN/includes/auto_loaders/config.ceon_canonical.php b/NEUE DATEIEN/includes/auto_loaders/config.ceon_canonical.php new file mode 100644 index 0000000..23116a1 --- /dev/null +++ b/NEUE DATEIEN/includes/auto_loaders/config.ceon_canonical.php @@ -0,0 +1,30 @@ + + * @copyright Copyright 2008-2019 Ceon + * @copyright Copyright 2003-2019 Zen Cart Development Team + * @copyright Portions Copyright 2003 osCommerce + * @link http://ceon.net/software/business/zen-cart/uri-mapping + * @license http://www.zen-cart.com/license/2_0.txt GNU Public License V2.0 + * @version $Id: config.ceon_canonical.php 1027 2019-04-24 20:31:10Z conor v5.0.0 Ceon Support$ + **/ + +if (!defined('IS_ADMIN_FLAG')) { + die('Illegal Access'); +} + +$autoLoadConfig[0][] = array( + 'autoType' => 'class', + 'loadFile' => 'observers/class.ceon_canonical.php', + ); +$autoLoadConfig[160][] = array( + 'autoType' => 'classInstantiate', + 'className' => 'zcObserverCeonCanonical', + 'objectName' => 'ceon_canonical', + ); diff --git a/NEUE DATEIEN/includes/auto_loaders/config.ceon_currencies.php b/NEUE DATEIEN/includes/auto_loaders/config.ceon_currencies.php new file mode 100644 index 0000000..307c572 --- /dev/null +++ b/NEUE DATEIEN/includes/auto_loaders/config.ceon_currencies.php @@ -0,0 +1,28 @@ + + * @copyright Copyright 2008-2019 Ceon + * @copyright Copyright 2003-2019 Zen Cart Development Team + * @copyright Portions Copyright 2003 osCommerce + * @link http://ceon.net/software/business/zen-cart/uri-mapping + * @license http://www.zen-cart.com/license/2_0.txt GNU Public License V2.0 + * @version $Id: config.ceon_currencies.php 1027 2019-04-24 20:31:10Z conor v5.0.0 Ceon Support$ + **/ + +/** + * Breakpoint 123. + * + * require('includes/init_includes/init_ceon_currencies.php'); + * + */ + $autoLoadConfig[123][] = array( + 'autoType'=>'init_script', + 'loadFile'=> 'init_ceon_currencies.php' + ); diff --git a/NEUE DATEIEN/includes/auto_loaders/config.ceon_uri_mapping.php b/NEUE DATEIEN/includes/auto_loaders/config.ceon_uri_mapping.php new file mode 100644 index 0000000..bc0be40 --- /dev/null +++ b/NEUE DATEIEN/includes/auto_loaders/config.ceon_uri_mapping.php @@ -0,0 +1,45 @@ + + * @copyright Copyright 2008-2019 Ceon + * @copyright Copyright 2003-2021 Zen Cart Development Team + * @copyright Portions Copyright 2003 osCommerce + * @link http://ceon.net/software/business/zen-cart/uri-mapping + * @license http://www.zen-cart.com/license/2_0.txt GNU Public License V2.0 + * @version $Id: config.ceon_uri_mapping.php 2021-06-23 09:26:10Z webchills $ + */ + +if (!defined('IS_ADMIN_FLAG')) { + die('Illegal Access'); +} + +$autoLoadConfig[0][] = array( + 'autoType' => 'class', + 'loadFile' => 'class.CeonURIMappingHandler.php' + ); + +$autoLoadConfig[95][] = array( + 'autoType' => 'classInstantiate', + 'className' => 'CeonURIMappingHandler', + 'objectName' => 'ceon_uri_mapping' + ); +//torvista added this "manual" autoload to instantiate earlier than using auto.ceon_uri_mapping_link_build.php, for breadcrumbs +$autoLoadConfig[0][] = array( + 'autoType' => 'class', + 'loadFile' => 'observers/class.ceon_uri_mapping_link_build.php' + ); +$autoLoadConfig[165][] = array( + 'autoType' => 'classInstantiate', + 'className' => 'CeonUriMappingLinkBuild', + 'objectName' => 'ceon_uri_mapping_link_build' + ); + +$autoLoadConfig[45][] = array( + 'autoType' => 'init_script', + 'loadFile' => 'init_ceon_uri_mapping_sessions.php', +); diff --git a/NEUE DATEIEN/includes/classes/class.CeonString.php b/NEUE DATEIEN/includes/classes/class.CeonString.php new file mode 100644 index 0000000..ed88977 --- /dev/null +++ b/NEUE DATEIEN/includes/classes/class.CeonString.php @@ -0,0 +1,1001 @@ + + * @author Jan Schneider + * @copyright Copyright 2008-2019 Ceon + * @copyright Copyright 2003-2008 The Horde Project (http://www.horde.org/) + * @link http://ceon.net/software/business/zen-cart/uri-mapping + * @license http://www.fsf.org/copyleft/lgpl.html Lesser GNU Public License + * @version $Id: class.String.php 1028 2021-06-23 09:55:10Z webchills $ + */ + +if (!defined('IS_ADMIN_FLAG')) { + die('Illegal Access'); +} + +/** + * Load in the Transliteration class to carry out actual transliteration. + */ +require_once(DIR_FS_CATALOG . DIR_WS_CLASSES . 'class.Transliteration.php'); + + +// {{{ Constants + +/** + * Global record of character set being used as the default. Since Zen Cart loads this file before it initialises + * the default defines it must be initialised the first time a function tries to use it. + */ +$GLOBALS['string_charset'] = null; + +/** + * Global record of language being used as the default. Since Zen Cart loads this file before it initialises the + * default defines it must be initialised the first time a function tries to use it. + */ +$GLOBALS['string_language'] = null; + +// }}} + + +// {{{ CeonString + +/** + * CeonString class provides methods for charset and locale-safe string manipulation. + * + * @package ceon_uri_mapping + * @author Conor Kerr + * @author Jan Schneider + * @copyright Copyright 2008-2019 Ceon + * @copyright Copyright 2003-2008 The Horde Project (http://www.horde.org/) + * @link http://ceon.net/software/business/zen-cart/uri-mapping + * @license http://www.fsf.org/copyleft/lgpl.html Lesser GNU Public License + */ +class CeonString +{ + // {{{ setDefaultCharset() + + /** + * Sets a default charset that the methods of this class will use if none is explicitly specified. + * + * @access public + * @static + * @param string $charset The charset to use as the default. + */ + public static function setDefaultCharset($charset) + { + $GLOBALS['string_charset'] = $charset; + + if (CeonString::extensionExists('mbstring') && function_exists('mb_regex_encoding')) { + $old_error = error_reporting(0); + mb_regex_encoding(CeonString::_mbstringCharset($charset)); + error_reporting($old_error); + } + } + + // }}} + + + // {{{ convertCharset + + /** + * Converts a string from one charset to another. + * + * Works if the iconv extension is available or the mbstring extension is available. The original string is + * returned if conversion failed or none of the conversion functions/methods are available. + * + * @access public + * @static + * @param string|array $input The data to be converted. If $input is an an array, the array's values get + * converted recursively. + * @param string $from The string's current charset. + * @param string $to The charset to convert the string to. If not specified, the global default + * will be used. + * @return string|array The converted input data. + */ + public static function convertCharset($input, $from, $to = null) + { + if (is_null($GLOBALS['string_charset'])) { + $GLOBALS['string_charset'] = CHARSET; + $GLOBALS['string_language'] = DEFAULT_LANGUAGE; + } + + // Get the user's default character set if none passed in. + if (is_null($to)) { + $to = $GLOBALS['string_charset']; + } + + // If the from and to character sets are identical, return now. + $from = CeonString::toLowercase($from); + $to = CeonString::toLowercase($to); + + if ($from == $to) { + return $input; + } + + if (is_array($input)) { + $tmp = array(); + + foreach ($input as $key => $val) { + $tmp[CeonString::_convertCharset($key, $from, $to)] = + CeonString::convertCharset($val, $from, $to); + } + + return $tmp; + } + + if (!is_string($input)) { + return $input; + } + + return CeonString::_convertCharset($input, $from, $to); + } + + // }}} + + + // {{{ _convertCharset() + + /** + * Internal function used to do charset conversion. + * + * @access private + * @static + * @param string $input See CeonString::convertCharset(). + * @param string $from See CeonString::convertCharset(). + * @param string $to See CeonString::convertCharset(). + * @return string The converted string. + */ + protected static function _convertCharset($input, $from, $to) + { + $output = null; + $from_ascii = (($from == 'iso-8859-1') || ($from == 'us-ascii')); + $to_ascii = (($to == 'iso-8859-1') || ($to == 'us-ascii')); + + // Use utf8_[en|de]code() if possible and if the string isn't too large (less than 16 MB = + // 16 * 1024 * 1024 = 16777216 bytes) - these functions use more memory. + if (strlen($input) < 16777216 || + (!CeonString::extensionExists('iconv') && !CeonString::extensionExists('mbstring'))) { + if ($from_ascii && ($to == 'utf-8')) { + return utf8_encode($input); + } + + if (($from == 'utf-8') && $to_ascii) { + return utf8_decode($input); + } + } + + // Next try iconv with transliteration + if (($from != 'utf7-imap') && ($to != 'utf7-imap') && CeonString::extensionExists('iconv')) { + // Need to tack an extra character temporarily because of a bug in iconv() if the last character is not + // a 7 bit ASCII character. + $old_track_errors = ini_set('track_errors', 1); + + unset($php_errormsg); + + $output = @iconv($from, $to . '//TRANSLIT', $input . 'x'); + $output = (isset($php_errormsg)) ? null : CeonString::substr($output, 0, -1, $to); + + ini_set('track_errors', $old_track_errors); + } + + // Next try mbstring + if (is_null($output) && CeonString::extensionExists('mbstring')) { + $old_error = error_reporting(0); + + $output = mb_convert_encoding($input, $to, CeonString::_mbstringCharset($from)); + + error_reporting($old_error); + } + + // Lastly try imap_utf7_[en|de]code if appropriate + if (is_null($output) && CeonString::extensionExists('imap')) { + if ($from_ascii && ($to == 'utf7-imap')) { + return @imap_utf7_encode($input); + } + + if (($from == 'utf7-imap') && $to_ascii) { + return @imap_utf7_decode($input); + } + } + + return (is_null($output)) ? $input : $output; + } + + // }}} + + + // {{{ transliterate() + + /** + * Converts a string from to ASCII, transliterating any non-ASCII characters to their ASCII equivalent. + * + * The original string is returned if conversion failed or none of the conversion functions/methods are + * available. + * + * In future will make use of PHP6 functionality if available. + * + * Falls back to using the iconv extension (if available) or the mbstring extension (if available). + * + * @access public + * @static + * @param string|array $input The data to be converted. If $input is an an array, the array's + * values get converted recursively. + * @param string $from_charset The input data's current charset, or the default charset if none + * specified. + * @param string $to_language An optional ISO 639 language code, used to determine the exact + * transliterations to be used for particular characters. + * @return string|array The converted input data. + */ + public static function transliterate($input, $from_charset = null, $to_language = null) + { + if (is_null($GLOBALS['string_charset'])) { + $GLOBALS['string_charset'] = CHARSET; + $GLOBALS['string_language'] = DEFAULT_LANGUAGE; + } + + // Get the user's default character set if none passed in. + if (is_null($from_charset)) { + $from_charset = $GLOBALS['string_charset']; + } + + // Use the default language if none passed in. + /*if (is_null($to_language)) { + $to_charset = $GLOBALS['string_language']; + }*/ + + // If the from and to character sets and languages are identical, return now. + /*$from_charset = CeonString::toLowercase($from_charset); + $from_language = CeonString::toLowercase($from_language); + $to_charset = CeonString::toLowercase($to_charset); + $to_language = CeonString::toLowercase($to_language); + if ($from_charset == $to_charset && $from_language == $to_language) { + return $input; + }*/ + + // Handle an array + if (is_array($input)) { + $tmp = array(); + + foreach ($input as $key => $val) { + // Convert the characterset to UTF-8 if necessary + $key = CeonString::convertCharset($key, $from_charset, 'utf-8'); + $val = CeonString::convertCharset($val, $from_charset, 'utf-8'); + + // Transliterate the key and value + $key = CeonString::_transliterate($key, $to_language); + $val = CeonString::_transliterate($val, $to_language); + + $tmp[$key] = $val; + } + + return $tmp; + } + + if (!is_string($input)) { + return $input; + } + + // Convert the characterset to UTF-8 if necessary + $input = CeonString::convertCharset($input, $from_charset, 'utf-8'); + + //there are 5 parameters available but method uses only 2. return CeonString::_transliterate($input, $from_charset, $from_language, $to_charset, $to_language); + return CeonString::_transliterate($input, $to_language); + } + + // }}} + + + // {{{ _transliterate() + + /** + * Internal function used to do transliteration. + * + * @access private + * @static + * @param string $input The UTF-8 string to be converted. + * @param string $to_language An optional ISO 639 language code, used to determine the exact + * transliterations to be used for particular characters. + * @return string The transliterated string. + */ + protected static function _transliterate($input, $to_language) + { + $output = null; + + // Call the Transliteration class, which is aware of the differing transliterations which should be used + // depending on the language/dialect being converted to. + // @TODO Also possibly implement contextual transliteration support for more accurate transliteration. + $output = Transliteration::transliterate($input, '?', $to_language); + + // If PHP6 is in use, try using its ICU functionality + if (function_exists('str_transliterate')) { + + } + + return (is_null($output)) ? $input : $output; + } + + // }}} + + + // {{{ toLowercase() + + /** + * Converts a string to lowercase. + * + * @access public + * @static + * @param string $string The string to be converted. + * @param boolean $locale If true, the string will be converted based on a given charset, locale + * independent otherwise. + * @param string $charset If $locale is true, the charset to use when converting. If not provided the + * current charset is used. + * @return string The string converted to lowercase. + */ + public static function toLowercase($string, $locale = false, $charset = null) + { + static $lowers; + + if (is_null($GLOBALS['string_charset'])) { + $GLOBALS['string_charset'] = CHARSET; + $GLOBALS['string_language'] = DEFAULT_LANGUAGE; + } + + if ($locale) { + if (CeonString::extensionExists('mbstring') && function_exists('mb_strtolower')) { + if (is_null($charset)) { + $charset = $GLOBALS['string_charset']; + } + + $old_error = error_reporting(0); + $ret = mb_strtolower($string, CeonString::_mbstringCharset($charset)); + + error_reporting($old_error); + + if (!empty($ret)) { + return $ret; + } + } + + return strtolower($string); + } + + if (!isset($lowers)) { + $lowers = array(); + } + + if (!isset($lowers[$string])) { + $language = setlocale(LC_CTYPE, 0); + + setlocale(LC_CTYPE, 'C'); + + $lowers[$string] = strtolower($string); + + setlocale(LC_CTYPE, $language); + } + + return $lowers[$string]; + } + + // }}} + + + // {{{ toUppercase() + + /** + * Converts a string to uppercase. + * + * @access public + * @static + * @param string $string The string to be converted. + * @param boolean $locale If true, the string will be converted based on a given charset, locale + * independent otherwise. + * @param string $charset If $locale is true, the charset to use when converting. If not provided the + * current charset is used. + * @return string The string converted to uppercase. + */ + public static function toUppercase($string, $locale = false, $charset = null) + { + static $uppers; + + if (is_null($GLOBALS['string_charset'])) { + $GLOBALS['string_charset'] = CHARSET; + $GLOBALS['string_language'] = DEFAULT_LANGUAGE; + } + + if ($locale) { + if (CeonString::extensionExists('mbstring') && function_exists('mb_strtoupper')) { + if (is_null($charset)) { + $charset = $GLOBALS['string_charset']; + } + + $old_error = error_reporting(0); + $ret = mb_strtoupper($string, CeonString::_mbstringCharset($charset)); + + error_reporting($old_error); + + if (!empty($ret)) { + return $ret; + } + } + return strtoupper($string); + } + + if (!isset($uppers)) { + $uppers = array(); + } + + if (!isset($uppers[$string])) { + $language = setlocale(LC_CTYPE, 0); + + setlocale(LC_CTYPE, 'C'); + + $uppers[$string] = strtoupper($string); + + setlocale(LC_CTYPE, $language); + } + + return $uppers[$string]; + } + + // }}} + + + // {{{ toUCFirst() + + /** + * Returns a string with the first letter capitalised (if it is alphabetic). + * + * @access public + * @static + * @param string $string The string to have its first letter capitalised. + * @param boolean $locale If true, the string will be converted based on a given charset, locale + * independent otherwise. + * @param string $charset The charset to use, defaults to current charset. + * @return string The capitalised string. + */ + public static function toUCFirst($string, $locale = false, $charset = null) + { + if (is_null($GLOBALS['string_charset'])) { + $GLOBALS['string_charset'] = CHARSET; + $GLOBALS['string_language'] = DEFAULT_LANGUAGE; + } + + if (is_null($charset)) { + $charset = $GLOBALS['string_charset']; + } + + if ($locale) { + $first = CeonString::substr($string, 0, 1, $charset); + + if (CeonString::isAlpha($first, $charset)) { + $string = CeonString::toUppercase($first, true, $charset) . CeonString::substr($string, 1, null, $charset); + } + } else { + $string = CeonString::toUppercase(substr($string, 0, 1), false) . substr($string, 1); + } + return $string; + } + + // }}} + + + // {{{ toUCWords() + + /** + * Returns a string with the first letter of each word within capitalised (if it is alphabetic). + * + * @access public + * @static + * @param string $string The string to have its words capitalised. + * @param boolean $locale If true, the string will be converted based on a given charset, locale + * independent otherwise. + * @param string $charset The charset to use, defaults to current charset. + * @return string The capitalised string. + */ + public static function toUCWords($string, $locale = false, $charset = null) + { + if (is_null($GLOBALS['string_charset'])) { + $GLOBALS['string_charset'] = CHARSET; + $GLOBALS['string_language'] = DEFAULT_LANGUAGE; + } + + if (is_null($charset)) { + $charset = $GLOBALS['string_charset']; + } + + $input_string = $string; + $output_string = ''; + + while ($input_string != '') { + $matches = null; + + $matched = CeonString::regexpMatch($input_string, '/^([^\s]+\s+)/U', $matches, $charset); + + if ($matched) { + // String has at least one space in it, extract first word + $current_word = $matches[1]; + + if (CeonString::length($current_word) < CeonString::length($input_string)) { + $input_string = CeonString::substr($input_string, CeonString::length($current_word), + (CeonString::length($input_string) - CeonString::length($current_word))); + } else { + $input_string = ''; + } + } else { + // String consists of a single word only + $current_word = $input_string; + $input_string = ''; + } + + if ($locale) { + $first = CeonString::substr($current_word, 0, 1, $charset); + + if (CeonString::isAlpha($first, $charset)) { + $current_word = CeonString::toUppercase($first, true, $charset) . + CeonString::substr($current_word, 1, null, $charset); + } + } else { + $current_word = CeonString::toUppercase(substr($current_word, 0, 1), false) . + substr($current_word, 1); + } + + $output_string .= $current_word; + } + + return $output_string; + } + + // }}} + + + // {{{ substr + + /** + * Returns part of a string. + * + * @access public + * @static + * @param string $string The string to be converted. + * @param integer $start The part's start position, (beginning at zero). + * @param integer $length The part's length. + * @param string $charset The charset to use when calculating the part's position and length, defaults + * to current charset. + * @return string The string's part. + */ + public static function substr($string, $start, $length = null, $charset = null) + { + if (is_null($GLOBALS['string_charset'])) { + $GLOBALS['string_charset'] = CHARSET; + $GLOBALS['string_language'] = DEFAULT_LANGUAGE; + } + + if (is_null($length)) { + $length = CeonString::length($string, $charset) - $start; + } + + if ($length == 0) { + return ''; + } + + if (is_null($charset)) { + $charset = $GLOBALS['string_charset']; + } + + $charset = CeonString::toLowercase($charset); + + // Use PHP5.3+ intl extension if available + if (CeonString::extensionExists('intl') && ($charset == 'utf-8' || $charset == 'utf8')) { + return grapheme_substr($string, $start, $length); + } + + // Use multi-byte functionality if available + if (CeonString::extensionExists('mbstring')) { + $old_error = error_reporting(0); + + $ret = mb_substr($string, $start, $length, CeonString::_mbstringCharset($charset)); + + error_reporting($old_error); + + if (!empty($ret)) { + return $ret; + } + } + + // Use standard PHP functionality + return substr($string, $start, $length); + } + + // }}} + + + // {{{ length() + + /** + * Returns the character length of a string (not its byte length). + * + * @access public + * @static + * @param string $string The string to return the length of. + * @param string $charset The charset to use when calculating the string's length. + * @return integer The string's length. + */ + public static function length($string, $charset = null) + { + if (is_null($GLOBALS['string_charset'])) { + $GLOBALS['string_charset'] = CHARSET; + $GLOBALS['string_language'] = DEFAULT_LANGUAGE; + } + + if (is_null($charset)) { + $charset = $GLOBALS['string_charset']; + } + + $charset = CeonString::toLowercase($charset); + + if ($charset == 'utf-8' || $charset == 'utf8') { + // Use PHP5.3+ intl extension if available + if (CeonString::extensionExists('intl')) { + return grapheme_strlen($string); + } else { + // Use standard PHP function + return strlen(utf8_decode($string)); + } + } + + if (CeonString::extensionExists('mbstring')) { + $old_error = error_reporting(0); + + $ret = mb_strlen($string, CeonString::_mbstringCharset($charset)); + + error_reporting($old_error); + + if (!empty($ret)) { + return $ret; + } + } + return strlen($string); + } + + // }}} + + + // {{{ strpos + + /** + * Returns the numeric position of the first occurrence of $needle in the $haystack string. + * + * @access public + * @static + * @param string $haystack The string to search through. + * @param string $needle The string to search for. + * @param integer $offset Allows the specification of the character in haystack from which to start + * searching. + * @param string $charset The charset to use when searching. + * @return integer The position of first occurrence. + */ + public static function pos($haystack, $needle, $offset = 0, $charset = null) + { + if (is_null($GLOBALS['string_charset'])) { + $GLOBALS['string_charset'] = CHARSET; + $GLOBALS['string_language'] = DEFAULT_LANGUAGE; + } + + if (is_null($charset)) { + $charset = $GLOBALS['string_charset']; + } + + $charset = CeonString::toLowercase($charset); + + if ($charset == 'utf-8' || $charset == 'utf8') { + // Use PHP5.3+ intl extension if available + if (CeonString::extensionExists('intl')) { + return grapheme_strpos($haystack, $needle, $offset); + } + } + + if (CeonString::extensionExists('mbstring')) { + $track_errors = ini_set('track_errors', 1); + $old_error = error_reporting(0); + + $ret = mb_strpos($haystack, $needle, $offset, CeonString::_mbstringCharset($charset)); + + error_reporting($old_error); + + ini_set('track_errors', $track_errors); + + if (!isset($php_errormsg)) { + return $ret; + } + } + + return strpos($haystack, $needle, $offset); + } + + // }}} + + + // {{{ + + /** + * Returns true if the every character in the string is an alphabetic character. + * + * @access public + * @static + * @param string $string The string to test. + * @param string $charset The charset to use when testing the string. + * @return boolean True if the string consists solely of alphabetic characters. + */ + public static function isAlpha($string, $charset = null) + { + if (is_null($GLOBALS['string_charset'])) { + $GLOBALS['string_charset'] = CHARSET; + $GLOBALS['string_language'] = DEFAULT_LANGUAGE; + } + + if (is_null($charset)) { + $charset = $GLOBALS['string_charset']; + } + + if (CeonString::extensionExists('mbstring')) { + $charset = CeonString::_mbstringCharset($charset); + + $old_charset = mb_regex_encoding(); + + $old_error = error_reporting(0); + + if ($charset != $old_charset) { + mb_regex_encoding($charset); + } + + $alpha = !mb_ereg_match('[^[:alpha:]]', $string); + + if ($charset != $old_charset) { + mb_regex_encoding($old_charset); + } + + error_reporting($old_error); + + return $alpha; + } + + return ctype_alpha($string); + } + + // }}} + + + // {{{ isLower() + + /** + * Returns true if every character in the string is a lowercase letter (according to the locale for the + * charset). + * + * @access public + * @static + * @param string $string The string to test. + * @param string $charset The charset to use when testing the string. + * @return boolean True if the string is lowercase. + */ + public static function isLower($string, $charset = null) + { + return ((CeonString::toLowercase($string, true, $charset) === $string) && + CeonString::isAlpha($string, $charset)); + } + + // }}} + + + // {{{ isUpper() + + /** + * Returns true if every character in the string is an uppercase letter (according to the locale for the + * charset). + * + * @access public + * @static + * @param string $string The string to test. + * @param string $charset The charset to use when testing the string. + * @return boolean True if the string is uppercase. + */ + public static function isUpper($string, $charset = null) + { + return ((CeonString::toUppercase($string, true, $charset) === $string) && + CeonString::isAlpha($string, $charset)); + } + + // }}} + + + // {{{ regexpMatch() + + /** + * Performs a multibyte-safe regex match search on the text provided. + * NOTE: Does NOT use same parameter order as PHP regexp functions! + * + * @access public + * @static + * @param string $text The text to search. + * @param string $regexp The regular expression(s) to use. + * @param array $matches A reference to a variable to be populated with an array of the matches if the + * regexp matches. + * @param string $charset The character set of the text. + * @return boolean Whether the regexp matched or not. + */ + public static function regexpMatch($text, $regexp, &$matches, $charset = null) + { + if (is_null($GLOBALS['string_charset'])) { + $GLOBALS['string_charset'] = CHARSET; + $GLOBALS['string_language'] = DEFAULT_LANGUAGE; + } + + if (is_null($charset)) { + $charset = $GLOBALS['string_charset']; + } + + $regexp = CeonString::convertCharset($regexp, $charset, 'utf-8'); + $text = CeonString::convertCharset($text, $charset, 'utf-8'); + + $num_matches = preg_match($regexp . 'u', $text, $matches); + + if (!empty($charset) && $num_matches !== 0 && sizeof($matches) > 0) { + $matches = CeonString::convertCharset($matches, 'utf-8', $charset); + } + + return ($num_matches == 1 ? true : false); + } + + // }}} + + + // {{{ regexpReplace() + + /** + * Performs a multibyte-safe regex replace on the text/array provided. + * NOTE: Does NOT use same parameter order as PHP regexp functions! + * + * @access public + * @static + * @param string|array $text The text (or array of text) to search. + * @param string|array $regexp The regular expression(s) to use. + * @param string|array $replace The replacement(s) to use. + * @param string $charset The character set of the text. + * @return string|array|boolean The updated text or array or false if a problem occurred + * parsing the regular expression. + */ + public static function regexpReplace($text, $regexp, $replace, $charset = null) + { + if (is_null($GLOBALS['string_charset'])) { + $GLOBALS['string_charset'] = CHARSET; + $GLOBALS['string_language'] = DEFAULT_LANGUAGE; + } + + if (is_null($charset)) { + $charset = $GLOBALS['string_charset']; + } + + $regexp = CeonString::convertCharset($regexp, $charset, 'utf-8'); + $text = CeonString::convertCharset($text, $charset, 'utf-8'); + + if (!is_array($regexp)) { + if (!CeonString::validateRegexp($regexp)) { + return false; + } + + $regexp = $regexp . 'u'; + + } else { + for ($i = 0, $n = sizeof($regexp); $i < $n; $i++) { + if (!CeonString::validateRegexp($regexp[$i])) { + return false; + } + + $regexp[$i] = $regexp[$i] . 'u'; + } + } + + // Can a fallback be used if any UTF-8 error occurs? + $handle_utf_error_fallback = defined('PREG_BAD_UTF8_ERROR') && function_exists('preg_last_error'); + + $tmp = preg_replace($regexp, $replace, $text); + + if ($handle_utf_error_fallback && (preg_last_error() == PREG_BAD_UTF8_ERROR)) { + $text = CeonString::convertCharset($text, 'utf-8', 'us-ascii'); + $tmp = preg_replace(substr($regexp, 0, strlen($regexp) - 1), $replace, $text); + } + + $text = $tmp; + + $text = CeonString::convertCharset($text, 'utf-8', $charset); + + return $text; + } + + // }}} + + + // {{{ validateRegexp() + + /** + * Checks if a regular expression is in a valid format. + * + * @access public + * @static + * @param string $regexp The regular expression to validate. + * @return boolean Whether or not the regexp is valid. + * @TODO Have this throw exceptions + */ + public static function validateRegexp($regexp) + { + $matches = null; + if (CeonString::length($regexp) == 0 || + CeonString::regexpMatch($regexp, '/^[\w0-9\/]/', $matches) == false) { + // Caller hasn't delimited the regexp. More than likely, the order of the parameters has been used + // incorrectly, easily done since they differ from the standard PHP order. + return false; + } else if (CeonString::length($regexp) < 2) { + // End delimiter missing + return false; + } + + return true; + } + + // }}} + + + // {{{ _mbstringCharset() + + /** + * Workaround charsets that don't work with mbstring functions. + * + * @access private + * @static + * @param string $charset The original charset. + * @return string The charset to use with mbstring functions. + */ + protected static function _mbstringCharset($charset) + { + // mbstring functions do not handle the 'ks_c_5601-1987' & 'ks_c_5601-1989' charsets. However, these + // charsets are used, for example, by various versions of Outlook to send Korean characters. Use UHC + // (CP949) encoding instead. See, e.g. + // http://lists.w3.org/Archives/Public/ietf-charsets/2001AprJun/0030.html + if (in_array(CeonString::toLowercase($charset), array('ks_c_5601-1987', 'ks_c_5601-1989'))) { + $charset = 'UHC'; + } + + return $charset; + } + + // }}} + + + // {{{ extensionExists() + + /** + * Caches the result of extension_loaded() calls. + * + * @access private + * @static + * @param string $extension The extension's name. + * @return boolean Whether the extension is loaded in PHP. + */ + protected static function extensionExists($extension) + { + static $cache = array(); + + if (!isset($cache[$extension])) { + $cache[$extension] = extension_loaded($extension); + } + + return $cache[$extension]; + } + + // }}} + +} + +// }}} \ No newline at end of file diff --git a/NEUE DATEIEN/includes/classes/class.CeonURIMappingAdmin.php b/NEUE DATEIEN/includes/classes/class.CeonURIMappingAdmin.php new file mode 100644 index 0000000..a38964a --- /dev/null +++ b/NEUE DATEIEN/includes/classes/class.CeonURIMappingAdmin.php @@ -0,0 +1,809 @@ + + * @copyright Copyright 2008-2019 Ceon + * @copyright Copyright 2003-2019 Zen Cart Development Team + * @copyright Portions Copyright 2003 osCommerce + * @link http://ceon.net/software/business/zen-cart/uri-mapping + * @license http://www.zen-cart.com/license/2_0.txt GNU Public License V2.0 + * @version $Id: class.CeonURIMappingAdmin.php 1027 2012-07-17 20:31:10Z conor $ + */ + +if (!defined('IS_ADMIN_FLAG')) { + die('Illegal Access'); +} + +/** + * Load in the parent class if not already loaded + */ +require_once(DIR_FS_CATALOG . DIR_WS_CLASSES . 'class.CeonURIMappingDBLookup.php'); + + +// {{{ constants + +define('CEON_URI_MAPPING_SINGLE_UNDERSCORE', 1); +define('CEON_URI_MAPPING_SINGLE_DASH', 2); +define('CEON_URI_MAPPING_SINGLE_FULL_STOP', 3); +define('CEON_URI_MAPPING_REMOVE', 4); + +define('CEON_URI_MAPPING_CAPITALISATION_LOWERCASE', 1); +define('CEON_URI_MAPPING_CAPITALISATION_AS_IS', 2); +define('CEON_URI_MAPPING_CAPITALISATION_UCFIRST', 3); + +define('CEON_URI_MAPPING_ADD_MAPPING_SUCCESS', 1); +define('CEON_URI_MAPPING_ADD_MAPPING_ERROR_MAPPING_EXISTS', -1); +define('CEON_URI_MAPPING_ADD_MAPPING_ERROR_DATA_ERROR', -2); +define('CEON_URI_MAPPING_ADD_MAPPING_ERROR_DB_ERROR', -3); + +define('CEON_URI_MAPPING_MAKE_MAPPING_HISTORICAL_SUCCESS', 1); +define('CEON_URI_MAPPING_MAKE_MAPPING_HISTORICAL_ERROR_DATA_ERROR', -1); + +// }}} + + +// {{{ CeonURIMappingAdmin + +/** + * Provides shared functionality for the Ceon URI Mapping admin functionality. + * + * @package ceon_uri_mapping + * @author Conor Kerr + * @copyright Copyright 2008-2019 Ceon + * @copyright Copyright 2003-2007 Zen Cart Development Team + * @copyright Portions Copyright 2003 osCommerce + * @link http://ceon.net/software/business/zen-cart/uri-mapping + * @license http://www.zen-cart.com/license/2_0.txt GNU Public License V2.0 + */ +class CeonURIMappingAdmin extends CeonURIMappingDBLookup +{ + // {{{ properties + + /** + * Whether autogeneration of URI mappings is enabled or not. + * + * @var boolean + * @access protected + */ + protected $_autogen_new = null; + + /** + * The site's setting for the whitesapce replacement character. + * + * @var integer + * @access protected + */ + protected $_whitespace_replacement = null; + + /** + * The site's setting for the capitalisation of words in URI mappings. + * + * @var integer + * @access protected + */ + protected $_capitalisation = null; + + /** + * The list of words which should be removed from URI mappings being autogenerated. This property is not parsed + * from its encoded string into a array until used for the first time, to save processing time. + * + * @var array + * @access protected + */ + protected $_remove_words = null; + + /** + * The list of character to string replacements which should be applied to URI mappings being autogenerated. + * This is not parsed from its encoded string into a usable array until used for the first time, to save + * processing time. + * + * @var array + * @access protected + */ + protected $_char_str_replacements = null; + + /** + * The add language code identifier to URI setting for the store. + * + * @var integer + * @access protected + */ + protected $_language_code_add = null; + + + /** + * The site's setting for the handling of a URI mapping which clashes with an existing mapping. + * + * @var string + * @access protected + */ + protected $_mapping_clash_action = null; + + // }}} + + + // {{{ Class Constructor + + /** + * Creates a new instance of the CeonURIMappingAdmin class. Loads the autogeneration settings for the store and + * sets the class properties' values. + * + * @param boolean Whether or not the autogeneration configuration should be loaded when instantiating the + * class. + * @access public + */ + public function __construct($load_config = true) + { + parent::__construct(); + + if ($load_config) { + $this->_loadAutogenerationSettings(); + } + } + + // }}} + + + // {{{ _loadAutogenerationSettings() + + /** + * Loads the autogeneration settings for the store and sets the class properties' values. + * + * @access protected + * @return none + */ + protected function _loadAutogenerationSettings() + { + global $db; + + // Only one config currently supported so the ID is hard-coded in the following SQL + $load_autogen_settings_sql = " + SELECT + autogen_new, + whitespace_replacement, + capitalisation, + remove_words, + char_str_replacements, + language_code_add, + mapping_clash_action + FROM + " . TABLE_CEON_URI_MAPPING_CONFIGS . " + WHERE + id ='1';"; + + $load_autogen_settings_result = $db->Execute($load_autogen_settings_sql); + + if (!$load_autogen_settings_result->EOF) { + $this->_autogen_new = ($load_autogen_settings_result->fields['autogen_new'] == 1 ? true : false); + + $this->_whitespace_replacement = $load_autogen_settings_result->fields['whitespace_replacement']; + + $this->_capitalisation = $load_autogen_settings_result->fields['capitalisation']; + + $this->_remove_words = $load_autogen_settings_result->fields['remove_words']; + + $this->_char_str_replacements = $load_autogen_settings_result->fields['char_str_replacements']; + + $this->_language_code_add = $load_autogen_settings_result->fields['language_code_add']; + + $this->_mapping_clash_action = $load_autogen_settings_result->fields['mapping_clash_action']; + } + } + + // }}} + + + // {{{ addURIMapping() + + /** + * Adds a URI mapping to the database. Use of this method abstracts the calling code from the actual + * implementation of the database's structure. + * + * @access public + * @param string $uri The URI for the mapping. + * @param integer $language_id The Zen Cart language ID for the mapping. + * @param string $main_page The Zen Cart page type the mapping is for. + * @param string $query_string_parameters The query string parameters which are to be passed on to Zen + * Cart as if they were in the original URI. ZC often uses this + * information to "define" a page type or a particular instance + * of a page type. + * @param integer $associated_db_id The ID of a database record to be passed on to ZC. ZC uses this to + * identify a particular instance of a page type. + * @param string $alternate_uri An alternative URI to redirect to, instead of mapping to a Zen Cart + * page. + * @param integer $redirection_type_code The redirection type code to be used when redirecting to an + * alternate URI. + * @param boolean $avoid_duplicates Whether or not to prevent the creation of a duplicate mapping. Should + * only ever be disabled if checks have already been made and should + * therefore be skipped here for efficiency. + * @return integer A positive value if the mapping was added, a negative integer (constant value) if a + * mapping already exists for the specified URI or an error was encountered. + */ + public function addURIMapping($uri, $language_id = null, $main_page = null, $query_string_parameters = null, + $associated_db_id = null, $alternate_uri = null, $redirection_type_code = null, $avoid_duplicates = true) + { + global $db; + + if (is_null($uri) || strlen($uri) == 0) { + // Cannot be null! + return CEON_URI_MAPPING_ADD_MAPPING_ERROR_DATA_ERROR; + } else { + $uri_quoted = "'" . zen_db_input(zen_db_prepare_input($uri)) . "'"; + } + + if (is_null($language_id) || (int) $language_id <= 0) { + $language_id_quoted = 'NULL'; + } else { + $language_id_quoted = "'" . (int) $language_id . "'"; + } + + $current_uri_quoted = "'1'"; + + if (is_null($main_page) || strlen($main_page) == 0) { + $main_page_quoted = 'NULL'; + } else { + $main_page_quoted = "'" . zen_db_input(zen_db_prepare_input($main_page)) . "'"; + } + + if (is_null($query_string_parameters) || strlen($query_string_parameters) == 0) { + $query_string_parameters_quoted = 'NULL'; + } else { + $query_string_parameters_quoted = + "'" . zen_db_input(zen_db_prepare_input($query_string_parameters)) . "'"; + } + + if (is_null($associated_db_id) || (int) $associated_db_id <= 0) { + $associated_db_id_quoted = 'NULL'; + } else { + $associated_db_id_quoted = "'" . (int) $associated_db_id . "'"; + } + + if (is_null($alternate_uri) || strlen($alternate_uri) == 0) { + $alternate_uri_quoted = 'NULL'; + } else { + $alternate_uri_quoted = "'" . zen_db_input(zen_db_prepare_input($alternate_uri)) . "'"; + } + + if (is_null($redirection_type_code) || (int) $redirection_type_code <= 0) { + $redirection_type_code_quoted = 'NULL'; + } else { + $redirection_type_code_quoted = "'" . (int) $redirection_type_code . "'"; + } + + // Language ID can only be null when the mapping is a redirect to an alternate URI + if ($language_id_quoted == 'NULL' && $alternate_uri_quoted == 'NULL') { + return CEON_URI_MAPPING_ADD_MAPPING_ERROR_DATA_ERROR; + } + + if ($avoid_duplicates && $alternate_uri_quoted == 'NULL') { + // Make sure no current mapping already exists for the specified URI (don't bother with checks for + // mappings to alternate URIs) + $check_exists_sql = " + SELECT + language_id + FROM + " . TABLE_CEON_URI_MAPPINGS . " + WHERE + uri = " . $uri_quoted . " + AND + language_id = " . $language_id_quoted . " + AND + current_uri = '1';"; + + $check_exists_result = $db->Execute($check_exists_sql); + + if (!$check_exists_result->EOF) { + return CEON_URI_MAPPING_ADD_MAPPING_ERROR_MAPPING_EXISTS; + } + } + + $date_added_quoted = "'" . date('Y-m-d H:i:s') . "'"; + + $sql = " + INSERT INTO + " . TABLE_CEON_URI_MAPPINGS . " + ( + uri, + language_id, + current_uri, + main_page, + query_string_parameters, + associated_db_id, + alternate_uri, + redirection_type_code, + date_added + ) + VALUES + ( + " . $uri_quoted . ", + " . $language_id_quoted . ", + " . $current_uri_quoted . ", + " . $main_page_quoted . ", + " . $query_string_parameters_quoted . ", + " . $associated_db_id_quoted . ", + " . $alternate_uri_quoted . ", + " . $redirection_type_code_quoted . ", + " . $date_added_quoted . " + );"; + + $db->Execute($sql); + + return CEON_URI_MAPPING_ADD_MAPPING_SUCCESS; + } + + // }}} + + + // {{{ makeURIMappingHistorical() + + /** + * Makes the URI mapping a historical mapping. Use of this method abstracts the calling code from the actual + * implementation of the database's structure. + * + * @access public + * @param string $uri The URI of the mapping. + * @param integer $language_id The Zen Cart language ID for the mapping. + * @param boolean $avoid_duplicates Whether or not to prevent the creation of duplicate historical + * mappings. Should only ever be disabled if checks have already been + * made and should therefore be skipped here for efficiency. + * @return integer A positive value if the mapping was made historical, a negative integer (constant value) + * if an error was encountered. + */ + public function makeURIMappingHistorical($uri, $language_id, $avoid_duplicates = true) + { + global $db; + + if (is_null($uri) || strlen($uri) == 0) { + // Cannot be null! + return CEON_URI_MAPPING_MAKE_MAPPING_HISTORICAL_ERROR_DATA_ERROR; + } else { + $uri_quoted = "'" . zen_db_input(zen_db_prepare_input($uri)) . "'"; + } + + if (is_null($language_id) || (int) $language_id <= 0) { + // Cannot be null! + return CEON_URI_MAPPING_MAKE_MAPPING_HISTORICAL_ERROR_DATA_ERROR; + } else { + $language_id_quoted = "'" . (int) $language_id . "'"; + } + + if ($avoid_duplicates) { + // Make sure no historical mapping already exists for the specified URI + $check_exists_sql = " + SELECT + language_id + FROM + " . TABLE_CEON_URI_MAPPINGS . " + WHERE + uri = " . $uri_quoted . " + AND + language_id = " . $language_id_quoted . " + AND + current_uri = '0';"; + + $check_exists_result = $db->Execute($check_exists_sql); + + if (!$check_exists_result->EOF) { + $selections = array( + 'uri' => $uri, + 'language_id' => $language_id, + 'current_uri' => 0 + ); + + $this->deleteURIMappings($selections); + } + } + + $sql = " + UPDATE + " . TABLE_CEON_URI_MAPPINGS . " + SET + current_uri = '0' + WHERE + uri = " . $uri_quoted . " + AND + language_id = " . $language_id_quoted . ";"; + + $db->Execute($sql); + + return CEON_URI_MAPPING_MAKE_MAPPING_HISTORICAL_SUCCESS; + } + + // }}} + + + // {{{ deleteURIMappings() + + /** + * Deletes any URI mappings matching the specified criteria. Use of this method abstracts the calling code from + * the actual implementation of the database's structure. + * + * @access public Made public because of previous uses in functions type files. Can stay + * protected when call is in an observer provided the observer class + * ultimately extends this class. + * @param array $selections An associative array of column names and values to match for these columns. + * A set of values can be grouped with OR by specifying an array of values for + * the value. + * @return none + */ + public function deleteURIMappings($selections) + { + global $db; + + $selection_string = ''; + + $num_selection_columns = count($selections); + + $column_name_i = 0; + + foreach ($selections as $column_name => $column_value) { + if (is_array($column_value)) { + // The value is an array of values so create an ORed group + $num_column_values = count($column_value); + + $selection_string .= '(' . "\n"; + + for ($column_value_i = 0; $column_value_i < $num_column_values; $column_value_i++) { + $selection_string .= "\t" . $column_name; + + $value = $column_value[$column_value_i]; + + if (is_null($value) || strtolower($value) == 'null') { + $selection_string .= " IS NULL\n"; + } else if (strtolower($value) == 'not null') { + $selection_string .= " IS NOT NULL\n"; + } else { + if (substr($value, -1) == '%') { + $selection_string .= ' LIKE '; + } else { + $selection_string .= ' = '; + } + + $selection_string .= "'" . zen_db_input($value) . "'\n"; + } + + if ($column_value_i < ($num_column_values - 1)) { + $selection_string .= "OR\n"; + } + } + + $selection_string .= ')' . "\n"; + } else { + $selection_string .= "\t" . $column_name; + + if (is_null($column_value) || strtolower($column_value) == 'null') { + $selection_string .= " IS NULL\n"; + } else if (strtolower($column_value) == 'not null') { + $selection_string .= " IS NOT NULL\n"; + } else { + if (substr($column_value, -1) == '%') { + $selection_string .= ' LIKE '; + } else { + $selection_string .= ' = '; + } + + $selection_string .= "'" . zen_db_input($column_value) . "'\n"; + } + } + + if ($column_name_i < ($num_selection_columns - 1)) { + $selection_string .= "AND\n"; + } + + $column_name_i++; + } + + $sql = " + DELETE FROM + " . TABLE_CEON_URI_MAPPINGS . " + WHERE + " . $selection_string . ";"; + + $db->Execute($sql); + } + + // }}} + + + // {{{ _autogenEnabled() + + /** + * Checks whether auto-generation of URIs is enabled or disabled. + * + * @access protected + * @return boolean Whether auto-generation of URIs is enabled or disabled. + */ + protected function _autogenEnabled() + { + return $this->_autogen_new; + } + + // }}} + + + // {{{ _autoLanguageCodeAdd() + + /** + * Checks whether or not the site's settings dictate to prepend the language code to the URI. + * + * @access protected + * @return boolean Whether or not a unique URI Mapping should be autogenerated by appending an integer to a + * clashing mapping. + */ + protected function _autoLanguageCodeAdd() + { + return $this->_language_code_add; + } + + // }}} + + + // {{{ _mappingClashAutoAppendInteger() + + /** + * Checks whether or not the site's settings dictate that when a mapping clashes, an attempt should be made to + * autogenerate a new, unique URI mapping by appending an integer to the clashing mapping. + * + * @access protected + * @return boolean Whether or not a unique URI Mapping should be autogenerated by appending an integer to a + * clashing mapping. + */ + protected function _mappingClashAutoAppendInteger() + { + if ($this->_mapping_clash_action == 'auto-append') { + return true; + } + + return false; + } + + // }}} + + + // {{{ _convertStringForURI() + + /** + * Converts a string to a URI format, capitalising the words within as specified in the configuration, removing + * any unwanted words and replacing any specific character strings, transliterating it from a foreign language + * if necessary, then applying the whitespace replacement preference for the site. + * + * @access protected + * @param string $text The string to be converted to a URI part. + * @param string $language_code The language code of the string to be converted. + * @param boolean $strip_slashes Whether or not to strip foward slashes from the string. + * @return string The string as converted for use in a URI. + */ + protected function _convertStringForURI($text, $language_code, $strip_slashes = true) + { + //global $db; + + /** + * Load in the CeonString class to handle multibyte characters and transliteration. + */ + require_once(DIR_FS_CATALOG . DIR_WS_CLASSES . 'class.CeonString.php'); + + + // If the remove words and character string replacement settings have not yet been parsed, + // parse them now + if (!is_array($this->_remove_words)) { + // Remove any spaces from between the words + $this->_remove_words = CeonString::regexpReplace($this->_remove_words, '/\s/', ''); + + // Escape any special characters in the selections of words + $this->_remove_words = CeonString::regexpReplace($this->_remove_words, + '/([\/\-\\\!\?\$\^\[\]\|\*\.\(\)\{\}\=\<\>\:\+])/U', '\\\$1'); + + // Get the list of escaped words - @TODO is this multibyte safe? + $this->_remove_words = explode(',', $this->_remove_words); + + if (count($this->_remove_words) == 1 && (is_null($this->_remove_words[0]) || + strlen($this->_remove_words[0]) == 0)) { + $this->_remove_words = array(); + } + + $char_str_replacement_pairs = explode(',', $this->_char_str_replacements); + + $this->_char_str_replacements = array(); + + for ($i = 0, $n = count($char_str_replacement_pairs); $i < $n; $i++) { + $current_char_str_replacement = explode('=>', $char_str_replacement_pairs[$i]); + + if (count($current_char_str_replacement) == 2) { + // Escape any special characters in the string to be replaced + $current_char_str_replacement[0] = CeonString::regexpReplace($current_char_str_replacement[0], + '/([\/\-\\\!\?\$\^\[\]\|\*\.\(\)\{\}\=\<\>\:\+])/U', '\\\$1'); + + // Remove any spaces surrounding the string to be replaced + $current_char_str_replacement[0] = trim($current_char_str_replacement[0]); + + $this->_char_str_replacements[] = array( + 'char_str' => $current_char_str_replacement[0], + 'replacement' => $current_char_str_replacement[1] + ); + } + } + } + + // Convert the case of the string according to the configuration setting + switch ($this->_capitalisation) { + case CEON_URI_MAPPING_CAPITALISATION_LOWERCASE: + $text = CeonString::toLowercase($text); + break; + case CEON_URI_MAPPING_CAPITALISATION_UCFIRST: + $text = CeonString::toUCWords($text); + break; + } + + // Remove unwanted words + if (count($this->_remove_words) > 0) { + // Build a pattern to remove words surrounded by spaces + $remove_words_pattern = ''; + + foreach ($this->_remove_words as $remove_word) { + // Set word to be removed in the pattern by wrapping it with spaces + $remove_words_pattern .= '\s' . $remove_word . '\s|'; + } + + $remove_words_pattern = + CeonString::substr($remove_words_pattern, 0, CeonString::length($remove_words_pattern) - 1); + + // Remove the words surrounded by spaces, replacing them with a single space + $text = CeonString::regexpReplace($text, '/' . $remove_words_pattern . '/i', ' '); + + + // Build a pattern to remove words at the start of the string + $remove_words_pattern = ''; + + foreach ($this->_remove_words as $remove_word) { + // Set word to be removed in the pattern by wrapping it with spaces + $remove_words_pattern .= '^' . $remove_word . '\s|'; + } + + $remove_words_pattern = + CeonString::substr($remove_words_pattern, 0, CeonString::length($remove_words_pattern) - 1); + + // Remove any word which is at the start of the string + $text = CeonString::regexpReplace($text, '/' . $remove_words_pattern . '/i', ''); + + + // Build a pattern to remove any word which at the end of the string + $remove_words_pattern = ''; + + foreach ($this->_remove_words as $remove_word) { + // Set word to be removed in the pattern by wrapping it with spaces + $remove_words_pattern .= '\s' . $remove_word . '$|'; + } + + $remove_words_pattern = + CeonString::substr($remove_words_pattern, 0, CeonString::length($remove_words_pattern) - 1); + + // Remove any word which is at the end of the string + $text = CeonString::regexpReplace($text, '/' . $remove_words_pattern . '/i', ''); + } + + // Replace specified characters/strings + if (count($this->_char_str_replacements) > 0) { + foreach ($this->_char_str_replacements as $char_str_replacement) { + // Remove the words surrounded by spaces, replacing them with a single space + $text = CeonString::regexpReplace($text, '/' . $char_str_replacement['char_str'] . '/i', + $char_str_replacement['replacement']); + } + } + + // Convert certain characters in the name to spaces, rather than having the words separated by these + // characters being joined together when they are removed later + if ($strip_slashes) { + $pattern = '/[\|\/\+_:;\(\)\[\]\<\>,]/'; + } else { + $pattern = '/[\|\+_:;\(\)\[\]\<\>,]/'; + } + + $text = preg_replace($pattern, ' ', $text); + + // Convert the string to English ASCII as that's all that's permitted in URIs + $text = CeonString::transliterate($text, CHARSET, $language_code); + + // Remove illegal characters + if ($strip_slashes) { + $pattern = '/[^a-zA-Z0-9\.\-_\s]/'; + } else { + $pattern = '/[^a-zA-Z0-9\.\-_\s\/]/'; + } + + $text = preg_replace($pattern, '', $text); + + // Convert double whitespace/tabs etc. to single space + $text = preg_replace('/\s+/', ' ', $text); + + // Remove any starting or trailing whitespace + $text = trim($text); + + // Once again convert the case of the string according to the configuration setting. + // This must be repeated as the transliteration could have left some letters in place which may need to be + // converted. As the string is now ASCII, a simple conversion can be used. + switch ($this->_capitalisation) { + case CEON_URI_MAPPING_CAPITALISATION_LOWERCASE: + $text = strtolower($text); + break; + case CEON_URI_MAPPING_CAPITALISATION_UCFIRST: + $text = ucwords($text); + break; + } + + // Convert whitespace to configured character (or remove it) + switch ($this->_whitespace_replacement) { + case CEON_URI_MAPPING_SINGLE_UNDERSCORE: + $whitespace_replacement_char = '_'; + break; + case CEON_URI_MAPPING_SINGLE_DASH: + $whitespace_replacement_char = '-'; + break; + case CEON_URI_MAPPING_SINGLE_FULL_STOP: + $whitespace_replacement_char = '.'; + break; + case CEON_URI_MAPPING_REMOVE: + $whitespace_replacement_char = ''; + break; + } + + $text = preg_replace('/\s/', $whitespace_replacement_char, $text); + + return $text; + } + + // }}} + + + // {{{ _cleanUpURIMapping() + + /** + * Ensures that a URI matches the format used by the URI mapping functionality. + * + * @access protected + * @param string $uri The URI to be checked/cleaned. + * @return string The checked/cleaned URI. + */ + protected function _cleanUpURIMapping($uri) + { + // Remove any starting or trailing whitespace + $uri = trim($uri); + + // Replace any backslashes with forward slashes + $uri = str_replace('\\', '/', $uri); + + // Remove illegal characters + $uri = preg_replace('|[^a-zA-Z0-9\.\-_\/]|', '', $uri); + + // Remove any domain specification as all URIs must be relative to the site's root + $uri = preg_replace('|^http:\/\/[^\/]+|iU', '', $uri); + + // Get rid of any double slashes + while (strpos($uri, '//') !== false) { + $uri = str_replace('//', '/', $uri); + } + + if (strlen($uri) == 0) { + return ''; + } + + // Prepend the URI with a root slash + while (substr($uri, 0, 1) == '/') { + $uri = substr($uri, 1, strlen($uri) - 1); + } + + $uri = '/' . $uri; + + // Remove any trailing slashes + while (substr($uri, -1) == '/') { + $uri = substr($uri, 0, strlen($uri) - 1); + } + + return $uri; + } + + // }}} +} + +// }}} diff --git a/NEUE DATEIEN/includes/classes/class.CeonURIMappingAdminCategories.php b/NEUE DATEIEN/includes/classes/class.CeonURIMappingAdminCategories.php new file mode 100644 index 0000000..7a59108 --- /dev/null +++ b/NEUE DATEIEN/includes/classes/class.CeonURIMappingAdminCategories.php @@ -0,0 +1,90 @@ + + * @copyright Copyright 2008-2019 Ceon + * @copyright Copyright 2003-2019 Zen Cart Development Team + * @copyright Portions Copyright 2003 osCommerce + * @link http://ceon.net/software/business/zen-cart/uri-mapping + * @license http://www.zen-cart.com/license/2_0.txt GNU Public License V2.0 + * @version $Id: class.CeonURIMappingAdminCategories.php 1027 2012-07-17 20:31:10Z conor $ + */ + +if (!defined('IS_ADMIN_FLAG')) { + die('Illegal Access'); +} + +/** + * Load in the parent class if not already loaded + */ +require_once(DIR_FS_CATALOG . DIR_WS_CLASSES . 'class.CeonURIMappingAdminCategoriesProducts.php'); + + +// {{{ constants + +define('CEON_URI_MAPPING_GENERATION_ATTEMPT_FOR_CATEGORY_WITH_NO_NAME', -2); + +// }}} + + +// {{{ CeonURIMappingAdminCategories + +/** + * Handles the URI mappings for categories. + * + * @package ceon_uri_mapping + * @author Conor Kerr + * @copyright Copyright 2008-2019 Ceon + * @copyright Copyright 2003-2008 Zen Cart Development Team + * @copyright Portions Copyright 2003 osCommerce + * @link http://ceon.net/software/business/zen-cart/uri-mapping + * @license http://www.zen-cart.com/license/2_0.txt GNU Public License V2.0 + */ +class CeonURIMappingAdminCategories extends CeonURIMappingAdminCategoriesProducts +{ + // {{{ Class Constructor + + /** + * Creates a new instance of the CeonURIMappingAdminCategories class. + * + * @access public + */ + public function __construct() + { + parent::__construct(); + } + + // }}} + + + // {{{ autogenCategoryURIMapping() + + /** + * Generates a URI for a category, for the specified language. + * + * @access public + * @param integer $id The ID of the category. + * @param integer $parent_category_id The ID of the parent category (used if the details in the database + * could be out of date as new information is being submitted when the + * URI is being generated). + * @param string $name The name of category (used if new information is being submitted when + * the URI is being generated). + * @param string $language_code The ISO 639 language code of the language. + * @param integer $language_id The Zen Cart language ID for the language. + * @return string The auto-generated URI for the category and language. + */ + public function autogenCategoryURIMapping($id, $parent_category_id, $name, $language_code, $language_id) + { + return $this->autogenCategoryOrProductURIMapping($id, 'category', $parent_category_id, $name, + $language_code, $language_id); + } + + // }}} +} + +// }}} diff --git a/NEUE DATEIEN/includes/classes/class.CeonURIMappingAdminCategoriesProducts.php b/NEUE DATEIEN/includes/classes/class.CeonURIMappingAdminCategoriesProducts.php new file mode 100644 index 0000000..a6485bc --- /dev/null +++ b/NEUE DATEIEN/includes/classes/class.CeonURIMappingAdminCategoriesProducts.php @@ -0,0 +1,249 @@ + + * @copyright Copyright 2008-2019 Ceon + * @copyright Copyright 2003-2022 Zen Cart Development Team + * @copyright Portions Copyright 2003 osCommerce + * @link http://ceon.net/software/business/zen-cart/uri-mapping + * @license http://www.zen-cart.com/license/2_0.txt GNU Public License V2.0 + * @version $Id: class.CeonURIMappingAdminCategoriesProducts.php 2022-07-19 20:43:10Z webchills $ + */ + +if (!defined('IS_ADMIN_FLAG')) { + die('Illegal Access'); +} + +/** + * Load in the parent class if not already loaded + */ +require_once(DIR_FS_CATALOG . DIR_WS_CLASSES . 'class.CeonURIMappingAdmin.php'); + + +// {{{ constants + +// Other constants defined in page-type admin class files +define('CEON_URI_MAPPING_GENERATION_ATTEMPT_FOR_CATEGORY_PATH_PART_WITH_NO_NAME', -1); + +// }}} + + +// {{{ CeonURIMappingAdminCategoriesProducts + +/** + * Provides shared functionality for the Ceon URI Mapping admin functionality for categories and products. + * + * @package ceon_uri_mapping + * @author Conor Kerr + * @copyright Copyright 2008-2019 Ceon + * @copyright Copyright 2003-2008 Zen Cart Development Team + * @copyright Portions Copyright 2003 osCommerce + * @link http://ceon.net/software/business/zen-cart/uri-mapping + * @license http://www.zen-cart.com/license/2_0.txt GNU Public License V2.0 + */ +class CeonURIMappingAdminCategoriesProducts extends CeonURIMappingAdmin +{ + // {{{ Class Constructor + + /** + * Creates a new instance of the CeonURIMappingAdminCategoriesProducts class. + * + * @access public + */ + public function __construct() + { + parent::__construct(); + } + + // }}} + + + // {{{ autogenCategoryOrProductURIMapping() + + /** + * Generates a URI mapping for a category or a product, for the specified language. + * + * @access public + * @param integer $id The ID of the category/product. + * @param string $type Whether the ID corresponds to a category or a product. + * @param integer $parent_category_id The ID of the parent category (used if the details in the database + * could be out of date as new information is being submitted when the + * URI is being generated). + * @param string $name The name of category/product (used if new information is being + * submitted when the URI is being generated). + * @param string $language_code The ISO 639 language code of the language. + * @param integer $language_id The Zen Cart language ID for the language. + * @return string The auto-generated URI for the category/product and language. + */ + public function autogenCategoryOrProductURIMapping($id, $type, $parent_category_id, $name, $language_code, + $language_id) + { + //global $db; + + // Get the complete path to this category/product, or the parent category if this is a new category/product + if (is_null($name)) { + $category_and_product_path_array = $this->getCategoryOrProductPath($id, $type, $language_id); + } else { + $category_and_product_path_array = + $this->getCategoryOrProductPath($parent_category_id, 'category', $language_id); + } + + $category_and_product_path_array = array_reverse($category_and_product_path_array); + + if (!is_null($name) || count($category_and_product_path_array) == 0) { + // Must add the new category/product's name to the path array + $category_and_product_path_array[] = $name; + } + + // Must not generate URIs for any category or product which has no name.. would conflict with parent + // category (manual mapping can be used if that behaviour is required). + $num_categories_products = count($category_and_product_path_array); + + for ($i = 0; $i < $num_categories_products; $i++) { + if (strlen($category_and_product_path_array[$i]) == 0 || $category_and_product_path_array[$i] == '/' || + $category_and_product_path_array[$i] == '\\') { + if ($i == ($num_categories_products - 1)) { + if ($type == 'product') { + return CEON_URI_MAPPING_GENERATION_ATTEMPT_FOR_PRODUCT_WITH_NO_NAME; + } else { + return CEON_URI_MAPPING_GENERATION_ATTEMPT_FOR_CATEGORY_WITH_NO_NAME; + } + } + + return CEON_URI_MAPPING_GENERATION_ATTEMPT_FOR_CATEGORY_PATH_PART_WITH_NO_NAME; + } + } + + for ($i = 0, $n = count($category_and_product_path_array); $i < $n; $i++) { + $category_and_product_path_array[$i] = $this->_convertStringForURI( + $category_and_product_path_array[$i], $language_code); + } + + // Language code to be auto-included, then push to the beginning of the URI + if ($this->_autoLanguageCodeAdd()) { + array_unshift($category_and_product_path_array, $language_code); + } + + // Implode the path array into a URI + $uri = implode('/', $category_and_product_path_array); + + // Prepend the URI with the store's directory (if any), otherwise add a "root" slash + if (strlen(DIR_WS_CATALOG) > 0) { + $uri = DIR_WS_CATALOG . $uri; + } else { + $uri = '/' . $uri; + } + + return $uri; + } + + // }}} + + + // {{{ getCategoryOrProductPath() + + /** + * Looks up the hierarchy of the parent categories for the given category/product. + * + * @access public + * @param integer $id The ID of the category/product. + * @param string $for Either 'category' or 'product'. + * @param integer $language_id The ID of the language of the category names to lookup. + * @param array $categories_array Used internally as part of recursion process. + * @return array A hierarchical array of the parent categories (if any) for the given category/product, + * from the "leaf" product/category back to the "root/top" category. + */ + public function getCategoryOrProductPath($id, $for, $language_id, $categories_array = '') + { + global $db; + + if (!is_array($categories_array)) { + $categories_array = array(); + } + + if ($id == 0) { + return $categories_array; + } + + if ($for == 'product') { + $master_category = $db->Execute(" + SELECT + pd.products_name, + p.master_categories_id + FROM + " . TABLE_PRODUCTS . " p + LEFT JOIN + " . TABLE_PRODUCTS_DESCRIPTION . " pd + ON + pd.products_id = p.products_id + WHERE + p.products_id = '" . (int) $id . "' + AND + pd.language_id = '" . (int) $language_id . "';"); + + if (!$master_category->EOF) { + $categories_array[] = $master_category->fields['products_name']; + + if ($master_category->fields['master_categories_id'] == '0') { + // Product uses root/top category + } else { + $category = $db->Execute(" + SELECT + cd.categories_name, + c.parent_id + FROM + " . TABLE_CATEGORIES . " c, + " . TABLE_CATEGORIES_DESCRIPTION . " cd + WHERE + c.categories_id = '" . + (int) $master_category->fields['master_categories_id'] . "' + AND + c.categories_id = cd.categories_id + AND + cd.language_id = '" . (int) $language_id . "'"); + + $categories_array[] = $category->fields['categories_name']; + + if ((zen_not_null($category->fields['parent_id'])) && + ($category->fields['parent_id'] != '0')) { + $categories_array = $this->getCategoryOrProductPath($category->fields['parent_id'], + 'category', $language_id, $categories_array); + } + } + } + } else if ($for == 'category') { + $category = $db->Execute(" + SELECT + cd.categories_name, + c.parent_id + FROM + " . TABLE_CATEGORIES . " c, + " . TABLE_CATEGORIES_DESCRIPTION . " cd + WHERE + c.categories_id = '" . (int) $id . "' + AND + c.categories_id = cd.categories_id + AND + cd.language_id = '" . (int) $language_id . "'"); + + $categories_array[] = $category->fields['categories_name']; + + if ((zen_not_null($category->fields['parent_id'])) && ($category->fields['parent_id'] != '0')) { + $categories_array = $this->getCategoryOrProductPath($category->fields['parent_id'], 'category', + $language_id, $categories_array); + } + } + + return $categories_array; + } + + // }}} +} + +// }}} diff --git a/NEUE DATEIEN/includes/classes/class.CeonURIMappingAdminEZPages.php b/NEUE DATEIEN/includes/classes/class.CeonURIMappingAdminEZPages.php new file mode 100644 index 0000000..e0fbb0d --- /dev/null +++ b/NEUE DATEIEN/includes/classes/class.CeonURIMappingAdminEZPages.php @@ -0,0 +1,128 @@ + + * @copyright Copyright 2008-2019 Ceon + * @copyright Copyright 2003-2021 Zen Cart Development Team + * @copyright Portions Copyright 2003 osCommerce + * @link http://ceon.net/software/business/zen-cart/uri-mapping + * @license http://www.zen-cart.com/license/2_0.txt GNU Public License V2.0 + * @version $Id: class.CeonURIMappingAdminEZPages.php 1028 2021-06-23 09:31:10Z webchills $ + */ + +if (!defined('IS_ADMIN_FLAG')) { + die('Illegal Access'); +} + +/** + * Load in the parent class if not already loaded + */ +require_once(DIR_FS_CATALOG . DIR_WS_CLASSES . 'class.CeonURIMappingAdmin.php'); + + +// {{{ constants + +define('CEON_URI_MAPPING_GENERATION_ATTEMPT_FOR_EZ_PAGE_WITH_NO_NAME', -6); + +// }}} + + +// {{{ CeonURIMappingAdminEZPages + +/** + * Handles the URI mappings for EZ-pages. + * + * @package ceon_uri_mapping + * @author Conor Kerr + * @copyright Copyright 2008-2019 Ceon + * @copyright Copyright 2003-2019 Zen Cart Development Team + * @copyright Portions Copyright 2003 osCommerce + * @link http://ceon.net/software/business/zen-cart/uri-mapping + * @license http://www.zen-cart.com/license/2_0.txt GNU Public License V2.0 + */ +class CeonURIMappingAdminEZPages extends CeonURIMappingAdmin +{ + // {{{ Class Constructor + + /** + * Creates a new instance of the CeonURIMappingAdminEZPages class. + * + * @access public + */ + public function __construct() + { + parent::__construct(); + } + + // }}} + + + // {{{ autogenEZPageURIMapping() + + /** + * Generates a URI mapping for an EZ-Page, for the specified language. + * + * @access public + * @param integer $id The ID of the EZ-Page. + * @param string $name The name of EZ-Page (used if new information is being + * submitted when the URI is being generated). + * @param string $language_code The ISO 639 language code of the language. + * @param integer $language_id The Zen Cart language ID for the language. + * @return string The auto-generated URI for the EZ-Page and language. + */ + public function autogenEZPageURIMapping($id, $name, $language_code, $language_id) + { + global $db, $sniffer; + + if (is_null($name)) { + // Load name from database + $ez_page_table = (defined('TABLE_EZPAGES_CONTENT') && $sniffer->table_exists(TABLE_EZPAGES_CONTENT)) ? TABLE_EZPAGES_CONTENT : TABLE_EZPAGES; + + $ez_page_name_result = $db->Execute(" + SELECT + pages_title + FROM + " . $ez_page_table . " + WHERE + pages_id = " . (int) $id . " + AND + languages_id = " . (int) $language_id); + + $ez_page_name = $ez_page_name_result->fields['pages_title']; + + } else { + // Simply use name supplied + $ez_page_name = $name; + } + + // Must not generate URIs for any EZ-Page which has no name! + if (strlen($ez_page_name) == 0 || $ez_page_name == '/' || $ez_page_name == '\\') { + return CEON_URI_MAPPING_GENERATION_ATTEMPT_FOR_EZ_PAGE_WITH_NO_NAME; + } + + // Language code to be auto-included, then push to the beginning of the URI + if ($this->_autoLanguageCodeAdd()) { + $ez_page_name = $language_code . '/' . $ez_page_name; + } + + $uri = $this->_convertStringForURI($ez_page_name, $language_code); + + // Prepend the URI with the store's directory (if any), otherwise add a "root" slash + if (strlen(DIR_WS_CATALOG) > 0) { + $uri = DIR_WS_CATALOG . $uri; + } else { + $uri = '/' . $uri; + } + + return $uri; + } + + // }}} +} + +// }}} diff --git a/NEUE DATEIEN/includes/classes/class.CeonURIMappingAdminManufacturers.php b/NEUE DATEIEN/includes/classes/class.CeonURIMappingAdminManufacturers.php new file mode 100644 index 0000000..816bb04 --- /dev/null +++ b/NEUE DATEIEN/includes/classes/class.CeonURIMappingAdminManufacturers.php @@ -0,0 +1,124 @@ + + * @copyright Copyright 2008-2019 Ceon + * @copyright Copyright 2003-2019 Zen Cart Development Team + * @copyright Portions Copyright 2003 osCommerce + * @link http://ceon.net/software/business/zen-cart/uri-mapping + * @license http://www.zen-cart.com/license/2_0.txt GNU Public License V2.0 + * @version $Id: class.CeonURIMappingAdminManufacturers.php 1027 2012-07-17 20:31:10Z conor $ + */ + +if (!defined('IS_ADMIN_FLAG')) { + die('Illegal Access'); +} + +/** + * Load in the parent class if not already loaded + */ +require_once(DIR_FS_CATALOG . DIR_WS_CLASSES . 'class.CeonURIMappingAdmin.php'); + + +// {{{ constants + +define('CEON_URI_MAPPING_GENERATION_ATTEMPT_FOR_MANUFACTURER_WITH_NO_NAME', -5); + +// }}} + + +// {{{ CeonURIMappingAdminManufacturers + +/** + * Handles the URI mappings for Manufacturers. + * + * @package ceon_uri_mapping + * @author Conor Kerr + * @copyright Copyright 2008-2019 Ceon + * @copyright Copyright 2003-2019 Zen Cart Development Team + * @copyright Portions Copyright 2003 osCommerce + * @link http://ceon.net/software/business/zen-cart/uri-mapping + * @license http://www.zen-cart.com/license/2_0.txt GNU Public License V2.0 + */ +class CeonURIMappingAdminManufacturers extends CeonURIMappingAdmin +{ + // {{{ Class Constructor + + /** + * Creates a new instance of the CeonURIMappingAdminManufacturers class. + * + * @access public + */ + public function __construct() + { + parent::__construct(); + } + + // }}} + + + // {{{ autogenManufacturerURIMapping() + + /** + * Generates a URI mapping for a manufacturer, for the specified language. + * + * @access public + * @param integer $id The ID of the manufacturer. + * @param string $name The name of manufacturer (used if new information is + * being submitted when the URI is being generated). + * @param string $language_code The ISO 639 language code of the language. + * @param integer $language_id The Zen Cart language ID for the language. + * @return string The auto-generated URI for the manufacturer and language. + */ + public function autogenManufacturerURIMapping($id, $name, $language_code, $language_id) + { + global $db; + + if (is_null($name)) { + // Load name from database + $manufacturer_name_result = $db->Execute(" + SELECT + manufacturers_name + FROM + " . TABLE_MANUFACTURERS . " + WHERE + manufacturers_id = " . (int) $id . ";"); + + $manufacturer_name = $manufacturer_name_result->fields['manufacturers_name']; + + } else { + // Simply use name supplied + $manufacturer_name = $name; + } + + // Must not generate URIs for any manufacturer which has no name! + if (strlen($manufacturer_name) == 0 || $manufacturer_name == '/' || $manufacturer_name == '\\') { + return CEON_URI_MAPPING_GENERATION_ATTEMPT_FOR_MANUFACTURER_WITH_NO_NAME; + } + + // Language code to be auto-included, then push to the beginning of the URI + if ($this->_autoLanguageCodeAdd()) { + $manufacturer_name = $language_code . '/' . $manufacturer_name; + } + + $uri = $this->_convertStringForURI($manufacturer_name, $language_code); + + // Prepend the URI with the store's directory (if any), otherwise add a "root" slash + if (strlen(DIR_WS_CATALOG) > 0) { + $uri = DIR_WS_CATALOG . $uri; + } else { + $uri = '/' . $uri; + } + + return $uri; + } + + // }}} +} + +// }}} diff --git a/NEUE DATEIEN/includes/classes/class.CeonURIMappingAdminProducts.php b/NEUE DATEIEN/includes/classes/class.CeonURIMappingAdminProducts.php new file mode 100644 index 0000000..1505e10 --- /dev/null +++ b/NEUE DATEIEN/includes/classes/class.CeonURIMappingAdminProducts.php @@ -0,0 +1,224 @@ + + * @copyright Copyright 2008-2019 Ceon + * @copyright Copyright 2003-2022 Zen Cart Development Team + * @copyright Portions Copyright 2003 osCommerce + * @link http://ceon.net/software/business/zen-cart/uri-mapping + * @license http://www.zen-cart.com/license/2_0.txt GNU Public License V2.0 + * @version $Id: class.CeonURIMappingAdminProducts.php 2022-02-19 20:45:15Z webchills $ + */ + +if (!defined('IS_ADMIN_FLAG')) { + die('Illegal Access'); +} + +/** + * Load in the parent class if not already loaded + */ +require_once(DIR_FS_CATALOG . DIR_WS_CLASSES . 'class.CeonURIMappingAdminCategoriesProducts.php'); + + +// {{{ constants + +define('CEON_URI_MAPPING_GENERATION_ATTEMPT_FOR_PRODUCT_WITH_NO_NAME', -3); +define('CEON_URI_MAPPING_GENERATION_ATTEMPT_FOR_PRODUCT_WITH_NO_MODEL', -4); + +// }}} + + +// {{{ CeonURIMappingAdminProducts + +/** + * Handles the URI mappings for products. + * + * @package ceon_uri_mapping + * @author Conor Kerr + * @copyright Copyright 2008-2019 Ceon + * @copyright Copyright 2003-2019 Zen Cart Development Team + * @copyright Portions Copyright 2003 osCommerce + * @link http://ceon.net/software/business/zen-cart/uri-mapping + * @license http://www.zen-cart.com/license/2_0.txt GNU Public License V2.0 + */ +class CeonURIMappingAdminProducts extends CeonURIMappingAdminCategoriesProducts +{ + // {{{ Class Constructor + + /** + * Creates a new instance of the CeonURIMappingAdminProducts class. + * + * @access public + */ + public function __construct() + { + parent::__construct(); + } + + // }}} + + + // {{{ autoManageProductRelatedPageURI() + + /** + * Checks whether auto-managing of the specified product related page URI is enabled or disabled. + * + * @access public + * @param string $page_type The type of the page. + * @return boolean Whether auto-managing of the page's URI is enabled or disabled. + */ + public function autoManageProductRelatedPageURI($page_type) + { + global $db; + + if (!isset($automanage_enabled)) { + static $automanage_enabled = array(); + + // Only one config currently supported so ID is hard-coded in following SQL + $automanage_enabled_sql = " + SELECT + manage_product_reviews_mappings, + manage_product_reviews_info_mappings, + manage_product_reviews_write_mappings, + manage_ask_a_question_mappings + FROM + " . TABLE_CEON_URI_MAPPING_CONFIGS . " + WHERE + id ='1';"; + + $automanage_enabled_result = $db->Execute($automanage_enabled_sql); + + if (!$automanage_enabled_result->EOF) { + $automanage_enabled = array( + 'product_reviews' => + $automanage_enabled_result->fields['manage_product_reviews_mappings'], + 'product_reviews_info' => + $automanage_enabled_result->fields['manage_product_reviews_info_mappings'], + 'product_reviews_write' => + $automanage_enabled_result->fields['manage_product_reviews_write_mappings'], + 'ask_a_question' => + $automanage_enabled_result->fields['manage_ask_a_question_mappings'] + ); + } + } + + if ($automanage_enabled[$page_type] == 1) { + return true; + } + + return false; + } + + // }}} + + + // {{{ getProductRelatedPageURIPart() + + /** + * Looks up the product related page URI part for the page type and language specified. + * + * @access public + * @param string $page_type The type of the page. + * @param string $language_code The language code the URI part should be returned for. + * @return string|false The product related page's URI part or false if there is no URI part for the + * specified page type and language code. + */ + public function getProductRelatedPageURIPart($page_type, $language_code) + { + global $db; + + if (!isset($uri_parts) || !isset($uri_parts[$language_code]) || + !isset($uri_parts[$language_code][$page_type])) { + // URI part hasn't been cached for this page type for the specified language, cache all now + static $uri_parts = array(); + + // Only hold the information in memory for URI parts that are being auto-managed + $page_types = array( + 'product_reviews', + 'product_reviews_info', + 'product_reviews_write', + 'ask_a_question' + ); + + $page_types_sql_string = ''; + + foreach ($page_types as $current_page_type) { + if ($this->autoManageProductRelatedPageURI($current_page_type)) { + if (strlen($page_types_sql_string) > 0) { + $page_types_sql_string .= ' OR '; + } + + $page_types_sql_string .= "page_type = '" . $current_page_type . "'\n"; + } + } + + // Only one config currently supported so ID is hard-coded in following SQL + $uri_parts_sql = " + SELECT + page_type, + language_code, + uri_part + FROM + " . TABLE_CEON_URI_MAPPING_PRODUCT_RELATED_PAGES_URI_PARTS . " + WHERE + " . $page_types_sql_string . ";"; + + $uri_parts_result = $db->Execute($uri_parts_sql); + + while (!$uri_parts_result->EOF) { + if (!isset($uri_parts[$uri_parts_result->fields['language_code']])) { + $uri_parts[$uri_parts_result->fields['language_code']] = array(); + } + + $uri_parts[$uri_parts_result->fields['language_code']][$uri_parts_result->fields['page_type']] = + $uri_parts_result->fields['uri_part']; + + $uri_parts_result->MoveNext(); + } + } + + if (isset($uri_parts[$language_code]) && isset($uri_parts[$language_code][$page_type]) && + strlen($uri_parts[$language_code][$page_type]) > 0) { + + return $uri_parts[$language_code][$page_type]; + } + + return false; + } + + // }}} + + + // {{{ autogenProductURIMapping() + + /** + * Generates a URI mapping for a product, for the specified language. + * + * @access public + * @param integer $id The ID of the product. + * @param integer $parent_category_id The ID of the parent category (used if the details in the database + * could be out of date as new information is being submitted when + * the URI is being generated). + * @param string $name The name of product (used if new information is being submitted when + * the URI is being generated). + * @param string $language_code The ISO 639 language code of the language. + * @param integer $language_id The Zen Cart language ID for the language. + * @param string $model The product's model code. + * @param string $mapping_template The mapping template for this product. + * @return string The auto-generated URI for the product and language. + */ + public function autogenProductURIMapping($id, $parent_category_id, $name, $language_code, $language_id, $model = null) + { + return $this->autogenCategoryOrProductURIMapping($id, 'product', $parent_category_id, $name, + $language_code, $language_id); + } + + // }}} +} + +// }}} diff --git a/NEUE DATEIEN/includes/classes/class.CeonURIMappingDBLookup.php b/NEUE DATEIEN/includes/classes/class.CeonURIMappingDBLookup.php new file mode 100644 index 0000000..24e975c --- /dev/null +++ b/NEUE DATEIEN/includes/classes/class.CeonURIMappingDBLookup.php @@ -0,0 +1,171 @@ + + * @copyright Copyright 2008-2019 Ceon + * @copyright Copyright 2003-2019 Zen Cart Development Team + * @copyright Portions Copyright 2003 osCommerce + * @link http://ceon.net/software/business/zen-cart/uri-mapping + * @license http://www.zen-cart.com/license/2_0.txt GNU Public License V2.0 + * @version $Id: class.CeonURIMappingDBLookup.php 1027 2012-07-17 20:31:10Z conor $ + */ + +if (!defined('IS_ADMIN_FLAG')) { + die('Illegal Access'); +} + +// {{{ CeonURIMappingDBLookup + +/** + * Base class for Ceon URI Mapping which provides some shared database functionality. This functionality has been + * abstracted so that differing database implementations can be used simply by using alternative versions of this + * file. + * + * @package ceon_uri_mapping + * @abstract + * @author Conor Kerr + * @copyright Copyright 2008-2019 Ceon + * @copyright Copyright 2003-2019 Zen Cart Development Team + * @copyright Portions Copyright 2003 osCommerce + * @link http://ceon.net/software/business/zen-cart/uri-mapping + * @license http://www.zen-cart.com/license/2_0.txt GNU Public License V2.0 + */ +class CeonURIMappingDBLookup +{ + // {{{ Class Constructor + + /** + * Creates a new instance of the CeonURIMappingDBLookup class. Not intended to be used as this is an abstract + * class. + * + * @access public + */ + public function __construct() + { + + } + + // }}} + + + // {{{ getURIMappingsResultset() + + /** + * Performs a query against the URI mappings database. Use of this method abstracts the calling code from the + * actual implementation of the database's structure. + * + * @access public + * @param array|string $columns_to_retrieve The column(s) to retrieve. Either an array of column names or + * a single column name. + * @param array $selections An associative array of column names and values to match for these columns. + * A set of values can be grouped with OR by specifying an array of values for + * the value. + * @param string $order_by A SQL string to be used to order the resultset. + * @param string $limit A SQL string to be used to limit the resultset. + * @param string $group_by A SQL string to be used to group the resultset. + * @return resultset A Zen Cart database resultset. + */ + public function getURIMappingsResultset($columns_to_retrieve, $selections, $order_by = null, $limit = null, + $group_by = null) + { + global $db; + + if (is_array($columns_to_retrieve)) { + $columns_to_retrieve = implode(', ', $columns_to_retrieve); + } + + $selection_string = ''; + + $num_selection_columns = count($selections); + + $column_name_i = 0; + + foreach ($selections as $column_name => $column_value) { + if (is_array($column_value)) { + // The value is an array of values so create an ORed group + $num_column_values = count($column_value); + + $selection_string .= '(' . "\n"; + + for ($column_value_i = 0; $column_value_i < $num_column_values; $column_value_i++) { + $selection_string .= "\t" . $column_name; + + $value = $column_value[$column_value_i]; + + if (is_null($value) || strtolower($value) == 'null') { + $selection_string .= " IS NULL\n"; + } else if (strtolower($value) == 'not null') { + $selection_string .= " IS NOT NULL\n"; + } else { + if (substr($value, -1) == '%') { + $selection_string .= ' LIKE '; + } else { + $selection_string .= ' = '; + } + + $selection_string .= "'" . zen_db_input($value) . "'\n"; + } + + if ($column_value_i < ($num_column_values - 1)) { + $selection_string .= " OR\n"; + } + } + + $selection_string .= ')' . "\n"; + + } else { + $selection_string .= "\t" . $column_name; + + if (is_null($column_value) || strtolower($column_value) == 'null') { + $selection_string .= " IS NULL\n"; + } else if (strtolower($column_value) == 'not null') { + $selection_string .= " IS NOT NULL\n"; + } else { + if (substr($column_value, -1) == '%') { + $selection_string .= ' LIKE '; + } else { + $selection_string .= ' = '; + } + + $selection_string .= "'" . zen_db_input($column_value) . "'\n"; + } + } + + if ($column_name_i < ($num_selection_columns - 1)) { + $selection_string .= " AND\n"; + } + + $column_name_i++; + } + + $sql = " + SELECT + " . $columns_to_retrieve . " + FROM + " . TABLE_CEON_URI_MAPPINGS . " + WHERE + " . $selection_string; + + if (!is_null($order_by)) { + $sql .= "\n" . ' ORDER BY ' . $order_by; + } + + if (!is_null($limit)) { + $sql .= "\n" . ' LIMIT ' . $limit; + } + + if (!is_null($group_by)) { + $sql .= "\n" . ' GROUP_BY ' . $group_by; + } + + $sql .= ';'; + + return $db->Execute($sql); + } + + // }}} +} + +// }}} diff --git a/NEUE DATEIEN/includes/classes/class.CeonURIMappingHREFLinkBuilder.php b/NEUE DATEIEN/includes/classes/class.CeonURIMappingHREFLinkBuilder.php new file mode 100644 index 0000000..dde3d34 --- /dev/null +++ b/NEUE DATEIEN/includes/classes/class.CeonURIMappingHREFLinkBuilder.php @@ -0,0 +1,439 @@ + + * @copyright Copyright 2008-2019 Ceon + * @copyright Copyright 2003-2022 Zen Cart Development Team + * @copyright Portions Copyright 2003 osCommerce + * @link http://ceon.net/software/business/zen-cart/uri-mapping + * @license http://www.zen-cart.com/license/2_0.txt GNU Public License V2.0 + * @version $Id: class.CeonURIMappingHREFLinkBuilder.php 2022-02-19 20:40:15Z webchills $ + */ + +if (!defined('IS_ADMIN_FLAG')) { + die('Illegal Access'); +} + +/** + * Load in the parent class if not already loaded + */ +require_once(DIR_FS_CATALOG . DIR_WS_CLASSES . 'class.CeonURIMappingDBLookup.php'); + + +// {{{ CeonURIMappingHREFLinkBuilder + +/** + * Provides functionality to build a static URI for a Zen Cart page, for use in a HTML link's href + * parameter. + * + * @package ceon_uri_mapping + * @author Conor Kerr + * @copyright Copyright 2008-2019 Ceon + * @copyright Copyright 2003-2007 Zen Cart Development Team + * @copyright Portions Copyright 2003 osCommerce + * @link http://ceon.net/software/business/zen-cart/uri-mapping + * @license http://www.zen-cart.com/license/2_0.txt GNU Public License V2.0 + */ +class CeonURIMappingHREFLinkBuilder extends CeonURIMappingDBLookup +{ + // {{{ properties + + /** + * The link built by this instance. + * + * @var string + * @access protected + */ + protected $_href_link = ''; + + // }}} + + + // {{{ Class Constructor + + /** + * Creates a new instance of the CeonURIMappingHREFLinkBuilder class. + * + * @access public + */ + public function __construct() + { + parent::__construct(); + } + + // }}} + + + // {{{ buildHREFLink() + + /** + * Builds a static URI-based link for a Zen Cart page, if a mapping exists for the page. The link is built in a + * format that can be directly included in a HTML link's href attribute. + * + * @access public + * @param string $base_link The base string for the link, as built by the standard Zen Cart + * zen_href_link() function. + * @param string $main_page The Zen Cart page type the link is to. + * @param string $parameters The query string parameters which are to be used to identify the specific + * Zen Cart page and to build any additional parameters for that page. + * @param string $connection The connection type the link is to use. + * @param boolean $add_session_id Whether or not to add the session ID to the link. + * @return boolean Whether or not a static URI was successfully built for the Zen Cart page. + */ + public function buildHREFLink($base_link, $main_page, $parameters, $connection, $add_session_id) + { + global $request_type, $session_started, $http_domain, $https_domain, $ceon_uri_mapping_product_pages, + $ceon_uri_mapping_product_related_pages; + + // Reset the link for this instance + $this->_href_link = ''; + + // Variable holds the main part of the link being built + $link = ''; + + if (preg_match('/.*index.php\?main_page=([^&]+)/i', $main_page, $matches)) { + // Link isn't to a page's filename but to a specific URI (e.g. an EZ-Page alt url) + // Extract the page ID and any parameters from the string + $main_page = $matches[1]; + $page = ''; + $temp = str_replace($matches[0], '', $page); + + $parameters = $parameters . $temp; + } + + if ($main_page == FILENAME_DEFAULT && $parameters != '' && + strpos(strtolower($parameters), 'manufacturers_id=') !== false) { + // This link is to a manufacturer's page + + // Get the manufacturer ID + $pattern = '/[&\?]?(manufacturers_id=([0-9]+))/i'; + + if (preg_match($pattern, $parameters, $matches)) { + $manufacturer_query_pair = $matches[1]; + $manufacturer_id = $matches[2]; + + $manufacturer_parameter = 'manufacturers_id=' . $manufacturer_id; + + $columns_to_retrieve = array( + 'uri' + ); + + $selections = array( + 'main_page' => $main_page, + 'query_string_parameters' => $manufacturer_parameter, + 'language_id' => (int) $_SESSION['languages_id'], + 'current_uri' => 1 + ); + + $uri_mapping_result = $this->getURIMappingsResultset($columns_to_retrieve, $selections, null, 1); + + if (!$uri_mapping_result->EOF) { + $link = $uri_mapping_result->fields['uri']; + + // Remove the manufacturer ID from the URI as it will be regenerated when the static URI is + // loaded + $parameters = str_replace($manufacturer_query_pair . '&', '', $parameters); + $parameters = str_replace($manufacturer_query_pair, '', $parameters); + } + } + } else if ($main_page == FILENAME_DEFAULT && $parameters != '' && + strpos(strtolower($parameters), 'typefilter=') !== false) { + // This link is to a category page + + // Get the filter information + $pattern = '/[&\?]?(typefilter=([^&]+))/i'; + + if (preg_match($pattern, $parameters, $matches)) { + $typefilter_name_query_pair = $matches[1]; + $typefilter_name = $matches[2]; + + // Attempt to get ID for filter's property + $pattern = '/[&\?]?(' . $typefilter_name . '_id=([^&]+))/i'; + + if (preg_match($pattern, $parameters, $matches)) { + $typefilter_id_query_pair = $matches[1]; + $typefilter_id = $matches[2]; + + $typefilter_parameter = 'typefilter=' . $typefilter_name . '&' . $typefilter_name . '_id=' . + $typefilter_id; + + $columns_to_retrieve = array( + 'uri' + ); + + $selections = array( + 'main_page' => $main_page, + 'query_string_parameters' => $typefilter_parameter, + 'language_id' => (int) $_SESSION['languages_id'], + 'current_uri' => 1 + ); + + $uri_mapping_result = + $this->getURIMappingsResultset($columns_to_retrieve, $selections, null, 1); + + if (!$uri_mapping_result->EOF) { + $link = $uri_mapping_result->fields['uri']; + + // Remove the typefilter info from the URI as it will be regenerated when the static URI is + // loaded + $parameters = str_replace($typefilter_id_query_pair . '&', '', $parameters); + $parameters = str_replace($typefilter_id_query_pair, '', $parameters); + + $parameters = str_replace($typefilter_name_query_pair . '&', '', $parameters); + $parameters = str_replace($typefilter_name_query_pair, '', $parameters); + } + } + } + } else if ($main_page == FILENAME_DEFAULT && $parameters != '' && + strpos(strtolower($parameters), 'cpath=') !== false) { + // This link is to a category page + + // Get the category ID + $pattern = '/[&\?]?(cPath=([0-9\_]+))/i'; + + if (preg_match($pattern, $parameters, $matches)) { + $category_query_pair = $matches[1]; + $category_parts = explode('_', $matches[2]); + + // Category ID to be linked to is the last part of the specification + $category_id = $category_parts[count($category_parts) - 1]; + + $columns_to_retrieve = array( + 'uri' + ); + + $selections = array( + 'main_page' => $main_page, + 'associated_db_id' => (int) $category_id, + 'language_id' => (int) $_SESSION['languages_id'], + 'current_uri' => 1 + ); + + $uri_mapping_result = $this->getURIMappingsResultset($columns_to_retrieve, $selections, null, 1); + + if (!$uri_mapping_result->EOF) { + $link = $uri_mapping_result->fields['uri']; + + // Remove the category ID from the URI as it will be regenerated when the static URI is loaded + $parameters = str_replace($category_query_pair . '&', '', $parameters); + $parameters = str_replace($category_query_pair, '', $parameters); + } + } + } else if ($main_page == FILENAME_DEFAULT && strpos(strtolower($parameters), 'typefilter=') === false) { + // Link is to the index page.. no need to look up mapping in database, simply use the default index + // page static URI + $link = DIR_WS_CATALOG; + + } else if (in_array($main_page, $ceon_uri_mapping_product_pages) || + in_array($main_page, $ceon_uri_mapping_product_related_pages)) { + // This link is to a product info page or one of the other pages related to the product + + // Get the product ID + $pattern = '/[&\?]?(products_id=([0-9]+)[^&]*)/i'; + if ($main_page == FILENAME_ASK_A_QUESTION) { + $pattern = '/[&\?]?(pid=([0-9]+)[^&]*)/i'; + } + + if (preg_match($pattern, $parameters, $matches)) { + $product_query_pair = $matches[1]; + $product_id = $matches[2]; + + $columns_to_retrieve = array( + 'uri' + ); + + $selections = array( + 'main_page' => $main_page, + 'associated_db_id' => (int) $product_id, + 'language_id' => (int) $_SESSION['languages_id'], + 'current_uri' => 1 + ); + + $uri_mapping_result = $this->getURIMappingsResultset($columns_to_retrieve, $selections, null, 1); + + if (!$uri_mapping_result->EOF) { + $link = $uri_mapping_result->fields['uri']; + + if (strpos($product_query_pair, ':') === false) { + // Remove product ID from query string unless it includes information about selected + // attributes (which is added when linking from shopping cart to product info page) + $parameters = str_replace($product_query_pair . '&', '', $parameters); + $parameters = str_replace($product_query_pair, '', $parameters); + } + + // Don't add the cPath to the URI if it matches the product's full cPath. All other variations + // must still be added to retain context on the site + $cpath_being_linked_to = null; + + $pattern = '/cPath\=([0-9\_]+)/'; + + if (preg_match($pattern, $parameters, $matches)) { + $cpath_being_linked_to = $matches[1]; + } + + if ($cpath_being_linked_to == zen_get_product_path($product_id)) { + $parameters = str_replace('cPath=' . $cpath_being_linked_to . '&', '', $parameters); + $parameters = str_replace('cPath=' . $cpath_being_linked_to, '', $parameters); + } + } + } + } else if ($main_page == FILENAME_EZPAGES || $main_page == FILENAME_EZPAGES_POPUP) { + // This link is to an EZ-Pages page + + // Get the page ID + $pattern = '/[&\?]?(id=([0-9]+))/i'; + + if (preg_match($pattern, $parameters, $matches)) { + $ez_page_id_query_pair = $matches[1]; + $ez_page_id = $matches[2]; + + $columns_to_retrieve = array( + 'uri' + ); + + $selections = array( + 'main_page' => $main_page, + 'associated_db_id' => (int) $ez_page_id, + 'language_id' => (int) $_SESSION['languages_id'], + 'current_uri' => 1 + ); + + $uri_mapping_result = $this->getURIMappingsResultset($columns_to_retrieve, $selections, null, 1); + + if (!$uri_mapping_result->EOF) { + $link = $uri_mapping_result->fields['uri']; + + $parameters = str_replace($ez_page_id_query_pair . '&', '', $parameters); + $parameters = str_replace($ez_page_id_query_pair, '', $parameters); + } + } + } else { + // This link is some other Zen Cart page + + // Attempt to match a page with the exact same parameters first + $columns_to_retrieve = array( + 'uri' + ); + + $selections = array( + 'main_page' => $main_page, + 'associated_db_id' => 'null', + 'query_string_parameters' => $parameters, + 'language_id' => (int) $_SESSION['languages_id'], + 'current_uri' => 1 + ); + + $uri_mapping_result = $this->getURIMappingsResultset($columns_to_retrieve, $selections, null, 1); + + if (!$uri_mapping_result->EOF) { + $link = $uri_mapping_result->fields['uri']; + + // Don't add any parameters as they will be initialised later if URI being mapped to is loaded + $parameters = ''; + + } else { + // Attempt to match a page with no parameters + $columns_to_retrieve = array( + 'uri' + ); + + $selections = array( + 'main_page' => $main_page, + 'associated_db_id' => 'null', + 'query_string_parameters' => 'null', + 'language_id' => (int) $_SESSION['languages_id'], + 'current_uri' => 1 + ); + + $uri_mapping_result = $this->getURIMappingsResultset($columns_to_retrieve, $selections, null, 1); + + if (!$uri_mapping_result->EOF) { + $link = $uri_mapping_result->fields['uri']; + } + } + } + + if ($link != '') { + $link = $base_link . $link; + + if (strlen($parameters) > 0) { + // Must add the parameters to the link + $link .= '?'; + + while (substr($parameters, 0, 1) == '?' || substr($parameters, 0, 1) == '&') { + $parameters = substr($parameters, 1, strlen($parameters) - 1); + } + + $link .= zen_output_string($parameters); + + $separator = '&'; + } else { + $separator = '?'; + } + + // Perform standard Zen Cart functionality for links + + // Add the session ID when moving from different HTTP and HTTPS servers, or when SID is defined + if (($add_session_id == true) && ($session_started == true) && (SESSION_FORCE_COOKIE_USE == 'False')) { + if (defined('SID') && zen_not_null(constant('SID'))) { + $sid = constant('SID'); + } elseif ( ( ($request_type == 'NONSSL') && ($connection == 'SSL') && (ENABLE_SSL == 'true') ) || ( ($request_type == 'SSL') && ($connection == 'NONSSL') ) ) { + if ($http_domain != $https_domain) { + $sid = zen_session_name() . '=' . zen_session_id(); + } + } + } + + // Clean up the link + while (strstr($link, '&&')) $link = str_replace('&&', '&', $link); + while (strstr($link, '&&')) $link = str_replace('&&', '&', $link); + + if ( (SEARCH_ENGINE_FRIENDLY_URLS == 'true') && (false/*@TODO $search_engine_safe*/ == true) ) { + while (strstr($link, '&&')) $link = str_replace('&&', '&', $link); + + $link = str_replace('&', '/', $link); + $link = str_replace('?', '/', $link); + $link = str_replace('&', '/', $link); + $link = str_replace('=', '/', $link); + + $separator = '?'; + } + + if (isset($sid)) { + $link .= $separator . zen_output_string($sid); + } + // Encode the link's ampersand entities + while (strstr($link, '&&')) $link = str_replace('&&', '&', $link); + + $link = preg_replace('/&/', '&', $link); + + // Have got the link to be used, store it in this instance + $this->_href_link = $link; + } + + return (strlen($this->_href_link) > 0); + } + + // }}} + + + // {{{ getHREFLink() + + /** + * Simply returns the HREF link value built by this instance. + * + * @access public + * @return string The HREF link built by this instance. + */ + public function getHREFLink() + { + return $this->_href_link; + } + + // }}} +} + +// }}} diff --git a/NEUE DATEIEN/includes/classes/class.CeonURIMappingHandler.php b/NEUE DATEIEN/includes/classes/class.CeonURIMappingHandler.php new file mode 100644 index 0000000..e8af12f --- /dev/null +++ b/NEUE DATEIEN/includes/classes/class.CeonURIMappingHandler.php @@ -0,0 +1,705 @@ + + * @copyright Copyright 2008-2019 Ceon + * @copyright Copyright 2003-2022 Zen Cart Development Team + * @copyright Portions Copyright 2003 osCommerce + * @link http://ceon.net/software/business/zen-cart/uri-mapping + * @license http://www.zen-cart.com/license/2_0.txt GNU Public License V2.0 + * @version $Id: class.CeonURIMappingHandler.php 2022-02-19 20:41:15Z webchills $ + */ + +if (!defined('IS_ADMIN_FLAG')) { + die('Illegal Access'); +} + +/** + * Load in the parent class if not already loaded + */ +require_once(DIR_FS_CATALOG . DIR_WS_CLASSES . 'class.CeonURIMappingHandlerBase.php'); + + +// {{{ CeonURIMappingHandler + +/** + * Standard version of Ceon URI Mapping URI Handler class which provides maximum compatibility and flexibility when + * mapping the current URI to a Zen Cart page. + * + * @package ceon_uri_mapping + * @author Conor Kerr + * @copyright Copyright 2008-2019 Ceon + * @copyright Copyright 2003-2019 Zen Cart Development Team + * @copyright Portions Copyright 2003 osCommerce + * @link http://ceon.net/software/business/zen-cart/uri-mapping + * @license http://www.zen-cart.com/license/2_0.txt GNU Public License V2.0 + */ +class CeonURIMappingHandler extends CeonURIMappingHandlerBase +{ + // {{{ Class Constructor + + /** + * Creates a new instance of the CeonURIMappingHandler class. Checks the server and module's configuration, + * then attempts to map the current URI to the appropriate Zen Cart page. + * + * @access public + */ + public function __construct() + { + parent::__construct(); + } + + // }}} + + + // {{{ _handleStaticURI() + + /** + * Attempts to match the current URI against a static URI in the Ceon URI Mapping database. + * + * @access protected + * @return void + * @author Conor Kerr + */ + protected function _handleStaticURI() + { + global $db; + + // Make sure that request URI has no invalid characters in it + $uri_to_match = preg_replace('/[^a-zA-Z0-9_\-\.\/%]/', '', $this->_request_uri); + + // Remove any trailing slashes + while (substr($uri_to_match, -1) == '/') { + $uri_to_match = substr($uri_to_match, 0, strlen($uri_to_match) -1); + } + + $match_criteria_sql = "um.uri = '" . zen_db_prepare_input($uri_to_match) . "'"; + + $columns_to_retrieve = array( + 'language_id', + 'main_page', + 'query_string_parameters', + 'associated_db_id', + 'alternate_uri', + 'current_uri', + 'redirection_type_code' + ); + + $selections = array( + 'uri' => zen_db_prepare_input($uri_to_match) + ); + + $order_by = ' + current_uri DESC, + language_id, + date_added DESC'; + + $match_uri_result = $this->getURIMappingsResultset($columns_to_retrieve, $selections, $order_by); + + if ($match_uri_result->EOF) { + // URI couldn't be mapped, should the index page be shown or the 404 page? + if (MISSING_PAGE_CHECK == 'On' || MISSING_PAGE_CHECK == 'true') { + $_GET['main_page'] = 'index'; + } else if (MISSING_PAGE_CHECK == 'Page Not Found') { + header('HTTP/1.1 404 Not Found'); + $_GET['main_page'] = 'page_not_found'; + } + + return; + } + + // Have matched the URI! + + // Use the current mapping that specifically maps the language ID originally being used when this URI was + // accessed, otherwise simply use the most recent current mapping, falling back to the most recent mapping + // for the original language ID and, as a last resort, the most recent mapping for any ID + $current_and_original_language_mapping = null; + $current_mappings = array(); + $original_language_mappings = array(); + $other_mappings = array(); + + while (!$match_uri_result->EOF) { + $current_mapping_info = $match_uri_result->fields; + + if ($current_mapping_info['current_uri'] == 1 && + $current_mapping_info['language_id'] == $this->_original_language_id) { + // Optimal mapping found + $current_and_original_language_mapping = $current_mapping_info; + break; + } + + if ($current_mapping_info['current_uri'] == 1) { + $current_mappings[] = $current_mapping_info; + } else if ($current_mapping_info['language_id'] == $this->_original_language_id) { + $original_language_mappings[] = $current_mapping_info; + } else { + $other_mappings[] = $current_mapping_info; + } + + $match_uri_result->MoveNext(); + } + + // Use the details for the best possible match for the URI (criteria as above) + if (!is_null($current_and_original_language_mapping)) { + $mapping_info = $current_and_original_language_mapping; + } else if (sizeof($current_mappings) > 0) { + $mapping_info = $current_mappings[0]; + } else if (sizeof($original_language_mappings) > 0) { + $mapping_info = $original_language_mappings[0]; + } else { + $mapping_info = $other_mappings[0]; + } + + $language_id = (int)$mapping_info['language_id']; + $main_page = $mapping_info['main_page']; + $query_string_parameters = $mapping_info['query_string_parameters']; + $associated_db_id = is_null($mapping_info['associated_db_id']) ? null : (int)$mapping_info['associated_db_id']; + $alternate_uri = $mapping_info['alternate_uri']; + $current_uri = $mapping_info['current_uri']; + $redirection_type_code = $mapping_info['redirection_type_code']; + + if (!is_null($alternate_uri)) { + $alternate_uri = trim($alternate_uri); + + if (strlen($alternate_uri) == 0) { + $alternate_uri = null; + } + } + + if (!is_null($alternate_uri)) { + // Alternative URI is a full URI to be redirected to + + // Assume that a form would never be posted to an alternative URI, so don't perform POST check + switch ($redirection_type_code) { + case 301: + header('HTTP/1.1 301 Moved Permanently'); + break; + case 302: + header('HTTP/1.1 302 Found'); + break; + case 303: + header('HTTP/1.1 303 See Other'); + break; + case 307: + header('HTTP/1.1 307 Temporary Redirect'); + break; + } + + header('Location: ' . $alternate_uri); + + zen_exit(); + + } else if (is_null($main_page)) { + // No value found for main page, this is a corrupted URI mapping! + header('HTTP/1.1 404 Not Found'); + + $_GET['main_page'] = 'page_not_found'; + + // Add an error message to the message stack session variable as the message stack + // itself isn't available at this point in the initsystem + if (!isset($_SESSION['messageToStack']) || !is_array($_SESSION['messageToStack'])) { + $_SESSION['messageToStack'] = array(); + } + + $_SESSION['messageToStack'][] = array( + 'class' => 'heading', + 'text' => 'Unable to map identified URI: ' . $this->_request_uri, + 'type' => 'error' + ); + + return; + } + + // Have matched a Zen Cart page to initialise + + // Is the URI a current URI or should an attempt be made to find the current URI to redirect to? Or has the + // user just changed the language so an attempt should be made to find the current URI for the new + // language? + // Although don't perform redirect checks if a form is being posted, as any redirect would break the post + if (count($_POST) == 0 && ($current_uri != 1 || $this->_language_changed)) { + // Attempt to find the current URI mapping for the user's chosen language + $redirection_check_language_id = $_SESSION['languages_id']; + + $redirection_uri = $this->_getCurrentURI($main_page, $associated_db_id, $query_string_parameters, + $redirection_check_language_id); + + if ($redirection_uri == false) { + // Didn't find a current URI mapping for the user's chosen language + + // If the URI mapping identified so far is a historical mapping which uses a different language, + // try to find the current URI mapping for that language + if ($current_uri != 1 && $language_id != $_SESSION['languages_id']) { + $redirection_check_language_id = $language_id; + + $redirection_uri = $this->_getCurrentURI($main_page, $associated_db_id, + $query_string_parameters, $redirection_check_language_id); + + if ($redirection_uri == false) { + // Didn't find a current URI mapping for the language the identified mapping is using + + } else { + // If using a different language from the session (and the user hasn't just selected a new + // language), must use the new language + if ($language_id != $_SESSION['languages_id'] && !$this->_language_changed) { + $language_info_query = " + SELECT + directory, + code + FROM + " . TABLE_LANGUAGES . " + WHERE + languages_id = '" . (int) $language_id . "';"; + + $language_info_result = $db->Execute($language_info_query); + + $_SESSION['language'] = $language_info_result->fields['directory']; + $_SESSION['languages_id'] = $language_id; + $_SESSION['languages_code'] = $language_info_result->fields['code']; + + // Redirecting to a new URI, must record that the language is being changed so that the + // correct currency can be used + $_SESSION['ceon_uri_mapping_language_changed'] = true; + } + } + } + } + + if ($current_uri == 1 && $this->_language_changed) { + // Must record that the language is being changed so that the correct currency can be used + $_SESSION['ceon_uri_mapping_language_changed'] = true; + } + + // Don't redirect to another URI if the URI is the same but just for a different language + if ($this->_language_changed && $redirection_uri == $uri_to_match) { + $redirection_uri = false; + } + + if ($redirection_uri != false) { + // Have found a current URI mapping for this page, force a redirect to it + + // Include any extra info in the GET variables + if (!is_null($associated_db_id) || is_null($query_string_parameters)) { + $query_string = $this->_buildQueryString(); + + } else if (!is_null($query_string_parameters)) { + // Query string variables will be rebuilt after redirecting so no need to append them + $query_string = ''; + } + + $redirection_uri .= $query_string; + + header('HTTP/1.1 301 Moved Permanently'); + header('Location: ' . $redirection_uri); + + zen_exit(); + + } else if (!$this->_language_changed) { + // There is no current URI for this language, this is a URI from the historical database, being + // used to prevent broken links + $this->_handleHistoricalURIWithNoCurrentMapping($main_page, $associated_db_id, + $query_string_parameters); + } + } else if ($language_id != $_SESSION['languages_id']) { + // The user hasn't just selected a new language, but the URI uses a different language from the + // session, so must switch the session to use the new language + $language_info_query = " + SELECT + directory, + code + FROM + " . TABLE_LANGUAGES . " + WHERE + languages_id = '" . (int) $language_id . "';"; + + $language_info_result = $db->Execute($language_info_query); + + $_SESSION['language'] = $language_info_result->fields['directory']; + $_SESSION['languages_id'] = $language_id; + $_SESSION['languages_code'] = $language_info_result->fields['code']; + + $this->_language_changed = true; + } + + // This URI is the current URI for this page. Set up the Zen Cart environment for the page + $_GET['main_page'] = $main_page; + + if (!is_null($associated_db_id)) { + // Page is a category, EZ-Page or a product info page, must initialise the appropriate ID + if ($main_page == FILENAME_DEFAULT) { + // This is a category page + // Must build the full contextual link to the category, so any hierarchy is respected + $categories = array(); + + zen_get_parent_categories($categories, $associated_db_id); + + $categories = array_reverse($categories); + + $cPath = implode('_', $categories); + + if (zen_not_null($cPath)) { + $cPath .= '_'; + } + + $cPath .= $associated_db_id; + + $_GET['cPath'] = $cPath; + + } else if ($main_page == FILENAME_EZPAGES || $main_page == FILENAME_EZPAGES_POPUP) { + // Have found an EZ-Page. Should it be displayed as a normal page or in a popup? + if ($main_page == FILENAME_EZPAGES_POPUP || isset($_GET['ezpopup'])) { + $_GET['main_page'] = FILENAME_EZPAGES_POPUP; + } else { + $_GET['main_page'] = FILENAME_EZPAGES; + } + + $_GET['id'] = $associated_db_id; + } else if ($main_page == FILENAME_ASK_A_QUESTION) { + // Have found an Ask A Question Page. + if (isset($_GET['pid']) && strpos($_GET['pid'], ':') !== false) { + // Query string parameter includes information about selected attributes (which is added when + // linking from shopping cart to a product info page) so don't override the parameter's value + + } else { + $_GET['pid'] = $associated_db_id; + } + // Rebuild the cPath variable for this page if it doesn't exist + if (!isset($_GET['cPath'])) { + $_GET['cPath'] = zen_get_product_path($_GET['pid']); + } + } else { + // This is a product related page + if (isset($_GET['products_id']) && strpos($_GET['products_id'], ':') !== false) { + // Query string parameter includes information about selected attributes (which is added when + // linking from shopping cart to a product info page) so don't override the parameter's value + + } else { + $_GET['products_id'] = $associated_db_id; + } + + // Rebuild the cPath variable for this page if it doesn't exist + if (!isset($_GET['cPath'])) { + $_GET['cPath'] = zen_get_product_path($_GET['products_id']); + } + } + } else if (!is_null($query_string_parameters)) { + // Page is a Zen Cart page with preset parameters, must initialise the parameters + $query_string_pairs = explode('&', $query_string_parameters); + + foreach ($query_string_pairs as $query_string_pair) { + $parameter_parts = explode('=', $query_string_pair); + + // Parameter from database overrides any in query string + if (count($parameter_parts) == 2) { + $_GET[$parameter_parts[0]] = urldecode($parameter_parts[1]); + } + } + } + + // Make this URI the canonical URI for the page + global $ceon_uri_mapping_canonical_uri; + + $ceon_uri_mapping_canonical_uri = HTTP_SERVER . $uri_to_match; + + // A product review's page needs the ID included as part of the canonical URI + if (defined('FILENAME_PRODUCT_REVIEWS_INFO') && $main_page == FILENAME_PRODUCT_REVIEWS_INFO && + isset($_GET['reviews_id'])) { + $ceon_uri_mapping_canonical_uri .= '?reviews_id=' . $_GET['reviews_id']; + } + if (isset($GLOBALS['zco_notifier'])) { + $GLOBALS['zco_notifier']->notify('CEON_CLASS_HANDLER_HANDLE_STATIC_URI_END', compact('mapping_info', 'uri_to_match')); + } + } + + // }}} + + + // {{{ _handleZCDynamicURI() + + /** + * Attempts to find and redirect to a static URI for the current, dynamic URI. If none is found, Zen Cart can + * proceed as normal. + * + * @access protected + * @author Conor Kerr + * @return none + */ + protected function _handleZCDynamicURI() + { + global /*$db, */$ceon_uri_mapping_product_pages, $ceon_uri_mapping_product_related_pages; + + $associated_db_id = null; + $query_string_to_match = null; + + if ($_GET['main_page'] == FILENAME_DEFAULT && (isset($_GET['cPath']) || isset($_GET['manufacturers_id']) || + (isset($_GET['typefilter']) && $_GET['typefilter'] != '' && + isset($_GET[$_GET['typefilter'] . '_id']) && $_GET[$_GET['typefilter'] . '_id'] != ''))) { + if (isset($_GET['manufacturers_id'])) { + // This is a manufacturer page - get the URI for the manufacturers page if there is one + $query_string_to_match = 'manufacturers_id=' . $_GET['manufacturers_id']; + + } else if (isset($_GET['typefilter']) && $_GET['typefilter'] != '' && + isset($_GET[$_GET['typefilter'] . '_id']) && $_GET[$_GET['typefilter'] . '_id'] != '') { + // This is a filtered page - get the URI for the filtered page if there is one + $query_string_to_match = 'typefilter=' . $_GET['typefilter'] . '&' . $_GET['typefilter'] . '_id=' . + $_GET[$_GET['typefilter'] . '_id']; + + } else if (isset($_GET['cPath'])) { + // This is a category page - get the URI for the category ID + $category_parts = explode('_', $_GET['cPath']); + $category_id = $category_parts[count($category_parts) - 1]; + + $associated_db_id = $category_id; + } + } else if (in_array($_GET['main_page'], $ceon_uri_mapping_product_pages) || + in_array($_GET['main_page'], $ceon_uri_mapping_product_related_pages)) { + $associated_db_id = !empty($_GET['products_id']) ? $_GET['products_id'] : (!empty($_GET['pid']) ? $_GET['pid'] : 0); + + } else if ($_GET['main_page'] == FILENAME_EZPAGES || $_GET['main_page'] == FILENAME_EZPAGES_POPUP) { + $associated_db_id = !empty($_GET['id']) ? $_GET['id'] : 0; + + } else if ((count($_GET) > 1 && !isset($_GET[zen_session_name()])) || + (isset($_GET[zen_session_name()]) && count($_GET) > 2)) { + // Check if there's a query string to match against for this Zen Cart page + $query_string_to_match = $this->_query_string; + + // Remove main_page variable from query string parameters to be matched + $query_string_to_match = str_replace('main_page=' . $_GET['main_page'], '', $query_string_to_match); + + if (substr($query_string_to_match, 0, 1) == '&') { + $query_string_to_match = substr($query_string_to_match, 1, strlen($query_string_to_match) - 1); + } + + if (substr($query_string_to_match, -1) == '&') { + $query_string_to_match = substr($query_string_to_match, 0, strlen($query_string_to_match) - 1); + } + } + + // Attempt to find a current URI mapping for the user's chosen language + $redirection_uri = $this->_getCurrentURI($_GET['main_page'], $associated_db_id, + $query_string_to_match, $_SESSION['languages_id']); + + if ($redirection_uri != false) { + // Have found a URI mapping for this page, use this as the "current" URI for this page by forcing a + // redirect to it + + // Perform a sanity check to make sure that the URI to be redirected to isn't simply the current URI + if ($this->_request_uri != $redirection_uri) { + // Fine to redirect + + // Remove unnecessary variables from query string + if ($_GET['main_page'] == FILENAME_DEFAULT && isset($_GET['manufacturer_id'])) { + // Remove the manufacturer ID from the URI as it will be regenerated + // when the static URI is loaded + unset($_GET['manufacturer_id']); + + } else if ($_GET['main_page'] == FILENAME_DEFAULT && isset($_GET['typefilter']) && + $_GET['typefilter'] != '' && isset($_GET[$_GET['typefilter'] . '_id']) && + $_GET[$_GET['typefilter'] . '_id'] != '') { + // Remove the filter info from the URI as it will be regenerated when the static URI is loaded + unset($_GET['typefilter']); + unset($_GET[$_GET['typefilter'] . '_id']); + + } else if ($_GET['main_page'] == FILENAME_DEFAULT && isset($_GET['cPath'])) { + // Remove the category ID from the URI as it will be regenerated when the static URI is loaded + unset($_GET['cPath']); + + } else if (in_array($_GET['main_page'], $ceon_uri_mapping_product_pages) || + in_array($_GET['main_page'], $ceon_uri_mapping_product_related_pages)) { + // Remove the category ID from the URI if it is simply the product's master category as it will + // be regenerated when the static URI is loaded + if (isset($_GET['cPath']) && $_GET['cPath'] == zen_get_product_path($_GET['products_id'])) { + unset($_GET['cPath']); + } + + unset($_GET['products_id'], $_GET['pid']); + + } else if ($_GET['main_page'] == FILENAME_EZPAGES || + $_GET['main_page'] == FILENAME_EZPAGES_POPUP) { + unset($_GET['id']); + } + + unset($_GET['main_page']); + + if (!is_null($query_string_to_match)) { + // Remove the query string parameters which matched those in the string in the database as they + // will be set automatically using the same parameter string associated with the mapped URI in + // the database - this means they don't have to be displayed to the customer! + // All other parameters should be passed or additional functionality on the mapped page would + // not work correctly! + $query_string_parameter_pairs = explode('&', $query_string_to_match); + + foreach ($query_string_parameter_pairs as $current_query_string_parameter_pair) { + $key_and_value = explode('=', $current_query_string_parameter_pair); + + unset($_GET[$key_and_value[0]]); + } + } + } else { + // Don't redirect to the same address! + $redirection_uri = false; + } + } else if (is_null($associated_db_id) && !is_null($query_string_to_match) && + $_GET['main_page'] != FILENAME_DEFAULT) { + // Could this possibly be a Zen Cart page without parameters? + $redirection_uri = $this->_getCurrentURI($_GET['main_page'], null, null, $_SESSION['languages_id']); + + if ($redirection_uri != false) { + // Perform a sanity check to make sure that the URI to be redirected to isn't simply the current + // URI + if ($this->_request_uri != $redirection_uri) { + // Fine to redirect; remove unnecessary page identifier from query string + unset($_GET['main_page']); + } else { + // Don't redirect to the same address! + $redirection_uri = false; + } + } + } + + if ($redirection_uri != false) { + $query_string = $this->_buildQueryString(); + + $redirection_uri .= $query_string; + + header('HTTP/1.1 301 Moved Permanently'); + header('Location: ' . $redirection_uri); + + zen_exit(); + } + + $this->_handleUnmappedURI($_GET['main_page'], $associated_db_id, $query_string_to_match); + } + + // }}} + + + // {{{ _handleHistoricalURIWithNoCurrentMapping() + + /** + * Redirects to a standard Zen Cart dynamic URI, building the URI from the parameters passed. + * + * @access protected + * @author Conor Kerr + * @param string $main_page The name of the Zen Cart page for the URI. + * @param integer $associated_db_id The associated database ID for the URI. + * @param integer $query_string_parameters The query string parameters for the URI. + * @return none + */ + protected function _handleHistoricalURIWithNoCurrentMapping($main_page, $associated_db_id, $query_string_parameters) + { + global $request_type; + + if (!is_null($associated_db_id)) { + // Must supply the ID information necessary for the correct info to be loaded + switch ($main_page) { + case FILENAME_DEFAULT: + if (!isset($_GET['cPath'])) { + $_GET['cPath'] = $associated_db_id; + } + + break; + + case FILENAME_EZPAGES: + case FILENAME_EZPAGES_POPUP: + $_GET['id'] = $associated_db_id; + + break; + + case FILENAME_ASK_A_QUESTION: + $_GET['pid'] = $associated_db_id; + + break; + default: + // This is a product related page + $_GET['products_id'] = $associated_db_id; + + break; + } + } else if (!is_null($query_string_parameters)) { + // Must make sure that all parameters for this URI are loaded + $query_string_pairs = explode('&', $query_string_parameters); + + foreach ($query_string_pairs as $query_string_pair) { + $parameter_parts = explode('=', $query_string_pair); + + // Parameter from database overrides any in query string as this is a historical URI mapping. + if (count($parameter_parts) == 2) { + $_GET[$parameter_parts[0]] = urldecode($parameter_parts[1]); + } + } + } + + if ($request_type == 'SSL') { + $redirection_uri = DIR_WS_HTTPS_CATALOG; + } else { + $redirection_uri = DIR_WS_CATALOG; + } + + if (substr($redirection_uri, 0, 1) != '/') { + $redirection_uri = '/' . $redirection_uri; + } + + $redirection_uri .= 'index.php'; + + // Add the page to be loaded to the list of query parameters + $_GET['main_page'] = $main_page; + + $query_string = $this->_buildQueryString(); + + $redirection_uri .= $query_string; + + // Record that the source of redirect was this script, avoiding any unnecessary processing + // later + $_SESSION['ceon_uri_mapping_redirected'] = true; + + header('HTTP/1.1 301 Moved Permanently'); + header('Location: ' . $redirection_uri); + + zen_exit(); + } + + // }}} + + + // {{{ _handleUnmappedURI() + + /** + * Handles a Zen Cart dynamic URI which has no URI mapping. + * + * @access protected + * @author Conor Kerr + * @param string $main_page The name of the Zen Cart page for the URI. + * @param integer $associated_db_id The associated database ID for the URI. + * @param integer $query_string_parameters The query string parameters for the URI. + * @return none + */ + protected function _handleUnmappedURI($main_page, $associated_db_id, $query_string_parameters) + { + if (is_null($associated_db_id) && !is_null($query_string_parameters) && + $_GET['main_page'] == FILENAME_DEFAULT) { + // Build the canonical URI for a manufacturer page or a filtered page as the fallover Zen Cart + // canonical code doesn't handle these pages + if (isset($_GET['manufacturers_id'])) { + global $ceon_uri_mapping_canonical_uri; + + $ceon_uri_mapping_canonical_uri = HTTP_SERVER . DIR_WS_CATALOG . + 'index.php?main_page=index&manufacturers_id=' . $_GET['manufacturers_id']; + + } else if (isset($_GET['typefilter']) && $_GET['typefilter'] != '' && + isset($_GET[$_GET['typefilter'] . '_id']) && $_GET[$_GET['typefilter'] . '_id'] != '') { + global $ceon_uri_mapping_canonical_uri; + + $ceon_uri_mapping_canonical_uri = HTTP_SERVER . DIR_WS_CATALOG . 'index.php?main_page=index' . + '&typefilter=' . $_GET['typefilter'] . '&' . $_GET['typefilter'] . '_id=' . + $_GET[$_GET['typefilter'] . '_id']; + } + } + } + + // }}} +} + +// }}} diff --git a/NEUE DATEIEN/includes/classes/class.CeonURIMappingHandlerBase.php b/NEUE DATEIEN/includes/classes/class.CeonURIMappingHandlerBase.php new file mode 100644 index 0000000..7265a26 --- /dev/null +++ b/NEUE DATEIEN/includes/classes/class.CeonURIMappingHandlerBase.php @@ -0,0 +1,686 @@ + + * @copyright Copyright 2008-2019 Ceon + * @copyright Copyright 2003-2021 Zen Cart Development Team + * @copyright Portions Copyright 2003 osCommerce + * @link http://ceon.net/software/business/zen-cart/uri-mapping + * @license http://www.zen-cart.com/license/2_0.txt GNU Public License V2.0 + * @version $Id: class.CeonURIMappingHandlerBase.php 1028 2021-06-23 10:01:10Z webchills $ + */ + +if (!defined('IS_ADMIN_FLAG')) { + die('Illegal Access'); +} + +/** + * Load in the parent class if not already loaded + */ +require_once(DIR_FS_CATALOG . DIR_WS_CLASSES . 'class.CeonURIMappingDBLookup.php'); + + +// {{{ CeonURIMappingHandlerBase + +/** + * Base handler class which provides shared functionality for Ceon URI Mapping's URI handling functionality. + * Subclasses must provide an implementation of the functionality necessary to match the current URI to a Zen Cart + * page, and to configure the environment appropriately so that Zen Cart isn't even aware when a standard, dynamic + * Zen Cart URI isn't being used. + * + * Subclasses can override the URI parsing functionality, e.g. for speed benefits with a particular server + * configuration. + * + * @package ceon_uri_mapping + * @abstract + * @author Conor Kerr + * @copyright Copyright 2008-2019 Ceon + * @copyright Copyright 2003-2007 Zen Cart Development Team + * @copyright Portions Copyright 2003 osCommerce + * @link http://ceon.net/software/business/zen-cart/uri-mapping + * @license http://www.zen-cart.com/license/2_0.txt GNU Public License V2.0 + */ +class CeonURIMappingHandlerBase extends CeonURIMappingDBLookup +{ + // {{{ properties + + /** + * Flag maintains the status of the all-important request_uri environment variable. + * + * @var boolean + * @access protected + */ + protected $_request_uri_value_identified = null; + + /** + * The URI being used to access the current page. + * + * @var string + * @access protected + */ + protected $_request_uri = null; + + /** + * The query parameters string for the current page. + * + * @var string + * @access protected + */ + protected $_query_string = null; + + /** + * Flag to say whether the language is currently being changed by the user. + * + * @var boolean + * @access protected + */ + protected $_language_changed = false; + + /** + * The original language ID this page was run with. + * + * @var integer + * @access protected + */ + protected $_original_language_id = null; + + // }}} + + + // {{{ Class Constructor + + /** + * Creates a new instance of the CeonURIMappingBase class. Not intended to be used directly as this is an + * abstract class. + * + * @access public + */ + public function __construct() + { + global $PHP_SELF, $messageStack; + + // The rewrite rule can sometimes interfere with the value of an important server variable. + // Fix any problems + if (!$this->_normaliseServerEnvironment()) { + // Couldn't establish a reasonable value for PHP_SELF + } + + if (!defined('CEON_URI_MAPPING_ENABLED') || CEON_URI_MAPPING_ENABLED == 0) { + // Module either isn't installed or isn't enabled + return; + } + + // Ceon URI Mapping should only run when Zen Cart itself is responsible for runtime execution. If this code + // is running because some other software has called the Zen Cart initsystem then don't attempt to map the + // URI + if ($PHP_SELF != (DIR_WS_CATALOG . 'index.php')) { + return; + } + + parent::__construct(); + + // If the check to make sure that a value exists for the request URI variable has not yet been run, run it + // now + if (is_null($this->_request_uri_value_identified)) { + $this->_request_uri_value_identified = $this->_checkRequestURI(); + } + + if (!$this->_request_uri_value_identified) { + // Essential information isn't available, can't proceed with attempt to map URIs, warn user! + $messageStack->add( + 'Ceon URI Mapping cannot find a usable value for the REQUEST_URI server variable!', 'error'); + + return; + } + + $this->_parseURI(); + + // Run the language initsystem code here as, for some strange reason, it runs late in the initsystem + // process and the Ceon URI Mapping module must run before the sanitize initsystem script which normally + // preceeds the language initsystem code. + $this->_initLanguageSystem(); + + $current_uri_is_index_page = $this->_checkForAndHandleIndexPage(); + + if (!$current_uri_is_index_page) { + $this->_handleURI(); + } + } + + // }}} + + + // {{{ _normaliseServerEnvironment() + + /** + * Makes sure that the PHP_SELF server environment variable has a reasonable value. + * + * @access protected + * @return boolean True if PHP_SELF environment variable has a reasonable value, false otherwise. + */ + protected function _normaliseServerEnvironment() + { + global $PHP_SELF; + + if ($PHP_SELF == '/') { + $PHP_SELF = '/index.php'; + } else if (strtolower($PHP_SELF) == strtolower(DIR_WS_CATALOG)) { + $PHP_SELF = DIR_WS_CATALOG . 'index.php'; + } else if (empty($PHP_SELF)) { + // Fall back to building the value from the current URI. Must ensure that the value of REQUEST_URI is + // populated first. Result is stored to avoid repeating the check later + $this->_request_uri_value_identified = $this->_checkRequestURI(); + + if (!$this->_request_uri_value_identified) { + return false; + } + + $PHP_SELF = preg_replace('/(\?.*)?$/', '', $_SERVER['REQUEST_URI']); + + } else if (!empty($_SERVER['DOCUMENT_ROOT']) && strpos($PHP_SELF, $_SERVER['DOCUMENT_ROOT']) !== false) { + // Server has incorrectly built the full path to the file for the value of PHP_SELF, must correct it by + // removing the root path part + $PHP_SELF = str_replace($_SERVER['DOCUMENT_ROOT'], '', $PHP_SELF); + } + + if ($PHP_SELF != (DIR_WS_CATALOG . 'index.php')) { + // Manually build the variable + if (isset($_SERVER['SCRIPT_FILENAME']) && isset($_SERVER['DOCUMENT_ROOT'])) { + $script_name_orig_len = strlen($_SERVER['SCRIPT_FILENAME']); + + $script_name = str_replace($_SERVER['DOCUMENT_ROOT'], '', $_SERVER['SCRIPT_FILENAME']); + + // Convert any backslashes + $script_name = str_replace('\\', '/', $script_name); + + if (strlen($script_name) < $script_name_orig_len) { + // Script is in a subdirectory of the document root, assume this is the correct name for the + // script + $PHP_SELF = $script_name; + + // Make sure starting directory slash wasn't removed + if (substr($PHP_SELF, 0, 1) != '/') { + $PHP_SELF = '/' . $PHP_SELF; + } + } + } else { + return false; + } + } + + return true; + } + + // }}} + + + // {{{ _checkRequestURI() + + /** + * Tries to find the value of the request URI server environment variable. Attempts to build a value if + * necessary. Some code based on wordpress load script. + * + * @access protected + * @return boolean True if request URI environment variable is found/built, false otherwise. + */ + protected function _checkRequestURI() + { + if (!isset($_SERVER['REQUEST_URI'])) { + $_SERVER['REQUEST_URI'] = ''; + } + + if (!isset($_SERVER['SERVER_SOFTWARE'])) { + $_SERVER['SERVER_SOFTWARE'] = ''; + } + + if (empty($_SERVER['REQUEST_URI']) || (@php_sapi_name() != 'cgi-fcgi' && + strpos($_SERVER['SERVER_SOFTWARE'], 'Microsoft-IIS') !== false)) { + // Necessary variable is missing or could possibly have an incorrect value + + if (isset($_SERVER['HTTP_X_ORIGINAL_URL'])) { + // IIS URL Rewrite module is being used, use the original URI it provides + $_SERVER['REQUEST_URI'] = $_SERVER['HTTP_X_ORIGINAL_URL']; + + } else if (isset($_SERVER['HTTP_X_REWRITE_URL'])) { + // IIS ISAPI_rewrite module is being used, use the original URI it provides + $_SERVER['REQUEST_URI'] = $_SERVER['HTTP_X_REWRITE_URL']; + + } else { + // Attempt to build the variable manually + + // Use ORIG_PATH_INFO if there is no PATH_INFO + if (!isset($_SERVER['PATH_INFO']) && isset($_SERVER['ORIG_PATH_INFO'])) { + $_SERVER['PATH_INFO'] = $_SERVER['ORIG_PATH_INFO']; + } + + // Some IIS + PHP configurations put the script-name in the path-info (No need to append it twice) + if (isset($_SERVER['PATH_INFO'])) { + if ($_SERVER['PATH_INFO'] == $_SERVER['SCRIPT_NAME']) { + $_SERVER['REQUEST_URI'] = $_SERVER['PATH_INFO']; + } else { + $_SERVER['REQUEST_URI'] = $_SERVER['SCRIPT_NAME'] . $_SERVER['PATH_INFO']; + } + } + + // Append the query string if it exists and isn't null + if (!empty($_SERVER['REQUEST_URI']) && !empty($_SERVER['QUERY_STRING'])) { + $_SERVER['REQUEST_URI'] .= '?' . $_SERVER['QUERY_STRING']; + } + } + } + + if (empty($_SERVER['REQUEST_URI'])) { + // Couldn't find or build the REQUEST_URI variable's value + return false; + } + + return true; + } + + // }}} + + + // {{{ _parseURI() + + /** + * Parses the current URI into the main URI part and the query string parameters. Also removes any session ID + * found in the query string parameters, as it certainly won't be matched against in the database! + * + * @access protected + * @return none + */ + protected function _parseURI() + { + $this->_request_uri = $_SERVER['REQUEST_URI']; + + // Remove and store any query string + $query_pos = strpos($this->_request_uri, '?'); + + if ($query_pos !== false) { + $this->_query_string = + substr($this->_request_uri, $query_pos + 1, strlen($this->_request_uri) - $query_pos - 1); + + $this->_request_uri = substr($this->_request_uri, 0, $query_pos); + + if (isset($_GET[zen_session_name()])) { + // Remove any session ID from the query string + $session_param_pattern = '/&?' . zen_session_name() . '=[^&]+/i'; + + $this->_query_string = preg_replace($session_param_pattern, '', $this->_query_string); + } + } + } + + // }}} + + + // {{{ _initLanguageSystem() + + /** + * Works out the language currently being used and makes a note of any change in the language between this page + * load and the previous page load. + * + * @access protected + * @return none + */ + protected function _initLanguageSystem() + { + if (isset($_SESSION['languages_id'])) { + $this->_original_language_id = $_SESSION['languages_id']; + } + + if (!isset($_SESSION['language']) || isset($_GET['language'])) { + + $lng = new language(); + + if (isset($_GET['language']) && zen_not_null($_GET['language'])) { + // The user has selected a different language + $lng->set_language($_GET['language']); + + $this->_language_changed = true; + + unset($_GET['language']); + + } else if (LANGUAGE_DEFAULT_SELECTOR == 'Browser') { + $lng->get_browser_language(); + } else { + $lng->set_language(DEFAULT_LANGUAGE); + } + + $_SESSION['language'] = + (zen_not_null($lng->language['directory']) ? $lng->language['directory'] : 'english'); + + $_SESSION['languages_id'] = (zen_not_null($lng->language['id']) ? $lng->language['id'] : 1); + + $_SESSION['languages_code'] = (zen_not_null($lng->language['code']) ? $lng->language['code'] : 'en'); + } + + if ($this->_language_changed && $this->_original_language_id == $_SESSION['languages_id']) { + // The language selected by the user is the one they were already using! + $this->_language_changed = false; + } + + if (is_null($this->_original_language_id)) { + $this->_original_language_id = $_SESSION['languages_id']; + } + } + + // }}} + + + // {{{ _checkForAndHandleIndexPage() + + /** + * Checks if the current URI is the store's index page. If so, makes sure that it uses the standard URI for the + * index page, redirecting to the standard URI if it doesn't. If this is the correct URI for the index page, + * the environment is configured appropriately. + * + * @access protected + * @return boolean Whether or not the current URI is the index page. + */ + protected function _checkForAndHandleIndexPage() + { + $request_uri = strtolower($this->_request_uri); + + // Handle variations of the index page URI + if ((isset($_GET['main_page']) && + (strlen($_GET['main_page']) == 0 || $_GET['main_page'] == FILENAME_DEFAULT) && + !isset($_GET['cPath']) && !isset($_GET['manufacturers_id']) && !isset($_GET['typefilter'])) || + (!isset($_GET['main_page']) && $request_uri == strtolower(DIR_WS_CATALOG) . 'index.php')) { + // URI is DIR_WS_CATALOG/index.php?main_page=index, DIR_WS_CATALOG/index.php or + // DIR_WS_CATALOG/index.php?main_page= + + // Redirect to DIR_WS_CATALOG + $redirection_uri = DIR_WS_CATALOG; + + if (isset($_GET['main_page'])) { + unset($_GET['main_page']); + } + + $redirection_uri .= $this->_buildQueryString(); + + header("HTTP/1.1 301 Moved Permanently"); + header("Location: " . $redirection_uri); + + zen_exit(); + + } else if (!isset($_GET['main_page']) && $request_uri == strtolower(DIR_WS_CATALOG) || + ($request_uri . '/') == strtolower(DIR_WS_CATALOG)) { + $_GET['main_page'] = FILENAME_DEFAULT; + + if (!isset($_GET['cPath']) && !isset($_GET['manufacturers_id']) && !isset($_GET['typefilter'])) { + // Make this URI the canonical URI for the page + global $ceon_uri_mapping_canonical_uri; + + $ceon_uri_mapping_canonical_uri = DIR_WS_CATALOG; + + // Remove any trailing slash(es) from the canonical URI, unless the URI is the root of the site + //steve added $this_is_home_page or it strips closing slash from index (which breaks facebook Open Graph Debugger for the homepage). $this_is_home_page sometimes not set. + + while (!empty($this_is_home_page) && strlen($ceon_uri_mapping_canonical_uri) > 1 && + substr($ceon_uri_mapping_canonical_uri, -1) == '/') { + $ceon_uri_mapping_canonical_uri = + substr($ceon_uri_mapping_canonical_uri, 0, strlen($ceon_uri_mapping_canonical_uri) - 1); + } + + $ceon_uri_mapping_canonical_uri = HTTP_SERVER . $ceon_uri_mapping_canonical_uri; + + // The index page is being used + return true; + } + } + + return false; + } + + // }}} + + + // {{{ _handleURI() + + /** + * Main dispatch method, determines what type of URI is being used and dispatches to the appropriate handler + * method. + * + * @access protected + * @return none + */ + protected function _handleURI() + { + if (!isset($_GET['main_page'])) { + // Standard Zen Cart URI isn't being used, attempt to identify and map URI + $this->_handleStaticURI(); + + } else if (isset($_GET['main_page']) && isset($_SESSION['ceon_uri_mapping_redirected'])) { + // Ceon URI Mapping redirected the customer here so there's no need for any further checks + unset($_SESSION['ceon_uri_mapping_redirected']); + + } else if (isset($_GET['main_page']) && !isset($_GET['action']) && count($_POST) == 0 && + !($_GET['main_page'] == FILENAME_DEFAULT && !isset($_GET['cPath']) && + !isset($_GET['manufacturers_id']) && + (!isset($_GET['typefilter']) || $_GET['typefilter'] == '') && + (isset($_GET['typefilter']) && (!isset($_GET[$_GET['typefilter'] . '_id']) || + $_GET[$_GET['typefilter'] . '_id'] == '')))) { + // This is a standard Zen Cart dynamic URI - redirect it to its mapped URI if there is one (but not if + // a form POST is taking place, as indicated by the action parameter being present and/or the POST + // variable having values) + $this->_handleZCDynamicURI(); + } + } + + // }}} + + + // {{{ _handleStaticURI() + + /** + * Attempts to match the current URI against a static URI in the Ceon URI Mapping database. + * + * @abstract + * @access protected + * @return none + */ + protected function _handleStaticURI() {} + + // }}} + + + // {{{ _handleZCDynamicURI() + + /** + * Attempts to find and redirect to a static URI for the current, dynamic URI. If none is found, Zen Cart can + * proceed as normal. + * + * @abstract + * @access protected + * @return none + */ + protected function _handleZCDynamicURI() {} + + // }}} + + + // {{{ _handleHistoricalURIWithNoCurrentMapping() + + /** + * Redirects to a standard Zen Cart dynamic URI, building the URI from the parameters passed. + * + * @abstract + * @access protected + * @param string $main_page The name of the Zen Cart page for the URI. + * @param integer $associated_db_id The associated database ID for the URI. + * @param integer $query_string_parameters The query string parameters for the URI. + * @return none + */ + protected function _handleHistoricalURIWithNoCurrentMapping($main_page, $associated_db_id, $query_string_parameters) {} + + // }}} + + + // {{{ _handleUnmappedURI() + + /** + * Handles a Zen Cart dynamic URI which has no URI mapping. + * + * @abstract + * @access protected + * @param string $main_page The name of the Zen Cart page for the URI. + * @param integer $associated_db_id The associated database ID for the URI. + * @param integer $query_string_parameters The query string parameters for the URI. + * @return none + */ + protected function _handleUnmappedURI($main_page, $associated_db_id, $query_string_parameters) {} + + // }}} + + + // {{{ _getCurrentURI() + + /** + * Attempts to find the current URI for the specified language in the Ceon URI Mapping database. + * + * @access protected + * @param string $main_page The name of the Zen Cart page for the URI. + * @param integer $associated_db_id The associated database ID for the URI. + * @param integer $query_string_parameters The query string parameter string for the URI. + * @param integer $language_id The ID of the language. + * @return string|false The current URI for the specified language. + */ + protected function _getCurrentURI($main_page, $associated_db_id, $query_string_parameters, $language_id) + { + global $db; + + $columns_to_retrieve = array( + 'uri' + ); + + if (!is_null($associated_db_id)) { + $selections = array( + 'main_page' => zen_db_prepare_input($main_page), + 'associated_db_id' => (int) $associated_db_id, + 'language_id' => (int) $language_id, + 'current_uri' => 1 + ); + + } else if (!is_null($query_string_parameters)) { + $selections = array( + 'main_page' => zen_db_prepare_input($main_page), + 'query_string_parameters' => zen_db_prepare_input($query_string_parameters), + 'language_id' => (int) $language_id, + 'current_uri' => 1 + ); + + } else { + $selections = array( + 'main_page' => zen_db_prepare_input($main_page), + 'associated_db_id' => 'null', + 'query_string_parameters' => 'null', + 'language_id' => (int) $language_id, + 'current_uri' => 1 + ); + } + + $current_uri_result = $this->getURIMappingsResultset($columns_to_retrieve, $selections, null, 1); + + if (!$current_uri_result->EOF) { + return $current_uri_result->fields['uri']; + } + + return false; + } + + // }}} + + + // {{{ checkLanguageChangedCurrencyChangeRequired() + + /** + * Checks if the currency needs to be changed as the language has just been changed and the store is set to use + * a language's default currency. If so, attempts to switch to the language's default currency. This is a + * public method as it must be called after the languages system has run, which is not until well after Ceon + * URI Mapping's handler runs. + * + * @access public + * @return none + */ + public function checkLanguageChangedCurrencyChangeRequired() + { + if (isset($_SESSION['ceon_uri_mapping_language_changed'])) { + $this->_language_changed = $_SESSION['ceon_uri_mapping_language_changed']; + + unset($_SESSION['ceon_uri_mapping_language_changed']); + } + + if ($this->_language_changed && USE_DEFAULT_LANGUAGE_CURRENCY == 'true' && + LANGUAGE_CURRENCY != $_SESSION['currency']) { + $_SESSION['currency'] = zen_currency_exists(LANGUAGE_CURRENCY); + } + } + + // }}} + + + // {{{ _buildQueryString() + + /** + * Builds the query string for the current query parameters. Can handle arrays and multi-dimensional arrays! + * + * @access protected + * @return string A URL encoded query parameters string. + */ + protected function _buildQueryString() + { + $query_string = ''; + + foreach ($_GET as $key => $value) { + if (is_array($value)) { + $query_string .= $this->_buildArrayQueryParameter($key, $value); + } else { + $query_string .= '&' . urlencode($key) . '=' . urlencode($value); + } + } + + if ($query_string != '') { + $query_string = '?' . substr($query_string, 1, strlen($query_string) - 1); + } + + return $query_string; + } + + // }}} + + + // {{{ _buildArrayQueryParameter() + + /** + * Builds the URL encoded string for an array query parameter. + * + * @access protected + * @param string $key The key for the query string parameter. + * @param array $value The value for the query string parameter. + * @return string A URL encoded string representation of the query parameter. + */ + protected function _buildArrayQueryParameter($key, $value) + { + $parameter_string = ''; + + $key .= '[]'; + + foreach ($value as $subvalue) { + if (is_array($subvalue)) { + $parameter_string .= $this->_buildArrayQueryParameter($key, $subvalue); + } else { + $parameter_string .= '&' . urlencode($key) . '=' . urlencode($subvalue); + } + } + + return $parameter_string; + } + + // }}} +} + +// }}} diff --git a/NEUE DATEIEN/includes/classes/class.Transliteration.php b/NEUE DATEIEN/includes/classes/class.Transliteration.php new file mode 100644 index 0000000..ececeaa --- /dev/null +++ b/NEUE DATEIEN/includes/classes/class.Transliteration.php @@ -0,0 +1,261 @@ + + * @author Stefan M. Kudwien (smk-ka) - dev@unleashedmind.com + * @author Daniel F. Kudwien (sun) - dev@unleashedmind.com + * @copyright Copyright 2008-2019 Ceon + * @link http://ceon.net/software/business/zen-cart/uri-mapping + * @link http://drupal.org/project/transliteration + * @link http://www.mediawiki.org + * @link http://search.cpan.org/~sburke/Text-Unidecode-0.04/lib/Text/Unidecode.pm + * @license http://www.fsf.org/copyleft/lgpl.html Lesser GNU Public License + * @version $Id: class.Transliteration.php 2022-02-18 21:56:10Z webchills $ + */ + +if (!defined('IS_ADMIN_FLAG')) { + die('Illegal Access'); +} + + +// {{{ Constants + +/** + * Define the path to the Transliteration library. + */ +$GLOBALS['transliteration_library_path'] = DIR_FS_CATALOG . DIR_WS_CLASSES . 'transliteration/'; + +// }}} + + +// {{{ Transliteration + +/** + * Transliteration class provides transliteration of strings. + * + * Based on Drupal's Transliteration module, which in turn is based on CPAN's Text::Unidecode and Mediawiki's + * UTFNormal::quickIsNFCVerify(). + * + * @package ceon_uri_mapping + * @author Conor Kerr + * @copyright Copyright 2008-2019 Ceon + * @link http://ceon.net/software/business/zen-cart/uri-mapping + * @link http://drupal.org/project/transliteration + * @link http://www.mediawiki.org + * @link http://search.cpan.org/~sburke/Text-Unidecode-0.04/lib/Text/Unidecode.pm + * @license http://www.fsf.org/copyleft/lgpl.html Lesser GNU Public License + */ +class Transliteration +{ + // {{{ transliterate() + + /** + * Transliterate UTF-8 input to plain ASCII. + * + * @author Conor Kerr + * @author Stefan M. Kudwien (smk-ka) - dev@unleashedmind.com + * @author Daniel F. Kudwien (sun) - dev@unleashedmind.com + * @access public + * @static + * @param string $string UTF-8 text input. + * @param string $unknown Replacement for unknown characters and illegal UTF-8 sequences. + * @param string $language_code Optional ISO 639 language code used to import language specific + * replacements. Defaults to the current display language. + * @return string Plain ASCII output. + */ + static function transliterate($string, $unknown = '?', $language_code = null) + { + // Screen out some characters that eg won't be allowed in XML + $string = preg_replace('/[\x00-\x08\x0b\x0c\x0e-\x1f]/', $unknown, $string); + + // ASCII is always valid NFC! + // If we're only ever given plain ASCII, we can avoid the overhead of initialising the decomposition tables + // by skipping out early + if (!preg_match('/[\x80-\xff]/', $string)) { + return $string; + } + + static $tailBytes; + + if (!isset($tailBytes)) { + // Each UTF-8 head byte is followed by a certain number of tail bytes + $tailBytes = array(); + + for ($n = 0; $n < 256; $n++) { + if ($n < 0xc0) { + $remaining = 0; + } else if ($n < 0xe0) { + $remaining = 1; + } else if ($n < 0xf0) { + $remaining = 2; + } else if ($n < 0xf8) { + $remaining = 3; + } else if ($n < 0xfc) { + $remaining = 4; + } else if ($n < 0xfe) { + $remaining = 5; + } else { + $remaining = 0; + } + $tailBytes[chr($n)] = $remaining; + } + } + + // Chop the text into pure-ASCII and non-ASCII areas. Large ASCII parts can be handled much more quickly. + // Don't chop up Unicode areas for punctuation though, that wastes energy + preg_match_all('/[\x00-\x7f]+|[\x80-\xff][\x00-\x40\x5b-\x5f\x7b-\xff]*/', $string, $matches); + + $result = ''; + + foreach($matches[0] as $str) { + if ($str[0] < "\x80") { + // ASCII chunk: guaranteed to be valid UTF-8 and in normal form C, so skip over it + $result .= $str; + continue; + } + + // Examine the chunk byte by byte to ensure that it consists of valid UTF-8 sequences, and to see if + // any of them might not be normalized + // + // Since PHP is not the fastest language on earth, some of this code is a little ugly with inner loop + // optimizations + + $head = ''; + $chunk = strlen($str); + $len = $chunk + 1; // Counting down is faster. I'm *so* sorry + + for ($i = -1; --$len;) { + $c = $str[++$i]; + + if ($remaining = $tailBytes[$c]) { + // UTF-8 head byte! + $sequence = $head = $c; + + do { + // Look for the defined number of tail bytes... + if (--$len && ($c = $str[++$i]) >= "\x80" && $c < "\xc0") { + // Legal tail bytes are nice + $sequence .= $c; + } else { + if ($len == 0) { + // Premature end of string! + // Drop a replacement character into output to represent the invalid UTF-8 sequence + $result .= $unknown; + break 2; + } else { + // Illegal tail byte; abandon the sequence. + $result .= $unknown; + // Back up and reprocess this byte. It may itself be a legal ASCII or UTF-8 + // sequence head + --$i; + ++$len; + continue 2; + } + } + } while(--$remaining); + + $n = ord($head); + + if ($n <= 0xdf) { + $ord = ($n-192)*64 + (ord($sequence[1])-128); + } else if ($n <= 0xef) { + $ord = ($n-224)*4096 + (ord($sequence[1])-128)*64 + (ord($sequence[2])-128); + } else if ($n <= 0xf7) { + $ord = ($n-240)*262144 + (ord($sequence[1])-128)*4096 + + (ord($sequence[2])-128)*64 + (ord($sequence[3])-128); + } else if ($n <= 0xfb) { + $ord = ($n-248)*16777216 + (ord($sequence[1])-128)*262144 + + (ord($sequence[2])-128)*4096 + (ord($sequence[3])-128)*64 + (ord($sequence[4])-128); + } else if ($n <= 0xfd) { + $ord = ($n-252)*1073741824 + (ord($sequence[1])-128)*16777216 + + (ord($sequence[2])-128)*262144 + (ord($sequence[3])-128)*4096 + + (ord($sequence[4])-128)*64 + (ord($sequence[5])-128); + } + + $result .= Transliteration::_replace($ord, $unknown, $language_code); + $head = ''; + } else if ($c < "\x80") { + // ASCII byte + $result .= $c; + $head = ''; + } else if ($c < "\xc0") { + // Illegal tail bytes + if ($head == '') { + $result .= $unknown; + } + } else { + // Miscellaneous freaks + $result .= $unknown; + $head = ''; + } + } + } + return $result; + } + + // }}} + + + // {{{ + + /** + * Looks up the transliterated character for a unicode character code from the transliteration database, + * adjusting the database used depending on the language code supplied. + * + * @author Conor Kerr + * @author Stefan M. Kudwien (smk-ka) - dev@unleashedmind.com + * @author Daniel F. Kudwien (sun) - dev@unleashedmind.com + * @access private + * @static + * @param integer $ord A unicode ordinal character code. + * @param string $unknown Replacement for unknown characters. + * @param string $language_code Optional ISO 639 language code used to import language + * specific replacements. Defaults to the current display language. + * @return string Plain ASCII replacement character. + */ + static function _replace($ord, $unknown = '?', $language_code = null) + { + if (!isset($language_code)) { + $language_code = $GLOBALS['string_language']; + } + + static $map = array(); + static $template = array(); + + $bank = $ord >> 8; + + // Check if a new bank needs to be loaded + if (!isset($template[$bank])) { + $file = $GLOBALS['transliteration_library_path'] . sprintf('x%02x', $bank) . '.php'; + if (file_exists($file)) { + $template[$bank] = include($file); + } else { + $template[$bank] = array('en' => array()); + } + } + + // Check if new mappings with language specific alterations need to be created + if (!isset($map[$bank][$language_code])) { + if ($language_code != 'en' && isset($template[$bank][$language_code])) { + // Merge language specific mappings with the default transliteration table + $map[$bank][$language_code] = $template[$bank][$language_code] + $template[$bank]['en']; + } else { + $map[$bank][$language_code] = $template[$bank]['en']; + } + } + + $ord = $ord & 255; + + return (isset($map[$bank][$language_code][$ord]) ? $map[$bank][$language_code][$ord] : $unknown); + } + + // }}} +} + +// }}} \ No newline at end of file diff --git a/NEUE DATEIEN/includes/classes/observers/class.ceon_ask_a_question.php b/NEUE DATEIEN/includes/classes/observers/class.ceon_ask_a_question.php new file mode 100644 index 0000000..beff81b --- /dev/null +++ b/NEUE DATEIEN/includes/classes/observers/class.ceon_ask_a_question.php @@ -0,0 +1,50 @@ + + * @author Ceon Support + * @copyright Copyright 2008-2019 Ceon + * @copyright Copyright 2003-2007 Zen Cart Development Team + * @copyright Portions Copyright 2003 osCommerce + * @license http://www.zen-cart.com/license/2_0.txt GNU Public License V2.0 + * @version 2020 - 5.0.2 + **/ + +class zcObserverCeonAskAQuestion extends base +{ + public function __construct() { + // Notifier was added in Zen Cart 1.5.6 accounting for the change of the parameter products_id to pid in the file includes/modules/pages/ask_a_question/header_php.php. + $this->attach($this, array('NOTIFY_HEADER_START_ASK_A_QUESTION')); + } + + /** + * Notifier information: + * in ZC 1.5.7 (and all sub-versions): + * $zco_notifier->notify('NOTIFY_HEADER_START_ASK_A_QUESTION'); + **/ + public function notify_header_start_ask_a_question(&$cClass, $notifier) { + if (!(defined('CEON_URI_MAPPING_ENABLED') && CEON_URI_MAPPING_ENABLED == '1')) { + return; + } + if (isset($_GET['products_id']) && !isset($_GET['pid'])) { + $_GET['pid'] = $_GET['products_id']; + } + } + + public function updateNotifyHeaderStartAskAQuestion(&$cClass, $notifier) { + $this->notify_header_start_ask_a_question($cClass, $notifier); + } + + + /** + * This function is expected to load only if the camelcased notifier is not found or if installed in a version of Zen Cart that + * does not support loading the camelcased update{Notifier} function, i.e. pre-Zen Cart 1.5.3. Therefore the function is + * written from the perspective of such previous version and that the camelcased function exists. + **/ + public function update(&$cClass, $notifier) { + $this->notify_header_start_ask_a_question($cClass, $notifier); + } +} diff --git a/NEUE DATEIEN/includes/classes/observers/class.ceon_canonical.php b/NEUE DATEIEN/includes/classes/observers/class.ceon_canonical.php new file mode 100644 index 0000000..056df57 --- /dev/null +++ b/NEUE DATEIEN/includes/classes/observers/class.ceon_canonical.php @@ -0,0 +1,55 @@ + + * @author Ceon Support + * @copyright Copyright 2008-2020 Ceon + * @copyright Copyright 2003-2007 Zen Cart Development Team + * @copyright Portions Copyright 2003 osCommerce + * @license http://www.zen-cart.com/license/2_0.txt GNU Public License V2.0 + * @version 2020 - 5.1.0 + **/ + +class zcObserverCeonCanonical extends base +{ + public function __construct() { + // Notifier was added in Zen Cart 1.5.5 allowing removal of the includes/init_includes/overrides/init_canonical.php file. + $this->attach($this, array('NOTIFY_INIT_CANONICAL_FINAL')); + } + + /** + * Notifier information: + * in ZC 1.5.5 (and all sub-versions): + * $zco_notifier->notify ('NOTIFY_INIT_CANONICAL_FINAL', $current_page, $excludeParams, $canonicalLink); + * Same in ZC 1.5.6. + * Same in ZC 1.5.7. + **/ + public function notify_init_canonical_final(&$cClass, $notifier, $current_page, &$excludeParams, &$canonicalLink) { + if (isset($GLOBALS['ceon_uri_mapping_canonical_uri'])) { + // Use the canonical URI generated by Ceon URI Mapping + $canonicalLink = $GLOBALS['ceon_uri_mapping_canonical_uri']; + } + } + + /** + * Notifier information: + * in ZC 1.5.5 (and all sub-versions): + * $zco_notifier->notify ('NOTIFY_INIT_CANONICAL_FINAL', $current_page, $excludeParams, $canonicalLink); + * Same in ZC 1.5.6. + **/ + public function updateNotifyInitCanonicalFinal(&$cClass, $notifier, $current_page, &$excludeParams, &$canonicalLink) { + $this->notify_init_canonical_final($cClass, $notifier, $current_page, $excludeParams, $canonicalLink); + } + + /** + * This function is expected to load only if the camelcased notifier is not found or if installed in a version of Zen Cart that + * does not support loading the camelcased update{Notifier} function, i.e. pre-Zen Cart 1.5.3. Therefore the function is + * written from the perspective of such previous version and that the camelcased function exists. + **/ + public function update(&$cClass, $notifier, $current_page) { + $this->notify_init_canonical_final($cClass, $notifier, $current_page, $GLOBALS['excludeParams'], $GLOBALS['canonicalLink']); + } +} diff --git a/NEUE DATEIEN/includes/classes/observers/class.ceon_uri_mapping_link_build.php b/NEUE DATEIEN/includes/classes/observers/class.ceon_uri_mapping_link_build.php new file mode 100644 index 0000000..a6edc75 --- /dev/null +++ b/NEUE DATEIEN/includes/classes/observers/class.ceon_uri_mapping_link_build.php @@ -0,0 +1,65 @@ + + * @author torvista + * @copyright Copyright 2008-2019 Ceon + * @copyright Copyright 2003-2021 Zen Cart Development Team + * @copyright Portions Copyright 2003 osCommerce + * @link https://github.com/torvista/CEON-URI-Mapping + * @license http://www.zen-cart.com/license/2_0.txt GNU Public License V2.0 + * @version 2021 + */ +class CeonUriMappingLinkBuild extends base +{ + public function __construct() + { + $this->attach($this, array('NOTIFY_SEFU_INTERCEPT'));//OOP. Called from function zen_href_link (html_output.php) + + } + + public function notify_sefu_intercept(&$callingClass, $notifier, $p1, &$link, $page, $parameters, $connection, $add_session_id, $static, &$use_dir_ws_catalog)//& required for &$link to modify it inside here + { + if (!(defined('CEON_URI_MAPPING_ENABLED') && CEON_URI_MAPPING_ENABLED == 1 && $static == false)) { + return; + } + + static $ceon_uri_mapping_href_link_builder; + + if (!isset($ceon_uri_mapping_href_link_builder)) { + + require_once(DIR_WS_CLASSES . 'class.CeonURIMappingHREFLinkBuilder.php'); + + $ceon_uri_mapping_href_link_builder = new CeonURIMappingHREFLinkBuilder(); + } + + $temp_link = HTTP_SERVER; + + if ($connection == 'SSL' && ENABLE_SSL == 'true') { + $temp_link = HTTPS_SERVER; + } + + if ($ceon_uri_mapping_href_link_builder->buildHREFLink($temp_link, $page, $parameters, $connection, $add_session_id)) { + $link = $ceon_uri_mapping_href_link_builder->getHREFLink(); + } + } + + public function updateNotifySefuIntercept(&$callingClass, $notifier, $p1, &$link, $page, $parameters, $connection, $add_session_id, $static, &$use_dir_ws_catalog)//& required for &$link to modify it inside here + { + $this->notify_sefu_intercept($callingClass, $notifier, $p1, $link, $page, $parameters, $connection, $add_session_id, $static, $use_dir_ws_catalog); + } + + // Additional parameters are not provided a default value because this notifier is not expected for less than Zen Cart 1.5.3 and if it is used then it would need to address the additional parameters. + public function update(&$callingClass, $notifier, $p1, &$link, $page, $parameters, $connection, $add_session_id, $static, &$use_dir_ws_catalog)//& required for &$link to modify it inside here + { + if (!(defined('CEON_URI_MAPPING_ENABLED') && CEON_URI_MAPPING_ENABLED == 1 && $static == false)) { + //trigger_error('closed', E_USER_WARNING); + return; + } + + $this->notify_sefu_intercept($callingClass, $notifier, $p1, $link, $page, $parameters, $connection, $add_session_id, $static, $use_dir_ws_catalog); + } +} \ No newline at end of file diff --git a/NEUE DATEIEN/includes/classes/transliteration/x00.php b/NEUE DATEIEN/includes/classes/transliteration/x00.php new file mode 100644 index 0000000..067de0f --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/x00.php @@ -0,0 +1,19 @@ + array(0x80 => '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', + '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', + ' ', '!', 'C/', 'PS', '$?', 'Y=', '|', 'SS', '"', '(c)', 'a', '<<', '!', '', '(r)', '-', + 'deg', '+-', '2', '3', '\'', 'u', 'P', '*', ',', '1', 'o', '>>', '1/4', '1/2', '3/4', '?', + 'A', 'A', 'A', 'A', 'A', 'A', 'AE', 'C', 'E', 'E', 'E', 'E', 'I', 'I', 'I', 'I', + 'D', 'N', 'O', 'O', 'O', 'O', 'O', 'x', 'O', 'U', 'U', 'U', 'U', 'Y', 'Th', 'ss', + 'a', 'a', 'a', 'a', 'a', 'a', 'ae', 'c', 'e', 'e', 'e', 'e', 'i', 'i', 'i', 'i', + 'd', 'n', 'o', 'o', 'o', 'o', 'o', '/', 'o', 'u', 'u', 'u', 'u', 'y', 'th', 'y'), + 'da' => array(0xC5 => 'Aa', 0xC6 => 'Ae', 0xD8 => 'Oe', 0xE5 => 'aa', 0xE6 => 'ae', 0xF8 => 'oe'), + 'de' => array(0xC4 => 'Ae', 0xD6 => 'Oe', 0xDC => 'Ue', 0xE4 => 'ae', 0xF6 => 'oe', 0xFC => 'ue', 0xDF => 'ss'), + 'es' => array(0xE1 => 'a', 0xE9 => 'e', 0xED => 'i', 0xF3 => 'o', 0xFA => 'u', 0xF1 => 'n'), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/x01.php b/NEUE DATEIEN/includes/classes/transliteration/x01.php new file mode 100644 index 0000000..b647bcc --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/x01.php @@ -0,0 +1,21 @@ + array('A', 'a', 'A', 'a', 'A', 'a', 'C', 'c', 'C', 'c', 'C', 'c', 'C', 'c', 'D', 'd', + 'D', 'd', 'E', 'e', 'E', 'e', 'E', 'e', 'E', 'e', 'E', 'e', 'G', 'g', 'G', 'g', + 'G', 'g', 'G', 'g', 'H', 'h', 'H', 'h', 'I', 'i', 'I', 'i', 'I', 'i', 'I', 'i', + 'I', 'i', 'IJ', 'ij', 'J', 'j', 'K', 'k', 'k', 'L', 'l', 'L', 'l', 'L', 'l', 'L', + 'l', 'L', 'l', 'N', 'n', 'N', 'n', 'N', 'n', '\'n', 'NG', 'ng', 'O', 'o', 'O', 'o', + 'O', 'o', 'OE', 'oe', 'R', 'r', 'R', 'r', 'R', 'r', 'S', 's', 'S', 's', 'S', 's', + 'S', 's', 'T', 't', 'T', 't', 'T', 't', 'U', 'u', 'U', 'u', 'U', 'u', 'U', 'u', + 'U', 'u', 'U', 'u', 'W', 'w', 'Y', 'y', 'Y', 'Z', 'z', 'Z', 'z', 'Z', 'z', 's', + 'b', 'B', 'B', 'b', '6', '6', 'O', 'C', 'c', 'D', 'D', 'D', 'd', 'd', '3', '@', + 'E', 'F', 'f', 'G', 'G', 'hv', 'I', 'I', 'K', 'k', 'l', 'l', 'W', 'N', 'n', 'O', + 'O', 'o', 'OI', 'oi', 'P', 'p', 'YR', '2', '2', 'SH', 'sh', 't', 'T', 't', 'T', 'U', + 'u', 'Y', 'V', 'Y', 'y', 'Z', 'z', 'ZH', 'ZH', 'zh', 'zh', '2', '5', '5', 'ts', 'w', + '|', '||', '|=', '!', 'DZ', 'Dz', 'dz', 'LJ', 'Lj', 'lj', 'NJ', 'Nj', 'nj', 'A', 'a', 'I', + 'i', 'O', 'o', 'U', 'u', 'U', 'u', 'U', 'u', 'U', 'u', 'U', 'u', '@', 'A', 'a', + 'A', 'a', 'AE', 'ae', 'G', 'g', 'G', 'g', 'K', 'k', 'O', 'o', 'O', 'o', 'ZH', 'zh', + 'j', 'DZ', 'D', 'dz', 'G', 'g', 'HV', 'W', 'N', 'n', 'A', 'a', 'AE', 'ae', 'O', 'o'), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/x02.php b/NEUE DATEIEN/includes/classes/transliteration/x02.php new file mode 100644 index 0000000..4783ae8 --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/x02.php @@ -0,0 +1,21 @@ + array('A', 'a', 'A', 'a', 'E', 'e', 'E', 'e', 'I', 'i', 'I', 'i', 'O', 'o', 'O', 'o', + 'R', 'r', 'R', 'r', 'U', 'u', 'U', 'u', 'S', 's', 'T', 't', 'Y', 'y', 'H', 'h', + 'N', 'd', 'OU', 'ou', 'Z', 'z', 'A', 'a', 'E', 'e', 'O', 'o', 'O', 'o', 'O', 'o', + 'O', 'o', 'Y', 'y', 'l', 'n', 't', 'j', 'db', 'qp', 'A', 'C', 'c', 'L', 'T', 's', + 'z', '?', '?', 'B', 'U', 'V', 'E', 'e', 'J', 'j', 'Q', 'q', 'R', 'r', 'Y', 'y', + 'a', 'a', 'a', 'b', 'o', 'c', 'd', 'd', 'e', '@', '@', 'e', 'e', 'e', 'e', 'j', + 'g', 'g', 'g', 'g', 'u', 'Y', 'h', 'h', 'i', 'i', 'I', 'l', 'l', 'l', 'lZ', 'W', + 'W', 'm', 'n', 'n', 'n', 'o', 'OE', 'O', 'F', 'R', 'R', 'R', 'R', 'r', 'r', 'R', + 'R', 'R', 's', 'S', 'j', 'S', 'S', 't', 't', 'U', 'U', 'v', '^', 'W', 'Y', 'Y', + 'z', 'z', 'Z', 'Z', '?', '?', '?', 'C', '@', 'B', 'E', 'G', 'H', 'j', 'k', 'L', + 'q', '?', '?', 'dz', 'dZ', 'dz', 'ts', 'tS', 'tC', 'fN', 'ls', 'lz', 'WW', ']]', 'h', 'h', + 'k', 'h', 'j', 'r', 'r', 'r', 'r', 'w', 'y', '\'', '"', '`', '\'', '`', '`', '\'', + '?', '?', '<', '>', '^', 'V', '^', 'V', '\'', '-', '/', '\\', ',', '_', '\\', '/', + ':', '.', '`', '\'', '^', 'V', '+', '-', 'V', '.', '@', ',', '~', '"', 'R', 'X', + 'G', 'l', 's', 'x', '?', '', '', '', '', '', '', '', 'V', '=', '"', NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/x03.php b/NEUE DATEIEN/includes/classes/transliteration/x03.php new file mode 100644 index 0000000..14d4ba2 --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/x03.php @@ -0,0 +1,23 @@ + array('', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', + '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', + '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', + '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', + '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + '', '', '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, '\'', ',', NULL, NULL, NULL, NULL, '', NULL, NULL, NULL, '?', NULL, + NULL, NULL, NULL, NULL, '', '', 'A', ';', 'E', 'I', 'I', NULL, 'O', NULL, 'U', 'O', + 'I', 'A', 'V', 'G', 'D', 'E', 'Z', 'I', 'Th', 'I', 'K', 'L', 'M', 'N', 'X', 'O', + 'P', 'R', NULL, 'S', 'T', 'Y', 'F', 'H', 'Ps', 'O', 'I', 'Y', 'a', 'e', 'i', 'i', + 'y', 'a', 'v', 'g', 'd', 'e', 'z', 'i', 'th', 'i', 'k', 'l', 'm', 'n', 'x', 'o', + 'p', 'r', 's', 's', 't', 'y', 'f', 'h', 'ps', 'o', 'i', 'y', 'o', 'y', 'o', NULL, + 'b', 'th', 'U', 'U', 'U', 'ph', 'p', '&', NULL, NULL, 'St', 'st', 'W', 'w', 'Q', 'q', + 'Sp', 'sp', 'Sh', 'sh', 'F', 'f', 'Kh', 'kh', 'H', 'h', 'G', 'g', 'CH', 'ch', 'Ti', 'ti', + 'k', 'r', 'c', 'j', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/x04.php b/NEUE DATEIEN/includes/classes/transliteration/x04.php new file mode 100644 index 0000000..403366d --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/x04.php @@ -0,0 +1,64 @@ + array('Ie', 'Io', 'Dj', 'Gj', 'Ie', 'Dz', 'I', 'Yi', 'J', 'Lj', 'Nj', 'Tsh', 'Kj', 'I', 'U', 'Dzh', + 'A', 'B', 'V', 'G', 'D', 'Ie', 'Zh', 'Z', 'I', 'I', 'K', 'L', 'M', 'N', 'O', 'P', + 'R', 'S', 'T', 'U', 'F', 'Kh', 'Ts', 'Ch', 'Sh', 'Shch', '', 'Y', '\'', 'E', 'Iu', 'Ia', + 'a', 'b', 'v', 'gh', 'd', 'ie', 'zh', 'z', 'i', 'i', 'k', 'l', 'm', 'n', 'o', 'p', + 'r', 's', 't', 'u', 'f', 'kh', 'ts', 'ch', 'sh', 'shch', '', 'y', '\'', 'e', 'iu', 'ia', + 'ie', 'io', 'dj', 'gj', 'ie', 'dz', 'i', 'yi', 'j', 'lj', 'nj', 'tsh', 'kj', 'i', 'u', 'dzh', + 'O', 'o', 'E', 'e', 'Ie', 'ie', 'E', 'e', 'Ie', 'ie', 'O', 'o', 'Io', 'io', 'Ks', 'ks', + 'Ps', 'ps', 'F', 'f', 'Y', 'y', 'Y', 'y', 'u', 'u', 'O', 'o', 'O', 'o', 'Ot', 'ot', + 'Q', 'q', '*1000*', '', '', '', '', NULL, '*100.000*', '*1.000.000*', NULL, NULL, '"', '"', 'R\'', 'r\'', + 'G\'', 'g\'', 'G\'', 'g\'', 'G\'', 'g\'', 'Zh\'', 'zh\'', 'Z\'', 'z\'', 'K\'', 'k\'', 'K\'', 'k\'', 'K\'', 'k\'', + 'K\'', 'k\'', 'N\'', 'n\'', 'Ng', 'ng', 'P\'', 'p\'', 'Kh', 'kh', 'S\'', 's\'', 'T\'', 't\'', 'U', 'u', + 'U\'', 'u\'', 'Kh\'', 'kh\'', 'Tts', 'tts', 'Ch\'', 'ch\'', 'Ch\'', 'ch\'', 'H', 'h', 'Ch', 'ch', 'Ch\'', 'ch\'', + '`', 'Zh', 'zh', 'K\'', 'k\'', NULL, NULL, 'N\'', 'n\'', NULL, NULL, 'Ch', 'ch', NULL, NULL, NULL, + 'a', 'a', 'A', 'a', 'Ae', 'ae', 'Ie', 'ie', '@', '@', '@', '@', 'Zh', 'zh', 'Z', 'z', + 'Dz', 'dz', 'I', 'i', 'I', 'i', 'O', 'o', 'O', 'o', 'O', 'o', 'E', 'e', 'U', 'u', + 'U', 'u', 'U', 'u', 'Ch', 'ch', NULL, NULL, 'Y', 'y', NULL, NULL, NULL, NULL, NULL), + 'kk' => array( + 0xD8 => 'A', // Ә + 0xD9 => 'a', // ә + 0x92 => 'G', // Ғ + 0x93 => 'g', // ғ + 0x9A => 'Q', // Қ + 0x9B => 'q', // қ + ), + 'uk' => array( + 0x90 => 'G', + 0x91 => 'g', + 0x04 => 'YE', + 0x54 => 'ye', + 0x18 => 'Y', + 0x38 => 'y', + ), + 'kg' => array( + 0x01 => 'E', + 0x16 => 'C', + 0x19 => 'J', + 0x25 => 'X', + 0x26 => 'TS', + 0x29 => 'SCH', + 0x2E => 'JU', + 0x2F => 'JA', + 0x36 => 'c', + 0x39 => 'j', + 0x45 => 'x', + 0x46 => 'ts', + 0x49 => 'sch', + 0x4E => 'ju', + 0x4F => 'ja', + 0x51 => 'e', + 0xA2 => 'H', + 0xA3 => 'h', + 0xAE => 'W', + 0xAF => 'w', + 0xE8 => 'Q', + 0xE9 => 'q', + ), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/x05.php b/NEUE DATEIEN/includes/classes/transliteration/x05.php new file mode 100644 index 0000000..ac69e8d --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/x05.php @@ -0,0 +1,21 @@ + array(NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, 'A', 'B', 'G', 'D', 'E', 'Z', 'E', 'E', 'T`', 'Zh', 'I', 'L', 'Kh', 'Ts', 'K', + 'H', 'Dz', 'Gh', 'Ch', 'M', 'Y', 'N', 'Sh', 'O', 'Ch`', 'P', 'J', 'Rh', 'S', 'V', 'T', + 'R', 'Ts`', 'W', 'P`', 'K`', 'O', 'F', NULL, NULL, '<', '\'', '/', '!', ',', '?', '.', + NULL, 'a', 'b', 'g', 'd', 'e', 'z', 'e', 'e', 't`', 'zh', 'i', 'l', 'kh', 'ts', 'k', + 'h', 'dz', 'gh', 'ch', 'm', 'y', 'n', 'sh', 'o', 'ch`', 'p', 'j', 'rh', 's', 'v', 't', + 'r', 'ts`', 'w', 'p`', 'k`', 'o', 'f', 'ew', NULL, '.', '-', NULL, NULL, NULL, NULL, NULL, + NULL, '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', + '', '', NULL, '', '', '', '', '', '', '', '', '', '', '', '', '', + '@', 'e', 'a', 'o', 'i', 'e', 'e', 'a', 'a', 'o', NULL, 'u', '\'', '', '', '', + '', '', '', ':', '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + '', 'b', 'g', 'd', 'h', 'v', 'z', 'kh', 't', 'y', 'k', 'k', 'l', 'm', 'm', 'n', + 'n', 's', '`', 'p', 'p', 'ts', 'ts', 'q', 'r', 'sh', 't', NULL, NULL, NULL, NULL, NULL, + 'V', 'oy', 'i', '\'', '"', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/x06.php b/NEUE DATEIEN/includes/classes/transliteration/x06.php new file mode 100644 index 0000000..af349fb --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/x06.php @@ -0,0 +1,22 @@ + array(NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, ',', NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, ';', NULL, NULL, NULL, '?', + NULL, '', 'a', 'a', 'w', 'a', 'y', 'a', 'b', 't', 't', 'th', 'j', 'h', 'kh', 'd', + 'dh', 'r', 'z', 's', 'sh', 's', 'd', 't', 'z', '`', 'gh', NULL, NULL, NULL, NULL, NULL, + '', 'f', 'q', 'k', 'l', 'm', 'n', 'h', 'w', 'y', 'y', 'an', 'un', 'in', 'a', 'u', + 'i', 'W', '', '', '\'', '\'', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '%', ',', '.', '*', NULL, NULL, + '', '\'', '\'', '\'', '', '\'', '\'w', '\'u', '\'y', 'tt', 'tth', 'b', 't', 'T', 'p', 'th', + 'bh', '\'h', 'H', 'ny', 'dy', 'H', 'ch', 'cch', 'dd', 'D', 'D', 'Dt', 'dh', 'ddh', 'd', 'D', + 'D', 'rr', 'R', 'R', 'R', 'R', 'R', 'R', 'zh', 'R', 'S', 'S', 'S', 'S', 'S', 'T', + 'GH', 'F', 'F', 'F', 'v', 'f', 'ph', 'Q', 'Q', 'k', 'k', 'K', 'K', 'ng', 'K', 'g', + 'G', 'N', 'G', 'G', 'G', 'L', 'L', 'L', 'L', 'N', 'N', 'N', 'N', 'N', 'h', 'Ch', + 'hy', 'h', 'H', '@', 'W', 'oe', 'oe', 'u', 'yu', 'yu', 'W', 'v', 'y', 'Y', 'Y', 'W', + '', '', 'y', 'y\'', '.', 'ae', '', '', '', '', '', '', '', '@', '#', '', + '', '', '', '', '', '', '', '', '', '^', '', '', '', '', NULL, NULL, + '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'Sh', 'D', 'Gh', '&', '+m'), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/x07.php b/NEUE DATEIEN/includes/classes/transliteration/x07.php new file mode 100644 index 0000000..6e33272 --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/x07.php @@ -0,0 +1,21 @@ + array('//', '/', ',', '!', '!', '-', ',', ',', ';', '?', '~', '{', '}', '*', NULL, '', + '\'', '', 'b', 'g', 'g', 'd', 'd', 'h', 'w', 'z', 'H', 't', 't', 'y', 'yh', 'k', + 'l', 'm', 'n', 's', 's', '`', 'p', 'p', 'S', 'q', 'r', 'sh', 't', NULL, NULL, NULL, + 'a', 'a', 'a', 'A', 'A', 'A', 'e', 'e', 'e', 'E', 'i', 'i', 'u', 'u', 'u', 'o', + '', '`', '\'', '', '', 'X', 'Q', '@', '@', '|', '+', NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + 'h', 'sh', 'n', 'r', 'b', 'L', 'k', '\'', 'v', 'm', 'f', 'dh', 'th', 'l', 'g', 'ny', + 's', 'd', 'z', 't', 'y', 'p', 'j', 'ch', 'tt', 'hh', 'kh', 'th', 'z', 'sh', 's', 'd', + 't', 'z', '`', 'gh', 'q', 'w', 'a', 'aa', 'i', 'ee', 'u', 'oo', 'e', 'ey', 'o', 'oa', + '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/x09.php b/NEUE DATEIEN/includes/classes/transliteration/x09.php new file mode 100644 index 0000000..583485f --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/x09.php @@ -0,0 +1,21 @@ + array(NULL, 'N', 'N', 'H', NULL, 'a', 'aa', 'i', 'ii', 'u', 'uu', 'R', 'L', 'eN', 'e', 'e', + 'ai', 'oN', 'o', 'o', 'au', 'k', 'kh', 'g', 'gh', 'ng', 'c', 'ch', 'j', 'jh', 'ny', 'tt', + 'tth', 'dd', 'ddh', 'nn', 't', 'th', 'd', 'dh', 'n', 'nnn', 'p', 'ph', 'b', 'bh', 'm', 'y', + 'r', 'rr', 'l', 'l', 'lll', 'v', 'sh', 'ss', 's', 'h', NULL, NULL, '\'', '\'', 'aa', 'i', + 'ii', 'u', 'uu', 'R', 'RR', 'eN', 'e', 'e', 'ai', 'oN', 'o', 'o', 'au', '', NULL, NULL, + 'AUM', '\'', '\'', '`', '\'', NULL, NULL, NULL, 'q', 'khh', 'ghh', 'z', 'dddh', 'rh', 'f', 'yy', + 'RR', 'LL', 'L', 'LL', ' / ', ' // ', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', + '.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, 'N', 'N', 'H', NULL, 'a', 'aa', 'i', 'ii', 'u', 'uu', 'R', 'RR', NULL, NULL, 'e', + 'ai', NULL, NULL, 'o', 'au', 'k', 'kh', 'g', 'gh', 'ng', 'c', 'ch', 'j', 'jh', 'ny', 'tt', + 'tth', 'dd', 'ddh', 'nn', 't', 'th', 'd', 'dh', 'n', NULL, 'p', 'ph', 'b', 'bh', 'm', 'y', + 'r', NULL, 'l', NULL, NULL, NULL, 'sh', 'ss', 's', 'h', NULL, NULL, '\'', NULL, 'aa', 'i', + 'ii', 'u', 'uu', 'R', 'RR', NULL, NULL, 'e', 'ai', NULL, NULL, 'o', 'au', '', NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, '+', NULL, NULL, NULL, NULL, 'rr', 'rh', NULL, 'yy', + 'RR', 'LL', 'L', 'LL', NULL, NULL, '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', + 'r\'', 'r`', 'Rs', 'Rs', '1/', '2/', '3/', '4/', ' 1 - 1/', '/16', '', NULL, NULL, NULL, NULL), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/x0a.php b/NEUE DATEIEN/includes/classes/transliteration/x0a.php new file mode 100644 index 0000000..8afeb89 --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/x0a.php @@ -0,0 +1,21 @@ + array(NULL, NULL, 'N', NULL, NULL, 'a', 'aa', 'i', 'ii', 'u', 'uu', NULL, NULL, NULL, NULL, 'ee', + 'ai', NULL, NULL, 'oo', 'au', 'k', 'kh', 'g', 'gh', 'ng', 'c', 'ch', 'j', 'jh', 'ny', 'tt', + 'tth', 'dd', 'ddh', 'nn', 't', 'th', 'd', 'dh', 'n', NULL, 'p', 'ph', 'b', 'bb', 'm', 'y', + 'r', NULL, 'l', 'll', NULL, 'v', 'sh', NULL, 's', 'h', NULL, NULL, '\'', NULL, 'aa', 'i', + 'ii', 'u', 'uu', NULL, NULL, NULL, NULL, 'ee', 'ai', NULL, NULL, 'oo', 'au', '', NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'khh', 'ghh', 'z', 'rr', NULL, 'f', NULL, + NULL, NULL, NULL, NULL, NULL, NULL, '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', + 'N', 'H', '', '', 'G.E.O.', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, 'N', 'N', 'H', NULL, 'a', 'aa', 'i', 'ii', 'u', 'uu', 'R', NULL, 'eN', NULL, 'e', + 'ai', 'oN', NULL, 'o', 'au', 'k', 'kh', 'g', 'gh', 'ng', 'c', 'ch', 'j', 'jh', 'ny', 'tt', + 'tth', 'dd', 'ddh', 'nn', 't', 'th', 'd', 'dh', 'n', NULL, 'p', 'ph', 'b', 'bh', 'm', 'ya', + 'r', NULL, 'l', 'll', NULL, 'v', 'sh', 'ss', 's', 'h', NULL, NULL, '\'', '\'', 'aa', 'i', + 'ii', 'u', 'uu', 'R', 'RR', 'eN', NULL, 'e', 'ai', 'oN', NULL, 'o', 'au', '', NULL, NULL, + 'AUM', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + 'RR', NULL, NULL, NULL, NULL, NULL, '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/x0b.php b/NEUE DATEIEN/includes/classes/transliteration/x0b.php new file mode 100644 index 0000000..7569178 --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/x0b.php @@ -0,0 +1,21 @@ + array(NULL, 'N', 'N', 'H', NULL, 'a', 'aa', 'i', 'ii', 'u', 'uu', 'R', 'L', NULL, NULL, 'e', + 'ai', NULL, NULL, 'o', 'au', 'k', 'kh', 'g', 'gh', 'ng', 'c', 'ch', 'j', 'jh', 'ny', 'tt', + 'tth', 'dd', 'ddh', 'nn', 't', 'th', 'd', 'dh', 'n', NULL, 'p', 'ph', 'b', 'bh', 'm', 'y', + 'r', NULL, 'l', 'll', NULL, '', 'sh', 'ss', 's', 'h', NULL, NULL, '\'', '\'', 'aa', 'i', + 'ii', 'u', 'uu', 'R', NULL, NULL, NULL, 'e', 'ai', NULL, NULL, 'o', 'au', '', NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, '+', '+', NULL, NULL, NULL, NULL, 'rr', 'rh', NULL, 'yy', + 'RR', 'LL', NULL, NULL, NULL, NULL, '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', + '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, 'N', 'H', NULL, 'a', 'aa', 'i', 'ii', 'u', 'uu', NULL, NULL, NULL, 'e', 'ee', + 'ai', NULL, 'o', 'oo', 'au', 'k', NULL, NULL, NULL, 'ng', 'c', NULL, 'j', NULL, 'ny', 'tt', + NULL, NULL, NULL, 'nn', 't', NULL, NULL, NULL, 'n', 'nnn', 'p', NULL, NULL, NULL, 'm', 'y', + 'r', 'rr', 'l', 'll', 'lll', 'v', NULL, 'ss', 's', 'h', NULL, NULL, NULL, NULL, 'aa', 'i', + 'ii', 'u', 'uu', NULL, NULL, NULL, 'e', 'ee', 'ai', NULL, 'o', 'oo', 'au', '', NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, '+', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', + '+10+', '+100+', '+1000+', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/x0c.php b/NEUE DATEIEN/includes/classes/transliteration/x0c.php new file mode 100644 index 0000000..1df34dc --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/x0c.php @@ -0,0 +1,21 @@ + array(NULL, 'N', 'N', 'H', NULL, 'a', 'aa', 'i', 'ii', 'u', 'uu', 'R', 'L', NULL, 'e', 'ee', + 'ai', NULL, 'o', 'oo', 'au', 'k', 'kh', 'g', 'gh', 'ng', 'c', 'ch', 'j', 'jh', 'ny', 'tt', + 'tth', 'dd', 'ddh', 'nn', 't', 'th', 'd', 'dh', 'n', NULL, 'p', 'ph', 'b', 'bh', 'm', 'y', + 'r', 'rr', 'l', 'll', NULL, 'v', 'sh', 'ss', 's', 'h', NULL, NULL, NULL, NULL, 'aa', 'i', + 'ii', 'u', 'uu', 'R', 'RR', NULL, 'e', 'ee', 'ai', NULL, 'o', 'oo', 'au', '', NULL, NULL, + NULL, NULL, NULL, NULL, NULL, '+', '+', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + 'RR', 'LL', NULL, NULL, NULL, NULL, '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, 'N', 'H', NULL, 'a', 'aa', 'i', 'ii', 'u', 'uu', 'R', 'L', NULL, 'e', 'ee', + 'ai', NULL, 'o', 'oo', 'au', 'k', 'kh', 'g', 'gh', 'ng', 'c', 'ch', 'j', 'jh', 'ny', 'tt', + 'tth', 'dd', 'ddh', 'nn', 't', 'th', 'd', 'dh', 'n', NULL, 'p', 'ph', 'b', 'bh', 'm', 'y', + 'r', 'rr', 'l', 'll', NULL, 'v', 'sh', 'ss', 's', 'h', NULL, NULL, NULL, NULL, 'aa', 'i', + 'ii', 'u', 'uu', 'R', 'RR', NULL, 'e', 'ee', 'ai', NULL, 'o', 'oo', 'au', '', NULL, NULL, + NULL, NULL, NULL, NULL, NULL, '+', '+', NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'lll', NULL, + 'RR', 'LL', NULL, NULL, NULL, NULL, '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/x0d.php b/NEUE DATEIEN/includes/classes/transliteration/x0d.php new file mode 100644 index 0000000..1b906a9 --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/x0d.php @@ -0,0 +1,21 @@ + array(NULL, NULL, 'N', 'H', NULL, 'a', 'aa', 'i', 'ii', 'u', 'uu', 'R', 'L', NULL, 'e', 'ee', + 'ai', NULL, 'o', 'oo', 'au', 'k', 'kh', 'g', 'gh', 'ng', 'c', 'ch', 'j', 'jh', 'ny', 'tt', + 'tth', 'dd', 'ddh', 'nn', 't', 'th', 'd', 'dh', 'n', NULL, 'p', 'ph', 'b', 'bh', 'm', 'y', + 'r', 'rr', 'l', 'll', 'lll', 'v', 'sh', 'ss', 's', 'h', NULL, NULL, NULL, NULL, 'aa', 'i', + 'ii', 'u', 'uu', 'R', NULL, NULL, 'e', 'ee', 'ai', '', 'o', 'oo', 'au', '', NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, '+', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + 'RR', 'LL', NULL, NULL, NULL, NULL, '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, 'N', 'H', NULL, 'a', 'aa', 'ae', 'aae', 'i', 'ii', 'u', 'uu', 'R', 'RR', 'L', + 'LL', 'e', 'ee', 'ai', 'o', 'oo', 'au', NULL, NULL, NULL, 'k', 'kh', 'g', 'gh', 'ng', 'nng', + 'c', 'ch', 'j', 'jh', 'ny', 'jny', 'nyj', 'tt', 'tth', 'dd', 'ddh', 'nn', 'nndd', 't', 'th', 'd', + 'dh', 'n', NULL, 'nd', 'p', 'ph', 'b', 'bh', 'm', 'mb', 'y', 'r', NULL, 'l', NULL, NULL, + 'v', 'sh', 'ss', 's', 'h', 'll', 'f', NULL, NULL, NULL, '', NULL, NULL, NULL, NULL, 'aa', + 'ae', 'aae', 'i', 'ii', 'u', NULL, 'uu', NULL, 'R', 'e', 'ee', 'ai', 'o', 'oo', 'au', 'L', + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, 'RR', 'LL', ' . ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/x0e.php b/NEUE DATEIEN/includes/classes/transliteration/x0e.php new file mode 100644 index 0000000..f4d3065 --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/x0e.php @@ -0,0 +1,21 @@ + array(NULL, 'k', 'kh', 'kh', 'kh', 'kh', 'kh', 'ng', 'cch', 'ch', 'ch', 'ch', 'ch', 'y', 'd', 't', + 'th', 'th', 'th', 'n', 'd', 't', 'th', 'th', 'th', 'n', 'b', 'p', 'ph', 'f', 'ph', 'f', + 'ph', 'm', 'y', 'r', 'R', 'l', 'L', 'w', 's', 's', 's', 'h', 'l', '`', 'h', '~', + 'a', 'a', 'aa', 'am', 'i', 'ii', 'ue', 'uue', 'u', 'uu', '\'', NULL, NULL, NULL, NULL, 'Bh.', + 'e', 'ae', 'o', 'ai', 'ai', 'ao', '+', '', '', '', '', '', '', 'M', '', ' * ', + '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', ' // ', ' /// ', NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, 'k', 'kh', NULL, 'kh', NULL, NULL, 'ng', 'ch', NULL, 's', NULL, NULL, 'ny', NULL, NULL, + NULL, NULL, NULL, NULL, 'd', 'h', 'th', 'th', NULL, 'n', 'b', 'p', 'ph', 'f', 'ph', 'f', + NULL, 'm', 'y', 'r', NULL, 'l', NULL, 'w', NULL, NULL, 's', 'h', NULL, '`', '', '~', + 'a', '', 'aa', 'am', 'i', 'ii', 'y', 'yy', 'u', 'uu', NULL, 'o', 'l', 'ny', NULL, NULL, + 'e', 'ei', 'o', 'ay', 'ai', NULL, '+', NULL, '', '', '', '', '', 'M', NULL, NULL, + '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', NULL, NULL, 'hn', 'hm', NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/x0f.php b/NEUE DATEIEN/includes/classes/transliteration/x0f.php new file mode 100644 index 0000000..b2585b2 --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/x0f.php @@ -0,0 +1,21 @@ + array('AUM', '', '', '', '', '', '', '', ' // ', ' * ', '', '-', ' / ', ' / ', ' // ', ' -/ ', + ' +/ ', ' X/ ', ' /XX/ ', ' /X/ ', ',', '', '', '', '', '', '', '', '', '', '', '', + '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '.5', '1.5', '2.5', '3.5', '4.5', '5.5', + '6.5', '7.5', '8.5', '-.5', '+', '*', '^', '_', '', '~', NULL, ']', '[[', ']]', '', '', + 'k', 'kh', 'g', 'gh', 'ng', 'c', 'ch', 'j', NULL, 'ny', 'tt', 'tth', 'dd', 'ddh', 'nn', 't', + 'th', 'd', 'dh', 'n', 'p', 'ph', 'b', 'bh', 'm', 'ts', 'tsh', 'dz', 'dzh', 'w', 'zh', 'z', + '\'', 'y', 'r', 'l', 'sh', 'ssh', 's', 'h', 'a', 'kss', 'r', NULL, NULL, NULL, NULL, NULL, + NULL, 'aa', 'i', 'ii', 'u', 'uu', 'R', 'RR', 'L', 'LL', 'e', 'ee', 'o', 'oo', 'M', 'H', + 'i', 'ii', '', '', '', '', '', '', '', '', '', '', NULL, NULL, NULL, NULL, + 'k', 'kh', 'g', 'gh', 'ng', 'c', 'ch', 'j', NULL, 'ny', 'tt', 'tth', 'dd', 'ddh', 'nn', 't', + 'th', 'd', 'dh', 'n', 'p', 'ph', 'b', 'bh', 'm', 'ts', 'tsh', 'dz', 'dzh', 'w', 'zh', 'z', + '\'', 'y', 'r', 'l', 'sh', 'ss', 's', 'h', 'a', 'kss', 'w', 'y', 'r', NULL, 'X', ' :X: ', + ' /O/ ', ' /o/ ', ' \\o\\ ', ' (O) ', '', '', '', '', '', '', '', '', '', NULL, NULL, '', + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/x10.php b/NEUE DATEIEN/includes/classes/transliteration/x10.php new file mode 100644 index 0000000..9f6f294 --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/x10.php @@ -0,0 +1,21 @@ + array('k', 'kh', 'g', 'gh', 'ng', 'c', 'ch', 'j', 'jh', 'ny', 'nny', 'tt', 'tth', 'dd', 'ddh', 'nn', + 'tt', 'th', 'd', 'dh', 'n', 'p', 'ph', 'b', 'bh', 'm', 'y', 'r', 'l', 'w', 's', 'h', + 'll', 'a', NULL, 'i', 'ii', 'u', 'uu', 'e', NULL, 'o', 'au', NULL, 'aa', 'i', 'ii', 'u', + 'uu', 'e', 'ai', NULL, NULL, NULL, 'N', '\'', ':', '', NULL, NULL, NULL, NULL, NULL, NULL, + '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', ' / ', ' // ', 'n*', 'r*', 'l*', 'e*', + 'sh', 'ss', 'R', 'RR', 'L', 'LL', 'R', 'RR', 'L', 'LL', NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + 'A', 'B', 'G', 'D', 'E', 'V', 'Z', 'T`', 'I', 'K', 'L', 'M', 'N', 'O', 'P', 'Zh', + 'R', 'S', 'T', 'U', 'P`', 'K`', 'G\'', 'Q', 'Sh', 'Ch`', 'C`', 'Z\'', 'C', 'Ch', 'X', 'J', + 'H', 'E', 'Y', 'W', 'Xh', 'OE', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + 'a', 'b', 'g', 'd', 'e', 'v', 'z', 't`', 'i', 'k', 'l', 'm', 'n', 'o', 'p', 'zh', + 'r', 's', 't', 'u', 'p`', 'k`', 'g\'', 'q', 'sh', 'ch`', 'c`', 'z\'', 'c', 'ch', 'x', 'j', + 'h', 'e', 'y', 'w', 'xh', 'oe', 'f', NULL, NULL, NULL, NULL, ' // ', NULL, NULL, NULL), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/x11.php b/NEUE DATEIEN/includes/classes/transliteration/x11.php new file mode 100644 index 0000000..0123e98 --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/x11.php @@ -0,0 +1,21 @@ + array('g', 'gg', 'n', 'd', 'dd', 'r', 'm', 'b', 'bb', 's', 'ss', '', 'j', 'jj', 'c', 'k', + 't', 'p', 'h', 'ng', 'nn', 'nd', 'nb', 'dg', 'rn', 'rr', 'rh', 'rN', 'mb', 'mN', 'bg', 'bn', + '', 'bs', 'bsg', 'bst', 'bsb', 'bss', 'bsj', 'bj', 'bc', 'bt', 'bp', 'bN', 'bbN', 'sg', 'sn', 'sd', + 'sr', 'sm', 'sb', 'sbg', 'sss', 's', 'sj', 'sc', 'sk', 'st', 'sp', 'sh', '', '', '', '', + 'Z', 'g', 'd', 'm', 'b', 's', 'Z', '', 'j', 'c', 't', 'p', 'N', 'j', '', '', + '', '', 'ck', 'ch', '', '', 'pb', 'pN', 'hh', 'Q', NULL, NULL, NULL, NULL, NULL, '', + '', 'a', 'ae', 'ya', 'yae', 'eo', 'e', 'yeo', 'ye', 'o', 'wa', 'wae', 'oe', 'yo', 'u', 'weo', + 'we', 'wi', 'yu', 'eu', 'yi', 'i', 'a-o', 'a-u', 'ya-o', 'ya-yo', 'eo-o', 'eo-u', 'eo-eu', 'yeo-o', 'yeo-u', 'o-eo', + 'o-e', 'o-ye', 'o-o', 'o-u', 'yo-ya', 'yo-yae', 'yo-yeo', 'yo-o', 'yo-i', 'u-a', 'u-ae', 'u-eo-eu', 'u-ye', 'u-u', 'yu-a', 'yu-eo', + 'yu-e', 'yu-yeo', 'yu-ye', 'yu-u', 'yu-i', 'eu-u', 'eu-eu', 'yi-u', 'i-a', 'i-ya', 'i-o', 'i-u', 'i-eu', 'i-U', 'U', 'U-eo', + 'U-u', 'U-i', 'UU', NULL, NULL, NULL, NULL, NULL, 'g', 'gg', 'gs', 'n', 'nj', 'nh', 'd', 'l', + 'lg', 'lm', 'lb', 'ls', 'lt', 'lp', 'lh', 'm', 'b', 'bs', 's', 'ss', 'ng', 'j', 'c', 'k', + 't', 'p', 'h', 'gl', 'gsg', 'ng', 'nd', 'ns', 'nZ', 'nt', 'dg', 'tl', 'lgs', 'ln', 'ld', 'lth', + 'll', 'lmg', 'lms', 'lbs', 'lbh', 'rNp', 'lss', 'lZ', 'lk', 'lQ', 'mg', 'ml', 'mb', 'ms', 'mss', 'mZ', + 'mc', 'mh', 'mN', 'bl', 'bp', 'ph', 'pN', 'sg', 'sd', 'sl', 'sb', 'Z', 'g', 'ss', '', 'kh', + 'N', 'Ns', 'NZ', 'pb', 'pN', 'hn', 'hl', 'hm', 'hb', 'Q', NULL, NULL, NULL, NULL, NULL), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/x12.php b/NEUE DATEIEN/includes/classes/transliteration/x12.php new file mode 100644 index 0000000..1720687 --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/x12.php @@ -0,0 +1,21 @@ + array('ha', 'hu', 'hi', 'haa', 'hee', 'he', 'ho', NULL, 'la', 'lu', 'li', 'laa', 'lee', 'le', 'lo', 'lwa', + 'hha', 'hhu', 'hhi', 'hhaa', 'hhee', 'hhe', 'hho', 'hhwa', 'ma', 'mu', 'mi', 'maa', 'mee', 'me', 'mo', 'mwa', + 'sza', 'szu', 'szi', 'szaa', 'szee', 'sze', 'szo', 'szwa', 'ra', 'ru', 'ri', 'raa', 'ree', 're', 'ro', 'rwa', + 'sa', 'su', 'si', 'saa', 'see', 'se', 'so', 'swa', 'sha', 'shu', 'shi', 'shaa', 'shee', 'she', 'sho', 'shwa', + 'qa', 'qu', 'qi', 'qaa', 'qee', 'qe', 'qo', NULL, 'qwa', NULL, 'qwi', 'qwaa', 'qwee', 'qwe', NULL, NULL, + 'qha', 'qhu', 'qhi', 'qhaa', 'qhee', 'qhe', 'qho', NULL, 'qhwa', NULL, 'qhwi', 'qhwaa', 'qhwee', 'qhwe', NULL, NULL, + 'ba', 'bu', 'bi', 'baa', 'bee', 'be', 'bo', 'bwa', 'va', 'vu', 'vi', 'vaa', 'vee', 've', 'vo', 'vwa', + 'ta', 'tu', 'ti', 'taa', 'tee', 'te', 'to', 'twa', 'ca', 'cu', 'ci', 'caa', 'cee', 'ce', 'co', 'cwa', + 'xa', 'xu', 'xi', 'xaa', 'xee', 'xe', 'xo', NULL, 'xwa', NULL, 'xwi', 'xwaa', 'xwee', 'xwe', NULL, NULL, + 'na', 'nu', 'ni', 'naa', 'nee', 'ne', 'no', 'nwa', 'nya', 'nyu', 'nyi', 'nyaa', 'nyee', 'nye', 'nyo', 'nywa', + '\'a', '\'u', NULL, '\'aa', '\'ee', '\'e', '\'o', '\'wa', 'ka', 'ku', 'ki', 'kaa', 'kee', 'ke', 'ko', NULL, + 'kwa', NULL, 'kwi', 'kwaa', 'kwee', 'kwe', NULL, NULL, 'kxa', 'kxu', 'kxi', 'kxaa', 'kxee', 'kxe', 'kxo', NULL, + 'kxwa', NULL, 'kxwi', 'kxwaa', 'kxwee', 'kxwe', NULL, NULL, 'wa', 'wu', 'wi', 'waa', 'wee', 'we', 'wo', NULL, + '`a', '`u', '`i', '`aa', '`ee', '`e', '`o', NULL, 'za', 'zu', 'zi', 'zaa', 'zee', 'ze', 'zo', 'zwa', + 'zha', 'zhu', 'zhi', 'zhaa', 'zhee', 'zhe', 'zho', 'zhwa', 'ya', 'yu', 'yi', 'yaa', 'yee', 'ye', 'yo', NULL, + 'da', 'du', 'di', 'daa', 'dee', 'de', 'do', 'dwa', 'dda', 'ddu', 'ddi', 'ddaa', 'ddee', 'dde', 'ddo', 'ddwa'), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/x13.php b/NEUE DATEIEN/includes/classes/transliteration/x13.php new file mode 100644 index 0000000..78a1bb1 --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/x13.php @@ -0,0 +1,21 @@ + array('ja', 'ju', 'ji', 'jaa', 'jee', 'je', 'jo', 'jwa', 'ga', 'gu', 'gi', 'gaa', 'gee', 'ge', 'go', NULL, + 'gwa', NULL, 'gwi', 'gwaa', 'gwee', 'gwe', NULL, NULL, 'gga', 'ggu', 'ggi', 'ggaa', 'ggee', 'gge', 'ggo', NULL, + 'tha', 'thu', 'thi', 'thaa', 'thee', 'the', 'tho', 'thwa', 'cha', 'chu', 'chi', 'chaa', 'chee', 'che', 'cho', 'chwa', + 'pha', 'phu', 'phi', 'phaa', 'phee', 'phe', 'pho', 'phwa', 'tsa', 'tsu', 'tsi', 'tsaa', 'tsee', 'tse', 'tso', 'tswa', + 'tza', 'tzu', 'tzi', 'tzaa', 'tzee', 'tze', 'tzo', NULL, 'fa', 'fu', 'fi', 'faa', 'fee', 'fe', 'fo', 'fwa', + 'pa', 'pu', 'pi', 'paa', 'pee', 'pe', 'po', 'pwa', 'rya', 'mya', 'fya', NULL, NULL, NULL, NULL, NULL, + NULL, ' ', '.', ',', ';', ':', ':: ', '?', '//', '1', '2', '3', '4', '5', '6', '7', + '8', '9', '10+', '20+', '30+', '40+', '50+', '60+', '70+', '80+', '90+', '100+', '10,000+', NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + 'a', 'e', 'i', 'o', 'u', 'v', 'ga', 'ka', 'ge', 'gi', 'go', 'gu', 'gv', 'ha', 'he', 'hi', + 'ho', 'hu', 'hv', 'la', 'le', 'li', 'lo', 'lu', 'lv', 'ma', 'me', 'mi', 'mo', 'mu', 'na', 'hna', + 'nah', 'ne', 'ni', 'no', 'nu', 'nv', 'qua', 'que', 'qui', 'quo', 'quu', 'quv', 'sa', 's', 'se', 'si', + 'so', 'su', 'sv', 'da', 'ta', 'de', 'te', 'di', 'ti', 'do', 'du', 'dv', 'dla', 'tla', 'tle', 'tli', + 'tlo', 'tlu', 'tlv', 'tsa', 'tse', 'tsi', 'tso', 'tsu', 'tsv', 'wa', 'we', 'wi', 'wo', 'wu', 'wv', 'ya', + 'ye', 'yi', 'yo', 'yu', 'yv', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/x14.php b/NEUE DATEIEN/includes/classes/transliteration/x14.php new file mode 100644 index 0000000..25fa20c --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/x14.php @@ -0,0 +1,23 @@ + array(NULL, 'ai', 'aai', 'i', 'ii', 'u', 'uu', 'oo', 'ee', 'i', 'a', 'aa', 'we', 'we', 'wi', 'wi', + 'wii', 'wii', 'wo', 'wo', 'woo', 'woo', 'woo', 'wa', 'wa', 'waa', 'waa', 'waa', 'ai', 'w', '\'', 't', + 'k', 'sh', 's', 'n', 'w', 'n', NULL, 'w', 'c', '?', 'l', 'en', 'in', 'on', 'an', 'pai', + 'paai', 'pi', 'pii', 'pu', 'puu', 'poo', 'hee', 'hi', 'pa', 'paa', 'pwe', 'pwe', 'pwi', 'pwi', 'pwii', 'pwii', + 'pwo', 'pwo', 'pwoo', 'pwoo', 'pwa', 'pwa', 'pwaa', 'pwaa', 'pwaa', 'p', 'p', 'h', 'tai', 'taai', 'ti', 'tii', + 'tu', 'tuu', 'too', 'dee', 'di', 'ta', 'taa', 'twe', 'twe', 'twi', 'twi', 'twii', 'twii', 'two', 'two', 'twoo', + 'twoo', 'twa', 'twa', 'twaa', 'twaa', 'twaa', 't', 'tte', 'tti', 'tto', 'tta', 'kai', 'kaai', 'ki', 'kii', 'ku', + 'kuu', 'koo', 'ka', 'kaa', 'kwe', 'kwe', 'kwi', 'kwi', 'kwii', 'kwii', 'kwo', 'kwo', 'kwoo', 'kwoo', 'kwa', 'kwa', + 'kwaa', 'kwaa', 'kwaa', 'k', 'kw', 'keh', 'kih', 'koh', 'kah', 'gai', 'caai', 'gi', 'gii', 'gu', 'guu', 'coo', + 'ga', 'gaa', 'cwe', 'cwe', 'cwi', 'cwi', 'cwii', 'cwii', 'cwo', 'cwo', 'cwoo', 'cwoo', 'cwa', 'cwa', 'cwaa', 'cwaa', + 'cwaa', 'g', 'th', 'mai', 'maai', 'mi', 'mii', 'mu', 'muu', 'moo', 'ma', 'maa', 'mwe', 'mwe', 'mwi', 'mwi', + 'mwii', 'mwii', 'mwo', 'mwo', 'mwoo', 'mwoo', 'mwa', 'mwa', 'mwaa', 'mwaa', 'mwaa', 'm', 'm', 'mh', 'm', 'm', + 'nai', 'naai', 'ni', 'nii', 'nu', 'nuu', 'noo', 'na', 'naa', 'nwe', 'nwe', 'nwa', 'nwa', 'nwaa', 'nwaa', 'nwaa', + 'n', 'ng', 'nh', 'lai', 'laai', 'li', 'lii', 'lu', 'luu', 'loo', 'la', 'laa', 'lwe', 'lwe', 'lwi', 'lwi', + 'lwii', 'lwii', 'lwo', 'lwo', 'lwoo', 'lwoo', 'lwa', 'lwa', 'lwaa', 'lwaa', 'l', 'l', 'l', 'sai', 'saai', 'si', + 'sii', 'su', 'suu', 'soo', 'sa', 'saa', 'swe', 'swe', 'swi', 'swi', 'swii', 'swii', 'swo', 'swo', 'swoo', 'swoo', + ), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/x15.php b/NEUE DATEIEN/includes/classes/transliteration/x15.php new file mode 100644 index 0000000..5a5bb7b --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/x15.php @@ -0,0 +1,22 @@ + array('swa', 'swa', 'swaa', 'swaa', 'swaa', 's', 's', 'sw', 's', 'sk', 'skw', 'sW', 'spwa', 'stwa', 'skwa', 'scwa', + 'she', 'shi', 'shii', 'sho', 'shoo', 'sha', 'shaa', 'shwe', 'shwe', 'shwi', 'shwi', 'shwii', 'shwii', 'shwo', 'shwo', 'shwoo', + 'shwoo', 'shwa', 'shwa', 'shwaa', 'shwaa', 'sh', 'jai', 'yaai', 'ji', 'jii', 'ju', 'juu', 'yoo', 'ja', 'jaa', 'ywe', + 'ywe', 'ywi', 'ywi', 'ywii', 'ywii', 'ywo', 'ywo', 'ywoo', 'ywoo', 'ywa', 'ywa', 'ywaa', 'ywaa', 'ywaa', 'j', 'y', + 'y', 'yi', 're', 'rai', 'le', 'raai', 'ri', 'rii', 'ru', 'ruu', 'lo', 'ra', 'raa', 'la', 'rwaa', 'rwaa', + 'r', 'r', 'r', 'vai', 'faai', 'vi', 'vii', 'vu', 'vuu', 'va', 'vaa', 'fwaa', 'fwaa', 'v', 'the', 'the', + 'thi', 'thi', 'thii', 'thii', 'tho', 'thoo', 'tha', 'thaa', 'thwaa', 'thwaa', 'th', 'tthe', 'tthi', 'ttho', 'ttha', 'tth', + 'tye', 'tyi', 'tyo', 'tya', 'he', 'hi', 'hii', 'ho', 'hoo', 'ha', 'haa', 'h', 'h', 'hk', 'qaai', 'qi', + 'qii', 'qu', 'quu', 'qa', 'qaa', 'q', 'tlhe', 'tlhi', 'tlho', 'tlha', 're', 'ri', 'ro', 'ra', 'ngaai', 'ngi', + 'ngii', 'ngu', 'nguu', 'nga', 'ngaa', 'ng', 'nng', 'she', 'shi', 'sho', 'sha', 'the', 'thi', 'tho', 'tha', 'th', + 'lhi', 'lhii', 'lho', 'lhoo', 'lha', 'lhaa', 'lh', 'the', 'thi', 'thii', 'tho', 'thoo', 'tha', 'thaa', 'th', 'b', + 'e', 'i', 'o', 'a', 'we', 'wi', 'wo', 'wa', 'ne', 'ni', 'no', 'na', 'ke', 'ki', 'ko', 'ka', + 'he', 'hi', 'ho', 'ha', 'ghu', 'gho', 'ghe', 'ghee', 'ghi', 'gha', 'ru', 'ro', 're', 'ree', 'ri', 'ra', + 'wu', 'wo', 'we', 'wee', 'wi', 'wa', 'hwu', 'hwo', 'hwe', 'hwee', 'hwi', 'hwa', 'thu', 'tho', 'the', 'thee', + 'thi', 'tha', 'ttu', 'tto', 'tte', 'ttee', 'tti', 'tta', 'pu', 'po', 'pe', 'pee', 'pi', 'pa', 'p', 'gu', + 'go', 'ge', 'gee', 'gi', 'ga', 'khu', 'kho', 'khe', 'khee', 'khi', 'kha', 'kku', 'kko', 'kke', 'kkee', 'kki'), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/x16.php b/NEUE DATEIEN/includes/classes/transliteration/x16.php new file mode 100644 index 0000000..e6e2f74 --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/x16.php @@ -0,0 +1,21 @@ + array('kka', 'kk', 'nu', 'no', 'ne', 'nee', 'ni', 'na', 'mu', 'mo', 'me', 'mee', 'mi', 'ma', 'yu', 'yo', + 'ye', 'yee', 'yi', 'ya', 'ju', 'ju', 'jo', 'je', 'jee', 'ji', 'ji', 'ja', 'jju', 'jjo', 'jje', 'jjee', + 'jji', 'jja', 'lu', 'lo', 'le', 'lee', 'li', 'la', 'dlu', 'dlo', 'dle', 'dlee', 'dli', 'dla', 'lhu', 'lho', + 'lhe', 'lhee', 'lhi', 'lha', 'tlhu', 'tlho', 'tlhe', 'tlhee', 'tlhi', 'tlha', 'tlu', 'tlo', 'tle', 'tlee', 'tli', 'tla', + 'zu', 'zo', 'ze', 'zee', 'zi', 'za', 'z', 'z', 'dzu', 'dzo', 'dze', 'dzee', 'dzi', 'dza', 'su', 'so', + 'se', 'see', 'si', 'sa', 'shu', 'sho', 'she', 'shee', 'shi', 'sha', 'sh', 'tsu', 'tso', 'tse', 'tsee', 'tsi', + 'tsa', 'chu', 'cho', 'che', 'chee', 'chi', 'cha', 'ttsu', 'ttso', 'ttse', 'ttsee', 'ttsi', 'ttsa', 'X', '.', 'qai', + 'ngai', 'nngi', 'nngii', 'nngo', 'nngoo', 'nnga', 'nngaa', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + ' ', 'b', 'l', 'f', 's', 'n', 'h', 'd', 't', 'c', 'q', 'm', 'g', 'ng', 'z', 'r', + 'a', 'o', 'u', 'e', 'i', 'ch', 'th', 'ph', 'p', 'x', 'p', '<', '>', NULL, NULL, NULL, + 'f', 'v', 'u', 'yr', 'y', 'w', 'th', 'th', 'a', 'o', 'ac', 'ae', 'o', 'o', 'o', 'oe', + 'on', 'r', 'k', 'c', 'k', 'g', 'ng', 'g', 'g', 'w', 'h', 'h', 'h', 'h', 'n', 'n', + 'n', 'i', 'e', 'j', 'g', 'ae', 'a', 'eo', 'p', 'z', 's', 's', 's', 'c', 'z', 't', + 't', 'd', 'b', 'b', 'p', 'p', 'e', 'm', 'm', 'm', 'l', 'l', 'ng', 'ng', 'd', 'o', + 'ear', 'ior', 'qu', 'qu', 'qu', 's', 'yr', 'yr', 'yr', 'q', 'x', '.', ':', '+', '17', '18', + '19', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/x17.php b/NEUE DATEIEN/includes/classes/transliteration/x17.php new file mode 100644 index 0000000..46bc06a --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/x17.php @@ -0,0 +1,21 @@ + array(NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + 'k', 'kh', 'g', 'gh', 'ng', 'c', 'ch', 'j', 'jh', 'ny', 't', 'tth', 'd', 'ddh', 'nn', 't', + 'th', 'd', 'dh', 'n', 'p', 'ph', 'b', 'bh', 'm', 'y', 'r', 'l', 'v', 'sh', 'ss', 's', + 'h', 'l', 'q', 'a', 'aa', 'i', 'ii', 'u', 'uk', 'uu', 'uuv', 'ry', 'ryy', 'ly', 'lyy', 'e', + 'ai', 'oo', 'oo', 'au', 'a', 'aa', 'aa', 'i', 'ii', 'y', 'yy', 'u', 'uu', 'ua', 'oe', 'ya', + 'ie', 'e', 'ae', 'ai', 'oo', 'au', 'M', 'H', 'a`', '', '', '', 'r', '', '!', '', + '', '', '', '', '.', ' // ', ':', '+', '++', ' * ', ' /// ', 'KR', '\'', NULL, NULL, NULL, + '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/x18.php b/NEUE DATEIEN/includes/classes/transliteration/x18.php new file mode 100644 index 0000000..8802217 --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/x18.php @@ -0,0 +1,21 @@ + array(' @ ', ' ... ', ',', '. ', ': ', ' // ', '', '-', ',', '. ', '', '', '', '', '', NULL, + '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', NULL, NULL, NULL, NULL, NULL, NULL, + 'a', 'e', 'i', 'o', 'u', 'O', 'U', 'ee', 'n', 'ng', 'b', 'p', 'q', 'g', 'm', 'l', + 's', 'sh', 't', 'd', 'ch', 'j', 'y', 'r', 'w', 'f', 'k', 'kha', 'ts', 'z', 'h', 'zr', + 'lh', 'zh', 'ch', '-', 'e', 'i', 'o', 'u', 'O', 'U', 'ng', 'b', 'p', 'q', 'g', 'm', + 't', 'd', 'ch', 'j', 'ts', 'y', 'w', 'k', 'g', 'h', 'jy', 'ny', 'dz', 'e', 'i', 'iy', + 'U', 'u', 'ng', 'k', 'g', 'h', 'p', 'sh', 't', 'd', 'j', 'f', 'g', 'h', 'ts', 'z', + 'r', 'ch', 'zh', 'i', 'k', 'r', 'f', 'zh', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, 'H', 'X', 'W', 'M', ' 3 ', ' 333 ', 'a', 'i', 'k', 'ng', 'c', 'tt', 'tth', 'dd', 'nn', + 't', 'd', 'p', 'ph', 'ss', 'zh', 'z', 'a', 't', 'zh', 'gh', 'ng', 'c', 'jh', 'tta', 'ddh', + 't', 'dh', 'ss', 'cy', 'zh', 'z', 'u', 'y', 'bh', '\'', NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/x1e.php b/NEUE DATEIEN/includes/classes/transliteration/x1e.php new file mode 100644 index 0000000..28f0424 --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/x1e.php @@ -0,0 +1,21 @@ + array('A', 'a', 'B', 'b', 'B', 'b', 'B', 'b', 'C', 'c', 'D', 'd', 'D', 'd', 'D', 'd', + 'D', 'd', 'D', 'd', 'E', 'e', 'E', 'e', 'E', 'e', 'E', 'e', 'E', 'e', 'F', 'f', + 'G', 'g', 'H', 'h', 'H', 'h', 'H', 'h', 'H', 'h', 'H', 'h', 'I', 'i', 'I', 'i', + 'K', 'k', 'K', 'k', 'K', 'k', 'L', 'l', 'L', 'l', 'L', 'l', 'L', 'l', 'M', 'm', + 'M', 'm', 'M', 'm', 'N', 'n', 'N', 'n', 'N', 'n', 'N', 'n', 'O', 'o', 'O', 'o', + 'O', 'o', 'O', 'o', 'P', 'p', 'P', 'p', 'R', 'r', 'R', 'r', 'R', 'r', 'R', 'r', + 'S', 's', 'S', 's', 'S', 's', 'S', 's', 'S', 's', 'T', 't', 'T', 't', 'T', 't', + 'T', 't', 'U', 'u', 'U', 'u', 'U', 'u', 'U', 'u', 'U', 'u', 'V', 'v', 'V', 'v', + 'W', 'w', 'W', 'w', 'W', 'w', 'W', 'w', 'W', 'w', 'X', 'x', 'X', 'x', 'Y', 'y', + 'Z', 'z', 'Z', 'z', 'Z', 'z', 'h', 't', 'w', 'y', 'a', 'S', NULL, NULL, NULL, NULL, + 'A', 'a', 'A', 'a', 'A', 'a', 'A', 'a', 'A', 'a', 'A', 'a', 'A', 'a', 'A', 'a', + 'A', 'a', 'A', 'a', 'A', 'a', 'A', 'a', 'E', 'e', 'E', 'e', 'E', 'e', 'E', 'e', + 'E', 'e', 'E', 'e', 'E', 'e', 'E', 'e', 'I', 'i', 'I', 'i', 'O', 'o', 'O', 'o', + 'O', 'o', 'O', 'o', 'O', 'o', 'O', 'o', 'O', 'o', 'O', 'o', 'O', 'o', 'O', 'o', + 'O', 'o', 'O', 'o', 'U', 'u', 'U', 'u', 'U', 'u', 'U', 'u', 'U', 'u', 'U', 'u', + 'U', 'u', 'Y', 'y', 'Y', 'y', 'Y', 'y', 'Y', 'y', NULL, NULL, NULL, NULL, NULL), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/x1f.php b/NEUE DATEIEN/includes/classes/transliteration/x1f.php new file mode 100644 index 0000000..24014c5 --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/x1f.php @@ -0,0 +1,21 @@ + array('a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', + 'e', 'e', 'e', 'e', 'e', 'e', NULL, NULL, 'E', 'E', 'E', 'E', 'E', 'E', NULL, NULL, + 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'E', 'E', 'E', 'E', 'E', 'E', 'E', 'E', + 'i', 'i', 'i', 'i', 'i', 'i', 'i', 'i', 'I', 'I', 'I', 'I', 'I', 'I', 'I', 'I', + 'o', 'o', 'o', 'o', 'o', 'o', NULL, NULL, 'O', 'O', 'O', 'O', 'O', 'O', NULL, NULL, + 'u', 'u', 'u', 'u', 'u', 'u', 'u', 'u', NULL, 'U', NULL, 'U', NULL, 'U', NULL, 'U', + 'o', 'o', 'o', 'o', 'o', 'o', 'o', 'o', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', + 'a', 'a', 'e', 'e', 'e', 'e', 'i', 'i', 'o', 'o', 'u', 'u', 'o', 'o', NULL, NULL, + 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', + 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'E', 'E', 'E', 'E', 'E', 'E', 'E', 'E', + 'o', 'o', 'o', 'o', 'o', 'o', 'o', 'o', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', + 'a', 'a', 'a', 'a', 'a', NULL, 'a', 'a', 'A', 'A', 'A', 'A', 'A', '\'', 'i', '\'', + '~', '"~', 'e', 'e', 'e', NULL, 'e', 'e', 'E', 'E', 'E', 'E', 'E', '\'`', '\'\'', '\'~', + 'i', 'i', 'i', 'i', NULL, NULL, 'i', 'i', 'I', 'I', 'I', 'I', NULL, '`\'', '`\'', '`~', + 'u', 'u', 'u', 'u', 'R', 'R', 'u', 'u', 'U', 'U', 'U', 'U', 'R', '"`', '"\'', '`', + NULL, NULL, 'o', 'o', 'o', NULL, 'o', 'o', 'O', 'O', 'O', 'O', 'O', '\'', '`'), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/x20.php b/NEUE DATEIEN/includes/classes/transliteration/x20.php new file mode 100644 index 0000000..eda85fb --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/x20.php @@ -0,0 +1,21 @@ + array(' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '', '', '', '', + '-', '-', '-', '-', '--', '--', '||', '_', '\'', '\'', ',', '\'', '"', '"', ',,', '"', + '+', '++', '*', '*>', '.', '..', '...', '.', "\n", "\n\n", '', '', '', '', '', ' ', + '%0', '%00', '\'', '\'\'', '\'\'\'', '`', '``', '```', '^', '<', '>', '*', '!!', '!?', '-', '_', + '-', '^', '***', '--', '/', '-[', ']-', NULL, '?!', '!?', '7', 'PP', '(]', '[)', NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, '', '', '', '', '', '', + '0', '', '', '', '4', '5', '6', '7', '8', '9', '+', '-', '=', '(', ')', 'n', + '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '+', '-', '=', '(', ')', NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + 'ECU', 'CL', 'Cr', 'FF', 'L', 'mil', 'N', 'Pts', 'Rs', 'W', 'NS', 'D', 'EU', 'K', 'T', 'Dr', + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', + '', '', '', '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/x21.php b/NEUE DATEIEN/includes/classes/transliteration/x21.php new file mode 100644 index 0000000..bed1254 --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/x21.php @@ -0,0 +1,23 @@ + array('', '', 'C', '', '', '', '', '', '', '', 'g', 'H', 'H', 'H', 'h', '', + 'I', 'I', 'L', 'l', 'lb', 'N', 'no', '(p)', 'P', 'P', 'Q', 'R', 'R', 'R', '', '', + '(sm)', '(tel)', '(tm)', '', 'Z', '', NULL, 'mho', 'Z', '', NULL, NULL, 'B', 'C', 'e', 'e', + '', 'F', NULL, 'M', 'o', '', '', '', '', 'i', 'Q', '(fax)', 'pi', '', '', 'Pi', + '', 'G', 'L', 'L', 'Y', 'D', 'd', 'e', 'i', 'j', '', '', 'per', '', NULL, NULL, + NULL, NULL, NULL, ' 1/3 ', ' 2/3 ', ' 1/5 ', ' 2/5 ', ' 3/5 ', ' 4/5 ', ' 1/6 ', ' 5/6 ', ' 1/8 ', ' 3/8 ', ' 5/8 ', ' 7/8 ', ' 1/', + 'I', 'II', 'III', 'IV', 'V', 'VI', 'VII', 'VIII', 'IX', 'X', 'XI', 'XII', 'L', 'C', 'D', 'M', + 'i', 'ii', 'iii', 'iv', 'v', 'vi', 'vii', 'viii', 'ix', 'x', 'xi', 'xii', 'l', 'c', 'd', 'm', + '(D', 'D)', '((|))', ')', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + '-', '|', '-', '|', '-', '|', '\\', '/', '\\', '/', '-', '-', '~', '~', '-', '|', + '-', '|', '-', '-', '-', '|', '-', '|', '|', '-', '-', '-', '-', '-', '-', '|', + '|', '|', '|', '|', '|', '|', '^', 'V', '\\', '=', 'V', '^', '-', '-', '|', '|', + '-', '-', '|', '|', '=', '|', '=', '=', '|', '=', '|', '=', '=', '=', '=', '=', + '=', '|', '=', '|', '=', '|', '\\', '/', '\\', '/', '=', '=', '~', '~', '|', '|', + '-', '|', '-', '|', '-', '-', '-', '|', '-', '|', '|', '|', '|', '|', '|', '|', + '-', '\\', '\\', '|', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + ), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/x22.php b/NEUE DATEIEN/includes/classes/transliteration/x22.php new file mode 100644 index 0000000..eb642ed --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/x22.php @@ -0,0 +1,21 @@ + array(NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/x23.php b/NEUE DATEIEN/includes/classes/transliteration/x23.php new file mode 100644 index 0000000..b469df3 --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/x23.php @@ -0,0 +1,21 @@ + array(NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/x24.php b/NEUE DATEIEN/includes/classes/transliteration/x24.php new file mode 100644 index 0000000..342058e --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/x24.php @@ -0,0 +1,21 @@ + array('', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', + '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', + '', '', '', '', '', '', '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + '', '', '', '', '', '', '', '', '', '', '', NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', + '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', + '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', + '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', + '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', + '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', + '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', + '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', + '', '', '', '', '', '', '', '', '', '', '', NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/x25.php b/NEUE DATEIEN/includes/classes/transliteration/x25.php new file mode 100644 index 0000000..68e1e9b --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/x25.php @@ -0,0 +1,21 @@ + array('-', '-', '|', '|', '-', '-', '|', '|', '-', '-', '|', '|', '+', '+', '+', '+', + '+', '+', '+', '+', '+', '+', '+', '+', '+', '+', '+', '+', '+', '+', '+', '+', + '+', '+', '+', '+', '+', '+', '+', '+', '+', '+', '+', '+', '+', '+', '+', '+', + '+', '+', '+', '+', '+', '+', '+', '+', '+', '+', '+', '+', '+', '+', '+', '+', + '+', '+', '+', '+', '+', '+', '+', '+', '+', '+', '+', '+', '-', '-', '|', '|', + '-', '|', '+', '+', '+', '+', '+', '+', '+', '+', '+', '+', '+', '+', '+', '+', + '+', '+', '+', '+', '+', '+', '+', '+', '+', '+', '+', '+', '+', '+', '+', '+', + '+', '/', '\\', 'X', '-', '|', '-', '|', '-', '|', '-', '|', '-', '|', '-', '|', + '#', '#', '#', '#', '#', '#', '#', '#', '#', '#', '#', '#', '#', '#', '#', '#', + '#', '#', '#', '#', '-', '|', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + '#', '#', '#', '#', '#', '#', '#', '#', '#', '#', '#', '#', '#', '#', '#', '#', + '#', '#', '^', '^', '^', '^', '>', '>', '>', '>', '>', '>', 'V', 'V', 'V', 'V', + '<', '<', '<', '<', '<', '<', '*', '*', '*', '*', '*', '*', '*', '*', '*', '*', + '*', '*', '*', '*', '*', '*', '*', '*', '*', '*', '*', '*', '*', '*', '*', '*', + '*', '*', '*', '*', '*', '*', '*', '#', '#', '#', '#', '#', '^', '^', '^', 'O', + '#', '#', '#', '#', '#', '#', '#', '#', NULL, NULL, NULL, NULL, NULL, NULL, NULL), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/x26.php b/NEUE DATEIEN/includes/classes/transliteration/x26.php new file mode 100644 index 0000000..7f87c4b --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/x26.php @@ -0,0 +1,21 @@ + array('', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', + '', '', '', '', NULL, NULL, NULL, NULL, NULL, '', '', '', '', '', '', '', + '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', + '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', + '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', + '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', + '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', + '', '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/x27.php b/NEUE DATEIEN/includes/classes/transliteration/x27.php new file mode 100644 index 0000000..02bb71e --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/x27.php @@ -0,0 +1,21 @@ + array(NULL, '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', + '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', + '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', + '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', + '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', + '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', NULL, + NULL, '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', + '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', + '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', + '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', + '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', + NULL, '', '', '', '', '', '', '', '', '', '', '', '', '', '', NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/x28.php b/NEUE DATEIEN/includes/classes/transliteration/x28.php new file mode 100644 index 0000000..b05b786 --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/x28.php @@ -0,0 +1,21 @@ + array(' ', 'a', '1', 'b', '\'', 'k', '2', 'l', '@', 'c', 'i', 'f', '/', 'm', 's', 'p', + '"', 'e', '3', 'h', '9', 'o', '6', 'r', '^', 'd', 'j', 'g', '>', 'n', 't', 'q', + ',', '*', '5', '<', '-', 'u', '8', 'v', '.', '%', '[', '$', '+', 'x', '!', '&', + ';', ':', '4', '\\', '0', 'z', '7', '(', '_', '?', 'w', ']', '#', 'y', ')', '=', + '[d7]', '[d17]', '[d27]', '[d127]', '[d37]', '[d137]', '[d237]', '[d1237]', '[d47]', '[d147]', '[d247]', '[d1247]', '[d347]', '[d1347]', '[d2347]', '[d12347]', + '[d57]', '[d157]', '[d257]', '[d1257]', '[d357]', '[d1357]', '[d2357]', '[d12357]', '[d457]', '[d1457]', '[d2457]', '[d12457]', '[d3457]', '[d13457]', '[d23457]', '[d123457]', + '[d67]', '[d167]', '[d267]', '[d1267]', '[d367]', '[d1367]', '[d2367]', '[d12367]', '[d467]', '[d1467]', '[d2467]', '[d12467]', '[d3467]', '[d13467]', '[d23467]', '[d123467]', + '[d567]', '[d1567]', '[d2567]', '[d12567]', '[d3567]', '[d13567]', '[d23567]', '[d123567]', '[d4567]', '[d14567]', '[d24567]', '[d124567]', '[d34567]', '[d134567]', '[d234567]', '[d1234567]', + '[d8]', '[d18]', '[d28]', '[d128]', '[d38]', '[d138]', '[d238]', '[d1238]', '[d48]', '[d148]', '[d248]', '[d1248]', '[d348]', '[d1348]', '[d2348]', '[d12348]', + '[d58]', '[d158]', '[d258]', '[d1258]', '[d358]', '[d1358]', '[d2358]', '[d12358]', '[d458]', '[d1458]', '[d2458]', '[d12458]', '[d3458]', '[d13458]', '[d23458]', '[d123458]', + '[d68]', '[d168]', '[d268]', '[d1268]', '[d368]', '[d1368]', '[d2368]', '[d12368]', '[d468]', '[d1468]', '[d2468]', '[d12468]', '[d3468]', '[d13468]', '[d23468]', '[d123468]', + '[d568]', '[d1568]', '[d2568]', '[d12568]', '[d3568]', '[d13568]', '[d23568]', '[d123568]', '[d4568]', '[d14568]', '[d24568]', '[d124568]', '[d34568]', '[d134568]', '[d234568]', '[d1234568]', + '[d78]', '[d178]', '[d278]', '[d1278]', '[d378]', '[d1378]', '[d2378]', '[d12378]', '[d478]', '[d1478]', '[d2478]', '[d12478]', '[d3478]', '[d13478]', '[d23478]', '[d123478]', + '[d578]', '[d1578]', '[d2578]', '[d12578]', '[d3578]', '[d13578]', '[d23578]', '[d123578]', '[d4578]', '[d14578]', '[d24578]', '[d124578]', '[d34578]', '[d134578]', '[d234578]', '[d1234578]', + '[d678]', '[d1678]', '[d2678]', '[d12678]', '[d3678]', '[d13678]', '[d23678]', '[d123678]', '[d4678]', '[d14678]', '[d24678]', '[d124678]', '[d34678]', '[d134678]', '[d234678]', '[d1234678]', + '[d5678]', '[d15678]', '[d25678]', '[d125678]', '[d35678]', '[d135678]', '[d235678]', '[d1235678]', '[d45678]', '[d145678]', '[d245678]', '[d1245678]', '[d345678]', '[d1345678]', '[d2345678]', '[d12345678]'), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/x2e.php b/NEUE DATEIEN/includes/classes/transliteration/x2e.php new file mode 100644 index 0000000..b94b4fc --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/x2e.php @@ -0,0 +1,21 @@ + array(NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/x2f.php b/NEUE DATEIEN/includes/classes/transliteration/x2f.php new file mode 100644 index 0000000..78e5bc0 --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/x2f.php @@ -0,0 +1,21 @@ + array(NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/x30.php b/NEUE DATEIEN/includes/classes/transliteration/x30.php new file mode 100644 index 0000000..899e0d0 --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/x30.php @@ -0,0 +1,21 @@ + array(' ', ',', '. ', '"', '[JIS]', '"', '/', '0', '<', '> ', '<<', '>> ', '[', '] ', '{', '} ', + '[(', ')] ', '@', 'X ', '[', '] ', '[[', ']] ', '((', ')) ', '[[', ']] ', '~ ', '``', '\'\'', ',,', + '@', '1', '2', '3', '4', '5', '6', '7', '8', '9', '', '', '', '', '', '', + '~', '+', '+', '+', '+', '', '@', ' // ', '+10+', '+20+', '+30+', NULL, NULL, NULL, '', '', + NULL, 'a', 'a', 'i', 'i', 'u', 'u', 'e', 'e', 'o', 'o', 'ka', 'ga', 'ki', 'gi', 'ku', + 'gu', 'ke', 'ge', 'ko', 'go', 'sa', 'za', 'si', 'zi', 'su', 'zu', 'se', 'ze', 'so', 'zo', 'ta', + 'da', 'ti', 'di', 'tu', 'tu', 'du', 'te', 'de', 'to', 'do', 'na', 'ni', 'nu', 'ne', 'no', 'ha', + 'ba', 'pa', 'hi', 'bi', 'pi', 'hu', 'bu', 'pu', 'he', 'be', 'pe', 'ho', 'bo', 'po', 'ma', 'mi', + 'mu', 'me', 'mo', 'ya', 'ya', 'yu', 'yu', 'yo', 'yo', 'ra', 'ri', 'ru', 're', 'ro', 'wa', 'wa', + 'wi', 'we', 'wo', 'n', 'vu', NULL, NULL, NULL, NULL, '', '', '', '', '"', '"', NULL, + NULL, 'a', 'a', 'i', 'i', 'u', 'u', 'e', 'e', 'o', 'o', 'ka', 'ga', 'ki', 'gi', 'ku', + 'gu', 'ke', 'ge', 'ko', 'go', 'sa', 'za', 'si', 'zi', 'su', 'zu', 'se', 'ze', 'so', 'zo', 'ta', + 'da', 'ti', 'di', 'tu', 'tu', 'du', 'te', 'de', 'to', 'do', 'na', 'ni', 'nu', 'ne', 'no', 'ha', + 'ba', 'pa', 'hi', 'bi', 'pi', 'hu', 'bu', 'pu', 'he', 'be', 'pe', 'ho', 'bo', 'po', 'ma', 'mi', + 'mu', 'me', 'mo', 'ya', 'ya', 'yu', 'yu', 'yo', 'yo', 'ra', 'ri', 'ru', 're', 'ro', 'wa', 'wa', + 'wi', 'we', 'wo', 'n', 'vu', 'ka', 'ke', 'va', 'vi', 've', 'vo', '', '', '"', '"'), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/x31.php b/NEUE DATEIEN/includes/classes/transliteration/x31.php new file mode 100644 index 0000000..4dfa756 --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/x31.php @@ -0,0 +1,21 @@ + array(NULL, NULL, NULL, NULL, NULL, 'B', 'P', 'M', 'F', 'D', 'T', 'N', 'L', 'G', 'K', 'H', + 'J', 'Q', 'X', 'ZH', 'CH', 'SH', 'R', 'Z', 'C', 'S', 'A', 'O', 'E', 'EH', 'AI', 'EI', + 'AU', 'OU', 'AN', 'EN', 'ANG', 'ENG', 'ER', 'I', 'U', 'IU', 'V', 'NG', 'GN', NULL, NULL, NULL, + NULL, 'g', 'gg', 'gs', 'n', 'nj', 'nh', 'd', 'dd', 'r', 'lg', 'lm', 'lb', 'ls', 'lt', 'lp', + 'rh', 'm', 'b', 'bb', 'bs', 's', 'ss', '', 'j', 'jj', 'c', 'k', 't', 'p', 'h', 'a', + 'ae', 'ya', 'yae', 'eo', 'e', 'yeo', 'ye', 'o', 'wa', 'wae', 'oe', 'yo', 'u', 'weo', 'we', 'wi', + 'yu', 'eu', 'yi', 'i', '', 'nn', 'nd', 'ns', 'nZ', 'lgs', 'ld', 'lbs', 'lZ', 'lQ', 'mb', 'ms', + 'mZ', 'mN', 'bg', '', 'bsg', 'bst', 'bj', 'bt', 'bN', 'bbN', 'sg', 'sn', 'sd', 'sb', 'sj', 'Z', + '', 'N', 'Ns', 'NZ', 'pN', 'hh', 'Q', 'yo-ya', 'yo-yae', 'yo-i', 'yu-yeo', 'yu-ye', 'yu-i', 'U', 'U-i', NULL, + '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', + 'BU', 'ZI', 'JI', 'GU', 'EE', 'ENN', 'OO', 'ONN', 'IR', 'ANN', 'INN', 'UNN', 'IM', 'NGG', 'AINN', 'AUNN', + 'AM', 'OM', 'ONG', 'INNN', 'P', 'T', 'K', 'H', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/x32.php b/NEUE DATEIEN/includes/classes/transliteration/x32.php new file mode 100644 index 0000000..5d92a71 --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/x32.php @@ -0,0 +1,21 @@ + array('(g)', '(n)', '(d)', '(r)', '(m)', '(b)', '(s)', '()', '(j)', '(c)', '(k)', '(t)', '(p)', '(h)', '(ga)', '(na)', + '(da)', '(ra)', '(ma)', '(ba)', '(sa)', '(a)', '(ja)', '(ca)', '(ka)', '(ta)', '(pa)', '(ha)', '(ju)', NULL, NULL, NULL, + '(1) ', '(2) ', '(3) ', '(4) ', '(5) ', '(6) ', '(7) ', '(8) ', '(9) ', '(10) ', '(Yue) ', '(Huo) ', '(Shui) ', '(Mu) ', '(Jin) ', '(Tu) ', + '(Ri) ', '(Zhu) ', '(You) ', '(She) ', '(Ming) ', '(Te) ', '(Cai) ', '(Zhu) ', '(Lao) ', '(Dai) ', '(Hu) ', '(Xue) ', '(Jian) ', '(Qi) ', '(Zi) ', '(Xie) ', + '(Ji) ', '(Xiu) ', '<<', '>>', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + '(g)', '(n)', '(d)', '(r)', '(m)', '(b)', '(s)', '()', '(j)', '(c)', '(k)', '(t)', '(p)', '(h)', '(ga)', '(na)', + '(da)', '(ra)', '(ma)', '(ba)', '(sa)', '(a)', '(ja)', '(ca)', '(ka)', '(ta)', '(pa)', '(ha)', NULL, NULL, NULL, 'KIS ', + '(1) ', '(2) ', '(3) ', '(4) ', '(5) ', '(6) ', '(7) ', '(8) ', '(9) ', '(10) ', '(Yue) ', '(Huo) ', '(Shui) ', '(Mu) ', '(Jin) ', '(Tu) ', + '(Ri) ', '(Zhu) ', '(You) ', '(She) ', '(Ming) ', '(Te) ', '(Cai) ', '(Zhu) ', '(Lao) ', '(Mi) ', '(Nan) ', '(Nu) ', '(Shi) ', '(You) ', '(Yin) ', '(Zhu) ', + '(Xiang) ', '(Xiu) ', '(Xie) ', '(Zheng) ', '(Shang) ', '(Zhong) ', '(Xia) ', '(Zuo) ', '(You) ', '(Yi) ', '(Zong) ', '(Xue) ', '(Jian) ', '(Qi) ', '(Zi) ', '(Xie) ', + '(Ye) ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + '1M', '2M', '3M', '4M', '5M', '6M', '7M', '8M', '9M', '10M', '11M', '12M', NULL, NULL, NULL, NULL, + 'a', 'i', 'u', 'u', 'o', 'ka', 'ki', 'ku', 'ke', 'ko', 'sa', 'si', 'su', 'se', 'so', 'ta', + 'ti', 'tu', 'te', 'to', 'na', 'ni', 'nu', 'ne', 'no', 'ha', 'hi', 'hu', 'he', 'ho', 'ma', 'mi', + 'mu', 'me', 'mo', 'ya', 'yu', 'yo', 'ra', 'ri', 'ru', 're', 'ro', 'wa', 'wi', 'we', 'wo'), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/x33.php b/NEUE DATEIEN/includes/classes/transliteration/x33.php new file mode 100644 index 0000000..3cee4cb --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/x33.php @@ -0,0 +1,21 @@ + array('apartment', 'alpha', 'ampere', 'are', 'inning', 'inch', 'won', 'escudo', 'acre', 'ounce', 'ohm', 'kai-ri', 'carat', 'calorie', 'gallon', 'gamma', + 'giga', 'guinea', 'curie', 'guilder', 'kilo', 'kilogram', 'kilometer', 'kilowatt', 'gram', 'gram ton', 'cruzeiro', 'krone', 'case', 'koruna', 'co-op', 'cycle', + 'centime', 'shilling', 'centi', 'cent', 'dozen', 'desi', 'dollar', 'ton', 'nano', 'knot', 'heights', 'percent', 'parts', 'barrel', 'piaster', 'picul', + 'pico', 'building', 'farad', 'feet', 'bushel', 'franc', 'hectare', 'peso', 'pfennig', 'hertz', 'pence', 'page', 'beta', 'point', 'volt', 'hon', + 'pound', 'hall', 'horn', 'micro', 'mile', 'mach', 'mark', 'mansion', 'micron', 'milli', 'millibar', 'mega', 'megaton', 'meter', 'yard', 'yard', + 'yuan', 'liter', 'lira', 'rupee', 'ruble', 'rem', 'roentgen', 'watt', '0h', '1h', '2h', '3h', '4h', '5h', '6h', '7h', + '8h', '9h', '10h', '11h', '12h', '13h', '14h', '15h', '16h', '17h', '18h', '19h', '20h', '21h', '22h', '23h', + '24h', 'HPA', 'da', 'AU', 'bar', 'oV', 'pc', NULL, NULL, NULL, NULL, 'Heisei', 'Syouwa', 'Taisyou', 'Meiji', 'Inc.', + 'pA', 'nA', 'microamp', 'mA', 'kA', 'kB', 'MB', 'GB', 'cal', 'kcal', 'pF', 'nF', 'microFarad', 'microgram', 'mg', 'kg', + 'Hz', 'kHz', 'MHz', 'GHz', 'THz', 'microliter', 'ml', 'dl', 'kl', 'fm', 'nm', 'micrometer', 'mm', 'cm', 'km', 'mm^2', + 'cm^2', 'm^2', 'km^2', 'mm^4', 'cm^3', 'm^3', 'km^3', 'm/s', 'm/s^2', 'Pa', 'kPa', 'MPa', 'GPa', 'rad', 'rad/s', 'rad/s^2', + 'ps', 'ns', 'microsecond', 'ms', 'pV', 'nV', 'microvolt', 'mV', 'kV', 'MV', 'pW', 'nW', 'microwatt', 'mW', 'kW', 'MW', + 'kOhm', 'MOhm', 'a.m.', 'Bq', 'cc', 'cd', 'C/kg', 'Co.', 'dB', 'Gy', 'ha', 'HP', 'in', 'K.K.', 'KM', 'kt', + 'lm', 'ln', 'log', 'lx', 'mb', 'mil', 'mol', 'pH', 'p.m.', 'PPM', 'PR', 'sr', 'Sv', 'Wb', NULL, NULL, + '1d', '2d', '3d', '4d', '5d', '6d', '7d', '8d', '9d', '10d', '11d', '12d', '13d', '14d', '15d', '16d', + '17d', '18d', '19d', '20d', '21d', '22d', '23d', '24d', '25d', '26d', '27d', '28d', '29d', '30d', '31d'), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/x4d.php b/NEUE DATEIEN/includes/classes/transliteration/x4d.php new file mode 100644 index 0000000..dcebab8 --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/x4d.php @@ -0,0 +1,21 @@ + array(NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/x4e.php b/NEUE DATEIEN/includes/classes/transliteration/x4e.php new file mode 100644 index 0000000..ec8c0be --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/x4e.php @@ -0,0 +1,22 @@ + array('Yi ', 'Ding ', 'Kao ', 'Qi ', 'Shang ', 'Xia ', NULL, 'Mo ', 'Zhang ', 'San ', 'Shang ', 'Xia ', 'Ji ', 'Bu ', 'Yu ', 'Mian ', + 'Gai ', 'Chou ', 'Chou ', 'Zhuan ', 'Qie ', 'Pi ', 'Shi ', 'Shi ', 'Qiu ', 'Bing ', 'Ye ', 'Cong ', 'Dong ', 'Si ', 'Cheng ', 'Diu ', + 'Qiu ', 'Liang ', 'Diu ', 'You ', 'Liang ', 'Yan ', 'Bing ', 'Sang ', 'Gun ', 'Jiu ', 'Ge ', 'Ya ', 'Qiang ', 'Zhong ', 'Ji ', 'Jie ', + 'Feng ', 'Guan ', 'Chuan ', 'Chan ', 'Lin ', 'Zhuo ', 'Zhu ', 'Ha ', 'Wan ', 'Dan ', 'Wei ', 'Zhu ', 'Jing ', 'Li ', 'Ju ', 'Pie ', + 'Fu ', 'Yi ', 'Yi ', 'Nai ', 'Shime ', 'Jiu ', 'Jiu ', 'Zhe ', 'Yao ', 'Yi ', NULL, 'Zhi ', 'Wu ', 'Zha ', 'Hu ', 'Fa ', + 'Le ', 'Zhong ', 'Ping ', 'Pang ', 'Qiao ', 'Hu ', 'Guai ', 'Cheng ', 'Cheng ', 'Yi ', 'Yin ', NULL, 'Mie ', 'Jiu ', 'Qi ', 'Ye ', + 'Xi ', 'Xiang ', 'Gai ', 'Diu ', 'Hal ', NULL, 'Shu ', 'Twul ', 'Shi ', 'Ji ', 'Nang ', 'Jia ', 'Kel ', 'Shi ', NULL, 'Ol ', + 'Mai ', 'Luan ', 'Cal ', 'Ru ', 'Xue ', 'Yan ', 'Fu ', 'Sha ', 'Na ', 'Gan ', 'Sol ', 'El ', 'Cwul ', NULL, 'Gan ', 'Chi ', + 'Gui ', 'Gan ', 'Luan ', 'Lin ', 'Yi ', 'Jue ', 'Liao ', 'Ma ', 'Yu ', 'Zheng ', 'Shi ', 'Shi ', 'Er ', 'Chu ', 'Yu ', 'Yu ', + 'Yu ', 'Yun ', 'Hu ', 'Qi ', 'Wu ', 'Jing ', 'Si ', 'Sui ', 'Gen ', 'Gen ', 'Ya ', 'Xie ', 'Ya ', 'Qi ', 'Ya ', 'Ji ', + 'Tou ', 'Wang ', 'Kang ', 'Ta ', 'Jiao ', 'Hai ', 'Yi ', 'Chan ', 'Heng ', 'Mu ', NULL, 'Xiang ', 'Jing ', 'Ting ', 'Liang ', 'Xiang ', + 'Jing ', 'Ye ', 'Qin ', 'Bo ', 'You ', 'Xie ', 'Dan ', 'Lian ', 'Duo ', 'Wei ', 'Ren ', 'Ren ', 'Ji ', 'La ', 'Wang ', 'Yi ', + 'Shi ', 'Ren ', 'Le ', 'Ding ', 'Ze ', 'Jin ', 'Pu ', 'Chou ', 'Ba ', 'Zhang ', 'Jin ', 'Jie ', 'Bing ', 'Reng ', 'Cong ', 'Fo ', + 'San ', 'Lun ', 'Sya ', 'Cang ', 'Zi ', 'Shi ', 'Ta ', 'Zhang ', 'Fu ', 'Xian ', 'Xian ', 'Tuo ', 'Hong ', 'Tong ', 'Ren ', 'Qian ', + 'Gan ', 'Yi ', 'Di ', 'Dai ', 'Ling ', 'Yi ', 'Chao ', 'Chang ', 'Sa ', NULL, 'Yi ', 'Mu ', 'Men ', 'Ren ', 'Jia ', 'Chao ', + 'Yang ', 'Qian ', 'Zhong ', 'Pi ', 'Wan ', 'Wu ', 'Jian ', 'Jie ', 'Yao ', 'Feng ', 'Cang ', 'Ren ', 'Wang ', 'Fen ', 'Di ', 'Fang '), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/x4f.php b/NEUE DATEIEN/includes/classes/transliteration/x4f.php new file mode 100644 index 0000000..21dc483 --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/x4f.php @@ -0,0 +1,21 @@ + array('Zhong ', 'Qi ', 'Pei ', 'Yu ', 'Diao ', 'Dun ', 'Wen ', 'Yi ', 'Xin ', 'Kang ', 'Yi ', 'Ji ', 'Ai ', 'Wu ', 'Ji ', 'Fu ', + 'Fa ', 'Xiu ', 'Jin ', 'Bei ', 'Dan ', 'Fu ', 'Tang ', 'Zhong ', 'You ', 'Huo ', 'Hui ', 'Yu ', 'Cui ', 'Chuan ', 'San ', 'Wei ', + 'Chuan ', 'Che ', 'Ya ', 'Xian ', 'Shang ', 'Chang ', 'Lun ', 'Cang ', 'Xun ', 'Xin ', 'Wei ', 'Zhu ', NULL, 'Xuan ', 'Nu ', 'Bo ', + 'Gu ', 'Ni ', 'Ni ', 'Xie ', 'Ban ', 'Xu ', 'Ling ', 'Zhou ', 'Shen ', 'Qu ', 'Si ', 'Beng ', 'Si ', 'Jia ', 'Pi ', 'Yi ', + 'Si ', 'Ai ', 'Zheng ', 'Dian ', 'Han ', 'Mai ', 'Dan ', 'Zhu ', 'Bu ', 'Qu ', 'Bi ', 'Shao ', 'Ci ', 'Wei ', 'Di ', 'Zhu ', + 'Zuo ', 'You ', 'Yang ', 'Ti ', 'Zhan ', 'He ', 'Bi ', 'Tuo ', 'She ', 'Yu ', 'Yi ', 'Fo ', 'Zuo ', 'Kou ', 'Ning ', 'Tong ', + 'Ni ', 'Xuan ', 'Qu ', 'Yong ', 'Wa ', 'Qian ', NULL, 'Ka ', NULL, 'Pei ', 'Huai ', 'He ', 'Lao ', 'Xiang ', 'Ge ', 'Yang ', + 'Bai ', 'Fa ', 'Ming ', 'Jia ', 'Er ', 'Bing ', 'Ji ', 'Hen ', 'Huo ', 'Gui ', 'Quan ', 'Tiao ', 'Jiao ', 'Ci ', 'Yi ', 'Shi ', + 'Xing ', 'Shen ', 'Tuo ', 'Kan ', 'Zhi ', 'Gai ', 'Lai ', 'Yi ', 'Chi ', 'Kua ', 'Guang ', 'Li ', 'Yin ', 'Shi ', 'Mi ', 'Zhu ', + 'Xu ', 'You ', 'An ', 'Lu ', 'Mou ', 'Er ', 'Lun ', 'Tong ', 'Cha ', 'Chi ', 'Xun ', 'Gong ', 'Zhou ', 'Yi ', 'Ru ', 'Jian ', + 'Xia ', 'Jia ', 'Zai ', 'Lu ', 'Ko ', 'Jiao ', 'Zhen ', 'Ce ', 'Qiao ', 'Kuai ', 'Chai ', 'Ning ', 'Nong ', 'Jin ', 'Wu ', 'Hou ', + 'Jiong ', 'Cheng ', 'Zhen ', 'Zuo ', 'Chou ', 'Qin ', 'Lu ', 'Ju ', 'Shu ', 'Ting ', 'Shen ', 'Tuo ', 'Bo ', 'Nan ', 'Hao ', 'Bian ', + 'Tui ', 'Yu ', 'Xi ', 'Cu ', 'E ', 'Qiu ', 'Xu ', 'Kuang ', 'Ku ', 'Wu ', 'Jun ', 'Yi ', 'Fu ', 'Lang ', 'Zu ', 'Qiao ', + 'Li ', 'Yong ', 'Hun ', 'Jing ', 'Xian ', 'San ', 'Pai ', 'Su ', 'Fu ', 'Xi ', 'Li ', 'Fu ', 'Ping ', 'Bao ', 'Yu ', 'Si ', + 'Xia ', 'Xin ', 'Xiu ', 'Yu ', 'Ti ', 'Che ', 'Chou ', NULL, 'Yan ', 'Lia ', 'Li ', 'Lai ', NULL, 'Jian ', 'Xiu ', 'Fu ', + 'He ', 'Ju ', 'Xiao ', 'Pai ', 'Jian ', 'Biao ', 'Chu ', 'Fei ', 'Feng ', 'Ya ', 'An ', 'Bei ', 'Yu ', 'Xin ', 'Bi ', 'Jian '), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/x50.php b/NEUE DATEIEN/includes/classes/transliteration/x50.php new file mode 100644 index 0000000..eee285e --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/x50.php @@ -0,0 +1,21 @@ + array('Chang ', 'Chi ', 'Bing ', 'Zan ', 'Yao ', 'Cui ', 'Lia ', 'Wan ', 'Lai ', 'Cang ', 'Zong ', 'Ge ', 'Guan ', 'Bei ', 'Tian ', 'Shu ', + 'Shu ', 'Men ', 'Dao ', 'Tan ', 'Jue ', 'Chui ', 'Xing ', 'Peng ', 'Tang ', 'Hou ', 'Yi ', 'Qi ', 'Ti ', 'Gan ', 'Jing ', 'Jie ', + 'Sui ', 'Chang ', 'Jie ', 'Fang ', 'Zhi ', 'Kong ', 'Juan ', 'Zong ', 'Ju ', 'Qian ', 'Ni ', 'Lun ', 'Zhuo ', 'Wei ', 'Luo ', 'Song ', + 'Leng ', 'Hun ', 'Dong ', 'Zi ', 'Ben ', 'Wu ', 'Ju ', 'Nai ', 'Cai ', 'Jian ', 'Zhai ', 'Ye ', 'Zhi ', 'Sha ', 'Qing ', NULL, + 'Ying ', 'Cheng ', 'Jian ', 'Yan ', 'Nuan ', 'Zhong ', 'Chun ', 'Jia ', 'Jie ', 'Wei ', 'Yu ', 'Bing ', 'Ruo ', 'Ti ', 'Wei ', 'Pian ', + 'Yan ', 'Feng ', 'Tang ', 'Wo ', 'E ', 'Xie ', 'Che ', 'Sheng ', 'Kan ', 'Di ', 'Zuo ', 'Cha ', 'Ting ', 'Bei ', 'Ye ', 'Huang ', + 'Yao ', 'Zhan ', 'Chou ', 'Yan ', 'You ', 'Jian ', 'Xu ', 'Zha ', 'Ci ', 'Fu ', 'Bi ', 'Zhi ', 'Zong ', 'Mian ', 'Ji ', 'Yi ', + 'Xie ', 'Xun ', 'Si ', 'Duan ', 'Ce ', 'Zhen ', 'Ou ', 'Tou ', 'Tou ', 'Bei ', 'Za ', 'Lu ', 'Jie ', 'Wei ', 'Fen ', 'Chang ', + 'Gui ', 'Sou ', 'Zhi ', 'Su ', 'Xia ', 'Fu ', 'Yuan ', 'Rong ', 'Li ', 'Ru ', 'Yun ', 'Gou ', 'Ma ', 'Bang ', 'Dian ', 'Tang ', + 'Hao ', 'Jie ', 'Xi ', 'Shan ', 'Qian ', 'Jue ', 'Cang ', 'Chu ', 'San ', 'Bei ', 'Xiao ', 'Yong ', 'Yao ', 'Tan ', 'Suo ', 'Yang ', + 'Fa ', 'Bing ', 'Jia ', 'Dai ', 'Zai ', 'Tang ', NULL, 'Bin ', 'Chu ', 'Nuo ', 'Can ', 'Lei ', 'Cui ', 'Yong ', 'Zao ', 'Zong ', + 'Peng ', 'Song ', 'Ao ', 'Chuan ', 'Yu ', 'Zhai ', 'Cou ', 'Shang ', 'Qiang ', 'Jing ', 'Chi ', 'Sha ', 'Han ', 'Zhang ', 'Qing ', 'Yan ', + 'Di ', 'Xi ', 'Lu ', 'Bei ', 'Piao ', 'Jin ', 'Lian ', 'Lu ', 'Man ', 'Qian ', 'Xian ', 'Tan ', 'Ying ', 'Dong ', 'Zhuan ', 'Xiang ', + 'Shan ', 'Qiao ', 'Jiong ', 'Tui ', 'Zun ', 'Pu ', 'Xi ', 'Lao ', 'Chang ', 'Guang ', 'Liao ', 'Qi ', 'Deng ', 'Chan ', 'Wei ', 'Ji ', + 'Fan ', 'Hui ', 'Chuan ', 'Jian ', 'Dan ', 'Jiao ', 'Jiu ', 'Seng ', 'Fen ', 'Xian ', 'Jue ', 'E ', 'Jiao ', 'Jian ', 'Tong ', 'Lin ', + 'Bo ', 'Gu ', NULL, 'Su ', 'Xian ', 'Jiang ', 'Min ', 'Ye ', 'Jin ', 'Jia ', 'Qiao ', 'Pi ', 'Feng ', 'Zhou ', 'Ai ', 'Sai '), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/x51.php b/NEUE DATEIEN/includes/classes/transliteration/x51.php new file mode 100644 index 0000000..3e7de9f --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/x51.php @@ -0,0 +1,21 @@ + array('Yi ', 'Jun ', 'Nong ', 'Chan ', 'Yi ', 'Dang ', 'Jing ', 'Xuan ', 'Kuai ', 'Jian ', 'Chu ', 'Dan ', 'Jiao ', 'Sha ', 'Zai ', NULL, + 'Bin ', 'An ', 'Ru ', 'Tai ', 'Chou ', 'Chai ', 'Lan ', 'Ni ', 'Jin ', 'Qian ', 'Meng ', 'Wu ', 'Ning ', 'Qiong ', 'Ni ', 'Chang ', + 'Lie ', 'Lei ', 'Lu ', 'Kuang ', 'Bao ', 'Du ', 'Biao ', 'Zan ', 'Zhi ', 'Si ', 'You ', 'Hao ', 'Chen ', 'Chen ', 'Li ', 'Teng ', + 'Wei ', 'Long ', 'Chu ', 'Chan ', 'Rang ', 'Shu ', 'Hui ', 'Li ', 'Luo ', 'Zan ', 'Nuo ', 'Tang ', 'Yan ', 'Lei ', 'Nang ', 'Er ', + 'Wu ', 'Yun ', 'Zan ', 'Yuan ', 'Xiong ', 'Chong ', 'Zhao ', 'Xiong ', 'Xian ', 'Guang ', 'Dui ', 'Ke ', 'Dui ', 'Mian ', 'Tu ', 'Chang ', + 'Er ', 'Dui ', 'Er ', 'Xin ', 'Tu ', 'Si ', 'Yan ', 'Yan ', 'Shi ', 'Shi ', 'Dang ', 'Qian ', 'Dou ', 'Fen ', 'Mao ', 'Shen ', + 'Dou ', 'Bai ', 'Jing ', 'Li ', 'Huang ', 'Ru ', 'Wang ', 'Nei ', 'Quan ', 'Liang ', 'Yu ', 'Ba ', 'Gong ', 'Liu ', 'Xi ', NULL, + 'Lan ', 'Gong ', 'Tian ', 'Guan ', 'Xing ', 'Bing ', 'Qi ', 'Ju ', 'Dian ', 'Zi ', 'Ppwun ', 'Yang ', 'Jian ', 'Shou ', 'Ji ', 'Yi ', + 'Ji ', 'Chan ', 'Jiong ', 'Mao ', 'Ran ', 'Nei ', 'Yuan ', 'Mao ', 'Gang ', 'Ran ', 'Ce ', 'Jiong ', 'Ce ', 'Zai ', 'Gua ', 'Jiong ', + 'Mao ', 'Zhou ', 'Mou ', 'Gou ', 'Xu ', 'Mian ', 'Mi ', 'Rong ', 'Yin ', 'Xie ', 'Kan ', 'Jun ', 'Nong ', 'Yi ', 'Mi ', 'Shi ', + 'Guan ', 'Meng ', 'Zhong ', 'Ju ', 'Yuan ', 'Ming ', 'Kou ', 'Lam ', 'Fu ', 'Xie ', 'Mi ', 'Bing ', 'Dong ', 'Tai ', 'Gang ', 'Feng ', + 'Bing ', 'Hu ', 'Chong ', 'Jue ', 'Hu ', 'Kuang ', 'Ye ', 'Leng ', 'Pan ', 'Fu ', 'Min ', 'Dong ', 'Xian ', 'Lie ', 'Xia ', 'Jian ', + 'Jing ', 'Shu ', 'Mei ', 'Tu ', 'Qi ', 'Gu ', 'Zhun ', 'Song ', 'Jing ', 'Liang ', 'Qing ', 'Diao ', 'Ling ', 'Dong ', 'Gan ', 'Jian ', + 'Yin ', 'Cou ', 'Yi ', 'Li ', 'Cang ', 'Ming ', 'Zhuen ', 'Cui ', 'Si ', 'Duo ', 'Jin ', 'Lin ', 'Lin ', 'Ning ', 'Xi ', 'Du ', + 'Ji ', 'Fan ', 'Fan ', 'Fan ', 'Feng ', 'Ju ', 'Chu ', 'Tako ', 'Feng ', 'Mok ', 'Ci ', 'Fu ', 'Feng ', 'Ping ', 'Feng ', 'Kai ', + 'Huang ', 'Kai ', 'Gan ', 'Deng ', 'Ping ', 'Qu ', 'Xiong ', 'Kuai ', 'Tu ', 'Ao ', 'Chu ', 'Ji ', 'Dang ', 'Han ', 'Han ', 'Zao '), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/x52.php b/NEUE DATEIEN/includes/classes/transliteration/x52.php new file mode 100644 index 0000000..a67c0b7 --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/x52.php @@ -0,0 +1,21 @@ + array('Dao ', 'Diao ', 'Dao ', 'Ren ', 'Ren ', 'Chuang ', 'Fen ', 'Qie ', 'Yi ', 'Ji ', 'Kan ', 'Qian ', 'Cun ', 'Chu ', 'Wen ', 'Ji ', + 'Dan ', 'Xing ', 'Hua ', 'Wan ', 'Jue ', 'Li ', 'Yue ', 'Lie ', 'Liu ', 'Ze ', 'Gang ', 'Chuang ', 'Fu ', 'Chu ', 'Qu ', 'Ju ', + 'Shan ', 'Min ', 'Ling ', 'Zhong ', 'Pan ', 'Bie ', 'Jie ', 'Jie ', 'Bao ', 'Li ', 'Shan ', 'Bie ', 'Chan ', 'Jing ', 'Gua ', 'Gen ', + 'Dao ', 'Chuang ', 'Kui ', 'Ku ', 'Duo ', 'Er ', 'Zhi ', 'Shua ', 'Quan ', 'Cha ', 'Ci ', 'Ke ', 'Jie ', 'Gui ', 'Ci ', 'Gui ', + 'Kai ', 'Duo ', 'Ji ', 'Ti ', 'Jing ', 'Lou ', 'Gen ', 'Ze ', 'Yuan ', 'Cuo ', 'Xue ', 'Ke ', 'La ', 'Qian ', 'Cha ', 'Chuang ', + 'Gua ', 'Jian ', 'Cuo ', 'Li ', 'Ti ', 'Fei ', 'Pou ', 'Chan ', 'Qi ', 'Chuang ', 'Zi ', 'Gang ', 'Wan ', 'Bo ', 'Ji ', 'Duo ', + 'Qing ', 'Yan ', 'Zhuo ', 'Jian ', 'Ji ', 'Bo ', 'Yan ', 'Ju ', 'Huo ', 'Sheng ', 'Jian ', 'Duo ', 'Duan ', 'Wu ', 'Gua ', 'Fu ', + 'Sheng ', 'Jian ', 'Ge ', 'Zha ', 'Kai ', 'Chuang ', 'Juan ', 'Chan ', 'Tuan ', 'Lu ', 'Li ', 'Fou ', 'Shan ', 'Piao ', 'Kou ', 'Jiao ', + 'Gua ', 'Qiao ', 'Jue ', 'Hua ', 'Zha ', 'Zhuo ', 'Lian ', 'Ju ', 'Pi ', 'Liu ', 'Gui ', 'Jiao ', 'Gui ', 'Jian ', 'Jian ', 'Tang ', + 'Huo ', 'Ji ', 'Jian ', 'Yi ', 'Jian ', 'Zhi ', 'Chan ', 'Cuan ', 'Mo ', 'Li ', 'Zhu ', 'Li ', 'Ya ', 'Quan ', 'Ban ', 'Gong ', + 'Jia ', 'Wu ', 'Mai ', 'Lie ', 'Jin ', 'Keng ', 'Xie ', 'Zhi ', 'Dong ', 'Zhu ', 'Nu ', 'Jie ', 'Qu ', 'Shao ', 'Yi ', 'Zhu ', + 'Miao ', 'Li ', 'Jing ', 'Lao ', 'Lao ', 'Juan ', 'Kou ', 'Yang ', 'Wa ', 'Xiao ', 'Mou ', 'Kuang ', 'Jie ', 'Lie ', 'He ', 'Shi ', + 'Ke ', 'Jing ', 'Hao ', 'Bo ', 'Min ', 'Chi ', 'Lang ', 'Yong ', 'Yong ', 'Mian ', 'Ke ', 'Xun ', 'Juan ', 'Qing ', 'Lu ', 'Pou ', + 'Meng ', 'Lai ', 'Le ', 'Kai ', 'Mian ', 'Dong ', 'Xu ', 'Xu ', 'Kan ', 'Wu ', 'Yi ', 'Xun ', 'Weng ', 'Sheng ', 'Lao ', 'Mu ', + 'Lu ', 'Piao ', 'Shi ', 'Ji ', 'Qin ', 'Qiang ', 'Jiao ', 'Quan ', 'Yang ', 'Yi ', 'Jue ', 'Fan ', 'Juan ', 'Tong ', 'Ju ', 'Dan ', + 'Xie ', 'Mai ', 'Xun ', 'Xun ', 'Lu ', 'Li ', 'Che ', 'Rang ', 'Quan ', 'Bao ', 'Shao ', 'Yun ', 'Jiu ', 'Bao ', 'Gou ', 'Wu '), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/x53.php b/NEUE DATEIEN/includes/classes/transliteration/x53.php new file mode 100644 index 0000000..d01bd8f --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/x53.php @@ -0,0 +1,21 @@ + array('Yun ', 'Mwun ', 'Nay ', 'Gai ', 'Gai ', 'Bao ', 'Cong ', NULL, 'Xiong ', 'Peng ', 'Ju ', 'Tao ', 'Ge ', 'Pu ', 'An ', 'Pao ', + 'Fu ', 'Gong ', 'Da ', 'Jiu ', 'Qiong ', 'Bi ', 'Hua ', 'Bei ', 'Nao ', 'Chi ', 'Fang ', 'Jiu ', 'Yi ', 'Za ', 'Jiang ', 'Kang ', + 'Jiang ', 'Kuang ', 'Hu ', 'Xia ', 'Qu ', 'Bian ', 'Gui ', 'Qie ', 'Zang ', 'Kuang ', 'Fei ', 'Hu ', 'Tou ', 'Gui ', 'Gui ', 'Hui ', + 'Dan ', 'Gui ', 'Lian ', 'Lian ', 'Suan ', 'Du ', 'Jiu ', 'Qu ', 'Xi ', 'Pi ', 'Qu ', 'Yi ', 'Qia ', 'Yan ', 'Bian ', 'Ni ', + 'Qu ', 'Shi ', 'Xin ', 'Qian ', 'Nian ', 'Sa ', 'Zu ', 'Sheng ', 'Wu ', 'Hui ', 'Ban ', 'Shi ', 'Xi ', 'Wan ', 'Hua ', 'Xie ', + 'Wan ', 'Bei ', 'Zu ', 'Zhuo ', 'Xie ', 'Dan ', 'Mai ', 'Nan ', 'Dan ', 'Ji ', 'Bo ', 'Shuai ', 'Bu ', 'Kuang ', 'Bian ', 'Bu ', + 'Zhan ', 'Qia ', 'Lu ', 'You ', 'Lu ', 'Xi ', 'Gua ', 'Wo ', 'Xie ', 'Jie ', 'Jie ', 'Wei ', 'Ang ', 'Qiong ', 'Zhi ', 'Mao ', + 'Yin ', 'Wei ', 'Shao ', 'Ji ', 'Que ', 'Luan ', 'Shi ', 'Juan ', 'Xie ', 'Xu ', 'Jin ', 'Que ', 'Wu ', 'Ji ', 'E ', 'Qing ', + 'Xi ', NULL, 'Han ', 'Zhan ', 'E ', 'Ting ', 'Li ', 'Zhe ', 'Han ', 'Li ', 'Ya ', 'Ya ', 'Yan ', 'She ', 'Zhi ', 'Zha ', + 'Pang ', NULL, 'He ', 'Ya ', 'Zhi ', 'Ce ', 'Pang ', 'Ti ', 'Li ', 'She ', 'Hou ', 'Ting ', 'Zui ', 'Cuo ', 'Fei ', 'Yuan ', + 'Ce ', 'Yuan ', 'Xiang ', 'Yan ', 'Li ', 'Jue ', 'Sha ', 'Dian ', 'Chu ', 'Jiu ', 'Qin ', 'Ao ', 'Gui ', 'Yan ', 'Si ', 'Li ', + 'Chang ', 'Lan ', 'Li ', 'Yan ', 'Yan ', 'Yuan ', 'Si ', 'Gong ', 'Lin ', 'Qiu ', 'Qu ', 'Qu ', 'Uk ', 'Lei ', 'Du ', 'Xian ', + 'Zhuan ', 'San ', 'Can ', 'Can ', 'Can ', 'Can ', 'Ai ', 'Dai ', 'You ', 'Cha ', 'Ji ', 'You ', 'Shuang ', 'Fan ', 'Shou ', 'Guai ', + 'Ba ', 'Fa ', 'Ruo ', 'Shi ', 'Shu ', 'Zhuo ', 'Qu ', 'Shou ', 'Bian ', 'Xu ', 'Jia ', 'Pan ', 'Sou ', 'Gao ', 'Wei ', 'Sou ', + 'Die ', 'Rui ', 'Cong ', 'Kou ', 'Gu ', 'Ju ', 'Ling ', 'Gua ', 'Tao ', 'Kou ', 'Zhi ', 'Jiao ', 'Zhao ', 'Ba ', 'Ding ', 'Ke ', + 'Tai ', 'Chi ', 'Shi ', 'You ', 'Qiu ', 'Po ', 'Xie ', 'Hao ', 'Si ', 'Tan ', 'Chi ', 'Le ', 'Diao ', 'Ji ', NULL, 'Hong '), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/x54.php b/NEUE DATEIEN/includes/classes/transliteration/x54.php new file mode 100644 index 0000000..dd52cf6 --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/x54.php @@ -0,0 +1,21 @@ + array('Mie ', 'Xu ', 'Mang ', 'Chi ', 'Ge ', 'Xuan ', 'Yao ', 'Zi ', 'He ', 'Ji ', 'Diao ', 'Cun ', 'Tong ', 'Ming ', 'Hou ', 'Li ', + 'Tu ', 'Xiang ', 'Zha ', 'Xia ', 'Ye ', 'Lu ', 'A ', 'Ma ', 'Ou ', 'Xue ', 'Yi ', 'Jun ', 'Chou ', 'Lin ', 'Tun ', 'Yin ', + 'Fei ', 'Bi ', 'Qin ', 'Qin ', 'Jie ', 'Bu ', 'Fou ', 'Ba ', 'Dun ', 'Fen ', 'E ', 'Han ', 'Ting ', 'Hang ', 'Shun ', 'Qi ', + 'Hong ', 'Zhi ', 'Shen ', 'Wu ', 'Wu ', 'Chao ', 'Ne ', 'Xue ', 'Xi ', 'Chui ', 'Dou ', 'Wen ', 'Hou ', 'Ou ', 'Wu ', 'Gao ', + 'Ya ', 'Jun ', 'Lu ', 'E ', 'Ge ', 'Mei ', 'Ai ', 'Qi ', 'Cheng ', 'Wu ', 'Gao ', 'Fu ', 'Jiao ', 'Hong ', 'Chi ', 'Sheng ', + 'Ne ', 'Tun ', 'Fu ', 'Yi ', 'Dai ', 'Ou ', 'Li ', 'Bai ', 'Yuan ', 'Kuai ', NULL, 'Qiang ', 'Wu ', 'E ', 'Shi ', 'Quan ', + 'Pen ', 'Wen ', 'Ni ', 'M ', 'Ling ', 'Ran ', 'You ', 'Di ', 'Zhou ', 'Shi ', 'Zhou ', 'Tie ', 'Xi ', 'Yi ', 'Qi ', 'Ping ', + 'Zi ', 'Gu ', 'Zi ', 'Wei ', 'Xu ', 'He ', 'Nao ', 'Xia ', 'Pei ', 'Yi ', 'Xiao ', 'Shen ', 'Hu ', 'Ming ', 'Da ', 'Qu ', + 'Ju ', 'Gem ', 'Za ', 'Tuo ', 'Duo ', 'Pou ', 'Pao ', 'Bi ', 'Fu ', 'Yang ', 'He ', 'Zha ', 'He ', 'Hai ', 'Jiu ', 'Yong ', + 'Fu ', 'Que ', 'Zhou ', 'Wa ', 'Ka ', 'Gu ', 'Ka ', 'Zuo ', 'Bu ', 'Long ', 'Dong ', 'Ning ', 'Tha ', 'Si ', 'Xian ', 'Huo ', + 'Qi ', 'Er ', 'E ', 'Guang ', 'Zha ', 'Xi ', 'Yi ', 'Lie ', 'Zi ', 'Mie ', 'Mi ', 'Zhi ', 'Yao ', 'Ji ', 'Zhou ', 'Ge ', + 'Shuai ', 'Zan ', 'Xiao ', 'Ke ', 'Hui ', 'Kua ', 'Huai ', 'Tao ', 'Xian ', 'E ', 'Xuan ', 'Xiu ', 'Wai ', 'Yan ', 'Lao ', 'Yi ', + 'Ai ', 'Pin ', 'Shen ', 'Tong ', 'Hong ', 'Xiong ', 'Chi ', 'Wa ', 'Ha ', 'Zai ', 'Yu ', 'Di ', 'Pai ', 'Xiang ', 'Ai ', 'Hen ', + 'Kuang ', 'Ya ', 'Da ', 'Xiao ', 'Bi ', 'Yue ', NULL, 'Hua ', 'Sasou ', 'Kuai ', 'Duo ', NULL, 'Ji ', 'Nong ', 'Mou ', 'Yo ', + 'Hao ', 'Yuan ', 'Long ', 'Pou ', 'Mang ', 'Ge ', 'E ', 'Chi ', 'Shao ', 'Li ', 'Na ', 'Zu ', 'He ', 'Ku ', 'Xiao ', 'Xian ', + 'Lao ', 'Bo ', 'Zhe ', 'Zha ', 'Liang ', 'Ba ', 'Mie ', 'Le ', 'Sui ', 'Fou ', 'Bu ', 'Han ', 'Heng ', 'Geng ', 'Shuo ', 'Ge '), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/x55.php b/NEUE DATEIEN/includes/classes/transliteration/x55.php new file mode 100644 index 0000000..2ae1cba --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/x55.php @@ -0,0 +1,21 @@ + array('You ', 'Yan ', 'Gu ', 'Gu ', 'Bai ', 'Han ', 'Suo ', 'Chun ', 'Yi ', 'Ai ', 'Jia ', 'Tu ', 'Xian ', 'Huan ', 'Li ', 'Xi ', + 'Tang ', 'Zuo ', 'Qiu ', 'Che ', 'Wu ', 'Zao ', 'Ya ', 'Dou ', 'Qi ', 'Di ', 'Qin ', 'Ma ', 'Mal ', 'Hong ', 'Dou ', 'Kes ', + 'Lao ', 'Liang ', 'Suo ', 'Zao ', 'Huan ', 'Lang ', 'Sha ', 'Ji ', 'Zuo ', 'Wo ', 'Feng ', 'Yin ', 'Hu ', 'Qi ', 'Shou ', 'Wei ', + 'Shua ', 'Chang ', 'Er ', 'Li ', 'Qiang ', 'An ', 'Jie ', 'Yo ', 'Nian ', 'Yu ', 'Tian ', 'Lai ', 'Sha ', 'Xi ', 'Tuo ', 'Hu ', + 'Ai ', 'Zhou ', 'Nou ', 'Ken ', 'Zhuo ', 'Zhuo ', 'Shang ', 'Di ', 'Heng ', 'Lan ', 'A ', 'Xiao ', 'Xiang ', 'Tun ', 'Wu ', 'Wen ', + 'Cui ', 'Sha ', 'Hu ', 'Qi ', 'Qi ', 'Tao ', 'Dan ', 'Dan ', 'Ye ', 'Zi ', 'Bi ', 'Cui ', 'Chuo ', 'He ', 'Ya ', 'Qi ', + 'Zhe ', 'Pei ', 'Liang ', 'Xian ', 'Pi ', 'Sha ', 'La ', 'Ze ', 'Qing ', 'Gua ', 'Pa ', 'Zhe ', 'Se ', 'Zhuan ', 'Nie ', 'Guo ', + 'Luo ', 'Yan ', 'Di ', 'Quan ', 'Tan ', 'Bo ', 'Ding ', 'Lang ', 'Xiao ', NULL, 'Tang ', 'Chi ', 'Ti ', 'An ', 'Jiu ', 'Dan ', + 'Ke ', 'Yong ', 'Wei ', 'Nan ', 'Shan ', 'Yu ', 'Zhe ', 'La ', 'Jie ', 'Hou ', 'Han ', 'Die ', 'Zhou ', 'Chai ', 'Wai ', 'Re ', + 'Yu ', 'Yin ', 'Zan ', 'Yao ', 'Wo ', 'Mian ', 'Hu ', 'Yun ', 'Chuan ', 'Hui ', 'Huan ', 'Huan ', 'Xi ', 'He ', 'Ji ', 'Kui ', + 'Zhong ', 'Wei ', 'Sha ', 'Xu ', 'Huang ', 'Du ', 'Nie ', 'Xuan ', 'Liang ', 'Yu ', 'Sang ', 'Chi ', 'Qiao ', 'Yan ', 'Dan ', 'Pen ', + 'Can ', 'Li ', 'Yo ', 'Zha ', 'Wei ', 'Miao ', 'Ying ', 'Pen ', 'Phos ', 'Kui ', 'Xi ', 'Yu ', 'Jie ', 'Lou ', 'Ku ', 'Sao ', + 'Huo ', 'Ti ', 'Yao ', 'He ', 'A ', 'Xiu ', 'Qiang ', 'Se ', 'Yong ', 'Su ', 'Hong ', 'Xie ', 'Yi ', 'Suo ', 'Ma ', 'Cha ', + 'Hai ', 'Ke ', 'Ta ', 'Sang ', 'Tian ', 'Ru ', 'Sou ', 'Wa ', 'Ji ', 'Pang ', 'Wu ', 'Xian ', 'Shi ', 'Ge ', 'Zi ', 'Jie ', + 'Luo ', 'Weng ', 'Wa ', 'Si ', 'Chi ', 'Hao ', 'Suo ', 'Jia ', 'Hai ', 'Suo ', 'Qin ', 'Nie ', 'He ', 'Cis ', 'Sai ', 'Ng ', + 'Ge ', 'Na ', 'Dia ', 'Ai ', NULL, 'Tong ', 'Bi ', 'Ao ', 'Ao ', 'Lian ', 'Cui ', 'Zhe ', 'Mo ', 'Sou ', 'Sou ', 'Tan '), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/x56.php b/NEUE DATEIEN/includes/classes/transliteration/x56.php new file mode 100644 index 0000000..1de28c3 --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/x56.php @@ -0,0 +1,21 @@ + array('Di ', 'Qi ', 'Jiao ', 'Chong ', 'Jiao ', 'Kai ', 'Tan ', 'San ', 'Cao ', 'Jia ', 'Ai ', 'Xiao ', 'Piao ', 'Lou ', 'Ga ', 'Gu ', + 'Xiao ', 'Hu ', 'Hui ', 'Guo ', 'Ou ', 'Xian ', 'Ze ', 'Chang ', 'Xu ', 'Po ', 'De ', 'Ma ', 'Ma ', 'Hu ', 'Lei ', 'Du ', + 'Ga ', 'Tang ', 'Ye ', 'Beng ', 'Ying ', 'Saai ', 'Jiao ', 'Mi ', 'Xiao ', 'Hua ', 'Mai ', 'Ran ', 'Zuo ', 'Peng ', 'Lao ', 'Xiao ', + 'Ji ', 'Zhu ', 'Chao ', 'Kui ', 'Zui ', 'Xiao ', 'Si ', 'Hao ', 'Fu ', 'Liao ', 'Qiao ', 'Xi ', 'Xiu ', 'Tan ', 'Tan ', 'Mo ', + 'Xun ', 'E ', 'Zun ', 'Fan ', 'Chi ', 'Hui ', 'Zan ', 'Chuang ', 'Cu ', 'Dan ', 'Yu ', 'Tun ', 'Cheng ', 'Jiao ', 'Ye ', 'Xi ', + 'Qi ', 'Hao ', 'Lian ', 'Xu ', 'Deng ', 'Hui ', 'Yin ', 'Pu ', 'Jue ', 'Qin ', 'Xun ', 'Nie ', 'Lu ', 'Si ', 'Yan ', 'Ying ', + 'Da ', 'Dan ', 'Yu ', 'Zhou ', 'Jin ', 'Nong ', 'Yue ', 'Hui ', 'Qi ', 'E ', 'Zao ', 'Yi ', 'Shi ', 'Jiao ', 'Yuan ', 'Ai ', + 'Yong ', 'Jue ', 'Kuai ', 'Yu ', 'Pen ', 'Dao ', 'Ge ', 'Xin ', 'Dun ', 'Dang ', 'Sin ', 'Sai ', 'Pi ', 'Pi ', 'Yin ', 'Zui ', + 'Ning ', 'Di ', 'Lan ', 'Ta ', 'Huo ', 'Ru ', 'Hao ', 'Xia ', 'Ya ', 'Duo ', 'Xi ', 'Chou ', 'Ji ', 'Jin ', 'Hao ', 'Ti ', + 'Chang ', NULL, NULL, 'Ca ', 'Ti ', 'Lu ', 'Hui ', 'Bo ', 'You ', 'Nie ', 'Yin ', 'Hu ', 'Mo ', 'Huang ', 'Zhe ', 'Li ', + 'Liu ', 'Haai ', 'Nang ', 'Xiao ', 'Mo ', 'Yan ', 'Li ', 'Lu ', 'Long ', 'Fu ', 'Dan ', 'Chen ', 'Pin ', 'Pi ', 'Xiang ', 'Huo ', + 'Mo ', 'Xi ', 'Duo ', 'Ku ', 'Yan ', 'Chan ', 'Ying ', 'Rang ', 'Dian ', 'La ', 'Ta ', 'Xiao ', 'Jiao ', 'Chuo ', 'Huan ', 'Huo ', + 'Zhuan ', 'Nie ', 'Xiao ', 'Ca ', 'Li ', 'Chan ', 'Chai ', 'Li ', 'Yi ', 'Luo ', 'Nang ', 'Zan ', 'Su ', 'Xi ', 'So ', 'Jian ', + 'Za ', 'Zhu ', 'Lan ', 'Nie ', 'Nang ', NULL, NULL, 'Wei ', 'Hui ', 'Yin ', 'Qiu ', 'Si ', 'Nin ', 'Jian ', 'Hui ', 'Xin ', + 'Yin ', 'Nan ', 'Tuan ', 'Tuan ', 'Dun ', 'Kang ', 'Yuan ', 'Jiong ', 'Pian ', 'Yun ', 'Cong ', 'Hu ', 'Hui ', 'Yuan ', 'You ', 'Guo ', + 'Kun ', 'Cong ', 'Wei ', 'Tu ', 'Wei ', 'Lun ', 'Guo ', 'Qun ', 'Ri ', 'Ling ', 'Gu ', 'Guo ', 'Tai ', 'Guo ', 'Tu ', 'You '), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/x57.php b/NEUE DATEIEN/includes/classes/transliteration/x57.php new file mode 100644 index 0000000..1c9c9ed --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/x57.php @@ -0,0 +1,21 @@ + array('Guo ', 'Yin ', 'Hun ', 'Pu ', 'Yu ', 'Han ', 'Yuan ', 'Lun ', 'Quan ', 'Yu ', 'Qing ', 'Guo ', 'Chuan ', 'Wei ', 'Yuan ', 'Quan ', + 'Ku ', 'Fu ', 'Yuan ', 'Yuan ', 'E ', 'Tu ', 'Tu ', 'Tu ', 'Tuan ', 'Lue ', 'Hui ', 'Yi ', 'Yuan ', 'Luan ', 'Luan ', 'Tu ', + 'Ya ', 'Tu ', 'Ting ', 'Sheng ', 'Pu ', 'Lu ', 'Iri ', 'Ya ', 'Zai ', 'Wei ', 'Ge ', 'Yu ', 'Wu ', 'Gui ', 'Pi ', 'Yi ', + 'Di ', 'Qian ', 'Qian ', 'Zhen ', 'Zhuo ', 'Dang ', 'Qia ', 'Akutsu ', 'Yama ', 'Kuang ', 'Chang ', 'Qi ', 'Nie ', 'Mo ', 'Ji ', 'Jia ', + 'Zhi ', 'Zhi ', 'Ban ', 'Xun ', 'Tou ', 'Qin ', 'Fen ', 'Jun ', 'Keng ', 'Tun ', 'Fang ', 'Fen ', 'Ben ', 'Tan ', 'Kan ', 'Pi ', + 'Zuo ', 'Keng ', 'Bi ', 'Xing ', 'Di ', 'Jing ', 'Ji ', 'Kuai ', 'Di ', 'Jing ', 'Jian ', 'Tan ', 'Li ', 'Ba ', 'Wu ', 'Fen ', + 'Zhui ', 'Po ', 'Pan ', 'Tang ', 'Kun ', 'Qu ', 'Tan ', 'Zhi ', 'Tuo ', 'Gan ', 'Ping ', 'Dian ', 'Gua ', 'Ni ', 'Tai ', 'Pi ', + 'Jiong ', 'Yang ', 'Fo ', 'Ao ', 'Liu ', 'Qiu ', 'Mu ', 'Ke ', 'Gou ', 'Xue ', 'Ba ', 'Chi ', 'Che ', 'Ling ', 'Zhu ', 'Fu ', + 'Hu ', 'Zhi ', 'Chui ', 'La ', 'Long ', 'Long ', 'Lu ', 'Ao ', 'Tay ', 'Pao ', NULL, 'Xing ', 'Dong ', 'Ji ', 'Ke ', 'Lu ', + 'Ci ', 'Chi ', 'Lei ', 'Gai ', 'Yin ', 'Hou ', 'Dui ', 'Zhao ', 'Fu ', 'Guang ', 'Yao ', 'Duo ', 'Duo ', 'Gui ', 'Cha ', 'Yang ', + 'Yin ', 'Fa ', 'Gou ', 'Yuan ', 'Die ', 'Xie ', 'Ken ', 'Jiong ', 'Shou ', 'E ', 'Ha ', 'Dian ', 'Hong ', 'Wu ', 'Kua ', NULL, + 'Tao ', 'Dang ', 'Kai ', 'Gake ', 'Nao ', 'An ', 'Xing ', 'Xian ', 'Huan ', 'Bang ', 'Pei ', 'Ba ', 'Yi ', 'Yin ', 'Han ', 'Xu ', + 'Chui ', 'Cen ', 'Geng ', 'Ai ', 'Peng ', 'Fang ', 'Que ', 'Yong ', 'Xun ', 'Jia ', 'Di ', 'Mai ', 'Lang ', 'Xuan ', 'Cheng ', 'Yan ', + 'Jin ', 'Zhe ', 'Lei ', 'Lie ', 'Bu ', 'Cheng ', 'Gomi ', 'Bu ', 'Shi ', 'Xun ', 'Guo ', 'Jiong ', 'Ye ', 'Nian ', 'Di ', 'Yu ', + 'Bu ', 'Ya ', 'Juan ', 'Sui ', 'Pi ', 'Cheng ', 'Wan ', 'Ju ', 'Lun ', 'Zheng ', 'Kong ', 'Chong ', 'Dong ', 'Dai ', 'Tan ', 'An ', + 'Cai ', 'Shu ', 'Beng ', 'Kan ', 'Zhi ', 'Duo ', 'Yi ', 'Zhi ', 'Yi ', 'Pei ', 'Ji ', 'Zhun ', 'Qi ', 'Sao ', 'Ju ', 'Ni '), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/x58.php b/NEUE DATEIEN/includes/classes/transliteration/x58.php new file mode 100644 index 0000000..3fa57b8 --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/x58.php @@ -0,0 +1,21 @@ + array('Ku ', 'Ke ', 'Tang ', 'Kun ', 'Ni ', 'Jian ', 'Dui ', 'Jin ', 'Gang ', 'Yu ', 'E ', 'Peng ', 'Gu ', 'Tu ', 'Leng ', NULL, + 'Ya ', 'Qian ', NULL, 'An ', NULL, 'Duo ', 'Nao ', 'Tu ', 'Cheng ', 'Yin ', 'Hun ', 'Bi ', 'Lian ', 'Guo ', 'Die ', 'Zhuan ', + 'Hou ', 'Bao ', 'Bao ', 'Yu ', 'Di ', 'Mao ', 'Jie ', 'Ruan ', 'E ', 'Geng ', 'Kan ', 'Zong ', 'Yu ', 'Huang ', 'E ', 'Yao ', + 'Yan ', 'Bao ', 'Ji ', 'Mei ', 'Chang ', 'Du ', 'Tuo ', 'Yin ', 'Feng ', 'Zhong ', 'Jie ', 'Zhen ', 'Feng ', 'Gang ', 'Chuan ', 'Jian ', + 'Pyeng ', 'Toride ', 'Xiang ', 'Huang ', 'Leng ', 'Duan ', NULL, 'Xuan ', 'Ji ', 'Ji ', 'Kuai ', 'Ying ', 'Ta ', 'Cheng ', 'Yong ', 'Kai ', + 'Su ', 'Su ', 'Shi ', 'Mi ', 'Ta ', 'Weng ', 'Cheng ', 'Tu ', 'Tang ', 'Que ', 'Zhong ', 'Li ', 'Peng ', 'Bang ', 'Sai ', 'Zang ', + 'Dui ', 'Tian ', 'Wu ', 'Cheng ', 'Xun ', 'Ge ', 'Zhen ', 'Ai ', 'Gong ', 'Yan ', 'Kan ', 'Tian ', 'Yuan ', 'Wen ', 'Xie ', 'Liu ', + 'Ama ', 'Lang ', 'Chang ', 'Peng ', 'Beng ', 'Chen ', 'Cu ', 'Lu ', 'Ou ', 'Qian ', 'Mei ', 'Mo ', 'Zhuan ', 'Shuang ', 'Shu ', 'Lou ', + 'Chi ', 'Man ', 'Biao ', 'Jing ', 'Qi ', 'Shu ', 'Di ', 'Zhang ', 'Kan ', 'Yong ', 'Dian ', 'Chen ', 'Zhi ', 'Xi ', 'Guo ', 'Qiang ', + 'Jin ', 'Di ', 'Shang ', 'Mu ', 'Cui ', 'Yan ', 'Ta ', 'Zeng ', 'Qi ', 'Qiang ', 'Liang ', NULL, 'Zhui ', 'Qiao ', 'Zeng ', 'Xu ', + 'Shan ', 'Shan ', 'Ba ', 'Pu ', 'Kuai ', 'Dong ', 'Fan ', 'Que ', 'Mo ', 'Dun ', 'Dun ', 'Dun ', 'Di ', 'Sheng ', 'Duo ', 'Duo ', + 'Tan ', 'Deng ', 'Wu ', 'Fen ', 'Huang ', 'Tan ', 'Da ', 'Ye ', 'Sho ', 'Mama ', 'Yu ', 'Qiang ', 'Ji ', 'Qiao ', 'Ken ', 'Yi ', + 'Pi ', 'Bi ', 'Dian ', 'Jiang ', 'Ye ', 'Yong ', 'Bo ', 'Tan ', 'Lan ', 'Ju ', 'Huai ', 'Dang ', 'Rang ', 'Qian ', 'Xun ', 'Lan ', + 'Xi ', 'He ', 'Ai ', 'Ya ', 'Dao ', 'Hao ', 'Ruan ', 'Mama ', 'Lei ', 'Kuang ', 'Lu ', 'Yan ', 'Tan ', 'Wei ', 'Huai ', 'Long ', + 'Long ', 'Rui ', 'Li ', 'Lin ', 'Rang ', 'Ten ', 'Xun ', 'Yan ', 'Lei ', 'Ba ', NULL, 'Shi ', 'Ren ', NULL, 'Zhuang ', 'Zhuang ', + 'Sheng ', 'Yi ', 'Mai ', 'Ke ', 'Zhu ', 'Zhuang ', 'Hu ', 'Hu ', 'Kun ', 'Yi ', 'Hu ', 'Xu ', 'Kun ', 'Shou ', 'Mang ', 'Zun '), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/x59.php b/NEUE DATEIEN/includes/classes/transliteration/x59.php new file mode 100644 index 0000000..4a18ef7 --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/x59.php @@ -0,0 +1,21 @@ + array('Shou ', 'Yi ', 'Zhi ', 'Gu ', 'Chu ', 'Jiang ', 'Feng ', 'Bei ', 'Cay ', 'Bian ', 'Sui ', 'Qun ', 'Ling ', 'Fu ', 'Zuo ', 'Xia ', + 'Xiong ', NULL, 'Nao ', 'Xia ', 'Kui ', 'Xi ', 'Wai ', 'Yuan ', 'Mao ', 'Su ', 'Duo ', 'Duo ', 'Ye ', 'Qing ', 'Uys ', 'Gou ', + 'Gou ', 'Qi ', 'Meng ', 'Meng ', 'Yin ', 'Huo ', 'Chen ', 'Da ', 'Ze ', 'Tian ', 'Tai ', 'Fu ', 'Guai ', 'Yao ', 'Yang ', 'Hang ', + 'Gao ', 'Shi ', 'Ben ', 'Tai ', 'Tou ', 'Yan ', 'Bi ', 'Yi ', 'Kua ', 'Jia ', 'Duo ', 'Kwu ', 'Kuang ', 'Yun ', 'Jia ', 'Pa ', + 'En ', 'Lian ', 'Huan ', 'Di ', 'Yan ', 'Pao ', 'Quan ', 'Qi ', 'Nai ', 'Feng ', 'Xie ', 'Fen ', 'Dian ', NULL, 'Kui ', 'Zou ', + 'Huan ', 'Qi ', 'Kai ', 'Zha ', 'Ben ', 'Yi ', 'Jiang ', 'Tao ', 'Zang ', 'Ben ', 'Xi ', 'Xiang ', 'Fei ', 'Diao ', 'Xun ', 'Keng ', + 'Dian ', 'Ao ', 'She ', 'Weng ', 'Pan ', 'Ao ', 'Wu ', 'Ao ', 'Jiang ', 'Lian ', 'Duo ', 'Yun ', 'Jiang ', 'Shi ', 'Fen ', 'Huo ', + 'Bi ', 'Lian ', 'Duo ', 'Nu ', 'Nu ', 'Ding ', 'Nai ', 'Qian ', 'Jian ', 'Ta ', 'Jiu ', 'Nan ', 'Cha ', 'Hao ', 'Xian ', 'Fan ', + 'Ji ', 'Shuo ', 'Ru ', 'Fei ', 'Wang ', 'Hong ', 'Zhuang ', 'Fu ', 'Ma ', 'Dan ', 'Ren ', 'Fu ', 'Jing ', 'Yan ', 'Xie ', 'Wen ', + 'Zhong ', 'Pa ', 'Du ', 'Ji ', 'Keng ', 'Zhong ', 'Yao ', 'Jin ', 'Yun ', 'Miao ', 'Pei ', 'Shi ', 'Yue ', 'Zhuang ', 'Niu ', 'Yan ', + 'Na ', 'Xin ', 'Fen ', 'Bi ', 'Yu ', 'Tuo ', 'Feng ', 'Yuan ', 'Fang ', 'Wu ', 'Yu ', 'Gui ', 'Du ', 'Ba ', 'Ni ', 'Zhou ', + 'Zhuo ', 'Zhao ', 'Da ', 'Nai ', 'Yuan ', 'Tou ', 'Xuan ', 'Zhi ', 'E ', 'Mei ', 'Mo ', 'Qi ', 'Bi ', 'Shen ', 'Qie ', 'E ', + 'He ', 'Xu ', 'Fa ', 'Zheng ', 'Min ', 'Ban ', 'Mu ', 'Fu ', 'Ling ', 'Zi ', 'Zi ', 'Shi ', 'Ran ', 'Shan ', 'Yang ', 'Man ', + 'Jie ', 'Gu ', 'Si ', 'Xing ', 'Wei ', 'Zi ', 'Ju ', 'Shan ', 'Pin ', 'Ren ', 'Yao ', 'Tong ', 'Jiang ', 'Shu ', 'Ji ', 'Gai ', + 'Shang ', 'Kuo ', 'Juan ', 'Jiao ', 'Gou ', 'Mu ', 'Jian ', 'Jian ', 'Yi ', 'Nian ', 'Zhi ', 'Ji ', 'Ji ', 'Xian ', 'Heng ', 'Guang ', + 'Jun ', 'Kua ', 'Yan ', 'Ming ', 'Lie ', 'Pei ', 'Yan ', 'You ', 'Yan ', 'Cha ', 'Shen ', 'Yin ', 'Chi ', 'Gui ', 'Quan ', 'Zi '), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/x5a.php b/NEUE DATEIEN/includes/classes/transliteration/x5a.php new file mode 100644 index 0000000..47ccf0e --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/x5a.php @@ -0,0 +1,21 @@ + array('Song ', 'Wei ', 'Hong ', 'Wa ', 'Lou ', 'Ya ', 'Rao ', 'Jiao ', 'Luan ', 'Ping ', 'Xian ', 'Shao ', 'Li ', 'Cheng ', 'Xiao ', 'Mang ', + 'Fu ', 'Suo ', 'Wu ', 'Wei ', 'Ke ', 'Lai ', 'Chuo ', 'Ding ', 'Niang ', 'Xing ', 'Nan ', 'Yu ', 'Nuo ', 'Pei ', 'Nei ', 'Juan ', + 'Shen ', 'Zhi ', 'Han ', 'Di ', 'Zhuang ', 'E ', 'Pin ', 'Tui ', 'Han ', 'Mian ', 'Wu ', 'Yan ', 'Wu ', 'Xi ', 'Yan ', 'Yu ', + 'Si ', 'Yu ', 'Wa ', NULL, 'Xian ', 'Ju ', 'Qu ', 'Shui ', 'Qi ', 'Xian ', 'Zhui ', 'Dong ', 'Chang ', 'Lu ', 'Ai ', 'E ', + 'E ', 'Lou ', 'Mian ', 'Cong ', 'Pou ', 'Ju ', 'Po ', 'Cai ', 'Ding ', 'Wan ', 'Biao ', 'Xiao ', 'Shu ', 'Qi ', 'Hui ', 'Fu ', + 'E ', 'Wo ', 'Tan ', 'Fei ', 'Wei ', 'Jie ', 'Tian ', 'Ni ', 'Quan ', 'Jing ', 'Hun ', 'Jing ', 'Qian ', 'Dian ', 'Xing ', 'Hu ', + 'Wa ', 'Lai ', 'Bi ', 'Yin ', 'Chou ', 'Chuo ', 'Fu ', 'Jing ', 'Lun ', 'Yan ', 'Lan ', 'Kun ', 'Yin ', 'Ya ', 'Ju ', 'Li ', + 'Dian ', 'Xian ', 'Hwa ', 'Hua ', 'Ying ', 'Chan ', 'Shen ', 'Ting ', 'Dang ', 'Yao ', 'Wu ', 'Nan ', 'Ruo ', 'Jia ', 'Tou ', 'Xu ', + 'Yu ', 'Wei ', 'Ti ', 'Rou ', 'Mei ', 'Dan ', 'Ruan ', 'Qin ', 'Hui ', 'Wu ', 'Qian ', 'Chun ', 'Mao ', 'Fu ', 'Jie ', 'Duan ', + 'Xi ', 'Zhong ', 'Mei ', 'Huang ', 'Mian ', 'An ', 'Ying ', 'Xuan ', 'Jie ', 'Wei ', 'Mei ', 'Yuan ', 'Zhen ', 'Qiu ', 'Ti ', 'Xie ', + 'Tuo ', 'Lian ', 'Mao ', 'Ran ', 'Si ', 'Pian ', 'Wei ', 'Wa ', 'Jiu ', 'Hu ', 'Ao ', NULL, 'Bou ', 'Xu ', 'Tou ', 'Gui ', + 'Zou ', 'Yao ', 'Pi ', 'Xi ', 'Yuan ', 'Ying ', 'Rong ', 'Ru ', 'Chi ', 'Liu ', 'Mei ', 'Pan ', 'Ao ', 'Ma ', 'Gou ', 'Kui ', + 'Qin ', 'Jia ', 'Sao ', 'Zhen ', 'Yuan ', 'Cha ', 'Yong ', 'Ming ', 'Ying ', 'Ji ', 'Su ', 'Niao ', 'Xian ', 'Tao ', 'Pang ', 'Lang ', + 'Nao ', 'Bao ', 'Ai ', 'Pi ', 'Pin ', 'Yi ', 'Piao ', 'Yu ', 'Lei ', 'Xuan ', 'Man ', 'Yi ', 'Zhang ', 'Kang ', 'Yong ', 'Ni ', + 'Li ', 'Di ', 'Gui ', 'Yan ', 'Jin ', 'Zhuan ', 'Chang ', 'Ce ', 'Han ', 'Nen ', 'Lao ', 'Mo ', 'Zhe ', 'Hu ', 'Hu ', 'Ao ', + 'Nen ', 'Qiang ', 'Ma ', 'Pie ', 'Gu ', 'Wu ', 'Jiao ', 'Tuo ', 'Zhan ', 'Mao ', 'Xian ', 'Xian ', 'Mo ', 'Liao ', 'Lian ', 'Hua '), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/x5b.php b/NEUE DATEIEN/includes/classes/transliteration/x5b.php new file mode 100644 index 0000000..a677d58 --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/x5b.php @@ -0,0 +1,21 @@ + array('Gui ', 'Deng ', 'Zhi ', 'Xu ', 'Yi ', 'Hua ', 'Xi ', 'Hui ', 'Rao ', 'Xi ', 'Yan ', 'Chan ', 'Jiao ', 'Mei ', 'Fan ', 'Fan ', + 'Xian ', 'Yi ', 'Wei ', 'Jiao ', 'Fu ', 'Shi ', 'Bi ', 'Shan ', 'Sui ', 'Qiang ', 'Lian ', 'Huan ', 'Xin ', 'Niao ', 'Dong ', 'Yi ', + 'Can ', 'Ai ', 'Niang ', 'Neng ', 'Ma ', 'Tiao ', 'Chou ', 'Jin ', 'Ci ', 'Yu ', 'Pin ', 'Yong ', 'Xu ', 'Nai ', 'Yan ', 'Tai ', + 'Ying ', 'Can ', 'Niao ', 'Wo ', 'Ying ', 'Mian ', 'Kaka ', 'Ma ', 'Shen ', 'Xing ', 'Ni ', 'Du ', 'Liu ', 'Yuan ', 'Lan ', 'Yan ', + 'Shuang ', 'Ling ', 'Jiao ', 'Niang ', 'Lan ', 'Xian ', 'Ying ', 'Shuang ', 'Shuai ', 'Quan ', 'Mi ', 'Li ', 'Luan ', 'Yan ', 'Zhu ', 'Lan ', + 'Zi ', 'Jie ', 'Jue ', 'Jue ', 'Kong ', 'Yun ', 'Zi ', 'Zi ', 'Cun ', 'Sun ', 'Fu ', 'Bei ', 'Zi ', 'Xiao ', 'Xin ', 'Meng ', + 'Si ', 'Tai ', 'Bao ', 'Ji ', 'Gu ', 'Nu ', 'Xue ', NULL, 'Zhuan ', 'Hai ', 'Luan ', 'Sun ', 'Huai ', 'Mie ', 'Cong ', 'Qian ', + 'Shu ', 'Chan ', 'Ya ', 'Zi ', 'Ni ', 'Fu ', 'Zi ', 'Li ', 'Xue ', 'Bo ', 'Ru ', 'Lai ', 'Nie ', 'Nie ', 'Ying ', 'Luan ', + 'Mian ', 'Zhu ', 'Rong ', 'Ta ', 'Gui ', 'Zhai ', 'Qiong ', 'Yu ', 'Shou ', 'An ', 'Tu ', 'Song ', 'Wan ', 'Rou ', 'Yao ', 'Hong ', + 'Yi ', 'Jing ', 'Zhun ', 'Mi ', 'Zhu ', 'Dang ', 'Hong ', 'Zong ', 'Guan ', 'Zhou ', 'Ding ', 'Wan ', 'Yi ', 'Bao ', 'Shi ', 'Shi ', + 'Chong ', 'Shen ', 'Ke ', 'Xuan ', 'Shi ', 'You ', 'Huan ', 'Yi ', 'Tiao ', 'Shi ', 'Xian ', 'Gong ', 'Cheng ', 'Qun ', 'Gong ', 'Xiao ', + 'Zai ', 'Zha ', 'Bao ', 'Hai ', 'Yan ', 'Xiao ', 'Jia ', 'Shen ', 'Chen ', 'Rong ', 'Huang ', 'Mi ', 'Kou ', 'Kuan ', 'Bin ', 'Su ', + 'Cai ', 'Zan ', 'Ji ', 'Yuan ', 'Ji ', 'Yin ', 'Mi ', 'Kou ', 'Qing ', 'Que ', 'Zhen ', 'Jian ', 'Fu ', 'Ning ', 'Bing ', 'Huan ', + 'Mei ', 'Qin ', 'Han ', 'Yu ', 'Shi ', 'Ning ', 'Qin ', 'Ning ', 'Zhi ', 'Yu ', 'Bao ', 'Kuan ', 'Ning ', 'Qin ', 'Mo ', 'Cha ', + 'Ju ', 'Gua ', 'Qin ', 'Hu ', 'Wu ', 'Liao ', 'Shi ', 'Zhu ', 'Zhai ', 'Shen ', 'Wei ', 'Xie ', 'Kuan ', 'Hui ', 'Liao ', 'Jun ', + 'Huan ', 'Yi ', 'Yi ', 'Bao ', 'Qin ', 'Chong ', 'Bao ', 'Feng ', 'Cun ', 'Dui ', 'Si ', 'Xun ', 'Dao ', 'Lu ', 'Dui ', 'Shou '), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/x5c.php b/NEUE DATEIEN/includes/classes/transliteration/x5c.php new file mode 100644 index 0000000..2e0ba20 --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/x5c.php @@ -0,0 +1,21 @@ + array('Po ', 'Feng ', 'Zhuan ', 'Fu ', 'She ', 'Ke ', 'Jiang ', 'Jiang ', 'Zhuan ', 'Wei ', 'Zun ', 'Xun ', 'Shu ', 'Dui ', 'Dao ', 'Xiao ', + 'Ji ', 'Shao ', 'Er ', 'Er ', 'Er ', 'Ga ', 'Jian ', 'Shu ', 'Chen ', 'Shang ', 'Shang ', 'Mo ', 'Ga ', 'Chang ', 'Liao ', 'Xian ', + 'Xian ', NULL, 'Wang ', 'Wang ', 'You ', 'Liao ', 'Liao ', 'Yao ', 'Mang ', 'Wang ', 'Wang ', 'Wang ', 'Ga ', 'Yao ', 'Duo ', 'Kui ', + 'Zhong ', 'Jiu ', 'Gan ', 'Gu ', 'Gan ', 'Tui ', 'Gan ', 'Gan ', 'Shi ', 'Yin ', 'Chi ', 'Kao ', 'Ni ', 'Jin ', 'Wei ', 'Niao ', + 'Ju ', 'Pi ', 'Ceng ', 'Xi ', 'Bi ', 'Ju ', 'Jie ', 'Tian ', 'Qu ', 'Ti ', 'Jie ', 'Wu ', 'Diao ', 'Shi ', 'Shi ', 'Ping ', + 'Ji ', 'Xie ', 'Chen ', 'Xi ', 'Ni ', 'Zhan ', 'Xi ', NULL, 'Man ', 'E ', 'Lou ', 'Ping ', 'Ti ', 'Fei ', 'Shu ', 'Xie ', + 'Tu ', 'Lu ', 'Lu ', 'Xi ', 'Ceng ', 'Lu ', 'Ju ', 'Xie ', 'Ju ', 'Jue ', 'Liao ', 'Jue ', 'Shu ', 'Xi ', 'Che ', 'Tun ', + 'Ni ', 'Shan ', NULL, 'Xian ', 'Li ', 'Xue ', 'Nata ', NULL, 'Long ', 'Yi ', 'Qi ', 'Ren ', 'Wu ', 'Han ', 'Shen ', 'Yu ', + 'Chu ', 'Sui ', 'Qi ', NULL, 'Yue ', 'Ban ', 'Yao ', 'Ang ', 'Ya ', 'Wu ', 'Jie ', 'E ', 'Ji ', 'Qian ', 'Fen ', 'Yuan ', + 'Qi ', 'Cen ', 'Qian ', 'Qi ', 'Cha ', 'Jie ', 'Qu ', 'Gang ', 'Xian ', 'Ao ', 'Lan ', 'Dao ', 'Ba ', 'Zuo ', 'Zuo ', 'Yang ', + 'Ju ', 'Gang ', 'Ke ', 'Gou ', 'Xue ', 'Bei ', 'Li ', 'Tiao ', 'Ju ', 'Yan ', 'Fu ', 'Xiu ', 'Jia ', 'Ling ', 'Tuo ', 'Pei ', + 'You ', 'Dai ', 'Kuang ', 'Yue ', 'Qu ', 'Hu ', 'Po ', 'Min ', 'An ', 'Tiao ', 'Ling ', 'Chi ', 'Yuri ', 'Dong ', 'Cem ', 'Kui ', + 'Xiu ', 'Mao ', 'Tong ', 'Xue ', 'Yi ', 'Kura ', 'He ', 'Ke ', 'Luo ', 'E ', 'Fu ', 'Xun ', 'Die ', 'Lu ', 'An ', 'Er ', + 'Gai ', 'Quan ', 'Tong ', 'Yi ', 'Mu ', 'Shi ', 'An ', 'Wei ', 'Hu ', 'Zhi ', 'Mi ', 'Li ', 'Ji ', 'Tong ', 'Wei ', 'You ', + 'Sang ', 'Xia ', 'Li ', 'Yao ', 'Jiao ', 'Zheng ', 'Luan ', 'Jiao ', 'E ', 'E ', 'Yu ', 'Ye ', 'Bu ', 'Qiao ', 'Qun ', 'Feng ', + 'Feng ', 'Nao ', 'Li ', 'You ', 'Xian ', 'Hong ', 'Dao ', 'Shen ', 'Cheng ', 'Tu ', 'Geng ', 'Jun ', 'Hao ', 'Xia ', 'Yin ', 'Yu '), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/x5d.php b/NEUE DATEIEN/includes/classes/transliteration/x5d.php new file mode 100644 index 0000000..9084200 --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/x5d.php @@ -0,0 +1,21 @@ + array('Lang ', 'Kan ', 'Lao ', 'Lai ', 'Xian ', 'Que ', 'Kong ', 'Chong ', 'Chong ', 'Ta ', 'Lin ', 'Hua ', 'Ju ', 'Lai ', 'Qi ', 'Min ', + 'Kun ', 'Kun ', 'Zu ', 'Gu ', 'Cui ', 'Ya ', 'Ya ', 'Gang ', 'Lun ', 'Lun ', 'Leng ', 'Jue ', 'Duo ', 'Zheng ', 'Guo ', 'Yin ', + 'Dong ', 'Han ', 'Zheng ', 'Wei ', 'Yao ', 'Pi ', 'Yan ', 'Song ', 'Jie ', 'Beng ', 'Zu ', 'Jue ', 'Dong ', 'Zhan ', 'Gu ', 'Yin ', + NULL, 'Ze ', 'Huang ', 'Yu ', 'Wei ', 'Yang ', 'Feng ', 'Qiu ', 'Dun ', 'Ti ', 'Yi ', 'Zhi ', 'Shi ', 'Zai ', 'Yao ', 'E ', + 'Zhu ', 'Kan ', 'Lu ', 'Yan ', 'Mei ', 'Gan ', 'Ji ', 'Ji ', 'Huan ', 'Ting ', 'Sheng ', 'Mei ', 'Qian ', 'Wu ', 'Yu ', 'Zong ', + 'Lan ', 'Jue ', 'Yan ', 'Yan ', 'Wei ', 'Zong ', 'Cha ', 'Sui ', 'Rong ', 'Yamashina ', 'Qin ', 'Yu ', 'Kewashii ', 'Lou ', 'Tu ', 'Dui ', + 'Xi ', 'Weng ', 'Cang ', 'Dang ', 'Hong ', 'Jie ', 'Ai ', 'Liu ', 'Wu ', 'Song ', 'Qiao ', 'Zi ', 'Wei ', 'Beng ', 'Dian ', 'Cuo ', + 'Qian ', 'Yong ', 'Nie ', 'Cuo ', 'Ji ', NULL, 'Tao ', 'Song ', 'Zong ', 'Jiang ', 'Liao ', 'Kang ', 'Chan ', 'Die ', 'Cen ', 'Ding ', + 'Tu ', 'Lou ', 'Zhang ', 'Zhan ', 'Zhan ', 'Ao ', 'Cao ', 'Qu ', 'Qiang ', 'Zui ', 'Zui ', 'Dao ', 'Dao ', 'Xi ', 'Yu ', 'Bo ', + 'Long ', 'Xiang ', 'Ceng ', 'Bo ', 'Qin ', 'Jiao ', 'Yan ', 'Lao ', 'Zhan ', 'Lin ', 'Liao ', 'Liao ', 'Jin ', 'Deng ', 'Duo ', 'Zun ', + 'Jiao ', 'Gui ', 'Yao ', 'Qiao ', 'Yao ', 'Jue ', 'Zhan ', 'Yi ', 'Xue ', 'Nao ', 'Ye ', 'Ye ', 'Yi ', 'E ', 'Xian ', 'Ji ', + 'Xie ', 'Ke ', 'Xi ', 'Di ', 'Ao ', 'Zui ', NULL, 'Ni ', 'Rong ', 'Dao ', 'Ling ', 'Za ', 'Yu ', 'Yue ', 'Yin ', NULL, + 'Jie ', 'Li ', 'Sui ', 'Long ', 'Long ', 'Dian ', 'Ying ', 'Xi ', 'Ju ', 'Chan ', 'Ying ', 'Kui ', 'Yan ', 'Wei ', 'Nao ', 'Quan ', + 'Chao ', 'Cuan ', 'Luan ', 'Dian ', 'Dian ', NULL, 'Yan ', 'Yan ', 'Yan ', 'Nao ', 'Yan ', 'Chuan ', 'Gui ', 'Chuan ', 'Zhou ', 'Huang ', + 'Jing ', 'Xun ', 'Chao ', 'Chao ', 'Lie ', 'Gong ', 'Zuo ', 'Qiao ', 'Ju ', 'Gong ', 'Kek ', 'Wu ', 'Pwu ', 'Pwu ', 'Chai ', 'Qiu ', + 'Qiu ', 'Ji ', 'Yi ', 'Si ', 'Ba ', 'Zhi ', 'Zhao ', 'Xiang ', 'Yi ', 'Jin ', 'Xun ', 'Juan ', 'Phas ', 'Xun ', 'Jin ', 'Fu '), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/x5e.php b/NEUE DATEIEN/includes/classes/transliteration/x5e.php new file mode 100644 index 0000000..e9da824 --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/x5e.php @@ -0,0 +1,21 @@ + array('Za ', 'Bi ', 'Shi ', 'Bu ', 'Ding ', 'Shuai ', 'Fan ', 'Nie ', 'Shi ', 'Fen ', 'Pa ', 'Zhi ', 'Xi ', 'Hu ', 'Dan ', 'Wei ', + 'Zhang ', 'Tang ', 'Dai ', 'Ma ', 'Pei ', 'Pa ', 'Tie ', 'Fu ', 'Lian ', 'Zhi ', 'Zhou ', 'Bo ', 'Zhi ', 'Di ', 'Mo ', 'Yi ', + 'Yi ', 'Ping ', 'Qia ', 'Juan ', 'Ru ', 'Shuai ', 'Dai ', 'Zheng ', 'Shui ', 'Qiao ', 'Zhen ', 'Shi ', 'Qun ', 'Xi ', 'Bang ', 'Dai ', + 'Gui ', 'Chou ', 'Ping ', 'Zhang ', 'Sha ', 'Wan ', 'Dai ', 'Wei ', 'Chang ', 'Sha ', 'Qi ', 'Ze ', 'Guo ', 'Mao ', 'Du ', 'Hou ', + 'Zheng ', 'Xu ', 'Mi ', 'Wei ', 'Wo ', 'Fu ', 'Yi ', 'Bang ', 'Ping ', 'Tazuna ', 'Gong ', 'Pan ', 'Huang ', 'Dao ', 'Mi ', 'Jia ', + 'Teng ', 'Hui ', 'Zhong ', 'Shan ', 'Man ', 'Mu ', 'Biao ', 'Guo ', 'Ze ', 'Mu ', 'Bang ', 'Zhang ', 'Jiong ', 'Chan ', 'Fu ', 'Zhi ', + 'Hu ', 'Fan ', 'Chuang ', 'Bi ', 'Hei ', NULL, 'Mi ', 'Qiao ', 'Chan ', 'Fen ', 'Meng ', 'Bang ', 'Chou ', 'Mie ', 'Chu ', 'Jie ', + 'Xian ', 'Lan ', 'Gan ', 'Ping ', 'Nian ', 'Qian ', 'Bing ', 'Bing ', 'Xing ', 'Gan ', 'Yao ', 'Huan ', 'You ', 'You ', 'Ji ', 'Yan ', + 'Pi ', 'Ting ', 'Ze ', 'Guang ', 'Zhuang ', 'Mo ', 'Qing ', 'Bi ', 'Qin ', 'Dun ', 'Chuang ', 'Gui ', 'Ya ', 'Bai ', 'Jie ', 'Xu ', + 'Lu ', 'Wu ', NULL, 'Ku ', 'Ying ', 'Di ', 'Pao ', 'Dian ', 'Ya ', 'Miao ', 'Geng ', 'Ci ', 'Fu ', 'Tong ', 'Pang ', 'Fei ', + 'Xiang ', 'Yi ', 'Zhi ', 'Tiao ', 'Zhi ', 'Xiu ', 'Du ', 'Zuo ', 'Xiao ', 'Tu ', 'Gui ', 'Ku ', 'Pang ', 'Ting ', 'You ', 'Bu ', + 'Ding ', 'Cheng ', 'Lai ', 'Bei ', 'Ji ', 'An ', 'Shu ', 'Kang ', 'Yong ', 'Tuo ', 'Song ', 'Shu ', 'Qing ', 'Yu ', 'Yu ', 'Miao ', + 'Sou ', 'Ce ', 'Xiang ', 'Fei ', 'Jiu ', 'He ', 'Hui ', 'Liu ', 'Sha ', 'Lian ', 'Lang ', 'Sou ', 'Jian ', 'Pou ', 'Qing ', 'Jiu ', + 'Jiu ', 'Qin ', 'Ao ', 'Kuo ', 'Lou ', 'Yin ', 'Liao ', 'Dai ', 'Lu ', 'Yi ', 'Chu ', 'Chan ', 'Tu ', 'Si ', 'Xin ', 'Miao ', + 'Chang ', 'Wu ', 'Fei ', 'Guang ', 'Koc ', 'Kuai ', 'Bi ', 'Qiang ', 'Xie ', 'Lin ', 'Lin ', 'Liao ', 'Lu ', NULL, 'Ying ', 'Xian ', + 'Ting ', 'Yong ', 'Li ', 'Ting ', 'Yin ', 'Xun ', 'Yan ', 'Ting ', 'Di ', 'Po ', 'Jian ', 'Hui ', 'Nai ', 'Hui ', 'Gong ', 'Nian '), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/x5f.php b/NEUE DATEIEN/includes/classes/transliteration/x5f.php new file mode 100644 index 0000000..0d36132 --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/x5f.php @@ -0,0 +1,21 @@ + array('Kai ', 'Bian ', 'Yi ', 'Qi ', 'Nong ', 'Fen ', 'Ju ', 'Yan ', 'Yi ', 'Zang ', 'Bi ', 'Yi ', 'Yi ', 'Er ', 'San ', 'Shi ', + 'Er ', 'Shi ', 'Shi ', 'Gong ', 'Diao ', 'Yin ', 'Hu ', 'Fu ', 'Hong ', 'Wu ', 'Tui ', 'Chi ', 'Jiang ', 'Ba ', 'Shen ', 'Di ', + 'Zhang ', 'Jue ', 'Tao ', 'Fu ', 'Di ', 'Mi ', 'Xian ', 'Hu ', 'Chao ', 'Nu ', 'Jing ', 'Zhen ', 'Yi ', 'Mi ', 'Quan ', 'Wan ', + 'Shao ', 'Ruo ', 'Xuan ', 'Jing ', 'Dun ', 'Zhang ', 'Jiang ', 'Qiang ', 'Peng ', 'Dan ', 'Qiang ', 'Bi ', 'Bi ', 'She ', 'Dan ', 'Jian ', + 'Gou ', 'Sei ', 'Fa ', 'Bi ', 'Kou ', 'Nagi ', 'Bie ', 'Xiao ', 'Dan ', 'Kuo ', 'Qiang ', 'Hong ', 'Mi ', 'Kuo ', 'Wan ', 'Jue ', + 'Ji ', 'Ji ', 'Gui ', 'Dang ', 'Lu ', 'Lu ', 'Tuan ', 'Hui ', 'Zhi ', 'Hui ', 'Hui ', 'Yi ', 'Yi ', 'Yi ', 'Yi ', 'Huo ', + 'Huo ', 'Shan ', 'Xing ', 'Wen ', 'Tong ', 'Yan ', 'Yan ', 'Yu ', 'Chi ', 'Cai ', 'Biao ', 'Diao ', 'Bin ', 'Peng ', 'Yong ', 'Piao ', + 'Zhang ', 'Ying ', 'Chi ', 'Chi ', 'Zhuo ', 'Tuo ', 'Ji ', 'Pang ', 'Zhong ', 'Yi ', 'Wang ', 'Che ', 'Bi ', 'Chi ', 'Ling ', 'Fu ', + 'Wang ', 'Zheng ', 'Cu ', 'Wang ', 'Jing ', 'Dai ', 'Xi ', 'Xun ', 'Hen ', 'Yang ', 'Huai ', 'Lu ', 'Hou ', 'Wa ', 'Cheng ', 'Zhi ', + 'Xu ', 'Jing ', 'Tu ', 'Cong ', NULL, 'Lai ', 'Cong ', 'De ', 'Pai ', 'Xi ', NULL, 'Qi ', 'Chang ', 'Zhi ', 'Cong ', 'Zhou ', + 'Lai ', 'Yu ', 'Xie ', 'Jie ', 'Jian ', 'Chi ', 'Jia ', 'Bian ', 'Huang ', 'Fu ', 'Xun ', 'Wei ', 'Pang ', 'Yao ', 'Wei ', 'Xi ', + 'Zheng ', 'Piao ', 'Chi ', 'De ', 'Zheng ', 'Zheng ', 'Bie ', 'De ', 'Chong ', 'Che ', 'Jiao ', 'Wei ', 'Jiao ', 'Hui ', 'Mei ', 'Long ', + 'Xiang ', 'Bao ', 'Qu ', 'Xin ', 'Shu ', 'Bi ', 'Yi ', 'Le ', 'Ren ', 'Dao ', 'Ding ', 'Gai ', 'Ji ', 'Ren ', 'Ren ', 'Chan ', + 'Tan ', 'Te ', 'Te ', 'Gan ', 'Qi ', 'Shi ', 'Cun ', 'Zhi ', 'Wang ', 'Mang ', 'Xi ', 'Fan ', 'Ying ', 'Tian ', 'Min ', 'Min ', + 'Zhong ', 'Chong ', 'Wu ', 'Ji ', 'Wu ', 'Xi ', 'Ye ', 'You ', 'Wan ', 'Cong ', 'Zhong ', 'Kuai ', 'Yu ', 'Bian ', 'Zhi ', 'Qi ', + 'Cui ', 'Chen ', 'Tai ', 'Tun ', 'Qian ', 'Nian ', 'Hun ', 'Xiong ', 'Niu ', 'Wang ', 'Xian ', 'Xin ', 'Kang ', 'Hu ', 'Kai ', 'Fen '), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/x60.php b/NEUE DATEIEN/includes/classes/transliteration/x60.php new file mode 100644 index 0000000..0c3bb49 --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/x60.php @@ -0,0 +1,21 @@ + array('Huai ', 'Tai ', 'Song ', 'Wu ', 'Ou ', 'Chang ', 'Chuang ', 'Ju ', 'Yi ', 'Bao ', 'Chao ', 'Min ', 'Pei ', 'Zuo ', 'Zen ', 'Yang ', + 'Kou ', 'Ban ', 'Nu ', 'Nao ', 'Zheng ', 'Pa ', 'Bu ', 'Tie ', 'Gu ', 'Hu ', 'Ju ', 'Da ', 'Lian ', 'Si ', 'Chou ', 'Di ', + 'Dai ', 'Yi ', 'Tu ', 'You ', 'Fu ', 'Ji ', 'Peng ', 'Xing ', 'Yuan ', 'Ni ', 'Guai ', 'Fu ', 'Xi ', 'Bi ', 'You ', 'Qie ', + 'Xuan ', 'Cong ', 'Bing ', 'Huang ', 'Xu ', 'Chu ', 'Pi ', 'Xi ', 'Xi ', 'Tan ', 'Koraeru ', 'Zong ', 'Dui ', NULL, 'Ki ', 'Yi ', + 'Chi ', 'Ren ', 'Xun ', 'Shi ', 'Xi ', 'Lao ', 'Heng ', 'Kuang ', 'Mu ', 'Zhi ', 'Xie ', 'Lian ', 'Tiao ', 'Huang ', 'Die ', 'Hao ', + 'Kong ', 'Gui ', 'Heng ', 'Xi ', 'Xiao ', 'Shu ', 'S ', 'Kua ', 'Qiu ', 'Yang ', 'Hui ', 'Hui ', 'Chi ', 'Jia ', 'Yi ', 'Xiong ', + 'Guai ', 'Lin ', 'Hui ', 'Zi ', 'Xu ', 'Chi ', 'Xiang ', 'Nu ', 'Hen ', 'En ', 'Ke ', 'Tong ', 'Tian ', 'Gong ', 'Quan ', 'Xi ', + 'Qia ', 'Yue ', 'Peng ', 'Ken ', 'De ', 'Hui ', 'E ', 'Kyuu ', 'Tong ', 'Yan ', 'Kai ', 'Ce ', 'Nao ', 'Yun ', 'Mang ', 'Yong ', + 'Yong ', 'Yuan ', 'Pi ', 'Kun ', 'Qiao ', 'Yue ', 'Yu ', 'Yu ', 'Jie ', 'Xi ', 'Zhe ', 'Lin ', 'Ti ', 'Han ', 'Hao ', 'Qie ', + 'Ti ', 'Bu ', 'Yi ', 'Qian ', 'Hui ', 'Xi ', 'Bei ', 'Man ', 'Yi ', 'Heng ', 'Song ', 'Quan ', 'Cheng ', 'Hui ', 'Wu ', 'Wu ', + 'You ', 'Li ', 'Liang ', 'Huan ', 'Cong ', 'Yi ', 'Yue ', 'Li ', 'Nin ', 'Nao ', 'E ', 'Que ', 'Xuan ', 'Qian ', 'Wu ', 'Min ', + 'Cong ', 'Fei ', 'Bei ', 'Duo ', 'Cui ', 'Chang ', 'Men ', 'Li ', 'Ji ', 'Guan ', 'Guan ', 'Xing ', 'Dao ', 'Qi ', 'Kong ', 'Tian ', + 'Lun ', 'Xi ', 'Kan ', 'Kun ', 'Ni ', 'Qing ', 'Chou ', 'Dun ', 'Guo ', 'Chan ', 'Liang ', 'Wan ', 'Yuan ', 'Jin ', 'Ji ', 'Lin ', + 'Yu ', 'Huo ', 'He ', 'Quan ', 'Tan ', 'Ti ', 'Ti ', 'Nie ', 'Wang ', 'Chuo ', 'Bu ', 'Hun ', 'Xi ', 'Tang ', 'Xin ', 'Wei ', + 'Hui ', 'E ', 'Rui ', 'Zong ', 'Jian ', 'Yong ', 'Dian ', 'Ju ', 'Can ', 'Cheng ', 'De ', 'Bei ', 'Qie ', 'Can ', 'Dan ', 'Guan ', + 'Duo ', 'Nao ', 'Yun ', 'Xiang ', 'Zhui ', 'Die ', 'Huang ', 'Chun ', 'Qiong ', 'Re ', 'Xing ', 'Ce ', 'Bian ', 'Hun ', 'Zong ', 'Ti '), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/x61.php b/NEUE DATEIEN/includes/classes/transliteration/x61.php new file mode 100644 index 0000000..337f895 --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/x61.php @@ -0,0 +1,21 @@ + array('Qiao ', 'Chou ', 'Bei ', 'Xuan ', 'Wei ', 'Ge ', 'Qian ', 'Wei ', 'Yu ', 'Yu ', 'Bi ', 'Xuan ', 'Huan ', 'Min ', 'Bi ', 'Yi ', + 'Mian ', 'Yong ', 'Kai ', 'Dang ', 'Yin ', 'E ', 'Chen ', 'Mou ', 'Ke ', 'Ke ', 'Yu ', 'Ai ', 'Qie ', 'Yan ', 'Nuo ', 'Gan ', + 'Yun ', 'Zong ', 'Sai ', 'Leng ', 'Fen ', NULL, 'Kui ', 'Kui ', 'Que ', 'Gong ', 'Yun ', 'Su ', 'Su ', 'Qi ', 'Yao ', 'Song ', + 'Huang ', 'Ji ', 'Gu ', 'Ju ', 'Chuang ', 'Ni ', 'Xie ', 'Kai ', 'Zheng ', 'Yong ', 'Cao ', 'Sun ', 'Shen ', 'Bo ', 'Kai ', 'Yuan ', + 'Xie ', 'Hun ', 'Yong ', 'Yang ', 'Li ', 'Sao ', 'Tao ', 'Yin ', 'Ci ', 'Xu ', 'Qian ', 'Tai ', 'Huang ', 'Yun ', 'Shen ', 'Ming ', + NULL, 'She ', 'Cong ', 'Piao ', 'Mo ', 'Mu ', 'Guo ', 'Chi ', 'Can ', 'Can ', 'Can ', 'Cui ', 'Min ', 'Te ', 'Zhang ', 'Tong ', + 'Ao ', 'Shuang ', 'Man ', 'Guan ', 'Que ', 'Zao ', 'Jiu ', 'Hui ', 'Kai ', 'Lian ', 'Ou ', 'Song ', 'Jin ', 'Yin ', 'Lu ', 'Shang ', + 'Wei ', 'Tuan ', 'Man ', 'Qian ', 'She ', 'Yong ', 'Qing ', 'Kang ', 'Di ', 'Zhi ', 'Lou ', 'Juan ', 'Qi ', 'Qi ', 'Yu ', 'Ping ', + 'Liao ', 'Cong ', 'You ', 'Chong ', 'Zhi ', 'Tong ', 'Cheng ', 'Qi ', 'Qu ', 'Peng ', 'Bei ', 'Bie ', 'Chun ', 'Jiao ', 'Zeng ', 'Chi ', + 'Lian ', 'Ping ', 'Kui ', 'Hui ', 'Qiao ', 'Cheng ', 'Yin ', 'Yin ', 'Xi ', 'Xi ', 'Dan ', 'Tan ', 'Duo ', 'Dui ', 'Dui ', 'Su ', + 'Jue ', 'Ce ', 'Xiao ', 'Fan ', 'Fen ', 'Lao ', 'Lao ', 'Chong ', 'Han ', 'Qi ', 'Xian ', 'Min ', 'Jing ', 'Liao ', 'Wu ', 'Can ', + 'Jue ', 'Cu ', 'Xian ', 'Tan ', 'Sheng ', 'Pi ', 'Yi ', 'Chu ', 'Xian ', 'Nao ', 'Dan ', 'Tan ', 'Jing ', 'Song ', 'Han ', 'Jiao ', + 'Wai ', 'Huan ', 'Dong ', 'Qin ', 'Qin ', 'Qu ', 'Cao ', 'Ken ', 'Xie ', 'Ying ', 'Ao ', 'Mao ', 'Yi ', 'Lin ', 'Se ', 'Jun ', + 'Huai ', 'Men ', 'Lan ', 'Ai ', 'Lin ', 'Yan ', 'Gua ', 'Xia ', 'Chi ', 'Yu ', 'Yin ', 'Dai ', 'Meng ', 'Ai ', 'Meng ', 'Dui ', + 'Qi ', 'Mo ', 'Lan ', 'Men ', 'Chou ', 'Zhi ', 'Nuo ', 'Nuo ', 'Yan ', 'Yang ', 'Bo ', 'Zhi ', 'Kuang ', 'Kuang ', 'You ', 'Fu ', + 'Liu ', 'Mie ', 'Cheng ', NULL, 'Chan ', 'Meng ', 'Lan ', 'Huai ', 'Xuan ', 'Rang ', 'Chan ', 'Ji ', 'Ju ', 'Huan ', 'She ', 'Yi '), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/x62.php b/NEUE DATEIEN/includes/classes/transliteration/x62.php new file mode 100644 index 0000000..0ead2e9 --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/x62.php @@ -0,0 +1,21 @@ + array('Lian ', 'Nan ', 'Mi ', 'Tang ', 'Jue ', 'Gang ', 'Gang ', 'Gang ', 'Ge ', 'Yue ', 'Wu ', 'Jian ', 'Xu ', 'Shu ', 'Rong ', 'Xi ', + 'Cheng ', 'Wo ', 'Jie ', 'Ge ', 'Jian ', 'Qiang ', 'Huo ', 'Qiang ', 'Zhan ', 'Dong ', 'Qi ', 'Jia ', 'Die ', 'Zei ', 'Jia ', 'Ji ', + 'Shi ', 'Kan ', 'Ji ', 'Kui ', 'Gai ', 'Deng ', 'Zhan ', 'Chuang ', 'Ge ', 'Jian ', 'Jie ', 'Yu ', 'Jian ', 'Yan ', 'Lu ', 'Xi ', + 'Zhan ', 'Xi ', 'Xi ', 'Chuo ', 'Dai ', 'Qu ', 'Hu ', 'Hu ', 'Hu ', 'E ', 'Shi ', 'Li ', 'Mao ', 'Hu ', 'Li ', 'Fang ', + 'Suo ', 'Bian ', 'Dian ', 'Jiong ', 'Shang ', 'Yi ', 'Yi ', 'Shan ', 'Hu ', 'Fei ', 'Yan ', 'Shou ', 'T ', 'Cai ', 'Zha ', 'Qiu ', + 'Le ', 'Bu ', 'Ba ', 'Da ', 'Reng ', 'Fu ', 'Hameru ', 'Zai ', 'Tuo ', 'Zhang ', 'Diao ', 'Kang ', 'Yu ', 'Ku ', 'Han ', 'Shen ', + 'Cha ', 'Yi ', 'Gu ', 'Kou ', 'Wu ', 'Tuo ', 'Qian ', 'Zhi ', 'Ren ', 'Kuo ', 'Men ', 'Sao ', 'Yang ', 'Niu ', 'Ban ', 'Che ', + 'Rao ', 'Xi ', 'Qian ', 'Ban ', 'Jia ', 'Yu ', 'Fu ', 'Ao ', 'Xi ', 'Pi ', 'Zhi ', 'Zi ', 'E ', 'Dun ', 'Zhao ', 'Cheng ', + 'Ji ', 'Yan ', 'Kuang ', 'Bian ', 'Chao ', 'Ju ', 'Wen ', 'Hu ', 'Yue ', 'Jue ', 'Ba ', 'Qin ', 'Zhen ', 'Zheng ', 'Yun ', 'Wan ', + 'Nu ', 'Yi ', 'Shu ', 'Zhua ', 'Pou ', 'Tou ', 'Dou ', 'Kang ', 'Zhe ', 'Pou ', 'Fu ', 'Pao ', 'Ba ', 'Ao ', 'Ze ', 'Tuan ', + 'Kou ', 'Lun ', 'Qiang ', NULL, 'Hu ', 'Bao ', 'Bing ', 'Zhi ', 'Peng ', 'Tan ', 'Pu ', 'Pi ', 'Tai ', 'Yao ', 'Zhen ', 'Zha ', + 'Yang ', 'Bao ', 'He ', 'Ni ', 'Yi ', 'Di ', 'Chi ', 'Pi ', 'Za ', 'Mo ', 'Mo ', 'Shen ', 'Ya ', 'Chou ', 'Qu ', 'Min ', + 'Chu ', 'Jia ', 'Fu ', 'Zhan ', 'Zhu ', 'Dan ', 'Chai ', 'Mu ', 'Nian ', 'La ', 'Fu ', 'Pao ', 'Ban ', 'Pai ', 'Ling ', 'Na ', + 'Guai ', 'Qian ', 'Ju ', 'Tuo ', 'Ba ', 'Tuo ', 'Tuo ', 'Ao ', 'Ju ', 'Zhuo ', 'Pan ', 'Zhao ', 'Bai ', 'Bai ', 'Di ', 'Ni ', + 'Ju ', 'Kuo ', 'Long ', 'Jian ', NULL, 'Yong ', 'Lan ', 'Ning ', 'Bo ', 'Ze ', 'Qian ', 'Hen ', 'Gua ', 'Shi ', 'Jie ', 'Zheng ', + 'Nin ', 'Gong ', 'Gong ', 'Quan ', 'Shuan ', 'Cun ', 'Zan ', 'Kao ', 'Chi ', 'Xie ', 'Ce ', 'Hui ', 'Pin ', 'Zhuai ', 'Shi ', 'Na '), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/x63.php b/NEUE DATEIEN/includes/classes/transliteration/x63.php new file mode 100644 index 0000000..59a2995 --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/x63.php @@ -0,0 +1,21 @@ + array('Bo ', 'Chi ', 'Gua ', 'Zhi ', 'Kuo ', 'Duo ', 'Duo ', 'Zhi ', 'Qie ', 'An ', 'Nong ', 'Zhen ', 'Ge ', 'Jiao ', 'Ku ', 'Dong ', + 'Ru ', 'Tiao ', 'Lie ', 'Zha ', 'Lu ', 'Die ', 'Wa ', 'Jue ', 'Mushiru ', 'Ju ', 'Zhi ', 'Luan ', 'Ya ', 'Zhua ', 'Ta ', 'Xie ', + 'Nao ', 'Dang ', 'Jiao ', 'Zheng ', 'Ji ', 'Hui ', 'Xun ', 'Ku ', 'Ai ', 'Tuo ', 'Nuo ', 'Cuo ', 'Bo ', 'Geng ', 'Ti ', 'Zhen ', + 'Cheng ', 'Suo ', 'Suo ', 'Keng ', 'Mei ', 'Long ', 'Ju ', 'Peng ', 'Jian ', 'Yi ', 'Ting ', 'Shan ', 'Nuo ', 'Wan ', 'Xie ', 'Cha ', + 'Feng ', 'Jiao ', 'Wu ', 'Jun ', 'Jiu ', 'Tong ', 'Kun ', 'Huo ', 'Tu ', 'Zhuo ', 'Pou ', 'Le ', 'Ba ', 'Han ', 'Shao ', 'Nie ', + 'Juan ', 'Ze ', 'Song ', 'Ye ', 'Jue ', 'Bu ', 'Huan ', 'Bu ', 'Zun ', 'Yi ', 'Zhai ', 'Lu ', 'Sou ', 'Tuo ', 'Lao ', 'Sun ', + 'Bang ', 'Jian ', 'Huan ', 'Dao ', NULL, 'Wan ', 'Qin ', 'Peng ', 'She ', 'Lie ', 'Min ', 'Men ', 'Fu ', 'Bai ', 'Ju ', 'Dao ', + 'Wo ', 'Ai ', 'Juan ', 'Yue ', 'Zong ', 'Chen ', 'Chui ', 'Jie ', 'Tu ', 'Ben ', 'Na ', 'Nian ', 'Nuo ', 'Zu ', 'Wo ', 'Xi ', + 'Xian ', 'Cheng ', 'Dian ', 'Sao ', 'Lun ', 'Qing ', 'Gang ', 'Duo ', 'Shou ', 'Diao ', 'Pou ', 'Di ', 'Zhang ', 'Gun ', 'Ji ', 'Tao ', + 'Qia ', 'Qi ', 'Pai ', 'Shu ', 'Qian ', 'Ling ', 'Yi ', 'Ya ', 'Jue ', 'Zheng ', 'Liang ', 'Gua ', 'Yi ', 'Huo ', 'Shan ', 'Zheng ', + 'Lue ', 'Cai ', 'Tan ', 'Che ', 'Bing ', 'Jie ', 'Ti ', 'Kong ', 'Tui ', 'Yan ', 'Cuo ', 'Zou ', 'Ju ', 'Tian ', 'Qian ', 'Ken ', + 'Bai ', 'Shou ', 'Jie ', 'Lu ', 'Guo ', 'Haba ', NULL, 'Zhi ', 'Dan ', 'Mang ', 'Xian ', 'Sao ', 'Guan ', 'Peng ', 'Yuan ', 'Nuo ', + 'Jian ', 'Zhen ', 'Jiu ', 'Jian ', 'Yu ', 'Yan ', 'Kui ', 'Nan ', 'Hong ', 'Rou ', 'Pi ', 'Wei ', 'Sai ', 'Zou ', 'Xuan ', 'Miao ', + 'Ti ', 'Nie ', 'Cha ', 'Shi ', 'Zong ', 'Zhen ', 'Yi ', 'Shun ', 'Heng ', 'Bian ', 'Yang ', 'Huan ', 'Yan ', 'Zuan ', 'An ', 'Xu ', + 'Ya ', 'Wo ', 'Ke ', 'Chuai ', 'Ji ', 'Ti ', 'La ', 'La ', 'Cheng ', 'Kai ', 'Jiu ', 'Jiu ', 'Tu ', 'Jie ', 'Hui ', 'Geng ', + 'Chong ', 'Shuo ', 'She ', 'Xie ', 'Yuan ', 'Qian ', 'Ye ', 'Cha ', 'Zha ', 'Bei ', 'Yao ', NULL, NULL, 'Lan ', 'Wen ', 'Qin '), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/x64.php b/NEUE DATEIEN/includes/classes/transliteration/x64.php new file mode 100644 index 0000000..4402166 --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/x64.php @@ -0,0 +1,21 @@ + array('Chan ', 'Ge ', 'Lou ', 'Zong ', 'Geng ', 'Jiao ', 'Gou ', 'Qin ', 'Yong ', 'Que ', 'Chou ', 'Chi ', 'Zhan ', 'Sun ', 'Sun ', 'Bo ', + 'Chu ', 'Rong ', 'Beng ', 'Cuo ', 'Sao ', 'Ke ', 'Yao ', 'Dao ', 'Zhi ', 'Nu ', 'Xie ', 'Jian ', 'Sou ', 'Qiu ', 'Gao ', 'Xian ', + 'Shuo ', 'Sang ', 'Jin ', 'Mie ', 'E ', 'Chui ', 'Nuo ', 'Shan ', 'Ta ', 'Jie ', 'Tang ', 'Pan ', 'Ban ', 'Da ', 'Li ', 'Tao ', + 'Hu ', 'Zhi ', 'Wa ', 'Xia ', 'Qian ', 'Wen ', 'Qiang ', 'Tian ', 'Zhen ', 'E ', 'Xi ', 'Nuo ', 'Quan ', 'Cha ', 'Zha ', 'Ge ', + 'Wu ', 'En ', 'She ', 'Kang ', 'She ', 'Shu ', 'Bai ', 'Yao ', 'Bin ', 'Sou ', 'Tan ', 'Sa ', 'Chan ', 'Suo ', 'Liao ', 'Chong ', + 'Chuang ', 'Guo ', 'Bing ', 'Feng ', 'Shuai ', 'Di ', 'Qi ', 'Sou ', 'Zhai ', 'Lian ', 'Tang ', 'Chi ', 'Guan ', 'Lu ', 'Luo ', 'Lou ', + 'Zong ', 'Gai ', 'Hu ', 'Zha ', 'Chuang ', 'Tang ', 'Hua ', 'Cui ', 'Nai ', 'Mo ', 'Jiang ', 'Gui ', 'Ying ', 'Zhi ', 'Ao ', 'Zhi ', + 'Nie ', 'Man ', 'Shan ', 'Kou ', 'Shu ', 'Suo ', 'Tuan ', 'Jiao ', 'Mo ', 'Mo ', 'Zhe ', 'Xian ', 'Keng ', 'Piao ', 'Jiang ', 'Yin ', + 'Gou ', 'Qian ', 'Lue ', 'Ji ', 'Ying ', 'Jue ', 'Pie ', 'Pie ', 'Lao ', 'Dun ', 'Xian ', 'Ruan ', 'Kui ', 'Zan ', 'Yi ', 'Xun ', + 'Cheng ', 'Cheng ', 'Sa ', 'Nao ', 'Heng ', 'Si ', 'Qian ', 'Huang ', 'Da ', 'Zun ', 'Nian ', 'Lin ', 'Zheng ', 'Hui ', 'Zhuang ', 'Jiao ', + 'Ji ', 'Cao ', 'Dan ', 'Dan ', 'Che ', 'Bo ', 'Che ', 'Jue ', 'Xiao ', 'Liao ', 'Ben ', 'Fu ', 'Qiao ', 'Bo ', 'Cuo ', 'Zhuo ', + 'Zhuan ', 'Tuo ', 'Pu ', 'Qin ', 'Dun ', 'Nian ', NULL, 'Xie ', 'Lu ', 'Jiao ', 'Cuan ', 'Ta ', 'Han ', 'Qiao ', 'Zhua ', 'Jian ', + 'Gan ', 'Yong ', 'Lei ', 'Kuo ', 'Lu ', 'Shan ', 'Zhuo ', 'Ze ', 'Pu ', 'Chuo ', 'Ji ', 'Dang ', 'Suo ', 'Cao ', 'Qing ', 'Jing ', + 'Huan ', 'Jie ', 'Qin ', 'Kuai ', 'Dan ', 'Xi ', 'Ge ', 'Pi ', 'Bo ', 'Ao ', 'Ju ', 'Ye ', NULL, 'Mang ', 'Sou ', 'Mi ', + 'Ji ', 'Tai ', 'Zhuo ', 'Dao ', 'Xing ', 'Lan ', 'Ca ', 'Ju ', 'Ye ', 'Ru ', 'Ye ', 'Ye ', 'Ni ', 'Hu ', 'Ji ', 'Bin ', + 'Ning ', 'Ge ', 'Zhi ', 'Jie ', 'Kuo ', 'Mo ', 'Jian ', 'Xie ', 'Lie ', 'Tan ', 'Bai ', 'Sou ', 'Lu ', 'Lue ', 'Rao ', 'Zhi '), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/x65.php b/NEUE DATEIEN/includes/classes/transliteration/x65.php new file mode 100644 index 0000000..43e96cd --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/x65.php @@ -0,0 +1,21 @@ + array('Pan ', 'Yang ', 'Lei ', 'Sa ', 'Shu ', 'Zan ', 'Nian ', 'Xian ', 'Jun ', 'Huo ', 'Li ', 'La ', 'Han ', 'Ying ', 'Lu ', 'Long ', + 'Qian ', 'Qian ', 'Zan ', 'Qian ', 'Lan ', 'San ', 'Ying ', 'Mei ', 'Rang ', 'Chan ', NULL, 'Cuan ', 'Xi ', 'She ', 'Luo ', 'Jun ', + 'Mi ', 'Li ', 'Zan ', 'Luan ', 'Tan ', 'Zuan ', 'Li ', 'Dian ', 'Wa ', 'Dang ', 'Jiao ', 'Jue ', 'Lan ', 'Li ', 'Nang ', 'Zhi ', + 'Gui ', 'Gui ', 'Qi ', 'Xin ', 'Pu ', 'Sui ', 'Shou ', 'Kao ', 'You ', 'Gai ', 'Yi ', 'Gong ', 'Gan ', 'Ban ', 'Fang ', 'Zheng ', + 'Bo ', 'Dian ', 'Kou ', 'Min ', 'Wu ', 'Gu ', 'He ', 'Ce ', 'Xiao ', 'Mi ', 'Chu ', 'Ge ', 'Di ', 'Xu ', 'Jiao ', 'Min ', + 'Chen ', 'Jiu ', 'Zhen ', 'Duo ', 'Yu ', 'Chi ', 'Ao ', 'Bai ', 'Xu ', 'Jiao ', 'Duo ', 'Lian ', 'Nie ', 'Bi ', 'Chang ', 'Dian ', + 'Duo ', 'Yi ', 'Gan ', 'San ', 'Ke ', 'Yan ', 'Dun ', 'Qi ', 'Dou ', 'Xiao ', 'Duo ', 'Jiao ', 'Jing ', 'Yang ', 'Xia ', 'Min ', + 'Shu ', 'Ai ', 'Qiao ', 'Ai ', 'Zheng ', 'Di ', 'Zhen ', 'Fu ', 'Shu ', 'Liao ', 'Qu ', 'Xiong ', 'Xi ', 'Jiao ', 'Sen ', 'Jiao ', + 'Zhuo ', 'Yi ', 'Lian ', 'Bi ', 'Li ', 'Xiao ', 'Xiao ', 'Wen ', 'Xue ', 'Qi ', 'Qi ', 'Zhai ', 'Bin ', 'Jue ', 'Zhai ', NULL, + 'Fei ', 'Ban ', 'Ban ', 'Lan ', 'Yu ', 'Lan ', 'Wei ', 'Dou ', 'Sheng ', 'Liao ', 'Jia ', 'Hu ', 'Xie ', 'Jia ', 'Yu ', 'Zhen ', + 'Jiao ', 'Wo ', 'Tou ', 'Chu ', 'Jin ', 'Chi ', 'Yin ', 'Fu ', 'Qiang ', 'Zhan ', 'Qu ', 'Zhuo ', 'Zhan ', 'Duan ', 'Zhuo ', 'Si ', + 'Xin ', 'Zhuo ', 'Zhuo ', 'Qin ', 'Lin ', 'Zhuo ', 'Chu ', 'Duan ', 'Zhu ', 'Fang ', 'Xie ', 'Hang ', 'Yu ', 'Shi ', 'Pei ', 'You ', + 'Mye ', 'Pang ', 'Qi ', 'Zhan ', 'Mao ', 'Lu ', 'Pei ', 'Pi ', 'Liu ', 'Fu ', 'Fang ', 'Xuan ', 'Jing ', 'Jing ', 'Ni ', 'Zu ', + 'Zhao ', 'Yi ', 'Liu ', 'Shao ', 'Jian ', 'Es ', 'Yi ', 'Qi ', 'Zhi ', 'Fan ', 'Piao ', 'Fan ', 'Zhan ', 'Guai ', 'Sui ', 'Yu ', + 'Wu ', 'Ji ', 'Ji ', 'Ji ', 'Huo ', 'Ri ', 'Dan ', 'Jiu ', 'Zhi ', 'Zao ', 'Xie ', 'Tiao ', 'Xun ', 'Xu ', 'Xu ', 'Xu ', + 'Gan ', 'Han ', 'Tai ', 'Di ', 'Xu ', 'Chan ', 'Shi ', 'Kuang ', 'Yang ', 'Shi ', 'Wang ', 'Min ', 'Min ', 'Tun ', 'Chun ', 'Wu '), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/x66.php b/NEUE DATEIEN/includes/classes/transliteration/x66.php new file mode 100644 index 0000000..c82ab1c --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/x66.php @@ -0,0 +1,21 @@ + array('Yun ', 'Bei ', 'Ang ', 'Ze ', 'Ban ', 'Jie ', 'Kun ', 'Sheng ', 'Hu ', 'Fang ', 'Hao ', 'Gui ', 'Chang ', 'Xuan ', 'Ming ', 'Hun ', + 'Fen ', 'Qin ', 'Hu ', 'Yi ', 'Xi ', 'Xin ', 'Yan ', 'Ze ', 'Fang ', 'Tan ', 'Shen ', 'Ju ', 'Yang ', 'Zan ', 'Bing ', 'Xing ', + 'Ying ', 'Xuan ', 'Pei ', 'Zhen ', 'Ling ', 'Chun ', 'Hao ', 'Mei ', 'Zuo ', 'Mo ', 'Bian ', 'Xu ', 'Hun ', 'Zhao ', 'Zong ', 'Shi ', + 'Shi ', 'Yu ', 'Fei ', 'Die ', 'Mao ', 'Ni ', 'Chang ', 'Wen ', 'Dong ', 'Ai ', 'Bing ', 'Ang ', 'Zhou ', 'Long ', 'Xian ', 'Kuang ', + 'Tiao ', 'Chao ', 'Shi ', 'Huang ', 'Huang ', 'Xuan ', 'Kui ', 'Xu ', 'Jiao ', 'Jin ', 'Zhi ', 'Jin ', 'Shang ', 'Tong ', 'Hong ', 'Yan ', + 'Gai ', 'Xiang ', 'Shai ', 'Xiao ', 'Ye ', 'Yun ', 'Hui ', 'Han ', 'Han ', 'Jun ', 'Wan ', 'Xian ', 'Kun ', 'Zhou ', 'Xi ', 'Cheng ', + 'Sheng ', 'Bu ', 'Zhe ', 'Zhe ', 'Wu ', 'Han ', 'Hui ', 'Hao ', 'Chen ', 'Wan ', 'Tian ', 'Zhuo ', 'Zui ', 'Zhou ', 'Pu ', 'Jing ', + 'Xi ', 'Shan ', 'Yi ', 'Xi ', 'Qing ', 'Qi ', 'Jing ', 'Gui ', 'Zhen ', 'Yi ', 'Zhi ', 'An ', 'Wan ', 'Lin ', 'Liang ', 'Chang ', + 'Wang ', 'Xiao ', 'Zan ', 'Hi ', 'Xuan ', 'Xuan ', 'Yi ', 'Xia ', 'Yun ', 'Hui ', 'Fu ', 'Min ', 'Kui ', 'He ', 'Ying ', 'Du ', + 'Wei ', 'Shu ', 'Qing ', 'Mao ', 'Nan ', 'Jian ', 'Nuan ', 'An ', 'Yang ', 'Chun ', 'Yao ', 'Suo ', 'Jin ', 'Ming ', 'Jiao ', 'Kai ', + 'Gao ', 'Weng ', 'Chang ', 'Qi ', 'Hao ', 'Yan ', 'Li ', 'Ai ', 'Ji ', 'Gui ', 'Men ', 'Zan ', 'Xie ', 'Hao ', 'Mu ', 'Mo ', + 'Cong ', 'Ni ', 'Zhang ', 'Hui ', 'Bao ', 'Han ', 'Xuan ', 'Chuan ', 'Liao ', 'Xian ', 'Dan ', 'Jing ', 'Pie ', 'Lin ', 'Tun ', 'Xi ', + 'Yi ', 'Ji ', 'Huang ', 'Tai ', 'Ye ', 'Ye ', 'Li ', 'Tan ', 'Tong ', 'Xiao ', 'Fei ', 'Qin ', 'Zhao ', 'Hao ', 'Yi ', 'Xiang ', + 'Xing ', 'Sen ', 'Jiao ', 'Bao ', 'Jing ', 'Yian ', 'Ai ', 'Ye ', 'Ru ', 'Shu ', 'Meng ', 'Xun ', 'Yao ', 'Pu ', 'Li ', 'Chen ', + 'Kuang ', 'Die ', NULL, 'Yan ', 'Huo ', 'Lu ', 'Xi ', 'Rong ', 'Long ', 'Nang ', 'Luo ', 'Luan ', 'Shai ', 'Tang ', 'Yan ', 'Chu ', + 'Yue ', 'Yue ', 'Qu ', 'Yi ', 'Geng ', 'Ye ', 'Hu ', 'He ', 'Shu ', 'Cao ', 'Cao ', 'Noboru ', 'Man ', 'Ceng ', 'Ceng ', 'Ti '), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/x67.php b/NEUE DATEIEN/includes/classes/transliteration/x67.php new file mode 100644 index 0000000..349757c --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/x67.php @@ -0,0 +1,21 @@ + array('Zui ', 'Can ', 'Xu ', 'Hui ', 'Yin ', 'Qie ', 'Fen ', 'Pi ', 'Yue ', 'You ', 'Ruan ', 'Peng ', 'Ban ', 'Fu ', 'Ling ', 'Fei ', + 'Qu ', NULL, 'Nu ', 'Tiao ', 'Shuo ', 'Zhen ', 'Lang ', 'Lang ', 'Juan ', 'Ming ', 'Huang ', 'Wang ', 'Tun ', 'Zhao ', 'Ji ', 'Qi ', + 'Ying ', 'Zong ', 'Wang ', 'Tong ', 'Lang ', NULL, 'Meng ', 'Long ', 'Mu ', 'Deng ', 'Wei ', 'Mo ', 'Ben ', 'Zha ', 'Zhu ', 'Zhu ', + NULL, 'Zhu ', 'Ren ', 'Ba ', 'Po ', 'Duo ', 'Duo ', 'Dao ', 'Li ', 'Qiu ', 'Ji ', 'Jiu ', 'Bi ', 'Xiu ', 'Ting ', 'Ci ', + 'Sha ', 'Eburi ', 'Za ', 'Quan ', 'Qian ', 'Yu ', 'Gan ', 'Wu ', 'Cha ', 'Shan ', 'Xun ', 'Fan ', 'Wu ', 'Zi ', 'Li ', 'Xing ', + 'Cai ', 'Cun ', 'Ren ', 'Shao ', 'Tuo ', 'Di ', 'Zhang ', 'Mang ', 'Chi ', 'Yi ', 'Gu ', 'Gong ', 'Du ', 'Yi ', 'Qi ', 'Shu ', + 'Gang ', 'Tiao ', 'Moku ', 'Soma ', 'Tochi ', 'Lai ', 'Sugi ', 'Mang ', 'Yang ', 'Ma ', 'Miao ', 'Si ', 'Yuan ', 'Hang ', 'Fei ', 'Bei ', + 'Jie ', 'Dong ', 'Gao ', 'Yao ', 'Xian ', 'Chu ', 'Qun ', 'Pa ', 'Shu ', 'Hua ', 'Xin ', 'Chou ', 'Zhu ', 'Chou ', 'Song ', 'Ban ', + 'Song ', 'Ji ', 'Yue ', 'Jin ', 'Gou ', 'Ji ', 'Mao ', 'Pi ', 'Bi ', 'Wang ', 'Ang ', 'Fang ', 'Fen ', 'Yi ', 'Fu ', 'Nan ', + 'Xi ', 'Hu ', 'Ya ', 'Dou ', 'Xun ', 'Zhen ', 'Yao ', 'Lin ', 'Rui ', 'E ', 'Mei ', 'Zhao ', 'Guo ', 'Zhi ', 'Cong ', 'Yun ', + 'Waku ', 'Dou ', 'Shu ', 'Zao ', NULL, 'Li ', 'Haze ', 'Jian ', 'Cheng ', 'Matsu ', 'Qiang ', 'Feng ', 'Nan ', 'Xiao ', 'Xian ', 'Ku ', + 'Ping ', 'Yi ', 'Xi ', 'Zhi ', 'Guai ', 'Xiao ', 'Jia ', 'Jia ', 'Gou ', 'Fu ', 'Mo ', 'Yi ', 'Ye ', 'Ye ', 'Shi ', 'Nie ', + 'Bi ', 'Duo ', 'Yi ', 'Ling ', 'Bing ', 'Ni ', 'La ', 'He ', 'Pan ', 'Fan ', 'Zhong ', 'Dai ', 'Ci ', 'Yang ', 'Fu ', 'Bo ', + 'Mou ', 'Gan ', 'Qi ', 'Ran ', 'Rou ', 'Mao ', 'Zhao ', 'Song ', 'Zhe ', 'Xia ', 'You ', 'Shen ', 'Ju ', 'Tuo ', 'Zuo ', 'Nan ', + 'Ning ', 'Yong ', 'Di ', 'Zhi ', 'Zha ', 'Cha ', 'Dan ', 'Gu ', 'Pu ', 'Jiu ', 'Ao ', 'Fu ', 'Jian ', 'Bo ', 'Duo ', 'Ke ', + 'Nai ', 'Zhu ', 'Bi ', 'Liu ', 'Chai ', 'Zha ', 'Si ', 'Zhu ', 'Pei ', 'Shi ', 'Guai ', 'Cha ', 'Yao ', 'Jue ', 'Jiu ', 'Shi '), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/x68.php b/NEUE DATEIEN/includes/classes/transliteration/x68.php new file mode 100644 index 0000000..6eba522 --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/x68.php @@ -0,0 +1,21 @@ + array('Zhi ', 'Liu ', 'Mei ', 'Hoy ', 'Rong ', 'Zha ', NULL, 'Biao ', 'Zhan ', 'Jie ', 'Long ', 'Dong ', 'Lu ', 'Sayng ', 'Li ', 'Lan ', + 'Yong ', 'Shu ', 'Xun ', 'Shuan ', 'Qi ', 'Zhen ', 'Qi ', 'Li ', 'Yi ', 'Xiang ', 'Zhen ', 'Li ', 'Su ', 'Gua ', 'Kan ', 'Bing ', + 'Ren ', 'Xiao ', 'Bo ', 'Ren ', 'Bing ', 'Zi ', 'Chou ', 'Yi ', 'Jie ', 'Xu ', 'Zhu ', 'Jian ', 'Zui ', 'Er ', 'Er ', 'You ', + 'Fa ', 'Gong ', 'Kao ', 'Lao ', 'Zhan ', 'Li ', 'Yin ', 'Yang ', 'He ', 'Gen ', 'Zhi ', 'Chi ', 'Ge ', 'Zai ', 'Luan ', 'Fu ', + 'Jie ', 'Hang ', 'Gui ', 'Tao ', 'Guang ', 'Wei ', 'Kuang ', 'Ru ', 'An ', 'An ', 'Juan ', 'Yi ', 'Zhuo ', 'Ku ', 'Zhi ', 'Qiong ', + 'Tong ', 'Sang ', 'Sang ', 'Huan ', 'Jie ', 'Jiu ', 'Xue ', 'Duo ', 'Zhui ', 'Yu ', 'Zan ', 'Kasei ', 'Ying ', 'Masu ', NULL, 'Zhan ', + 'Ya ', 'Nao ', 'Zhen ', 'Dang ', 'Qi ', 'Qiao ', 'Hua ', 'Kuai ', 'Jiang ', 'Zhuang ', 'Xun ', 'Suo ', 'Sha ', 'Zhen ', 'Bei ', 'Ting ', + 'Gua ', 'Jing ', 'Bo ', 'Ben ', 'Fu ', 'Rui ', 'Tong ', 'Jue ', 'Xi ', 'Lang ', 'Liu ', 'Feng ', 'Qi ', 'Wen ', 'Jun ', 'Gan ', + 'Cu ', 'Liang ', 'Qiu ', 'Ting ', 'You ', 'Mei ', 'Bang ', 'Long ', 'Peng ', 'Zhuang ', 'Di ', 'Xuan ', 'Tu ', 'Zao ', 'Ao ', 'Gu ', + 'Bi ', 'Di ', 'Han ', 'Zi ', 'Zhi ', 'Ren ', 'Bei ', 'Geng ', 'Jian ', 'Huan ', 'Wan ', 'Nuo ', 'Jia ', 'Tiao ', 'Ji ', 'Xiao ', + 'Lu ', 'Huan ', 'Shao ', 'Cen ', 'Fen ', 'Song ', 'Meng ', 'Wu ', 'Li ', 'Li ', 'Dou ', 'Cen ', 'Ying ', 'Suo ', 'Ju ', 'Ti ', + 'Jie ', 'Kun ', 'Zhuo ', 'Shu ', 'Chan ', 'Fan ', 'Wei ', 'Jing ', 'Li ', 'Bing ', 'Fumoto ', 'Shikimi ', 'Tao ', 'Zhi ', 'Lai ', 'Lian ', + 'Jian ', 'Zhuo ', 'Ling ', 'Li ', 'Qi ', 'Bing ', 'Zhun ', 'Cong ', 'Qian ', 'Mian ', 'Qi ', 'Qi ', 'Cai ', 'Gun ', 'Chan ', 'Te ', + 'Fei ', 'Pai ', 'Bang ', 'Pou ', 'Hun ', 'Zong ', 'Cheng ', 'Zao ', 'Ji ', 'Li ', 'Peng ', 'Yu ', 'Yu ', 'Gu ', 'Hun ', 'Dong ', + 'Tang ', 'Gang ', 'Wang ', 'Di ', 'Xi ', 'Fan ', 'Cheng ', 'Zhan ', 'Qi ', 'Yuan ', 'Yan ', 'Yu ', 'Quan ', 'Yi ', 'Sen ', 'Ren ', + 'Chui ', 'Leng ', 'Qi ', 'Zhuo ', 'Fu ', 'Ke ', 'Lai ', 'Zou ', 'Zou ', 'Zhuo ', 'Guan ', 'Fen ', 'Fen ', 'Chen ', 'Qiong ', 'Nie '), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/x69.php b/NEUE DATEIEN/includes/classes/transliteration/x69.php new file mode 100644 index 0000000..fa72ce4 --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/x69.php @@ -0,0 +1,21 @@ + array('Wan ', 'Guo ', 'Lu ', 'Hao ', 'Jie ', 'Yi ', 'Chou ', 'Ju ', 'Ju ', 'Cheng ', 'Zuo ', 'Liang ', 'Qiang ', 'Zhi ', 'Zhui ', 'Ya ', + 'Ju ', 'Bei ', 'Jiao ', 'Zhuo ', 'Zi ', 'Bin ', 'Peng ', 'Ding ', 'Chu ', 'Chang ', 'Kunugi ', 'Momiji ', 'Jian ', 'Gui ', 'Xi ', 'Du ', + 'Qian ', 'Kunugi ', 'Soko ', 'Shide ', 'Luo ', 'Zhi ', 'Ken ', 'Myeng ', 'Tafu ', NULL, 'Peng ', 'Zhan ', NULL, 'Tuo ', 'Sen ', 'Duo ', + 'Ye ', 'Fou ', 'Wei ', 'Wei ', 'Duan ', 'Jia ', 'Zong ', 'Jian ', 'Yi ', 'Shen ', 'Xi ', 'Yan ', 'Yan ', 'Chuan ', 'Zhan ', 'Chun ', + 'Yu ', 'He ', 'Zha ', 'Wo ', 'Pian ', 'Bi ', 'Yao ', 'Huo ', 'Xu ', 'Ruo ', 'Yang ', 'La ', 'Yan ', 'Ben ', 'Hun ', 'Kui ', + 'Jie ', 'Kui ', 'Si ', 'Feng ', 'Xie ', 'Tuo ', 'Zhi ', 'Jian ', 'Mu ', 'Mao ', 'Chu ', 'Hu ', 'Hu ', 'Lian ', 'Leng ', 'Ting ', + 'Nan ', 'Yu ', 'You ', 'Mei ', 'Song ', 'Xuan ', 'Xuan ', 'Ying ', 'Zhen ', 'Pian ', 'Ye ', 'Ji ', 'Jie ', 'Ye ', 'Chu ', 'Shun ', + 'Yu ', 'Cou ', 'Wei ', 'Mei ', 'Di ', 'Ji ', 'Jie ', 'Kai ', 'Qiu ', 'Ying ', 'Rou ', 'Heng ', 'Lou ', 'Le ', 'Hazou ', 'Katsura ', + 'Pin ', 'Muro ', 'Gai ', 'Tan ', 'Lan ', 'Yun ', 'Yu ', 'Chen ', 'Lu ', 'Ju ', 'Sakaki ', NULL, 'Pi ', 'Xie ', 'Jia ', 'Yi ', + 'Zhan ', 'Fu ', 'Nai ', 'Mi ', 'Lang ', 'Rong ', 'Gu ', 'Jian ', 'Ju ', 'Ta ', 'Yao ', 'Zhen ', 'Bang ', 'Sha ', 'Yuan ', 'Zi ', + 'Ming ', 'Su ', 'Jia ', 'Yao ', 'Jie ', 'Huang ', 'Gan ', 'Fei ', 'Zha ', 'Qian ', 'Ma ', 'Sun ', 'Yuan ', 'Xie ', 'Rong ', 'Shi ', + 'Zhi ', 'Cui ', 'Yun ', 'Ting ', 'Liu ', 'Rong ', 'Tang ', 'Que ', 'Zhai ', 'Si ', 'Sheng ', 'Ta ', 'Ke ', 'Xi ', 'Gu ', 'Qi ', + 'Kao ', 'Gao ', 'Sun ', 'Pan ', 'Tao ', 'Ge ', 'Xun ', 'Dian ', 'Nou ', 'Ji ', 'Shuo ', 'Gou ', 'Chui ', 'Qiang ', 'Cha ', 'Qian ', + 'Huai ', 'Mei ', 'Xu ', 'Gang ', 'Gao ', 'Zhuo ', 'Tuo ', 'Hashi ', 'Yang ', 'Dian ', 'Jia ', 'Jian ', 'Zui ', 'Kashi ', 'Ori ', 'Bin ', + 'Zhu ', NULL, 'Xi ', 'Qi ', 'Lian ', 'Hui ', 'Yong ', 'Qian ', 'Guo ', 'Gai ', 'Gai ', 'Tuan ', 'Hua ', 'Cu ', 'Sen ', 'Cui ', + 'Beng ', 'You ', 'Hu ', 'Jiang ', 'Hu ', 'Huan ', 'Kui ', 'Yi ', 'Nie ', 'Gao ', 'Kang ', 'Gui ', 'Gui ', 'Cao ', 'Man ', 'Jin '), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/x6a.php b/NEUE DATEIEN/includes/classes/transliteration/x6a.php new file mode 100644 index 0000000..a879af3 --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/x6a.php @@ -0,0 +1,21 @@ + array('Di ', 'Zhuang ', 'Le ', 'Lang ', 'Chen ', 'Cong ', 'Li ', 'Xiu ', 'Qing ', 'Shuang ', 'Fan ', 'Tong ', 'Guan ', 'Ji ', 'Suo ', 'Lei ', + 'Lu ', 'Liang ', 'Mi ', 'Lou ', 'Chao ', 'Su ', 'Ke ', 'Shu ', 'Tang ', 'Biao ', 'Lu ', 'Jiu ', 'Shu ', 'Zha ', 'Shu ', 'Zhang ', + 'Men ', 'Mo ', 'Niao ', 'Yang ', 'Tiao ', 'Peng ', 'Zhu ', 'Sha ', 'Xi ', 'Quan ', 'Heng ', 'Jian ', 'Cong ', NULL, 'Hokuso ', 'Qiang ', + 'Tara ', 'Ying ', 'Er ', 'Xin ', 'Zhi ', 'Qiao ', 'Zui ', 'Cong ', 'Pu ', 'Shu ', 'Hua ', 'Kui ', 'Zhen ', 'Zun ', 'Yue ', 'Zhan ', + 'Xi ', 'Xun ', 'Dian ', 'Fa ', 'Gan ', 'Mo ', 'Wu ', 'Qiao ', 'Nao ', 'Lin ', 'Liu ', 'Qiao ', 'Xian ', 'Run ', 'Fan ', 'Zhan ', + 'Tuo ', 'Lao ', 'Yun ', 'Shun ', 'Tui ', 'Cheng ', 'Tang ', 'Meng ', 'Ju ', 'Cheng ', 'Su ', 'Jue ', 'Jue ', 'Tan ', 'Hui ', 'Ji ', + 'Nuo ', 'Xiang ', 'Tuo ', 'Ning ', 'Rui ', 'Zhu ', 'Chuang ', 'Zeng ', 'Fen ', 'Qiong ', 'Ran ', 'Heng ', 'Cen ', 'Gu ', 'Liu ', 'Lao ', + 'Gao ', 'Chu ', 'Zusa ', 'Nude ', 'Ca ', 'San ', 'Ji ', 'Dou ', 'Shou ', 'Lu ', NULL, NULL, 'Yuan ', 'Ta ', 'Shu ', 'Jiang ', + 'Tan ', 'Lin ', 'Nong ', 'Yin ', 'Xi ', 'Sui ', 'Shan ', 'Zui ', 'Xuan ', 'Cheng ', 'Gan ', 'Ju ', 'Zui ', 'Yi ', 'Qin ', 'Pu ', + 'Yan ', 'Lei ', 'Feng ', 'Hui ', 'Dang ', 'Ji ', 'Sui ', 'Bo ', 'Bi ', 'Ding ', 'Chu ', 'Zhua ', 'Kuai ', 'Ji ', 'Jie ', 'Jia ', + 'Qing ', 'Zhe ', 'Jian ', 'Qiang ', 'Dao ', 'Yi ', 'Biao ', 'Song ', 'She ', 'Lin ', 'Kunugi ', 'Cha ', 'Meng ', 'Yin ', 'Tao ', 'Tai ', + 'Mian ', 'Qi ', 'Toan ', 'Bin ', 'Huo ', 'Ji ', 'Qian ', 'Mi ', 'Ning ', 'Yi ', 'Gao ', 'Jian ', 'Yin ', 'Er ', 'Qing ', 'Yan ', + 'Qi ', 'Mi ', 'Zhao ', 'Gui ', 'Chun ', 'Ji ', 'Kui ', 'Po ', 'Deng ', 'Chu ', NULL, 'Mian ', 'You ', 'Zhi ', 'Guang ', 'Qian ', + 'Lei ', 'Lei ', 'Sa ', 'Lu ', 'Li ', 'Cuan ', 'Lu ', 'Mie ', 'Hui ', 'Ou ', 'Lu ', 'Jie ', 'Gao ', 'Du ', 'Yuan ', 'Li ', + 'Fei ', 'Zhuo ', 'Sou ', 'Lian ', 'Tamo ', 'Chu ', NULL, 'Zhu ', 'Lu ', 'Yan ', 'Li ', 'Zhu ', 'Chen ', 'Jie ', 'E ', 'Su ', + 'Huai ', 'Nie ', 'Yu ', 'Long ', 'Lai ', NULL, 'Xian ', 'Kwi ', 'Ju ', 'Xiao ', 'Ling ', 'Ying ', 'Jian ', 'Yin ', 'You ', 'Ying '), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/x6b.php b/NEUE DATEIEN/includes/classes/transliteration/x6b.php new file mode 100644 index 0000000..a24d7ef --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/x6b.php @@ -0,0 +1,21 @@ + array('Xiang ', 'Nong ', 'Bo ', 'Chan ', 'Lan ', 'Ju ', 'Shuang ', 'She ', 'Wei ', 'Cong ', 'Quan ', 'Qu ', 'Cang ', NULL, 'Yu ', 'Luo ', + 'Li ', 'Zan ', 'Luan ', 'Dang ', 'Jue ', 'Em ', 'Lan ', 'Lan ', 'Zhu ', 'Lei ', 'Li ', 'Ba ', 'Nang ', 'Yu ', 'Ling ', 'Tsuki ', + 'Qian ', 'Ci ', 'Huan ', 'Xin ', 'Yu ', 'Yu ', 'Qian ', 'Ou ', 'Xu ', 'Chao ', 'Chu ', 'Chi ', 'Kai ', 'Yi ', 'Jue ', 'Xi ', + 'Xu ', 'Xia ', 'Yu ', 'Kuai ', 'Lang ', 'Kuan ', 'Shuo ', 'Xi ', 'Ai ', 'Yi ', 'Qi ', 'Hu ', 'Chi ', 'Qin ', 'Kuan ', 'Kan ', + 'Kuan ', 'Kan ', 'Chuan ', 'Sha ', 'Gua ', 'Yin ', 'Xin ', 'Xie ', 'Yu ', 'Qian ', 'Xiao ', 'Yi ', 'Ge ', 'Wu ', 'Tan ', 'Jin ', + 'Ou ', 'Hu ', 'Ti ', 'Huan ', 'Xu ', 'Pen ', 'Xi ', 'Xiao ', 'Xu ', 'Xi ', 'Sen ', 'Lian ', 'Chu ', 'Yi ', 'Kan ', 'Yu ', + 'Chuo ', 'Huan ', 'Zhi ', 'Zheng ', 'Ci ', 'Bu ', 'Wu ', 'Qi ', 'Bu ', 'Bu ', 'Wai ', 'Ju ', 'Qian ', 'Chi ', 'Se ', 'Chi ', + 'Se ', 'Zhong ', 'Sui ', 'Sui ', 'Li ', 'Cuo ', 'Yu ', 'Li ', 'Gui ', 'Dai ', 'Dai ', 'Si ', 'Jian ', 'Zhe ', 'Mo ', 'Mo ', + 'Yao ', 'Mo ', 'Cu ', 'Yang ', 'Tian ', 'Sheng ', 'Dai ', 'Shang ', 'Xu ', 'Xun ', 'Shu ', 'Can ', 'Jue ', 'Piao ', 'Qia ', 'Qiu ', + 'Su ', 'Qing ', 'Yun ', 'Lian ', 'Yi ', 'Fou ', 'Zhi ', 'Ye ', 'Can ', 'Hun ', 'Dan ', 'Ji ', 'Ye ', 'Zhen ', 'Yun ', 'Wen ', + 'Chou ', 'Bin ', 'Ti ', 'Jin ', 'Shang ', 'Yin ', 'Diao ', 'Cu ', 'Hui ', 'Cuan ', 'Yi ', 'Dan ', 'Du ', 'Jiang ', 'Lian ', 'Bin ', + 'Du ', 'Tsukusu ', 'Jian ', 'Shu ', 'Ou ', 'Duan ', 'Zhu ', 'Yin ', 'Qing ', 'Yi ', 'Sha ', 'Que ', 'Ke ', 'Yao ', 'Jun ', 'Dian ', + 'Hui ', 'Hui ', 'Gu ', 'Que ', 'Ji ', 'Yi ', 'Ou ', 'Hui ', 'Duan ', 'Yi ', 'Xiao ', 'Wu ', 'Guan ', 'Mu ', 'Mei ', 'Mei ', + 'Ai ', 'Zuo ', 'Du ', 'Yu ', 'Bi ', 'Bi ', 'Bi ', 'Pi ', 'Pi ', 'Bi ', 'Chan ', 'Mao ', NULL, NULL, 'Pu ', 'Mushiru ', + 'Jia ', 'Zhan ', 'Sai ', 'Mu ', 'Tuo ', 'Xun ', 'Er ', 'Rong ', 'Xian ', 'Ju ', 'Mu ', 'Hao ', 'Qiu ', 'Dou ', 'Mushiru ', 'Tan ', + 'Pei ', 'Ju ', 'Duo ', 'Cui ', 'Bi ', 'San ', NULL, 'Mao ', 'Sui ', 'Yu ', 'Yu ', 'Tuo ', 'He ', 'Jian ', 'Ta ', 'San '), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/x6c.php b/NEUE DATEIEN/includes/classes/transliteration/x6c.php new file mode 100644 index 0000000..0d09829 --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/x6c.php @@ -0,0 +1,21 @@ + array('Lu ', 'Mu ', 'Li ', 'Tong ', 'Rong ', 'Chang ', 'Pu ', 'Luo ', 'Zhan ', 'Sao ', 'Zhan ', 'Meng ', 'Luo ', 'Qu ', 'Die ', 'Shi ', + 'Di ', 'Min ', 'Jue ', 'Mang ', 'Qi ', 'Pie ', 'Nai ', 'Qi ', 'Dao ', 'Xian ', 'Chuan ', 'Fen ', 'Ri ', 'Nei ', NULL, 'Fu ', + 'Shen ', 'Dong ', 'Qing ', 'Qi ', 'Yin ', 'Xi ', 'Hai ', 'Yang ', 'An ', 'Ya ', 'Ke ', 'Qing ', 'Ya ', 'Dong ', 'Dan ', 'Lu ', + 'Qing ', 'Yang ', 'Yun ', 'Yun ', 'Shui ', 'San ', 'Zheng ', 'Bing ', 'Yong ', 'Dang ', 'Shitamizu ', 'Le ', 'Ni ', 'Tun ', 'Fan ', 'Gui ', + 'Ting ', 'Zhi ', 'Qiu ', 'Bin ', 'Ze ', 'Mian ', 'Cuan ', 'Hui ', 'Diao ', 'Yi ', 'Cha ', 'Zhuo ', 'Chuan ', 'Wan ', 'Fan ', 'Dai ', + 'Xi ', 'Tuo ', 'Mang ', 'Qiu ', 'Qi ', 'Shan ', 'Pai ', 'Han ', 'Qian ', 'Wu ', 'Wu ', 'Xun ', 'Si ', 'Ru ', 'Gong ', 'Jiang ', + 'Chi ', 'Wu ', 'Tsuchi ', NULL, 'Tang ', 'Zhi ', 'Chi ', 'Qian ', 'Mi ', 'Yu ', 'Wang ', 'Qing ', 'Jing ', 'Rui ', 'Jun ', 'Hong ', + 'Tai ', 'Quan ', 'Ji ', 'Bian ', 'Bian ', 'Gan ', 'Wen ', 'Zhong ', 'Fang ', 'Xiong ', 'Jue ', 'Hang ', 'Niou ', 'Qi ', 'Fen ', 'Xu ', + 'Xu ', 'Qin ', 'Yi ', 'Wo ', 'Yun ', 'Yuan ', 'Hang ', 'Yan ', 'Chen ', 'Chen ', 'Dan ', 'You ', 'Dun ', 'Hu ', 'Huo ', 'Qie ', + 'Mu ', 'Rou ', 'Mei ', 'Ta ', 'Mian ', 'Wu ', 'Chong ', 'Tian ', 'Bi ', 'Sha ', 'Zhi ', 'Pei ', 'Pan ', 'Zhui ', 'Za ', 'Gou ', + 'Liu ', 'Mei ', 'Ze ', 'Feng ', 'Ou ', 'Li ', 'Lun ', 'Cang ', 'Feng ', 'Wei ', 'Hu ', 'Mo ', 'Mei ', 'Shu ', 'Ju ', 'Zan ', + 'Tuo ', 'Tuo ', 'Tuo ', 'He ', 'Li ', 'Mi ', 'Yi ', 'Fa ', 'Fei ', 'You ', 'Tian ', 'Zhi ', 'Zhao ', 'Gu ', 'Zhan ', 'Yan ', + 'Si ', 'Kuang ', 'Jiong ', 'Ju ', 'Xie ', 'Qiu ', 'Yi ', 'Jia ', 'Zhong ', 'Quan ', 'Bo ', 'Hui ', 'Mi ', 'Ben ', 'Zhuo ', 'Chu ', + 'Le ', 'You ', 'Gu ', 'Hong ', 'Gan ', 'Fa ', 'Mao ', 'Si ', 'Hu ', 'Ping ', 'Ci ', 'Fan ', 'Chi ', 'Su ', 'Ning ', 'Cheng ', + 'Ling ', 'Pao ', 'Bo ', 'Qi ', 'Si ', 'Ni ', 'Ju ', 'Yue ', 'Zhu ', 'Sheng ', 'Lei ', 'Xuan ', 'Xue ', 'Fu ', 'Pan ', 'Min ', + 'Tai ', 'Yang ', 'Ji ', 'Yong ', 'Guan ', 'Beng ', 'Xue ', 'Long ', 'Lu ', NULL, 'Bo ', 'Xie ', 'Po ', 'Ze ', 'Jing ', 'Yin '), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/x6d.php b/NEUE DATEIEN/includes/classes/transliteration/x6d.php new file mode 100644 index 0000000..c12304c --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/x6d.php @@ -0,0 +1,21 @@ + array('Zhou ', 'Ji ', 'Yi ', 'Hui ', 'Hui ', 'Zui ', 'Cheng ', 'Yin ', 'Wei ', 'Hou ', 'Jian ', 'Yang ', 'Lie ', 'Si ', 'Ji ', 'Er ', + 'Xing ', 'Fu ', 'Sa ', 'Suo ', 'Zhi ', 'Yin ', 'Wu ', 'Xi ', 'Kao ', 'Zhu ', 'Jiang ', 'Luo ', NULL, 'An ', 'Dong ', 'Yi ', + 'Mou ', 'Lei ', 'Yi ', 'Mi ', 'Quan ', 'Jin ', 'Mo ', 'Wei ', 'Xiao ', 'Xie ', 'Hong ', 'Xu ', 'Shuo ', 'Kuang ', 'Tao ', 'Qie ', + 'Ju ', 'Er ', 'Zhou ', 'Ru ', 'Ping ', 'Xun ', 'Xiong ', 'Zhi ', 'Guang ', 'Huan ', 'Ming ', 'Huo ', 'Wa ', 'Qia ', 'Pai ', 'Wu ', + 'Qu ', 'Liu ', 'Yi ', 'Jia ', 'Jing ', 'Qian ', 'Jiang ', 'Jiao ', 'Cheng ', 'Shi ', 'Zhuo ', 'Ce ', 'Pal ', 'Kuai ', 'Ji ', 'Liu ', + 'Chan ', 'Hun ', 'Hu ', 'Nong ', 'Xun ', 'Jin ', 'Lie ', 'Qiu ', 'Wei ', 'Zhe ', 'Jun ', 'Han ', 'Bang ', 'Mang ', 'Zhuo ', 'You ', + 'Xi ', 'Bo ', 'Dou ', 'Wan ', 'Hong ', 'Yi ', 'Pu ', 'Ying ', 'Lan ', 'Hao ', 'Lang ', 'Han ', 'Li ', 'Geng ', 'Fu ', 'Wu ', + 'Lian ', 'Chun ', 'Feng ', 'Yi ', 'Yu ', 'Tong ', 'Lao ', 'Hai ', 'Jin ', 'Jia ', 'Chong ', 'Weng ', 'Mei ', 'Sui ', 'Cheng ', 'Pei ', + 'Xian ', 'Shen ', 'Tu ', 'Kun ', 'Pin ', 'Nie ', 'Han ', 'Jing ', 'Xiao ', 'She ', 'Nian ', 'Tu ', 'Yong ', 'Xiao ', 'Xian ', 'Ting ', + 'E ', 'Su ', 'Tun ', 'Juan ', 'Cen ', 'Ti ', 'Li ', 'Shui ', 'Si ', 'Lei ', 'Shui ', 'Tao ', 'Du ', 'Lao ', 'Lai ', 'Lian ', + 'Wei ', 'Wo ', 'Yun ', 'Huan ', 'Di ', NULL, 'Run ', 'Jian ', 'Zhang ', 'Se ', 'Fu ', 'Guan ', 'Xing ', 'Shou ', 'Shuan ', 'Ya ', + 'Chuo ', 'Zhang ', 'Ye ', 'Kong ', 'Wo ', 'Han ', 'Tuo ', 'Dong ', 'He ', 'Wo ', 'Ju ', 'Gan ', 'Liang ', 'Hun ', 'Ta ', 'Zhuo ', + 'Dian ', 'Qie ', 'De ', 'Juan ', 'Zi ', 'Xi ', 'Yao ', 'Qi ', 'Gu ', 'Guo ', 'Han ', 'Lin ', 'Tang ', 'Zhou ', 'Peng ', 'Hao ', + 'Chang ', 'Shu ', 'Qi ', 'Fang ', 'Chi ', 'Lu ', 'Nao ', 'Ju ', 'Tao ', 'Cong ', 'Lei ', 'Zhi ', 'Peng ', 'Fei ', 'Song ', 'Tian ', + 'Pi ', 'Dan ', 'Yu ', 'Ni ', 'Yu ', 'Lu ', 'Gan ', 'Mi ', 'Jing ', 'Ling ', 'Lun ', 'Yin ', 'Cui ', 'Qu ', 'Huai ', 'Yu ', + 'Nian ', 'Shen ', 'Piao ', 'Chun ', 'Wa ', 'Yuan ', 'Lai ', 'Hun ', 'Qing ', 'Yan ', 'Qian ', 'Tian ', 'Miao ', 'Zhi ', 'Yin ', 'Mi '), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/x6e.php b/NEUE DATEIEN/includes/classes/transliteration/x6e.php new file mode 100644 index 0000000..ead56c6 --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/x6e.php @@ -0,0 +1,21 @@ + array('Ben ', 'Yuan ', 'Wen ', 'Re ', 'Fei ', 'Qing ', 'Yuan ', 'Ke ', 'Ji ', 'She ', 'Yuan ', 'Shibui ', 'Lu ', 'Zi ', 'Du ', NULL, + 'Jian ', 'Min ', 'Pi ', 'Tani ', 'Yu ', 'Yuan ', 'Shen ', 'Shen ', 'Rou ', 'Huan ', 'Zhu ', 'Jian ', 'Nuan ', 'Yu ', 'Qiu ', 'Ting ', + 'Qu ', 'Du ', 'Feng ', 'Zha ', 'Bo ', 'Wo ', 'Wo ', 'Di ', 'Wei ', 'Wen ', 'Ru ', 'Xie ', 'Ce ', 'Wei ', 'Ge ', 'Gang ', + 'Yan ', 'Hong ', 'Xuan ', 'Mi ', 'Ke ', 'Mao ', 'Ying ', 'Yan ', 'You ', 'Hong ', 'Miao ', 'Xing ', 'Mei ', 'Zai ', 'Hun ', 'Nai ', + 'Kui ', 'Shi ', 'E ', 'Pai ', 'Mei ', 'Lian ', 'Qi ', 'Qi ', 'Mei ', 'Tian ', 'Cou ', 'Wei ', 'Can ', 'Tuan ', 'Mian ', 'Hui ', + 'Mo ', 'Xu ', 'Ji ', 'Pen ', 'Jian ', 'Jian ', 'Hu ', 'Feng ', 'Xiang ', 'Yi ', 'Yin ', 'Zhan ', 'Shi ', 'Jie ', 'Cheng ', 'Huang ', + 'Tan ', 'Yu ', 'Bi ', 'Min ', 'Shi ', 'Tu ', 'Sheng ', 'Yong ', 'Qu ', 'Zhong ', 'Suei ', 'Jiu ', 'Jiao ', 'Qiou ', 'Yin ', 'Tang ', + 'Long ', 'Huo ', 'Yuan ', 'Nan ', 'Ban ', 'You ', 'Quan ', 'Chui ', 'Liang ', 'Chan ', 'Yan ', 'Chun ', 'Nie ', 'Zi ', 'Wan ', 'Shi ', + 'Man ', 'Ying ', 'Ratsu ', 'Kui ', NULL, 'Jian ', 'Xu ', 'Lu ', 'Gui ', 'Gai ', NULL, NULL, 'Po ', 'Jin ', 'Gui ', 'Tang ', + 'Yuan ', 'Suo ', 'Yuan ', 'Lian ', 'Yao ', 'Meng ', 'Zhun ', 'Sheng ', 'Ke ', 'Tai ', 'Da ', 'Wa ', 'Liu ', 'Gou ', 'Sao ', 'Ming ', + 'Zha ', 'Shi ', 'Yi ', 'Lun ', 'Ma ', 'Pu ', 'Wei ', 'Li ', 'Cai ', 'Wu ', 'Xi ', 'Wen ', 'Qiang ', 'Ze ', 'Shi ', 'Su ', + 'Yi ', 'Zhen ', 'Sou ', 'Yun ', 'Xiu ', 'Yin ', 'Rong ', 'Hun ', 'Su ', 'Su ', 'Ni ', 'Ta ', 'Shi ', 'Ru ', 'Wei ', 'Pan ', + 'Chu ', 'Chu ', 'Pang ', 'Weng ', 'Cang ', 'Mie ', 'He ', 'Dian ', 'Hao ', 'Huang ', 'Xi ', 'Zi ', 'Di ', 'Zhi ', 'Ying ', 'Fu ', + 'Jie ', 'Hua ', 'Ge ', 'Zi ', 'Tao ', 'Teng ', 'Sui ', 'Bi ', 'Jiao ', 'Hui ', 'Gun ', 'Yin ', 'Gao ', 'Long ', 'Zhi ', 'Yan ', + 'She ', 'Man ', 'Ying ', 'Chun ', 'Lu ', 'Lan ', 'Luan ', NULL, 'Bin ', 'Tan ', 'Yu ', 'Sou ', 'Hu ', 'Bi ', 'Biao ', 'Zhi ', + 'Jiang ', 'Kou ', 'Shen ', 'Shang ', 'Di ', 'Mi ', 'Ao ', 'Lu ', 'Hu ', 'Hu ', 'You ', 'Chan ', 'Fan ', 'Yong ', 'Gun ', 'Man '), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/x6f.php b/NEUE DATEIEN/includes/classes/transliteration/x6f.php new file mode 100644 index 0000000..2f4a786 --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/x6f.php @@ -0,0 +1,21 @@ + array('Qing ', 'Yu ', 'Piao ', 'Ji ', 'Ya ', 'Jiao ', 'Qi ', 'Xi ', 'Ji ', 'Lu ', 'Lu ', 'Long ', 'Jin ', 'Guo ', 'Cong ', 'Lou ', + 'Zhi ', 'Gai ', 'Qiang ', 'Li ', 'Yan ', 'Cao ', 'Jiao ', 'Cong ', 'Qun ', 'Tuan ', 'Ou ', 'Teng ', 'Ye ', 'Xi ', 'Mi ', 'Tang ', + 'Mo ', 'Shang ', 'Han ', 'Lian ', 'Lan ', 'Wa ', 'Li ', 'Qian ', 'Feng ', 'Xuan ', 'Yi ', 'Man ', 'Zi ', 'Mang ', 'Kang ', 'Lei ', + 'Peng ', 'Shu ', 'Zhang ', 'Zhang ', 'Chong ', 'Xu ', 'Huan ', 'Kuo ', 'Jian ', 'Yan ', 'Chuang ', 'Liao ', 'Cui ', 'Ti ', 'Yang ', 'Jiang ', + 'Cong ', 'Ying ', 'Hong ', 'Xun ', 'Shu ', 'Guan ', 'Ying ', 'Xiao ', NULL, NULL, 'Xu ', 'Lian ', 'Zhi ', 'Wei ', 'Pi ', 'Jue ', + 'Jiao ', 'Po ', 'Dang ', 'Hui ', 'Jie ', 'Wu ', 'Pa ', 'Ji ', 'Pan ', 'Gui ', 'Xiao ', 'Qian ', 'Qian ', 'Xi ', 'Lu ', 'Xi ', + 'Xuan ', 'Dun ', 'Huang ', 'Min ', 'Run ', 'Su ', 'Liao ', 'Zhen ', 'Zhong ', 'Yi ', 'Di ', 'Wan ', 'Dan ', 'Tan ', 'Chao ', 'Xun ', + 'Kui ', 'Yie ', 'Shao ', 'Tu ', 'Zhu ', 'San ', 'Hei ', 'Bi ', 'Shan ', 'Chan ', 'Chan ', 'Shu ', 'Tong ', 'Pu ', 'Lin ', 'Wei ', + 'Se ', 'Se ', 'Cheng ', 'Jiong ', 'Cheng ', 'Hua ', 'Jiao ', 'Lao ', 'Che ', 'Gan ', 'Cun ', 'Heng ', 'Si ', 'Shu ', 'Peng ', 'Han ', + 'Yun ', 'Liu ', 'Hong ', 'Fu ', 'Hao ', 'He ', 'Xian ', 'Jian ', 'Shan ', 'Xi ', 'Oki ', NULL, 'Lan ', NULL, 'Yu ', 'Lin ', + 'Min ', 'Zao ', 'Dang ', 'Wan ', 'Ze ', 'Xie ', 'Yu ', 'Li ', 'Shi ', 'Xue ', 'Ling ', 'Man ', 'Zi ', 'Yong ', 'Kuai ', 'Can ', + 'Lian ', 'Dian ', 'Ye ', 'Ao ', 'Huan ', 'Zhen ', 'Chan ', 'Man ', 'Dan ', 'Dan ', 'Yi ', 'Sui ', 'Pi ', 'Ju ', 'Ta ', 'Qin ', + 'Ji ', 'Zhuo ', 'Lian ', 'Nong ', 'Guo ', 'Jin ', 'Fen ', 'Se ', 'Ji ', 'Sui ', 'Hui ', 'Chu ', 'Ta ', 'Song ', 'Ding ', NULL, + 'Zhu ', 'Lai ', 'Bin ', 'Lian ', 'Mi ', 'Shi ', 'Shu ', 'Mi ', 'Ning ', 'Ying ', 'Ying ', 'Meng ', 'Jin ', 'Qi ', 'Pi ', 'Ji ', + 'Hao ', 'Ru ', 'Zui ', 'Wo ', 'Tao ', 'Yin ', 'Yin ', 'Dui ', 'Ci ', 'Huo ', 'Jing ', 'Lan ', 'Jun ', 'Ai ', 'Pu ', 'Zhuo ', + 'Wei ', 'Bin ', 'Gu ', 'Qian ', 'Xing ', 'Hama ', 'Kuo ', 'Fei ', NULL, 'Boku ', 'Jian ', 'Wei ', 'Luo ', 'Zan ', 'Lu ', 'Li '), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/x70.php b/NEUE DATEIEN/includes/classes/transliteration/x70.php new file mode 100644 index 0000000..01418c7 --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/x70.php @@ -0,0 +1,21 @@ + array('You ', 'Yang ', 'Lu ', 'Si ', 'Jie ', 'Ying ', 'Du ', 'Wang ', 'Hui ', 'Xie ', 'Pan ', 'Shen ', 'Biao ', 'Chan ', 'Mo ', 'Liu ', + 'Jian ', 'Pu ', 'Se ', 'Cheng ', 'Gu ', 'Bin ', 'Huo ', 'Xian ', 'Lu ', 'Qin ', 'Han ', 'Ying ', 'Yong ', 'Li ', 'Jing ', 'Xiao ', + 'Ying ', 'Sui ', 'Wei ', 'Xie ', 'Huai ', 'Hao ', 'Zhu ', 'Long ', 'Lai ', 'Dui ', 'Fan ', 'Hu ', 'Lai ', NULL, NULL, 'Ying ', + 'Mi ', 'Ji ', 'Lian ', 'Jian ', 'Ying ', 'Fen ', 'Lin ', 'Yi ', 'Jian ', 'Yue ', 'Chan ', 'Dai ', 'Rang ', 'Jian ', 'Lan ', 'Fan ', + 'Shuang ', 'Yuan ', 'Zhuo ', 'Feng ', 'She ', 'Lei ', 'Lan ', 'Cong ', 'Qu ', 'Yong ', 'Qian ', 'Fa ', 'Guan ', 'Que ', 'Yan ', 'Hao ', + 'Hyeng ', 'Sa ', 'Zan ', 'Luan ', 'Yan ', 'Li ', 'Mi ', 'Shan ', 'Tan ', 'Dang ', 'Jiao ', 'Chan ', NULL, 'Hao ', 'Ba ', 'Zhu ', + 'Lan ', 'Lan ', 'Nang ', 'Wan ', 'Luan ', 'Xun ', 'Xian ', 'Yan ', 'Gan ', 'Yan ', 'Yu ', 'Huo ', 'Si ', 'Mie ', 'Guang ', 'Deng ', + 'Hui ', 'Xiao ', 'Xiao ', 'Hu ', 'Hong ', 'Ling ', 'Zao ', 'Zhuan ', 'Jiu ', 'Zha ', 'Xie ', 'Chi ', 'Zhuo ', 'Zai ', 'Zai ', 'Can ', + 'Yang ', 'Qi ', 'Zhong ', 'Fen ', 'Niu ', 'Jiong ', 'Wen ', 'Po ', 'Yi ', 'Lu ', 'Chui ', 'Pi ', 'Kai ', 'Pan ', 'Yan ', 'Kai ', + 'Pang ', 'Mu ', 'Chao ', 'Liao ', 'Gui ', 'Kang ', 'Tun ', 'Guang ', 'Xin ', 'Zhi ', 'Guang ', 'Guang ', 'Wei ', 'Qiang ', NULL, 'Da ', + 'Xia ', 'Zheng ', 'Zhu ', 'Ke ', 'Zhao ', 'Fu ', 'Ba ', 'Duo ', 'Duo ', 'Ling ', 'Zhuo ', 'Xuan ', 'Ju ', 'Tan ', 'Pao ', 'Jiong ', + 'Pao ', 'Tai ', 'Tai ', 'Bing ', 'Yang ', 'Tong ', 'Han ', 'Zhu ', 'Zha ', 'Dian ', 'Wei ', 'Shi ', 'Lian ', 'Chi ', 'Huang ', NULL, + 'Hu ', 'Shuo ', 'Lan ', 'Jing ', 'Jiao ', 'Xu ', 'Xing ', 'Quan ', 'Lie ', 'Huan ', 'Yang ', 'Xiao ', 'Xiu ', 'Xian ', 'Yin ', 'Wu ', + 'Zhou ', 'Yao ', 'Shi ', 'Wei ', 'Tong ', 'Xue ', 'Zai ', 'Kai ', 'Hong ', 'Luo ', 'Xia ', 'Zhu ', 'Xuan ', 'Zheng ', 'Po ', 'Yan ', + 'Hui ', 'Guang ', 'Zhe ', 'Hui ', 'Kao ', NULL, 'Fan ', 'Shao ', 'Ye ', 'Hui ', NULL, 'Tang ', 'Jin ', 'Re ', NULL, 'Xi ', + 'Fu ', 'Jiong ', 'Che ', 'Pu ', 'Jing ', 'Zhuo ', 'Ting ', 'Wan ', 'Hai ', 'Peng ', 'Lang ', 'Shan ', 'Hu ', 'Feng ', 'Chi ', 'Rong '), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/x71.php b/NEUE DATEIEN/includes/classes/transliteration/x71.php new file mode 100644 index 0000000..322e0fc --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/x71.php @@ -0,0 +1,21 @@ + array('Hu ', 'Xi ', 'Shu ', 'He ', 'Xun ', 'Ku ', 'Jue ', 'Xiao ', 'Xi ', 'Yan ', 'Han ', 'Zhuang ', 'Jun ', 'Di ', 'Xie ', 'Ji ', + 'Wu ', NULL, NULL, 'Han ', 'Yan ', 'Huan ', 'Men ', 'Ju ', 'Chou ', 'Bei ', 'Fen ', 'Lin ', 'Kun ', 'Hun ', 'Tun ', 'Xi ', + 'Cui ', 'Wu ', 'Hong ', 'Ju ', 'Fu ', 'Wo ', 'Jiao ', 'Cong ', 'Feng ', 'Ping ', 'Qiong ', 'Ruo ', 'Xi ', 'Qiong ', 'Xin ', 'Zhuo ', + 'Yan ', 'Yan ', 'Yi ', 'Jue ', 'Yu ', 'Gang ', 'Ran ', 'Pi ', 'Gu ', NULL, 'Sheng ', 'Chang ', 'Shao ', NULL, NULL, NULL, + NULL, 'Chen ', 'He ', 'Kui ', 'Zhong ', 'Duan ', 'Xia ', 'Hui ', 'Feng ', 'Lian ', 'Xuan ', 'Xing ', 'Huang ', 'Jiao ', 'Jian ', 'Bi ', + 'Ying ', 'Zhu ', 'Wei ', 'Tuan ', 'Tian ', 'Xi ', 'Nuan ', 'Nuan ', 'Chan ', 'Yan ', 'Jiong ', 'Jiong ', 'Yu ', 'Mei ', 'Sha ', 'Wei ', + 'Ye ', 'Xin ', 'Qiong ', 'Rou ', 'Mei ', 'Huan ', 'Xu ', 'Zhao ', 'Wei ', 'Fan ', 'Qiu ', 'Sui ', 'Yang ', 'Lie ', 'Zhu ', 'Jie ', + 'Gao ', 'Gua ', 'Bao ', 'Hu ', 'Yun ', 'Xia ', NULL, NULL, 'Bian ', 'Gou ', 'Tui ', 'Tang ', 'Chao ', 'Shan ', 'N ', 'Bo ', + 'Huang ', 'Xie ', 'Xi ', 'Wu ', 'Xi ', 'Yun ', 'He ', 'He ', 'Xi ', 'Yun ', 'Xiong ', 'Nai ', 'Shan ', 'Qiong ', 'Yao ', 'Xun ', + 'Mi ', 'Lian ', 'Ying ', 'Wen ', 'Rong ', 'Oozutsu ', NULL, 'Qiang ', 'Liu ', 'Xi ', 'Bi ', 'Biao ', 'Zong ', 'Lu ', 'Jian ', 'Shou ', + 'Yi ', 'Lou ', 'Feng ', 'Sui ', 'Yi ', 'Tong ', 'Jue ', 'Zong ', 'Yun ', 'Hu ', 'Yi ', 'Zhi ', 'Ao ', 'Wei ', 'Liao ', 'Han ', + 'Ou ', 'Re ', 'Jiong ', 'Man ', NULL, 'Shang ', 'Cuan ', 'Zeng ', 'Jian ', 'Xi ', 'Xi ', 'Xi ', 'Yi ', 'Xiao ', 'Chi ', 'Huang ', + 'Chan ', 'Ye ', 'Qian ', 'Ran ', 'Yan ', 'Xian ', 'Qiao ', 'Zun ', 'Deng ', 'Dun ', 'Shen ', 'Jiao ', 'Fen ', 'Si ', 'Liao ', 'Yu ', + 'Lin ', 'Tong ', 'Shao ', 'Fen ', 'Fan ', 'Yan ', 'Xun ', 'Lan ', 'Mei ', 'Tang ', 'Yi ', 'Jing ', 'Men ', NULL, NULL, 'Ying ', + 'Yu ', 'Yi ', 'Xue ', 'Lan ', 'Tai ', 'Zao ', 'Can ', 'Sui ', 'Xi ', 'Que ', 'Cong ', 'Lian ', 'Hui ', 'Zhu ', 'Xie ', 'Ling ', + 'Wei ', 'Yi ', 'Xie ', 'Zhao ', 'Hui ', 'Tatsu ', 'Nung ', 'Lan ', 'Ru ', 'Xian ', 'Kao ', 'Xun ', 'Jin ', 'Chou ', 'Chou ', 'Yao '), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/x72.php b/NEUE DATEIEN/includes/classes/transliteration/x72.php new file mode 100644 index 0000000..e25d332 --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/x72.php @@ -0,0 +1,21 @@ + array('He ', 'Lan ', 'Biao ', 'Rong ', 'Li ', 'Mo ', 'Bao ', 'Ruo ', 'Lu ', 'La ', 'Ao ', 'Xun ', 'Kuang ', 'Shuo ', NULL, 'Li ', + 'Lu ', 'Jue ', 'Liao ', 'Yan ', 'Xi ', 'Xie ', 'Long ', 'Ye ', NULL, 'Rang ', 'Yue ', 'Lan ', 'Cong ', 'Jue ', 'Tong ', 'Guan ', + NULL, 'Che ', 'Mi ', 'Tang ', 'Lan ', 'Zhu ', NULL, 'Ling ', 'Cuan ', 'Yu ', 'Zhua ', 'Tsumekanmuri ', 'Pa ', 'Zheng ', 'Pao ', 'Cheng ', + 'Yuan ', 'Ai ', 'Wei ', NULL, 'Jue ', 'Jue ', 'Fu ', 'Ye ', 'Ba ', 'Die ', 'Ye ', 'Yao ', 'Zu ', 'Shuang ', 'Er ', 'Qiang ', + 'Chuang ', 'Ge ', 'Zang ', 'Die ', 'Qiang ', 'Yong ', 'Qiang ', 'Pian ', 'Ban ', 'Pan ', 'Shao ', 'Jian ', 'Pai ', 'Du ', 'Chuang ', 'Tou ', + 'Zha ', 'Bian ', 'Die ', 'Bang ', 'Bo ', 'Chuang ', 'You ', NULL, 'Du ', 'Ya ', 'Cheng ', 'Niu ', 'Ushihen ', 'Pin ', 'Jiu ', 'Mou ', + 'Tuo ', 'Mu ', 'Lao ', 'Ren ', 'Mang ', 'Fang ', 'Mao ', 'Mu ', 'Gang ', 'Wu ', 'Yan ', 'Ge ', 'Bei ', 'Si ', 'Jian ', 'Gu ', + 'You ', 'Ge ', 'Sheng ', 'Mu ', 'Di ', 'Qian ', 'Quan ', 'Quan ', 'Zi ', 'Te ', 'Xi ', 'Mang ', 'Keng ', 'Qian ', 'Wu ', 'Gu ', + 'Xi ', 'Li ', 'Li ', 'Pou ', 'Ji ', 'Gang ', 'Zhi ', 'Ben ', 'Quan ', 'Run ', 'Du ', 'Ju ', 'Jia ', 'Jian ', 'Feng ', 'Pian ', + 'Ke ', 'Ju ', 'Kao ', 'Chu ', 'Xi ', 'Bei ', 'Luo ', 'Jie ', 'Ma ', 'San ', 'Wei ', 'Li ', 'Dun ', 'Tong ', NULL, 'Jiang ', + 'Ikenie ', 'Li ', 'Du ', 'Lie ', 'Pi ', 'Piao ', 'Bao ', 'Xi ', 'Chou ', 'Wei ', 'Kui ', 'Chou ', 'Quan ', 'Fan ', 'Ba ', 'Fan ', + 'Qiu ', 'Ji ', 'Cai ', 'Chuo ', 'An ', 'Jie ', 'Zhuang ', 'Guang ', 'Ma ', 'You ', 'Kang ', 'Bo ', 'Hou ', 'Ya ', 'Yin ', 'Huan ', + 'Zhuang ', 'Yun ', 'Kuang ', 'Niu ', 'Di ', 'Qing ', 'Zhong ', 'Mu ', 'Bei ', 'Pi ', 'Ju ', 'Ni ', 'Sheng ', 'Pao ', 'Xia ', 'Tuo ', + 'Hu ', 'Ling ', 'Fei ', 'Pi ', 'Ni ', 'Ao ', 'You ', 'Gou ', 'Yue ', 'Ju ', 'Dan ', 'Po ', 'Gu ', 'Xian ', 'Ning ', 'Huan ', + 'Hen ', 'Jiao ', 'He ', 'Zhao ', 'Ji ', 'Xun ', 'Shan ', 'Ta ', 'Rong ', 'Shou ', 'Tong ', 'Lao ', 'Du ', 'Xia ', 'Shi ', 'Hua ', + 'Zheng ', 'Yu ', 'Sun ', 'Yu ', 'Bi ', 'Mang ', 'Xi ', 'Juan ', 'Li ', 'Xia ', 'Yin ', 'Suan ', 'Lang ', 'Bei ', 'Zhi ', 'Yan '), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/x73.php b/NEUE DATEIEN/includes/classes/transliteration/x73.php new file mode 100644 index 0000000..f96b49f --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/x73.php @@ -0,0 +1,21 @@ + array('Sha ', 'Li ', 'Han ', 'Xian ', 'Jing ', 'Pai ', 'Fei ', 'Yao ', 'Ba ', 'Qi ', 'Ni ', 'Biao ', 'Yin ', 'Lai ', 'Xi ', 'Jian ', + 'Qiang ', 'Kun ', 'Yan ', 'Guo ', 'Zong ', 'Mi ', 'Chang ', 'Yi ', 'Zhi ', 'Zheng ', 'Ya ', 'Meng ', 'Cai ', 'Cu ', 'She ', 'Kari ', + 'Cen ', 'Luo ', 'Hu ', 'Zong ', 'Ji ', 'Wei ', 'Feng ', 'Wo ', 'Yuan ', 'Xing ', 'Zhu ', 'Mao ', 'Wei ', 'Yuan ', 'Xian ', 'Tuan ', + 'Ya ', 'Nao ', 'Xie ', 'Jia ', 'Hou ', 'Bian ', 'You ', 'You ', 'Mei ', 'Zha ', 'Yao ', 'Sun ', 'Bo ', 'Ming ', 'Hua ', 'Yuan ', + 'Sou ', 'Ma ', 'Yuan ', 'Dai ', 'Yu ', 'Shi ', 'Hao ', NULL, 'Yi ', 'Zhen ', 'Chuang ', 'Hao ', 'Man ', 'Jing ', 'Jiang ', 'Mu ', + 'Zhang ', 'Chan ', 'Ao ', 'Ao ', 'Hao ', 'Cui ', 'Fen ', 'Jue ', 'Bi ', 'Bi ', 'Huang ', 'Pu ', 'Lin ', 'Yu ', 'Tong ', 'Yao ', + 'Liao ', 'Shuo ', 'Xiao ', 'Swu ', 'Ton ', 'Xi ', 'Ge ', 'Juan ', 'Du ', 'Hui ', 'Kuai ', 'Xian ', 'Xie ', 'Ta ', 'Xian ', 'Xun ', + 'Ning ', 'Pin ', 'Huo ', 'Nou ', 'Meng ', 'Lie ', 'Nao ', 'Guang ', 'Shou ', 'Lu ', 'Ta ', 'Xian ', 'Mi ', 'Rang ', 'Huan ', 'Nao ', + 'Luo ', 'Xian ', 'Qi ', 'Jue ', 'Xuan ', 'Miao ', 'Zi ', 'Lu ', 'Lu ', 'Yu ', 'Su ', 'Wang ', 'Qiu ', 'Ga ', 'Ding ', 'Le ', + 'Ba ', 'Ji ', 'Hong ', 'Di ', 'Quan ', 'Gan ', 'Jiu ', 'Yu ', 'Ji ', 'Yu ', 'Yang ', 'Ma ', 'Gong ', 'Wu ', 'Fu ', 'Wen ', + 'Jie ', 'Ya ', 'Fen ', 'Bian ', 'Beng ', 'Yue ', 'Jue ', 'Yun ', 'Jue ', 'Wan ', 'Jian ', 'Mei ', 'Dan ', 'Pi ', 'Wei ', 'Huan ', + 'Xian ', 'Qiang ', 'Ling ', 'Dai ', 'Yi ', 'An ', 'Ping ', 'Dian ', 'Fu ', 'Xuan ', 'Xi ', 'Bo ', 'Ci ', 'Gou ', 'Jia ', 'Shao ', + 'Po ', 'Ci ', 'Ke ', 'Ran ', 'Sheng ', 'Shen ', 'Yi ', 'Zu ', 'Jia ', 'Min ', 'Shan ', 'Liu ', 'Bi ', 'Zhen ', 'Zhen ', 'Jue ', + 'Fa ', 'Long ', 'Jin ', 'Jiao ', 'Jian ', 'Li ', 'Guang ', 'Xian ', 'Zhou ', 'Gong ', 'Yan ', 'Xiu ', 'Yang ', 'Xu ', 'Luo ', 'Su ', + 'Zhu ', 'Qin ', 'Ken ', 'Xun ', 'Bao ', 'Er ', 'Xiang ', 'Yao ', 'Xia ', 'Heng ', 'Gui ', 'Chong ', 'Xu ', 'Ban ', 'Pei ', NULL, + 'Dang ', 'Ei ', 'Hun ', 'Wen ', 'E ', 'Cheng ', 'Ti ', 'Wu ', 'Wu ', 'Cheng ', 'Jun ', 'Mei ', 'Bei ', 'Ting ', 'Xian ', 'Chuo '), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/x74.php b/NEUE DATEIEN/includes/classes/transliteration/x74.php new file mode 100644 index 0000000..8125d2e --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/x74.php @@ -0,0 +1,21 @@ + array('Han ', 'Xuan ', 'Yan ', 'Qiu ', 'Quan ', 'Lang ', 'Li ', 'Xiu ', 'Fu ', 'Liu ', 'Ye ', 'Xi ', 'Ling ', 'Li ', 'Jin ', 'Lian ', + 'Suo ', 'Chiisai ', NULL, 'Wan ', 'Dian ', 'Pin ', 'Zhan ', 'Cui ', 'Min ', 'Yu ', 'Ju ', 'Chen ', 'Lai ', 'Wen ', 'Sheng ', 'Wei ', + 'Dian ', 'Chu ', 'Zhuo ', 'Pei ', 'Cheng ', 'Hu ', 'Qi ', 'E ', 'Kun ', 'Chang ', 'Qi ', 'Beng ', 'Wan ', 'Lu ', 'Cong ', 'Guan ', + 'Yan ', 'Diao ', 'Bei ', 'Lin ', 'Qin ', 'Pi ', 'Pa ', 'Que ', 'Zhuo ', 'Qin ', 'Fa ', NULL, 'Qiong ', 'Du ', 'Jie ', 'Hun ', + 'Yu ', 'Mao ', 'Mei ', 'Chun ', 'Xuan ', 'Ti ', 'Xing ', 'Dai ', 'Rou ', 'Min ', 'Zhen ', 'Wei ', 'Ruan ', 'Huan ', 'Jie ', 'Chuan ', + 'Jian ', 'Zhuan ', 'Yang ', 'Lian ', 'Quan ', 'Xia ', 'Duan ', 'Yuan ', 'Ye ', 'Nao ', 'Hu ', 'Ying ', 'Yu ', 'Huang ', 'Rui ', 'Se ', + 'Liu ', 'Shi ', 'Rong ', 'Suo ', 'Yao ', 'Wen ', 'Wu ', 'Jin ', 'Jin ', 'Ying ', 'Ma ', 'Tao ', 'Liu ', 'Tang ', 'Li ', 'Lang ', + 'Gui ', 'Zhen ', 'Qiang ', 'Cuo ', 'Jue ', 'Zhao ', 'Yao ', 'Ai ', 'Bin ', 'Tu ', 'Chang ', 'Kun ', 'Zhuan ', 'Cong ', 'Jin ', 'Yi ', + 'Cui ', 'Cong ', 'Qi ', 'Li ', 'Ying ', 'Suo ', 'Qiu ', 'Xuan ', 'Ao ', 'Lian ', 'Man ', 'Zhang ', 'Yin ', NULL, 'Ying ', 'Zhi ', + 'Lu ', 'Wu ', 'Deng ', 'Xiou ', 'Zeng ', 'Xun ', 'Qu ', 'Dang ', 'Lin ', 'Liao ', 'Qiong ', 'Su ', 'Huang ', 'Gui ', 'Pu ', 'Jing ', + 'Fan ', 'Jin ', 'Liu ', 'Ji ', NULL, 'Jing ', 'Ai ', 'Bi ', 'Can ', 'Qu ', 'Zao ', 'Dang ', 'Jiao ', 'Gun ', 'Tan ', 'Hui ', + 'Huan ', 'Se ', 'Sui ', 'Tian ', NULL, 'Yu ', 'Jin ', 'Lu ', 'Bin ', 'Shou ', 'Wen ', 'Zui ', 'Lan ', 'Xi ', 'Ji ', 'Xuan ', + 'Ruan ', 'Huo ', 'Gai ', 'Lei ', 'Du ', 'Li ', 'Zhi ', 'Rou ', 'Li ', 'Zan ', 'Qiong ', 'Zhe ', 'Gui ', 'Sui ', 'La ', 'Long ', + 'Lu ', 'Li ', 'Zan ', 'Lan ', 'Ying ', 'Mi ', 'Xiang ', 'Xi ', 'Guan ', 'Dao ', 'Zan ', 'Huan ', 'Gua ', 'Bo ', 'Die ', 'Bao ', + 'Hu ', 'Zhi ', 'Piao ', 'Ban ', 'Rang ', 'Li ', 'Wa ', 'Dekaguramu ', 'Jiang ', 'Qian ', 'Fan ', 'Pen ', 'Fang ', 'Dan ', 'Weng ', 'Ou ', + 'Deshiguramu ', 'Miriguramu ', 'Thon ', 'Hu ', 'Ling ', 'Yi ', 'Ping ', 'Ci ', 'Hekutogura ', 'Juan ', 'Chang ', 'Chi ', 'Sarake ', 'Dang ', 'Meng ', 'Pou '), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/x75.php b/NEUE DATEIEN/includes/classes/transliteration/x75.php new file mode 100644 index 0000000..a3f50b0 --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/x75.php @@ -0,0 +1,21 @@ + array('Zhui ', 'Ping ', 'Bian ', 'Zhou ', 'Zhen ', 'Senchigura ', 'Ci ', 'Ying ', 'Qi ', 'Xian ', 'Lou ', 'Di ', 'Ou ', 'Meng ', 'Zhuan ', 'Peng ', + 'Lin ', 'Zeng ', 'Wu ', 'Pi ', 'Dan ', 'Weng ', 'Ying ', 'Yan ', 'Gan ', 'Dai ', 'Shen ', 'Tian ', 'Tian ', 'Han ', 'Chang ', 'Sheng ', + 'Qing ', 'Sheng ', 'Chan ', 'Chan ', 'Rui ', 'Sheng ', 'Su ', 'Sen ', 'Yong ', 'Shuai ', 'Lu ', 'Fu ', 'Yong ', 'Beng ', 'Feng ', 'Ning ', + 'Tian ', 'You ', 'Jia ', 'Shen ', 'Zha ', 'Dian ', 'Fu ', 'Nan ', 'Dian ', 'Ping ', 'Ting ', 'Hua ', 'Ting ', 'Quan ', 'Zi ', 'Meng ', + 'Bi ', 'Qi ', 'Liu ', 'Xun ', 'Liu ', 'Chang ', 'Mu ', 'Yun ', 'Fan ', 'Fu ', 'Geng ', 'Tian ', 'Jie ', 'Jie ', 'Quan ', 'Wei ', + 'Fu ', 'Tian ', 'Mu ', 'Tap ', 'Pan ', 'Jiang ', 'Wa ', 'Da ', 'Nan ', 'Liu ', 'Ben ', 'Zhen ', 'Chu ', 'Mu ', 'Mu ', 'Ce ', + 'Cen ', 'Gai ', 'Bi ', 'Da ', 'Zhi ', 'Lue ', 'Qi ', 'Lue ', 'Pan ', 'Kesa ', 'Fan ', 'Hua ', 'Yu ', 'Yu ', 'Mu ', 'Jun ', + 'Yi ', 'Liu ', 'Yu ', 'Die ', 'Chou ', 'Hua ', 'Dang ', 'Chuo ', 'Ji ', 'Wan ', 'Jiang ', 'Sheng ', 'Chang ', 'Tuan ', 'Lei ', 'Ji ', + 'Cha ', 'Liu ', 'Tatamu ', 'Tuan ', 'Lin ', 'Jiang ', 'Jiang ', 'Chou ', 'Bo ', 'Die ', 'Die ', 'Pi ', 'Nie ', 'Dan ', 'Shu ', 'Shu ', + 'Zhi ', 'Yi ', 'Chuang ', 'Nai ', 'Ding ', 'Bi ', 'Jie ', 'Liao ', 'Gong ', 'Ge ', 'Jiu ', 'Zhou ', 'Xia ', 'Shan ', 'Xu ', 'Nue ', + 'Li ', 'Yang ', 'Chen ', 'You ', 'Ba ', 'Jie ', 'Jue ', 'Zhi ', 'Xia ', 'Cui ', 'Bi ', 'Yi ', 'Li ', 'Zong ', 'Chuang ', 'Feng ', + 'Zhu ', 'Pao ', 'Pi ', 'Gan ', 'Ke ', 'Ci ', 'Xie ', 'Qi ', 'Dan ', 'Zhen ', 'Fa ', 'Zhi ', 'Teng ', 'Ju ', 'Ji ', 'Fei ', + 'Qu ', 'Dian ', 'Jia ', 'Xian ', 'Cha ', 'Bing ', 'Ni ', 'Zheng ', 'Yong ', 'Jing ', 'Quan ', 'Chong ', 'Tong ', 'Yi ', 'Kai ', 'Wei ', + 'Hui ', 'Duo ', 'Yang ', 'Chi ', 'Zhi ', 'Hen ', 'Ya ', 'Mei ', 'Dou ', 'Jing ', 'Xiao ', 'Tong ', 'Tu ', 'Mang ', 'Pi ', 'Xiao ', + 'Suan ', 'Pu ', 'Li ', 'Zhi ', 'Cuo ', 'Duo ', 'Wu ', 'Sha ', 'Lao ', 'Shou ', 'Huan ', 'Xian ', 'Yi ', 'Peng ', 'Zhang ', 'Guan ', + 'Tan ', 'Fei ', 'Ma ', 'Lin ', 'Chi ', 'Ji ', 'Dian ', 'An ', 'Chi ', 'Bi ', 'Bei ', 'Min ', 'Gu ', 'Dui ', 'E ', 'Wei '), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/x76.php b/NEUE DATEIEN/includes/classes/transliteration/x76.php new file mode 100644 index 0000000..f28493f --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/x76.php @@ -0,0 +1,21 @@ + array('Yu ', 'Cui ', 'Ya ', 'Zhu ', 'Cu ', 'Dan ', 'Shen ', 'Zhung ', 'Ji ', 'Yu ', 'Hou ', 'Feng ', 'La ', 'Yang ', 'Shen ', 'Tu ', + 'Yu ', 'Gua ', 'Wen ', 'Huan ', 'Ku ', 'Jia ', 'Yin ', 'Yi ', 'Lu ', 'Sao ', 'Jue ', 'Chi ', 'Xi ', 'Guan ', 'Yi ', 'Wen ', + 'Ji ', 'Chuang ', 'Ban ', 'Lei ', 'Liu ', 'Chai ', 'Shou ', 'Nue ', 'Dian ', 'Da ', 'Pie ', 'Tan ', 'Zhang ', 'Biao ', 'Shen ', 'Cu ', + 'Luo ', 'Yi ', 'Zong ', 'Chou ', 'Zhang ', 'Zhai ', 'Sou ', 'Suo ', 'Que ', 'Diao ', 'Lou ', 'Lu ', 'Mo ', 'Jin ', 'Yin ', 'Ying ', + 'Huang ', 'Fu ', 'Liao ', 'Long ', 'Qiao ', 'Liu ', 'Lao ', 'Xian ', 'Fei ', 'Dan ', 'Yin ', 'He ', 'Yan ', 'Ban ', 'Xian ', 'Guan ', + 'Guai ', 'Nong ', 'Yu ', 'Wei ', 'Yi ', 'Yong ', 'Pi ', 'Lei ', 'Li ', 'Shu ', 'Dan ', 'Lin ', 'Dian ', 'Lin ', 'Lai ', 'Pie ', + 'Ji ', 'Chi ', 'Yang ', 'Xian ', 'Jie ', 'Zheng ', NULL, 'Li ', 'Huo ', 'Lai ', 'Shaku ', 'Dian ', 'Xian ', 'Ying ', 'Yin ', 'Qu ', + 'Yong ', 'Tan ', 'Dian ', 'Luo ', 'Luan ', 'Luan ', 'Bo ', NULL, 'Gui ', 'Po ', 'Fa ', 'Deng ', 'Fa ', 'Bai ', 'Bai ', 'Qie ', + 'Bi ', 'Zao ', 'Zao ', 'Mao ', 'De ', 'Pa ', 'Jie ', 'Huang ', 'Gui ', 'Ci ', 'Ling ', 'Gao ', 'Mo ', 'Ji ', 'Jiao ', 'Peng ', + 'Gao ', 'Ai ', 'E ', 'Hao ', 'Han ', 'Bi ', 'Wan ', 'Chou ', 'Qian ', 'Xi ', 'Ai ', 'Jiong ', 'Hao ', 'Huang ', 'Hao ', 'Ze ', + 'Cui ', 'Hao ', 'Xiao ', 'Ye ', 'Po ', 'Hao ', 'Jiao ', 'Ai ', 'Xing ', 'Huang ', 'Li ', 'Piao ', 'He ', 'Jiao ', 'Pi ', 'Gan ', + 'Pao ', 'Zhou ', 'Jun ', 'Qiu ', 'Cun ', 'Que ', 'Zha ', 'Gu ', 'Jun ', 'Jun ', 'Zhou ', 'Zha ', 'Gu ', 'Zhan ', 'Du ', 'Min ', + 'Qi ', 'Ying ', 'Yu ', 'Bei ', 'Zhao ', 'Zhong ', 'Pen ', 'He ', 'Ying ', 'He ', 'Yi ', 'Bo ', 'Wan ', 'He ', 'Ang ', 'Zhan ', + 'Yan ', 'Jian ', 'He ', 'Yu ', 'Kui ', 'Fan ', 'Gai ', 'Dao ', 'Pan ', 'Fu ', 'Qiu ', 'Sheng ', 'Dao ', 'Lu ', 'Zhan ', 'Meng ', + 'Li ', 'Jin ', 'Xu ', 'Jian ', 'Pan ', 'Guan ', 'An ', 'Lu ', 'Shu ', 'Zhou ', 'Dang ', 'An ', 'Gu ', 'Li ', 'Mu ', 'Cheng ', + 'Gan ', 'Xu ', 'Mang ', 'Mang ', 'Zhi ', 'Qi ', 'Ruan ', 'Tian ', 'Xiang ', 'Dun ', 'Xin ', 'Xi ', 'Pan ', 'Feng ', 'Dun ', 'Min '), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/x77.php b/NEUE DATEIEN/includes/classes/transliteration/x77.php new file mode 100644 index 0000000..e7509b6 --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/x77.php @@ -0,0 +1,21 @@ + array('Ming ', 'Sheng ', 'Shi ', 'Yun ', 'Mian ', 'Pan ', 'Fang ', 'Miao ', 'Dan ', 'Mei ', 'Mao ', 'Kan ', 'Xian ', 'Ou ', 'Shi ', 'Yang ', + 'Zheng ', 'Yao ', 'Shen ', 'Huo ', 'Da ', 'Zhen ', 'Kuang ', 'Ju ', 'Shen ', 'Chi ', 'Sheng ', 'Mei ', 'Mo ', 'Zhu ', 'Zhen ', 'Zhen ', + 'Mian ', 'Di ', 'Yuan ', 'Die ', 'Yi ', 'Zi ', 'Zi ', 'Chao ', 'Zha ', 'Xuan ', 'Bing ', 'Mi ', 'Long ', 'Sui ', 'Dong ', 'Mi ', + 'Die ', 'Yi ', 'Er ', 'Ming ', 'Xuan ', 'Chi ', 'Kuang ', 'Juan ', 'Mou ', 'Zhen ', 'Tiao ', 'Yang ', 'Yan ', 'Mo ', 'Zhong ', 'Mai ', + 'Zhao ', 'Zheng ', 'Mei ', 'Jun ', 'Shao ', 'Han ', 'Huan ', 'Di ', 'Cheng ', 'Cuo ', 'Juan ', 'E ', 'Wan ', 'Xian ', 'Xi ', 'Kun ', + 'Lai ', 'Jian ', 'Shan ', 'Tian ', 'Hun ', 'Wan ', 'Ling ', 'Shi ', 'Qiong ', 'Lie ', 'Yai ', 'Jing ', 'Zheng ', 'Li ', 'Lai ', 'Sui ', + 'Juan ', 'Shui ', 'Sui ', 'Du ', 'Bi ', 'Bi ', 'Mu ', 'Hun ', 'Ni ', 'Lu ', 'Yi ', 'Jie ', 'Cai ', 'Zhou ', 'Yu ', 'Hun ', + 'Ma ', 'Xia ', 'Xing ', 'Xi ', 'Gun ', 'Cai ', 'Chun ', 'Jian ', 'Mei ', 'Du ', 'Hou ', 'Xuan ', 'Ti ', 'Kui ', 'Gao ', 'Rui ', + 'Mou ', 'Xu ', 'Fa ', 'Wen ', 'Miao ', 'Chou ', 'Kui ', 'Mi ', 'Weng ', 'Kou ', 'Dang ', 'Chen ', 'Ke ', 'Sou ', 'Xia ', 'Qiong ', + 'Mao ', 'Ming ', 'Man ', 'Shui ', 'Ze ', 'Zhang ', 'Yi ', 'Diao ', 'Ou ', 'Mo ', 'Shun ', 'Cong ', 'Lou ', 'Chi ', 'Man ', 'Piao ', + 'Cheng ', 'Ji ', 'Meng ', NULL, 'Run ', 'Pie ', 'Xi ', 'Qiao ', 'Pu ', 'Zhu ', 'Deng ', 'Shen ', 'Shun ', 'Liao ', 'Che ', 'Xian ', + 'Kan ', 'Ye ', 'Xu ', 'Tong ', 'Mou ', 'Lin ', 'Kui ', 'Xian ', 'Ye ', 'Ai ', 'Hui ', 'Zhan ', 'Jian ', 'Gu ', 'Zhao ', 'Qu ', + 'Wei ', 'Chou ', 'Sao ', 'Ning ', 'Xun ', 'Yao ', 'Huo ', 'Meng ', 'Mian ', 'Bin ', 'Mian ', 'Li ', 'Kuang ', 'Jue ', 'Xuan ', 'Mian ', + 'Huo ', 'Lu ', 'Meng ', 'Long ', 'Guan ', 'Man ', 'Xi ', 'Chu ', 'Tang ', 'Kan ', 'Zhu ', 'Mao ', 'Jin ', 'Lin ', 'Yu ', 'Shuo ', + 'Ce ', 'Jue ', 'Shi ', 'Yi ', 'Shen ', 'Zhi ', 'Hou ', 'Shen ', 'Ying ', 'Ju ', 'Zhou ', 'Jiao ', 'Cuo ', 'Duan ', 'Ai ', 'Jiao ', + 'Zeng ', 'Huo ', 'Bai ', 'Shi ', 'Ding ', 'Qi ', 'Ji ', 'Zi ', 'Gan ', 'Wu ', 'Tuo ', 'Ku ', 'Qiang ', 'Xi ', 'Fan ', 'Kuang '), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/x78.php b/NEUE DATEIEN/includes/classes/transliteration/x78.php new file mode 100644 index 0000000..86437e5 --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/x78.php @@ -0,0 +1,21 @@ + array('Dang ', 'Ma ', 'Sha ', 'Dan ', 'Jue ', 'Li ', 'Fu ', 'Min ', 'Nuo ', 'Huo ', 'Kang ', 'Zhi ', 'Qi ', 'Kan ', 'Jie ', 'Fen ', + 'E ', 'Ya ', 'Pi ', 'Zhe ', 'Yan ', 'Sui ', 'Zhuan ', 'Che ', 'Dun ', 'Pan ', 'Yan ', NULL, 'Feng ', 'Fa ', 'Mo ', 'Zha ', + 'Qu ', 'Yu ', 'Luo ', 'Tuo ', 'Tuo ', 'Di ', 'Zhai ', 'Zhen ', 'Ai ', 'Fei ', 'Mu ', 'Zhu ', 'Li ', 'Bian ', 'Nu ', 'Ping ', + 'Peng ', 'Ling ', 'Pao ', 'Le ', 'Po ', 'Bo ', 'Po ', 'Shen ', 'Za ', 'Nuo ', 'Li ', 'Long ', 'Tong ', NULL, 'Li ', 'Aragane ', + 'Chu ', 'Keng ', 'Quan ', 'Zhu ', 'Kuang ', 'Huo ', 'E ', 'Nao ', 'Jia ', 'Lu ', 'Wei ', 'Ai ', 'Luo ', 'Ken ', 'Xing ', 'Yan ', + 'Tong ', 'Peng ', 'Xi ', NULL, 'Hong ', 'Shuo ', 'Xia ', 'Qiao ', NULL, 'Wei ', 'Qiao ', NULL, 'Keng ', 'Xiao ', 'Que ', 'Chan ', + 'Lang ', 'Hong ', 'Yu ', 'Xiao ', 'Xia ', 'Mang ', 'Long ', 'Iong ', 'Che ', 'Che ', 'E ', 'Liu ', 'Ying ', 'Mang ', 'Que ', 'Yan ', + 'Sha ', 'Kun ', 'Yu ', NULL, 'Kaki ', 'Lu ', 'Chen ', 'Jian ', 'Nue ', 'Song ', 'Zhuo ', 'Keng ', 'Peng ', 'Yan ', 'Zhui ', 'Kong ', + 'Ceng ', 'Qi ', 'Zong ', 'Qing ', 'Lin ', 'Jun ', 'Bo ', 'Ding ', 'Min ', 'Diao ', 'Jian ', 'He ', 'Lu ', 'Ai ', 'Sui ', 'Que ', + 'Ling ', 'Bei ', 'Yin ', 'Dui ', 'Wu ', 'Qi ', 'Lun ', 'Wan ', 'Dian ', 'Gang ', 'Pei ', 'Qi ', 'Chen ', 'Ruan ', 'Yan ', 'Die ', + 'Ding ', 'Du ', 'Tuo ', 'Jie ', 'Ying ', 'Bian ', 'Ke ', 'Bi ', 'Wei ', 'Shuo ', 'Zhen ', 'Duan ', 'Xia ', 'Dang ', 'Ti ', 'Nao ', + 'Peng ', 'Jian ', 'Di ', 'Tan ', 'Cha ', 'Seki ', 'Qi ', NULL, 'Feng ', 'Xuan ', 'Que ', 'Que ', 'Ma ', 'Gong ', 'Nian ', 'Su ', + 'E ', 'Ci ', 'Liu ', 'Si ', 'Tang ', 'Bang ', 'Hua ', 'Pi ', 'Wei ', 'Sang ', 'Lei ', 'Cuo ', 'Zhen ', 'Xia ', 'Qi ', 'Lian ', + 'Pan ', 'Wei ', 'Yun ', 'Dui ', 'Zhe ', 'Ke ', 'La ', NULL, 'Qing ', 'Gun ', 'Zhuan ', 'Chan ', 'Qi ', 'Ao ', 'Peng ', 'Lu ', + 'Lu ', 'Kan ', 'Qiang ', 'Chen ', 'Yin ', 'Lei ', 'Biao ', 'Qi ', 'Mo ', 'Qi ', 'Cui ', 'Zong ', 'Qing ', 'Chuo ', NULL, 'Ji ', + 'Shan ', 'Lao ', 'Qu ', 'Zeng ', 'Deng ', 'Jian ', 'Xi ', 'Lin ', 'Ding ', 'Dian ', 'Huang ', 'Pan ', 'Za ', 'Qiao ', 'Di ', 'Li '), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/x79.php b/NEUE DATEIEN/includes/classes/transliteration/x79.php new file mode 100644 index 0000000..b28d02e --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/x79.php @@ -0,0 +1,21 @@ + array('Tani ', 'Jiao ', NULL, 'Zhang ', 'Qiao ', 'Dun ', 'Xian ', 'Yu ', 'Zhui ', 'He ', 'Huo ', 'Zhai ', 'Lei ', 'Ke ', 'Chu ', 'Ji ', + 'Que ', 'Dang ', 'Yi ', 'Jiang ', 'Pi ', 'Pi ', 'Yu ', 'Pin ', 'Qi ', 'Ai ', 'Kai ', 'Jian ', 'Yu ', 'Ruan ', 'Meng ', 'Pao ', + 'Ci ', NULL, NULL, 'Mie ', 'Ca ', 'Xian ', 'Kuang ', 'Lei ', 'Lei ', 'Zhi ', 'Li ', 'Li ', 'Fan ', 'Que ', 'Pao ', 'Ying ', + 'Li ', 'Long ', 'Long ', 'Mo ', 'Bo ', 'Shuang ', 'Guan ', 'Lan ', 'Zan ', 'Yan ', 'Shi ', 'Shi ', 'Li ', 'Reng ', 'She ', 'Yue ', + 'Si ', 'Qi ', 'Ta ', 'Ma ', 'Xie ', 'Xian ', 'Xian ', 'Zhi ', 'Qi ', 'Zhi ', 'Beng ', 'Dui ', 'Zhong ', NULL, 'Yi ', 'Shi ', + 'You ', 'Zhi ', 'Tiao ', 'Fu ', 'Fu ', 'Mi ', 'Zu ', 'Zhi ', 'Suan ', 'Mei ', 'Zuo ', 'Qu ', 'Hu ', 'Zhu ', 'Shen ', 'Sui ', + 'Ci ', 'Chai ', 'Mi ', 'Lu ', 'Yu ', 'Xiang ', 'Wu ', 'Tiao ', 'Piao ', 'Zhu ', 'Gui ', 'Xia ', 'Zhi ', 'Ji ', 'Gao ', 'Zhen ', + 'Gao ', 'Shui ', 'Jin ', 'Chen ', 'Gai ', 'Kun ', 'Di ', 'Dao ', 'Huo ', 'Tao ', 'Qi ', 'Gu ', 'Guan ', 'Zui ', 'Ling ', 'Lu ', + 'Bing ', 'Jin ', 'Dao ', 'Zhi ', 'Lu ', 'Shan ', 'Bei ', 'Zhe ', 'Hui ', 'You ', 'Xi ', 'Yin ', 'Zi ', 'Huo ', 'Zhen ', 'Fu ', + 'Yuan ', 'Wu ', 'Xian ', 'Yang ', 'Ti ', 'Yi ', 'Mei ', 'Si ', 'Di ', NULL, 'Zhuo ', 'Zhen ', 'Yong ', 'Ji ', 'Gao ', 'Tang ', + 'Si ', 'Ma ', 'Ta ', NULL, 'Xuan ', 'Qi ', 'Yu ', 'Xi ', 'Ji ', 'Si ', 'Chan ', 'Tan ', 'Kuai ', 'Sui ', 'Li ', 'Nong ', + 'Ni ', 'Dao ', 'Li ', 'Rang ', 'Yue ', 'Ti ', 'Zan ', 'Lei ', 'Rou ', 'Yu ', 'Yu ', 'Chi ', 'Xie ', 'Qin ', 'He ', 'Tu ', + 'Xiu ', 'Si ', 'Ren ', 'Tu ', 'Zi ', 'Cha ', 'Gan ', 'Yi ', 'Xian ', 'Bing ', 'Nian ', 'Qiu ', 'Qiu ', 'Chong ', 'Fen ', 'Hao ', + 'Yun ', 'Ke ', 'Miao ', 'Zhi ', 'Geng ', 'Bi ', 'Zhi ', 'Yu ', 'Mi ', 'Ku ', 'Ban ', 'Pi ', 'Ni ', 'Li ', 'You ', 'Zu ', + 'Pi ', 'Ba ', 'Ling ', 'Mo ', 'Cheng ', 'Nian ', 'Qin ', 'Yang ', 'Zuo ', 'Zhi ', 'Zhi ', 'Shu ', 'Ju ', 'Zi ', 'Huo ', 'Ji ', + 'Cheng ', 'Tong ', 'Zhi ', 'Huo ', 'He ', 'Yin ', 'Zi ', 'Zhi ', 'Jie ', 'Ren ', 'Du ', 'Yi ', 'Zhu ', 'Hui ', 'Nong ', 'Fu '), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/x7a.php b/NEUE DATEIEN/includes/classes/transliteration/x7a.php new file mode 100644 index 0000000..fd34782 --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/x7a.php @@ -0,0 +1,21 @@ + array('Xi ', 'Kao ', 'Lang ', 'Fu ', 'Ze ', 'Shui ', 'Lu ', 'Kun ', 'Gan ', 'Geng ', 'Ti ', 'Cheng ', 'Tu ', 'Shao ', 'Shui ', 'Ya ', + 'Lun ', 'Lu ', 'Gu ', 'Zuo ', 'Ren ', 'Zhun ', 'Bang ', 'Bai ', 'Ji ', 'Zhi ', 'Zhi ', 'Kun ', 'Leng ', 'Peng ', 'Ke ', 'Bing ', + 'Chou ', 'Zu ', 'Yu ', 'Su ', 'Lue ', NULL, 'Yi ', 'Xi ', 'Bian ', 'Ji ', 'Fu ', 'Bi ', 'Nuo ', 'Jie ', 'Zhong ', 'Zong ', + 'Xu ', 'Cheng ', 'Dao ', 'Wen ', 'Lian ', 'Zi ', 'Yu ', 'Ji ', 'Xu ', 'Zhen ', 'Zhi ', 'Dao ', 'Jia ', 'Ji ', 'Gao ', 'Gao ', + 'Gu ', 'Rong ', 'Sui ', 'You ', 'Ji ', 'Kang ', 'Mu ', 'Shan ', 'Men ', 'Zhi ', 'Ji ', 'Lu ', 'Su ', 'Ji ', 'Ying ', 'Wen ', + 'Qiu ', 'Se ', NULL, 'Yi ', 'Huang ', 'Qie ', 'Ji ', 'Sui ', 'Xiao ', 'Pu ', 'Jiao ', 'Zhuo ', 'Tong ', 'Sai ', 'Lu ', 'Sui ', + 'Nong ', 'Se ', 'Hui ', 'Rang ', 'Nuo ', 'Yu ', 'Bin ', 'Ji ', 'Tui ', 'Wen ', 'Cheng ', 'Huo ', 'Gong ', 'Lu ', 'Biao ', NULL, + 'Rang ', 'Zhuo ', 'Li ', 'Zan ', 'Xue ', 'Wa ', 'Jiu ', 'Qiong ', 'Xi ', 'Qiong ', 'Kong ', 'Yu ', 'Sen ', 'Jing ', 'Yao ', 'Chuan ', + 'Zhun ', 'Tu ', 'Lao ', 'Qie ', 'Zhai ', 'Yao ', 'Bian ', 'Bao ', 'Yao ', 'Bing ', 'Wa ', 'Zhu ', 'Jiao ', 'Qiao ', 'Diao ', 'Wu ', + 'Gui ', 'Yao ', 'Zhi ', 'Chuang ', 'Yao ', 'Tiao ', 'Jiao ', 'Chuang ', 'Jiong ', 'Xiao ', 'Cheng ', 'Kou ', 'Cuan ', 'Wo ', 'Dan ', 'Ku ', + 'Ke ', 'Zhui ', 'Xu ', 'Su ', 'Guan ', 'Kui ', 'Dou ', NULL, 'Yin ', 'Wo ', 'Wa ', 'Ya ', 'Yu ', 'Ju ', 'Qiong ', 'Yao ', + 'Yao ', 'Tiao ', 'Chao ', 'Yu ', 'Tian ', 'Diao ', 'Ju ', 'Liao ', 'Xi ', 'Wu ', 'Kui ', 'Chuang ', 'Zhao ', NULL, 'Kuan ', 'Long ', + 'Cheng ', 'Cui ', 'Piao ', 'Zao ', 'Cuan ', 'Qiao ', 'Qiong ', 'Dou ', 'Zao ', 'Long ', 'Qie ', 'Li ', 'Chu ', 'Shi ', 'Fou ', 'Qian ', + 'Chu ', 'Hong ', 'Qi ', 'Qian ', 'Gong ', 'Shi ', 'Shu ', 'Miao ', 'Ju ', 'Zhan ', 'Zhu ', 'Ling ', 'Long ', 'Bing ', 'Jing ', 'Jing ', + 'Zhang ', 'Yi ', 'Si ', 'Jun ', 'Hong ', 'Tong ', 'Song ', 'Jing ', 'Diao ', 'Yi ', 'Shu ', 'Jing ', 'Qu ', 'Jie ', 'Ping ', 'Duan ', + 'Shao ', 'Zhuan ', 'Ceng ', 'Deng ', 'Cui ', 'Huai ', 'Jing ', 'Kan ', 'Jing ', 'Zhu ', 'Zhu ', 'Le ', 'Peng ', 'Yu ', 'Chi ', 'Gan '), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/x7b.php b/NEUE DATEIEN/includes/classes/transliteration/x7b.php new file mode 100644 index 0000000..9e0abbf --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/x7b.php @@ -0,0 +1,21 @@ + array('Mang ', 'Zhu ', 'Utsubo ', 'Du ', 'Ji ', 'Xiao ', 'Ba ', 'Suan ', 'Ji ', 'Zhen ', 'Zhao ', 'Sun ', 'Ya ', 'Zhui ', 'Yuan ', 'Hu ', + 'Gang ', 'Xiao ', 'Cen ', 'Pi ', 'Bi ', 'Jian ', 'Yi ', 'Dong ', 'Shan ', 'Sheng ', 'Xia ', 'Di ', 'Zhu ', 'Na ', 'Chi ', 'Gu ', + 'Li ', 'Qie ', 'Min ', 'Bao ', 'Tiao ', 'Si ', 'Fu ', 'Ce ', 'Ben ', 'Pei ', 'Da ', 'Zi ', 'Di ', 'Ling ', 'Ze ', 'Nu ', + 'Fu ', 'Gou ', 'Fan ', 'Jia ', 'Ge ', 'Fan ', 'Shi ', 'Mao ', 'Po ', 'Sey ', 'Jian ', 'Qiong ', 'Long ', 'Souke ', 'Bian ', 'Luo ', + 'Gui ', 'Qu ', 'Chi ', 'Yin ', 'Yao ', 'Xian ', 'Bi ', 'Qiong ', 'Gua ', 'Deng ', 'Jiao ', 'Jin ', 'Quan ', 'Sun ', 'Ru ', 'Fa ', + 'Kuang ', 'Zhu ', 'Tong ', 'Ji ', 'Da ', 'Xing ', 'Ce ', 'Zhong ', 'Kou ', 'Lai ', 'Bi ', 'Shai ', 'Dang ', 'Zheng ', 'Ce ', 'Fu ', + 'Yun ', 'Tu ', 'Pa ', 'Li ', 'Lang ', 'Ju ', 'Guan ', 'Jian ', 'Han ', 'Tong ', 'Xia ', 'Zhi ', 'Cheng ', 'Suan ', 'Shi ', 'Zhu ', + 'Zuo ', 'Xiao ', 'Shao ', 'Ting ', 'Ce ', 'Yan ', 'Gao ', 'Kuai ', 'Gan ', 'Chou ', 'Kago ', 'Gang ', 'Yun ', 'O ', 'Qian ', 'Xiao ', + 'Jian ', 'Pu ', 'Lai ', 'Zou ', 'Bi ', 'Bi ', 'Bi ', 'Ge ', 'Chi ', 'Guai ', 'Yu ', 'Jian ', 'Zhao ', 'Gu ', 'Chi ', 'Zheng ', + 'Jing ', 'Sha ', 'Zhou ', 'Lu ', 'Bo ', 'Ji ', 'Lin ', 'Suan ', 'Jun ', 'Fu ', 'Zha ', 'Gu ', 'Kong ', 'Qian ', 'Quan ', 'Jun ', + 'Chui ', 'Guan ', 'Yuan ', 'Ce ', 'Ju ', 'Bo ', 'Ze ', 'Qie ', 'Tuo ', 'Luo ', 'Dan ', 'Xiao ', 'Ruo ', 'Jian ', 'Xuan ', 'Bian ', + 'Sun ', 'Xiang ', 'Xian ', 'Ping ', 'Zhen ', 'Sheng ', 'Hu ', 'Shi ', 'Zhu ', 'Yue ', 'Chun ', 'Lu ', 'Wu ', 'Dong ', 'Xiao ', 'Ji ', + 'Jie ', 'Huang ', 'Xing ', 'Mei ', 'Fan ', 'Chui ', 'Zhuan ', 'Pian ', 'Feng ', 'Zhu ', 'Hong ', 'Qie ', 'Hou ', 'Qiu ', 'Miao ', 'Qian ', + NULL, 'Kui ', 'Sik ', 'Lou ', 'Yun ', 'He ', 'Tang ', 'Yue ', 'Chou ', 'Gao ', 'Fei ', 'Ruo ', 'Zheng ', 'Gou ', 'Nie ', 'Qian ', + 'Xiao ', 'Cuan ', 'Gong ', 'Pang ', 'Du ', 'Li ', 'Bi ', 'Zhuo ', 'Chu ', 'Shai ', 'Chi ', 'Zhu ', 'Qiang ', 'Long ', 'Lan ', 'Jian ', + 'Bu ', 'Li ', 'Hui ', 'Bi ', 'Di ', 'Cong ', 'Yan ', 'Peng ', 'Sen ', 'Zhuan ', 'Pai ', 'Piao ', 'Dou ', 'Yu ', 'Mie ', 'Zhuan '), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/x7c.php b/NEUE DATEIEN/includes/classes/transliteration/x7c.php new file mode 100644 index 0000000..b2bebcd --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/x7c.php @@ -0,0 +1,21 @@ + array('Ze ', 'Xi ', 'Guo ', 'Yi ', 'Hu ', 'Chan ', 'Kou ', 'Cu ', 'Ping ', 'Chou ', 'Ji ', 'Gui ', 'Su ', 'Lou ', 'Zha ', 'Lu ', + 'Nian ', 'Suo ', 'Cuan ', 'Sasara ', 'Suo ', 'Le ', 'Duan ', 'Yana ', 'Xiao ', 'Bo ', 'Mi ', 'Si ', 'Dang ', 'Liao ', 'Dan ', 'Dian ', + 'Fu ', 'Jian ', 'Min ', 'Kui ', 'Dai ', 'Qiao ', 'Deng ', 'Huang ', 'Sun ', 'Lao ', 'Zan ', 'Xiao ', 'Du ', 'Shi ', 'Zan ', NULL, + 'Pai ', 'Hata ', 'Pai ', 'Gan ', 'Ju ', 'Du ', 'Lu ', 'Yan ', 'Bo ', 'Dang ', 'Sai ', 'Ke ', 'Long ', 'Qian ', 'Lian ', 'Bo ', + 'Zhou ', 'Lai ', NULL, 'Lan ', 'Kui ', 'Yu ', 'Yue ', 'Hao ', 'Zhen ', 'Tai ', 'Ti ', 'Mi ', 'Chou ', 'Ji ', NULL, 'Hata ', + 'Teng ', 'Zhuan ', 'Zhou ', 'Fan ', 'Sou ', 'Zhou ', 'Kuji ', 'Zhuo ', 'Teng ', 'Lu ', 'Lu ', 'Jian ', 'Tuo ', 'Ying ', 'Yu ', 'Lai ', + 'Long ', 'Shinshi ', 'Lian ', 'Lan ', 'Qian ', 'Yue ', 'Zhong ', 'Qu ', 'Lian ', 'Bian ', 'Duan ', 'Zuan ', 'Li ', 'Si ', 'Luo ', 'Ying ', + 'Yue ', 'Zhuo ', 'Xu ', 'Mi ', 'Di ', 'Fan ', 'Shen ', 'Zhe ', 'Shen ', 'Nu ', 'Xie ', 'Lei ', 'Xian ', 'Zi ', 'Ni ', 'Cun ', + NULL, 'Qian ', 'Kume ', 'Bi ', 'Ban ', 'Wu ', 'Sha ', 'Kang ', 'Rou ', 'Fen ', 'Bi ', 'Cui ', NULL, 'Li ', 'Chi ', 'Nukamiso ', + 'Ro ', 'Ba ', 'Li ', 'Gan ', 'Ju ', 'Po ', 'Mo ', 'Cu ', 'Nian ', 'Zhou ', 'Li ', 'Su ', 'Tiao ', 'Li ', 'Qi ', 'Su ', + 'Hong ', 'Tong ', 'Zi ', 'Ce ', 'Yue ', 'Zhou ', 'Lin ', 'Zhuang ', 'Bai ', NULL, 'Fen ', 'Ji ', NULL, 'Sukumo ', 'Liang ', 'Xian ', + 'Fu ', 'Liang ', 'Can ', 'Geng ', 'Li ', 'Yue ', 'Lu ', 'Ju ', 'Qi ', 'Cui ', 'Bai ', 'Zhang ', 'Lin ', 'Zong ', 'Jing ', 'Guo ', + 'Kouji ', 'San ', 'San ', 'Tang ', 'Bian ', 'Rou ', 'Mian ', 'Hou ', 'Xu ', 'Zong ', 'Hu ', 'Jian ', 'Zan ', 'Ci ', 'Li ', 'Xie ', + 'Fu ', 'Ni ', 'Bei ', 'Gu ', 'Xiu ', 'Gao ', 'Tang ', 'Qiu ', 'Sukumo ', 'Cao ', 'Zhuang ', 'Tang ', 'Mi ', 'San ', 'Fen ', 'Zao ', + 'Kang ', 'Jiang ', 'Mo ', 'San ', 'San ', 'Nuo ', 'Xi ', 'Liang ', 'Jiang ', 'Kuai ', 'Bo ', 'Huan ', NULL, 'Zong ', 'Xian ', 'Nuo ', + 'Tuan ', 'Nie ', 'Li ', 'Zuo ', 'Di ', 'Nie ', 'Tiao ', 'Lan ', 'Mi ', 'Jiao ', 'Jiu ', 'Xi ', 'Gong ', 'Zheng ', 'Jiu ', 'You '), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/x7d.php b/NEUE DATEIEN/includes/classes/transliteration/x7d.php new file mode 100644 index 0000000..0905618 --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/x7d.php @@ -0,0 +1,21 @@ + array('Ji ', 'Cha ', 'Zhou ', 'Xun ', 'Yue ', 'Hong ', 'Yu ', 'He ', 'Wan ', 'Ren ', 'Wen ', 'Wen ', 'Qiu ', 'Na ', 'Zi ', 'Tou ', + 'Niu ', 'Fou ', 'Jie ', 'Shu ', 'Chun ', 'Pi ', 'Yin ', 'Sha ', 'Hong ', 'Zhi ', 'Ji ', 'Fen ', 'Yun ', 'Ren ', 'Dan ', 'Jin ', + 'Su ', 'Fang ', 'Suo ', 'Cui ', 'Jiu ', 'Zha ', 'Kinu ', 'Jin ', 'Fu ', 'Zhi ', 'Ci ', 'Zi ', 'Chou ', 'Hong ', 'Zha ', 'Lei ', + 'Xi ', 'Fu ', 'Xie ', 'Shen ', 'Bei ', 'Zhu ', 'Qu ', 'Ling ', 'Zhu ', 'Shao ', 'Gan ', 'Yang ', 'Fu ', 'Tuo ', 'Zhen ', 'Dai ', + 'Zhuo ', 'Shi ', 'Zhong ', 'Xian ', 'Zu ', 'Jiong ', 'Ban ', 'Ju ', 'Mo ', 'Shu ', 'Zui ', 'Wata ', 'Jing ', 'Ren ', 'Heng ', 'Xie ', + 'Jie ', 'Zhu ', 'Chou ', 'Gua ', 'Bai ', 'Jue ', 'Kuang ', 'Hu ', 'Ci ', 'Geng ', 'Geng ', 'Tao ', 'Xie ', 'Ku ', 'Jiao ', 'Quan ', + 'Gai ', 'Luo ', 'Xuan ', 'Bing ', 'Xian ', 'Fu ', 'Gei ', 'Tong ', 'Rong ', 'Tiao ', 'Yin ', 'Lei ', 'Xie ', 'Quan ', 'Xu ', 'Lun ', + 'Die ', 'Tong ', 'Si ', 'Jiang ', 'Xiang ', 'Hui ', 'Jue ', 'Zhi ', 'Jian ', 'Juan ', 'Chi ', 'Mian ', 'Zhen ', 'Lu ', 'Cheng ', 'Qiu ', + 'Shu ', 'Bang ', 'Tong ', 'Xiao ', 'Wan ', 'Qin ', 'Geng ', 'Xiu ', 'Ti ', 'Xiu ', 'Xie ', 'Hong ', 'Xi ', 'Fu ', 'Ting ', 'Sui ', + 'Dui ', 'Kun ', 'Fu ', 'Jing ', 'Hu ', 'Zhi ', 'Yan ', 'Jiong ', 'Feng ', 'Ji ', 'Sok ', 'Kase ', 'Zong ', 'Lin ', 'Duo ', 'Li ', + 'Lu ', 'Liang ', 'Chou ', 'Quan ', 'Shao ', 'Qi ', 'Qi ', 'Zhun ', 'Qi ', 'Wan ', 'Qian ', 'Xian ', 'Shou ', 'Wei ', 'Qi ', 'Tao ', + 'Wan ', 'Gang ', 'Wang ', 'Beng ', 'Zhui ', 'Cai ', 'Guo ', 'Cui ', 'Lun ', 'Liu ', 'Qi ', 'Zhan ', 'Bei ', 'Chuo ', 'Ling ', 'Mian ', + 'Qi ', 'Qie ', 'Tan ', 'Zong ', 'Gun ', 'Zou ', 'Yi ', 'Zi ', 'Xing ', 'Liang ', 'Jin ', 'Fei ', 'Rui ', 'Min ', 'Yu ', 'Zong ', + 'Fan ', 'Lu ', 'Xu ', 'Yingl ', 'Zhang ', 'Kasuri ', 'Xu ', 'Xiang ', 'Jian ', 'Ke ', 'Xian ', 'Ruan ', 'Mian ', 'Qi ', 'Duan ', 'Zhong ', + 'Di ', 'Min ', 'Miao ', 'Yuan ', 'Xie ', 'Bao ', 'Si ', 'Qiu ', 'Bian ', 'Huan ', 'Geng ', 'Cong ', 'Mian ', 'Wei ', 'Fu ', 'Wei ', + 'Yu ', 'Gou ', 'Miao ', 'Xie ', 'Lian ', 'Zong ', 'Bian ', 'Yun ', 'Yin ', 'Ti ', 'Gua ', 'Zhi ', 'Yun ', 'Cheng ', 'Chan ', 'Dai '), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/x7e.php b/NEUE DATEIEN/includes/classes/transliteration/x7e.php new file mode 100644 index 0000000..feed936 --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/x7e.php @@ -0,0 +1,21 @@ + array('Xia ', 'Yuan ', 'Zong ', 'Xu ', 'Nawa ', 'Odoshi ', 'Geng ', 'Sen ', 'Ying ', 'Jin ', 'Yi ', 'Zhui ', 'Ni ', 'Bang ', 'Gu ', 'Pan ', + 'Zhou ', 'Jian ', 'Cuo ', 'Quan ', 'Shuang ', 'Yun ', 'Xia ', 'Shuai ', 'Xi ', 'Rong ', 'Tao ', 'Fu ', 'Yun ', 'Zhen ', 'Gao ', 'Ru ', + 'Hu ', 'Zai ', 'Teng ', 'Xian ', 'Su ', 'Zhen ', 'Zong ', 'Tao ', 'Horo ', 'Cai ', 'Bi ', 'Feng ', 'Cu ', 'Li ', 'Suo ', 'Yin ', + 'Xi ', 'Zong ', 'Lei ', 'Zhuan ', 'Qian ', 'Man ', 'Zhi ', 'Lu ', 'Mo ', 'Piao ', 'Lian ', 'Mi ', 'Xuan ', 'Zong ', 'Ji ', 'Shan ', + 'Sui ', 'Fan ', 'Shuai ', 'Beng ', 'Yi ', 'Sao ', 'Mou ', 'Zhou ', 'Qiang ', 'Hun ', 'Sem ', 'Xi ', 'Jung ', 'Xiu ', 'Ran ', 'Xuan ', + 'Hui ', 'Qiao ', 'Zeng ', 'Zuo ', 'Zhi ', 'Shan ', 'San ', 'Lin ', 'Yu ', 'Fan ', 'Liao ', 'Chuo ', 'Zun ', 'Jian ', 'Rao ', 'Chan ', + 'Rui ', 'Xiu ', 'Hui ', 'Hua ', 'Zuan ', 'Xi ', 'Qiang ', 'Un ', 'Da ', 'Sheng ', 'Hui ', 'Xi ', 'Se ', 'Jian ', 'Jiang ', 'Huan ', + 'Zao ', 'Cong ', 'Jie ', 'Jiao ', 'Bo ', 'Chan ', 'Yi ', 'Nao ', 'Sui ', 'Yi ', 'Shai ', 'Xu ', 'Ji ', 'Bin ', 'Qian ', 'Lan ', + 'Pu ', 'Xun ', 'Zuan ', 'Qi ', 'Peng ', 'Li ', 'Mo ', 'Lei ', 'Xie ', 'Zuan ', 'Kuang ', 'You ', 'Xu ', 'Lei ', 'Xian ', 'Chan ', + 'Kou ', 'Lu ', 'Chan ', 'Ying ', 'Cai ', 'Xiang ', 'Xian ', 'Zui ', 'Zuan ', 'Luo ', 'Xi ', 'Dao ', 'Lan ', 'Lei ', 'Lian ', 'Si ', + 'Jiu ', 'Yu ', 'Hong ', 'Zhou ', 'Xian ', 'He ', 'Yue ', 'Ji ', 'Wan ', 'Kuang ', 'Ji ', 'Ren ', 'Wei ', 'Yun ', 'Hong ', 'Chun ', + 'Pi ', 'Sha ', 'Gang ', 'Na ', 'Ren ', 'Zong ', 'Lun ', 'Fen ', 'Zhi ', 'Wen ', 'Fang ', 'Zhu ', 'Yin ', 'Niu ', 'Shu ', 'Xian ', + 'Gan ', 'Xie ', 'Fu ', 'Lian ', 'Zu ', 'Shen ', 'Xi ', 'Zhi ', 'Zhong ', 'Zhou ', 'Ban ', 'Fu ', 'Zhuo ', 'Shao ', 'Yi ', 'Jing ', + 'Dai ', 'Bang ', 'Rong ', 'Jie ', 'Ku ', 'Rao ', 'Die ', 'Heng ', 'Hui ', 'Gei ', 'Xuan ', 'Jiang ', 'Luo ', 'Jue ', 'Jiao ', 'Tong ', + 'Geng ', 'Xiao ', 'Juan ', 'Xiu ', 'Xi ', 'Sui ', 'Tao ', 'Ji ', 'Ti ', 'Ji ', 'Xu ', 'Ling ', NULL, 'Xu ', 'Qi ', 'Fei ', + 'Chuo ', 'Zhang ', 'Gun ', 'Sheng ', 'Wei ', 'Mian ', 'Shou ', 'Beng ', 'Chou ', 'Tao ', 'Liu ', 'Quan ', 'Zong ', 'Zhan ', 'Wan ', 'Lu '), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/x7f.php b/NEUE DATEIEN/includes/classes/transliteration/x7f.php new file mode 100644 index 0000000..256a834 --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/x7f.php @@ -0,0 +1,21 @@ + array('Zhui ', 'Zi ', 'Ke ', 'Xiang ', 'Jian ', 'Mian ', 'Lan ', 'Ti ', 'Miao ', 'Qi ', 'Yun ', 'Hui ', 'Si ', 'Duo ', 'Duan ', 'Bian ', + 'Xian ', 'Gou ', 'Zhui ', 'Huan ', 'Di ', 'Lu ', 'Bian ', 'Min ', 'Yuan ', 'Jin ', 'Fu ', 'Ru ', 'Zhen ', 'Feng ', 'Shuai ', 'Gao ', + 'Chan ', 'Li ', 'Yi ', 'Jian ', 'Bin ', 'Piao ', 'Man ', 'Lei ', 'Ying ', 'Suo ', 'Mou ', 'Sao ', 'Xie ', 'Liao ', 'Shan ', 'Zeng ', + 'Jiang ', 'Qian ', 'Zao ', 'Huan ', 'Jiao ', 'Zuan ', 'Fou ', 'Xie ', 'Gang ', 'Fou ', 'Que ', 'Fou ', 'Kaakeru ', 'Bo ', 'Ping ', 'Hou ', + NULL, 'Gang ', 'Ying ', 'Ying ', 'Qing ', 'Xia ', 'Guan ', 'Zun ', 'Tan ', 'Chang ', 'Qi ', 'Weng ', 'Ying ', 'Lei ', 'Tan ', 'Lu ', + 'Guan ', 'Wang ', 'Wang ', 'Gang ', 'Wang ', 'Han ', NULL, 'Luo ', 'Fu ', 'Mi ', 'Fa ', 'Gu ', 'Zhu ', 'Ju ', 'Mao ', 'Gu ', + 'Min ', 'Gang ', 'Ba ', 'Gua ', 'Ti ', 'Juan ', 'Fu ', 'Lin ', 'Yan ', 'Zhao ', 'Zui ', 'Gua ', 'Zhuo ', 'Yu ', 'Zhi ', 'An ', + 'Fa ', 'Nan ', 'Shu ', 'Si ', 'Pi ', 'Ma ', 'Liu ', 'Ba ', 'Fa ', 'Li ', 'Chao ', 'Wei ', 'Bi ', 'Ji ', 'Zeng ', 'Tong ', + 'Liu ', 'Ji ', 'Juan ', 'Mi ', 'Zhao ', 'Luo ', 'Pi ', 'Ji ', 'Ji ', 'Luan ', 'Yang ', 'Mie ', 'Qiang ', 'Ta ', 'Mei ', 'Yang ', + 'You ', 'You ', 'Fen ', 'Ba ', 'Gao ', 'Yang ', 'Gu ', 'Qiang ', 'Zang ', 'Gao ', 'Ling ', 'Yi ', 'Zhu ', 'Di ', 'Xiu ', 'Qian ', + 'Yi ', 'Xian ', 'Rong ', 'Qun ', 'Qun ', 'Qian ', 'Huan ', 'Zui ', 'Xian ', 'Yi ', 'Yashinau ', 'Qiang ', 'Xian ', 'Yu ', 'Geng ', 'Jie ', + 'Tang ', 'Yuan ', 'Xi ', 'Fan ', 'Shan ', 'Fen ', 'Shan ', 'Lian ', 'Lei ', 'Geng ', 'Nou ', 'Qiang ', 'Chan ', 'Yu ', 'Gong ', 'Yi ', + 'Chong ', 'Weng ', 'Fen ', 'Hong ', 'Chi ', 'Chi ', 'Cui ', 'Fu ', 'Xia ', 'Pen ', 'Yi ', 'La ', 'Yi ', 'Pi ', 'Ling ', 'Liu ', + 'Zhi ', 'Qu ', 'Xi ', 'Xie ', 'Xiang ', 'Xi ', 'Xi ', 'Qi ', 'Qiao ', 'Hui ', 'Hui ', 'Xiao ', 'Se ', 'Hong ', 'Jiang ', 'Di ', + 'Cui ', 'Fei ', 'Tao ', 'Sha ', 'Chi ', 'Zhu ', 'Jian ', 'Xuan ', 'Shi ', 'Pian ', 'Zong ', 'Wan ', 'Hui ', 'Hou ', 'He ', 'He ', + 'Han ', 'Ao ', 'Piao ', 'Yi ', 'Lian ', 'Qu ', NULL, 'Lin ', 'Pen ', 'Qiao ', 'Ao ', 'Fan ', 'Yi ', 'Hui ', 'Xuan ', 'Dao '), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/x80.php b/NEUE DATEIEN/includes/classes/transliteration/x80.php new file mode 100644 index 0000000..bac12e8 --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/x80.php @@ -0,0 +1,21 @@ + array('Yao ', 'Lao ', NULL, 'Kao ', 'Mao ', 'Zhe ', 'Qi ', 'Gou ', 'Gou ', 'Gou ', 'Die ', 'Die ', 'Er ', 'Shua ', 'Ruan ', 'Er ', + 'Nai ', 'Zhuan ', 'Lei ', 'Ting ', 'Zi ', 'Geng ', 'Chao ', 'Hao ', 'Yun ', 'Pa ', 'Pi ', 'Chi ', 'Si ', 'Chu ', 'Jia ', 'Ju ', + 'He ', 'Chu ', 'Lao ', 'Lun ', 'Ji ', 'Tang ', 'Ou ', 'Lou ', 'Nou ', 'Gou ', 'Pang ', 'Ze ', 'Lou ', 'Ji ', 'Lao ', 'Huo ', + 'You ', 'Mo ', 'Huai ', 'Er ', 'Zhe ', 'Ting ', 'Ye ', 'Da ', 'Song ', 'Qin ', 'Yun ', 'Chi ', 'Dan ', 'Dan ', 'Hong ', 'Geng ', + 'Zhi ', NULL, 'Nie ', 'Dan ', 'Zhen ', 'Che ', 'Ling ', 'Zheng ', 'You ', 'Wa ', 'Liao ', 'Long ', 'Zhi ', 'Ning ', 'Tiao ', 'Er ', + 'Ya ', 'Die ', 'Gua ', NULL, 'Lian ', 'Hao ', 'Sheng ', 'Lie ', 'Pin ', 'Jing ', 'Ju ', 'Bi ', 'Di ', 'Guo ', 'Wen ', 'Xu ', + 'Ping ', 'Cong ', 'Shikato ', NULL, 'Ting ', 'Yu ', 'Cong ', 'Kui ', 'Tsuraneru ', 'Kui ', 'Cong ', 'Lian ', 'Weng ', 'Kui ', 'Lian ', 'Lian ', + 'Cong ', 'Ao ', 'Sheng ', 'Song ', 'Ting ', 'Kui ', 'Nie ', 'Zhi ', 'Dan ', 'Ning ', 'Qie ', 'Ji ', 'Ting ', 'Ting ', 'Long ', 'Yu ', + 'Yu ', 'Zhao ', 'Si ', 'Su ', 'Yi ', 'Su ', 'Si ', 'Zhao ', 'Zhao ', 'Rou ', 'Yi ', 'Le ', 'Ji ', 'Qiu ', 'Ken ', 'Cao ', + 'Ge ', 'Di ', 'Huan ', 'Huang ', 'Yi ', 'Ren ', 'Xiao ', 'Ru ', 'Zhou ', 'Yuan ', 'Du ', 'Gang ', 'Rong ', 'Gan ', 'Cha ', 'Wo ', + 'Chang ', 'Gu ', 'Zhi ', 'Han ', 'Fu ', 'Fei ', 'Fen ', 'Pei ', 'Pang ', 'Jian ', 'Fang ', 'Zhun ', 'You ', 'Na ', 'Hang ', 'Ken ', + 'Ran ', 'Gong ', 'Yu ', 'Wen ', 'Yao ', 'Jin ', 'Pi ', 'Qian ', 'Xi ', 'Xi ', 'Fei ', 'Ken ', 'Jing ', 'Tai ', 'Shen ', 'Zhong ', + 'Zhang ', 'Xie ', 'Shen ', 'Wei ', 'Zhou ', 'Die ', 'Dan ', 'Fei ', 'Ba ', 'Bo ', 'Qu ', 'Tian ', 'Bei ', 'Gua ', 'Tai ', 'Zi ', + 'Ku ', 'Zhi ', 'Ni ', 'Ping ', 'Zi ', 'Fu ', 'Pang ', 'Zhen ', 'Xian ', 'Zuo ', 'Pei ', 'Jia ', 'Sheng ', 'Zhi ', 'Bao ', 'Mu ', + 'Qu ', 'Hu ', 'Ke ', 'Yi ', 'Yin ', 'Xu ', 'Yang ', 'Long ', 'Dong ', 'Ka ', 'Lu ', 'Jing ', 'Nu ', 'Yan ', 'Pang ', 'Kua ', + 'Yi ', 'Guang ', 'Gai ', 'Ge ', 'Dong ', 'Zhi ', 'Xiao ', 'Xiong ', 'Xiong ', 'Er ', 'E ', 'Xing ', 'Pian ', 'Neng ', 'Zi ', 'Gui '), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/x81.php b/NEUE DATEIEN/includes/classes/transliteration/x81.php new file mode 100644 index 0000000..0e96773 --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/x81.php @@ -0,0 +1,21 @@ + array('Cheng ', 'Tiao ', 'Zhi ', 'Cui ', 'Mei ', 'Xie ', 'Cui ', 'Xie ', 'Mo ', 'Mai ', 'Ji ', 'Obiyaakasu ', NULL, 'Kuai ', 'Sa ', 'Zang ', + 'Qi ', 'Nao ', 'Mi ', 'Nong ', 'Luan ', 'Wan ', 'Bo ', 'Wen ', 'Guan ', 'Qiu ', 'Jiao ', 'Jing ', 'Rou ', 'Heng ', 'Cuo ', 'Lie ', + 'Shan ', 'Ting ', 'Mei ', 'Chun ', 'Shen ', 'Xie ', 'De ', 'Zui ', 'Cu ', 'Xiu ', 'Xin ', 'Tuo ', 'Pao ', 'Cheng ', 'Nei ', 'Fu ', + 'Dou ', 'Tuo ', 'Niao ', 'Noy ', 'Pi ', 'Gu ', 'Gua ', 'Li ', 'Lian ', 'Zhang ', 'Cui ', 'Jie ', 'Liang ', 'Zhou ', 'Pi ', 'Biao ', + 'Lun ', 'Pian ', 'Guo ', 'Kui ', 'Chui ', 'Dan ', 'Tian ', 'Nei ', 'Jing ', 'Jie ', 'La ', 'Yi ', 'An ', 'Ren ', 'Shen ', 'Chuo ', + 'Fu ', 'Fu ', 'Ju ', 'Fei ', 'Qiang ', 'Wan ', 'Dong ', 'Pi ', 'Guo ', 'Zong ', 'Ding ', 'Wu ', 'Mei ', 'Ruan ', 'Zhuan ', 'Zhi ', + 'Cou ', 'Gua ', 'Ou ', 'Di ', 'An ', 'Xing ', 'Nao ', 'Yu ', 'Chuan ', 'Nan ', 'Yun ', 'Zhong ', 'Rou ', 'E ', 'Sai ', 'Tu ', + 'Yao ', 'Jian ', 'Wei ', 'Jiao ', 'Yu ', 'Jia ', 'Duan ', 'Bi ', 'Chang ', 'Fu ', 'Xian ', 'Ni ', 'Mian ', 'Wa ', 'Teng ', 'Tui ', + 'Bang ', 'Qian ', 'Lu ', 'Wa ', 'Sou ', 'Tang ', 'Su ', 'Zhui ', 'Ge ', 'Yi ', 'Bo ', 'Liao ', 'Ji ', 'Pi ', 'Xie ', 'Gao ', + 'Lu ', 'Bin ', 'Ou ', 'Chang ', 'Lu ', 'Guo ', 'Pang ', 'Chuai ', 'Piao ', 'Jiang ', 'Fu ', 'Tang ', 'Mo ', 'Xi ', 'Zhuan ', 'Lu ', + 'Jiao ', 'Ying ', 'Lu ', 'Zhi ', 'Tara ', 'Chun ', 'Lian ', 'Tong ', 'Peng ', 'Ni ', 'Zha ', 'Liao ', 'Cui ', 'Gui ', 'Xiao ', 'Teng ', + 'Fan ', 'Zhi ', 'Jiao ', 'Shan ', 'Wu ', 'Cui ', 'Run ', 'Xiang ', 'Sui ', 'Fen ', 'Ying ', 'Tan ', 'Zhua ', 'Dan ', 'Kuai ', 'Nong ', + 'Tun ', 'Lian ', 'Bi ', 'Yong ', 'Jue ', 'Chu ', 'Yi ', 'Juan ', 'La ', 'Lian ', 'Sao ', 'Tun ', 'Gu ', 'Qi ', 'Cui ', 'Bin ', + 'Xun ', 'Ru ', 'Huo ', 'Zang ', 'Xian ', 'Biao ', 'Xing ', 'Kuan ', 'La ', 'Yan ', 'Lu ', 'Huo ', 'Zang ', 'Luo ', 'Qu ', 'Zang ', + 'Luan ', 'Ni ', 'Zang ', 'Chen ', 'Qian ', 'Wo ', 'Guang ', 'Zang ', 'Lin ', 'Guang ', 'Zi ', 'Jiao ', 'Nie ', 'Chou ', 'Ji ', 'Gao ', + 'Chou ', 'Mian ', 'Nie ', 'Zhi ', 'Zhi ', 'Ge ', 'Jian ', 'Die ', 'Zhi ', 'Xiu ', 'Tai ', 'Zhen ', 'Jiu ', 'Xian ', 'Yu ', 'Cha '), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/x82.php b/NEUE DATEIEN/includes/classes/transliteration/x82.php new file mode 100644 index 0000000..ba87dce --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/x82.php @@ -0,0 +1,21 @@ + array('Yao ', 'Yu ', 'Chong ', 'Xi ', 'Xi ', 'Jiu ', 'Yu ', 'Yu ', 'Xing ', 'Ju ', 'Jiu ', 'Xin ', 'She ', 'She ', 'Yadoru ', 'Jiu ', + 'Shi ', 'Tan ', 'Shu ', 'Shi ', 'Tian ', 'Dan ', 'Pu ', 'Pu ', 'Guan ', 'Hua ', 'Tan ', 'Chuan ', 'Shun ', 'Xia ', 'Wu ', 'Zhou ', + 'Dao ', 'Gang ', 'Shan ', 'Yi ', NULL, 'Pa ', 'Tai ', 'Fan ', 'Ban ', 'Chuan ', 'Hang ', 'Fang ', 'Ban ', 'Que ', 'Hesaki ', 'Zhong ', + 'Jian ', 'Cang ', 'Ling ', 'Zhu ', 'Ze ', 'Duo ', 'Bo ', 'Xian ', 'Ge ', 'Chuan ', 'Jia ', 'Lu ', 'Hong ', 'Pang ', 'Xi ', NULL, + 'Fu ', 'Zao ', 'Feng ', 'Li ', 'Shao ', 'Yu ', 'Lang ', 'Ting ', NULL, 'Wei ', 'Bo ', 'Meng ', 'Nian ', 'Ju ', 'Huang ', 'Shou ', + 'Zong ', 'Bian ', 'Mao ', 'Die ', NULL, 'Bang ', 'Cha ', 'Yi ', 'Sao ', 'Cang ', 'Cao ', 'Lou ', 'Dai ', 'Sori ', 'Yao ', 'Tong ', + 'Yofune ', 'Dang ', 'Tan ', 'Lu ', 'Yi ', 'Jie ', 'Jian ', 'Huo ', 'Meng ', 'Qi ', 'Lu ', 'Lu ', 'Chan ', 'Shuang ', 'Gen ', 'Liang ', + 'Jian ', 'Jian ', 'Se ', 'Yan ', 'Fu ', 'Ping ', 'Yan ', 'Yan ', 'Cao ', 'Cao ', 'Yi ', 'Le ', 'Ting ', 'Qiu ', 'Ai ', 'Nai ', + 'Tiao ', 'Jiao ', 'Jie ', 'Peng ', 'Wan ', 'Yi ', 'Chai ', 'Mian ', 'Mie ', 'Gan ', 'Qian ', 'Yu ', 'Yu ', 'Shuo ', 'Qiong ', 'Tu ', + 'Xia ', 'Qi ', 'Mang ', 'Zi ', 'Hui ', 'Sui ', 'Zhi ', 'Xiang ', 'Bi ', 'Fu ', 'Tun ', 'Wei ', 'Wu ', 'Zhi ', 'Qi ', 'Shan ', + 'Wen ', 'Qian ', 'Ren ', 'Fou ', 'Kou ', 'Jie ', 'Lu ', 'Xu ', 'Ji ', 'Qin ', 'Qi ', 'Yuan ', 'Fen ', 'Ba ', 'Rui ', 'Xin ', + 'Ji ', 'Hua ', 'Hua ', 'Fang ', 'Wu ', 'Jue ', 'Gou ', 'Zhi ', 'Yun ', 'Qin ', 'Ao ', 'Chu ', 'Mao ', 'Ya ', 'Fei ', 'Reng ', + 'Hang ', 'Cong ', 'Yin ', 'You ', 'Bian ', 'Yi ', 'Susa ', 'Wei ', 'Li ', 'Pi ', 'E ', 'Xian ', 'Chang ', 'Cang ', 'Meng ', 'Su ', + 'Yi ', 'Yuan ', 'Ran ', 'Ling ', 'Tai ', 'Tiao ', 'Di ', 'Miao ', 'Qiong ', 'Li ', 'Yong ', 'Ke ', 'Mu ', 'Pei ', 'Bao ', 'Gou ', + 'Min ', 'Yi ', 'Yi ', 'Ju ', 'Pi ', 'Ruo ', 'Ku ', 'Zhu ', 'Ni ', 'Bo ', 'Bing ', 'Shan ', 'Qiu ', 'Yao ', 'Xian ', 'Ben ', + 'Hong ', 'Ying ', 'Zha ', 'Dong ', 'Ju ', 'Die ', 'Nie ', 'Gan ', 'Hu ', 'Ping ', 'Mei ', 'Fu ', 'Sheng ', 'Gu ', 'Bi ', 'Wei '), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/x83.php b/NEUE DATEIEN/includes/classes/transliteration/x83.php new file mode 100644 index 0000000..8654430 --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/x83.php @@ -0,0 +1,21 @@ + array('Fu ', 'Zhuo ', 'Mao ', 'Fan ', 'Qie ', 'Mao ', 'Mao ', 'Ba ', 'Zi ', 'Mo ', 'Zi ', 'Di ', 'Chi ', 'Ji ', 'Jing ', 'Long ', + NULL, 'Niao ', NULL, 'Xue ', 'Ying ', 'Qiong ', 'Ge ', 'Ming ', 'Li ', 'Rong ', 'Yin ', 'Gen ', 'Qian ', 'Chai ', 'Chen ', 'Yu ', + 'Xiu ', 'Zi ', 'Lie ', 'Wu ', 'Ji ', 'Kui ', 'Ce ', 'Chong ', 'Ci ', 'Gou ', 'Guang ', 'Mang ', 'Chi ', 'Jiao ', 'Jiao ', 'Fu ', + 'Yu ', 'Zhu ', 'Zi ', 'Jiang ', 'Hui ', 'Yin ', 'Cha ', 'Fa ', 'Rong ', 'Ru ', 'Chong ', 'Mang ', 'Tong ', 'Zhong ', NULL, 'Zhu ', + 'Xun ', 'Huan ', 'Kua ', 'Quan ', 'Gai ', 'Da ', 'Jing ', 'Xing ', 'Quan ', 'Cao ', 'Jing ', 'Er ', 'An ', 'Shou ', 'Chi ', 'Ren ', + 'Jian ', 'Ti ', 'Huang ', 'Ping ', 'Li ', 'Jin ', 'Lao ', 'Shu ', 'Zhuang ', 'Da ', 'Jia ', 'Rao ', 'Bi ', 'Ze ', 'Qiao ', 'Hui ', + 'Qi ', 'Dang ', NULL, 'Rong ', 'Hun ', 'Ying ', 'Luo ', 'Ying ', 'Xun ', 'Jin ', 'Sun ', 'Yin ', 'Mai ', 'Hong ', 'Zhou ', 'Yao ', + 'Du ', 'Wei ', 'Chu ', 'Dou ', 'Fu ', 'Ren ', 'Yin ', 'He ', 'Bi ', 'Bu ', 'Yun ', 'Di ', 'Tu ', 'Sui ', 'Sui ', 'Cheng ', + 'Chen ', 'Wu ', 'Bie ', 'Xi ', 'Geng ', 'Li ', 'Fu ', 'Zhu ', 'Mo ', 'Li ', 'Zhuang ', 'Ji ', 'Duo ', 'Qiu ', 'Sha ', 'Suo ', + 'Chen ', 'Feng ', 'Ju ', 'Mei ', 'Meng ', 'Xing ', 'Jing ', 'Che ', 'Xin ', 'Jun ', 'Yan ', 'Ting ', 'Diao ', 'Cuo ', 'Wan ', 'Han ', + 'You ', 'Cuo ', 'Jia ', 'Wang ', 'You ', 'Niu ', 'Shao ', 'Xian ', 'Lang ', 'Fu ', 'E ', 'Mo ', 'Wen ', 'Jie ', 'Nan ', 'Mu ', + 'Kan ', 'Lai ', 'Lian ', 'Shi ', 'Wo ', 'Usagi ', 'Lian ', 'Huo ', 'You ', 'Ying ', 'Ying ', 'Nuc ', 'Chun ', 'Mang ', 'Mang ', 'Ci ', + 'Wan ', 'Jing ', 'Di ', 'Qu ', 'Dong ', 'Jian ', 'Zou ', 'Gu ', 'La ', 'Lu ', 'Ju ', 'Wei ', 'Jun ', 'Nie ', 'Kun ', 'He ', + 'Pu ', 'Zi ', 'Gao ', 'Guo ', 'Fu ', 'Lun ', 'Chang ', 'Chou ', 'Song ', 'Chui ', 'Zhan ', 'Men ', 'Cai ', 'Ba ', 'Li ', 'Tu ', + 'Bo ', 'Han ', 'Bao ', 'Qin ', 'Juan ', 'Xi ', 'Qin ', 'Di ', 'Jie ', 'Pu ', 'Dang ', 'Jin ', 'Zhao ', 'Tai ', 'Geng ', 'Hua ', + 'Gu ', 'Ling ', 'Fei ', 'Jin ', 'An ', 'Wang ', 'Beng ', 'Zhou ', 'Yan ', 'Ju ', 'Jian ', 'Lin ', 'Tan ', 'Shu ', 'Tian ', 'Dao '), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/x84.php b/NEUE DATEIEN/includes/classes/transliteration/x84.php new file mode 100644 index 0000000..6d36f16 --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/x84.php @@ -0,0 +1,21 @@ + array('Hu ', 'Qi ', 'He ', 'Cui ', 'Tao ', 'Chun ', 'Bei ', 'Chang ', 'Huan ', 'Fei ', 'Lai ', 'Qi ', 'Meng ', 'Ping ', 'Wei ', 'Dan ', + 'Sha ', 'Huan ', 'Yan ', 'Yi ', 'Tiao ', 'Qi ', 'Wan ', 'Ce ', 'Nai ', 'Kutabireru ', 'Tuo ', 'Jiu ', 'Tie ', 'Luo ', NULL, NULL, + 'Meng ', NULL, 'Yaji ', NULL, 'Ying ', 'Ying ', 'Ying ', 'Xiao ', 'Sa ', 'Qiu ', 'Ke ', 'Xiang ', 'Wan ', 'Yu ', 'Yu ', 'Fu ', + 'Lian ', 'Xuan ', 'Yuan ', 'Nan ', 'Ze ', 'Wo ', 'Chun ', 'Xiao ', 'Yu ', 'Pian ', 'Mao ', 'An ', 'E ', 'Luo ', 'Ying ', 'Huo ', + 'Gua ', 'Jiang ', 'Mian ', 'Zuo ', 'Zuo ', 'Ju ', 'Bao ', 'Rou ', 'Xi ', 'Xie ', 'An ', 'Qu ', 'Jian ', 'Fu ', 'Lu ', 'Jing ', + 'Pen ', 'Feng ', 'Hong ', 'Hong ', 'Hou ', 'Yan ', 'Tu ', 'Zhu ', 'Zi ', 'Xiang ', 'Shen ', 'Ge ', 'Jie ', 'Jing ', 'Mi ', 'Huang ', + 'Shen ', 'Pu ', 'Gai ', 'Dong ', 'Zhou ', 'Qian ', 'Wei ', 'Bo ', 'Wei ', 'Pa ', 'Ji ', 'Hu ', 'Zang ', 'Jia ', 'Duan ', 'Yao ', + 'Jun ', 'Cong ', 'Quan ', 'Wei ', 'Xian ', 'Kui ', 'Ting ', 'Hun ', 'Xi ', 'Shi ', 'Qi ', 'Lan ', 'Zong ', 'Yao ', 'Yuan ', 'Mei ', + 'Yun ', 'Shu ', 'Di ', 'Zhuan ', 'Guan ', 'Sukumo ', 'Xue ', 'Chan ', 'Kai ', 'Kui ', NULL, 'Jiang ', 'Lou ', 'Wei ', 'Pai ', NULL, + 'Sou ', 'Yin ', 'Shi ', 'Chun ', 'Shi ', 'Yun ', 'Zhen ', 'Lang ', 'Nu ', 'Meng ', 'He ', 'Que ', 'Suan ', 'Yuan ', 'Li ', 'Ju ', + 'Xi ', 'Pang ', 'Chu ', 'Xu ', 'Tu ', 'Liu ', 'Wo ', 'Zhen ', 'Qian ', 'Zu ', 'Po ', 'Cuo ', 'Yuan ', 'Chu ', 'Yu ', 'Kuai ', + 'Pan ', 'Pu ', 'Pu ', 'Na ', 'Shuo ', 'Xi ', 'Fen ', 'Yun ', 'Zheng ', 'Jian ', 'Ji ', 'Ruo ', 'Cang ', 'En ', 'Mi ', 'Hao ', + 'Sun ', 'Zhen ', 'Ming ', 'Sou ', 'Xu ', 'Liu ', 'Xi ', 'Gu ', 'Lang ', 'Rong ', 'Weng ', 'Gai ', 'Cuo ', 'Shi ', 'Tang ', 'Luo ', + 'Ru ', 'Suo ', 'Xian ', 'Bei ', 'Yao ', 'Gui ', 'Bi ', 'Zong ', 'Gun ', 'Za ', 'Xiu ', 'Ce ', 'Hai ', 'Lan ', NULL, 'Ji ', + 'Li ', 'Can ', 'Lang ', 'Yu ', NULL, 'Ying ', 'Mo ', 'Diao ', 'Tiao ', 'Mao ', 'Tong ', 'Zhu ', 'Peng ', 'An ', 'Lian ', 'Cong ', + 'Xi ', 'Ping ', 'Qiu ', 'Jin ', 'Chun ', 'Jie ', 'Wei ', 'Tui ', 'Cao ', 'Yu ', 'Yi ', 'Ji ', 'Liao ', 'Bi ', 'Lu ', 'Su '), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/x85.php b/NEUE DATEIEN/includes/classes/transliteration/x85.php new file mode 100644 index 0000000..30d72b6 --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/x85.php @@ -0,0 +1,21 @@ + array('Bu ', 'Zhang ', 'Luo ', 'Jiang ', 'Man ', 'Yan ', 'Ling ', 'Ji ', 'Piao ', 'Gun ', 'Han ', 'Di ', 'Su ', 'Lu ', 'She ', 'Shang ', + 'Di ', 'Mie ', 'Xun ', 'Man ', 'Bo ', 'Di ', 'Cuo ', 'Zhe ', 'Sen ', 'Xuan ', 'Wei ', 'Hu ', 'Ao ', 'Mi ', 'Lou ', 'Cu ', + 'Zhong ', 'Cai ', 'Po ', 'Jiang ', 'Mi ', 'Cong ', 'Niao ', 'Hui ', 'Jun ', 'Yin ', 'Jian ', 'Yan ', 'Shu ', 'Yin ', 'Kui ', 'Chen ', + 'Hu ', 'Sha ', 'Kou ', 'Qian ', 'Ma ', 'Zang ', 'Sonoko ', 'Qiang ', 'Dou ', 'Lian ', 'Lin ', 'Kou ', 'Ai ', 'Bi ', 'Li ', 'Wei ', + 'Ji ', 'Xun ', 'Sheng ', 'Fan ', 'Meng ', 'Ou ', 'Chan ', 'Dian ', 'Xun ', 'Jiao ', 'Rui ', 'Rui ', 'Lei ', 'Yu ', 'Qiao ', 'Chu ', + 'Hua ', 'Jian ', 'Mai ', 'Yun ', 'Bao ', 'You ', 'Qu ', 'Lu ', 'Rao ', 'Hui ', 'E ', 'Teng ', 'Fei ', 'Jue ', 'Zui ', 'Fa ', + 'Ru ', 'Fen ', 'Kui ', 'Shun ', 'Rui ', 'Ya ', 'Xu ', 'Fu ', 'Jue ', 'Dang ', 'Wu ', 'Tong ', 'Si ', 'Xiao ', 'Xi ', 'Long ', + 'Yun ', NULL, 'Qi ', 'Jian ', 'Yun ', 'Sun ', 'Ling ', 'Yu ', 'Xia ', 'Yong ', 'Ji ', 'Hong ', 'Si ', 'Nong ', 'Lei ', 'Xuan ', + 'Yun ', 'Yu ', 'Xi ', 'Hao ', 'Bo ', 'Hao ', 'Ai ', 'Wei ', 'Hui ', 'Wei ', 'Ji ', 'Ci ', 'Xiang ', 'Luan ', 'Mie ', 'Yi ', + 'Leng ', 'Jiang ', 'Can ', 'Shen ', 'Qiang ', 'Lian ', 'Ke ', 'Yuan ', 'Da ', 'Ti ', 'Tang ', 'Xie ', 'Bi ', 'Zhan ', 'Sun ', 'Lian ', + 'Fan ', 'Ding ', 'Jie ', 'Gu ', 'Xie ', 'Shu ', 'Jian ', 'Kao ', 'Hong ', 'Sa ', 'Xin ', 'Xun ', 'Yao ', 'Hie ', 'Sou ', 'Shu ', + 'Xun ', 'Dui ', 'Pin ', 'Wei ', 'Neng ', 'Chou ', 'Mai ', 'Ru ', 'Piao ', 'Tai ', 'Qi ', 'Zao ', 'Chen ', 'Zhen ', 'Er ', 'Ni ', + 'Ying ', 'Gao ', 'Cong ', 'Xiao ', 'Qi ', 'Fa ', 'Jian ', 'Xu ', 'Kui ', 'Jie ', 'Bian ', 'Diao ', 'Mi ', 'Lan ', 'Jin ', 'Cang ', + 'Miao ', 'Qiong ', 'Qie ', 'Xian ', NULL, 'Ou ', 'Xian ', 'Su ', 'Lu ', 'Yi ', 'Xu ', 'Xie ', 'Li ', 'Yi ', 'La ', 'Lei ', + 'Xiao ', 'Di ', 'Zhi ', 'Bei ', 'Teng ', 'Yao ', 'Mo ', 'Huan ', 'Piao ', 'Fan ', 'Sou ', 'Tan ', 'Tui ', 'Qiong ', 'Qiao ', 'Wei ', + 'Liu ', 'Hui ', NULL, 'Gao ', 'Yun ', NULL, 'Li ', 'Shu ', 'Chu ', 'Ai ', 'Lin ', 'Zao ', 'Xuan ', 'Chen ', 'Lai ', 'Huo '), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/x86.php b/NEUE DATEIEN/includes/classes/transliteration/x86.php new file mode 100644 index 0000000..fed80ce --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/x86.php @@ -0,0 +1,21 @@ + array('Tuo ', 'Wu ', 'Rui ', 'Rui ', 'Qi ', 'Heng ', 'Lu ', 'Su ', 'Tui ', 'Mang ', 'Yun ', 'Pin ', 'Yu ', 'Xun ', 'Ji ', 'Jiong ', + 'Xian ', 'Mo ', 'Hagi ', 'Su ', 'Jiong ', NULL, 'Nie ', 'Bo ', 'Rang ', 'Yi ', 'Xian ', 'Yu ', 'Ju ', 'Lian ', 'Lian ', 'Yin ', + 'Qiang ', 'Ying ', 'Long ', 'Tong ', 'Wei ', 'Yue ', 'Ling ', 'Qu ', 'Yao ', 'Fan ', 'Mi ', 'Lan ', 'Kui ', 'Lan ', 'Ji ', 'Dang ', + 'Katsura ', 'Lei ', 'Lei ', 'Hua ', 'Feng ', 'Zhi ', 'Wei ', 'Kui ', 'Zhan ', 'Huai ', 'Li ', 'Ji ', 'Mi ', 'Lei ', 'Huai ', 'Luo ', + 'Ji ', 'Kui ', 'Lu ', 'Jian ', 'San ', NULL, 'Lei ', 'Quan ', 'Xiao ', 'Yi ', 'Luan ', 'Men ', 'Bie ', 'Hu ', 'Hu ', 'Lu ', + 'Nue ', 'Lu ', 'Si ', 'Xiao ', 'Qian ', 'Chu ', 'Hu ', 'Xu ', 'Cuo ', 'Fu ', 'Xu ', 'Xu ', 'Lu ', 'Hu ', 'Yu ', 'Hao ', + 'Jiao ', 'Ju ', 'Guo ', 'Bao ', 'Yan ', 'Zhan ', 'Zhan ', 'Kui ', 'Ban ', 'Xi ', 'Shu ', 'Chong ', 'Qiu ', 'Diao ', 'Ji ', 'Qiu ', + 'Cheng ', 'Shi ', NULL, 'Di ', 'Zhe ', 'She ', 'Yu ', 'Gan ', 'Zi ', 'Hong ', 'Hui ', 'Meng ', 'Ge ', 'Sui ', 'Xia ', 'Chai ', + 'Shi ', 'Yi ', 'Ma ', 'Xiang ', 'Fang ', 'E ', 'Pa ', 'Chi ', 'Qian ', 'Wen ', 'Wen ', 'Rui ', 'Bang ', 'Bi ', 'Yue ', 'Yue ', + 'Jun ', 'Qi ', 'Ran ', 'Yin ', 'Qi ', 'Tian ', 'Yuan ', 'Jue ', 'Hui ', 'Qin ', 'Qi ', 'Zhong ', 'Ya ', 'Ci ', 'Mu ', 'Wang ', + 'Fen ', 'Fen ', 'Hang ', 'Gong ', 'Zao ', 'Fu ', 'Ran ', 'Jie ', 'Fu ', 'Chi ', 'Dou ', 'Piao ', 'Xian ', 'Ni ', 'Te ', 'Qiu ', + 'You ', 'Zha ', 'Ping ', 'Chi ', 'You ', 'He ', 'Han ', 'Ju ', 'Li ', 'Fu ', 'Ran ', 'Zha ', 'Gou ', 'Pi ', 'Bo ', 'Xian ', + 'Zhu ', 'Diao ', 'Bie ', 'Bing ', 'Gu ', 'Ran ', 'Qu ', 'She ', 'Tie ', 'Ling ', 'Gu ', 'Dan ', 'Gu ', 'Ying ', 'Li ', 'Cheng ', + 'Qu ', 'Mou ', 'Ge ', 'Ci ', 'Hui ', 'Hui ', 'Mang ', 'Fu ', 'Yang ', 'Wa ', 'Lie ', 'Zhu ', 'Yi ', 'Xian ', 'Kuo ', 'Jiao ', + 'Li ', 'Yi ', 'Ping ', 'Ji ', 'Ha ', 'She ', 'Yi ', 'Wang ', 'Mo ', 'Qiong ', 'Qie ', 'Gui ', 'Gong ', 'Zhi ', 'Man ', 'Ebi ', + 'Zhi ', 'Jia ', 'Rao ', 'Si ', 'Qi ', 'Xing ', 'Lie ', 'Qiu ', 'Shao ', 'Yong ', 'Jia ', 'Shui ', 'Che ', 'Bai ', 'E ', 'Han '), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/x87.php b/NEUE DATEIEN/includes/classes/transliteration/x87.php new file mode 100644 index 0000000..fc6547b --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/x87.php @@ -0,0 +1,21 @@ + array('Shu ', 'Xuan ', 'Feng ', 'Shen ', 'Zhen ', 'Fu ', 'Xian ', 'Zhe ', 'Wu ', 'Fu ', 'Li ', 'Lang ', 'Bi ', 'Chu ', 'Yuan ', 'You ', + 'Jie ', 'Dan ', 'Yan ', 'Ting ', 'Dian ', 'Shui ', 'Hui ', 'Gua ', 'Zhi ', 'Song ', 'Fei ', 'Ju ', 'Mi ', 'Qi ', 'Qi ', 'Yu ', + 'Jun ', 'Zha ', 'Meng ', 'Qiang ', 'Si ', 'Xi ', 'Lun ', 'Li ', 'Die ', 'Tiao ', 'Tao ', 'Kun ', 'Gan ', 'Han ', 'Yu ', 'Bang ', + 'Fei ', 'Pi ', 'Wei ', 'Dun ', 'Yi ', 'Yuan ', 'Su ', 'Quan ', 'Qian ', 'Rui ', 'Ni ', 'Qing ', 'Wei ', 'Liang ', 'Guo ', 'Wan ', + 'Dong ', 'E ', 'Ban ', 'Di ', 'Wang ', 'Can ', 'Yang ', 'Ying ', 'Guo ', 'Chan ', NULL, 'La ', 'Ke ', 'Ji ', 'He ', 'Ting ', + 'Mai ', 'Xu ', 'Mian ', 'Yu ', 'Jie ', 'Shi ', 'Xuan ', 'Huang ', 'Yan ', 'Bian ', 'Rou ', 'Wei ', 'Fu ', 'Yuan ', 'Mei ', 'Wei ', + 'Fu ', 'Ruan ', 'Xie ', 'You ', 'Qiu ', 'Mao ', 'Xia ', 'Ying ', 'Shi ', 'Chong ', 'Tang ', 'Zhu ', 'Zong ', 'Ti ', 'Fu ', 'Yuan ', + 'Hui ', 'Meng ', 'La ', 'Du ', 'Hu ', 'Qiu ', 'Die ', 'Li ', 'Gua ', 'Yun ', 'Ju ', 'Nan ', 'Lou ', 'Qun ', 'Rong ', 'Ying ', + 'Jiang ', NULL, 'Lang ', 'Pang ', 'Si ', 'Xi ', 'Ci ', 'Xi ', 'Yuan ', 'Weng ', 'Lian ', 'Sou ', 'Ban ', 'Rong ', 'Rong ', 'Ji ', + 'Wu ', 'Qiu ', 'Han ', 'Qin ', 'Yi ', 'Bi ', 'Hua ', 'Tang ', 'Yi ', 'Du ', 'Nai ', 'He ', 'Hu ', 'Hui ', 'Ma ', 'Ming ', + 'Yi ', 'Wen ', 'Ying ', 'Teng ', 'Yu ', 'Cang ', 'So ', 'Ebi ', 'Man ', NULL, 'Shang ', 'Zhe ', 'Cao ', 'Chi ', 'Di ', 'Ao ', + 'Lu ', 'Wei ', 'Zhi ', 'Tang ', 'Chen ', 'Piao ', 'Qu ', 'Pi ', 'Yu ', 'Jian ', 'Luo ', 'Lou ', 'Qin ', 'Zhong ', 'Yin ', 'Jiang ', + 'Shuai ', 'Wen ', 'Jiao ', 'Wan ', 'Zhi ', 'Zhe ', 'Ma ', 'Ma ', 'Guo ', 'Liu ', 'Mao ', 'Xi ', 'Cong ', 'Li ', 'Man ', 'Xiao ', + 'Kamakiri ', 'Zhang ', 'Mang ', 'Xiang ', 'Mo ', 'Zui ', 'Si ', 'Qiu ', 'Te ', 'Zhi ', 'Peng ', 'Peng ', 'Jiao ', 'Qu ', 'Bie ', 'Liao ', + 'Pan ', 'Gui ', 'Xi ', 'Ji ', 'Zhuan ', 'Huang ', 'Fei ', 'Lao ', 'Jue ', 'Jue ', 'Hui ', 'Yin ', 'Chan ', 'Jiao ', 'Shan ', 'Rao ', + 'Xiao ', 'Mou ', 'Chong ', 'Xun ', 'Si ', NULL, 'Cheng ', 'Dang ', 'Li ', 'Xie ', 'Shan ', 'Yi ', 'Jing ', 'Da ', 'Chan ', 'Qi '), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/x88.php b/NEUE DATEIEN/includes/classes/transliteration/x88.php new file mode 100644 index 0000000..f2d25a4 --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/x88.php @@ -0,0 +1,21 @@ + array('Ci ', 'Xiang ', 'She ', 'Luo ', 'Qin ', 'Ying ', 'Chai ', 'Li ', 'Ze ', 'Xuan ', 'Lian ', 'Zhu ', 'Ze ', 'Xie ', 'Mang ', 'Xie ', + 'Qi ', 'Rong ', 'Jian ', 'Meng ', 'Hao ', 'Ruan ', 'Huo ', 'Zhuo ', 'Jie ', 'Bin ', 'He ', 'Mie ', 'Fan ', 'Lei ', 'Jie ', 'La ', + 'Mi ', 'Li ', 'Chun ', 'Li ', 'Qiu ', 'Nie ', 'Lu ', 'Du ', 'Xiao ', 'Zhu ', 'Long ', 'Li ', 'Long ', 'Feng ', 'Ye ', 'Beng ', + 'Shang ', 'Gu ', 'Juan ', 'Ying ', NULL, 'Xi ', 'Can ', 'Qu ', 'Quan ', 'Du ', 'Can ', 'Man ', 'Jue ', 'Jie ', 'Zhu ', 'Zha ', + 'Xie ', 'Huang ', 'Niu ', 'Pei ', 'Nu ', 'Xin ', 'Zhong ', 'Mo ', 'Er ', 'Ke ', 'Mie ', 'Xi ', 'Xing ', 'Yan ', 'Kan ', 'Yuan ', + NULL, 'Ling ', 'Xuan ', 'Shu ', 'Xian ', 'Tong ', 'Long ', 'Jie ', 'Xian ', 'Ya ', 'Hu ', 'Wei ', 'Dao ', 'Chong ', 'Wei ', 'Dao ', + 'Zhun ', 'Heng ', 'Qu ', 'Yi ', 'Yi ', 'Bu ', 'Gan ', 'Yu ', 'Biao ', 'Cha ', 'Yi ', 'Shan ', 'Chen ', 'Fu ', 'Gun ', 'Fen ', + 'Shuai ', 'Jie ', 'Na ', 'Zhong ', 'Dan ', 'Ri ', 'Zhong ', 'Zhong ', 'Xie ', 'Qi ', 'Xie ', 'Ran ', 'Zhi ', 'Ren ', 'Qin ', 'Jin ', + 'Jun ', 'Yuan ', 'Mei ', 'Chai ', 'Ao ', 'Niao ', 'Hui ', 'Ran ', 'Jia ', 'Tuo ', 'Ling ', 'Dai ', 'Bao ', 'Pao ', 'Yao ', 'Zuo ', + 'Bi ', 'Shao ', 'Tan ', 'Ju ', 'He ', 'Shu ', 'Xiu ', 'Zhen ', 'Yi ', 'Pa ', 'Bo ', 'Di ', 'Wa ', 'Fu ', 'Gun ', 'Zhi ', + 'Zhi ', 'Ran ', 'Pan ', 'Yi ', 'Mao ', 'Tuo ', 'Na ', 'Kou ', 'Xian ', 'Chan ', 'Qu ', 'Bei ', 'Gun ', 'Xi ', 'Ne ', 'Bo ', + 'Horo ', 'Fu ', 'Yi ', 'Chi ', 'Ku ', 'Ren ', 'Jiang ', 'Jia ', 'Cun ', 'Mo ', 'Jie ', 'Er ', 'Luo ', 'Ru ', 'Zhu ', 'Gui ', + 'Yin ', 'Cai ', 'Lie ', 'Kamishimo ', 'Yuki ', 'Zhuang ', 'Dang ', NULL, 'Kun ', 'Ken ', 'Niao ', 'Shu ', 'Jia ', 'Kun ', 'Cheng ', 'Li ', + 'Juan ', 'Shen ', 'Pou ', 'Ge ', 'Yi ', 'Yu ', 'Zhen ', 'Liu ', 'Qiu ', 'Qun ', 'Ji ', 'Yi ', 'Bu ', 'Zhuang ', 'Shui ', 'Sha ', + 'Qun ', 'Li ', 'Lian ', 'Lian ', 'Ku ', 'Jian ', 'Fou ', 'Chan ', 'Bi ', 'Gun ', 'Tao ', 'Yuan ', 'Ling ', 'Chi ', 'Chang ', 'Chou ', + 'Duo ', 'Biao ', 'Liang ', 'Chang ', 'Pei ', 'Pei ', 'Fei ', 'Yuan ', 'Luo ', 'Guo ', 'Yan ', 'Du ', 'Xi ', 'Zhi ', 'Ju ', 'Qi '), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/x89.php b/NEUE DATEIEN/includes/classes/transliteration/x89.php new file mode 100644 index 0000000..601a793 --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/x89.php @@ -0,0 +1,21 @@ + array('Ji ', 'Zhi ', 'Gua ', 'Ken ', 'Che ', 'Ti ', 'Ti ', 'Fu ', 'Chong ', 'Xie ', 'Bian ', 'Die ', 'Kun ', 'Duan ', 'Xiu ', 'Xiu ', + 'He ', 'Yuan ', 'Bao ', 'Bao ', 'Fu ', 'Yu ', 'Tuan ', 'Yan ', 'Hui ', 'Bei ', 'Chu ', 'Lu ', 'Ena ', 'Hitoe ', 'Yun ', 'Da ', + 'Gou ', 'Da ', 'Huai ', 'Rong ', 'Yuan ', 'Ru ', 'Nai ', 'Jiong ', 'Suo ', 'Ban ', 'Tun ', 'Chi ', 'Sang ', 'Niao ', 'Ying ', 'Jie ', + 'Qian ', 'Huai ', 'Ku ', 'Lian ', 'Bao ', 'Li ', 'Zhe ', 'Shi ', 'Lu ', 'Yi ', 'Die ', 'Xie ', 'Xian ', 'Wei ', 'Biao ', 'Cao ', + 'Ji ', 'Jiang ', 'Sen ', 'Bao ', 'Xiang ', 'Chihaya ', 'Pu ', 'Jian ', 'Zhuan ', 'Jian ', 'Zui ', 'Ji ', 'Dan ', 'Za ', 'Fan ', 'Bo ', + 'Xiang ', 'Xin ', 'Bie ', 'Rao ', 'Man ', 'Lan ', 'Ao ', 'Duo ', 'Gui ', 'Cao ', 'Sui ', 'Nong ', 'Chan ', 'Lian ', 'Bi ', 'Jin ', + 'Dang ', 'Shu ', 'Tan ', 'Bi ', 'Lan ', 'Pu ', 'Ru ', 'Zhi ', NULL, 'Shu ', 'Wa ', 'Shi ', 'Bai ', 'Xie ', 'Bo ', 'Chen ', + 'Lai ', 'Long ', 'Xi ', 'Xian ', 'Lan ', 'Zhe ', 'Dai ', 'Tasuki ', 'Zan ', 'Shi ', 'Jian ', 'Pan ', 'Yi ', 'Ran ', 'Ya ', 'Xi ', + 'Xi ', 'Yao ', 'Feng ', 'Tan ', NULL, 'Biao ', 'Fu ', 'Ba ', 'He ', 'Ji ', 'Ji ', 'Jian ', 'Guan ', 'Bian ', 'Yan ', 'Gui ', + 'Jue ', 'Pian ', 'Mao ', 'Mi ', 'Mi ', 'Mie ', 'Shi ', 'Si ', 'Zhan ', 'Luo ', 'Jue ', 'Mi ', 'Tiao ', 'Lian ', 'Yao ', 'Zhi ', + 'Jun ', 'Xi ', 'Shan ', 'Wei ', 'Xi ', 'Tian ', 'Yu ', 'Lan ', 'E ', 'Du ', 'Qin ', 'Pang ', 'Ji ', 'Ming ', 'Ying ', 'Gou ', + 'Qu ', 'Zhan ', 'Jin ', 'Guan ', 'Deng ', 'Jian ', 'Luo ', 'Qu ', 'Jian ', 'Wei ', 'Jue ', 'Qu ', 'Luo ', 'Lan ', 'Shen ', 'Di ', + 'Guan ', 'Jian ', 'Guan ', 'Yan ', 'Gui ', 'Mi ', 'Shi ', 'Zhan ', 'Lan ', 'Jue ', 'Ji ', 'Xi ', 'Di ', 'Tian ', 'Yu ', 'Gou ', + 'Jin ', 'Qu ', 'Jiao ', 'Jiu ', 'Jin ', 'Cu ', 'Jue ', 'Zhi ', 'Chao ', 'Ji ', 'Gu ', 'Dan ', 'Zui ', 'Di ', 'Shang ', 'Hua ', + 'Quan ', 'Ge ', 'Chi ', 'Jie ', 'Gui ', 'Gong ', 'Hong ', 'Jie ', 'Hun ', 'Qiu ', 'Xing ', 'Su ', 'Ni ', 'Ji ', 'Lu ', 'Zhi ', + 'Zha ', 'Bi ', 'Xing ', 'Hu ', 'Shang ', 'Gong ', 'Zhi ', 'Xue ', 'Chu ', 'Xi ', 'Yi ', 'Lu ', 'Jue ', 'Xi ', 'Yan ', 'Xi '), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/x8a.php b/NEUE DATEIEN/includes/classes/transliteration/x8a.php new file mode 100644 index 0000000..c87a4e0 --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/x8a.php @@ -0,0 +1,21 @@ + array('Yan ', 'Yan ', 'Ding ', 'Fu ', 'Qiu ', 'Qiu ', 'Jiao ', 'Hong ', 'Ji ', 'Fan ', 'Xun ', 'Diao ', 'Hong ', 'Cha ', 'Tao ', 'Xu ', + 'Jie ', 'Yi ', 'Ren ', 'Xun ', 'Yin ', 'Shan ', 'Qi ', 'Tuo ', 'Ji ', 'Xun ', 'Yin ', 'E ', 'Fen ', 'Ya ', 'Yao ', 'Song ', + 'Shen ', 'Yin ', 'Xin ', 'Jue ', 'Xiao ', 'Ne ', 'Chen ', 'You ', 'Zhi ', 'Xiong ', 'Fang ', 'Xin ', 'Chao ', 'She ', 'Xian ', 'Sha ', + 'Tun ', 'Xu ', 'Yi ', 'Yi ', 'Su ', 'Chi ', 'He ', 'Shen ', 'He ', 'Xu ', 'Zhen ', 'Zhu ', 'Zheng ', 'Gou ', 'Zi ', 'Zi ', + 'Zhan ', 'Gu ', 'Fu ', 'Quan ', 'Die ', 'Ling ', 'Di ', 'Yang ', 'Li ', 'Nao ', 'Pan ', 'Zhou ', 'Gan ', 'Yi ', 'Ju ', 'Ao ', + 'Zha ', 'Tuo ', 'Yi ', 'Qu ', 'Zhao ', 'Ping ', 'Bi ', 'Xiong ', 'Qu ', 'Ba ', 'Da ', 'Zu ', 'Tao ', 'Zhu ', 'Ci ', 'Zhe ', + 'Yong ', 'Xu ', 'Xun ', 'Yi ', 'Huang ', 'He ', 'Shi ', 'Cha ', 'Jiao ', 'Shi ', 'Hen ', 'Cha ', 'Gou ', 'Gui ', 'Quan ', 'Hui ', + 'Jie ', 'Hua ', 'Gai ', 'Xiang ', 'Wei ', 'Shen ', 'Chou ', 'Tong ', 'Mi ', 'Zhan ', 'Ming ', 'E ', 'Hui ', 'Yan ', 'Xiong ', 'Gua ', + 'Er ', 'Beng ', 'Tiao ', 'Chi ', 'Lei ', 'Zhu ', 'Kuang ', 'Kua ', 'Wu ', 'Yu ', 'Teng ', 'Ji ', 'Zhi ', 'Ren ', 'Su ', 'Lang ', + 'E ', 'Kuang ', 'E ', 'Shi ', 'Ting ', 'Dan ', 'Bo ', 'Chan ', 'You ', 'Heng ', 'Qiao ', 'Qin ', 'Shua ', 'An ', 'Yu ', 'Xiao ', + 'Cheng ', 'Jie ', 'Xian ', 'Wu ', 'Wu ', 'Gao ', 'Song ', 'Pu ', 'Hui ', 'Jing ', 'Shuo ', 'Zhen ', 'Shuo ', 'Du ', 'Yasashi ', 'Chang ', + 'Shui ', 'Jie ', 'Ke ', 'Qu ', 'Cong ', 'Xiao ', 'Sui ', 'Wang ', 'Xuan ', 'Fei ', 'Chi ', 'Ta ', 'Yi ', 'Na ', 'Yin ', 'Diao ', + 'Pi ', 'Chuo ', 'Chan ', 'Chen ', 'Zhun ', 'Ji ', 'Qi ', 'Tan ', 'Zhui ', 'Wei ', 'Ju ', 'Qing ', 'Jian ', 'Zheng ', 'Ze ', 'Zou ', + 'Qian ', 'Zhuo ', 'Liang ', 'Jian ', 'Zhu ', 'Hao ', 'Lun ', 'Shen ', 'Biao ', 'Huai ', 'Pian ', 'Yu ', 'Die ', 'Xu ', 'Pian ', 'Shi ', + 'Xuan ', 'Shi ', 'Hun ', 'Hua ', 'E ', 'Zhong ', 'Di ', 'Xie ', 'Fu ', 'Pu ', 'Ting ', 'Jian ', 'Qi ', 'Yu ', 'Zi ', 'Chuan ', + 'Xi ', 'Hui ', 'Yin ', 'An ', 'Xian ', 'Nan ', 'Chen ', 'Feng ', 'Zhu ', 'Yang ', 'Yan ', 'Heng ', 'Xuan ', 'Ge ', 'Nuo ', 'Qi '), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/x8b.php b/NEUE DATEIEN/includes/classes/transliteration/x8b.php new file mode 100644 index 0000000..6dd5a88 --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/x8b.php @@ -0,0 +1,21 @@ + array('Mou ', 'Ye ', 'Wei ', NULL, 'Teng ', 'Zou ', 'Shan ', 'Jian ', 'Bo ', 'Ku ', 'Huang ', 'Huo ', 'Ge ', 'Ying ', 'Mi ', 'Xiao ', + 'Mi ', 'Xi ', 'Qiang ', 'Chen ', 'Nue ', 'Ti ', 'Su ', 'Bang ', 'Chi ', 'Qian ', 'Shi ', 'Jiang ', 'Yuan ', 'Xie ', 'Xue ', 'Tao ', + 'Yao ', 'Yao ', NULL, 'Yu ', 'Biao ', 'Cong ', 'Qing ', 'Li ', 'Mo ', 'Mo ', 'Shang ', 'Zhe ', 'Miu ', 'Jian ', 'Ze ', 'Jie ', + 'Lian ', 'Lou ', 'Can ', 'Ou ', 'Guan ', 'Xi ', 'Zhuo ', 'Ao ', 'Ao ', 'Jin ', 'Zhe ', 'Yi ', 'Hu ', 'Jiang ', 'Man ', 'Chao ', + 'Han ', 'Hua ', 'Chan ', 'Xu ', 'Zeng ', 'Se ', 'Xi ', 'She ', 'Dui ', 'Zheng ', 'Nao ', 'Lan ', 'E ', 'Ying ', 'Jue ', 'Ji ', + 'Zun ', 'Jiao ', 'Bo ', 'Hui ', 'Zhuan ', 'Mu ', 'Zen ', 'Zha ', 'Shi ', 'Qiao ', 'Tan ', 'Zen ', 'Pu ', 'Sheng ', 'Xuan ', 'Zao ', + 'Tan ', 'Dang ', 'Sui ', 'Qian ', 'Ji ', 'Jiao ', 'Jing ', 'Lian ', 'Nou ', 'Yi ', 'Ai ', 'Zhan ', 'Pi ', 'Hui ', 'Hua ', 'Yi ', + 'Yi ', 'Shan ', 'Rang ', 'Nou ', 'Qian ', 'Zhui ', 'Ta ', 'Hu ', 'Zhou ', 'Hao ', 'Ye ', 'Ying ', 'Jian ', 'Yu ', 'Jian ', 'Hui ', + 'Du ', 'Zhe ', 'Xuan ', 'Zan ', 'Lei ', 'Shen ', 'Wei ', 'Chan ', 'Li ', 'Yi ', 'Bian ', 'Zhe ', 'Yan ', 'E ', 'Chou ', 'Wei ', + 'Chou ', 'Yao ', 'Chan ', 'Rang ', 'Yin ', 'Lan ', 'Chen ', 'Huo ', 'Zhe ', 'Huan ', 'Zan ', 'Yi ', 'Dang ', 'Zhan ', 'Yan ', 'Du ', + 'Yan ', 'Ji ', 'Ding ', 'Fu ', 'Ren ', 'Ji ', 'Jie ', 'Hong ', 'Tao ', 'Rang ', 'Shan ', 'Qi ', 'Tuo ', 'Xun ', 'Yi ', 'Xun ', + 'Ji ', 'Ren ', 'Jiang ', 'Hui ', 'Ou ', 'Ju ', 'Ya ', 'Ne ', 'Xu ', 'E ', 'Lun ', 'Xiong ', 'Song ', 'Feng ', 'She ', 'Fang ', + 'Jue ', 'Zheng ', 'Gu ', 'He ', 'Ping ', 'Zu ', 'Shi ', 'Xiong ', 'Zha ', 'Su ', 'Zhen ', 'Di ', 'Zou ', 'Ci ', 'Qu ', 'Zhao ', + 'Bi ', 'Yi ', 'Yi ', 'Kuang ', 'Lei ', 'Shi ', 'Gua ', 'Shi ', 'Jie ', 'Hui ', 'Cheng ', 'Zhu ', 'Shen ', 'Hua ', 'Dan ', 'Gou ', + 'Quan ', 'Gui ', 'Xun ', 'Yi ', 'Zheng ', 'Gai ', 'Xiang ', 'Cha ', 'Hun ', 'Xu ', 'Zhou ', 'Jie ', 'Wu ', 'Yu ', 'Qiao ', 'Wu ', + 'Gao ', 'You ', 'Hui ', 'Kuang ', 'Shuo ', 'Song ', 'Ai ', 'Qing ', 'Zhu ', 'Zou ', 'Nuo ', 'Du ', 'Zhuo ', 'Fei ', 'Ke ', 'Wei '), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/x8c.php b/NEUE DATEIEN/includes/classes/transliteration/x8c.php new file mode 100644 index 0000000..b8f11ef --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/x8c.php @@ -0,0 +1,21 @@ + array('Yu ', 'Shui ', 'Shen ', 'Diao ', 'Chan ', 'Liang ', 'Zhun ', 'Sui ', 'Tan ', 'Shen ', 'Yi ', 'Mou ', 'Chen ', 'Die ', 'Huang ', 'Jian ', + 'Xie ', 'Nue ', 'Ye ', 'Wei ', 'E ', 'Yu ', 'Xuan ', 'Chan ', 'Zi ', 'An ', 'Yan ', 'Di ', 'Mi ', 'Pian ', 'Xu ', 'Mo ', + 'Dang ', 'Su ', 'Xie ', 'Yao ', 'Bang ', 'Shi ', 'Qian ', 'Mi ', 'Jin ', 'Man ', 'Zhe ', 'Jian ', 'Miu ', 'Tan ', 'Zen ', 'Qiao ', + 'Lan ', 'Pu ', 'Jue ', 'Yan ', 'Qian ', 'Zhan ', 'Chen ', 'Gu ', 'Qian ', 'Hong ', 'Xia ', 'Jue ', 'Hong ', 'Han ', 'Hong ', 'Xi ', + 'Xi ', 'Huo ', 'Liao ', 'Han ', 'Du ', 'Long ', 'Dou ', 'Jiang ', 'Qi ', 'Shi ', 'Li ', 'Deng ', 'Wan ', 'Bi ', 'Shu ', 'Xian ', + 'Feng ', 'Zhi ', 'Zhi ', 'Yan ', 'Yan ', 'Shi ', 'Chu ', 'Hui ', 'Tun ', 'Yi ', 'Tun ', 'Yi ', 'Jian ', 'Ba ', 'Hou ', 'E ', + 'Cu ', 'Xiang ', 'Huan ', 'Jian ', 'Ken ', 'Gai ', 'Qu ', 'Fu ', 'Xi ', 'Bin ', 'Hao ', 'Yu ', 'Zhu ', 'Jia ', NULL, 'Xi ', + 'Bo ', 'Wen ', 'Huan ', 'Bin ', 'Di ', 'Zong ', 'Fen ', 'Yi ', 'Zhi ', 'Bao ', 'Chai ', 'Han ', 'Pi ', 'Na ', 'Pi ', 'Gou ', + 'Na ', 'You ', 'Diao ', 'Mo ', 'Si ', 'Xiu ', 'Huan ', 'Kun ', 'He ', 'He ', 'Mo ', 'Han ', 'Mao ', 'Li ', 'Ni ', 'Bi ', + 'Yu ', 'Jia ', 'Tuan ', 'Mao ', 'Pi ', 'Xi ', 'E ', 'Ju ', 'Mo ', 'Chu ', 'Tan ', 'Huan ', 'Jue ', 'Bei ', 'Zhen ', 'Yuan ', + 'Fu ', 'Cai ', 'Gong ', 'Te ', 'Yi ', 'Hang ', 'Wan ', 'Pin ', 'Huo ', 'Fan ', 'Tan ', 'Guan ', 'Ze ', 'Zhi ', 'Er ', 'Zhu ', + 'Shi ', 'Bi ', 'Zi ', 'Er ', 'Gui ', 'Pian ', 'Bian ', 'Mai ', 'Dai ', 'Sheng ', 'Kuang ', 'Fei ', 'Tie ', 'Yi ', 'Chi ', 'Mao ', + 'He ', 'Bi ', 'Lu ', 'Ren ', 'Hui ', 'Gai ', 'Pian ', 'Zi ', 'Jia ', 'Xu ', 'Zei ', 'Jiao ', 'Gai ', 'Zang ', 'Jian ', 'Ying ', + 'Xun ', 'Zhen ', 'She ', 'Bin ', 'Bin ', 'Qiu ', 'She ', 'Chuan ', 'Zang ', 'Zhou ', 'Lai ', 'Zan ', 'Si ', 'Chen ', 'Shang ', 'Tian ', + 'Pei ', 'Geng ', 'Xian ', 'Mai ', 'Jian ', 'Sui ', 'Fu ', 'Tan ', 'Cong ', 'Cong ', 'Zhi ', 'Ji ', 'Zhang ', 'Du ', 'Jin ', 'Xiong ', + 'Shun ', 'Yun ', 'Bao ', 'Zai ', 'Lai ', 'Feng ', 'Cang ', 'Ji ', 'Sheng ', 'Ai ', 'Zhuan ', 'Fu ', 'Gou ', 'Sai ', 'Ze ', 'Liao '), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/x8d.php b/NEUE DATEIEN/includes/classes/transliteration/x8d.php new file mode 100644 index 0000000..f9185c3 --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/x8d.php @@ -0,0 +1,21 @@ + array('Wei ', 'Bai ', 'Chen ', 'Zhuan ', 'Zhi ', 'Zhui ', 'Biao ', 'Yun ', 'Zeng ', 'Tan ', 'Zan ', 'Yan ', NULL, 'Shan ', 'Wan ', 'Ying ', + 'Jin ', 'Gan ', 'Xian ', 'Zang ', 'Bi ', 'Du ', 'Shu ', 'Yan ', NULL, 'Xuan ', 'Long ', 'Gan ', 'Zang ', 'Bei ', 'Zhen ', 'Fu ', + 'Yuan ', 'Gong ', 'Cai ', 'Ze ', 'Xian ', 'Bai ', 'Zhang ', 'Huo ', 'Zhi ', 'Fan ', 'Tan ', 'Pin ', 'Bian ', 'Gou ', 'Zhu ', 'Guan ', + 'Er ', 'Jian ', 'Bi ', 'Shi ', 'Tie ', 'Gui ', 'Kuang ', 'Dai ', 'Mao ', 'Fei ', 'He ', 'Yi ', 'Zei ', 'Zhi ', 'Jia ', 'Hui ', + 'Zi ', 'Ren ', 'Lu ', 'Zang ', 'Zi ', 'Gai ', 'Jin ', 'Qiu ', 'Zhen ', 'Lai ', 'She ', 'Fu ', 'Du ', 'Ji ', 'Shu ', 'Shang ', + 'Si ', 'Bi ', 'Zhou ', 'Geng ', 'Pei ', 'Tan ', 'Lai ', 'Feng ', 'Zhui ', 'Fu ', 'Zhuan ', 'Sai ', 'Ze ', 'Yan ', 'Zan ', 'Yun ', + 'Zeng ', 'Shan ', 'Ying ', 'Gan ', 'Chi ', 'Xi ', 'She ', 'Nan ', 'Xiong ', 'Xi ', 'Cheng ', 'He ', 'Cheng ', 'Zhe ', 'Xia ', 'Tang ', + 'Zou ', 'Zou ', 'Li ', 'Jiu ', 'Fu ', 'Zhao ', 'Gan ', 'Qi ', 'Shan ', 'Qiong ', 'Qin ', 'Xian ', 'Ci ', 'Jue ', 'Qin ', 'Chi ', + 'Ci ', 'Chen ', 'Chen ', 'Die ', 'Ju ', 'Chao ', 'Di ', 'Se ', 'Zhan ', 'Zhu ', 'Yue ', 'Qu ', 'Jie ', 'Chi ', 'Chu ', 'Gua ', + 'Xue ', 'Ci ', 'Tiao ', 'Duo ', 'Lie ', 'Gan ', 'Suo ', 'Cu ', 'Xi ', 'Zhao ', 'Su ', 'Yin ', 'Ju ', 'Jian ', 'Que ', 'Tang ', + 'Chuo ', 'Cui ', 'Lu ', 'Qu ', 'Dang ', 'Qiu ', 'Zi ', 'Ti ', 'Qu ', 'Chi ', 'Huang ', 'Qiao ', 'Qiao ', 'Yao ', 'Zao ', 'Ti ', + NULL, 'Zan ', 'Zan ', 'Zu ', 'Pa ', 'Bao ', 'Ku ', 'Ke ', 'Dun ', 'Jue ', 'Fu ', 'Chen ', 'Jian ', 'Fang ', 'Zhi ', 'Sa ', + 'Yue ', 'Pa ', 'Qi ', 'Yue ', 'Qiang ', 'Tuo ', 'Tai ', 'Yi ', 'Nian ', 'Ling ', 'Mei ', 'Ba ', 'Die ', 'Ku ', 'Tuo ', 'Jia ', + 'Ci ', 'Pao ', 'Qia ', 'Zhu ', 'Ju ', 'Die ', 'Zhi ', 'Fu ', 'Pan ', 'Ju ', 'Shan ', 'Bo ', 'Ni ', 'Ju ', 'Li ', 'Gen ', + 'Yi ', 'Ji ', 'Dai ', 'Xian ', 'Jiao ', 'Duo ', 'Zhu ', 'Zhuan ', 'Kua ', 'Zhuai ', 'Gui ', 'Qiong ', 'Kui ', 'Xiang ', 'Chi ', 'Lu ', + 'Beng ', 'Zhi ', 'Jia ', 'Tiao ', 'Cai ', 'Jian ', 'Ta ', 'Qiao ', 'Bi ', 'Xian ', 'Duo ', 'Ji ', 'Ju ', 'Ji ', 'Shu ', 'Tu '), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/x8e.php b/NEUE DATEIEN/includes/classes/transliteration/x8e.php new file mode 100644 index 0000000..52f180e --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/x8e.php @@ -0,0 +1,21 @@ + array('Chu ', 'Jing ', 'Nie ', 'Xiao ', 'Bo ', 'Chi ', 'Qun ', 'Mou ', 'Shu ', 'Lang ', 'Yong ', 'Jiao ', 'Chou ', 'Qiao ', NULL, 'Ta ', + 'Jian ', 'Qi ', 'Wo ', 'Wei ', 'Zhuo ', 'Jie ', 'Ji ', 'Nie ', 'Ju ', 'Ju ', 'Lun ', 'Lu ', 'Leng ', 'Huai ', 'Ju ', 'Chi ', + 'Wan ', 'Quan ', 'Ti ', 'Bo ', 'Zu ', 'Qie ', 'Ji ', 'Cu ', 'Zong ', 'Cai ', 'Zong ', 'Peng ', 'Zhi ', 'Zheng ', 'Dian ', 'Zhi ', + 'Yu ', 'Duo ', 'Dun ', 'Chun ', 'Yong ', 'Zhong ', 'Di ', 'Zhe ', 'Chen ', 'Chuai ', 'Jian ', 'Gua ', 'Tang ', 'Ju ', 'Fu ', 'Zu ', + 'Die ', 'Pian ', 'Rou ', 'Nuo ', 'Ti ', 'Cha ', 'Tui ', 'Jian ', 'Dao ', 'Cuo ', 'Xi ', 'Ta ', 'Qiang ', 'Zhan ', 'Dian ', 'Ti ', + 'Ji ', 'Nie ', 'Man ', 'Liu ', 'Zhan ', 'Bi ', 'Chong ', 'Lu ', 'Liao ', 'Cu ', 'Tang ', 'Dai ', 'Suo ', 'Xi ', 'Kui ', 'Ji ', + 'Zhi ', 'Qiang ', 'Di ', 'Man ', 'Zong ', 'Lian ', 'Beng ', 'Zao ', 'Nian ', 'Bie ', 'Tui ', 'Ju ', 'Deng ', 'Ceng ', 'Xian ', 'Fan ', + 'Chu ', 'Zhong ', 'Dun ', 'Bo ', 'Cu ', 'Zu ', 'Jue ', 'Jue ', 'Lin ', 'Ta ', 'Qiao ', 'Qiao ', 'Pu ', 'Liao ', 'Dun ', 'Cuan ', + 'Kuang ', 'Zao ', 'Ta ', 'Bi ', 'Bi ', 'Zhu ', 'Ju ', 'Chu ', 'Qiao ', 'Dun ', 'Chou ', 'Ji ', 'Wu ', 'Yue ', 'Nian ', 'Lin ', + 'Lie ', 'Zhi ', 'Li ', 'Zhi ', 'Chan ', 'Chu ', 'Duan ', 'Wei ', 'Long ', 'Lin ', 'Xian ', 'Wei ', 'Zuan ', 'Lan ', 'Xie ', 'Rang ', + 'Xie ', 'Nie ', 'Ta ', 'Qu ', 'Jie ', 'Cuan ', 'Zuan ', 'Xi ', 'Kui ', 'Jue ', 'Lin ', 'Shen ', 'Gong ', 'Dan ', 'Segare ', 'Qu ', + 'Ti ', 'Duo ', 'Duo ', 'Gong ', 'Lang ', 'Nerau ', 'Luo ', 'Ai ', 'Ji ', 'Ju ', 'Tang ', 'Utsuke ', NULL, 'Yan ', 'Shitsuke ', 'Kang ', + 'Qu ', 'Lou ', 'Lao ', 'Tuo ', 'Zhi ', 'Yagate ', 'Ti ', 'Dao ', 'Yagate ', 'Yu ', 'Che ', 'Ya ', 'Gui ', 'Jun ', 'Wei ', 'Yue ', + 'Xin ', 'Di ', 'Xuan ', 'Fan ', 'Ren ', 'Shan ', 'Qiang ', 'Shu ', 'Tun ', 'Chen ', 'Dai ', 'E ', 'Na ', 'Qi ', 'Mao ', 'Ruan ', + 'Ren ', 'Fan ', 'Zhuan ', 'Hong ', 'Hu ', 'Qu ', 'Huang ', 'Di ', 'Ling ', 'Dai ', 'Ao ', 'Zhen ', 'Fan ', 'Kuang ', 'Ang ', 'Peng ', + 'Bei ', 'Gu ', 'Ku ', 'Pao ', 'Zhu ', 'Rong ', 'E ', 'Ba ', 'Zhou ', 'Zhi ', 'Yao ', 'Ke ', 'Yi ', 'Qing ', 'Shi ', 'Ping '), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/x8f.php b/NEUE DATEIEN/includes/classes/transliteration/x8f.php new file mode 100644 index 0000000..13235e0 --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/x8f.php @@ -0,0 +1,21 @@ + array('Er ', 'Qiong ', 'Ju ', 'Jiao ', 'Guang ', 'Lu ', 'Kai ', 'Quan ', 'Zhou ', 'Zai ', 'Zhi ', 'She ', 'Liang ', 'Yu ', 'Shao ', 'You ', + 'Huan ', 'Yun ', 'Zhe ', 'Wan ', 'Fu ', 'Qing ', 'Zhou ', 'Ni ', 'Ling ', 'Zhe ', 'Zhan ', 'Liang ', 'Zi ', 'Hui ', 'Wang ', 'Chuo ', + 'Guo ', 'Kan ', 'Yi ', 'Peng ', 'Qian ', 'Gun ', 'Nian ', 'Pian ', 'Guan ', 'Bei ', 'Lun ', 'Pai ', 'Liang ', 'Ruan ', 'Rou ', 'Ji ', + 'Yang ', 'Xian ', 'Chuan ', 'Cou ', 'Qun ', 'Ge ', 'You ', 'Hong ', 'Shu ', 'Fu ', 'Zi ', 'Fu ', 'Wen ', 'Ben ', 'Zhan ', 'Yu ', + 'Wen ', 'Tao ', 'Gu ', 'Zhen ', 'Xia ', 'Yuan ', 'Lu ', 'Jiu ', 'Chao ', 'Zhuan ', 'Wei ', 'Hun ', 'Sori ', 'Che ', 'Jiao ', 'Zhan ', + 'Pu ', 'Lao ', 'Fen ', 'Fan ', 'Lin ', 'Ge ', 'Se ', 'Kan ', 'Huan ', 'Yi ', 'Ji ', 'Dui ', 'Er ', 'Yu ', 'Xian ', 'Hong ', + 'Lei ', 'Pei ', 'Li ', 'Li ', 'Lu ', 'Lin ', 'Che ', 'Ya ', 'Gui ', 'Xuan ', 'Di ', 'Ren ', 'Zhuan ', 'E ', 'Lun ', 'Ruan ', + 'Hong ', 'Ku ', 'Ke ', 'Lu ', 'Zhou ', 'Zhi ', 'Yi ', 'Hu ', 'Zhen ', 'Li ', 'Yao ', 'Qing ', 'Shi ', 'Zai ', 'Zhi ', 'Jiao ', + 'Zhou ', 'Quan ', 'Lu ', 'Jiao ', 'Zhe ', 'Fu ', 'Liang ', 'Nian ', 'Bei ', 'Hui ', 'Gun ', 'Wang ', 'Liang ', 'Chuo ', 'Zi ', 'Cou ', + 'Fu ', 'Ji ', 'Wen ', 'Shu ', 'Pei ', 'Yuan ', 'Xia ', 'Zhan ', 'Lu ', 'Che ', 'Lin ', 'Xin ', 'Gu ', 'Ci ', 'Ci ', 'Pi ', + 'Zui ', 'Bian ', 'La ', 'La ', 'Ci ', 'Xue ', 'Ban ', 'Bian ', 'Bian ', 'Bian ', NULL, 'Bian ', 'Ban ', 'Ci ', 'Bian ', 'Bian ', + 'Chen ', 'Ru ', 'Nong ', 'Nong ', 'Zhen ', 'Chuo ', 'Chuo ', 'Suberu ', 'Reng ', 'Bian ', 'Bian ', 'Sip ', 'Ip ', 'Liao ', 'Da ', 'Chan ', + 'Gan ', 'Qian ', 'Yu ', 'Yu ', 'Qi ', 'Xun ', 'Yi ', 'Guo ', 'Mai ', 'Qi ', 'Za ', 'Wang ', 'Jia ', 'Zhun ', 'Ying ', 'Ti ', + 'Yun ', 'Jin ', 'Hang ', 'Ya ', 'Fan ', 'Wu ', 'Da ', 'E ', 'Huan ', 'Zhe ', 'Totemo ', 'Jin ', 'Yuan ', 'Wei ', 'Lian ', 'Chi ', + 'Che ', 'Ni ', 'Tiao ', 'Zhi ', 'Yi ', 'Jiong ', 'Jia ', 'Chen ', 'Dai ', 'Er ', 'Di ', 'Po ', 'Wang ', 'Die ', 'Ze ', 'Tao ', + 'Shu ', 'Tuo ', 'Kep ', 'Jing ', 'Hui ', 'Tong ', 'You ', 'Mi ', 'Beng ', 'Ji ', 'Nai ', 'Yi ', 'Jie ', 'Zhui ', 'Lie ', 'Xun '), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/x90.php b/NEUE DATEIEN/includes/classes/transliteration/x90.php new file mode 100644 index 0000000..e11a08b --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/x90.php @@ -0,0 +1,21 @@ + array('Tui ', 'Song ', 'Gua ', 'Tao ', 'Pang ', 'Hou ', 'Ni ', 'Dun ', 'Jiong ', 'Xuan ', 'Xun ', 'Bu ', 'You ', 'Xiao ', 'Qiu ', 'Tou ', + 'Zhu ', 'Qiu ', 'Di ', 'Di ', 'Tu ', 'Jing ', 'Ti ', 'Dou ', 'Yi ', 'Zhe ', 'Tong ', 'Guang ', 'Wu ', 'Shi ', 'Cheng ', 'Su ', + 'Zao ', 'Qun ', 'Feng ', 'Lian ', 'Suo ', 'Hui ', 'Li ', 'Sako ', 'Lai ', 'Ben ', 'Cuo ', 'Jue ', 'Beng ', 'Huan ', 'Dai ', 'Lu ', + 'You ', 'Zhou ', 'Jin ', 'Yu ', 'Chuo ', 'Kui ', 'Wei ', 'Ti ', 'Yi ', 'Da ', 'Yuan ', 'Luo ', 'Bi ', 'Nuo ', 'Yu ', 'Dang ', + 'Sui ', 'Dun ', 'Sui ', 'Yan ', 'Chuan ', 'Chi ', 'Ti ', 'Yu ', 'Shi ', 'Zhen ', 'You ', 'Yun ', 'E ', 'Bian ', 'Guo ', 'E ', + 'Xia ', 'Huang ', 'Qiu ', 'Dao ', 'Da ', 'Wei ', 'Appare ', 'Yi ', 'Gou ', 'Yao ', 'Chu ', 'Liu ', 'Xun ', 'Ta ', 'Di ', 'Chi ', + 'Yuan ', 'Su ', 'Ta ', 'Qian ', NULL, 'Yao ', 'Guan ', 'Zhang ', 'Ao ', 'Shi ', 'Ce ', 'Chi ', 'Su ', 'Zao ', 'Zhe ', 'Dun ', + 'Di ', 'Lou ', 'Chi ', 'Cuo ', 'Lin ', 'Zun ', 'Rao ', 'Qian ', 'Xuan ', 'Yu ', 'Yi ', 'Wu ', 'Liao ', 'Ju ', 'Shi ', 'Bi ', + 'Yao ', 'Mai ', 'Xie ', 'Sui ', 'Huan ', 'Zhan ', 'Teng ', 'Er ', 'Miao ', 'Bian ', 'Bian ', 'La ', 'Li ', 'Yuan ', 'Yao ', 'Luo ', + 'Li ', 'Yi ', 'Ting ', 'Deng ', 'Qi ', 'Yong ', 'Shan ', 'Han ', 'Yu ', 'Mang ', 'Ru ', 'Qiong ', NULL, 'Kuang ', 'Fu ', 'Kang ', + 'Bin ', 'Fang ', 'Xing ', 'Na ', 'Xin ', 'Shen ', 'Bang ', 'Yuan ', 'Cun ', 'Huo ', 'Xie ', 'Bang ', 'Wu ', 'Ju ', 'You ', 'Han ', + 'Tai ', 'Qiu ', 'Bi ', 'Pei ', 'Bing ', 'Shao ', 'Bei ', 'Wa ', 'Di ', 'Zou ', 'Ye ', 'Lin ', 'Kuang ', 'Gui ', 'Zhu ', 'Shi ', + 'Ku ', 'Yu ', 'Gai ', 'Ge ', 'Xi ', 'Zhi ', 'Ji ', 'Xun ', 'Hou ', 'Xing ', 'Jiao ', 'Xi ', 'Gui ', 'Nuo ', 'Lang ', 'Jia ', + 'Kuai ', 'Zheng ', 'Otoko ', 'Yun ', 'Yan ', 'Cheng ', 'Dou ', 'Chi ', 'Lu ', 'Fu ', 'Wu ', 'Fu ', 'Gao ', 'Hao ', 'Lang ', 'Jia ', + 'Geng ', 'Jun ', 'Ying ', 'Bo ', 'Xi ', 'Bei ', 'Li ', 'Yun ', 'Bu ', 'Xiao ', 'Qi ', 'Pi ', 'Qing ', 'Guo ', 'Zhou ', 'Tan ', + 'Zou ', 'Ping ', 'Lai ', 'Ni ', 'Chen ', 'You ', 'Bu ', 'Xiang ', 'Dan ', 'Ju ', 'Yong ', 'Qiao ', 'Yi ', 'Du ', 'Yan ', 'Mei '), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/x91.php b/NEUE DATEIEN/includes/classes/transliteration/x91.php new file mode 100644 index 0000000..30ebf2e --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/x91.php @@ -0,0 +1,21 @@ + array('Ruo ', 'Bei ', 'E ', 'Yu ', 'Juan ', 'Yu ', 'Yun ', 'Hou ', 'Kui ', 'Xiang ', 'Xiang ', 'Sou ', 'Tang ', 'Ming ', 'Xi ', 'Ru ', + 'Chu ', 'Zi ', 'Zou ', 'Ju ', 'Wu ', 'Xiang ', 'Yun ', 'Hao ', 'Yong ', 'Bi ', 'Mo ', 'Chao ', 'Fu ', 'Liao ', 'Yin ', 'Zhuan ', + 'Hu ', 'Qiao ', 'Yan ', 'Zhang ', 'Fan ', 'Qiao ', 'Xu ', 'Deng ', 'Bi ', 'Xin ', 'Bi ', 'Ceng ', 'Wei ', 'Zheng ', 'Mao ', 'Shan ', + 'Lin ', 'Po ', 'Dan ', 'Meng ', 'Ye ', 'Cao ', 'Kuai ', 'Feng ', 'Meng ', 'Zou ', 'Kuang ', 'Lian ', 'Zan ', 'Chan ', 'You ', 'Qi ', + 'Yan ', 'Chan ', 'Zan ', 'Ling ', 'Huan ', 'Xi ', 'Feng ', 'Zan ', 'Li ', 'You ', 'Ding ', 'Qiu ', 'Zhuo ', 'Pei ', 'Zhou ', 'Yi ', + 'Hang ', 'Yu ', 'Jiu ', 'Yan ', 'Zui ', 'Mao ', 'Dan ', 'Xu ', 'Tou ', 'Zhen ', 'Fen ', 'Sakenomoto ', NULL, 'Yun ', 'Tai ', 'Tian ', + 'Qia ', 'Tuo ', 'Zuo ', 'Han ', 'Gu ', 'Su ', 'Po ', 'Chou ', 'Zai ', 'Ming ', 'Luo ', 'Chuo ', 'Chou ', 'You ', 'Tong ', 'Zhi ', + 'Xian ', 'Jiang ', 'Cheng ', 'Yin ', 'Tu ', 'Xiao ', 'Mei ', 'Ku ', 'Suan ', 'Lei ', 'Pu ', 'Zui ', 'Hai ', 'Yan ', 'Xi ', 'Niang ', + 'Wei ', 'Lu ', 'Lan ', 'Yan ', 'Tao ', 'Pei ', 'Zhan ', 'Chun ', 'Tan ', 'Zui ', 'Chuo ', 'Cu ', 'Kun ', 'Ti ', 'Mian ', 'Du ', + 'Hu ', 'Xu ', 'Xing ', 'Tan ', 'Jiu ', 'Chun ', 'Yun ', 'Po ', 'Ke ', 'Sou ', 'Mi ', 'Quan ', 'Chou ', 'Cuo ', 'Yun ', 'Yong ', + 'Ang ', 'Zha ', 'Hai ', 'Tang ', 'Jiang ', 'Piao ', 'Shan ', 'Yu ', 'Li ', 'Zao ', 'Lao ', 'Yi ', 'Jiang ', 'Pu ', 'Jiao ', 'Xi ', + 'Tan ', 'Po ', 'Nong ', 'Yi ', 'Li ', 'Ju ', 'Jiao ', 'Yi ', 'Niang ', 'Ru ', 'Xun ', 'Chou ', 'Yan ', 'Ling ', 'Mi ', 'Mi ', + 'Niang ', 'Xin ', 'Jiao ', 'Xi ', 'Mi ', 'Yan ', 'Bian ', 'Cai ', 'Shi ', 'You ', 'Shi ', 'Shi ', 'Li ', 'Zhong ', 'Ye ', 'Liang ', + 'Li ', 'Jin ', 'Jin ', 'Qiu ', 'Yi ', 'Diao ', 'Dao ', 'Zhao ', 'Ding ', 'Po ', 'Qiu ', 'He ', 'Fu ', 'Zhen ', 'Zhi ', 'Ba ', + 'Luan ', 'Fu ', 'Nai ', 'Diao ', 'Shan ', 'Qiao ', 'Kou ', 'Chuan ', 'Zi ', 'Fan ', 'Yu ', 'Hua ', 'Han ', 'Gong ', 'Qi ', 'Mang ', + 'Ri ', 'Di ', 'Si ', 'Xi ', 'Yi ', 'Chai ', 'Shi ', 'Tu ', 'Xi ', 'Nu ', 'Qian ', 'Ishiyumi ', 'Jian ', 'Pi ', 'Ye ', 'Yin '), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/x92.php b/NEUE DATEIEN/includes/classes/transliteration/x92.php new file mode 100644 index 0000000..b2a9b53 --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/x92.php @@ -0,0 +1,21 @@ + array('Ba ', 'Fang ', 'Chen ', 'Xing ', 'Tou ', 'Yue ', 'Yan ', 'Fu ', 'Pi ', 'Na ', 'Xin ', 'E ', 'Jue ', 'Dun ', 'Gou ', 'Yin ', + 'Qian ', 'Ban ', 'Ji ', 'Ren ', 'Chao ', 'Niu ', 'Fen ', 'Yun ', 'Ji ', 'Qin ', 'Pi ', 'Guo ', 'Hong ', 'Yin ', 'Jun ', 'Shi ', + 'Yi ', 'Zhong ', 'Nie ', 'Gai ', 'Ri ', 'Huo ', 'Tai ', 'Kang ', 'Habaki ', 'Irori ', 'Ngaak ', NULL, 'Duo ', 'Zi ', 'Ni ', 'Tu ', + 'Shi ', 'Min ', 'Gu ', 'E ', 'Ling ', 'Bing ', 'Yi ', 'Gu ', 'Ba ', 'Pi ', 'Yu ', 'Si ', 'Zuo ', 'Bu ', 'You ', 'Dian ', + 'Jia ', 'Zhen ', 'Shi ', 'Shi ', 'Tie ', 'Ju ', 'Zhan ', 'Shi ', 'She ', 'Xuan ', 'Zhao ', 'Bao ', 'He ', 'Bi ', 'Sheng ', 'Chu ', + 'Shi ', 'Bo ', 'Zhu ', 'Chi ', 'Za ', 'Po ', 'Tong ', 'Qian ', 'Fu ', 'Zhai ', 'Liu ', 'Qian ', 'Fu ', 'Li ', 'Yue ', 'Pi ', + 'Yang ', 'Ban ', 'Bo ', 'Jie ', 'Gou ', 'Shu ', 'Zheng ', 'Mu ', 'Ni ', 'Nie ', 'Di ', 'Jia ', 'Mu ', 'Dan ', 'Shen ', 'Yi ', + 'Si ', 'Kuang ', 'Ka ', 'Bei ', 'Jian ', 'Tong ', 'Xing ', 'Hong ', 'Jiao ', 'Chi ', 'Er ', 'Ge ', 'Bing ', 'Shi ', 'Mou ', 'Jia ', + 'Yin ', 'Jun ', 'Zhou ', 'Chong ', 'Shang ', 'Tong ', 'Mo ', 'Lei ', 'Ji ', 'Yu ', 'Xu ', 'Ren ', 'Zun ', 'Zhi ', 'Qiong ', 'Shan ', + 'Chi ', 'Xian ', 'Xing ', 'Quan ', 'Pi ', 'Tie ', 'Zhu ', 'Hou ', 'Ming ', 'Kua ', 'Yao ', 'Xian ', 'Xian ', 'Xiu ', 'Jun ', 'Cha ', + 'Lao ', 'Ji ', 'Pi ', 'Ru ', 'Mi ', 'Yi ', 'Yin ', 'Guang ', 'An ', 'Diou ', 'You ', 'Se ', 'Kao ', 'Qian ', 'Luan ', 'Kasugai ', + 'Ai ', 'Diao ', 'Han ', 'Rui ', 'Shi ', 'Keng ', 'Qiu ', 'Xiao ', 'Zhe ', 'Xiu ', 'Zang ', 'Ti ', 'Cuo ', 'Gua ', 'Gong ', 'Zhong ', + 'Dou ', 'Lu ', 'Mei ', 'Lang ', 'Wan ', 'Xin ', 'Yun ', 'Bei ', 'Wu ', 'Su ', 'Yu ', 'Chan ', 'Ting ', 'Bo ', 'Han ', 'Jia ', + 'Hong ', 'Cuan ', 'Feng ', 'Chan ', 'Wan ', 'Zhi ', 'Si ', 'Xuan ', 'Wu ', 'Wu ', 'Tiao ', 'Gong ', 'Zhuo ', 'Lue ', 'Xing ', 'Qian ', + 'Shen ', 'Han ', 'Lue ', 'Xie ', 'Chu ', 'Zheng ', 'Ju ', 'Xian ', 'Tie ', 'Mang ', 'Pu ', 'Li ', 'Pan ', 'Rui ', 'Cheng ', 'Gao ', + 'Li ', 'Te ', 'Pyeng ', 'Zhu ', NULL, 'Tu ', 'Liu ', 'Zui ', 'Ju ', 'Chang ', 'Yuan ', 'Jian ', 'Gang ', 'Diao ', 'Tao ', 'Chang '), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/x93.php b/NEUE DATEIEN/includes/classes/transliteration/x93.php new file mode 100644 index 0000000..329b35b --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/x93.php @@ -0,0 +1,21 @@ + array('Lun ', 'Kua ', 'Ling ', 'Bei ', 'Lu ', 'Li ', 'Qiang ', 'Pou ', 'Juan ', 'Min ', 'Zui ', 'Peng ', 'An ', 'Pi ', 'Xian ', 'Ya ', + 'Zhui ', 'Lei ', 'A ', 'Kong ', 'Ta ', 'Kun ', 'Du ', 'Wei ', 'Chui ', 'Zi ', 'Zheng ', 'Ben ', 'Nie ', 'Cong ', 'Qun ', 'Tan ', + 'Ding ', 'Qi ', 'Qian ', 'Zhuo ', 'Qi ', 'Yu ', 'Jin ', 'Guan ', 'Mao ', 'Chang ', 'Tian ', 'Xi ', 'Lian ', 'Tao ', 'Gu ', 'Cuo ', + 'Shu ', 'Zhen ', 'Lu ', 'Meng ', 'Lu ', 'Hua ', 'Biao ', 'Ga ', 'Lai ', 'Ken ', 'Kazari ', 'Bu ', 'Nai ', 'Wan ', 'Zan ', NULL, + 'De ', 'Xian ', NULL, 'Huo ', 'Liang ', NULL, 'Men ', 'Kai ', 'Ying ', 'Di ', 'Lian ', 'Guo ', 'Xian ', 'Du ', 'Tu ', 'Wei ', + 'Cong ', 'Fu ', 'Rou ', 'Ji ', 'E ', 'Rou ', 'Chen ', 'Ti ', 'Zha ', 'Hong ', 'Yang ', 'Duan ', 'Xia ', 'Yu ', 'Keng ', 'Xing ', + 'Huang ', 'Wei ', 'Fu ', 'Zhao ', 'Cha ', 'Qie ', 'She ', 'Hong ', 'Kui ', 'Tian ', 'Mou ', 'Qiao ', 'Qiao ', 'Hou ', 'Tou ', 'Cong ', + 'Huan ', 'Ye ', 'Min ', 'Jian ', 'Duan ', 'Jian ', 'Song ', 'Kui ', 'Hu ', 'Xuan ', 'Duo ', 'Jie ', 'Zhen ', 'Bian ', 'Zhong ', 'Zi ', + 'Xiu ', 'Ye ', 'Mei ', 'Pai ', 'Ai ', 'Jie ', NULL, 'Mei ', 'Chuo ', 'Ta ', 'Bang ', 'Xia ', 'Lian ', 'Suo ', 'Xi ', 'Liu ', + 'Zu ', 'Ye ', 'Nou ', 'Weng ', 'Rong ', 'Tang ', 'Suo ', 'Qiang ', 'Ge ', 'Shuo ', 'Chui ', 'Bo ', 'Pan ', 'Sa ', 'Bi ', 'Sang ', + 'Gang ', 'Zi ', 'Wu ', 'Ying ', 'Huang ', 'Tiao ', 'Liu ', 'Kai ', 'Sun ', 'Sha ', 'Sou ', 'Wan ', 'Hao ', 'Zhen ', 'Zhen ', 'Luo ', + 'Yi ', 'Yuan ', 'Tang ', 'Nie ', 'Xi ', 'Jia ', 'Ge ', 'Ma ', 'Juan ', 'Kasugai ', 'Habaki ', 'Suo ', NULL, NULL, NULL, 'Na ', + 'Lu ', 'Suo ', 'Ou ', 'Zu ', 'Tuan ', 'Xiu ', 'Guan ', 'Xuan ', 'Lian ', 'Shou ', 'Ao ', 'Man ', 'Mo ', 'Luo ', 'Bi ', 'Wei ', + 'Liu ', 'Di ', 'Qiao ', 'Cong ', 'Yi ', 'Lu ', 'Ao ', 'Keng ', 'Qiang ', 'Cui ', 'Qi ', 'Chang ', 'Tang ', 'Man ', 'Yong ', 'Chan ', + 'Feng ', 'Jing ', 'Biao ', 'Shu ', 'Lou ', 'Xiu ', 'Cong ', 'Long ', 'Zan ', 'Jian ', 'Cao ', 'Li ', 'Xia ', 'Xi ', 'Kang ', NULL, + 'Beng ', NULL, NULL, 'Zheng ', 'Lu ', 'Hua ', 'Ji ', 'Pu ', 'Hui ', 'Qiang ', 'Po ', 'Lin ', 'Suo ', 'Xiu ', 'San ', 'Cheng '), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/x94.php b/NEUE DATEIEN/includes/classes/transliteration/x94.php new file mode 100644 index 0000000..724c1d4 --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/x94.php @@ -0,0 +1,21 @@ + array('Kui ', 'Si ', 'Liu ', 'Nao ', 'Heng ', 'Pie ', 'Sui ', 'Fan ', 'Qiao ', 'Quan ', 'Yang ', 'Tang ', 'Xiang ', 'Jue ', 'Jiao ', 'Zun ', + 'Liao ', 'Jie ', 'Lao ', 'Dui ', 'Tan ', 'Zan ', 'Ji ', 'Jian ', 'Zhong ', 'Deng ', 'Ya ', 'Ying ', 'Dui ', 'Jue ', 'Nou ', 'Ti ', + 'Pu ', 'Tie ', NULL, NULL, 'Ding ', 'Shan ', 'Kai ', 'Jian ', 'Fei ', 'Sui ', 'Lu ', 'Juan ', 'Hui ', 'Yu ', 'Lian ', 'Zhuo ', + 'Qiao ', 'Qian ', 'Zhuo ', 'Lei ', 'Bi ', 'Tie ', 'Huan ', 'Ye ', 'Duo ', 'Guo ', 'Dang ', 'Ju ', 'Fen ', 'Da ', 'Bei ', 'Yi ', + 'Ai ', 'Zong ', 'Xun ', 'Diao ', 'Zhu ', 'Heng ', 'Zhui ', 'Ji ', 'Nie ', 'Ta ', 'Huo ', 'Qing ', 'Bin ', 'Ying ', 'Kui ', 'Ning ', + 'Xu ', 'Jian ', 'Jian ', 'Yari ', 'Cha ', 'Zhi ', 'Mie ', 'Li ', 'Lei ', 'Ji ', 'Zuan ', 'Kuang ', 'Shang ', 'Peng ', 'La ', 'Du ', + 'Shuo ', 'Chuo ', 'Lu ', 'Biao ', 'Bao ', 'Lu ', NULL, NULL, 'Long ', 'E ', 'Lu ', 'Xin ', 'Jian ', 'Lan ', 'Bo ', 'Jian ', + 'Yao ', 'Chan ', 'Xiang ', 'Jian ', 'Xi ', 'Guan ', 'Cang ', 'Nie ', 'Lei ', 'Cuan ', 'Qu ', 'Pan ', 'Luo ', 'Zuan ', 'Luan ', 'Zao ', + 'Nie ', 'Jue ', 'Tang ', 'Shu ', 'Lan ', 'Jin ', 'Qiu ', 'Yi ', 'Zhen ', 'Ding ', 'Zhao ', 'Po ', 'Diao ', 'Tu ', 'Qian ', 'Chuan ', + 'Shan ', 'Ji ', 'Fan ', 'Diao ', 'Men ', 'Nu ', 'Xi ', 'Chai ', 'Xing ', 'Gai ', 'Bu ', 'Tai ', 'Ju ', 'Dun ', 'Chao ', 'Zhong ', + 'Na ', 'Bei ', 'Gang ', 'Ban ', 'Qian ', 'Yao ', 'Qin ', 'Jun ', 'Wu ', 'Gou ', 'Kang ', 'Fang ', 'Huo ', 'Tou ', 'Niu ', 'Ba ', + 'Yu ', 'Qian ', 'Zheng ', 'Qian ', 'Gu ', 'Bo ', 'E ', 'Po ', 'Bu ', 'Ba ', 'Yue ', 'Zuan ', 'Mu ', 'Dan ', 'Jia ', 'Dian ', + 'You ', 'Tie ', 'Bo ', 'Ling ', 'Shuo ', 'Qian ', 'Liu ', 'Bao ', 'Shi ', 'Xuan ', 'She ', 'Bi ', 'Ni ', 'Pi ', 'Duo ', 'Xing ', + 'Kao ', 'Lao ', 'Er ', 'Mang ', 'Ya ', 'You ', 'Cheng ', 'Jia ', 'Ye ', 'Nao ', 'Zhi ', 'Dang ', 'Tong ', 'Lu ', 'Diao ', 'Yin ', + 'Kai ', 'Zha ', 'Zhu ', 'Xian ', 'Ting ', 'Diu ', 'Xian ', 'Hua ', 'Quan ', 'Sha ', 'Jia ', 'Yao ', 'Ge ', 'Ming ', 'Zheng ', 'Se ', + 'Jiao ', 'Yi ', 'Chan ', 'Chong ', 'Tang ', 'An ', 'Yin ', 'Ru ', 'Zhu ', 'Lao ', 'Pu ', 'Wu ', 'Lai ', 'Te ', 'Lian ', 'Keng '), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/x95.php b/NEUE DATEIEN/includes/classes/transliteration/x95.php new file mode 100644 index 0000000..46496ce --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/x95.php @@ -0,0 +1,21 @@ + array('Xiao ', 'Suo ', 'Li ', 'Zheng ', 'Chu ', 'Guo ', 'Gao ', 'Tie ', 'Xiu ', 'Cuo ', 'Lue ', 'Feng ', 'Xin ', 'Liu ', 'Kai ', 'Jian ', + 'Rui ', 'Ti ', 'Lang ', 'Qian ', 'Ju ', 'A ', 'Qiang ', 'Duo ', 'Tian ', 'Cuo ', 'Mao ', 'Ben ', 'Qi ', 'De ', 'Kua ', 'Kun ', + 'Chang ', 'Xi ', 'Gu ', 'Luo ', 'Chui ', 'Zhui ', 'Jin ', 'Zhi ', 'Xian ', 'Juan ', 'Huo ', 'Pou ', 'Tan ', 'Ding ', 'Jian ', 'Ju ', + 'Meng ', 'Zi ', 'Qie ', 'Ying ', 'Kai ', 'Qiang ', 'Song ', 'E ', 'Cha ', 'Qiao ', 'Zhong ', 'Duan ', 'Sou ', 'Huang ', 'Huan ', 'Ai ', + 'Du ', 'Mei ', 'Lou ', 'Zi ', 'Fei ', 'Mei ', 'Mo ', 'Zhen ', 'Bo ', 'Ge ', 'Nie ', 'Tang ', 'Juan ', 'Nie ', 'Na ', 'Liu ', + 'Hao ', 'Bang ', 'Yi ', 'Jia ', 'Bin ', 'Rong ', 'Biao ', 'Tang ', 'Man ', 'Luo ', 'Beng ', 'Yong ', 'Jing ', 'Di ', 'Zu ', 'Xuan ', + 'Liu ', 'Tan ', 'Jue ', 'Liao ', 'Pu ', 'Lu ', 'Dui ', 'Lan ', 'Pu ', 'Cuan ', 'Qiang ', 'Deng ', 'Huo ', 'Lei ', 'Huan ', 'Zhuo ', + 'Lian ', 'Yi ', 'Cha ', 'Biao ', 'La ', 'Chan ', 'Xiang ', 'Chang ', 'Chang ', 'Jiu ', 'Ao ', 'Die ', 'Qu ', 'Liao ', 'Mi ', 'Chang ', + 'Men ', 'Ma ', 'Shuan ', 'Shan ', 'Huo ', 'Men ', 'Yan ', 'Bi ', 'Han ', 'Bi ', 'San ', 'Kai ', 'Kang ', 'Beng ', 'Hong ', 'Run ', + 'San ', 'Xian ', 'Xian ', 'Jian ', 'Min ', 'Xia ', 'Yuru ', 'Dou ', 'Zha ', 'Nao ', 'Jian ', 'Peng ', 'Xia ', 'Ling ', 'Bian ', 'Bi ', + 'Run ', 'He ', 'Guan ', 'Ge ', 'Ge ', 'Fa ', 'Chu ', 'Hong ', 'Gui ', 'Min ', 'Se ', 'Kun ', 'Lang ', 'Lu ', 'Ting ', 'Sha ', + 'Ju ', 'Yue ', 'Yue ', 'Chan ', 'Qu ', 'Lin ', 'Chang ', 'Shai ', 'Kun ', 'Yan ', 'Min ', 'Yan ', 'E ', 'Hun ', 'Yu ', 'Wen ', + 'Xiang ', 'Bao ', 'Xiang ', 'Qu ', 'Yao ', 'Wen ', 'Ban ', 'An ', 'Wei ', 'Yin ', 'Kuo ', 'Que ', 'Lan ', 'Du ', NULL, 'Phwung ', + 'Tian ', 'Nie ', 'Ta ', 'Kai ', 'He ', 'Que ', 'Chuang ', 'Guan ', 'Dou ', 'Qi ', 'Kui ', 'Tang ', 'Guan ', 'Piao ', 'Kan ', 'Xi ', + 'Hui ', 'Chan ', 'Pi ', 'Dang ', 'Huan ', 'Ta ', 'Wen ', NULL, 'Men ', 'Shuan ', 'Shan ', 'Yan ', 'Han ', 'Bi ', 'Wen ', 'Chuang ', + 'Run ', 'Wei ', 'Xian ', 'Hong ', 'Jian ', 'Min ', 'Kang ', 'Men ', 'Zha ', 'Nao ', 'Gui ', 'Wen ', 'Ta ', 'Min ', 'Lu ', 'Kai '), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/x96.php b/NEUE DATEIEN/includes/classes/transliteration/x96.php new file mode 100644 index 0000000..299a476 --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/x96.php @@ -0,0 +1,21 @@ + array('Fa ', 'Ge ', 'He ', 'Kun ', 'Jiu ', 'Yue ', 'Lang ', 'Du ', 'Yu ', 'Yan ', 'Chang ', 'Xi ', 'Wen ', 'Hun ', 'Yan ', 'E ', + 'Chan ', 'Lan ', 'Qu ', 'Hui ', 'Kuo ', 'Que ', 'Ge ', 'Tian ', 'Ta ', 'Que ', 'Kan ', 'Huan ', 'Fu ', 'Fu ', 'Le ', 'Dui ', + 'Xin ', 'Qian ', 'Wu ', 'Yi ', 'Tuo ', 'Yin ', 'Yang ', 'Dou ', 'E ', 'Sheng ', 'Ban ', 'Pei ', 'Keng ', 'Yun ', 'Ruan ', 'Zhi ', + 'Pi ', 'Jing ', 'Fang ', 'Yang ', 'Yin ', 'Zhen ', 'Jie ', 'Cheng ', 'E ', 'Qu ', 'Di ', 'Zu ', 'Zuo ', 'Dian ', 'Ling ', 'A ', + 'Tuo ', 'Tuo ', 'Po ', 'Bing ', 'Fu ', 'Ji ', 'Lu ', 'Long ', 'Chen ', 'Xing ', 'Duo ', 'Lou ', 'Mo ', 'Jiang ', 'Shu ', 'Duo ', + 'Xian ', 'Er ', 'Gui ', 'Yu ', 'Gai ', 'Shan ', 'Xun ', 'Qiao ', 'Xing ', 'Chun ', 'Fu ', 'Bi ', 'Xia ', 'Shan ', 'Sheng ', 'Zhi ', + 'Pu ', 'Dou ', 'Yuan ', 'Zhen ', 'Chu ', 'Xian ', 'Tou ', 'Nie ', 'Yun ', 'Xian ', 'Pei ', 'Pei ', 'Zou ', 'Yi ', 'Dui ', 'Lun ', + 'Yin ', 'Ju ', 'Chui ', 'Chen ', 'Pi ', 'Ling ', 'Tao ', 'Xian ', 'Lu ', 'Sheng ', 'Xian ', 'Yin ', 'Zhu ', 'Yang ', 'Reng ', 'Shan ', + 'Chong ', 'Yan ', 'Yin ', 'Yu ', 'Ti ', 'Yu ', 'Long ', 'Wei ', 'Wei ', 'Nie ', 'Dui ', 'Sui ', 'An ', 'Huang ', 'Jie ', 'Sui ', + 'Yin ', 'Gai ', 'Yan ', 'Hui ', 'Ge ', 'Yun ', 'Wu ', 'Wei ', 'Ai ', 'Xi ', 'Tang ', 'Ji ', 'Zhang ', 'Dao ', 'Ao ', 'Xi ', + 'Yin ', NULL, 'Rao ', 'Lin ', 'Tui ', 'Deng ', 'Pi ', 'Sui ', 'Sui ', 'Yu ', 'Xian ', 'Fen ', 'Ni ', 'Er ', 'Ji ', 'Dao ', + 'Xi ', 'Yin ', 'E ', 'Hui ', 'Long ', 'Xi ', 'Li ', 'Li ', 'Li ', 'Zhui ', 'He ', 'Zhi ', 'Zhun ', 'Jun ', 'Nan ', 'Yi ', + 'Que ', 'Yan ', 'Qian ', 'Ya ', 'Xiong ', 'Ya ', 'Ji ', 'Gu ', 'Huan ', 'Zhi ', 'Gou ', 'Jun ', 'Ci ', 'Yong ', 'Ju ', 'Chu ', + 'Hu ', 'Za ', 'Luo ', 'Yu ', 'Chou ', 'Diao ', 'Sui ', 'Han ', 'Huo ', 'Shuang ', 'Guan ', 'Chu ', 'Za ', 'Yong ', 'Ji ', 'Xi ', + 'Chou ', 'Liu ', 'Li ', 'Nan ', 'Xue ', 'Za ', 'Ji ', 'Ji ', 'Yu ', 'Yu ', 'Xue ', 'Na ', 'Fou ', 'Se ', 'Mu ', 'Wen ', + 'Fen ', 'Pang ', 'Yun ', 'Li ', 'Li ', 'Ang ', 'Ling ', 'Lei ', 'An ', 'Bao ', 'Meng ', 'Dian ', 'Dang ', 'Xing ', 'Wu ', 'Zhao '), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/x97.php b/NEUE DATEIEN/includes/classes/transliteration/x97.php new file mode 100644 index 0000000..5d9cf18 --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/x97.php @@ -0,0 +1,21 @@ + array('Xu ', 'Ji ', 'Mu ', 'Chen ', 'Xiao ', 'Zha ', 'Ting ', 'Zhen ', 'Pei ', 'Mei ', 'Ling ', 'Qi ', 'Chou ', 'Huo ', 'Sha ', 'Fei ', + 'Weng ', 'Zhan ', 'Yin ', 'Ni ', 'Chou ', 'Tun ', 'Lin ', NULL, 'Dong ', 'Ying ', 'Wu ', 'Ling ', 'Shuang ', 'Ling ', 'Xia ', 'Hong ', + 'Yin ', 'Mo ', 'Mai ', 'Yun ', 'Liu ', 'Meng ', 'Bin ', 'Wu ', 'Wei ', 'Huo ', 'Yin ', 'Xi ', 'Yi ', 'Ai ', 'Dan ', 'Deng ', + 'Xian ', 'Yu ', 'Lu ', 'Long ', 'Dai ', 'Ji ', 'Pang ', 'Yang ', 'Ba ', 'Pi ', 'Wei ', NULL, 'Xi ', 'Ji ', 'Mai ', 'Meng ', + 'Meng ', 'Lei ', 'Li ', 'Huo ', 'Ai ', 'Fei ', 'Dai ', 'Long ', 'Ling ', 'Ai ', 'Feng ', 'Li ', 'Bao ', NULL, 'He ', 'He ', + 'Bing ', 'Qing ', 'Qing ', 'Jing ', 'Tian ', 'Zhen ', 'Jing ', 'Cheng ', 'Qing ', 'Jing ', 'Jing ', 'Dian ', 'Jing ', 'Tian ', 'Fei ', 'Fei ', + 'Kao ', 'Mi ', 'Mian ', 'Mian ', 'Pao ', 'Ye ', 'Tian ', 'Hui ', 'Ye ', 'Ge ', 'Ding ', 'Cha ', 'Jian ', 'Ren ', 'Di ', 'Du ', + 'Wu ', 'Ren ', 'Qin ', 'Jin ', 'Xue ', 'Niu ', 'Ba ', 'Yin ', 'Sa ', 'Na ', 'Mo ', 'Zu ', 'Da ', 'Ban ', 'Yi ', 'Yao ', + 'Tao ', 'Tuo ', 'Jia ', 'Hong ', 'Pao ', 'Yang ', 'Tomo ', 'Yin ', 'Jia ', 'Tao ', 'Ji ', 'Xie ', 'An ', 'An ', 'Hen ', 'Gong ', + 'Kohaze ', 'Da ', 'Qiao ', 'Ting ', 'Wan ', 'Ying ', 'Sui ', 'Tiao ', 'Qiao ', 'Xuan ', 'Kong ', 'Beng ', 'Ta ', 'Zhang ', 'Bing ', 'Kuo ', + 'Ju ', 'La ', 'Xie ', 'Rou ', 'Bang ', 'Yi ', 'Qiu ', 'Qiu ', 'He ', 'Xiao ', 'Mu ', 'Ju ', 'Jian ', 'Bian ', 'Di ', 'Jian ', + 'On ', 'Tao ', 'Gou ', 'Ta ', 'Bei ', 'Xie ', 'Pan ', 'Ge ', 'Bi ', 'Kuo ', 'Tang ', 'Lou ', 'Gui ', 'Qiao ', 'Xue ', 'Ji ', + 'Jian ', 'Jiang ', 'Chan ', 'Da ', 'Huo ', 'Xian ', 'Qian ', 'Du ', 'Wa ', 'Jian ', 'Lan ', 'Wei ', 'Ren ', 'Fu ', 'Mei ', 'Juan ', + 'Ge ', 'Wei ', 'Qiao ', 'Han ', 'Chang ', NULL, 'Rou ', 'Xun ', 'She ', 'Wei ', 'Ge ', 'Bei ', 'Tao ', 'Gou ', 'Yun ', NULL, + 'Bi ', 'Wei ', 'Hui ', 'Du ', 'Wa ', 'Du ', 'Wei ', 'Ren ', 'Fu ', 'Han ', 'Wei ', 'Yun ', 'Tao ', 'Jiu ', 'Jiu ', 'Xian ', + 'Xie ', 'Xian ', 'Ji ', 'Yin ', 'Za ', 'Yun ', 'Shao ', 'Le ', 'Peng ', 'Heng ', 'Ying ', 'Yun ', 'Peng ', 'Yin ', 'Yin ', 'Xiang '), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/x98.php b/NEUE DATEIEN/includes/classes/transliteration/x98.php new file mode 100644 index 0000000..95c03d8 --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/x98.php @@ -0,0 +1,21 @@ + array('Hu ', 'Ye ', 'Ding ', 'Qing ', 'Pan ', 'Xiang ', 'Shun ', 'Han ', 'Xu ', 'Yi ', 'Xu ', 'Gu ', 'Song ', 'Kui ', 'Qi ', 'Hang ', + 'Yu ', 'Wan ', 'Ban ', 'Dun ', 'Di ', 'Dan ', 'Pan ', 'Po ', 'Ling ', 'Ce ', 'Jing ', 'Lei ', 'He ', 'Qiao ', 'E ', 'E ', + 'Wei ', 'Jie ', 'Gua ', 'Shen ', 'Yi ', 'Shen ', 'Hai ', 'Dui ', 'Pian ', 'Ping ', 'Lei ', 'Fu ', 'Jia ', 'Tou ', 'Hui ', 'Kui ', + 'Jia ', 'Le ', 'Tian ', 'Cheng ', 'Ying ', 'Jun ', 'Hu ', 'Han ', 'Jing ', 'Tui ', 'Tui ', 'Pin ', 'Lai ', 'Tui ', 'Zi ', 'Zi ', + 'Chui ', 'Ding ', 'Lai ', 'Yan ', 'Han ', 'Jian ', 'Ke ', 'Cui ', 'Jiong ', 'Qin ', 'Yi ', 'Sai ', 'Ti ', 'E ', 'E ', 'Yan ', + 'Hun ', 'Kan ', 'Yong ', 'Zhuan ', 'Yan ', 'Xian ', 'Xin ', 'Yi ', 'Yuan ', 'Sang ', 'Dian ', 'Dian ', 'Jiang ', 'Ku ', 'Lei ', 'Liao ', + 'Piao ', 'Yi ', 'Man ', 'Qi ', 'Rao ', 'Hao ', 'Qiao ', 'Gu ', 'Xun ', 'Qian ', 'Hui ', 'Zhan ', 'Ru ', 'Hong ', 'Bin ', 'Xian ', + 'Pin ', 'Lu ', 'Lan ', 'Nie ', 'Quan ', 'Ye ', 'Ding ', 'Qing ', 'Han ', 'Xiang ', 'Shun ', 'Xu ', 'Xu ', 'Wan ', 'Gu ', 'Dun ', + 'Qi ', 'Ban ', 'Song ', 'Hang ', 'Yu ', 'Lu ', 'Ling ', 'Po ', 'Jing ', 'Jie ', 'Jia ', 'Tian ', 'Han ', 'Ying ', 'Jiong ', 'Hai ', + 'Yi ', 'Pin ', 'Hui ', 'Tui ', 'Han ', 'Ying ', 'Ying ', 'Ke ', 'Ti ', 'Yong ', 'E ', 'Zhuan ', 'Yan ', 'E ', 'Nie ', 'Man ', + 'Dian ', 'Sang ', 'Hao ', 'Lei ', 'Zhan ', 'Ru ', 'Pin ', 'Quan ', 'Feng ', 'Biao ', 'Oroshi ', 'Fu ', 'Xia ', 'Zhan ', 'Biao ', 'Sa ', + 'Ba ', 'Tai ', 'Lie ', 'Gua ', 'Xuan ', 'Shao ', 'Ju ', 'Bi ', 'Si ', 'Wei ', 'Yang ', 'Yao ', 'Sou ', 'Kai ', 'Sao ', 'Fan ', + 'Liu ', 'Xi ', 'Liao ', 'Piao ', 'Piao ', 'Liu ', 'Biao ', 'Biao ', 'Biao ', 'Liao ', NULL, 'Se ', 'Feng ', 'Biao ', 'Feng ', 'Yang ', + 'Zhan ', 'Biao ', 'Sa ', 'Ju ', 'Si ', 'Sou ', 'Yao ', 'Liu ', 'Piao ', 'Biao ', 'Biao ', 'Fei ', 'Fan ', 'Fei ', 'Fei ', 'Shi ', + 'Shi ', 'Can ', 'Ji ', 'Ding ', 'Si ', 'Tuo ', 'Zhan ', 'Sun ', 'Xiang ', 'Tun ', 'Ren ', 'Yu ', 'Juan ', 'Chi ', 'Yin ', 'Fan ', + 'Fan ', 'Sun ', 'Yin ', 'Zhu ', 'Yi ', 'Zhai ', 'Bi ', 'Jie ', 'Tao ', 'Liu ', 'Ci ', 'Tie ', 'Si ', 'Bao ', 'Shi ', 'Duo '), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/x99.php b/NEUE DATEIEN/includes/classes/transliteration/x99.php new file mode 100644 index 0000000..1414bf0 --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/x99.php @@ -0,0 +1,21 @@ + array('Hai ', 'Ren ', 'Tian ', 'Jiao ', 'Jia ', 'Bing ', 'Yao ', 'Tong ', 'Ci ', 'Xiang ', 'Yang ', 'Yang ', 'Er ', 'Yan ', 'Le ', 'Yi ', + 'Can ', 'Bo ', 'Nei ', 'E ', 'Bu ', 'Jun ', 'Dou ', 'Su ', 'Yu ', 'Shi ', 'Yao ', 'Hun ', 'Guo ', 'Shi ', 'Jian ', 'Zhui ', + 'Bing ', 'Xian ', 'Bu ', 'Ye ', 'Tan ', 'Fei ', 'Zhang ', 'Wei ', 'Guan ', 'E ', 'Nuan ', 'Hun ', 'Hu ', 'Huang ', 'Tie ', 'Hui ', + 'Jian ', 'Hou ', 'He ', 'Xing ', 'Fen ', 'Wei ', 'Gu ', 'Cha ', 'Song ', 'Tang ', 'Bo ', 'Gao ', 'Xi ', 'Kui ', 'Liu ', 'Sou ', + 'Tao ', 'Ye ', 'Yun ', 'Mo ', 'Tang ', 'Man ', 'Bi ', 'Yu ', 'Xiu ', 'Jin ', 'San ', 'Kui ', 'Zhuan ', 'Shan ', 'Chi ', 'Dan ', + 'Yi ', 'Ji ', 'Rao ', 'Cheng ', 'Yong ', 'Tao ', 'Hui ', 'Xiang ', 'Zhan ', 'Fen ', 'Hai ', 'Meng ', 'Yan ', 'Mo ', 'Chan ', 'Xiang ', + 'Luo ', 'Zuan ', 'Nang ', 'Shi ', 'Ding ', 'Ji ', 'Tuo ', 'Xing ', 'Tun ', 'Xi ', 'Ren ', 'Yu ', 'Chi ', 'Fan ', 'Yin ', 'Jian ', + 'Shi ', 'Bao ', 'Si ', 'Duo ', 'Yi ', 'Er ', 'Rao ', 'Xiang ', 'Jia ', 'Le ', 'Jiao ', 'Yi ', 'Bing ', 'Bo ', 'Dou ', 'E ', + 'Yu ', 'Nei ', 'Jun ', 'Guo ', 'Hun ', 'Xian ', 'Guan ', 'Cha ', 'Kui ', 'Gu ', 'Sou ', 'Chan ', 'Ye ', 'Mo ', 'Bo ', 'Liu ', + 'Xiu ', 'Jin ', 'Man ', 'San ', 'Zhuan ', 'Nang ', 'Shou ', 'Kui ', 'Guo ', 'Xiang ', 'Fen ', 'Ba ', 'Ni ', 'Bi ', 'Bo ', 'Tu ', + 'Han ', 'Fei ', 'Jian ', 'An ', 'Ai ', 'Fu ', 'Xian ', 'Wen ', 'Xin ', 'Fen ', 'Bin ', 'Xing ', 'Ma ', 'Yu ', 'Feng ', 'Han ', + 'Di ', 'Tuo ', 'Tuo ', 'Chi ', 'Xun ', 'Zhu ', 'Zhi ', 'Pei ', 'Xin ', 'Ri ', 'Sa ', 'Yin ', 'Wen ', 'Zhi ', 'Dan ', 'Lu ', + 'You ', 'Bo ', 'Bao ', 'Kuai ', 'Tuo ', 'Yi ', 'Qu ', NULL, 'Qu ', 'Jiong ', 'Bo ', 'Zhao ', 'Yuan ', 'Peng ', 'Zhou ', 'Ju ', + 'Zhu ', 'Nu ', 'Ju ', 'Pi ', 'Zang ', 'Jia ', 'Ling ', 'Zhen ', 'Tai ', 'Fu ', 'Yang ', 'Shi ', 'Bi ', 'Tuo ', 'Tuo ', 'Si ', + 'Liu ', 'Ma ', 'Pian ', 'Tao ', 'Zhi ', 'Rong ', 'Teng ', 'Dong ', 'Xun ', 'Quan ', 'Shen ', 'Jiong ', 'Er ', 'Hai ', 'Bo ', 'Zhu ', + 'Yin ', 'Luo ', 'Shuu ', 'Dan ', 'Xie ', 'Liu ', 'Ju ', 'Song ', 'Qin ', 'Mang ', 'Liang ', 'Han ', 'Tu ', 'Xuan ', 'Tui ', 'Jun '), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/x9a.php b/NEUE DATEIEN/includes/classes/transliteration/x9a.php new file mode 100644 index 0000000..c2298fc --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/x9a.php @@ -0,0 +1,21 @@ + array('E ', 'Cheng ', 'Xin ', 'Ai ', 'Lu ', 'Zhui ', 'Zhou ', 'She ', 'Pian ', 'Kun ', 'Tao ', 'Lai ', 'Zong ', 'Ke ', 'Qi ', 'Qi ', + 'Yan ', 'Fei ', 'Sao ', 'Yan ', 'Jie ', 'Yao ', 'Wu ', 'Pian ', 'Cong ', 'Pian ', 'Qian ', 'Fei ', 'Huang ', 'Jian ', 'Huo ', 'Yu ', + 'Ti ', 'Quan ', 'Xia ', 'Zong ', 'Kui ', 'Rou ', 'Si ', 'Gua ', 'Tuo ', 'Kui ', 'Sou ', 'Qian ', 'Cheng ', 'Zhi ', 'Liu ', 'Pang ', + 'Teng ', 'Xi ', 'Cao ', 'Du ', 'Yan ', 'Yuan ', 'Zou ', 'Sao ', 'Shan ', 'Li ', 'Zhi ', 'Shuang ', 'Lu ', 'Xi ', 'Luo ', 'Zhang ', + 'Mo ', 'Ao ', 'Can ', 'Piao ', 'Cong ', 'Qu ', 'Bi ', 'Zhi ', 'Yu ', 'Xu ', 'Hua ', 'Bo ', 'Su ', 'Xiao ', 'Lin ', 'Chan ', + 'Dun ', 'Liu ', 'Tuo ', 'Zeng ', 'Tan ', 'Jiao ', 'Tie ', 'Yan ', 'Luo ', 'Zhan ', 'Jing ', 'Yi ', 'Ye ', 'Tuo ', 'Bin ', 'Zou ', + 'Yan ', 'Peng ', 'Lu ', 'Teng ', 'Xiang ', 'Ji ', 'Shuang ', 'Ju ', 'Xi ', 'Huan ', 'Li ', 'Biao ', 'Ma ', 'Yu ', 'Tuo ', 'Xun ', + 'Chi ', 'Qu ', 'Ri ', 'Bo ', 'Lu ', 'Zang ', 'Shi ', 'Si ', 'Fu ', 'Ju ', 'Zou ', 'Zhu ', 'Tuo ', 'Nu ', 'Jia ', 'Yi ', + 'Tai ', 'Xiao ', 'Ma ', 'Yin ', 'Jiao ', 'Hua ', 'Luo ', 'Hai ', 'Pian ', 'Biao ', 'Li ', 'Cheng ', 'Yan ', 'Xin ', 'Qin ', 'Jun ', + 'Qi ', 'Qi ', 'Ke ', 'Zhui ', 'Zong ', 'Su ', 'Can ', 'Pian ', 'Zhi ', 'Kui ', 'Sao ', 'Wu ', 'Ao ', 'Liu ', 'Qian ', 'Shan ', + 'Piao ', 'Luo ', 'Cong ', 'Chan ', 'Zou ', 'Ji ', 'Shuang ', 'Xiang ', 'Gu ', 'Wei ', 'Wei ', 'Wei ', 'Yu ', 'Gan ', 'Yi ', 'Ang ', + 'Tou ', 'Xie ', 'Bao ', 'Bi ', 'Chi ', 'Ti ', 'Di ', 'Ku ', 'Hai ', 'Qiao ', 'Gou ', 'Kua ', 'Ge ', 'Tui ', 'Geng ', 'Pian ', + 'Bi ', 'Ke ', 'Ka ', 'Yu ', 'Sui ', 'Lou ', 'Bo ', 'Xiao ', 'Pang ', 'Bo ', 'Ci ', 'Kuan ', 'Bin ', 'Mo ', 'Liao ', 'Lou ', + 'Nao ', 'Du ', 'Zang ', 'Sui ', 'Ti ', 'Bin ', 'Kuan ', 'Lu ', 'Gao ', 'Gao ', 'Qiao ', 'Kao ', 'Qiao ', 'Lao ', 'Zao ', 'Biao ', + 'Kun ', 'Kun ', 'Ti ', 'Fang ', 'Xiu ', 'Ran ', 'Mao ', 'Dan ', 'Kun ', 'Bin ', 'Fa ', 'Tiao ', 'Peng ', 'Zi ', 'Fa ', 'Ran ', + 'Ti ', 'Pao ', 'Pi ', 'Mao ', 'Fu ', 'Er ', 'Rong ', 'Qu ', 'Gong ', 'Xiu ', 'Gua ', 'Ji ', 'Peng ', 'Zhua ', 'Shao ', 'Sha '), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/x9b.php b/NEUE DATEIEN/includes/classes/transliteration/x9b.php new file mode 100644 index 0000000..ad2aedc --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/x9b.php @@ -0,0 +1,21 @@ + array('Ti ', 'Li ', 'Bin ', 'Zong ', 'Ti ', 'Peng ', 'Song ', 'Zheng ', 'Quan ', 'Zong ', 'Shun ', 'Jian ', 'Duo ', 'Hu ', 'La ', 'Jiu ', + 'Qi ', 'Lian ', 'Zhen ', 'Bin ', 'Peng ', 'Mo ', 'San ', 'Man ', 'Man ', 'Seng ', 'Xu ', 'Lie ', 'Qian ', 'Qian ', 'Nong ', 'Huan ', + 'Kuai ', 'Ning ', 'Bin ', 'Lie ', 'Rang ', 'Dou ', 'Dou ', 'Nao ', 'Hong ', 'Xi ', 'Dou ', 'Han ', 'Dou ', 'Dou ', 'Jiu ', 'Chang ', + 'Yu ', 'Yu ', 'Li ', 'Juan ', 'Fu ', 'Qian ', 'Gui ', 'Zong ', 'Liu ', 'Gui ', 'Shang ', 'Yu ', 'Gui ', 'Mei ', 'Ji ', 'Qi ', + 'Jie ', 'Kui ', 'Hun ', 'Ba ', 'Po ', 'Mei ', 'Xu ', 'Yan ', 'Xiao ', 'Liang ', 'Yu ', 'Tui ', 'Qi ', 'Wang ', 'Liang ', 'Wei ', + 'Jian ', 'Chi ', 'Piao ', 'Bi ', 'Mo ', 'Ji ', 'Xu ', 'Chou ', 'Yan ', 'Zhan ', 'Yu ', 'Dao ', 'Ren ', 'Ji ', 'Eri ', 'Gong ', + 'Tuo ', 'Diao ', 'Ji ', 'Xu ', 'E ', 'E ', 'Sha ', 'Hang ', 'Tun ', 'Mo ', 'Jie ', 'Shen ', 'Fan ', 'Yuan ', 'Bi ', 'Lu ', + 'Wen ', 'Hu ', 'Lu ', 'Za ', 'Fang ', 'Fen ', 'Na ', 'You ', 'Namazu ', 'Todo ', 'He ', 'Xia ', 'Qu ', 'Han ', 'Pi ', 'Ling ', + 'Tuo ', 'Bo ', 'Qiu ', 'Ping ', 'Fu ', 'Bi ', 'Ji ', 'Wei ', 'Ju ', 'Diao ', 'Bo ', 'You ', 'Gun ', 'Pi ', 'Nian ', 'Xing ', + 'Tai ', 'Bao ', 'Fu ', 'Zha ', 'Ju ', 'Gu ', 'Kajika ', 'Tong ', NULL, 'Ta ', 'Jie ', 'Shu ', 'Hou ', 'Xiang ', 'Er ', 'An ', + 'Wei ', 'Tiao ', 'Zhu ', 'Yin ', 'Lie ', 'Luo ', 'Tong ', 'Yi ', 'Qi ', 'Bing ', 'Wei ', 'Jiao ', 'Bu ', 'Gui ', 'Xian ', 'Ge ', + 'Hui ', 'Bora ', 'Mate ', 'Kao ', 'Gori ', 'Duo ', 'Jun ', 'Ti ', 'Man ', 'Xiao ', 'Za ', 'Sha ', 'Qin ', 'Yu ', 'Nei ', 'Zhe ', + 'Gun ', 'Geng ', 'Su ', 'Wu ', 'Qiu ', 'Ting ', 'Fu ', 'Wan ', 'You ', 'Li ', 'Sha ', 'Sha ', 'Gao ', 'Meng ', 'Ugui ', 'Asari ', + 'Subashiri ', 'Kazunoko ', 'Yong ', 'Ni ', 'Zi ', 'Qi ', 'Qing ', 'Xiang ', 'Nei ', 'Chun ', 'Ji ', 'Diao ', 'Qie ', 'Gu ', 'Zhou ', 'Dong ', + 'Lai ', 'Fei ', 'Ni ', 'Yi ', 'Kun ', 'Lu ', 'Jiu ', 'Chang ', 'Jing ', 'Lun ', 'Ling ', 'Zou ', 'Li ', 'Meng ', 'Zong ', 'Zhi ', + 'Nian ', 'Shachi ', 'Dojou ', 'Sukesou ', 'Shi ', 'Shen ', 'Hun ', 'Shi ', 'Hou ', 'Xing ', 'Zhu ', 'La ', 'Zong ', 'Ji ', 'Bian ', 'Bian '), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/x9c.php b/NEUE DATEIEN/includes/classes/transliteration/x9c.php new file mode 100644 index 0000000..2639ef6 --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/x9c.php @@ -0,0 +1,21 @@ + array('Huan ', 'Quan ', 'Ze ', 'Wei ', 'Wei ', 'Yu ', 'Qun ', 'Rou ', 'Die ', 'Huang ', 'Lian ', 'Yan ', 'Qiu ', 'Qiu ', 'Jian ', 'Bi ', + 'E ', 'Yang ', 'Fu ', 'Sai ', 'Jian ', 'Xia ', 'Tuo ', 'Hu ', 'Muroaji ', 'Ruo ', 'Haraka ', 'Wen ', 'Jian ', 'Hao ', 'Wu ', 'Fang ', + 'Sao ', 'Liu ', 'Ma ', 'Shi ', 'Shi ', 'Yin ', 'Z ', 'Teng ', 'Ta ', 'Yao ', 'Ge ', 'Rong ', 'Qian ', 'Qi ', 'Wen ', 'Ruo ', + 'Hatahata ', 'Lian ', 'Ao ', 'Le ', 'Hui ', 'Min ', 'Ji ', 'Tiao ', 'Qu ', 'Jian ', 'Sao ', 'Man ', 'Xi ', 'Qiu ', 'Biao ', 'Ji ', + 'Ji ', 'Zhu ', 'Jiang ', 'Qiu ', 'Zhuan ', 'Yong ', 'Zhang ', 'Kang ', 'Xue ', 'Bie ', 'Jue ', 'Qu ', 'Xiang ', 'Bo ', 'Jiao ', 'Xun ', + 'Su ', 'Huang ', 'Zun ', 'Shan ', 'Shan ', 'Fan ', 'Jue ', 'Lin ', 'Xun ', 'Miao ', 'Xi ', 'Eso ', 'Kyou ', 'Fen ', 'Guan ', 'Hou ', + 'Kuai ', 'Zei ', 'Sao ', 'Zhan ', 'Gan ', 'Gui ', 'Sheng ', 'Li ', 'Chang ', 'Hatahata ', 'Shiira ', 'Mutsu ', 'Ru ', 'Ji ', 'Xu ', 'Huo ', + 'Shiira ', 'Li ', 'Lie ', 'Li ', 'Mie ', 'Zhen ', 'Xiang ', 'E ', 'Lu ', 'Guan ', 'Li ', 'Xian ', 'Yu ', 'Dao ', 'Ji ', 'You ', + 'Tun ', 'Lu ', 'Fang ', 'Ba ', 'He ', 'Bo ', 'Ping ', 'Nian ', 'Lu ', 'You ', 'Zha ', 'Fu ', 'Bo ', 'Bao ', 'Hou ', 'Pi ', + 'Tai ', 'Gui ', 'Jie ', 'Kao ', 'Wei ', 'Er ', 'Tong ', 'Ze ', 'Hou ', 'Kuai ', 'Ji ', 'Jiao ', 'Xian ', 'Za ', 'Xiang ', 'Xun ', + 'Geng ', 'Li ', 'Lian ', 'Jian ', 'Li ', 'Shi ', 'Tiao ', 'Gun ', 'Sha ', 'Wan ', 'Jun ', 'Ji ', 'Yong ', 'Qing ', 'Ling ', 'Qi ', + 'Zou ', 'Fei ', 'Kun ', 'Chang ', 'Gu ', 'Ni ', 'Nian ', 'Diao ', 'Jing ', 'Shen ', 'Shi ', 'Zi ', 'Fen ', 'Die ', 'Bi ', 'Chang ', + 'Shi ', 'Wen ', 'Wei ', 'Sai ', 'E ', 'Qiu ', 'Fu ', 'Huang ', 'Quan ', 'Jiang ', 'Bian ', 'Sao ', 'Ao ', 'Qi ', 'Ta ', 'Yin ', + 'Yao ', 'Fang ', 'Jian ', 'Le ', 'Biao ', 'Xue ', 'Bie ', 'Man ', 'Min ', 'Yong ', 'Wei ', 'Xi ', 'Jue ', 'Shan ', 'Lin ', 'Zun ', + 'Huo ', 'Gan ', 'Li ', 'Zhan ', 'Guan ', 'Niao ', 'Yi ', 'Fu ', 'Li ', 'Jiu ', 'Bu ', 'Yan ', 'Fu ', 'Diao ', 'Ji ', 'Feng ', + 'Nio ', 'Gan ', 'Shi ', 'Feng ', 'Ming ', 'Bao ', 'Yuan ', 'Zhi ', 'Hu ', 'Qin ', 'Fu ', 'Fen ', 'Wen ', 'Jian ', 'Shi ', 'Yu '), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/x9d.php b/NEUE DATEIEN/includes/classes/transliteration/x9d.php new file mode 100644 index 0000000..ebdd668 --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/x9d.php @@ -0,0 +1,21 @@ + array('Fou ', 'Yiao ', 'Jue ', 'Jue ', 'Pi ', 'Huan ', 'Zhen ', 'Bao ', 'Yan ', 'Ya ', 'Zheng ', 'Fang ', 'Feng ', 'Wen ', 'Ou ', 'Te ', + 'Jia ', 'Nu ', 'Ling ', 'Mie ', 'Fu ', 'Tuo ', 'Wen ', 'Li ', 'Bian ', 'Zhi ', 'Ge ', 'Yuan ', 'Zi ', 'Qu ', 'Xiao ', 'Zhi ', + 'Dan ', 'Ju ', 'You ', 'Gu ', 'Zhong ', 'Yu ', 'Yang ', 'Rong ', 'Ya ', 'Tie ', 'Yu ', 'Shigi ', 'Ying ', 'Zhui ', 'Wu ', 'Er ', + 'Gua ', 'Ai ', 'Zhi ', 'Yan ', 'Heng ', 'Jiao ', 'Ji ', 'Lie ', 'Zhu ', 'Ren ', 'Yi ', 'Hong ', 'Luo ', 'Ru ', 'Mou ', 'Ge ', + 'Ren ', 'Jiao ', 'Xiu ', 'Zhou ', 'Zhi ', 'Luo ', 'Chidori ', 'Toki ', 'Ten ', 'Luan ', 'Jia ', 'Ji ', 'Yu ', 'Huan ', 'Tuo ', 'Bu ', + 'Wu ', 'Juan ', 'Yu ', 'Bo ', 'Xun ', 'Xun ', 'Bi ', 'Xi ', 'Jun ', 'Ju ', 'Tu ', 'Jing ', 'Ti ', 'E ', 'E ', 'Kuang ', + 'Hu ', 'Wu ', 'Shen ', 'Lai ', 'Ikaruga ', 'Kakesu ', 'Lu ', 'Ping ', 'Shu ', 'Fu ', 'An ', 'Zhao ', 'Peng ', 'Qin ', 'Qian ', 'Bei ', + 'Diao ', 'Lu ', 'Que ', 'Jian ', 'Ju ', 'Tu ', 'Ya ', 'Yuan ', 'Qi ', 'Li ', 'Ye ', 'Zhui ', 'Kong ', 'Zhui ', 'Kun ', 'Sheng ', + 'Qi ', 'Jing ', 'Yi ', 'Yi ', 'Jing ', 'Zi ', 'Lai ', 'Dong ', 'Qi ', 'Chun ', 'Geng ', 'Ju ', 'Qu ', 'Isuka ', 'Kikuitadaki ', 'Ji ', + 'Shu ', NULL, 'Chi ', 'Miao ', 'Rou ', 'An ', 'Qiu ', 'Ti ', 'Hu ', 'Ti ', 'E ', 'Jie ', 'Mao ', 'Fu ', 'Chun ', 'Tu ', + 'Yan ', 'He ', 'Yuan ', 'Pian ', 'Yun ', 'Mei ', 'Hu ', 'Ying ', 'Dun ', 'Mu ', 'Ju ', 'Tsugumi ', 'Cang ', 'Fang ', 'Gu ', 'Ying ', + 'Yuan ', 'Xuan ', 'Weng ', 'Shi ', 'He ', 'Chu ', 'Tang ', 'Xia ', 'Ruo ', 'Liu ', 'Ji ', 'Gu ', 'Jian ', 'Zhun ', 'Han ', 'Zi ', + 'Zi ', 'Ni ', 'Yao ', 'Yan ', 'Ji ', 'Li ', 'Tian ', 'Kou ', 'Ti ', 'Ti ', 'Ni ', 'Tu ', 'Ma ', 'Jiao ', 'Gao ', 'Tian ', + 'Chen ', 'Li ', 'Zhuan ', 'Zhe ', 'Ao ', 'Yao ', 'Yi ', 'Ou ', 'Chi ', 'Zhi ', 'Liao ', 'Rong ', 'Lou ', 'Bi ', 'Shuang ', 'Zhuo ', + 'Yu ', 'Wu ', 'Jue ', 'Yin ', 'Quan ', 'Si ', 'Jiao ', 'Yi ', 'Hua ', 'Bi ', 'Ying ', 'Su ', 'Huang ', 'Fan ', 'Jiao ', 'Liao ', + 'Yan ', 'Kao ', 'Jiu ', 'Xian ', 'Xian ', 'Tu ', 'Mai ', 'Zun ', 'Yu ', 'Ying ', 'Lu ', 'Tuan ', 'Xian ', 'Xue ', 'Yi ', 'Pi '), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/x9e.php b/NEUE DATEIEN/includes/classes/transliteration/x9e.php new file mode 100644 index 0000000..ae8933a --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/x9e.php @@ -0,0 +1,21 @@ + array('Shu ', 'Luo ', 'Qi ', 'Yi ', 'Ji ', 'Zhe ', 'Yu ', 'Zhan ', 'Ye ', 'Yang ', 'Pi ', 'Ning ', 'Huo ', 'Mi ', 'Ying ', 'Meng ', + 'Di ', 'Yue ', 'Yu ', 'Lei ', 'Bao ', 'Lu ', 'He ', 'Long ', 'Shuang ', 'Yue ', 'Ying ', 'Guan ', 'Qu ', 'Li ', 'Luan ', 'Niao ', + 'Jiu ', 'Ji ', 'Yuan ', 'Ming ', 'Shi ', 'Ou ', 'Ya ', 'Cang ', 'Bao ', 'Zhen ', 'Gu ', 'Dong ', 'Lu ', 'Ya ', 'Xiao ', 'Yang ', + 'Ling ', 'Zhi ', 'Qu ', 'Yuan ', 'Xue ', 'Tuo ', 'Si ', 'Zhi ', 'Er ', 'Gua ', 'Xiu ', 'Heng ', 'Zhou ', 'Ge ', 'Luan ', 'Hong ', + 'Wu ', 'Bo ', 'Li ', 'Juan ', 'Hu ', 'E ', 'Yu ', 'Xian ', 'Ti ', 'Wu ', 'Que ', 'Miao ', 'An ', 'Kun ', 'Bei ', 'Peng ', + 'Qian ', 'Chun ', 'Geng ', 'Yuan ', 'Su ', 'Hu ', 'He ', 'E ', 'Gu ', 'Qiu ', 'Zi ', 'Mei ', 'Mu ', 'Ni ', 'Yao ', 'Weng ', + 'Liu ', 'Ji ', 'Ni ', 'Jian ', 'He ', 'Yi ', 'Ying ', 'Zhe ', 'Liao ', 'Liao ', 'Jiao ', 'Jiu ', 'Yu ', 'Lu ', 'Xuan ', 'Zhan ', + 'Ying ', 'Huo ', 'Meng ', 'Guan ', 'Shuang ', 'Lu ', 'Jin ', 'Ling ', 'Jian ', 'Xian ', 'Cuo ', 'Jian ', 'Jian ', 'Yan ', 'Cuo ', 'Lu ', + 'You ', 'Cu ', 'Ji ', 'Biao ', 'Cu ', 'Biao ', 'Zhu ', 'Jun ', 'Zhu ', 'Jian ', 'Mi ', 'Mi ', 'Wu ', 'Liu ', 'Chen ', 'Jun ', + 'Lin ', 'Ni ', 'Qi ', 'Lu ', 'Jiu ', 'Jun ', 'Jing ', 'Li ', 'Xiang ', 'Yan ', 'Jia ', 'Mi ', 'Li ', 'She ', 'Zhang ', 'Lin ', + 'Jing ', 'Ji ', 'Ling ', 'Yan ', 'Cu ', 'Mai ', 'Mai ', 'Ge ', 'Chao ', 'Fu ', 'Mian ', 'Mian ', 'Fu ', 'Pao ', 'Qu ', 'Qu ', + 'Mou ', 'Fu ', 'Xian ', 'Lai ', 'Qu ', 'Mian ', NULL, 'Feng ', 'Fu ', 'Qu ', 'Mian ', 'Ma ', 'Mo ', 'Mo ', 'Hui ', 'Ma ', + 'Zou ', 'Nen ', 'Fen ', 'Huang ', 'Huang ', 'Jin ', 'Guang ', 'Tian ', 'Tou ', 'Heng ', 'Xi ', 'Kuang ', 'Heng ', 'Shu ', 'Li ', 'Nian ', + 'Chi ', 'Hei ', 'Hei ', 'Yi ', 'Qian ', 'Dan ', 'Xi ', 'Tuan ', 'Mo ', 'Mo ', 'Qian ', 'Dai ', 'Chu ', 'You ', 'Dian ', 'Yi ', + 'Xia ', 'Yan ', 'Qu ', 'Mei ', 'Yan ', 'Jing ', 'Yu ', 'Li ', 'Dang ', 'Du ', 'Can ', 'Yin ', 'An ', 'Yan ', 'Tan ', 'An ', + 'Zhen ', 'Dai ', 'Can ', 'Yi ', 'Mei ', 'Dan ', 'Yan ', 'Du ', 'Lu ', 'Zhi ', 'Fen ', 'Fu ', 'Fu ', 'Min ', 'Min ', 'Yuan '), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/x9f.php b/NEUE DATEIEN/includes/classes/transliteration/x9f.php new file mode 100644 index 0000000..444c4c5 --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/x9f.php @@ -0,0 +1,21 @@ + array('Cu ', 'Qu ', 'Chao ', 'Wa ', 'Zhu ', 'Zhi ', 'Mang ', 'Ao ', 'Bie ', 'Tuo ', 'Bi ', 'Yuan ', 'Chao ', 'Tuo ', 'Ding ', 'Mi ', + 'Nai ', 'Ding ', 'Zi ', 'Gu ', 'Gu ', 'Dong ', 'Fen ', 'Tao ', 'Yuan ', 'Pi ', 'Chang ', 'Gao ', 'Qi ', 'Yuan ', 'Tang ', 'Teng ', + 'Shu ', 'Shu ', 'Fen ', 'Fei ', 'Wen ', 'Ba ', 'Diao ', 'Tuo ', 'Tong ', 'Qu ', 'Sheng ', 'Shi ', 'You ', 'Shi ', 'Ting ', 'Wu ', + 'Nian ', 'Jing ', 'Hun ', 'Ju ', 'Yan ', 'Tu ', 'Ti ', 'Xi ', 'Xian ', 'Yan ', 'Lei ', 'Bi ', 'Yao ', 'Qiu ', 'Han ', 'Wu ', + 'Wu ', 'Hou ', 'Xi ', 'Ge ', 'Zha ', 'Xiu ', 'Weng ', 'Zha ', 'Nong ', 'Nang ', 'Qi ', 'Zhai ', 'Ji ', 'Zi ', 'Ji ', 'Ji ', + 'Qi ', 'Ji ', 'Chi ', 'Chen ', 'Chen ', 'He ', 'Ya ', 'Ken ', 'Xie ', 'Pao ', 'Cuo ', 'Shi ', 'Zi ', 'Chi ', 'Nian ', 'Ju ', + 'Tiao ', 'Ling ', 'Ling ', 'Chu ', 'Quan ', 'Xie ', 'Ken ', 'Nie ', 'Jiu ', 'Yao ', 'Chuo ', 'Kun ', 'Yu ', 'Chu ', 'Yi ', 'Ni ', + 'Cuo ', 'Zou ', 'Qu ', 'Nen ', 'Xian ', 'Ou ', 'E ', 'Wo ', 'Yi ', 'Chuo ', 'Zou ', 'Dian ', 'Chu ', 'Jin ', 'Ya ', 'Chi ', + 'Chen ', 'He ', 'Ken ', 'Ju ', 'Ling ', 'Pao ', 'Tiao ', 'Zi ', 'Ken ', 'Yu ', 'Chuo ', 'Qu ', 'Wo ', 'Long ', 'Pang ', 'Gong ', + 'Pang ', 'Yan ', 'Long ', 'Long ', 'Gong ', 'Kan ', 'Ta ', 'Ling ', 'Ta ', 'Long ', 'Gong ', 'Kan ', 'Gui ', 'Qiu ', 'Bie ', 'Gui ', + 'Yue ', 'Chui ', 'He ', 'Jue ', 'Xie ', 'Yu ', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/xa0.php b/NEUE DATEIEN/includes/classes/transliteration/xa0.php new file mode 100644 index 0000000..2b17fca --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/xa0.php @@ -0,0 +1,21 @@ + array('it', 'ix', 'i', 'ip', 'iet', 'iex', 'ie', 'iep', 'at', 'ax', 'a', 'ap', 'uox', 'uo', 'uop', 'ot', + 'ox', 'o', 'op', 'ex', 'e', 'wu', 'bit', 'bix', 'bi', 'bip', 'biet', 'biex', 'bie', 'biep', 'bat', 'bax', + 'ba', 'bap', 'buox', 'buo', 'buop', 'bot', 'box', 'bo', 'bop', 'bex', 'be', 'bep', 'but', 'bux', 'bu', 'bup', + 'burx', 'bur', 'byt', 'byx', 'by', 'byp', 'byrx', 'byr', 'pit', 'pix', 'pi', 'pip', 'piex', 'pie', 'piep', 'pat', + 'pax', 'pa', 'pap', 'puox', 'puo', 'puop', 'pot', 'pox', 'po', 'pop', 'put', 'pux', 'pu', 'pup', 'purx', 'pur', + 'pyt', 'pyx', 'py', 'pyp', 'pyrx', 'pyr', 'bbit', 'bbix', 'bbi', 'bbip', 'bbiet', 'bbiex', 'bbie', 'bbiep', 'bbat', 'bbax', + 'bba', 'bbap', 'bbuox', 'bbuo', 'bbuop', 'bbot', 'bbox', 'bbo', 'bbop', 'bbex', 'bbe', 'bbep', 'bbut', 'bbux', 'bbu', 'bbup', + 'bburx', 'bbur', 'bbyt', 'bbyx', 'bby', 'bbyp', 'nbit', 'nbix', 'nbi', 'nbip', 'nbiex', 'nbie', 'nbiep', 'nbat', 'nbax', 'nba', + 'nbap', 'nbot', 'nbox', 'nbo', 'nbop', 'nbut', 'nbux', 'nbu', 'nbup', 'nburx', 'nbur', 'nbyt', 'nbyx', 'nby', 'nbyp', 'nbyrx', + 'nbyr', 'hmit', 'hmix', 'hmi', 'hmip', 'hmiex', 'hmie', 'hmiep', 'hmat', 'hmax', 'hma', 'hmap', 'hmuox', 'hmuo', 'hmuop', 'hmot', + 'hmox', 'hmo', 'hmop', 'hmut', 'hmux', 'hmu', 'hmup', 'hmurx', 'hmur', 'hmyx', 'hmy', 'hmyp', 'hmyrx', 'hmyr', 'mit', 'mix', + 'mi', 'mip', 'miex', 'mie', 'miep', 'mat', 'max', 'ma', 'map', 'muot', 'muox', 'muo', 'muop', 'mot', 'mox', 'mo', + 'mop', 'mex', 'me', 'mut', 'mux', 'mu', 'mup', 'murx', 'mur', 'myt', 'myx', 'my', 'myp', 'fit', 'fix', 'fi', + 'fip', 'fat', 'fax', 'fa', 'fap', 'fox', 'fo', 'fop', 'fut', 'fux', 'fu', 'fup', 'furx', 'fur', 'fyt', 'fyx', + 'fy', 'fyp', 'vit', 'vix', 'vi', 'vip', 'viet', 'viex', 'vie', 'viep', 'vat', 'vax', 'va', 'vap', 'vot', 'vox', + 'vo', 'vop', 'vex', 'vep', 'vut', 'vux', 'vu', 'vup', 'vurx', 'vur', 'vyt', 'vyx', 'vy', 'vyp', 'vyrx', 'vyr'), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/xa1.php b/NEUE DATEIEN/includes/classes/transliteration/xa1.php new file mode 100644 index 0000000..19eb621 --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/xa1.php @@ -0,0 +1,21 @@ + array('dit', 'dix', 'di', 'dip', 'diex', 'die', 'diep', 'dat', 'dax', 'da', 'dap', 'duox', 'duo', 'dot', 'dox', 'do', + 'dop', 'dex', 'de', 'dep', 'dut', 'dux', 'du', 'dup', 'durx', 'dur', 'tit', 'tix', 'ti', 'tip', 'tiex', 'tie', + 'tiep', 'tat', 'tax', 'ta', 'tap', 'tuot', 'tuox', 'tuo', 'tuop', 'tot', 'tox', 'to', 'top', 'tex', 'te', 'tep', + 'tut', 'tux', 'tu', 'tup', 'turx', 'tur', 'ddit', 'ddix', 'ddi', 'ddip', 'ddiex', 'ddie', 'ddiep', 'ddat', 'ddax', 'dda', + 'ddap', 'dduox', 'dduo', 'dduop', 'ddot', 'ddox', 'ddo', 'ddop', 'ddex', 'dde', 'ddep', 'ddut', 'ddux', 'ddu', 'ddup', 'ddurx', + 'ddur', 'ndit', 'ndix', 'ndi', 'ndip', 'ndiex', 'ndie', 'ndat', 'ndax', 'nda', 'ndap', 'ndot', 'ndox', 'ndo', 'ndop', 'ndex', + 'nde', 'ndep', 'ndut', 'ndux', 'ndu', 'ndup', 'ndurx', 'ndur', 'hnit', 'hnix', 'hni', 'hnip', 'hniet', 'hniex', 'hnie', 'hniep', + 'hnat', 'hnax', 'hna', 'hnap', 'hnuox', 'hnuo', 'hnot', 'hnox', 'hnop', 'hnex', 'hne', 'hnep', 'hnut', 'nit', 'nix', 'ni', + 'nip', 'niex', 'nie', 'niep', 'nax', 'na', 'nap', 'nuox', 'nuo', 'nuop', 'not', 'nox', 'no', 'nop', 'nex', 'ne', + 'nep', 'nut', 'nux', 'nu', 'nup', 'nurx', 'nur', 'hlit', 'hlix', 'hli', 'hlip', 'hliex', 'hlie', 'hliep', 'hlat', 'hlax', + 'hla', 'hlap', 'hluox', 'hluo', 'hluop', 'hlox', 'hlo', 'hlop', 'hlex', 'hle', 'hlep', 'hlut', 'hlux', 'hlu', 'hlup', 'hlurx', + 'hlur', 'hlyt', 'hlyx', 'hly', 'hlyp', 'hlyrx', 'hlyr', 'lit', 'lix', 'li', 'lip', 'liet', 'liex', 'lie', 'liep', 'lat', + 'lax', 'la', 'lap', 'luot', 'luox', 'luo', 'luop', 'lot', 'lox', 'lo', 'lop', 'lex', 'le', 'lep', 'lut', 'lux', + 'lu', 'lup', 'lurx', 'lur', 'lyt', 'lyx', 'ly', 'lyp', 'lyrx', 'lyr', 'git', 'gix', 'gi', 'gip', 'giet', 'giex', + 'gie', 'giep', 'gat', 'gax', 'ga', 'gap', 'guot', 'guox', 'guo', 'guop', 'got', 'gox', 'go', 'gop', 'get', 'gex', + 'ge', 'gep', 'gut', 'gux', 'gu', 'gup', 'gurx', 'gur', 'kit', 'kix', 'ki', 'kip', 'kiex', 'kie', 'kiep', 'kat'), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/xa2.php b/NEUE DATEIEN/includes/classes/transliteration/xa2.php new file mode 100644 index 0000000..8ffad95 --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/xa2.php @@ -0,0 +1,21 @@ + array('kax', 'ka', 'kap', 'kuox', 'kuo', 'kuop', 'kot', 'kox', 'ko', 'kop', 'ket', 'kex', 'ke', 'kep', 'kut', 'kux', + 'ku', 'kup', 'kurx', 'kur', 'ggit', 'ggix', 'ggi', 'ggiex', 'ggie', 'ggiep', 'ggat', 'ggax', 'gga', 'ggap', 'gguot', 'gguox', + 'gguo', 'gguop', 'ggot', 'ggox', 'ggo', 'ggop', 'gget', 'ggex', 'gge', 'ggep', 'ggut', 'ggux', 'ggu', 'ggup', 'ggurx', 'ggur', + 'mgiex', 'mgie', 'mgat', 'mgax', 'mga', 'mgap', 'mguox', 'mguo', 'mguop', 'mgot', 'mgox', 'mgo', 'mgop', 'mgex', 'mge', 'mgep', + 'mgut', 'mgux', 'mgu', 'mgup', 'mgurx', 'mgur', 'hxit', 'hxix', 'hxi', 'hxip', 'hxiet', 'hxiex', 'hxie', 'hxiep', 'hxat', 'hxax', + 'hxa', 'hxap', 'hxuot', 'hxuox', 'hxuo', 'hxuop', 'hxot', 'hxox', 'hxo', 'hxop', 'hxex', 'hxe', 'hxep', 'ngiex', 'ngie', 'ngiep', + 'ngat', 'ngax', 'nga', 'ngap', 'nguot', 'nguox', 'nguo', 'ngot', 'ngox', 'ngo', 'ngop', 'ngex', 'nge', 'ngep', 'hit', 'hiex', + 'hie', 'hat', 'hax', 'ha', 'hap', 'huot', 'huox', 'huo', 'huop', 'hot', 'hox', 'ho', 'hop', 'hex', 'he', 'hep', + 'wat', 'wax', 'wa', 'wap', 'wuox', 'wuo', 'wuop', 'wox', 'wo', 'wop', 'wex', 'we', 'wep', 'zit', 'zix', 'zi', + 'zip', 'ziex', 'zie', 'ziep', 'zat', 'zax', 'za', 'zap', 'zuox', 'zuo', 'zuop', 'zot', 'zox', 'zo', 'zop', 'zex', + 'ze', 'zep', 'zut', 'zux', 'zu', 'zup', 'zurx', 'zur', 'zyt', 'zyx', 'zy', 'zyp', 'zyrx', 'zyr', 'cit', 'cix', + 'ci', 'cip', 'ciet', 'ciex', 'cie', 'ciep', 'cat', 'cax', 'ca', 'cap', 'cuox', 'cuo', 'cuop', 'cot', 'cox', 'co', + 'cop', 'cex', 'ce', 'cep', 'cut', 'cux', 'cu', 'cup', 'curx', 'cur', 'cyt', 'cyx', 'cy', 'cyp', 'cyrx', 'cyr', + 'zzit', 'zzix', 'zzi', 'zzip', 'zziet', 'zziex', 'zzie', 'zziep', 'zzat', 'zzax', 'zza', 'zzap', 'zzox', 'zzo', 'zzop', 'zzex', + 'zze', 'zzep', 'zzux', 'zzu', 'zzup', 'zzurx', 'zzur', 'zzyt', 'zzyx', 'zzy', 'zzyp', 'zzyrx', 'zzyr', 'nzit', 'nzix', 'nzi', + 'nzip', 'nziex', 'nzie', 'nziep', 'nzat', 'nzax', 'nza', 'nzap', 'nzuox', 'nzuo', 'nzox', 'nzop', 'nzex', 'nze', 'nzux', 'nzu'), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/xa3.php b/NEUE DATEIEN/includes/classes/transliteration/xa3.php new file mode 100644 index 0000000..d669976 --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/xa3.php @@ -0,0 +1,21 @@ + array('nzup', 'nzurx', 'nzur', 'nzyt', 'nzyx', 'nzy', 'nzyp', 'nzyrx', 'nzyr', 'sit', 'six', 'si', 'sip', 'siex', 'sie', 'siep', + 'sat', 'sax', 'sa', 'sap', 'suox', 'suo', 'suop', 'sot', 'sox', 'so', 'sop', 'sex', 'se', 'sep', 'sut', 'sux', + 'su', 'sup', 'surx', 'sur', 'syt', 'syx', 'sy', 'syp', 'syrx', 'syr', 'ssit', 'ssix', 'ssi', 'ssip', 'ssiex', 'ssie', + 'ssiep', 'ssat', 'ssax', 'ssa', 'ssap', 'ssot', 'ssox', 'sso', 'ssop', 'ssex', 'sse', 'ssep', 'ssut', 'ssux', 'ssu', 'ssup', + 'ssyt', 'ssyx', 'ssy', 'ssyp', 'ssyrx', 'ssyr', 'zhat', 'zhax', 'zha', 'zhap', 'zhuox', 'zhuo', 'zhuop', 'zhot', 'zhox', 'zho', + 'zhop', 'zhet', 'zhex', 'zhe', 'zhep', 'zhut', 'zhux', 'zhu', 'zhup', 'zhurx', 'zhur', 'zhyt', 'zhyx', 'zhy', 'zhyp', 'zhyrx', + 'zhyr', 'chat', 'chax', 'cha', 'chap', 'chuot', 'chuox', 'chuo', 'chuop', 'chot', 'chox', 'cho', 'chop', 'chet', 'chex', 'che', + 'chep', 'chux', 'chu', 'chup', 'churx', 'chur', 'chyt', 'chyx', 'chy', 'chyp', 'chyrx', 'chyr', 'rrax', 'rra', 'rruox', 'rruo', + 'rrot', 'rrox', 'rro', 'rrop', 'rret', 'rrex', 'rre', 'rrep', 'rrut', 'rrux', 'rru', 'rrup', 'rrurx', 'rrur', 'rryt', 'rryx', + 'rry', 'rryp', 'rryrx', 'rryr', 'nrat', 'nrax', 'nra', 'nrap', 'nrox', 'nro', 'nrop', 'nret', 'nrex', 'nre', 'nrep', 'nrut', + 'nrux', 'nru', 'nrup', 'nrurx', 'nrur', 'nryt', 'nryx', 'nry', 'nryp', 'nryrx', 'nryr', 'shat', 'shax', 'sha', 'shap', 'shuox', + 'shuo', 'shuop', 'shot', 'shox', 'sho', 'shop', 'shet', 'shex', 'she', 'shep', 'shut', 'shux', 'shu', 'shup', 'shurx', 'shur', + 'shyt', 'shyx', 'shy', 'shyp', 'shyrx', 'shyr', 'rat', 'rax', 'ra', 'rap', 'ruox', 'ruo', 'ruop', 'rot', 'rox', 'ro', + 'rop', 'rex', 're', 'rep', 'rut', 'rux', 'ru', 'rup', 'rurx', 'rur', 'ryt', 'ryx', 'ry', 'ryp', 'ryrx', 'ryr', + 'jit', 'jix', 'ji', 'jip', 'jiet', 'jiex', 'jie', 'jiep', 'juot', 'juox', 'juo', 'juop', 'jot', 'jox', 'jo', 'jop', + 'jut', 'jux', 'ju', 'jup', 'jurx', 'jur', 'jyt', 'jyx', 'jy', 'jyp', 'jyrx', 'jyr', 'qit', 'qix', 'qi', 'qip'), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/xa4.php b/NEUE DATEIEN/includes/classes/transliteration/xa4.php new file mode 100644 index 0000000..26df9ba --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/xa4.php @@ -0,0 +1,21 @@ + array('qiet', 'qiex', 'qie', 'qiep', 'quot', 'quox', 'quo', 'quop', 'qot', 'qox', 'qo', 'qop', 'qut', 'qux', 'qu', 'qup', + 'qurx', 'qur', 'qyt', 'qyx', 'qy', 'qyp', 'qyrx', 'qyr', 'jjit', 'jjix', 'jji', 'jjip', 'jjiet', 'jjiex', 'jjie', 'jjiep', + 'jjuox', 'jjuo', 'jjuop', 'jjot', 'jjox', 'jjo', 'jjop', 'jjut', 'jjux', 'jju', 'jjup', 'jjurx', 'jjur', 'jjyt', 'jjyx', 'jjy', + 'jjyp', 'njit', 'njix', 'nji', 'njip', 'njiet', 'njiex', 'njie', 'njiep', 'njuox', 'njuo', 'njot', 'njox', 'njo', 'njop', 'njux', + 'nju', 'njup', 'njurx', 'njur', 'njyt', 'njyx', 'njy', 'njyp', 'njyrx', 'njyr', 'nyit', 'nyix', 'nyi', 'nyip', 'nyiet', 'nyiex', + 'nyie', 'nyiep', 'nyuox', 'nyuo', 'nyuop', 'nyot', 'nyox', 'nyo', 'nyop', 'nyut', 'nyux', 'nyu', 'nyup', 'xit', 'xix', 'xi', + 'xip', 'xiet', 'xiex', 'xie', 'xiep', 'xuox', 'xuo', 'xot', 'xox', 'xo', 'xop', 'xyt', 'xyx', 'xy', 'xyp', 'xyrx', + 'xyr', 'yit', 'yix', 'yi', 'yip', 'yiet', 'yiex', 'yie', 'yiep', 'yuot', 'yuox', 'yuo', 'yuop', 'yot', 'yox', 'yo', + 'yop', 'yut', 'yux', 'yu', 'yup', 'yurx', 'yur', 'yyt', 'yyx', 'yy', 'yyp', 'yyrx', 'yyr', NULL, NULL, NULL, + 'Qot', 'Li', 'Kit', 'Nyip', 'Cyp', 'Ssi', 'Ggop', 'Gep', 'Mi', 'Hxit', 'Lyr', 'Bbut', 'Mop', 'Yo', 'Put', 'Hxuo', + 'Tat', 'Ga', NULL, NULL, 'Ddur', 'Bur', 'Gguo', 'Nyop', 'Tu', 'Op', 'Jjut', 'Zot', 'Pyt', 'Hmo', 'Yit', 'Vur', + 'Shy', 'Vep', 'Za', 'Jo', NULL, 'Jjy', 'Got', 'Jjie', 'Wo', 'Du', 'Shur', 'Lie', 'Cy', 'Cuop', 'Cip', 'Hxop', + 'Shat', NULL, 'Shop', 'Che', 'Zziet', NULL, 'Ke', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/xac.php b/NEUE DATEIEN/includes/classes/transliteration/xac.php new file mode 100644 index 0000000..942d3de --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/xac.php @@ -0,0 +1,21 @@ + array('ga', 'gag', 'gagg', 'gags', 'gan', 'ganj', 'ganh', 'gad', 'gal', 'galg', 'galm', 'galb', 'gals', 'galt', 'galp', 'galh', + 'gam', 'gab', 'gabs', 'gas', 'gass', 'gang', 'gaj', 'gac', 'gak', 'gat', 'gap', 'gah', 'gae', 'gaeg', 'gaegg', 'gaegs', + 'gaen', 'gaenj', 'gaenh', 'gaed', 'gael', 'gaelg', 'gaelm', 'gaelb', 'gaels', 'gaelt', 'gaelp', 'gaelh', 'gaem', 'gaeb', 'gaebs', 'gaes', + 'gaess', 'gaeng', 'gaej', 'gaec', 'gaek', 'gaet', 'gaep', 'gaeh', 'gya', 'gyag', 'gyagg', 'gyags', 'gyan', 'gyanj', 'gyanh', 'gyad', + 'gyal', 'gyalg', 'gyalm', 'gyalb', 'gyals', 'gyalt', 'gyalp', 'gyalh', 'gyam', 'gyab', 'gyabs', 'gyas', 'gyass', 'gyang', 'gyaj', 'gyac', + 'gyak', 'gyat', 'gyap', 'gyah', 'gyae', 'gyaeg', 'gyaegg', 'gyaegs', 'gyaen', 'gyaenj', 'gyaenh', 'gyaed', 'gyael', 'gyaelg', 'gyaelm', 'gyaelb', + 'gyaels', 'gyaelt', 'gyaelp', 'gyaelh', 'gyaem', 'gyaeb', 'gyaebs', 'gyaes', 'gyaess', 'gyaeng', 'gyaej', 'gyaec', 'gyaek', 'gyaet', 'gyaep', 'gyaeh', + 'geo', 'geog', 'geogg', 'geogs', 'geon', 'geonj', 'geonh', 'geod', 'geol', 'geolg', 'geolm', 'geolb', 'geols', 'geolt', 'geolp', 'geolh', + 'geom', 'geob', 'geobs', 'geos', 'geoss', 'geong', 'geoj', 'geoc', 'geok', 'geot', 'geop', 'geoh', 'ge', 'geg', 'gegg', 'gegs', + 'gen', 'genj', 'genh', 'ged', 'gel', 'gelg', 'gelm', 'gelb', 'gels', 'gelt', 'gelp', 'gelh', 'gem', 'geb', 'gebs', 'ges', + 'gess', 'geng', 'gej', 'gec', 'gek', 'get', 'gep', 'geh', 'gyeo', 'gyeog', 'gyeogg', 'gyeogs', 'gyeon', 'gyeonj', 'gyeonh', 'gyeod', + 'gyeol', 'gyeolg', 'gyeolm', 'gyeolb', 'gyeols', 'gyeolt', 'gyeolp', 'gyeolh', 'gyeom', 'gyeob', 'gyeobs', 'gyeos', 'gyeoss', 'gyeong', 'gyeoj', 'gyeoc', + 'gyeok', 'gyeot', 'gyeop', 'gyeoh', 'gye', 'gyeg', 'gyegg', 'gyegs', 'gyen', 'gyenj', 'gyenh', 'gyed', 'gyel', 'gyelg', 'gyelm', 'gyelb', + 'gyels', 'gyelt', 'gyelp', 'gyelh', 'gyem', 'gyeb', 'gyebs', 'gyes', 'gyess', 'gyeng', 'gyej', 'gyec', 'gyek', 'gyet', 'gyep', 'gyeh', + 'go', 'gog', 'gogg', 'gogs', 'gon', 'gonj', 'gonh', 'god', 'gol', 'golg', 'golm', 'golb', 'gols', 'golt', 'golp', 'golh', + 'gom', 'gob', 'gobs', 'gos', 'goss', 'gong', 'goj', 'goc', 'gok', 'got', 'gop', 'goh', 'gwa', 'gwag', 'gwagg', 'gwags'), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/xad.php b/NEUE DATEIEN/includes/classes/transliteration/xad.php new file mode 100644 index 0000000..67dc94b --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/xad.php @@ -0,0 +1,21 @@ + array('gwan', 'gwanj', 'gwanh', 'gwad', 'gwal', 'gwalg', 'gwalm', 'gwalb', 'gwals', 'gwalt', 'gwalp', 'gwalh', 'gwam', 'gwab', 'gwabs', 'gwas', + 'gwass', 'gwang', 'gwaj', 'gwac', 'gwak', 'gwat', 'gwap', 'gwah', 'gwae', 'gwaeg', 'gwaegg', 'gwaegs', 'gwaen', 'gwaenj', 'gwaenh', 'gwaed', + 'gwael', 'gwaelg', 'gwaelm', 'gwaelb', 'gwaels', 'gwaelt', 'gwaelp', 'gwaelh', 'gwaem', 'gwaeb', 'gwaebs', 'gwaes', 'gwaess', 'gwaeng', 'gwaej', 'gwaec', + 'gwaek', 'gwaet', 'gwaep', 'gwaeh', 'goe', 'goeg', 'goegg', 'goegs', 'goen', 'goenj', 'goenh', 'goed', 'goel', 'goelg', 'goelm', 'goelb', + 'goels', 'goelt', 'goelp', 'goelh', 'goem', 'goeb', 'goebs', 'goes', 'goess', 'goeng', 'goej', 'goec', 'goek', 'goet', 'goep', 'goeh', + 'gyo', 'gyog', 'gyogg', 'gyogs', 'gyon', 'gyonj', 'gyonh', 'gyod', 'gyol', 'gyolg', 'gyolm', 'gyolb', 'gyols', 'gyolt', 'gyolp', 'gyolh', + 'gyom', 'gyob', 'gyobs', 'gyos', 'gyoss', 'gyong', 'gyoj', 'gyoc', 'gyok', 'gyot', 'gyop', 'gyoh', 'gu', 'gug', 'gugg', 'gugs', + 'gun', 'gunj', 'gunh', 'gud', 'gul', 'gulg', 'gulm', 'gulb', 'guls', 'gult', 'gulp', 'gulh', 'gum', 'gub', 'gubs', 'gus', + 'guss', 'gung', 'guj', 'guc', 'guk', 'gut', 'gup', 'guh', 'gweo', 'gweog', 'gweogg', 'gweogs', 'gweon', 'gweonj', 'gweonh', 'gweod', + 'gweol', 'gweolg', 'gweolm', 'gweolb', 'gweols', 'gweolt', 'gweolp', 'gweolh', 'gweom', 'gweob', 'gweobs', 'gweos', 'gweoss', 'gweong', 'gweoj', 'gweoc', + 'gweok', 'gweot', 'gweop', 'gweoh', 'gwe', 'gweg', 'gwegg', 'gwegs', 'gwen', 'gwenj', 'gwenh', 'gwed', 'gwel', 'gwelg', 'gwelm', 'gwelb', + 'gwels', 'gwelt', 'gwelp', 'gwelh', 'gwem', 'gweb', 'gwebs', 'gwes', 'gwess', 'gweng', 'gwej', 'gwec', 'gwek', 'gwet', 'gwep', 'gweh', + 'gwi', 'gwig', 'gwigg', 'gwigs', 'gwin', 'gwinj', 'gwinh', 'gwid', 'gwil', 'gwilg', 'gwilm', 'gwilb', 'gwils', 'gwilt', 'gwilp', 'gwilh', + 'gwim', 'gwib', 'gwibs', 'gwis', 'gwiss', 'gwing', 'gwij', 'gwic', 'gwik', 'gwit', 'gwip', 'gwih', 'gyu', 'gyug', 'gyugg', 'gyugs', + 'gyun', 'gyunj', 'gyunh', 'gyud', 'gyul', 'gyulg', 'gyulm', 'gyulb', 'gyuls', 'gyult', 'gyulp', 'gyulh', 'gyum', 'gyub', 'gyubs', 'gyus', + 'gyuss', 'gyung', 'gyuj', 'gyuc', 'gyuk', 'gyut', 'gyup', 'gyuh', 'geu', 'geug', 'geugg', 'geugs', 'geun', 'geunj', 'geunh', 'geud'), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/xae.php b/NEUE DATEIEN/includes/classes/transliteration/xae.php new file mode 100644 index 0000000..d3dffae --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/xae.php @@ -0,0 +1,21 @@ + array('geul', 'geulg', 'geulm', 'geulb', 'geuls', 'geult', 'geulp', 'geulh', 'geum', 'geub', 'geubs', 'geus', 'geuss', 'geung', 'geuj', 'geuc', + 'geuk', 'geut', 'geup', 'geuh', 'gyi', 'gyig', 'gyigg', 'gyigs', 'gyin', 'gyinj', 'gyinh', 'gyid', 'gyil', 'gyilg', 'gyilm', 'gyilb', + 'gyils', 'gyilt', 'gyilp', 'gyilh', 'gyim', 'gyib', 'gyibs', 'gyis', 'gyiss', 'gying', 'gyij', 'gyic', 'gyik', 'gyit', 'gyip', 'gyih', + 'gi', 'gig', 'gigg', 'gigs', 'gin', 'ginj', 'ginh', 'gid', 'gil', 'gilg', 'gilm', 'gilb', 'gils', 'gilt', 'gilp', 'gilh', + 'gim', 'gib', 'gibs', 'gis', 'giss', 'ging', 'gij', 'gic', 'gik', 'git', 'gip', 'gih', 'gga', 'ggag', 'ggagg', 'ggags', + 'ggan', 'gganj', 'gganh', 'ggad', 'ggal', 'ggalg', 'ggalm', 'ggalb', 'ggals', 'ggalt', 'ggalp', 'ggalh', 'ggam', 'ggab', 'ggabs', 'ggas', + 'ggass', 'ggang', 'ggaj', 'ggac', 'ggak', 'ggat', 'ggap', 'ggah', 'ggae', 'ggaeg', 'ggaegg', 'ggaegs', 'ggaen', 'ggaenj', 'ggaenh', 'ggaed', + 'ggael', 'ggaelg', 'ggaelm', 'ggaelb', 'ggaels', 'ggaelt', 'ggaelp', 'ggaelh', 'ggaem', 'ggaeb', 'ggaebs', 'ggaes', 'ggaess', 'ggaeng', 'ggaej', 'ggaec', + 'ggaek', 'ggaet', 'ggaep', 'ggaeh', 'ggya', 'ggyag', 'ggyagg', 'ggyags', 'ggyan', 'ggyanj', 'ggyanh', 'ggyad', 'ggyal', 'ggyalg', 'ggyalm', 'ggyalb', + 'ggyals', 'ggyalt', 'ggyalp', 'ggyalh', 'ggyam', 'ggyab', 'ggyabs', 'ggyas', 'ggyass', 'ggyang', 'ggyaj', 'ggyac', 'ggyak', 'ggyat', 'ggyap', 'ggyah', + 'ggyae', 'ggyaeg', 'ggyaegg', 'ggyaegs', 'ggyaen', 'ggyaenj', 'ggyaenh', 'ggyaed', 'ggyael', 'ggyaelg', 'ggyaelm', 'ggyaelb', 'ggyaels', 'ggyaelt', 'ggyaelp', 'ggyaelh', + 'ggyaem', 'ggyaeb', 'ggyaebs', 'ggyaes', 'ggyaess', 'ggyaeng', 'ggyaej', 'ggyaec', 'ggyaek', 'ggyaet', 'ggyaep', 'ggyaeh', 'ggeo', 'ggeog', 'ggeogg', 'ggeogs', + 'ggeon', 'ggeonj', 'ggeonh', 'ggeod', 'ggeol', 'ggeolg', 'ggeolm', 'ggeolb', 'ggeols', 'ggeolt', 'ggeolp', 'ggeolh', 'ggeom', 'ggeob', 'ggeobs', 'ggeos', + 'ggeoss', 'ggeong', 'ggeoj', 'ggeoc', 'ggeok', 'ggeot', 'ggeop', 'ggeoh', 'gge', 'ggeg', 'ggegg', 'ggegs', 'ggen', 'ggenj', 'ggenh', 'gged', + 'ggel', 'ggelg', 'ggelm', 'ggelb', 'ggels', 'ggelt', 'ggelp', 'ggelh', 'ggem', 'ggeb', 'ggebs', 'gges', 'ggess', 'ggeng', 'ggej', 'ggec', + 'ggek', 'gget', 'ggep', 'ggeh', 'ggyeo', 'ggyeog', 'ggyeogg', 'ggyeogs', 'ggyeon', 'ggyeonj', 'ggyeonh', 'ggyeod', 'ggyeol', 'ggyeolg', 'ggyeolm', 'ggyeolb'), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/xaf.php b/NEUE DATEIEN/includes/classes/transliteration/xaf.php new file mode 100644 index 0000000..5fb64df --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/xaf.php @@ -0,0 +1,21 @@ + array('ggyeols', 'ggyeolt', 'ggyeolp', 'ggyeolh', 'ggyeom', 'ggyeob', 'ggyeobs', 'ggyeos', 'ggyeoss', 'ggyeong', 'ggyeoj', 'ggyeoc', 'ggyeok', 'ggyeot', 'ggyeop', 'ggyeoh', + 'ggye', 'ggyeg', 'ggyegg', 'ggyegs', 'ggyen', 'ggyenj', 'ggyenh', 'ggyed', 'ggyel', 'ggyelg', 'ggyelm', 'ggyelb', 'ggyels', 'ggyelt', 'ggyelp', 'ggyelh', + 'ggyem', 'ggyeb', 'ggyebs', 'ggyes', 'ggyess', 'ggyeng', 'ggyej', 'ggyec', 'ggyek', 'ggyet', 'ggyep', 'ggyeh', 'ggo', 'ggog', 'ggogg', 'ggogs', + 'ggon', 'ggonj', 'ggonh', 'ggod', 'ggol', 'ggolg', 'ggolm', 'ggolb', 'ggols', 'ggolt', 'ggolp', 'ggolh', 'ggom', 'ggob', 'ggobs', 'ggos', + 'ggoss', 'ggong', 'ggoj', 'ggoc', 'ggok', 'ggot', 'ggop', 'ggoh', 'ggwa', 'ggwag', 'ggwagg', 'ggwags', 'ggwan', 'ggwanj', 'ggwanh', 'ggwad', + 'ggwal', 'ggwalg', 'ggwalm', 'ggwalb', 'ggwals', 'ggwalt', 'ggwalp', 'ggwalh', 'ggwam', 'ggwab', 'ggwabs', 'ggwas', 'ggwass', 'ggwang', 'ggwaj', 'ggwac', + 'ggwak', 'ggwat', 'ggwap', 'ggwah', 'ggwae', 'ggwaeg', 'ggwaegg', 'ggwaegs', 'ggwaen', 'ggwaenj', 'ggwaenh', 'ggwaed', 'ggwael', 'ggwaelg', 'ggwaelm', 'ggwaelb', + 'ggwaels', 'ggwaelt', 'ggwaelp', 'ggwaelh', 'ggwaem', 'ggwaeb', 'ggwaebs', 'ggwaes', 'ggwaess', 'ggwaeng', 'ggwaej', 'ggwaec', 'ggwaek', 'ggwaet', 'ggwaep', 'ggwaeh', + 'ggoe', 'ggoeg', 'ggoegg', 'ggoegs', 'ggoen', 'ggoenj', 'ggoenh', 'ggoed', 'ggoel', 'ggoelg', 'ggoelm', 'ggoelb', 'ggoels', 'ggoelt', 'ggoelp', 'ggoelh', + 'ggoem', 'ggoeb', 'ggoebs', 'ggoes', 'ggoess', 'ggoeng', 'ggoej', 'ggoec', 'ggoek', 'ggoet', 'ggoep', 'ggoeh', 'ggyo', 'ggyog', 'ggyogg', 'ggyogs', + 'ggyon', 'ggyonj', 'ggyonh', 'ggyod', 'ggyol', 'ggyolg', 'ggyolm', 'ggyolb', 'ggyols', 'ggyolt', 'ggyolp', 'ggyolh', 'ggyom', 'ggyob', 'ggyobs', 'ggyos', + 'ggyoss', 'ggyong', 'ggyoj', 'ggyoc', 'ggyok', 'ggyot', 'ggyop', 'ggyoh', 'ggu', 'ggug', 'ggugg', 'ggugs', 'ggun', 'ggunj', 'ggunh', 'ggud', + 'ggul', 'ggulg', 'ggulm', 'ggulb', 'gguls', 'ggult', 'ggulp', 'ggulh', 'ggum', 'ggub', 'ggubs', 'ggus', 'gguss', 'ggung', 'gguj', 'gguc', + 'gguk', 'ggut', 'ggup', 'gguh', 'ggweo', 'ggweog', 'ggweogg', 'ggweogs', 'ggweon', 'ggweonj', 'ggweonh', 'ggweod', 'ggweol', 'ggweolg', 'ggweolm', 'ggweolb', + 'ggweols', 'ggweolt', 'ggweolp', 'ggweolh', 'ggweom', 'ggweob', 'ggweobs', 'ggweos', 'ggweoss', 'ggweong', 'ggweoj', 'ggweoc', 'ggweok', 'ggweot', 'ggweop', 'ggweoh', + 'ggwe', 'ggweg', 'ggwegg', 'ggwegs', 'ggwen', 'ggwenj', 'ggwenh', 'ggwed', 'ggwel', 'ggwelg', 'ggwelm', 'ggwelb', 'ggwels', 'ggwelt', 'ggwelp', 'ggwelh'), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/xb0.php b/NEUE DATEIEN/includes/classes/transliteration/xb0.php new file mode 100644 index 0000000..2cf8af9 --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/xb0.php @@ -0,0 +1,21 @@ + array('ggwem', 'ggweb', 'ggwebs', 'ggwes', 'ggwess', 'ggweng', 'ggwej', 'ggwec', 'ggwek', 'ggwet', 'ggwep', 'ggweh', 'ggwi', 'ggwig', 'ggwigg', 'ggwigs', + 'ggwin', 'ggwinj', 'ggwinh', 'ggwid', 'ggwil', 'ggwilg', 'ggwilm', 'ggwilb', 'ggwils', 'ggwilt', 'ggwilp', 'ggwilh', 'ggwim', 'ggwib', 'ggwibs', 'ggwis', + 'ggwiss', 'ggwing', 'ggwij', 'ggwic', 'ggwik', 'ggwit', 'ggwip', 'ggwih', 'ggyu', 'ggyug', 'ggyugg', 'ggyugs', 'ggyun', 'ggyunj', 'ggyunh', 'ggyud', + 'ggyul', 'ggyulg', 'ggyulm', 'ggyulb', 'ggyuls', 'ggyult', 'ggyulp', 'ggyulh', 'ggyum', 'ggyub', 'ggyubs', 'ggyus', 'ggyuss', 'ggyung', 'ggyuj', 'ggyuc', + 'ggyuk', 'ggyut', 'ggyup', 'ggyuh', 'ggeu', 'ggeug', 'ggeugg', 'ggeugs', 'ggeun', 'ggeunj', 'ggeunh', 'ggeud', 'ggeul', 'ggeulg', 'ggeulm', 'ggeulb', + 'ggeuls', 'ggeult', 'ggeulp', 'ggeulh', 'ggeum', 'ggeub', 'ggeubs', 'ggeus', 'ggeuss', 'ggeung', 'ggeuj', 'ggeuc', 'ggeuk', 'ggeut', 'ggeup', 'ggeuh', + 'ggyi', 'ggyig', 'ggyigg', 'ggyigs', 'ggyin', 'ggyinj', 'ggyinh', 'ggyid', 'ggyil', 'ggyilg', 'ggyilm', 'ggyilb', 'ggyils', 'ggyilt', 'ggyilp', 'ggyilh', + 'ggyim', 'ggyib', 'ggyibs', 'ggyis', 'ggyiss', 'ggying', 'ggyij', 'ggyic', 'ggyik', 'ggyit', 'ggyip', 'ggyih', 'ggi', 'ggig', 'ggigg', 'ggigs', + 'ggin', 'gginj', 'gginh', 'ggid', 'ggil', 'ggilg', 'ggilm', 'ggilb', 'ggils', 'ggilt', 'ggilp', 'ggilh', 'ggim', 'ggib', 'ggibs', 'ggis', + 'ggiss', 'gging', 'ggij', 'ggic', 'ggik', 'ggit', 'ggip', 'ggih', 'na', 'nag', 'nagg', 'nags', 'nan', 'nanj', 'nanh', 'nad', + 'nal', 'nalg', 'nalm', 'nalb', 'nals', 'nalt', 'nalp', 'nalh', 'nam', 'nab', 'nabs', 'nas', 'nass', 'nang', 'naj', 'nac', + 'nak', 'nat', 'nap', 'nah', 'nae', 'naeg', 'naegg', 'naegs', 'naen', 'naenj', 'naenh', 'naed', 'nael', 'naelg', 'naelm', 'naelb', + 'naels', 'naelt', 'naelp', 'naelh', 'naem', 'naeb', 'naebs', 'naes', 'naess', 'naeng', 'naej', 'naec', 'naek', 'naet', 'naep', 'naeh', + 'nya', 'nyag', 'nyagg', 'nyags', 'nyan', 'nyanj', 'nyanh', 'nyad', 'nyal', 'nyalg', 'nyalm', 'nyalb', 'nyals', 'nyalt', 'nyalp', 'nyalh', + 'nyam', 'nyab', 'nyabs', 'nyas', 'nyass', 'nyang', 'nyaj', 'nyac', 'nyak', 'nyat', 'nyap', 'nyah', 'nyae', 'nyaeg', 'nyaegg', 'nyaegs', + 'nyaen', 'nyaenj', 'nyaenh', 'nyaed', 'nyael', 'nyaelg', 'nyaelm', 'nyaelb', 'nyaels', 'nyaelt', 'nyaelp', 'nyaelh', 'nyaem', 'nyaeb', 'nyaebs', 'nyaes'), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/xb1.php b/NEUE DATEIEN/includes/classes/transliteration/xb1.php new file mode 100644 index 0000000..f2c549e --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/xb1.php @@ -0,0 +1,21 @@ + array('nyaess', 'nyaeng', 'nyaej', 'nyaec', 'nyaek', 'nyaet', 'nyaep', 'nyaeh', 'neo', 'neog', 'neogg', 'neogs', 'neon', 'neonj', 'neonh', 'neod', + 'neol', 'neolg', 'neolm', 'neolb', 'neols', 'neolt', 'neolp', 'neolh', 'neom', 'neob', 'neobs', 'neos', 'neoss', 'neong', 'neoj', 'neoc', + 'neok', 'neot', 'neop', 'neoh', 'ne', 'neg', 'negg', 'negs', 'nen', 'nenj', 'nenh', 'ned', 'nel', 'nelg', 'nelm', 'nelb', + 'nels', 'nelt', 'nelp', 'nelh', 'nem', 'neb', 'nebs', 'nes', 'ness', 'neng', 'nej', 'nec', 'nek', 'net', 'nep', 'neh', + 'nyeo', 'nyeog', 'nyeogg', 'nyeogs', 'nyeon', 'nyeonj', 'nyeonh', 'nyeod', 'nyeol', 'nyeolg', 'nyeolm', 'nyeolb', 'nyeols', 'nyeolt', 'nyeolp', 'nyeolh', + 'nyeom', 'nyeob', 'nyeobs', 'nyeos', 'nyeoss', 'nyeong', 'nyeoj', 'nyeoc', 'nyeok', 'nyeot', 'nyeop', 'nyeoh', 'nye', 'nyeg', 'nyegg', 'nyegs', + 'nyen', 'nyenj', 'nyenh', 'nyed', 'nyel', 'nyelg', 'nyelm', 'nyelb', 'nyels', 'nyelt', 'nyelp', 'nyelh', 'nyem', 'nyeb', 'nyebs', 'nyes', + 'nyess', 'nyeng', 'nyej', 'nyec', 'nyek', 'nyet', 'nyep', 'nyeh', 'no', 'nog', 'nogg', 'nogs', 'non', 'nonj', 'nonh', 'nod', + 'nol', 'nolg', 'nolm', 'nolb', 'nols', 'nolt', 'nolp', 'nolh', 'nom', 'nob', 'nobs', 'nos', 'noss', 'nong', 'noj', 'noc', + 'nok', 'not', 'nop', 'noh', 'nwa', 'nwag', 'nwagg', 'nwags', 'nwan', 'nwanj', 'nwanh', 'nwad', 'nwal', 'nwalg', 'nwalm', 'nwalb', + 'nwals', 'nwalt', 'nwalp', 'nwalh', 'nwam', 'nwab', 'nwabs', 'nwas', 'nwass', 'nwang', 'nwaj', 'nwac', 'nwak', 'nwat', 'nwap', 'nwah', + 'nwae', 'nwaeg', 'nwaegg', 'nwaegs', 'nwaen', 'nwaenj', 'nwaenh', 'nwaed', 'nwael', 'nwaelg', 'nwaelm', 'nwaelb', 'nwaels', 'nwaelt', 'nwaelp', 'nwaelh', + 'nwaem', 'nwaeb', 'nwaebs', 'nwaes', 'nwaess', 'nwaeng', 'nwaej', 'nwaec', 'nwaek', 'nwaet', 'nwaep', 'nwaeh', 'noe', 'noeg', 'noegg', 'noegs', + 'noen', 'noenj', 'noenh', 'noed', 'noel', 'noelg', 'noelm', 'noelb', 'noels', 'noelt', 'noelp', 'noelh', 'noem', 'noeb', 'noebs', 'noes', + 'noess', 'noeng', 'noej', 'noec', 'noek', 'noet', 'noep', 'noeh', 'nyo', 'nyog', 'nyogg', 'nyogs', 'nyon', 'nyonj', 'nyonh', 'nyod', + 'nyol', 'nyolg', 'nyolm', 'nyolb', 'nyols', 'nyolt', 'nyolp', 'nyolh', 'nyom', 'nyob', 'nyobs', 'nyos', 'nyoss', 'nyong', 'nyoj', 'nyoc'), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/xb2.php b/NEUE DATEIEN/includes/classes/transliteration/xb2.php new file mode 100644 index 0000000..9387bdd --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/xb2.php @@ -0,0 +1,21 @@ + array('nyok', 'nyot', 'nyop', 'nyoh', 'nu', 'nug', 'nugg', 'nugs', 'nun', 'nunj', 'nunh', 'nud', 'nul', 'nulg', 'nulm', 'nulb', + 'nuls', 'nult', 'nulp', 'nulh', 'num', 'nub', 'nubs', 'nus', 'nuss', 'nung', 'nuj', 'nuc', 'nuk', 'nut', 'nup', 'nuh', + 'nweo', 'nweog', 'nweogg', 'nweogs', 'nweon', 'nweonj', 'nweonh', 'nweod', 'nweol', 'nweolg', 'nweolm', 'nweolb', 'nweols', 'nweolt', 'nweolp', 'nweolh', + 'nweom', 'nweob', 'nweobs', 'nweos', 'nweoss', 'nweong', 'nweoj', 'nweoc', 'nweok', 'nweot', 'nweop', 'nweoh', 'nwe', 'nweg', 'nwegg', 'nwegs', + 'nwen', 'nwenj', 'nwenh', 'nwed', 'nwel', 'nwelg', 'nwelm', 'nwelb', 'nwels', 'nwelt', 'nwelp', 'nwelh', 'nwem', 'nweb', 'nwebs', 'nwes', + 'nwess', 'nweng', 'nwej', 'nwec', 'nwek', 'nwet', 'nwep', 'nweh', 'nwi', 'nwig', 'nwigg', 'nwigs', 'nwin', 'nwinj', 'nwinh', 'nwid', + 'nwil', 'nwilg', 'nwilm', 'nwilb', 'nwils', 'nwilt', 'nwilp', 'nwilh', 'nwim', 'nwib', 'nwibs', 'nwis', 'nwiss', 'nwing', 'nwij', 'nwic', + 'nwik', 'nwit', 'nwip', 'nwih', 'nyu', 'nyug', 'nyugg', 'nyugs', 'nyun', 'nyunj', 'nyunh', 'nyud', 'nyul', 'nyulg', 'nyulm', 'nyulb', + 'nyuls', 'nyult', 'nyulp', 'nyulh', 'nyum', 'nyub', 'nyubs', 'nyus', 'nyuss', 'nyung', 'nyuj', 'nyuc', 'nyuk', 'nyut', 'nyup', 'nyuh', + 'neu', 'neug', 'neugg', 'neugs', 'neun', 'neunj', 'neunh', 'neud', 'neul', 'neulg', 'neulm', 'neulb', 'neuls', 'neult', 'neulp', 'neulh', + 'neum', 'neub', 'neubs', 'neus', 'neuss', 'neung', 'neuj', 'neuc', 'neuk', 'neut', 'neup', 'neuh', 'nyi', 'nyig', 'nyigg', 'nyigs', + 'nyin', 'nyinj', 'nyinh', 'nyid', 'nyil', 'nyilg', 'nyilm', 'nyilb', 'nyils', 'nyilt', 'nyilp', 'nyilh', 'nyim', 'nyib', 'nyibs', 'nyis', + 'nyiss', 'nying', 'nyij', 'nyic', 'nyik', 'nyit', 'nyip', 'nyih', 'ni', 'nig', 'nigg', 'nigs', 'nin', 'ninj', 'ninh', 'nid', + 'nil', 'nilg', 'nilm', 'nilb', 'nils', 'nilt', 'nilp', 'nilh', 'nim', 'nib', 'nibs', 'nis', 'niss', 'ning', 'nij', 'nic', + 'nik', 'nit', 'nip', 'nih', 'da', 'dag', 'dagg', 'dags', 'dan', 'danj', 'danh', 'dad', 'dal', 'dalg', 'dalm', 'dalb', + 'dals', 'dalt', 'dalp', 'dalh', 'dam', 'dab', 'dabs', 'das', 'dass', 'dang', 'daj', 'dac', 'dak', 'dat', 'dap', 'dah'), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/xb3.php b/NEUE DATEIEN/includes/classes/transliteration/xb3.php new file mode 100644 index 0000000..35228f0 --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/xb3.php @@ -0,0 +1,21 @@ + array('dae', 'daeg', 'daegg', 'daegs', 'daen', 'daenj', 'daenh', 'daed', 'dael', 'daelg', 'daelm', 'daelb', 'daels', 'daelt', 'daelp', 'daelh', + 'daem', 'daeb', 'daebs', 'daes', 'daess', 'daeng', 'daej', 'daec', 'daek', 'daet', 'daep', 'daeh', 'dya', 'dyag', 'dyagg', 'dyags', + 'dyan', 'dyanj', 'dyanh', 'dyad', 'dyal', 'dyalg', 'dyalm', 'dyalb', 'dyals', 'dyalt', 'dyalp', 'dyalh', 'dyam', 'dyab', 'dyabs', 'dyas', + 'dyass', 'dyang', 'dyaj', 'dyac', 'dyak', 'dyat', 'dyap', 'dyah', 'dyae', 'dyaeg', 'dyaegg', 'dyaegs', 'dyaen', 'dyaenj', 'dyaenh', 'dyaed', + 'dyael', 'dyaelg', 'dyaelm', 'dyaelb', 'dyaels', 'dyaelt', 'dyaelp', 'dyaelh', 'dyaem', 'dyaeb', 'dyaebs', 'dyaes', 'dyaess', 'dyaeng', 'dyaej', 'dyaec', + 'dyaek', 'dyaet', 'dyaep', 'dyaeh', 'deo', 'deog', 'deogg', 'deogs', 'deon', 'deonj', 'deonh', 'deod', 'deol', 'deolg', 'deolm', 'deolb', + 'deols', 'deolt', 'deolp', 'deolh', 'deom', 'deob', 'deobs', 'deos', 'deoss', 'deong', 'deoj', 'deoc', 'deok', 'deot', 'deop', 'deoh', + 'de', 'deg', 'degg', 'degs', 'den', 'denj', 'denh', 'ded', 'del', 'delg', 'delm', 'delb', 'dels', 'delt', 'delp', 'delh', + 'dem', 'deb', 'debs', 'des', 'dess', 'deng', 'dej', 'dec', 'dek', 'det', 'dep', 'deh', 'dyeo', 'dyeog', 'dyeogg', 'dyeogs', + 'dyeon', 'dyeonj', 'dyeonh', 'dyeod', 'dyeol', 'dyeolg', 'dyeolm', 'dyeolb', 'dyeols', 'dyeolt', 'dyeolp', 'dyeolh', 'dyeom', 'dyeob', 'dyeobs', 'dyeos', + 'dyeoss', 'dyeong', 'dyeoj', 'dyeoc', 'dyeok', 'dyeot', 'dyeop', 'dyeoh', 'dye', 'dyeg', 'dyegg', 'dyegs', 'dyen', 'dyenj', 'dyenh', 'dyed', + 'dyel', 'dyelg', 'dyelm', 'dyelb', 'dyels', 'dyelt', 'dyelp', 'dyelh', 'dyem', 'dyeb', 'dyebs', 'dyes', 'dyess', 'dyeng', 'dyej', 'dyec', + 'dyek', 'dyet', 'dyep', 'dyeh', 'do', 'dog', 'dogg', 'dogs', 'don', 'donj', 'donh', 'dod', 'dol', 'dolg', 'dolm', 'dolb', + 'dols', 'dolt', 'dolp', 'dolh', 'dom', 'dob', 'dobs', 'dos', 'doss', 'dong', 'doj', 'doc', 'dok', 'dot', 'dop', 'doh', + 'dwa', 'dwag', 'dwagg', 'dwags', 'dwan', 'dwanj', 'dwanh', 'dwad', 'dwal', 'dwalg', 'dwalm', 'dwalb', 'dwals', 'dwalt', 'dwalp', 'dwalh', + 'dwam', 'dwab', 'dwabs', 'dwas', 'dwass', 'dwang', 'dwaj', 'dwac', 'dwak', 'dwat', 'dwap', 'dwah', 'dwae', 'dwaeg', 'dwaegg', 'dwaegs'), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/xb4.php b/NEUE DATEIEN/includes/classes/transliteration/xb4.php new file mode 100644 index 0000000..ab67e3e --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/xb4.php @@ -0,0 +1,21 @@ + array('dwaen', 'dwaenj', 'dwaenh', 'dwaed', 'dwael', 'dwaelg', 'dwaelm', 'dwaelb', 'dwaels', 'dwaelt', 'dwaelp', 'dwaelh', 'dwaem', 'dwaeb', 'dwaebs', 'dwaes', + 'dwaess', 'dwaeng', 'dwaej', 'dwaec', 'dwaek', 'dwaet', 'dwaep', 'dwaeh', 'doe', 'doeg', 'doegg', 'doegs', 'doen', 'doenj', 'doenh', 'doed', + 'doel', 'doelg', 'doelm', 'doelb', 'doels', 'doelt', 'doelp', 'doelh', 'doem', 'doeb', 'doebs', 'does', 'doess', 'doeng', 'doej', 'doec', + 'doek', 'doet', 'doep', 'doeh', 'dyo', 'dyog', 'dyogg', 'dyogs', 'dyon', 'dyonj', 'dyonh', 'dyod', 'dyol', 'dyolg', 'dyolm', 'dyolb', + 'dyols', 'dyolt', 'dyolp', 'dyolh', 'dyom', 'dyob', 'dyobs', 'dyos', 'dyoss', 'dyong', 'dyoj', 'dyoc', 'dyok', 'dyot', 'dyop', 'dyoh', + 'du', 'dug', 'dugg', 'dugs', 'dun', 'dunj', 'dunh', 'dud', 'dul', 'dulg', 'dulm', 'dulb', 'duls', 'dult', 'dulp', 'dulh', + 'dum', 'dub', 'dubs', 'dus', 'duss', 'dung', 'duj', 'duc', 'duk', 'dut', 'dup', 'duh', 'dweo', 'dweog', 'dweogg', 'dweogs', + 'dweon', 'dweonj', 'dweonh', 'dweod', 'dweol', 'dweolg', 'dweolm', 'dweolb', 'dweols', 'dweolt', 'dweolp', 'dweolh', 'dweom', 'dweob', 'dweobs', 'dweos', + 'dweoss', 'dweong', 'dweoj', 'dweoc', 'dweok', 'dweot', 'dweop', 'dweoh', 'dwe', 'dweg', 'dwegg', 'dwegs', 'dwen', 'dwenj', 'dwenh', 'dwed', + 'dwel', 'dwelg', 'dwelm', 'dwelb', 'dwels', 'dwelt', 'dwelp', 'dwelh', 'dwem', 'dweb', 'dwebs', 'dwes', 'dwess', 'dweng', 'dwej', 'dwec', + 'dwek', 'dwet', 'dwep', 'dweh', 'dwi', 'dwig', 'dwigg', 'dwigs', 'dwin', 'dwinj', 'dwinh', 'dwid', 'dwil', 'dwilg', 'dwilm', 'dwilb', + 'dwils', 'dwilt', 'dwilp', 'dwilh', 'dwim', 'dwib', 'dwibs', 'dwis', 'dwiss', 'dwing', 'dwij', 'dwic', 'dwik', 'dwit', 'dwip', 'dwih', + 'dyu', 'dyug', 'dyugg', 'dyugs', 'dyun', 'dyunj', 'dyunh', 'dyud', 'dyul', 'dyulg', 'dyulm', 'dyulb', 'dyuls', 'dyult', 'dyulp', 'dyulh', + 'dyum', 'dyub', 'dyubs', 'dyus', 'dyuss', 'dyung', 'dyuj', 'dyuc', 'dyuk', 'dyut', 'dyup', 'dyuh', 'deu', 'deug', 'deugg', 'deugs', + 'deun', 'deunj', 'deunh', 'deud', 'deul', 'deulg', 'deulm', 'deulb', 'deuls', 'deult', 'deulp', 'deulh', 'deum', 'deub', 'deubs', 'deus', + 'deuss', 'deung', 'deuj', 'deuc', 'deuk', 'deut', 'deup', 'deuh', 'dyi', 'dyig', 'dyigg', 'dyigs', 'dyin', 'dyinj', 'dyinh', 'dyid'), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/xb5.php b/NEUE DATEIEN/includes/classes/transliteration/xb5.php new file mode 100644 index 0000000..8afd551 --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/xb5.php @@ -0,0 +1,21 @@ + array('dyil', 'dyilg', 'dyilm', 'dyilb', 'dyils', 'dyilt', 'dyilp', 'dyilh', 'dyim', 'dyib', 'dyibs', 'dyis', 'dyiss', 'dying', 'dyij', 'dyic', + 'dyik', 'dyit', 'dyip', 'dyih', 'di', 'dig', 'digg', 'digs', 'din', 'dinj', 'dinh', 'did', 'dil', 'dilg', 'dilm', 'dilb', + 'dils', 'dilt', 'dilp', 'dilh', 'dim', 'dib', 'dibs', 'dis', 'diss', 'ding', 'dij', 'dic', 'dik', 'dit', 'dip', 'dih', + 'dda', 'ddag', 'ddagg', 'ddags', 'ddan', 'ddanj', 'ddanh', 'ddad', 'ddal', 'ddalg', 'ddalm', 'ddalb', 'ddals', 'ddalt', 'ddalp', 'ddalh', + 'ddam', 'ddab', 'ddabs', 'ddas', 'ddass', 'ddang', 'ddaj', 'ddac', 'ddak', 'ddat', 'ddap', 'ddah', 'ddae', 'ddaeg', 'ddaegg', 'ddaegs', + 'ddaen', 'ddaenj', 'ddaenh', 'ddaed', 'ddael', 'ddaelg', 'ddaelm', 'ddaelb', 'ddaels', 'ddaelt', 'ddaelp', 'ddaelh', 'ddaem', 'ddaeb', 'ddaebs', 'ddaes', + 'ddaess', 'ddaeng', 'ddaej', 'ddaec', 'ddaek', 'ddaet', 'ddaep', 'ddaeh', 'ddya', 'ddyag', 'ddyagg', 'ddyags', 'ddyan', 'ddyanj', 'ddyanh', 'ddyad', + 'ddyal', 'ddyalg', 'ddyalm', 'ddyalb', 'ddyals', 'ddyalt', 'ddyalp', 'ddyalh', 'ddyam', 'ddyab', 'ddyabs', 'ddyas', 'ddyass', 'ddyang', 'ddyaj', 'ddyac', + 'ddyak', 'ddyat', 'ddyap', 'ddyah', 'ddyae', 'ddyaeg', 'ddyaegg', 'ddyaegs', 'ddyaen', 'ddyaenj', 'ddyaenh', 'ddyaed', 'ddyael', 'ddyaelg', 'ddyaelm', 'ddyaelb', + 'ddyaels', 'ddyaelt', 'ddyaelp', 'ddyaelh', 'ddyaem', 'ddyaeb', 'ddyaebs', 'ddyaes', 'ddyaess', 'ddyaeng', 'ddyaej', 'ddyaec', 'ddyaek', 'ddyaet', 'ddyaep', 'ddyaeh', + 'ddeo', 'ddeog', 'ddeogg', 'ddeogs', 'ddeon', 'ddeonj', 'ddeonh', 'ddeod', 'ddeol', 'ddeolg', 'ddeolm', 'ddeolb', 'ddeols', 'ddeolt', 'ddeolp', 'ddeolh', + 'ddeom', 'ddeob', 'ddeobs', 'ddeos', 'ddeoss', 'ddeong', 'ddeoj', 'ddeoc', 'ddeok', 'ddeot', 'ddeop', 'ddeoh', 'dde', 'ddeg', 'ddegg', 'ddegs', + 'dden', 'ddenj', 'ddenh', 'dded', 'ddel', 'ddelg', 'ddelm', 'ddelb', 'ddels', 'ddelt', 'ddelp', 'ddelh', 'ddem', 'ddeb', 'ddebs', 'ddes', + 'ddess', 'ddeng', 'ddej', 'ddec', 'ddek', 'ddet', 'ddep', 'ddeh', 'ddyeo', 'ddyeog', 'ddyeogg', 'ddyeogs', 'ddyeon', 'ddyeonj', 'ddyeonh', 'ddyeod', + 'ddyeol', 'ddyeolg', 'ddyeolm', 'ddyeolb', 'ddyeols', 'ddyeolt', 'ddyeolp', 'ddyeolh', 'ddyeom', 'ddyeob', 'ddyeobs', 'ddyeos', 'ddyeoss', 'ddyeong', 'ddyeoj', 'ddyeoc', + 'ddyeok', 'ddyeot', 'ddyeop', 'ddyeoh', 'ddye', 'ddyeg', 'ddyegg', 'ddyegs', 'ddyen', 'ddyenj', 'ddyenh', 'ddyed', 'ddyel', 'ddyelg', 'ddyelm', 'ddyelb'), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/xb6.php b/NEUE DATEIEN/includes/classes/transliteration/xb6.php new file mode 100644 index 0000000..c9be4b0 --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/xb6.php @@ -0,0 +1,21 @@ + array('ddyels', 'ddyelt', 'ddyelp', 'ddyelh', 'ddyem', 'ddyeb', 'ddyebs', 'ddyes', 'ddyess', 'ddyeng', 'ddyej', 'ddyec', 'ddyek', 'ddyet', 'ddyep', 'ddyeh', + 'ddo', 'ddog', 'ddogg', 'ddogs', 'ddon', 'ddonj', 'ddonh', 'ddod', 'ddol', 'ddolg', 'ddolm', 'ddolb', 'ddols', 'ddolt', 'ddolp', 'ddolh', + 'ddom', 'ddob', 'ddobs', 'ddos', 'ddoss', 'ddong', 'ddoj', 'ddoc', 'ddok', 'ddot', 'ddop', 'ddoh', 'ddwa', 'ddwag', 'ddwagg', 'ddwags', + 'ddwan', 'ddwanj', 'ddwanh', 'ddwad', 'ddwal', 'ddwalg', 'ddwalm', 'ddwalb', 'ddwals', 'ddwalt', 'ddwalp', 'ddwalh', 'ddwam', 'ddwab', 'ddwabs', 'ddwas', + 'ddwass', 'ddwang', 'ddwaj', 'ddwac', 'ddwak', 'ddwat', 'ddwap', 'ddwah', 'ddwae', 'ddwaeg', 'ddwaegg', 'ddwaegs', 'ddwaen', 'ddwaenj', 'ddwaenh', 'ddwaed', + 'ddwael', 'ddwaelg', 'ddwaelm', 'ddwaelb', 'ddwaels', 'ddwaelt', 'ddwaelp', 'ddwaelh', 'ddwaem', 'ddwaeb', 'ddwaebs', 'ddwaes', 'ddwaess', 'ddwaeng', 'ddwaej', 'ddwaec', + 'ddwaek', 'ddwaet', 'ddwaep', 'ddwaeh', 'ddoe', 'ddoeg', 'ddoegg', 'ddoegs', 'ddoen', 'ddoenj', 'ddoenh', 'ddoed', 'ddoel', 'ddoelg', 'ddoelm', 'ddoelb', + 'ddoels', 'ddoelt', 'ddoelp', 'ddoelh', 'ddoem', 'ddoeb', 'ddoebs', 'ddoes', 'ddoess', 'ddoeng', 'ddoej', 'ddoec', 'ddoek', 'ddoet', 'ddoep', 'ddoeh', + 'ddyo', 'ddyog', 'ddyogg', 'ddyogs', 'ddyon', 'ddyonj', 'ddyonh', 'ddyod', 'ddyol', 'ddyolg', 'ddyolm', 'ddyolb', 'ddyols', 'ddyolt', 'ddyolp', 'ddyolh', + 'ddyom', 'ddyob', 'ddyobs', 'ddyos', 'ddyoss', 'ddyong', 'ddyoj', 'ddyoc', 'ddyok', 'ddyot', 'ddyop', 'ddyoh', 'ddu', 'ddug', 'ddugg', 'ddugs', + 'ddun', 'ddunj', 'ddunh', 'ddud', 'ddul', 'ddulg', 'ddulm', 'ddulb', 'dduls', 'ddult', 'ddulp', 'ddulh', 'ddum', 'ddub', 'ddubs', 'ddus', + 'dduss', 'ddung', 'dduj', 'dduc', 'dduk', 'ddut', 'ddup', 'dduh', 'ddweo', 'ddweog', 'ddweogg', 'ddweogs', 'ddweon', 'ddweonj', 'ddweonh', 'ddweod', + 'ddweol', 'ddweolg', 'ddweolm', 'ddweolb', 'ddweols', 'ddweolt', 'ddweolp', 'ddweolh', 'ddweom', 'ddweob', 'ddweobs', 'ddweos', 'ddweoss', 'ddweong', 'ddweoj', 'ddweoc', + 'ddweok', 'ddweot', 'ddweop', 'ddweoh', 'ddwe', 'ddweg', 'ddwegg', 'ddwegs', 'ddwen', 'ddwenj', 'ddwenh', 'ddwed', 'ddwel', 'ddwelg', 'ddwelm', 'ddwelb', + 'ddwels', 'ddwelt', 'ddwelp', 'ddwelh', 'ddwem', 'ddweb', 'ddwebs', 'ddwes', 'ddwess', 'ddweng', 'ddwej', 'ddwec', 'ddwek', 'ddwet', 'ddwep', 'ddweh', + 'ddwi', 'ddwig', 'ddwigg', 'ddwigs', 'ddwin', 'ddwinj', 'ddwinh', 'ddwid', 'ddwil', 'ddwilg', 'ddwilm', 'ddwilb', 'ddwils', 'ddwilt', 'ddwilp', 'ddwilh'), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/xb7.php b/NEUE DATEIEN/includes/classes/transliteration/xb7.php new file mode 100644 index 0000000..7067aed --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/xb7.php @@ -0,0 +1,21 @@ + array('ddwim', 'ddwib', 'ddwibs', 'ddwis', 'ddwiss', 'ddwing', 'ddwij', 'ddwic', 'ddwik', 'ddwit', 'ddwip', 'ddwih', 'ddyu', 'ddyug', 'ddyugg', 'ddyugs', + 'ddyun', 'ddyunj', 'ddyunh', 'ddyud', 'ddyul', 'ddyulg', 'ddyulm', 'ddyulb', 'ddyuls', 'ddyult', 'ddyulp', 'ddyulh', 'ddyum', 'ddyub', 'ddyubs', 'ddyus', + 'ddyuss', 'ddyung', 'ddyuj', 'ddyuc', 'ddyuk', 'ddyut', 'ddyup', 'ddyuh', 'ddeu', 'ddeug', 'ddeugg', 'ddeugs', 'ddeun', 'ddeunj', 'ddeunh', 'ddeud', + 'ddeul', 'ddeulg', 'ddeulm', 'ddeulb', 'ddeuls', 'ddeult', 'ddeulp', 'ddeulh', 'ddeum', 'ddeub', 'ddeubs', 'ddeus', 'ddeuss', 'ddeung', 'ddeuj', 'ddeuc', + 'ddeuk', 'ddeut', 'ddeup', 'ddeuh', 'ddyi', 'ddyig', 'ddyigg', 'ddyigs', 'ddyin', 'ddyinj', 'ddyinh', 'ddyid', 'ddyil', 'ddyilg', 'ddyilm', 'ddyilb', + 'ddyils', 'ddyilt', 'ddyilp', 'ddyilh', 'ddyim', 'ddyib', 'ddyibs', 'ddyis', 'ddyiss', 'ddying', 'ddyij', 'ddyic', 'ddyik', 'ddyit', 'ddyip', 'ddyih', + 'ddi', 'ddig', 'ddigg', 'ddigs', 'ddin', 'ddinj', 'ddinh', 'ddid', 'ddil', 'ddilg', 'ddilm', 'ddilb', 'ddils', 'ddilt', 'ddilp', 'ddilh', + 'ddim', 'ddib', 'ddibs', 'ddis', 'ddiss', 'dding', 'ddij', 'ddic', 'ddik', 'ddit', 'ddip', 'ddih', 'ra', 'rag', 'ragg', 'rags', + 'ran', 'ranj', 'ranh', 'rad', 'ral', 'ralg', 'ralm', 'ralb', 'rals', 'ralt', 'ralp', 'ralh', 'ram', 'rab', 'rabs', 'ras', + 'rass', 'rang', 'raj', 'rac', 'rak', 'rat', 'rap', 'rah', 'rae', 'raeg', 'raegg', 'raegs', 'raen', 'raenj', 'raenh', 'raed', + 'rael', 'raelg', 'raelm', 'raelb', 'raels', 'raelt', 'raelp', 'raelh', 'raem', 'raeb', 'raebs', 'raes', 'raess', 'raeng', 'raej', 'raec', + 'raek', 'raet', 'raep', 'raeh', 'rya', 'ryag', 'ryagg', 'ryags', 'ryan', 'ryanj', 'ryanh', 'ryad', 'ryal', 'ryalg', 'ryalm', 'ryalb', + 'ryals', 'ryalt', 'ryalp', 'ryalh', 'ryam', 'ryab', 'ryabs', 'ryas', 'ryass', 'ryang', 'ryaj', 'ryac', 'ryak', 'ryat', 'ryap', 'ryah', + 'ryae', 'ryaeg', 'ryaegg', 'ryaegs', 'ryaen', 'ryaenj', 'ryaenh', 'ryaed', 'ryael', 'ryaelg', 'ryaelm', 'ryaelb', 'ryaels', 'ryaelt', 'ryaelp', 'ryaelh', + 'ryaem', 'ryaeb', 'ryaebs', 'ryaes', 'ryaess', 'ryaeng', 'ryaej', 'ryaec', 'ryaek', 'ryaet', 'ryaep', 'ryaeh', 'reo', 'reog', 'reogg', 'reogs', + 'reon', 'reonj', 'reonh', 'reod', 'reol', 'reolg', 'reolm', 'reolb', 'reols', 'reolt', 'reolp', 'reolh', 'reom', 'reob', 'reobs', 'reos'), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/xb8.php b/NEUE DATEIEN/includes/classes/transliteration/xb8.php new file mode 100644 index 0000000..d87f54c --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/xb8.php @@ -0,0 +1,21 @@ + array('reoss', 'reong', 'reoj', 'reoc', 'reok', 'reot', 'reop', 'reoh', 're', 'reg', 'regg', 'regs', 'ren', 'renj', 'renh', 'red', + 'rel', 'relg', 'relm', 'relb', 'rels', 'relt', 'relp', 'relh', 'rem', 'reb', 'rebs', 'res', 'ress', 'reng', 'rej', 'rec', + 'rek', 'ret', 'rep', 'reh', 'ryeo', 'ryeog', 'ryeogg', 'ryeogs', 'ryeon', 'ryeonj', 'ryeonh', 'ryeod', 'ryeol', 'ryeolg', 'ryeolm', 'ryeolb', + 'ryeols', 'ryeolt', 'ryeolp', 'ryeolh', 'ryeom', 'ryeob', 'ryeobs', 'ryeos', 'ryeoss', 'ryeong', 'ryeoj', 'ryeoc', 'ryeok', 'ryeot', 'ryeop', 'ryeoh', + 'rye', 'ryeg', 'ryegg', 'ryegs', 'ryen', 'ryenj', 'ryenh', 'ryed', 'ryel', 'ryelg', 'ryelm', 'ryelb', 'ryels', 'ryelt', 'ryelp', 'ryelh', + 'ryem', 'ryeb', 'ryebs', 'ryes', 'ryess', 'ryeng', 'ryej', 'ryec', 'ryek', 'ryet', 'ryep', 'ryeh', 'ro', 'rog', 'rogg', 'rogs', + 'ron', 'ronj', 'ronh', 'rod', 'rol', 'rolg', 'rolm', 'rolb', 'rols', 'rolt', 'rolp', 'rolh', 'rom', 'rob', 'robs', 'ros', + 'ross', 'rong', 'roj', 'roc', 'rok', 'rot', 'rop', 'roh', 'rwa', 'rwag', 'rwagg', 'rwags', 'rwan', 'rwanj', 'rwanh', 'rwad', + 'rwal', 'rwalg', 'rwalm', 'rwalb', 'rwals', 'rwalt', 'rwalp', 'rwalh', 'rwam', 'rwab', 'rwabs', 'rwas', 'rwass', 'rwang', 'rwaj', 'rwac', + 'rwak', 'rwat', 'rwap', 'rwah', 'rwae', 'rwaeg', 'rwaegg', 'rwaegs', 'rwaen', 'rwaenj', 'rwaenh', 'rwaed', 'rwael', 'rwaelg', 'rwaelm', 'rwaelb', + 'rwaels', 'rwaelt', 'rwaelp', 'rwaelh', 'rwaem', 'rwaeb', 'rwaebs', 'rwaes', 'rwaess', 'rwaeng', 'rwaej', 'rwaec', 'rwaek', 'rwaet', 'rwaep', 'rwaeh', + 'roe', 'roeg', 'roegg', 'roegs', 'roen', 'roenj', 'roenh', 'roed', 'roel', 'roelg', 'roelm', 'roelb', 'roels', 'roelt', 'roelp', 'roelh', + 'roem', 'roeb', 'roebs', 'roes', 'roess', 'roeng', 'roej', 'roec', 'roek', 'roet', 'roep', 'roeh', 'ryo', 'ryog', 'ryogg', 'ryogs', + 'ryon', 'ryonj', 'ryonh', 'ryod', 'ryol', 'ryolg', 'ryolm', 'ryolb', 'ryols', 'ryolt', 'ryolp', 'ryolh', 'ryom', 'ryob', 'ryobs', 'ryos', + 'ryoss', 'ryong', 'ryoj', 'ryoc', 'ryok', 'ryot', 'ryop', 'ryoh', 'ru', 'rug', 'rugg', 'rugs', 'run', 'runj', 'runh', 'rud', + 'rul', 'rulg', 'rulm', 'rulb', 'ruls', 'rult', 'rulp', 'rulh', 'rum', 'rub', 'rubs', 'rus', 'russ', 'rung', 'ruj', 'ruc'), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/xb9.php b/NEUE DATEIEN/includes/classes/transliteration/xb9.php new file mode 100644 index 0000000..b859797 --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/xb9.php @@ -0,0 +1,21 @@ + array('ruk', 'rut', 'rup', 'ruh', 'rweo', 'rweog', 'rweogg', 'rweogs', 'rweon', 'rweonj', 'rweonh', 'rweod', 'rweol', 'rweolg', 'rweolm', 'rweolb', + 'rweols', 'rweolt', 'rweolp', 'rweolh', 'rweom', 'rweob', 'rweobs', 'rweos', 'rweoss', 'rweong', 'rweoj', 'rweoc', 'rweok', 'rweot', 'rweop', 'rweoh', + 'rwe', 'rweg', 'rwegg', 'rwegs', 'rwen', 'rwenj', 'rwenh', 'rwed', 'rwel', 'rwelg', 'rwelm', 'rwelb', 'rwels', 'rwelt', 'rwelp', 'rwelh', + 'rwem', 'rweb', 'rwebs', 'rwes', 'rwess', 'rweng', 'rwej', 'rwec', 'rwek', 'rwet', 'rwep', 'rweh', 'rwi', 'rwig', 'rwigg', 'rwigs', + 'rwin', 'rwinj', 'rwinh', 'rwid', 'rwil', 'rwilg', 'rwilm', 'rwilb', 'rwils', 'rwilt', 'rwilp', 'rwilh', 'rwim', 'rwib', 'rwibs', 'rwis', + 'rwiss', 'rwing', 'rwij', 'rwic', 'rwik', 'rwit', 'rwip', 'rwih', 'ryu', 'ryug', 'ryugg', 'ryugs', 'ryun', 'ryunj', 'ryunh', 'ryud', + 'ryul', 'ryulg', 'ryulm', 'ryulb', 'ryuls', 'ryult', 'ryulp', 'ryulh', 'ryum', 'ryub', 'ryubs', 'ryus', 'ryuss', 'ryung', 'ryuj', 'ryuc', + 'ryuk', 'ryut', 'ryup', 'ryuh', 'reu', 'reug', 'reugg', 'reugs', 'reun', 'reunj', 'reunh', 'reud', 'reul', 'reulg', 'reulm', 'reulb', + 'reuls', 'reult', 'reulp', 'reulh', 'reum', 'reub', 'reubs', 'reus', 'reuss', 'reung', 'reuj', 'reuc', 'reuk', 'reut', 'reup', 'reuh', + 'ryi', 'ryig', 'ryigg', 'ryigs', 'ryin', 'ryinj', 'ryinh', 'ryid', 'ryil', 'ryilg', 'ryilm', 'ryilb', 'ryils', 'ryilt', 'ryilp', 'ryilh', + 'ryim', 'ryib', 'ryibs', 'ryis', 'ryiss', 'rying', 'ryij', 'ryic', 'ryik', 'ryit', 'ryip', 'ryih', 'ri', 'rig', 'rigg', 'rigs', + 'rin', 'rinj', 'rinh', 'rid', 'ril', 'rilg', 'rilm', 'rilb', 'rils', 'rilt', 'rilp', 'rilh', 'rim', 'rib', 'ribs', 'ris', + 'riss', 'ring', 'rij', 'ric', 'rik', 'rit', 'rip', 'rih', 'ma', 'mag', 'magg', 'mags', 'man', 'manj', 'manh', 'mad', + 'mal', 'malg', 'malm', 'malb', 'mals', 'malt', 'malp', 'malh', 'mam', 'mab', 'mabs', 'mas', 'mass', 'mang', 'maj', 'mac', + 'mak', 'mat', 'map', 'mah', 'mae', 'maeg', 'maegg', 'maegs', 'maen', 'maenj', 'maenh', 'maed', 'mael', 'maelg', 'maelm', 'maelb', + 'maels', 'maelt', 'maelp', 'maelh', 'maem', 'maeb', 'maebs', 'maes', 'maess', 'maeng', 'maej', 'maec', 'maek', 'maet', 'maep', 'maeh'), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/xba.php b/NEUE DATEIEN/includes/classes/transliteration/xba.php new file mode 100644 index 0000000..8f7a075 --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/xba.php @@ -0,0 +1,21 @@ + array('mya', 'myag', 'myagg', 'myags', 'myan', 'myanj', 'myanh', 'myad', 'myal', 'myalg', 'myalm', 'myalb', 'myals', 'myalt', 'myalp', 'myalh', + 'myam', 'myab', 'myabs', 'myas', 'myass', 'myang', 'myaj', 'myac', 'myak', 'myat', 'myap', 'myah', 'myae', 'myaeg', 'myaegg', 'myaegs', + 'myaen', 'myaenj', 'myaenh', 'myaed', 'myael', 'myaelg', 'myaelm', 'myaelb', 'myaels', 'myaelt', 'myaelp', 'myaelh', 'myaem', 'myaeb', 'myaebs', 'myaes', + 'myaess', 'myaeng', 'myaej', 'myaec', 'myaek', 'myaet', 'myaep', 'myaeh', 'meo', 'meog', 'meogg', 'meogs', 'meon', 'meonj', 'meonh', 'meod', + 'meol', 'meolg', 'meolm', 'meolb', 'meols', 'meolt', 'meolp', 'meolh', 'meom', 'meob', 'meobs', 'meos', 'meoss', 'meong', 'meoj', 'meoc', + 'meok', 'meot', 'meop', 'meoh', 'me', 'meg', 'megg', 'megs', 'men', 'menj', 'menh', 'med', 'mel', 'melg', 'melm', 'melb', + 'mels', 'melt', 'melp', 'melh', 'mem', 'meb', 'mebs', 'mes', 'mess', 'meng', 'mej', 'mec', 'mek', 'met', 'mep', 'meh', + 'myeo', 'myeog', 'myeogg', 'myeogs', 'myeon', 'myeonj', 'myeonh', 'myeod', 'myeol', 'myeolg', 'myeolm', 'myeolb', 'myeols', 'myeolt', 'myeolp', 'myeolh', + 'myeom', 'myeob', 'myeobs', 'myeos', 'myeoss', 'myeong', 'myeoj', 'myeoc', 'myeok', 'myeot', 'myeop', 'myeoh', 'mye', 'myeg', 'myegg', 'myegs', + 'myen', 'myenj', 'myenh', 'myed', 'myel', 'myelg', 'myelm', 'myelb', 'myels', 'myelt', 'myelp', 'myelh', 'myem', 'myeb', 'myebs', 'myes', + 'myess', 'myeng', 'myej', 'myec', 'myek', 'myet', 'myep', 'myeh', 'mo', 'mog', 'mogg', 'mogs', 'mon', 'monj', 'monh', 'mod', + 'mol', 'molg', 'molm', 'molb', 'mols', 'molt', 'molp', 'molh', 'mom', 'mob', 'mobs', 'mos', 'moss', 'mong', 'moj', 'moc', + 'mok', 'mot', 'mop', 'moh', 'mwa', 'mwag', 'mwagg', 'mwags', 'mwan', 'mwanj', 'mwanh', 'mwad', 'mwal', 'mwalg', 'mwalm', 'mwalb', + 'mwals', 'mwalt', 'mwalp', 'mwalh', 'mwam', 'mwab', 'mwabs', 'mwas', 'mwass', 'mwang', 'mwaj', 'mwac', 'mwak', 'mwat', 'mwap', 'mwah', + 'mwae', 'mwaeg', 'mwaegg', 'mwaegs', 'mwaen', 'mwaenj', 'mwaenh', 'mwaed', 'mwael', 'mwaelg', 'mwaelm', 'mwaelb', 'mwaels', 'mwaelt', 'mwaelp', 'mwaelh', + 'mwaem', 'mwaeb', 'mwaebs', 'mwaes', 'mwaess', 'mwaeng', 'mwaej', 'mwaec', 'mwaek', 'mwaet', 'mwaep', 'mwaeh', 'moe', 'moeg', 'moegg', 'moegs'), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/xbb.php b/NEUE DATEIEN/includes/classes/transliteration/xbb.php new file mode 100644 index 0000000..0b8c2e9 --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/xbb.php @@ -0,0 +1,21 @@ + array('moen', 'moenj', 'moenh', 'moed', 'moel', 'moelg', 'moelm', 'moelb', 'moels', 'moelt', 'moelp', 'moelh', 'moem', 'moeb', 'moebs', 'moes', + 'moess', 'moeng', 'moej', 'moec', 'moek', 'moet', 'moep', 'moeh', 'myo', 'myog', 'myogg', 'myogs', 'myon', 'myonj', 'myonh', 'myod', + 'myol', 'myolg', 'myolm', 'myolb', 'myols', 'myolt', 'myolp', 'myolh', 'myom', 'myob', 'myobs', 'myos', 'myoss', 'myong', 'myoj', 'myoc', + 'myok', 'myot', 'myop', 'myoh', 'mu', 'mug', 'mugg', 'mugs', 'mun', 'munj', 'munh', 'mud', 'mul', 'mulg', 'mulm', 'mulb', + 'muls', 'mult', 'mulp', 'mulh', 'mum', 'mub', 'mubs', 'mus', 'muss', 'mung', 'muj', 'muc', 'muk', 'mut', 'mup', 'muh', + 'mweo', 'mweog', 'mweogg', 'mweogs', 'mweon', 'mweonj', 'mweonh', 'mweod', 'mweol', 'mweolg', 'mweolm', 'mweolb', 'mweols', 'mweolt', 'mweolp', 'mweolh', + 'mweom', 'mweob', 'mweobs', 'mweos', 'mweoss', 'mweong', 'mweoj', 'mweoc', 'mweok', 'mweot', 'mweop', 'mweoh', 'mwe', 'mweg', 'mwegg', 'mwegs', + 'mwen', 'mwenj', 'mwenh', 'mwed', 'mwel', 'mwelg', 'mwelm', 'mwelb', 'mwels', 'mwelt', 'mwelp', 'mwelh', 'mwem', 'mweb', 'mwebs', 'mwes', + 'mwess', 'mweng', 'mwej', 'mwec', 'mwek', 'mwet', 'mwep', 'mweh', 'mwi', 'mwig', 'mwigg', 'mwigs', 'mwin', 'mwinj', 'mwinh', 'mwid', + 'mwil', 'mwilg', 'mwilm', 'mwilb', 'mwils', 'mwilt', 'mwilp', 'mwilh', 'mwim', 'mwib', 'mwibs', 'mwis', 'mwiss', 'mwing', 'mwij', 'mwic', + 'mwik', 'mwit', 'mwip', 'mwih', 'myu', 'myug', 'myugg', 'myugs', 'myun', 'myunj', 'myunh', 'myud', 'myul', 'myulg', 'myulm', 'myulb', + 'myuls', 'myult', 'myulp', 'myulh', 'myum', 'myub', 'myubs', 'myus', 'myuss', 'myung', 'myuj', 'myuc', 'myuk', 'myut', 'myup', 'myuh', + 'meu', 'meug', 'meugg', 'meugs', 'meun', 'meunj', 'meunh', 'meud', 'meul', 'meulg', 'meulm', 'meulb', 'meuls', 'meult', 'meulp', 'meulh', + 'meum', 'meub', 'meubs', 'meus', 'meuss', 'meung', 'meuj', 'meuc', 'meuk', 'meut', 'meup', 'meuh', 'myi', 'myig', 'myigg', 'myigs', + 'myin', 'myinj', 'myinh', 'myid', 'myil', 'myilg', 'myilm', 'myilb', 'myils', 'myilt', 'myilp', 'myilh', 'myim', 'myib', 'myibs', 'myis', + 'myiss', 'mying', 'myij', 'myic', 'myik', 'myit', 'myip', 'myih', 'mi', 'mig', 'migg', 'migs', 'min', 'minj', 'minh', 'mid'), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/xbc.php b/NEUE DATEIEN/includes/classes/transliteration/xbc.php new file mode 100644 index 0000000..ef3825e --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/xbc.php @@ -0,0 +1,21 @@ + array('mil', 'milg', 'milm', 'milb', 'mils', 'milt', 'milp', 'milh', 'mim', 'mib', 'mibs', 'mis', 'miss', 'ming', 'mij', 'mic', + 'mik', 'mit', 'mip', 'mih', 'ba', 'bag', 'bagg', 'bags', 'ban', 'banj', 'banh', 'bad', 'bal', 'balg', 'balm', 'balb', + 'bals', 'balt', 'balp', 'balh', 'bam', 'bab', 'babs', 'bas', 'bass', 'bang', 'baj', 'bac', 'bak', 'bat', 'bap', 'bah', + 'bae', 'baeg', 'baegg', 'baegs', 'baen', 'baenj', 'baenh', 'baed', 'bael', 'baelg', 'baelm', 'baelb', 'baels', 'baelt', 'baelp', 'baelh', + 'baem', 'baeb', 'baebs', 'baes', 'baess', 'baeng', 'baej', 'baec', 'baek', 'baet', 'baep', 'baeh', 'bya', 'byag', 'byagg', 'byags', + 'byan', 'byanj', 'byanh', 'byad', 'byal', 'byalg', 'byalm', 'byalb', 'byals', 'byalt', 'byalp', 'byalh', 'byam', 'byab', 'byabs', 'byas', + 'byass', 'byang', 'byaj', 'byac', 'byak', 'byat', 'byap', 'byah', 'byae', 'byaeg', 'byaegg', 'byaegs', 'byaen', 'byaenj', 'byaenh', 'byaed', + 'byael', 'byaelg', 'byaelm', 'byaelb', 'byaels', 'byaelt', 'byaelp', 'byaelh', 'byaem', 'byaeb', 'byaebs', 'byaes', 'byaess', 'byaeng', 'byaej', 'byaec', + 'byaek', 'byaet', 'byaep', 'byaeh', 'beo', 'beog', 'beogg', 'beogs', 'beon', 'beonj', 'beonh', 'beod', 'beol', 'beolg', 'beolm', 'beolb', + 'beols', 'beolt', 'beolp', 'beolh', 'beom', 'beob', 'beobs', 'beos', 'beoss', 'beong', 'beoj', 'beoc', 'beok', 'beot', 'beop', 'beoh', + 'be', 'beg', 'begg', 'begs', 'ben', 'benj', 'benh', 'bed', 'bel', 'belg', 'belm', 'belb', 'bels', 'belt', 'belp', 'belh', + 'bem', 'beb', 'bebs', 'bes', 'bess', 'beng', 'bej', 'bec', 'bek', 'bet', 'bep', 'beh', 'byeo', 'byeog', 'byeogg', 'byeogs', + 'byeon', 'byeonj', 'byeonh', 'byeod', 'byeol', 'byeolg', 'byeolm', 'byeolb', 'byeols', 'byeolt', 'byeolp', 'byeolh', 'byeom', 'byeob', 'byeobs', 'byeos', + 'byeoss', 'byeong', 'byeoj', 'byeoc', 'byeok', 'byeot', 'byeop', 'byeoh', 'bye', 'byeg', 'byegg', 'byegs', 'byen', 'byenj', 'byenh', 'byed', + 'byel', 'byelg', 'byelm', 'byelb', 'byels', 'byelt', 'byelp', 'byelh', 'byem', 'byeb', 'byebs', 'byes', 'byess', 'byeng', 'byej', 'byec', + 'byek', 'byet', 'byep', 'byeh', 'bo', 'bog', 'bogg', 'bogs', 'bon', 'bonj', 'bonh', 'bod', 'bol', 'bolg', 'bolm', 'bolb'), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/xbd.php b/NEUE DATEIEN/includes/classes/transliteration/xbd.php new file mode 100644 index 0000000..341ae77 --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/xbd.php @@ -0,0 +1,21 @@ + array('bols', 'bolt', 'bolp', 'bolh', 'bom', 'bob', 'bobs', 'bos', 'boss', 'bong', 'boj', 'boc', 'bok', 'bot', 'bop', 'boh', + 'bwa', 'bwag', 'bwagg', 'bwags', 'bwan', 'bwanj', 'bwanh', 'bwad', 'bwal', 'bwalg', 'bwalm', 'bwalb', 'bwals', 'bwalt', 'bwalp', 'bwalh', + 'bwam', 'bwab', 'bwabs', 'bwas', 'bwass', 'bwang', 'bwaj', 'bwac', 'bwak', 'bwat', 'bwap', 'bwah', 'bwae', 'bwaeg', 'bwaegg', 'bwaegs', + 'bwaen', 'bwaenj', 'bwaenh', 'bwaed', 'bwael', 'bwaelg', 'bwaelm', 'bwaelb', 'bwaels', 'bwaelt', 'bwaelp', 'bwaelh', 'bwaem', 'bwaeb', 'bwaebs', 'bwaes', + 'bwaess', 'bwaeng', 'bwaej', 'bwaec', 'bwaek', 'bwaet', 'bwaep', 'bwaeh', 'boe', 'boeg', 'boegg', 'boegs', 'boen', 'boenj', 'boenh', 'boed', + 'boel', 'boelg', 'boelm', 'boelb', 'boels', 'boelt', 'boelp', 'boelh', 'boem', 'boeb', 'boebs', 'boes', 'boess', 'boeng', 'boej', 'boec', + 'boek', 'boet', 'boep', 'boeh', 'byo', 'byog', 'byogg', 'byogs', 'byon', 'byonj', 'byonh', 'byod', 'byol', 'byolg', 'byolm', 'byolb', + 'byols', 'byolt', 'byolp', 'byolh', 'byom', 'byob', 'byobs', 'byos', 'byoss', 'byong', 'byoj', 'byoc', 'byok', 'byot', 'byop', 'byoh', + 'bu', 'bug', 'bugg', 'bugs', 'bun', 'bunj', 'bunh', 'bud', 'bul', 'bulg', 'bulm', 'bulb', 'buls', 'bult', 'bulp', 'bulh', + 'bum', 'bub', 'bubs', 'bus', 'buss', 'bung', 'buj', 'buc', 'buk', 'but', 'bup', 'buh', 'bweo', 'bweog', 'bweogg', 'bweogs', + 'bweon', 'bweonj', 'bweonh', 'bweod', 'bweol', 'bweolg', 'bweolm', 'bweolb', 'bweols', 'bweolt', 'bweolp', 'bweolh', 'bweom', 'bweob', 'bweobs', 'bweos', + 'bweoss', 'bweong', 'bweoj', 'bweoc', 'bweok', 'bweot', 'bweop', 'bweoh', 'bwe', 'bweg', 'bwegg', 'bwegs', 'bwen', 'bwenj', 'bwenh', 'bwed', + 'bwel', 'bwelg', 'bwelm', 'bwelb', 'bwels', 'bwelt', 'bwelp', 'bwelh', 'bwem', 'bweb', 'bwebs', 'bwes', 'bwess', 'bweng', 'bwej', 'bwec', + 'bwek', 'bwet', 'bwep', 'bweh', 'bwi', 'bwig', 'bwigg', 'bwigs', 'bwin', 'bwinj', 'bwinh', 'bwid', 'bwil', 'bwilg', 'bwilm', 'bwilb', + 'bwils', 'bwilt', 'bwilp', 'bwilh', 'bwim', 'bwib', 'bwibs', 'bwis', 'bwiss', 'bwing', 'bwij', 'bwic', 'bwik', 'bwit', 'bwip', 'bwih', + 'byu', 'byug', 'byugg', 'byugs', 'byun', 'byunj', 'byunh', 'byud', 'byul', 'byulg', 'byulm', 'byulb', 'byuls', 'byult', 'byulp', 'byulh'), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/xbe.php b/NEUE DATEIEN/includes/classes/transliteration/xbe.php new file mode 100644 index 0000000..bf50bfa --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/xbe.php @@ -0,0 +1,21 @@ + array('byum', 'byub', 'byubs', 'byus', 'byuss', 'byung', 'byuj', 'byuc', 'byuk', 'byut', 'byup', 'byuh', 'beu', 'beug', 'beugg', 'beugs', + 'beun', 'beunj', 'beunh', 'beud', 'beul', 'beulg', 'beulm', 'beulb', 'beuls', 'beult', 'beulp', 'beulh', 'beum', 'beub', 'beubs', 'beus', + 'beuss', 'beung', 'beuj', 'beuc', 'beuk', 'beut', 'beup', 'beuh', 'byi', 'byig', 'byigg', 'byigs', 'byin', 'byinj', 'byinh', 'byid', + 'byil', 'byilg', 'byilm', 'byilb', 'byils', 'byilt', 'byilp', 'byilh', 'byim', 'byib', 'byibs', 'byis', 'byiss', 'bying', 'byij', 'byic', + 'byik', 'byit', 'byip', 'byih', 'bi', 'big', 'bigg', 'bigs', 'bin', 'binj', 'binh', 'bid', 'bil', 'bilg', 'bilm', 'bilb', + 'bils', 'bilt', 'bilp', 'bilh', 'bim', 'bib', 'bibs', 'bis', 'biss', 'bing', 'bij', 'bic', 'bik', 'bit', 'bip', 'bih', + 'bba', 'bbag', 'bbagg', 'bbags', 'bban', 'bbanj', 'bbanh', 'bbad', 'bbal', 'bbalg', 'bbalm', 'bbalb', 'bbals', 'bbalt', 'bbalp', 'bbalh', + 'bbam', 'bbab', 'bbabs', 'bbas', 'bbass', 'bbang', 'bbaj', 'bbac', 'bbak', 'bbat', 'bbap', 'bbah', 'bbae', 'bbaeg', 'bbaegg', 'bbaegs', + 'bbaen', 'bbaenj', 'bbaenh', 'bbaed', 'bbael', 'bbaelg', 'bbaelm', 'bbaelb', 'bbaels', 'bbaelt', 'bbaelp', 'bbaelh', 'bbaem', 'bbaeb', 'bbaebs', 'bbaes', + 'bbaess', 'bbaeng', 'bbaej', 'bbaec', 'bbaek', 'bbaet', 'bbaep', 'bbaeh', 'bbya', 'bbyag', 'bbyagg', 'bbyags', 'bbyan', 'bbyanj', 'bbyanh', 'bbyad', + 'bbyal', 'bbyalg', 'bbyalm', 'bbyalb', 'bbyals', 'bbyalt', 'bbyalp', 'bbyalh', 'bbyam', 'bbyab', 'bbyabs', 'bbyas', 'bbyass', 'bbyang', 'bbyaj', 'bbyac', + 'bbyak', 'bbyat', 'bbyap', 'bbyah', 'bbyae', 'bbyaeg', 'bbyaegg', 'bbyaegs', 'bbyaen', 'bbyaenj', 'bbyaenh', 'bbyaed', 'bbyael', 'bbyaelg', 'bbyaelm', 'bbyaelb', + 'bbyaels', 'bbyaelt', 'bbyaelp', 'bbyaelh', 'bbyaem', 'bbyaeb', 'bbyaebs', 'bbyaes', 'bbyaess', 'bbyaeng', 'bbyaej', 'bbyaec', 'bbyaek', 'bbyaet', 'bbyaep', 'bbyaeh', + 'bbeo', 'bbeog', 'bbeogg', 'bbeogs', 'bbeon', 'bbeonj', 'bbeonh', 'bbeod', 'bbeol', 'bbeolg', 'bbeolm', 'bbeolb', 'bbeols', 'bbeolt', 'bbeolp', 'bbeolh', + 'bbeom', 'bbeob', 'bbeobs', 'bbeos', 'bbeoss', 'bbeong', 'bbeoj', 'bbeoc', 'bbeok', 'bbeot', 'bbeop', 'bbeoh', 'bbe', 'bbeg', 'bbegg', 'bbegs', + 'bben', 'bbenj', 'bbenh', 'bbed', 'bbel', 'bbelg', 'bbelm', 'bbelb', 'bbels', 'bbelt', 'bbelp', 'bbelh', 'bbem', 'bbeb', 'bbebs', 'bbes'), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/xbf.php b/NEUE DATEIEN/includes/classes/transliteration/xbf.php new file mode 100644 index 0000000..9a3c532 --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/xbf.php @@ -0,0 +1,21 @@ + array('bbess', 'bbeng', 'bbej', 'bbec', 'bbek', 'bbet', 'bbep', 'bbeh', 'bbyeo', 'bbyeog', 'bbyeogg', 'bbyeogs', 'bbyeon', 'bbyeonj', 'bbyeonh', 'bbyeod', + 'bbyeol', 'bbyeolg', 'bbyeolm', 'bbyeolb', 'bbyeols', 'bbyeolt', 'bbyeolp', 'bbyeolh', 'bbyeom', 'bbyeob', 'bbyeobs', 'bbyeos', 'bbyeoss', 'bbyeong', 'bbyeoj', 'bbyeoc', + 'bbyeok', 'bbyeot', 'bbyeop', 'bbyeoh', 'bbye', 'bbyeg', 'bbyegg', 'bbyegs', 'bbyen', 'bbyenj', 'bbyenh', 'bbyed', 'bbyel', 'bbyelg', 'bbyelm', 'bbyelb', + 'bbyels', 'bbyelt', 'bbyelp', 'bbyelh', 'bbyem', 'bbyeb', 'bbyebs', 'bbyes', 'bbyess', 'bbyeng', 'bbyej', 'bbyec', 'bbyek', 'bbyet', 'bbyep', 'bbyeh', + 'bbo', 'bbog', 'bbogg', 'bbogs', 'bbon', 'bbonj', 'bbonh', 'bbod', 'bbol', 'bbolg', 'bbolm', 'bbolb', 'bbols', 'bbolt', 'bbolp', 'bbolh', + 'bbom', 'bbob', 'bbobs', 'bbos', 'bboss', 'bbong', 'bboj', 'bboc', 'bbok', 'bbot', 'bbop', 'bboh', 'bbwa', 'bbwag', 'bbwagg', 'bbwags', + 'bbwan', 'bbwanj', 'bbwanh', 'bbwad', 'bbwal', 'bbwalg', 'bbwalm', 'bbwalb', 'bbwals', 'bbwalt', 'bbwalp', 'bbwalh', 'bbwam', 'bbwab', 'bbwabs', 'bbwas', + 'bbwass', 'bbwang', 'bbwaj', 'bbwac', 'bbwak', 'bbwat', 'bbwap', 'bbwah', 'bbwae', 'bbwaeg', 'bbwaegg', 'bbwaegs', 'bbwaen', 'bbwaenj', 'bbwaenh', 'bbwaed', + 'bbwael', 'bbwaelg', 'bbwaelm', 'bbwaelb', 'bbwaels', 'bbwaelt', 'bbwaelp', 'bbwaelh', 'bbwaem', 'bbwaeb', 'bbwaebs', 'bbwaes', 'bbwaess', 'bbwaeng', 'bbwaej', 'bbwaec', + 'bbwaek', 'bbwaet', 'bbwaep', 'bbwaeh', 'bboe', 'bboeg', 'bboegg', 'bboegs', 'bboen', 'bboenj', 'bboenh', 'bboed', 'bboel', 'bboelg', 'bboelm', 'bboelb', + 'bboels', 'bboelt', 'bboelp', 'bboelh', 'bboem', 'bboeb', 'bboebs', 'bboes', 'bboess', 'bboeng', 'bboej', 'bboec', 'bboek', 'bboet', 'bboep', 'bboeh', + 'bbyo', 'bbyog', 'bbyogg', 'bbyogs', 'bbyon', 'bbyonj', 'bbyonh', 'bbyod', 'bbyol', 'bbyolg', 'bbyolm', 'bbyolb', 'bbyols', 'bbyolt', 'bbyolp', 'bbyolh', + 'bbyom', 'bbyob', 'bbyobs', 'bbyos', 'bbyoss', 'bbyong', 'bbyoj', 'bbyoc', 'bbyok', 'bbyot', 'bbyop', 'bbyoh', 'bbu', 'bbug', 'bbugg', 'bbugs', + 'bbun', 'bbunj', 'bbunh', 'bbud', 'bbul', 'bbulg', 'bbulm', 'bbulb', 'bbuls', 'bbult', 'bbulp', 'bbulh', 'bbum', 'bbub', 'bbubs', 'bbus', + 'bbuss', 'bbung', 'bbuj', 'bbuc', 'bbuk', 'bbut', 'bbup', 'bbuh', 'bbweo', 'bbweog', 'bbweogg', 'bbweogs', 'bbweon', 'bbweonj', 'bbweonh', 'bbweod', + 'bbweol', 'bbweolg', 'bbweolm', 'bbweolb', 'bbweols', 'bbweolt', 'bbweolp', 'bbweolh', 'bbweom', 'bbweob', 'bbweobs', 'bbweos', 'bbweoss', 'bbweong', 'bbweoj', 'bbweoc'), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/xc0.php b/NEUE DATEIEN/includes/classes/transliteration/xc0.php new file mode 100644 index 0000000..d678850 --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/xc0.php @@ -0,0 +1,21 @@ + array('bbweok', 'bbweot', 'bbweop', 'bbweoh', 'bbwe', 'bbweg', 'bbwegg', 'bbwegs', 'bbwen', 'bbwenj', 'bbwenh', 'bbwed', 'bbwel', 'bbwelg', 'bbwelm', 'bbwelb', + 'bbwels', 'bbwelt', 'bbwelp', 'bbwelh', 'bbwem', 'bbweb', 'bbwebs', 'bbwes', 'bbwess', 'bbweng', 'bbwej', 'bbwec', 'bbwek', 'bbwet', 'bbwep', 'bbweh', + 'bbwi', 'bbwig', 'bbwigg', 'bbwigs', 'bbwin', 'bbwinj', 'bbwinh', 'bbwid', 'bbwil', 'bbwilg', 'bbwilm', 'bbwilb', 'bbwils', 'bbwilt', 'bbwilp', 'bbwilh', + 'bbwim', 'bbwib', 'bbwibs', 'bbwis', 'bbwiss', 'bbwing', 'bbwij', 'bbwic', 'bbwik', 'bbwit', 'bbwip', 'bbwih', 'bbyu', 'bbyug', 'bbyugg', 'bbyugs', + 'bbyun', 'bbyunj', 'bbyunh', 'bbyud', 'bbyul', 'bbyulg', 'bbyulm', 'bbyulb', 'bbyuls', 'bbyult', 'bbyulp', 'bbyulh', 'bbyum', 'bbyub', 'bbyubs', 'bbyus', + 'bbyuss', 'bbyung', 'bbyuj', 'bbyuc', 'bbyuk', 'bbyut', 'bbyup', 'bbyuh', 'bbeu', 'bbeug', 'bbeugg', 'bbeugs', 'bbeun', 'bbeunj', 'bbeunh', 'bbeud', + 'bbeul', 'bbeulg', 'bbeulm', 'bbeulb', 'bbeuls', 'bbeult', 'bbeulp', 'bbeulh', 'bbeum', 'bbeub', 'bbeubs', 'bbeus', 'bbeuss', 'bbeung', 'bbeuj', 'bbeuc', + 'bbeuk', 'bbeut', 'bbeup', 'bbeuh', 'bbyi', 'bbyig', 'bbyigg', 'bbyigs', 'bbyin', 'bbyinj', 'bbyinh', 'bbyid', 'bbyil', 'bbyilg', 'bbyilm', 'bbyilb', + 'bbyils', 'bbyilt', 'bbyilp', 'bbyilh', 'bbyim', 'bbyib', 'bbyibs', 'bbyis', 'bbyiss', 'bbying', 'bbyij', 'bbyic', 'bbyik', 'bbyit', 'bbyip', 'bbyih', + 'bbi', 'bbig', 'bbigg', 'bbigs', 'bbin', 'bbinj', 'bbinh', 'bbid', 'bbil', 'bbilg', 'bbilm', 'bbilb', 'bbils', 'bbilt', 'bbilp', 'bbilh', + 'bbim', 'bbib', 'bbibs', 'bbis', 'bbiss', 'bbing', 'bbij', 'bbic', 'bbik', 'bbit', 'bbip', 'bbih', 'sa', 'sag', 'sagg', 'sags', + 'san', 'sanj', 'sanh', 'sad', 'sal', 'salg', 'salm', 'salb', 'sals', 'salt', 'salp', 'salh', 'sam', 'sab', 'sabs', 'sas', + 'sass', 'sang', 'saj', 'sac', 'sak', 'sat', 'sap', 'sah', 'sae', 'saeg', 'saegg', 'saegs', 'saen', 'saenj', 'saenh', 'saed', + 'sael', 'saelg', 'saelm', 'saelb', 'saels', 'saelt', 'saelp', 'saelh', 'saem', 'saeb', 'saebs', 'saes', 'saess', 'saeng', 'saej', 'saec', + 'saek', 'saet', 'saep', 'saeh', 'sya', 'syag', 'syagg', 'syags', 'syan', 'syanj', 'syanh', 'syad', 'syal', 'syalg', 'syalm', 'syalb', + 'syals', 'syalt', 'syalp', 'syalh', 'syam', 'syab', 'syabs', 'syas', 'syass', 'syang', 'syaj', 'syac', 'syak', 'syat', 'syap', 'syah'), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/xc1.php b/NEUE DATEIEN/includes/classes/transliteration/xc1.php new file mode 100644 index 0000000..8d7dedb --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/xc1.php @@ -0,0 +1,21 @@ + array('syae', 'syaeg', 'syaegg', 'syaegs', 'syaen', 'syaenj', 'syaenh', 'syaed', 'syael', 'syaelg', 'syaelm', 'syaelb', 'syaels', 'syaelt', 'syaelp', 'syaelh', + 'syaem', 'syaeb', 'syaebs', 'syaes', 'syaess', 'syaeng', 'syaej', 'syaec', 'syaek', 'syaet', 'syaep', 'syaeh', 'seo', 'seog', 'seogg', 'seogs', + 'seon', 'seonj', 'seonh', 'seod', 'seol', 'seolg', 'seolm', 'seolb', 'seols', 'seolt', 'seolp', 'seolh', 'seom', 'seob', 'seobs', 'seos', + 'seoss', 'seong', 'seoj', 'seoc', 'seok', 'seot', 'seop', 'seoh', 'se', 'seg', 'segg', 'segs', 'sen', 'senj', 'senh', 'sed', + 'sel', 'selg', 'selm', 'selb', 'sels', 'selt', 'selp', 'selh', 'sem', 'seb', 'sebs', 'ses', 'sess', 'seng', 'sej', 'sec', + 'sek', 'set', 'sep', 'seh', 'syeo', 'syeog', 'syeogg', 'syeogs', 'syeon', 'syeonj', 'syeonh', 'syeod', 'syeol', 'syeolg', 'syeolm', 'syeolb', + 'syeols', 'syeolt', 'syeolp', 'syeolh', 'syeom', 'syeob', 'syeobs', 'syeos', 'syeoss', 'syeong', 'syeoj', 'syeoc', 'syeok', 'syeot', 'syeop', 'syeoh', + 'sye', 'syeg', 'syegg', 'syegs', 'syen', 'syenj', 'syenh', 'syed', 'syel', 'syelg', 'syelm', 'syelb', 'syels', 'syelt', 'syelp', 'syelh', + 'syem', 'syeb', 'syebs', 'syes', 'syess', 'syeng', 'syej', 'syec', 'syek', 'syet', 'syep', 'syeh', 'so', 'sog', 'sogg', 'sogs', + 'son', 'sonj', 'sonh', 'sod', 'sol', 'solg', 'solm', 'solb', 'sols', 'solt', 'solp', 'solh', 'som', 'sob', 'sobs', 'sos', + 'soss', 'song', 'soj', 'soc', 'sok', 'sot', 'sop', 'soh', 'swa', 'swag', 'swagg', 'swags', 'swan', 'swanj', 'swanh', 'swad', + 'swal', 'swalg', 'swalm', 'swalb', 'swals', 'swalt', 'swalp', 'swalh', 'swam', 'swab', 'swabs', 'swas', 'swass', 'swang', 'swaj', 'swac', + 'swak', 'swat', 'swap', 'swah', 'swae', 'swaeg', 'swaegg', 'swaegs', 'swaen', 'swaenj', 'swaenh', 'swaed', 'swael', 'swaelg', 'swaelm', 'swaelb', + 'swaels', 'swaelt', 'swaelp', 'swaelh', 'swaem', 'swaeb', 'swaebs', 'swaes', 'swaess', 'swaeng', 'swaej', 'swaec', 'swaek', 'swaet', 'swaep', 'swaeh', + 'soe', 'soeg', 'soegg', 'soegs', 'soen', 'soenj', 'soenh', 'soed', 'soel', 'soelg', 'soelm', 'soelb', 'soels', 'soelt', 'soelp', 'soelh', + 'soem', 'soeb', 'soebs', 'soes', 'soess', 'soeng', 'soej', 'soec', 'soek', 'soet', 'soep', 'soeh', 'syo', 'syog', 'syogg', 'syogs'), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/xc2.php b/NEUE DATEIEN/includes/classes/transliteration/xc2.php new file mode 100644 index 0000000..670445c --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/xc2.php @@ -0,0 +1,21 @@ + array('syon', 'syonj', 'syonh', 'syod', 'syol', 'syolg', 'syolm', 'syolb', 'syols', 'syolt', 'syolp', 'syolh', 'syom', 'syob', 'syobs', 'syos', + 'syoss', 'syong', 'syoj', 'syoc', 'syok', 'syot', 'syop', 'syoh', 'su', 'sug', 'sugg', 'sugs', 'sun', 'sunj', 'sunh', 'sud', + 'sul', 'sulg', 'sulm', 'sulb', 'suls', 'sult', 'sulp', 'sulh', 'sum', 'sub', 'subs', 'sus', 'suss', 'sung', 'suj', 'suc', + 'suk', 'sut', 'sup', 'suh', 'sweo', 'sweog', 'sweogg', 'sweogs', 'sweon', 'sweonj', 'sweonh', 'sweod', 'sweol', 'sweolg', 'sweolm', 'sweolb', + 'sweols', 'sweolt', 'sweolp', 'sweolh', 'sweom', 'sweob', 'sweobs', 'sweos', 'sweoss', 'sweong', 'sweoj', 'sweoc', 'sweok', 'sweot', 'sweop', 'sweoh', + 'swe', 'sweg', 'swegg', 'swegs', 'swen', 'swenj', 'swenh', 'swed', 'swel', 'swelg', 'swelm', 'swelb', 'swels', 'swelt', 'swelp', 'swelh', + 'swem', 'sweb', 'swebs', 'swes', 'swess', 'sweng', 'swej', 'swec', 'swek', 'swet', 'swep', 'sweh', 'swi', 'swig', 'swigg', 'swigs', + 'swin', 'swinj', 'swinh', 'swid', 'swil', 'swilg', 'swilm', 'swilb', 'swils', 'swilt', 'swilp', 'swilh', 'swim', 'swib', 'swibs', 'swis', + 'swiss', 'swing', 'swij', 'swic', 'swik', 'swit', 'swip', 'swih', 'syu', 'syug', 'syugg', 'syugs', 'syun', 'syunj', 'syunh', 'syud', + 'syul', 'syulg', 'syulm', 'syulb', 'syuls', 'syult', 'syulp', 'syulh', 'syum', 'syub', 'syubs', 'syus', 'syuss', 'syung', 'syuj', 'syuc', + 'syuk', 'syut', 'syup', 'syuh', 'seu', 'seug', 'seugg', 'seugs', 'seun', 'seunj', 'seunh', 'seud', 'seul', 'seulg', 'seulm', 'seulb', + 'seuls', 'seult', 'seulp', 'seulh', 'seum', 'seub', 'seubs', 'seus', 'seuss', 'seung', 'seuj', 'seuc', 'seuk', 'seut', 'seup', 'seuh', + 'syi', 'syig', 'syigg', 'syigs', 'syin', 'syinj', 'syinh', 'syid', 'syil', 'syilg', 'syilm', 'syilb', 'syils', 'syilt', 'syilp', 'syilh', + 'syim', 'syib', 'syibs', 'syis', 'syiss', 'sying', 'syij', 'syic', 'syik', 'syit', 'syip', 'syih', 'si', 'sig', 'sigg', 'sigs', + 'sin', 'sinj', 'sinh', 'sid', 'sil', 'silg', 'silm', 'silb', 'sils', 'silt', 'silp', 'silh', 'sim', 'sib', 'sibs', 'sis', + 'siss', 'sing', 'sij', 'sic', 'sik', 'sit', 'sip', 'sih', 'ssa', 'ssag', 'ssagg', 'ssags', 'ssan', 'ssanj', 'ssanh', 'ssad'), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/xc3.php b/NEUE DATEIEN/includes/classes/transliteration/xc3.php new file mode 100644 index 0000000..7448fb4 --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/xc3.php @@ -0,0 +1,21 @@ + array('ssal', 'ssalg', 'ssalm', 'ssalb', 'ssals', 'ssalt', 'ssalp', 'ssalh', 'ssam', 'ssab', 'ssabs', 'ssas', 'ssass', 'ssang', 'ssaj', 'ssac', + 'ssak', 'ssat', 'ssap', 'ssah', 'ssae', 'ssaeg', 'ssaegg', 'ssaegs', 'ssaen', 'ssaenj', 'ssaenh', 'ssaed', 'ssael', 'ssaelg', 'ssaelm', 'ssaelb', + 'ssaels', 'ssaelt', 'ssaelp', 'ssaelh', 'ssaem', 'ssaeb', 'ssaebs', 'ssaes', 'ssaess', 'ssaeng', 'ssaej', 'ssaec', 'ssaek', 'ssaet', 'ssaep', 'ssaeh', + 'ssya', 'ssyag', 'ssyagg', 'ssyags', 'ssyan', 'ssyanj', 'ssyanh', 'ssyad', 'ssyal', 'ssyalg', 'ssyalm', 'ssyalb', 'ssyals', 'ssyalt', 'ssyalp', 'ssyalh', + 'ssyam', 'ssyab', 'ssyabs', 'ssyas', 'ssyass', 'ssyang', 'ssyaj', 'ssyac', 'ssyak', 'ssyat', 'ssyap', 'ssyah', 'ssyae', 'ssyaeg', 'ssyaegg', 'ssyaegs', + 'ssyaen', 'ssyaenj', 'ssyaenh', 'ssyaed', 'ssyael', 'ssyaelg', 'ssyaelm', 'ssyaelb', 'ssyaels', 'ssyaelt', 'ssyaelp', 'ssyaelh', 'ssyaem', 'ssyaeb', 'ssyaebs', 'ssyaes', + 'ssyaess', 'ssyaeng', 'ssyaej', 'ssyaec', 'ssyaek', 'ssyaet', 'ssyaep', 'ssyaeh', 'sseo', 'sseog', 'sseogg', 'sseogs', 'sseon', 'sseonj', 'sseonh', 'sseod', + 'sseol', 'sseolg', 'sseolm', 'sseolb', 'sseols', 'sseolt', 'sseolp', 'sseolh', 'sseom', 'sseob', 'sseobs', 'sseos', 'sseoss', 'sseong', 'sseoj', 'sseoc', + 'sseok', 'sseot', 'sseop', 'sseoh', 'sse', 'sseg', 'ssegg', 'ssegs', 'ssen', 'ssenj', 'ssenh', 'ssed', 'ssel', 'sselg', 'sselm', 'sselb', + 'ssels', 'sselt', 'sselp', 'sselh', 'ssem', 'sseb', 'ssebs', 'sses', 'ssess', 'sseng', 'ssej', 'ssec', 'ssek', 'sset', 'ssep', 'sseh', + 'ssyeo', 'ssyeog', 'ssyeogg', 'ssyeogs', 'ssyeon', 'ssyeonj', 'ssyeonh', 'ssyeod', 'ssyeol', 'ssyeolg', 'ssyeolm', 'ssyeolb', 'ssyeols', 'ssyeolt', 'ssyeolp', 'ssyeolh', + 'ssyeom', 'ssyeob', 'ssyeobs', 'ssyeos', 'ssyeoss', 'ssyeong', 'ssyeoj', 'ssyeoc', 'ssyeok', 'ssyeot', 'ssyeop', 'ssyeoh', 'ssye', 'ssyeg', 'ssyegg', 'ssyegs', + 'ssyen', 'ssyenj', 'ssyenh', 'ssyed', 'ssyel', 'ssyelg', 'ssyelm', 'ssyelb', 'ssyels', 'ssyelt', 'ssyelp', 'ssyelh', 'ssyem', 'ssyeb', 'ssyebs', 'ssyes', + 'ssyess', 'ssyeng', 'ssyej', 'ssyec', 'ssyek', 'ssyet', 'ssyep', 'ssyeh', 'sso', 'ssog', 'ssogg', 'ssogs', 'sson', 'ssonj', 'ssonh', 'ssod', + 'ssol', 'ssolg', 'ssolm', 'ssolb', 'ssols', 'ssolt', 'ssolp', 'ssolh', 'ssom', 'ssob', 'ssobs', 'ssos', 'ssoss', 'ssong', 'ssoj', 'ssoc', + 'ssok', 'ssot', 'ssop', 'ssoh', 'sswa', 'sswag', 'sswagg', 'sswags', 'sswan', 'sswanj', 'sswanh', 'sswad', 'sswal', 'sswalg', 'sswalm', 'sswalb'), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/xc4.php b/NEUE DATEIEN/includes/classes/transliteration/xc4.php new file mode 100644 index 0000000..17ba952 --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/xc4.php @@ -0,0 +1,21 @@ + array('sswals', 'sswalt', 'sswalp', 'sswalh', 'sswam', 'sswab', 'sswabs', 'sswas', 'sswass', 'sswang', 'sswaj', 'sswac', 'sswak', 'sswat', 'sswap', 'sswah', + 'sswae', 'sswaeg', 'sswaegg', 'sswaegs', 'sswaen', 'sswaenj', 'sswaenh', 'sswaed', 'sswael', 'sswaelg', 'sswaelm', 'sswaelb', 'sswaels', 'sswaelt', 'sswaelp', 'sswaelh', + 'sswaem', 'sswaeb', 'sswaebs', 'sswaes', 'sswaess', 'sswaeng', 'sswaej', 'sswaec', 'sswaek', 'sswaet', 'sswaep', 'sswaeh', 'ssoe', 'ssoeg', 'ssoegg', 'ssoegs', + 'ssoen', 'ssoenj', 'ssoenh', 'ssoed', 'ssoel', 'ssoelg', 'ssoelm', 'ssoelb', 'ssoels', 'ssoelt', 'ssoelp', 'ssoelh', 'ssoem', 'ssoeb', 'ssoebs', 'ssoes', + 'ssoess', 'ssoeng', 'ssoej', 'ssoec', 'ssoek', 'ssoet', 'ssoep', 'ssoeh', 'ssyo', 'ssyog', 'ssyogg', 'ssyogs', 'ssyon', 'ssyonj', 'ssyonh', 'ssyod', + 'ssyol', 'ssyolg', 'ssyolm', 'ssyolb', 'ssyols', 'ssyolt', 'ssyolp', 'ssyolh', 'ssyom', 'ssyob', 'ssyobs', 'ssyos', 'ssyoss', 'ssyong', 'ssyoj', 'ssyoc', + 'ssyok', 'ssyot', 'ssyop', 'ssyoh', 'ssu', 'ssug', 'ssugg', 'ssugs', 'ssun', 'ssunj', 'ssunh', 'ssud', 'ssul', 'ssulg', 'ssulm', 'ssulb', + 'ssuls', 'ssult', 'ssulp', 'ssulh', 'ssum', 'ssub', 'ssubs', 'ssus', 'ssuss', 'ssung', 'ssuj', 'ssuc', 'ssuk', 'ssut', 'ssup', 'ssuh', + 'ssweo', 'ssweog', 'ssweogg', 'ssweogs', 'ssweon', 'ssweonj', 'ssweonh', 'ssweod', 'ssweol', 'ssweolg', 'ssweolm', 'ssweolb', 'ssweols', 'ssweolt', 'ssweolp', 'ssweolh', + 'ssweom', 'ssweob', 'ssweobs', 'ssweos', 'ssweoss', 'ssweong', 'ssweoj', 'ssweoc', 'ssweok', 'ssweot', 'ssweop', 'ssweoh', 'sswe', 'ssweg', 'sswegg', 'sswegs', + 'sswen', 'sswenj', 'sswenh', 'sswed', 'sswel', 'sswelg', 'sswelm', 'sswelb', 'sswels', 'sswelt', 'sswelp', 'sswelh', 'sswem', 'ssweb', 'sswebs', 'sswes', + 'sswess', 'ssweng', 'sswej', 'sswec', 'sswek', 'sswet', 'sswep', 'ssweh', 'sswi', 'sswig', 'sswigg', 'sswigs', 'sswin', 'sswinj', 'sswinh', 'sswid', + 'sswil', 'sswilg', 'sswilm', 'sswilb', 'sswils', 'sswilt', 'sswilp', 'sswilh', 'sswim', 'sswib', 'sswibs', 'sswis', 'sswiss', 'sswing', 'sswij', 'sswic', + 'sswik', 'sswit', 'sswip', 'sswih', 'ssyu', 'ssyug', 'ssyugg', 'ssyugs', 'ssyun', 'ssyunj', 'ssyunh', 'ssyud', 'ssyul', 'ssyulg', 'ssyulm', 'ssyulb', + 'ssyuls', 'ssyult', 'ssyulp', 'ssyulh', 'ssyum', 'ssyub', 'ssyubs', 'ssyus', 'ssyuss', 'ssyung', 'ssyuj', 'ssyuc', 'ssyuk', 'ssyut', 'ssyup', 'ssyuh', + 'sseu', 'sseug', 'sseugg', 'sseugs', 'sseun', 'sseunj', 'sseunh', 'sseud', 'sseul', 'sseulg', 'sseulm', 'sseulb', 'sseuls', 'sseult', 'sseulp', 'sseulh'), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/xc5.php b/NEUE DATEIEN/includes/classes/transliteration/xc5.php new file mode 100644 index 0000000..e0c362d --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/xc5.php @@ -0,0 +1,21 @@ + array('sseum', 'sseub', 'sseubs', 'sseus', 'sseuss', 'sseung', 'sseuj', 'sseuc', 'sseuk', 'sseut', 'sseup', 'sseuh', 'ssyi', 'ssyig', 'ssyigg', 'ssyigs', + 'ssyin', 'ssyinj', 'ssyinh', 'ssyid', 'ssyil', 'ssyilg', 'ssyilm', 'ssyilb', 'ssyils', 'ssyilt', 'ssyilp', 'ssyilh', 'ssyim', 'ssyib', 'ssyibs', 'ssyis', + 'ssyiss', 'ssying', 'ssyij', 'ssyic', 'ssyik', 'ssyit', 'ssyip', 'ssyih', 'ssi', 'ssig', 'ssigg', 'ssigs', 'ssin', 'ssinj', 'ssinh', 'ssid', + 'ssil', 'ssilg', 'ssilm', 'ssilb', 'ssils', 'ssilt', 'ssilp', 'ssilh', 'ssim', 'ssib', 'ssibs', 'ssis', 'ssiss', 'ssing', 'ssij', 'ssic', + 'ssik', 'ssit', 'ssip', 'ssih', 'a', 'ag', 'agg', 'ags', 'an', 'anj', 'anh', 'ad', 'al', 'alg', 'alm', 'alb', + 'als', 'alt', 'alp', 'alh', 'am', 'ab', 'abs', 'as', 'ass', 'ang', 'aj', 'ac', 'ak', 'at', 'ap', 'ah', + 'ae', 'aeg', 'aegg', 'aegs', 'aen', 'aenj', 'aenh', 'aed', 'ael', 'aelg', 'aelm', 'aelb', 'aels', 'aelt', 'aelp', 'aelh', + 'aem', 'aeb', 'aebs', 'aes', 'aess', 'aeng', 'aej', 'aec', 'aek', 'aet', 'aep', 'aeh', 'ya', 'yag', 'yagg', 'yags', + 'yan', 'yanj', 'yanh', 'yad', 'yal', 'yalg', 'yalm', 'yalb', 'yals', 'yalt', 'yalp', 'yalh', 'yam', 'yab', 'yabs', 'yas', + 'yass', 'yang', 'yaj', 'yac', 'yak', 'yat', 'yap', 'yah', 'yae', 'yaeg', 'yaegg', 'yaegs', 'yaen', 'yaenj', 'yaenh', 'yaed', + 'yael', 'yaelg', 'yaelm', 'yaelb', 'yaels', 'yaelt', 'yaelp', 'yaelh', 'yaem', 'yaeb', 'yaebs', 'yaes', 'yaess', 'yaeng', 'yaej', 'yaec', + 'yaek', 'yaet', 'yaep', 'yaeh', 'eo', 'eog', 'eogg', 'eogs', 'eon', 'eonj', 'eonh', 'eod', 'eol', 'eolg', 'eolm', 'eolb', + 'eols', 'eolt', 'eolp', 'eolh', 'eom', 'eob', 'eobs', 'eos', 'eoss', 'eong', 'eoj', 'eoc', 'eok', 'eot', 'eop', 'eoh', + 'e', 'eg', 'egg', 'egs', 'en', 'enj', 'enh', 'ed', 'el', 'elg', 'elm', 'elb', 'els', 'elt', 'elp', 'elh', + 'em', 'eb', 'ebs', 'es', 'ess', 'eng', 'ej', 'ec', 'ek', 'et', 'ep', 'eh', 'yeo', 'yeog', 'yeogg', 'yeogs', + 'yeon', 'yeonj', 'yeonh', 'yeod', 'yeol', 'yeolg', 'yeolm', 'yeolb', 'yeols', 'yeolt', 'yeolp', 'yeolh', 'yeom', 'yeob', 'yeobs', 'yeos'), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/xc6.php b/NEUE DATEIEN/includes/classes/transliteration/xc6.php new file mode 100644 index 0000000..393a8f4 --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/xc6.php @@ -0,0 +1,21 @@ + array('yeoss', 'yeong', 'yeoj', 'yeoc', 'yeok', 'yeot', 'yeop', 'yeoh', 'ye', 'yeg', 'yegg', 'yegs', 'yen', 'yenj', 'yenh', 'yed', + 'yel', 'yelg', 'yelm', 'yelb', 'yels', 'yelt', 'yelp', 'yelh', 'yem', 'yeb', 'yebs', 'yes', 'yess', 'yeng', 'yej', 'yec', + 'yek', 'yet', 'yep', 'yeh', 'o', 'og', 'ogg', 'ogs', 'on', 'onj', 'onh', 'od', 'ol', 'olg', 'olm', 'olb', + 'ols', 'olt', 'olp', 'olh', 'om', 'ob', 'obs', 'os', 'oss', 'ong', 'oj', 'oc', 'ok', 'ot', 'op', 'oh', + 'wa', 'wag', 'wagg', 'wags', 'wan', 'wanj', 'wanh', 'wad', 'wal', 'walg', 'walm', 'walb', 'wals', 'walt', 'walp', 'walh', + 'wam', 'wab', 'wabs', 'was', 'wass', 'wang', 'waj', 'wac', 'wak', 'wat', 'wap', 'wah', 'wae', 'waeg', 'waegg', 'waegs', + 'waen', 'waenj', 'waenh', 'waed', 'wael', 'waelg', 'waelm', 'waelb', 'waels', 'waelt', 'waelp', 'waelh', 'waem', 'waeb', 'waebs', 'waes', + 'waess', 'waeng', 'waej', 'waec', 'waek', 'waet', 'waep', 'waeh', 'oe', 'oeg', 'oegg', 'oegs', 'oen', 'oenj', 'oenh', 'oed', + 'oel', 'oelg', 'oelm', 'oelb', 'oels', 'oelt', 'oelp', 'oelh', 'oem', 'oeb', 'oebs', 'oes', 'oess', 'oeng', 'oej', 'oec', + 'oek', 'oet', 'oep', 'oeh', 'yo', 'yog', 'yogg', 'yogs', 'yon', 'yonj', 'yonh', 'yod', 'yol', 'yolg', 'yolm', 'yolb', + 'yols', 'yolt', 'yolp', 'yolh', 'yom', 'yob', 'yobs', 'yos', 'yoss', 'yong', 'yoj', 'yoc', 'yok', 'yot', 'yop', 'yoh', + 'u', 'ug', 'ugg', 'ugs', 'un', 'unj', 'unh', 'ud', 'ul', 'ulg', 'ulm', 'ulb', 'uls', 'ult', 'ulp', 'ulh', + 'um', 'ub', 'ubs', 'us', 'uss', 'ung', 'uj', 'uc', 'uk', 'ut', 'up', 'uh', 'weo', 'weog', 'weogg', 'weogs', + 'weon', 'weonj', 'weonh', 'weod', 'weol', 'weolg', 'weolm', 'weolb', 'weols', 'weolt', 'weolp', 'weolh', 'weom', 'weob', 'weobs', 'weos', + 'weoss', 'weong', 'weoj', 'weoc', 'weok', 'weot', 'weop', 'weoh', 'we', 'weg', 'wegg', 'wegs', 'wen', 'wenj', 'wenh', 'wed', + 'wel', 'welg', 'welm', 'welb', 'wels', 'welt', 'welp', 'welh', 'wem', 'web', 'webs', 'wes', 'wess', 'weng', 'wej', 'wec'), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/xc7.php b/NEUE DATEIEN/includes/classes/transliteration/xc7.php new file mode 100644 index 0000000..bfe5023 --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/xc7.php @@ -0,0 +1,21 @@ + array('wek', 'wet', 'wep', 'weh', 'wi', 'wig', 'wigg', 'wigs', 'win', 'winj', 'winh', 'wid', 'wil', 'wilg', 'wilm', 'wilb', + 'wils', 'wilt', 'wilp', 'wilh', 'wim', 'wib', 'wibs', 'wis', 'wiss', 'wing', 'wij', 'wic', 'wik', 'wit', 'wip', 'wih', + 'yu', 'yug', 'yugg', 'yugs', 'yun', 'yunj', 'yunh', 'yud', 'yul', 'yulg', 'yulm', 'yulb', 'yuls', 'yult', 'yulp', 'yulh', + 'yum', 'yub', 'yubs', 'yus', 'yuss', 'yung', 'yuj', 'yuc', 'yuk', 'yut', 'yup', 'yuh', 'eu', 'eug', 'eugg', 'eugs', + 'eun', 'eunj', 'eunh', 'eud', 'eul', 'eulg', 'eulm', 'eulb', 'euls', 'eult', 'eulp', 'eulh', 'eum', 'eub', 'eubs', 'eus', + 'euss', 'eung', 'euj', 'euc', 'euk', 'eut', 'eup', 'euh', 'yi', 'yig', 'yigg', 'yigs', 'yin', 'yinj', 'yinh', 'yid', + 'yil', 'yilg', 'yilm', 'yilb', 'yils', 'yilt', 'yilp', 'yilh', 'yim', 'yib', 'yibs', 'yis', 'yiss', 'ying', 'yij', 'yic', + 'yik', 'yit', 'yip', 'yih', 'i', 'ig', 'igg', 'igs', 'in', 'inj', 'inh', 'id', 'il', 'ilg', 'ilm', 'ilb', + 'ils', 'ilt', 'ilp', 'ilh', 'im', 'ib', 'ibs', 'is', 'iss', 'ing', 'ij', 'ic', 'ik', 'it', 'ip', 'ih', + 'ja', 'jag', 'jagg', 'jags', 'jan', 'janj', 'janh', 'jad', 'jal', 'jalg', 'jalm', 'jalb', 'jals', 'jalt', 'jalp', 'jalh', + 'jam', 'jab', 'jabs', 'jas', 'jass', 'jang', 'jaj', 'jac', 'jak', 'jat', 'jap', 'jah', 'jae', 'jaeg', 'jaegg', 'jaegs', + 'jaen', 'jaenj', 'jaenh', 'jaed', 'jael', 'jaelg', 'jaelm', 'jaelb', 'jaels', 'jaelt', 'jaelp', 'jaelh', 'jaem', 'jaeb', 'jaebs', 'jaes', + 'jaess', 'jaeng', 'jaej', 'jaec', 'jaek', 'jaet', 'jaep', 'jaeh', 'jya', 'jyag', 'jyagg', 'jyags', 'jyan', 'jyanj', 'jyanh', 'jyad', + 'jyal', 'jyalg', 'jyalm', 'jyalb', 'jyals', 'jyalt', 'jyalp', 'jyalh', 'jyam', 'jyab', 'jyabs', 'jyas', 'jyass', 'jyang', 'jyaj', 'jyac', + 'jyak', 'jyat', 'jyap', 'jyah', 'jyae', 'jyaeg', 'jyaegg', 'jyaegs', 'jyaen', 'jyaenj', 'jyaenh', 'jyaed', 'jyael', 'jyaelg', 'jyaelm', 'jyaelb', + 'jyaels', 'jyaelt', 'jyaelp', 'jyaelh', 'jyaem', 'jyaeb', 'jyaebs', 'jyaes', 'jyaess', 'jyaeng', 'jyaej', 'jyaec', 'jyaek', 'jyaet', 'jyaep', 'jyaeh'), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/xc8.php b/NEUE DATEIEN/includes/classes/transliteration/xc8.php new file mode 100644 index 0000000..af6e523 --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/xc8.php @@ -0,0 +1,21 @@ + array('jeo', 'jeog', 'jeogg', 'jeogs', 'jeon', 'jeonj', 'jeonh', 'jeod', 'jeol', 'jeolg', 'jeolm', 'jeolb', 'jeols', 'jeolt', 'jeolp', 'jeolh', + 'jeom', 'jeob', 'jeobs', 'jeos', 'jeoss', 'jeong', 'jeoj', 'jeoc', 'jeok', 'jeot', 'jeop', 'jeoh', 'je', 'jeg', 'jegg', 'jegs', + 'jen', 'jenj', 'jenh', 'jed', 'jel', 'jelg', 'jelm', 'jelb', 'jels', 'jelt', 'jelp', 'jelh', 'jem', 'jeb', 'jebs', 'jes', + 'jess', 'jeng', 'jej', 'jec', 'jek', 'jet', 'jep', 'jeh', 'jyeo', 'jyeog', 'jyeogg', 'jyeogs', 'jyeon', 'jyeonj', 'jyeonh', 'jyeod', + 'jyeol', 'jyeolg', 'jyeolm', 'jyeolb', 'jyeols', 'jyeolt', 'jyeolp', 'jyeolh', 'jyeom', 'jyeob', 'jyeobs', 'jyeos', 'jyeoss', 'jyeong', 'jyeoj', 'jyeoc', + 'jyeok', 'jyeot', 'jyeop', 'jyeoh', 'jye', 'jyeg', 'jyegg', 'jyegs', 'jyen', 'jyenj', 'jyenh', 'jyed', 'jyel', 'jyelg', 'jyelm', 'jyelb', + 'jyels', 'jyelt', 'jyelp', 'jyelh', 'jyem', 'jyeb', 'jyebs', 'jyes', 'jyess', 'jyeng', 'jyej', 'jyec', 'jyek', 'jyet', 'jyep', 'jyeh', + 'jo', 'jog', 'jogg', 'jogs', 'jon', 'jonj', 'jonh', 'jod', 'jol', 'jolg', 'jolm', 'jolb', 'jols', 'jolt', 'jolp', 'jolh', + 'jom', 'job', 'jobs', 'jos', 'joss', 'jong', 'joj', 'joc', 'jok', 'jot', 'jop', 'joh', 'jwa', 'jwag', 'jwagg', 'jwags', + 'jwan', 'jwanj', 'jwanh', 'jwad', 'jwal', 'jwalg', 'jwalm', 'jwalb', 'jwals', 'jwalt', 'jwalp', 'jwalh', 'jwam', 'jwab', 'jwabs', 'jwas', + 'jwass', 'jwang', 'jwaj', 'jwac', 'jwak', 'jwat', 'jwap', 'jwah', 'jwae', 'jwaeg', 'jwaegg', 'jwaegs', 'jwaen', 'jwaenj', 'jwaenh', 'jwaed', + 'jwael', 'jwaelg', 'jwaelm', 'jwaelb', 'jwaels', 'jwaelt', 'jwaelp', 'jwaelh', 'jwaem', 'jwaeb', 'jwaebs', 'jwaes', 'jwaess', 'jwaeng', 'jwaej', 'jwaec', + 'jwaek', 'jwaet', 'jwaep', 'jwaeh', 'joe', 'joeg', 'joegg', 'joegs', 'joen', 'joenj', 'joenh', 'joed', 'joel', 'joelg', 'joelm', 'joelb', + 'joels', 'joelt', 'joelp', 'joelh', 'joem', 'joeb', 'joebs', 'joes', 'joess', 'joeng', 'joej', 'joec', 'joek', 'joet', 'joep', 'joeh', + 'jyo', 'jyog', 'jyogg', 'jyogs', 'jyon', 'jyonj', 'jyonh', 'jyod', 'jyol', 'jyolg', 'jyolm', 'jyolb', 'jyols', 'jyolt', 'jyolp', 'jyolh', + 'jyom', 'jyob', 'jyobs', 'jyos', 'jyoss', 'jyong', 'jyoj', 'jyoc', 'jyok', 'jyot', 'jyop', 'jyoh', 'ju', 'jug', 'jugg', 'jugs'), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/xc9.php b/NEUE DATEIEN/includes/classes/transliteration/xc9.php new file mode 100644 index 0000000..ce20fbf --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/xc9.php @@ -0,0 +1,21 @@ + array('jun', 'junj', 'junh', 'jud', 'jul', 'julg', 'julm', 'julb', 'juls', 'jult', 'julp', 'julh', 'jum', 'jub', 'jubs', 'jus', + 'juss', 'jung', 'juj', 'juc', 'juk', 'jut', 'jup', 'juh', 'jweo', 'jweog', 'jweogg', 'jweogs', 'jweon', 'jweonj', 'jweonh', 'jweod', + 'jweol', 'jweolg', 'jweolm', 'jweolb', 'jweols', 'jweolt', 'jweolp', 'jweolh', 'jweom', 'jweob', 'jweobs', 'jweos', 'jweoss', 'jweong', 'jweoj', 'jweoc', + 'jweok', 'jweot', 'jweop', 'jweoh', 'jwe', 'jweg', 'jwegg', 'jwegs', 'jwen', 'jwenj', 'jwenh', 'jwed', 'jwel', 'jwelg', 'jwelm', 'jwelb', + 'jwels', 'jwelt', 'jwelp', 'jwelh', 'jwem', 'jweb', 'jwebs', 'jwes', 'jwess', 'jweng', 'jwej', 'jwec', 'jwek', 'jwet', 'jwep', 'jweh', + 'jwi', 'jwig', 'jwigg', 'jwigs', 'jwin', 'jwinj', 'jwinh', 'jwid', 'jwil', 'jwilg', 'jwilm', 'jwilb', 'jwils', 'jwilt', 'jwilp', 'jwilh', + 'jwim', 'jwib', 'jwibs', 'jwis', 'jwiss', 'jwing', 'jwij', 'jwic', 'jwik', 'jwit', 'jwip', 'jwih', 'jyu', 'jyug', 'jyugg', 'jyugs', + 'jyun', 'jyunj', 'jyunh', 'jyud', 'jyul', 'jyulg', 'jyulm', 'jyulb', 'jyuls', 'jyult', 'jyulp', 'jyulh', 'jyum', 'jyub', 'jyubs', 'jyus', + 'jyuss', 'jyung', 'jyuj', 'jyuc', 'jyuk', 'jyut', 'jyup', 'jyuh', 'jeu', 'jeug', 'jeugg', 'jeugs', 'jeun', 'jeunj', 'jeunh', 'jeud', + 'jeul', 'jeulg', 'jeulm', 'jeulb', 'jeuls', 'jeult', 'jeulp', 'jeulh', 'jeum', 'jeub', 'jeubs', 'jeus', 'jeuss', 'jeung', 'jeuj', 'jeuc', + 'jeuk', 'jeut', 'jeup', 'jeuh', 'jyi', 'jyig', 'jyigg', 'jyigs', 'jyin', 'jyinj', 'jyinh', 'jyid', 'jyil', 'jyilg', 'jyilm', 'jyilb', + 'jyils', 'jyilt', 'jyilp', 'jyilh', 'jyim', 'jyib', 'jyibs', 'jyis', 'jyiss', 'jying', 'jyij', 'jyic', 'jyik', 'jyit', 'jyip', 'jyih', + 'ji', 'jig', 'jigg', 'jigs', 'jin', 'jinj', 'jinh', 'jid', 'jil', 'jilg', 'jilm', 'jilb', 'jils', 'jilt', 'jilp', 'jilh', + 'jim', 'jib', 'jibs', 'jis', 'jiss', 'jing', 'jij', 'jic', 'jik', 'jit', 'jip', 'jih', 'jja', 'jjag', 'jjagg', 'jjags', + 'jjan', 'jjanj', 'jjanh', 'jjad', 'jjal', 'jjalg', 'jjalm', 'jjalb', 'jjals', 'jjalt', 'jjalp', 'jjalh', 'jjam', 'jjab', 'jjabs', 'jjas', + 'jjass', 'jjang', 'jjaj', 'jjac', 'jjak', 'jjat', 'jjap', 'jjah', 'jjae', 'jjaeg', 'jjaegg', 'jjaegs', 'jjaen', 'jjaenj', 'jjaenh', 'jjaed'), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/xca.php b/NEUE DATEIEN/includes/classes/transliteration/xca.php new file mode 100644 index 0000000..282ffc1 --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/xca.php @@ -0,0 +1,21 @@ + array('jjael', 'jjaelg', 'jjaelm', 'jjaelb', 'jjaels', 'jjaelt', 'jjaelp', 'jjaelh', 'jjaem', 'jjaeb', 'jjaebs', 'jjaes', 'jjaess', 'jjaeng', 'jjaej', 'jjaec', + 'jjaek', 'jjaet', 'jjaep', 'jjaeh', 'jjya', 'jjyag', 'jjyagg', 'jjyags', 'jjyan', 'jjyanj', 'jjyanh', 'jjyad', 'jjyal', 'jjyalg', 'jjyalm', 'jjyalb', + 'jjyals', 'jjyalt', 'jjyalp', 'jjyalh', 'jjyam', 'jjyab', 'jjyabs', 'jjyas', 'jjyass', 'jjyang', 'jjyaj', 'jjyac', 'jjyak', 'jjyat', 'jjyap', 'jjyah', + 'jjyae', 'jjyaeg', 'jjyaegg', 'jjyaegs', 'jjyaen', 'jjyaenj', 'jjyaenh', 'jjyaed', 'jjyael', 'jjyaelg', 'jjyaelm', 'jjyaelb', 'jjyaels', 'jjyaelt', 'jjyaelp', 'jjyaelh', + 'jjyaem', 'jjyaeb', 'jjyaebs', 'jjyaes', 'jjyaess', 'jjyaeng', 'jjyaej', 'jjyaec', 'jjyaek', 'jjyaet', 'jjyaep', 'jjyaeh', 'jjeo', 'jjeog', 'jjeogg', 'jjeogs', + 'jjeon', 'jjeonj', 'jjeonh', 'jjeod', 'jjeol', 'jjeolg', 'jjeolm', 'jjeolb', 'jjeols', 'jjeolt', 'jjeolp', 'jjeolh', 'jjeom', 'jjeob', 'jjeobs', 'jjeos', + 'jjeoss', 'jjeong', 'jjeoj', 'jjeoc', 'jjeok', 'jjeot', 'jjeop', 'jjeoh', 'jje', 'jjeg', 'jjegg', 'jjegs', 'jjen', 'jjenj', 'jjenh', 'jjed', + 'jjel', 'jjelg', 'jjelm', 'jjelb', 'jjels', 'jjelt', 'jjelp', 'jjelh', 'jjem', 'jjeb', 'jjebs', 'jjes', 'jjess', 'jjeng', 'jjej', 'jjec', + 'jjek', 'jjet', 'jjep', 'jjeh', 'jjyeo', 'jjyeog', 'jjyeogg', 'jjyeogs', 'jjyeon', 'jjyeonj', 'jjyeonh', 'jjyeod', 'jjyeol', 'jjyeolg', 'jjyeolm', 'jjyeolb', + 'jjyeols', 'jjyeolt', 'jjyeolp', 'jjyeolh', 'jjyeom', 'jjyeob', 'jjyeobs', 'jjyeos', 'jjyeoss', 'jjyeong', 'jjyeoj', 'jjyeoc', 'jjyeok', 'jjyeot', 'jjyeop', 'jjyeoh', + 'jjye', 'jjyeg', 'jjyegg', 'jjyegs', 'jjyen', 'jjyenj', 'jjyenh', 'jjyed', 'jjyel', 'jjyelg', 'jjyelm', 'jjyelb', 'jjyels', 'jjyelt', 'jjyelp', 'jjyelh', + 'jjyem', 'jjyeb', 'jjyebs', 'jjyes', 'jjyess', 'jjyeng', 'jjyej', 'jjyec', 'jjyek', 'jjyet', 'jjyep', 'jjyeh', 'jjo', 'jjog', 'jjogg', 'jjogs', + 'jjon', 'jjonj', 'jjonh', 'jjod', 'jjol', 'jjolg', 'jjolm', 'jjolb', 'jjols', 'jjolt', 'jjolp', 'jjolh', 'jjom', 'jjob', 'jjobs', 'jjos', + 'jjoss', 'jjong', 'jjoj', 'jjoc', 'jjok', 'jjot', 'jjop', 'jjoh', 'jjwa', 'jjwag', 'jjwagg', 'jjwags', 'jjwan', 'jjwanj', 'jjwanh', 'jjwad', + 'jjwal', 'jjwalg', 'jjwalm', 'jjwalb', 'jjwals', 'jjwalt', 'jjwalp', 'jjwalh', 'jjwam', 'jjwab', 'jjwabs', 'jjwas', 'jjwass', 'jjwang', 'jjwaj', 'jjwac', + 'jjwak', 'jjwat', 'jjwap', 'jjwah', 'jjwae', 'jjwaeg', 'jjwaegg', 'jjwaegs', 'jjwaen', 'jjwaenj', 'jjwaenh', 'jjwaed', 'jjwael', 'jjwaelg', 'jjwaelm', 'jjwaelb'), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/xcb.php b/NEUE DATEIEN/includes/classes/transliteration/xcb.php new file mode 100644 index 0000000..ba37cd4 --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/xcb.php @@ -0,0 +1,21 @@ + array('jjwaels', 'jjwaelt', 'jjwaelp', 'jjwaelh', 'jjwaem', 'jjwaeb', 'jjwaebs', 'jjwaes', 'jjwaess', 'jjwaeng', 'jjwaej', 'jjwaec', 'jjwaek', 'jjwaet', 'jjwaep', 'jjwaeh', + 'jjoe', 'jjoeg', 'jjoegg', 'jjoegs', 'jjoen', 'jjoenj', 'jjoenh', 'jjoed', 'jjoel', 'jjoelg', 'jjoelm', 'jjoelb', 'jjoels', 'jjoelt', 'jjoelp', 'jjoelh', + 'jjoem', 'jjoeb', 'jjoebs', 'jjoes', 'jjoess', 'jjoeng', 'jjoej', 'jjoec', 'jjoek', 'jjoet', 'jjoep', 'jjoeh', 'jjyo', 'jjyog', 'jjyogg', 'jjyogs', + 'jjyon', 'jjyonj', 'jjyonh', 'jjyod', 'jjyol', 'jjyolg', 'jjyolm', 'jjyolb', 'jjyols', 'jjyolt', 'jjyolp', 'jjyolh', 'jjyom', 'jjyob', 'jjyobs', 'jjyos', + 'jjyoss', 'jjyong', 'jjyoj', 'jjyoc', 'jjyok', 'jjyot', 'jjyop', 'jjyoh', 'jju', 'jjug', 'jjugg', 'jjugs', 'jjun', 'jjunj', 'jjunh', 'jjud', + 'jjul', 'jjulg', 'jjulm', 'jjulb', 'jjuls', 'jjult', 'jjulp', 'jjulh', 'jjum', 'jjub', 'jjubs', 'jjus', 'jjuss', 'jjung', 'jjuj', 'jjuc', + 'jjuk', 'jjut', 'jjup', 'jjuh', 'jjweo', 'jjweog', 'jjweogg', 'jjweogs', 'jjweon', 'jjweonj', 'jjweonh', 'jjweod', 'jjweol', 'jjweolg', 'jjweolm', 'jjweolb', + 'jjweols', 'jjweolt', 'jjweolp', 'jjweolh', 'jjweom', 'jjweob', 'jjweobs', 'jjweos', 'jjweoss', 'jjweong', 'jjweoj', 'jjweoc', 'jjweok', 'jjweot', 'jjweop', 'jjweoh', + 'jjwe', 'jjweg', 'jjwegg', 'jjwegs', 'jjwen', 'jjwenj', 'jjwenh', 'jjwed', 'jjwel', 'jjwelg', 'jjwelm', 'jjwelb', 'jjwels', 'jjwelt', 'jjwelp', 'jjwelh', + 'jjwem', 'jjweb', 'jjwebs', 'jjwes', 'jjwess', 'jjweng', 'jjwej', 'jjwec', 'jjwek', 'jjwet', 'jjwep', 'jjweh', 'jjwi', 'jjwig', 'jjwigg', 'jjwigs', + 'jjwin', 'jjwinj', 'jjwinh', 'jjwid', 'jjwil', 'jjwilg', 'jjwilm', 'jjwilb', 'jjwils', 'jjwilt', 'jjwilp', 'jjwilh', 'jjwim', 'jjwib', 'jjwibs', 'jjwis', + 'jjwiss', 'jjwing', 'jjwij', 'jjwic', 'jjwik', 'jjwit', 'jjwip', 'jjwih', 'jjyu', 'jjyug', 'jjyugg', 'jjyugs', 'jjyun', 'jjyunj', 'jjyunh', 'jjyud', + 'jjyul', 'jjyulg', 'jjyulm', 'jjyulb', 'jjyuls', 'jjyult', 'jjyulp', 'jjyulh', 'jjyum', 'jjyub', 'jjyubs', 'jjyus', 'jjyuss', 'jjyung', 'jjyuj', 'jjyuc', + 'jjyuk', 'jjyut', 'jjyup', 'jjyuh', 'jjeu', 'jjeug', 'jjeugg', 'jjeugs', 'jjeun', 'jjeunj', 'jjeunh', 'jjeud', 'jjeul', 'jjeulg', 'jjeulm', 'jjeulb', + 'jjeuls', 'jjeult', 'jjeulp', 'jjeulh', 'jjeum', 'jjeub', 'jjeubs', 'jjeus', 'jjeuss', 'jjeung', 'jjeuj', 'jjeuc', 'jjeuk', 'jjeut', 'jjeup', 'jjeuh', + 'jjyi', 'jjyig', 'jjyigg', 'jjyigs', 'jjyin', 'jjyinj', 'jjyinh', 'jjyid', 'jjyil', 'jjyilg', 'jjyilm', 'jjyilb', 'jjyils', 'jjyilt', 'jjyilp', 'jjyilh'), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/xcc.php b/NEUE DATEIEN/includes/classes/transliteration/xcc.php new file mode 100644 index 0000000..791dc92 --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/xcc.php @@ -0,0 +1,21 @@ + array('jjyim', 'jjyib', 'jjyibs', 'jjyis', 'jjyiss', 'jjying', 'jjyij', 'jjyic', 'jjyik', 'jjyit', 'jjyip', 'jjyih', 'jji', 'jjig', 'jjigg', 'jjigs', + 'jjin', 'jjinj', 'jjinh', 'jjid', 'jjil', 'jjilg', 'jjilm', 'jjilb', 'jjils', 'jjilt', 'jjilp', 'jjilh', 'jjim', 'jjib', 'jjibs', 'jjis', + 'jjiss', 'jjing', 'jjij', 'jjic', 'jjik', 'jjit', 'jjip', 'jjih', 'ca', 'cag', 'cagg', 'cags', 'can', 'canj', 'canh', 'cad', + 'cal', 'calg', 'calm', 'calb', 'cals', 'calt', 'calp', 'calh', 'cam', 'cab', 'cabs', 'cas', 'cass', 'cang', 'caj', 'cac', + 'cak', 'cat', 'cap', 'cah', 'cae', 'caeg', 'caegg', 'caegs', 'caen', 'caenj', 'caenh', 'caed', 'cael', 'caelg', 'caelm', 'caelb', + 'caels', 'caelt', 'caelp', 'caelh', 'caem', 'caeb', 'caebs', 'caes', 'caess', 'caeng', 'caej', 'caec', 'caek', 'caet', 'caep', 'caeh', + 'cya', 'cyag', 'cyagg', 'cyags', 'cyan', 'cyanj', 'cyanh', 'cyad', 'cyal', 'cyalg', 'cyalm', 'cyalb', 'cyals', 'cyalt', 'cyalp', 'cyalh', + 'cyam', 'cyab', 'cyabs', 'cyas', 'cyass', 'cyang', 'cyaj', 'cyac', 'cyak', 'cyat', 'cyap', 'cyah', 'cyae', 'cyaeg', 'cyaegg', 'cyaegs', + 'cyaen', 'cyaenj', 'cyaenh', 'cyaed', 'cyael', 'cyaelg', 'cyaelm', 'cyaelb', 'cyaels', 'cyaelt', 'cyaelp', 'cyaelh', 'cyaem', 'cyaeb', 'cyaebs', 'cyaes', + 'cyaess', 'cyaeng', 'cyaej', 'cyaec', 'cyaek', 'cyaet', 'cyaep', 'cyaeh', 'ceo', 'ceog', 'ceogg', 'ceogs', 'ceon', 'ceonj', 'ceonh', 'ceod', + 'ceol', 'ceolg', 'ceolm', 'ceolb', 'ceols', 'ceolt', 'ceolp', 'ceolh', 'ceom', 'ceob', 'ceobs', 'ceos', 'ceoss', 'ceong', 'ceoj', 'ceoc', + 'ceok', 'ceot', 'ceop', 'ceoh', 'ce', 'ceg', 'cegg', 'cegs', 'cen', 'cenj', 'cenh', 'ced', 'cel', 'celg', 'celm', 'celb', + 'cels', 'celt', 'celp', 'celh', 'cem', 'ceb', 'cebs', 'ces', 'cess', 'ceng', 'cej', 'cec', 'cek', 'cet', 'cep', 'ceh', + 'cyeo', 'cyeog', 'cyeogg', 'cyeogs', 'cyeon', 'cyeonj', 'cyeonh', 'cyeod', 'cyeol', 'cyeolg', 'cyeolm', 'cyeolb', 'cyeols', 'cyeolt', 'cyeolp', 'cyeolh', + 'cyeom', 'cyeob', 'cyeobs', 'cyeos', 'cyeoss', 'cyeong', 'cyeoj', 'cyeoc', 'cyeok', 'cyeot', 'cyeop', 'cyeoh', 'cye', 'cyeg', 'cyegg', 'cyegs', + 'cyen', 'cyenj', 'cyenh', 'cyed', 'cyel', 'cyelg', 'cyelm', 'cyelb', 'cyels', 'cyelt', 'cyelp', 'cyelh', 'cyem', 'cyeb', 'cyebs', 'cyes'), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/xcd.php b/NEUE DATEIEN/includes/classes/transliteration/xcd.php new file mode 100644 index 0000000..b517286 --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/xcd.php @@ -0,0 +1,21 @@ + array('cyess', 'cyeng', 'cyej', 'cyec', 'cyek', 'cyet', 'cyep', 'cyeh', 'co', 'cog', 'cogg', 'cogs', 'con', 'conj', 'conh', 'cod', + 'col', 'colg', 'colm', 'colb', 'cols', 'colt', 'colp', 'colh', 'com', 'cob', 'cobs', 'cos', 'coss', 'cong', 'coj', 'coc', + 'cok', 'cot', 'cop', 'coh', 'cwa', 'cwag', 'cwagg', 'cwags', 'cwan', 'cwanj', 'cwanh', 'cwad', 'cwal', 'cwalg', 'cwalm', 'cwalb', + 'cwals', 'cwalt', 'cwalp', 'cwalh', 'cwam', 'cwab', 'cwabs', 'cwas', 'cwass', 'cwang', 'cwaj', 'cwac', 'cwak', 'cwat', 'cwap', 'cwah', + 'cwae', 'cwaeg', 'cwaegg', 'cwaegs', 'cwaen', 'cwaenj', 'cwaenh', 'cwaed', 'cwael', 'cwaelg', 'cwaelm', 'cwaelb', 'cwaels', 'cwaelt', 'cwaelp', 'cwaelh', + 'cwaem', 'cwaeb', 'cwaebs', 'cwaes', 'cwaess', 'cwaeng', 'cwaej', 'cwaec', 'cwaek', 'cwaet', 'cwaep', 'cwaeh', 'coe', 'coeg', 'coegg', 'coegs', + 'coen', 'coenj', 'coenh', 'coed', 'coel', 'coelg', 'coelm', 'coelb', 'coels', 'coelt', 'coelp', 'coelh', 'coem', 'coeb', 'coebs', 'coes', + 'coess', 'coeng', 'coej', 'coec', 'coek', 'coet', 'coep', 'coeh', 'cyo', 'cyog', 'cyogg', 'cyogs', 'cyon', 'cyonj', 'cyonh', 'cyod', + 'cyol', 'cyolg', 'cyolm', 'cyolb', 'cyols', 'cyolt', 'cyolp', 'cyolh', 'cyom', 'cyob', 'cyobs', 'cyos', 'cyoss', 'cyong', 'cyoj', 'cyoc', + 'cyok', 'cyot', 'cyop', 'cyoh', 'cu', 'cug', 'cugg', 'cugs', 'cun', 'cunj', 'cunh', 'cud', 'cul', 'culg', 'culm', 'culb', + 'culs', 'cult', 'culp', 'culh', 'cum', 'cub', 'cubs', 'cus', 'cuss', 'cung', 'cuj', 'cuc', 'cuk', 'cut', 'cup', 'cuh', + 'cweo', 'cweog', 'cweogg', 'cweogs', 'cweon', 'cweonj', 'cweonh', 'cweod', 'cweol', 'cweolg', 'cweolm', 'cweolb', 'cweols', 'cweolt', 'cweolp', 'cweolh', + 'cweom', 'cweob', 'cweobs', 'cweos', 'cweoss', 'cweong', 'cweoj', 'cweoc', 'cweok', 'cweot', 'cweop', 'cweoh', 'cwe', 'cweg', 'cwegg', 'cwegs', + 'cwen', 'cwenj', 'cwenh', 'cwed', 'cwel', 'cwelg', 'cwelm', 'cwelb', 'cwels', 'cwelt', 'cwelp', 'cwelh', 'cwem', 'cweb', 'cwebs', 'cwes', + 'cwess', 'cweng', 'cwej', 'cwec', 'cwek', 'cwet', 'cwep', 'cweh', 'cwi', 'cwig', 'cwigg', 'cwigs', 'cwin', 'cwinj', 'cwinh', 'cwid', + 'cwil', 'cwilg', 'cwilm', 'cwilb', 'cwils', 'cwilt', 'cwilp', 'cwilh', 'cwim', 'cwib', 'cwibs', 'cwis', 'cwiss', 'cwing', 'cwij', 'cwic'), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/xce.php b/NEUE DATEIEN/includes/classes/transliteration/xce.php new file mode 100644 index 0000000..0ac63a5 --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/xce.php @@ -0,0 +1,21 @@ + array('cwik', 'cwit', 'cwip', 'cwih', 'cyu', 'cyug', 'cyugg', 'cyugs', 'cyun', 'cyunj', 'cyunh', 'cyud', 'cyul', 'cyulg', 'cyulm', 'cyulb', + 'cyuls', 'cyult', 'cyulp', 'cyulh', 'cyum', 'cyub', 'cyubs', 'cyus', 'cyuss', 'cyung', 'cyuj', 'cyuc', 'cyuk', 'cyut', 'cyup', 'cyuh', + 'ceu', 'ceug', 'ceugg', 'ceugs', 'ceun', 'ceunj', 'ceunh', 'ceud', 'ceul', 'ceulg', 'ceulm', 'ceulb', 'ceuls', 'ceult', 'ceulp', 'ceulh', + 'ceum', 'ceub', 'ceubs', 'ceus', 'ceuss', 'ceung', 'ceuj', 'ceuc', 'ceuk', 'ceut', 'ceup', 'ceuh', 'cyi', 'cyig', 'cyigg', 'cyigs', + 'cyin', 'cyinj', 'cyinh', 'cyid', 'cyil', 'cyilg', 'cyilm', 'cyilb', 'cyils', 'cyilt', 'cyilp', 'cyilh', 'cyim', 'cyib', 'cyibs', 'cyis', + 'cyiss', 'cying', 'cyij', 'cyic', 'cyik', 'cyit', 'cyip', 'cyih', 'ci', 'cig', 'cigg', 'cigs', 'cin', 'cinj', 'cinh', 'cid', + 'cil', 'cilg', 'cilm', 'cilb', 'cils', 'cilt', 'cilp', 'cilh', 'cim', 'cib', 'cibs', 'cis', 'ciss', 'cing', 'cij', 'cic', + 'cik', 'cit', 'cip', 'cih', 'ka', 'kag', 'kagg', 'kags', 'kan', 'kanj', 'kanh', 'kad', 'kal', 'kalg', 'kalm', 'kalb', + 'kals', 'kalt', 'kalp', 'kalh', 'kam', 'kab', 'kabs', 'kas', 'kass', 'kang', 'kaj', 'kac', 'kak', 'kat', 'kap', 'kah', + 'kae', 'kaeg', 'kaegg', 'kaegs', 'kaen', 'kaenj', 'kaenh', 'kaed', 'kael', 'kaelg', 'kaelm', 'kaelb', 'kaels', 'kaelt', 'kaelp', 'kaelh', + 'kaem', 'kaeb', 'kaebs', 'kaes', 'kaess', 'kaeng', 'kaej', 'kaec', 'kaek', 'kaet', 'kaep', 'kaeh', 'kya', 'kyag', 'kyagg', 'kyags', + 'kyan', 'kyanj', 'kyanh', 'kyad', 'kyal', 'kyalg', 'kyalm', 'kyalb', 'kyals', 'kyalt', 'kyalp', 'kyalh', 'kyam', 'kyab', 'kyabs', 'kyas', + 'kyass', 'kyang', 'kyaj', 'kyac', 'kyak', 'kyat', 'kyap', 'kyah', 'kyae', 'kyaeg', 'kyaegg', 'kyaegs', 'kyaen', 'kyaenj', 'kyaenh', 'kyaed', + 'kyael', 'kyaelg', 'kyaelm', 'kyaelb', 'kyaels', 'kyaelt', 'kyaelp', 'kyaelh', 'kyaem', 'kyaeb', 'kyaebs', 'kyaes', 'kyaess', 'kyaeng', 'kyaej', 'kyaec', + 'kyaek', 'kyaet', 'kyaep', 'kyaeh', 'keo', 'keog', 'keogg', 'keogs', 'keon', 'keonj', 'keonh', 'keod', 'keol', 'keolg', 'keolm', 'keolb', + 'keols', 'keolt', 'keolp', 'keolh', 'keom', 'keob', 'keobs', 'keos', 'keoss', 'keong', 'keoj', 'keoc', 'keok', 'keot', 'keop', 'keoh'), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/xcf.php b/NEUE DATEIEN/includes/classes/transliteration/xcf.php new file mode 100644 index 0000000..740c445 --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/xcf.php @@ -0,0 +1,21 @@ + array('ke', 'keg', 'kegg', 'kegs', 'ken', 'kenj', 'kenh', 'ked', 'kel', 'kelg', 'kelm', 'kelb', 'kels', 'kelt', 'kelp', 'kelh', + 'kem', 'keb', 'kebs', 'kes', 'kess', 'keng', 'kej', 'kec', 'kek', 'ket', 'kep', 'keh', 'kyeo', 'kyeog', 'kyeogg', 'kyeogs', + 'kyeon', 'kyeonj', 'kyeonh', 'kyeod', 'kyeol', 'kyeolg', 'kyeolm', 'kyeolb', 'kyeols', 'kyeolt', 'kyeolp', 'kyeolh', 'kyeom', 'kyeob', 'kyeobs', 'kyeos', + 'kyeoss', 'kyeong', 'kyeoj', 'kyeoc', 'kyeok', 'kyeot', 'kyeop', 'kyeoh', 'kye', 'kyeg', 'kyegg', 'kyegs', 'kyen', 'kyenj', 'kyenh', 'kyed', + 'kyel', 'kyelg', 'kyelm', 'kyelb', 'kyels', 'kyelt', 'kyelp', 'kyelh', 'kyem', 'kyeb', 'kyebs', 'kyes', 'kyess', 'kyeng', 'kyej', 'kyec', + 'kyek', 'kyet', 'kyep', 'kyeh', 'ko', 'kog', 'kogg', 'kogs', 'kon', 'konj', 'konh', 'kod', 'kol', 'kolg', 'kolm', 'kolb', + 'kols', 'kolt', 'kolp', 'kolh', 'kom', 'kob', 'kobs', 'kos', 'koss', 'kong', 'koj', 'koc', 'kok', 'kot', 'kop', 'koh', + 'kwa', 'kwag', 'kwagg', 'kwags', 'kwan', 'kwanj', 'kwanh', 'kwad', 'kwal', 'kwalg', 'kwalm', 'kwalb', 'kwals', 'kwalt', 'kwalp', 'kwalh', + 'kwam', 'kwab', 'kwabs', 'kwas', 'kwass', 'kwang', 'kwaj', 'kwac', 'kwak', 'kwat', 'kwap', 'kwah', 'kwae', 'kwaeg', 'kwaegg', 'kwaegs', + 'kwaen', 'kwaenj', 'kwaenh', 'kwaed', 'kwael', 'kwaelg', 'kwaelm', 'kwaelb', 'kwaels', 'kwaelt', 'kwaelp', 'kwaelh', 'kwaem', 'kwaeb', 'kwaebs', 'kwaes', + 'kwaess', 'kwaeng', 'kwaej', 'kwaec', 'kwaek', 'kwaet', 'kwaep', 'kwaeh', 'koe', 'koeg', 'koegg', 'koegs', 'koen', 'koenj', 'koenh', 'koed', + 'koel', 'koelg', 'koelm', 'koelb', 'koels', 'koelt', 'koelp', 'koelh', 'koem', 'koeb', 'koebs', 'koes', 'koess', 'koeng', 'koej', 'koec', + 'koek', 'koet', 'koep', 'koeh', 'kyo', 'kyog', 'kyogg', 'kyogs', 'kyon', 'kyonj', 'kyonh', 'kyod', 'kyol', 'kyolg', 'kyolm', 'kyolb', + 'kyols', 'kyolt', 'kyolp', 'kyolh', 'kyom', 'kyob', 'kyobs', 'kyos', 'kyoss', 'kyong', 'kyoj', 'kyoc', 'kyok', 'kyot', 'kyop', 'kyoh', + 'ku', 'kug', 'kugg', 'kugs', 'kun', 'kunj', 'kunh', 'kud', 'kul', 'kulg', 'kulm', 'kulb', 'kuls', 'kult', 'kulp', 'kulh', + 'kum', 'kub', 'kubs', 'kus', 'kuss', 'kung', 'kuj', 'kuc', 'kuk', 'kut', 'kup', 'kuh', 'kweo', 'kweog', 'kweogg', 'kweogs'), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/xd0.php b/NEUE DATEIEN/includes/classes/transliteration/xd0.php new file mode 100644 index 0000000..4055a2f --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/xd0.php @@ -0,0 +1,21 @@ + array('kweon', 'kweonj', 'kweonh', 'kweod', 'kweol', 'kweolg', 'kweolm', 'kweolb', 'kweols', 'kweolt', 'kweolp', 'kweolh', 'kweom', 'kweob', 'kweobs', 'kweos', + 'kweoss', 'kweong', 'kweoj', 'kweoc', 'kweok', 'kweot', 'kweop', 'kweoh', 'kwe', 'kweg', 'kwegg', 'kwegs', 'kwen', 'kwenj', 'kwenh', 'kwed', + 'kwel', 'kwelg', 'kwelm', 'kwelb', 'kwels', 'kwelt', 'kwelp', 'kwelh', 'kwem', 'kweb', 'kwebs', 'kwes', 'kwess', 'kweng', 'kwej', 'kwec', + 'kwek', 'kwet', 'kwep', 'kweh', 'kwi', 'kwig', 'kwigg', 'kwigs', 'kwin', 'kwinj', 'kwinh', 'kwid', 'kwil', 'kwilg', 'kwilm', 'kwilb', + 'kwils', 'kwilt', 'kwilp', 'kwilh', 'kwim', 'kwib', 'kwibs', 'kwis', 'kwiss', 'kwing', 'kwij', 'kwic', 'kwik', 'kwit', 'kwip', 'kwih', + 'kyu', 'kyug', 'kyugg', 'kyugs', 'kyun', 'kyunj', 'kyunh', 'kyud', 'kyul', 'kyulg', 'kyulm', 'kyulb', 'kyuls', 'kyult', 'kyulp', 'kyulh', + 'kyum', 'kyub', 'kyubs', 'kyus', 'kyuss', 'kyung', 'kyuj', 'kyuc', 'kyuk', 'kyut', 'kyup', 'kyuh', 'keu', 'keug', 'keugg', 'keugs', + 'keun', 'keunj', 'keunh', 'keud', 'keul', 'keulg', 'keulm', 'keulb', 'keuls', 'keult', 'keulp', 'keulh', 'keum', 'keub', 'keubs', 'keus', + 'keuss', 'keung', 'keuj', 'keuc', 'keuk', 'keut', 'keup', 'keuh', 'kyi', 'kyig', 'kyigg', 'kyigs', 'kyin', 'kyinj', 'kyinh', 'kyid', + 'kyil', 'kyilg', 'kyilm', 'kyilb', 'kyils', 'kyilt', 'kyilp', 'kyilh', 'kyim', 'kyib', 'kyibs', 'kyis', 'kyiss', 'kying', 'kyij', 'kyic', + 'kyik', 'kyit', 'kyip', 'kyih', 'ki', 'kig', 'kigg', 'kigs', 'kin', 'kinj', 'kinh', 'kid', 'kil', 'kilg', 'kilm', 'kilb', + 'kils', 'kilt', 'kilp', 'kilh', 'kim', 'kib', 'kibs', 'kis', 'kiss', 'king', 'kij', 'kic', 'kik', 'kit', 'kip', 'kih', + 'ta', 'tag', 'tagg', 'tags', 'tan', 'tanj', 'tanh', 'tad', 'tal', 'talg', 'talm', 'talb', 'tals', 'talt', 'talp', 'talh', + 'tam', 'tab', 'tabs', 'tas', 'tass', 'tang', 'taj', 'tac', 'tak', 'tat', 'tap', 'tah', 'tae', 'taeg', 'taegg', 'taegs', + 'taen', 'taenj', 'taenh', 'taed', 'tael', 'taelg', 'taelm', 'taelb', 'taels', 'taelt', 'taelp', 'taelh', 'taem', 'taeb', 'taebs', 'taes', + 'taess', 'taeng', 'taej', 'taec', 'taek', 'taet', 'taep', 'taeh', 'tya', 'tyag', 'tyagg', 'tyags', 'tyan', 'tyanj', 'tyanh', 'tyad'), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/xd1.php b/NEUE DATEIEN/includes/classes/transliteration/xd1.php new file mode 100644 index 0000000..dc2a26e --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/xd1.php @@ -0,0 +1,21 @@ + array('tyal', 'tyalg', 'tyalm', 'tyalb', 'tyals', 'tyalt', 'tyalp', 'tyalh', 'tyam', 'tyab', 'tyabs', 'tyas', 'tyass', 'tyang', 'tyaj', 'tyac', + 'tyak', 'tyat', 'tyap', 'tyah', 'tyae', 'tyaeg', 'tyaegg', 'tyaegs', 'tyaen', 'tyaenj', 'tyaenh', 'tyaed', 'tyael', 'tyaelg', 'tyaelm', 'tyaelb', + 'tyaels', 'tyaelt', 'tyaelp', 'tyaelh', 'tyaem', 'tyaeb', 'tyaebs', 'tyaes', 'tyaess', 'tyaeng', 'tyaej', 'tyaec', 'tyaek', 'tyaet', 'tyaep', 'tyaeh', + 'teo', 'teog', 'teogg', 'teogs', 'teon', 'teonj', 'teonh', 'teod', 'teol', 'teolg', 'teolm', 'teolb', 'teols', 'teolt', 'teolp', 'teolh', + 'teom', 'teob', 'teobs', 'teos', 'teoss', 'teong', 'teoj', 'teoc', 'teok', 'teot', 'teop', 'teoh', 'te', 'teg', 'tegg', 'tegs', + 'ten', 'tenj', 'tenh', 'ted', 'tel', 'telg', 'telm', 'telb', 'tels', 'telt', 'telp', 'telh', 'tem', 'teb', 'tebs', 'tes', + 'tess', 'teng', 'tej', 'tec', 'tek', 'tet', 'tep', 'teh', 'tyeo', 'tyeog', 'tyeogg', 'tyeogs', 'tyeon', 'tyeonj', 'tyeonh', 'tyeod', + 'tyeol', 'tyeolg', 'tyeolm', 'tyeolb', 'tyeols', 'tyeolt', 'tyeolp', 'tyeolh', 'tyeom', 'tyeob', 'tyeobs', 'tyeos', 'tyeoss', 'tyeong', 'tyeoj', 'tyeoc', + 'tyeok', 'tyeot', 'tyeop', 'tyeoh', 'tye', 'tyeg', 'tyegg', 'tyegs', 'tyen', 'tyenj', 'tyenh', 'tyed', 'tyel', 'tyelg', 'tyelm', 'tyelb', + 'tyels', 'tyelt', 'tyelp', 'tyelh', 'tyem', 'tyeb', 'tyebs', 'tyes', 'tyess', 'tyeng', 'tyej', 'tyec', 'tyek', 'tyet', 'tyep', 'tyeh', + 'to', 'tog', 'togg', 'togs', 'ton', 'tonj', 'tonh', 'tod', 'tol', 'tolg', 'tolm', 'tolb', 'tols', 'tolt', 'tolp', 'tolh', + 'tom', 'tob', 'tobs', 'tos', 'toss', 'tong', 'toj', 'toc', 'tok', 'tot', 'top', 'toh', 'twa', 'twag', 'twagg', 'twags', + 'twan', 'twanj', 'twanh', 'twad', 'twal', 'twalg', 'twalm', 'twalb', 'twals', 'twalt', 'twalp', 'twalh', 'twam', 'twab', 'twabs', 'twas', + 'twass', 'twang', 'twaj', 'twac', 'twak', 'twat', 'twap', 'twah', 'twae', 'twaeg', 'twaegg', 'twaegs', 'twaen', 'twaenj', 'twaenh', 'twaed', + 'twael', 'twaelg', 'twaelm', 'twaelb', 'twaels', 'twaelt', 'twaelp', 'twaelh', 'twaem', 'twaeb', 'twaebs', 'twaes', 'twaess', 'twaeng', 'twaej', 'twaec', + 'twaek', 'twaet', 'twaep', 'twaeh', 'toe', 'toeg', 'toegg', 'toegs', 'toen', 'toenj', 'toenh', 'toed', 'toel', 'toelg', 'toelm', 'toelb'), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/xd2.php b/NEUE DATEIEN/includes/classes/transliteration/xd2.php new file mode 100644 index 0000000..9eb2e9f --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/xd2.php @@ -0,0 +1,21 @@ + array('toels', 'toelt', 'toelp', 'toelh', 'toem', 'toeb', 'toebs', 'toes', 'toess', 'toeng', 'toej', 'toec', 'toek', 'toet', 'toep', 'toeh', + 'tyo', 'tyog', 'tyogg', 'tyogs', 'tyon', 'tyonj', 'tyonh', 'tyod', 'tyol', 'tyolg', 'tyolm', 'tyolb', 'tyols', 'tyolt', 'tyolp', 'tyolh', + 'tyom', 'tyob', 'tyobs', 'tyos', 'tyoss', 'tyong', 'tyoj', 'tyoc', 'tyok', 'tyot', 'tyop', 'tyoh', 'tu', 'tug', 'tugg', 'tugs', + 'tun', 'tunj', 'tunh', 'tud', 'tul', 'tulg', 'tulm', 'tulb', 'tuls', 'tult', 'tulp', 'tulh', 'tum', 'tub', 'tubs', 'tus', + 'tuss', 'tung', 'tuj', 'tuc', 'tuk', 'tut', 'tup', 'tuh', 'tweo', 'tweog', 'tweogg', 'tweogs', 'tweon', 'tweonj', 'tweonh', 'tweod', + 'tweol', 'tweolg', 'tweolm', 'tweolb', 'tweols', 'tweolt', 'tweolp', 'tweolh', 'tweom', 'tweob', 'tweobs', 'tweos', 'tweoss', 'tweong', 'tweoj', 'tweoc', + 'tweok', 'tweot', 'tweop', 'tweoh', 'twe', 'tweg', 'twegg', 'twegs', 'twen', 'twenj', 'twenh', 'twed', 'twel', 'twelg', 'twelm', 'twelb', + 'twels', 'twelt', 'twelp', 'twelh', 'twem', 'tweb', 'twebs', 'twes', 'twess', 'tweng', 'twej', 'twec', 'twek', 'twet', 'twep', 'tweh', + 'twi', 'twig', 'twigg', 'twigs', 'twin', 'twinj', 'twinh', 'twid', 'twil', 'twilg', 'twilm', 'twilb', 'twils', 'twilt', 'twilp', 'twilh', + 'twim', 'twib', 'twibs', 'twis', 'twiss', 'twing', 'twij', 'twic', 'twik', 'twit', 'twip', 'twih', 'tyu', 'tyug', 'tyugg', 'tyugs', + 'tyun', 'tyunj', 'tyunh', 'tyud', 'tyul', 'tyulg', 'tyulm', 'tyulb', 'tyuls', 'tyult', 'tyulp', 'tyulh', 'tyum', 'tyub', 'tyubs', 'tyus', + 'tyuss', 'tyung', 'tyuj', 'tyuc', 'tyuk', 'tyut', 'tyup', 'tyuh', 'teu', 'teug', 'teugg', 'teugs', 'teun', 'teunj', 'teunh', 'teud', + 'teul', 'teulg', 'teulm', 'teulb', 'teuls', 'teult', 'teulp', 'teulh', 'teum', 'teub', 'teubs', 'teus', 'teuss', 'teung', 'teuj', 'teuc', + 'teuk', 'teut', 'teup', 'teuh', 'tyi', 'tyig', 'tyigg', 'tyigs', 'tyin', 'tyinj', 'tyinh', 'tyid', 'tyil', 'tyilg', 'tyilm', 'tyilb', + 'tyils', 'tyilt', 'tyilp', 'tyilh', 'tyim', 'tyib', 'tyibs', 'tyis', 'tyiss', 'tying', 'tyij', 'tyic', 'tyik', 'tyit', 'tyip', 'tyih', + 'ti', 'tig', 'tigg', 'tigs', 'tin', 'tinj', 'tinh', 'tid', 'til', 'tilg', 'tilm', 'tilb', 'tils', 'tilt', 'tilp', 'tilh'), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/xd3.php b/NEUE DATEIEN/includes/classes/transliteration/xd3.php new file mode 100644 index 0000000..db79981 --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/xd3.php @@ -0,0 +1,21 @@ + array('tim', 'tib', 'tibs', 'tis', 'tiss', 'ting', 'tij', 'tic', 'tik', 'tit', 'tip', 'tih', 'pa', 'pag', 'pagg', 'pags', + 'pan', 'panj', 'panh', 'pad', 'pal', 'palg', 'palm', 'palb', 'pals', 'palt', 'palp', 'palh', 'pam', 'pab', 'pabs', 'pas', + 'pass', 'pang', 'paj', 'pac', 'pak', 'pat', 'pap', 'pah', 'pae', 'paeg', 'paegg', 'paegs', 'paen', 'paenj', 'paenh', 'paed', + 'pael', 'paelg', 'paelm', 'paelb', 'paels', 'paelt', 'paelp', 'paelh', 'paem', 'paeb', 'paebs', 'paes', 'paess', 'paeng', 'paej', 'paec', + 'paek', 'paet', 'paep', 'paeh', 'pya', 'pyag', 'pyagg', 'pyags', 'pyan', 'pyanj', 'pyanh', 'pyad', 'pyal', 'pyalg', 'pyalm', 'pyalb', + 'pyals', 'pyalt', 'pyalp', 'pyalh', 'pyam', 'pyab', 'pyabs', 'pyas', 'pyass', 'pyang', 'pyaj', 'pyac', 'pyak', 'pyat', 'pyap', 'pyah', + 'pyae', 'pyaeg', 'pyaegg', 'pyaegs', 'pyaen', 'pyaenj', 'pyaenh', 'pyaed', 'pyael', 'pyaelg', 'pyaelm', 'pyaelb', 'pyaels', 'pyaelt', 'pyaelp', 'pyaelh', + 'pyaem', 'pyaeb', 'pyaebs', 'pyaes', 'pyaess', 'pyaeng', 'pyaej', 'pyaec', 'pyaek', 'pyaet', 'pyaep', 'pyaeh', 'peo', 'peog', 'peogg', 'peogs', + 'peon', 'peonj', 'peonh', 'peod', 'peol', 'peolg', 'peolm', 'peolb', 'peols', 'peolt', 'peolp', 'peolh', 'peom', 'peob', 'peobs', 'peos', + 'peoss', 'peong', 'peoj', 'peoc', 'peok', 'peot', 'peop', 'peoh', 'pe', 'peg', 'pegg', 'pegs', 'pen', 'penj', 'penh', 'ped', + 'pel', 'pelg', 'pelm', 'pelb', 'pels', 'pelt', 'pelp', 'pelh', 'pem', 'peb', 'pebs', 'pes', 'pess', 'peng', 'pej', 'pec', + 'pek', 'pet', 'pep', 'peh', 'pyeo', 'pyeog', 'pyeogg', 'pyeogs', 'pyeon', 'pyeonj', 'pyeonh', 'pyeod', 'pyeol', 'pyeolg', 'pyeolm', 'pyeolb', + 'pyeols', 'pyeolt', 'pyeolp', 'pyeolh', 'pyeom', 'pyeob', 'pyeobs', 'pyeos', 'pyeoss', 'pyeong', 'pyeoj', 'pyeoc', 'pyeok', 'pyeot', 'pyeop', 'pyeoh', + 'pye', 'pyeg', 'pyegg', 'pyegs', 'pyen', 'pyenj', 'pyenh', 'pyed', 'pyel', 'pyelg', 'pyelm', 'pyelb', 'pyels', 'pyelt', 'pyelp', 'pyelh', + 'pyem', 'pyeb', 'pyebs', 'pyes', 'pyess', 'pyeng', 'pyej', 'pyec', 'pyek', 'pyet', 'pyep', 'pyeh', 'po', 'pog', 'pogg', 'pogs', + 'pon', 'ponj', 'ponh', 'pod', 'pol', 'polg', 'polm', 'polb', 'pols', 'polt', 'polp', 'polh', 'pom', 'pob', 'pobs', 'pos'), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/xd4.php b/NEUE DATEIEN/includes/classes/transliteration/xd4.php new file mode 100644 index 0000000..0bfff88 --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/xd4.php @@ -0,0 +1,21 @@ + array('poss', 'pong', 'poj', 'poc', 'pok', 'pot', 'pop', 'poh', 'pwa', 'pwag', 'pwagg', 'pwags', 'pwan', 'pwanj', 'pwanh', 'pwad', + 'pwal', 'pwalg', 'pwalm', 'pwalb', 'pwals', 'pwalt', 'pwalp', 'pwalh', 'pwam', 'pwab', 'pwabs', 'pwas', 'pwass', 'pwang', 'pwaj', 'pwac', + 'pwak', 'pwat', 'pwap', 'pwah', 'pwae', 'pwaeg', 'pwaegg', 'pwaegs', 'pwaen', 'pwaenj', 'pwaenh', 'pwaed', 'pwael', 'pwaelg', 'pwaelm', 'pwaelb', + 'pwaels', 'pwaelt', 'pwaelp', 'pwaelh', 'pwaem', 'pwaeb', 'pwaebs', 'pwaes', 'pwaess', 'pwaeng', 'pwaej', 'pwaec', 'pwaek', 'pwaet', 'pwaep', 'pwaeh', + 'poe', 'poeg', 'poegg', 'poegs', 'poen', 'poenj', 'poenh', 'poed', 'poel', 'poelg', 'poelm', 'poelb', 'poels', 'poelt', 'poelp', 'poelh', + 'poem', 'poeb', 'poebs', 'poes', 'poess', 'poeng', 'poej', 'poec', 'poek', 'poet', 'poep', 'poeh', 'pyo', 'pyog', 'pyogg', 'pyogs', + 'pyon', 'pyonj', 'pyonh', 'pyod', 'pyol', 'pyolg', 'pyolm', 'pyolb', 'pyols', 'pyolt', 'pyolp', 'pyolh', 'pyom', 'pyob', 'pyobs', 'pyos', + 'pyoss', 'pyong', 'pyoj', 'pyoc', 'pyok', 'pyot', 'pyop', 'pyoh', 'pu', 'pug', 'pugg', 'pugs', 'pun', 'punj', 'punh', 'pud', + 'pul', 'pulg', 'pulm', 'pulb', 'puls', 'pult', 'pulp', 'pulh', 'pum', 'pub', 'pubs', 'pus', 'puss', 'pung', 'puj', 'puc', + 'puk', 'put', 'pup', 'puh', 'pweo', 'pweog', 'pweogg', 'pweogs', 'pweon', 'pweonj', 'pweonh', 'pweod', 'pweol', 'pweolg', 'pweolm', 'pweolb', + 'pweols', 'pweolt', 'pweolp', 'pweolh', 'pweom', 'pweob', 'pweobs', 'pweos', 'pweoss', 'pweong', 'pweoj', 'pweoc', 'pweok', 'pweot', 'pweop', 'pweoh', + 'pwe', 'pweg', 'pwegg', 'pwegs', 'pwen', 'pwenj', 'pwenh', 'pwed', 'pwel', 'pwelg', 'pwelm', 'pwelb', 'pwels', 'pwelt', 'pwelp', 'pwelh', + 'pwem', 'pweb', 'pwebs', 'pwes', 'pwess', 'pweng', 'pwej', 'pwec', 'pwek', 'pwet', 'pwep', 'pweh', 'pwi', 'pwig', 'pwigg', 'pwigs', + 'pwin', 'pwinj', 'pwinh', 'pwid', 'pwil', 'pwilg', 'pwilm', 'pwilb', 'pwils', 'pwilt', 'pwilp', 'pwilh', 'pwim', 'pwib', 'pwibs', 'pwis', + 'pwiss', 'pwing', 'pwij', 'pwic', 'pwik', 'pwit', 'pwip', 'pwih', 'pyu', 'pyug', 'pyugg', 'pyugs', 'pyun', 'pyunj', 'pyunh', 'pyud', + 'pyul', 'pyulg', 'pyulm', 'pyulb', 'pyuls', 'pyult', 'pyulp', 'pyulh', 'pyum', 'pyub', 'pyubs', 'pyus', 'pyuss', 'pyung', 'pyuj', 'pyuc'), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/xd5.php b/NEUE DATEIEN/includes/classes/transliteration/xd5.php new file mode 100644 index 0000000..65b4eff --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/xd5.php @@ -0,0 +1,21 @@ + array('pyuk', 'pyut', 'pyup', 'pyuh', 'peu', 'peug', 'peugg', 'peugs', 'peun', 'peunj', 'peunh', 'peud', 'peul', 'peulg', 'peulm', 'peulb', + 'peuls', 'peult', 'peulp', 'peulh', 'peum', 'peub', 'peubs', 'peus', 'peuss', 'peung', 'peuj', 'peuc', 'peuk', 'peut', 'peup', 'peuh', + 'pyi', 'pyig', 'pyigg', 'pyigs', 'pyin', 'pyinj', 'pyinh', 'pyid', 'pyil', 'pyilg', 'pyilm', 'pyilb', 'pyils', 'pyilt', 'pyilp', 'pyilh', + 'pyim', 'pyib', 'pyibs', 'pyis', 'pyiss', 'pying', 'pyij', 'pyic', 'pyik', 'pyit', 'pyip', 'pyih', 'pi', 'pig', 'pigg', 'pigs', + 'pin', 'pinj', 'pinh', 'pid', 'pil', 'pilg', 'pilm', 'pilb', 'pils', 'pilt', 'pilp', 'pilh', 'pim', 'pib', 'pibs', 'pis', + 'piss', 'ping', 'pij', 'pic', 'pik', 'pit', 'pip', 'pih', 'ha', 'hag', 'hagg', 'hags', 'han', 'hanj', 'hanh', 'had', + 'hal', 'halg', 'halm', 'halb', 'hals', 'halt', 'halp', 'halh', 'ham', 'hab', 'habs', 'has', 'hass', 'hang', 'haj', 'hac', + 'hak', 'hat', 'hap', 'hah', 'hae', 'haeg', 'haegg', 'haegs', 'haen', 'haenj', 'haenh', 'haed', 'hael', 'haelg', 'haelm', 'haelb', + 'haels', 'haelt', 'haelp', 'haelh', 'haem', 'haeb', 'haebs', 'haes', 'haess', 'haeng', 'haej', 'haec', 'haek', 'haet', 'haep', 'haeh', + 'hya', 'hyag', 'hyagg', 'hyags', 'hyan', 'hyanj', 'hyanh', 'hyad', 'hyal', 'hyalg', 'hyalm', 'hyalb', 'hyals', 'hyalt', 'hyalp', 'hyalh', + 'hyam', 'hyab', 'hyabs', 'hyas', 'hyass', 'hyang', 'hyaj', 'hyac', 'hyak', 'hyat', 'hyap', 'hyah', 'hyae', 'hyaeg', 'hyaegg', 'hyaegs', + 'hyaen', 'hyaenj', 'hyaenh', 'hyaed', 'hyael', 'hyaelg', 'hyaelm', 'hyaelb', 'hyaels', 'hyaelt', 'hyaelp', 'hyaelh', 'hyaem', 'hyaeb', 'hyaebs', 'hyaes', + 'hyaess', 'hyaeng', 'hyaej', 'hyaec', 'hyaek', 'hyaet', 'hyaep', 'hyaeh', 'heo', 'heog', 'heogg', 'heogs', 'heon', 'heonj', 'heonh', 'heod', + 'heol', 'heolg', 'heolm', 'heolb', 'heols', 'heolt', 'heolp', 'heolh', 'heom', 'heob', 'heobs', 'heos', 'heoss', 'heong', 'heoj', 'heoc', + 'heok', 'heot', 'heop', 'heoh', 'he', 'heg', 'hegg', 'hegs', 'hen', 'henj', 'henh', 'hed', 'hel', 'helg', 'helm', 'helb', + 'hels', 'helt', 'help', 'helh', 'hem', 'heb', 'hebs', 'hes', 'hess', 'heng', 'hej', 'hec', 'hek', 'het', 'hep', 'heh'), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/xd6.php b/NEUE DATEIEN/includes/classes/transliteration/xd6.php new file mode 100644 index 0000000..96f98e2 --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/xd6.php @@ -0,0 +1,21 @@ + array('hyeo', 'hyeog', 'hyeogg', 'hyeogs', 'hyeon', 'hyeonj', 'hyeonh', 'hyeod', 'hyeol', 'hyeolg', 'hyeolm', 'hyeolb', 'hyeols', 'hyeolt', 'hyeolp', 'hyeolh', + 'hyeom', 'hyeob', 'hyeobs', 'hyeos', 'hyeoss', 'hyeong', 'hyeoj', 'hyeoc', 'hyeok', 'hyeot', 'hyeop', 'hyeoh', 'hye', 'hyeg', 'hyegg', 'hyegs', + 'hyen', 'hyenj', 'hyenh', 'hyed', 'hyel', 'hyelg', 'hyelm', 'hyelb', 'hyels', 'hyelt', 'hyelp', 'hyelh', 'hyem', 'hyeb', 'hyebs', 'hyes', + 'hyess', 'hyeng', 'hyej', 'hyec', 'hyek', 'hyet', 'hyep', 'hyeh', 'ho', 'hog', 'hogg', 'hogs', 'hon', 'honj', 'honh', 'hod', + 'hol', 'holg', 'holm', 'holb', 'hols', 'holt', 'holp', 'holh', 'hom', 'hob', 'hobs', 'hos', 'hoss', 'hong', 'hoj', 'hoc', + 'hok', 'hot', 'hop', 'hoh', 'hwa', 'hwag', 'hwagg', 'hwags', 'hwan', 'hwanj', 'hwanh', 'hwad', 'hwal', 'hwalg', 'hwalm', 'hwalb', + 'hwals', 'hwalt', 'hwalp', 'hwalh', 'hwam', 'hwab', 'hwabs', 'hwas', 'hwass', 'hwang', 'hwaj', 'hwac', 'hwak', 'hwat', 'hwap', 'hwah', + 'hwae', 'hwaeg', 'hwaegg', 'hwaegs', 'hwaen', 'hwaenj', 'hwaenh', 'hwaed', 'hwael', 'hwaelg', 'hwaelm', 'hwaelb', 'hwaels', 'hwaelt', 'hwaelp', 'hwaelh', + 'hwaem', 'hwaeb', 'hwaebs', 'hwaes', 'hwaess', 'hwaeng', 'hwaej', 'hwaec', 'hwaek', 'hwaet', 'hwaep', 'hwaeh', 'hoe', 'hoeg', 'hoegg', 'hoegs', + 'hoen', 'hoenj', 'hoenh', 'hoed', 'hoel', 'hoelg', 'hoelm', 'hoelb', 'hoels', 'hoelt', 'hoelp', 'hoelh', 'hoem', 'hoeb', 'hoebs', 'hoes', + 'hoess', 'hoeng', 'hoej', 'hoec', 'hoek', 'hoet', 'hoep', 'hoeh', 'hyo', 'hyog', 'hyogg', 'hyogs', 'hyon', 'hyonj', 'hyonh', 'hyod', + 'hyol', 'hyolg', 'hyolm', 'hyolb', 'hyols', 'hyolt', 'hyolp', 'hyolh', 'hyom', 'hyob', 'hyobs', 'hyos', 'hyoss', 'hyong', 'hyoj', 'hyoc', + 'hyok', 'hyot', 'hyop', 'hyoh', 'hu', 'hug', 'hugg', 'hugs', 'hun', 'hunj', 'hunh', 'hud', 'hul', 'hulg', 'hulm', 'hulb', + 'huls', 'hult', 'hulp', 'hulh', 'hum', 'hub', 'hubs', 'hus', 'huss', 'hung', 'huj', 'huc', 'huk', 'hut', 'hup', 'huh', + 'hweo', 'hweog', 'hweogg', 'hweogs', 'hweon', 'hweonj', 'hweonh', 'hweod', 'hweol', 'hweolg', 'hweolm', 'hweolb', 'hweols', 'hweolt', 'hweolp', 'hweolh', + 'hweom', 'hweob', 'hweobs', 'hweos', 'hweoss', 'hweong', 'hweoj', 'hweoc', 'hweok', 'hweot', 'hweop', 'hweoh', 'hwe', 'hweg', 'hwegg', 'hwegs'), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/xd7.php b/NEUE DATEIEN/includes/classes/transliteration/xd7.php new file mode 100644 index 0000000..b44ecec --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/xd7.php @@ -0,0 +1,21 @@ + array('hwen', 'hwenj', 'hwenh', 'hwed', 'hwel', 'hwelg', 'hwelm', 'hwelb', 'hwels', 'hwelt', 'hwelp', 'hwelh', 'hwem', 'hweb', 'hwebs', 'hwes', + 'hwess', 'hweng', 'hwej', 'hwec', 'hwek', 'hwet', 'hwep', 'hweh', 'hwi', 'hwig', 'hwigg', 'hwigs', 'hwin', 'hwinj', 'hwinh', 'hwid', + 'hwil', 'hwilg', 'hwilm', 'hwilb', 'hwils', 'hwilt', 'hwilp', 'hwilh', 'hwim', 'hwib', 'hwibs', 'hwis', 'hwiss', 'hwing', 'hwij', 'hwic', + 'hwik', 'hwit', 'hwip', 'hwih', 'hyu', 'hyug', 'hyugg', 'hyugs', 'hyun', 'hyunj', 'hyunh', 'hyud', 'hyul', 'hyulg', 'hyulm', 'hyulb', + 'hyuls', 'hyult', 'hyulp', 'hyulh', 'hyum', 'hyub', 'hyubs', 'hyus', 'hyuss', 'hyung', 'hyuj', 'hyuc', 'hyuk', 'hyut', 'hyup', 'hyuh', + 'heu', 'heug', 'heugg', 'heugs', 'heun', 'heunj', 'heunh', 'heud', 'heul', 'heulg', 'heulm', 'heulb', 'heuls', 'heult', 'heulp', 'heulh', + 'heum', 'heub', 'heubs', 'heus', 'heuss', 'heung', 'heuj', 'heuc', 'heuk', 'heut', 'heup', 'heuh', 'hyi', 'hyig', 'hyigg', 'hyigs', + 'hyin', 'hyinj', 'hyinh', 'hyid', 'hyil', 'hyilg', 'hyilm', 'hyilb', 'hyils', 'hyilt', 'hyilp', 'hyilh', 'hyim', 'hyib', 'hyibs', 'hyis', + 'hyiss', 'hying', 'hyij', 'hyic', 'hyik', 'hyit', 'hyip', 'hyih', 'hi', 'hig', 'higg', 'higs', 'hin', 'hinj', 'hinh', 'hid', + 'hil', 'hilg', 'hilm', 'hilb', 'hils', 'hilt', 'hilp', 'hilh', 'him', 'hib', 'hibs', 'his', 'hiss', 'hing', 'hij', 'hic', + 'hik', 'hit', 'hip', 'hih', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/xf9.php b/NEUE DATEIEN/includes/classes/transliteration/xf9.php new file mode 100644 index 0000000..498750e --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/xf9.php @@ -0,0 +1,21 @@ + array('Kay ', 'Kayng ', 'Ke ', 'Ko ', 'Kol ', 'Koc ', 'Kwi ', 'Kwi ', 'Kyun ', 'Kul ', 'Kum ', 'Na ', 'Na ', 'Na ', 'La ', 'Na ', + 'Na ', 'Na ', 'Na ', 'Na ', 'Nak ', 'Nak ', 'Nak ', 'Nak ', 'Nak ', 'Nak ', 'Nak ', 'Nan ', 'Nan ', 'Nan ', 'Nan ', 'Nan ', + 'Nan ', 'Nam ', 'Nam ', 'Nam ', 'Nam ', 'Nap ', 'Nap ', 'Nap ', 'Nang ', 'Nang ', 'Nang ', 'Nang ', 'Nang ', 'Nay ', 'Nayng ', 'No ', + 'No ', 'No ', 'No ', 'No ', 'No ', 'No ', 'No ', 'No ', 'No ', 'No ', 'No ', 'Nok ', 'Nok ', 'Nok ', 'Nok ', 'Nok ', + 'Nok ', 'Non ', 'Nong ', 'Nong ', 'Nong ', 'Nong ', 'Noy ', 'Noy ', 'Noy ', 'Noy ', 'Nwu ', 'Nwu ', 'Nwu ', 'Nwu ', 'Nwu ', 'Nwu ', + 'Nwu ', 'Nwu ', 'Nuk ', 'Nuk ', 'Num ', 'Nung ', 'Nung ', 'Nung ', 'Nung ', 'Nung ', 'Twu ', 'La ', 'Lak ', 'Lak ', 'Lan ', 'Lyeng ', + 'Lo ', 'Lyul ', 'Li ', 'Pey ', 'Pen ', 'Pyen ', 'Pwu ', 'Pwul ', 'Pi ', 'Sak ', 'Sak ', 'Sam ', 'Sayk ', 'Sayng ', 'Sep ', 'Sey ', + 'Sway ', 'Sin ', 'Sim ', 'Sip ', 'Ya ', 'Yak ', 'Yak ', 'Yang ', 'Yang ', 'Yang ', 'Yang ', 'Yang ', 'Yang ', 'Yang ', 'Yang ', 'Ye ', + 'Ye ', 'Ye ', 'Ye ', 'Ye ', 'Ye ', 'Ye ', 'Ye ', 'Ye ', 'Ye ', 'Ye ', 'Yek ', 'Yek ', 'Yek ', 'Yek ', 'Yen ', 'Yen ', + 'Yen ', 'Yen ', 'Yen ', 'Yen ', 'Yen ', 'Yen ', 'Yen ', 'Yen ', 'Yen ', 'Yen ', 'Yen ', 'Yen ', 'Yel ', 'Yel ', 'Yel ', 'Yel ', + 'Yel ', 'Yel ', 'Yem ', 'Yem ', 'Yem ', 'Yem ', 'Yem ', 'Yep ', 'Yeng ', 'Yeng ', 'Yeng ', 'Yeng ', 'Yeng ', 'Yeng ', 'Yeng ', 'Yeng ', + 'Yeng ', 'Yeng ', 'Yeng ', 'Yeng ', 'Yeng ', 'Yey ', 'Yey ', 'Yey ', 'Yey ', 'O ', 'Yo ', 'Yo ', 'Yo ', 'Yo ', 'Yo ', 'Yo ', + 'Yo ', 'Yo ', 'Yo ', 'Yo ', 'Yong ', 'Wun ', 'Wen ', 'Yu ', 'Yu ', 'Yu ', 'Yu ', 'Yu ', 'Yu ', 'Yu ', 'Yu ', 'Yu ', + 'Yu ', 'Yuk ', 'Yuk ', 'Yuk ', 'Yun ', 'Yun ', 'Yun ', 'Yun ', 'Yul ', 'Yul ', 'Yul ', 'Yul ', 'Yung ', 'I ', 'I ', 'I ', + 'I ', 'I ', 'I ', 'I ', 'I ', 'I ', 'I ', 'I ', 'I ', 'I ', 'I ', 'Ik ', 'Ik ', 'In ', 'In ', 'In ', + 'In ', 'In ', 'In ', 'In ', 'Im ', 'Im ', 'Im ', 'Ip ', 'Ip ', 'Ip ', 'Cang ', 'Cek ', 'Ci ', 'Cip ', 'Cha ', 'Chek '), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/xfa.php b/NEUE DATEIEN/includes/classes/transliteration/xfa.php new file mode 100644 index 0000000..c5b7d04 --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/xfa.php @@ -0,0 +1,21 @@ + array('Chey ', 'Thak ', 'Thak ', 'Thang ', 'Thayk ', 'Thong ', 'Pho ', 'Phok ', 'Hang ', 'Hang ', 'Hyen ', 'Hwak ', 'Wu ', 'Huo ', NULL, NULL, + 'Zhong ', NULL, 'Qing ', NULL, NULL, 'Xi ', 'Zhu ', 'Yi ', 'Li ', 'Shen ', 'Xiang ', 'Fu ', 'Jing ', 'Jing ', 'Yu ', NULL, + 'Hagi ', NULL, 'Zhu ', NULL, NULL, 'Yi ', 'Du ', NULL, NULL, NULL, 'Fan ', 'Si ', 'Guan ', NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/xfb.php b/NEUE DATEIEN/includes/classes/transliteration/xfb.php new file mode 100644 index 0000000..696a74b --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/xfb.php @@ -0,0 +1,21 @@ + array('ff', 'fi', 'fl', 'ffi', 'ffl', 'st', 'st', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, 'mn', 'me', 'mi', 'vn', 'mkh', NULL, NULL, NULL, NULL, NULL, 'yi', '', 'ay', + '`', '', 'd', 'h', 'k', 'l', 'm', 'm', 't', '+', 'sh', 's', 'sh', 's', 'a', 'a', + '', 'b', 'g', 'd', 'h', 'v', 'z', NULL, 't', 'y', 'k', 'k', 'l', NULL, 'l', NULL, + 'n', 'n', NULL, 'p', 'p', NULL, 'ts', 'ts', 'r', 'sh', 't', 'vo', 'b', 'k', 'p', 'l', + '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', + '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', + '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', + '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', + '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', + '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', + '', '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, '', '', '', '', '', '', '', '', '', '', '', '', '', + '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', + '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/xfc.php b/NEUE DATEIEN/includes/classes/transliteration/xfc.php new file mode 100644 index 0000000..f48850e --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/xfc.php @@ -0,0 +1,21 @@ + array('', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', + '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', + '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', + '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', + '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', + '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', + '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', + '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', + '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', + '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', + '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', + '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', + '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', + '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', + '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', + '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/xfd.php b/NEUE DATEIEN/includes/classes/transliteration/xfd.php new file mode 100644 index 0000000..210b1fd --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/xfd.php @@ -0,0 +1,21 @@ + array('', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', + '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', + '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', + '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', + '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', + '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', + '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', + NULL, NULL, '', '', '', '', '', '', '', '', '', '', '', '', '', '', + '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', + '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', + '', '', '', '', '', '', '', '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + '', '', '', '', '', '', '', '', '', '', '', '', NULL, NULL, NULL), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/xfe.php b/NEUE DATEIEN/includes/classes/transliteration/xfe.php new file mode 100644 index 0000000..2b5d206 --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/xfe.php @@ -0,0 +1,21 @@ + array(NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + '', '', '', '~', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + '..', '--', '-', '_', '_', '(', ') ', '{', '} ', '[', '] ', '[(', ')] ', '<<', '>> ', '<', + '> ', '[', '] ', '{', '}', NULL, NULL, NULL, NULL, '', '', '', '', '', '', '', + ',', ',', '.', '', ';', ':', '?', '!', '-', '(', ')', '{', '}', '{', '}', '#', + '&', '*', '+', '-', '<', '>', '=', '', '\\', '$', '%', '@', NULL, NULL, NULL, NULL, + '', '', '', NULL, '', NULL, '', '', '', '', '', '', '', '', '', '', + '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', + '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', + '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', + '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', + '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', + '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', + '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', + '', '', '', '', '', '', '', '', '', '', '', '', '', NULL, NULL, ''), +); diff --git a/NEUE DATEIEN/includes/classes/transliteration/xff.php b/NEUE DATEIEN/includes/classes/transliteration/xff.php new file mode 100644 index 0000000..5b6f9a9 --- /dev/null +++ b/NEUE DATEIEN/includes/classes/transliteration/xff.php @@ -0,0 +1,21 @@ + array(NULL, '!', '"', '#', '$', '%', '&', '\'', '(', ')', '*', '+', ',', '-', '.', '/', + '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', ':', ';', '<', '=', '>', '?', + '@', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', + 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '[', '\\', ']', '^', '_', + '`', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', + 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '{', '|', '}', '~', NULL, + NULL, '.', '[', ']', ',', '*', 'wo', 'a', 'i', 'u', 'e', 'o', 'ya', 'yu', 'yo', 'tu', + '+', 'a', 'i', 'u', 'e', 'o', 'ka', 'ki', 'ku', 'ke', 'ko', 'sa', 'si', 'su', 'se', 'so', + 'ta', 'ti', 'tu', 'te', 'to', 'na', 'ni', 'nu', 'ne', 'no', 'ha', 'hi', 'hu', 'he', 'ho', 'ma', + 'mi', 'mu', 'me', 'mo', 'ya', 'yu', 'yo', 'ra', 'ri', 'ru', 're', 'ro', 'wa', 'n', ':', ';', + '', 'g', 'gg', 'gs', 'n', 'nj', 'nh', 'd', 'dd', 'r', 'lg', 'lm', 'lb', 'ls', 'lt', 'lp', + 'rh', 'm', 'b', 'bb', 'bs', 's', 'ss', '', 'j', 'jj', 'c', 'k', 't', 'p', 'h', NULL, + NULL, NULL, 'a', 'ae', 'ya', 'yae', 'eo', 'e', NULL, NULL, 'yeo', 'ye', 'o', 'wa', 'wae', 'oe', + NULL, NULL, 'yo', 'u', 'weo', 'we', 'wi', 'yu', NULL, NULL, 'eu', 'yi', 'i', NULL, NULL, NULL, + '/C', 'PS', '!', '-', '|', 'Y=', 'W=', NULL, '|', '-', '|', '-', '|', '#', 'O', NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, '{', '|', '}', '', '', '', ''), +); diff --git a/NEUE DATEIEN/includes/extra_datafiles/ceon_uri_mapping_database_tables.php b/NEUE DATEIEN/includes/extra_datafiles/ceon_uri_mapping_database_tables.php new file mode 100644 index 0000000..2b0420c --- /dev/null +++ b/NEUE DATEIEN/includes/extra_datafiles/ceon_uri_mapping_database_tables.php @@ -0,0 +1,22 @@ + + * @copyright Copyright 2008-2019 Ceon + * @copyright Copyright 2003-2007 Zen Cart Development Team + * @copyright Portions Copyright 2003 osCommerce + * @link http://ceon.net/software/business/zen-cart/uri-mapping + * @license http://www.zen-cart.com/license/2_0.txt GNU Public License V2.0 + * @version $Id: ceon_uri_mapping_database_tables.php 1027 2012-07-17 20:31:10Z conor $ + */ + +if (!defined('IS_ADMIN_FLAG')) { + die('Illegal Access'); +} + +define('TABLE_CEON_URI_MAPPINGS', DB_PREFIX . 'ceon_uri_mappings'); +define('TABLE_CEON_URI_MAPPING_CONFIGS', DB_PREFIX . 'ceon_uri_mapping_configs'); +define('TABLE_CEON_URI_MAPPING_PRODUCT_RELATED_PAGES_URI_PARTS', DB_PREFIX . 'ceon_uri_mapping_prp_uri_parts'); diff --git a/NEUE DATEIEN/includes/extra_datafiles/ceon_uri_mapping_filenames.php b/NEUE DATEIEN/includes/extra_datafiles/ceon_uri_mapping_filenames.php new file mode 100644 index 0000000..bbac1cb --- /dev/null +++ b/NEUE DATEIEN/includes/extra_datafiles/ceon_uri_mapping_filenames.php @@ -0,0 +1,35 @@ + + * @copyright Copyright 2008-2019 Ceon + * @copyright Copyright 2003-2019 Zen Cart Development Team + * @copyright Portions Copyright 2003 osCommerce + * @link http://ceon.net/software/business/zen-cart/uri-mapping + * @license http://www.zen-cart.com/license/2_0.txt GNU Public License V2.0 + * @version $Id: ceon_uri_mapping_filenames.php 1027 2012-07-17 20:31:10Z conor $ + */ + +/** + * Product type info pages which are missing their defines. + */ +if (!defined('FILENAME_DOCUMENT_GENERAL_INFO')) { + define('FILENAME_DOCUMENT_GENERAL_INFO', 'document_general_info'); +} +if (!defined('FILENAME_DOCUMENT_PRODUCT_INFO')) { + define('FILENAME_DOCUMENT_PRODUCT_INFO', 'document_product_info'); +} +if (!defined('FILENAME_EZPAGES_POPUP')) { + define('FILENAME_EZPAGES_POPUP', 'ezpages_popup'); +} +if (!defined('FILENAME_PRODUCT_BOOK_INFO')) { + define('FILENAME_PRODUCT_BOOK_INFO', 'product_book_info'); +} +if (!defined('FILENAME_PRODUCT_FREE_SHIPPING_INFO')) { + define('FILENAME_PRODUCT_FREE_SHIPPING_INFO', 'product_free_shipping_info'); +} +if (!defined('FILENAME_PRODUCT_MUSIC_INFO')) { + define('FILENAME_PRODUCT_MUSIC_INFO', 'product_music_info'); +} diff --git a/NEUE DATEIEN/includes/extra_datafiles/ceon_uri_mapping_product_pages.php b/NEUE DATEIEN/includes/extra_datafiles/ceon_uri_mapping_product_pages.php new file mode 100644 index 0000000..8536c1b --- /dev/null +++ b/NEUE DATEIEN/includes/extra_datafiles/ceon_uri_mapping_product_pages.php @@ -0,0 +1,41 @@ + + * @copyright Copyright 2008-2019 Ceon + * @copyright Copyright 2003-2022 Zen Cart Development Team + * @copyright Portions Copyright 2003 osCommerce + * @link http://ceon.net/software/business/zen-cart/uri-mapping + * @license http://www.zen-cart.com/license/2_0.txt GNU Public License V2.0 + * @version $Id: ceon_uri_mapping_product_pages.php 2022-02-19 20:44:10Z webchills $ + */ + +/** + * If the store has any custom product page types, add their info page definitions to the list. + */ +if (empty($ceon_uri_mapping_product_pages)) $ceon_uri_mapping_product_pages = array(); + +$ceon_uri_mapping_product_pages = array_merge(array( + FILENAME_DOCUMENT_GENERAL_INFO, + FILENAME_DOCUMENT_PRODUCT_INFO, + FILENAME_PRODUCT_INFO, + FILENAME_PRODUCT_BOOK_INFO, + FILENAME_PRODUCT_FREE_SHIPPING_INFO, + FILENAME_PRODUCT_MUSIC_INFO + ), $ceon_uri_mapping_product_pages); + +if (empty($ceon_uri_mapping_product_related_pages)) $ceon_uri_mapping_product_related_pages = array(); + +$ceon_uri_mapping_product_related_pages = array_merge(array( + FILENAME_PRODUCT_REVIEWS, + FILENAME_PRODUCT_REVIEWS_INFO, + FILENAME_PRODUCT_REVIEWS_WRITE + ), $ceon_uri_mapping_product_related_pages); +if (defined('FILENAME_ASK_A_QUESTION')) { + $ceon_uri_mapping_product_related_pages[] = FILENAME_ASK_A_QUESTION; +} diff --git a/NEUE DATEIEN/includes/init_includes/init_ceon_currencies.php b/NEUE DATEIEN/includes/init_includes/init_ceon_currencies.php new file mode 100644 index 0000000..dec3569 --- /dev/null +++ b/NEUE DATEIEN/includes/init_includes/init_ceon_currencies.php @@ -0,0 +1,20 @@ + + * @author Ceon Support + * @copyright Copyright 2008-2019 Ceon + * @copyright Copyright 2003-2007 Zen Cart Development Team + * @copyright Portions Copyright 2003 osCommerce + * @license http://www.zen-cart.com/license/2_0.txt GNU Public License V2.0 + * @version 2019 - 5.0.0 + **/ + +if (isset($ceon_uri_mapping)) { + $ceon_uri_mapping->checkLanguageChangedCurrencyChangeRequired(); +} diff --git a/NEUE DATEIEN/includes/init_includes/init_ceon_uri_mapping_sessions.php b/NEUE DATEIEN/includes/init_includes/init_ceon_uri_mapping_sessions.php new file mode 100644 index 0000000..62bde86 --- /dev/null +++ b/NEUE DATEIEN/includes/init_includes/init_ceon_uri_mapping_sessions.php @@ -0,0 +1,27 @@ + + * @copyright Copyright 2008-2019 Ceon + * @copyright Copyright 2003-2007 Zen Cart Development Team + * @copyright Portions Copyright 2003 osCommerce + * @link http://ceon.net/software/business/zen-cart/uri-mapping + * @license http://www.zen-cart.com/license/2_0.txt GNU Public License V2.0 + * @version $Id: init_ceon_uri_mapping_sessions.php 1027 2019-07-22 for conor: Ceon Support added v5.0.1$ + */ + +if (!defined('IS_ADMIN_FLAG')) { + die('Illegal Access'); +} + +// Used to force the path for sessions to be at the root. +// Static URIs are relative to the site's root, so cookie should be set for the root +// This removes the need to override the file includes/init_includes/init_sessions.php and means +// that the file includes/init_includes/overrides/init_sessions.php is not necessary. +// Option/configuration taken from includes/extra_datafiles/ceon_uri_mapping_sessions_define.php +if (defined('CEON_URI_MAPPING_ENABLED') && CEON_URI_MAPPING_ENABLED != 0) { + define('CUSTOM_COOKIE_PATH', '/'); +} diff --git a/README.md b/README.md index 424fe9c..74d43ff 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,9 @@ # 157-modul-ceon-uri-mapping -CEON Uri Mapping für Zen Cart 1.5.7 deutsch +CEON Uri Mapping für Zen Cart 1.5.7 deutsch + +Hinweis: +Freigegebene getestete Versionen für den Einsatz in Livesystemen ausschließlich unter Releases herunterladen: +* https://github.com/zencartpro/156-modul-ceon-uri-mapping/releases + +Dieses Modul erlaubt das benutzerdefinierte Umschreiben der URLs in Zen Cart. +Anders als bei anderen Modulen dieser Art, erfolgt das Umschreiben nicht automatisch, sondern es kann jede URL per Admin eigens definiert werden, was eine völlige Kontrolle über die vom Shop verwendeten URLs ermöglicht. diff --git a/SQL/install.sql b/SQL/install.sql new file mode 100644 index 0000000..7edd912 --- /dev/null +++ b/SQL/install.sql @@ -0,0 +1,46 @@ +############################################################################################### +# CEON URI Mapping 5.1.1 Install - 2022-02-19 - webchills +############################################################################################### + +############################## +# Create new tables +############################## + +CREATE TABLE IF NOT EXISTS ceon_uri_mapping_configs ( +`id` INT UNSIGNED NOT NULL, +`version` VARCHAR(14) NOT NULL, +`autogen_new` INT(1) UNSIGNED NOT NULL, +`whitespace_replacement` INT(1) UNSIGNED NOT NULL, +`capitalisation` INT(1) UNSIGNED NOT NULL, +`remove_words` TEXT DEFAULT NULL, +`char_str_replacements` TEXT DEFAULT NULL, +`language_code_add` INT(1) UNSIGNED NOT NULL, +`mapping_clash_action` VARCHAR(11) DEFAULT 'warn', +`manage_product_reviews_mappings` INT(1) UNSIGNED DEFAULT 1, +`manage_product_reviews_info_mappings` INT(1) UNSIGNED DEFAULT 1, +`manage_product_reviews_write_mappings` INT(1) UNSIGNED DEFAULT 1, +`manage_ask_a_question_mappings` INT(1) UNSIGNED DEFAULT 1, +`automatic_version_checking` INT(1) UNSIGNED DEFAULT 1, +PRIMARY KEY (`id`) +) ENGINE=MyISAM; + +CREATE TABLE IF NOT EXISTS ceon_uri_mapping_prp_uri_parts ( +`page_type` VARCHAR(21) NOT NULL, +`language_code` CHAR(2) NOT NULL, +`uri_part` VARCHAR(50) NOT NULL, +PRIMARY KEY (`page_type`, `language_code`) +) ENGINE=MyISAM; + + +CREATE TABLE IF NOT EXISTS ceon_uri_mappings ( +`uri` TEXT NOT NULL, +`language_id` INT(11) UNSIGNED DEFAULT NULL, +`current_uri` INT(1) UNSIGNED DEFAULT '0', +`main_page` VARCHAR(45) NULL, +`query_string_parameters` VARCHAR(255) DEFAULT NULL, +`associated_db_id` INT(11) UNSIGNED DEFAULT NULL, +`alternate_uri` VARCHAR(255) DEFAULT NULL, +`redirection_type_code` VARCHAR(3) DEFAULT '301', +`date_added` DATETIME NOT NULL DEFAULT '0001-01-01 00:00:00', +INDEX `assoc_db_id_idx` (`language_id`, `current_uri`, `main_page`, `associated_db_id`) +) ENGINE=MyISAM; \ No newline at end of file diff --git a/liesmich.txt b/liesmich.txt new file mode 100644 index 0000000..e28cf45 --- /dev/null +++ b/liesmich.txt @@ -0,0 +1,174 @@ +CEON URI Mappings 5.1.1 für Zen Cart 1.5.7 deutsch + +Dieses Modul erlaubt das benutzerdefinierte Umschreiben der URLs in Zen Cart. +Anders als bei anderen Modulen dieser Art, erfolgt das Umschreiben nicht automatisch, sondern es kann jede URL per Admin eigens definiert werden, was eine völlige Kontrolle über die vom Shop verwendeten URLs ermöglicht. + +Version 5.1.1 ist ausschließlich für Zen Cart 1.5.7 deutsch geeignet + +Changelog 5.1.1 +Februar 2022 - webchills +Anpassungen für 1.5.7 und PHP 8 + +Changelog 5.1.0 +Juni 2021 - webchills +Aktualisierungen von ceon.net Modul 5.1.0 übernommen +Veraltete und unpassende tell a friend und ask a question Funktionen komplett entfernt +Geänderte Dateien auf den Stand von 1.5.6f gebracht + +Changelog 5.0.1 +Juli 2020 - webchills +Geänderte Datei html_header.php auf den Stand von 1.5.6e gebracht +Fix für too many redirects bei HostEurope +ENABLE_SSL_CATALOG statt ENABLE_SSL + +Changelog 5.0.0 +Juli 2019 - webchills +Komplette Überarbeitung des Moduls durch das CEON Team für Kompatibilität mit 1.5.6 und PHP 7.3 +Fast keine Änderung von Corefiles mehr nötig +Anpassungen für Zen Cart 1.5.6 deutsch +Nicht funktionierenden Update Check entfernt +Anleitung aktualisiert + +Hinweis: +Das Modul ist nicht übersetzt, alle Texte in der Administration sind englisch. +Auch die extrem umfangreiche Doku, die beiliegt ist englisch. + +Beispiel für die URL einer Artikeldetailseite: + +Original Link: +http://www.meinshop.de/index.php?main_page=product_info&cPath=1_4&products_id=1 + +Umgeschriebener Link: +http://www.meinshop.de/hardware/grafikkarten/matrox-g200-mms + +WICHTIG: +Die URLs werden nicht automatisch umgeschrieben. +Wenn der Shop bereits Kategorien enthält, dann müssen Sie bei JEDER Kategorie in die Bearbeitung gehen und unten bei URI Mapping eine gewünschte URL vergeben. +Oder einfach das automatische Vergeben einer URL angekreuzt lassen (Tick this box to have the URIs auto-generated for this category). +Wenn der Shop bereits Artikel enthält, dann müssen Sie bei JEDEM Artikel in die Bearbeitung gehen und unten bei URI Mapping eine gewünschte URL vergeben. +Oder einfach das automatische Vergeben einer URL angekreuzt lassen (Tick this box to have the URIs auto-generated for this product). +Wenn der Shop bereits EZ Pages enthält, dann müssen Sie bei JEDER EZ Page in die Bearbeitung gehen und unten bei URI Mapping eine gewünschte URL vergeben. +Oder einfach das automatische Vergeben einer URL angekreuzt lassen (Tick this box to have the URIs auto-generated for this EZ-Page). +Wenn der Shop bereits Hersteller enthält, dann müssen Sie bei JEDEM Hersteller in die Bearbeitung gehen und unten bei URI Mapping eine gewünschte URL vergeben. +Oder einfach das automatische Vergeben einer URL angekreuzt lassen (Tick this box to have the URIs auto-generated for this manufacturer.). + + + +NEUINSTALLATION + + +Dieses Modul ist nur für Zen Cart 1.5.7 deutsch geeignet und ändert einige wichtige Corefiles. +Es ist kein Modul, das Sie in 2 Minuten einfach hochladen können. +Da das Modul englisch ist, sollten Sie gute Englischkenntnisse haben + +Für den Einbau dieses Moduls sollten Sie über folgende Werkzeuge verfügen: + +1) Ein guter Texteditor. +Damit ist nicht das in Windows enthaltene Notepad oder Microsoft Word gemeint. +Sie benötigen einen Texteditor, der utf-8 versteht und auch im Format utf-8 ohne BOM abspeichern kann. +Empfehlung: UltraEdit (kostenlose 30 Tage Testversion verfügbar) +Ebenfalls gut geeignet ist der kostenlose Texteditor Notepad++ + +2) Ein Tool zum Vergleichen von Dateien +Bei der Installation dieses Moduls ist es erforderlich, dass Sie den Inhalt einiger Ihrer bestehenden Zen Cart Dateien mit dem Inhalt der neuen Moduldateien vergleichen und die Änderungen zusammenführen ("mergen"). +Empfehlung: BeyondCompare (kostenlose 30 Tage Testversion verfügbar) +Ebenfalls gut geeignet ist das kostenlose Programm WinMerge + +Empfehlung: + +Dieses Modul erst in einem Testsystem einbauen und dort konfigurieren/testen und endgültig an die eigenen Wünsche anpassen. Erst dann in einem Liveshop einsetzen! Sichern Sie unbedingt alle Dateien Ihres Shops per FTP und sichern Sie die Datenbank mit phpMyAdmin oder anderen geeigneten Tools! +WICHTIG +Vor dem Einbau dieser Änderungen: +BACKUP von Shop und Datenbank machen! +Keine Haftung, Verwendung auf eigene Gefahr! +BACKUP gemacht? Ok, dann weiterlesen... + +Die Installation erfolgt in folgenden Schritten. Halten Sie diesen Ablauf ein! + +1) +Die install.sql im Ordner SQL mit einem Texteditor öffnen und den Inhalt kopieren. +Inhalt ins Eingabefeld in der Zen Cart Administration unter Tools > SQL Patches installieren kopieren und absenden. +Dadurch werden 3 neue Datenbanktabellen angelegt + +2) +Im Ordner GEAENDERTE DATEIEN den Ordner DEINADMIN auf den Namen des Admin Verzeichnisses umbenennen. +Den Ordner DEINTEMPLATE auf den Namen des im Shop aktiven Templates umbenennen. +Falls Sie im Shop das responsive Standardtemplate responsive_classic verwenden, dann verwenden Sie stattdessen den Ordner DEINTEMPLATE_RESPONSIVE. +Wenn Sie Zen Cart 1.5.7 gerade frisch installiert haben und noch keinerlei Änderungen an den Dateien vorgenommen haben, können Sie nun alle Dateien/Ordner aus dem Ordner GEAENDERTE DATEIEN in der vorgegebenen Struktur in die Zen Cart Installation hochladen. Dabei werden dann etliche Dateien überschrieben. +Wenn Sie Zen Cart 1.5.7 schon länger im Einsatz haben und schon einmal Änderungen an Dateien vorgenommen oder andere Module eingebaut haben, dann laden Sie die Dateien keinesfalls einfach hoch. +Vergleichen Sie alle Dateien im Ordner GEAENDERTE DATEIEN mit den entsprechenden Dateien in Ihrem Shop und nehmen Sie die Änderungen manuell per WinMerge oder BeyondCompare vor. +Dann spielen Sie die geänderten Dateien in der gezeigten Struktur ein. + +3) +Im Ordner NEUE DATEIEN den Ordner DEINADMIN auf den Namen des Admin Verzeichnisses umbenennen. +Dann in der vorgegebenen Struktur hochladen, dabei werden keine bestehenden Dateien überschrieben + +4) +In die Zen Cart Administration einloggen und auf irgendeinen Menüpunkt clicken. +Sie sollten nun unter Module den neuen Menüpunkt CEON URI Mapping (SEO) Konfiguration haben. +Clicken Sie ihn an, Sie sollten nun Erfolgsmeldungen sehen, dass das Modul erfolgreich installiert wurde + +5) +Gehen Sie hier auf Installation Check +Unten wird der Inhalt für die benötigte .htaccess Datei angezeigt +Erstellen Sie eine .htaccess mit dem angezeigten Inhalt +WICHTIG: +Fügen Sie einen zusätzlichen Eintrag ein, um die Minify Funktionalität im Ordner extras nicht zu beeinträchtigen: +# Don't rewrite extras directory +RewriteCond %{REQUEST_URI} !^/xxx/extras/ [NC] +Laden Sie diese .htaccess ins Shopverzeichnis hoch. + +Stellen Sie unter URI Auto-generation Settings nach Ihren Wünschen ein. +Tragen Sie insbesondere die gewünschten Bezeichnungen für die Seiten Bewertungen, Bewertung, Bewertung schreiben und Frage zum Artikel ein. + +Bsp: + +Products' Reviews Pages +deutsch: Bewertungen +englisch: Reviews + +Products' Review Info Pages +deutsch: Bewertung +englisch: Review + +Products' Write A Review Pages +deutsch: Bewertung schreiben +englisch: Write a review + +Products' Ask A Question Pages +deutsch: Frage zum Artikel +englisch: Ask a question + +6) +Unter Konfiguration ist nun ein neuer Menüpunkt CEON URI Mapping (SEO) vorhanden, mit dem das Umschreiben der URLs ein- und ausgeschaltet werden kann + +WICHTIG: +Die URLs werden nicht automatisch umgeschrieben. +Wenn der Shop bereits Kategorien enthält, dann müssen Sie bei JEDER Kategorie in die Bearbeitung gehen und unten bei URI Mapping eine gewünschte URL vergeben. +Oder einfach das automatische Vergeben einer URL angekreuzt lassen (Tick this box to have the URIs auto-generated for this category). +Wenn der Shop bereits Artikel enthält, dann müssen Sie bei JEDEM Artikel in die Bearbeitung gehen und unten bei URI Mapping eine gewünschte URL vergeben. +Oder einfach das automatische Vergeben einer URL angekreuzt lassen (Tick this box to have the URIs auto-generated for this product). +Wenn der Shop bereits EZ Pages enthält, dann müssen Sie bei JEDER EZ Page in die Bearbeitung gehen und unten bei URI Mapping eine gewünschte URL vergeben. +Oder einfach das automatische Vergeben einer URL angekreuzt lassen (Tick this box to have the URIs auto-generated for this EZ-Page). +Wenn der Shop bereits Hersteller enthält, dann müssen Sie bei JEDEM Hersteller in die Bearbeitung gehen und unten bei URI Mapping eine gewünschte URL vergeben. +Oder einfach das automatische Vergeben einer URL angekreuzt lassen (TTick this box to have the URIs auto-generated for this manufacturer.). + +Das Umschreiben von Define Pages (z.B. index.php?main_page=privacy) ist möglich, aber nicht admingesteuert. +Die gewünschten Links für solche Define Pages können direkt in der Datenbank gesetzt werden (siehe englische Dokumentation) +ceon.net bietet dazu auch ein kostenpflichtiges Zusatzmodul an (URI Mapping Manager) + +Lesen Sie die umfangreiche Doku im Ordner DOKU ENGLISCH, um sich mit dem Modul und seinen Möglichkeiten vertraut zu machen. + +____________________________________________________________________________________________________________________________________________ + +UPDATE VON VERSION 5.0.0 oder 5.0.1 auf 5.1.1 + +Wenn Sie in Ihrem 1.5.6 Shop bereits das CEON URI Mapping Modul 5.0.1 oder 5.0.0 verwenden hatten und nun auf Zen Cart 1.5.7 aktualisieren, dann können Sie auch einfach auf 5.1.1 aktualisieren +Gehen Sie dazu genauso vor wie unter Neuinstallation beschrieben. +Einzige Ausnahme: +Punkt 1 lassen Sie natürlich weg, denn Sie haben ja bereits die zusätzlichen CEON URI Mapping Datenbanktabellen in Ihrer Datenbank +Nach dem Hochladen der Dateien gehen Sie auf den Menüpunkt Module > CEON URI Mapping (SEO) Config +Dort werden Sie dann sehen, dass das Modul automatisch auf 5.1.1 aktualisiert wurde. +Löschen Sie nun noch folgende Datei falls vorhanden: +includes/extra_datafiles/ceon_uri_mapping_sessions_define.php +Sie wird bereits seit 5.1.0 nicht mehr benötigt \ No newline at end of file