CINXE.COM
How to Use PHP Poetry Classes to Generate Poems Using the Package Literature: Compose and publish poems - PHP Classes
<!DOCTYPE HTML> <html lang="en"> <head> <meta http-equiv="X-UA-Compatible" content="IE=Edge"> <meta name="google-site-verification" content="koB0IMWgAHKwEXWyOGt9RPqYrJU-fKzpoOTwRnprhKo" /> <title>How to Use PHP Poetry Classes to Generate Poems Using the Package Literature: Compose and publish poems - PHP Classes</title> <!-- https://files.phpclasses.org/styles.css --> <style type="text/css"> *, .normal-size { font-size: 14px; } html, body, input[type=submit] { color: black; font-family: "helvetica" , sans-serif , arial , helvetica; overflow-x: hidden !important; } html, body { background-color: #ffffff; height: 100%; margin: 0px; } a:link, a:active { color: #090F15; text-decoration: none; border-bottom-style: dotted; border-bottom-width: 1px; } a:visited { color: #26394d; } a:hover, #logoPHP > a, #logoCompany > a, #topLogoPHP > a { border-bottom-style: none; } .left { float: left; } .right { float: right; } .clear { clear: both; } input[type=text] { border: none; outline: none; color: #333; background: #ffe; z-index: 90; font-size: 1em; font-weight: normal; font-variant: normal; text-transform: none; font-family: monospace; } img { } h1, h1 * { font-size: 28px; width: auto !important; } h2 { color: #19597c; padding-bottom: 0px; padding-top: 0px; } h2, h2 * { font-size: 22px; } h3, h3 * { color: #19597c; font-size: 20px; margin: 10px 0px; padding: 10px 0px; } h4 * { color: #19597c; font-size: 16px; } h5 * { color: #19597c; font-size: 16px; } h6 * { color: #666666; font-size: 14px; } big big a { display: block; font-size: inherit; padding: 0px 0px 10px; } big a { font-size: inherit; } td > a > span, #reputation-button { font-size: 1em; } #reputation-menu { border-radius: 6px !important; } .nbpb, .nbtb { background-color: inherit; border-width: 0px; } .backgroundDecoration { position: absolute; right: 1025px; top: 0px; } #rightDecorationBg { left: 1025px; } #MainContainer { background-color: #19597c; min-height: 100%; margin: 0 auto; } #Container { background: none repeat scroll 0% 0% #fff; height: auto !important; margin: 0px auto; position: relative; z-index: 10; width: 98% !important; } #PageContent { margin: auto; width: 100% !important; position: relative; text-align: left; } #PageInfo, #PageInfoLogged { background: inherit; width: inherit; position: relative; } .pageDecoration { bottom: 0px; position: absolute; right: -9px; } #leftDecoration { left: -9px; } #user-bar:empty { min-height: 56px; } #user { padding-bottom: 4px; } #user, #TopLine, #UserContent, #order-menu { background-color: #19597c; width: 100%; } .shop-step { color: #ffffff; font-size: 18px; line-height: 36px; font-weight: bold; } .responsive-menu { padding-top: 0px; padding-bottom: 0px; } #TopLine, #UserContent { z-index: 1; position: relative; } #TopLine { position: absolute; } #user table { white-space: nowrap; width: auto; margin: 0px auto; padding: 5px 0px 0px 140px; } #user table td { line-height: 30px; padding: 0px; white-space: nowrap; width: auto; } #user .tabcontent, #endnavigation .tabcontent { color: #C3F0FF; font-weight: bold; text-transform: capitalize; } #user .tabcontent span { float: left; padding: 8px 5px 0px 2px; white-space: nowrap; } #user a { color: #FFFFFF; font-size: 14px; font-weight: bold; padding: 0px 5px 0px 2px; text-align: left; text-decoration: none; border-bottom-style: dotted; border-bottom-width: 1px; white-space: nowrap; } #user a:hover { color: #C3F0FF; } #user img { padding-top: 3px; vertical-align: top; } #user .nbgu { float: left; padding: 0px; white-space: nowrap; } #logoPHP { background-size: cover; text-align: center; height: 136px; background: rgb(63,132,41); background: linear-gradient(90deg, rgba(63,132,41,1) 0%, rgba(255,255,255,1) 50%, rgba(25,89,124,1) 100%); } #logoContainer { padding-top: 38px; display: inline-block; } #Top #logoCompany { position: absolute; right: 145px; top: -60px; } #invertedCompanyLogo { text-align: center; } #elephpant { margin-right: 15px; position: absolute; right: 5px; top: -97px; } #recommendpage { margin: auto; width: 40em; } #recommendpage table { min-width: 40em; text-align: center; white-space: normal; border: 2px solid #ccc; border-style: solid; border-radius: 0 0 5px 5px; border-top: 0; margin-bottom: 10px; } #recommendpage table td { background: none repeat scroll 0% 0% transparent; border: medium none; padding: 10px 0px 5px 10px; vertical-align: top; } #recommendpage table td img { padding: 0px 3px 0px 5px; } #navigation { background-color: #4b9759; clear: both; color: #000 !important; font-size: 1.2em; font-weight: bold; height: 44px; line-height: 24px; padding: 0px; position: relative; text-align: center; width: 100%; } #navigation form { border: 0px none; } #navigation table { height: 44px; width: 974px; } #navigation td { font-size: 14px; padding-top: 9px; } #navigation img { border: 0px none; margin: 0px 0px 0px 5px; vertical-align: middle; } #navigation a { color: #ffffff; text-decoration: none; border-bottom-width: 1px; } #navigation a:hover { text-decoration: underline; border-bottom-style: none; } #navigation td.nbgu { display: none; } #navigation td.nbtu, #MenuContent td.nblu { height: 24px; line-height: 24px; padding: 10px 4px 0px; text-decoration: none; border-bottom-width: 1px; } #navigation td.nbtu input[type=text] { height: 20px; margin: 0px 5px; width: 100px; } #navigation td.nbtu * { float: left; } #ads { clear: both; margin: 0px auto; padding: 0px; width: 1010px; } #topAds { display: inline-block; margin-left: 10px; } #inputText { color: #666666; float: left; height: 20px; width: 150px; } .BodyContent { text-align: center; } .BodyColumn { display: inline-block; vertical-align: top; text-align: left; } #BodyContent { display: inline-block; vertical-align: top; text-align: left; } .InfoContent { clear: both; margin: 10px auto 0px auto; max-width: 1025px; position: relative; padding: 0 10px; } .InfoContent .nblu, .InfoContent .nbtu { background-color: #dfdfdf; border-top-left-radius: 2px; border-top-right-radius: 2px; border-width: 1px; color: #19597c; font-size: 12px; padding: 7px; text-align: center; white-space: nowrap; width: auto; } .InfoContent .ct { background-color: #FCFCFC; border-width: 1px 1px 0 1px; border-style: solid; border-color: #E1E1E1; color: #000000; font-size: 12px; padding: 3px; text-align: center; white-space: nowrap; width: auto; } .InfoContent .cd { background-color: #FCFCFC; border-width: 0 1px 1px 1px; border-style: solid; border-color: #E1E1E1; color: #000000; font-size: 12px; padding: 3px; } .InfoContent .cg { margin: 1px; padding: 0px; white-space: nowrap; width: 4px; } .InfoContent .nbtd :hover, .InfoContent .nbtu :hover { background-color: #c9c9c9; text-decoration: underline; border-bottom-style: none; color: #2989C7; } .InfoContent .nbtd :hover .tab, .InfoContent .nbtu :hover .tab { color: #2989C7; } .InfoContent .nbld, .InfoContent .nbtd { background-color: #bfbfbf; border-color: #92DBEC; color: #05497B; font-size: 12px; padding: 7px; text-align: center; white-space: nowrap; width: auto; } .InfoContent .nblu, .InfoContent .nbld { background-color: #557799; color: #FFFFFF; } .InfoContent .nblu .tab { } .InfoContent .nbgu { color: #05497B; margin: 1px; padding: 0px; white-space: nowrap; } .InfoContent .nbgd { color: #05497B; margin: 1px; padding: 0px; white-space: nowrap; } .InfoContent .nbtu a, .InfoContent .nbld a, .InfoContent .nbtd a { color: #05497B; font-size: 12px; } .InfoContent .nbtu span.tab { color: #000000; } .InfoContent .nbtu a.tab { } .InfoContent .nblu a:hover, .InfoContent .nbtu a:hover, .InfoContent .nbld a:hover, .InfoContent .nbtd a:hover { color: #2989C7; } .InfoContent .nblu a, .InfoContent .nbld a { color: #FFFFFF; font-size: 12px; } .InfoContent .nblu a:hover, .InfoContent .nbld a:hover { color: #C3F0FF; } .InfoContent .nbtu, .InfoContent .nbtd { vertical-align: middle; } .InfoContent .nbpu, .InfoContent .nbpd { padding: 6px 0 0 0; } .InfoContent td { padding-left: 5px; } .photo { border-radius: 50%; } .userInfoTable { border: 1px solid #f6f6f6; margin-left: 10px; padding: 20px; } td > b > h2 { margin-bottom: -1px; } .even td, .odd td, .even th, .odd th { color: #444444; } .menutext { border-bottom: 1px dotted #CCCCCC; color: #444444; } .menuicon > a { border-bottom-style: none !important; } .menuicon > a > img { } .menulink a { color: #595959; } .menulink a:hover { text-decoration: underline; border-bottom-style: none; } .back { background-color: #FFFFFF; } .even { background-color: #F9F9F9; } .light { background: none repeat scroll 0% 0% #f2f2f2; } .dark { background: none repeat scroll 0% 0% #d9d9d9; } .c799 > tbody > tr { padding: 10px !important; } .odd { } .even td, .odd td, .highlight td, .highlight th, .highlightContent td, .highlightContent th, .featuredeven td, .featuredodd td { padding: 5px; } .highlight, .highlightContent { background: none repeat scroll 0% 0% #F5F5F5; padding: 5px; } .highlightContent { animation-name: highlightContent; animation-duration: 0.5s; animation-iteration-count: infinite; animation-direction: alternate; } @keyframes highlightContent { 0% { background: #e6d346; } 100% { background: #ffffff; } } .highlightLink { background: none repeat scroll 0% 0% #FDFDFD; padding: 5px; line-height: 30px; animation-name: highlightLink; animation-duration: 0.5s; animation-iteration-count: infinite; animation-direction: alternate; border-radius: 8px; opacity: 90%; color: #000000; } *, .normal-size { } @keyframes highlightLink { 0% { background: #e6d346; } 100% { background: #ffffff; } } .tabcontent { } .nblu .tabcontent { color: #ffffff; } .featuredodd { background-color: #C5D4DB; padding: 5px; } .featuredeven { background-color: #C5D4DB; padding: 5px; } .removed { background-color: #AAAAAA; text-decoration: line-through; } .invalid { background-color: #FFCCCC; } .warning, .shopping-message-warning { background-color: #FFB366; } .alright { background-color: #70F0A0; } .monospace, code { font-family: monospace , Courier , "Courier New"; } .code { white-space: pre; white-space: pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; white-space: -moz-pre-wrap; white-space: -hp-pre-wrap; word-wrap: break-word; background: none repeat scroll 0% 0% #FCFCFC; padding: 4px; } .button, .shop-button, .remove-button, .shopping-message, .shopping-message-warning, input[class=shop-input] { border-radius: 6px; padding: 4px; border-width: 1px; border-style: solid; } .shop-button { border-color: #000000; background-color: #ccae66; background-image: linear-gradient(#ffdf92, #ccae66); color: #000000; font-weight: bold; font-size: 14px; padding: 7px; text-align: center; white-space: nowrap; width: auto; } .shop-button:hover, .shop-button:link, .shop-button:active { color: #000000; border-bottom-style: solid; border-bottom-width: 1px; } .shop-button:active { background-image: linear-gradient(#f8d37c, #ffdf92); } .remove-button { border-color: #000000; background-color: #1b95e0; background-image: linear-gradient(#1b95e0, #1470a8); color: #ffffff; font-weight: bold; font-size: 14px; padding: 7px; text-align: center; white-space: nowrap; width: auto; } .remove-button:hover, .remove-button:link, .remove-button:active, input[class=remove-button] { color: #ffffff; border-bottom-style: solid; border-bottom-width: 1px; } .remove-button:active { background-image: linear-gradient(#1470a8, #1b95e0); } .shopping-message-container { text-align: center; } .shopping-message, .shopping-message-warning { display: inline-block; line-height: 28px; border-color: #000000; font-weight: bold; font-size: 14px; padding: 7px; text-align: center; width: auto; } .shopping-message { color: #ffffff; background-color: #666666; background-image: linear-gradient(#666666, #333333); } .shopping-message-warning { color: #000000; background-color: #000000; background-image: linear-gradient(#FFB366, #cc8f52); } .shopping-price { font-size: 16px; text-align: center; font-weight: bold; width: auto; margin-left: 8px; margin-right: 8px; } input[class=shop-input] { margin: 4px; } .new { background-color: #ffea80; background-image: linear-gradient(#fffa80 , #ffea80); text-transform: uppercase; font-size: smaller; border-color: #ffe280; } .edit, .edit :link, .edit :visited, .InfoContent .nbtu a.edit { background-color: #60b040; background-image: linear-gradient(#90c070 , #60b040); color: #ffffff; border-color: #60a840; } .edit :hover, .InfoContent .nbtu a.edit :hover { background-color: #50a030; background-image: linear-gradient(#60b040 , #50a030); color: #C3F0FF; border-color: #60a840; } .edit :active, .InfoContent .nbtu a.edit :active { background-color: #60b040; background-image: linear-gradient(#50a030 , #60b040); color: #ffffff; border-color: #409020; box-shadow: inset 0 2px 4px rgba(0 , 0 , 0 , 0.15); } .tag, .tag :link, .tag :visited { background-color: #dea7a7; background-image: linear-gradient(#eeb3b3 , #dea7a7); color: #994d4d; border-color: #dea7a7; } .tag :hover { background-color: #ce9b9b; background-image: linear-gradient(#dea7a7 , #ce9b9b); color: #793d3d; border-color: #dea7a7; } .tag :active { background-color: #dea7a7; background-image: linear-gradient(#ce9b9b , #dea7a7); color: #994d4d; border-color: #be8f8f; box-shadow: inset 0 2px 4px rgba(0 , 0 , 0 , 0.15); } .ranking, .votes { display: inline; padding: 4px 8px; font-size: large; border-radius: 6px; background-color: #E8E8E8; color: #000000; } .votes { } .progressbar { background-color: #0000FF; background-image: url(https://files.phpclasses.org/graphics/phpclasses//progress.png); background-size: auto 100%; border-style: none; padding: 4px; text-align: center; border-radius: 6px; box-shadow: 4px 4px 4px #888; text-shadow: 2px 2px 2px #55C; } .box { border-color: #E1E1E1; border-style: solid; border-width: 1px; padding: 10px; margin-top: 10px; margin-bottom: 10px; border-radius: 10px; } .framed { margin: 5px 0px; padding: 10px 15px; border-radius: 10px; } .c360 > a { font-size: 13px; display: block; color: #729fcc; } .notifications { background: #e20000; background: radial-gradient(ellipse at center , #e20000 0% , #fb7b67 100%); border-radius: 6px; color: #ffffff; margin: 5px 0px; padding: 4px; text-shadow: 1px 1px 2px rgba(128 , 128 , 128 , 1); } .no-notifications { background: #888888; border-radius: 6px; color: #ffffff; margin: 5px 0px; padding: 4px; text-shadow: 1px 1px 2px rgba(128 , 128 , 128 , 1); } a:hover .no-notifications, a:hover .notifications { text-decoration: underline; border-bottom-style: none; } .score, .highlightScore { background: rgb(243,237,187); background: radial-gradient(circle, rgba(243,237,187,1) 0%, rgba(255,241,133,1) 100%); border-radius: 6px; margin: 5px 0px; padding: 4px; } .scoreText, .score, .highlightScore { color: #404040; text-shadow: 1px 1px 2px rgba(128 , 128 , 128 , 1); } a:hover .score, a:hover .scoreText { text-decoration: underline; border-bottom-style: none; } .highlightScore { animation-name: highlightScore; animation-duration: 0.5s; animation-iteration-count: infinite; animation-direction: alternate; } @keyframes highlightScore { 0% { background: #e6d346; } 100% { background: #ffffff; } } a:hover .highlightScore { text-decoration: underline; border-bottom-style: none; } .menu { border-color: #FCFCFF #707078 #707078 #FCFCFF; border-style: solid; border-width: 1px; cursor: default; opacity: 0.95; padding: 2px; background-color: #c9c9c9; } #Footer { height: 0px; width: 100%; z-index: 1; } #FooterInfo, #FooterInfoLogged { background: #19597c; min-height: 80px; position: relative; width: 100%; padding: 10px; margin-top: 10px; top: 10px; } #endnavigation { height: 35px; padding: 0px; width: 100%; } #endnavigation * { margin: 0px; padding: 0px; } #endnavigation table { height: 35px; padding: 0px; } #endnavigation table tbody { vertical-align: top; } #endnavigation a { color: #FFFFFF; font-weight: bold; padding: 0px 0px 0px 0px; text-decoration: none; border-bottom-style: dotted; border-bottom-width: 1px; text-transform: capitalize; } #endnavigation a:hover { text-decoration: underline; border-bottom-style: none; } #endnavigation img { padding-left: 13px; } #Copyright { width: 95% !important; color: #FFFFFF; height: 20px; margin: 0px auto; padding: 10px 0px; text-align: left; overflow: hidden !important; text-align: center; font-weight: bold; } #Copyright a { color: #86d5f2; text-decoration: none; border-bottom-style: dotted; border-bottom-width: 1px; } #Copyright a:hover { text-decoration: underline; border-bottom-style: none; } #Copyright table td { color: #FFFFFF; padding: 0px; } #Top, #TopLogged { background: none repeat scroll 0% 0% #FFFFFF; margin: 0px auto; padding: 0px; width: 100%; position: relative; bottom: 0px; top: 0px; } #Top h1, #TopLogged h1 { max-width: 1025px; margin: 15px auto 15px auto; overflow: hidden; color: #7F8C8D; } #Top h1 { position: relative; } #Top #topLogoPHP, #TopLogged #topLogoPHP, #TopLogo #topLogoPHP { max-width: 1025px; margin-left: auto; margin-right: auto; overflow: hidden; padding: 0 0 0 10px; color: #7F8C8D; position: relative; height: 60px; top: -60px; bottom: -60px; } #Top #topLogoPHP #topLogoPHPContainer, #TopLogged #topLogoPHP #topLogoPHPContainer, #TopLogo #topLogoPHP #topLogoPHPContainer { background-color: #ffffff; width: 200px; text-align: center; padding: 10px; position: relative; z-index: 2; } #TopLogo { margin-bottom: -60px; } #Top #subtitle, #TopLogged #subtitle { max-width: 1025px; margin: auto; overflow: hidden; } #Top #subtitle { position: relative; } .search-input { vertical-align: top; margin: 1px 0 0 0; display: inline-block; } #Contact, #Contact a { color: #ffffff; font-weight: bold; } .window-active-bar { border-style: none; background-color: #4b9759; height: 1%; white-space: nowrap; color: #ffffff; font-weight: bold; } .window-inactive-bar { border-style: none; background-color: #808080; height: 1%; white-space: nowrap; color: #c0c0c0; font-weight: bold; } .window { background-color: #f9f9f9; border-width: 1px; border-style: solid; border-top-color: #ffffff; border-left-color: #ffffff; border-bottom-color: #808080; border-right-color: #808080; } .nblu input { font-weight: bold; } .contactBar { position: fixed; bottom: 0px; right: 32px; z-index: 16777271; } </style> <!-- https://files.phpclasses.org/responsive.css --> <style type="text/css"> .safe-padding { padding: 14px; line-height: 200%; } .safe-size { font-size: 110%; } .call { display: none; } @media (max-width: 1024px) { .c1025 { display: none; } h1, h1 * { font-size: 20px; } h2, h2 * { font-size: 18px; } h3, h3 * { font-size: 16px; } h4 * { font-size: 14px; } h5 * { font-size: 12px; } h6 * { font-size: 10px; } #Top h1, #Top subtitle { padding: 10px 0 0 10px; margin: 0 0 0 0; } .InfoContent { margin: 0 auto 0 auto; padding: 0; } .responsive-menu { padding-top: 14px; padding-bottom: 12px; } .responsive-order-menu { padding-top: 0px; padding-bottom: 0x; } #BodyContent { display: block; } #PageContent { margin: 0; padding: 0; } } @media (min-width: 1025px) { .u1025 { display: none; } } @media (max-width: 1025px) { .contactBar { bottom: 0px; right: 10px; z-index: 16777271; } } @media (max-width: 399px) { .c399 { display: none; } } @media (max-width: 499px) { .c499 { display: none; } #Top h1 { width: auto; } } @media (max-width: 799px) { .c799 { display: none; } } @media (min-width: 799px) { .u799 { display: none; } } @media (max-width: 640px) { .c640 { display: none; } } @media (max-width: 360px) { .c360 { display: none; } } .menu-items { position: absolute; z-index: 1001; background-color: #103754; border-color: #cccccc; border-style: solid; border-width: 1px; padding: 4px; top: 32px; line-height: 36px; } .menu-items a { color: #C3F0FF; font-weight: bold; text-decoration: none; } #navigation-menu, #user-menu, #order-menu { display: inline-block; padding: 2px 4px 0px 4px; vertical-align: middle; text-align: left; position: relative; } #navigation-menu .menu-items, #user-menu .menu-items, #order-menu .menu-items { display: none; } #navigation-button:checked + .menu-items, #user-button:checked + .menu-items, #order-button:checked + .menu-items { display: inline-block; vertical-align: middle; white-space: nowrap; } #navigation-label, #user-label, #order-label { z-index: 1001; display: inline-block; vertical-align: middle; } #navigation-label img, #user-label img, #order-label img { pointer-events: none; } #navigation-menu input[type="checkbox"], #user-menu input[type="checkbox"], #order-menu input[type="checkbox"] { display: none; } </style> <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1"> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="shortcut icon" href="https://files.phpclasses.org/graphics/phpclasses/favicon.ico"> <link rel="alternate" href="https://www.phpclasses.org/browse/feed/changes/package/13449.xml" type="application/rss+xml" title="How to Use PHP Poetry Classes to Generate Poems Using the Package Literature: Compose and publish poems"> <link rel="alternate" href="/browse/latest/latest.xml" type="application/rss+xml" title="Latest published classes"> <link rel="alternate" href="/reviews/latest/latest.xml" type="application/rss+xml" title="Latest published book reviews"> <link rel="canonical" href="https://www.phpclasses.org/package/13449-PHP-Compose-and-publish-poems.html"> <link rel="preconnect" href="https://files.phpclasses.org/"> <link rel="preconnect" href="https://token.rubiconproject.com"> <link rel="preconnect" href="https://clevernt.com"> <link rel="preconnect" href="https://pagead2.googlesyndication.com"> <link rel="preconnect" href="https://www.google.com"> <link rel="preconnect" href="https://www.gstatic.com"> <link rel="preconnect" href="https://fonts.googleapis.com"> <link rel="preconnect" href="https://srv.buysellads.com"> <meta name="author" content="Nahid Bin Azhar"> <meta name="description" lang="en" content="This package can compose and publish poems. It provides a class to add lines and paragraphs defining the poem text. The package can also generate HTML to publish the composed poem attributed to a given author."> <meta name="keywords" lang="en" content="How to Use PHP Poetry Classes to Generate Poems Using the Package Literature, PHP 5, Classes using PHP 5 specific features, Content management, Components and tools to manage content, Documents, Document parsing generation and conversion, Literature, Composer and publish poems novels etc..."> <meta property="fb:pages" content="114418241923267"> <!-- https://files.phpclasses.org/js/contentLoader.js --> <script type="text/javascript"> //<![CDATA[ /* * contentLoader.js * * Get the latest version from: * * http://www.jsclasses.org/fast-content-loader * * @(#) $Id: contentLoader.js,v 1.17 2021/08/12 10:57:05 mlemos Exp $ * * * This LICENSE is in the BSD license style. * * * Copyright (c) 2010, Manuel Lemos * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of Manuel Lemos nor the names of his contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * Portions of the code that implement document write capture are based * on the Bezen library by Eric Brechemier licensed under the Creative * Commons Attribution license 3.0: * * http://creativecommons.org/licenses/by/3.0/ * * http://bezen.org/javascript/ * * Portions of the code that implement JavaScript lazy loading are based * on the Flying scripts by Gijo Varghese: * * https://wordpress.org/plugins/flying-scripts/ */ /*jslint browser: true, devel: true, long: true, single: true, white: true, this: true, for: true */ var ML; if(ML === undefined) { ML = {}; } if(ML.content === undefined) { ML.content = {}; } ML.content.contentLoader = function() { var doNotRemoveThisGetTheLatestVersionFrom = 'https://www.jsclasses.org/fast-content-loader'; var content = []; var update = null; var outputDebug = function(o, message) { if(o.debug) { if(console && console.log) { console.log(message); } else { alert(message); } } return false; }; var replaceContent = function(o) { var remaining = 0; var c; var delayed; var place; var replace; var events; for(c in content) { if(content.hasOwnProperty(c)) { if(!content[c].loaded) { delayed = document.getElementById(content[c].delayed); place = document.getElementById(content[c].id); if(delayed && place) { delayed.parentNode.removeChild(delayed); place.parentNode.replaceChild(delayed, place); delayed.style.display = (content[c].inline ? ((content[c].width || content[c].height) ? 'inline-block' : 'inline') : 'block'); content[c].loaded = true; } else { remaining = remaining + 1; } } } } if(remaining === 0) { window.clearInterval(update); update = null; events = [ 'keydown', 'mouseover', 'touchmove', 'touchstart' ]; replace = function() { document.querySelectorAll("script[data-loading='lazy']").forEach(function(element) { var source; source = element.getAttribute('data-src'); element.removeAttribute('data-src'); element.removeAttribute('data-loading'); element.setAttribute('src', source); } ); window.clearTimeout(update); update = null; events.forEach(function(event) { window.removeEventListener(event, replace, { passive: true }); } ); }; update = window.setTimeout(replace, o.lazyDelay); events.forEach(function(event) { window.addEventListener(event, replace, { passive: true }); } ); } return remaining; }; this.debug = false; this.defaultInline = false; this.updateInterval = 10; this.contentPrefix = 'con'; this.delayedPrefix = 'del'; this.delayedContent = ' '; this.lazyDelay = 5000; this.addContent = function(properties) { var i; var m; if(!properties.content) { return outputDebug(this, 'Content properties are missing'); } properties.id = this.contentPrefix + content.length; properties.delayed = this.delayedPrefix + content.length; if(properties.inline === undefined) { properties.inline = this.defaultInline; } properties.loaded = false; if(typeof properties.priority !== 'number') { properties.priority = 0; } document.write('<div id="' + properties.id + '" style="' + (properties.width ? 'width: ' + properties.width + 'px;' : '') + (properties.height ? ' height: ' + properties.height + 'px;' : '') + ' overflow: none; display: ' + (properties.inline ? ((properties.width || properties.height) ? 'inline-block' : 'inline') : 'block') + '">' + this.delayedContent + '</div>'); for(i = content.length; i > 0 && content[i - 1].priority < properties.priority; i = i - 1) { } for(m = content.length; m > i; m = m - 1) { content[m] = content[m - 1]; } content[i] = properties; return true; }; this.loadContent = function() { var o = this; var written; var write; var writeln; var reportError; var catchError; var trim; var hasAttribute; var moveScript; var moveScriptClone; var moveNodes; var insertWritten; var load; var c; if(window.opera || navigator.userAgent.indexOf('MSIE') !== -1) { written = []; write = function(html) { written.push(html); }; writeln = function(html) { write(html + "\n"); }; reportError = function(error, url, line) { if(typeof error === 'object') { reportError(error.message, error.fileName, error.lineNumber); return; } outputDebug(o, error + ' at ' + url + '[' + line + ']'); }; catchError = function(func, description) { var f; description = description || 'error.catchError'; if(typeof func !== 'function') { reportError(description + ': A function is expected, found ' + typeof func); f = function() { }; return f; } f = function() { try { return func.apply(this, []); } catch(e) { if(window.onerror) { window.onerror(description + ': ' + e.message + ' in ' + func, e.fileName, e.lineNumber, true); } } }; return f; }; trim = function(text) { return(text.replace(/^\s*/, '').replace(/\s*$/, '')); }; hasAttribute = function(node, attribute) { var attributeNode; if(node.hasAttribute) { return node.hasAttribute(attribute); } attributeNode = node.getAttributeNode(attribute); if(attributeNode === null) { return false; } return attributeNode.specified; }; moveScript = function(script, target, callback) { var safeCallback = catchError(callback, 'script.onload'); if(script.readyState && script.onload !== null) { script.onreadystatechange = function() { if(script.readyState === 'loaded' || script.readyState === 'complete') { script.onreadystatechange = null; script.onerror = null; safeCallback(); } }; } else { script.onload = safeCallback; } target.appendChild(script); }; moveScriptClone = function(script, target, callback) { var externalScript; var internalScript; var i; var attribute; var code; if(hasAttribute(script, 'src')) { externalScript = document.createElement('script'); for(i = 0; i < script.attributes.length; i = i + 1) { attribute = script.attributes[i]; if(hasAttribute(script, attribute.name)) { externalScript.setAttribute(attribute.name, attribute.value); } } externalScript.text = script.text; moveScript(externalScript, target, callback); } else { internalScript = script.cloneNode(false); internalScript.text = script.text; internalScript.type = 'any'; target.appendChild(internalScript); if(hasAttribute(script, 'type')) { internalScript.setAttribute('type', script.type); } else { internalScript.removeAttribute('type'); } code = trim(internalScript.text); if(code.indexOf('<!--') === 0) { code = code.substr(4); if(code.substr(code.length - 3) === '-->') { code = code.substr(0, code.length - 3); } } (new Function(code))(); callback(); } }; moveNodes = function(source, target, callback) { var nextSource; var nextTarget; var nextStep; var clone; var scriptCount; var sourceAncestor; if(source === null) { callback(); return; } nextSource = null; nextTarget = target; nextStep = function() { moveNodes(nextSource, nextTarget, callback); }; if(source.nodeName === 'SCRIPT' && (!source.language || source.language.toLowerCase() === 'javascript') && (!source.type || trim(source.type).toLowerCase() === 'text/javascript')) { setTimeout(function() { moveScriptClone(source, target, function() { insertWritten(target, nextStep); }); }, 0); } else { clone = source.cloneNode(false); target.appendChild(clone); setTimeout(nextStep, 0); if(source.firstChild) { scriptCount = source.getElementsByTagName('script').length; if(scriptCount === 0) { if(source.nodeName === 'TABLE') { clone.outerHTML = source.outerHTML; } else { clone.innerHTML = source.innerHTML; } } else { nextSource = source.firstChild; nextTarget = clone; } } } if(nextSource === null) { nextSource = source.nextSibling; } sourceAncestor = source.parentNode; while(nextSource === null && sourceAncestor !== null) { nextSource = sourceAncestor.nextSibling; nextTarget = nextTarget.parentNode; sourceAncestor = sourceAncestor.parentNode; } }; insertWritten = function(target, callback) { var div; if(written.length > 0) { div = document.createElement('div'); div.innerHTML = '<br>' + written.join(''); written = []; div.removeChild(div.firstChild); moveNodes(div.firstChild, target, callback); } else { callback(); } }; load = function() { var documentWrite = document.write; var documentWriteln = document.writeln; var loadContentElement; document.write = write; document.writeln = writeln; loadContentElement = function (c) { var div = document.getElementById(content[c].id); div.innerHTML = ''; write(content[c].content); insertWritten(div, function () { content[c].loaded = true; c = c + 1; if(c < content.length) { loadContentElement(c); } else { document.writeln = documentWriteln; document.write = documentWrite; } }); }; loadContentElement(0); }; if(content.length) { if(window.addEventListener) { window.addEventListener('load', load, false); } else { if(window.attachEvent) { window.attachEvent('onload', load); } else { if(document.addEventListener) { document.addEventListener('load', load, false); } else { document.attachEvent('onload', load); } } } } } else { for(c in content) { if(content.hasOwnProperty(c)) { if(!content[c].loaded) { document.write('<div id="' + content[c].delayed + '" style="' + (content[c].width ? 'width: ' + content[c].width + 'px;' : '') + (content[c].height ? ' height: ' + content[c].height + 'px;' : '') + ' overflow: none; display: none">' + content[c].content + '</div>'); } } } if(replaceContent(o) && update === null) { update = window.setInterval(function() { replaceContent(o); }, this.updateInterval); } } }; }; //]]> </script> <script type="text/javascript"><!-- var cl = new ML.content.contentLoader(); var cookies = document.cookie.split(";"), expires = new Date(); for(var c = 0; c < cookies.length; ++c) { var m = cookies[c].match(/^ +([^=]+)/); if(m && m[1] === "visit") break; } if(c === cookies.length) { expires.setTime(expires.getTime()+(24*60*60*1000)); document.cookie = "visit=" + (new Date()).getTime() + "; expires=" + expires.toGMTString() + "; path=/;"; } // --></script> <!-- https://files.phpclasses.org/css/package.css --> <style type="text/css"> .content-wrap { overflow-wrap: anywhere; max-width: 300px } .content-wrap p img { width: 100%; height: auto; } .package-cut-full-width, .package-cut-width-800, .package-cut-width-640, .package-cut-width-500 { display: block; } .package-cell-cut-full-width, .package-cell-cut-width-800, .package-cell-cut-width-640, .package-cell-cut-width-500, .author-details, .tabbed-author-details { display: table-cell; } .author-information-nominee { display: inline-block; float: right; width: 65%; } .author-information { display: inline-block; float: right; width: 50%; } .package-information-nominee { display: inline-block; float: left; width: 35%; } .package-information { display: inline-block; float: left; width: 50%; } .picture-user-name { display: none; } @media (max-width: 1024px) { .package-cut-full-width, .package-cell-cut-full-width { display: none; } .author-details { display: table-cell; } .author-information-nominee { width: 35%; } .author-information { width: 20%; } .package-information-nominee { width: 65%; } .package-information { width: 80%; } .picture-user-name { display: block; } } @media (max-width: 799px) { .package-cut-width-800, .package-cell-cut-width-800, .tabbed-author-details { display: none; } } @media (max-width: 639px) { .package-cut-width-640, .package-cell-cut-width-640 { display: none; } .package-show-width-640 { display: block; } .package-cell-show-width-640 { display: table-cell; } } @media (min-width: 640px) { .package-show-width-640, .package-cell-show-width-640 { display: none; } } @media (max-width: 499px) { .package-cut-width-500, .package-cell-cut-width-500 { display: none; } .author-information-nominee { width: 35%; } .author-information { width: 35%; } .package-information-nominee { width: 65%; } .package-information { width: 65%; } } #package-menu { display: inline-block; padding: 0; } #package-menu .menu-items { display: none; } #package-button:checked + .menu-items { display: inline-block; } #package-menu input[type="checkbox"], #package-menu ul span.drop-icon { display: none; } </style> <!-- https://files.phpclasses.org/animation.js --> <script type="text/javascript"> //<![CDATA[ /* * * @(#) $Id: animation.js,v 1.41 2015/06/06 08:15:39 mlemos Exp $ * */ var ML; if(ML === undefined) { ML = { }; } if(ML.Animation === undefined) { ML.Animation = { }; } if(ML.Animation.Utility === undefined) { ML.Animation.Utility = { setOpacity: function(element, value) { element.style.opacity = element.style['-moz-opacity'] = element.style['-khtml-opacity'] = value; element.style.filter = 'alpha(opacity=' + Math.round(100*value) + ')'; if(!element.currentStyle || !element.currentStyle.hasLayout) { element.style.zoom = '100%'; } }, getElementPosition: function(element) { var position = { x: 0, y: 0}; do { position.x += element.offsetLeft; position.y += element.offsetTop; element = element.offsetParent; if(!element) { return position; } } while(element.nodeName !== 'HTML'); position.x += element.offsetLeft; position.y += element.offsetTop; return position; }, getElementSize: function(element, inner) { if(inner) { if(element.innerWidth) { return { width: element.innerWidth, height: element.innerHeight }; } if(element.clientWidth) { return { width: element.clientWidth, height: element.clientHeight }; } } else { if(element.clip !== undefined) { return { width: element.clip.width, height: element.clip.height }; } } return { width: element.offsetWidth, height: element.offsetHeight }; }, getWindowViewport: function() { var viewport; if(window.pageXOffset !== undefined) { viewport = { x: window.pageXOffset, y: window.pageYOffset }; } else { if(document.documentElement && document.documentElement.scrollLeft !== undefined) { viewport = { x: document.documentElement.scrollLeft, y: document.documentElement.scrollTop }; } else { if(document.body) { viewport = { x: document.body.scrollLeft, y: document.body.scrollTop }; } else { viewport = { x: 0, y: 0 }; } } } if(window.innerHeight !== undefined) { viewport.width = window.innerWidth; viewport.height = window.innerHeight; } else { if(document.documentElement && document.documentElement.clientHeight !== undefined) { viewport.width = document.documentElement.clientWidth; viewport.height = document.documentElement.clientHeight; } else { if(document.body) { viewport.width = document.body.clientWidth; viewport.height = document.body.clientHeight; } else { viewport.width = 0; viewport.height = 0; } } } return viewport; } }; } if(ML.Animation.Effects === undefined) { ML.Animation.Effects = { AppendContent: function(effect) { this.start = function() { var e = document.getElementById(effect.element); if(e) { e.innerHTML += effect.content; } else { if(this.debug) { alert('Inexisting element "' + effect.element + '" of effect ' + this.animation.effect + ' "' + effect.type + '"'); } } return true; }; }, Callback: function(effect) { this.start = function() { if(effect.callback) { effect.callback(); } else { if(this.debug) { alert('The callback function was not specified for effect ' + this.animation.effect + ' "' + effect.type + '"'); } } return true; }; }, CancelAnimation: function(effect) { this.start = function() { var a, c; for(a = 0, c = 0; a<ML.Animation.animations.length; a++) { if(ML.Animation.animations[a] !== null && this.animation.animation !== a && ML.Animation.animations[a].definition.name && ML.Animation.animations[a].definition.name === effect.animation) { ML.Animation.cancelAnimation(ML.Animation.animations[a]); c++; } } if(c === 0 && this.debug && this.debug >= 2) { alert('Inexisting animation to cancel "' + effect.animation + '" of effect ' + this.animation.effect); } return true; }; }, Emphasize: function(effect) { this.context = null; this.angle = Math.PI / 6; this.gapDistance = 4; this.angleGap = Math.PI / 24; this.lineWidth = (effect.lineWidth !== undefined ? effect.lineWidth : 4); this.opacity = (effect.opacity !== undefined ? effect.opacity : 0.5); this.strokeStyle = (effect.strokeStyle !== undefined ? effect.strokeStyle : '#0000ff'); this.lastAngle = this.angle; this.lastStep = 0; this.iterationLimit = 10; function drawEllipse(context, x, y, w, h, start, end, anticlockwise) { var scale; if((w <= 0 || h <= 0)) { if(this.debug) { alert('It was not specified a valid radius to draw an ellipse ' + w + ' x ' + h); } return; } scale = h / w; context.save(); context.scale(1, scale); context.beginPath(); context.arc(x, y / scale, w, start, end, anticlockwise); context.restore(); context.stroke(); } this.start = function() { var canvas, e = document.getElementById(effect.element), distance, iterationLimit; if(e) { canvas = document.createElement('canvas'); if(!canvas || !canvas.getContext || canvas.getContext('2d') === null) { if(this.debug) { alert('Canvas elements are not supported.'); } return true; } this.context = canvas.getContext('2d'); if(effect.canvas !== undefined) { canvas.id = effect.canvas; } this.size = ML.Animation.Utility.getElementSize(e, false); if(effect.method === 'circle') { canvas.width = this.size.width / Math.cos(this.angle) + this.lineWidth; canvas.style.left = (this.size.width - canvas.width)/2 + 'px'; this.size.width = canvas.width; canvas.height = this.size.height / Math.sin(this.angle) + this.lineWidth; canvas.style.top = (this.size.height - canvas.height)/2 + 'px'; this.size.height = canvas.height; e.insertBefore(canvas, e.firstChild); this.lastAngle = -this.angle; iterationLimit = this.iterationLimit; do { distance = Math.sqrt(Math.pow((canvas.width / 2 - this.lineWidth) * (Math.cos(this.angle) - Math.cos(this.angle - this.angleGap)), 2) + Math.pow((canvas.height / 2 - this.lineWidth) * (Math.sin(this.angle) - Math.sin(this.angle - this.angleGap)), 2)); this.angleGap = this.angleGap * (this.gapDistance + this.lineWidth) / distance; } while(--iterationLimit && Math.abs(distance - this.gapDistance - this.lineWidth) < 0.5); } else { if(effect.method === 'underline' || effect.method === 'double-underline') { iterationLimit = this.iterationLimit; do { distance = (1 - Math.cos(this.angleGap)) * this.size.width / Math.sin(this.angleGap); this.angleGap = this.angleGap * this.gapDistance / distance; } while(--iterationLimit && Math.abs(distance - this.gapDistance) < 0.5); canvas.width = this.size.width + this.lineWidth; canvas.style.left = Math.floor(-this.lineWidth / 2) + 'px'; canvas.height = (1 - Math.cos(this.angleGap)) * this.size.width / Math.sin(this.angleGap) + this.lineWidth * 1.5; canvas.style.top = this.size.height + 'px'; if(effect.method === 'double-underline') { canvas.height += this.lineWidth * 2; } this.size.height = this.size.width / Math.sin(this.angleGap) - this.lineWidth; e.insertBefore(canvas, e.firstChild); this.lastAngle = -Math.PI / 2 - this.angleGap; } else { if(this.debug) { alert('It was not specified a valid method for effect ' + this.animation.effect + ' "' + effect.type + '"'); } return true; } } if(e.style.zIndex.length === 0) { e.style.zIndex = 0; } e.style.position = "relative"; canvas.style.zIndex = parseInt(e.style.zIndex, 10) - 1; canvas.style.position = 'absolute'; canvas.style.pointerEvents = 'none'; ML.Animation.Utility.setOpacity(canvas, this.opacity); this.context.lineWidth = this.lineWidth; this.context.lineCap = 'round'; this.context.strokeStyle = this.strokeStyle; return false; } if(this.debug) { alert('Inexisting element "' + effect.element + '" of effect ' + this.animation.effect + ' "' + effect.type + '"'); } return true; }; this.step = function() { var p, angle; p = (new Date().getTime() - this.startTime)/(this.duration*1000.0); if(p>1) { p = 1; } if(effect.method === 'circle') { angle = p * p * (-2 * Math.PI + this.angleGap) - this.angle; drawEllipse(this.context, this.size.width/2, this.size.height/2, this.size.width/2 - this.lineWidth, this.size.height/2 - this.lineWidth, this.lastAngle, angle, true); this.lastAngle = angle; } else { if(effect.method === 'underline') { angle = -Math.PI / 2 - (1 - p * p) * this.angleGap; drawEllipse(this.context, this.size.width + this.lineWidth / 2, this.size.height + this.lineWidth / 2, this.size.height, this.size.height, this.lastAngle, angle, false); this.lastAngle = angle; } else { if(effect.method === 'double-underline') { if(p <= 0.5) { angle = -Math.PI / 2 - (1 - 4 * p * p) * this.angleGap; drawEllipse(this.context, this.size.width + this.lineWidth / 2, this.size.height + this.lineWidth / 2, this.size.height, this.size.height, this.lastAngle, angle, false); } else { angle = -Math.PI / 2 - (1 - 4 * (p - 0.5) * (p - 0.5)) * this.angleGap; if(this.lastStep < 0.5) { drawEllipse(this.context, this.size.width + this.lineWidth / 2, this.size.height + this.lineWidth / 2, this.size.height, this.size.height, this.lastAngle, -Math.PI / 2, false); this.lastAngle = -Math.PI / 2 - this.angleGap; } drawEllipse(this.context, this.size.width + this.lineWidth / 2, this.size.height + this.lineWidth * 2.5, this.size.height, this.size.height, this.lastAngle, angle, false); } this.lastAngle = angle; this.lastStep = p; } } } return(p < 1); }; }, FadeIn: function(effect) { this.node = null; this.opacity = 0; this.start = function() { this.node = document.getElementById(effect.element); if(this.node) { this.opacity = 0; ML.Animation.Utility.setOpacity(this.node, this.opacity); if(effect.visibility === 'display') { this.node.style.display = 'block'; } else { this.node.style.visibility = 'visible'; } return false; } if(this.debug) { alert('Inexisting element "' + effect.element + '" of effect ' + this.animation.effect + ' "' + effect.type + '"'); } return true; }; this.step = function() { var p, opacity; p = (new Date().getTime() - this.startTime)/(this.duration*1000.0); if(p>1) { p = 1; } opacity = Math.round(p * ML.Animation.fadeStep) / ML.Animation.fadeStep; if(opacity !== this.opacity) { this.opacity = opacity; ML.Animation.Utility.setOpacity(this.node, opacity); } return (p < 1); }; }, FadeOut: function(effect) { this.node = null; this.opacity = 0; this.start = function() { this.node = document.getElementById(effect.element); if(this.node) { this.opacity = 1.0; ML.Animation.Utility.setOpacity(this.node, this.opacity); return false; } if(this.debug) { alert('Inexisting element "' + effect.element + '" of effect ' + this.animation.effect + ' "' + effect.type + '"'); } return true; }; this.step = function() { var p, opacity, step; p = (new Date().getTime() - this.startTime)/(this.duration*1000.0); if(p>1) { p = 1; } opacity = Math.round((1.0 - p) * ML.Animation.fadeStep) / ML.Animation.fadeStep; if(opacity !== this.opacity) { this.opacity = opacity; ML.Animation.Utility.setOpacity(this.node, opacity); } step = p < 1; if(!step) { if(effect.visibility === 'display') { this.node.style.display = 'none'; } else { this.node.style.visibility = 'hidden'; } } return step; }; }, Hide: function(effect) { this.start = function() { var e = document.getElementById(effect.element); if(e) { if(effect.visibility === 'display') { e.style.display = 'none'; } else { e.style.visibility = 'hidden'; } } else { if(this.debug) { alert('Inexisting element "' + effect.element + '" of effect ' + this.animation.effect + ' "' + effect.type + '"'); } } return true; }; }, MakeVisible: function(effect) { this.startX = 0; this.startY = 0; this.start = function() { var viewport, e = document.getElementById(effect.element); if(e) { viewport = ML.Animation.Utility.getWindowViewport(); this.startX = viewport.x; this.startY = viewport.y; } else { if(this.debug) { alert('Inexisting element "' + effect.element + '" of effect ' + this.animation.effect + ' "' + effect.type + '"'); } } return false; }; this.step = function() { var p, e, viewport, position, size, x, y, limit; e = document.getElementById(effect.element); viewport = ML.Animation.Utility.getWindowViewport(); position = ML.Animation.Utility.getElementPosition(e); size = ML.Animation.Utility.getElementSize(e, false); x = viewport.x; limit = position.x + size.width - viewport.width; if(limit > x) { x = limit; } if(x > position.x) { x = position.x; } y = viewport.y; limit = position.y + size.height - viewport.height; if(limit > y) { y = limit; } if(y > position.y) { y = position.y; } if(x === viewport.x && y === viewport.y) { return false; } p = (new Date().getTime() - this.startTime)/(this.duration*1000.0); if(p>1) { p = 1; } x = this.startX + Math.round((x - this.startX) * p * p); y = this.startY + Math.round((y - this.startY) * p * p); window.scrollTo(x, y); return (p !== 1); }; }, PrependContent: function(effect) { this.start = function() { var e = document.getElementById(effect.element); if(e) { e.innerHTML = effect.content + e.innerHTML; } else { if(this.debug) { alert('Inexisting element "' + effect.element + '" of effect ' + this.animation.effect + ' "' + effect.type + '"'); } } return true; }; }, ProgressNumber: function(effect) { this.element = null; this.startNumber = 0; var formatNumber = function(value) { var prefix, formatted, modulus; if(!effect.thousandsSeparator || effect.thousandsSeparator.length === 0) { return value; } formatted = ''; if(value < 0) { prefix = '-'; value = Math.abs(value); } else { prefix = ''; } while(true) { modulus = value % 1000; if(formatted.length) { formatted = effect.thousandsSeparator + formatted; } formatted = modulus + formatted; if(value === modulus) { break; } if(modulus < 100) { if(modulus < 10) { formatted = '00' + formatted; } else { formatted = '0' + formatted; } } value = (value - modulus) / 1000; } return prefix + formatted; }; this.start = function() { this.element = document.getElementById(effect.element); if(!this.element) { if(this.debug) { alert('Inexisting container element "' + effect.element + '" of effect ' + this.animation.effect + ' "' + effect.type + '"'); } return true; } if(effect.start) { this.startNumber = effect.start; } this.element.innerHTML = formatNumber(Math.round(this.startNumber)); return false; }; this.step = function() { var p = (new Date().getTime() - this.startTime)/(this.duration*1000.0); if(p>1) { p = 1; } this.element.innerHTML = formatNumber(Math.round(this.startNumber + (effect.end - this.startNumber) * p * p)); return p < 1; }; }, ReplaceContent: function(effect) { this.start = function() { var e = document.getElementById(effect.element); if(e) { e.innerHTML = effect.content; } else { if(this.debug) { alert('Inexisting element "' + effect.element + '" of effect ' + this.animation.effect + ' "' + effect.type + '"'); } } return true; }; }, Show: function(effect) { this.start = function() { var e = document.getElementById(effect.element); if(e) { if(effect.visibility === 'display') { e.style.display = 'block'; } else { e.style.visibility = 'visible'; } } else { if(this.debug) { alert('Inexisting element "' + effect.element + '" of effect ' + this.animation.effect + ' "' + effect.type + '"'); } } return true; }; }, SlideIn: function(effect) { this.node = this.parent = this.edge = this.size = this.oldEdge = this.oldPosition = null; this.start = function() { var size; this.node = document.getElementById(effect.element); if(this.node) { this.parent = document.createElement('div'); this.parent.style.overflow = 'hidden'; this.node.style.display = 'block'; size = ML.Animation.Utility.getElementSize(this.node, false); switch(effect.edge) { case 'top': this.edge = this.size = size.height; this.oldEdge = this.node.style.bottom; this.node.style.bottom = this.edge + 'px'; this.parent.style.height = '0'; break; case 'bottom': this.edge = this.size = size.height; this.oldEdge = this.node.style.top; this.node.style.top = this.edge + 'px'; this.parent.style.height = '0'; break; case 'left': this.edge = this.size = size.width; this.oldEdge = this.node.style.right; this.node.style.right = this.edge + 'px'; this.parent.style.width = '0'; break; case 'right': this.edge = this.size = size.width; this.oldEdge = this.node.style.left; this.node.style.left = this.edge + 'px'; this.parent.style.width = '0'; break; default: if(this.debug) { alert('Invalid ' + effect.type + ' effect edge "' + effect.edge); this.parent = null; return true; } } this.oldPosition = this.node.style.position; this.node.style.position = 'relative'; this.node.parentNode.insertBefore(this.parent, this.node); this.node.parentNode.removeChild(this.node); this.parent.appendChild(this.node); return false; } if(this.debug) { alert('Inexisting element "' + effect.element + '" of effect ' + this.animation.effect + ' "' + effect.type + '"'); } return true; }; this.step = function() { var p, edge, step; p = (new Date().getTime() - this.startTime)/(this.duration*1000.0); if(p>1) { p = 1; } edge = Math.round(this.size * (1 - p * p)); if(edge !== this.edge) { this.edge = edge; switch(effect.edge) { case 'top': this.node.style.bottom = this.edge + 'px'; this.parent.style.height = (this.size - this.edge) + 'px'; break; case 'bottom': this.node.style.top = this.edge + 'px'; this.parent.style.height = (this.size - this.edge) + 'px'; break; case 'left': this.node.style.right = this.edge + 'px'; this.parent.style.width = (this.size - this.edge) + 'px'; break; case 'right': this.node.style.left = this.edge + 'px'; this.parent.style.width = (this.size - this.edge) + 'px'; break; } } step = (p < 1); if(!step) { this.parent.removeChild(this.node); this.parent.parentNode.insertBefore(this.node, this.parent); switch(effect.edge) { case 'top': this.node.style.bottom = this.oldEdge; break; case 'bottom': this.node.style.top = this.oldEdge; break; case 'left': this.node.style.right = this.oldEdge; break; case 'right': this.node.style.left = this.oldEdge; break; } this.node.style.position = this.oldPosition; this.parent.parentNode.removeChild(this.parent); this.parent = null; } return step; }; }, SlideOut: function(effect) { this.node = this.parent = this.edge = this.size = this.oldEdge = this.oldPosition = null; this.start = function() { var size; this.node = document.getElementById(effect.element); if(this.node) { this.parent = document.createElement('div'); this.parent.style.overflow = 'hidden'; this.node.style.display = 'block'; size = ML.Animation.Utility.getElementSize(this.node, false); switch(effect.edge) { case 'top': this.edge = this.size = size.height; this.parent.style.height = size.height + 'px'; this.oldEdge = this.node.style.bottom; this.node.style.bottom = this.edge + 'px'; break; case 'bottom': this.edge = this.size = size.height; this.parent.style.height = size.height + 'px'; this.oldEdge = this.node.style.top; this.node.style.top = this.edge + 'px'; break; case 'left': this.edge = this.size = size.width; this.parent.style.width = size.width + 'px'; this.oldEdge = this.node.style.right; this.node.style.right = this.edge + 'px'; break; case 'right': this.edge = this.size = size.width; this.parent.style.width = size.width + 'px'; this.oldEdge = this.node.style.left; this.node.style.left = this.edge + 'px'; break; default: if(this.debug) { alert('Invalid ' + effect.type + ' effect edge "' + effect.edge); this.parent = null; return true; } } this.oldPosition = this.node.style.position; this.node.style.position = 'relative'; this.node.parentNode.insertBefore(this.parent, this.node); this.node.parentNode.removeChild(this.node); this.parent.appendChild(this.node); return false; } if(this.debug) { alert('Inexisting element "' + effect.element + '" of effect ' + this.animation.effect + ' "' + effect.type + '"'); } return true; }; this.step = function() { var p, edge, step; p = (new Date().getTime() - this.startTime)/(this.duration*1000.0); if(p>1) { p = 1; } edge = Math.round(this.size * p * p); if(edge !== this.edge) { this.edge = edge; switch(effect.edge) { case 'top': this.node.style.bottom = this.edge + 'px'; this.parent.style.height = (this.size - this.edge) + 'px'; break; case 'bottom': this.node.style.top = this.edge + 'px'; this.parent.style.height = (this.size - this.edge) + 'px'; break; case 'left': this.node.style.right = this.edge + 'px'; this.parent.style.width = (this.size - this.edge) + 'px'; break; case 'right': this.node.style.left = this.edge + 'px'; this.parent.style.width = (this.size - this.edge) + 'px'; break; } } step = (p < 1); if(!step) { this.parent.removeChild(this.node); this.parent.parentNode.insertBefore(this.node, this.parent); switch(effect.edge) { case 'top': this.node.style.bottom = this.oldEdge; break; case 'bottom': this.node.style.top = this.oldEdge; break; case 'left': this.node.style.right = this.oldEdge; break; case 'right': this.node.style.left = this.oldEdge; break; } this.node.style.position = this.oldPosition; this.parent.parentNode.removeChild(this.parent); this.parent = null; this.node.style.display = 'none'; } return step; }; }, Wait: function(effect) { this.start = function() { return false; }; this.step = function() { return (new Date().getTime() - this.startTime < this.duration*1000.0); }; } }; ML.Animation.registerEffects = function(name, effects) { if(ML.Animation.Effects[name] !== undefined) { return false; } ML.Animation.Effects[name] = effects; return true; }; } if(ML.Animation.Animate === undefined) { ML.Animation.animations = []; ML.Animation.running = 0; ML.Animation.poll = null; ML.Animation.frameRate = 120; ML.Animation.fadeStep = 100; ML.Animation.defaultDuration = 1; ML.Animation.cancelAnimation = function(animation) { ML.Animation.animations[animation.animation] = null; if(--ML.Animation.running === 0) { clearInterval(ML.Animation.poll); ML.Animation.poll = null; } }; ML.Animation.Animate = function() { var advanceAnimation, stepEffects, startEffect; advanceAnimation = function(animation) { animation.running = false; if(++animation.effect < animation.definition.effects.length) { startEffect(animation); } else { ML.Animation.cancelAnimation(animation); } }; stepEffects = function() { var a, animation, effect, step; for(a = 0; a<ML.Animation.animations.length; a++) { if(ML.Animation.animations[a] !== null && ML.Animation.animations[a].running) { animation = ML.Animation.animations[a]; effect = animation.definition.effects[animation.effect]; step = effect.effect.step(); if(!step) { advanceAnimation(animation); } } } }; startEffect = function(animation) { var effect = animation.definition.effects[animation.effect], type = effect.type, advance, e, timeout; if(ML.Animation.Effects[type] === undefined) { if(animation.definition.debug) { alert('Unsupported animation type "' + type + '"'); } advance = true; } else { e = effect.effect = new ML.Animation.Effects[type](effect); e.animation = animation; e.debug = animation.definition.debug; e.startTime = new Date().getTime(); e.duration = (effect.duration === undefined ? ML.Animation.defaultDuration : effect.duration); advance = e.start(); } if(advance) { effect.effect = null; advanceAnimation(animation); } else { if(ML.Animation.poll === null) { timeout = 1000 / ML.Animation.frameRate; ML.Animation.poll = setInterval(stepEffects, timeout < 1 ? 1 : timeout); } animation.running = true; } }; this.addAnimation = function(animation) { var a = ML.Animation.animations.length; ML.Animation.animations[a] = { definition: animation, animation: a, effect: 0, running: false }; ML.Animation.running++; startEffect(ML.Animation.animations[a]); return a; }; }; } //]]> </script> </head> <body> <div id="fb-root"></div> <!-- Start AdSense page level ads --> <script async data-src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-2951707118576741" crossorigin="anonymous" data-loading="lazy"></script> <!-- End AdSense page level ads --> <!-- Start of Sticky BuySellAds --> <script async data-src="//m.servedby-buysellads.com/monetization.js" data-loading="lazy"></script> <script> window.addEventListener("load", (event) => { (function () { if (typeof _bsa !== "undefined" && _bsa) { _bsa.init("stickybox", "CK7DPK3E", "placement:phpclassesorg"); } })(); }); </script> <!-- End of Sticky BuySellAds --> <div id="MainContainer"> <div id="TopLine"></div> <div id="Container"> <div id="UserContent"> <div class="c1025" id="user-bar"><div id="user"><table width="100%" style="margin-bottom: 6px; " cellpadding="4" cellspacing="0" align="center"> <tr> <td width="49.5%" style=" white-space: nowrap ; padding: 1px"> </td> <td style=" white-space: nowrap ;"><a href="/login.html?page=literature">Login</a></td> <td style=" white-space: nowrap ; padding: 1px"> </td> <td style=" white-space: nowrap ;"><a rel="nofollow" href="/register.html?page=literature">Register</a></td> <td width="49.5%" style=" white-space: nowrap ; padding: 1px"> </td> </tr> </table> </div></div> <div class="u1025 responsive-menu"><form style="margin: 0" action="/search.html" method="get" onsubmit="this['q'].value = this['words'].value;"> <div id="navigation-menu"><input type="checkbox" id="navigation-button"><div class="menu-items"><div><img src="https://files.phpclasses.org/graphics/phpclasses/browse.png" width="24" height="24" loading="lazy" alt="All class groups" style="border: 0; vertical-align: middle"> <a href="/browse/">All class groups</a></div> <div><img src="https://files.phpclasses.org/graphics/phpclasses/latest.png" width="24" height="24" loading="lazy" alt="Latest entries" style="border: 0; vertical-align: middle"> <a href="/browse/latest/latest.html">Latest entries</a></div> <div><img src="https://files.phpclasses.org/graphics/phpclasses/top.png" width="24" height="24" loading="lazy" alt="Top 10 charts" style="border: 0; vertical-align: middle"> <a href="/browse/top/top.html">Top 10 charts</a></div> <div><img src="https://files.phpclasses.org/graphics/phpclasses/blog.png" width="24" height="24" loading="lazy" alt="Blog" style="border: 0; vertical-align: middle"> <a href="/blog/">Blog</a></div> <div><img src="https://files.phpclasses.org/graphics/phpclasses/forum.png" width="24" height="24" loading="lazy" alt="Forums" style="border: 0; vertical-align: middle"> <a href="/discuss/">Forums</a></div> <div><img src="https://files.phpclasses.org/graphics/phpclasses/shop.png" width="24" height="24" loading="lazy" alt="Shop" style="border: 0; vertical-align: middle"> <a href="/shop/">Shop</a></div> <div><img src="https://files.phpclasses.org/graphics/phpclasses/help.png" width="24" height="24" loading="lazy" alt="Help" style="border: 0; vertical-align: middle"> <a href="/faq/">Help</a></div> </div><label for="navigation-button" id="navigation-label"><span class="drop-icon"><img src="https://files.phpclasses.org/graphics/phpclasses/menu.png" width="24" height="24" loading="lazy" alt="Navigation menu" style="border: 0"></span></label></div><a href="/"><img src="https://files.phpclasses.org/graphics/phpclasses/logo-small-phpclasses.svg" width="75" height="24" loading="lazy" alt="logo small" style="vertical-align: top"></a><div id="user-menu"><input type="checkbox" id="user-button"><div class="menu-items"><div><a href="/login.html?page=literature">Login</a></div> <div><a href="/register.html?page=literature">Register</a></div> </div><label for="user-button" id="user-label"><span class="drop-icon"><img src="https://files.phpclasses.org/graphics/phpclasses/user-menu.png" width="24" height="24" loading="lazy" alt="User menu" style="border: 0"></span></label></div><div class="search-input"><input type="text" name="words" size="16" placeholder="Search" style="margin-left: 5px; margin-right: 5px"> <input type="hidden" name="q"> <input type="image" src="https://files.phpclasses.org/graphics/phpclasses/search.png" align="middle" style="width: 24px; height: 24px;" alt="Search"></div><input type="hidden" name="go_search" value="1"> </form></div> </div> <div id="logoPHP" class="c1025"> <div id="logoContainer"><a href="/"><img src="https://files.phpclasses.org/graphics/phpclasses/logo-phpclasses.png" width="180" height="60" loading="lazy" alt="PHP Classes" style="border: 0"></a></div> <div id="topAds"><div style="width: 468px; height: 60px"><script src="https://www.phpclasses.org/advertising_view/zone/top-leaderboard/user/8-222-208-146/content/M2I4YTg0OjA6eyJzY3JpcHQiOiJ7c2l0ZX1hZHZlcnRpc2luZ192aWV3XC96b25lXC90b3AtbGVhZGVyYm9hcmRcL3VzZXJcLzgtMjIyLTIwOC0xNDZcL2NvbnRlbnRcL3tjb250ZW50fVwvdHlwZVwvc2NyaXB0LmpzP2NhY2hlX2J1c3Rpbmc9e2NhY2hlX2J1c3Rpbmd9Iiwiem9uZSI6InRvcC1sZWFkZXJib2FyZCJ9/type/script.js?cache_busting=1740957497.772" loading="lazy" rel="nofollow"></script></div></div> </div> <div id="PageContent"> <div id="Top"> <h1>How to Use PHP Poetry Classes to Generate Poems Using the Package Literature: Compose and publish poems</h1> <div id="subtitle"></div> </div> <div id="PageInfo"> <div class="c1025"><div id="navigation"><form style="margin: 0" action="/search.html" method="get" onsubmit="this['q'].value = this['words'].value;"> <table width="100%" style="margin-bottom: 6px; " cellpadding="4" cellspacing="0" align="center"> <tr> <td width="49.5%" style=" white-space: nowrap ; padding: 1px"> </td> <td style=" white-space: nowrap ;"><a rel="nofollow" href="/search.html">Search</a> <div class="search-input"><input type="text" name="words" size="16" placeholder="Search" style="margin-left: 5px; margin-right: 5px"> <input type="hidden" name="q"> <input type="image" src="https://files.phpclasses.org/graphics/phpclasses/search.png" align="middle" style="width: 24px; height: 24px;" alt="Search"></div></td> <td style=" white-space: nowrap ; padding: 1px"> </td> <td style=" white-space: nowrap ;"><img src="https://files.phpclasses.org/graphics/phpclasses/browse.png" width="24" height="24" loading="lazy" alt="All class groups" style="border: 0; vertical-align: middle"> <a href="/browse/">All class groups</a></td> <td style=" white-space: nowrap ; padding: 1px"> </td> <td style=" white-space: nowrap ;"><img src="https://files.phpclasses.org/graphics/phpclasses/latest.png" width="24" height="24" loading="lazy" alt="Latest entries" style="border: 0; vertical-align: middle"> <a href="/browse/latest/latest.html">Latest entries</a></td> <td style=" white-space: nowrap ; padding: 1px"> </td> <td style=" white-space: nowrap ;"><img src="https://files.phpclasses.org/graphics/phpclasses/top.png" width="24" height="24" loading="lazy" alt="Top 10 charts" style="border: 0; vertical-align: middle"> <a href="/browse/top/top.html">Top 10 charts</a></td> <td style=" white-space: nowrap ; padding: 1px"> </td> <td style=" white-space: nowrap ;"><img src="https://files.phpclasses.org/graphics/phpclasses/blog.png" width="24" height="24" loading="lazy" alt="Blog" style="border: 0; vertical-align: middle"> <a href="/blog/">Blog</a></td> <td style=" white-space: nowrap ; padding: 1px"> </td> <td style=" white-space: nowrap ;"><img src="https://files.phpclasses.org/graphics/phpclasses/forum.png" width="24" height="24" loading="lazy" alt="Forums" style="border: 0; vertical-align: middle"> <a href="/discuss/">Forums</a></td> <td style=" white-space: nowrap ; padding: 1px"> </td> <td style=" white-space: nowrap ;"><img src="https://files.phpclasses.org/graphics/phpclasses/shop.png" width="24" height="24" loading="lazy" alt="Shop" style="border: 0; vertical-align: middle"> <a href="/shop/">Shop</a></td> <td style=" white-space: nowrap ; padding: 1px"> </td> <td style=" white-space: nowrap ;"><img src="https://files.phpclasses.org/graphics/phpclasses/help.png" width="24" height="24" loading="lazy" alt="Help" style="border: 0; vertical-align: middle"> <a href="/faq/">Help</a></td> <td width="49.5%" style=" white-space: nowrap ; padding: 1px"> </td> </tr> </table> <input type="hidden" name="go_search" value="1"> </form></div></div> <div class="c1025"><div id="recommendpage"><div id="recommendpagecontainer"><table cellspacing="2" cellpadding="0" align="center"> <tr> <td class="tabcontent box light"><a rel="nofollow" href="https://www.phpclasses.org/recommend_page.html?title=How+to+Use+PHP+Poetry+Classes+to+Generate+Poems+Using+the+Package+Literature%3A+Compose+and+publish+poems&page=%2Fliterature">Recommend</a> this page to a friend!</td> </tr> </table></div></div> </div> <div> <div class="InfoContent"></div> <div id="ads"></div> <div class="BodyContent"> <div class="BodyColumn"></div> <div id="BodyContent" class="InfoContent"><!-- body_start --><!--htdig_noindex--><noscript> <style type="text/css"> dynamicHide { display: block } dynamicInvisible { visibility: visible } </style> </noscript> <script type="text/javascript"><!-- document.write("<" + "style type=\"text/css\">\n.dynamicHide { display: none }\n.dynamicInvisible { visibility: hidden }\n<" + "/style>"); // --></script> <!--/htdig_noindex--><!--htdig_noindex--> <div class="package-show-width-640"><table width="100%" style="margin-bottom: 6px; " cellpadding="4" cellspacing="0"> <tr> <td width="1%" class="nbgu"> </td> <td class="nblu"><div style="text-align: left; position: relative"><div id="package-menu"><input type="checkbox" id="package-button"><div class="menu-items"><div><a onclick="nb.switchTab("information")"><span class="tab">Info</span> </a></div> <div><a onclick="nb.switchTab("view_files", vc.previous); return false"><span class="tab"><span id="loading_file"><img src="https://files.phpclasses.org/graphics/phpclasses/directory.png" width="24" height="24" loading="lazy" alt="View files" style="border: 0; vertical-align: middle"></span> Files</span></a></div> <div><a onclick="nb.switchTab("reputation"); return false"><span class="tab" id="reputation_label">Reputation</span></a></div> <div><a onclick="nb.switchTab('links'); return false"><span class="tab" id="links_label">Links</span></a></div> </div><label for="package-button" id="package-label"><span class="drop-icon"><img src="https://files.phpclasses.org/graphics/phpclasses/menu.png" width="24" height="24" loading="lazy" alt="Package menu" style="border: 0"></span></label></div></div></td> <td class="nbgu"> </td> <td class="nbtu" id="menu_tab_download" onclick="nb.switchTab("download")"><img src="https://files.phpclasses.org/graphics/phpclasses/down-medium.png" width="36" height="36" loading="lazy" alt="Download" style="border: 0; vertical-align: middle"> <span class="tab" id="download_label">Download</span></td> <td width="98%" class="nbgu"> </td> </tr> </table> </div><div class="package-cut-width-640"><table width="100%" style="margin-bottom: 6px; " cellpadding="4" cellspacing="0"> <tr> <td width="1%" class="nbgu"> </td> <td class="nblu" id="tab_information" onclick="nb.switchTab("information")"><span class="tab">Info</span> </td> <td class="nbgu"> </td> <td class="nbtu" id="tab_view_files" onclick="nb.switchTab("view_files", vc.previous); return false"><span class="tab"><span id="loading_file"><img src="https://files.phpclasses.org/graphics/phpclasses/directory.png" width="24" height="24" loading="lazy" alt="View files" style="border: 0; vertical-align: middle"></span> Files</span></td> <td class="nbgu"> </td> <td class="nbtu" id="tab_install" onclick="nb.switchTab("install")"><img src="https://files.phpclasses.org/graphics/phpclasses/composer-medium.png" width="36" height="36" loading="lazy" alt="Install with Composer" style="border: 0; vertical-align: middle"> <span class="tab" id="install_label">Install with Composer</span></td> <td class="nbgu"> </td> <td class="nbtu" id="tab_download" onclick="nb.switchTab("download")"><img src="https://files.phpclasses.org/graphics/phpclasses/down-medium.png" width="36" height="36" loading="lazy" alt="Download" style="border: 0; vertical-align: middle"> <span class="tab" id="download_label">Download</span></td> <td class="nbgu"> </td> <td class="package-cell-cut-width-800 nbtu" id="tab_reputation" onclick="nb.switchTab("reputation"); return false"><span class="tab" id="reputation_label">Reputation</span></td> <td class="package-cell-cut-width-800 nbgu"> </td> <td class="package-cell-cut-full-width nbtu" id="tab_forum"><a class="tab" href="/discuss/package/13449/" title="Ask for help to this package author"> Support forum</a></td> <td class="package-cell-cut-full-width nbgu"> </td> <td class="package-cell-cut-full-width nbtu" id="tab_blog"><a class="tab" href="/blog/package/13449/" title="Read articles about this package"> Blog</a></td> <td class="package-cell-cut-full-width nbgu"> </td> <td class="package-cell-cut-full-width nbtu" id="tab_links" onclick="nb.switchTab('links'); return false"><span class="tab" id="links_label">Links</span></td> <td width="98%" class="nbgu"> </td> </tr> </table> </div><!--/htdig_noindex--> <div id="heightcontainer"><div id="content_information" class=""><!--htdig_noindex--><table cellspacing="0" style="width: 100%"><tr><td class="ct tabcontent package-cell-cut-width-500">Last Updated</td><td class="cg package-cell-cut-width-500"> </td><td class="ct tabcontent" width="1%" colspan="3">Ratings</td><td class="cg"> </td><td class="ct tabcontent package-cell-cut-width-640" width="1%">Unique User Downloads</td><td class="cg package-cell-cut-width-640"> </td><td class="ct tabcontent package-cell-cut-full-width" width="1%">Download Rankings</td></tr><tr><td class="cd package-cell-cut-width-500" nowrap="nowrap" style="text-align: center"><a target="_blank" href="/browse/feed/changes/package/13449.rss" title="Subscribe to this package changes RSS feed">2025-01-12</a> (7 days ago) <a target="_blank" href="/browse/feed/changes/package/13449.rss" title="Subscribe to this package changes RSS feed"><img src="https://files.phpclasses.org/graphics/phpclasses/rss2.png" width="24" height="24" loading="lazy" alt="RSS 2.0 feed" style="border: 0; vertical-align: middle"></a></td><td class="cg package-cell-cut-width-500"></td><td class="cd" nowrap="nowrap" colspan="3" style="text-align: center">Not enough user ratings</td><td class="cg"></td><td class="cd package-cell-cut-width-640" nowrap="nowrap" style="text-align: center"><b>Total:</b> <span class="ranking">14</span> <b>This week:</b> <span class="ranking">14</span></td><td class="cg package-cell-cut-width-640"></td><td class="cd package-cell-cut-full-width" nowrap="nowrap" style="text-align: center"><b>All time:</b> <a href="" title="View the package ranking details" onclick="nav.switchRankings(); return false;"><span class="ranking">11,441</span></a> <b>This week:</b> <span class="ranking">4</span><img src="https://files.phpclasses.org/graphics/phpclasses/up.png" width="24" height="24" loading="lazy" alt="Up" style="border: 0; vertical-align: middle"></td></tr></table><!--/htdig_noindex--><table cellspacing="0" style="width: 100%; margin-top: 4px"><tr><!--htdig_noindex--><td class="ct tabcontent">Version</td><td class="cg"> </td><td class="ct tabcontent">License</td><td class="cg"> </td><td class="ct tabcontent package-cell-cut-width-640">PHP version</td><td class="cg package-cell-cut-width-640"> </td><td class="ct tabcontent package-cell-cut-width-500">Categories</td></tr><tr><td class="cd" nowrap="nowrap" style="text-align: center"><tt>literature</tt> 1.0</td><td class="cg"></td><td class="cd" nowrap="nowrap" style="text-align: center"><a title="MIT/X Consortium License" href="http://www.opensource.org/licenses/mit-license.html" target="_blank" rel="noopener noreferer">MIT/X Consortium ...</a></td><td class="cg"></td><td class="cd package-cell-cut-width-640" nowrap="nowrap" style="text-align: center">5</td><td class="cg package-cell-cut-width-640"></td><!--/htdig_noindex--><td class="cd package-cell-cut-width-500" nowrap="nowrap" style="text-align: center"><b><a title="Classes using PHP 5 specific features" href="/browse/class/8.html">PHP 5</a></b>, <b><a title="Components and tools to manage content" href="/browse/class/31.html">Content management</a></b>, <b><a title="Document parsing, generation and conversion" href="/browse/class/372.html">Documents</a></b>, <b><a title="Composer and publish poems, novels, etc..." href="/browse/class/373.html">L...</a></b></td></tr></table><table cellspacing="0"><!--htdig_noindex--><tr><td class="nbpu"></td></tr><tr><td class="ct tabcontent"><!--htdig_noindex-->Description<!--/htdig_noindex--></td><td class="cg"> </td><td class="ct tabcontent"><!--htdig_noindex--><p><b>Author</b></p><div class="u799"><a href="/browse/author/1164569.html">Nahid Bin Azhar</div><!--/htdig_noindex--></td></tr><!--/htdig_noindex--><tr><td width="50%" style="vertical-align: top; padding: 0"><div class="cd" style="max-height: 600px; overflow: auto"><p>This package can compose and publish poems.<br /> <br /> It provides a class to add lines and paragraphs defining the poem text.<br /> <br /> The package can also generate HTML to publish the composed poem attributed to a given author.</p></div></td><td class="cg"></td><!--htdig_noindex--><td width="50%" style="vertical-align: top; padding: 0"><div class="cd"><table width="100%"> <tr> <td width="1%" valign="top" style="text-align: center; padding: 8px"><span class="c799"><img class="photo" src="https://files.phpclasses.org/picture/user/1164569.jpg" width="90" height="120" alt="Picture of Nahid Bin Azhar" title="Picture of Nahid Bin Azhar" loading="lazy"></span><div class="picture-user-name"><span class="c799"><a href="/browse/author/1164569.html" rel="author">Nahid Bin Azhar</a></span></div></td> <td class="tabbed-author-details" valign="top"><!--htdig_noindex--> <table width="100%" style="margin-bottom: 6px; " cellpadding="4" cellspacing="0"> <tr> <td width="49.5%" class="nbgu"> </td> <td class="nblu nblu" id="author_tab_performance" onclick="ab.switchTab("performance")"><span class="tab">Performance</span></td> <td class="nbgu"> </td> <td class="nbtu nbtu" id="author_tab_level" onclick="ab.switchTab("level")"><span class="tab">Level</span></td> <td width="49.5%" class="nbgu"> </td> </tr> </table> <!--/htdig_noindex--> <div id="author_container"><div id="author_content_performance"><table width="100%" cellspacing="0" cellpadding="2"> <tr class="even"> <th align="right" WIDTH="1%" nowrap="nowrap">Name:</th> <td colspan="2"> <span itemprop="name">Nahid Bin Azhar</span> <code><<a target="_blank" href="/contact/package/13449.html">contact</a>></code></td> </tr> <tr class="odd"> <th align="right" width="1%" nowrap="nowrap">Classes:</th> <td nowrap="nowrap" colspan="2"> 26 packages by <a href="/browse/author/1164569.html" rel="author">Nahid Bin Azhar</a></td> </tr> <tr class="even"> <th align="right" width="1%" nowrap="nowrap">Country:</th> <td nowrap="nowrap" colspan="3"><img style="vertical-align: top; width: 24px; height: 16px;" src="https://files.phpclasses.org/graphics/countryflags/US.png" alt="United States" title="United States" loading="lazy"> <a href="/browse/country/us/">United States</a></td> </tr> <tr class="odd"> <th align="right" width="1%" nowrap="nowrap">Age:</th> <td nowrap="nowrap" colspan="2">34</td> </tr> <tr class="even"> <th align="right" width="1%" nowrap="nowrap">All time rank:</th> <td nowrap="nowrap" width="1%">788</td><td nowrap="nowrap">109 in <a href="/browse/author/bycountry/country/us/">United States</a> <img style="vertical-align: top; width: 24px; height: 16px;" src="https://files.phpclasses.org/graphics/countryflags/US.png" alt="United States" title="United States" loading="lazy"></td> </tr> <tr class="odd"> <th align="right" width="1%" nowrap="nowrap">Week rank:</th> <td nowrap="nowrap" width="1%">4 <img src="https://files.phpclasses.org/graphics/phpclasses/up.png" width="24" height="24" loading="lazy" alt="Up" style="border: 0; vertical-align: middle"></td><td nowrap="nowrap">1 in <a href="/browse/author/bycountry/country/us/">United States</a> <img style="vertical-align: top; width: 24px; height: 16px;" src="https://files.phpclasses.org/graphics/countryflags/US.png" alt="United States" title="United States" loading="lazy"> <img src="https://files.phpclasses.org/graphics/phpclasses/up.png" width="24" height="24" loading="lazy" alt="Up" style="border: 0; vertical-align: middle"></td> </tr> </table></div><div id="author_content_level"><p style="text-align: center"><a href="/status/user/1164569/"><span class="ranking">Level 4 <img src="https://files.phpclasses.org/graphics/phpclasses/star.png" width="24" height="24" loading="lazy" alt="Star" style="border: 0; vertical-align: top"><img src="https://files.phpclasses.org/graphics/phpclasses/star.png" width="24" height="24" loading="lazy" alt="Star" style="border: 0; vertical-align: top"><img src="https://files.phpclasses.org/graphics/phpclasses/star.png" width="24" height="24" loading="lazy" alt="Star" style="border: 0; vertical-align: top"><img src="https://files.phpclasses.org/graphics/phpclasses/star.png" width="24" height="24" loading="lazy" alt="Star" style="border: 0; vertical-align: top"></span></a></p><p style="text-align: center"><img height="180" width="180" src="https://www.phpclasses.org/status/badge/experienced-author/user/1164569/v/f42fb6" loading="lazy"></p></div></div></td> <td class="package-cell-cut-width-640" style="text-align: center; font-size: large; font-weight: bold; white-space: nowrap">Innovation award<br><a href="/award/innovation/"><img src="https://files.phpclasses.org/graphics/phpclasses/innovation-award-logo.png" width="89" height="89" loading="lazy" alt="Innovation award" style="margin: 4px"></a><br>Nominee: 7x<br><br>Winner: 2x</td></tr> </table> </div><br><div align="center" class="package-cut-width-640"><script type="text/javascript"><!-- cl.addContent({ content: '\x3c!-- PHPClasses-Below-The-Fold --\x3e\n\n\n\x3c!-- AdSense Below the fold --\x3e\n\x3cp\x3e \x3c\x2fp\x3e\n\x3cscript async data-src="https:\x2f\x2fpagead2.googlesyndication.com\x2fpagead\x2fjs\x2fadsbygoogle.js?client=ca-pub-2951707118576741" data-loading="lazy"\n crossorigin="anonymous"\x3e\x3c\x2fscript\x3e\n\x3c!-- PHP Classes below the fold --\x3e\n\x3cins class="adsbygoogle"\n style="display:inline-block;width:300px;height:250px"\n data-ad-client="ca-pub-2951707118576741"\n data-ad-slot="9106526349"\x3e\x3c\x2fins\x3e\n\x3cscript\x3e\n (adsbygoogle = window.adsbygoogle || []).push({});\n\x3c\x2fscript\x3e\n\x3c!-- End of AdSense DFP Below the fold --\x3e\n\n\n\x3c!-- End-PHPClasses-Below-The-Fold --\x3e\n', inline: false, width: 336, height: 280, priority: 1 }); // --></script> </div></td><!--/htdig_noindex--></tr></table></div> <div id="content_view_files" class=""><div id="files"><a name="files"></a><!--htdig_noindex--><table width="100%" style="margin-bottom: 6px; " cellpadding="4" cellspacing="0"> <tr> <td width="1%" class="nbgu"> </td> <td class="nblu"><img src="https://files.phpclasses.org/graphics/phpclasses/directory.png" width="24" height="24" loading="lazy" alt="Files folder image" style="border: 0; vertical-align: middle"> <b> Files (5)</b></td> <td width="98%" class="nbgu"> </td> </tr> </table> <!--/htdig_noindex--> <div id="files_content" style="max-height: 600px; overflow: auto"><table width="100%" cellspacing="0" cellpadding="2"> <!--htdig_noindex--><tr> <th>File</th> <th width="1%" nowrap="nowrap" class="c399">Role</th> <th class="c399">Description</th> </tr><!--/htdig_noindex--> <tr> <td width="1%" nowrap="nowrap" colspan="5"><!--htdig_noindex--><img src="https://files.phpclasses.org/graphics/phpclasses/directory.png" width="24" height="24" loading="lazy" alt="Files folder image" style="border: 0; vertical-align: middle"><tt><a href="#files/src" onclick="vc.switchContent("files/src", "view_files", "files/src"); return false;">src</a></tt> <i>(3 files)</i><!--/htdig_noindex--></td> </tr><tr id="file395427" class="even" onmouseover="sec(this,'highlight')" onmouseout="sec(this,'even')"><td width="1%" nowrap="nowrap" valign="top"><tt><!--htdig_noindex--><img src="https://files.phpclasses.org/graphics/phpclasses/browse.png" width="24" height="24" loading="lazy" alt="Accessible without login" style="border: 0; vertical-align: middle"> <img src="https://files.phpclasses.org/graphics/phpclasses/textfile.png" width="24" height="24" loading="lazy" alt="Plain text file" style="border: 0; vertical-align: middle"> <a onclick="return nav.loadFile(vc, nb, 395427, "view_files", "files", "view_files");" href="/browse/file/395427.html" title=".">composer.json</a><!--/htdig_noindex--></tt></td> <td width="1%" nowrap="nowrap" valign="top" class="c399"><!--htdig_noindex-->Data<!--/htdig_noindex--></td> <td valign="top" class="c399">Auxiliary data</td> </tr> <tr id="file395428" class="odd" onmouseover="sec(this,'highlight')" onmouseout="sec(this,'odd')"><td width="1%" nowrap="nowrap" valign="top"><tt><!--htdig_noindex--><img src="https://files.phpclasses.org/graphics/phpclasses/browse.png" width="24" height="24" loading="lazy" alt="Accessible without login" style="border: 0; vertical-align: middle"> <img src="https://files.phpclasses.org/graphics/phpclasses/textfile.png" width="24" height="24" loading="lazy" alt="Plain text file" style="border: 0; vertical-align: middle"> <a onclick="return nav.loadFile(vc, nb, 395428, "view_files", "files", "view_files");" href="/browse/file/395428.html" title=".">example.php</a><!--/htdig_noindex--></tt></td> <td width="1%" nowrap="nowrap" valign="top" class="c399"><!--htdig_noindex-->Example<!--/htdig_noindex--></td> <td valign="top" class="c399">Example script</td> </tr> </table> <br> </div> </div> <div id="files/src"><a name="files/src"></a><!--htdig_noindex--><table width="100%" style="margin-bottom: 6px; " cellpadding="4" cellspacing="0"> <tr> <td width="1%" class="nbgu"> </td> <td class="nbtu light" onclick="vc.switchContent("files", "view_files", "files"); return false;"><img src="https://files.phpclasses.org/graphics/phpclasses/directory.png" width="24" height="24" loading="lazy" alt="Files folder image" style="border: 0; vertical-align: middle"> <a href="#files"> Files (5)</a></td> <td class="nbgu"> <b>/</b> </td> <td class="nblu"><b>src</b></td> <td width="98%" class="nbgu"> </td> </tr> </table> <!--/htdig_noindex--> <div id="files/src_content" style="max-height: 600px; overflow: auto"><table width="100%" cellspacing="0" cellpadding="2"> <!--htdig_noindex--><tr> <th>File</th> <th width="1%" nowrap="nowrap" class="c399">Role</th> <th class="c399">Description</th> </tr><!--/htdig_noindex--> <tr id="file395429" class="even" onmouseover="sec(this,'highlight')" onmouseout="sec(this,'even')"><td width="1%" nowrap="nowrap" valign="top"><tt> <!--htdig_noindex--><img src="https://files.phpclasses.org/graphics/phpclasses/textfile.png" width="24" height="24" loading="lazy" alt="Plain text file" style="border: 0; vertical-align: middle"> <a onclick="return nav.loadFile(vc, nb, 395429, "view_files", "files/src", "view_files");" href="/browse/file/395429.html" title="src">Novel.php</a><!--/htdig_noindex--></tt></td> <td width="1%" nowrap="nowrap" valign="top" class="c399"><!--htdig_noindex-->Class<!--/htdig_noindex--></td> <td valign="top" class="c399">Class source</td> </tr> <tr id="file395430" class="odd" onmouseover="sec(this,'highlight')" onmouseout="sec(this,'odd')"><td width="1%" nowrap="nowrap" valign="top"><tt> <!--htdig_noindex--><img src="https://files.phpclasses.org/graphics/phpclasses/textfile.png" width="24" height="24" loading="lazy" alt="Plain text file" style="border: 0; vertical-align: middle"> <a onclick="return nav.loadFile(vc, nb, 395430, "view_files", "files/src", "view_files");" href="/browse/file/395430.html" title="src">Poem.php</a><!--/htdig_noindex--></tt></td> <td width="1%" nowrap="nowrap" valign="top" class="c399"><!--htdig_noindex-->Class<!--/htdig_noindex--></td> <td valign="top" class="c399">Class source</td> </tr> <tr id="file395431" class="even" onmouseover="sec(this,'highlight')" onmouseout="sec(this,'even')"><td width="1%" nowrap="nowrap" valign="top"><tt> <!--htdig_noindex--><img src="https://files.phpclasses.org/graphics/phpclasses/textfile.png" width="24" height="24" loading="lazy" alt="Plain text file" style="border: 0; vertical-align: middle"> <a onclick="return nav.loadFile(vc, nb, 395431, "view_files", "files/src", "view_files");" href="/browse/file/395431.html" title="src">Scratch.php</a><!--/htdig_noindex--></tt></td> <td width="1%" nowrap="nowrap" valign="top" class="c399"><!--htdig_noindex-->Class<!--/htdig_noindex--></td> <td valign="top" class="c399">Class source</td> </tr> </table> <br> </div> </div> <script type="text/javascript"><!-- var el = document.getElementById("files/src"); el.style.display = "none"; // --></script> <div id="file_data"></div> </div> <!--htdig_noindex--><div id="content_install" class=""><table align="center"><tr><td style="text-align: center; max-width: 24em">The PHP Classes site has supported package installation using the Composer tool since 2013, as you may verify by reading this <a href="https://www.phpclasses.org/blog/post/221-Speedup-Your-Web-Deployments-Using-Composer-to-Install-PHP-Classes-Packages.html">instructions page</a>.<br></td></tr><tr><td style="text-align: center"><a href="/package_repositories.html?package=13449" onclick="return !nav.loadInstall(13449);"><span id="loading_install"><img src="https://files.phpclasses.org/graphics/phpclasses/composer-medium.png" width="36" height="36" loading="lazy" alt="Install with Composer" style="border: 0; vertical-align: middle"></span></a> <a href="/package_repositories.html?package=13449" onclick="return !nav.loadInstall(13449);" class="edit button">Install with Composer</a></td></tr></table><div id="install" class="framed light" style="display: none; padding: 1px"><p style="text-align: center"><a onclick="nav.closeInstall(); return false"><span class="edit button">Close</span></a></p><div id="install_content"></div></div></div><!--/htdig_noindex--> <!--htdig_noindex--><div id="content_download" class=""><table align="center"><tr><td><a href="/browse/package/13449/download/zip.html"><img src="https://files.phpclasses.org/graphics/phpclasses/down-medium.png" width="36" height="36" loading="lazy" alt="Download" style="border: 0; vertical-align: middle"></a></td><td><a href="/browse/package/13449/download/zip.html" class="edit button">literature-2025-01-12.zip</a> 2KB</td></tr><tr><td><a href="/browse/package/13449/download/targz.html"><img src="https://files.phpclasses.org/graphics/phpclasses/down-medium.png" width="36" height="36" loading="lazy" alt="Download" style="border: 0; vertical-align: middle"></a></td><td><a href="/browse/package/13449/download/targz.html">literature-2025-01-12.tar.gz</a> 1KB</td></tr><tr><td><a href="/package_repositories.html?package=13449" onclick="nb.switchTab('install') ; return !nav.loadInstall(13449);"><span id="loading_download"><img src="https://files.phpclasses.org/graphics/phpclasses/composer-medium.png" width="36" height="36" loading="lazy" alt="Install with Composer" style="border: 0; vertical-align: middle"></span></a></td><td><a href="/package_repositories.html?package=13449" onclick="nb.switchTab('install') ; return !nav.loadInstall(13449);" class="edit button">Install with Composer</a></td></tr></table></div><!--/htdig_noindex--> <div id="content_reputation" class=""><!--htdig_noindex--><table cellspacing="0"><tr><td class="cg" style="width: 49%"> </td><td class="ct tabcontent" style="width: 1%" title="Files imported from version control repositories">Version Control</td><td class="cg"> </td><td class="ct tabcontent" width="1%">Unique User Downloads</td><td class="cg"> </td><td class="ct tabcontent package-cell-cut-width-640" width="1%" id="download_rankings_label">Download Rankings</td><td class="cg package-cell-cut-width-640"> </td><td class="cg" style="width: 49%"> </td></tr><tr><td class="cg" style="width: 49%"> </td><td class="cd" nowrap="nowrap" style="text-align: center"><span class="ranking" title="Files imported from version control repositories: 5 out of 5">100%</a></span></td><td rowspan="2"></td><td class="cd"><table><tr><td nowrap="nowrap" style="text-align: right; width: 1%; font-weight: bold">Total:</td><td style="padding: 8px"><span class="ranking">14</span></td><tr><td style="white-space: nowrap; text-align: right; font-weight: bold">This week:</td><td style="text-align: center; padding: 8px"><span class="ranking">14</span></td></tr></table></td><td class="cg"></td><td class="cd package-cell-cut-width-640"><table><tr><td style="white-space: nowrap; text-align: right; width: 1%; font-weight: bold">All time:</td><td style="padding: 8px; text-align: center"><span class="ranking">11,441</span></td><td class="cg"></td><tr><td class="package-cell-cut-width-640" style="white-space: nowrap; font-weight: bold; text-align: right">This week:</td><td class="package-cell-cut-width-640" style="padding: 8px; text-align: center"><span class="ranking">4</span></td><td class="package-cell-cut-width-640"><img src="https://files.phpclasses.org/graphics/phpclasses/up.png" width="24" height="24" loading="lazy" alt="Up" style="border: 0; vertical-align: middle"></td><td class="package-cell-cut-width-640"></td></tr></table></td><td class="cg"></td></tr></table><!--/htdig_noindex--> </div> <div id="content_links" class="" style="max-height: 600px; overflow: auto"><!--htdig_noindex--><a name="applications"></a><br><table width="100%" style="margin-bottom: 6px; " cellpadding="4" cellspacing="0"> <tr> <td width="1%" class="nbgu"> </td> <td class="nblu"><b>Applications that use this package</b></td> <td width="98%" class="nbgu"> </td> </tr> </table> <div class="framed dark">No pages of applications that use this class were specified.</div> <p><img src="https://files.phpclasses.org/graphics/phpclasses/add.png" width="24" height="24" loading="lazy" alt="Add link image" style="border: 0; vertical-align: middle"> If you know an application of this package, send a message to the <a class="button edit" target="_blank" href="/contact/package/13449.html">author</a> to add a link here.</p> <!--/htdig_noindex--></div> </div><script type="text/javascript" src="https://files.phpclasses.org/animation.js"></script> <script type="text/javascript" src="https://files.phpclasses.org/js/scrollbarToTop.js"></script> <script type="text/javascript" src="https://files.phpclasses.org/js/ajaxLoadContent.js?ts=1414480790"></script> <script type="text/javascript" src="https://files.phpclasses.org/js/packagesNavigation.js?ts=1722573234"></script> <script type="text/javascript"><!-- function sec(e, c) { var n = e.id; if(document.layers) { document.layers[n].className = c; } else { if(document.all) { document.all[n].className = c; } else { if(e.className) { e.className = c } } } } vc = new ViewContent(); vc.debug = 0; vu = new ViewContent(); vu.previous = null; vu.fileData = "usage_file_data"; vu.loadingElement = "loading_usage_file"; vu.fileFormat = "usage"; vu.debug = 0; var initialTab = "information"; var initialPath = null; var initialScreenshot = null; var initialVideo = null; var initialSlides = null; nav = new Navigation(); nav.reputationLabel = "Reputation"; nav.downloadLabel = "Download"; nav.ratingsLabel = "User ratings"; nav.neededPackagesLabel = "Needed packages"; nav.downloadRankingsLabel = "Download Rankings"; nav.linksLabel = "Links"; nav.package = 13449; nav.tabs = ["content_information","content_view_files","content_install","content_download","content_reputation","content_links"]; nav.informationSections = [ "content_screenshots", "content_view_files", "content_download", "content_reputation", "content_links" ] nav.tabsContainer = "heightcontainer"; nav.fixTabsHeight(); nav.debug = 0; nb = new NavigationBar(initialTab, "", null, null, "heightcontainer"); nb.debug = 0; allTabs = {"information":true,"view_files":true,"install":true,"download":true,"reputation":true,"links":true}; var allFiles = {"files":{"395427":0,"395428":1},"files\/src":{"395429":0,"395430":1,"395431":2}}; if(document.location.hash.length && document.location.hash[0] === "#") { var path; initialTab = document.location.hash.substring(1); path = nav.getPath(initialTab, allTabs); if(path.parent) { initialTab = path.parent; if(path.child) { switch(initialTab) { case "demos": initialDemo = path.child; break; case "view_files": path = nav.getLastPath(path.child, allFiles); if(typeof path.parent === "string") { initialPath = path.parent; if(path.child) { initialFile = path.child; } } break; case "screenshots": path = nav.getPath(path.child); if(path.child) { switch(path.parent) { case "screenshot": initialScreenshot = path.child; break; case "video": initialVideo = path.child; break; case "slides": initialSlides = path.child; break; } } break; } } nb.setTab(initialTab); } } if(initialPath) { vc.setContent(initialPath); if(initialFile) { nav.loadFile(vc, nb, initialFile, "view_files", null, "view_files"); } } var vs = new ViewScreenshots(); vs.screenshots = []; vs.debug = 0; if(initialScreenshot) { vs.displayScreenshot(initialScreenshot); } var vv = new ViewVideos(); vv.videos = []; vv.debug = 0; if(initialVideo) { vv.displayVideo(initialVideo, 13449); } var vsl = new ViewVideos(); vsl.stateContext = "slides"; vsl.videos = []; vsl.debug = 0; if(initialSlides) { vsl.displayVideo(initialSlides, 13449); } nav.loadingIcon = vc.loadingIcon = vv.loadingIcon = vsl.loadingIcon = vu.loadingIcon = '\x3cimg src="https:\x2f\x2ffiles.phpclasses.org\x2fgraphics\x2fphpclasses\x2floading.gif" width="24" height="24" loading="lazy" alt="Loading" style="border: 0; vertical-align: middle"\x3e'; nav.rateIcon = '\x3cimg src="https:\x2f\x2ffiles.phpclasses.org\x2fgraphics\x2fphpclasses\x2fstar.png" width="24" height="24" loading="lazy" alt="Star" style="border: 0; vertical-align: top"\x3e'; nav.installIcon = '\x3cimg src="https:\x2f\x2ffiles.phpclasses.org\x2fgraphics\x2fphpclasses\x2fcomposer-medium.png" width="36" height="36" loading="lazy" alt="Install with Composer" style="border: 0; vertical-align: middle"\x3e'; function submitRating() { return nav.submitRating(); } ab = new NavigationBar("level", "author_", "performance"); ab.debug = 0; var nv = new Navigation(); nv.tabsContainer = "author_container"; nv.tabs = ["author_content_performance", "author_content_level"]; nv.fixTabsHeight(); // --></script> <!-- body_end --><div class="c1025"><script type="text/javascript"><!-- cl.addContent({ content: '\x3cbr\x3e\x3cdiv align="center"\x3e\x3c!-- PHPClasses-Bottom --\x3e\n\n\x3c!-- AdSense Bottom --\x3e\n\x3cscript async data-src="https:\x2f\x2fpagead2.googlesyndication.com\x2fpagead\x2fjs\x2fadsbygoogle.js?client=ca-pub-2951707118576741" data-loading="lazy"\n crossorigin="anonymous"\x3e\x3c\x2fscript\x3e\n\x3c!-- PHP Classes Bottom --\x3e\n\x3cins class="adsbygoogle"\n style="display:inline-block;width:728px;height:90px"\n data-ad-client="ca-pub-2951707118576741"\n data-ad-slot="0161400320"\x3e\x3c\x2fins\x3e\n\x3cscript\x3e\n (adsbygoogle = window.adsbygoogle || []).push({});\n\x3c\x2fscript\x3e\n\x3c!-- End of AdSense Bottom --\x3e\n\n\n\x3c\x2fdiv\x3e', inline: false, height: 90, priority: 1 }); // --></script> </div><script type="text/javascript"><!-- cl.addContent({ content: '\n\x3c!-- Start of Google Analytics 4 --\x3e\n\x3c!-- Google tag (gtag.js) --\x3e\n\x3cscript async src="https:\x2f\x2fwww.googletagmanager.com\x2fgtag\x2fjs?id=G-BN2GRQ7TJL"\x3e\x3c\x2fscript\x3e\n\x3cscript\x3e\n window.dataLayer = window.dataLayer || [];\n function gtag(){dataLayer.push(arguments);}\n gtag(\'js\', new Date());\n\n gtag(\'config\', \'G-BN2GRQ7TJL\');\n\x3c\x2fscript\x3e\n\x3c!-- End of Google Analytics 4 --\x3e\n\n', inline: false }); // --></script> <script type="text/javascript"><!-- cl.loadContent(); // --></script> </div> <div class="BodyColumn"></div> </div> </div> </div> <div id="FooterInfo"> <div class="c1025"><div id="endnavigation"><table width="100%" style="margin-top: 6px; " cellpadding="4" cellspacing="0"> <tr> <td width="49.5%" style=" white-space: nowrap ; padding: 1px"> </td> <td style=" white-space: nowrap ;"><img src="https://files.phpclasses.org/graphics/phpclasses/user.png" width="24" height="24" loading="lazy" alt="About us" style="border: 0; vertical-align: middle"> <a href="/about">About us</a></td> <td style=" white-space: nowrap ; padding: 1px"> </td> <td style=" white-space: nowrap ;"><img src="https://files.phpclasses.org/graphics/phpclasses/buy.png" width="24" height="24" loading="lazy" alt="Advertise on this site" style="border: 0; vertical-align: middle"> <a href="/sponsor.html" target="_blank">Advertise on this site</a></td> <td style=" white-space: nowrap ; padding: 1px"> </td> <td style=" white-space: nowrap ;"><img src="https://files.phpclasses.org/graphics/phpclasses/map.png" width="24" height="24" loading="lazy" alt="Site map" style="border: 0; vertical-align: middle"> <a href="/sitemap/">Site map</a></td> <td style=" white-space: nowrap ; padding: 1px"> </td> <td style=" white-space: nowrap ;"><img src="https://files.phpclasses.org/graphics/phpclasses/new.png" width="24" height="24" loading="lazy" alt="Newsletter" style="border: 0; vertical-align: middle"> <a href="/newsletter/">Newsletter</a></td> <td style=" white-space: nowrap ; padding: 1px"> </td> <td style=" white-space: nowrap ;"><img src="https://files.phpclasses.org/graphics/phpclasses/statistics.png" width="24" height="24" loading="lazy" alt="Statistics" style="border: 0; vertical-align: middle"> <a href="/browse/statistics/statistics.html">Statistics</a></td> <td style=" white-space: nowrap ; padding: 1px"> </td> <td style=" white-space: nowrap ;"><img src="https://files.phpclasses.org/graphics/phpclasses/tip.png" width="24" height="24" loading="lazy" alt="Site tips" style="border: 0; vertical-align: middle"> <a href="/tips.html">Site tips</a></td> <td style=" white-space: nowrap ; padding: 1px"> </td> <td style=" white-space: nowrap ;"><img src="https://files.phpclasses.org/graphics/phpclasses/privacy.png" width="24" height="24" loading="lazy" alt="Privacy policy" style="border: 0; vertical-align: middle"> <a href="/faq/#privacy-policy">Privacy policy</a></td> <td style=" white-space: nowrap ; padding: 1px"> </td> <td style=" white-space: nowrap ;"><img src="https://files.phpclasses.org/graphics/phpclasses/mail.png" width="24" height="24" loading="lazy" alt="Contact" style="border: 0; vertical-align: middle"> <a href="/faq/#contact">Contact</a></td> <td width="49.5%" style=" white-space: nowrap ; padding: 1px"> </td> </tr> </table> </div></div> <div id="invertedCompanyLogo"><a href="https://www.icontem.com/" target="_blank" rel="noreferrer nofollow noopener noreferer"><img src="https://files.phpclasses.org/graphics/inverted-icontem.png" width="180" height="60" loading="lazy" alt="Icontem" style="border: 0"></a></div> <div id="Copyright">Copyright (c) <a href="https://www.icontem.com/" rel="noreferrer nofollow noopener noreferer" target="_blank">Icontem</a> 1999-2025</div> <div id="Contact"><address>For more information send a message to <code><a target="_blank" href="/faq/#contact">info at phpclasses dot org</a></code>.</address> <div class="contactBar"><div style="background-color: #25d366; border-radius: 8px; padding: 7px 3px 4px 6px; margin: 4px; border-width: 1px; border-color: #000000; border-style: solid; width: 37px"><a target="_blank" href="https://api.whatsapp.com/send?phone=5514998068719&text=Hello%2C+I+visited+your+site++and+I+need+your+help." title="Contact us using WhatsApp"><?xml version="1.0" encoding="UTF-8" standalone="no"?> <!-- Created with Inkscape (http://www.inkscape.org/) based on the original provided with permission by WhatsApp (https://www.facebook.com/brand/resources/whatsapp/whatsapp-brand) --> <svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.1" id="svg2" xml:space="preserve" width="32.950111" height="32.641735" viewBox="0 0 32.950112 32.641736" sodipodi:docname="WhatsApp_Logo_2.svg" inkscape:version="0.92.2 5c3e80d, 2017-08-06"><metadata id="metadata8"><rdf:RDF><cc:Work rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs id="defs6"><clipPath clipPathUnits="userSpaceOnUse" id="clipPath18"><path d="M 0,1066.861 H 1280.244 V 0 H 0 Z" id="path16" inkscape:connector-curvature="0" /></clipPath><clipPath clipPathUnits="userSpaceOnUse" id="clipPath30"><path d="M 0,1066.861 H 1280.244 V 0 H 0 Z" id="path28" inkscape:connector-curvature="0" /></clipPath></defs><sodipodi:namedview pagecolor="#ffffff" bordercolor="#666666" borderopacity="1" objecttolerance="10" gridtolerance="10" guidetolerance="10" inkscape:pageopacity="0" inkscape:pageshadow="2" inkscape:window-width="1920" inkscape:window-height="993" id="namedview4" showgrid="false" inkscape:zoom="1" inkscape:cx="-265.30262" inkscape:cy="-256.21845" inkscape:window-x="0" inkscape:window-y="0" inkscape:window-maximized="1" inkscape:current-layer="g10" fit-margin-top="0" fit-margin-left="0" fit-margin-right="0" fit-margin-bottom="0" /><g id="g10" inkscape:groupmode="layer" inkscape:label="WhatsApp_Logo_2" transform="matrix(1.3333333,0,0,-1.3333333,-830.48251,714.48498)"><g id="g12" transform="matrix(0.01930303,0,0,0.02294704,622.8619,511.38245)"><g id="g14" clip-path="url(#clipPath18)"><g id="g20" transform="translate(1260.3838)"><path d="m 0,0 h -1240.524 c -10.968,0 -19.86,8.892 -19.86,19.86 v 1027.142 c 0,10.968 8.892,19.859 19.86,19.859 H 0 c 10.968,0 19.86,-8.891 19.86,-19.859 V 19.86 C 19.86,8.892 10.968,0 0,0" style="fill:#25d366;fill-opacity:1;fill-rule:nonzero;stroke:none" id="path22" inkscape:connector-curvature="0" /></g></g></g><g id="g24" transform="matrix(0.05,0,0,0.05,603.45728,497.44195)"><g id="g26" clip-path="url(#clipPath30)"><g id="g32" transform="translate(736.1802,489.2339)"><path d="m 0,0 c -5.211,2.608 -30.831,15.213 -35.608,16.954 -4.776,1.739 -8.25,2.607 -11.724,-2.608 -3.474,-5.216 -13.461,-16.955 -16.501,-20.433 -3.039,-3.477 -6.079,-3.914 -11.29,-1.304 -5.211,2.608 -22.002,8.11 -41.906,25.865 -15.491,13.818 -25.95,30.882 -28.989,36.099 -3.04,5.217 -0.325,8.037 2.284,10.635 2.345,2.335 5.212,6.087 7.817,9.13 2.606,3.042 3.474,5.217 5.211,8.693 1.737,3.479 0.869,6.521 -0.435,9.129 -1.302,2.608 -11.724,28.259 -16.066,38.694 -4.23,10.16 -8.526,8.784 -11.725,8.945 -3.036,0.151 -6.514,0.183 -9.987,0.183 -3.474,0 -9.12,-1.304 -13.897,-6.52 -4.776,-5.217 -18.238,-17.825 -18.238,-43.473 0,-25.651 18.672,-50.429 21.278,-53.907 2.606,-3.479 36.745,-56.113 89.021,-78.685 12.432,-5.37 22.139,-8.576 29.707,-10.977 12.483,-3.967 23.843,-3.407 32.822,-2.065 10.012,1.495 30.831,12.605 35.174,24.777 C 11.29,-18.693 11.29,-8.26 9.987,-6.087 8.685,-3.913 5.211,-2.609 0,0 m -95.082,-129.825 h -0.07 c -31.105,0.012 -61.613,8.369 -88.227,24.162 l -6.33,3.757 -65.606,-17.21 17.511,63.966 -4.121,6.559 c -17.352,27.598 -26.517,59.496 -26.503,92.25 0.038,95.573 77.8,173.329 173.415,173.329 46.3,-0.016 89.822,-18.07 122.551,-50.836 C 60.265,133.388 78.278,89.836 78.26,43.519 78.221,-52.062 0.46,-129.825 -95.082,-129.825 M 52.446,191.049 c -39.375,39.421 -91.739,61.14 -147.53,61.163 -114.953,0 -208.511,-93.552 -208.557,-208.54 -0.015,-36.758 9.588,-72.635 27.839,-104.264 l -29.587,-108.071 110.558,29.001 c 30.462,-16.615 64.759,-25.373 99.664,-25.384 h 0.085 10e-4 c 114.941,0 208.507,93.561 208.554,208.551 0.021,55.726 -21.652,108.124 -61.027,147.544" style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none" id="path34" inkscape:connector-curvature="0" /></g></g></g></g></svg></a></div><div style="background-color: #ffffff; border-radius: 8px; padding: 4px 4px 4px 5px; margin: 4px; border-width: 1px; border-color: #000000; border-style: solid; width: 37px"><a target="_blank" href="https://m.me/114418241923267" title="Contact us using Messenger"><?xml version="1.0" encoding="UTF-8" standalone="no"?> <!-- Created with Inkscape (http://www.inkscape.org/) based on the original provided with permission by WhatsApp (https://www.facebook.com/brand/resources/messenger/logo) --> <svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" width="35.84" height="35.84" viewBox="0 0 35.84 35.84" version="1.1" id="svg22" sodipodi:docname="logo.svg" inkscape:version="0.92.2 5c3e80d, 2017-08-06"> <metadata id="metadata26"> <rdf:RDF> <cc:Work rdf:about=""> <dc:format>image/svg+xml</dc:format> <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> </cc:Work> </rdf:RDF> </metadata> <sodipodi:namedview pagecolor="#ffffff" bordercolor="#666666" borderopacity="1" objecttolerance="10" gridtolerance="10" guidetolerance="10" inkscape:pageopacity="0" inkscape:pageshadow="2" inkscape:window-width="1920" inkscape:window-height="993" id="namedview24" showgrid="false" inkscape:zoom="0.74362183" inkscape:cx="-718.6531" inkscape:cy="-73.162608" inkscape:window-x="0" inkscape:window-y="0" inkscape:window-maximized="1" inkscape:current-layer="svg22" /> <title id="title2">Contact us using Messenger</title> <defs id="defs13"> <radialGradient cx="265.97925" cy="917.72095" fx="265.97925" fy="917.72095" r="871.6759" id="radialGradient-1" gradientUnits="userSpaceOnUse"> <stop stop-color="#0099FF" offset="0%" id="stop4" /> <stop stop-color="#A033FF" offset="60.9753877%" id="stop6" /> <stop stop-color="#FF5280" offset="93.482299%" id="stop8" /> <stop stop-color="#FF7061" offset="100%" id="stop10" /> </radialGradient> </defs> <g id="g20" style="fill:none;fill-rule:evenodd;stroke:none;stroke-width:1" transform="scale(0.035)"> <rect id="bounding-box" x="0" y="0" width="1024" height="1024" style="fill:#ffffff;fill-opacity:0" /> <g id="logo"> <path d="m 512,122 c -225.332,0 -400,165.056 -400,388 0,116.6144 47.792,217.3824 125.6224,286.984 6.5336,5.848 10.4776,14.04 10.7456,22.808 l 2.1784,71.152 c 0.696,22.696 24.1392,37.464 44.9072,28.296 l 79.3944,-35.048 c 6.7304,-2.968 14.272,-3.52 21.364,-1.568 C 432.696,892.656 471.5264,898 512,898 737.332,898 912,732.944 912,510 912,287.056 737.332,122 512,122 Z" id="Path" inkscape:connector-curvature="0" style="fill:url(#radialGradient-1)" /> <path d="m 271.8016,623.4688 117.5,-186.416 c 18.6904,-29.656 58.7144,-37.04 86.7584,-16.008 l 93.4536,70.0904 c 8.5744,6.432 20.372,6.3976 28.9104,-0.0824 l 126.2136,-95.788 c 16.8464,-12.784 38.836,7.376 27.5624,25.2664 L 634.7,606.9488 c -18.692,29.6544 -58.716,37.04 -86.7584,16.0064 l -93.456,-70.092 c -8.5736,-6.4304 -20.372,-6.396 -28.9096,0.084 l -126.2144,95.788 c -16.8456,12.7832 -38.836,-7.3768 -27.56,-25.2664 z" id="path17" inkscape:connector-curvature="0" style="fill:#ffffff" /> </g> </g> </svg> </a></div><div style="background-color: #000000; border-radius: 8px; padding: 5px 4px 5px 5px; margin: 4px; border-width: 1px; border-color: #000000; border-style: solid; width: 37px"><a target="_blank" href="/cdn-cgi/l/email-protection#84edeae2ebc4f4ecf4e7e8e5f7f7e1f7aaebf6e3" title="Contact us using email"><img src="https://files.phpclasses.org/graphics/phpclasses/mail-medium.png" width="36" height="36" loading="lazy" alt="Contact us using email" style="border: 0; vertical-align: middle"></a></div></div></div> </div> </div> </div> </div> <div style="display: none"> <!-- Start of Sticky BuySellAds --> <script data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script><script async data-src="//m.servedby-buysellads.com/monetization.js" data-loading="lazy"></script> <script> window.addEventListener("load", (event) => { (function () { if (typeof _bsa !== "undefined" && _bsa) { _bsa.init("stickybox", "CK7DPK3E", "placement:phpclassesorg"); } })(); }); </script> <!-- End of Sticky BuySellAds --> </div> </body> </html>