Initial commit
11
.gitignore
vendored
Normal file
@@ -0,0 +1,11 @@
|
||||
|
||||
###> symfony/framework-bundle ###
|
||||
/.env.local
|
||||
/.env.local.php
|
||||
/.env.*.local
|
||||
/config/secrets/prod/prod.decrypt.private.php
|
||||
/public/bundles/
|
||||
/var/
|
||||
/vendor/
|
||||
**/vendor/
|
||||
###< symfony/framework-bundle ###
|
||||
1
.htaccess
Normal file
@@ -0,0 +1 @@
|
||||
##Redirect permanent / https://www.eventbrite.com/e/i-bear-witness-part-1-living-the-shahada-tickets-129927291025
|
||||
21
LICENSE
Normal file
@@ -0,0 +1,21 @@
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2014 Materialize
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
BIN
_backup/alhidayah_academy.jpg
Normal file
|
After Width: | Height: | Size: 26 KiB |
BIN
_backup/alhidayah_academy.png
Normal file
|
After Width: | Height: | Size: 28 KiB |
182
_backup/assets/css/global.css
Normal file
@@ -0,0 +1,182 @@
|
||||
/* Variables */
|
||||
* {
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
/*body {*/
|
||||
/* font-family: -apple-system, BlinkMacSystemFont, sans-serif;*/
|
||||
/* font-size: 16px;*/
|
||||
/* -webkit-font-smoothing: antialiased;*/
|
||||
/* display: flex;*/
|
||||
/* justify-content: center;*/
|
||||
/* align-content: center;*/
|
||||
/* height: 100vh;*/
|
||||
/* width: 100vw;*/
|
||||
/*}*/
|
||||
|
||||
form {
|
||||
width: 30vw;
|
||||
min-width: 500px;
|
||||
align-self: center;
|
||||
box-shadow: 0px 0px 0px 0.5px rgba(50, 50, 93, 0.1),
|
||||
0px 2px 5px 0px rgba(50, 50, 93, 0.1), 0px 1px 1.5px 0px rgba(0, 0, 0, 0.07);
|
||||
border-radius: 7px;
|
||||
padding: 40px;
|
||||
}
|
||||
|
||||
input {
|
||||
border-radius: 6px;
|
||||
margin-bottom: 6px;
|
||||
padding: 12px;
|
||||
border: 1px solid rgba(50, 50, 93, 0.1);
|
||||
height: 44px;
|
||||
font-size: 16px;
|
||||
width: 100%;
|
||||
background: white;
|
||||
}
|
||||
|
||||
.result-message {
|
||||
line-height: 22px;
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
.result-message a {
|
||||
color: rgb(89, 111, 214);
|
||||
font-weight: 600;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.hidden {
|
||||
display: none;
|
||||
}
|
||||
|
||||
#card-error {
|
||||
color: rgb(105, 115, 134);
|
||||
text-align: left;
|
||||
font-size: 13px;
|
||||
line-height: 17px;
|
||||
margin-top: 12px;
|
||||
}
|
||||
|
||||
#card-element {
|
||||
border-radius: 4px 4px 0 0 ;
|
||||
padding: 12px;
|
||||
border: 1px solid rgba(50, 50, 93, 0.1);
|
||||
height: 44px;
|
||||
width: 100%;
|
||||
background: white;
|
||||
}
|
||||
|
||||
#payment-request-button {
|
||||
margin-bottom: 32px;
|
||||
}
|
||||
|
||||
/* Buttons and links */
|
||||
button {
|
||||
background: #5469d4;
|
||||
color: #ffffff;
|
||||
font-family: Arial, sans-serif;
|
||||
border-radius: 0 0 4px 4px;
|
||||
border: 0;
|
||||
padding: 12px 16px;
|
||||
font-size: 16px;
|
||||
font-weight: 600;
|
||||
cursor: pointer;
|
||||
display: block;
|
||||
transition: all 0.2s ease;
|
||||
box-shadow: 0px 4px 5.5px 0px rgba(0, 0, 0, 0.07);
|
||||
width: 100%;
|
||||
}
|
||||
button:hover {
|
||||
filter: contrast(115%);
|
||||
}
|
||||
button:disabled {
|
||||
opacity: 0.5;
|
||||
cursor: default;
|
||||
}
|
||||
|
||||
/* spinner/processing state, errors */
|
||||
.spinner,
|
||||
.spinner:before,
|
||||
.spinner:after {
|
||||
border-radius: 50%;
|
||||
}
|
||||
.spinner {
|
||||
color: #ffffff;
|
||||
font-size: 22px;
|
||||
text-indent: -99999px;
|
||||
margin: 0px auto;
|
||||
position: relative;
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
box-shadow: inset 0 0 0 2px;
|
||||
-webkit-transform: translateZ(0);
|
||||
-ms-transform: translateZ(0);
|
||||
transform: translateZ(0);
|
||||
}
|
||||
.spinner:before,
|
||||
.spinner:after {
|
||||
position: absolute;
|
||||
content: "";
|
||||
}
|
||||
.spinner:before {
|
||||
width: 10.4px;
|
||||
height: 20.4px;
|
||||
background: #5469d4;
|
||||
border-radius: 20.4px 0 0 20.4px;
|
||||
top: -0.2px;
|
||||
left: -0.2px;
|
||||
-webkit-transform-origin: 10.4px 10.2px;
|
||||
transform-origin: 10.4px 10.2px;
|
||||
-webkit-animation: loading 2s infinite ease 1.5s;
|
||||
animation: loading 2s infinite ease 1.5s;
|
||||
}
|
||||
.spinner:after {
|
||||
width: 10.4px;
|
||||
height: 10.2px;
|
||||
background: #5469d4;
|
||||
border-radius: 0 10.2px 10.2px 0;
|
||||
top: -0.1px;
|
||||
left: 10.2px;
|
||||
-webkit-transform-origin: 0px 10.2px;
|
||||
transform-origin: 0px 10.2px;
|
||||
-webkit-animation: loading 2s infinite ease;
|
||||
animation: loading 2s infinite ease;
|
||||
}
|
||||
|
||||
@-webkit-keyframes loading {
|
||||
0% {
|
||||
-webkit-transform: rotate(0deg);
|
||||
transform: rotate(0deg);
|
||||
}
|
||||
100% {
|
||||
-webkit-transform: rotate(360deg);
|
||||
transform: rotate(360deg);
|
||||
}
|
||||
}
|
||||
@keyframes loading {
|
||||
0% {
|
||||
-webkit-transform: rotate(0deg);
|
||||
transform: rotate(0deg);
|
||||
}
|
||||
100% {
|
||||
-webkit-transform: rotate(360deg);
|
||||
transform: rotate(360deg);
|
||||
}
|
||||
}
|
||||
|
||||
@media only screen and (max-width: 600px) {
|
||||
form {
|
||||
/*width: 80vw;*/
|
||||
}
|
||||
|
||||
form {
|
||||
padding: unset;
|
||||
width: auto;
|
||||
min-width: auto;
|
||||
}
|
||||
|
||||
#header .logo img {
|
||||
max-height: 47px;
|
||||
}
|
||||
}
|
||||
61
_backup/assets/css/login.css
Normal file
@@ -0,0 +1,61 @@
|
||||
body {
|
||||
background-color: #fff;
|
||||
}
|
||||
|
||||
.form-signin {
|
||||
width: 100%;
|
||||
max-width: 330px;
|
||||
padding: 15px;
|
||||
margin: auto;
|
||||
margin-top: 50px;
|
||||
}
|
||||
|
||||
.form-signin .checkbox {
|
||||
font-weight: 400;
|
||||
}
|
||||
|
||||
.form-signin .form-control {
|
||||
position: relative;
|
||||
box-sizing: border-box;
|
||||
height: auto;
|
||||
padding: 10px;
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
.form-signin .form-control:focus {
|
||||
z-index: 2;
|
||||
}
|
||||
|
||||
.form-signin input[type="email"] {
|
||||
margin-bottom: -1px;
|
||||
border-bottom-right-radius: 0;
|
||||
border-bottom-left-radius: 0;
|
||||
}
|
||||
|
||||
.form-signin input[type="password"] {
|
||||
margin-bottom: 10px;
|
||||
border-top-left-radius: 0;
|
||||
border-top-right-radius: 0;
|
||||
}
|
||||
|
||||
.form-signin input[type="submit"] {
|
||||
top: -1px;
|
||||
right: -1px;
|
||||
bottom: -1px;
|
||||
border: 0;
|
||||
background: none;
|
||||
font-size: 16px;
|
||||
padding: 0 20px 2px 20px;
|
||||
background: #482e17;
|
||||
color: #fff;
|
||||
transition: 0.3s;
|
||||
border-radius: 50px;
|
||||
box-shadow: 0px 2px 15px rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
|
||||
.form-signin input[type="submit"]:hover {
|
||||
background: #8b470a;
|
||||
}
|
||||
|
||||
|
||||
|
||||
1572
_backup/assets/css/style.css
Normal file
BIN
_backup/assets/img/about.jpg
Normal file
|
After Width: | Height: | Size: 408 KiB |
BIN
_backup/assets/img/apple-touch-icon.png
Normal file
|
After Width: | Height: | Size: 1.7 KiB |
BIN
_backup/assets/img/course-1.jpg
Normal file
|
After Width: | Height: | Size: 50 KiB |
BIN
_backup/assets/img/course-2.jpg
Normal file
|
After Width: | Height: | Size: 88 KiB |
BIN
_backup/assets/img/course-3.jpg
Normal file
|
After Width: | Height: | Size: 117 KiB |
BIN
_backup/assets/img/course-details-tab-1.png
Normal file
|
After Width: | Height: | Size: 18 KiB |
BIN
_backup/assets/img/course-details-tab-2.png
Normal file
|
After Width: | Height: | Size: 18 KiB |
BIN
_backup/assets/img/course-details-tab-3.png
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
_backup/assets/img/course-details-tab-4.png
Normal file
|
After Width: | Height: | Size: 16 KiB |
BIN
_backup/assets/img/course-details-tab-5.png
Normal file
|
After Width: | Height: | Size: 11 KiB |
BIN
_backup/assets/img/course-details.jpg
Normal file
|
After Width: | Height: | Size: 130 KiB |
BIN
_backup/assets/img/courses/fym_01.jpg
Normal file
|
After Width: | Height: | Size: 939 KiB |
BIN
_backup/assets/img/courses/fym_02.jpg
Normal file
|
After Width: | Height: | Size: 125 KiB |
BIN
_backup/assets/img/courses/fym_03.jpg
Normal file
|
After Width: | Height: | Size: 1.7 MiB |
BIN
_backup/assets/img/courses/ibw_01.jpg
Normal file
|
After Width: | Height: | Size: 168 KiB |
BIN
_backup/assets/img/courses/rsr_01.jpg
Normal file
|
After Width: | Height: | Size: 205 KiB |
BIN
_backup/assets/img/events-1.jpg
Normal file
|
After Width: | Height: | Size: 53 KiB |
BIN
_backup/assets/img/events-2.jpg
Normal file
|
After Width: | Height: | Size: 91 KiB |
BIN
_backup/assets/img/favicon.png
Normal file
|
After Width: | Height: | Size: 491 B |
BIN
_backup/assets/img/hero-bg.jpg
Normal file
|
After Width: | Height: | Size: 2.0 MiB |
BIN
_backup/assets/img/hero-bg_2.jpg
Normal file
|
After Width: | Height: | Size: 1.9 MiB |
BIN
_backup/assets/img/logo-temp.png
Normal file
|
After Width: | Height: | Size: 30 KiB |
BIN
_backup/assets/img/logo.jpg
Normal file
|
After Width: | Height: | Size: 388 KiB |
BIN
_backup/assets/img/logo.png
Normal file
|
After Width: | Height: | Size: 50 KiB |
BIN
_backup/assets/img/testimonials/blank.jpg
Normal file
|
After Width: | Height: | Size: 8.5 KiB |
BIN
_backup/assets/img/testimonials/testimonials-1.jpg
Normal file
|
After Width: | Height: | Size: 39 KiB |
BIN
_backup/assets/img/testimonials/testimonials-2.jpg
Normal file
|
After Width: | Height: | Size: 56 KiB |
BIN
_backup/assets/img/testimonials/testimonials-3.jpg
Normal file
|
After Width: | Height: | Size: 17 KiB |
BIN
_backup/assets/img/testimonials/testimonials-4.jpg
Normal file
|
After Width: | Height: | Size: 20 KiB |
BIN
_backup/assets/img/testimonials/testimonials-5.jpg
Normal file
|
After Width: | Height: | Size: 22 KiB |
BIN
_backup/assets/img/trainers/trainer-1.jpg
Normal file
|
After Width: | Height: | Size: 39 KiB |
BIN
_backup/assets/img/trainers/trainer-2.jpg
Normal file
|
After Width: | Height: | Size: 48 KiB |
BIN
_backup/assets/img/trainers/trainer-3.jpg
Normal file
|
After Width: | Height: | Size: 36 KiB |
122
_backup/assets/js/app.js
Normal file
@@ -0,0 +1,122 @@
|
||||
// A reference to Stripe.js initialized with your real test publishable API key.
|
||||
|
||||
|
||||
// Disable the button until we have Stripe set up on the page
|
||||
document.querySelector("button").disabled = true;
|
||||
|
||||
var stripePublishKeyStaging = "pk_test_j0rkHIjMGYZa7RsKc8qckCrO";
|
||||
var stripePublishKeyLive = "pk_live_k1BdkAnOH60PQ57FYtuOFOkn";
|
||||
|
||||
var stripe = Stripe(stripePublishKeyStaging);
|
||||
|
||||
var getStripe = function(token){
|
||||
|
||||
var elements = stripe.elements();
|
||||
|
||||
var style = {
|
||||
base: {
|
||||
color: "#32325d",
|
||||
fontFamily: 'Arial, sans-serif',
|
||||
fontSmoothing: "antialiased",
|
||||
fontSize: "16px",
|
||||
"::placeholder": {
|
||||
color: "#32325d"
|
||||
}
|
||||
},
|
||||
invalid: {
|
||||
fontFamily: 'Arial, sans-serif',
|
||||
color: "#fa755a",
|
||||
iconColor: "#fa755a"
|
||||
}
|
||||
};
|
||||
|
||||
var card = elements.create("card", { style: style });
|
||||
// Stripe injects an iframe into the DOM
|
||||
card.mount("#card-element");
|
||||
|
||||
card.on("change", function (event) {
|
||||
// Disable the Pay button if there are no card details in the Element
|
||||
document.querySelector("button").disabled = event.empty;
|
||||
document.querySelector("#card-error").textContent = event.error ? event.error.message : "";
|
||||
});
|
||||
|
||||
var form = document.getElementById("payment-form");
|
||||
form.addEventListener("submit", function(event) {
|
||||
event.preventDefault();
|
||||
// Complete payment when the submit button is clicked
|
||||
payWithCard(stripe, card, token);
|
||||
});
|
||||
}
|
||||
|
||||
// Calls stripe.confirmCardPayment
|
||||
// If the card requires authentication Stripe shows a pop-up modal to
|
||||
// prompt the user to enter authentication details without leaving your page.
|
||||
var payWithCard = function(stripe, card, clientSecret) {
|
||||
loading(true);
|
||||
stripe
|
||||
.confirmCardPayment(clientSecret, {
|
||||
payment_method: {
|
||||
card: card
|
||||
}
|
||||
})
|
||||
.then(function(result) {
|
||||
if (result.error) {
|
||||
// Show error to your customer
|
||||
showError(result.error.message);
|
||||
} else {
|
||||
// The payment succeeded!
|
||||
orderComplete(result.paymentIntent.id);
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
/* ------- UI helpers ------- */
|
||||
|
||||
// Shows a success message when the payment is complete
|
||||
var orderComplete = function(paymentIntentId) {
|
||||
loading(false);
|
||||
// document
|
||||
// .querySelector(".result-message a")
|
||||
// .setAttribute(
|
||||
// "href",
|
||||
// "https://dashboard.stripe.com/test/payments/" + paymentIntentId
|
||||
// );
|
||||
// document.querySelector(".result-message").classList.remove("hidden");
|
||||
// document.querySelector("button").disabled = true;
|
||||
|
||||
$("section.checkout").hide();
|
||||
|
||||
|
||||
$("section.confirmation span.paymentId").text(paymentIntentId);
|
||||
$("section.confirmation").show();
|
||||
|
||||
|
||||
};
|
||||
|
||||
// Show the customer the error from Stripe if their card fails to charge
|
||||
var showError = function(errorMsgText) {
|
||||
loading(false);
|
||||
var errorMsg = document.querySelector("#card-error");
|
||||
errorMsg.textContent = errorMsgText;
|
||||
setTimeout(function() {
|
||||
errorMsg.textContent = "";
|
||||
}, 4000);
|
||||
};
|
||||
|
||||
// Show a spinner on payment submission
|
||||
var loading = function(isLoading) {
|
||||
if (isLoading) {
|
||||
// Disable the button and show a spinner
|
||||
document.querySelector("button").disabled = true;
|
||||
document.querySelector("#spinner").classList.remove("hidden");
|
||||
document.querySelector("#button-text").classList.add("hidden");
|
||||
} else {
|
||||
document.querySelector("button").disabled = false;
|
||||
document.querySelector("#spinner").classList.add("hidden");
|
||||
document.querySelector("#button-text").classList.remove("hidden");
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
119
_backup/assets/js/client.js
Normal file
@@ -0,0 +1,119 @@
|
||||
// A reference to Stripe.js initialized with your real test publishable API key.
|
||||
var stripe = Stripe("pk_test_j0rkHIjMGYZa7RsKc8qckCrO");
|
||||
|
||||
// The items the customer wants to buy
|
||||
var purchase = {
|
||||
items: [{ id: "xl-tshirt" }]
|
||||
};
|
||||
|
||||
// Disable the button until we have Stripe set up on the page
|
||||
// document.querySelector("button").disabled = true;
|
||||
|
||||
fetch("stripe/create.php", {
|
||||
method: "POST",
|
||||
headers: {
|
||||
"Content-Type": "application/json"
|
||||
},
|
||||
body: JSON.stringify(purchase)
|
||||
})
|
||||
.then(function(result) {
|
||||
return result.json();
|
||||
})
|
||||
.then(function(data) {
|
||||
var elements = stripe.elements();
|
||||
|
||||
var style = {
|
||||
base: {
|
||||
color: "#32325d",
|
||||
fontFamily: 'Arial, sans-serif',
|
||||
fontSmoothing: "antialiased",
|
||||
fontSize: "16px",
|
||||
"::placeholder": {
|
||||
color: "#32325d"
|
||||
}
|
||||
},
|
||||
invalid: {
|
||||
fontFamily: 'Arial, sans-serif',
|
||||
color: "#fa755a",
|
||||
iconColor: "#fa755a"
|
||||
}
|
||||
};
|
||||
|
||||
var card = elements.create("card", { style: style });
|
||||
// Stripe injects an iframe into the DOM
|
||||
card.mount("#card-element");
|
||||
|
||||
card.on("change", function (event) {
|
||||
// Disable the Pay button if there are no card details in the Element
|
||||
document.querySelector("button").disabled = event.empty;
|
||||
document.querySelector("#card-error").textContent = event.error ? event.error.message : "";
|
||||
});
|
||||
|
||||
var form = document.getElementById("payment-form");
|
||||
form.addEventListener("submit", function(event) {
|
||||
event.preventDefault();
|
||||
// Complete payment when the submit button is clicked
|
||||
payWithCard(stripe, card, data.clientSecret);
|
||||
});
|
||||
});
|
||||
|
||||
// Calls stripe.confirmCardPayment
|
||||
// If the card requires authentication Stripe shows a pop-up modal to
|
||||
// prompt the user to enter authentication details without leaving your page.
|
||||
var payWithCard = function(stripe, card, clientSecret) {
|
||||
loading(true);
|
||||
stripe
|
||||
.confirmCardPayment(clientSecret, {
|
||||
payment_method: {
|
||||
card: card
|
||||
}
|
||||
})
|
||||
.then(function(result) {
|
||||
if (result.error) {
|
||||
// Show error to your customer
|
||||
showError(result.error.message);
|
||||
} else {
|
||||
// The payment succeeded!
|
||||
orderComplete(result.paymentIntent.id);
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
/* ------- UI helpers ------- */
|
||||
|
||||
// Shows a success message when the payment is complete
|
||||
var orderComplete = function(paymentIntentId) {
|
||||
loading(false);
|
||||
document
|
||||
.querySelector(".result-message a")
|
||||
.setAttribute(
|
||||
"href",
|
||||
"https://dashboard.stripe.com/test/payments/" + paymentIntentId
|
||||
);
|
||||
document.querySelector(".result-message").classList.remove("hidden");
|
||||
document.querySelector("button").disabled = true;
|
||||
};
|
||||
|
||||
// Show the customer the error from Stripe if their card fails to charge
|
||||
var showError = function(errorMsgText) {
|
||||
loading(false);
|
||||
var errorMsg = document.querySelector("#card-error");
|
||||
errorMsg.textContent = errorMsgText;
|
||||
setTimeout(function() {
|
||||
errorMsg.textContent = "";
|
||||
}, 4000);
|
||||
};
|
||||
|
||||
// Show a spinner on payment submission
|
||||
var loading = function(isLoading) {
|
||||
if (isLoading) {
|
||||
// Disable the button and show a spinner
|
||||
document.querySelector("button").disabled = true;
|
||||
document.querySelector("#spinner").classList.remove("hidden");
|
||||
document.querySelector("#button-text").classList.add("hidden");
|
||||
} else {
|
||||
document.querySelector("button").disabled = false;
|
||||
document.querySelector("#spinner").classList.add("hidden");
|
||||
document.querySelector("#button-text").classList.remove("hidden");
|
||||
}
|
||||
};
|
||||
148
_backup/assets/js/main.js
Normal file
@@ -0,0 +1,148 @@
|
||||
/**
|
||||
* Template Name: Mentor - v3.0.0
|
||||
* Template URL: https://bootstrapmade.com/mentor-free-education-bootstrap-theme/
|
||||
* Author: BootstrapMade.com
|
||||
* License: https://bootstrapmade.com/license/
|
||||
*/
|
||||
!(function($) {
|
||||
"use strict";
|
||||
|
||||
// Preloader
|
||||
$(window).on('load', function() {
|
||||
if ($('#preloader').length) {
|
||||
$('#preloader').delay(100).fadeOut('slow', function() {
|
||||
$(this).remove();
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
// Smooth scroll for the navigation menu and links with .scrollto classes
|
||||
var scrolltoOffset = $('#header').outerHeight() - 1;
|
||||
$(document).on('click', '.nav-menu a, .mobile-nav a, .scrollto', function(e) {
|
||||
if (location.pathname.replace(/^\//, '') == this.pathname.replace(/^\//, '') && location.hostname == this.hostname) {
|
||||
var target = $(this.hash);
|
||||
if (target.length) {
|
||||
e.preventDefault();
|
||||
|
||||
var scrollto = target.offset().top - scrolltoOffset;
|
||||
|
||||
if ($(this).attr("href") == '#header') {
|
||||
scrollto = 0;
|
||||
}
|
||||
|
||||
$('html, body').animate({
|
||||
scrollTop: scrollto
|
||||
}, 1500, 'easeInOutExpo');
|
||||
|
||||
if ($(this).parents('.nav-menu, .mobile-nav').length) {
|
||||
$('.nav-menu .active, .mobile-nav .active').removeClass('active');
|
||||
$(this).closest('li').addClass('active');
|
||||
}
|
||||
|
||||
if ($('body').hasClass('mobile-nav-active')) {
|
||||
$('body').removeClass('mobile-nav-active');
|
||||
$('.mobile-nav-toggle i').toggleClass('icofont-navigation-menu icofont-close');
|
||||
$('.mobile-nav-overly').fadeOut();
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
// Activate smooth scroll on page load with hash links in the url
|
||||
$(document).ready(function() {
|
||||
if (window.location.hash) {
|
||||
var initial_nav = window.location.hash;
|
||||
if ($(initial_nav).length) {
|
||||
var scrollto = $(initial_nav).offset().top - scrolltoOffset;
|
||||
$('html, body').animate({
|
||||
scrollTop: scrollto
|
||||
}, 1500, 'easeInOutExpo');
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
// Mobile Navigation
|
||||
if ($('.nav-menu').length) {
|
||||
var $mobile_nav = $('.nav-menu').clone().prop({
|
||||
class: 'mobile-nav d-lg-none'
|
||||
});
|
||||
$('body').append($mobile_nav);
|
||||
$('body').prepend('<button type="button" class="mobile-nav-toggle d-lg-none"><i class="icofont-navigation-menu"></i></button>');
|
||||
$('body').append('<div class="mobile-nav-overly"></div>');
|
||||
|
||||
$(document).on('click', '.mobile-nav-toggle', function(e) {
|
||||
$('body').toggleClass('mobile-nav-active');
|
||||
$('.mobile-nav-toggle i').toggleClass('icofont-navigation-menu icofont-close');
|
||||
$('.mobile-nav-overly').toggle();
|
||||
});
|
||||
|
||||
$(document).on('click', '.mobile-nav .drop-down > a', function(e) {
|
||||
e.preventDefault();
|
||||
$(this).next().slideToggle(300);
|
||||
$(this).parent().toggleClass('active');
|
||||
});
|
||||
|
||||
$(document).click(function(e) {
|
||||
var container = $(".mobile-nav, .mobile-nav-toggle");
|
||||
if (!container.is(e.target) && container.has(e.target).length === 0) {
|
||||
if ($('body').hasClass('mobile-nav-active')) {
|
||||
$('body').removeClass('mobile-nav-active');
|
||||
$('.mobile-nav-toggle i').toggleClass('icofont-navigation-menu icofont-close');
|
||||
$('.mobile-nav-overly').fadeOut();
|
||||
}
|
||||
}
|
||||
});
|
||||
} else if ($(".mobile-nav, .mobile-nav-toggle").length) {
|
||||
$(".mobile-nav, .mobile-nav-toggle").hide();
|
||||
}
|
||||
|
||||
// Back to top button
|
||||
$(window).scroll(function() {
|
||||
if ($(this).scrollTop() > 100) {
|
||||
$('.back-to-top').fadeIn('slow');
|
||||
} else {
|
||||
$('.back-to-top').fadeOut('slow');
|
||||
}
|
||||
});
|
||||
|
||||
$('.back-to-top').click(function() {
|
||||
$('html, body').animate({
|
||||
scrollTop: 0
|
||||
}, 1500, 'easeInOutExpo');
|
||||
return false;
|
||||
});
|
||||
|
||||
// jQuery counterUp
|
||||
$('[data-toggle="counter-up"]').counterUp({
|
||||
delay: 10,
|
||||
time: 1000
|
||||
});
|
||||
|
||||
// Testimonials carousel (uses the Owl Carousel library)
|
||||
$(".testimonials-carousel").owlCarousel({
|
||||
autoplay: true,
|
||||
dots: true,
|
||||
loop: true,
|
||||
responsive: {
|
||||
0: {
|
||||
items: 1
|
||||
},
|
||||
768: {
|
||||
items: 1
|
||||
},
|
||||
900: {
|
||||
items: 2
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
// Init AOS
|
||||
$(window).on('load', function() {
|
||||
AOS.init({
|
||||
duration: 1000,
|
||||
once: true
|
||||
});
|
||||
});
|
||||
|
||||
})(jQuery);
|
||||
44
_backup/components/authenticate.php
Normal file
@@ -0,0 +1,44 @@
|
||||
<?php
|
||||
|
||||
$security = $_SESSION["tqw_firewall"] ?? false;
|
||||
$authenticated = false;
|
||||
|
||||
if($security) {
|
||||
|
||||
$authenticated = $security["authenticated"];
|
||||
}
|
||||
|
||||
if(getPostData("login"))
|
||||
{
|
||||
$email = getPostData("username");
|
||||
|
||||
$sSql = "SELECT * FROM users WHERE email = ?";
|
||||
|
||||
$statement = $connection->prepare($sSql);
|
||||
|
||||
$statement->execute([$email]);
|
||||
|
||||
$result = $statement->fetchAll();
|
||||
|
||||
if (sizeof($result) > 0) {
|
||||
foreach ($result as $user) {
|
||||
$password = $user["password"];
|
||||
|
||||
if (password_verify(getPostData("password"), $user["password"])) {
|
||||
|
||||
$authenticated = true;
|
||||
$_SESSION["tqw_firewall"] =
|
||||
[ "authenticated" => $authenticated,
|
||||
"email" => $email,
|
||||
"name" => $user["name"],
|
||||
'userId' => $user["id"]
|
||||
];
|
||||
|
||||
logAction($user["id"], 0, "Site Login: ".$user["name"]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
header("location:/mycourses.php");
|
||||
}
|
||||
|
||||
21
_backup/components/courseCart.php
Normal file
@@ -0,0 +1,21 @@
|
||||
<?php
|
||||
|
||||
$courseCart = $_SESSION["courseCart"] ?? [];
|
||||
|
||||
$email = null;
|
||||
$name = null;
|
||||
$courseCode = null;
|
||||
$amount = 0 ;
|
||||
|
||||
$courseData = [];
|
||||
|
||||
if( $courseCart)
|
||||
{
|
||||
$email = $courseCart["email"];
|
||||
$name = $courseCart["name"];
|
||||
$courseCode = $courseCart["courseCode"];
|
||||
$amount = $courseCart["amount"] ;
|
||||
|
||||
$courseData = getCourseDetailsByCode($courseCode);
|
||||
}
|
||||
|
||||
73
_backup/components/footer.php
Normal file
@@ -0,0 +1,73 @@
|
||||
<!-- ======= Footer ======= -->
|
||||
<footer id="footer">
|
||||
|
||||
<div class="footer-top">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
|
||||
<div class="col-lg-3 col-md-6 footer-contact">
|
||||
<h3>The Quranic Way</h3>
|
||||
<!-- <p>-->
|
||||
<!-- A108 Adam Street <br>-->
|
||||
<!-- New York, NY 535022<br>-->
|
||||
<!-- United States <br><br>-->
|
||||
<!-- <strong>Phone:</strong> +1 5589 55488 55<br>-->
|
||||
<strong>Email:</strong> info@thequranicway.com<br>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="col-lg-2 col-md-6 footer-links">
|
||||
<h4>Useful Links</h4>
|
||||
<ul>
|
||||
<li><i class="bx bx-chevron-right"></i> <a href="index.php">Home</a></li>
|
||||
<li><i class="bx bx-chevron-right"></i> <a href="about.php">About</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="col-lg-3 col-md-6 footer-links">
|
||||
<!-- <h4>Our Services</h4>-->
|
||||
<!-- <ul>-->
|
||||
<!-- <li><i class="bx bx-chevron-right"></i> <a href="#">Web Design</a></li>-->
|
||||
<!-- <li><i class="bx bx-chevron-right"></i> <a href="#">Web Development</a></li>-->
|
||||
<!-- <li><i class="bx bx-chevron-right"></i> <a href="#">Product Management</a></li>-->
|
||||
<!-- <li><i class="bx bx-chevron-right"></i> <a href="#">Marketing</a></li>-->
|
||||
<!-- <li><i class="bx bx-chevron-right"></i> <a href="#">Graphic Design</a></li>-->
|
||||
<!-- </ul>-->
|
||||
</div>
|
||||
|
||||
<div class="col-lg-4 col-md-6 footer-newsletter">
|
||||
<!-- <h4>Join Our Newsletter</h4>-->
|
||||
<!-- <p>Tamen quem nulla quae legam multos aute sint culpa legam noster magna</p>-->
|
||||
<!-- <form action="" method="post">-->
|
||||
<!-- <input type="email" name="email"><input type="submit" value="Subscribe">-->
|
||||
<!-- </form>-->
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="container d-md-flex py-4">
|
||||
|
||||
<div class="me-md-auto text-center text-md-start">
|
||||
<div class="copyright">
|
||||
© Copyright <strong><span>TheQuranicWay</span></strong>. All Rights Reserved
|
||||
</div>
|
||||
<div class="credits">
|
||||
<!-- All the links in the footer should remain intact. -->
|
||||
<!-- You can delete the links only if you purchased the pro version. -->
|
||||
<!-- Licensing information: https://bootstrapmade.com/license/ -->
|
||||
<!-- Purchase the pro version with working PHP/AJAX contact form: https://bootstrapmade.com/mentor-free-education-bootstrap-theme/ -->
|
||||
Designed by <a href="https://bootstrapmade.com/">BootstrapMade</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="social-links text-center text-md-right pt-3 pt-md-0">
|
||||
<a href="https://www.youtube.com/channel/UCcMpXFCMCJj_TmcfhQ28l-A" class="youtube" target="_blank" ><i class="bx bxl-youtube"></i></a>
|
||||
<a href="#" class="facebook" target="_blank" ><i class="bx bxl-facebook"></i></a>
|
||||
<a href="https://www.instagram.com/The_Quranic_Way/" target="_blank" class="instagram"><i class="bx bxl-instagram"></i></a>
|
||||
</div>
|
||||
</div>
|
||||
</footer><!-- End Footer -->
|
||||
|
||||
<a href="#" class="back-to-top"><i class="bx bx-up-arrow-alt"></i></a>
|
||||
<div id="preloader"></div>
|
||||
49
_backup/components/getcourse.php
Normal file
@@ -0,0 +1,49 @@
|
||||
<?php
|
||||
|
||||
if($authenticated)
|
||||
{
|
||||
$courseCode = getData("cid");
|
||||
|
||||
if($courseCode)
|
||||
{
|
||||
|
||||
$sql = "SELECT * FROM courses c
|
||||
INNER JOIN registrations r on r.course_id = c.id
|
||||
INNER JOIN users u on u.id = r.user_id
|
||||
WHERE u.id = ?
|
||||
AND r.payment_status = ?
|
||||
AND c.code = ?";
|
||||
}
|
||||
else
|
||||
{
|
||||
$sql = "SELECT * FROM courses c
|
||||
INNER JOIN registrations r on r.course_id = c.id
|
||||
INNER JOIN users u on u.id = r.user_id
|
||||
WHERE u.id = ?
|
||||
AND r.payment_status = ?
|
||||
LIMIT 1";
|
||||
|
||||
}
|
||||
|
||||
$statement = $connection->prepare($sql);
|
||||
|
||||
if($courseCode)
|
||||
{
|
||||
$statement->execute([$userId, 'paid', $courseCode]);
|
||||
}
|
||||
else
|
||||
{
|
||||
$statement->execute([$userId, 'paid']);
|
||||
|
||||
}
|
||||
|
||||
$selectedCourse = $statement->fetchAll();
|
||||
|
||||
foreach($selectedCourse as $loggedCourse)
|
||||
{
|
||||
$loggedCourseTitle = $loggedCourse["title"];
|
||||
$loggedCourseId = $loggedCourse["course_id"];
|
||||
|
||||
logAction($userId, $loggedCourseId, "Viewing Course: ".$loggedCourseTitle);
|
||||
}
|
||||
}
|
||||
24
_backup/components/getcourselibrary.php
Normal file
@@ -0,0 +1,24 @@
|
||||
<?php
|
||||
|
||||
$courseTitle = "INVALID COURSE";
|
||||
$courseId = 0;
|
||||
$price = "INVALID COURSE";
|
||||
$allowRegistration = false;
|
||||
|
||||
$courseList = [];
|
||||
|
||||
if($courseCode = getData("cid"))
|
||||
{
|
||||
$data = getCourseDetailsByCode($courseCode);
|
||||
$courseTitle = $data["title"] ?? "INVALID COURSE";
|
||||
$courseId = $data["id"] ?? "INVALID COURSE";
|
||||
$price = $data["price"] ?? 0;
|
||||
|
||||
|
||||
$allowRegistration = ($data) ? true: false;
|
||||
}
|
||||
else
|
||||
{
|
||||
//get all courses
|
||||
$courseList = getAllCourses();
|
||||
}
|
||||
29
_backup/components/getmedia.php
Normal file
@@ -0,0 +1,29 @@
|
||||
<?php
|
||||
|
||||
if($authenticated)
|
||||
{
|
||||
$courseCode = getData("cid");
|
||||
|
||||
if($courseCode)
|
||||
{
|
||||
|
||||
$sql = "SELECT * FROM media m
|
||||
INNER JOIN courses c ON c.id = m.course_id
|
||||
WHERE c.code = ?
|
||||
AND m.enabled = 1
|
||||
ORDER BY source ASC";
|
||||
$statement = $connection->prepare($sql);
|
||||
|
||||
$statement->execute([$courseCode]);
|
||||
|
||||
$courseMedia = $statement->fetchAll();
|
||||
|
||||
$selectedCourseMedia = [];
|
||||
|
||||
foreach($courseMedia as $media)
|
||||
{
|
||||
$selectedCourseMedia[] = ["file" => $media["source"]];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
18
_backup/components/listcourses.php
Normal file
@@ -0,0 +1,18 @@
|
||||
<?php
|
||||
|
||||
$security = $_SESSION["tqw_firewall"] ?? [];
|
||||
|
||||
$userId = $security["userId"] ?? 0;
|
||||
|
||||
|
||||
$sql = "SELECT * FROM courses c
|
||||
INNER JOIN registrations r on r.course_id = c.id
|
||||
INNER JOIN users u on u.id = r.user_id
|
||||
WHERE u.id = ?
|
||||
AND r.payment_status = ?";
|
||||
|
||||
$statement =$connection->prepare($sql);
|
||||
|
||||
$statement->execute([$userId, 'paid']);
|
||||
|
||||
$myCourses = $statement->fetchAll();
|
||||
4
_backup/components/loadcourse.php
Normal file
@@ -0,0 +1,4 @@
|
||||
<?php
|
||||
// get the user
|
||||
// get the list of courses for this user
|
||||
//
|
||||
7
_backup/components/logout.php
Normal file
@@ -0,0 +1,7 @@
|
||||
<?php
|
||||
require_once ("start.php");
|
||||
|
||||
|
||||
session_destroy();
|
||||
|
||||
header("location:/mycourses.php");
|
||||
44
_backup/components/menu.php
Normal file
@@ -0,0 +1,44 @@
|
||||
<!-- ======= Header ======= -->
|
||||
<header id="header" class="fixed-top">
|
||||
<div class="container d-flex align-items-center">
|
||||
|
||||
<!-- <h1 class="logo me-auto"><a href="index.html">Mentor</a></h1>-->
|
||||
<!-- Uncomment below if you prefer to use an image logo -->
|
||||
<a href="index.php" class="logo me-auto"><img src="assets/img/logo.png" alt="" class="img-fluid res"></a>
|
||||
|
||||
<nav class="nav-menu d-none d-lg-block">
|
||||
<ul>
|
||||
<li class="active"><a href="index.php">Home</a></li>
|
||||
<li><a href="about.php">About</a></li>
|
||||
<li><a href="onlinecourses.php">Online Courses</a></li>
|
||||
<li><a href="mycourses.php">My Courses</a></li>
|
||||
<!-- <li><a href="courses.php">Past Courses</a></li>-->
|
||||
<!-- <li><a href="trainers.html">Trainers</a></li>-->
|
||||
<!-- <li><a href="events.html">Events</a></li>-->
|
||||
<!-- <li><a href="pricing.html">Pricing</a></li>-->
|
||||
<!-- <li class="drop-down"><a href="">Drop Down</a>-->
|
||||
<!-- <ul>-->
|
||||
<!-- <li><a href="#">Drop Down 1</a></li>-->
|
||||
<!-- <li class="drop-down"><a href="#">Deep Drop Down</a>-->
|
||||
<!-- <ul>-->
|
||||
<!-- <li><a href="#">Deep Drop Down 1</a></li>-->
|
||||
<!-- <li><a href="#">Deep Drop Down 2</a></li>-->
|
||||
<!-- <li><a href="#">Deep Drop Down 3</a></li>-->
|
||||
<!-- <li><a href="#">Deep Drop Down 4</a></li>-->
|
||||
<!-- <li><a href="#">Deep Drop Down 5</a></li>-->
|
||||
<!-- </ul>-->
|
||||
<!-- </li>-->
|
||||
<!-- <li><a href="#">Drop Down 2</a></li>-->
|
||||
<!-- <li><a href="#">Drop Down 3</a></li>-->
|
||||
<!-- <li><a href="#">Drop Down 4</a></li>-->
|
||||
<!-- </ul>-->
|
||||
<!-- </li>-->
|
||||
<li><a href="contact.php">Contact</a></li>
|
||||
|
||||
</ul>
|
||||
</nav><!-- .nav-menu -->
|
||||
|
||||
<!-- <a href="courses.php" class="get-started-btn">Get Started</a>-->
|
||||
|
||||
</div>
|
||||
</header><!-- End Header -->
|
||||
38
_backup/components/phpmailer.php
Normal file
@@ -0,0 +1,38 @@
|
||||
<?php
|
||||
|
||||
//Import PHPMailer classes into the global namespace
|
||||
//These must be at the top of your script, not inside a function
|
||||
use PHPMailer\PHPMailer\PHPMailer;
|
||||
use PHPMailer\PHPMailer\SMTP;
|
||||
use PHPMailer\PHPMailer\Exception;
|
||||
|
||||
//Instantiation and passing `true` enables exceptions
|
||||
$mail = new PHPMailer(true);
|
||||
|
||||
try {
|
||||
//Server settings
|
||||
$mail->SMTPDebug = SMTP::DEBUG_SERVER; //Enable verbose debug output
|
||||
$mail->isSMTP(); //Send using SMTP
|
||||
$mail->Host = 'smtp.example.com'; //Set the SMTP server to send through
|
||||
$mail->SMTPAuth = true; //Enable SMTP authentication
|
||||
$mail->Username = 'user@example.com'; //SMTP username
|
||||
$mail->Password = 'secret'; //SMTP password
|
||||
$mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS; //Enable TLS encryption; `PHPMailer::ENCRYPTION_SMTPS` encouraged
|
||||
$mail->Port = 587; //TCP port to connect to, use 465 for `PHPMailer::ENCRYPTION_SMTPS` above
|
||||
|
||||
//Recipients
|
||||
$mail->setFrom('info@thequranicway.com', 'Admin | TheQuranicWay');
|
||||
$mail->addAddress($email, $name); //Add a recipient
|
||||
$mail->addReplyTo('info@thequranicway.com', 'Admin | TheQuranicWay'));
|
||||
|
||||
//Content
|
||||
$mail->isHTML(true); //Set email format to HTML
|
||||
$mail->Subject = 'Login details for Fasting Metamorphosis';
|
||||
$mail->Body = 'This is the HTML message body <b>in bold!</b>';
|
||||
$mail->AltBody = 'This is the body in plain text for non-HTML mail clients';
|
||||
|
||||
$mail->send();
|
||||
echo 'Message has been sent';
|
||||
} catch (Exception $e) {
|
||||
echo "Message could not be sent. Mailer Error: {$mail->ErrorInfo}";
|
||||
}
|
||||
360
_backup/components/registerCommand.php
Normal file
@@ -0,0 +1,360 @@
|
||||
<?php
|
||||
|
||||
ini_set("error_reporting", E_ALL);
|
||||
ini_set("display_errors", 1);
|
||||
ini_set("date.timezone", "Europe/London");
|
||||
ini_set("max_execution_time", 0);
|
||||
|
||||
use PHPMailer\PHPMailer\PHPMailer;
|
||||
use PHPMailer\PHPMailer\SMTP;
|
||||
use PHPMailer\PHPMailer\Exception;
|
||||
|
||||
$documentRoot = dirname(__FILE__);
|
||||
require_once($documentRoot."/../vendor/autoload.php");
|
||||
|
||||
$aLiveDbParam = array( 'host' => 'db724771930.db.1and1.com'
|
||||
, 'dbname' => 'db724771930'
|
||||
, 'username' => 'dbo724771930'
|
||||
, 'password' => '3ZL1ykDeR8PQ%' );
|
||||
|
||||
$aLiveDbParam = array( 'host' => 'db725805720.db.1and1.com'
|
||||
, 'dbname' => 'db725805720'
|
||||
, 'username' => 'dbo725805720'
|
||||
, 'password' => '1Qn*P2o!z3cq' );
|
||||
|
||||
|
||||
$connection = new PDO('mysql:host='.$aLiveDbParam["host"].';dbname='.$aLiveDbParam["dbname"],
|
||||
$aLiveDbParam["username"],
|
||||
$aLiveDbParam["password"]
|
||||
);
|
||||
|
||||
|
||||
|
||||
// IBW Only
|
||||
$sql = "SELECT id, first_name,
|
||||
last_name,
|
||||
email,
|
||||
username,
|
||||
(sum(time_in_session)/420*100) as `attendance %`
|
||||
FROM attendee_ibw_day
|
||||
WHERE attended = 'Yes'
|
||||
AND email NOT IN (SELECT email FROM attendee_rsr_day_1 GROUP BY email)
|
||||
GROUP BY email
|
||||
HAVING (sum(time_in_session)/420*100) >= 70
|
||||
ORDER BY id ASC";
|
||||
|
||||
// RSR Only
|
||||
$sql = "SELECT id, first_name,
|
||||
last_name,
|
||||
email,
|
||||
username
|
||||
FROM attendee_rsr_day_1
|
||||
WHERE email NOT IN (SELECT email
|
||||
FROM attendee_ibw_day
|
||||
WHERE attended = 'Yes'
|
||||
GROUP BY email
|
||||
HAVING (sum(time_in_session)/420*100) >= 70 )
|
||||
GROUP BY email";
|
||||
|
||||
// RSR AND IBW
|
||||
$sql = "SELECT id, first_name,
|
||||
last_name,
|
||||
email,
|
||||
username,
|
||||
(sum(time_in_session)/420*100) as `attendance %`
|
||||
FROM attendee_ibw_day
|
||||
WHERE attended = 'Yes'
|
||||
AND email IN (SELECT email FROM attendee_rsr_day_1 GROUP BY email)
|
||||
GROUP BY email
|
||||
HAVING (sum(time_in_session)/420*100) >= 70
|
||||
ORDER BY `attendee_ibw_day`.`email` ASC";
|
||||
|
||||
$statement = $connection->prepare($sql);
|
||||
|
||||
$statement->execute();
|
||||
|
||||
$result = $statement->fetchAll();
|
||||
|
||||
$recordingAvailablelist = [];
|
||||
$loginList = [];
|
||||
|
||||
foreach($result as $row)
|
||||
{
|
||||
$name = $row["username"];
|
||||
$email = $row["email"];
|
||||
$courseId = [2,3];
|
||||
$courseTitle = "RSR and IBW";
|
||||
|
||||
if(!$userId = checkUserRegistered($email))
|
||||
{
|
||||
$password = registerBooking($email, $name, $courseId);
|
||||
$message = prepareEmail($email, $name, $password, $courseTitle);
|
||||
$subject = "Login details for ".$courseTitle;
|
||||
|
||||
$loginList[] = array($email, $name, $password, $subject);
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
registerBooking($email, $name, $courseId, $userId);
|
||||
$message = prepareEmailRegisterd($name, $courseTitle);
|
||||
$subject = "Recording for ". $courseTitle. " is now available, please login";
|
||||
|
||||
$recordingAvailablelist[] = array($email, $name, $subject);
|
||||
|
||||
}
|
||||
|
||||
$file = fopen("recording_available_both_rsr_ibw.csv","w");
|
||||
|
||||
foreach ($recordingAvailablelist as $line) {
|
||||
fputcsv($file, $line);
|
||||
}
|
||||
|
||||
fclose($file);
|
||||
|
||||
|
||||
|
||||
$file = fopen("login_details_both_rsr_ibw.csv","w");
|
||||
|
||||
foreach ($loginList as $line) {
|
||||
fputcsv($file, $line);
|
||||
}
|
||||
|
||||
fclose($file);
|
||||
|
||||
// sendEmail($message, $email, $name, $subject);
|
||||
|
||||
}
|
||||
|
||||
function checkUserRegistered($email)
|
||||
{
|
||||
global $connection;
|
||||
|
||||
$sSql = "SELECT id, email FROM users WHERE email = ? LIMIT 1";
|
||||
|
||||
$statement = $connection->prepare($sSql);
|
||||
|
||||
$statement->execute([$email]);
|
||||
|
||||
$result = $statement->fetchAll();
|
||||
|
||||
$userId = 0;
|
||||
|
||||
foreach($result as $row)
|
||||
{
|
||||
$userId = $row["id"];
|
||||
}
|
||||
|
||||
return $userId;
|
||||
}
|
||||
|
||||
|
||||
function registerBooking($email, $name, $courseId, $userId = null)
|
||||
{
|
||||
global $connection;
|
||||
|
||||
$password = null;
|
||||
|
||||
if(!$userId)
|
||||
{
|
||||
$password = generateStrongPassword();
|
||||
|
||||
$passwordHashed = password_hash($password, PASSWORD_BCRYPT);
|
||||
// insert into users
|
||||
$sql = "INSERT IGNORE INTO users (email, name, password ) VALUES (?, ?, ?)";
|
||||
|
||||
$connection->prepare($sql)->execute([$email, $name, $passwordHashed]);
|
||||
|
||||
$userId = $connection->lastInsertId();
|
||||
}
|
||||
|
||||
if($userId > 0 )
|
||||
{
|
||||
if(!is_array($courseId))
|
||||
{
|
||||
$courseId = [$courseId];
|
||||
}
|
||||
|
||||
foreach($courseId as $id)
|
||||
{
|
||||
// insert into booking
|
||||
$sql ="INSERT IGNORE INTO registrations (course_id, user_id, payment_status ) VALUES (?, ?, ?)";
|
||||
$connection->prepare($sql)->execute([$id, $userId, 'paid']);
|
||||
|
||||
$registrationId = $connection->lastInsertId();
|
||||
|
||||
echo "\n\nuser ". $email ." registered\n\n";
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
echo "\n\nuser ". $email ." already registered\n\n";
|
||||
}
|
||||
|
||||
return $password;
|
||||
|
||||
}
|
||||
|
||||
function prepareEmailRegisterd($name, $courseTitle)
|
||||
{
|
||||
$message = "<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”>
|
||||
<html xmlns=“https://www.w3.org/1999/xhtml”>
|
||||
<head>
|
||||
<title>Registration Confirmation</title>
|
||||
<meta http–equiv=“Content-Type” content=“text/html; charset=UTF-8” />
|
||||
<meta http–equiv=“X-UA-Compatible” content=“IE=edge” />
|
||||
<meta name=“viewport” content=“width=device-width, initial-scale=1.0 “ />
|
||||
<style>
|
||||
<!— CSS code (if any) —>
|
||||
</style>
|
||||
</head><body>";
|
||||
|
||||
$message .= "<p>Dear $name</p>
|
||||
<p>Assalam alaikoum Wa Rahmatu Allah Wa Barakatuh</p>
|
||||
<p>You have been automatically registered for the course <strong>$courseTitle</strong></p>
|
||||
<p>The course is now available to watch online.</p>
|
||||
<p>You should have already recieved login details. If you didn't or having problem accessing your account please email us at <a href=\"mailto:info@thequranicway.com\">info@thequranicway.com</a></p>
|
||||
<p>Fee amanillah</p>
|
||||
<p>Admin Team</p>";
|
||||
|
||||
$message .= "</body></html>";
|
||||
|
||||
return $message;
|
||||
}
|
||||
|
||||
function prepareEmail($email, $name, $password, $courseTitle)
|
||||
{
|
||||
global $connection;
|
||||
|
||||
$message = "<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”>
|
||||
<html xmlns=“https://www.w3.org/1999/xhtml”>
|
||||
<head>
|
||||
<title>Registration Confirmation</title>
|
||||
<meta http–equiv=“Content-Type” content=“text/html; charset=UTF-8” />
|
||||
<meta http–equiv=“X-UA-Compatible” content=“IE=edge” />
|
||||
<meta name=“viewport” content=“width=device-width, initial-scale=1.0 “ />
|
||||
<style>
|
||||
<!— CSS code (if any) —>
|
||||
</style>
|
||||
</head><body>";
|
||||
|
||||
$message .= "<p>Dear $name</p>
|
||||
<p>Assalam alaikoum Wa Rahmatu Allah Wa Barakatuh</p>
|
||||
<p>Thank you for registering on the course <strong>$courseTitle</strong></p>
|
||||
<p>The recording is now available online to watch.</p>
|
||||
<p>Please find below your login details</p>
|
||||
<p><strong>https://www.thequranicway.com/mycourses.php</strong></p>
|
||||
<p><strong>username: $email</strong></p>
|
||||
<p><strong>password: $password</strong></p>
|
||||
<p>If you have any problems accessing your course, please email us at <a href=\"mailto:info@thequranicway.com\">info@thequranicway.com</a></p>
|
||||
<p>Fee amanillah</p>
|
||||
<p>Admin Team</p>";
|
||||
|
||||
$message .= "</body></html>";
|
||||
|
||||
return $message;
|
||||
|
||||
}
|
||||
|
||||
function sendEmail($message, $email, $name, $subject)
|
||||
{
|
||||
//Instantiation and passing `true` enables exceptions
|
||||
$mail = new PHPMailer(true);
|
||||
|
||||
try {
|
||||
//Server settings
|
||||
$mail->SMTPDebug = SMTP::DEBUG_SERVER; //Enable verbose debug output
|
||||
$mail->isSMTP(); //Send using SMTP
|
||||
$mail->Host = 'smtp.ionos.co.uk'; //Set the SMTP server to send through
|
||||
$mail->SMTPAuth = true; //Enable SMTP authentication
|
||||
$mail->Username = 'info@thequranicway.com'; //SMTP username
|
||||
$mail->Password = 'Rd25&Mwd%RsJ'; //SMTP password
|
||||
$mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS; //Enable TLS encryption; `PHPMailer::ENCRYPTION_SMTPS` encouraged
|
||||
$mail->Port = 587; //TCP port to connect to, use 465 for `PHPMailer::ENCRYPTION_SMTPS` above
|
||||
|
||||
//Recipients
|
||||
$mail->setFrom('info@thequranicway.com', 'Admin | TheQuranicWay');
|
||||
$mail->addAddress($email, $name); //Add a recipient
|
||||
$mail->addBCC('ayman.baba@appsync.co.uk', 'Noesis Institute'); // Add a recipient
|
||||
$mail->addReplyTo('info@thequranicway.com', 'Admin | TheQuranicWay');
|
||||
|
||||
//Content
|
||||
$mail->isHTML(true); //Set email format to HTML
|
||||
$mail->Subject = $subject;
|
||||
$mail->Body = $message;
|
||||
|
||||
$mail->send();
|
||||
echo 'Message has been sent';
|
||||
} catch (Exception $e) {
|
||||
echo "Message could not be sent. Mailer Error: {$mail->ErrorInfo}";
|
||||
}
|
||||
}
|
||||
|
||||
function generateStrongPassword($length = 8, $add_dashes = false, $available_sets = 'luds')
|
||||
{
|
||||
$sets = array();
|
||||
if(strpos($available_sets, 'l') !== false)
|
||||
$sets[] = 'abcdefghjkmnpqrstuvwxyz';
|
||||
if(strpos($available_sets, 'u') !== false)
|
||||
$sets[] = 'ABCDEFGHJKMNPQRSTUVWXYZ';
|
||||
if(strpos($available_sets, 'd') !== false)
|
||||
$sets[] = '23456789';
|
||||
if(strpos($available_sets, 's') !== false)
|
||||
$sets[] = '!@#$%&*?';
|
||||
|
||||
$all = '';
|
||||
$password = '';
|
||||
foreach($sets as $set)
|
||||
{
|
||||
$password .= $set[array_rand(str_split($set))];
|
||||
$all .= $set;
|
||||
}
|
||||
|
||||
$all = str_split($all);
|
||||
for($i = 0; $i < $length - count($sets); $i++)
|
||||
$password .= $all[array_rand($all)];
|
||||
|
||||
$password = str_shuffle($password);
|
||||
|
||||
if(!$add_dashes)
|
||||
return $password;
|
||||
|
||||
$dash_len = floor(sqrt($length));
|
||||
$dash_str = '';
|
||||
while(strlen($password) > $dash_len)
|
||||
{
|
||||
$dash_str .= substr($password, 0, $dash_len) . '-';
|
||||
$password = substr($password, $dash_len);
|
||||
}
|
||||
$dash_str .= $password;
|
||||
return $dash_str;
|
||||
}
|
||||
|
||||
|
||||
|
||||
//// IBW and RSR
|
||||
//SELECT id, first_name,
|
||||
// last_name,
|
||||
// email,
|
||||
// username,
|
||||
// (sum(time_in_session)/420*100) as `attendance %`
|
||||
//FROM attendee_ibw_day
|
||||
//WHERE attended = 'Yes'
|
||||
//AND email IN (SELECT email FROM attendee_rsr_day_1 GROUP BY email)
|
||||
//GROUP BY email
|
||||
//HAVING (sum(time_in_session)/420*100) >= 70
|
||||
//ORDER BY id ASC
|
||||
//
|
||||
//// RSR Only
|
||||
//SELECT id, first_name,
|
||||
// last_name,
|
||||
// email,
|
||||
// username
|
||||
//FROM attendee_rsr_day_1
|
||||
//WHERE email NOT IN (SELECT email
|
||||
// FROM attendee_ibw_day
|
||||
// WHERE attended = 'Yes'
|
||||
// GROUP BY email
|
||||
// HAVING (sum(time_in_session)/420*100) >= 70 )
|
||||
//GROUP BY email
|
||||
16
_backup/components/scripts_footer.php
Normal file
@@ -0,0 +1,16 @@
|
||||
<!-- Vendor JS Files -->
|
||||
<script src="assets/vendor/jquery/jquery.min.js"></script>
|
||||
<!--<script src="assets/vendor/bootstrap/js/bootstrap.js"></script>-->
|
||||
<script src="https://cdn.rawgit.com/JacobLett/bootstrap4-latest/master/bootstrap-4-latest.min.js"></script>
|
||||
<!--<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta3/dist/js/bootstrap.bundle.min.js" integrity="sha384-JEW9xMcG8R+pH31jmWH6WWP0WintQrMb4s7ZOdauHnUtxwoG2vI5DkLtS3qm9Ekf" crossorigin="anonymous"></script>-->
|
||||
<script src="assets/vendor/jquery.easing/jquery.easing.min.js"></script>
|
||||
<script src="assets/vendor/php-email-form/validate.js"></script>
|
||||
<script src="assets/vendor/waypoints/jquery.waypoints.min.js"></script>
|
||||
<script src="assets/vendor/counterup/counterup.min.js"></script>
|
||||
<script src="assets/vendor/owl.carousel/owl.carousel.min.js"></script>
|
||||
<script src="assets/vendor/aos/aos.js"></script>
|
||||
|
||||
<!-- Template Main JS File -->
|
||||
<script src="assets/js/main.js"></script>
|
||||
|
||||
|
||||
31
_backup/components/scripts_header.php
Normal file
@@ -0,0 +1,31 @@
|
||||
<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />
|
||||
<meta http-equiv="Pragma" content="no-cache" />
|
||||
<meta http-equiv="Expires" content="0" />
|
||||
<!-- Favicons -->
|
||||
<!-- <link href="assets/img/favicon.png" rel="icon">-->
|
||||
<!--<link href="assets/img/apple-touch-icon.png" rel="apple-touch-icon">-->
|
||||
|
||||
<!-- Google Fonts -->
|
||||
<link href="https://fonts.googleapis.com/css?family=Open+Sans:300,300i,400,400i,600,600i,700,700i|Raleway:300,300i,400,400i,500,500i,600,600i,700,700i|Poppins:300,300i,400,400i,500,500i,600,600i,700,700i" rel="stylesheet">
|
||||
|
||||
<!-- Vendor CSS Files -->
|
||||
<!--<link href="assets/vendor/bootstrap/css/bootstrap.min.css" rel="stylesheet">-->
|
||||
<link href="https://cdn.rawgit.com/JacobLett/bootstrap4-latest/master/bootstrap-4-latest.min.css" rel="stylesheet">
|
||||
<!--<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-eOJMYsd53ii+scO/bJGFsiCZc+5NDVN2yr8+0RDqr0Ql0h+rP48ckxlpbzKgwra6" crossorigin="anonymous">-->
|
||||
<link href="assets/vendor/icofont/icofont.min.css" rel="stylesheet">
|
||||
<link href="assets/vendor/boxicons/css/boxicons.min.css" rel="stylesheet">
|
||||
<link href="assets/vendor/remixicon/remixicon.css" rel="stylesheet">
|
||||
<link href="assets/vendor/owl.carousel/assets/owl.carousel.min.css" rel="stylesheet">
|
||||
<link href="assets/vendor/animate.css/animate.min.css" rel="stylesheet">
|
||||
<link href="assets/vendor/aos/aos.css" rel="stylesheet">
|
||||
|
||||
<!-- Template Main CSS File -->
|
||||
<link href="assets/css/style.css" rel="stylesheet">
|
||||
<link href="assets/css/login.css" rel="stylesheet">
|
||||
|
||||
<!-- =======================================================
|
||||
* Template Name: Mentor - v3.0.0
|
||||
* Template URL: https://bootstrapmade.com/mentor-free-education-bootstrap-theme/
|
||||
* Author: BootstrapMade.com
|
||||
* License: https://bootstrapmade.com/license/
|
||||
======================================================== -->
|
||||
176
_backup/components/start.php
Normal file
@@ -0,0 +1,176 @@
|
||||
<?php
|
||||
session_start();
|
||||
|
||||
ini_set("error_reporting", E_ALL);
|
||||
ini_set("display_errors", 1);
|
||||
ini_set("date.timezone", "Europe/London");
|
||||
|
||||
$documentRoot = $_SERVER["DOCUMENT_ROOT"];
|
||||
|
||||
require_once($documentRoot."/vendor/autoload.php");
|
||||
|
||||
$aLiveDbParam = array( 'host' => 'db724771930.db.1and1.com'
|
||||
, 'dbname' => 'db724771930'
|
||||
, 'username' => 'dbo724771930'
|
||||
, 'password' => '3ZL1ykDeR8PQ%' );
|
||||
|
||||
$aLiveDbParam = array( 'host' => 'db725805720.db.1and1.com'
|
||||
, 'dbname' => 'db725805720'
|
||||
, 'username' => 'dbo725805720'
|
||||
, 'password' => '1Qn*P2o!z3cq' );
|
||||
|
||||
|
||||
$connection = new PDO('mysql:host='.$aLiveDbParam["host"].';dbname='.$aLiveDbParam["dbname"],
|
||||
$aLiveDbParam["username"],
|
||||
$aLiveDbParam["password"]
|
||||
);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
function generateStrongPassword($length = 6, $add_dashes = false, $available_sets = 'luds')
|
||||
{
|
||||
$sets = array();
|
||||
if(strpos($available_sets, 'l') !== false)
|
||||
$sets[] = 'abcdefghjkmnpqrstuvwxyz';
|
||||
if(strpos($available_sets, 'u') !== false)
|
||||
$sets[] = 'ABCDEFGHJKMNPQRSTUVWXYZ';
|
||||
if(strpos($available_sets, 'd') !== false)
|
||||
$sets[] = '23456789';
|
||||
if(strpos($available_sets, 's') !== false)
|
||||
$sets[] = '!@#$%&*?';
|
||||
|
||||
$all = '';
|
||||
$password = '';
|
||||
foreach($sets as $set)
|
||||
{
|
||||
$password .= $set[array_rand(str_split($set))];
|
||||
$all .= $set;
|
||||
}
|
||||
|
||||
$all = str_split($all);
|
||||
for($i = 0; $i < $length - count($sets); $i++)
|
||||
$password .= $all[array_rand($all)];
|
||||
|
||||
$password = str_shuffle($password);
|
||||
|
||||
if(!$add_dashes)
|
||||
return $password;
|
||||
|
||||
$dash_len = floor(sqrt($length));
|
||||
$dash_str = '';
|
||||
while(strlen($password) > $dash_len)
|
||||
{
|
||||
$dash_str .= substr($password, 0, $dash_len) . '-';
|
||||
$password = substr($password, $dash_len);
|
||||
}
|
||||
$dash_str .= $password;
|
||||
return $dash_str;
|
||||
}
|
||||
|
||||
function getPostData($sName){
|
||||
if( isset($_POST[$sName] ) && $_POST[$sName] ){
|
||||
return $_POST[$sName];
|
||||
}else{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
function getData($sName){
|
||||
if( isset($_REQUEST[$sName] ) && $_REQUEST[$sName] ){
|
||||
return $_REQUEST[$sName];
|
||||
}else{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
function logAction($userId, $courseId, $action)
|
||||
{
|
||||
global $connection;
|
||||
|
||||
$sql = "INSERT INTO logs (user_id, course_id, action) Values (?, ?, ?)";
|
||||
|
||||
$statement = $connection->prepare($sql);
|
||||
$statement->execute([$userId, $courseId, $action]);
|
||||
|
||||
}
|
||||
|
||||
function getCourseDetailsByCode($code)
|
||||
{
|
||||
global $connection;
|
||||
|
||||
$sql = "SELECT * FROM courses c
|
||||
WHERE c.code = ?
|
||||
LIMIT 1";
|
||||
|
||||
$statement = $connection->prepare($sql);
|
||||
|
||||
$statement->execute([$code]);
|
||||
|
||||
$selectedCourse = $statement->fetchAll();
|
||||
|
||||
$data = [];
|
||||
|
||||
if(sizeof($selectedCourse) > 0)
|
||||
{
|
||||
foreach ($selectedCourse as $course)
|
||||
{
|
||||
$data = $course;
|
||||
}
|
||||
}
|
||||
|
||||
return $data;
|
||||
}
|
||||
|
||||
function getCourseDetailsById($id)
|
||||
{
|
||||
global $connection;
|
||||
|
||||
$sql = "SELECT * FROM courses c
|
||||
WHERE c.id = ?
|
||||
LIMIT 1";
|
||||
|
||||
$statement = $connection->prepare($sql);
|
||||
|
||||
$statement->execute([$id]);
|
||||
|
||||
$selectedCourse = $statement->fetchAll();
|
||||
|
||||
$data = [];
|
||||
|
||||
if(sizeof($selectedCourse) > 0)
|
||||
{
|
||||
foreach ($selectedCourse as $course)
|
||||
{
|
||||
$data = $course;
|
||||
}
|
||||
}
|
||||
|
||||
return $data;
|
||||
}
|
||||
|
||||
function getAllCourses()
|
||||
{
|
||||
global $connection;
|
||||
|
||||
$sql = "SELECT * FROM courses c";
|
||||
|
||||
$statement = $connection->prepare($sql);
|
||||
|
||||
$statement->execute();
|
||||
|
||||
$selectedCourse = $statement->fetchAll();
|
||||
|
||||
$data = [];
|
||||
|
||||
if(sizeof($selectedCourse) > 0)
|
||||
{
|
||||
foreach ($selectedCourse as $course)
|
||||
{
|
||||
$data[] = $course;
|
||||
}
|
||||
}
|
||||
|
||||
return $data;
|
||||
}
|
||||
5
_backup/crossdomain.xml
Executable file
@@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE cross-domain-policy SYSTEM "http://www.adobe.com/xml/dtds/cross-domain-policy.dtd">
|
||||
<cross-domain-policy>
|
||||
<allow-access-from domain="*"/>
|
||||
</cross-domain-policy>
|
||||
668
_backup/email.html
Normal file
@@ -0,0 +1,668 @@
|
||||
<!doctype html>
|
||||
<html xmlns:fb="http://www.facebook.com/2008/fbml" xmlns:og="http://opengraph.org/schema/"> <head>
|
||||
|
||||
<meta property="og:title" content="test"/>
|
||||
<meta property="fb:page_id" content="43929265776" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1" />
|
||||
<!-- NAME: 1 COLUMN -->
|
||||
<!--[if gte mso 15]>
|
||||
<xml>
|
||||
<o:OfficeDocumentSettings>
|
||||
<o:AllowPNG/>
|
||||
<o:PixelsPerInch>96</o:PixelsPerInch>
|
||||
</o:OfficeDocumentSettings>
|
||||
</xml>
|
||||
<![endif]-->
|
||||
<meta charset="UTF-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>Noesis Institute: Prayer Beyond Motion | Quranic Parent</title>
|
||||
|
||||
<style type="text/css">
|
||||
p{
|
||||
margin:10px 0;
|
||||
padding:0;
|
||||
}
|
||||
table{
|
||||
border-collapse:collapse;
|
||||
}
|
||||
h1,h2,h3,h4,h5,h6{
|
||||
display:block;
|
||||
margin:0;
|
||||
padding:0;
|
||||
}
|
||||
img,a img{
|
||||
border:0;
|
||||
height:auto;
|
||||
outline:none;
|
||||
text-decoration:none;
|
||||
}
|
||||
body,#bodyTable,#bodyCell{
|
||||
height:100%;
|
||||
margin:0;
|
||||
padding:0;
|
||||
width:100%;
|
||||
}
|
||||
#outlook a{
|
||||
padding:0;
|
||||
}
|
||||
img{
|
||||
-ms-interpolation-mode:bicubic;
|
||||
}
|
||||
table{
|
||||
mso-table-lspace:0pt;
|
||||
mso-table-rspace:0pt;
|
||||
}
|
||||
.ReadMsgBody{
|
||||
width:100%;
|
||||
}
|
||||
.ExternalClass{
|
||||
width:100%;
|
||||
}
|
||||
p,a,li,td,blockquote{
|
||||
mso-line-height-rule:exactly;
|
||||
}
|
||||
a[href^=tel],a[href^=sms]{
|
||||
color:inherit;
|
||||
cursor:default;
|
||||
text-decoration:none;
|
||||
}
|
||||
p,a,li,td,body,table,blockquote{
|
||||
-ms-text-size-adjust:100%;
|
||||
-webkit-text-size-adjust:100%;
|
||||
}
|
||||
.ExternalClass,.ExternalClass p,.ExternalClass td,.ExternalClass div,.ExternalClass span,.ExternalClass font{
|
||||
line-height:100%;
|
||||
}
|
||||
a[x-apple-data-detectors]{
|
||||
color:inherit !important;
|
||||
text-decoration:none !important;
|
||||
font-size:inherit !important;
|
||||
font-family:inherit !important;
|
||||
font-weight:inherit !important;
|
||||
line-height:inherit !important;
|
||||
}
|
||||
#bodyCell{
|
||||
padding:10px;
|
||||
}
|
||||
.templateContainer{
|
||||
max-width:600px !important;
|
||||
}
|
||||
a.mcnButton{
|
||||
display:block;
|
||||
}
|
||||
.mcnImage{
|
||||
vertical-align:bottom;
|
||||
}
|
||||
.mcnTextContent{
|
||||
word-break:break-word;
|
||||
}
|
||||
.mcnTextContent img{
|
||||
height:auto !important;
|
||||
}
|
||||
.mcnDividerBlock{
|
||||
table-layout:fixed !important;
|
||||
}
|
||||
body,#bodyTable{
|
||||
background-color:#FAFAFA;
|
||||
}
|
||||
#bodyCell{
|
||||
border-top:0;
|
||||
}
|
||||
.templateContainer{
|
||||
border:0;
|
||||
}
|
||||
h1{
|
||||
color:#202020;
|
||||
font-family:Helvetica;
|
||||
font-size:26px;
|
||||
font-style:normal;
|
||||
font-weight:bold;
|
||||
line-height:125%;
|
||||
letter-spacing:normal;
|
||||
text-align:left;
|
||||
}
|
||||
h2{
|
||||
color:#202020;
|
||||
font-family:Helvetica;
|
||||
font-size:22px;
|
||||
font-style:normal;
|
||||
font-weight:bold;
|
||||
line-height:125%;
|
||||
letter-spacing:normal;
|
||||
text-align:left;
|
||||
}
|
||||
h3{
|
||||
color:#202020;
|
||||
font-family:Helvetica;
|
||||
font-size:20px;
|
||||
font-style:normal;
|
||||
font-weight:bold;
|
||||
line-height:125%;
|
||||
letter-spacing:normal;
|
||||
text-align:left;
|
||||
}
|
||||
h4{
|
||||
color:#202020;
|
||||
font-family:Helvetica;
|
||||
font-size:18px;
|
||||
font-style:normal;
|
||||
font-weight:bold;
|
||||
line-height:125%;
|
||||
letter-spacing:normal;
|
||||
text-align:left;
|
||||
}
|
||||
#templatePreheader{
|
||||
background-color:#FAFAFA;
|
||||
background-image:none;
|
||||
background-repeat:no-repeat;
|
||||
background-position:center;
|
||||
background-size:cover;
|
||||
border-top:0;
|
||||
border-bottom:0;
|
||||
padding-top:9px;
|
||||
padding-bottom:9px;
|
||||
}
|
||||
#templatePreheader .mcnTextContent,#templatePreheader .mcnTextContent p{
|
||||
color:#656565;
|
||||
font-family:Helvetica;
|
||||
font-size:12px;
|
||||
line-height:150%;
|
||||
text-align:left;
|
||||
}
|
||||
#templatePreheader .mcnTextContent a,#templatePreheader .mcnTextContent p a{
|
||||
color:#656565;
|
||||
font-weight:normal;
|
||||
text-decoration:underline;
|
||||
}
|
||||
#templateHeader{
|
||||
background-color:#FFFFFF;
|
||||
background-image:none;
|
||||
background-repeat:no-repeat;
|
||||
background-position:center;
|
||||
background-size:cover;
|
||||
border-top:0;
|
||||
border-bottom:0;
|
||||
padding-top:9px;
|
||||
padding-bottom:0;
|
||||
}
|
||||
#templateHeader .mcnTextContent,#templateHeader .mcnTextContent p{
|
||||
color:#202020;
|
||||
font-family:Helvetica;
|
||||
font-size:16px;
|
||||
line-height:150%;
|
||||
text-align:left;
|
||||
}
|
||||
#templateHeader .mcnTextContent a,#templateHeader .mcnTextContent p a{
|
||||
color:#2BAADF;
|
||||
font-weight:normal;
|
||||
text-decoration:underline;
|
||||
}
|
||||
#templateBody{
|
||||
background-color:#FFFFFF;
|
||||
background-image:none;
|
||||
background-repeat:no-repeat;
|
||||
background-position:center;
|
||||
background-size:cover;
|
||||
border-top:0;
|
||||
border-bottom:2px solid #EAEAEA;
|
||||
padding-top:0;
|
||||
padding-bottom:9px;
|
||||
}
|
||||
#templateBody .mcnTextContent,#templateBody .mcnTextContent p{
|
||||
color:#202020;
|
||||
font-family:Helvetica;
|
||||
font-size:16px;
|
||||
line-height:150%;
|
||||
text-align:left;
|
||||
}
|
||||
#templateBody .mcnTextContent a,#templateBody .mcnTextContent p a{
|
||||
color:#2BAADF;
|
||||
font-weight:normal;
|
||||
text-decoration:underline;
|
||||
}
|
||||
#templateFooter{
|
||||
background-color:#FAFAFA;
|
||||
background-image:none;
|
||||
background-repeat:no-repeat;
|
||||
background-position:center;
|
||||
background-size:cover;
|
||||
border-top:0;
|
||||
border-bottom:0;
|
||||
padding-top:9px;
|
||||
padding-bottom:9px;
|
||||
}
|
||||
#templateFooter .mcnTextContent,#templateFooter .mcnTextContent p{
|
||||
color:#656565;
|
||||
font-family:Helvetica;
|
||||
font-size:12px;
|
||||
line-height:150%;
|
||||
text-align:center;
|
||||
}
|
||||
#templateFooter .mcnTextContent a,#templateFooter .mcnTextContent p a{
|
||||
color:#656565;
|
||||
font-weight:normal;
|
||||
text-decoration:underline;
|
||||
}
|
||||
@media only screen and (min-width:768px){
|
||||
.templateContainer{
|
||||
width:600px !important;
|
||||
}
|
||||
|
||||
} @media only screen and (max-width: 480px){
|
||||
body,table,td,p,a,li,blockquote{
|
||||
-webkit-text-size-adjust:none !important;
|
||||
}
|
||||
|
||||
} @media only screen and (max-width: 480px){
|
||||
body{
|
||||
width:100% !important;
|
||||
min-width:100% !important;
|
||||
}
|
||||
|
||||
} @media only screen and (max-width: 480px){
|
||||
#bodyCell{
|
||||
padding-top:10px !important;
|
||||
}
|
||||
|
||||
} @media only screen and (max-width: 480px){
|
||||
.mcnImage{
|
||||
width:100% !important;
|
||||
}
|
||||
|
||||
} @media only screen and (max-width: 480px){
|
||||
.mcnCartContainer,.mcnCaptionTopContent,.mcnRecContentContainer,.mcnCaptionBottomContent,.mcnTextContentContainer,.mcnBoxedTextContentContainer,.mcnImageGroupContentContainer,.mcnCaptionLeftTextContentContainer,.mcnCaptionRightTextContentContainer,.mcnCaptionLeftImageContentContainer,.mcnCaptionRightImageContentContainer,.mcnImageCardLeftTextContentContainer,.mcnImageCardRightTextContentContainer{
|
||||
max-width:100% !important;
|
||||
width:100% !important;
|
||||
}
|
||||
|
||||
} @media only screen and (max-width: 480px){
|
||||
.mcnBoxedTextContentContainer{
|
||||
min-width:100% !important;
|
||||
}
|
||||
|
||||
} @media only screen and (max-width: 480px){
|
||||
.mcnImageGroupContent{
|
||||
padding:9px !important;
|
||||
}
|
||||
|
||||
} @media only screen and (max-width: 480px){
|
||||
.mcnCaptionLeftContentOuter .mcnTextContent,.mcnCaptionRightContentOuter .mcnTextContent{
|
||||
padding-top:9px !important;
|
||||
}
|
||||
|
||||
} @media only screen and (max-width: 480px){
|
||||
.mcnImageCardTopImageContent,.mcnCaptionBlockInner .mcnCaptionTopContent:last-child .mcnTextContent{
|
||||
padding-top:18px !important;
|
||||
}
|
||||
|
||||
} @media only screen and (max-width: 480px){
|
||||
.mcnImageCardBottomImageContent{
|
||||
padding-bottom:9px !important;
|
||||
}
|
||||
|
||||
} @media only screen and (max-width: 480px){
|
||||
.mcnImageGroupBlockInner{
|
||||
padding-top:0 !important;
|
||||
padding-bottom:0 !important;
|
||||
}
|
||||
|
||||
} @media only screen and (max-width: 480px){
|
||||
.mcnImageGroupBlockOuter{
|
||||
padding-top:9px !important;
|
||||
padding-bottom:9px !important;
|
||||
}
|
||||
|
||||
} @media only screen and (max-width: 480px){
|
||||
.mcnTextContent,.mcnBoxedTextContentColumn{
|
||||
padding-right:18px !important;
|
||||
padding-left:18px !important;
|
||||
}
|
||||
|
||||
} @media only screen and (max-width: 480px){
|
||||
.mcnImageCardLeftImageContent,.mcnImageCardRightImageContent{
|
||||
padding-right:18px !important;
|
||||
padding-bottom:0 !important;
|
||||
padding-left:18px !important;
|
||||
}
|
||||
|
||||
} @media only screen and (max-width: 480px){
|
||||
.mcpreview-image-uploader{
|
||||
display:none !important;
|
||||
width:100% !important;
|
||||
}
|
||||
|
||||
} @media only screen and (max-width: 480px){
|
||||
h1{
|
||||
font-size:22px !important;
|
||||
line-height:125% !important;
|
||||
}
|
||||
|
||||
} @media only screen and (max-width: 480px){
|
||||
h2{
|
||||
font-size:20px !important;
|
||||
line-height:125% !important;
|
||||
}
|
||||
|
||||
} @media only screen and (max-width: 480px){
|
||||
h3{
|
||||
font-size:18px !important;
|
||||
line-height:125% !important;
|
||||
}
|
||||
|
||||
} @media only screen and (max-width: 480px){
|
||||
h4{
|
||||
font-size:16px !important;
|
||||
line-height:150% !important;
|
||||
}
|
||||
|
||||
} @media only screen and (max-width: 480px){
|
||||
.mcnBoxedTextContentContainer .mcnTextContent,.mcnBoxedTextContentContainer .mcnTextContent p{
|
||||
font-size:14px !important;
|
||||
line-height:150% !important;
|
||||
}
|
||||
|
||||
} @media only screen and (max-width: 480px){
|
||||
#templatePreheader{
|
||||
display:block !important;
|
||||
}
|
||||
|
||||
} @media only screen and (max-width: 480px){
|
||||
#templatePreheader .mcnTextContent,#templatePreheader .mcnTextContent p{
|
||||
font-size:14px !important;
|
||||
line-height:150% !important;
|
||||
}
|
||||
|
||||
} @media only screen and (max-width: 480px){
|
||||
#templateHeader .mcnTextContent,#templateHeader .mcnTextContent p{
|
||||
font-size:16px !important;
|
||||
line-height:150% !important;
|
||||
}
|
||||
|
||||
} @media only screen and (max-width: 480px){
|
||||
#templateBody .mcnTextContent,#templateBody .mcnTextContent p{
|
||||
font-size:16px !important;
|
||||
line-height:150% !important;
|
||||
}
|
||||
|
||||
} @media only screen and (max-width: 480px){
|
||||
#templateFooter .mcnTextContent,#templateFooter .mcnTextContent p{
|
||||
font-size:14px !important;
|
||||
line-height:150% !important;
|
||||
}
|
||||
|
||||
}</style>
|
||||
</head>
|
||||
|
||||
<body style="height: 100%;margin: 0;padding: 0;width: 100%;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;background-color: #FAFAFA;">
|
||||
<center>
|
||||
<table align="center" border="0" cellpadding="0" cellspacing="0" height="100%" width="100%" id="bodyTable" style="border-collapse: collapse;mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;height: 100%;margin: 0;padding: 0;width: 100%;background-color: #FAFAFA;">
|
||||
<tr>
|
||||
<td align="center" valign="top" id="bodyCell" style="mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;height: 100%;margin: 0;padding: 10px;width: 100%;border-top: 0;">
|
||||
<!-- BEGIN TEMPLATE // -->
|
||||
<!--[if gte mso 9]>
|
||||
<table align="center" border="0" cellspacing="0" cellpadding="0" width="600" style="width:600px;">
|
||||
<tr>
|
||||
<td align="center" valign="top" width="600" style="width:600px;">
|
||||
<![endif]-->
|
||||
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="templateContainer" style="border-collapse: collapse;mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;border: 0;max-width: 600px !important;">
|
||||
|
||||
<tr>
|
||||
<td valign="top" id="templateHeader" style="background:#FFFFFF none no-repeat center/cover;mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;background-color: #FFFFFF;background-image: none;background-repeat: no-repeat;background-position: center;background-size: cover;border-top: 0;border-bottom: 0;padding-top: 9px;padding-bottom: 0;"><table class="mcnImageBlock" style="min-width: 100%;border-collapse: collapse;mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;" cellspacing="0" cellpadding="0" border="0" width="100%">
|
||||
<tbody class="mcnImageBlockOuter">
|
||||
<tr>
|
||||
<td style="padding: 9px;mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;" class="mcnImageBlockInner" valign="top">
|
||||
<table class="mcnImageContentContainer" style="min-width: 100%;border-collapse: collapse;mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;" cellspacing="0" cellpadding="0" align="left" border="0" width="100%">
|
||||
<tbody><tr>
|
||||
<td class="mcnImageContent" style="padding-right: 9px;padding-left: 9px;padding-top: 0;padding-bottom: 0;text-align: center;mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;" valign="top">
|
||||
|
||||
|
||||
<img alt="" src="http://www.appsync.co.uk/noesis/noesis_institute_logo.png" style="max-width: 215px;padding-bottom: 0;display: inline !important;vertical-align: bottom;border: 0;height: auto;outline: none;text-decoration: none;-ms-interpolation-mode: bicubic;" class="mcnImage" align="middle" width="215">
|
||||
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
</tbody></table>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table><table class="mcnImageBlock" style="min-width: 100%;border-collapse: collapse;mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;" cellspacing="0" cellpadding="0" border="0" width="100%">
|
||||
<tbody class="mcnImageBlockOuter">
|
||||
<tr>
|
||||
<td style="padding: 9px;mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;" class="mcnImageBlockInner" valign="top">
|
||||
<table class="mcnImageContentContainer" style="min-width: 100%;border-collapse: collapse;mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;" cellspacing="0" cellpadding="0" align="left" border="0" width="100%">
|
||||
<tbody><tr>
|
||||
<td class="mcnImageContent" style="padding-right: 9px;padding-left: 9px;padding-top: 0;padding-bottom: 0;text-align: center;mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;" valign="top">
|
||||
|
||||
|
||||
<img alt="" src="http://www.appsync.co.uk/noesis/introduction_to_quranic_parenting.png" style="max-width: 565px;padding-bottom: 0;display: inline !important;vertical-align: bottom;border: 0;height: auto;outline: none;text-decoration: none;-ms-interpolation-mode: bicubic;" class="mcnImage" align="middle" width="564">
|
||||
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
</tbody></table>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table><table class="mcnTextBlock" style="min-width: 100%;border-collapse: collapse;mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;" cellspacing="0" cellpadding="0" border="0" width="100%">
|
||||
<tbody class="mcnTextBlockOuter">
|
||||
<tr>
|
||||
<td class="mcnTextBlockInner" style="padding-top: 9px;mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;" valign="top">
|
||||
<!--[if mso]>
|
||||
<table align="left" border="0" cellspacing="0" cellpadding="0" width="100%" style="width:100%;">
|
||||
<tr>
|
||||
<![endif]-->
|
||||
|
||||
<!--[if mso]>
|
||||
<td valign="top" width="600" style="width:600px;">
|
||||
<![endif]-->
|
||||
<table style="max-width: 100%;min-width: 100%;border-collapse: collapse;mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;" class="mcnTextContentContainer" cellspacing="0" cellpadding="0" align="left" border="0" width="100%">
|
||||
<tbody><tr>
|
||||
|
||||
<td class="mcnTextContent" style="padding-top: 0;padding-right: 18px;padding-bottom: 9px;padding-left: 18px;mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;word-break: break-word;color: #202020;font-family: Helvetica;font-size: 16px;line-height: 150%;text-align: left;" valign="top">
|
||||
|
||||
<h1 style="display: block;margin: 0;padding: 0;color: #202020;font-family: Helvetica;font-size: 26px;font-style: normal;font-weight: bold;line-height: 125%;letter-spacing: normal;text-align: left;">Top Tips for Quranic Parenting</h1>
|
||||
|
||||
<ul>
|
||||
<li style="mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;">
|
||||
<h4 class="null" style="display: block;margin: 0;padding: 0;color: #202020;font-family: Helvetica;font-size: 18px;font-style: normal;font-weight: bold;line-height: 125%;letter-spacing: normal;text-align: left;"><span style="color:#008000"><em>YOUR burning questions answered; </em></span></h4>
|
||||
</li>
|
||||
<li style="mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;">
|
||||
<h4 class="null" style="display: block;margin: 0;padding: 0;color: #202020;font-family: Helvetica;font-size: 18px;font-style: normal;font-weight: bold;line-height: 125%;letter-spacing: normal;text-align: left;"><span style="color:#008000"><em>KEY Quranic and Prophetic Guidance on raising children</em></span></h4>
|
||||
</li>
|
||||
<li style="mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;">
|
||||
<h4 class="null" style="display: block;margin: 0;padding: 0;color: #202020;font-family: Helvetica;font-size: 18px;font-style: normal;font-weight: bold;line-height: 125%;letter-spacing: normal;text-align: left;"><span style="color:#008000"><em>Explore the tools available - all rooted in Quranic wisdom and confirmed by experience.</em></span></h4>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<p style="margin: 10px 0;padding: 0;mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;color: #202020;font-family: Helvetica;font-size: 16px;line-height: 150%;text-align: left;">An Evening Introductory Talk on this popular Noesis Course<br>
|
||||
COMING to the UK with this SPRING TOUR 2017....</p>
|
||||
|
||||
<ul>
|
||||
<li style="mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;">
|
||||
<h2 class="null" style="display: block;margin: 0;padding: 0;color: #202020;font-family: Helvetica;font-size: 18px;font-style: normal;font-weight: bold;line-height: 125%;letter-spacing: normal;text-align: left;">London: <span style="color:#808080">Thursday 23 March 2017</span> <span><strong><a href="https://halaltodo.com/event/Quranic-Parenting-Raising-Godly-Families-intro-Top-Tips-36" target="_blank" style="mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;color: #2BAADF;font-weight: normal;text-decoration: none;">BOOK NOW</a></strong></span></h2>
|
||||
</li>
|
||||
<li style="mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;">
|
||||
<h2 class="null" style="display: block;margin: 0;padding: 0;color: #202020;font-family: Helvetica;font-size: 18px;font-style: normal;font-weight: bold;line-height: 125%;letter-spacing: normal;text-align: left;">Cardiff: <span style="color:#808080">Monday 27 March 2017</span> <strong><a href="mailto:noesiscardiff@gmail.com?subject=Quranic%20Parenting%20Course" target="_blank" style="mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;color: #2BAADF;font-weight: normal;text-decoration: none;">BOOK NOW</a></strong></h2>
|
||||
</li>
|
||||
<li style="mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;">
|
||||
<h2 class="null" style="display: block;margin: 0;padding: 0;color: #202020;font-family: Helvetica;font-size: 18px;font-style: normal;font-weight: bold;line-height: 125%;letter-spacing: normal;text-align: left;">Manchester: <span style="color:#808080">Tuesday 4 April 2017</span> <strong><a href="https://quranicparenting.eventbrite.co.uk" target="_blank" title="Noesis Institute Quranic Parenting" style="mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;color: #2BAADF;font-weight: normal;text-decoration: none;">BOOK NOW</a></strong></h2>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<p style="margin: 10px 0;padding: 0;mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;color: #202020;font-family: Helvetica;font-size: 16px;line-height: 150%;text-align: left;"><br>
|
||||
Whether you are:</p>
|
||||
|
||||
<ul>
|
||||
<li style="mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;">a parent or soon to be parent...</li>
|
||||
<li style="mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;">recently married or fear marriage due to parenthood</li>
|
||||
<li style="mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;">keen to study or understand the science of raising children successfully</li>
|
||||
</ul>
|
||||
Don't miss this opportunity....<br>
|
||||
|
||||
<p style="margin: 10px 0;padding: 0;mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;color: #202020;font-family: Helvetica;font-size: 16px;line-height: 150%;text-align: left;">Email: <a href="mailto:london@noesisinstitute.com?subject=Quranic%20Parenting%20Course" target="_blank" style="mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;color: #2BAADF;font-weight: normal;text-decoration: none;">london@noesisinstitute.com</a></p>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
</tbody></table>
|
||||
<!--[if mso]>
|
||||
</td>
|
||||
<![endif]-->
|
||||
|
||||
<!--[if mso]>
|
||||
</tr>
|
||||
</table>
|
||||
<![endif]-->
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table><table class="mcnImageBlock" style="min-width: 100%;border-collapse: collapse;mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;" cellspacing="0" cellpadding="0" border="0" width="100%">
|
||||
<tbody class="mcnImageBlockOuter">
|
||||
<tr>
|
||||
<td style="padding: 9px;mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;" class="mcnImageBlockInner" valign="top">
|
||||
<table class="mcnImageContentContainer" style="min-width: 100%;border-collapse: collapse;mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;" cellspacing="0" cellpadding="0" align="left" border="0" width="100%">
|
||||
<tbody><tr>
|
||||
<td class="mcnImageContent" style="padding-right: 9px;padding-left: 9px;padding-top: 0;padding-bottom: 0;text-align: center;mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;" valign="top">
|
||||
|
||||
|
||||
<img alt="" src="http://www.appsync.co.uk/noesis/prayer_beyond_motion.png" style="max-width: 565px;padding-bottom: 0;display: inline !important;vertical-align: bottom;border: 0;height: auto;outline: none;text-decoration: none;-ms-interpolation-mode: bicubic;" class="mcnImage" align="middle" width="564">
|
||||
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
</tbody></table>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table><table class="mcnTextBlock" style="min-width: 100%;border-collapse: collapse;mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;" cellspacing="0" cellpadding="0" border="0" width="100%">
|
||||
<tbody class="mcnTextBlockOuter">
|
||||
<tr>
|
||||
<td class="mcnTextBlockInner" style="padding-top: 9px;mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;" valign="top">
|
||||
<!--[if mso]>
|
||||
<table align="left" border="0" cellspacing="0" cellpadding="0" width="100%" style="width:100%;">
|
||||
<tr>
|
||||
<![endif]-->
|
||||
|
||||
<!--[if mso]>
|
||||
<td valign="top" width="600" style="width:600px;">
|
||||
<![endif]-->
|
||||
<table style="max-width: 100%;min-width: 100%;border-collapse: collapse;mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;" class="mcnTextContentContainer" cellspacing="0" cellpadding="0" align="left" border="0" width="100%">
|
||||
<tbody><tr>
|
||||
|
||||
<td class="mcnTextContent" style="padding-top: 0;padding-right: 18px;padding-bottom: 9px;padding-left: 18px;mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;word-break: break-word;color: #202020;font-family: Helvetica;font-size: 16px;line-height: 150%;text-align: left;" valign="top">
|
||||
|
||||
<h1 class="null" style="text-align: center;display: block;margin: 0;padding: 0;color: #202020;font-family: Helvetica;font-size: 26px;font-style: normal;font-weight: bold;line-height: 125%;letter-spacing: normal;"><a href="https://noesisinstitute.com/Prayer_Beyond_The_Motions.aspx" target="_blank" style="mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;color: #2BAADF;font-weight: normal;text-decoration: none;">Prayer: Beyond the Motions</a></h1>
|
||||
<br>
|
||||
"... Whoever establishes the prayer, establishes the deen." [Hadith Qudsi]<br>
|
||||
<br>
|
||||
Be honest, are you really establishing your prayer in the true prophetic way? Want to know HOW? We can help teach you.<br>
|
||||
<br>
|
||||
Invest a few hours of your time, and make sure you learn exactly HOW to do this, <strong><a alt="https://noesisinstitute.com/Prayer_Beyond_The_Motions.aspx" href="https://noesisinstitute.com/Prayer_Beyond_The_Motions.aspx" shape="rect" target="_blank" title="Noesis Institute Prayer Beyond Motion" style="mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;color: #2BAADF;font-weight: normal;text-decoration: none;">BOOK NOW</a></strong> <br>
|
||||
<br>
|
||||
The Prophet (saw) also said prayer was the coolness of his eyes - something he loved the most....<br>
|
||||
<br>
|
||||
Wouldn't you love to make this true for you, too, so you could follow in his (saw) footsteps?<br>
|
||||
<br>
|
||||
<strong><a alt="https://noesisinstitute.com/Prayer_Beyond_The_Motions.aspx" href="https://noesisinstitute.com/Prayer_Beyond_The_Motions.aspx" shape="rect" target="_blank" title="Noesis Institute Prayer Beyond Motion" style="mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;color: #2BAADF;font-weight: normal;text-decoration: none;">BOOK NOW</a></strong> and be amongst those who really care to learn HOW you can pray in the true prophetic way.
|
||||
|
||||
<ul>
|
||||
<li style="mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;">
|
||||
<h2 class="null" style="display: block;margin: 0;padding: 0;color: #202020;font-family: Helvetica;font-size: 18px;font-style: normal;font-weight: bold;line-height: 125%;letter-spacing: normal;text-align: left;">London: <span style="color:#808080">Saturday 25 March </span></h2>
|
||||
</li>
|
||||
<li style="mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;">
|
||||
<h2 class="null" style="display: block;margin: 0;padding: 0;color: #202020;font-family: Helvetica;font-size: 18px;font-style: normal;font-weight: bold;line-height: 125%;letter-spacing: normal;text-align: left;">Cardiff: <span style="color:#808080">Sunday 26 March </span></h2>
|
||||
</li>
|
||||
<li style="mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;">
|
||||
<h2 class="null" style="display: block;margin: 0;padding: 0;color: #202020;font-family: Helvetica;font-size: 18px;font-style: normal;font-weight: bold;line-height: 125%;letter-spacing: normal;text-align: left;">Manchester: <span style="color:#808080">Saturday 1 April</span> </h2>
|
||||
</li>
|
||||
<li style="mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;">
|
||||
<h2 class="null" style="display: block;margin: 0;padding: 0;color: #202020;font-family: Helvetica;font-size: 18px;font-style: normal;font-weight: bold;line-height: 125%;letter-spacing: normal;text-align: left;">Leeds: <span style="color:#808080">Sunday 2 April</span></h2>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
</tbody></table>
|
||||
<!--[if mso]>
|
||||
</td>
|
||||
<![endif]-->
|
||||
|
||||
<!--[if mso]>
|
||||
</tr>
|
||||
</table>
|
||||
<![endif]-->
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table><table class="mcnDividerBlock" style="min-width: 100%;border-collapse: collapse;mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;table-layout: fixed !important;" cellspacing="0" cellpadding="0" border="0" width="100%">
|
||||
<tbody class="mcnDividerBlockOuter">
|
||||
<tr>
|
||||
<td class="mcnDividerBlockInner" style="min-width: 100%;padding: 18px;mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;">
|
||||
<table class="mcnDividerContent" style="min-width: 100%;border-top: 2px solid #EAEAEA;border-collapse: collapse;mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;" cellspacing="0" cellpadding="0" border="0" width="100%">
|
||||
<tbody><tr>
|
||||
<td style="mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;">
|
||||
<span></span>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody></table>
|
||||
<!--
|
||||
<td class="mcnDividerBlockInner" style="padding: 18px;">
|
||||
<hr class="mcnDividerContent" style="border-bottom-color:none; border-left-color:none; border-right-color:none; border-bottom-width:0; border-left-width:0; border-right-width:0; margin-top:0; margin-right:0; margin-bottom:0; margin-left:0;" />
|
||||
-->
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top" id="templateBody" style="background:#FFFFFF none no-repeat center/cover;mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;background-color: #FFFFFF;background-image: none;background-repeat: no-repeat;background-position: center;background-size: cover;border-top: 0;border-bottom: 2px solid #EAEAEA;padding-top: 0;padding-bottom: 9px;"><table class="mcnTextBlock" style="min-width: 100%;border-collapse: collapse;mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;" cellspacing="0" cellpadding="0" border="0" width="100%">
|
||||
<tbody class="mcnTextBlockOuter">
|
||||
<tr>
|
||||
<td class="mcnTextBlockInner" style="padding-top: 9px;mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;" valign="top">
|
||||
<!--[if mso]>
|
||||
<table align="left" border="0" cellspacing="0" cellpadding="0" width="100%" style="width:100%;">
|
||||
<tr>
|
||||
<![endif]-->
|
||||
|
||||
<!--[if mso]>
|
||||
<td valign="top" width="600" style="width:600px;">
|
||||
<![endif]-->
|
||||
<table style="max-width: 100%;min-width: 100%;border-collapse: collapse;mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;" class="mcnTextContentContainer" cellspacing="0" cellpadding="0" align="left" border="0" width="100%">
|
||||
<tbody><tr>
|
||||
|
||||
<td class="mcnTextContent" style="padding-top: 0;padding-right: 18px;padding-bottom: 9px;padding-left: 18px;mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;word-break: break-word;color: #202020;font-family: Helvetica;font-size: 16px;line-height: 150%;text-align: left;" valign="top">
|
||||
|
||||
<div style="text-align: center;"><span style="color:#808080"><strong>Supported by</strong></span><br>
|
||||
<a href="https://donate.humanappeal.org.uk/" target="_blank" style="mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;color: #2BAADF;font-weight: normal;text-decoration: underline;"><img data-file-id="552377" src="http://www.appsync.co.uk/noesis/humanappeal_logo.png" style="-moz-border-top-colors: none;-moz-border-right-colors: none;-moz-border-bottom-colors: none;-moz-border-left-colors: none;border-image: none;height: 183px;width: 163px;margin: 0px 15px 0px 0px;border: 0;outline: none;text-decoration: none;-ms-interpolation-mode: bicubic;" height="183" width="163"></a><a href="https://halaltodo.com/" target="_blank" style="mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;color: #2BAADF;font-weight: normal;text-decoration: underline;"><img data-file-id="552381" src="http://www.appsync.co.uk/noesis/halaltodo_logo.png" style="-moz-border-top-colors: none;-moz-border-right-colors: none;-moz-border-bottom-colors: none;-moz-border-left-colors: none;border-image: none;width: 163px;height: 163px;margin: 0px 15px 0px 0px;border: 0;outline: none;text-decoration: none;-ms-interpolation-mode: bicubic;" height="163" width="163"></a><a href="https://www.facebook.com/Al-Hidaayah-Academy-492482847466823/" target="_blank" style="mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;color: #2BAADF;font-weight: normal;text-decoration: underline;"><img data-file-id="552389" src="http://www.appsync.co.uk/noesis/alhidayah_academy.png" style="-moz-border-top-colors: none;-moz-border-right-colors: none;-moz-border-bottom-colors: none;-moz-border-left-colors: none;border-image: none;width: 163px;height: 163px;margin: 0px 15px 0px 0px;border: 0;outline: none;text-decoration: none;-ms-interpolation-mode: bicubic;" height="163" width="163"> </a></div>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
</tbody></table>
|
||||
<!--[if mso]>
|
||||
</td>
|
||||
<![endif]-->
|
||||
|
||||
<!--[if mso]>
|
||||
</tr>
|
||||
</table>
|
||||
<![endif]-->
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top" id="templateFooter" style="background:#FAFAFA none no-repeat center/cover;mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;background-color: #FAFAFA;background-image: none;background-repeat: no-repeat;background-position: center;background-size: cover;border-top: 0;border-bottom: 0;padding-top: 9px;padding-bottom: 9px;"></td>
|
||||
</tr>
|
||||
</table>
|
||||
<!--[if gte mso 9]>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<![endif]-->
|
||||
<!-- // END TEMPLATE -->
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</center>
|
||||
</body></html>
|
||||
BIN
_backup/fym/fym_small.jpg
Normal file
|
After Width: | Height: | Size: 52 KiB |
BIN
_backup/halaltodo_logo.png
Normal file
|
After Width: | Height: | Size: 7.6 KiB |
BIN
_backup/humanappeal_logo.png
Normal file
|
After Width: | Height: | Size: 17 KiB |
92
_backup/index.html
Normal file
@@ -0,0 +1,92 @@
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->
|
||||
|
||||
<!-- Bootstrap core CSS -->
|
||||
<link href="http://www.utrujj.org/webinar/public/css/bootstrap.css" rel="stylesheet">
|
||||
|
||||
<!-- IE10 viewport hack for Surface/desktop Windows 8 bug -->
|
||||
<link href="http://www.utrujj.org/webinar/public/css/ie10-viewport-bug-workaround.css" rel="stylesheet">
|
||||
|
||||
<!-- Custom styles for this template -->
|
||||
<link href="http://www.utrujj.org//webinar/public/css/jumbotron.css" rel="stylesheet">
|
||||
|
||||
<!-- Just for debugging purposes. Don't actually copy these 2 lines! -->
|
||||
<!--[if lt IE 9]><script src="/webinar/public/js/ie8-responsive-file-warning.js"></script><![endif]-->
|
||||
<script src="http://www.utrujj.org/webinar/public/js/ie-emulation-modes-warning.js"></script>
|
||||
|
||||
<!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
|
||||
<!--[if lt IE 9]>
|
||||
<script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
|
||||
<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
|
||||
<![endif]-->
|
||||
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
|
||||
<script type="text/javascript" src="http://www.utrujj.org/webinar/public/js/bootstrap.min.js"></script>
|
||||
<script type="text/javascript" src="https://content.jwplatform.com/libraries/QWS8d3qi.js"></script>
|
||||
<script type="text/javascript" src="http://code.jquery.com/ui/1.11.4/jquery-ui.js"></script> <title>Quran Workshop - Watch Live Now</title> <link href="http://code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css" media="screen" rel="stylesheet" type="text/css" > </head>
|
||||
<body>
|
||||
<nav class="navbar navbar-inverse navbar-fixed-top">
|
||||
<div class="container">
|
||||
<div class="navbar-header">
|
||||
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
|
||||
<span class="sr-only">Toggle navigation</span>
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
</button>
|
||||
<a class="navbar-brand" href="#">Noesis Institute Live Webinar</a>
|
||||
</div>
|
||||
<div id="navbar" class="navbar-collapse collapse">
|
||||
<ul class="nav navbar-nav navbar-right">
|
||||
<li class="dropdown">
|
||||
<a aria-expanded="false" aria-haspopup="true" role="button" data-toggle="dropdown" class="dropdown-toggle" href="">My Account <span class="caret"></span></a>
|
||||
<ul class="dropdown-menu">
|
||||
<li><a href="#">Watch Live!</a></li>
|
||||
<li><a href="#">Recordings</a></li>
|
||||
<li><a href="#">Admin</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a> Welcome To Introduction To Quranic Parenting</a> </li> <li><a href="#">Logout</a></li> </ul>
|
||||
</div><!--/.navbar-collapse -->
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<div class="container">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<div class="panel-title"><h2>Watch Live Now!</h2></div>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
|
||||
|
||||
<div id='playerpOxtZvIDkjWQ'></div>
|
||||
<p><script type='text/javascript'>
|
||||
jwplayer('playerpOxtZvIDkjWQ').setup({
|
||||
file: "http://d1nwnesviads2z.cloudfront.net/livecf/NoesisParenting-20170324/playlist.m3u8",
|
||||
image: "http://www.appsync.co.uk/noesis/introduction_to_quranic_parenting.png", /*'http://utrujj.org/webinar/live/images/front-cover.jpg'*/
|
||||
title: "Quranic Parenting", /*'Qur\'an Workshop'*/
|
||||
width: "100%", /*'100%'*/
|
||||
aspectratio: "16:9", /*'16:9'*/
|
||||
androidhls: "true", /*'true'*/
|
||||
});
|
||||
</script>
|
||||
</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<!-- Example row of columns -->
|
||||
|
||||
<hr>
|
||||
<footer class="footer">
|
||||
<div class="container"><p>© 2016 Noesis Institute</p></div>
|
||||
</footer>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
BIN
_backup/introduction_to_quranic_parenting.png
Normal file
|
After Width: | Height: | Size: 173 KiB |
1242
_backup/library/Zend/Acl.php
Normal file
64
_backup/library/Zend/Acl/Assert/Interface.php
Normal file
@@ -0,0 +1,64 @@
|
||||
<?php
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Acl
|
||||
* @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
* @version $Id$
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* @see Zend_Acl
|
||||
*/
|
||||
require_once 'Zend/Acl.php';
|
||||
|
||||
|
||||
/**
|
||||
* @see Zend_Acl_Role_Interface
|
||||
*/
|
||||
require_once 'Zend/Acl/Role/Interface.php';
|
||||
|
||||
|
||||
/**
|
||||
* @see Zend_Acl_Resource_Interface
|
||||
*/
|
||||
require_once 'Zend/Acl/Resource/Interface.php';
|
||||
|
||||
|
||||
/**
|
||||
* @category Zend
|
||||
* @package Zend_Acl
|
||||
* @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
interface Zend_Acl_Assert_Interface
|
||||
{
|
||||
/**
|
||||
* Returns true if and only if the assertion conditions are met
|
||||
*
|
||||
* This method is passed the ACL, Role, Resource, and privilege to which the authorization query applies. If the
|
||||
* $role, $resource, or $privilege parameters are null, it means that the query applies to all Roles, Resources, or
|
||||
* privileges, respectively.
|
||||
*
|
||||
* @param Zend_Acl $acl
|
||||
* @param Zend_Acl_Role_Interface $role
|
||||
* @param Zend_Acl_Resource_Interface $resource
|
||||
* @param string $privilege
|
||||
* @return boolean
|
||||
*/
|
||||
public function assert(Zend_Acl $acl, Zend_Acl_Role_Interface $role = null, Zend_Acl_Resource_Interface $resource = null,
|
||||
$privilege = null);
|
||||
}
|
||||
36
_backup/library/Zend/Acl/Exception.php
Normal file
@@ -0,0 +1,36 @@
|
||||
<?php
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Acl
|
||||
* @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
* @version $Id$
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* @see Zend_Exception
|
||||
*/
|
||||
require_once 'Zend/Exception.php';
|
||||
|
||||
|
||||
/**
|
||||
* @category Zend
|
||||
* @package Zend_Acl
|
||||
* @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
class Zend_Acl_Exception extends Zend_Exception
|
||||
{}
|
||||
74
_backup/library/Zend/Acl/Resource.php
Normal file
@@ -0,0 +1,74 @@
|
||||
<?php
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Acl
|
||||
* @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
* @version $Id$
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* @see Zend_Acl_Resource_Interface
|
||||
*/
|
||||
require_once 'Zend/Acl/Resource/Interface.php';
|
||||
|
||||
|
||||
/**
|
||||
* @category Zend
|
||||
* @package Zend_Acl
|
||||
* @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
class Zend_Acl_Resource implements Zend_Acl_Resource_Interface
|
||||
{
|
||||
/**
|
||||
* Unique id of Resource
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $_resourceId;
|
||||
|
||||
/**
|
||||
* Sets the Resource identifier
|
||||
*
|
||||
* @param string $resourceId
|
||||
*/
|
||||
public function __construct($resourceId)
|
||||
{
|
||||
$this->_resourceId = (string) $resourceId;
|
||||
}
|
||||
|
||||
/**
|
||||
* Defined by Zend_Acl_Resource_Interface; returns the Resource identifier
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getResourceId()
|
||||
{
|
||||
return $this->_resourceId;
|
||||
}
|
||||
|
||||
/**
|
||||
* Defined by Zend_Acl_Resource_Interface; returns the Resource identifier
|
||||
* Proxies to getResourceId()
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function __toString()
|
||||
{
|
||||
return $this->getResourceId();
|
||||
}
|
||||
}
|
||||
37
_backup/library/Zend/Acl/Resource/Interface.php
Normal file
@@ -0,0 +1,37 @@
|
||||
<?php
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Acl
|
||||
* @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
* @version $Id$
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* @category Zend
|
||||
* @package Zend_Acl
|
||||
* @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
interface Zend_Acl_Resource_Interface
|
||||
{
|
||||
/**
|
||||
* Returns the string identifier of the Resource
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getResourceId();
|
||||
}
|
||||
74
_backup/library/Zend/Acl/Role.php
Normal file
@@ -0,0 +1,74 @@
|
||||
<?php
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Acl
|
||||
* @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
* @version $Id$
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* @see Zend_Acl_Role_Interface
|
||||
*/
|
||||
require_once 'Zend/Acl/Role/Interface.php';
|
||||
|
||||
|
||||
/**
|
||||
* @category Zend
|
||||
* @package Zend_Acl
|
||||
* @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
class Zend_Acl_Role implements Zend_Acl_Role_Interface
|
||||
{
|
||||
/**
|
||||
* Unique id of Role
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $_roleId;
|
||||
|
||||
/**
|
||||
* Sets the Role identifier
|
||||
*
|
||||
* @param string $roleId
|
||||
*/
|
||||
public function __construct($roleId)
|
||||
{
|
||||
$this->_roleId = (string) $roleId;
|
||||
}
|
||||
|
||||
/**
|
||||
* Defined by Zend_Acl_Role_Interface; returns the Role identifier
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getRoleId()
|
||||
{
|
||||
return $this->_roleId;
|
||||
}
|
||||
|
||||
/**
|
||||
* Defined by Zend_Acl_Role_Interface; returns the Role identifier
|
||||
* Proxies to getRoleId()
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function __toString()
|
||||
{
|
||||
return $this->getRoleId();
|
||||
}
|
||||
}
|
||||
37
_backup/library/Zend/Acl/Role/Interface.php
Normal file
@@ -0,0 +1,37 @@
|
||||
<?php
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Acl
|
||||
* @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
* @version $Id$
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* @category Zend
|
||||
* @package Zend_Acl
|
||||
* @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
interface Zend_Acl_Role_Interface
|
||||
{
|
||||
/**
|
||||
* Returns the string identifier of the Role
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getRoleId();
|
||||
}
|
||||
271
_backup/library/Zend/Acl/Role/Registry.php
Normal file
@@ -0,0 +1,271 @@
|
||||
<?php
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Acl
|
||||
* @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
* @version $Id$
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* @see Zend_Acl_Role_Interface
|
||||
*/
|
||||
require_once 'Zend/Acl/Role/Interface.php';
|
||||
|
||||
|
||||
/**
|
||||
* @category Zend
|
||||
* @package Zend_Acl
|
||||
* @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
class Zend_Acl_Role_Registry
|
||||
{
|
||||
/**
|
||||
* Internal Role registry data storage
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $_roles = array();
|
||||
|
||||
/**
|
||||
* Adds a Role having an identifier unique to the registry
|
||||
*
|
||||
* The $parents parameter may be a reference to, or the string identifier for,
|
||||
* a Role existing in the registry, or $parents may be passed as an array of
|
||||
* these - mixing string identifiers and objects is ok - to indicate the Roles
|
||||
* from which the newly added Role will directly inherit.
|
||||
*
|
||||
* In order to resolve potential ambiguities with conflicting rules inherited
|
||||
* from different parents, the most recently added parent takes precedence over
|
||||
* parents that were previously added. In other words, the first parent added
|
||||
* will have the least priority, and the last parent added will have the
|
||||
* highest priority.
|
||||
*
|
||||
* @param Zend_Acl_Role_Interface $role
|
||||
* @param Zend_Acl_Role_Interface|string|array $parents
|
||||
* @throws Zend_Acl_Role_Registry_Exception
|
||||
* @return Zend_Acl_Role_Registry Provides a fluent interface
|
||||
*/
|
||||
public function add(Zend_Acl_Role_Interface $role, $parents = null)
|
||||
{
|
||||
$roleId = $role->getRoleId();
|
||||
|
||||
if ($this->has($roleId)) {
|
||||
/**
|
||||
* @see Zend_Acl_Role_Registry_Exception
|
||||
*/
|
||||
require_once 'Zend/Acl/Role/Registry/Exception.php';
|
||||
throw new Zend_Acl_Role_Registry_Exception("Role id '$roleId' already exists in the registry");
|
||||
}
|
||||
|
||||
$roleParents = array();
|
||||
|
||||
if (null !== $parents) {
|
||||
if (!is_array($parents)) {
|
||||
$parents = array($parents);
|
||||
}
|
||||
/**
|
||||
* @see Zend_Acl_Role_Registry_Exception
|
||||
*/
|
||||
require_once 'Zend/Acl/Role/Registry/Exception.php';
|
||||
foreach ($parents as $parent) {
|
||||
try {
|
||||
if ($parent instanceof Zend_Acl_Role_Interface) {
|
||||
$roleParentId = $parent->getRoleId();
|
||||
} else {
|
||||
$roleParentId = $parent;
|
||||
}
|
||||
$roleParent = $this->get($roleParentId);
|
||||
} catch (Zend_Acl_Role_Registry_Exception $e) {
|
||||
throw new Zend_Acl_Role_Registry_Exception("Parent Role id '$roleParentId' does not exist", 0, $e);
|
||||
}
|
||||
$roleParents[$roleParentId] = $roleParent;
|
||||
$this->_roles[$roleParentId]['children'][$roleId] = $role;
|
||||
}
|
||||
}
|
||||
|
||||
$this->_roles[$roleId] = array(
|
||||
'instance' => $role,
|
||||
'parents' => $roleParents,
|
||||
'children' => array()
|
||||
);
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the identified Role
|
||||
*
|
||||
* The $role parameter can either be a Role or a Role identifier.
|
||||
*
|
||||
* @param Zend_Acl_Role_Interface|string $role
|
||||
* @throws Zend_Acl_Role_Registry_Exception
|
||||
* @return Zend_Acl_Role_Interface
|
||||
*/
|
||||
public function get($role)
|
||||
{
|
||||
if ($role instanceof Zend_Acl_Role_Interface) {
|
||||
$roleId = $role->getRoleId();
|
||||
} else {
|
||||
$roleId = (string) $role;
|
||||
}
|
||||
|
||||
if (!$this->has($role)) {
|
||||
/**
|
||||
* @see Zend_Acl_Role_Registry_Exception
|
||||
*/
|
||||
require_once 'Zend/Acl/Role/Registry/Exception.php';
|
||||
throw new Zend_Acl_Role_Registry_Exception("Role '$roleId' not found");
|
||||
}
|
||||
|
||||
return $this->_roles[$roleId]['instance'];
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns true if and only if the Role exists in the registry
|
||||
*
|
||||
* The $role parameter can either be a Role or a Role identifier.
|
||||
*
|
||||
* @param Zend_Acl_Role_Interface|string $role
|
||||
* @return boolean
|
||||
*/
|
||||
public function has($role)
|
||||
{
|
||||
if ($role instanceof Zend_Acl_Role_Interface) {
|
||||
$roleId = $role->getRoleId();
|
||||
} else {
|
||||
$roleId = (string) $role;
|
||||
}
|
||||
|
||||
return isset($this->_roles[$roleId]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns an array of an existing Role's parents
|
||||
*
|
||||
* The array keys are the identifiers of the parent Roles, and the values are
|
||||
* the parent Role instances. The parent Roles are ordered in this array by
|
||||
* ascending priority. The highest priority parent Role, last in the array,
|
||||
* corresponds with the parent Role most recently added.
|
||||
*
|
||||
* If the Role does not have any parents, then an empty array is returned.
|
||||
*
|
||||
* @param Zend_Acl_Role_Interface|string $role
|
||||
* @uses Zend_Acl_Role_Registry::get()
|
||||
* @return array
|
||||
*/
|
||||
public function getParents($role)
|
||||
{
|
||||
$roleId = $this->get($role)->getRoleId();
|
||||
|
||||
return $this->_roles[$roleId]['parents'];
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns true if and only if $role inherits from $inherit
|
||||
*
|
||||
* Both parameters may be either a Role or a Role identifier. If
|
||||
* $onlyParents is true, then $role must inherit directly from
|
||||
* $inherit in order to return true. By default, this method looks
|
||||
* through the entire inheritance DAG to determine whether $role
|
||||
* inherits from $inherit through its ancestor Roles.
|
||||
*
|
||||
* @param Zend_Acl_Role_Interface|string $role
|
||||
* @param Zend_Acl_Role_Interface|string $inherit
|
||||
* @param boolean $onlyParents
|
||||
* @throws Zend_Acl_Role_Registry_Exception
|
||||
* @return boolean
|
||||
*/
|
||||
public function inherits($role, $inherit, $onlyParents = false)
|
||||
{
|
||||
/**
|
||||
* @see Zend_Acl_Role_Registry_Exception
|
||||
*/
|
||||
require_once 'Zend/Acl/Role/Registry/Exception.php';
|
||||
try {
|
||||
$roleId = $this->get($role)->getRoleId();
|
||||
$inheritId = $this->get($inherit)->getRoleId();
|
||||
} catch (Zend_Acl_Role_Registry_Exception $e) {
|
||||
throw new Zend_Acl_Role_Registry_Exception($e->getMessage(), $e->getCode(), $e);
|
||||
}
|
||||
|
||||
$inherits = isset($this->_roles[$roleId]['parents'][$inheritId]);
|
||||
|
||||
if ($inherits || $onlyParents) {
|
||||
return $inherits;
|
||||
}
|
||||
|
||||
foreach ($this->_roles[$roleId]['parents'] as $parentId => $parent) {
|
||||
if ($this->inherits($parentId, $inheritId)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Removes the Role from the registry
|
||||
*
|
||||
* The $role parameter can either be a Role or a Role identifier.
|
||||
*
|
||||
* @param Zend_Acl_Role_Interface|string $role
|
||||
* @throws Zend_Acl_Role_Registry_Exception
|
||||
* @return Zend_Acl_Role_Registry Provides a fluent interface
|
||||
*/
|
||||
public function remove($role)
|
||||
{
|
||||
/**
|
||||
* @see Zend_Acl_Role_Registry_Exception
|
||||
*/
|
||||
require_once 'Zend/Acl/Role/Registry/Exception.php';
|
||||
try {
|
||||
$roleId = $this->get($role)->getRoleId();
|
||||
} catch (Zend_Acl_Role_Registry_Exception $e) {
|
||||
throw new Zend_Acl_Role_Registry_Exception($e->getMessage(), $e->getCode(), $e);
|
||||
}
|
||||
|
||||
foreach ($this->_roles[$roleId]['children'] as $childId => $child) {
|
||||
unset($this->_roles[$childId]['parents'][$roleId]);
|
||||
}
|
||||
foreach ($this->_roles[$roleId]['parents'] as $parentId => $parent) {
|
||||
unset($this->_roles[$parentId]['children'][$roleId]);
|
||||
}
|
||||
|
||||
unset($this->_roles[$roleId]);
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Removes all Roles from the registry
|
||||
*
|
||||
* @return Zend_Acl_Role_Registry Provides a fluent interface
|
||||
*/
|
||||
public function removeAll()
|
||||
{
|
||||
$this->_roles = array();
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function getRoles()
|
||||
{
|
||||
return $this->_roles;
|
||||
}
|
||||
|
||||
}
|
||||
36
_backup/library/Zend/Acl/Role/Registry/Exception.php
Normal file
@@ -0,0 +1,36 @@
|
||||
<?php
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Acl
|
||||
* @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
* @version $Id$
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* @see Zend_Acl_Exception
|
||||
*/
|
||||
require_once 'Zend/Acl/Exception.php';
|
||||
|
||||
|
||||
/**
|
||||
* @category Zend
|
||||
* @package Zend_Acl
|
||||
* @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
class Zend_Acl_Role_Registry_Exception extends Zend_Acl_Exception
|
||||
{}
|
||||
136
_backup/library/Zend/Amf/Adobe/Auth.php
Executable file
@@ -0,0 +1,136 @@
|
||||
<?php
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Amf
|
||||
* @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
* @version $Id$
|
||||
*/
|
||||
|
||||
/** @see Zend_Amf_Auth_Abstract */
|
||||
require_once 'Zend/Amf/Auth/Abstract.php';
|
||||
|
||||
/** @see Zend_Acl */
|
||||
require_once 'Zend/Acl.php';
|
||||
|
||||
/** @see Zend_Auth_Result */
|
||||
require_once 'Zend/Auth/Result.php';
|
||||
|
||||
/** @see Zend_Xml_Security */
|
||||
require_once 'Zend/Xml/Security.php';
|
||||
|
||||
/**
|
||||
* This class implements authentication against XML file with roles for Flex Builder.
|
||||
*
|
||||
* @package Zend_Amf
|
||||
* @subpackage Adobe
|
||||
* @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
class Zend_Amf_Adobe_Auth extends Zend_Amf_Auth_Abstract
|
||||
{
|
||||
|
||||
/**
|
||||
* ACL for authorization
|
||||
*
|
||||
* @var Zend_Acl
|
||||
*/
|
||||
protected $_acl;
|
||||
|
||||
/**
|
||||
* Username/password array
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $_users = array();
|
||||
|
||||
/**
|
||||
* Create auth adapter
|
||||
*
|
||||
* @param string $rolefile File containing XML with users and roles
|
||||
*/
|
||||
public function __construct($rolefile)
|
||||
{
|
||||
$this->_acl = new Zend_Acl();
|
||||
$xml = Zend_Xml_Security::scanFile($rolefile);
|
||||
/*
|
||||
Roles file format:
|
||||
<roles>
|
||||
<role id=”admin”>
|
||||
<user name=”user1” password=”pwd”/>
|
||||
</role>
|
||||
<role id=”hr”>
|
||||
<user name=”user2” password=”pwd2”/>
|
||||
</role>
|
||||
</roles>
|
||||
*/
|
||||
foreach($xml->role as $role) {
|
||||
$this->_acl->addRole(new Zend_Acl_Role((string)$role["id"]));
|
||||
foreach($role->user as $user) {
|
||||
$this->_users[(string)$user["name"]] = array("password" => (string)$user["password"],
|
||||
"role" => (string)$role["id"]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get ACL with roles from XML file
|
||||
*
|
||||
* @return Zend_Acl
|
||||
*/
|
||||
public function getAcl()
|
||||
{
|
||||
return $this->_acl;
|
||||
}
|
||||
|
||||
/**
|
||||
* Perform authentication
|
||||
*
|
||||
* @throws Zend_Auth_Adapter_Exception
|
||||
* @return Zend_Auth_Result
|
||||
* @see Zend_Auth_Adapter_Interface#authenticate()
|
||||
*/
|
||||
public function authenticate()
|
||||
{
|
||||
if (empty($this->_username) ||
|
||||
empty($this->_password)) {
|
||||
/**
|
||||
* @see Zend_Auth_Adapter_Exception
|
||||
*/
|
||||
require_once 'Zend/Auth/Adapter/Exception.php';
|
||||
throw new Zend_Auth_Adapter_Exception('Username/password should be set');
|
||||
}
|
||||
|
||||
if(!isset($this->_users[$this->_username])) {
|
||||
return new Zend_Auth_Result(Zend_Auth_Result::FAILURE_IDENTITY_NOT_FOUND,
|
||||
null,
|
||||
array('Username not found')
|
||||
);
|
||||
}
|
||||
|
||||
$user = $this->_users[$this->_username];
|
||||
if($user["password"] != $this->_password) {
|
||||
return new Zend_Auth_Result(Zend_Auth_Result::FAILURE_CREDENTIAL_INVALID,
|
||||
null,
|
||||
array('Authentication failed')
|
||||
);
|
||||
}
|
||||
|
||||
$id = new stdClass();
|
||||
$id->role = $user["role"];
|
||||
$id->name = $this->_username;
|
||||
return new Zend_Auth_Result(Zend_Auth_Result::SUCCESS, $id);
|
||||
}
|
||||
}
|
||||
103
_backup/library/Zend/Amf/Adobe/DbInspector.php
Executable file
@@ -0,0 +1,103 @@
|
||||
<?php
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Amf
|
||||
* @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
* @version $Id$
|
||||
*/
|
||||
|
||||
/**
|
||||
* This class implements authentication against XML file with roles for Flex Builder.
|
||||
*
|
||||
* @package Zend_Amf
|
||||
* @subpackage Adobe
|
||||
* @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
class Zend_Amf_Adobe_DbInspector
|
||||
{
|
||||
|
||||
/**
|
||||
* Connect to the database
|
||||
*
|
||||
* @param string $dbType Database adapter type for Zend_Db
|
||||
* @param array|object $dbDescription Adapter-specific connection settings
|
||||
* @return Zend_Db_Adapter_Abstract
|
||||
* @see Zend_Db::factory()
|
||||
*/
|
||||
protected function _connect($dbType, $dbDescription)
|
||||
{
|
||||
if(is_object($dbDescription)) {
|
||||
$dbDescription = get_object_vars($dbDescription);
|
||||
}
|
||||
return Zend_Db::factory($dbType, $dbDescription);
|
||||
}
|
||||
|
||||
/**
|
||||
* Describe database object.
|
||||
*
|
||||
* Usage example:
|
||||
* $inspector->describeTable('Pdo_Mysql',
|
||||
* array(
|
||||
* 'host' => '127.0.0.1',
|
||||
* 'username' => 'webuser',
|
||||
* 'password' => 'xxxxxxxx',
|
||||
* 'dbname' => 'test'
|
||||
* ),
|
||||
* 'mytable'
|
||||
* );
|
||||
*
|
||||
* @param string $dbType Database adapter type for Zend_Db
|
||||
* @param array|object $dbDescription Adapter-specific connection settings
|
||||
* @param string $tableName Table name
|
||||
* @return array Table description
|
||||
* @see Zend_Db::describeTable()
|
||||
* @see Zend_Db::factory()
|
||||
*/
|
||||
public function describeTable($dbType, $dbDescription, $tableName)
|
||||
{
|
||||
$db = $this->_connect($dbType, $dbDescription);
|
||||
return $db->describeTable($tableName);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test database connection
|
||||
*
|
||||
* @param string $dbType Database adapter type for Zend_Db
|
||||
* @param array|object $dbDescription Adapter-specific connection settings
|
||||
* @return bool
|
||||
* @see Zend_Db::factory()
|
||||
*/
|
||||
public function connect($dbType, $dbDescription)
|
||||
{
|
||||
$db = $this->_connect($dbType, $dbDescription);
|
||||
$db->listTables();
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the list of database tables
|
||||
*
|
||||
* @param string $dbType Database adapter type for Zend_Db
|
||||
* @param array|object $dbDescription Adapter-specific connection settings
|
||||
* @return array List of the tables
|
||||
*/
|
||||
public function getTables($dbType, $dbDescription)
|
||||
{
|
||||
$db = $this->_connect($dbType, $dbDescription);
|
||||
return $db->listTables();
|
||||
}
|
||||
}
|
||||
318
_backup/library/Zend/Amf/Adobe/Introspector.php
Executable file
@@ -0,0 +1,318 @@
|
||||
<?php
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Amf
|
||||
* @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
* @version $Id$
|
||||
*/
|
||||
|
||||
/** @see Zend_Amf_Parse_TypeLoader */
|
||||
require_once 'Zend/Amf/Parse/TypeLoader.php';
|
||||
|
||||
/** @see Zend_Reflection_Class */
|
||||
require_once 'Zend/Reflection/Class.php';
|
||||
|
||||
/** @see Zend_Server_Reflection */
|
||||
require_once 'Zend/Server/Reflection.php';
|
||||
|
||||
/**
|
||||
* This class implements a service for generating AMF service descriptions as XML.
|
||||
*
|
||||
* @package Zend_Amf
|
||||
* @subpackage Adobe
|
||||
* @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
class Zend_Amf_Adobe_Introspector
|
||||
{
|
||||
/**
|
||||
* Options used:
|
||||
* - server: instance of Zend_Amf_Server to use
|
||||
* - directories: directories where class files may be looked up
|
||||
*
|
||||
* @var array Introspector options
|
||||
*/
|
||||
protected $_options;
|
||||
|
||||
/**
|
||||
* @var DOMElement DOM element to store types
|
||||
*/
|
||||
protected $_types;
|
||||
|
||||
/**
|
||||
* @var array Map of the known types
|
||||
*/
|
||||
protected $_typesMap = array();
|
||||
|
||||
/**
|
||||
* @var DOMDocument XML document to store data
|
||||
*/
|
||||
protected $_xml;
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
$this->_xml = new DOMDocument('1.0', 'utf-8');
|
||||
}
|
||||
|
||||
/**
|
||||
* Create XML definition on an AMF service class
|
||||
*
|
||||
* @param string $serviceClass Service class name
|
||||
* @param array $options invocation options
|
||||
* @return string XML with service class introspection
|
||||
*/
|
||||
public function introspect($serviceClass, $options = array())
|
||||
{
|
||||
$this->_options = $options;
|
||||
|
||||
if (strpbrk($serviceClass, '\\/<>')) {
|
||||
return $this->_returnError('Invalid service name');
|
||||
}
|
||||
|
||||
// Transform com.foo.Bar into com_foo_Bar
|
||||
$serviceClass = str_replace('.' , '_', $serviceClass);
|
||||
|
||||
// Introspect!
|
||||
if (!class_exists($serviceClass)) {
|
||||
require_once 'Zend/Loader.php';
|
||||
Zend_Loader::loadClass($serviceClass, $this->_getServicePath());
|
||||
}
|
||||
|
||||
$serv = $this->_xml->createElement('service-description');
|
||||
$serv->setAttribute('xmlns', 'http://ns.adobe.com/flex/service-description/2008');
|
||||
|
||||
$this->_types = $this->_xml->createElement('types');
|
||||
$this->_ops = $this->_xml->createElement('operations');
|
||||
|
||||
$r = Zend_Server_Reflection::reflectClass($serviceClass);
|
||||
$this->_addService($r, $this->_ops);
|
||||
|
||||
$serv->appendChild($this->_types);
|
||||
$serv->appendChild($this->_ops);
|
||||
$this->_xml->appendChild($serv);
|
||||
|
||||
return $this->_xml->saveXML();
|
||||
}
|
||||
|
||||
/**
|
||||
* Authentication handler
|
||||
*
|
||||
* @param Zend_Acl $acl
|
||||
* @return unknown_type
|
||||
*/
|
||||
public function initAcl(Zend_Acl $acl)
|
||||
{
|
||||
return false; // we do not need auth for this class
|
||||
}
|
||||
|
||||
/**
|
||||
* Generate map of public class attributes
|
||||
*
|
||||
* @param string $typename type name
|
||||
* @param DOMElement $typexml target XML element
|
||||
* @return void
|
||||
*/
|
||||
protected function _addClassAttributes($typename, DOMElement $typexml)
|
||||
{
|
||||
// Do not try to autoload here because _phpTypeToAS should
|
||||
// have already attempted to load this class
|
||||
if (!class_exists($typename, false)) {
|
||||
return;
|
||||
}
|
||||
|
||||
$rc = new Zend_Reflection_Class($typename);
|
||||
foreach ($rc->getProperties() as $prop) {
|
||||
if (!$prop->isPublic()) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$propxml = $this->_xml->createElement('property');
|
||||
$propxml->setAttribute('name', $prop->getName());
|
||||
|
||||
$type = $this->_registerType($this->_getPropertyType($prop));
|
||||
$propxml->setAttribute('type', $type);
|
||||
|
||||
$typexml->appendChild($propxml);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Build XML service description from reflection class
|
||||
*
|
||||
* @param Zend_Server_Reflection_Class $refclass
|
||||
* @param DOMElement $target target XML element
|
||||
* @return void
|
||||
*/
|
||||
protected function _addService(Zend_Server_Reflection_Class $refclass, DOMElement $target)
|
||||
{
|
||||
foreach ($refclass->getMethods() as $method) {
|
||||
if (!$method->isPublic()
|
||||
|| $method->isConstructor()
|
||||
|| ('__' == substr($method->name, 0, 2))
|
||||
) {
|
||||
continue;
|
||||
}
|
||||
|
||||
foreach ($method->getPrototypes() as $proto) {
|
||||
$op = $this->_xml->createElement('operation');
|
||||
$op->setAttribute('name', $method->getName());
|
||||
|
||||
$rettype = $this->_registerType($proto->getReturnType());
|
||||
$op->setAttribute('returnType', $rettype);
|
||||
|
||||
foreach ($proto->getParameters() as $param) {
|
||||
$arg = $this->_xml->createElement('argument');
|
||||
$arg->setAttribute('name', $param->getName());
|
||||
|
||||
$type = $param->getType();
|
||||
if ($type == 'mixed' && ($pclass = $param->getClass())) {
|
||||
$type = $pclass->getName();
|
||||
}
|
||||
|
||||
$ptype = $this->_registerType($type);
|
||||
$arg->setAttribute('type', $ptype);
|
||||
|
||||
if($param->isDefaultValueAvailable()) {
|
||||
$arg->setAttribute('defaultvalue', $param->getDefaultValue());
|
||||
}
|
||||
|
||||
$op->appendChild($arg);
|
||||
}
|
||||
|
||||
$target->appendChild($op);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Extract type of the property from DocBlock
|
||||
*
|
||||
* @param Zend_Reflection_Property $prop reflection property object
|
||||
* @return string Property type
|
||||
*/
|
||||
protected function _getPropertyType(Zend_Reflection_Property $prop)
|
||||
{
|
||||
$docBlock = $prop->getDocComment();
|
||||
|
||||
if (!$docBlock) {
|
||||
return 'Unknown';
|
||||
}
|
||||
|
||||
if (!$docBlock->hasTag('var')) {
|
||||
return 'Unknown';
|
||||
}
|
||||
|
||||
$tag = $docBlock->getTag('var');
|
||||
return trim($tag->getDescription());
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the array of service directories
|
||||
*
|
||||
* @return array Service class directories
|
||||
*/
|
||||
protected function _getServicePath()
|
||||
{
|
||||
if (isset($this->_options['server'])) {
|
||||
return $this->_options['server']->getDirectory();
|
||||
}
|
||||
|
||||
if (isset($this->_options['directories'])) {
|
||||
return $this->_options['directories'];
|
||||
}
|
||||
|
||||
return array();
|
||||
}
|
||||
|
||||
/**
|
||||
* Map from PHP type name to AS type name
|
||||
*
|
||||
* @param string $typename PHP type name
|
||||
* @return string AS type name
|
||||
*/
|
||||
protected function _phpTypeToAS($typename)
|
||||
{
|
||||
if (class_exists($typename)) {
|
||||
$vars = get_class_vars($typename);
|
||||
|
||||
if (isset($vars['_explicitType'])) {
|
||||
return $vars['_explicitType'];
|
||||
}
|
||||
}
|
||||
|
||||
if (false !== ($asname = Zend_Amf_Parse_TypeLoader::getMappedClassName($typename))) {
|
||||
return $asname;
|
||||
}
|
||||
|
||||
return $typename;
|
||||
}
|
||||
|
||||
/**
|
||||
* Register new type on the system
|
||||
*
|
||||
* @param string $typename type name
|
||||
* @return string New type name
|
||||
*/
|
||||
protected function _registerType($typename)
|
||||
{
|
||||
// Known type - return its AS name
|
||||
if (isset($this->_typesMap[$typename])) {
|
||||
return $this->_typesMap[$typename];
|
||||
}
|
||||
|
||||
// Standard types
|
||||
if (in_array($typename, array('void', 'null', 'mixed', 'unknown_type'))) {
|
||||
return 'Unknown';
|
||||
}
|
||||
|
||||
// Arrays
|
||||
if ('array' == $typename) {
|
||||
return 'Unknown[]';
|
||||
}
|
||||
|
||||
if (in_array($typename, array('int', 'integer', 'bool', 'boolean', 'float', 'string', 'object', 'Unknown', 'stdClass'))) {
|
||||
return $typename;
|
||||
}
|
||||
|
||||
// Resolve and store AS name
|
||||
$asTypeName = $this->_phpTypeToAS($typename);
|
||||
$this->_typesMap[$typename] = $asTypeName;
|
||||
|
||||
// Create element for the name
|
||||
$typeEl = $this->_xml->createElement('type');
|
||||
$typeEl->setAttribute('name', $asTypeName);
|
||||
$this->_addClassAttributes($typename, $typeEl);
|
||||
$this->_types->appendChild($typeEl);
|
||||
|
||||
return $asTypeName;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return error with error message
|
||||
*
|
||||
* @param string $msg Error message
|
||||
* @return string
|
||||
*/
|
||||
protected function _returnError($msg)
|
||||
{
|
||||
return 'ERROR: $msg';
|
||||
}
|
||||
}
|
||||
42
_backup/library/Zend/Amf/Auth/Abstract.php
Executable file
@@ -0,0 +1,42 @@
|
||||
<?php
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Amf
|
||||
* @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
* @version $Id$
|
||||
*/
|
||||
|
||||
/** @see Zend_Auth_Adapter_Interface */
|
||||
require_once 'Zend/Auth/Adapter/Interface.php';
|
||||
|
||||
/**
|
||||
* Base abstract class for AMF authentication implementation
|
||||
*
|
||||
* @package Zend_Amf
|
||||
* @subpackage Auth
|
||||
* @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
abstract class Zend_Amf_Auth_Abstract implements Zend_Auth_Adapter_Interface
|
||||
{
|
||||
protected $_username;
|
||||
protected $_password;
|
||||
|
||||
public function setCredentials($username, $password) {
|
||||
$this->_username = $username;
|
||||
$this->_password = $password;
|
||||
}
|
||||
}
|
||||
87
_backup/library/Zend/Amf/Constants.php
Normal file
@@ -0,0 +1,87 @@
|
||||
<?php
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Amf
|
||||
* @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
* @version $Id$
|
||||
*/
|
||||
|
||||
/**
|
||||
* The following constants are used throughout serialization and
|
||||
* deserialization to detect the AMF marker and encoding types.
|
||||
*
|
||||
* @package Zend_Amf
|
||||
* @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
final class Zend_Amf_Constants
|
||||
{
|
||||
const AMF0_NUMBER = 0x00;
|
||||
const AMF0_BOOLEAN = 0x01;
|
||||
const AMF0_STRING = 0x02;
|
||||
const AMF0_OBJECT = 0x03;
|
||||
const AMF0_MOVIECLIP = 0x04;
|
||||
const AMF0_NULL = 0x05;
|
||||
const AMF0_UNDEFINED = 0x06;
|
||||
const AMF0_REFERENCE = 0x07;
|
||||
const AMF0_MIXEDARRAY = 0x08;
|
||||
const AMF0_OBJECTTERM = 0x09;
|
||||
const AMF0_ARRAY = 0x0a;
|
||||
const AMF0_DATE = 0x0b;
|
||||
const AMF0_LONGSTRING = 0x0c;
|
||||
const AMF0_UNSUPPORTED = 0x0e;
|
||||
const AMF0_XML = 0x0f;
|
||||
const AMF0_TYPEDOBJECT = 0x10;
|
||||
const AMF0_AMF3 = 0x11;
|
||||
const AMF0_OBJECT_ENCODING = 0x00;
|
||||
|
||||
const AMF3_UNDEFINED = 0x00;
|
||||
const AMF3_NULL = 0x01;
|
||||
const AMF3_BOOLEAN_FALSE = 0x02;
|
||||
const AMF3_BOOLEAN_TRUE = 0x03;
|
||||
const AMF3_INTEGER = 0x04;
|
||||
const AMF3_NUMBER = 0x05;
|
||||
const AMF3_STRING = 0x06;
|
||||
const AMF3_XML = 0x07;
|
||||
const AMF3_DATE = 0x08;
|
||||
const AMF3_ARRAY = 0x09;
|
||||
const AMF3_OBJECT = 0x0A;
|
||||
const AMF3_XMLSTRING = 0x0B;
|
||||
const AMF3_BYTEARRAY = 0x0C;
|
||||
const AMF3_OBJECT_ENCODING = 0x03;
|
||||
|
||||
// Object encodings for AMF3 object types
|
||||
const ET_PROPLIST = 0x00;
|
||||
const ET_EXTERNAL = 0x01;
|
||||
const ET_DYNAMIC = 0x02;
|
||||
const ET_PROXY = 0x03;
|
||||
|
||||
const FMS_OBJECT_ENCODING = 0x01;
|
||||
|
||||
/**
|
||||
* Special content length value that indicates "unknown" content length
|
||||
* per AMF Specification
|
||||
*/
|
||||
const UNKNOWN_CONTENT_LENGTH = -1;
|
||||
const URL_APPEND_HEADER = 'AppendToGatewayUrl';
|
||||
const RESULT_METHOD = '/onResult';
|
||||
const STATUS_METHOD = '/onStatus';
|
||||
const CREDENTIALS_HEADER = 'Credentials';
|
||||
const PERSISTENT_HEADER = 'RequestPersistentHeader';
|
||||
const DESCRIBE_HEADER = 'DescribeService';
|
||||
|
||||
const GUEST_ROLE = 'anonymous';
|
||||
}
|
||||
34
_backup/library/Zend/Amf/Exception.php
Normal file
@@ -0,0 +1,34 @@
|
||||
<?php
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Amf
|
||||
* @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
* @version $Id$
|
||||
*/
|
||||
|
||||
/**
|
||||
* @see Zend_Exception
|
||||
*/
|
||||
require_once 'Zend/Exception.php';
|
||||
|
||||
/**
|
||||
* @package Zend_Amf
|
||||
* @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
class Zend_Amf_Exception extends Zend_Exception
|
||||
{
|
||||
}
|
||||
309
_backup/library/Zend/Amf/Parse/Amf0/Deserializer.php
Normal file
@@ -0,0 +1,309 @@
|
||||
<?php
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Amf
|
||||
* @subpackage Parse_Amf0
|
||||
* @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
* @version $Id$
|
||||
*/
|
||||
|
||||
/** Zend_Amf_Constants */
|
||||
require_once 'Zend/Amf/Constants.php';
|
||||
|
||||
/** Zend_Xml_Security */
|
||||
require_once 'Zend/Xml/Security.php';
|
||||
|
||||
/** @see Zend_Amf_Parse_Deserializer */
|
||||
require_once 'Zend/Amf/Parse/Deserializer.php';
|
||||
|
||||
/**
|
||||
* Read an AMF0 input stream and convert it into PHP data types
|
||||
*
|
||||
* @todo Implement Typed Object Class Mapping
|
||||
* @todo Class could be implemented as Factory Class with each data type it's own class
|
||||
* @package Zend_Amf
|
||||
* @subpackage Parse_Amf0
|
||||
* @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
class Zend_Amf_Parse_Amf0_Deserializer extends Zend_Amf_Parse_Deserializer
|
||||
{
|
||||
/**
|
||||
* An array of objects used for recursively deserializing an object.
|
||||
* @var array
|
||||
*/
|
||||
protected $_reference = array();
|
||||
|
||||
/**
|
||||
* If AMF3 serialization occurs, update to AMF0 0x03
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
protected $_objectEncoding = Zend_Amf_Constants::AMF0_OBJECT_ENCODING;
|
||||
|
||||
/**
|
||||
* Read AMF markers and dispatch for deserialization
|
||||
*
|
||||
* Checks for AMF marker types and calls the appropriate methods
|
||||
* for deserializing those marker types. Markers are the data type of
|
||||
* the following value.
|
||||
*
|
||||
* @param integer $typeMarker
|
||||
* @return mixed whatever the data type is of the marker in php
|
||||
* @throws Zend_Amf_Exception for invalid type
|
||||
*/
|
||||
public function readTypeMarker($typeMarker = null)
|
||||
{
|
||||
if ($typeMarker === null) {
|
||||
$typeMarker = $this->_stream->readByte();
|
||||
}
|
||||
|
||||
switch($typeMarker) {
|
||||
// number
|
||||
case Zend_Amf_Constants::AMF0_NUMBER:
|
||||
return $this->_stream->readDouble();
|
||||
|
||||
// boolean
|
||||
case Zend_Amf_Constants::AMF0_BOOLEAN:
|
||||
return (boolean) $this->_stream->readByte();
|
||||
|
||||
// string
|
||||
case Zend_Amf_Constants::AMF0_STRING:
|
||||
return $this->_stream->readUTF();
|
||||
|
||||
// object
|
||||
case Zend_Amf_Constants::AMF0_OBJECT:
|
||||
return $this->readObject();
|
||||
|
||||
// null
|
||||
case Zend_Amf_Constants::AMF0_NULL:
|
||||
return null;
|
||||
|
||||
// undefined
|
||||
case Zend_Amf_Constants::AMF0_UNDEFINED:
|
||||
return null;
|
||||
|
||||
// Circular references are returned here
|
||||
case Zend_Amf_Constants::AMF0_REFERENCE:
|
||||
return $this->readReference();
|
||||
|
||||
// mixed array with numeric and string keys
|
||||
case Zend_Amf_Constants::AMF0_MIXEDARRAY:
|
||||
return $this->readMixedArray();
|
||||
|
||||
// array
|
||||
case Zend_Amf_Constants::AMF0_ARRAY:
|
||||
return $this->readArray();
|
||||
|
||||
// date
|
||||
case Zend_Amf_Constants::AMF0_DATE:
|
||||
return $this->readDate();
|
||||
|
||||
// longString strlen(string) > 2^16
|
||||
case Zend_Amf_Constants::AMF0_LONGSTRING:
|
||||
return $this->_stream->readLongUTF();
|
||||
|
||||
//internal AS object, not supported
|
||||
case Zend_Amf_Constants::AMF0_UNSUPPORTED:
|
||||
return null;
|
||||
|
||||
// XML
|
||||
case Zend_Amf_Constants::AMF0_XML:
|
||||
return $this->readXmlString();
|
||||
|
||||
// typed object ie Custom Class
|
||||
case Zend_Amf_Constants::AMF0_TYPEDOBJECT:
|
||||
return $this->readTypedObject();
|
||||
|
||||
//AMF3-specific
|
||||
case Zend_Amf_Constants::AMF0_AMF3:
|
||||
return $this->readAmf3TypeMarker();
|
||||
|
||||
default:
|
||||
require_once 'Zend/Amf/Exception.php';
|
||||
throw new Zend_Amf_Exception('Unsupported marker type: ' . $typeMarker);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Read AMF objects and convert to PHP objects
|
||||
*
|
||||
* Read the name value pair objects form the php message and convert them to
|
||||
* a php object class.
|
||||
*
|
||||
* Called when the marker type is 3.
|
||||
*
|
||||
* @param array|null $object
|
||||
* @return object
|
||||
*/
|
||||
public function readObject($object = null)
|
||||
{
|
||||
if ($object === null) {
|
||||
$object = array();
|
||||
}
|
||||
|
||||
while (true) {
|
||||
$key = $this->_stream->readUTF();
|
||||
$typeMarker = $this->_stream->readByte();
|
||||
if ($typeMarker != Zend_Amf_Constants::AMF0_OBJECTTERM ){
|
||||
//Recursivly call readTypeMarker to get the types of properties in the object
|
||||
$object[$key] = $this->readTypeMarker($typeMarker);
|
||||
} else {
|
||||
//encountered AMF object terminator
|
||||
break;
|
||||
}
|
||||
}
|
||||
$this->_reference[] = $object;
|
||||
return (object) $object;
|
||||
}
|
||||
|
||||
/**
|
||||
* Read reference objects
|
||||
*
|
||||
* Used to gain access to the private array of reference objects.
|
||||
* Called when marker type is 7.
|
||||
*
|
||||
* @return object
|
||||
* @throws Zend_Amf_Exception for invalid reference keys
|
||||
*/
|
||||
public function readReference()
|
||||
{
|
||||
$key = $this->_stream->readInt();
|
||||
if (!array_key_exists($key, $this->_reference)) {
|
||||
require_once 'Zend/Amf/Exception.php';
|
||||
throw new Zend_Amf_Exception('Invalid reference key: '. $key);
|
||||
}
|
||||
return $this->_reference[$key];
|
||||
}
|
||||
|
||||
/**
|
||||
* Reads an array with numeric and string indexes.
|
||||
*
|
||||
* Called when marker type is 8
|
||||
*
|
||||
* @todo As of Flash Player 9 there is not support for mixed typed arrays
|
||||
* so we handle this as an object. With the introduction of vectors
|
||||
* in Flash Player 10 this may need to be reconsidered.
|
||||
* @return array
|
||||
*/
|
||||
public function readMixedArray()
|
||||
{
|
||||
$length = $this->_stream->readLong();
|
||||
return $this->readObject();
|
||||
}
|
||||
|
||||
/**
|
||||
* Converts numerically indexed actiosncript arrays into php arrays.
|
||||
*
|
||||
* Called when marker type is 10
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function readArray()
|
||||
{
|
||||
$length = $this->_stream->readLong();
|
||||
$array = array();
|
||||
while ($length--) {
|
||||
$array[] = $this->readTypeMarker();
|
||||
}
|
||||
return $array;
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert AS Date to Zend_Date
|
||||
*
|
||||
* @return Zend_Date
|
||||
*/
|
||||
public function readDate()
|
||||
{
|
||||
// get the unix time stamp. Not sure why ActionScript does not use
|
||||
// milliseconds
|
||||
$timestamp = floor($this->_stream->readDouble() / 1000);
|
||||
|
||||
// The timezone offset is never returned to the server; it is always 0,
|
||||
// so read and ignore.
|
||||
$offset = $this->_stream->readInt();
|
||||
|
||||
require_once 'Zend/Date.php';
|
||||
$date = new Zend_Date($timestamp);
|
||||
return $date;
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert XML to SimpleXml
|
||||
* If user wants DomDocument they can use dom_import_simplexml
|
||||
*
|
||||
* @return SimpleXml Object
|
||||
*/
|
||||
public function readXmlString()
|
||||
{
|
||||
$string = $this->_stream->readLongUTF();
|
||||
return Zend_Xml_Security::scan($string); //simplexml_load_string($string);
|
||||
}
|
||||
|
||||
/**
|
||||
* Read Class that is to be mapped to a server class.
|
||||
*
|
||||
* Commonly used for Value Objects on the server
|
||||
*
|
||||
* @todo implement Typed Class mapping
|
||||
* @return object|array
|
||||
* @throws Zend_Amf_Exception if unable to load type
|
||||
*/
|
||||
public function readTypedObject()
|
||||
{
|
||||
require_once 'Zend/Amf/Parse/TypeLoader.php';
|
||||
// get the remote class name
|
||||
$className = $this->_stream->readUTF();
|
||||
$loader = Zend_Amf_Parse_TypeLoader::loadType($className);
|
||||
$returnObject = new $loader();
|
||||
$properties = get_object_vars($this->readObject());
|
||||
foreach($properties as $key=>$value) {
|
||||
if($key) {
|
||||
$returnObject->$key = $value;
|
||||
}
|
||||
}
|
||||
if($returnObject instanceof Zend_Amf_Value_Messaging_ArrayCollection) {
|
||||
$returnObject = get_object_vars($returnObject);
|
||||
}
|
||||
return $returnObject;
|
||||
}
|
||||
|
||||
/**
|
||||
* AMF3 data type encountered load AMF3 Deserializer to handle
|
||||
* type markers.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function readAmf3TypeMarker()
|
||||
{
|
||||
require_once 'Zend/Amf/Parse/Amf3/Deserializer.php';
|
||||
$deserializer = new Zend_Amf_Parse_Amf3_Deserializer($this->_stream);
|
||||
$this->_objectEncoding = Zend_Amf_Constants::AMF3_OBJECT_ENCODING;
|
||||
return $deserializer->readTypeMarker();
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the object encoding to check if an AMF3 object
|
||||
* is going to be return.
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
public function getObjectEncoding()
|
||||
{
|
||||
return $this->_objectEncoding;
|
||||
}
|
||||
}
|
||||
362
_backup/library/Zend/Amf/Parse/Amf0/Serializer.php
Normal file
@@ -0,0 +1,362 @@
|
||||
<?php
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Amf
|
||||
* @subpackage Parse_Amf0
|
||||
* @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
* @version $Id$
|
||||
*/
|
||||
|
||||
/** Zend_Amf_Constants */
|
||||
require_once 'Zend/Amf/Constants.php';
|
||||
|
||||
/** @see Zend_Amf_Parse_Serializer */
|
||||
require_once 'Zend/Amf/Parse/Serializer.php';
|
||||
|
||||
/**
|
||||
* Serializer PHP misc types back to there corresponding AMF0 Type Marker.
|
||||
*
|
||||
* @uses Zend_Amf_Parse_Serializer
|
||||
* @package Zend_Amf
|
||||
* @subpackage Parse_Amf0
|
||||
* @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
class Zend_Amf_Parse_Amf0_Serializer extends Zend_Amf_Parse_Serializer
|
||||
{
|
||||
/**
|
||||
* @var string Name of the class to be returned
|
||||
*/
|
||||
protected $_className = '';
|
||||
|
||||
/**
|
||||
* An array of reference objects
|
||||
* @var array
|
||||
*/
|
||||
protected $_referenceObjects = array();
|
||||
|
||||
/**
|
||||
* Determine type and serialize accordingly
|
||||
*
|
||||
* Checks to see if the type was declared and then either
|
||||
* auto negotiates the type or relies on the user defined markerType to
|
||||
* serialize the data into amf
|
||||
*
|
||||
* @param mixed $data
|
||||
* @param mixed $markerType
|
||||
* @param mixed $dataByVal
|
||||
* @return Zend_Amf_Parse_Amf0_Serializer
|
||||
* @throws Zend_Amf_Exception for unrecognized types or data
|
||||
*/
|
||||
public function writeTypeMarker(&$data, $markerType = null, $dataByVal = false)
|
||||
{
|
||||
// Workaround for PHP5 with E_STRICT enabled complaining about "Only
|
||||
// variables should be passed by reference"
|
||||
if ((null === $data) && ($dataByVal !== false)) {
|
||||
$data = &$dataByVal;
|
||||
}
|
||||
if (null !== $markerType) {
|
||||
//try to reference the given object
|
||||
if (!$this->writeObjectReference($data, $markerType)) {
|
||||
// Write the Type Marker to denote the following action script data type
|
||||
$this->_stream->writeByte($markerType);
|
||||
switch($markerType) {
|
||||
case Zend_Amf_Constants::AMF0_NUMBER:
|
||||
$this->_stream->writeDouble($data);
|
||||
break;
|
||||
case Zend_Amf_Constants::AMF0_BOOLEAN:
|
||||
$this->_stream->writeByte($data);
|
||||
break;
|
||||
case Zend_Amf_Constants::AMF0_STRING:
|
||||
$this->_stream->writeUTF($data);
|
||||
break;
|
||||
case Zend_Amf_Constants::AMF0_OBJECT:
|
||||
$this->writeObject($data);
|
||||
break;
|
||||
case Zend_Amf_Constants::AMF0_NULL:
|
||||
break;
|
||||
case Zend_Amf_Constants::AMF0_REFERENCE:
|
||||
$this->_stream->writeInt($data);
|
||||
break;
|
||||
case Zend_Amf_Constants::AMF0_MIXEDARRAY:
|
||||
// Write length of numeric keys as zero.
|
||||
$this->_stream->writeLong(0);
|
||||
$this->writeObject($data);
|
||||
break;
|
||||
case Zend_Amf_Constants::AMF0_ARRAY:
|
||||
$this->writeArray($data);
|
||||
break;
|
||||
case Zend_Amf_Constants::AMF0_DATE:
|
||||
$this->writeDate($data);
|
||||
break;
|
||||
case Zend_Amf_Constants::AMF0_LONGSTRING:
|
||||
$this->_stream->writeLongUTF($data);
|
||||
break;
|
||||
case Zend_Amf_Constants::AMF0_TYPEDOBJECT:
|
||||
$this->writeTypedObject($data);
|
||||
break;
|
||||
case Zend_Amf_Constants::AMF0_AMF3:
|
||||
$this->writeAmf3TypeMarker($data);
|
||||
break;
|
||||
default:
|
||||
require_once 'Zend/Amf/Exception.php';
|
||||
throw new Zend_Amf_Exception("Unknown Type Marker: " . $markerType);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (is_resource($data)) {
|
||||
$data = Zend_Amf_Parse_TypeLoader::handleResource($data);
|
||||
}
|
||||
switch (true) {
|
||||
case (is_int($data) || is_float($data)):
|
||||
$markerType = Zend_Amf_Constants::AMF0_NUMBER;
|
||||
break;
|
||||
case (is_bool($data)):
|
||||
$markerType = Zend_Amf_Constants::AMF0_BOOLEAN;
|
||||
break;
|
||||
case (is_string($data) && (($this->_mbStringFunctionsOverloaded ? mb_strlen($data, '8bit') : strlen($data)) > 65536)):
|
||||
$markerType = Zend_Amf_Constants::AMF0_LONGSTRING;
|
||||
break;
|
||||
case (is_string($data)):
|
||||
$markerType = Zend_Amf_Constants::AMF0_STRING;
|
||||
break;
|
||||
case (is_object($data)):
|
||||
if (($data instanceof DateTime) || ($data instanceof Zend_Date)) {
|
||||
$markerType = Zend_Amf_Constants::AMF0_DATE;
|
||||
} else {
|
||||
|
||||
if($className = $this->getClassName($data)){
|
||||
//Object is a Typed object set classname
|
||||
$markerType = Zend_Amf_Constants::AMF0_TYPEDOBJECT;
|
||||
$this->_className = $className;
|
||||
} else {
|
||||
// Object is a generic classname
|
||||
$markerType = Zend_Amf_Constants::AMF0_OBJECT;
|
||||
}
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case (null === $data):
|
||||
$markerType = Zend_Amf_Constants::AMF0_NULL;
|
||||
break;
|
||||
case (is_array($data)):
|
||||
// check if it is an associative array
|
||||
$i = 0;
|
||||
foreach (array_keys($data) as $key) {
|
||||
// check if it contains non-integer keys
|
||||
if (!is_numeric($key) || intval($key) != $key) {
|
||||
$markerType = Zend_Amf_Constants::AMF0_OBJECT;
|
||||
break;
|
||||
// check if it is a sparse indexed array
|
||||
} else if ($key != $i) {
|
||||
$markerType = Zend_Amf_Constants::AMF0_MIXEDARRAY;
|
||||
break;
|
||||
}
|
||||
$i++;
|
||||
}
|
||||
// Dealing with a standard numeric array
|
||||
if(!$markerType){
|
||||
$markerType = Zend_Amf_Constants::AMF0_ARRAY;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
require_once 'Zend/Amf/Exception.php';
|
||||
throw new Zend_Amf_Exception('Unsupported data type: ' . gettype($data));
|
||||
}
|
||||
|
||||
$this->writeTypeMarker($data, $markerType);
|
||||
}
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if the given object is in the reference table, write the reference if it exists,
|
||||
* otherwise add the object to the reference table
|
||||
*
|
||||
* @param mixed $object object reference to check for reference
|
||||
* @param string $markerType AMF type of the object to write
|
||||
* @param mixed $objectByVal object to check for reference
|
||||
* @return Boolean true, if the reference was written, false otherwise
|
||||
*/
|
||||
protected function writeObjectReference(&$object, $markerType, $objectByVal = false)
|
||||
{
|
||||
// Workaround for PHP5 with E_STRICT enabled complaining about "Only
|
||||
// variables should be passed by reference"
|
||||
if ((null === $object) && ($objectByVal !== false)) {
|
||||
$object = &$objectByVal;
|
||||
}
|
||||
|
||||
if ($markerType == Zend_Amf_Constants::AMF0_OBJECT
|
||||
|| $markerType == Zend_Amf_Constants::AMF0_MIXEDARRAY
|
||||
|| $markerType == Zend_Amf_Constants::AMF0_ARRAY
|
||||
|| $markerType == Zend_Amf_Constants::AMF0_TYPEDOBJECT
|
||||
) {
|
||||
$ref = array_search($object, $this->_referenceObjects, true);
|
||||
//handle object reference
|
||||
if($ref !== false){
|
||||
$this->writeTypeMarker($ref,Zend_Amf_Constants::AMF0_REFERENCE);
|
||||
return true;
|
||||
}
|
||||
|
||||
$this->_referenceObjects[] = $object;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Write a PHP array with string or mixed keys.
|
||||
*
|
||||
* @param object $data
|
||||
* @return Zend_Amf_Parse_Amf0_Serializer
|
||||
*/
|
||||
public function writeObject($object)
|
||||
{
|
||||
// Loop each element and write the name of the property.
|
||||
foreach ($object as $key => &$value) {
|
||||
// skip variables starting with an _ private transient
|
||||
if( $key[0] == "_") continue;
|
||||
$this->_stream->writeUTF($key);
|
||||
$this->writeTypeMarker($value);
|
||||
}
|
||||
|
||||
// Write the end object flag
|
||||
$this->_stream->writeInt(0);
|
||||
$this->_stream->writeByte(Zend_Amf_Constants::AMF0_OBJECTTERM);
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Write a standard numeric array to the output stream. If a mixed array
|
||||
* is encountered call writeTypeMarker with mixed array.
|
||||
*
|
||||
* @param array $array
|
||||
* @return Zend_Amf_Parse_Amf0_Serializer
|
||||
*/
|
||||
public function writeArray(&$array)
|
||||
{
|
||||
$length = count($array);
|
||||
if (!$length < 0) {
|
||||
// write the length of the array
|
||||
$this->_stream->writeLong(0);
|
||||
} else {
|
||||
// Write the length of the numeric array
|
||||
$this->_stream->writeLong($length);
|
||||
for ($i=0; $i<$length; $i++) {
|
||||
$value = isset($array[$i]) ? $array[$i] : null;
|
||||
$this->writeTypeMarker($value);
|
||||
}
|
||||
}
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert the DateTime into an AMF Date
|
||||
*
|
||||
* @param DateTime|Zend_Date $data
|
||||
* @return Zend_Amf_Parse_Amf0_Serializer
|
||||
*/
|
||||
public function writeDate($data)
|
||||
{
|
||||
if ($data instanceof DateTime) {
|
||||
$dateString = $data->format('U');
|
||||
} elseif ($data instanceof Zend_Date) {
|
||||
$dateString = $data->toString('U');
|
||||
} else {
|
||||
require_once 'Zend/Amf/Exception.php';
|
||||
throw new Zend_Amf_Exception('Invalid date specified; must be a DateTime or Zend_Date object');
|
||||
}
|
||||
$dateString *= 1000;
|
||||
|
||||
// Make the conversion and remove milliseconds.
|
||||
$this->_stream->writeDouble($dateString);
|
||||
|
||||
// Flash does not respect timezone but requires it.
|
||||
$this->_stream->writeInt(0);
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Write a class mapped object to the output stream.
|
||||
*
|
||||
* @param object $data
|
||||
* @return Zend_Amf_Parse_Amf0_Serializer
|
||||
*/
|
||||
public function writeTypedObject($data)
|
||||
{
|
||||
$this->_stream->writeUTF($this->_className);
|
||||
$this->writeObject($data);
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Encountered and AMF3 Type Marker use AMF3 serializer. Once AMF3 is
|
||||
* encountered it will not return to AMf0.
|
||||
*
|
||||
* @param string $data
|
||||
* @return Zend_Amf_Parse_Amf0_Serializer
|
||||
*/
|
||||
public function writeAmf3TypeMarker(&$data)
|
||||
{
|
||||
require_once 'Zend/Amf/Parse/Amf3/Serializer.php';
|
||||
$serializer = new Zend_Amf_Parse_Amf3_Serializer($this->_stream);
|
||||
$serializer->writeTypeMarker($data);
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Find if the class name is a class mapped name and return the
|
||||
* respective classname if it is.
|
||||
*
|
||||
* @param object $object
|
||||
* @return false|string $className
|
||||
*/
|
||||
protected function getClassName($object)
|
||||
{
|
||||
require_once 'Zend/Amf/Parse/TypeLoader.php';
|
||||
//Check to see if the object is a typed object and we need to change
|
||||
$className = '';
|
||||
switch (true) {
|
||||
// the return class mapped name back to actionscript class name.
|
||||
case Zend_Amf_Parse_TypeLoader::getMappedClassName(get_class($object)):
|
||||
$className = Zend_Amf_Parse_TypeLoader::getMappedClassName(get_class($object));
|
||||
break;
|
||||
// Check to see if the user has defined an explicit Action Script type.
|
||||
case isset($object->_explicitType):
|
||||
$className = $object->_explicitType;
|
||||
break;
|
||||
// Check if user has defined a method for accessing the Action Script type
|
||||
case method_exists($object, 'getASClassName'):
|
||||
$className = $object->getASClassName();
|
||||
break;
|
||||
// No return class name is set make it a generic object
|
||||
case ($object instanceof stdClass):
|
||||
$className = '';
|
||||
break;
|
||||
// By default, use object's class name
|
||||
default:
|
||||
$className = get_class($object);
|
||||
break;
|
||||
}
|
||||
if(!$className == '') {
|
||||
return $className;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
425
_backup/library/Zend/Amf/Parse/Amf3/Deserializer.php
Normal file
@@ -0,0 +1,425 @@
|
||||
<?php
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Amf
|
||||
* @subpackage Parse_Amf3
|
||||
* @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
* @version $Id$
|
||||
*/
|
||||
|
||||
/** Zend_Amf_Parse_Deserializer */
|
||||
require_once 'Zend/Amf/Parse/Deserializer.php';
|
||||
|
||||
/** Zend_Xml_Security */
|
||||
require_once 'Zend/Xml/Security.php';
|
||||
|
||||
/** Zend_Amf_Parse_TypeLoader */
|
||||
require_once 'Zend/Amf/Parse/TypeLoader.php';
|
||||
|
||||
/**
|
||||
* Read an AMF3 input stream and convert it into PHP data types.
|
||||
*
|
||||
* @todo readObject to handle Typed Objects
|
||||
* @todo readXMLStrimg to be implemented.
|
||||
* @todo Class could be implemented as Factory Class with each data type it's own class.
|
||||
* @package Zend_Amf
|
||||
* @subpackage Parse_Amf3
|
||||
* @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
class Zend_Amf_Parse_Amf3_Deserializer extends Zend_Amf_Parse_Deserializer
|
||||
{
|
||||
/**
|
||||
* Total number of objects in the referenceObject array
|
||||
* @var int
|
||||
*/
|
||||
protected $_objectCount;
|
||||
|
||||
/**
|
||||
* An array of reference objects per amf body
|
||||
* @var array
|
||||
*/
|
||||
protected $_referenceObjects = array();
|
||||
|
||||
/**
|
||||
* An array of reference strings per amf body
|
||||
* @var array
|
||||
*/
|
||||
protected $_referenceStrings = array();
|
||||
|
||||
/**
|
||||
* An array of reference class definitions per body
|
||||
* @var array
|
||||
*/
|
||||
protected $_referenceDefinitions = array();
|
||||
|
||||
/**
|
||||
* Read AMF markers and dispatch for deserialization
|
||||
*
|
||||
* Checks for AMF marker types and calls the appropriate methods
|
||||
* for deserializing those marker types. markers are the data type of
|
||||
* the following value.
|
||||
*
|
||||
* @param integer $typeMarker
|
||||
* @return mixed Whatever the corresponding PHP data type is
|
||||
* @throws Zend_Amf_Exception for unidentified marker type
|
||||
*/
|
||||
public function readTypeMarker($typeMarker = null)
|
||||
{
|
||||
if(null === $typeMarker) {
|
||||
$typeMarker = $this->_stream->readByte();
|
||||
}
|
||||
|
||||
switch($typeMarker) {
|
||||
case Zend_Amf_Constants::AMF3_UNDEFINED:
|
||||
return null;
|
||||
case Zend_Amf_Constants::AMF3_NULL:
|
||||
return null;
|
||||
case Zend_Amf_Constants::AMF3_BOOLEAN_FALSE:
|
||||
return false;
|
||||
case Zend_Amf_Constants::AMF3_BOOLEAN_TRUE:
|
||||
return true;
|
||||
case Zend_Amf_Constants::AMF3_INTEGER:
|
||||
return $this->readInteger();
|
||||
case Zend_Amf_Constants::AMF3_NUMBER:
|
||||
return $this->_stream->readDouble();
|
||||
case Zend_Amf_Constants::AMF3_STRING:
|
||||
return $this->readString();
|
||||
case Zend_Amf_Constants::AMF3_DATE:
|
||||
return $this->readDate();
|
||||
case Zend_Amf_Constants::AMF3_ARRAY:
|
||||
return $this->readArray();
|
||||
case Zend_Amf_Constants::AMF3_OBJECT:
|
||||
return $this->readObject();
|
||||
case Zend_Amf_Constants::AMF3_XML:
|
||||
case Zend_Amf_Constants::AMF3_XMLSTRING:
|
||||
return $this->readXmlString();
|
||||
case Zend_Amf_Constants::AMF3_BYTEARRAY:
|
||||
return $this->readString();
|
||||
default:
|
||||
require_once 'Zend/Amf/Exception.php';
|
||||
throw new Zend_Amf_Exception('Unsupported type marker: ' . $typeMarker);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Read and deserialize an integer
|
||||
*
|
||||
* AMF 3 represents smaller integers with fewer bytes using the most
|
||||
* significant bit of each byte. The worst case uses 32-bits
|
||||
* to represent a 29-bit number, which is what we would have
|
||||
* done with no compression.
|
||||
* - 0x00000000 - 0x0000007F : 0xxxxxxx
|
||||
* - 0x00000080 - 0x00003FFF : 1xxxxxxx 0xxxxxxx
|
||||
* - 0x00004000 - 0x001FFFFF : 1xxxxxxx 1xxxxxxx 0xxxxxxx
|
||||
* - 0x00200000 - 0x3FFFFFFF : 1xxxxxxx 1xxxxxxx 1xxxxxxx xxxxxxxx
|
||||
* - 0x40000000 - 0xFFFFFFFF : throw range exception
|
||||
*
|
||||
* 0x04 -> integer type code, followed by up to 4 bytes of data.
|
||||
*
|
||||
* Parsing integers on OSFlash for the AMF3 integer data format:
|
||||
* @link http://osflash.org/amf3/parsing_integers
|
||||
* @return int|float
|
||||
*/
|
||||
public function readInteger()
|
||||
{
|
||||
$count = 1;
|
||||
$intReference = $this->_stream->readByte();
|
||||
$result = 0;
|
||||
while ((($intReference & 0x80) != 0) && $count < 4) {
|
||||
$result <<= 7;
|
||||
$result |= ($intReference & 0x7f);
|
||||
$intReference = $this->_stream->readByte();
|
||||
$count++;
|
||||
}
|
||||
if ($count < 4) {
|
||||
$result <<= 7;
|
||||
$result |= $intReference;
|
||||
} else {
|
||||
// Use all 8 bits from the 4th byte
|
||||
$result <<= 8;
|
||||
$result |= $intReference;
|
||||
|
||||
// Check if the integer should be negative
|
||||
if (($result & 0x10000000) != 0) {
|
||||
//and extend the sign bit
|
||||
$result |= ~0xFFFFFFF;
|
||||
}
|
||||
}
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Read and deserialize a string
|
||||
*
|
||||
* Strings can be sent as a reference to a previously
|
||||
* occurring String by using an index to the implicit string reference table.
|
||||
* Strings are encoding using UTF-8 - however the header may either
|
||||
* describe a string literal or a string reference.
|
||||
*
|
||||
* - string = 0x06 string-data
|
||||
* - string-data = integer-data [ modified-utf-8 ]
|
||||
* - modified-utf-8 = *OCTET
|
||||
*
|
||||
* @return String
|
||||
*/
|
||||
public function readString()
|
||||
{
|
||||
$stringReference = $this->readInteger();
|
||||
|
||||
//Check if this is a reference string
|
||||
if (($stringReference & 0x01) == 0) {
|
||||
// reference string
|
||||
$stringReference = $stringReference >> 1;
|
||||
if ($stringReference >= count($this->_referenceStrings)) {
|
||||
require_once 'Zend/Amf/Exception.php';
|
||||
throw new Zend_Amf_Exception('Undefined string reference: ' . $stringReference);
|
||||
}
|
||||
// reference string found
|
||||
return $this->_referenceStrings[$stringReference];
|
||||
}
|
||||
|
||||
$length = $stringReference >> 1;
|
||||
if ($length) {
|
||||
$string = $this->_stream->readBytes($length);
|
||||
$this->_referenceStrings[] = $string;
|
||||
} else {
|
||||
$string = "";
|
||||
}
|
||||
return $string;
|
||||
}
|
||||
|
||||
/**
|
||||
* Read and deserialize a date
|
||||
*
|
||||
* Data is the number of milliseconds elapsed since the epoch
|
||||
* of midnight, 1st Jan 1970 in the UTC time zone.
|
||||
* Local time zone information is not sent to flash.
|
||||
*
|
||||
* - date = 0x08 integer-data [ number-data ]
|
||||
*
|
||||
* @return Zend_Date
|
||||
*/
|
||||
public function readDate()
|
||||
{
|
||||
$dateReference = $this->readInteger();
|
||||
if (($dateReference & 0x01) == 0) {
|
||||
$dateReference = $dateReference >> 1;
|
||||
if ($dateReference>=count($this->_referenceObjects)) {
|
||||
require_once 'Zend/Amf/Exception.php';
|
||||
throw new Zend_Amf_Exception('Undefined date reference: ' . $dateReference);
|
||||
}
|
||||
return $this->_referenceObjects[$dateReference];
|
||||
}
|
||||
|
||||
$timestamp = floor($this->_stream->readDouble() / 1000);
|
||||
|
||||
require_once 'Zend/Date.php';
|
||||
$dateTime = new Zend_Date($timestamp);
|
||||
$this->_referenceObjects[] = $dateTime;
|
||||
return $dateTime;
|
||||
}
|
||||
|
||||
/**
|
||||
* Read amf array to PHP array
|
||||
*
|
||||
* - array = 0x09 integer-data ( [ 1OCTET *amf3-data ] | [OCTET *amf3-data 1] | [ OCTET *amf-data ] )
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function readArray()
|
||||
{
|
||||
$arrayReference = $this->readInteger();
|
||||
if (($arrayReference & 0x01)==0){
|
||||
$arrayReference = $arrayReference >> 1;
|
||||
if ($arrayReference>=count($this->_referenceObjects)) {
|
||||
require_once 'Zend/Amf/Exception.php';
|
||||
throw new Zend_Amf_Exception('Unknow array reference: ' . $arrayReference);
|
||||
}
|
||||
return $this->_referenceObjects[$arrayReference];
|
||||
}
|
||||
|
||||
// Create a holder for the array in the reference list
|
||||
$data = array();
|
||||
$this->_referenceObjects[] =& $data;
|
||||
$key = $this->readString();
|
||||
|
||||
// Iterating for string based keys.
|
||||
while ($key != '') {
|
||||
$data[$key] = $this->readTypeMarker();
|
||||
$key = $this->readString();
|
||||
}
|
||||
|
||||
$arrayReference = $arrayReference >>1;
|
||||
|
||||
//We have a dense array
|
||||
for ($i=0; $i < $arrayReference; $i++) {
|
||||
$data[] = $this->readTypeMarker();
|
||||
}
|
||||
|
||||
return $data;
|
||||
}
|
||||
|
||||
/**
|
||||
* Read an object from the AMF stream and convert it into a PHP object
|
||||
*
|
||||
* @todo Rather than using an array of traitsInfo create Zend_Amf_Value_TraitsInfo
|
||||
* @return object|array
|
||||
*/
|
||||
public function readObject()
|
||||
{
|
||||
$traitsInfo = $this->readInteger();
|
||||
$storedObject = ($traitsInfo & 0x01)==0;
|
||||
$traitsInfo = $traitsInfo >> 1;
|
||||
|
||||
// Check if the Object is in the stored Objects reference table
|
||||
if ($storedObject) {
|
||||
$ref = $traitsInfo;
|
||||
if (!isset($this->_referenceObjects[$ref])) {
|
||||
require_once 'Zend/Amf/Exception.php';
|
||||
throw new Zend_Amf_Exception('Unknown Object reference: ' . $ref);
|
||||
}
|
||||
$returnObject = $this->_referenceObjects[$ref];
|
||||
} else {
|
||||
// Check if the Object is in the stored Definitions reference table
|
||||
$storedClass = ($traitsInfo & 0x01) == 0;
|
||||
$traitsInfo = $traitsInfo >> 1;
|
||||
if ($storedClass) {
|
||||
$ref = $traitsInfo;
|
||||
if (!isset($this->_referenceDefinitions[$ref])) {
|
||||
require_once 'Zend/Amf/Exception.php';
|
||||
throw new Zend_Amf_Exception('Unknows Definition reference: '. $ref);
|
||||
}
|
||||
// Populate the reference attributes
|
||||
$className = $this->_referenceDefinitions[$ref]['className'];
|
||||
$encoding = $this->_referenceDefinitions[$ref]['encoding'];
|
||||
$propertyNames = $this->_referenceDefinitions[$ref]['propertyNames'];
|
||||
} else {
|
||||
// The class was not in the reference tables. Start reading rawdata to build traits.
|
||||
// Create a traits table. Zend_Amf_Value_TraitsInfo would be ideal
|
||||
$className = $this->readString();
|
||||
$encoding = $traitsInfo & 0x03;
|
||||
$propertyNames = array();
|
||||
$traitsInfo = $traitsInfo >> 2;
|
||||
}
|
||||
|
||||
// We now have the object traits defined in variables. Time to go to work:
|
||||
if (!$className) {
|
||||
// No class name generic object
|
||||
$returnObject = new stdClass();
|
||||
} else {
|
||||
// Defined object
|
||||
// Typed object lookup against registered classname maps
|
||||
if ($loader = Zend_Amf_Parse_TypeLoader::loadType($className)) {
|
||||
$returnObject = new $loader();
|
||||
} else {
|
||||
//user defined typed object
|
||||
require_once 'Zend/Amf/Exception.php';
|
||||
throw new Zend_Amf_Exception('Typed object not found: '. $className . ' ');
|
||||
}
|
||||
}
|
||||
|
||||
// Add the Object to the reference table
|
||||
$this->_referenceObjects[] = $returnObject;
|
||||
|
||||
$properties = array(); // clear value
|
||||
// Check encoding types for additional processing.
|
||||
switch ($encoding) {
|
||||
case (Zend_Amf_Constants::ET_EXTERNAL):
|
||||
// Externalizable object such as {ArrayCollection} and {ObjectProxy}
|
||||
if (!$storedClass) {
|
||||
$this->_referenceDefinitions[] = array(
|
||||
'className' => $className,
|
||||
'encoding' => $encoding,
|
||||
'propertyNames' => $propertyNames,
|
||||
);
|
||||
}
|
||||
$returnObject->externalizedData = $this->readTypeMarker();
|
||||
break;
|
||||
case (Zend_Amf_Constants::ET_DYNAMIC):
|
||||
// used for Name-value encoding
|
||||
if (!$storedClass) {
|
||||
$this->_referenceDefinitions[] = array(
|
||||
'className' => $className,
|
||||
'encoding' => $encoding,
|
||||
'propertyNames' => $propertyNames,
|
||||
);
|
||||
}
|
||||
// not a reference object read name value properties from byte stream
|
||||
do {
|
||||
$property = $this->readString();
|
||||
if ($property != "") {
|
||||
$propertyNames[] = $property;
|
||||
$properties[$property] = $this->readTypeMarker();
|
||||
}
|
||||
} while ($property !="");
|
||||
break;
|
||||
default:
|
||||
// basic property list object.
|
||||
if (!$storedClass) {
|
||||
$count = $traitsInfo; // Number of properties in the list
|
||||
for($i=0; $i< $count; $i++) {
|
||||
$propertyNames[] = $this->readString();
|
||||
}
|
||||
// Add a reference to the class.
|
||||
$this->_referenceDefinitions[] = array(
|
||||
'className' => $className,
|
||||
'encoding' => $encoding,
|
||||
'propertyNames' => $propertyNames,
|
||||
);
|
||||
}
|
||||
foreach ($propertyNames as $property) {
|
||||
$properties[$property] = $this->readTypeMarker();
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
// Add properties back to the return object.
|
||||
if (!is_array($properties)) $properties = array();
|
||||
foreach($properties as $key=>$value) {
|
||||
if($key) {
|
||||
$returnObject->$key = $value;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
if ($returnObject instanceof Zend_Amf_Value_Messaging_ArrayCollection) {
|
||||
if (isset($returnObject->externalizedData)) {
|
||||
$returnObject = $returnObject->externalizedData;
|
||||
} else {
|
||||
$returnObject = get_object_vars($returnObject);
|
||||
}
|
||||
}
|
||||
|
||||
return $returnObject;
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert XML to SimpleXml
|
||||
* If user wants DomDocument they can use dom_import_simplexml
|
||||
*
|
||||
* @return SimpleXml Object
|
||||
*/
|
||||
public function readXmlString()
|
||||
{
|
||||
$xmlReference = $this->readInteger();
|
||||
$length = $xmlReference >> 1;
|
||||
$string = $this->_stream->readBytes($length);
|
||||
return Zend_Xml_Security::scan($string);
|
||||
}
|
||||
}
|
||||
534
_backup/library/Zend/Amf/Parse/Amf3/Serializer.php
Normal file
@@ -0,0 +1,534 @@
|
||||
<?php
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Amf
|
||||
* @subpackage Parse_Amf3
|
||||
* @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
* @version $Id$
|
||||
*/
|
||||
|
||||
/** Zend_Amf_Constants */
|
||||
require_once 'Zend/Amf/Constants.php';
|
||||
|
||||
|
||||
/** Zend_Amf_Parse_Serializer */
|
||||
require_once 'Zend/Amf/Parse/Serializer.php';
|
||||
|
||||
/** Zend_Amf_Parse_TypeLoader */
|
||||
require_once 'Zend/Amf/Parse/TypeLoader.php';
|
||||
|
||||
/**
|
||||
* Detect PHP object type and convert it to a corresponding AMF3 object type
|
||||
*
|
||||
* @package Zend_Amf
|
||||
* @subpackage Parse_Amf3
|
||||
* @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
class Zend_Amf_Parse_Amf3_Serializer extends Zend_Amf_Parse_Serializer
|
||||
{
|
||||
/**
|
||||
* A constant empty string
|
||||
* @var string
|
||||
*/
|
||||
protected $_strEmpty = '';
|
||||
|
||||
/**
|
||||
* An array of reference objects per amf body
|
||||
* @var array
|
||||
*/
|
||||
protected $_referenceObjects = array();
|
||||
|
||||
/**
|
||||
* An array of reference strings per amf body
|
||||
* @var array
|
||||
*/
|
||||
protected $_referenceStrings = array();
|
||||
|
||||
/**
|
||||
* An array of reference class definitions, indexed by classname
|
||||
* @var array
|
||||
*/
|
||||
protected $_referenceDefinitions = array();
|
||||
|
||||
/**
|
||||
* Serialize PHP types to AMF3 and write to stream
|
||||
*
|
||||
* Checks to see if the type was declared and then either
|
||||
* auto negotiates the type or use the user defined markerType to
|
||||
* serialize the data from php back to AMF3
|
||||
*
|
||||
* @param mixed $data
|
||||
* @param int $markerType
|
||||
* @param mixed $dataByVal
|
||||
* @return void
|
||||
*/
|
||||
public function writeTypeMarker(&$data, $markerType = null, $dataByVal = false)
|
||||
{
|
||||
// Workaround for PHP5 with E_STRICT enabled complaining about "Only
|
||||
// variables should be passed by reference"
|
||||
if ((null === $data) && ($dataByVal !== false)) {
|
||||
$data = &$dataByVal;
|
||||
}
|
||||
if (null !== $markerType) {
|
||||
// Write the Type Marker to denote the following action script data type
|
||||
$this->_stream->writeByte($markerType);
|
||||
|
||||
switch ($markerType) {
|
||||
case Zend_Amf_Constants::AMF3_NULL:
|
||||
break;
|
||||
case Zend_Amf_Constants::AMF3_BOOLEAN_FALSE:
|
||||
break;
|
||||
case Zend_Amf_Constants::AMF3_BOOLEAN_TRUE:
|
||||
break;
|
||||
case Zend_Amf_Constants::AMF3_INTEGER:
|
||||
$this->writeInteger($data);
|
||||
break;
|
||||
case Zend_Amf_Constants::AMF3_NUMBER:
|
||||
$this->_stream->writeDouble($data);
|
||||
break;
|
||||
case Zend_Amf_Constants::AMF3_STRING:
|
||||
$this->writeString($data);
|
||||
break;
|
||||
case Zend_Amf_Constants::AMF3_DATE:
|
||||
$this->writeDate($data);
|
||||
break;
|
||||
case Zend_Amf_Constants::AMF3_ARRAY:
|
||||
$this->writeArray($data);
|
||||
break;
|
||||
case Zend_Amf_Constants::AMF3_OBJECT:
|
||||
$this->writeObject($data);
|
||||
break;
|
||||
case Zend_Amf_Constants::AMF3_BYTEARRAY:
|
||||
$this->writeByteArray($data);
|
||||
break;
|
||||
case Zend_Amf_Constants::AMF3_XMLSTRING;
|
||||
$this->writeXml($data);
|
||||
break;
|
||||
default:
|
||||
require_once 'Zend/Amf/Exception.php';
|
||||
throw new Zend_Amf_Exception('Unknown Type Marker: ' . $markerType);
|
||||
}
|
||||
} else {
|
||||
// Detect Type Marker
|
||||
if (is_resource($data)) {
|
||||
$data = Zend_Amf_Parse_TypeLoader::handleResource($data);
|
||||
}
|
||||
switch (true) {
|
||||
case (null === $data):
|
||||
$markerType = Zend_Amf_Constants::AMF3_NULL;
|
||||
break;
|
||||
case (is_bool($data)):
|
||||
if ($data){
|
||||
$markerType = Zend_Amf_Constants::AMF3_BOOLEAN_TRUE;
|
||||
} else {
|
||||
$markerType = Zend_Amf_Constants::AMF3_BOOLEAN_FALSE;
|
||||
}
|
||||
break;
|
||||
case (is_int($data)):
|
||||
if (($data > 0xFFFFFFF) || ($data < -268435456)) {
|
||||
$markerType = Zend_Amf_Constants::AMF3_NUMBER;
|
||||
} else {
|
||||
$markerType = Zend_Amf_Constants::AMF3_INTEGER;
|
||||
}
|
||||
break;
|
||||
case (is_float($data)):
|
||||
$markerType = Zend_Amf_Constants::AMF3_NUMBER;
|
||||
break;
|
||||
case (is_string($data)):
|
||||
$markerType = Zend_Amf_Constants::AMF3_STRING;
|
||||
break;
|
||||
case (is_array($data)):
|
||||
$markerType = Zend_Amf_Constants::AMF3_ARRAY;
|
||||
break;
|
||||
case (is_object($data)):
|
||||
// Handle object types.
|
||||
if (($data instanceof DateTime) || ($data instanceof Zend_Date)) {
|
||||
$markerType = Zend_Amf_Constants::AMF3_DATE;
|
||||
} else if ($data instanceof Zend_Amf_Value_ByteArray) {
|
||||
$markerType = Zend_Amf_Constants::AMF3_BYTEARRAY;
|
||||
} else if (($data instanceof DOMDocument) || ($data instanceof SimpleXMLElement)) {
|
||||
$markerType = Zend_Amf_Constants::AMF3_XMLSTRING;
|
||||
} else {
|
||||
$markerType = Zend_Amf_Constants::AMF3_OBJECT;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
require_once 'Zend/Amf/Exception.php';
|
||||
throw new Zend_Amf_Exception('Unsupported data type: ' . gettype($data));
|
||||
}
|
||||
$this->writeTypeMarker($data, $markerType);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Write an AMF3 integer
|
||||
*
|
||||
* @param int|float $data
|
||||
* @return Zend_Amf_Parse_Amf3_Serializer
|
||||
*/
|
||||
public function writeInteger($int)
|
||||
{
|
||||
if (($int & 0xffffff80) == 0) {
|
||||
$this->_stream->writeByte($int & 0x7f);
|
||||
return $this;
|
||||
}
|
||||
|
||||
if (($int & 0xffffc000) == 0 ) {
|
||||
$this->_stream->writeByte(($int >> 7 ) | 0x80);
|
||||
$this->_stream->writeByte($int & 0x7f);
|
||||
return $this;
|
||||
}
|
||||
|
||||
if (($int & 0xffe00000) == 0) {
|
||||
$this->_stream->writeByte(($int >> 14 ) | 0x80);
|
||||
$this->_stream->writeByte(($int >> 7 ) | 0x80);
|
||||
$this->_stream->writeByte($int & 0x7f);
|
||||
return $this;
|
||||
}
|
||||
|
||||
$this->_stream->writeByte(($int >> 22 ) | 0x80);
|
||||
$this->_stream->writeByte(($int >> 15 ) | 0x80);
|
||||
$this->_stream->writeByte(($int >> 8 ) | 0x80);
|
||||
$this->_stream->writeByte($int & 0xff);
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Send string to output stream, without trying to reference it.
|
||||
* The string is prepended with strlen($string) << 1 | 0x01
|
||||
*
|
||||
* @param string $string
|
||||
* @return Zend_Amf_Parse_Amf3_Serializer
|
||||
*/
|
||||
protected function writeBinaryString(&$string){
|
||||
$ref = ($this->_mbStringFunctionsOverloaded ? mb_strlen($string, '8bit') : strlen($string)) << 1 | 0x01;
|
||||
$this->writeInteger($ref);
|
||||
$this->_stream->writeBytes($string);
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Send string to output stream
|
||||
*
|
||||
* @param string $string
|
||||
* @return Zend_Amf_Parse_Amf3_Serializer
|
||||
*/
|
||||
public function writeString(&$string)
|
||||
{
|
||||
$len = $this->_mbStringFunctionsOverloaded ? mb_strlen($string, '8bit') : strlen($string);
|
||||
if(!$len){
|
||||
$this->writeInteger(0x01);
|
||||
return $this;
|
||||
}
|
||||
|
||||
$ref = array_key_exists($string, $this->_referenceStrings)
|
||||
? $this->_referenceStrings[$string]
|
||||
: false;
|
||||
if ($ref === false){
|
||||
$this->_referenceStrings[$string] = count($this->_referenceStrings);
|
||||
$this->writeBinaryString($string);
|
||||
} else {
|
||||
$ref <<= 1;
|
||||
$this->writeInteger($ref);
|
||||
}
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Send ByteArray to output stream
|
||||
*
|
||||
* @param string|Zend_Amf_Value_ByteArray $data
|
||||
* @return Zend_Amf_Parse_Amf3_Serializer
|
||||
*/
|
||||
public function writeByteArray(&$data)
|
||||
{
|
||||
if ($this->writeObjectReference($data)) {
|
||||
return $this;
|
||||
}
|
||||
|
||||
if (is_string($data)) {
|
||||
//nothing to do
|
||||
} else if ($data instanceof Zend_Amf_Value_ByteArray) {
|
||||
$data = $data->getData();
|
||||
} else {
|
||||
require_once 'Zend/Amf/Exception.php';
|
||||
throw new Zend_Amf_Exception('Invalid ByteArray specified; must be a string or Zend_Amf_Value_ByteArray');
|
||||
}
|
||||
|
||||
$this->writeBinaryString($data);
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Send xml to output stream
|
||||
*
|
||||
* @param DOMDocument|SimpleXMLElement $xml
|
||||
* @return Zend_Amf_Parse_Amf3_Serializer
|
||||
*/
|
||||
public function writeXml($xml)
|
||||
{
|
||||
if ($this->writeObjectReference($xml)) {
|
||||
return $this;
|
||||
}
|
||||
|
||||
if(is_string($xml)) {
|
||||
//nothing to do
|
||||
} else if ($xml instanceof DOMDocument) {
|
||||
$xml = $xml->saveXml();
|
||||
} else if ($xml instanceof SimpleXMLElement) {
|
||||
$xml = $xml->asXML();
|
||||
} else {
|
||||
require_once 'Zend/Amf/Exception.php';
|
||||
throw new Zend_Amf_Exception('Invalid xml specified; must be a DOMDocument or SimpleXMLElement');
|
||||
}
|
||||
|
||||
$this->writeBinaryString($xml);
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert DateTime/Zend_Date to AMF date
|
||||
*
|
||||
* @param DateTime|Zend_Date $date
|
||||
* @return Zend_Amf_Parse_Amf3_Serializer
|
||||
*/
|
||||
public function writeDate($date)
|
||||
{
|
||||
if ($this->writeObjectReference($date)) {
|
||||
return $this;
|
||||
}
|
||||
|
||||
if ($date instanceof DateTime) {
|
||||
$dateString = $date->format('U') * 1000;
|
||||
} elseif ($date instanceof Zend_Date) {
|
||||
$dateString = $date->toString('U') * 1000;
|
||||
} else {
|
||||
require_once 'Zend/Amf/Exception.php';
|
||||
throw new Zend_Amf_Exception('Invalid date specified; must be a string DateTime or Zend_Date object');
|
||||
}
|
||||
|
||||
$this->writeInteger(0x01);
|
||||
// write time to stream minus milliseconds
|
||||
$this->_stream->writeDouble($dateString);
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Write a PHP array back to the amf output stream
|
||||
*
|
||||
* @param array $array
|
||||
* @return Zend_Amf_Parse_Amf3_Serializer
|
||||
*/
|
||||
public function writeArray(&$array)
|
||||
{
|
||||
// arrays aren't reference here but still counted
|
||||
$this->_referenceObjects[] = $array;
|
||||
|
||||
// have to seperate mixed from numberic keys.
|
||||
$numeric = array();
|
||||
$string = array();
|
||||
foreach ($array as $key => &$value) {
|
||||
if (is_int($key)) {
|
||||
$numeric[] = $value;
|
||||
} else {
|
||||
$string[$key] = $value;
|
||||
}
|
||||
}
|
||||
|
||||
// write the preamble id of the array
|
||||
$length = count($numeric);
|
||||
$id = ($length << 1) | 0x01;
|
||||
$this->writeInteger($id);
|
||||
|
||||
//Write the mixed type array to the output stream
|
||||
foreach($string as $key => &$value) {
|
||||
$this->writeString($key)
|
||||
->writeTypeMarker($value);
|
||||
}
|
||||
$this->writeString($this->_strEmpty);
|
||||
|
||||
// Write the numeric array to ouput stream
|
||||
foreach($numeric as &$value) {
|
||||
$this->writeTypeMarker($value);
|
||||
}
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if the given object is in the reference table, write the reference if it exists,
|
||||
* otherwise add the object to the reference table
|
||||
*
|
||||
* @param mixed $object object reference to check for reference
|
||||
* @param mixed $objectByVal object to check for reference
|
||||
* @return Boolean true, if the reference was written, false otherwise
|
||||
*/
|
||||
protected function writeObjectReference(&$object, $objectByVal = false)
|
||||
{
|
||||
// Workaround for PHP5 with E_STRICT enabled complaining about "Only
|
||||
// variables should be passed by reference"
|
||||
if ((null === $object) && ($objectByVal !== false)) {
|
||||
$object = &$objectByVal;
|
||||
}
|
||||
|
||||
$hash = spl_object_hash($object);
|
||||
$ref = array_key_exists($hash, $this->_referenceObjects)
|
||||
? $this->_referenceObjects[$hash]
|
||||
: false;
|
||||
|
||||
// quickly handle object references
|
||||
if ($ref !== false){
|
||||
$ref <<= 1;
|
||||
$this->writeInteger($ref);
|
||||
return true;
|
||||
}
|
||||
$this->_referenceObjects[$hash] = count($this->_referenceObjects);
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Write object to ouput stream
|
||||
*
|
||||
* @param mixed $data
|
||||
* @return Zend_Amf_Parse_Amf3_Serializer
|
||||
*/
|
||||
public function writeObject($object)
|
||||
{
|
||||
if($this->writeObjectReference($object)){
|
||||
return $this;
|
||||
}
|
||||
|
||||
$className = '';
|
||||
|
||||
//Check to see if the object is a typed object and we need to change
|
||||
switch (true) {
|
||||
// the return class mapped name back to actionscript class name.
|
||||
case ($className = Zend_Amf_Parse_TypeLoader::getMappedClassName(get_class($object))):
|
||||
break;
|
||||
|
||||
// Check to see if the user has defined an explicit Action Script type.
|
||||
case isset($object->_explicitType):
|
||||
$className = $object->_explicitType;
|
||||
break;
|
||||
|
||||
// Check if user has defined a method for accessing the Action Script type
|
||||
case method_exists($object, 'getASClassName'):
|
||||
$className = $object->getASClassName();
|
||||
break;
|
||||
|
||||
// No return class name is set make it a generic object
|
||||
case ($object instanceof stdClass):
|
||||
$className = '';
|
||||
break;
|
||||
|
||||
// By default, use object's class name
|
||||
default:
|
||||
$className = get_class($object);
|
||||
break;
|
||||
}
|
||||
|
||||
$writeTraits = true;
|
||||
|
||||
//check to see, if we have a corresponding definition
|
||||
if(array_key_exists($className, $this->_referenceDefinitions)){
|
||||
$traitsInfo = $this->_referenceDefinitions[$className]['id'];
|
||||
$encoding = $this->_referenceDefinitions[$className]['encoding'];
|
||||
$propertyNames = $this->_referenceDefinitions[$className]['propertyNames'];
|
||||
|
||||
$traitsInfo = ($traitsInfo << 2) | 0x01;
|
||||
|
||||
$writeTraits = false;
|
||||
} else {
|
||||
$propertyNames = array();
|
||||
|
||||
if($className == ''){
|
||||
//if there is no className, we interpret the class as dynamic without any sealed members
|
||||
$encoding = Zend_Amf_Constants::ET_DYNAMIC;
|
||||
} else {
|
||||
$encoding = Zend_Amf_Constants::ET_PROPLIST;
|
||||
|
||||
foreach($object as $key => $value) {
|
||||
if( $key[0] != "_") {
|
||||
$propertyNames[] = $key;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$this->_referenceDefinitions[$className] = array(
|
||||
'id' => count($this->_referenceDefinitions),
|
||||
'encoding' => $encoding,
|
||||
'propertyNames' => $propertyNames,
|
||||
);
|
||||
|
||||
$traitsInfo = Zend_Amf_Constants::AMF3_OBJECT_ENCODING;
|
||||
$traitsInfo |= $encoding << 2;
|
||||
$traitsInfo |= (count($propertyNames) << 4);
|
||||
}
|
||||
|
||||
$this->writeInteger($traitsInfo);
|
||||
|
||||
if($writeTraits){
|
||||
$this->writeString($className);
|
||||
foreach ($propertyNames as $value) {
|
||||
$this->writeString($value);
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
switch($encoding) {
|
||||
case Zend_Amf_Constants::ET_PROPLIST:
|
||||
//Write the sealed values to the output stream.
|
||||
foreach ($propertyNames as $key) {
|
||||
$this->writeTypeMarker($object->$key);
|
||||
}
|
||||
break;
|
||||
case Zend_Amf_Constants::ET_DYNAMIC:
|
||||
//Write the sealed values to the output stream.
|
||||
foreach ($propertyNames as $key) {
|
||||
$this->writeTypeMarker($object->$key);
|
||||
}
|
||||
|
||||
//Write remaining properties
|
||||
foreach($object as $key => $value){
|
||||
if(!in_array($key,$propertyNames) && $key[0] != "_"){
|
||||
$this->writeString($key);
|
||||
$this->writeTypeMarker($value);
|
||||
}
|
||||
}
|
||||
|
||||
//Write an empty string to end the dynamic part
|
||||
$this->writeString($this->_strEmpty);
|
||||
break;
|
||||
case Zend_Amf_Constants::ET_EXTERNAL:
|
||||
require_once 'Zend/Amf/Exception.php';
|
||||
throw new Zend_Amf_Exception('External Object Encoding not implemented');
|
||||
break;
|
||||
default:
|
||||
require_once 'Zend/Amf/Exception.php';
|
||||
throw new Zend_Amf_Exception('Unknown Object Encoding type: ' . $encoding);
|
||||
}
|
||||
} catch (Exception $e) {
|
||||
require_once 'Zend/Amf/Exception.php';
|
||||
throw new Zend_Amf_Exception('Unable to writeObject output: ' . $e->getMessage(), 0, $e);
|
||||
}
|
||||
|
||||
return $this;
|
||||
}
|
||||
}
|
||||
65
_backup/library/Zend/Amf/Parse/Deserializer.php
Normal file
@@ -0,0 +1,65 @@
|
||||
<?php
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Amf
|
||||
* @subpackage Parse
|
||||
* @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
* @version $Id$
|
||||
*/
|
||||
|
||||
/**
|
||||
* Abstract cass that all deserializer must implement.
|
||||
*
|
||||
* Logic for deserialization of the AMF envelop is based on resources supplied
|
||||
* by Adobe Blaze DS. For and example of deserialization please review the BlazeDS
|
||||
* source tree.
|
||||
*
|
||||
* @see http://opensource.adobe.com/svn/opensource/blazeds/trunk/modules/core/src/java/flex/messaging/io/amf/
|
||||
* @package Zend_Amf
|
||||
* @subpackage Parse
|
||||
* @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
abstract class Zend_Amf_Parse_Deserializer
|
||||
{
|
||||
/**
|
||||
* The raw string that represents the AMF request.
|
||||
*
|
||||
* @var Zend_Amf_Parse_InputStream
|
||||
*/
|
||||
protected $_stream;
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
* @param Zend_Amf_Parse_InputStream $stream
|
||||
* @return void
|
||||
*/
|
||||
public function __construct(Zend_Amf_Parse_InputStream $stream)
|
||||
{
|
||||
$this->_stream = $stream;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks for AMF marker types and calls the appropriate methods
|
||||
* for deserializing those marker types. Markers are the data type of
|
||||
* the following value.
|
||||
*
|
||||
* @param int $typeMarker
|
||||
* @return mixed Whatever the data type is of the marker in php
|
||||
*/
|
||||
public abstract function readTypeMarker($markerType = null);
|
||||
}
|
||||
39
_backup/library/Zend/Amf/Parse/InputStream.php
Normal file
@@ -0,0 +1,39 @@
|
||||
<?php
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Amf
|
||||
* @subpackage Parse
|
||||
* @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
* @version $Id$
|
||||
*/
|
||||
|
||||
/** Zend_Amf_Util_BinaryStream */
|
||||
require_once 'Zend/Amf/Util/BinaryStream.php';
|
||||
|
||||
/**
|
||||
* InputStream is used to iterate at a binary level through the AMF request.
|
||||
*
|
||||
* InputStream extends BinaryStream as eventually BinaryStream could be placed
|
||||
* outside of Zend_Amf in order to allow other packages to use the class.
|
||||
*
|
||||
* @package Zend_Amf
|
||||
* @subpackage Parse
|
||||
* @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
class Zend_Amf_Parse_InputStream extends Zend_Amf_Util_BinaryStream
|
||||
{
|
||||
}
|
||||
49
_backup/library/Zend/Amf/Parse/OutputStream.php
Normal file
@@ -0,0 +1,49 @@
|
||||
<?php
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Amf
|
||||
* @subpackage Parse
|
||||
* @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
* @version $Id$
|
||||
*/
|
||||
|
||||
/** Zend_Amf_Util_BinaryStream */
|
||||
require_once 'Zend/Amf/Util/BinaryStream.php';
|
||||
|
||||
/**
|
||||
* Iterate at a binary level through the AMF response
|
||||
*
|
||||
* OutputStream extends BinaryStream as eventually BinaryStream could be placed
|
||||
* outside of Zend_Amf in order to allow other packages to use the class.
|
||||
*
|
||||
* @uses Zend_Amf_Util_BinaryStream
|
||||
* @package Zend_Amf
|
||||
* @subpackage Parse
|
||||
* @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
class Zend_Amf_Parse_OutputStream extends Zend_Amf_Util_BinaryStream
|
||||
{
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct('');
|
||||
}
|
||||
}
|
||||
70
_backup/library/Zend/Amf/Parse/Resource/MysqlResult.php
Executable file
@@ -0,0 +1,70 @@
|
||||
<?php
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Amf
|
||||
* @subpackage Parse
|
||||
* @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
* @version $Id$
|
||||
*/
|
||||
|
||||
/**
|
||||
* This class will convert mysql result resource to array suitable for passing
|
||||
* to the external entities.
|
||||
*
|
||||
* @package Zend_Amf
|
||||
* @subpackage Parse
|
||||
* @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
class Zend_Amf_Parse_Resource_MysqlResult
|
||||
{
|
||||
/**
|
||||
* @var array List of Mysql types with PHP counterparts
|
||||
*
|
||||
* Key => Value is Mysql type (exact string) => PHP type
|
||||
*/
|
||||
static public $fieldTypes = array(
|
||||
"int" => "int",
|
||||
"timestamp" => "int",
|
||||
"year" => "int",
|
||||
"real" => "float",
|
||||
);
|
||||
/**
|
||||
* Parse resource into array
|
||||
*
|
||||
* @param resource $resource
|
||||
* @return array
|
||||
*/
|
||||
public function parse($resource) {
|
||||
$result = array();
|
||||
$fieldcnt = mysql_num_fields($resource);
|
||||
$fields_transform = array();
|
||||
for($i=0;$i<$fieldcnt;$i++) {
|
||||
$type = mysql_field_type($resource, $i);
|
||||
if(isset(self::$fieldTypes[$type])) {
|
||||
$fields_transform[mysql_field_name($resource, $i)] = self::$fieldTypes[$type];
|
||||
}
|
||||
}
|
||||
|
||||
while($row = mysql_fetch_object($resource)) {
|
||||
foreach($fields_transform as $fieldname => $fieldtype) {
|
||||
settype($row->$fieldname, $fieldtype);
|
||||
}
|
||||
$result[] = $row;
|
||||
}
|
||||
return $result;
|
||||
}
|
||||
}
|
||||
128
_backup/library/Zend/Amf/Parse/Resource/MysqliResult.php
Normal file
@@ -0,0 +1,128 @@
|
||||
<?php
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Amf
|
||||
* @subpackage Parse
|
||||
* @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
* @version $Id$
|
||||
*/
|
||||
|
||||
/**
|
||||
* This class will convert mysql result resource to array suitable for passing
|
||||
* to the external entities.
|
||||
*
|
||||
* @package Zend_Amf
|
||||
* @subpackage Parse
|
||||
* @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
class Zend_Amf_Parse_Resource_MysqliResult
|
||||
{
|
||||
|
||||
/**
|
||||
* mapping taken from http://forums.mysql.com/read.php?52,255868,255895#msg-255895
|
||||
*/
|
||||
static public $mysqli_type = array(
|
||||
0 => "MYSQLI_TYPE_DECIMAL",
|
||||
1 => "MYSQLI_TYPE_TINYINT",
|
||||
2 => "MYSQLI_TYPE_SMALLINT",
|
||||
3 => "MYSQLI_TYPE_INTEGER",
|
||||
4 => "MYSQLI_TYPE_FLOAT",
|
||||
5 => "MYSQLI_TYPE_DOUBLE",
|
||||
7 => "MYSQLI_TYPE_TIMESTAMP",
|
||||
8 => "MYSQLI_TYPE_BIGINT",
|
||||
9 => "MYSQLI_TYPE_MEDIUMINT",
|
||||
10 => "MYSQLI_TYPE_DATE",
|
||||
11 => "MYSQLI_TYPE_TIME",
|
||||
12 => "MYSQLI_TYPE_DATETIME",
|
||||
13 => "MYSQLI_TYPE_YEAR",
|
||||
14 => "MYSQLI_TYPE_DATE",
|
||||
16 => "MYSQLI_TYPE_BIT",
|
||||
246 => "MYSQLI_TYPE_DECIMAL",
|
||||
247 => "MYSQLI_TYPE_ENUM",
|
||||
248 => "MYSQLI_TYPE_SET",
|
||||
249 => "MYSQLI_TYPE_TINYBLOB",
|
||||
250 => "MYSQLI_TYPE_MEDIUMBLOB",
|
||||
251 => "MYSQLI_TYPE_LONGBLOB",
|
||||
252 => "MYSQLI_TYPE_BLOB",
|
||||
253 => "MYSQLI_TYPE_VARCHAR",
|
||||
254 => "MYSQLI_TYPE_CHAR",
|
||||
255 => "MYSQLI_TYPE_GEOMETRY",
|
||||
);
|
||||
|
||||
// Build an associative array for a type look up
|
||||
static $mysqli_to_php = array(
|
||||
"MYSQLI_TYPE_DECIMAL" => 'float',
|
||||
"MYSQLI_TYPE_NEWDECIMAL" => 'float',
|
||||
"MYSQLI_TYPE_BIT" => 'integer',
|
||||
"MYSQLI_TYPE_TINYINT" => 'integer',
|
||||
"MYSQLI_TYPE_SMALLINT" => 'integer',
|
||||
"MYSQLI_TYPE_MEDIUMINT" => 'integer',
|
||||
"MYSQLI_TYPE_BIGINT" => 'integer',
|
||||
"MYSQLI_TYPE_INTEGER" => 'integer',
|
||||
"MYSQLI_TYPE_FLOAT" => 'float',
|
||||
"MYSQLI_TYPE_DOUBLE" => 'float',
|
||||
"MYSQLI_TYPE_NULL" => 'null',
|
||||
"MYSQLI_TYPE_TIMESTAMP" => 'string',
|
||||
"MYSQLI_TYPE_INT24" => 'integer',
|
||||
"MYSQLI_TYPE_DATE" => 'string',
|
||||
"MYSQLI_TYPE_TIME" => 'string',
|
||||
"MYSQLI_TYPE_DATETIME" => 'string',
|
||||
"MYSQLI_TYPE_YEAR" => 'string',
|
||||
"MYSQLI_TYPE_NEWDATE" => 'string',
|
||||
"MYSQLI_TYPE_ENUM" => 'string',
|
||||
"MYSQLI_TYPE_SET" => 'string',
|
||||
"MYSQLI_TYPE_TINYBLOB" => 'object',
|
||||
"MYSQLI_TYPE_MEDIUMBLOB" => 'object',
|
||||
"MYSQLI_TYPE_LONGBLOB" => 'object',
|
||||
"MYSQLI_TYPE_BLOB" => 'object',
|
||||
"MYSQLI_TYPE_CHAR" => 'string',
|
||||
"MYSQLI_TYPE_VARCHAR" => 'string',
|
||||
"MYSQLI_TYPE_GEOMETRY" => 'object',
|
||||
"MYSQLI_TYPE_BIT" => 'integer',
|
||||
);
|
||||
|
||||
/**
|
||||
* Parse resource into array
|
||||
*
|
||||
* @param resource $resource
|
||||
* @return array
|
||||
*/
|
||||
public function parse($resource) {
|
||||
|
||||
$result = array();
|
||||
$fieldcnt = mysqli_num_fields($resource);
|
||||
|
||||
|
||||
$fields_transform = array();
|
||||
|
||||
for($i=0;$i<$fieldcnt;$i++) {
|
||||
$finfo = mysqli_fetch_field_direct($resource, $i);
|
||||
|
||||
if(isset(self::$mysqli_type[$finfo->type])) {
|
||||
$fields_transform[$finfo->name] = self::$mysqli_to_php[self::$mysqli_type[$finfo->type]];
|
||||
}
|
||||
}
|
||||
|
||||
while($row = mysqli_fetch_assoc($resource)) {
|
||||
foreach($fields_transform as $fieldname => $fieldtype) {
|
||||
settype($row[$fieldname], $fieldtype);
|
||||
}
|
||||
$result[] = $row;
|
||||
}
|
||||
return $result;
|
||||
}
|
||||
}
|
||||
42
_backup/library/Zend/Amf/Parse/Resource/Stream.php
Executable file
@@ -0,0 +1,42 @@
|
||||
<?php
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Amf
|
||||
* @subpackage Parse
|
||||
* @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
* @version $Id$
|
||||
*/
|
||||
|
||||
/**
|
||||
* This class will convert stream resource to string by just reading it
|
||||
*
|
||||
* @package Zend_Amf
|
||||
* @subpackage Parse
|
||||
* @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
class Zend_Amf_Parse_Resource_Stream
|
||||
{
|
||||
/**
|
||||
* Parse resource into string
|
||||
*
|
||||
* @param resource $resource Stream resource
|
||||
* @return array
|
||||
*/
|
||||
public function parse($resource) {
|
||||
return stream_get_contents($resource);
|
||||
}
|
||||
}
|
||||
68
_backup/library/Zend/Amf/Parse/Serializer.php
Normal file
@@ -0,0 +1,68 @@
|
||||
<?php
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Amf
|
||||
* @subpackage Parse
|
||||
* @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
* @version $Id$
|
||||
*/
|
||||
|
||||
/**
|
||||
* Base abstract class for all AMF serializers.
|
||||
*
|
||||
* @package Zend_Amf
|
||||
* @subpackage Parse
|
||||
* @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
abstract class Zend_Amf_Parse_Serializer
|
||||
{
|
||||
/**
|
||||
* Reference to the current output stream being constructed
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $_stream;
|
||||
|
||||
/**
|
||||
* str* functions overloaded using mbstring.func_overload
|
||||
*
|
||||
* @var bool
|
||||
*/
|
||||
protected $mbStringFunctionsOverloaded;
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
* @param Zend_Amf_Parse_OutputStream $stream
|
||||
* @return void
|
||||
*/
|
||||
public function __construct(Zend_Amf_Parse_OutputStream $stream)
|
||||
{
|
||||
$this->_stream = $stream;
|
||||
$this->_mbStringFunctionsOverloaded = function_exists('mb_strlen') && (ini_get('mbstring.func_overload') !== '') && ((int)ini_get('mbstring.func_overload') & 2);
|
||||
}
|
||||
|
||||
/**
|
||||
* Find the PHP object type and convert it into an AMF object type
|
||||
*
|
||||
* @param mixed $content
|
||||
* @param int $markerType
|
||||
* @param mixed $contentByVal
|
||||
* @return void
|
||||
*/
|
||||
public abstract function writeTypeMarker(&$content, $markerType = null, $contentByVal = false);
|
||||
}
|
||||
231
_backup/library/Zend/Amf/Parse/TypeLoader.php
Normal file
@@ -0,0 +1,231 @@
|
||||
<?php
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Amf
|
||||
* @subpackage Parse
|
||||
* @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
* @version $Id$
|
||||
*/
|
||||
|
||||
/**
|
||||
* @see Zend_Amf_Value_Messaging_AcknowledgeMessage
|
||||
*/
|
||||
require_once 'Zend/Amf/Value/Messaging/AcknowledgeMessage.php';
|
||||
/**
|
||||
* @see Zend_Amf_Value_Messaging_AsyncMessage
|
||||
*/
|
||||
require_once 'Zend/Amf/Value/Messaging/AsyncMessage.php';
|
||||
/**
|
||||
* @see Zend_Amf_Value_Messaging_CommandMessage
|
||||
*/
|
||||
require_once 'Zend/Amf/Value/Messaging/CommandMessage.php';
|
||||
/**
|
||||
* @see Zend_Amf_Value_Messaging_ErrorMessage
|
||||
*/
|
||||
require_once 'Zend/Amf/Value/Messaging/ErrorMessage.php';
|
||||
/**
|
||||
* @see Zend_Amf_Value_Messaging_RemotingMessage
|
||||
*/
|
||||
require_once 'Zend/Amf/Value/Messaging/RemotingMessage.php';
|
||||
|
||||
/**
|
||||
* Loads a local class and executes the instantiation of that class.
|
||||
*
|
||||
* @todo PHP 5.3 can drastically change this class w/ namespace and the new call_user_func w/ namespace
|
||||
* @package Zend_Amf
|
||||
* @subpackage Parse
|
||||
* @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
final class Zend_Amf_Parse_TypeLoader
|
||||
{
|
||||
/**
|
||||
* @var string callback class
|
||||
*/
|
||||
public static $callbackClass;
|
||||
|
||||
/**
|
||||
* @var array AMF class map
|
||||
*/
|
||||
public static $classMap = array (
|
||||
'flex.messaging.messages.AcknowledgeMessage' => 'Zend_Amf_Value_Messaging_AcknowledgeMessage',
|
||||
'flex.messaging.messages.ErrorMessage' => 'Zend_Amf_Value_Messaging_AsyncMessage',
|
||||
'flex.messaging.messages.CommandMessage' => 'Zend_Amf_Value_Messaging_CommandMessage',
|
||||
'flex.messaging.messages.ErrorMessage' => 'Zend_Amf_Value_Messaging_ErrorMessage',
|
||||
'flex.messaging.messages.RemotingMessage' => 'Zend_Amf_Value_Messaging_RemotingMessage',
|
||||
'flex.messaging.io.ArrayCollection' => 'Zend_Amf_Value_Messaging_ArrayCollection',
|
||||
);
|
||||
|
||||
/**
|
||||
* @var array Default class map
|
||||
*/
|
||||
protected static $_defaultClassMap = array(
|
||||
'flex.messaging.messages.AcknowledgeMessage' => 'Zend_Amf_Value_Messaging_AcknowledgeMessage',
|
||||
'flex.messaging.messages.ErrorMessage' => 'Zend_Amf_Value_Messaging_AsyncMessage',
|
||||
'flex.messaging.messages.CommandMessage' => 'Zend_Amf_Value_Messaging_CommandMessage',
|
||||
'flex.messaging.messages.ErrorMessage' => 'Zend_Amf_Value_Messaging_ErrorMessage',
|
||||
'flex.messaging.messages.RemotingMessage' => 'Zend_Amf_Value_Messaging_RemotingMessage',
|
||||
'flex.messaging.io.ArrayCollection' => 'Zend_Amf_Value_Messaging_ArrayCollection',
|
||||
);
|
||||
|
||||
/**
|
||||
* @var Zend_Loader_PluginLoader_Interface
|
||||
*/
|
||||
protected static $_resourceLoader = null;
|
||||
|
||||
|
||||
/**
|
||||
* Load the mapped class type into a callback.
|
||||
*
|
||||
* @param string $className
|
||||
* @return object|false
|
||||
*/
|
||||
public static function loadType($className)
|
||||
{
|
||||
$class = self::getMappedClassName($className);
|
||||
if(!$class) {
|
||||
$class = str_replace('.', '_', $className);
|
||||
}
|
||||
if (!class_exists($class)) {
|
||||
return "stdClass";
|
||||
}
|
||||
return $class;
|
||||
}
|
||||
|
||||
/**
|
||||
* Looks up the supplied call name to its mapped class name
|
||||
*
|
||||
* @param string $className
|
||||
* @return string
|
||||
*/
|
||||
public static function getMappedClassName($className)
|
||||
{
|
||||
$mappedName = array_search($className, self::$classMap);
|
||||
|
||||
if ($mappedName) {
|
||||
return $mappedName;
|
||||
}
|
||||
|
||||
$mappedName = array_search($className, array_flip(self::$classMap));
|
||||
|
||||
if ($mappedName) {
|
||||
return $mappedName;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Map PHP class names to ActionScript class names
|
||||
*
|
||||
* Allows users to map the class names of there action script classes
|
||||
* to the equivelent php class name. Used in deserialization to load a class
|
||||
* and serialiation to set the class name of the returned object.
|
||||
*
|
||||
* @param string $asClassName
|
||||
* @param string $phpClassName
|
||||
* @return void
|
||||
*/
|
||||
public static function setMapping($asClassName, $phpClassName)
|
||||
{
|
||||
self::$classMap[$asClassName] = $phpClassName;
|
||||
}
|
||||
|
||||
/**
|
||||
* Reset type map
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public static function resetMap()
|
||||
{
|
||||
self::$classMap = self::$_defaultClassMap;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set loader for resource type handlers
|
||||
*
|
||||
* @param Zend_Loader_PluginLoader_Interface $loader
|
||||
*/
|
||||
public static function setResourceLoader(Zend_Loader_PluginLoader_Interface $loader)
|
||||
{
|
||||
self::$_resourceLoader = $loader;
|
||||
}
|
||||
|
||||
/**
|
||||
* Add directory to the list of places where to look for resource handlers
|
||||
*
|
||||
* @param string $prefix
|
||||
* @param string $dir
|
||||
*/
|
||||
public static function addResourceDirectory($prefix, $dir)
|
||||
{
|
||||
if(self::$_resourceLoader) {
|
||||
self::$_resourceLoader->addPrefixPath($prefix, $dir);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get plugin class that handles this resource
|
||||
*
|
||||
* @param resource $resource Resource type
|
||||
* @return string Class name
|
||||
*/
|
||||
public static function getResourceParser($resource)
|
||||
{
|
||||
if(self::$_resourceLoader) {
|
||||
$type = preg_replace("/[^A-Za-z0-9_]/", " ", get_resource_type($resource));
|
||||
$type = str_replace(" ","", ucwords($type));
|
||||
return self::$_resourceLoader->load($type);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert resource to a serializable object
|
||||
*
|
||||
* @param resource $resource
|
||||
* @return mixed
|
||||
*/
|
||||
public static function handleResource($resource)
|
||||
{
|
||||
if(!self::$_resourceLoader) {
|
||||
require_once 'Zend/Amf/Exception.php';
|
||||
throw new Zend_Amf_Exception('Unable to handle resources - resource plugin loader not set');
|
||||
}
|
||||
try {
|
||||
while(is_resource($resource)) {
|
||||
$resclass = self::getResourceParser($resource);
|
||||
if(!$resclass) {
|
||||
require_once 'Zend/Amf/Exception.php';
|
||||
throw new Zend_Amf_Exception('Can not serialize resource type: '. get_resource_type($resource));
|
||||
}
|
||||
$parser = new $resclass();
|
||||
if(is_callable(array($parser, 'parse'))) {
|
||||
$resource = $parser->parse($resource);
|
||||
} else {
|
||||
require_once 'Zend/Amf/Exception.php';
|
||||
throw new Zend_Amf_Exception("Could not call parse() method on class $resclass");
|
||||
}
|
||||
}
|
||||
return $resource;
|
||||
} catch(Zend_Amf_Exception $e) {
|
||||
throw new Zend_Amf_Exception($e->getMessage(), $e->getCode(), $e);
|
||||
} catch(Exception $e) {
|
||||
require_once 'Zend/Amf/Exception.php';
|
||||
throw new Zend_Amf_Exception('Can not serialize resource type: '. get_resource_type($resource), 0, $e);
|
||||
}
|
||||
}
|
||||
}
|
||||
251
_backup/library/Zend/Amf/Request.php
Normal file
@@ -0,0 +1,251 @@
|
||||
<?php
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Amf
|
||||
* @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
* @version $Id$
|
||||
*/
|
||||
|
||||
/** @see Zend_Amf_Parse_InputStream */
|
||||
require_once 'Zend/Amf/Parse/InputStream.php';
|
||||
|
||||
/** @see Zend_Amf_Parse_Amf0_Deserializer */
|
||||
require_once 'Zend/Amf/Parse/Amf0/Deserializer.php';
|
||||
|
||||
/** @see Zend_Amf_Constants */
|
||||
require_once 'Zend/Amf/Constants.php';
|
||||
|
||||
/** @see Zend_Amf_Value_MessageHeader */
|
||||
require_once 'Zend/Amf/Value/MessageHeader.php';
|
||||
|
||||
/** @see Zend_Amf_Value_MessageBody */
|
||||
require_once 'Zend/Amf/Value/MessageBody.php';
|
||||
|
||||
/**
|
||||
* Handle the incoming AMF request by deserializing the data to php object
|
||||
* types and storing the data for Zend_Amf_Server to handle for processing.
|
||||
*
|
||||
* @todo Currently not checking if the object needs to be Type Mapped to a server object.
|
||||
* @package Zend_Amf
|
||||
* @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
class Zend_Amf_Request
|
||||
{
|
||||
/**
|
||||
* @var int AMF client type (AMF0, AMF3)
|
||||
*/
|
||||
protected $_clientType = 0; // default AMF0
|
||||
|
||||
/**
|
||||
* @var array Message bodies
|
||||
*/
|
||||
protected $_bodies = array();
|
||||
|
||||
/**
|
||||
* @var array Message headers
|
||||
*/
|
||||
protected $_headers = array();
|
||||
|
||||
/**
|
||||
* @var int Message encoding to use for objects in response
|
||||
*/
|
||||
protected $_objectEncoding = 0;
|
||||
|
||||
/**
|
||||
* @var Zend_Amf_Parse_InputStream
|
||||
*/
|
||||
protected $_inputStream;
|
||||
|
||||
/**
|
||||
* @var Zend_Amf_Parse_AMF0_Deserializer
|
||||
*/
|
||||
protected $_deserializer;
|
||||
|
||||
/**
|
||||
* Time of the request
|
||||
* @var mixed
|
||||
*/
|
||||
protected $_time;
|
||||
|
||||
/**
|
||||
* Prepare the AMF InputStream for parsing.
|
||||
*
|
||||
* @param string $request
|
||||
* @return Zend_Amf_Request
|
||||
*/
|
||||
public function initialize($request)
|
||||
{
|
||||
$this->_inputStream = new Zend_Amf_Parse_InputStream($request);
|
||||
$this->_deserializer = new Zend_Amf_Parse_Amf0_Deserializer($this->_inputStream);
|
||||
$this->readMessage($this->_inputStream);
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Takes the raw AMF input stream and converts it into valid PHP objects
|
||||
*
|
||||
* @param Zend_Amf_Parse_InputStream
|
||||
* @return Zend_Amf_Request
|
||||
*/
|
||||
public function readMessage(Zend_Amf_Parse_InputStream $stream)
|
||||
{
|
||||
$clientVersion = $stream->readUnsignedShort();
|
||||
if (($clientVersion != Zend_Amf_Constants::AMF0_OBJECT_ENCODING)
|
||||
&& ($clientVersion != Zend_Amf_Constants::AMF3_OBJECT_ENCODING)
|
||||
&& ($clientVersion != Zend_Amf_Constants::FMS_OBJECT_ENCODING)
|
||||
) {
|
||||
require_once 'Zend/Amf/Exception.php';
|
||||
throw new Zend_Amf_Exception('Unknown Player Version ' . $clientVersion);
|
||||
}
|
||||
|
||||
$this->_bodies = array();
|
||||
$this->_headers = array();
|
||||
$headerCount = $stream->readInt();
|
||||
|
||||
// Iterate through the AMF envelope header
|
||||
while ($headerCount--) {
|
||||
$this->_headers[] = $this->readHeader();
|
||||
}
|
||||
|
||||
// Iterate through the AMF envelope body
|
||||
$bodyCount = $stream->readInt();
|
||||
while ($bodyCount--) {
|
||||
$this->_bodies[] = $this->readBody();
|
||||
}
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Deserialize a message header from the input stream.
|
||||
*
|
||||
* A message header is structured as:
|
||||
* - NAME String
|
||||
* - MUST UNDERSTAND Boolean
|
||||
* - LENGTH Int
|
||||
* - DATA Object
|
||||
*
|
||||
* @return Zend_Amf_Value_MessageHeader
|
||||
*/
|
||||
public function readHeader()
|
||||
{
|
||||
$name = $this->_inputStream->readUTF();
|
||||
$mustRead = (bool)$this->_inputStream->readByte();
|
||||
$length = $this->_inputStream->readLong();
|
||||
|
||||
try {
|
||||
$data = $this->_deserializer->readTypeMarker();
|
||||
} catch (Exception $e) {
|
||||
require_once 'Zend/Amf/Exception.php';
|
||||
throw new Zend_Amf_Exception('Unable to parse ' . $name . ' header data: ' . $e->getMessage() . ' '. $e->getLine(), 0, $e);
|
||||
}
|
||||
|
||||
$header = new Zend_Amf_Value_MessageHeader($name, $mustRead, $data, $length);
|
||||
return $header;
|
||||
}
|
||||
|
||||
/**
|
||||
* Deserialize a message body from the input stream
|
||||
*
|
||||
* @return Zend_Amf_Value_MessageBody
|
||||
*/
|
||||
public function readBody()
|
||||
{
|
||||
$targetURI = $this->_inputStream->readUTF();
|
||||
$responseURI = $this->_inputStream->readUTF();
|
||||
$length = $this->_inputStream->readLong();
|
||||
|
||||
try {
|
||||
$data = $this->_deserializer->readTypeMarker();
|
||||
} catch (Exception $e) {
|
||||
require_once 'Zend/Amf/Exception.php';
|
||||
throw new Zend_Amf_Exception('Unable to parse ' . $targetURI . ' body data ' . $e->getMessage(), 0, $e);
|
||||
}
|
||||
|
||||
// Check for AMF3 objectEncoding
|
||||
if ($this->_deserializer->getObjectEncoding() == Zend_Amf_Constants::AMF3_OBJECT_ENCODING) {
|
||||
/*
|
||||
* When and AMF3 message is sent to the server it is nested inside
|
||||
* an AMF0 array called Content. The following code gets the object
|
||||
* out of the content array and sets it as the message data.
|
||||
*/
|
||||
if(is_array($data) && $data[0] instanceof Zend_Amf_Value_Messaging_AbstractMessage){
|
||||
$data = $data[0];
|
||||
}
|
||||
|
||||
// set the encoding so we return our message in AMF3
|
||||
$this->_objectEncoding = Zend_Amf_Constants::AMF3_OBJECT_ENCODING;
|
||||
}
|
||||
|
||||
$body = new Zend_Amf_Value_MessageBody($targetURI, $responseURI, $data);
|
||||
return $body;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return an array of the body objects that were found in the amf request.
|
||||
*
|
||||
* @return array {target, response, length, content}
|
||||
*/
|
||||
public function getAmfBodies()
|
||||
{
|
||||
return $this->_bodies;
|
||||
}
|
||||
|
||||
/**
|
||||
* Accessor to private array of message bodies.
|
||||
*
|
||||
* @param Zend_Amf_Value_MessageBody $message
|
||||
* @return Zend_Amf_Request
|
||||
*/
|
||||
public function addAmfBody(Zend_Amf_Value_MessageBody $message)
|
||||
{
|
||||
$this->_bodies[] = $message;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return an array of headers that were found in the amf request.
|
||||
*
|
||||
* @return array {operation, mustUnderstand, length, param}
|
||||
*/
|
||||
public function getAmfHeaders()
|
||||
{
|
||||
return $this->_headers;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the either 0 or 3 for respect AMF version
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
public function getObjectEncoding()
|
||||
{
|
||||
return $this->_objectEncoding;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the object response encoding
|
||||
*
|
||||
* @param mixed $int
|
||||
* @return Zend_Amf_Request
|
||||
*/
|
||||
public function setObjectEncoding($int)
|
||||
{
|
||||
$this->_objectEncoding = $int;
|
||||
return $this;
|
||||
}
|
||||
}
|
||||
80
_backup/library/Zend/Amf/Request/Http.php
Normal file
@@ -0,0 +1,80 @@
|
||||
<?php
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Amf
|
||||
* @subpackage Request
|
||||
* @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
* @version $Id$
|
||||
*/
|
||||
|
||||
/** @see Zend_Amf_Request */
|
||||
require_once 'Zend/Amf/Request.php';
|
||||
|
||||
/**
|
||||
* AMF Request object -- Request via HTTP
|
||||
*
|
||||
* Extends {@link Zend_Amf_Request} to accept a request via HTTP. Request is
|
||||
* built at construction time using a raw POST; if no data is available, the
|
||||
* request is declared a fault.
|
||||
*
|
||||
* @package Zend_Amf
|
||||
* @subpackage Request
|
||||
* @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
class Zend_Amf_Request_Http extends Zend_Amf_Request
|
||||
{
|
||||
/**
|
||||
* Raw AMF request
|
||||
* @var string
|
||||
*/
|
||||
protected $_rawRequest;
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
* Attempts to read from php://input to get raw POST request; if an error
|
||||
* occurs in doing so, or if the AMF body is invalid, the request is declared a
|
||||
* fault.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
// php://input allows you to read raw POST data. It is a less memory
|
||||
// intensive alternative to $HTTP_RAW_POST_DATA and does not need any
|
||||
// special php.ini directives
|
||||
$amfRequest = file_get_contents('php://input');
|
||||
|
||||
// Check to make sure that we have data on the input stream.
|
||||
if ($amfRequest != '') {
|
||||
$this->_rawRequest = $amfRequest;
|
||||
$this->initialize($amfRequest);
|
||||
} else {
|
||||
echo '<p>Zend Amf Endpoint</p>' ;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve raw AMF Request
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getRawRequest()
|
||||
{
|
||||
return $this->_rawRequest;
|
||||
}
|
||||
}
|
||||
205
_backup/library/Zend/Amf/Response.php
Normal file
@@ -0,0 +1,205 @@
|
||||
<?php
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Amf
|
||||
* @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
* @version $Id$
|
||||
*/
|
||||
|
||||
/** @see Zend_Amf_Constants */
|
||||
require_once 'Zend/Amf/Constants.php';
|
||||
|
||||
/** @see Zend_Amf_Parse_OutputStream */
|
||||
require_once 'Zend/Amf/Parse/OutputStream.php';
|
||||
|
||||
/** @see Zend_Amf_Parse_Amf0_Serializer */
|
||||
require_once 'Zend/Amf/Parse/Amf0/Serializer.php';
|
||||
|
||||
/**
|
||||
* Handles converting the PHP object ready for response back into AMF
|
||||
*
|
||||
* @package Zend_Amf
|
||||
* @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
class Zend_Amf_Response
|
||||
{
|
||||
/**
|
||||
* @var int Object encoding for response
|
||||
*/
|
||||
protected $_objectEncoding = 0;
|
||||
|
||||
/**
|
||||
* Array of Zend_Amf_Value_MessageBody objects
|
||||
* @var array
|
||||
*/
|
||||
protected $_bodies = array();
|
||||
|
||||
/**
|
||||
* Array of Zend_Amf_Value_MessageHeader objects
|
||||
* @var array
|
||||
*/
|
||||
protected $_headers = array();
|
||||
|
||||
/**
|
||||
* @var Zend_Amf_Parse_OutputStream
|
||||
*/
|
||||
protected $_outputStream;
|
||||
|
||||
/**
|
||||
* Instantiate new output stream and start serialization
|
||||
*
|
||||
* @return Zend_Amf_Response
|
||||
*/
|
||||
public function finalize()
|
||||
{
|
||||
$this->_outputStream = new Zend_Amf_Parse_OutputStream();
|
||||
$this->writeMessage($this->_outputStream);
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Serialize the PHP data types back into Actionscript and
|
||||
* create and AMF stream.
|
||||
*
|
||||
* @param Zend_Amf_Parse_OutputStream $stream
|
||||
* @return Zend_Amf_Response
|
||||
*/
|
||||
public function writeMessage(Zend_Amf_Parse_OutputStream $stream)
|
||||
{
|
||||
$objectEncoding = $this->_objectEncoding;
|
||||
|
||||
//Write encoding to start of stream. Preamble byte is written of two byte Unsigned Short
|
||||
$stream->writeByte(0x00);
|
||||
$stream->writeByte($objectEncoding);
|
||||
|
||||
// Loop through the AMF Headers that need to be returned.
|
||||
$headerCount = count($this->_headers);
|
||||
$stream->writeInt($headerCount);
|
||||
foreach ($this->getAmfHeaders() as $header) {
|
||||
$serializer = new Zend_Amf_Parse_Amf0_Serializer($stream);
|
||||
$stream->writeUTF($header->name);
|
||||
$stream->writeByte($header->mustRead);
|
||||
$stream->writeLong(Zend_Amf_Constants::UNKNOWN_CONTENT_LENGTH);
|
||||
if (is_object($header->data)) {
|
||||
// Workaround for PHP5 with E_STRICT enabled complaining about
|
||||
// "Only variables should be passed by reference"
|
||||
$placeholder = null;
|
||||
$serializer->writeTypeMarker($placeholder, null, $header->data);
|
||||
} else {
|
||||
$serializer->writeTypeMarker($header->data);
|
||||
}
|
||||
}
|
||||
|
||||
// loop through the AMF bodies that need to be returned.
|
||||
$bodyCount = count($this->_bodies);
|
||||
$stream->writeInt($bodyCount);
|
||||
foreach ($this->_bodies as $body) {
|
||||
$serializer = new Zend_Amf_Parse_Amf0_Serializer($stream);
|
||||
$stream->writeUTF($body->getTargetURI());
|
||||
$stream->writeUTF($body->getResponseURI());
|
||||
$stream->writeLong(Zend_Amf_Constants::UNKNOWN_CONTENT_LENGTH);
|
||||
$bodyData = $body->getData();
|
||||
$markerType = ($this->_objectEncoding == Zend_Amf_Constants::AMF0_OBJECT_ENCODING) ? null : Zend_Amf_Constants::AMF0_AMF3;
|
||||
if (is_object($bodyData)) {
|
||||
// Workaround for PHP5 with E_STRICT enabled complaining about
|
||||
// "Only variables should be passed by reference"
|
||||
$placeholder = null;
|
||||
$serializer->writeTypeMarker($placeholder, $markerType, $bodyData);
|
||||
} else {
|
||||
$serializer->writeTypeMarker($bodyData, $markerType);
|
||||
}
|
||||
}
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the output stream content
|
||||
*
|
||||
* @return string The contents of the output stream
|
||||
*/
|
||||
public function getResponse()
|
||||
{
|
||||
return $this->_outputStream->getStream();
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the output stream content
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function __toString()
|
||||
{
|
||||
return $this->getResponse();
|
||||
}
|
||||
|
||||
/**
|
||||
* Add an AMF body to be sent to the Flash Player
|
||||
*
|
||||
* @param Zend_Amf_Value_MessageBody $body
|
||||
* @return Zend_Amf_Response
|
||||
*/
|
||||
public function addAmfBody(Zend_Amf_Value_MessageBody $body)
|
||||
{
|
||||
$this->_bodies[] = $body;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return an array of AMF bodies to be serialized
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function getAmfBodies()
|
||||
{
|
||||
return $this->_bodies;
|
||||
}
|
||||
|
||||
/**
|
||||
* Add an AMF Header to be sent back to the flash player
|
||||
*
|
||||
* @param Zend_Amf_Value_MessageHeader $header
|
||||
* @return Zend_Amf_Response
|
||||
*/
|
||||
public function addAmfHeader(Zend_Amf_Value_MessageHeader $header)
|
||||
{
|
||||
$this->_headers[] = $header;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve attached AMF message headers
|
||||
*
|
||||
* @return array Array of Zend_Amf_Value_MessageHeader objects
|
||||
*/
|
||||
public function getAmfHeaders()
|
||||
{
|
||||
return $this->_headers;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the AMF encoding that will be used for serialization
|
||||
*
|
||||
* @param int $encoding
|
||||
* @return Zend_Amf_Response
|
||||
*/
|
||||
public function setObjectEncoding($encoding)
|
||||
{
|
||||
$this->_objectEncoding = $encoding;
|
||||
return $this;
|
||||
}
|
||||
}
|
||||
73
_backup/library/Zend/Amf/Response/Http.php
Normal file
@@ -0,0 +1,73 @@
|
||||
<?php
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Amf
|
||||
* @subpackage Response
|
||||
* @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
* @version $Id$
|
||||
*/
|
||||
|
||||
/** Zend_Amf_Response */
|
||||
require_once 'Zend/Amf/Response.php';
|
||||
|
||||
/**
|
||||
* Creates the proper http headers and send the serialized AMF stream to standard out.
|
||||
*
|
||||
* @package Zend_Amf
|
||||
* @subpackage Response
|
||||
* @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
class Zend_Amf_Response_Http extends Zend_Amf_Response
|
||||
{
|
||||
/**
|
||||
* Create the application response header for AMF and sends the serialized AMF string
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getResponse()
|
||||
{
|
||||
if (!headers_sent()) {
|
||||
if ($this->isIeOverSsl()) {
|
||||
header('Cache-Control: cache, must-revalidate');
|
||||
header('Pragma: public');
|
||||
} else {
|
||||
header('Cache-Control: no-cache, must-revalidate');
|
||||
header('Pragma: no-cache');
|
||||
}
|
||||
header('Expires: Thu, 19 Nov 1981 08:52:00 GMT');
|
||||
header('Content-Type: application/x-amf');
|
||||
}
|
||||
return parent::getResponse();
|
||||
}
|
||||
|
||||
protected function isIeOverSsl()
|
||||
{
|
||||
$ssl = isset($_SERVER['HTTPS']) ? $_SERVER['HTTPS'] : false;
|
||||
if (!$ssl || ($ssl == 'off')) {
|
||||
// IIS reports "off", whereas other browsers simply don't populate
|
||||
return false;
|
||||
}
|
||||
|
||||
$ua = $_SERVER['HTTP_USER_AGENT'];
|
||||
if (!preg_match('/; MSIE \d+\.\d+;/', $ua)) {
|
||||
// Not MicroSoft Internet Explorer
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
1048
_backup/library/Zend/Amf/Server.php
Normal file
37
_backup/library/Zend/Amf/Server/Exception.php
Normal file
@@ -0,0 +1,37 @@
|
||||
<?php
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Amf
|
||||
* @subpackage Server
|
||||
* @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
* @version $Id$
|
||||
*/
|
||||
|
||||
/** Zend_Amf_Exception */
|
||||
require_once 'Zend/Amf/Exception.php';
|
||||
|
||||
/**
|
||||
* Zend_Amf_Server_Exception
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Amf
|
||||
* @subpackage Server
|
||||
* @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
class Zend_Amf_Server_Exception extends Zend_Amf_Exception
|
||||
{
|
||||
}
|
||||
297
_backup/library/Zend/Amf/Util/BinaryStream.php
Normal file
@@ -0,0 +1,297 @@
|
||||
<?php
|
||||
/**
|
||||
* Zend Framework
|
||||
*
|
||||
* LICENSE
|
||||
*
|
||||
* This source file is subject to the new BSD license that is bundled
|
||||
* with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://framework.zend.com/license/new-bsd
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@zend.com so we can send you a copy immediately.
|
||||
*
|
||||
* @category Zend
|
||||
* @package Zend_Amf
|
||||
* @subpackage Util
|
||||
* @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
* @version $Id$
|
||||
*/
|
||||
|
||||
/**
|
||||
* Utility class to walk through a data stream byte by byte with conventional names
|
||||
*
|
||||
* @package Zend_Amf
|
||||
* @subpackage Util
|
||||
* @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
class Zend_Amf_Util_BinaryStream
|
||||
{
|
||||
/**
|
||||
* @var string Byte stream
|
||||
*/
|
||||
protected $_stream;
|
||||
|
||||
/**
|
||||
* @var int Length of stream
|
||||
*/
|
||||
protected $_streamLength;
|
||||
|
||||
/**
|
||||
* @var bool BigEndian encoding?
|
||||
*/
|
||||
protected $_bigEndian;
|
||||
|
||||
/**
|
||||
* @var int Current position in stream
|
||||
*/
|
||||
protected $_needle;
|
||||
|
||||
/**
|
||||
* @var bool str* functions overloaded using mbstring.func_overload?
|
||||
*/
|
||||
protected $_mbStringFunctionsOverloaded;
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
* Create a reference to a byte stream that is going to be parsed or created
|
||||
* by the methods in the class. Detect if the class should use big or
|
||||
* little Endian encoding.
|
||||
*
|
||||
* @param string $stream use '' if creating a new stream or pass a string if reading.
|
||||
* @return void
|
||||
*/
|
||||
public function __construct($stream)
|
||||
{
|
||||
if (!is_string($stream)) {
|
||||
require_once 'Zend/Amf/Exception.php';
|
||||
throw new Zend_Amf_Exception('Inputdata is not of type String');
|
||||
}
|
||||
|
||||
$this->_stream = $stream;
|
||||
$this->_needle = 0;
|
||||
$this->_mbStringFunctionsOverloaded = function_exists('mb_strlen') && (ini_get('mbstring.func_overload') !== '') && ((int)ini_get('mbstring.func_overload') & 2);
|
||||
$this->_streamLength = $this->_mbStringFunctionsOverloaded ? mb_strlen($stream, '8bit') : strlen($stream);
|
||||
$this->_bigEndian = (pack('l', 1) === "\x00\x00\x00\x01");
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the current stream
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getStream()
|
||||
{
|
||||
return $this->_stream;
|
||||
}
|
||||
|
||||
/**
|
||||
* Read the number of bytes in a row for the length supplied.
|
||||
*
|
||||
* @todo Should check that there are enough bytes left in the stream we are about to read.
|
||||
* @param int $length
|
||||
* @return string
|
||||
* @throws Zend_Amf_Exception for buffer underrun
|
||||
*/
|
||||
public function readBytes($length)
|
||||
{
|
||||
if (($length + $this->_needle) > $this->_streamLength) {
|
||||
require_once 'Zend/Amf/Exception.php';
|
||||
throw new Zend_Amf_Exception('Buffer underrun at needle position: ' . $this->_needle . ' while requesting length: ' . $length);
|
||||
}
|
||||
$bytes = $this->_mbStringFunctionsOverloaded ? mb_substr($this->_stream, $this->_needle, $length, '8bit') : substr($this->_stream, $this->_needle, $length);
|
||||
$this->_needle+= $length;
|
||||
return $bytes;
|
||||
}
|
||||
|
||||
/**
|
||||
* Write any length of bytes to the stream
|
||||
*
|
||||
* Usually a string.
|
||||
*
|
||||
* @param string $bytes
|
||||
* @return Zend_Amf_Util_BinaryStream
|
||||
*/
|
||||
public function writeBytes($bytes)
|
||||
{
|
||||
$this->_stream.= $bytes;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Reads a signed byte
|
||||
*
|
||||
* @return int Value is in the range of -128 to 127.
|
||||
* @throws Zend_Amf_Exception
|
||||
*/
|
||||
public function readByte()
|
||||
{
|
||||
if (($this->_needle + 1) > $this->_streamLength) {
|
||||
require_once 'Zend/Amf/Exception.php';
|
||||
throw new Zend_Amf_Exception(
|
||||
'Buffer underrun at needle position: '
|
||||
. $this->_needle
|
||||
. ' while requesting length: '
|
||||
. $this->_streamLength
|
||||
);
|
||||
}
|
||||
|
||||
return ord($this->_stream{$this->_needle++});
|
||||
}
|
||||
|
||||
/**
|
||||
* Writes the passed string into a signed byte on the stream.
|
||||
*
|
||||
* @param string $stream
|
||||
* @return Zend_Amf_Util_BinaryStream
|
||||
*/
|
||||
public function writeByte($stream)
|
||||
{
|
||||
$this->_stream.= pack('c', $stream);
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Reads a signed 32-bit integer from the data stream.
|
||||
*
|
||||
* @return int Value is in the range of -2147483648 to 2147483647
|
||||
*/
|
||||
public function readInt()
|
||||
{
|
||||
return ($this->readByte() << 8) + $this->readByte();
|
||||
}
|
||||
|
||||
/**
|
||||
* Write an the integer to the output stream as a 32 bit signed integer
|
||||
*
|
||||
* @param int $stream
|
||||
* @return Zend_Amf_Util_BinaryStream
|
||||
*/
|
||||
public function writeInt($stream)
|
||||
{
|
||||
$this->_stream.= pack('n', $stream);
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Reads a UTF-8 string from the data stream
|
||||
*
|
||||
* @return string A UTF-8 string produced by the byte representation of characters
|
||||
*/
|
||||
public function readUtf()
|
||||
{
|
||||
$length = $this->readInt();
|
||||
return $this->readBytes($length);
|
||||
}
|
||||
|
||||
/**
|
||||
* Wite a UTF-8 string to the outputstream
|
||||
*
|
||||
* @param string $stream
|
||||
* @return Zend_Amf_Util_BinaryStream
|
||||
*/
|
||||
public function writeUtf($stream)
|
||||
{
|
||||
$this->writeInt($this->_mbStringFunctionsOverloaded ? mb_strlen($stream, '8bit') : strlen($stream));
|
||||
$this->_stream.= $stream;
|
||||
return $this;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Read a long UTF string
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function readLongUtf()
|
||||
{
|
||||
$length = $this->readLong();
|
||||
return $this->readBytes($length);
|
||||
}
|
||||
|
||||
/**
|
||||
* Write a long UTF string to the buffer
|
||||
*
|
||||
* @param string $stream
|
||||
* @return Zend_Amf_Util_BinaryStream
|
||||
*/
|
||||
public function writeLongUtf($stream)
|
||||
{
|
||||
$this->writeLong($this->_mbStringFunctionsOverloaded ? mb_strlen($stream, '8bit') : strlen($stream));
|
||||
$this->_stream.= $stream;
|
||||
}
|
||||
|
||||
/**
|
||||
* Read a long numeric value
|
||||
*
|
||||
* @return double
|
||||
*/
|
||||
public function readLong()
|
||||
{
|
||||
return ($this->readByte() << 24) + ($this->readByte() << 16) + ($this->readByte() << 8) + $this->readByte();
|
||||
}
|
||||
|
||||
/**
|
||||
* Write long numeric value to output stream
|
||||
*
|
||||
* @param int|string $stream
|
||||
* @return Zend_Amf_Util_BinaryStream
|
||||
*/
|
||||
public function writeLong($stream)
|
||||
{
|
||||
$this->_stream.= pack('N', $stream);
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Read a 16 bit unsigned short.
|
||||
*
|
||||
* @todo This could use the unpack() w/ S,n, or v
|
||||
* @return double
|
||||
*/
|
||||
public function readUnsignedShort()
|
||||
{
|
||||
$byte1 = $this->readByte();
|
||||
$byte2 = $this->readByte();
|
||||
return (($byte1 << 8) | $byte2);
|
||||
}
|
||||
|
||||
/**
|
||||
* Reads an IEEE 754 double-precision floating point number from the data stream.
|
||||
*
|
||||
* @return double Floating point number
|
||||
*/
|
||||
public function readDouble()
|
||||
{
|
||||
$bytes = $this->_mbStringFunctionsOverloaded ? mb_substr($this->_stream, $this->_needle, 8, '8bit') : substr($this->_stream, $this->_needle, 8);
|
||||
$this->_needle+= 8;
|
||||
|
||||
if (!$this->_bigEndian) {
|
||||
$bytes = strrev($bytes);
|
||||
}
|
||||
|
||||
$double = unpack('dflt', $bytes);
|
||||
return $double['flt'];
|
||||
}
|
||||
|
||||
/**
|
||||
* Writes an IEEE 754 double-precision floating point number from the data stream.
|
||||
*
|
||||
* @param string|double $stream
|
||||
* @return Zend_Amf_Util_BinaryStream
|
||||
*/
|
||||
public function writeDouble($stream)
|
||||
{
|
||||
$stream = pack('d', $stream);
|
||||
if (!$this->_bigEndian) {
|
||||
$stream = strrev($stream);
|
||||
}
|
||||
$this->_stream.= $stream;
|
||||
return $this;
|
||||
}
|
||||
|
||||
}
|
||||