From c78fbec2faae4666c3d58c9e1415984afeb06084 Mon Sep 17 00:00:00 2001 From: oldperl Date: Thu, 9 Mar 2017 10:26:32 +0000 Subject: [PATCH] init php7 branch after svn-crash --- branches/php7/config.php | 52 + branches/php7/css/basic-style.css | 523 ++++++++++ branches/php7/css/conlite-demo.css | 136 +++ branches/php7/css/index.php | 4 + branches/php7/css/normalize.css | 530 ++++++++++ branches/php7/dbfs.php | 66 ++ branches/php7/error.php | 13 + branches/php7/favicon.ico | Bin 0 -> 29038 bytes branches/php7/front_content.php | 949 ++++++++++++++++++ branches/php7/front_crcloginform.inc.php | 153 +++ .../php7/images/SimpleGallery/ClosePopup.png | Bin 0 -> 2704 bytes .../php7/images/SimpleGallery/Loading.gif | Bin 0 -> 1849 bytes .../php7/images/SimpleGallery/NaviLeft.png | Bin 0 -> 1102 bytes .../images/SimpleGallery/NaviLeftDisabled.png | Bin 0 -> 1106 bytes .../php7/images/SimpleGallery/NaviRight.png | Bin 0 -> 1074 bytes .../SimpleGallery/NaviRightDisabled.png | Bin 0 -> 1116 bytes .../SimpleGallery/PopupImageNaviLeft.png | Bin 0 -> 2122 bytes .../SimpleGallery/PopupImageNaviRight.png | Bin 0 -> 2162 bytes .../php7/images/SimpleGallery/ZoomOverlay.png | Bin 0 -> 2583 bytes .../images/glyphicons-halflings-white.png | Bin 0 -> 8777 bytes branches/php7/images/glyphicons-halflings.png | Bin 0 -> 12799 bytes .../ico/apple-touch-icon-114-precomposed.png | Bin 0 -> 9686 bytes .../ico/apple-touch-icon-144-precomposed.png | Bin 0 -> 14485 bytes .../ico/apple-touch-icon-57-precomposed.png | Bin 0 -> 2752 bytes .../ico/apple-touch-icon-72-precomposed.png | Bin 0 -> 5609 bytes .../php7/images/ico/social_icons_sprite.png | Bin 0 -> 26603 bytes branches/php7/images/index.php | 4 + branches/php7/images/logo-small.png | Bin 0 -> 3455 bytes branches/php7/images/logo.png | Bin 0 -> 10376 bytes .../Modules/Contenido_NavMain_Util.class.php | 85 ++ .../Modules/Contenido_Sitemap_Util.class.php | 66 ++ branches/php7/includes/class.concache.php | 531 ++++++++++ branches/php7/includes/class.input.helper.php | 573 +++++++++++ branches/php7/includes/concache.php | 170 ++++ branches/php7/includes/functions.include.php | 40 + .../php7/includes/functions.navigation.php | 572 +++++++++++ branches/php7/includes/rss.inc.php | 59 ++ branches/php7/includes/rss_php.php | 160 +++ .../php7/includes/spider-it.functions.inc.php | 859 ++++++++++++++++ branches/php7/index.php | 5 + branches/php7/js/flexslider/flexslider.css | 71 ++ .../js/flexslider/images/bg_direction_nav.png | Bin 0 -> 1866 bytes branches/php7/js/flexslider/images/loader.gif | Bin 0 -> 673 bytes .../js/flexslider/jquery.flexslider-min.js | 38 + branches/php7/js/index.php | 4 + branches/php7/js/jquery.cookiesdirective.js | 294 ++++++ branches/php7/js/libs/jquery-1.9.0.min.js | 4 + branches/php7/js/libs/modernizr-2.6.2.min.js | 4 + branches/php7/js/main.js | 42 + branches/php7/logs/index.php | 4 + branches/php7/robots.txt | 2 + branches/php7/templates/cl_flex_slider.html | 10 + branches/php7/templates/cl_login_form.html | 9 + .../templates/cms_filelist_style_default.html | 18 + .../templates/cms_teaser_style_block.html | 11 + .../php7/templates/cms_teaser_style_blog.html | 11 + branches/php7/templates/contenido_header.html | 6 + branches/php7/templates/footnotes_1.html | 1 + branches/php7/templates/footnotes_2.html | 1 + branches/php7/templates/header.html | 4 + branches/php7/templates/headline_h1.html | 1 + branches/php7/templates/kontaktformular.html | 55 + .../php7/templates/login_form_loggedin.html | 5 + branches/php7/templates/logo_bottom.html | 1 + .../templates/navigation_meta_container.html | 4 + .../php7/templates/navigation_meta_item.html | 3 + .../php7/templates/navigation_standard.html | 8 + .../templates/navigation_standard_li.html | 5 + .../templates/navigation_standard_ul.html | 3 + branches/php7/templates/newsletter_form.html | 31 + .../php7/templates/newsletter_handler.html | 1 + branches/php7/templates/rss.html | 5 + branches/php7/templates/rss_template.html | 4 + .../php7/templates/rss_template_breit.html | 7 + branches/php7/templates/search_input.html | 7 + branches/php7/templates/search_output.html | 13 + branches/php7/templates/simple-gallery.html | 137 +++ branches/php7/templates/sitemap_standard.html | 7 + .../php7/templates/sitemap_standard_li.html | 5 + .../php7/templates/sitemap_standard_ul.html | 3 + branches/php7/templates/subheadline_h2.html | 1 + branches/php7/templates/teaser-standard.html | 7 + branches/php7/templates/teaser_right.html | 7 + branches/php7/templates/text_html.html | 3 + .../php7/upload/Flexslider/basic-pic1.jpg | Bin 0 -> 149587 bytes .../php7/upload/Flexslider/basic-pic2.jpg | Bin 0 -> 129022 bytes .../php7/upload/Flexslider/basic-pic3.jpg | Bin 0 -> 129079 bytes .../php7/upload/Flexslider/basic-pic4.jpg | Bin 0 -> 54623 bytes branches/php7/upload/Gallery/IMAGE_296.jpg | Bin 0 -> 251656 bytes branches/php7/upload/Gallery/PICT0004.JPG | Bin 0 -> 135998 bytes branches/php7/upload/Gallery/PICT0025.JPG | Bin 0 -> 160647 bytes branches/php7/upload/Gallery/PICT0082.JPG | Bin 0 -> 160199 bytes branches/php7/upload/Gallery/PICT0188.JPG | Bin 0 -> 149404 bytes branches/php7/upload/Gallery/Terasse26.jpg | Bin 0 -> 176634 bytes 94 files changed, 6407 insertions(+) create mode 100644 branches/php7/config.php create mode 100644 branches/php7/css/basic-style.css create mode 100644 branches/php7/css/conlite-demo.css create mode 100644 branches/php7/css/index.php create mode 100644 branches/php7/css/normalize.css create mode 100644 branches/php7/dbfs.php create mode 100644 branches/php7/error.php create mode 100644 branches/php7/favicon.ico create mode 100644 branches/php7/front_content.php create mode 100644 branches/php7/front_crcloginform.inc.php create mode 100644 branches/php7/images/SimpleGallery/ClosePopup.png create mode 100644 branches/php7/images/SimpleGallery/Loading.gif create mode 100644 branches/php7/images/SimpleGallery/NaviLeft.png create mode 100644 branches/php7/images/SimpleGallery/NaviLeftDisabled.png create mode 100644 branches/php7/images/SimpleGallery/NaviRight.png create mode 100644 branches/php7/images/SimpleGallery/NaviRightDisabled.png create mode 100644 branches/php7/images/SimpleGallery/PopupImageNaviLeft.png create mode 100644 branches/php7/images/SimpleGallery/PopupImageNaviRight.png create mode 100644 branches/php7/images/SimpleGallery/ZoomOverlay.png create mode 100644 branches/php7/images/glyphicons-halflings-white.png create mode 100644 branches/php7/images/glyphicons-halflings.png create mode 100644 branches/php7/images/ico/apple-touch-icon-114-precomposed.png create mode 100644 branches/php7/images/ico/apple-touch-icon-144-precomposed.png create mode 100644 branches/php7/images/ico/apple-touch-icon-57-precomposed.png create mode 100644 branches/php7/images/ico/apple-touch-icon-72-precomposed.png create mode 100644 branches/php7/images/ico/social_icons_sprite.png create mode 100644 branches/php7/images/index.php create mode 100644 branches/php7/images/logo-small.png create mode 100644 branches/php7/images/logo.png create mode 100644 branches/php7/includes/Util/Modules/Contenido_NavMain_Util.class.php create mode 100644 branches/php7/includes/Util/Modules/Contenido_Sitemap_Util.class.php create mode 100644 branches/php7/includes/class.concache.php create mode 100644 branches/php7/includes/class.input.helper.php create mode 100644 branches/php7/includes/concache.php create mode 100644 branches/php7/includes/functions.include.php create mode 100644 branches/php7/includes/functions.navigation.php create mode 100644 branches/php7/includes/rss.inc.php create mode 100644 branches/php7/includes/rss_php.php create mode 100644 branches/php7/includes/spider-it.functions.inc.php create mode 100644 branches/php7/index.php create mode 100644 branches/php7/js/flexslider/flexslider.css create mode 100644 branches/php7/js/flexslider/images/bg_direction_nav.png create mode 100644 branches/php7/js/flexslider/images/loader.gif create mode 100644 branches/php7/js/flexslider/jquery.flexslider-min.js create mode 100644 branches/php7/js/index.php create mode 100644 branches/php7/js/jquery.cookiesdirective.js create mode 100644 branches/php7/js/libs/jquery-1.9.0.min.js create mode 100644 branches/php7/js/libs/modernizr-2.6.2.min.js create mode 100644 branches/php7/js/main.js create mode 100644 branches/php7/logs/index.php create mode 100644 branches/php7/robots.txt create mode 100644 branches/php7/templates/cl_flex_slider.html create mode 100644 branches/php7/templates/cl_login_form.html create mode 100644 branches/php7/templates/cms_filelist_style_default.html create mode 100644 branches/php7/templates/cms_teaser_style_block.html create mode 100644 branches/php7/templates/cms_teaser_style_blog.html create mode 100644 branches/php7/templates/contenido_header.html create mode 100644 branches/php7/templates/footnotes_1.html create mode 100644 branches/php7/templates/footnotes_2.html create mode 100644 branches/php7/templates/header.html create mode 100644 branches/php7/templates/headline_h1.html create mode 100644 branches/php7/templates/kontaktformular.html create mode 100644 branches/php7/templates/login_form_loggedin.html create mode 100644 branches/php7/templates/logo_bottom.html create mode 100644 branches/php7/templates/navigation_meta_container.html create mode 100644 branches/php7/templates/navigation_meta_item.html create mode 100644 branches/php7/templates/navigation_standard.html create mode 100644 branches/php7/templates/navigation_standard_li.html create mode 100644 branches/php7/templates/navigation_standard_ul.html create mode 100644 branches/php7/templates/newsletter_form.html create mode 100644 branches/php7/templates/newsletter_handler.html create mode 100644 branches/php7/templates/rss.html create mode 100644 branches/php7/templates/rss_template.html create mode 100644 branches/php7/templates/rss_template_breit.html create mode 100644 branches/php7/templates/search_input.html create mode 100644 branches/php7/templates/search_output.html create mode 100644 branches/php7/templates/simple-gallery.html create mode 100644 branches/php7/templates/sitemap_standard.html create mode 100644 branches/php7/templates/sitemap_standard_li.html create mode 100644 branches/php7/templates/sitemap_standard_ul.html create mode 100644 branches/php7/templates/subheadline_h2.html create mode 100644 branches/php7/templates/teaser-standard.html create mode 100644 branches/php7/templates/teaser_right.html create mode 100644 branches/php7/templates/text_html.html create mode 100644 branches/php7/upload/Flexslider/basic-pic1.jpg create mode 100644 branches/php7/upload/Flexslider/basic-pic2.jpg create mode 100644 branches/php7/upload/Flexslider/basic-pic3.jpg create mode 100644 branches/php7/upload/Flexslider/basic-pic4.jpg create mode 100644 branches/php7/upload/Gallery/IMAGE_296.jpg create mode 100644 branches/php7/upload/Gallery/PICT0004.JPG create mode 100644 branches/php7/upload/Gallery/PICT0025.JPG create mode 100644 branches/php7/upload/Gallery/PICT0082.JPG create mode 100644 branches/php7/upload/Gallery/PICT0188.JPG create mode 100644 branches/php7/upload/Gallery/Terasse26.jpg diff --git a/branches/php7/config.php b/branches/php7/config.php new file mode 100644 index 0000000..8918a2a --- /dev/null +++ b/branches/php7/config.php @@ -0,0 +1,52 @@ + + * @license http://www.contenido.org/license/LIZENZ.txt + * @link http://www.4fb.de + * @link http://www.contenido.org + * + * + * + * {@internal + * created unknown + * modified 2008-07-03, bilal arslan, added security fix + * + * $Id: config.php 450 2016-07-20 11:11:12Z oldperl $: + * }} + * + */ + +if(!defined('CON_FRAMEWORK')) { + die('Illegal call'); +} + + +// Relative path to contenido directory, for all inclusions, in most cases: "../contenido/" +$contenido_path = "../conlite/"; + +// If language isn't specified, set this client and language (ID) +$load_lang = "1"; +$load_client = "1"; + +/* Various debugging options */ +$frontend_debug["container_display"] = false; +$frontend_debug["module_display"] = false; +$frontend_debug["module_timing"] = false; +$frontend_debug["module_timing_summary"]= false; + +/* Set to 1 to brute-force module regeneration */ +$force = 0; +?> diff --git a/branches/php7/css/basic-style.css b/branches/php7/css/basic-style.css new file mode 100644 index 0000000..a2c9e8b --- /dev/null +++ b/branches/php7/css/basic-style.css @@ -0,0 +1,523 @@ +/* +Simple Responsive Template v 1.2 + + +primary styles + Author: www.prowebdesign.ro + Add your own styles to customize the project. + + + +BASE (MOBILE) SIZE + These are the mobile styles. It's what people see on their phones. + Remember, keep it light: Speed is Important. +*/ + +/* typography */ +body{ + color:#666; + font-family:'Ubuntu', Arial, Helvetica, sans-serif; + font-size:1em; + line-height:1.4em; + font-weight:normal; +} +h1, h2, h3, h4, h5, h6{ + font-weight:normal; + font-family:'Droid Serif', Arial, Helvetica, sans-serif; + line-height:1.5em; + margin:.45em 0; + padding:0; +} + + +/* links */ +a, +a:visited, +a:active, +a:hover{color:#0099ff;} +a:hover{ text-decoration:none;} + + +/* Box sizing. Awesome thing. Read about it here: http://www.w3schools.com/cssref/css3_pr_box-sizing.asp */ +*{ box-sizing:border-box; + -moz-box-sizing:border-box;} + + +/* structure */ +.wrapper{ + width: 92%; + margin: 0 auto; +} +header{ + padding:15px 0; +} +#banner{ + text-align:center; +} + +#hero, +#page-header{ + background:#f3f3f3; + border-top:1px solid #e2e2e2; + border-bottom:1px solid #e2e2e2; + padding:20px 0; +} +#hero h1{ + line-height:1.2em; + margin-top:0px; + margin-bottom:10px;} + +.flexslider{ + display:none; +} + +#content { + margin:40px 0; +} + +aside { + margin:40px 0; +} + +p{ margin:0 0 1.5em;} + + +/* RESPONSIVE IMAGES */ +img{ max-width:100%; height:auto;} + + +/*MAIN MENU*/ +.menu-toggle{ + display:block; + padding:10px; + margin:20px 0 0; + background:#666; + color:#fff; + cursor:pointer; + text-transform:uppercase; + font-size:20px; +} +.menu-toggle.toggled-on{ + background:#0099ff; +} +.srt-menu{ + display:none; +} +.srt-menu.toggled-on{ + display:block; + position:relative; + z-index:10; +} + +.srt-menu{ + clear:both; + margin-bottom:60px; + +} +.srt-menu li a { + background:#dadada; + display:block; + margin:1px 0; + padding:10px; + text-decoration:none; +} +.srt-menu li a:hover{ + background:#0099ff; + color:#fff; +} +.srt-menu li li a { + background:#e8e8e8; + padding-left:40px; +} +.srt-menu li li li a { + background:#efefef; + padding-left:80px; +} + +/*SECONDARY MENU*/ +#secondary-navigation{ + margin-bottom:60px; +} +#secondary-navigation ul{ + margin:0; + padding:0; +} +#secondary-navigation ul li a{ + background:#E6E6E6; + display:block; + margin:5px 0; + padding:10px; + text-decoration:none; +} +#secondary-navigation ul li a:hover, +#secondary-navigation ul li.active a{ + background:#0099ff; + color:#fff; +} + +/*SPACE GRID ELEMENTS VERTICALLY, SINCE THEY ARE ONE UNDER ANOTHER SO FAR*/ +.grid_1, +.grid_2, +.grid_3, +.grid_4, +.grid_5, +.grid_6, +.grid_7, +.grid_8, +.grid_9, +.grid_10, +.grid_11, +.grid_12 { + margin-bottom:40px; + /*positioning and padding*/ + position: relative; + min-height: 1px; + padding-left: 15px; + padding-right: 15px; +} + +/*FOOTER*/ +footer{ + clear:both; + font-size:80%; + padding:20px 0; +} +footer ul{ + margin:0; + padding:0; +} + +/*colors and backgrounds*/ +body{ + background:#fff; +} +h1, h2, h3, h4, h5, h6{ + color:#333; +} + +footer{ + background:#333; + color:#ccc; +} +footer h1, footer h2, footer h3, footer h4{ + color:#CCC; + margin-bottom:10px; +} +footer ul{ + margin:0 0 0 8%; +} + +a.buttonlink{ + background:#0099ff; + border-radius:7px; + color:#fff; + display:block; + float:left; + margin:10px 15px 10px 0; + padding:10px; + text-decoration:none; +} +a.buttonlink:hover{ + background:#8dbc01; +} +.greenelement{ + background:#5ec79e; + color:#fff; +} +.violetelement{ + background:#887dc2; + color:#fff; +} + + + +/* Contain floats*/ +.clearfix:before, +.clearfix:after, +.row:before, +.row:after { + content: " "; + display: table; +} +.clearfix:after, +.container:after, +.row:after{ + clear: both; +} + + +/* +LARGER MOBILE DEVICES +This is for mobile devices with a bit larger screens. +*/ +@media only screen and (min-width: 481px) { +#banner{ + float:left; + text-align:left; + margin-bottom:-20px;/*this depends on the height of the logo*/ +} +.menu-toggle{/*make menu float right, instead of sitting under the logo*/ + margin-top:10px; /*this depends on the height of the logo*/ + float:right; +} + +} + +/* +TABLET & SMALLER LAPTOPS +The average viewing window and preferred media query for those is 768px. +But I think that some more breathing space is good:) +*/ +@media only screen and (min-width: 920px) { + +.wrapper{ + max-width: 1200px; + margin: .75em auto; +} + +#banner{ + float:left; + text-align:left; + margin-bottom:0px; +} +header{ + padding:0; +} +#content { + float:left; + width:65%; +} +#content.wide-content{ + float:none; + width:100%; +} + +.flexslider{ +display:block; +/*demo 1 slider theme*/ +margin: 0 0 60px; +background: #fff; +border: 4px solid #fff; +-webkit-border-radius: 4px; +-moz-border-radius: 4px; +-o-border-radius: 4px; +border-radius: 4px; +box-shadow: 0 1px 4px rgba(0,0,0,.2); +-webkit-box-shadow: 0 1px 4px rgba(0,0,0,.2); +-moz-box-shadow: 0 1px 4px rgba(0,0,0,.2); +-o-box-shadow: 0 1px 4px rgba(0,0,0,.2); +} + + +aside { + float:right; + width:30%; +} + +/*** MAIN MENU - ESSENTIAL STYLES ***/ +.menu-toggle{display:none;} +#menu-main-navigation{display:block;} + +.srt-menu, .srt-menu * { + margin: 0; + padding: 0; + list-style: none; +} +.srt-menu ul { + position: absolute; + display:none; + width: 12em; /* left offset of submenus need to match (see below) */ +} +.srt-menu ul li { + width: 100%; +} +.srt-menu li:hover { + visibility: inherit; /* fixes IE7 'sticky bug' */ +} +.srt-menu li { + float: left; + position: relative; + margin-left:1px; +} +.srt-menu li li { + margin-left:0px; +} +.srt-menu a { + display: block; + position: relative; +} +.srt-menu li:hover ul, +.srt-menu li.sfHover ul { + display:block; + left: 0; + top: 45px; /* match top ul list item height */ + z-index: 99; + -webkit-box-shadow: 2px 3px 2px 0px rgba(00, 00, 00, .3); + box-shadow: 2px 3px 2px 0px rgba(00, 00, 00, .3); +} +ul.srt-menu li:hover li ul, +ul.srt-menu li.sfHover li ul { + top: -999em; +} +ul.srt-menu li li:hover ul, +ul.srt-menu li li.sfHover ul { + left: 12em; /* match ul width */ + top: 0; +} +ul.srt-menu li li:hover li ul, +ul.srt-menu li li.sfHover li ul { + top: -999em; +} +ul.srt-menu li li li:hover ul, +ul.srt-menu li li li.sfHover ul { + left: 10em; /* match ul width */ + top: 0; +} + +/*** DEMO1 SKIN ***/ +#topnav, .srt-menu { + float:right; + margin: .35em 0 0 0; +} +.srt-menu a { + text-decoration:none; +} +.srt-menu li a { + background:#fff; + margin:0; + padding:10px 20px; + height:45px; +} +.srt-menu a, .srt-menu a:visited { /* visited pseudo selector so IE6 applies text colour*/ + color: #0099ff; +} +.srt-menu li li a { + border-top: 1px solid rgba(255,255,255,.2); + background: #333; /*fallback for old IE*/ + background:rgba(0,0,0,.6); + color: #fff; + padding-left:20px; + height:auto; +} +.srt-menu li li a:visited{color:#fff;} +.srt-menu li li li a, +.srt-menu li.active * li a{ + padding-left:20px; + background:rgba(0,0,0,.6); +} + +.srt-menu li:hover > a, +.srt-menu li.active a{ + color:#fff; + background:#0099ff; +} +.srt-menu li li:hover > a{ + color:#fff; + background:#0099ff; +} + + + +/*GRID*/ +/* + & Columns : 12 + + */ + .row{ + margin-left: -15px; + margin-right: -15px; +} + +.grid_1 { width: 8.33333333%; } +.grid_2 { width: 16.66666667%; } +.grid_3 { width: 25%; } +.grid_4 { width: 33.33333333%; } +.grid_5 { width: 41.66666667%; } +.grid_6 { width: 50%; } +.grid_7 { width: 58.33333333%; } +.grid_8 { width: 66.66666667%; } +.grid_9 { width: 75%; } +.grid_10 { width: 83.33333333%; } +.grid_11 { width: 91.66666667%; } +.grid_12 { width: 100%; } + +.grid_1, +.grid_2, +.grid_3, +.grid_4, +.grid_5, +.grid_6, +.grid_7, +.grid_8, +.grid_9, +.grid_10, +.grid_11, +.grid_12 { + float: left; + display: block; +} + +.rightfloat{float:right;} +/* @notation inspired by tinyGrid, .row and percentage by Twitter Bootstrap + */ + +#hero [class*="grid_"] { margin-bottom:-20px;} + +} + +/* +DESKTOP +This is the average viewing window. So Desktops, Laptops, and +in general anyone not viewing on a mobile device. Here's where +you can add resource intensive styles. +*/ +@media only screen and (min-width: 1030px) { + +} + +/* +LARGE VIEWING SIZE +This is for the larger monitors and possibly full screen viewers. +*/ +@media only screen and (min-width: 1240px) { + +} + +/* +RETINA (2x RESOLUTION DEVICES) +This applies to the retina iPhone (4s) and iPad (2,3) along with +other displays with a 2x resolution. +*/ +@media only screen and (-webkit-min-device-pixel-ratio: 1.5), + only screen and (min--moz-device-pixel-ratio: 1.5), + only screen and (min-device-pixel-ratio: 1.5) { + + +} + +/* +iPHONE 5 MEDIA QUERY +iPhone 5 or iPod Touch 5th generation styles (you can include your own file if you want) +*/ +@media (device-height: 568px) and (-webkit-min-device-pixel-ratio: 2) { + + +} + +/* +PRINT STYLESHEET +*/ +@media print { + * { background: transparent !important; color: black !important; text-shadow: none !important; filter:none !important; -ms-filter: none !important; } /* Black prints faster: h5bp.com/s */ + a, a:visited { text-decoration: underline; } + a[href]:after { content: " (" attr(href) ")"; } + abbr[title]:after { content: " (" attr(title) ")"; } + .ir a:after, a[href^="javascript:"]:after, a[href^="#"]:after { content: ""; } /* Don't show links for images, or javascript/internal links */ + pre, blockquote { border: 1px solid #999; page-break-inside: avoid; } + thead { display: table-header-group; } /* h5bp.com/t */ + tr, img { page-break-inside: avoid; } + img { max-width: 100% !important; } + @page { margin: 0.5cm; } + p, h2, h3 { orphans: 3; widows: 3; } + h2, h3 { page-break-after: avoid; } +} \ No newline at end of file diff --git a/branches/php7/css/conlite-demo.css b/branches/php7/css/conlite-demo.css new file mode 100644 index 0000000..6662565 --- /dev/null +++ b/branches/php7/css/conlite-demo.css @@ -0,0 +1,136 @@ +form#login_box { + width: 100%; +} + +form#login_box fieldset { + padding: 3px; + border-radius: 6px; +} + +input[type='submit'] { + background: #0099ff none repeat scroll 0 0; + border: 1px solid; + border-radius: 6px; + color: #fff; + margin: 5px 10px 5px 0; + padding: 5px; + text-decoration: none; +} + +footer #colophon { + position: relative; +} + +div#social-media-links { + position: absolute; + right: 0; + text-align: right; + width: 20%; + display: inline-block; +} + +a.social-media-icon { + width: 32px; + height: 32px; + background-image: url(../images/ico/social_icons_sprite.png); + display: inline-block; + color: rgba(0, 0, 0, 0); +} + +.facebook { + background-position: 0 0 !important; +} + +.facebook:hover { + background-position: 0 -32px !important; +} + +.pinterest { + background-position: -32px 0 !important; +} + +.pinterest:hover { + background-position: -32px -32px !important; +} + +.youtube { + background-position: -64px 0px !important; +} + +.youtube:hover { + background-position: -64px -32px !important; +} + +.flickr { + background-position: -96px 0px !important; +} + +.flickr:hover{ + background-position: -96px -32px !important; +} + +.google-plus { + background-position: -128px 0px !important; +} + +.google-plus:hover { + background-position: -128px -32px !important; +} + +.rss { + background-position: -160px 0 !important; +} + +.rss:hover { + background-position: -160px -32px !important; +} + + +.twitter { + background-position: -192px 0 !important; +} + +.twitter:hover { + background-position: -192px -32px !important; +} + + +.vimeo { + background-position: -224px 0 !important; +} + +.vimeo:hover { + background-position: -224px -32px !important; +} + +.dribble { + background-position: -256px 0 !important; +} + +.dribble:hover { + background-position: -256px -32px !important; +} + +.linkedin { + background-position: -288px 0 !important; +} + +.linkedin:hover { + background-position: -288px -32px !important; +} + +.xing { + background-position: -320px 0 !important; +} + +.xing:hover { + background-position: -320px -32px !important; +} + + + +@media only screen and (min-width: 920px) { + form#login_box input { + max-width: 100px; + } +} \ No newline at end of file diff --git a/branches/php7/css/index.php b/branches/php7/css/index.php new file mode 100644 index 0000000..ef8b776 --- /dev/null +++ b/branches/php7/css/index.php @@ -0,0 +1,4 @@ + diff --git a/branches/php7/css/normalize.css b/branches/php7/css/normalize.css new file mode 100644 index 0000000..68fcfea --- /dev/null +++ b/branches/php7/css/normalize.css @@ -0,0 +1,530 @@ +/*! normalize.css v1.1.0 | MIT License | git.io/normalize */ + +/* ========================================================================== + HTML5 display definitions + ========================================================================== */ + +/** + * Correct `block` display not defined in IE 6/7/8/9 and Firefox 3. + */ + +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +main, +nav, +section, +summary { + display: block; +} + +/** + * Correct `inline-block` display not defined in IE 6/7/8/9 and Firefox 3. + */ + +audio, +canvas, +video { + display: inline-block; + *display: inline; + *zoom: 1; +} + +/** + * Prevent modern browsers from displaying `audio` without controls. + * Remove excess height in iOS 5 devices. + */ + +audio:not([controls]) { + display: none; + height: 0; +} + +/** + * Address styling not present in IE 7/8/9, Firefox 3, and Safari 4. + * Known issue: no IE 6 support. + */ + +[hidden] { + display: none; +} + +/* ========================================================================== + Base + ========================================================================== */ + +/** + * 1. Correct text resizing oddly in IE 6/7 when body `font-size` is set using + * `em` units. + * 2. Prevent iOS text size adjust after orientation change, without disabling + * user zoom. + */ + +html { + font-size: 100%; /* 1 */ + -webkit-text-size-adjust: 100%; /* 2 */ + -ms-text-size-adjust: 100%; /* 2 */ +} + +/** + * Address `font-family` inconsistency between `textarea` and other form + * elements. + */ + +html, +button, +input, +select, +textarea { + font-family: sans-serif; +} + +/** + * Address margins handled incorrectly in IE 6/7. + */ + +body { + margin: 0; +} + +/* ========================================================================== + Links + ========================================================================== */ + +/** + * Address `outline` inconsistency between Chrome and other browsers. + */ + +a:focus { + outline: thin dotted; +} + +/** + * Improve readability when focused and also mouse hovered in all browsers. + */ + +a:active, +a:hover { + outline: 0; +} + +/* ========================================================================== + Typography + ========================================================================== */ + +/** + * Address font sizes and margins set differently in IE 6/7. + * Address font sizes within `section` and `article` in Firefox 4+, Safari 5, + * and Chrome. + */ + +h1 { + font-size: 2em; + margin: 0.67em 0; +} + +h2 { + font-size: 1.5em; + margin: 0.83em 0; +} + +h3 { + font-size: 1.17em; + margin: 1em 0; +} + +h4 { + font-size: 1em; + margin: 1.33em 0; +} + +h5 { + font-size: 0.83em; + margin: 1.67em 0; +} + +h6 { + font-size: 0.67em; + margin: 2.33em 0; +} + +/** + * Address styling not present in IE 7/8/9, Safari 5, and Chrome. + */ + +abbr[title] { + border-bottom: 1px dotted; +} + +/** + * Address style set to `bolder` in Firefox 3+, Safari 4/5, and Chrome. + */ + +b, +strong { + font-weight: bold; +} + +blockquote { + margin: 1em 40px; +} + +/** + * Address styling not present in Safari 5 and Chrome. + */ + +dfn { + font-style: italic; +} + +/** + * Address differences between Firefox and other browsers. + * Known issue: no IE 6/7 normalization. + */ + +hr { + -moz-box-sizing: content-box; + box-sizing: content-box; + height: 0; +} + +/** + * Address styling not present in IE 6/7/8/9. + */ + +mark { + background: #ff0; + color: #000; +} + +/** + * Address margins set differently in IE 6/7. + */ + +p, +pre { + margin: 1em 0; +} + +/** + * Correct font family set oddly in IE 6, Safari 4/5, and Chrome. + */ + +code, +kbd, +pre, +samp { + font-family: monospace, serif; + _font-family: 'courier new', monospace; + font-size: 1em; +} + +/** + * Improve readability of pre-formatted text in all browsers. + */ + +pre { + white-space: pre; + white-space: pre-wrap; + word-wrap: break-word; + +} + +/** + * Address CSS quotes not supported in IE 6/7. + */ + +q { + quotes: none; +} + +/** + * Address `quotes` property not supported in Safari 4. + */ + +q:before, +q:after { + content: ''; + content: none; +} + +/** + * Address inconsistent and variable font size in all browsers. + */ + +small { + font-size: 80%; +} + +/** + * Prevent `sub` and `sup` affecting `line-height` in all browsers. + */ + +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +sup { + top: -0.5em; +} + +sub { + bottom: -0.25em; +} + +/* ========================================================================== + Lists + ========================================================================== */ + +/** + * Address margins set differently in IE 6/7. + */ + +dl, +menu, +ol, +ul { + margin: 1em 0; +} + +dd { + margin: 0 0 0 40px; +} + +/** + * Address paddings set differently in IE 6/7. + */ + +menu, +ol, +ul { + padding: 0 0 0 40px; +} + +/** + * Correct list images handled incorrectly in IE 7. + */ + +nav ul, +nav ol { + list-style: none; + list-style-image: none; + padding:0; + margin:0; +} + +/* ========================================================================== + Embedded content + ========================================================================== */ + +/** + * 1. Remove border when inside `a` element in IE 6/7/8/9 and Firefox 3. + * 2. Improve image quality when scaled in IE 7. + */ + +img { + border: 0; /* 1 */ + -ms-interpolation-mode: bicubic; /* 2 */ +} + +/** + * Correct overflow displayed oddly in IE 9. + */ + +svg:not(:root) { + overflow: hidden; +} + +/* ========================================================================== + Figures + ========================================================================== */ + +/** + * Address margin not present in IE 6/7/8/9, Safari 5, and Opera 11. + */ + +figure { + margin: 0; +} + +/* ========================================================================== + Forms + ========================================================================== */ + +/** + * Correct margin displayed oddly in IE 6/7. + */ + +form { + margin: 0; +} + +/** + * Define consistent border, margin, and padding. + */ + +fieldset { + border: 1px solid #c0c0c0; + margin: 0 2px; + padding: 0.35em 0.625em 0.75em; +} + +/** + * 1. Correct color not being inherited in IE 6/7/8/9. + * 2. Correct text not wrapping in Firefox 3. + * 3. Correct alignment displayed oddly in IE 6/7. + */ + +legend { + border: 0; /* 1 */ + padding: 0; + white-space: normal; /* 2 */ + *margin-left: -7px; /* 3 */ +} + +/** + * 1. Correct font size not being inherited in all browsers. + * 2. Address margins set differently in IE 6/7, Firefox 3+, Safari 5, + * and Chrome. + * 3. Improve appearance and consistency in all browsers. + */ + +button, +input, +select, +textarea { + font-size: 100%; /* 1 */ + margin: 0; /* 2 */ + vertical-align: baseline; /* 3 */ + *vertical-align: middle; /* 3 */ +} + +/** + * Address Firefox 3+ setting `line-height` on `input` using `!important` in + * the UA stylesheet. + */ + +button, +input { + line-height: normal; +} + +/** + * Address inconsistent `text-transform` inheritance for `button` and `select`. + * All other form control elements do not inherit `text-transform` values. + * Correct `button` style inheritance in Chrome, Safari 5+, and IE 6+. + * Correct `select` style inheritance in Firefox 4+ and Opera. + */ + +button, +select { + text-transform: none; +} + +/** + * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` + * and `video` controls. + * 2. Correct inability to style clickable `input` types in iOS. + * 3. Improve usability and consistency of cursor style between image-type + * `input` and others. + * 4. Remove inner spacing in IE 7 without affecting normal text inputs. + * Known issue: inner spacing remains in IE 6. + */ + +button, +html input[type="button"], /* 1 */ +input[type="reset"], +input[type="submit"] { + -webkit-appearance: button; /* 2 */ + cursor: pointer; /* 3 */ + *overflow: visible; /* 4 */ +} + +/** + * Re-set default cursor for disabled elements. + */ + +button[disabled], +html input[disabled] { + cursor: default; +} + +/** + * 1. Address box sizing set to content-box in IE 8/9. + * 2. Remove excess padding in IE 8/9. + * 3. Remove excess padding in IE 7. + * Known issue: excess padding remains in IE 6. + */ + +input[type="checkbox"], +input[type="radio"] { + box-sizing: border-box; /* 1 */ + padding: 0; /* 2 */ + *height: 13px; /* 3 */ + *width: 13px; /* 3 */ +} + +/** + * 1. Address `appearance` set to `searchfield` in Safari 5 and Chrome. + * 2. Address `box-sizing` set to `border-box` in Safari 5 and Chrome + * (include `-moz` to future-proof). + */ + +input[type="search"] { + -webkit-appearance: textfield; /* 1 */ + -moz-box-sizing: content-box; + -webkit-box-sizing: content-box; /* 2 */ + box-sizing: content-box; +} + +/** + * Remove inner padding and search cancel button in Safari 5 and Chrome + * on OS X. + */ + +input[type="search"]::-webkit-search-cancel-button, +input[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} + +/** + * Remove inner padding and border in Firefox 3+. + */ + +button::-moz-focus-inner, +input::-moz-focus-inner { + border: 0; + padding: 0; +} + +/** + * 1. Remove default vertical scrollbar in IE 6/7/8/9. + * 2. Improve readability and alignment in all browsers. + */ + +textarea { + overflow: auto; /* 1 */ + vertical-align: top; /* 2 */ +} + +/* ========================================================================== + Tables + ========================================================================== */ + +/** + * Remove most spacing between table cells. + */ + +table { + border-collapse: collapse; + border-spacing: 0; +} diff --git a/branches/php7/dbfs.php b/branches/php7/dbfs.php new file mode 100644 index 0000000..50210ca --- /dev/null +++ b/branches/php7/dbfs.php @@ -0,0 +1,66 @@ + + * + * Requirements: + * @con_php_req 5 + * @con_template + * @con_notice + * + * + * @package ContenidoBackendArea + * @author unknown + * @copyright four for business AG + * @license http://www.contenido.org/license/LIZENZ.txt + * @link http://www.4fb.de + * @link http://www.contenido.org + * + * + * + * {@internal + * created unknown + * modified 2008-06-16, H. Librenz - Hotfix: checking for potential unsecure calling + * modified 2008-07-03, bilal arslan, added security fix + * modified 2010-05-20, Murat Purc, standardized Contenido startup and security check invocations, see [#CON-307] + * + * $Id: dbfs.php 450 2016-07-20 11:11:12Z oldperl $: + * }} + * + */ + +if (!defined("CON_FRAMEWORK")) { + define("CON_FRAMEWORK", true); +} + +$contenido_path = ''; +# include the config file of the frontend to init the Client and Language Id +include_once ("config.php"); + +// Contenido startup process +include_once ($contenido_path . 'includes/startup.php'); + +if ($contenido) +{ + page_open(array('sess' => 'Contenido_Session', + 'auth' => 'Contenido_Challenge_Crypt_Auth', + 'perm' => 'Contenido_Perm')); + +} else { + page_open(array('sess' => 'Contenido_Frontend_Session', + 'auth' => 'Contenido_Frontend_Challenge_Crypt_Auth', + 'perm' => 'Contenido_Perm')); +} + +/* Shorten load time */ +$client = $load_client; + +$dbfs = new DBFSCollection; +$dbfs->outputFile($file); + +page_close(); + +?> \ No newline at end of file diff --git a/branches/php7/error.php b/branches/php7/error.php new file mode 100644 index 0000000..e18b0eb --- /dev/null +++ b/branches/php7/error.php @@ -0,0 +1,13 @@ + + + Fehler + + + + + + + +  + + diff --git a/branches/php7/favicon.ico b/branches/php7/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..fbca42b7360bfad06a9e6b3f67fe35c3d7c81acc GIT binary patch literal 29038 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 aVvXMgvCXt&iUIsa2xFiHbYJcFL;f56R8$%O literal 0 HcmV?d00001 diff --git a/branches/php7/front_content.php b/branches/php7/front_content.php new file mode 100644 index 0000000..0fb2500 --- /dev/null +++ b/branches/php7/front_content.php @@ -0,0 +1,949 @@ + + * @license http://www.contenido.org/license/LIZENZ.txt + * @link http://www.4fb.de + * @link http://www.contenido.org + * @since file available since contenido release <= 4.6 + */ + +if (!defined("CON_FRAMEWORK")) { + define("CON_FRAMEWORK", true); +} + +$contenido_path = ''; +# include the config file of the frontend to init the Client and Language Id +include_once ("config.php"); + +# Contenido startup process +include_once ($contenido_path . 'includes/startup.php'); + +cInclude("includes", "functions.con.php"); +cInclude("includes", "functions.con2.php"); +cInclude("includes", "functions.api.php"); +cInclude("includes", "functions.pathresolver.php"); + +if ($cfg["use_pseudocron"] == true) +{ + /* Include cronjob-Emulator */ + $oldpwd = getcwd(); + chdir($cfg["path"]["contenido"].$cfg["path"]["cronjobs"]); + cInclude("includes", "pseudo-cron.inc.php"); + chdir($oldpwd); +} + +/* + * Initialize the Database Abstraction Layer, the Session, Authentication and Permissions Handler of the + * PHPLIB application development toolkit + * @see http://sourceforge.net/projects/phplib + */ +if ($contenido) +{ + //Backend + page_open(array ('sess' => 'Contenido_Session', 'auth' => 'Contenido_Challenge_Crypt_Auth', 'perm' => 'Contenido_Perm')); + i18nInit($cfg["path"]["contenido"].$cfg["path"]["locale"], $belang); +} +else +{ + //Frontend + page_open(array ('sess' => 'Contenido_Frontend_Session', 'auth' => 'Contenido_Frontend_Challenge_Crypt_Auth', 'perm' => 'Contenido_Perm')); +} + +/** + * Bugfix + * @see http://contenido.org/forum/viewtopic.php?t=18291 + * + * added by H. Librenz (2007-12-07) + */ +//includePluginConf(); +/** + * fixed bugfix - using functions brokes variable scopes! + * + * added by H. Librenz (2007-12-21) based on an idea of A. Lindner + */ +require_once $cfg['path']['contenido'] . $cfg['path']['includes'] . 'functions.includePluginConf.php'; + +$db = new DB_Contenido; + +$sess->register("cfgClient"); +$sess->register("errsite_idcat"); +$sess->register("errsite_idart"); +$sess->register("encoding"); + +if ($cfgClient["set"] != "set") +{ + rereadClients(); +} + +# Check if this request is for a compressed file +if ($_GET['action'] == 'get_compressed') { + # Get the calling parameters + $sFilename = ((isset($_GET['f'])) ? $_GET['f'] : $_GET['amp;f']); + $sContentType = ((isset($_GET['c'])) ? $_GET['c'] : $_GET['amp;c']); + + # Output the file using the class output() function + Output_Compressor::output($cfgClient[$client]['path']['frontend'] . 'cache/', $sFilename, $sContentType); + + # Don't do anything else + exit(); +} + +// Call hook after plugins are loaded, added by Murat Purc, 2008-09-07 +CEC_Hook::execute('Contenido.Frontend.AfterLoadPlugins'); + +if (!isset($encoding) || !is_array($encoding) || count($encoding) == 0) +{ + // get encodings of all languages + $encoding = array(); + $sql = "SELECT idlang, encoding FROM " . $cfg["tab"]["lang"]; + $db->query($sql); + while ($db->next_record()) { + $encoding[$db->f('idlang')] = $db->f('encoding'); + } +} + + +// Check frontend globals +// @TODO: Should be outsourced into startup process but requires a better detection (frontend or backend) +Contenido_Security::checkFrontendGlobals(); + + +// update urlbuilder set http base path +Contenido_Url::getInstance()->getUrlBuilder()->setHttpBasePath($cfgClient[$client]['htmlpath']['frontend']); + + +// Initialize language +if (!isset($lang)) { + + // if there is an entry load_lang in frontend/config.php use it, else use the first language of this client + if(isset($load_lang)){ + // load_client is set in frontend/config.php + $lang = $load_lang; + }else{ + + $sql = "SELECT + B.idlang + FROM + ".$cfg["tab"]["clients_lang"]." AS A, + ".$cfg["tab"]["lang"]." AS B + WHERE + A.idclient='".Contenido_Security::toInteger($client)."' AND + A.idlang = B.idlang + LIMIT + 0,1"; + + $db->query($sql); + $db->next_record(); + + $lang = $db->f("idlang"); + } +} + +if (!$sess->is_registered("lang") ) $sess->register("lang"); +if (!$sess->is_registered("client") ) $sess->register("client"); + +if (isset ($username)) +{ + $auth->login_if(true); +} + +/* + * Send HTTP header with encoding + */ +header("Content-Type: text/html; charset={$encoding[$lang]}"); + +/* + * if http global logout is set e.g. front_content.php?logout=true + * log out the current user. + */ +if (isset ($logout)) +{ + $auth->logout(true); + $auth->unauth(true); + $auth->auth["uname"] = "nobody"; +} + +/* + * local configuration + */ +if (file_exists("config.local.php")) +{ + @ include ("config.local.php"); +} + +/* + * If the path variable was passed, try to resolve it to a Category Id + * e.g. front_content.php?path=/company/products/ + */ +if (isset($path) && strlen($path) > 1) +{ + /* Which resolve method is configured? */ + if ($cfg["urlpathresolve"] == true) + { + + $iLangCheck = 0; + $idcat = prResolvePathViaURLNames($path, $iLangCheck); + + } + else + { + $iLangCheck = 0; + + $idcat = prResolvePathViaCategoryNames($path, $iLangCheck); + if(($lang != $iLangCheck) && ((int)$iLangCheck != 0)){ + $lang = $iLangCheck; + } + + } +} + +// error page +$aParams = array ( + 'client' => $client, 'idcat' => $errsite_idcat[$client], 'idart' => $errsite_idart[$client], + 'lang' => $lang, 'error'=> '1' +); +$errsite = 'Location: ' . Contenido_Url::getInstance()->buildRedirect($aParams); + + +/* + * Try to initialize variables $idcat, $idart, $idcatart, $idartlang + * Note: These variables can be set via http globals e.g. front_content.php?idcat=41&idart=34&idcatart=35&idartlang=42 + * If not the values will be computed. + */ +if ($idart && !$idcat && !$idcatart) +{ + /* Try to fetch the first idcat */ + $sql = "SELECT idcat FROM ".$cfg["tab"]["cat_art"]." WHERE idart = '".Contenido_Security::toInteger($idart)."'"; + $db->query($sql); + + if ($db->next_record()) + { + $idcat = $db->f("idcat"); + } +} + +unset ($code); +unset ($markscript); + +if (!$idcatart) +{ + if (!$idart) + { + if (!$idcat) + { + # Note: In earlier Contenido versions the information if an article is startarticle of a category has been stored + # in relation con_cat_art. + if ($cfg["is_start_compatible"] == true) + { + $sql = "SELECT + idart, + B.idcat + FROM + ".$cfg["tab"]["cat_art"]." AS A, + ".$cfg["tab"]["cat_tree"]." AS B, + ".$cfg["tab"]["cat"]." AS C + WHERE + A.idcat=B.idcat AND + B.idcat=C.idcat AND + is_start='1' AND + idclient='".Contenido_Security::toInteger($client)."' + ORDER BY + idtree ASC"; + } + else + { + # Note: Now the information if an article is startarticle of a category is stored in relation con_cat_lang. + $sql = "SELECT + A.idart, + B.idcat + FROM + ".$cfg["tab"]["cat_art"]." AS A, + ".$cfg["tab"]["cat_tree"]." AS B, + ".$cfg["tab"]["cat"]." AS C, + ".$cfg["tab"]["cat_lang"]." AS D, + ".$cfg["tab"]["art_lang"]." AS E + WHERE + A.idcat=B.idcat AND + B.idcat=C.idcat AND + D.startidartlang = E.idartlang AND + D.idlang='".Contenido_Security::toInteger($lang)."' AND + E.idart=A.idart AND + E.idlang='".Contenido_Security::toInteger($lang)."' AND + idclient='".Contenido_Security::toInteger($client)."' + ORDER BY + idtree ASC"; + } + + $db->query($sql); + + if ($db->next_record()) { + $idart = $db->f("idart"); + $idcat = $db->f("idcat"); + } else { + if($contenido) { + cInclude("includes", "functions.i18n.php"); + die(i18n("No start article for this category")); + } else { + if($error == 1) { + die("Fatal error: Could not display error page. Error to display was: 'No start article in this category'"); + } else { + header($errsite); + exit; + } + } + } + } else { + $idart = -1; + if ($cfg["is_start_compatible"] == true) + { + $sql = "SELECT idart FROM ".$cfg["tab"]["cat_art"]." WHERE idcat='".Contenido_Security::toInteger($idcat)."' AND is_start='1'"; + $db->query($sql); + + if ($db->next_record()) + { + $idart = $db->f("idart"); + } + } + else + { + $sql = "SELECT startidartlang FROM ".$cfg["tab"]["cat_lang"]." WHERE idcat='".Contenido_Security::toInteger($idcat)."' AND idlang='".Contenido_Security::toInteger($lang)."'"; + $db->query($sql); + + if ($db->next_record()) + { + if ($db->f("startidartlang") != 0) + { + $sql = "SELECT idart FROM ".$cfg["tab"]["art_lang"]." WHERE idartlang='".Contenido_Security::toInteger($db->f("startidartlang"))."'"; + $db->query($sql); + $db->next_record(); + $idart = $db->f("idart"); + } + } + } + + if ($idart != -1) + { + } + else + { + // error message in backend + if ($contenido) + { + cInclude("includes", "functions.i18n.php"); + die(i18n("No start article for this category")); + } + else + { + if ($error == 1) + { + echo "Fatal error: Could not display error page. Error to display was: 'No start article in this category'"; + } + else + { + header($errsite); + exit; + } + } + } + } + } +} +else +{ + $sql = "SELECT idcat, idart FROM ".$cfg["tab"]["cat_art"]." WHERE idcatart='".Contenido_Security::toInteger($idcatart)."'"; + + $db->query($sql); + $db->next_record(); + + $idcat = $db->f("idcat"); + $idart = $db->f("idart"); +} + +/* Get idcatart */ +if (0 != $idart && 0 != $idcat) +{ + $sql = "SELECT idcatart FROM ".$cfg["tab"]["cat_art"]." WHERE idart = '".Contenido_Security::toInteger($idart)."' AND idcat = '".Contenido_Security::toInteger($idcat)."'"; + + $db->query($sql); + $db->next_record(); + + $idcatart = $db->f("idcatart"); +} + +$idartlang = getArtLang($idart, $lang); + +if ($idartlang === false) +{ + header($errsite); + exit; +} + +/* + * removed database roundtrip for checking + * if cache is enabled + * CON-115 + * 2008-06-25 Thorsten Granz + */ +// START: concache, murat purc +if ($cfg["cache"]["disable"] != '1') { + cInclude('frontend', 'includes/concache.php'); + $oCacheHandler = new cConCacheHandler($GLOBALS['cfgConCache'], $db); + $oCacheHandler->start($iStartTime); // $iStartTime ist optional und ist die startzeit des scriptes, z. b. am anfang von fron_content.php +} +// END: concache + + +############################################## +# BACKEND / FRONTEND EDITING +############################################## + +/** + * If user has contenido-backend rights. + * $contenido <==> the cotenido backend session as http global + * In Backend: e.g. contenido/index.php?contenido=dac651142d6a6076247d3afe58c8f8f2 + * Can also be set via front_content.php?contenido=dac651142d6a6076247d3afe58c8f8f2 + * + * Note: In backend the file contenido/external/backendedit/front_content.php is included! + * The reason is to avoid cross-site scripting errors in the backend, if the backend domain differs from + * the frontend domain. + */ +if ($contenido) +{ + $perm->load_permissions(); + + /* Change mode edit / view */ + if (isset ($changeview)) + { + $sess->register("view"); + $view = $changeview; + } + + $col = new InUseCollection; + + if ($overrideid != "" && $overridetype != "") + { + $col->removeItemMarks($overridetype, $overrideid); + } + /* Remove all own marks */ + $col->removeSessionMarks($sess->id); + /* If the override flag is set, override a specific InUseItem */ + + list ($inUse, $message) = $col->checkAndMark("article", $idartlang, true, i18n("Article is in use by %s (%s)"), true, $cfg['path']['contenido_fullhtml']."external/backendedit/front_content.php?changeview=edit&action=con_editart&idartlang=$idartlang&type=$type&typenr=$typenr&idart=$idart&idcat=$idcat&idcatart=$idcatart&client=$client&lang=$lang"); + + $sHtmlInUse = ''; + $sHtmlInUseMessage = ''; + if ($inUse == true) + { + $disabled = 'disabled="disabled"'; + $sHtmlInUseCss = ''; + $sHtmlInUseMessage = $message; + } + + $sql = "SELECT locked FROM ".$cfg["tab"]["art_lang"]." WHERE idart='".Contenido_Security::toInteger($idart)."' AND idlang = '".Contenido_Security::toInteger($lang)."'"; + $db->query($sql); + $db->next_record(); + $locked = $db->f("locked"); + if ($locked == 1) + { + $inUse = true; + $disabled = 'disabled="disabled"'; + } + + // CEC to check if the user has permission to edit articles in this category + CEC_Hook::setBreakCondition(false, true); // break at "false", default value "true" + $allow = CEC_Hook::executeWhileBreakCondition( + 'Contenido.Frontend.AllowEdit', $lang, $idcat, $idart, $auth->auth['uid'] + ); + + if ($perm->have_perm_area_action_item("con_editcontent", "con_editart", $idcat) && $inUse == false && $allow == true) + { + /* Create buttons for editing */ + $edit_preview = ''; + + if ($view == "edit") + { + $edit_preview = ' + + + '; + } + else + { + $edit_preview = ' + + + '; + } + + /* Display articles */ + if ($cfg["is_start_compatible"] == true) + { + $sql = "SELECT idart, is_start FROM ".$cfg["tab"]["cat_art"]." WHERE idcat='".Contenido_Security::toInteger($idcat)."' ORDER BY idart"; + + $db->query($sql); + } + else + { + $sql = "SELECT idart FROM ".$cfg["tab"]["cat_art"]." WHERE idcat='".Contenido_Security::toInteger($idcat)."' ORDER BY idart"; + + $db->query($sql); + } + + $a = 1; + + $edit_preview .= '
+ Preview + + Preview +
+ Preview + + Edit +
Articles in category:
'; + + while ($db->next_record() && ($db->affected_rows() != 1)) + { + + $class = "font-family:'Verdana'; font-size:10; color:#000000; text-decoration: underline; font-weight:normal"; + if (!isset ($idart)) + { + if (isStartArticle(getArtLang($idart, $lang), $idcat, $lang)) + { + $class = "font-family: verdana; font-size:10; color:#000000; text-decoration: underline ;font-weight:bold"; + } + } + else + { + if ($idart == $db->f("idart")) + { + $class = "font-family: verdana; font-size:10; color:#000000; text-decoration: underline; font-weight:bold"; + } + } + + $edit_preview .= "url("front_content.php?idart=".$db->f("idart")."&idcat=$idcat")."\">$a "; + $a ++; + } + + $edit_preview .= '
'; + + } + +} // end if $contenido + + +/* If mode is 'edit' and user has permission to edit articles in the current category */ +if ($inUse == false && $allow == true && $view == "edit" && ($perm->have_perm_area_action_item("con_editcontent", "con_editart", $idcat))) +{ + cInclude("includes", "functions.tpl.php"); + cInclude("includes", "functions.con.php"); + include ($cfg["path"]["contenido"].$cfg["path"]["includes"]."include.con_editcontent.php"); +} +else +{ + +############################################## +# FRONTEND VIEW +############################################## + + /* Mark submenuitem 'Preview' in the Contenido Backend (Area: Contenido --> Articles --> Preview) */ + if ($contenido) + { + $markscript = markSubMenuItem(4, true); + } + + unset($edit); // disable editmode + + /* 'mode' is preview (Area: Contenido --> Articles --> Preview) or article displayed in the front-end */ + $sql = "SELECT + createcode + FROM + ".$cfg["tab"]["cat_art"]." + WHERE + idcat = '".Contenido_Security::toInteger($idcat)."' AND + idart = '".Contenido_Security::toInteger($idart)."'"; + + $db->query($sql); + $db->next_record(); + + ############################################## + # code generation + ############################################## + + /* Check if code is expired, create new code if needed */ + if($db->f("createcode") == 0 && $force == 0 && $cfg['dceModEdit']['use'] !== true && $cfg['dceLayEdit']['use'] !== true) { + $sql = "SELECT code FROM ".$cfg["tab"]["code"]." WHERE idcatart = '".Contenido_Security::toInteger($idcatart)."' AND idlang = '".Contenido_Security::toInteger($lang)."'"; + $db->query($sql); + + if ($db->num_rows() == 0) + { + /* Include here for performance reasons */ + cInclude("includes", "functions.tpl.php"); + + conGenerateCode($idcat, $idart, $lang, $client); + + $sql = "SELECT code FROM ".$cfg["tab"]["code"]." WHERE idcatart = '".Contenido_Security::toInteger($idcatart)."' AND idlang = '".Contenido_Security::toInteger($lang)."'"; + $db->query($sql); + } + + if ($db->next_record()) + { + $code = stripslashes($db->f("code")); + } + else + { + if ($contenido) + $code = "echo \"No code available.\";"; + else + { + if ($error == 1) + { + echo "Fatal error: Could not display error page. Error to display was: 'No code available'"; + } + else + { + header($errsite); + exit; + } + } + } + } else { + $sql = "DELETE FROM ".$cfg["tab"]["code"]." WHERE idcatart = '".Contenido_Security::toInteger($idcatart)."'"; + $db->query($sql); + + cInclude("includes", "functions.con.php"); + cInclude("includes", "functions.tpl.php"); + cInclude("includes", "functions.mod.php"); + + conGenerateCode($idcat, $idart, $lang, $client); + + $sql = "SELECT code FROM ".$cfg["tab"]["code"]." WHERE idcatart = '".Contenido_Security::toInteger($idcatart)."' AND idlang = '".Contenido_Security::toInteger($lang)."'"; + + $db->query($sql); + $db->next_record(); + + $code = stripslashes($db->f("code")); + } + + /* Add mark Script to code if user is in the backend */ + $code = preg_replace("/<\/head>/i", "$markscript\n", $code, 1); + + /* If article is in use, display notification */ + if ($sHtmlInUseCss && $sHtmlInUseMessage) { + $code = preg_replace("/<\/head>/i", "$sHtmlInUseCss\n", $code, 1); + $code = preg_replace("/(]*)>/i", "\${1}> \n $sHtmlInUseMessage", $code, 1); + } + + /* Check if category is public */ + $sql = "SELECT public FROM ".$cfg["tab"]["cat_lang"]." WHERE idcat='".Contenido_Security::toInteger($idcat)."' AND idlang='".Contenido_Security::toInteger($lang)."'"; + + $db->query($sql); + $db->next_record(); + + $public = $db->f("public"); + + ############################################## + # protected categories + ############################################## + if ($public == 0) + { + if ($auth->auth["uid"] == "nobody") + { + $sql = "SELECT user_id, value FROM ".$cfg["tab"]["user_prop"]." WHERE type='frontend' and name='allowed_ip'"; + $db->query($sql); + + while ($db->next_record()) + { + $user_id = $db->f("user_id"); + + $range = urldecode($db->f("value")); + $slash = strpos($range, "/"); + + if ($slash == false) + { + $netmask = "255.255.255.255"; + $network = $range; + } + else + { + $network = substr($range, 0, $slash); + $netmask = substr($range, $slash +1, strlen($range) - $slash -1); + } + + if (IP_match($network, $netmask, $_SERVER["REMOTE_ADDR"])) + { + $sql = "SELECT idright + FROM ".$cfg["tab"]["rights"]." AS A, + ".$cfg["tab"]["actions"]." AS B, + ".$cfg["tab"]["area"]." AS C + WHERE B.name = 'front_allow' AND C.name = 'str' AND A.user_id = '".Contenido_Security::escapeDB($user_id, $db2)."' AND A.idcat = '".Contenido_Security::toInteger($idcat)."' + AND A.idarea = C.idarea AND B.idaction = A.idaction"; + + $db2 = new DB_Contenido; + $db2->query($sql); + + if ($db2->num_rows() > 0) + { + $auth->auth["uid"] = $user_id; + $validated = 1; + } + } + } + if ($validated != 1) + { + // CEC to check category access + CEC_Hook::setBreakCondition(true, false); // break at "true", default value "false" + $allow = CEC_Hook::executeWhileBreakCondition( + 'Contenido.Frontend.CategoryAccess', $lang, $idcat, $auth->auth['uid'] + ); + $auth->login_if(!$allow); + } + } + else + { + // CEC to check category access + CEC_Hook::setBreakCondition(true, false); // break at "true", default value "false" + $allow = CEC_Hook::executeWhileBreakCondition( + 'Contenido.Frontend.CategoryAccess', $lang, $idcat, $auth->auth['uid'] + ); + + /* + added 2008-11-18 Timo Trautmann + in backendeditmode also check if logged in backenduser has permission to view preview of page + */ + if ($allow == false && $contenido && $perm->have_perm_area_action_item("con_editcontent", "con_editart", $idcat)) { + $allow = true; + } + + if (!$allow) + { + header($errsite); + exit; + } + } + } + + ############################################## + # statistic + ############################################## + $oStatCol = new cApiStatCollection(); + $oStatCol->trackView($idcatart); + + /* + * Check if an article is start article of the category + */ + if ($cfg["is_start_compatible"] == true) + { + $sql = "SELECT is_start FROM ".$cfg["tab"]["cat_art"]." WHERE idcatart='".Contenido_Security::toInteger($idcatart)."'"; + $db->query($sql); + $db->next_record(); + $isstart = $db->f("is_start"); + } + else + { + $sql = "SELECT startidartlang FROM ".$cfg["tab"]["cat_lang"]." WHERE idcat='".Contenido_Security::toInteger($idcat)."' AND idlang = '".Contenido_Security::toInteger($lang)."'"; + $db->query($sql); + $db->next_record(); + if ($db->f("idartlang") == $idartlang) + { + $isstart = 1; + } + else + { + $isstart = 0; + } + } + + ############################################## + # time management + ############################################## + $sql = "SELECT timemgmt FROM ".$cfg["tab"]["art_lang"]." WHERE idart='".Contenido_Security::toInteger($idart)."' AND idlang = '".Contenido_Security::toInteger($lang)."'"; + $db->query($sql); + $db->next_record(); + + if (($db->f("timemgmt") == "1") && ($isstart != 1)) + { + $sql = "SELECT online, redirect, redirect_url FROM ".$cfg["tab"]["art_lang"]." WHERE idart='".Contenido_Security::toInteger($idart)."' AND idlang = '".Contenido_Security::toInteger($lang)."' + AND NOW() > datestart AND NOW() < dateend"; + } + else + { + $sql = "SELECT online, redirect, redirect_url FROM ".$cfg["tab"]["art_lang"]." WHERE idart='".Contenido_Security::toInteger($idart)."' AND idlang = '".Contenido_Security::toInteger($lang)."'"; + } + + $db->query($sql); + $db->next_record(); + + $online = $db->f("online"); + $redirect = $db->f("redirect"); + $redirect_url = $db->f("redirect_url"); + + @ eval ("\$"."redirect_url = \"$redirect_url\";"); // transform variables + + $insert_base = getEffectiveSetting('generator', 'basehref', "true"); + + /* + * generate base url + */ + if ($insert_base == "true") + { + $is_XHTML = getEffectiveSetting('generator', 'xhtml', "false"); + + $str_base_uri = $cfgClient[$client]["path"]["htmlpath"]; + + // CEC for base href generation + $str_base_uri = CEC_Hook::executeAndReturn('Contenido.Frontend.BaseHrefGeneration', $str_base_uri); + + if ($is_XHTML == "true") { + $baseCode = ''; + } else { + $baseCode = ''; + } + + $code = str_ireplace_once("", "\n".$baseCode, $code); + } + + /* + * Handle online (offline) articles + */ + if ($online) + { + if ($redirect == '1' && $redirect_url != '') + { + page_close(); + /* + * Redirect to the URL defined in article properties + */ + $oUrl = Contenido_Url::getInstance(); + if ($oUrl->isIdentifiableFrontContentUrl($redirect_url)) { + // perform urlbuilding only for identified internal urls + $aUrl = $oUrl->parse($redirect_url); + if (!isset($aUrl['params']['lang'])) { + $aUrl['params']['lang'] = $lang; + } + $redirect_url = $oUrl->buildRedirect($aUrl['params']); + } + header("Location: $redirect_url"); + exit; + } + else + { + if ($cfg["debug"]["codeoutput"]) + { + echo ""; + } + + /* + * That's it! The code of an article will be evaluated. + * The code of an article is basically a PHP script which is cached in the database. + * Layout and Modules are merged depending on the Container definitions of the Template. + */ + + $aExclude = explode(',', getEffectiveSetting('frontend.no_outputbuffer', 'idart', '')); + if (in_array(Contenido_Security::toInteger($idart), $aExclude)) { + eval ("?>\n".$code."\n\n".$code."\n\n".$code."\nend(); + #echo $oCacheHandler->getInfo(); +} +// END: concache + +/* + * configuration settings after the site is displayed. + */ +if (file_exists("config.after.php")) +{ + @ include ("config.after.php"); +} + +if (isset ($savedlang)) +{ + $lang = $savedlang; +} + +$db->disconnect(); +page_close(); +?> \ No newline at end of file diff --git a/branches/php7/front_crcloginform.inc.php b/branches/php7/front_crcloginform.inc.php new file mode 100644 index 0000000..1dd27a8 --- /dev/null +++ b/branches/php7/front_crcloginform.inc.php @@ -0,0 +1,153 @@ + + * @license http://www.contenido.org/license/LIZENZ.txt + * @link http://www.4fb.de + * @link http://www.contenido.org + * + * $Id: front_crcloginform.inc.php 450 2016-07-20 11:11:12Z oldperl $: + */ + +/** + * security check + */ +if(!defined('CON_FRAMEWORK')) { + die('Illegal call'); +} + +global $cfg, $idcat, $idart, $idcatart, $lang, $client, $username, $encoding; + +$err_catart = trim(getEffectiveSetting("login_error_page", "idcatart", "")); +$err_cat = trim(getEffectiveSetting("login_error_page", "idcat", "")); +$err_art = trim(getEffectiveSetting("login_error_page", "idart", "")); + +$oUrl = Contenido_Url::getInstance(); + +$sClientHtmlPath = $cfgClient[$client]['path']['htmlpath']; + +$sUrl = $sClientHtmlPath . 'front_content.php'; + +$sErrorUrl = $sUrl; +$bRedirect = false; + +if ($err_catart != '') { + $sErrorUrl .= '?idcatart=' . $err_catart . '&lang=' . $lang; + $bRedirect = true; +} elseif ($err_art != '' && $err_cat != '') { + $sErrorUrl .= '?idcat=' . $err_cat . '&idart=' . $err_art . '&lang=' . $lang; + $bRedirect = true; +} elseif ($err_cat != '') { + $sErrorUrl .= '?idcat=' . $err_cat . '&lang=' . $lang; + $bRedirect = true; +} elseif ($err_art != '') { + $sErrorUrl .= '?idart=' . $err_art . '&lang=' . $lang; + $bRedirect = true; +} + +if ($bRedirect) { + $aUrl = $oUrl->parse($sess->url($sErrorUrl)); + $sErrorUrl = $oUrl->buildRedirect($aUrl['params']); + header('Location: ' . $sErrorUrl); + exit(); +} + +if (isset($_GET['return']) || isset($_POST['return'])){ + $aLocator = array('lang=' . (int) $lang); + + if ($idcat > 0) { + $aLocator[] = 'idcat=' . intval($idcat); + } + if ($idart > 0) { + $aLocator[] = 'idart=' . intval($idart); + } + if (isset($_POST['username']) || isset($_GET['username'])){ + $aLocator[] = 'wrongpass=1'; + } + + $sErrorUrl = $sUrl . '?' . implode('&', $aLocator); + $aUrl = $oUrl->parse($sess->url($sErrorUrl)); + $sErrorUrl = $oUrl->buildRedirect($aUrl['params']); + header ('Location: ' . $sErrorUrl); + exit(); +} + +// set form action +$sFormAction = $sess->url($sUrl . '?idcat=' . intval($idcat) . '&lang=' . $lang); +$aUrl = $oUrl->parse($sFormAction); +$sFormAction = $oUrl->build($aUrl['params']); + +// set login input image, use button as fallback +if ( file_exists($cfgClient[$client]['path']['frontend'] . 'images/but_ok.gif') ) { + $sLoginButton = '' . "\n"; +} else { + $sLoginButton = '' . "\n"; +} + +?> + + + + + :: :: :: :: Contenido Login + + + + + +
+
+ + + +
Login
+
+
+
+
+
+
+
+ +
+
+
+ + + + \ No newline at end of file diff --git a/branches/php7/images/SimpleGallery/ClosePopup.png b/branches/php7/images/SimpleGallery/ClosePopup.png new file mode 100644 index 0000000000000000000000000000000000000000..d3881e4050510e6ede06ccf00baf0a6906275a9e GIT binary patch literal 2704 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 literal 0 HcmV?d00001 diff --git a/branches/php7/images/SimpleGallery/NaviLeftDisabled.png b/branches/php7/images/SimpleGallery/NaviLeftDisabled.png new file mode 100644 index 0000000000000000000000000000000000000000..2ffddf96d3eb3d7c6f6f33576ca50f0374ef6955 GIT binary patch literal 1106 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 UMt|TnsXaYC3a#Rw(F z>k4#G!V&XDFdq^EN=0@k6b;*<5vPBpAP{|&6-qvo2`Ly>$`)bqRybu!>p&*+|3d|W zk7x<(1ODyze+otp7OX^(~}#l+%w*i!462Jt#zaU5qp}Cs~w_La8+~=nj6;p_Z%w z7h~4;b|#_sw}8@epTV8!701(~FzJ|zm_|m=p??K<9WHd5Ova)&mwz6b;4LfuJUG~| z_~}#Hblaod!Oh>+!U7u=&FG+nS2y5GGnnEssi#fVnyQA@R15P#t9;Bv(tTl6HY$6* zmcaAR%*;$AiCq35q0*a|$lywQXw@x`lvuL5y86ll-y1 z-t(H8nj#DabKCQs+UCs{xP-xo+RXAULqo$RDjsiC8I+t;SDBPC7@QK;{osMDL z!i-!lce@N8(J0Nz%j@DtM!GlD*FWi5k=j0%T>nnxHkC?U+mkev(HnkwGQr@p=V&9N zG3*y5J ztX{E2jbB<~hlBt{jg0~BYDs(p^k7nzr|qV;^p;P48t(5uppkI@o64BNk`n$S49?rw z=3r-M=lsOPL`zp!S5IA+gAKKC?P`UJ>C!^LIakv!ckR+0!s=hSJ32aAUt3Fz!Qk!} znUqg0E?+x;UhjTKM@M6KcX~#~PgAqAHaE4loV|4i+M=$0CO$r%o^kQbiKWuD%{k>0 zp{4tJ^nci|K^kc#G~BMN)ES#DlOMaLrLDa>`Nj4Dmt|K(|BkwTt0$8=BAy5u`YMvR za-+C-lGhOUZn)`WsPtrhmira=dYeR<%r=!F&#jn7qlu`5pMP`iE%14I;Br;VsZ(2x zcBjS;>t+@g7gMkOGS>cV+W&@`x29=ybaX3+nJRVM@69^s>gw9$>E>pQlOL}P5M|?E zoz{Be*9Y|N*s)_tekoCJj-S%<`=N4TLtP!KzNx7@R=>i_ye%y)?I?I7E4b&5<7=H{ z`qb3aK@NxW)#BT??TxQ1SS%K`ZS|hQ*NpXux78Rt1t%Y+jE+lnrt(h-<;NX`}IZXw!GZjKN~kW|G1i@ zJ`gl@Se+r$Wm*hV{aGv$=9EiqkP2Kb#X7d}*d9sj9NF^F zaG$<`!LYZl@9R1jlc9#gmX>-0{r#zNYLVa1cn?)0*+n3?N1Nqh9?Ro7kKrqIo3!(w zvf^Ut`RweQW8nrqvvwzw%3m3q58s`ipTCNf^7@6g*%vQPl$Dm6pM05zA{BZY?Rr<@ zw|h}bMei7a)M}AKZ2q-Zk#X8t_2)Qn^e7B3lnm6C9O&Gusi|4>$12pf0@NK3R(;e@ z$#yO(DtcH|RduAg)c47^mAZ*P*gZ6+uTY8K)5bf#{?hLHQJKoHj-g?Nm4(F-xhc;q zN5zlqm@j+2Nm1l)nV6fCv(k46p!+7;Q&9P4aS1}9m11GRrenN%aw0KXeNe%;)SKl` ndUZRS9&I+0YJb*kZCeNmm*;?IZJ*^T|LzPY4|;`TNYZ}+S!{y{ literal 0 HcmV?d00001 diff --git a/branches/php7/images/SimpleGallery/PopupImageNaviRight.png b/branches/php7/images/SimpleGallery/PopupImageNaviRight.png new file mode 100644 index 0000000000000000000000000000000000000000..9be9ee5e3464909faa1b52f7ba663987b1a90a89 GIT binary patch literal 2162 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 B7G?kd literal 0 HcmV?d00001 diff --git a/branches/php7/images/glyphicons-halflings.png b/branches/php7/images/glyphicons-halflings.png new file mode 100644 index 0000000000000000000000000000000000000000..a9969993201f9cee63cf9f49217646347297b643 GIT binary patch literal 12799 zcma*OWmH^Ivn@*S;K3nSf_t!#;0f+&pm7Po8`nk}2q8f5;M%x$SdAkd9FAvlc$ zx660V9e3Ox@4WZ^?7jZ%QFGU-T~%||Ug4iK6bbQY@zBuF2$hxOw9wF=A)nUSxR_5@ zEX>HBryGrjyuOFFv$Y4<+|3H@gQfEqD<)+}a~mryD|1U9*I_FOG&F%+Ww{SJ-V2BR zjt<81Ek$}Yb*95D4RS0HCps|uLyovt;P05hchQb-u2bzLtmog&f2}1VlNhxXV);S9 zM2buBg~!q9PtF)&KGRgf3#z7B(hm5WlNClaCWFs!-P!4-u*u5+=+D|ZE9e`KvhTHT zJBnLwGM%!u&vlE%1ytJ=!xt~y_YkFLQb6bS!E+s8l7PiPGSt9xrmg?LV&&SL?J~cI zS(e9TF1?SGyh+M_p@o1dyWu7o7_6p;N6hO!;4~ z2B`I;y`;$ZdtBpvK5%oQ^p4eR2L)BH>B$FQeC*t)c`L71gXHPUa|vyu`Bnz)H$ZcXGve(}XvR!+*8a>BLV;+ryG1kt0=)ytl zNJxFUN{V7P?#|Cp85QTa@(*Q3%K-R(Pkv1N8YU*(d(Y}9?PQ(j;NzWoEVWRD-~H$=f>j9~PN^BM2okI(gY-&_&BCV6RP&I$FnSEM3d=0fCxbxA6~l>54-upTrw zYgX@%m>jsSGi`0cQt6b8cX~+02IghVlNblR7eI;0ps}mpWUcxty1yG56C5rh%ep(X z?)#2d?C<4t-KLc*EAn>>M8%HvC1TyBSoPNg(4id~H8JwO#I)Bf;N*y6ai6K9_bA`4 z_g9(-R;qyH&6I$`b42v|0V3Z8IXN*p*8g$gE98+JpXNY+jXxU0zsR^W$#V=KP z3AEFp@OL}WqwOfsV<)A^UTF4&HF1vQecz?LWE@p^Z2){=KEC_3Iopx_eS42>DeiDG zWMXGbYfG~W7C8s@@m<_?#Gqk;!&)_Key@^0xJxrJahv{B&{^!>TV7TEDZlP|$=ZCz zmX=ZWtt4QZKx**)lQQoW8y-XLiOQy#T`2t}p6l*S`68ojyH@UXJ-b~@tN`WpjF z%7%Yzv807gsO!v=!(2uR)16!&U5~VPrPHtGzUU?2w(b1Xchq}(5Ed^G|SD7IG+kvgyVksU) z(0R)SW1V(>&q2nM%Z!C9=;pTg!(8pPSc%H01urXmQI6Gi^dkYCYfu6b4^tW))b^U+ z$2K&iOgN_OU7n#GC2jgiXU{caO5hZt0(>k+c^(r><#m|#J^s?zA6pi;^#*rp&;aqL zRcZi0Q4HhVX3$ybclxo4FFJW*`IV`)Bj_L3rQe?5{wLJh168Ve1jZv+f1D}f0S$N= zm4i|9cEWz&C9~ZI3q*gwWH^<6sBWuphgy@S3Qy?MJiL>gwd|E<2h9-$3;gT9V~S6r z)cAcmE0KXOwDA5eJ02-75d~f?3;n7a9d_xPBJaO;Z)#@s7gk5$Qn(Fc^w@9c5W0zY z59is0?Mt^@Rolcn{4%)Ioat(kxQH6}hIykSA)zht=9F_W*D#<}N(k&&;k;&gKkWIL z0Of*sP=X(Uyu$Pw;?F@?j{}=>{aSHFcii#78FC^6JGrg-)!)MV4AKz>pXnhVgTgx8 z1&5Y=>|8RGA6++FrSy=__k_imx|z-EI@foKi>tK0Hq2LetjUotCgk2QFXaej!BWYL zJc{fv(&qA7UUJ|AXLc5z*_NW#yWzKtl(c8mEW{A>5Hj^gfZ^HC9lQNQ?RowXjmuCj4!!54Us1=hY z0{@-phvC}yls!PmA~_z>Y&n&IW9FQcj}9(OLO-t^NN$c0o}YksCUWt|DV(MJB%%Sr zdf}8!9ylU2TW!=T{?)g-ojAMKc>3pW;KiZ7f0;&g)k}K^#HBhE5ot)%oxq$*$W@b# zg4p<Ou`ME|Kd1WHK@8 zzLD+0(NHWa`B{em3Ye?@aVsEi>y#0XVZfaFuq#;X5C3{*ikRx7UY4FF{ZtNHNO?A_ z#Q?hwRv~D8fPEc%B5E-ZMI&TAmikl||EERumQCRh7p;)>fdZMxvKq;ky0}7IjhJph zW*uuu*(Y6)S;Od--8uR^R#sb$cmFCnPcj9PPCWhPN;n`i1Q#Qn>ii z{WR|0>8F`vf&#E(c2NsoH=I7Cd-FV|%(7a`i}gZw4N~QFFG2WtS^H%@c?%9UZ+kez z;PwGgg_r6V>Kn5n(nZ40P4qMyrCP3bDkJp@hp6&X3>gzC>=f@Hsen<%I~7W+x@}b> z0}Et*vx_50-q@PIV=(3&Tbm}}QRo*FP2@)A#XX-8jYspIhah`9ukPBr)$8>Tmtg&R z?JBoH17?+1@Y@r>anoKPQ}F8o9?vhcG79Cjv^V6ct709VOQwg{c0Q#rBSsSmK3Q;O zBpNihl3S0_IGVE)^`#94#j~$;7+u870yWiV$@={|GrBmuz4b)*bCOPkaN0{6$MvazOEBxFdKZDlbVvv{8_*kJ zfE6C`4&Kkz<5u%dEdStd85-5UHG5IOWbo8i9azgg#zw-(P1AA049hddAB*UdG3Vn0 zX`OgM+EM|<+KhJ<=k?z~WA5waVj?T9eBdfJGebVifBKS1u<$#vl^BvSg)xsnT5Aw_ZY#}v*LXO#htB>f}x3qDdDHoFeb zAq7;0CW;XJ`d&G*9V)@H&739DpfWYzdQt+Kx_E1K#Cg1EMtFa8eQRk_JuUdHD*2;W zR~XFnl!L2A?48O;_iqCVr1oxEXvOIiN_9CUVTZs3C~P+11}ebyTRLACiJuMIG#`xP zKlC|E(S@QvN+%pBc6vPiQS8KgQAUh75C0a2xcPQDD$}*bM&z~g8+=9ltmkT$;c;s z5_=8%i0H^fEAOQbHXf0;?DN5z-5+1 zDxj50yYkz4ox9p$HbZ|H?8ukAbLE^P$@h}L%i6QVcY>)i!w=hkv2zvrduut%!8>6b zcus3bh1w~L804EZ*s96?GB&F7c5?m?|t$-tp2rKMy>F*=4;w*jW}^;8v`st&8)c; z2Ct2{)?S(Z;@_mjAEjb8x=qAQvx=}S6l9?~H?PmP`-xu;ME*B8sm|!h@BX4>u(xg_ zIHmQzp4Tgf*J}Y=8STR5_s)GKcmgV!$JKTg@LO402{{Wrg>#D4-L%vjmtJ4r?p&$F!o-BOf7ej~ z6)BuK^^g1b#(E>$s`t3i13{6-mmSp7{;QkeG5v}GAN&lM2lQT$@(aQCcFP(%UyZbF z#$HLTqGT^@F#A29b0HqiJsRJAlh8kngU`BDI6 zJUE~&!cQ*&f95Ot$#mxU5+*^$qg_DWNdfu+1irglB7yDglzH()2!@#rpu)^3S8weW z_FE$=j^GTY*|5SH95O8o8W9FluYwB=2PwtbW|JG6kcV^dMVmX(wG+Otj;E$%gfu^K z!t~<3??8=()WQSycsBKy24>NjRtuZ>zxJIED;YXaUz$@0z4rl+TW zWxmvM$%4jYIpO>j5k1t1&}1VKM~s!eLsCVQ`TTjn3JRXZD~>GM z$-IT~(Y)flNqDkC%DfbxaV9?QuWCV&-U1yzrV@0jRhE;)ZO0=r-{s@W?HOFbRHDDV zq;eLo+wOW;nI|#mNf(J?RImB9{YSO2Y`9825Lz#u4(nk3)RGv3X8B(A$TsontJ8L! z9JP^eWxtKC?G8^xAZa1HECx*rp35s!^%;&@Jyk)NexVc)@U4$^X1Dag6`WKs|(HhZ#rzO2KEw3xh~-0<;|zcs0L>OcO#YYX{SN8m6`9pp+ zQG@q$I)T?aoe#AoR@%om_#z=c@ych!bj~lV13Qi-xg$i$hXEAB#l=t7QWENGbma4L zbBf*X*4oNYZUd_;1{Ln_ZeAwQv4z?n9$eoxJeI?lU9^!AB2Y~AwOSq67dT9ADZ)s@ zCRYS7W$Zpkdx$3T>7$I%3EI2ik~m!f7&$Djpt6kZqDWZJ-G{*_eXs*B8$1R4+I}Kf zqniwCI64r;>h2Lu{0c(#Atn)%E8&)=0S4BMhq9$`vu|Ct;^ur~gL`bD>J@l)P$q_A zO7b3HGOUG`vgH{}&&AgrFy%K^>? z>wf**coZ2vdSDcNYSm~dZ(vk6&m6bVKmVgrx-X<>{QzA!)2*L+HLTQz$e8UcB&Djq zl)-%s$ZtUN-R!4ZiG=L0#_P=BbUyH+YPmFl_ogkkQ$=s@T1v}rNnZ^eMaqJ|quc+6 z*ygceDOrldsL30w`H;rNu+IjlS+G~p&0SawXCA1+D zC%cZtjUkLNq%FadtHE?O(yQTP486A{1x<{krq#rpauNQaeyhM3*i0%tBpQHQo-u)x z{0{&KS`>}vf2_}b160XZO2$b)cyrHq7ZSeiSbRvaxnKUH{Q`-P(nL&^fcF2){vhN- zbX&WEjP7?b4A%0y6n_=m%l00uZ+}mCYO(!x?j$+O$*TqoD_Q5EoyDJ?w?^UIa491H zE}87(bR`X;@u#3Qy~9wWdWQIg1`cXrk$x9=ccR|RY1~%{fAJ@uq@J3e872x0v$hmv ze_KcL(wM|n0EOp;t{hKoohYyDmYO;!`7^Lx;0k=PWPGZpI>V5qYlzjSL_(%|mud50 z7#{p97s`U|Sn$WYF>-i{i4`kzlrV6a<}=72q2sAT7Zh{>P%*6B;Zl;~0xWymt10Mo zl5{bmR(wJefJpNGK=fSRP|mpCI-)Nf6?Pv==FcFmpSwF1%CTOucV{yqxSyx4Zws3O z8hr5Uyd%ezIO7?PnEO0T%af#KOiXD$e?V&OX-B|ZX-YsgSs%sv-6U+sLPuz{D4bq| zpd&|o5tNCmpT>(uIbRf?8c}d3IpOb3sn6>_dr*26R#ev<_~vi)wleW$PX|5)$_ z+_|=pi(0D(AB_sjQ;sQQSM&AWqzDO1@NHw;C9cPdXRKRI#@nUW)CgFxzQ1nyd!+h& zcjU!U=&u|>@}R(9D$%lu2TlV>@I2-n@fCr5PrZNVyKWR7hm zWjoy^p7v8m#$qN0K#8jT- zq`mSirDZDa1Jxm;Rg3rAPhC)LcI4@-RvKT+@9&KsR3b0_0zuM!Fg7u>oF>3bzOxZPU&$ab$Z9@ zY)f7pKh22I7ZykL{YsdjcqeN++=0a}elQM-4;Q)(`Ep3|VFHqnXOh14`!Bus& z9w%*EWK6AiAM{s$6~SEQS;A>ey$#`7)khZvamem{P?>k)5&7Sl&&NXKk}o!%vd;-! zpo2p-_h^b$DNBO>{h4JdGB=D>fvGIYN8v&XsfxU~VaefL?q} z3ekM?iOKkCzQHkBkhg=hD!@&(L}FcHKoa zbZ7)H1C|lHjwEb@tu=n^OvdHOo7o+W`0-y3KdP#bb~wM=Vr_gyoEq|#B?$&d$tals ziIs-&7isBpvS|CjC|7C&3I0SE?~`a%g~$PI%;au^cUp@ER3?mn-|vyu!$7MV6(uvt z+CcGuM(Ku2&G0tcRCo7#D$Dirfqef2qPOE5I)oCGzmR5G!o#Q~(k~)c=LpIfrhHQk zeAva6MilEifE7rgP1M7AyWmLOXK}i8?=z2;N=no)`IGm#y%aGE>-FN zyXCp0Sln{IsfOBuCdE*#@CQof%jzuU*jkR*Su3?5t}F(#g0BD0Zzu|1MDes8U7f9; z$JBg|mqTXt`muZ8=Z`3wx$uizZG_7>GI7tcfOHW`C2bKxNOR)XAwRkLOaHS4xwlH4 zDpU29#6wLXI;H?0Se`SRa&I_QmI{zo7p%uveBZ0KZKd9H6@U?YGArbfm)D*^5=&Rp z`k{35?Z5GbZnv>z@NmJ%+sx=1WanWg)8r}C_>EGR8mk(NR$pW<-l8OTU^_u3M@gwS z7}GGa1)`z5G|DZirw;FB@VhH7Dq*0qc=|9lLe{w2#`g+_nt>_%o<~9(VZe=zI*SSz4w43-_o>4E4`M@NPKTWZuQJs)?KXbWp1M zimd5F;?AP(LWcaI-^Sl{`~>tmxsQB9Y$Xi*{Zr#py_+I$vx7@NY`S?HFfS!hUiz$a z{>!&e1(16T!Om)m)&k1W#*d#GslD^4!TwiF2WjFBvi=Ms!ADT)ArEW6zfVuIXcXVk z>AHjPADW+mJzY`_Ieq(s?jbk4iD2Rb8*V3t6?I+E06(K8H!!xnDzO%GB;Z$N-{M|B zeT`jo%9)s%op*XZKDd6*)-^lWO{#RaIGFdBH+;XXjI(8RxpBc~azG1H^2v7c^bkFE zZCVPE+E*Q=FSe8Vm&6|^3ki{9~qafiMAf7i4APZg>b%&5>nT@pHH z%O*pOv(77?ZiT{W zBibx}Q12tRc7Py1NcZTp`Q4ey%T_nj@1WKg5Fz_Rjl4wlJQj)rtp8yL3r!Shy zvZvnmh!tH4T6Js-?vI0<-rzzl{mgT*S0d_7^AU_8gBg^03o-J=p(1o6kww2hx|!%T z-jqp}m^G*W?$!R#M%Ef?&2jYxmx+lXWZszpI4d$pUN`(S)|*c^CgdwY>Fa>> zgGBJhwe8y#Xd*q0=@SLEgPF>+Qe4?%E*v{a`||luZ~&dqMBrRfJ{SDMaJ!s_;cSJp zSqZHXIdc@@XteNySUZs^9SG7xK`8=NBNM)fRVOjw)D^)w%L2OPkTQ$Tel-J)GD3=YXy+F4in(ILy*A3m@3o73uv?JC}Q>f zrY&8SWmesiba0|3X-jmlMT3 z*ST|_U@O=i*sM_*48G)dgXqlwoFp5G6qSM3&%_f_*n!PiT>?cNI)fAUkA{qWnqdMi+aNK_yVQ&lx4UZknAc9FIzVk% zo6JmFH~c{_tK!gt4+o2>)zoP{sR}!!vfRjI=13!z5}ijMFQ4a4?QIg-BE4T6!#%?d&L;`j5=a`4is>U;%@Rd~ zXC~H7eGQhhYWhMPWf9znDbYIgwud(6$W3e>$W4$~d%qoJ z+JE`1g$qJ%>b|z*xCKenmpV$0pM=Gl-Y*LT8K+P)2X#;XYEFF4mRbc~jj?DM@(1e`nL=F4Syv)TKIePQUz)bZ?Bi3@G@HO$Aps1DvDGkYF50O$_welu^cL7;vPiMGho74$;4fDqKbE{U zd1h{;LfM#Fb|Z&uH~Rm_J)R~Vy4b;1?tW_A)Iz#S_=F|~pISaVkCnQ0&u%Yz%o#|! zS-TSg87LUfFSs{tTuM3$!06ZzH&MFtG)X-l7>3)V?Txuj2HyG*5u;EY2_5vU0ujA? zHXh5G%6e3y7v?AjhyX79pnRBVr}RmPmtrxoB7lkxEzChX^(vKd+sLh?SBic=Q)5nA zdz7Mw3_iA>;T^_Kl~?1|5t%GZ;ki_+i>Q~Q1EVdKZ)$Sh3LM@ea&D~{2HOG++7*wF zAC6jW4>fa~!Vp5+$Z{<)Qxb|{unMgCv2)@%3j=7)Zc%U<^i|SAF88s!A^+Xs!OASYT%7;Jx?olg_6NFP1475N z#0s<@E~FI}#LNQ{?B1;t+N$2k*`K$Hxb%#8tRQi*Z#No0J}Pl;HWb){l7{A8(pu#@ zfE-OTvEreoz1+p`9sUI%Y{e5L-oTP_^NkgpYhZjp&ykinnW;(fu1;ttpSsgYM8ABX4dHe_HxU+%M(D=~) zYM}XUJ5guZ;=_ZcOsC`_{CiU$zN3$+x&5C`vX-V3`8&RjlBs^rf00MNYZW+jCd~7N z%{jJuUUwY(M`8$`B>K&_48!Li682ZaRknMgQ3~dnlp8C?__!P2z@=Auv;T^$yrsNy zCARmaA@^Yo2sS%2$`031-+h9KMZsIHfB>s@}>Y(z988e!`%4=EDoAQ0kbk>+lCoK60Mx9P!~I zlq~wf7kcm_NFImt3ZYlE(b3O1K^QWiFb$V^a2Jlwvm(!XYx<`i@ZMS3UwFt{;x+-v zhx{m=m;4dgvkKp5{*lfSN3o^keSpp9{hlXj%=}e_7Ou{Yiw(J@NXuh*;pL6@$HsfB zh?v+r^cp@jQ4EspC#RqpwPY(}_SS$wZ{S959`C25777&sgtNh%XTCo9VHJC-G z;;wi9{-iv+ETiY;K9qvlEc04f;ZnUP>cUL_T*ms``EtGoP^B#Q>n2dSrbAg8a>*Lg zd0EJ^=tdW~7fbcLFsqryFEcy*-8!?;n%;F+8i{eZyCDaiYxghr z$8k>L|2&-!lhvuVdk!r-kpSFl`5F5d4DJr%M4-qOy3gdmQbqF1=aBtRM7)c_Ae?$b8 zQg4c8*KQ{XJmL)1c7#0Yn0#PTMEs4-IHPjkn0!=;JdhMXqzMLeh`yOylXROP- zl#z3+fwM9l3%VN(6R77ua*uI9%hO7l7{+Hcbr(peh;afUK?B4EC09J{-u{mv)+u#? zdKVBCPt`eU@IzL)OXA`Ebu`Xp?u0m%h&X41}FNfnJ*g1!1wcbbpo%F4x!-#R9ft!8{5`Ho}04?FI#Kg zL|k`tF1t_`ywdy8(wnTut>HND(qNnq%Sq=AvvZbXnLx|mJhi!*&lwG2g|edBdVgLy zjvVTKHAx(+&P;P#2Xobo7_RttUi)Nllc}}hX>|N?-u5g7VJ-NNdwYcaOG?NK=5)}` zMtOL;o|i0mSKm(UI_7BL_^6HnVOTkuPI6y@ZLR(H?c1cr-_ouSLp{5!bx^DiKd*Yb z{K78Ci&Twup zTKm)ioN|wcYy%Qnwb)IzbH>W!;Ah5Zdm_jRY`+VRJ2 zhkspZ9hbK3iQD91A$d!0*-1i#%x81|s+SPRmD}d~<1p6!A13(!vABP2kNgqEG z?AMgl^P+iRoIY(9@_I?n1829lGvAsRnHwS~|5vD2+Zi53j<5N4wNn0{q>>jF9*bI) zL$kMXM-awNOElF>{?Jr^tOz1glbwaD-M0OKOlTeW3C!1ZyxRbB>8JDof(O&R1bh%3x#>y2~<>OXO#IIedH0Q`(&&?eo-c~ z>*Ah#3~09unym~UC-UFqqI>{dmUD$Y4@evG#ORLI*{ZM)Jl=e1it!XzY($S3V zLG!Y6fCjE>x6r@5FG1n|8ompSZaJ>9)q6jqU;XxCQk9zV(?C9+i*>w z21+KYt1gXX&0`x3E)hS7I5}snbBzox9C@Xzcr|{B8Hw;SY1$}&BoYKXH^hpjW-RgJ z-Fb}tannKCv>y~^`r|(1Q9;+sZlYf3XPSX|^gR01UFtu$B*R;$sPZdIZShRr>|b@J z;#G{EdoY+O;REEjQ}X7_YzWLO+Ey3>a_KDe1CjSe| z6arqcEZ)CX!8r(si`dqbF$uu&pnf^Np{1f*TdJ`r2;@SaZ z#hb4xlaCA@Pwqj#LlUEe5L{I$k(Zj$d3(~)u(F%&xb8={N9hKxlZIO1ABsM{Mt|)2 zJ^t9Id;?%4PfR4&Ph9B9cFK~@tG3wlFW-0fXZS_L4U*EiAA%+`h%q2^6BCC;t0iO4V=s4Qug{M|iDV@s zC7|ef-dxiR7T&Mpre!%hiUhHM%3Qxi$Lzw6&(Tvlx9QA_7LhYq<(o~=Y>3ka-zrQa zhGpfFK@)#)rtfz61w35^sN1=IFw&Oc!Nah+8@qhJ0UEGr;JplaxOGI82OVqZHsqfX ze1}r{jy;G?&}Da}a7>SCDsFDuzuseeCKof|Dz2BPsP8? zY;a)Tkr2P~0^2BeO?wnzF_Ul-ekY=-w26VnU%U3f19Z-pj&2 z4J_a|o4Dci+MO)mPQIM>kdPG1xydiR9@#8m zh27D7GF{p|a{8({Q-Pr-;#jV{2zHR>lGoFtIfIpoMo?exuQyX_A;;l0AP4!)JEM$EwMInZkj+8*IHP4vKRd zKx_l-i*>A*C@{u%ct`y~s6MWAfO{@FPIX&sg8H{GMDc{4M3%$@c8&RAlw0-R<4DO3 trJqdc$mBpWeznn?E0M$F`|3v=`3%T2A17h;rxP7$%JLd=6(2u;`(N3pt&so# literal 0 HcmV?d00001 diff --git a/branches/php7/images/ico/apple-touch-icon-114-precomposed.png b/branches/php7/images/ico/apple-touch-icon-114-precomposed.png new file mode 100644 index 0000000000000000000000000000000000000000..dbd92fa5d6b8b70817457f70207c8d25c8081e7b GIT binary patch literal 9686 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 literal 0 HcmV?d00001 diff --git a/branches/php7/images/ico/apple-touch-icon-57-precomposed.png b/branches/php7/images/ico/apple-touch-icon-57-precomposed.png new file mode 100644 index 0000000000000000000000000000000000000000..17a7748c348b45b2516e835bb9de24ace254f3ec GIT binary patch literal 2752 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 literal 0 HcmV?d00001 diff --git a/branches/php7/images/ico/apple-touch-icon-72-precomposed.png b/branches/php7/images/ico/apple-touch-icon-72-precomposed.png new file mode 100644 index 0000000000000000000000000000000000000000..da2b86c071de00104ffdeee83a8046efa5cfd957 GIT binary patch literal 5609 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 KhL>vEk^cu)uQz%C literal 0 HcmV?d00001 diff --git a/branches/php7/images/ico/social_icons_sprite.png b/branches/php7/images/ico/social_icons_sprite.png new file mode 100644 index 0000000000000000000000000000000000000000..f79efb10eb937527439779905747faa65f76349e GIT binary patch literal 26603 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 mqN4)*>)ro%vq2_9wEqM0zKDvz%!G9S0000 diff --git a/branches/php7/images/logo-small.png b/branches/php7/images/logo-small.png new file mode 100644 index 0000000000000000000000000000000000000000..f9bc9dd6651cf84140c6beb93d51b7c38705b868 GIT binary patch literal 3455 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 literal 0 HcmV?d00001 diff --git a/branches/php7/images/logo.png b/branches/php7/images/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..edcf5ec63eefc087319bc372bc7b33e858bc0bdc GIT binary patch literal 10376 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 Zf|%uCf?Wv(;IDrJ6=YRqK1-Q}{0~sER + * + * $Id: Contenido_NavMain_Util.class.php 450 2016-07-20 11:11:12Z oldperl $ + */ + +class Contenido_NavMain_Util { + /** + * Recursive Loop over all (sub)categories. + * Each level will be assigned a css class navmainStandardLevel_x + * + * @param Contenido_Category $oCategory + * @param Contenido_FrontendNavigation $oFrontendNavigation + * @param Template $oTpl + * @param string $sUrlStyle + * @param array $aCfg + * @param int $iLang + * @param array $aLevelInfo Information for marking active cat per levels + * @param array $aDepthInfo Info on level depth / where to stop. Format: array(iCurrentLoopCount, iMaxLoopCount) + * @return void + */ + public static function loopCats(Contenido_Category $oCategory, Contenido_FrontendNavigation $oFrontendNavigation, Template $oTpl, array $aCfg, $iLang, array $aLevelInfo, $iCurrentPageIdcat, array $aDepthInfo = array()) { + $aDepthInfo[0] = isset($aDepthInfo[0]) ? $aDepthInfo[0] + 1 : 1; + $aDepthInfo[1] = isset($aDepthInfo[1]) ? $aDepthInfo[1] : 1; + // display current item + $iItemLevel = $oFrontendNavigation->getLevel($oCategory->getIdCat()); + if (!isset($aLevelInfo[$oCategory->getIdCat()])) { + $aLevelInfo[$oCategory->getIdCat()] = array(); + } + $oCurrentSubcategories = $oFrontendNavigation->getSubCategories($oCategory->getIdCat()); + $aLevelInfo[$oCategory->getIdCat()]['has_children'] = $oCurrentSubcategories->count() > 0; + $aLevelInfo[$oCategory->getIdCat()]['first_child_item'] = -1; + $aLevelInfo[$oCategory->getIdCat()]['last_child_item'] = -1; + $bMarkActive = $oCategory->getIdCat() == $iCurrentPageIdcat || $oFrontendNavigation->isInPathToRoot($oCategory->getIdCat(), $iCurrentPageIdcat); + if ($oCurrentSubcategories->count() > 0) { + $aLevelInfo[$oCategory->getIdCat()]['first_child_item'] = $oCurrentSubcategories[0]->getIdCat(); + $aLevelInfo[$oCategory->getIdCat()]['last_child_item'] = $oCurrentSubcategories[$oCurrentSubcategories->count()-1]->getIdCat(); + } + // this is just for sample client - modify to your needs! + if (($aCfg['url_builder']['name'] == 'front_content') || ($aCfg['url_builder']['name'] == 'MR')) { + $aParams = array('lang' => $iLang, 'idcat' => $oCategory->getIdCat()); + } else { + $aParams = array('a' => $oCategory->getIdCat(), + 'idcat' => $oCategory->getIdCat(), // needed to build category path + 'lang' => $iLang, // needed to build category path + 'level' => 1); // needed to build category path + } + // fill template with values + $oTpl->set('d', 'name', $oCategory->getCategoryLanguage()->getName()); + $oTpl->set('d', 'css_level', $iItemLevel); + $oTpl->set('d', 'css_first_item', ($aLevelInfo[$oCategory->getIdParent()]['first_child_item'] == $oCategory->getIdCat() ? ' first' : '')); + $oTpl->set('d', 'css_last_item', ($aLevelInfo[$oCategory->getIdParent()]['last_child_item'] == $oCategory->getIdCat() ? ' last' : '')); + $oTpl->set('d', 'css_active_item', ($bMarkActive === true ? ' active' : '')); + try { + $oTpl->set('d', 'url', Contenido_Url::getInstance()->build($aParams)); + } catch (InvalidArgumentException $e) { + $oTpl->set('d', 'url', '#'); + } + $oTpl->next(); + // continue until max level depth + if ($aDepthInfo[1] > $aDepthInfo[0]) { + // check if current item has sub-items to be displayed + $bShowFollowUps = ($oCategory->getIdCat() == $iCurrentPageIdcat || $oFrontendNavigation->isInPathToRoot($oCategory->getIdCat(), $iCurrentPageIdcat)) + ? true : false; + if ($bShowFollowUps === true && $oCurrentSubcategories->count() > 0) { + $oSubCategories = $oCurrentSubcategories; + foreach ($oSubCategories as $oSubCategory) { + self::loopCats($oSubCategory, $oFrontendNavigation, $oTpl, $aCfg, $iLang, $aLevelInfo, $iCurrentPageIdcat, $aDepthInfo); + } + } + } + } +} +?> \ No newline at end of file diff --git a/branches/php7/includes/Util/Modules/Contenido_Sitemap_Util.class.php b/branches/php7/includes/Util/Modules/Contenido_Sitemap_Util.class.php new file mode 100644 index 0000000..3fc3b1b --- /dev/null +++ b/branches/php7/includes/Util/Modules/Contenido_Sitemap_Util.class.php @@ -0,0 +1,66 @@ + + * + * $Id: Contenido_Sitemap_Util.class.php 450 2016-07-20 11:11:12Z oldperl $ + */ +class Contenido_Sitemap_Util { + /** + * Recursive Loop over all (sub)categories. + * Each level will be assigned a css class sitemapStandardLevel_x + * + * @param Contenido_Category $oCategory + * @param Contenido_FrontendNavigation $oFrontendNavigation + * @param Template $oTpl + * @param string $sUrlStyle + * @param array $aCfg + * @param int $iLang + * @param array $aDepthInfo Info on level depth / where to stop. Format: array(iCurrentLoopCount, iMaxLoopCount) + * @return void + */ + public static function loopCats(Contenido_Category $oCategory, Contenido_FrontendNavigation $oFrontendNavigation, Template $oTpl, $sUrlStyle, array $aCfg, $iLang, array $aDepthInfo = array()) { + $aDepthInfo[0] = isset($aDepthInfo[0]) ? $aDepthInfo[0] + 1 : 1; + $aDepthInfo[1] = isset($aDepthInfo[1]) ? $aDepthInfo[1] : 1; + // display current item + $iItemLevel = $oFrontendNavigation->getLevel($oCategory->getIdCat()); + // this is just for sample client - modify to your needs! + if (($aCfg['url_builder']['name'] == 'front_content') || ($aCfg['url_builder']['name'] == 'MR')) { + $aParams = array('lang' => $iLang, 'idcat' => $oCategory->getIdCat()); + } else { + $aParams = array('a' => $oCategory->getIdCat(), + 'idcat' => $oCategory->getIdCat(), // needed to build category path + 'lang' => $iLang, // needed to build category path + 'level' => 1); // needed to build category path + } + // fill template with values + $oTpl->set('d', 'name', $oCategory->getCategoryLanguage()->getName()); + $oTpl->set('d', 'css_level', $iItemLevel); + try { + $oTpl->set('d', 'url', Contenido_Url::getInstance()->build($aParams)); + } catch (InvalidArgumentException $e) { + $oTpl->set('d', 'url', '#'); + } + $oTpl->next(); + // continue until max level depth + if ($aDepthInfo[1] > $aDepthInfo[0]) { + // check if current item has sub-items + $oSubCategories = $oFrontendNavigation->getSubCategories($oCategory->getIdCat()); + if ($oSubCategories->count() > 0) { + foreach ($oSubCategories as $oSubCategory) { + self::loopCats($oSubCategory, $oFrontendNavigation, $oTpl, $sUrlStyle, $aCfg, $iLang, $aDepthInfo); + } + } + } + } +} +?> \ No newline at end of file diff --git a/branches/php7/includes/class.concache.php b/branches/php7/includes/class.concache.php new file mode 100644 index 0000000..72cadcc --- /dev/null +++ b/branches/php7/includes/class.concache.php @@ -0,0 +1,531 @@ + + * @copyright four for business AG + * @license http://www.contenido.org/license/LIZENZ.txt + * @link http://www.4fb.de + * @link http://www.contenido.org + * + * $Id: class.concache.php 450 2016-07-20 11:11:12Z oldperl $: + */ + +if(!defined('CON_FRAMEWORK')) { + die('Illegal call'); +} + +class cConCache{ + + /** + * PEAR Cache Output Object + * + * @var obj $_oPearCache + */ + var $_oPearCache; + + /** + * Flag 2 activate caching. + * + * @var bool $_bEnableCaching + */ + var $_bEnableCaching = false; + + /** + * Flag for output of debug informations. + * + * @var bool $_bDebug + */ + var $_bDebug = false; + + /** + * Flag 2 print html comment including some debug informations. + * + * @var bool $_bHtmlComment + */ + var $_bHtmlComment = false; + + /** + * Start time of caching. + * + * @var int $_iStartTime + */ + var $_iStartTime; + + /** + * Option array 4 generating cache identifier (e. g. $_GET,$_POST, $_COOKIE, ...). + * + * @var array _aIDOptions + */ + var $_aIDOptions; + + /** + * Option array 4 pear caching. + * + * @var array $_aIDOptions + */ + var $_aCacheOptions; + + /** + * Handler array 2 store code, beeing executed on some events. + * We have actually two events: + * - 'beforeoutput': code to execute before doing the output + * - 'afteroutput' code to execute after output + * + * @var array $_aEventCode + */ + var $_aEventCode; + + /** + * Unique identifier for caching. + * + * @var string $_sID + */ + var $_sID; + + /** + * Directory 2 store cached output. + * + * @var string $_sDir + */ + var $_sDir = 'cache/'; + + /** + * Subdirectory 2 store cached output. + * + * @var string $_sGroup + */ + var $_sGroup = 'default'; + + /** + * Substring 2 add as prefix to cache-filename. + * + * @var string $_sPrefix + */ + var $_sPrefix = 'cache_'; + + /** + * Default lifetime of cached files. + * + * @var int $_iLifetime + */ + var $_iLifetime = 3600; + + /** + * Used 2 store debug message. + * + * @var string $_sDebugMsg + */ + var $_sDebugMsg = ''; + + /** + * HTML code template used for debug message. + * + * @var string $_sDebugTpl + */ + var $_sDebugTpl = '

%s
'; + + /** + * HTML comment template used for generating some debug infos. + * + * @var string $_sDebugTpl + */ + var $_sHtmlCommentTpl = ' + +'; + + /** + * Constructor of cConCache + * + * @param string $cachedir Directory 2 cache files + * @param string $cachegroup Subdirectory 2 cache files + * @param string $cacheprefix Prefixname 2 add 2 cached files + */ + function cConCache($cachedir=null, $cachegroup=null, $cacheprefix=null){ + // wherever you want the cache files + if(!is_null($cachedir)){ + $this->_sDir = $cachedir; + } + + // subdirectory where you want the cache files + if(!is_null($cachegroup)){ + $this->_sGroup = $cachegroup; + } + + // optional a filename prefix + if(!is_null($cacheprefix)){ + $this->_sPrefix = $cacheprefix; + } + + // config options are passed to the cache as an array + $this->_aCacheOptions = array('cache_dir' => $this->_sDir, 'filename_prefix' => $this->_sPrefix); + + } // function cConCache() + + + /** + * Set/Get the flag 2 enable caching. + * + * @param bool $enable True 2 enable chaching or false + * @return mixed Enable flag or void + */ + function enable($enable=null){ + if(!is_null($enable) && is_bool($enable)){ + $this->_bEnableCaching = $enable; + } else { + return $this->_bEnableCaching; + } + } // function enable() + + + /** + * Set/Get the flag 2 debug cache object (prints out miss/hit state with execution time). + * + * @param bool $debug True 2 activate debugging or false. + * @return mixed Debug flag or void + */ + function debug($debug){ + if(!is_null($debug) && is_bool($debug)){ + $this->_bDebug = $debug; + } else { + return $this->_bDebug; + } + } // function debug() + + + /** + * Set/Get flag 2 print out cache info as html comment. + * + * @param bool $htmlcomment True debugging or false. + * @return void Htmlcomment flag or void + */ + function htmlComment($htmlcomment){ + if(!is_null($htmlcomment) && is_bool($htmlcomment)){ + $this->_bHtmlComment = $htmlcomment; + } else { + return $this->_bHtmlComment; + } + } // function htmlComment() + + + /** + * Set/Get caching lifetime in seconds. + * + * @param int $seconds New Lifetime in seconds + * @return mixed Actual lifetime or void + */ + function lifetime($seconds=null){ + if ($seconds != null && is_numeric($seconds) && $seconds > 0) { + $this->_iLifetime = $seconds; + } else { + return $this->_iLifetime; + } + } // function lifetime() + + + /** + * Set/Get template to use on printing the chache info. + * + * @param string $template Template string including the '%s' format definition. + * @return void + */ + function infoTemplate($template){ + $this->_sDebugTpl = $template; + } // function infoTemplate() + + + /** + * Add option 4 caching (e. g. $_GET,$_POST, $_COOKIE, ...). Used 2 generate the id for caching. + * + * @param string $name Name of option + * @param string $option Value of option (any variable) + * @return void + */ + function addOption($name, $option){ + $this->_aIDOptions[$name] = $option; + } // function addOption() + + + /** + * Returns information cache hit/miss and execution time if caching is enabled. + * + * @return string Information about cache if caching is enabled, otherwhise nothing. + */ + function getInfo(){ + if(!$this->_bEnableCaching){ return; } + return $this->_sDebugMsg; + } // function getInfo() + + + /** + * Handles PEAR caching. The script will be terminated by calling die(), if any cached + * content is found. + * + * @param int $iPageStartTime Optional start time, e. g. start time of main script + * @return void + */ + function start($iPageStartTime=null){ + if(!$this->_bEnableCaching){ return; } + + $this->_iStartTime = $this->_getMicroTime(); + + // set cache object and unique id + $this->_initPEARCache(); + + // check if it's cached and start the output buffering if neccessary + if ($content = $this->_oPearCache->start($this->_sID, $this->_sGroup)) { + + //raise beforeoutput event + $this->_raiseEvent('beforeoutput'); + + $iEndTime = $this->_getMicroTime(); + if ($this->_bHtmlComment) { + $time = sprintf("%2.4f", $iEndTime - $this->_iStartTime); + $exp = date('Y-m-d H:i:s', $this->_oPearCache->container->expires); + $content .= sprintf($this->_sHtmlCommentTpl, 'HIT', $time.' sec.', $exp); + if ($iPageStartTime != null && is_numeric($iPageStartTime)) { + $content .= ''; + } + } + + if ($this->_bDebug) { + $info = sprintf("HIT: %2.4f sec.", $iEndTime - $this->_iStartTime); + $info = sprintf($this->_sDebugTpl, $info); + $content = str_ireplace('', $info."\n", $content); + } + + echo $content; + + //raise afteroutput event + $this->_raiseEvent('afteroutput'); + + die(); + } + } // function start() + + + /** + * Handles ending of PEAR caching. + * + * @return void + */ + function end(){ + if (!$this->_bEnableCaching){ return; } + + // this might go into your auto_append file. store the data into the cache, default lifetime is set in $this->_iLifetime + $this->_oPearCache->endPrint($this->_iLifetime, __FILE__ . ' ' . filemtime(__FILE__)); + + if ($this->_bDebug) { + $this->_sDebugMsg .= "\n".sprintf("MISS: %2.4f sec.\n", $this->_getMicroTime() - $this->_iStartTime); + $this->_sDebugMsg = sprintf($this->_sDebugTpl, $this->_sDebugMsg); + } + } // function end() + + + /** + * Removes any cached content if exists. + * This is nesessary to delete cached articles, if they are changed on backend. + * + * @return void + */ + function removeFromCache(){ + // set cache object and unique id + $this->_initPEARCache(); + $bExists = $this->_oPearCache->isCached($this->_sID, $this->_sGroup); + if ($bExists) { + $this->_oPearCache->remove($this->_sID, $this->_sGroup); + } + } // function removeFromCache() + + + /* + * Creates one-time a instance of PEAR cache output object and also the unique id, + * if propery $this->_oPearCache is not set. + * + * @return void + * @access private + */ + function _initPEARCache(){ + if (is_object($this->_oPearCache)) { + return; + } + + // create a output cache object mode - file storage + cInclude('pear', 'Cache/Output.php'); + $this->_oPearCache = new Cache_Output('file', $this->_aCacheOptions); + + // generate an ID from whatever might influence the script behavoiur + $this->_sID = $this->_oPearCache->generateID($this->_aIDOptions); + } // function _initPEARCache() + + + /** + * Raises any defined event code by using eval(). + * + * @param string $name Name of event 2 raise + * @return void + * @access private + */ + function _raiseEvent($name){ + // check if event exists, get out if not + if (!isset($this->_aEventCode[$name]) && !is_array($this->_aEventCode[$name])) { + return; + } + + // loop array and execute each defined php-code + foreach ($this->_aEventCode[$name] as $code) { + eval($code); + } + + } // function _raiseEvent() + + + /** + * Returns microtime (Unix-Timestamp), used to calculate time of execution. + * + * @return float Timestamp + * @access private + */ + function _getMicroTime(){ + $mtime = explode(' ', microtime()); + $mtime = $mtime[1] + $mtime[0]; + return $mtime; + } // function _getMicroTime() + +} // class cConCache + + + +/** +* @class cConCacheHandler +* @brief Class cConCacheHandler. This is used to set configuration +* and to manage caching output +* @version 0.9 +* @date 07.07.2006 +* @author Murat Purc +* @copyright � Murat Purc 2006 +*/ +class cConCacheHandler extends cConCache { + + /** + * Constructor of cConCacheHandler. + * Does some checks and sets the configuration of cache object. + * + * @param array $aConf Configuration of caching as follows: + * - $a['excludecontenido'] bool. don't cache output, if we have a contenido variable, + * e. g. on calling frontend preview from backend + * - $a['enable'] bool. activate caching of frontend output + * - $a['debug'] bool. compose debuginfo (hit/miss and execution time of caching) + * - $a['infotemplate'] string. debug information template + * - $a['htmlcomment'] bool. add a html comment including several debug messages to output + * - $a['lifetime'] int. lifetime in seconds 2 cache output + * - $a['cachedir'] string. directory where cached content is 2 store. + * - $a['cachegroup'] string. cache group, will be a subdirectory inside cachedir + * - $a['cacheprefix'] string. add prefix 2 stored filenames + * - $a['idoptions'] array. several variables 2 create a unique id, if the output depends + * on them. e. g. array('uri'=>$_SERVER['REQUEST_URI'],'post'=>$_POST,'get'=>$_GET); + * @param obj $db Reference 2 Contenido database object + * @param int $iCreateCode Flag of createcode state from table con_cat_art + */ + function cConCacheHandler($aConf, &$db, $iCreateCode=null) { + + // check if caching is allowed on contenido variable + if ($aConf['excludecontenido'] == true) { + if (isset($GLOBALS['contenido'])) { + // contenido variable exists, set state and get out here + $this->_bEnableCaching = false; + return; + } + } + + // set enable state of caching + if (is_bool($aConf['enable'])) { + $this->_bEnableCaching = $aConf['enable']; + } + if ($this->_bEnableCaching == false) { + return; + } + + // check if current article shouldn't be cached (by stese) + $sExcludeIdarts = getEffectiveSetting('cache', 'excludeidarts', false); + if ($sExcludeIdarts && strlen($sExcludeIdarts)>0) { + $sExcludeIdarts = preg_replace("/[^0-9,]/", '', $sExcludeIdarts); + $aExcludeIdart = explode(',', $sExcludeIdarts); + if (in_array($GLOBALS['idart'], $aExcludeIdart)) { + $this->_bEnableCaching = false; + return; + } + } + + $this->_oDB = $db; + + // set caching configuration + parent::cConCache($aConf['cachedir'], $aConf['cachegroup']); + $this->debug($aConf['debug']); + $this->htmlComment($aConf['htmlcomment']); + $this->lifetime($aConf['lifetime']); + $this->infoTemplate($aConf['infotemplate']); + foreach ($aConf['idoptions'] as $name => $var) { + $this->addOption($name, $var); + } + + if (is_array($aConf['raiseonevent'])) { + $this->_aEventCode = $aConf['raiseonevent']; + } + + // check, if code is to create + $this->_bEnableCaching = !$this->_isCode2Create($iCreateCode); + if ($this->_bEnableCaching == false) { + $this->removeFromCache(); + } + + } // function cConCacheHandler() + + + /** + * Checks, if the create code flag is set. Output will be loaded from cache, if no code is 2 create. + * It also checks the state of global variable $force. + * + * @param mixed $iCreateCode State of create code (0 or 1). The state will be loaded from database if value is "null" + * @return bool True if code is to create, otherwhise false. + * @access private + */ + function _isCode2Create($iCreateCode){ + if ($this->_bEnableCaching == false) { + return; + } + + // check content of global variable $force, get out if is's set to '1' + if (isset($GLOBALS['force']) && is_numeric($GLOBALS['force']) && $GLOBALS['force'] == 1) { + return true; + } + + if (is_null($iCreateCode)) { + // check if code is expired + + $oApiCatArtColl = new cApiCategoryArticleCollection('idart="'.$GLOBALS['idart'].'" AND idcat="'.$GLOBALS['idcat'].'"'); + if ($oApiCatArt = $oApiCatArtColl->next()) { + $iCreateCode = $oApiCatArt->get('createcode'); + unset($oApiCatArt); + } + unset($oApiCatArtColl); + } + + return ($iCreateCode == 1) ? true : false; + } // function _isCode2Create() + + +} // class cConCacheHandler + +?> \ No newline at end of file diff --git a/branches/php7/includes/class.input.helper.php b/branches/php7/includes/class.input.helper.php new file mode 100644 index 0000000..fc7b816 --- /dev/null +++ b/branches/php7/includes/class.input.helper.php @@ -0,0 +1,573 @@ + + * @license http://www.contenido.org/license/LIZENZ.txt + * @link http://www.4fb.de + * @link http://www.contenido.org + * + * $Id: class.input.helper.php 450 2016-07-20 11:11:12Z oldperl $: + */ + +if(!defined('CON_FRAMEWORK')) { + die('Illegal call'); +} + +// Select box with additional functions for category and article selection +class cHTMLInputSelectElement extends cHTMLSelectElement +{ + /** + * Constructor. Creates an HTML select field (aka "DropDown"). + * + * @param string $sName Name of the element + * @param int $iWidth Width of the select element + * @param string $sID ID of the element + * @param string $bDisabled Item disabled flag (non-empty to set disabled) + * @param int $iTabIndex Tab index for form elements + * @param string $sAccesskey Key to access the field + * + * @return none + **/ + function cHTMLInputSelectElement ($sName, $iWidth = "", $sID = "", $bDisabled = false, $iTabIndex = null, $sAccessKey = "") + { + cHTMLSelectElement :: __construct($sName, $iWidth, $sID, $bDisabled, $iTabIndex, $sAccessKey); + } + + + /** + * Function addArticles. Adds articles to select box values. + * + * @param int $iIDCat idcat of the category to be listed + * @param bool $bColored Add color information to option elements + * @param bool $bArtOnline If true, only online articles will be added + * @param string $sSpaces Just some " " to show data hierarchically (used in conjunction with addCategories) + * + * @return int Number of items added + **/ + function addArticles ($iIDCat, $bColored = false, $bArtOnline = true, $sSpaces = "") + { + global $cfg, $lang; + + $oDB = new DB_Contenido; + + if (is_numeric($iIDCat) && $iIDCat > 0) + { + $sSQL = "SELECT tblArtLang.title AS title, tblArtLang.idartlang AS idartlang, tblCatArt.idcat AS idcat, "; + $sSQL .= "tblCatArt.idcatart AS idcatart, tblCatArt.is_start AS isstart, tblArtLang.online AS online, "; + $sSQL .= "tblCatLang.startidartlang as idstartartlang "; + $sSQL .= "FROM ".$cfg["tab"]["art_lang"]." AS tblArtLang, ".$cfg["tab"]["cat_art"]." AS tblCatArt, "; + $sSQL .= $cfg["tab"]["cat_lang"]." AS tblCatLang "; + $sSQL .= "WHERE tblCatArt.idcat = '".Contenido_Security::toInteger($iIDCat)."' AND tblCatLang.idcat = tblCatArt.idcat AND tblCatLang.idlang = tblArtLang.idlang AND "; + + if ($bArtOnline) { + $sSQL .= "tblArtLang.online = '1' AND "; + } + + $sSQL .= "tblArtLang.idart = tblCatArt.idart AND tblArtLang.idlang = '".Contenido_Security::escapeDB($lang, $oDB)."' "; + if ($cfg["is_start_compatible"] == true) { + $sSQL .= "ORDER BY tblCatArt.is_start DESC, tblArtLang.title"; // Getting start article as first article + } else { + $sSQL .= "ORDER BY tblArtLang.title"; + } + + $oDB->query($sSQL); + + $iCount = $oDB->num_rows(); + if ($iCount == 0) { + return 0; + } else { + $iCounter = count($this->_options); + while ($oDB->next_record()) + { + // Generate new option element + $oOption = new cHTMLOptionElement($sSpaces."   ".substr(urldecode($oDB->f("title")), 0, 32), $oDB->f("idcatart")); + + if ($bColored) + { + $bIsStartArticle = false; + if ($cfg["is_start_compatible"] == true && $oDB->f("isstart") == 1) { + // Compatible mode and "start article" flag is set + $bIsStartArticle = true; + } else if ($cfg["is_start_compatible"] != true && $oDB->f("idstartartlang") == $oDB->f("idartlang")) { + // No compatible mode and current article is start article (idstartartlang is the same for all records within a category) + $bIsStartArticle = true; + } + + if ($bIsStartArticle) + { + if ($oDB->f("online") == 0) { + // Start article, but offline -> red + $oOption->setStyle("color: #ff0000;"); + } else { + // Start article -> blue + $oOption->setStyle("color: #0000ff;"); + } + } else if ($oDB->f("online") == 0) { + // Offline article -> grey + $oOption->setStyle("color: #666666;"); + } + } + + // Add option element to the list + $this->addOptionElement($iCounter, $oOption); + $iCounter++; + } + return $iCount; + } + } else { + return 0; + } + } + + /** + * Function addCategories. Adds category elements (optionally including articles) to select box values. + * Note: Using "with articles" adds the articles also - but the categories will get a negative value! + * There is no way to distinguish between a category id and an article id... + * + * @param int $iMaxLevel Max. level shown (to be exact: except this level) + * @param bool $bColored Add color information to option elements + * @param bool $bCatVisible If true, only add idcat as value, if cat is visible + * @param bool $bCatPublic If true, only add idcat as value, if cat is public + * @param bool $bWithArt Add also articles per category + * @param bool $bArtOnline If true, show only online articles + * + * @return int Number of items added + **/ + function addCategories ($iMaxLevel = 0, $bColored = false, $bCatVisible = true, $bCatPublic = true, + $bWithArt = false, $bArtOnline = true) + { + global $cfg, $client, $lang; + + $oDB = new DB_Contenido; + + $sSQL = "SELECT tblCat.idcat AS idcat, tblCatLang.name AS name, "; + $sSQL .= "tblCatLang.visible AS visible, tblCatLang.public AS public, tblCatTree.level AS level "; + $sSQL .= "FROM ".$cfg["tab"]["cat"]." AS tblCat, ".$cfg["tab"]["cat_lang"]." AS tblCatLang, "; + $sSQL .= $cfg["tab"]["cat_tree"]." AS tblCatTree "; + $sSQL .= "WHERE tblCat.idclient = '".Contenido_Security::escapeDB($client, $oDB)."' AND tblCatLang.idlang = '".Contenido_Security::escapeDB($lang, $oDB)."' AND "; + $sSQL .= "tblCatLang.idcat = tblCat.idcat AND tblCatTree.idcat = tblCat.idcat "; + + if ($iMaxLevel > 0) { + $sSQL .= "AND tblCatTree.level < '".Contenido_Security::escapeDB($iMaxLevel, $oDB)."' "; + } + $sSQL .= "ORDER BY tblCatTree.idtree"; + + $oDB->query($sSQL); + + $iCount = $oDB->num_rows(); + if ($iCount == 0) { + return false; + } else { + $iCounter = count($this->_options); + while ($oDB->next_record()) + { + $sSpaces = ""; + $sStyle = ""; + $iID = $oDB->f("idcat"); + + for ($i = 0; $i < $oDB->f("level"); $i++) { + $sSpaces .= "   "; + } + + // Generate new option element + if (($bCatVisible && $oDB->f("visible") == 0) || + ($bCatPublic && $oDB->f("public") == 0)) { + // If category has to be visible or public and it isn't, don't add value + $sValue = ""; + } else if ($bWithArt) { + // If article will be added, set negative idcat as value + $sValue = "-".$iID; + } else { + // Show only categories - and everything is fine... + $sValue = $iID; + } + $oOption = new cHTMLOptionElement($sSpaces."> ".urldecode($oDB->f("name")), $sValue); + + // Coloring option element, restricted shows grey color + $oOption->setStyle("background-color: #EFEFEF"); + if ($bColored && ($oDB->f("visible") == 0 || $oDB->f("public") == 0)) { + $oOption->setStyle("color: #666666;"); + } + + // Add option element to the list + $this->addOptionElement($iCounter, $oOption); + + if ($bWithArt) { + $iArticles = $this->addArticles($iID, $bColored, $bArtOnline, $sSpaces); + $iCount += $iArticles; + } + $iCounter = count($this->_options); + } + } + return $iCount; + } + + /** + * Function addTypesFromArt. Adds types and type ids which are available for the specified article + * + * @param int $iIDCatArt Article id + * @param string $sTypeRange Komma separated list of Contenido type ids which may be in the resulting list (e.g. '1','17','28') + * + * @return int Number of items added + **/ + function addTypesFromArt ($iIDCatArt, $sTypeRange = "") + { + global $cfg, $lang; + + $oDB = new DB_Contenido; + + if (is_numeric($iIDCatArt) && $iIDCatArt > 0) + { + $sSQL = "SELECT tblContent.typeid AS typeid, tblContent.idtype AS idtype, tblType.type AS type, tblType.description AS description, "; + $sSQL .= "tblContent.value AS value "; + $sSQL .= "FROM ".$cfg["tab"]["content"]." AS tblContent, ".$cfg["tab"]["art_lang"]." AS tblArtLang, "; + $sSQL .= $cfg["tab"]["cat_art"]." AS tblCatArt, ".$cfg["tab"]["type"]." AS tblType "; + $sSQL .= "WHERE tblContent.idtype = tblType.idtype AND tblContent.idartlang = tblArtLang.idartlang AND "; + $sSQL .= "tblArtLang.idart = tblCatArt.idart AND tblArtLang.idlang = '". Contenido_Security::escapeDB($lang, $oDB)."' AND tblCatArt.idcatart = '". Contenido_Security::toInteger($iIDCatArt)."' "; + + if ($sTypeRange != "") { + $sSQL .= "AND tblContent.idtype IN (". Contenido_Security::escapeDB($sTypeRange, $oDB).") "; + } + + $sql .= "ORDER BY tblContent.idtype, tblContent.typeid"; + + $oDB->query($sSQL); + + $iCount = $oDB->num_rows(); + if ($iCount == 0) { + return false; + } else { + while ($oDB->next_record()) + { + $sTypeIdentifier = "tblData.idtype = '".$oDB->f('idtype')."' AND tblData.typeid = '".$oDB->f('typeid')."'"; + + // Generate new option element + $oOption = new cHTMLOptionElement($oDB->f('type')."[".$oDB->f('typeid')."]: ".substr(strip_tags(urldecode($oDB->f("value"))), 0, 50), $sTypeIdentifier); + + // Add option element to the list + $this->addOptionElement($sTypeIdentifier, $oOption); + } + return $iCount; + } + } else { + return false; + } + } + + /** + * Selects specified elements as selected + * + * @param array $aElements Array with "values" of the cHTMLOptionElement to set + * + * @return none + */ + function setSelected($aElements) + { + if (is_array($this->_options) && is_array($aElements)) + { + foreach ($this->_options as $sKey => $oOption) + { + if (in_array($oOption->getAttribute("value"), $aElements)) + { + $oOption->setSelected(true); + $this->_options[$sKey] = $oOption; + } else { + $oOption->setSelected(false); + $this->_options[$sKey] = $oOption; + } + } + } + } +} + +class UI_Config_Table +{ + var $_sTplCellCode; + var $_sTplTableFile; + + var $_sWidth; + var $_sBorder; + var $_sBorderColor; + var $_bSolidBorder; + var $_sPadding; + var $_aCells; + var $_aCellAlignment; + var $_aCellVAlignment; + var $_aCellColSpan; + var $_aCellClass; + var $_aRowBgColor; + var $_aRowExtra; + var $_bAddMultiSelJS; + + var $_sColorLight; + var $_sColorDark; + + function UI_Config_Table() + { + global $cfg; + + $this->_sPadding = 2; + $this->_sBorder = 0; + $this->_sBorderColor = $cfg['color']['table_border']; + $this->_sTplCellCode = ' {CONTENT}'."\n"; + $this->_sTplTableFile = $cfg['path']['contenido'].$cfg['path']['templates'].$cfg['templates']['generic_list']; + $this->_sColorLight = $cfg['color']['table_light']; + $this->_sColorDark = $cfg['color']['table_dark']; + } + + function setCellTemplate($sCode) + { + $this->_sTplCellCode = $sCode; + } + + + function setTableTemplateFile($sPath) + { + $this->_sTplTableFile = $sPath; + } + + function setLightColor($sColor) + { + $this->_sColorLight = $sColor; + } + + function setDarkColor($sColor) + { + $this->_sColorDark = $sColor; + } + + function setAddMultiSelJS($bEnabled = true) + { + $this->_bAddMultiSelJS = (bool)$bEnabled; + } + + function setWidth ($sWidth) + { + $this->_sWidth = $sWidth; + } + + function setPadding ($sPadding) + { + $this->_sPadding = $sPadding; + } + + function setBorder ($sBorder) + { + $this->_sBorder = $sBorder; + } + + function setBorderColor ($sBorderColor) + { + $this->_sBorderColor = $sBorderColor; + } + + function setSolidBorder ($bSolidBorder = true) + { + $this->_bSolidBorder = (bool)$bSolidBorder; + } + + function setCell ($sRow, $sCell, $sContent) + { + $this->_aCells[$sRow][$sCell] = $sContent; + $this->_aCellAlignment[$sRow][$sCell] = ""; + } + + function setCellAlignment ($sRow, $sCell, $sAlignment) + { + $this->_aCellAlignment[$sRow][$sCell] = $sAlignment; + } + + function setCellVAlignment ($sRow, $sCell, $sAlignment) + { + $this->_aCellVAlignment[$sRow][$sCell] = $sAlignment; + } + + function setCellColspan ($sRow, $sCell, $iColSpan) + { + $this->_aCellColSpan[$sRow][$sCell] = $iColSpan; + } + + function setCellClass ($sRow, $sCell, $sClass) + { + $this->_aCellClass[$sRow][$sCell] = $sClass; + } + + function setRowBgColor ($sRow, $sColor) + { + $this->_aRowBgColor[$sRow] = $sColor; + } + + function setRowExtra ($sRow, $sExtra) + { + $this->_aRowExtra[$sRow] = $sExtra; + } + + function _addMultiSelJS() + { + // Trick: To save multiple selections in  '; + html += '
'; + + } else { + // Implied consent disclosure + html += scriptsDisclosure + settings.impliedDisclosureText + ' ' + settings.privacyPolicyLinkText + '.'; + html += '
'; + } + html += ''; + $('body').append(html); + + // Serve the disclosure, and be smarter about branching + var dp = settings.position.toLowerCase(); + if(dp != 'top' && dp!= 'bottom') { + dp = 'top'; + } + var opts = new Array(); + if(dp == 'top') { + opts['in'] = {'top':'0'}; + opts['out'] = {'top':'-300'}; + } else { + opts['in'] = {'bottom':'0'}; + opts['out'] = {'bottom':'-300'}; + } + + // Start animation + $('#cookiesdirective').animate(opts['in'], 1000, function() { + // Set event handlers depending on type of disclosure + if(settings.explicitConsent) { + // Explicit, need to check a box and click a button + $('#explicitsubmit').click(function() { + if($('#epdagree').is(':checked')) { + // Set a cookie to prevent this being displayed again + setCookie('cookiesDirective',1,365); + // Close the overlay + $('#cookiesdirective').animate(opts['out'],1000,function() { + // Remove the elements from the DOM and reload page + $('#cookiesdirective').remove(); + location.reload(true); + }); + } else { + // We need the box checked we want "explicit consent", display message + $('#epdnotick').css('display', 'block'); + } + }); + } else { + // Implied consent, just a button to close it + $('#impliedsubmit').click(function() { + // Set a cookie to prevent this being displayed again + setCookie('cookiesDirective',1,365); + // Close the overlay + $('#cookiesdirective').animate(opts['out'],1000,function() { + // Remove the elements from the DOM and reload page + $('#cookiesdirective').remove(); + }); + }); + } + + // Set a timer to remove the warning after 'settings.duration' seconds + setTimeout(function(){ + $('#cookiesdirective').animate({ + opacity:'0' + },2000, function(){ + $('#cookiesdirective').css(dp,'-300px'); + }); + }, settings.duration * 1000); + }); + } +})(jQuery); diff --git a/branches/php7/js/libs/jquery-1.9.0.min.js b/branches/php7/js/libs/jquery-1.9.0.min.js new file mode 100644 index 0000000..50d1b22 --- /dev/null +++ b/branches/php7/js/libs/jquery-1.9.0.min.js @@ -0,0 +1,4 @@ +/*! jQuery v1.9.0 | (c) 2005, 2012 jQuery Foundation, Inc. | jquery.org/license */(function(e,t){"use strict";function n(e){var t=e.length,n=st.type(e);return st.isWindow(e)?!1:1===e.nodeType&&t?!0:"array"===n||"function"!==n&&(0===t||"number"==typeof t&&t>0&&t-1 in e)}function r(e){var t=Tt[e]={};return st.each(e.match(lt)||[],function(e,n){t[n]=!0}),t}function i(e,n,r,i){if(st.acceptData(e)){var o,a,s=st.expando,u="string"==typeof n,l=e.nodeType,c=l?st.cache:e,f=l?e[s]:e[s]&&s;if(f&&c[f]&&(i||c[f].data)||!u||r!==t)return f||(l?e[s]=f=K.pop()||st.guid++:f=s),c[f]||(c[f]={},l||(c[f].toJSON=st.noop)),("object"==typeof n||"function"==typeof n)&&(i?c[f]=st.extend(c[f],n):c[f].data=st.extend(c[f].data,n)),o=c[f],i||(o.data||(o.data={}),o=o.data),r!==t&&(o[st.camelCase(n)]=r),u?(a=o[n],null==a&&(a=o[st.camelCase(n)])):a=o,a}}function o(e,t,n){if(st.acceptData(e)){var r,i,o,a=e.nodeType,u=a?st.cache:e,l=a?e[st.expando]:st.expando;if(u[l]){if(t&&(r=n?u[l]:u[l].data)){st.isArray(t)?t=t.concat(st.map(t,st.camelCase)):t in r?t=[t]:(t=st.camelCase(t),t=t in r?[t]:t.split(" "));for(i=0,o=t.length;o>i;i++)delete r[t[i]];if(!(n?s:st.isEmptyObject)(r))return}(n||(delete u[l].data,s(u[l])))&&(a?st.cleanData([e],!0):st.support.deleteExpando||u!=u.window?delete u[l]:u[l]=null)}}}function a(e,n,r){if(r===t&&1===e.nodeType){var i="data-"+n.replace(Nt,"-$1").toLowerCase();if(r=e.getAttribute(i),"string"==typeof r){try{r="true"===r?!0:"false"===r?!1:"null"===r?null:+r+""===r?+r:wt.test(r)?st.parseJSON(r):r}catch(o){}st.data(e,n,r)}else r=t}return r}function s(e){var t;for(t in e)if(("data"!==t||!st.isEmptyObject(e[t]))&&"toJSON"!==t)return!1;return!0}function u(){return!0}function l(){return!1}function c(e,t){do e=e[t];while(e&&1!==e.nodeType);return e}function f(e,t,n){if(t=t||0,st.isFunction(t))return st.grep(e,function(e,r){var i=!!t.call(e,r,e);return i===n});if(t.nodeType)return st.grep(e,function(e){return e===t===n});if("string"==typeof t){var r=st.grep(e,function(e){return 1===e.nodeType});if(Wt.test(t))return st.filter(t,r,!n);t=st.filter(t,r)}return st.grep(e,function(e){return st.inArray(e,t)>=0===n})}function p(e){var t=zt.split("|"),n=e.createDocumentFragment();if(n.createElement)for(;t.length;)n.createElement(t.pop());return n}function d(e,t){return e.getElementsByTagName(t)[0]||e.appendChild(e.ownerDocument.createElement(t))}function h(e){var t=e.getAttributeNode("type");return e.type=(t&&t.specified)+"/"+e.type,e}function g(e){var t=nn.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function m(e,t){for(var n,r=0;null!=(n=e[r]);r++)st._data(n,"globalEval",!t||st._data(t[r],"globalEval"))}function y(e,t){if(1===t.nodeType&&st.hasData(e)){var n,r,i,o=st._data(e),a=st._data(t,o),s=o.events;if(s){delete a.handle,a.events={};for(n in s)for(r=0,i=s[n].length;i>r;r++)st.event.add(t,n,s[n][r])}a.data&&(a.data=st.extend({},a.data))}}function v(e,t){var n,r,i;if(1===t.nodeType){if(n=t.nodeName.toLowerCase(),!st.support.noCloneEvent&&t[st.expando]){r=st._data(t);for(i in r.events)st.removeEvent(t,i,r.handle);t.removeAttribute(st.expando)}"script"===n&&t.text!==e.text?(h(t).text=e.text,g(t)):"object"===n?(t.parentNode&&(t.outerHTML=e.outerHTML),st.support.html5Clone&&e.innerHTML&&!st.trim(t.innerHTML)&&(t.innerHTML=e.innerHTML)):"input"===n&&Zt.test(e.type)?(t.defaultChecked=t.checked=e.checked,t.value!==e.value&&(t.value=e.value)):"option"===n?t.defaultSelected=t.selected=e.defaultSelected:("input"===n||"textarea"===n)&&(t.defaultValue=e.defaultValue)}}function b(e,n){var r,i,o=0,a=e.getElementsByTagName!==t?e.getElementsByTagName(n||"*"):e.querySelectorAll!==t?e.querySelectorAll(n||"*"):t;if(!a)for(a=[],r=e.childNodes||e;null!=(i=r[o]);o++)!n||st.nodeName(i,n)?a.push(i):st.merge(a,b(i,n));return n===t||n&&st.nodeName(e,n)?st.merge([e],a):a}function x(e){Zt.test(e.type)&&(e.defaultChecked=e.checked)}function T(e,t){if(t in e)return t;for(var n=t.charAt(0).toUpperCase()+t.slice(1),r=t,i=Nn.length;i--;)if(t=Nn[i]+n,t in e)return t;return r}function w(e,t){return e=t||e,"none"===st.css(e,"display")||!st.contains(e.ownerDocument,e)}function N(e,t){for(var n,r=[],i=0,o=e.length;o>i;i++)n=e[i],n.style&&(r[i]=st._data(n,"olddisplay"),t?(r[i]||"none"!==n.style.display||(n.style.display=""),""===n.style.display&&w(n)&&(r[i]=st._data(n,"olddisplay",S(n.nodeName)))):r[i]||w(n)||st._data(n,"olddisplay",st.css(n,"display")));for(i=0;o>i;i++)n=e[i],n.style&&(t&&"none"!==n.style.display&&""!==n.style.display||(n.style.display=t?r[i]||"":"none"));return e}function C(e,t,n){var r=mn.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[2]||"px"):t}function k(e,t,n,r,i){for(var o=n===(r?"border":"content")?4:"width"===t?1:0,a=0;4>o;o+=2)"margin"===n&&(a+=st.css(e,n+wn[o],!0,i)),r?("content"===n&&(a-=st.css(e,"padding"+wn[o],!0,i)),"margin"!==n&&(a-=st.css(e,"border"+wn[o]+"Width",!0,i))):(a+=st.css(e,"padding"+wn[o],!0,i),"padding"!==n&&(a+=st.css(e,"border"+wn[o]+"Width",!0,i)));return a}function E(e,t,n){var r=!0,i="width"===t?e.offsetWidth:e.offsetHeight,o=ln(e),a=st.support.boxSizing&&"border-box"===st.css(e,"boxSizing",!1,o);if(0>=i||null==i){if(i=un(e,t,o),(0>i||null==i)&&(i=e.style[t]),yn.test(i))return i;r=a&&(st.support.boxSizingReliable||i===e.style[t]),i=parseFloat(i)||0}return i+k(e,t,n||(a?"border":"content"),r,o)+"px"}function S(e){var t=V,n=bn[e];return n||(n=A(e,t),"none"!==n&&n||(cn=(cn||st("