Commit 1859d25e by Munteanu Petrisor

Add auth middleware for homepage

Remove unnecessary DOM elements Add initial sql script
parent 67867f9a
vendor vendor
uploads uploads
.gitignore.swp .gitignore.swp
.idea
config.php
CREATE TABLE IF NOT EXISTS `cookies`
(
`id` int(11) NOT NULL AUTO_INCREMENT,
`cookie` text NOT NULL,
`user_id` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE = InnoDB
DEFAULT CHARSET = latin1
AUTO_INCREMENT = 10;
CREATE TABLE IF NOT EXISTS `quotes`
(
`id` int(11) NOT NULL AUTO_INCREMENT,
`user_id` int(11) NOT NULL,
`created_at` datetime NOT NULL,
`status` int(11) NOT NULL,
`price` double DEFAULT NULL,
`details` text,
`file` text,
PRIMARY KEY (`id`),
KEY `user_id_index` (`user_id`),
KEY `status_index` (`status`)
) ENGINE = InnoDB
DEFAULT CHARSET = latin1
AUTO_INCREMENT = 100;
\ No newline at end of file
...@@ -68,19 +68,19 @@ var kalOpt = { ...@@ -68,19 +68,19 @@ var kalOpt = {
direction: 'future', direction: 'future',
directionScrolling: true, directionScrolling: true,
useYearNav: false, useYearNav: false,
blackout: function(date) { blackout: function (date) {
var dateFmt = 'YYYY-MM-DD'; var dateFmt = 'YYYY-MM-DD';
var date = Kalendae.moment(date).startOf('day'); var date = Kalendae.moment(date).startOf('day');
var shortDate = date.format(dateFmt); var shortDate = date.format(dateFmt);
var day = date.day(); var day = date.day();
var publicationID = this.settings.publicationID; var publicationID = this.settings.publicationID;
var publication = ko.utils.arrayFirst(app.publications(), function(e) { var publication = ko.utils.arrayFirst(app.publications(), function (e) {
return e.id() === publicationID; return e.id() === publicationID;
}); });
if (!publication) { if (!publication) {
return [1,0,0,0,0,0,0][day]; return [1, 0, 0, 0, 0, 0, 0][day];
} }
var disabledWeekDays = publication.disabledWeekDays(); var disabledWeekDays = publication.disabledWeekDays();
...@@ -101,7 +101,7 @@ var kalOpt = { ...@@ -101,7 +101,7 @@ var kalOpt = {
} }
}; };
var PublicationModel = function(data) { var PublicationModel = function (data) {
ko.mapping.fromJS(data, {}, this); ko.mapping.fromJS(data, {}, this);
var self = this; var self = this;
...@@ -111,25 +111,25 @@ var PublicationModel = function(data) { ...@@ -111,25 +111,25 @@ var PublicationModel = function(data) {
self.optionIDs = ko.observableArray([]); self.optionIDs = ko.observableArray([]);
self.dates = ko.observableArray([]); self.dates = ko.observableArray([]);
self.pubName = data.name; self.pubName = data.name;
self.distribution = ko.pureComputed(function() { self.distribution = ko.pureComputed(function () {
return self.type() == 1 ? 'National' : 'Local'; return self.type() == 1 ? 'National' : 'Local';
}); });
self.price = ko.observable({'total': '0', 'vat': '0', 'base': '0'}); self.price = ko.observable({'total': '0', 'vat': '0', 'base': '0'});
self.isPristine = function() { self.isPristine = function () {
return (self.dates().length && self.columnID()); return (self.dates().length && self.columnID());
}; };
self.options = ko.pureComputed(function() { self.options = ko.pureComputed(function () {
var selectedColumn = ko.utils.arrayFilter(self.columns(), function(column) { var selectedColumn = ko.utils.arrayFilter(self.columns(), function (column) {
return column.id == self.columnID(); return column.id == self.columnID();
}); });
return selectedColumn.length ? selectedColumn[0].options : []; return selectedColumn.length ? selectedColumn[0].options : [];
}, self).extend({ notify: 'always' }); }, self).extend({notify: 'always'});
self.columnName = ko.pureComputed(function(){ self.columnName = ko.pureComputed(function () {
var selectedColumn = ko.utils.arrayFilter(self.columns(), function(column) { var selectedColumn = ko.utils.arrayFilter(self.columns(), function (column) {
return column.id == self.columnID(); return column.id == self.columnID();
}); });
...@@ -139,23 +139,23 @@ var PublicationModel = function(data) { ...@@ -139,23 +139,23 @@ var PublicationModel = function(data) {
self.columnID.subscribe(app.getSummary); self.columnID.subscribe(app.getSummary);
self.optionIDs.subscribe(app.getSummary); self.optionIDs.subscribe(app.getSummary);
self.dates.subscribe(function() { self.dates.subscribe(function () {
if(self.dates().length == 0) { if (self.dates().length == 0) {
self.price({'vat': '0', 'base': '0', 'total': '0'}); self.price({'vat': '0', 'base': '0', 'total': '0'});
} }
app.getSummary(); app.getSummary();
}); });
self.columnID.subscribe(function() { self.columnID.subscribe(function () {
self.optionIDs([]); self.optionIDs([]);
}); });
self.optionStr = ko.pureComputed(function() { self.optionStr = ko.pureComputed(function () {
var optionNames = []; var optionNames = [];
ko.utils.arrayForEach(self.optionIDs(), function(sopt) { ko.utils.arrayForEach(self.optionIDs(), function (sopt) {
ko.utils.arrayForEach(self.options(), function(opt) { ko.utils.arrayForEach(self.options(), function (opt) {
if(sopt == opt.id) { if (sopt == opt.id) {
optionNames.push(opt.name); optionNames.push(opt.name);
} }
}); });
...@@ -163,9 +163,9 @@ var PublicationModel = function(data) { ...@@ -163,9 +163,9 @@ var PublicationModel = function(data) {
return optionNames.join(', '); return optionNames.join(', ');
}); });
self.columnStr = function() { self.columnStr = function () {
ret = ''; ret = '';
ko.utils.arrayForEach(self.columns(), function(col) { ko.utils.arrayForEach(self.columns(), function (col) {
if (col.id == self.columnID()) { if (col.id == self.columnID()) {
ret = col.name; ret = col.name;
} }
...@@ -174,9 +174,9 @@ var PublicationModel = function(data) { ...@@ -174,9 +174,9 @@ var PublicationModel = function(data) {
return ret ? ret : ''; return ret ? ret : '';
}; };
self.datesStr = ko.pureComputed(function() { self.datesStr = ko.pureComputed(function () {
var sDates = ''; var sDates = '';
ko.utils.arrayForEach(self.dates(), function(date) { ko.utils.arrayForEach(self.dates(), function (date) {
sDates = sDates + moment(date).format('D-M-Y, '); sDates = sDates + moment(date).format('D-M-Y, ');
}); });
...@@ -188,10 +188,10 @@ var PublicationModel = function(data) { ...@@ -188,10 +188,10 @@ var PublicationModel = function(data) {
return sDates; return sDates;
}); });
self.selected.subscribe(function(isSelected) { self.selected.subscribe(function (isSelected) {
app.getSummary(); app.getSummary();
if (isSelected && self.columns().length == 0) { if (isSelected && self.columns().length == 0) {
$.get('/columns/' + self.id()).done(function(data) { $.get('/columns/' + self.id()).done(function (data) {
self.columns(data); self.columns(data);
if (self.columns().length == 0) { if (self.columns().length == 0) {
return; return;
...@@ -202,7 +202,7 @@ var PublicationModel = function(data) { ...@@ -202,7 +202,7 @@ var PublicationModel = function(data) {
kalOpt.publicationID = self.id(); kalOpt.publicationID = self.id();
var k = new Kalendae('cal' + self.id(), kalOpt); var k = new Kalendae('cal' + self.id(), kalOpt);
k.subscribe('change', function(date) { k.subscribe('change', function (date) {
app.text.pauseNotifications = true; app.text.pauseNotifications = true;
$('#textarea1').blur(); $('#textarea1').blur();
app.text.pauseNotifications = false; app.text.pauseNotifications = false;
...@@ -214,12 +214,12 @@ var PublicationModel = function(data) { ...@@ -214,12 +214,12 @@ var PublicationModel = function(data) {
}); });
} }
var Application = function() { var Application = function () {
var self = this; var self = this;
// my vars // my vars
self.isLoggedIn = ko.observable(false); self.isLoggedIn = ko.observable(false);
self.adType = ko.observable(1); self.adType = ko.observable(2);
self.kinds = ko.observableArray([]); self.kinds = ko.observableArray([]);
self.selectedKind = ko.observable(); self.selectedKind = ko.observable();
self.invoicePerAd = ko.observable(true); self.invoicePerAd = ko.observable(true);
...@@ -248,26 +248,21 @@ var Application = function() { ...@@ -248,26 +248,21 @@ var Application = function() {
self.contactValid = ko.observable(false); self.contactValid = ko.observable(false);
// my functions // my functions
self.isPristineQuote = function () {
self.changeAdType = function(adType) {
self.adType(adType);
};
self.isPristineQuote = function(){
return self.adType() && self.contactValid() && Object.keys(self.quoteFile()).length != 0; return self.adType() && self.contactValid() && Object.keys(self.quoteFile()).length != 0;
}; };
self.selectedKind.subscribe(function() { self.selectedKind.subscribe(function () {
if(self.selectedKind() == 3){ if (self.selectedKind() == 3) {
ko.utils.arrayForEach(self.publications(), function(publication){ ko.utils.arrayForEach(self.publications(), function (publication) {
if(publication.id() == jenuPublication){ if (publication.id() == jenuPublication) {
publication.selected(true); publication.selected(true);
}else{ } else {
publication.selected(false); publication.selected(false);
} }
}); });
}else{ } else {
ko.utils.arrayForEach(self.publications(), function(publication){ ko.utils.arrayForEach(self.publications(), function (publication) {
publication.selected(false); publication.selected(false);
}); });
...@@ -275,8 +270,8 @@ var Application = function() { ...@@ -275,8 +270,8 @@ var Application = function() {
} }
}); });
self.doFinalQuote = function(){ self.doFinalQuote = function () {
if(self.isPristineQuote() && self.selected().length) { if (self.isPristineQuote() && self.selected().length) {
$(".quote-btn-create").addClass("disabled").text("Asteptati..."); $(".quote-btn-create").addClass("disabled").text("Asteptati...");
var adObj = { var adObj = {
columns: [], columns: [],
...@@ -286,15 +281,15 @@ var Application = function() { ...@@ -286,15 +281,15 @@ var Application = function() {
}; };
ko.utils.arrayForEach(self.selected(), function(pub) { ko.utils.arrayForEach(self.selected(), function (pub) {
var days = []; var days = [];
var options = []; var options = [];
ko.utils.arrayForEach(pub.optionIDs(), function(id) { ko.utils.arrayForEach(pub.optionIDs(), function (id) {
options.push({'OptionID': id}); options.push({'OptionID': id});
}); });
ko.utils.arrayForEach(pub.dates(), function(date) { ko.utils.arrayForEach(pub.dates(), function (date) {
days.push({'Date': moment(date).format('YYYY-MM-DDT00:00:00[Z]')}); days.push({'Date': moment(date).format('YYYY-MM-DDT00:00:00[Z]')});
}); });
...@@ -328,7 +323,7 @@ var Application = function() { ...@@ -328,7 +323,7 @@ var Application = function() {
iban: self.iban() iban: self.iban()
}; };
if(!Object.keys(self.quoteFile()).length){ if (!Object.keys(self.quoteFile()).length) {
return; return;
} }
...@@ -349,8 +344,8 @@ var Application = function() { ...@@ -349,8 +344,8 @@ var Application = function() {
processData: false, processData: false,
contentType: false, contentType: false,
data: formData, data: formData,
success: function(resp){ success: function (resp) {
if(resp.success){ if (resp.success) {
//redirect here to the user account //redirect here to the user account
window.location = '/contul-meu'; window.location = '/contul-meu';
} }
...@@ -360,20 +355,20 @@ var Application = function() { ...@@ -360,20 +355,20 @@ var Application = function() {
}; };
// end of my functions // end of my functions
self.buildSummary = function() { self.buildSummary = function () {
var obj = { var obj = {
text: self.text(), columns: [], text: self.text(), columns: [],
}; };
ko.utils.arrayForEach(self.selected(), function(pub) { ko.utils.arrayForEach(self.selected(), function (pub) {
var days = []; var days = [];
var options = []; var options = [];
ko.utils.arrayForEach(pub.optionIDs(), function(id) { ko.utils.arrayForEach(pub.optionIDs(), function (id) {
options.push({'OptionID': id}); options.push({'OptionID': id});
}); });
ko.utils.arrayForEach(pub.dates(), function(date) { ko.utils.arrayForEach(pub.dates(), function (date) {
days.push({'Date': moment(date).format('YYYY-MM-DDT00:00:00[Z]')}); days.push({'Date': moment(date).format('YYYY-MM-DDT00:00:00[Z]')});
}); });
...@@ -390,7 +385,7 @@ var Application = function() { ...@@ -390,7 +385,7 @@ var Application = function() {
return obj; return obj;
}; };
self.createDraft = function() { self.createDraft = function () {
var obj = self.buildSummary(); var obj = self.buildSummary();
var name = (self.company() != '') ? self.company() : var name = (self.company() != '') ? self.company() :
self.firstName() + ' ' + self.lastName(); self.firstName() + ' ' + self.lastName();
...@@ -411,8 +406,8 @@ var Application = function() { ...@@ -411,8 +406,8 @@ var Application = function() {
}; };
var payButton = $('.pay-ad'); var payButton = $('.pay-ad');
var doPayment = function(data) { var doPayment = function (data) {
$.each(data, function(k, v) { $.each(data, function (k, v) {
$('#payForm input[name=' + k + ']').attr('value', v); $('#payForm input[name=' + k + ']').attr('value', v);
}); });
...@@ -427,7 +422,7 @@ var Application = function() { ...@@ -427,7 +422,7 @@ var Application = function() {
dataType: 'json', dataType: 'json',
contentType: 'application/json;charset=utf-8', contentType: 'application/json;charset=utf-8',
data: JSON.stringify(obj), data: JSON.stringify(obj),
success: function(data) { success: function (data) {
var id = data.ad_id; var id = data.ad_id;
if (!id) { if (!id) {
payButton.removeAttr('disabled'); payButton.removeAttr('disabled');
...@@ -451,42 +446,42 @@ var Application = function() { ...@@ -451,42 +446,42 @@ var Application = function() {
data: formData, data: formData,
processData: false, processData: false,
contentType: false, contentType: false,
success: function() { success: function () {
doPayment(data); doPayment(data);
}, },
error: function(data) { error: function (data) {
payButton.removeAttr('disabled'); payButton.removeAttr('disabled');
} }
}); });
}, },
error: function(data) { error: function (data) {
payButton.removeAttr('disabled'); payButton.removeAttr('disabled');
} }
}); });
}; };
self.isPristine = ko.computed(function() { self.isPristine = ko.computed(function () {
return self.price().total !== '0' && self.contactValid(); return self.price().total !== '0' && self.contactValid();
}); });
self.doFinal = function() { self.doFinal = function () {
if(self.isPristine() && self.selected().length) { if (self.isPristine() && self.selected().length) {
self.finalStep(true); self.finalStep(true);
} }
}; };
self.selected = function() { self.selected = function () {
return ko.utils.arrayFilter(self.publications(), function(publication) { return ko.utils.arrayFilter(self.publications(), function (publication) {
return publication.selected(); return publication.selected();
}); });
}; };
self.addTooltip = function(els) { self.addTooltip = function (els) {
$('label[for="' + els[1].id + '"]').tooltip(); $('label[for="' + els[1].id + '"]').tooltip();
}; };
self.resetPrice = function() { self.resetPrice = function () {
ko.utils.arrayForEach(self.selected(), function(pub) { ko.utils.arrayForEach(self.selected(), function (pub) {
pub.price({'vat': '0', 'base': '0', 'total': '0'}); pub.price({'vat': '0', 'base': '0', 'total': '0'});
}); });
...@@ -494,14 +489,14 @@ var Application = function() { ...@@ -494,14 +489,14 @@ var Application = function() {
self.finalStep(false); self.finalStep(false);
}; };
self.getSummary = function() { self.getSummary = function () {
if(!self.text().length) { if (!self.text().length) {
self.words('0'); self.words('0');
self.resetPrice(); self.resetPrice();
return; return;
} }
if(!self.selected().length) { if (!self.selected().length) {
self.resetPrice(); self.resetPrice();
return; return;
} }
...@@ -518,13 +513,13 @@ var Application = function() { ...@@ -518,13 +513,13 @@ var Application = function() {
dataType: 'json', dataType: 'json',
contentType: 'application/json;charset=utf-8', contentType: 'application/json;charset=utf-8',
data: JSON.stringify(obj), data: JSON.stringify(obj),
success: function(data) { success: function (data) {
self.price(data.price); self.price(data.price);
self.words(data.words); self.words(data.words);
ko.utils.arrayForEach(data.columns, function(column) { ko.utils.arrayForEach(data.columns, function (column) {
ko.utils.arrayForEach(self.selected(), function(pub) { ko.utils.arrayForEach(self.selected(), function (pub) {
if(column.id === pub.id()) { if (column.id === pub.id()) {
pub.price(column.price); pub.price(column.price);
return; return;
} }
...@@ -537,29 +532,30 @@ var Application = function() { ...@@ -537,29 +532,30 @@ var Application = function() {
self.text.subscribe(self.getSummary); self.text.subscribe(self.getSummary);
}; };
Application.prototype = function() { Application.prototype = function () {
return { return {
getPublications: function() { getPublications: function () {
var self = this; var self = this;
$.get('/listing', function(data) { $.get('/listing', function (data) {
ko.mapping.fromJS(data, { ko.mapping.fromJS(data, {
create: function(options) { create: function (options) {
return new PublicationModel(options.data); return new PublicationModel(options.data);
}}, self.publications); }
}, self.publications);
// just testing for viata libera // just testing for viata libera
// var pub = self.publications()[3]; // var pub = self.publications()[3];
// self.publications.removeAll(); // self.publications.removeAll();
// self.publications.push(pub); // self.publications.push(pub);
if(self.publications().length == 1){ if (self.publications().length == 1) {
self.publications()[0].selected(true); self.publications()[0].selected(true);
} }
}); });
}, },
getUserProfile: function() { getUserProfile: function () {
var self = this; var self = this;
$.get('/users/profile', function(resp) { $.get('/users/profile', function (resp) {
var profile = resp.data; var profile = resp.data;
// date personale // date personale
...@@ -580,12 +576,12 @@ Application.prototype = function() { ...@@ -580,12 +576,12 @@ Application.prototype = function() {
self.invoicePerAd(profile.group.invoiceInterval); self.invoicePerAd(profile.group.invoiceInterval);
if(self.invoicePerAd() != 0){ if (self.invoicePerAd() != 0) {
$("#date_persoana input").prop("disabled", "disabled"); $("#date_persoana input").prop("disabled", "disabled");
self.contactValid(true); self.contactValid(true);
} }
if(constants.group[profile.group.type]){ if (constants.group[profile.group.type]) {
self.kinds(constants.group[profile.group.type].kinds); self.kinds(constants.group[profile.group.type].kinds);
$('select').material_select(); $('select').material_select();
} }
...@@ -594,19 +590,19 @@ Application.prototype = function() { ...@@ -594,19 +590,19 @@ Application.prototype = function() {
}; };
}(); }();
function gotostep(step){ function gotostep(step) {
$('#'+step).click(); $('#' + step).click();
} }
var app = new Application(); var app = new Application();
app.getPublications(); app.getPublications();
ko.bindingHandlers.visible = { ko.bindingHandlers.visible = {
init: function(element, valueAccessor) { init: function (element, valueAccessor) {
var value = valueAccessor(); var value = valueAccessor();
$(element).toggle(ko.unwrap(value)); $(element).toggle(ko.unwrap(value));
}, },
update: function(element, valueAccessor) { update: function (element, valueAccessor) {
var value = valueAccessor(); var value = valueAccessor();
ko.unwrap(value) ? $(element).slideDown('fast') : ko.unwrap(value) ? $(element).slideDown('fast') :
$(element).slideUp('fast'); $(element).slideUp('fast');
...@@ -615,10 +611,10 @@ ko.bindingHandlers.visible = { ...@@ -615,10 +611,10 @@ ko.bindingHandlers.visible = {
ko.applyBindings(app); ko.applyBindings(app);
$(document).ready(function(){ $(document).ready(function () {
var isLoggedIn = !!$("#loggedInUser").val(); var isLoggedIn = !!$("#loggedInUser").val();
if(isLoggedIn){ if (isLoggedIn) {
app.isLoggedIn(isLoggedIn); app.isLoggedIn(isLoggedIn);
app.getUserProfile(); app.getUserProfile();
} }
...@@ -636,7 +632,7 @@ $(document).ready(function(){ ...@@ -636,7 +632,7 @@ $(document).ready(function(){
$('.modal').modal(); $('.modal').modal();
$('#do-payment').on('click', function(e) { $('#do-payment').on('click', function (e) {
$('#date_persoana').submit(); $('#date_persoana').submit();
}); });
...@@ -680,10 +676,10 @@ $(document).ready(function(){ ...@@ -680,10 +676,10 @@ $(document).ready(function(){
folderUpload: 'Nu puteti incarca directoare.' folderUpload: 'Nu puteti incarca directoare.'
} }
}, },
onSelect: function(f){ onSelect: function (f) {
app.quoteFile(f); app.quoteFile(f);
}, },
onRemove: function(){ onRemove: function () {
app.quoteFile({}); app.quoteFile({});
} }
}); });
...@@ -734,7 +730,7 @@ $(document).ready(function(){ ...@@ -734,7 +730,7 @@ $(document).ready(function(){
$('.image-preview-finalize').empty().append(img); $('.image-preview-finalize').empty().append(img);
}); });
$('.btn-delete-image').click(function() { $('.btn-delete-image').click(function () {
var el = $('#image-upload'); var el = $('#image-upload');
el.prop('jFiler').reset(); el.prop('jFiler').reset();
$('#file-path-name').val(''); $('#file-path-name').val('');
...@@ -742,21 +738,21 @@ $(document).ready(function(){ ...@@ -742,21 +738,21 @@ $(document).ready(function(){
}); });
$.validate({ $.validate({
lang : 'ro', lang: 'ro',
form: '#date_persoana', form: '#date_persoana',
scrollToTopOnError : true, scrollToTopOnError: true,
modules : 'html5', modules: 'html5',
modules : 'sanitize', modules: 'sanitize',
modules : 'security', modules: 'security',
modules : 'sepa', modules: 'sepa',
onError : function($form) { onError: function ($form) {
return false; return false;
}, },
onSuccess : function($form) { onSuccess: function ($form) {
return false; return false;
}, },
onElementValidate : function(valid, $el, $form, errorMess) { onElementValidate: function (valid, $el, $form, errorMess) {
if(!app.invoicePerAd()){ if (!app.invoicePerAd()) {
app.contactValid(true); app.contactValid(true);
} else { } else {
app.contactValid(valid); app.contactValid(valid);
......
...@@ -26,7 +26,8 @@ class API ...@@ -26,7 +26,8 @@ class API
protected $smtp; protected $smtp;
function __construct(Container $c = null) { function __construct(Container $c = null)
{
global $settings; global $settings;
$api = $settings['settings']['api']; $api = $settings['settings']['api'];
...@@ -41,7 +42,7 @@ class API ...@@ -41,7 +42,7 @@ class API
$this->smtp = $settings["settings"]["smtp"]; $this->smtp = $settings["settings"]["smtp"];
$this->uploadDirectory = $settings['settings']['upload']['path']; $this->uploadDirectory = $settings['settings']['upload']['path'];
if($c){ if ($c) {
$this->db = $c->get('db'); $this->db = $c->get('db');
$this->query_factory = new QueryFactory('mysql'); $this->query_factory = new QueryFactory('mysql');
$this->session = $c->get('session'); $this->session = $c->get('session');
...@@ -50,8 +51,62 @@ class API ...@@ -50,8 +51,62 @@ class API
$this->cookieFileClient = "/tmp/cookieFileClient.txt"; $this->cookieFileClient = "/tmp/cookieFileClient.txt";
} }
function GetPublications()
{
$settings = $this->GetSettings()['data'];
$disabledDates = $settings['dates']['disabledDates'];
$disabledWeekDays = $settings['dates']['disabledWeekDays'];
$ret = $this::Request('GET',
'/publications?active=true&onwebsite=true&&order=position');
foreach ($ret['data']['list'] as $id => $val) {
$logo = $this->address . '/publications/' . $val['id'] . '/logo';
$ret['data']['list'][$id]['image'] = $logo;
$enabledDates = [];
$pubDisabledDates = $disabledDates;
if (!empty($val['enabledDates'])) {
foreach ($val['enabledDates'] as $enabledDate) {
$enabledDates[] = $enabledDate['date'];
}
}
$enabledWeekDays = [];
$pubDisabledWeekDays = $disabledWeekDays;
if (!empty($val['enabledWeekDays'])) {
foreach ($val['enabledWeekDays'] as $enabledWeekDay) {
$enabledWeekDays[] = $enabledWeekDay['day'];
}
}
$ret['data']['list'][$id]['disabledDates'] = array_values(
array_diff($pubDisabledDates, $enabledDates)
);
$ret['data']['list'][$id]['disabledWeekDays'] = array_values(
array_diff($pubDisabledWeekDays, $enabledWeekDays)
);
}
$ret['data'] = $this::preserve(
$ret['data']['list'], [
'id', 'name', 'image', 'description', 'topics', 'circulation',
'type', 'disabledDates', 'disabledWeekDays'
]
);
return $ret;
}
function GetSettings()
{
return $this::Request('GET', '/application/settings');
}
function Request($method, $path, $data = [], function Request($method, $path, $data = [],
$saveCookies = false, $upload = false) { $saveCookies = false, $upload = false)
{
$curl = curl_init(); $curl = curl_init();
...@@ -74,14 +129,14 @@ class API ...@@ -74,14 +129,14 @@ class API
$opts[CURLOPT_CAINFO] = $this->certificate; $opts[CURLOPT_CAINFO] = $this->certificate;
} }
if($saveCookies) { if ($saveCookies) {
$opts[CURLOPT_COOKIEJAR] = $this->cookieFile; $opts[CURLOPT_COOKIEJAR] = $this->cookieFile;
} else { } else {
$opts[CURLOPT_COOKIEFILE] = $this->cookieFile; $opts[CURLOPT_COOKIEFILE] = $this->cookieFile;
} }
if(strtoupper($method) !== 'GET') { if (strtoupper($method) !== 'GET') {
if($upload) { if ($upload) {
$opts[CURLOPT_POSTFIELDS] = $data; $opts[CURLOPT_POSTFIELDS] = $data;
$opts[CURLOPT_HTTPHEADER] = array( $opts[CURLOPT_HTTPHEADER] = array(
'Content-Type: multipart/form-data', 'Content-Type: multipart/form-data',
...@@ -105,7 +160,7 @@ class API ...@@ -105,7 +160,7 @@ class API
curl_close($curl); curl_close($curl);
if($path !== '/users/login' && $info['http_code'] == 401) { if ($path !== '/users/login' && $info['http_code'] == 401) {
$ret = $this::Login(); $ret = $this::Login();
if ($ret['info']['http_code'] == 200) { if ($ret['info']['http_code'] == 200) {
return $this->Request($method, $path, $data, $saveCookies); return $this->Request($method, $path, $data, $saveCookies);
...@@ -119,7 +174,14 @@ class API ...@@ -119,7 +174,14 @@ class API
return ['info' => $info, 'data' => json_decode($response, true)]; return ['info' => $info, 'data' => json_decode($response, true)];
} }
function preserve($arr, $keys, $add = array()) { function Login()
{
return $this::Request('POST', '/users/login',
['email' => $this->email, 'password' => $this->password], true);
}
function preserve($arr, $keys, $add = array())
{
foreach ($arr as $id => $v) { foreach ($arr as $id => $v) {
foreach ($v as $key => $value) { foreach ($v as $key => $value) {
if (!in_array($key, $keys)) { if (!in_array($key, $keys)) {
...@@ -133,71 +195,16 @@ class API ...@@ -133,71 +195,16 @@ class API
return $arr; return $arr;
} }
function Login() { function GetPublicationsExt($id)
return $this::Request('POST', '/users/login', {
['email' => $this->email, 'password' => $this->password], true);
}
function GetSettings() {
return $this::Request('GET', '/application/settings');
}
function GetPublications() {
$settings = $this->GetSettings()['data'];
$disabledDates = $settings['dates']['disabledDates'];
$disabledWeekDays = $settings['dates']['disabledWeekDays'];
$ret = $this::Request('GET',
'/publications?active=true&onwebsite=true&&order=position');
foreach($ret['data']['list'] as $id => $val) {
$logo = $this->address.'/publications/'.$val['id'].'/logo';
$ret['data']['list'][$id]['image'] = $logo;
$enabledDates = [];
$pubDisabledDates = $disabledDates;
if (!empty($val['enabledDates'])) {
foreach ($val['enabledDates'] as $enabledDate) {
$enabledDates[] = $enabledDate['date'];
}
}
$enabledWeekDays = [];
$pubDisabledWeekDays = $disabledWeekDays;
if (!empty($val['enabledWeekDays'])) {
foreach ($val['enabledWeekDays'] as $enabledWeekDay) {
$enabledWeekDays[] = $enabledWeekDay['day'];
}
}
$ret['data']['list'][$id]['disabledDates'] = array_values(
array_diff($pubDisabledDates, $enabledDates)
);
$ret['data']['list'][$id]['disabledWeekDays'] = array_values(
array_diff($pubDisabledWeekDays, $enabledWeekDays)
);
}
$ret['data'] = $this::preserve(
$ret['data']['list'], [
'id', 'name', 'image', 'description', 'topics', 'circulation',
'type', 'disabledDates', 'disabledWeekDays'
]
);
return $ret;
}
function GetPublicationsExt($id) {
$ret = $this::Request('GET', $ret = $this::Request('GET',
'/publications/'.$id.'/columns?active=true&order=name'); '/publications/' . $id . '/columns?active=true&order=name');
$ret['data'] = $this::preserve($ret['data']['list'], $ret['data'] = $this::preserve($ret['data']['list'],
['id','name','options']); ['id', 'name', 'options']);
foreach ($ret['data'] as $id => $col) { foreach ($ret['data'] as $id => $col) {
if(!is_array($ret['data'][$id]['options'])) { if (!is_array($ret['data'][$id]['options'])) {
continue; continue;
} }
...@@ -207,8 +214,8 @@ class API ...@@ -207,8 +214,8 @@ class API
); );
$options = []; $options = [];
foreach($ret['data'][$id]['options'] as $oid => $o) { foreach ($ret['data'][$id]['options'] as $oid => $o) {
if($o['active'] !== true) { if ($o['active'] !== true) {
continue; continue;
} }
...@@ -221,8 +228,9 @@ class API ...@@ -221,8 +228,9 @@ class API
return $ret; return $ret;
} }
function MarkPayment($id, $amount, $transaction) { function MarkPayment($id, $amount, $transaction)
$ad = $this::Request('GET', '/ads/'.$id); {
$ad = $this::Request('GET', '/ads/' . $id);
if (empty($ad['data'])) { if (empty($ad['data'])) {
return false; return false;
} }
...@@ -232,20 +240,20 @@ class API ...@@ -232,20 +240,20 @@ class API
$ad['invoiceValue']['total'] != $amount) { $ad['invoiceValue']['total'] != $amount) {
return false; return false;
} }
if(empty($transaction)) { if (empty($transaction)) {
return false; return false;
} }
if(!empty($ad['transaction'])) { if (!empty($ad['transaction'])) {
return true; return true;
} }
$ad['transaction'] = $transaction; $ad['transaction'] = $transaction;
$result = $this::Request('PUT', '/ads/'.$id, $ad); $result = $this::Request('PUT', '/ads/' . $id, $ad);
if (empty($result['data'])) { if (empty($result['data'])) {
return false; return false;
} }
$ad = $this::Request('GET', '/ads/'.$id); $ad = $this::Request('GET', '/ads/' . $id);
if (empty($ad['data']['transaction']) || if (empty($ad['data']['transaction']) ||
$ad['data']['transaction'] != $transaction) { $ad['data']['transaction'] != $transaction) {
return false; return false;
...@@ -254,117 +262,70 @@ class API ...@@ -254,117 +262,70 @@ class API
return true; return true;
} }
function GetAd($id) { function GetAd($id)
return $this::Request('GET', '/ads/'.$id); {
return $this::Request('GET', '/ads/' . $id);
} }
function CancelDraft($id) { function CancelDraft($id)
return $this::Request('POST', '/ads/'.$id.'/cancel', ''); {
return $this::Request('POST', '/ads/' . $id . '/cancel', '');
} }
function CreateDraft($data) { function CreateDraft($data)
{
$data['source'] = 2; $data['source'] = 2;
$data['hasImage'] = false; $data['hasImage'] = false;
$data['kind'] = 1; $data['kind'] = 1;
$data['type'] = 1; $data['type'] = 1;
if(is_string($data['contact'])){ if (is_string($data['contact'])) {
$data["contact"] = json_decode($data["contact"], true); $data["contact"] = json_decode($data["contact"], true);
} }
if(is_string($data['columns'])){ if (is_string($data['columns'])) {
$data["columns"] = json_decode($data["columns"], true); $data["columns"] = json_decode($data["columns"], true);
} }
if(isset($data["invoicePerAd"])){ if (isset($data["invoicePerAd"])) {
unset($data["invoicePerAd"]); unset($data["invoicePerAd"]);
} }
if(isset($data["selectedKind"])){ if (isset($data["selectedKind"])) {
unset($data["selectedKind"]); unset($data["selectedKind"]);
} }
return $this::Request('POST', '/ads', $data); return $this::Request('POST', '/ads', $data);
} }
function ClientCreateDraft($data) { function UploadImage($id, $data)
$data['source'] = 2; {
$data['hasImage'] = false; $this::Request('POST', '/ads/' . $id . '/images/display/upload',
$data['type'] = 1; $data, false, true);
if(is_string($data['contact'])){
$data["contact"] = json_decode($data["contact"], true);
}
if(is_string($data['columns'])){
$data["columns"] = json_decode($data["columns"], true);
}
if(isset($data["invoicePerAd"])){
unset($data["invoicePerAd"]);
}
if(isset($data["selectedKind"])){
$data["kind"] = (int)$data["selectedKind"];
unset($data["selectedKind"]);
}
if(!empty($data["groupID"])){
$data["groupID"] = (int)$data["groupID"];
$data["groupUserID"] = $data["groupID"];
}
$userCookie = $this::GetUserCookie($this->session->user_id)['cookie'];
$profile = $this::FetchUserProfile();
$data["group_id"] = $profile["data"]["group"]['id'];
$response = $this::RequestClient('POST', '/ads', $data, false, false, $userCookie);
return $response;
}
function GetPrice($data) {
$data['source'] = 2;
$data['hasImage'] = false;
$data['type'] = 1;
if(empty($data["selectedKind"])){
$data['kind'] = 1;
}else{
$data['kind'] = (int)$data["selectedKind"];
}
if(!empty($data["groupID"])){
$data["groupID"] = (int)$data["groupID"];
}
$ret = $this::Request('POST', '/ads/summary', $data);
$nw = array('columns' => array()); return $this::Request('POST', '/ads/' . $id . '/images/print/upload',
foreach($ret['data']['columns'] as $column) { $data, false, true);
array_push($nw['columns'], array(
'id' => $column['publicationID'],
'price' => $column['invoiceValue'],
));
} }
$nw['words'] = $ret['data']['words']; function AuthenticateUser($params = [])
$nw['price'] = $ret['data']['invoiceValue']; {
if (!empty($params)) {
$ret['data'] = $nw; $ret = $this::LoginUser($params);
return $ret; return $ret;
} }
function UploadImage($id, $data) { return [];
$this::Request('POST', '/ads/'.$id.'/images/display/upload', }
$data, false, true);
return $this::Request('POST', '/ads/'.$id.'/images/print/upload', function LoginUser($credentials)
$data, false, true); {
return $this::RequestClient('POST', '/users/login',
['email' => $credentials['email'], 'password' => $credentials['password']], false, true);
} }
function RequestClient($method, $path, $data = [], function RequestClient($method, $path, $data = [],
$upload = false, $withHeaders = false, $cookie = '') { $upload = false, $withHeaders = false, $cookie = '')
{
$curl = curl_init(); $curl = curl_init();
...@@ -379,9 +340,11 @@ class API ...@@ -379,9 +340,11 @@ class API
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_NONE, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_NONE,
); );
if($withHeaders){ if ($withHeaders) {
$opts[CURLOPT_HEADER] = 1;} $opts[CURLOPT_HEADER] = 1;
{} }
{
}
if (empty($this->certificate)) { if (empty($this->certificate)) {
$opts[CURLOPT_SSL_VERIFYPEER] = false; $opts[CURLOPT_SSL_VERIFYPEER] = false;
...@@ -392,8 +355,8 @@ class API ...@@ -392,8 +355,8 @@ class API
} }
if(strtoupper($method) !== 'GET') { if (strtoupper($method) !== 'GET') {
if($upload) { if ($upload) {
$opts[CURLOPT_POSTFIELDS] = $data; $opts[CURLOPT_POSTFIELDS] = $data;
$opts[CURLOPT_HTTPHEADER] = array( $opts[CURLOPT_HTTPHEADER] = array(
'Content-Type: multipart/form-data', 'Content-Type: multipart/form-data',
...@@ -408,7 +371,7 @@ class API ...@@ -408,7 +371,7 @@ class API
} }
} }
if(strlen($cookie)){ if (strlen($cookie)) {
$opts[CURLOPT_HTTPHEADER][] = "Cookie: rl=$cookie;"; $opts[CURLOPT_HTTPHEADER][] = "Cookie: rl=$cookie;";
} }
...@@ -419,11 +382,11 @@ class API ...@@ -419,11 +382,11 @@ class API
$err = curl_error($curl); $err = curl_error($curl);
$info = curl_getinfo($curl); $info = curl_getinfo($curl);
if($path == '/users/login'){ if ($path == '/users/login') {
preg_match('/Set-Cookie:\s*rl=([^;]+);/i', $response, $m); preg_match('/Set-Cookie:\s*rl=([^;]+);/i', $response, $m);
if(count($m)){ if (count($m)) {
$cookies = $m[1]; $cookies = $m[1];
if(strlen($cookies)){ if (strlen($cookies)) {
$newR = explode("\n\r\n", $response); $newR = explode("\n\r\n", $response);
$user = json_decode($newR[1]); $user = json_decode($newR[1]);
...@@ -438,7 +401,7 @@ class API ...@@ -438,7 +401,7 @@ class API
$result = $this->db->fetchOne($select->getStatement(), $select->getBindValues()); $result = $this->db->fetchOne($select->getStatement(), $select->getBindValues());
if(!$result){ if (!$result) {
$insert = $this->query_factory->newInsert(); $insert = $this->query_factory->newInsert();
$insert->into('cookies')->cols([ $insert->into('cookies')->cols([
'cookie' => $cookies, 'cookie' => $cookies,
...@@ -464,7 +427,7 @@ class API ...@@ -464,7 +427,7 @@ class API
$exists = $this->session->exists('user_id'); $exists = $this->session->exists('user_id');
if(!$exists){ if (!$exists) {
$this->session->set('user_id', $user->id); $this->session->set('user_id', $user->id);
} }
...@@ -479,47 +442,11 @@ class API ...@@ -479,47 +442,11 @@ class API
return ['info' => $info, 'data' => json_decode($response, true)]; return ['info' => $info, 'data' => json_decode($response, true)];
} }
function LoginUser($credentials) { function AddQuote($params, $file)
return $this::RequestClient('POST', '/users/login', {
['email' => $credentials['email'], 'password' => $credentials['password']], false, true); if (count($params) && !empty($file) && $this->session->exists('user_id')) {
}
function AuthenticateUser($params = []){
if(!empty($params)){
$ret = $this::LoginUser($params);
return $ret;
}
return [];
}
function GetUserCookie($userId){
$select = $this->query_factory->newSelect();
$select->from('cookies')->cols([
'cookie'
])
->where("user_id = :user_id")
->bindValues([
'user_id' => $userId
]);
return $this->db->fetchOne($select->getStatement(), $select->getBindValues());
}
function FetchUserProfile() {
if ($this->session->exists('user_id')){
$userCookie = $this::GetUserCookie($this->session->user_id)['cookie'];
$rsp = $this::RequestClient('GET','/users/profile',[], false, false, $userCookie);
return $rsp;
}
return false;
}
function AddQuote($params, $file) {
if(count($params) && !empty($file) && $this->session->exists('user_id')){
if( $file->getError() === UPLOAD_ERR_OK ){ if ($file->getError() === UPLOAD_ERR_OK) {
$filename = $this->moveUploadedFile($this->uploadDirectory, $file); $filename = $this->moveUploadedFile($this->uploadDirectory, $file);
} }
...@@ -527,7 +454,7 @@ class API ...@@ -527,7 +454,7 @@ class API
$insert->into("quotes") $insert->into("quotes")
->cols([ ->cols([
"user_id" => $this->session->user_id, "user_id" => $this->session->user_id,
"created_at" => date("Y-m-d H:i:s") , "created_at" => date("Y-m-d H:i:s"),
"status" => 1, "status" => 1,
"price" => NULL, "price" => NULL,
"details" => json_encode($params), "details" => json_encode($params),
...@@ -540,7 +467,7 @@ class API ...@@ -540,7 +467,7 @@ class API
$contact = json_decode($params["contact"], true); $contact = json_decode($params["contact"], true);
// TODO de pus email-ul clientului aici // TODO de pus email-ul clientului aici
$this::SendMail($this->admin["email"], $contact['email'], "Cotatie adaugata", "O noua cotatie a fost adaugata" ); $this::SendMail($this->admin["email"], $contact['email'], "Cotatie adaugata", "O noua cotatie a fost adaugata");
return true; return true;
...@@ -549,22 +476,59 @@ class API ...@@ -549,22 +476,59 @@ class API
return false; return false;
} }
function GetUserQuotes($params = []){ function moveUploadedFile($directory, UploadedFile $uploadedFile)
if($this->session->exists("user_id")){ {
$basename = bin2hex(openssl_random_pseudo_bytes(8));
$filename = sprintf('%s', $basename . '_' . $uploadedFile->getClientFilename());
$uploadedFile->moveTo($directory . DIRECTORY_SEPARATOR . $filename);
return $filename;
}
function SendMail($from, $to, $subject, $body, $altBody = '')
{
$mail = new PHPMailer(true);
try {
//Server settings
$mail->isSMTP(); // Set mailer to use SMTP
$mail->Host = $this->smtp["host"]; // Specify main and backup SMTP servers
$mail->SMTPAuth = true; // Enable SMTP authentication
$mail->Username = $this->smtp["username"]; // SMTP username
$mail->Password = $this->smtp["password"]; // SMTP password
$mail->SMTPSecure = $this->smtp["secure"]; // Enable TLS encryption, `ssl` also accepted
$mail->Port = $this->smtp["port"]; // TCP port to connect to
//Recipients
$mail->setFrom($from);
$mail->addAddress($to); // Add a recipient
//Content
$mail->isHTML(true); // Set email format to HTML
$mail->Subject = $subject;
$mail->Body = $body;
$mail->AltBody = $altBody;
$mail->send();
} catch (PException $e) {
echo 'Message could not be sent. Mailer Error: ', $mail->ErrorInfo;
}
}
function GetUserQuotes($params = [])
{
if ($this->session->exists("user_id")) {
$select = $this->query_factory->newSelect(); $select = $this->query_factory->newSelect();
$select->from('quotes')->cols(["*"])->where('user_id = :user_id')->orderBy(['status', 'created_at desc']) $select->from('quotes')->cols(["*"])->where('user_id = :user_id')->orderBy(['status', 'created_at desc'])
->bindValues([ ->bindValues([
"user_id" => $this->session->user_id "user_id" => $this->session->user_id
]); ]);
$limit = isset($params['limit']) ? $params['limit']:''; $limit = isset($params['limit']) ? $params['limit'] : '';
$offset = isset($params['offset']) ? $params['offset']:0; $offset = isset($params['offset']) ? $params['offset'] : 0;
if(!empty($offset) && is_numeric($offset)){ if (!empty($offset) && is_numeric($offset)) {
$select->offset($offset); $select->offset($offset);
} }
if(!empty($limit) && is_numeric($limit)){ if (!empty($limit) && is_numeric($limit)) {
$select->limit($limit); $select->limit($limit);
} }
...@@ -583,21 +547,22 @@ class API ...@@ -583,21 +547,22 @@ class API
return false; return false;
} }
function GetAdminQuotes($params = []){ function GetAdminQuotes($params = [])
if($this->session->exists('user_id')){ {
if ($this->session->exists('user_id')) {
$isAdmin = $this::CheckAdmin(); $isAdmin = $this::CheckAdmin();
if($isAdmin){ if ($isAdmin) {
$select = $this->query_factory->newSelect(); $select = $this->query_factory->newSelect();
$select->from('quotes')->cols(["*"])->orderBy(['status', 'created_at desc']); $select->from('quotes')->cols(["*"])->orderBy(['status', 'created_at desc']);
$limit = isset($params['limit']) ? $params['limit']:''; $limit = isset($params['limit']) ? $params['limit'] : '';
$offset = isset($params['offset']) ? $params['offset']:0; $offset = isset($params['offset']) ? $params['offset'] : 0;
if(!empty($offset) && is_numeric($offset)){ if (!empty($offset) && is_numeric($offset)) {
$select->offset($offset); $select->offset($offset);
} }
if(!empty($limit) && is_numeric($limit)){ if (!empty($limit) && is_numeric($limit)) {
$select->limit($limit); $select->limit($limit);
} }
...@@ -615,17 +580,22 @@ class API ...@@ -615,17 +580,22 @@ class API
} }
} }
function moveUploadedFile($directory, UploadedFile $uploadedFile) function CheckAdmin()
{ {
$basename = bin2hex(openssl_random_pseudo_bytes(8)); if ($this->session->exists('user_id')) {
$filename = sprintf('%s', $basename . '_' . $uploadedFile->getClientFilename()); $userProfile = $this::Request('GET', '/users/' . $this->session->user_id);
$uploadedFile->moveTo($directory . DIRECTORY_SEPARATOR . $filename); if ($userProfile['info']['http_code'] == 200) {
return $userProfile['data']['admin'];
}
return $filename; return false;
}
return false;
} }
function GetQuote($quoteId){ function GetQuote($quoteId)
if($quoteId && $this->session->exists('user_id')){ {
if ($quoteId && $this->session->exists('user_id')) {
$params = [ $params = [
"id" => (int)$quoteId, "id" => (int)$quoteId,
...@@ -636,7 +606,7 @@ class API ...@@ -636,7 +606,7 @@ class API
$select->from('quotes')->cols(["*"]) $select->from('quotes')->cols(["*"])
->where('id = :id'); ->where('id = :id');
if(!$this::CheckAdmin()){ if (!$this::CheckAdmin()) {
$params["user_id"] = $this->session->user_id; $params["user_id"] = $this->session->user_id;
$select->where('user_id = :user_id'); $select->where('user_id = :user_id');
} }
...@@ -645,7 +615,7 @@ class API ...@@ -645,7 +615,7 @@ class API
$quote = $this->db->fetchOne($select->getStatement(), $select->getBindValues()); $quote = $this->db->fetchOne($select->getStatement(), $select->getBindValues());
if($quote){ if ($quote) {
return $quote; return $quote;
} }
...@@ -655,24 +625,25 @@ class API ...@@ -655,24 +625,25 @@ class API
return false; return false;
} }
function UpdateQuote($params = []){ function UpdateQuote($params = [])
if(!empty($params) && isset($params['id'])){ {
if (!empty($params) && isset($params['id'])) {
$isAdmin = $this::CheckAdmin(); $isAdmin = $this::CheckAdmin();
$cols = ["status"]; $cols = ["status"];
if(isset($params["price"]) || !empty($params['adText'])){ if (isset($params["price"]) || !empty($params['adText'])) {
if($isAdmin){ if ($isAdmin) {
$cols[] = "price"; $cols[] = "price";
}else{ } else {
unset($params["price"]); unset($params["price"]);
} }
} }
if(!in_array($params["status"], [2,3,7]) && !empty($params["fromUser"]) && $params["fromUser"]){ if (!in_array($params["status"], [2, 3, 7]) && !empty($params["fromUser"]) && $params["fromUser"]) {
return false; return false;
} }
if(isset($params["fromUser"])){ if (isset($params["fromUser"])) {
unset($params["fromUser"]); unset($params["fromUser"]);
} }
...@@ -688,7 +659,7 @@ class API ...@@ -688,7 +659,7 @@ class API
$quoteDetails = json_decode($quote["details"], true); $quoteDetails = json_decode($quote["details"], true);
if(!empty($params["adText"])){ if (!empty($params["adText"])) {
$quoteDetails["text"] = $params["adText"]; $quoteDetails["text"] = $params["adText"];
$quoteDetails["columns"] = json_decode($quoteDetails["columns"]); $quoteDetails["columns"] = json_decode($quoteDetails["columns"]);
$quoteDetails["contact"] = json_decode($quoteDetails["contact"], true); $quoteDetails["contact"] = json_decode($quoteDetails["contact"], true);
...@@ -698,7 +669,7 @@ class API ...@@ -698,7 +669,7 @@ class API
$params['details'] = json_encode($quoteDetails); $params['details'] = json_encode($quoteDetails);
$cols[] = 'details'; $cols[] = 'details';
} }
if($params["status"] == 3){ if ($params["status"] == 3) {
// $quoteDetails["group_id"] = 8; // $quoteDetails["group_id"] = 8;
$data = $this::ClientCreateDraft($quoteDetails); $data = $this::ClientCreateDraft($quoteDetails);
...@@ -712,7 +683,7 @@ class API ...@@ -712,7 +683,7 @@ class API
$params['details'] = json_encode($quoteDetails); $params['details'] = json_encode($quoteDetails);
} }
if(!empty($quoteDetails["invoicePerAd"]) && $quoteDetails["invoicePerAd"] != 0 && $params["status"] == 3){ if (!empty($quoteDetails["invoicePerAd"]) && $quoteDetails["invoicePerAd"] != 0 && $params["status"] == 3) {
$params["status"] = 6; $params["status"] = 6;
} }
...@@ -720,14 +691,14 @@ class API ...@@ -720,14 +691,14 @@ class API
$update->table('quotes') $update->table('quotes')
->cols($cols); ->cols($cols);
if(!$isAdmin && empty($params["payment"])){ if (!$isAdmin && empty($params["payment"])) {
$update->where('user_id = :user_id'); $update->where('user_id = :user_id');
$params["user_id"] = $this->session->user_id; $params["user_id"] = $this->session->user_id;
} }
$isPayment = !empty($params["payment"]); $isPayment = !empty($params["payment"]);
if($isPayment){ if ($isPayment) {
unset($params["payment"]); unset($params["payment"]);
} }
...@@ -738,20 +709,20 @@ class API ...@@ -738,20 +709,20 @@ class API
$stmt = $this->db->prepare($update->getStatement()); $stmt = $this->db->prepare($update->getStatement());
$stmt->execute($update->getBindValues()); $stmt->execute($update->getBindValues());
if($params["status"] == 2 && $isAdmin){ if ($params["status"] == 2 && $isAdmin) {
$this::SendMail($this->admin["email"], $quoteDetails["contact"]["email"], "Cotatia calculata", "Cotatia a fost calculata la pretul de: " . $params["price"] ); $this::SendMail($this->admin["email"], $quoteDetails["contact"]["email"], "Cotatia calculata", "Cotatia a fost calculata la pretul de: " . $params["price"]);
} }
if(($params["status"] == 3 || $params["status"] == 6) && !$isAdmin){ if (($params["status"] == 3 || $params["status"] == 6) && !$isAdmin) {
$this::SendMail( $quoteDetails["contact"]["email"], $this->admin["email"],"Cotatia Acceptata", "Cotatia a fost acceptata"); $this::SendMail($quoteDetails["contact"]["email"], $this->admin["email"], "Cotatia Acceptata", "Cotatia a fost acceptata");
} }
if($params["status"] == 7 && !$isAdmin){ if ($params["status"] == 7 && !$isAdmin) {
$this::SendMail( $quoteDetails["contact"]["email"], $this->admin["email"],"Cotatia Refuzata", "Cotatia a fost refuzata"); $this::SendMail($quoteDetails["contact"]["email"], $this->admin["email"], "Cotatia Refuzata", "Cotatia a fost refuzata");
} }
if($params["status"] == 4 && $isPayment){ if ($params["status"] == 4 && $isPayment) {
$this::SendMail( $quoteDetails["contact"]["email"], $this->admin["email"],"Cotatia Platita ", "Cotatia a fost platita"); $this::SendMail($quoteDetails["contact"]["email"], $this->admin["email"], "Cotatia Platita ", "Cotatia a fost platita");
} }
return true; return true;
...@@ -760,9 +731,105 @@ class API ...@@ -760,9 +731,105 @@ class API
return false; return false;
} }
function DeleteQuote($id){ function GetPrice($data)
{
$data['source'] = 2;
$data['hasImage'] = false;
$data['type'] = 1;
if (empty($data["selectedKind"])) {
$data['kind'] = 1;
} else {
$data['kind'] = (int)$data["selectedKind"];
}
if (!empty($data["groupID"])) {
$data["groupID"] = (int)$data["groupID"];
}
$ret = $this::Request('POST', '/ads/summary', $data);
$nw = array('columns' => array());
foreach ($ret['data']['columns'] as $column) {
array_push($nw['columns'], array(
'id' => $column['publicationID'],
'price' => $column['invoiceValue'],
));
}
$nw['words'] = $ret['data']['words'];
$nw['price'] = $ret['data']['invoiceValue'];
$ret['data'] = $nw;
return $ret;
}
function ClientCreateDraft($data)
{
$data['source'] = 2;
$data['hasImage'] = false;
$data['type'] = 1;
if (is_string($data['contact'])) {
$data["contact"] = json_decode($data["contact"], true);
}
if (is_string($data['columns'])) {
$data["columns"] = json_decode($data["columns"], true);
}
if (isset($data["invoicePerAd"])) {
unset($data["invoicePerAd"]);
}
if (isset($data["selectedKind"])) {
$data["kind"] = (int)$data["selectedKind"];
unset($data["selectedKind"]);
}
if (!empty($data["groupID"])) {
$data["groupID"] = (int)$data["groupID"];
$data["groupUserID"] = $data["groupID"];
}
$userCookie = $this::GetUserCookie($this->session->user_id)['cookie'];
$profile = $this::FetchUserProfile();
$data["group_id"] = $profile["data"]["group"]['id'];
$response = $this::RequestClient('POST', '/ads', $data, false, false, $userCookie);
return $response;
}
function GetUserCookie($userId)
{
$select = $this->query_factory->newSelect();
$select->from('cookies')->cols([
'cookie'
])
->where("user_id = :user_id")
->bindValues([
'user_id' => $userId
]);
return $this->db->fetchOne($select->getStatement(), $select->getBindValues());
}
function FetchUserProfile()
{
if ($this->session->exists('user_id')) {
$userCookie = $this::GetUserCookie($this->session->user_id)['cookie'];
$rsp = $this::RequestClient('GET', '/users/profile', [], false, false, $userCookie);
return $rsp;
}
return false;
}
function DeleteQuote($id)
{
if($this->session->exists('user_id')){ if ($this->session->exists('user_id')) {
$delete = $this->query_factory->newDelete(); $delete = $this->query_factory->newDelete();
$delete->from('quotes')->where('user_id = :user_id') $delete->from('quotes')->where('user_id = :user_id')
->where('id = :id') ->where('id = :id')
...@@ -781,20 +848,8 @@ class API ...@@ -781,20 +848,8 @@ class API
return false; return false;
} }
function QuoteStatuses()
function CheckAdmin(){ {
if($this->session->exists('user_id')){
$userProfile = $this::Request('GET', '/users/' . $this->session->user_id);
if($userProfile['info']['http_code'] == 200){
return $userProfile['data']['admin'];
}
return false;
}
return false;
}
function QuoteStatuses(){
return [ return [
1 => 'Cotatie noua', 1 => 'Cotatie noua',
2 => 'Calculata', 2 => 'Calculata',
...@@ -807,38 +862,14 @@ class API ...@@ -807,38 +862,14 @@ class API
]; ];
} }
function AdTypes(){ function AdTypes()
{
return [ return [
1 => 'Simplu', 1 => 'Simplu',
2 => 'LTD', 2 => 'LTD',
3 => 'UNEJ' 3 => 'UNEJ'
]; ];
} }
function SendMail($from, $to, $subject, $body , $altBody = ''){
$mail = new PHPMailer(true);
try{
//Server settings
$mail->isSMTP(); // Set mailer to use SMTP
$mail->Host = $this->smtp["host"]; // Specify main and backup SMTP servers
$mail->SMTPAuth = true; // Enable SMTP authentication
$mail->Username = $this->smtp["username"]; // SMTP username
$mail->Password = $this->smtp["password"]; // SMTP password
$mail->SMTPSecure = $this->smtp["secure"]; // Enable TLS encryption, `ssl` also accepted
$mail->Port = $this->smtp["port"]; // TCP port to connect to
//Recipients
$mail->setFrom($from);
$mail->addAddress($to); // Add a recipient
//Content
$mail->isHTML(true); // Set email format to HTML
$mail->Subject = $subject;
$mail->Body = $body;
$mail->AltBody = $altBody;
$mail->send();
} catch (PException $e) {
echo 'Message could not be sent. Mailer Error: ', $mail->ErrorInfo;
}
}
} }
?> ?>
<?php <?php
$app->get('/', function ($request, $response, $args) { $app->get('/', function ($request, $response, $args) {
if($this->session->exists('user_id')){ if ($this->session->exists('user_id')) {
$args['loggedIn'] = true; $args['loggedIn'] = true;
$api = new Api($this); $api = new Api($this);
$args['admin'] = $api->CheckAdmin(); $args['admin'] = $api->CheckAdmin();
$args['jenuPublication'] = $this->jenuPublication; $args['jenuPublication'] = $this->jenuPublication;
}
return $this->renderer->render($response, 'index.phtml', $args); return $this->renderer->render($response, 'index.phtml', $args);
}
return $response->withRedirect($this->router->pathFor('autentificare'), 303);
})->setName('home'); })->setName('home');
$app->get('/contul-meu', function($request, $response, $args){ $app->get('/contul-meu', function ($request, $response, $args) {
if($this->session->exists('user_id')){ if ($this->session->exists('user_id')) {
$api = new Api($this); $api = new Api($this);
$params = $request->getQueryParams(); $params = $request->getQueryParams();
$quotes = $api->GetUserQuotes($params); $quotes = $api->GetUserQuotes($params);
...@@ -28,11 +30,11 @@ $app->get('/contul-meu', function($request, $response, $args){ ...@@ -28,11 +30,11 @@ $app->get('/contul-meu', function($request, $response, $args){
return $response->withRedirect($this->router->pathFor('home'), 303); return $response->withRedirect($this->router->pathFor('home'), 303);
})->setName('profile'); })->setName('profile');
$app->get('/admin/cotatii', function($request, $response, $args){ $app->get('/admin/cotatii', function ($request, $response, $args) {
if($this->session->exists('user_id')){ if ($this->session->exists('user_id')) {
$api = new Api($this); $api = new Api($this);
$isAdmin = $api->CheckAdmin(); $isAdmin = $api->CheckAdmin();
if($isAdmin){ if ($isAdmin) {
$params = $request->getQueryParams(); $params = $request->getQueryParams();
$quotes = $api->GetAdminQuotes($params); $quotes = $api->GetAdminQuotes($params);
$args["quotes"] = $quotes["quotes"]; $args["quotes"] = $quotes["quotes"];
...@@ -51,8 +53,8 @@ $app->get('/admin/cotatii', function($request, $response, $args){ ...@@ -51,8 +53,8 @@ $app->get('/admin/cotatii', function($request, $response, $args){
return $response->withRedirect($this->router->pathFor('home'), 303); return $response->withRedirect($this->router->pathFor('home'), 303);
})->setName('profile'); })->setName('profile');
$app->post('/quote/{id}/update', function($request, $response, $args){ $app->post('/quote/{id}/update', function ($request, $response, $args) {
if($this->session->exists('user_id')){ if ($this->session->exists('user_id')) {
$api = new Api($this); $api = new Api($this);
$params = $request->getParsedBody(); $params = $request->getParsedBody();
$fields = [ $fields = [
...@@ -60,15 +62,15 @@ $app->post('/quote/{id}/update', function($request, $response, $args){ ...@@ -60,15 +62,15 @@ $app->post('/quote/{id}/update', function($request, $response, $args){
"status" => 2 "status" => 2
]; ];
if(!empty($params["price"])){ if (!empty($params["price"])) {
$fields["price"] = $params["price"]; $fields["price"] = $params["price"];
} }
if(!empty($params["status"])){ if (!empty($params["status"])) {
$fields["status"] = $params["status"]; $fields["status"] = $params["status"];
} }
if(!empty($params["adText"])){ if (!empty($params["adText"])) {
$fields["adText"] = $params["adText"]; $fields["adText"] = $params["adText"];
} }
...@@ -76,7 +78,7 @@ $app->post('/quote/{id}/update', function($request, $response, $args){ ...@@ -76,7 +78,7 @@ $app->post('/quote/{id}/update', function($request, $response, $args){
$updated = $api->UpdateQuote($fields); $updated = $api->UpdateQuote($fields);
if($updated){ if ($updated) {
return $response->withJson(['success' => 'Updated']); return $response->withJson(['success' => 'Updated']);
} }
...@@ -86,15 +88,15 @@ $app->post('/quote/{id}/update', function($request, $response, $args){ ...@@ -86,15 +88,15 @@ $app->post('/quote/{id}/update', function($request, $response, $args){
return $response->withJson(['error' => 'Unauthenticated']); return $response->withJson(['error' => 'Unauthenticated']);
}); });
$app->get('/uploads/{id}', function($request, $response, $args) { $app->get('/uploads/{id}', function ($request, $response, $args) {
if($this->session->exists('user_id')){ if ($this->session->exists('user_id')) {
$api = new Api($this); $api = new Api($this);
$quote = $api->GetQuote($request->getAttribute('id')); $quote = $api->GetQuote($request->getAttribute('id'));
if($quote){ if ($quote) {
$file = __DIR__ . '/../uploads/' . $quote['file']; $file = __DIR__ . '/../uploads/' . $quote['file'];
$fh = fopen($file, 'rb'); $fh = fopen($file, 'rb');
if($fh){ if ($fh) {
$stream = new \Slim\Http\Stream($fh); // create a stream instance for the response body $stream = new \Slim\Http\Stream($fh); // create a stream instance for the response body
return $response->withHeader('Content-Type', 'application/force-download') return $response->withHeader('Content-Type', 'application/force-download')
...@@ -118,13 +120,13 @@ $app->get('/uploads/{id}', function($request, $response, $args) { ...@@ -118,13 +120,13 @@ $app->get('/uploads/{id}', function($request, $response, $args) {
return $response->withRedirect($this->router->pathFor('home'), 303); return $response->withRedirect($this->router->pathFor('home'), 303);
}); });
$app->delete('/quotation/{id}', function($request, $response, $args) { $app->delete('/quotation/{id}', function ($request, $response, $args) {
if($this->session->exists('user_id')){ if ($this->session->exists('user_id')) {
$api = new Api($this); $api = new Api($this);
$quoteDeleted = $api->DeleteQuote($request->getAttribute('id')); $quoteDeleted = $api->DeleteQuote($request->getAttribute('id'));
if($quoteDeleted){ if ($quoteDeleted) {
return $response->withJson(['success' => true]); return $response->withJson(['success' => true]);
} }
...@@ -134,8 +136,8 @@ $app->delete('/quotation/{id}', function($request, $response, $args) { ...@@ -134,8 +136,8 @@ $app->delete('/quotation/{id}', function($request, $response, $args) {
return $response->withJson(['error' => 'not logged in']); return $response->withJson(['error' => 'not logged in']);
}); });
$app->post('/quotation', function($request, $response, $args){ $app->post('/quotation', function ($request, $response, $args) {
if($this->session->exists('user_id')){ if ($this->session->exists('user_id')) {
$params = $request->getParsedBody(); $params = $request->getParsedBody();
$files = $request->getUploadedFiles(); $files = $request->getUploadedFiles();
...@@ -154,8 +156,8 @@ $app->post('/quotation', function($request, $response, $args){ ...@@ -154,8 +156,8 @@ $app->post('/quotation', function($request, $response, $args){
return $response->withJson(['error' => 'not logged in']); return $response->withJson(['error' => 'not logged in']);
}); });
$app->get('/logout', function($request, $response, $args){ $app->get('/logout', function ($request, $response, $args) {
if($this->session->exists("user_id")){ if ($this->session->exists("user_id")) {
$this->session->delete('user_id'); $this->session->delete('user_id');
return $response->withRedirect($this->router->pathFor('autentificare'), 303); return $response->withRedirect($this->router->pathFor('autentificare'), 303);
} }
...@@ -163,8 +165,8 @@ $app->get('/logout', function($request, $response, $args){ ...@@ -163,8 +165,8 @@ $app->get('/logout', function($request, $response, $args){
return $response->withRedirect($this->router->pathFor('home'), 303); return $response->withRedirect($this->router->pathFor('home'), 303);
}); });
$app->get('/users/profile', function($request, $response, $args) { $app->get('/users/profile', function ($request, $response, $args) {
if ($this->session->exists('user_id')){ if ($this->session->exists('user_id')) {
$api = new Api($this); $api = new Api($this);
$profile = $api->FetchUserProfile(); $profile = $api->FetchUserProfile();
...@@ -174,8 +176,8 @@ $app->get('/users/profile', function($request, $response, $args) { ...@@ -174,8 +176,8 @@ $app->get('/users/profile', function($request, $response, $args) {
return $response->withJson(['error' => 'not logged in']); return $response->withJson(['error' => 'not logged in']);
}); });
$app->get('/autentificare', function($request, $response, $args){ $app->get('/autentificare', function ($request, $response, $args) {
if(!$this->session->exists('user_id')){ if (!$this->session->exists('user_id')) {
$args["errors"] = $this->flash->getMessages(); $args["errors"] = $this->flash->getMessages();
return $this->renderer->render($response, 'autentificare.phtml', $args); return $this->renderer->render($response, 'autentificare.phtml', $args);
} }
...@@ -184,19 +186,19 @@ $app->get('/autentificare', function($request, $response, $args){ ...@@ -184,19 +186,19 @@ $app->get('/autentificare', function($request, $response, $args){
})->setName('autentificare'); })->setName('autentificare');
$app->post('/autentificare', function($request, $response, $args){ $app->post('/autentificare', function ($request, $response, $args) {
$api = new API($this); $api = new API($this);
if(empty($args)){ if (empty($args)) {
$args = array(); $args = array();
} }
$params = $request->getParsedBody(); $params = $request->getParsedBody();
if(!empty($params)){ if (!empty($params)) {
$res = $api->AuthenticateUser($params); $res = $api->AuthenticateUser($params);
if(!empty($res)){ if (!empty($res)) {
if($res['info']['http_code'] !== 200){ if ($res['info']['http_code'] !== 200) {
$this->flash->addMessage("error", "Credentiale invalide"); $this->flash->addMessage("error", "Credentiale invalide");
return $response->withRedirect($this->router->pathFor('autentificare'), 303); return $response->withRedirect($this->router->pathFor('autentificare'), 303);
} else { } else {
...@@ -206,7 +208,7 @@ $app->post('/autentificare', function($request, $response, $args){ ...@@ -206,7 +208,7 @@ $app->post('/autentificare', function($request, $response, $args){
} }
}); });
$app->post('/confirm-payment', function($request, $response, $args){ $app->post('/confirm-payment', function ($request, $response, $args) {
require_once 'Mobilpay/Payment/Request/Abstract.php'; require_once 'Mobilpay/Payment/Request/Abstract.php';
require_once 'Mobilpay/Payment/Request/Card.php'; require_once 'Mobilpay/Payment/Request/Card.php';
require_once 'Mobilpay/Payment/Request/Notify.php'; require_once 'Mobilpay/Payment/Request/Notify.php';
...@@ -215,10 +217,8 @@ $app->post('/confirm-payment', function($request, $response, $args){ ...@@ -215,10 +217,8 @@ $app->post('/confirm-payment', function($request, $response, $args){
$errorCode = 0; $errorCode = 0;
$errorType = Mobilpay_Payment_Request_Abstract::CONFIRM_ERROR_TYPE_NONE; $errorType = Mobilpay_Payment_Request_Abstract::CONFIRM_ERROR_TYPE_NONE;
$errorMessage = ''; $errorMessage = '';
if (strcasecmp($_SERVER['REQUEST_METHOD'], 'post') == 0) if (strcasecmp($_SERVER['REQUEST_METHOD'], 'post') == 0) {
{ if (isset($_POST['env_key']) && isset($_POST['data'])) {
if(isset($_POST['env_key']) && isset($_POST['data']))
{
#calea catre cheia privata #calea catre cheia privata
#cheia privata este generata de mobilpay, accesibil in Admin -> Conturi de comerciant -> Detalii -> Setari securitate #cheia privata este generata de mobilpay, accesibil in Admin -> Conturi de comerciant -> Detalii -> Setari securitate
$params = $request->getParsedBody(); $params = $request->getParsedBody();
...@@ -227,8 +227,7 @@ $app->post('/confirm-payment', function($request, $response, $args){ ...@@ -227,8 +227,7 @@ $app->post('/confirm-payment', function($request, $response, $args){
$paymentSettings = $settings['settings']['payments']; $paymentSettings = $settings['settings']['payments'];
$privateKeyFilePath = $paymentSettings["privateCertificate"]; $privateKeyFilePath = $paymentSettings["privateCertificate"];
try try {
{
$objPmReq = Mobilpay_Payment_Request_Abstract::factoryFromEncrypted($params['env_key'], $params['data'], $privateKeyFilePath); $objPmReq = Mobilpay_Payment_Request_Abstract::factoryFromEncrypted($params['env_key'], $params['data'], $privateKeyFilePath);
#uncomment the line below in order to see the content of the request #uncomment the line below in order to see the content of the request
// print_r($objPmReq); // print_r($objPmReq);
...@@ -236,7 +235,7 @@ $app->post('/confirm-payment', function($request, $response, $args){ ...@@ -236,7 +235,7 @@ $app->post('/confirm-payment', function($request, $response, $args){
$api = new API($this); $api = new API($this);
$id = $objPmReq->params["ad"]; $id = $objPmReq->params["ad"];
if(!empty($objPmReq->params["quote"])){ if (!empty($objPmReq->params["quote"])) {
$quoteId = $objPmReq->params["quote"]; $quoteId = $objPmReq->params["quote"];
} }
$amount = $objPmReq->invoice->amount; $amount = $objPmReq->invoice->amount;
...@@ -244,15 +243,14 @@ $app->post('/confirm-payment', function($request, $response, $args){ ...@@ -244,15 +243,14 @@ $app->post('/confirm-payment', function($request, $response, $args){
// action = status only if the associated error code is zero // action = status only if the associated error code is zero
if ($objPmReq->objPmNotify->errorCode == 0) { if ($objPmReq->objPmNotify->errorCode == 0) {
switch($objPmReq->objPmNotify->action) switch ($objPmReq->objPmNotify->action) {
{
#orice action este insotit de un cod de eroare si de un mesaj de eroare. Acestea pot fi citite folosind $cod_eroare = $objPmReq->objPmNotify->errorCode; respectiv $mesaj_eroare = $objPmReq->objPmNotify->errorMessage; #orice action este insotit de un cod de eroare si de un mesaj de eroare. Acestea pot fi citite folosind $cod_eroare = $objPmReq->objPmNotify->errorCode; respectiv $mesaj_eroare = $objPmReq->objPmNotify->errorMessage;
#pentru a identifica ID-ul comenzii pentru care primim rezultatul platii folosim $id_comanda = $objPmReq->orderId; #pentru a identifica ID-ul comenzii pentru care primim rezultatul platii folosim $id_comanda = $objPmReq->orderId;
case 'confirmed': case 'confirmed':
#cand action este confirmed avem certitudinea ca banii au plecat din contul posesorului de card si facem update al starii comenzii si livrarea produsului #cand action este confirmed avem certitudinea ca banii au plecat din contul posesorului de card si facem update al starii comenzii si livrarea produsului
//update DB, SET status = "confirmed/captured" //update DB, SET status = "confirmed/captured"
$api->MarkPayment($id, $amount, $transaction); $api->MarkPayment($id, $amount, $transaction);
if(isset($quoteId)){ if (isset($quoteId)) {
$api->UpdateQuote([ $api->UpdateQuote([
"status" => 4, "status" => 4,
"id" => $quoteId, "id" => $quoteId,
...@@ -281,7 +279,7 @@ $app->post('/confirm-payment', function($request, $response, $args){ ...@@ -281,7 +279,7 @@ $app->post('/confirm-payment', function($request, $response, $args){
//update DB, SET status = "canceled" //update DB, SET status = "canceled"
$errorMessage = $objPmReq->objPmNotify->errorMessage; $errorMessage = $objPmReq->objPmNotify->errorMessage;
$api->CancelDraft($id); $api->CancelDraft($id);
if(isset($quoteId)){ if (isset($quoteId)) {
$api->UpdateQuote([ $api->UpdateQuote([
"status" => 8, "status" => 8,
"id" => $quoteId, "id" => $quoteId,
...@@ -300,11 +298,10 @@ $app->post('/confirm-payment', function($request, $response, $args){ ...@@ -300,11 +298,10 @@ $app->post('/confirm-payment', function($request, $response, $args){
$errorMessage = 'mobilpay_refference_action paramaters is invalid'; $errorMessage = 'mobilpay_refference_action paramaters is invalid';
break; break;
} }
} } else {
else {
//update DB, SET status = "rejected" //update DB, SET status = "rejected"
$api->CancelDraft($id); $api->CancelDraft($id);
if(isset($quoteId)){ if (isset($quoteId)) {
$api->UpdateQuote([ $api->UpdateQuote([
"status" => 5, "status" => 5,
"id" => $quoteId, "id" => $quoteId,
...@@ -313,35 +310,26 @@ $app->post('/confirm-payment', function($request, $response, $args){ ...@@ -313,35 +310,26 @@ $app->post('/confirm-payment', function($request, $response, $args){
} }
$errorMessage = $objPmReq->objPmNotify->errorMessage; $errorMessage = $objPmReq->objPmNotify->errorMessage;
} }
} } catch (Exception $e) {
catch(Exception $e)
{
$errorType = Mobilpay_Payment_Request_Abstract::CONFIRM_ERROR_TYPE_TEMPORARY; $errorType = Mobilpay_Payment_Request_Abstract::CONFIRM_ERROR_TYPE_TEMPORARY;
$errorCode = $e->getCode(); $errorCode = $e->getCode();
$errorMessage = $e->getMessage(); $errorMessage = $e->getMessage();
} }
} } else {
else
{
$errorType = Mobilpay_Payment_Request_Abstract::CONFIRM_ERROR_TYPE_PERMANENT; $errorType = Mobilpay_Payment_Request_Abstract::CONFIRM_ERROR_TYPE_PERMANENT;
$errorCode = Mobilpay_Payment_Request_Abstract::ERROR_CONFIRM_INVALID_POST_PARAMETERS; $errorCode = Mobilpay_Payment_Request_Abstract::ERROR_CONFIRM_INVALID_POST_PARAMETERS;
$errorMessage = 'mobilpay.ro posted invalid parameters'; $errorMessage = 'mobilpay.ro posted invalid parameters';
} }
} } else {
else
{
$errorType = Mobilpay_Payment_Request_Abstract::CONFIRM_ERROR_TYPE_PERMANENT; $errorType = Mobilpay_Payment_Request_Abstract::CONFIRM_ERROR_TYPE_PERMANENT;
$errorCode = Mobilpay_Payment_Request_Abstract::ERROR_CONFIRM_INVALID_POST_METHOD; $errorCode = Mobilpay_Payment_Request_Abstract::ERROR_CONFIRM_INVALID_POST_METHOD;
$errorMessage = 'invalid request metod for payment confirmation'; $errorMessage = 'invalid request metod for payment confirmation';
} }
header('Content-type: application/xml'); header('Content-type: application/xml');
echo "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n"; echo "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n";
if($errorCode == 0) if ($errorCode == 0) {
{
echo "<crc>{$errorMessage}</crc>"; echo "<crc>{$errorMessage}</crc>";
} } else {
else
{
echo "<crc error_type=\"{$errorType}\" error_code=\"{$errorCode}\">{$errorMessage}</crc>"; echo "<crc error_type=\"{$errorType}\" error_code=\"{$errorCode}\">{$errorMessage}</crc>";
} }
}); });
...@@ -442,7 +430,7 @@ $app->post('/payment-quote', function ($request, $response, $args) { ...@@ -442,7 +430,7 @@ $app->post('/payment-quote', function ($request, $response, $args) {
) )
); );
if(!empty($params['quote_id'])){ if (!empty($params['quote_id'])) {
$data['order']['quote_id'] = $params['quote_id']; $data['order']['quote_id'] = $params['quote_id'];
} }
...@@ -539,7 +527,7 @@ $app->post('/summary', function ($request, $response, $args) { ...@@ -539,7 +527,7 @@ $app->post('/summary', function ($request, $response, $args) {
return $response->withJson($price['data'], $price['info']['http_code']); return $response->withJson($price['data'], $price['info']['http_code']);
}); });
$app->post('/createDraft', function($request, $response, $args) { $app->post('/createDraft', function ($request, $response, $args) {
$api = new API(); $api = new API();
$data = $api->CreateDraft($request->getParsedBody()); $data = $api->CreateDraft($request->getParsedBody());
...@@ -551,7 +539,7 @@ $app->post('/createDraft', function($request, $response, $args) { ...@@ -551,7 +539,7 @@ $app->post('/createDraft', function($request, $response, $args) {
return $response->withJson($ret, $data['info']['http_code']); return $response->withJson($ret, $data['info']['http_code']);
}); });
$app->post('/uploadImage', function($request, $response, $args) { $app->post('/uploadImage', function ($request, $response, $args) {
$id = $request->getParam('id', false); $id = $request->getParam('id', false);
if (empty($id)) { if (empty($id)) {
throw new Exception('Ad id expected'); throw new Exception('Ad id expected');
...@@ -563,7 +551,7 @@ $app->post('/uploadImage', function($request, $response, $args) { ...@@ -563,7 +551,7 @@ $app->post('/uploadImage', function($request, $response, $args) {
} }
$file = $files['file']; $file = $files['file'];
$path = '/tmp/'.uniqid('', true).'_'.$file->getClientFilename(); $path = '/tmp/' . uniqid('', true) . '_' . $file->getClientFilename();
$file->moveTo($path); $file->moveTo($path);
$curlFile = curl_file_create($path, $curlFile = curl_file_create($path,
......
...@@ -10,19 +10,20 @@ ...@@ -10,19 +10,20 @@
</head> </head>
<body> <body>
<div class="navbar-fixed"> <div class="navbar-fixed">
<nav role="navigation"> <nav role="navigation">
<div class="container"> <div class="container">
<div class="row"> <div class="row">
<div class="nav-wrapper"> <div class="nav-wrapper">
<a href="/" class="brand-logo" title="Anunturi mica publicitate"><img src="img/logo.svg" alt="Anunturi mica publicitate"></a> <a href="/" class="brand-logo" title="Anunturi mica publicitate"><img src="img/logo.svg"
alt="Anunturi mica publicitate"></a>
</div> </div>
</div> </div>
</div> </div>
</nav> </nav>
</div> </div>
<div class="section loginForm"> <div class="section loginForm">
<div class="container"> <div class="container">
<div class="row"> <div class="row">
<div class="col s4 offset-s4"> <div class="col s4 offset-s4">
...@@ -38,15 +39,16 @@ ...@@ -38,15 +39,16 @@
<div class="row"> <div class="row">
<form action="/autentificare" method="POST"> <form action="/autentificare" method="POST">
<div class="input-field col s12"> <div class="input-field col s12">
<input placeholder="Email" id="email" name="email" type="email" /> <input placeholder="Email" id="email" name="email" type="email"/>
<label for="email">Email</label> <label for="email">Email</label>
</div> </div>
<div class="input-field col s12"> <div class="input-field col s12">
<input placeholder="Parola" name="password" id="password" type="password" /> <input placeholder="Parola" name="password" id="password" type="password"/>
<label for="password">Parola</label> <label for="password">Parola</label>
</div> </div>
<div class="col s12"> <div class="col s12">
<button class="btn waves-effect waves-light" type="submit" name="action">Autentificare <button class="btn waves-effect waves-light" type="submit" name="action">
Autentificare
<i class="material-icons right">send</i> <i class="material-icons right">send</i>
</button> </button>
</div> </div>
...@@ -57,23 +59,24 @@ ...@@ -57,23 +59,24 @@
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<footer class="page-footer default_color scrollspy" > <footer class="page-footer default_color scrollspy">
<div class="container"> <div class="container">
<div class="row"> <div class="row">
<div class="col l6 s12"> <div class="col l6 s12">
<h5 class="white-text">Rofusion Advertising Srl</h5> <h5 class="white-text">Rofusion Advertising Srl</h5>
<p class="white-text text-lighten-4">Anunturi mica publicitate<br>Anuțuri presa scrisă</p> <p class="white-text text-lighten-4">Anunturi mica publicitate<br>Anuțuri presa scrisă</p>
<ul> <ul>
<li><a href="termeni-si-conditii-mica24.html" class="white-text" title="Termeni și Condiții">Termeni și Condiții</a></li> <li><a href="termeni-si-conditii-mica24.html" class="white-text" title="Termeni și Condiții">Termeni
și Condiții</a></li>
</ul> </ul>
</div> </div>
<div class="col l6 s12 right-align"> <div class="col l6 s12 right-align">
<h5 class="white-text" id="contact">Contact</h5> <h5 class="white-text" id="contact">Contact</h5>
<ul class="white-text"> <ul class="white-text">
<li>Bd. Ion Mihalache nr. 140 S<br>Sector 1, București</li> <li>Bd. Ion Mihalache nr. 140 S<br>Sector 1, București</li>
<li>Telefon </li> <li>Telefon</li>
</ul> </ul>
</div> </div>
</div> </div>
...@@ -81,13 +84,14 @@ ...@@ -81,13 +84,14 @@
<div class="footer-copyright z-depth-1"> <div class="footer-copyright z-depth-1">
<div class="container"> <div class="container">
<b>&copy; Rofusion Advertising Srl</b> <b>&copy; Rofusion Advertising Srl</b>
<span class="right">dezvoltat de <a href="http://www.activemall.ro" class="white-text" target="_blank" title="activemall.ro">activemall.ro</a></span> <span class="right">dezvoltat de <a href="http://www.activemall.ro" class="white-text" target="_blank"
title="activemall.ro">activemall.ro</a></span>
</div> </div>
</div> </div>
</footer> </footer>
<script src="https://code.jquery.com/jquery-2.1.1.min.js"></script> <script src="https://code.jquery.com/jquery-2.1.1.min.js"></script>
<script src="js/materialize.js"></script> <script src="js/materialize.js"></script>
<script src="js/modernizr.js"></script> <script src="js/modernizr.js"></script>
</body> </body>
</html> </html>
...@@ -12,25 +12,28 @@ ...@@ -12,25 +12,28 @@
<link href="/css/styleadd.css" type="text/css" rel="stylesheet"> <link href="/css/styleadd.css" type="text/css" rel="stylesheet">
</head> </head>
<body id="top" class="scrollspy"> <body id="top" class="scrollspy">
<div id="loader-wrapper"> <div id="loader-wrapper">
<div id="loader"></div> <div id="loader"></div>
<div class="loader-section section-left"></div> <div class="loader-section section-left"></div>
<div class="loader-section section-right"></div> <div class="loader-section section-right"></div>
</div> </div>
<div class="navbar-fixed"> <div class="navbar-fixed">
<nav role="navigation"> <nav role="navigation">
<div class="container"> <div class="container">
<div class="nav-wrapper"> <div class="nav-wrapper">
<a href="/" class="brand-logo" title="Anunturi mica publicitate"><img src="../img/logo.svg" alt="Anunturi mica publicitate"></a> <a href="/" class="brand-logo" title="Anunturi mica publicitate"><img src="../img/logo.svg"
alt="Anunturi mica publicitate"></a>
<ul id="nav-mobile" class="right"> <ul id="nav-mobile" class="right">
<li> <li>
<?php if(!$loggedIn) { ?> <?php if (!$loggedIn) { ?>
<li><a href="/autentificare" class="waves-effect waves-light btn-large btnmo">Autentificare</a></li> <li><a href="/autentificare" class="waves-effect waves-light btn-large btnmo">Autentificare</a></li>
<?php } else { ?> <?php } else { ?>
<?php if(!$admin){ ?> <?php if (!$admin) { ?>
<li><a href="/contul-meu" class="waves-effect waves-light btn-large btnmo">Contul meu</a></li> <li><a href="/contul-meu" class="waves-effect waves-light btn-large btnmo">Contul meu</a>
</li>
<?php } else { ?> <?php } else { ?>
<li><a href="/admin/cotatii" class="waves-effect waves-light btn-large btnmo pink darken-4">Manager Cotatii</a></li> <li><a href="/admin/cotatii" class="waves-effect waves-light btn-large btnmo pink darken-4">Manager
Cotatii</a></li>
<?php } ?> <?php } ?>
<li><a href="/logout" class="waves-effect waves-light btn-large btnmo">Logout</a></li> <li><a href="/logout" class="waves-effect waves-light btn-large btnmo">Logout</a></li>
<?php } ?> <?php } ?>
...@@ -39,9 +42,9 @@ ...@@ -39,9 +42,9 @@
</div> </div>
</div> </div>
</nav> </nav>
</div> </div>
<div class="container cotatii"> <div class="container cotatii">
<h1>Manager Cotatii</h1> <h1>Manager Cotatii</h1>
<table class="striped highlight responsive-table"> <table class="striped highlight responsive-table">
...@@ -63,28 +66,28 @@ ...@@ -63,28 +66,28 @@
<tbody> <tbody>
<?php <?php
foreach($quotes as $quote){ foreach ($quotes as $quote) {
$quoteDetails = json_decode($quote['details'], true); $quoteDetails = json_decode($quote['details'], true);
$statusClass = $quote["status"] == 7 ? 'red':'cyan darken-3'; $statusClass = $quote["status"] == 7 ? 'red' : 'cyan darken-3';
$quoteContact = $quoteDetails["contact"]; $quoteContact = $quoteDetails["contact"];
if(is_string($quoteDetails["contact"])){ if (is_string($quoteDetails["contact"])) {
$quoteContact = json_decode($quoteDetails["contact"], true); $quoteContact = json_decode($quoteDetails["contact"], true);
} }
$adDetails = $quoteDetails["columns"]; $adDetails = $quoteDetails["columns"];
if(is_string($quoteDetails["columns"])){ if (is_string($quoteDetails["columns"])) {
$adDetails = json_decode($quoteDetails["columns"], true); $adDetails = json_decode($quoteDetails["columns"], true);
} }
?> ?>
<tr> <tr>
<td><?= $quote['id'] ?></td> <td><?= $quote['id'] ?></td>
<td> <td>
<?php echo !empty($quoteDetails['ad_id']) ? $quoteDetails['ad_id']:'-'?> <?php echo !empty($quoteDetails['ad_id']) ? $quoteDetails['ad_id'] : '-' ?>
</td> </td>
<td><?= $quoteContact["firstName"] . " " . $quoteContact["lastName"] ?></td> <td><?= $quoteContact["firstName"] . " " . $quoteContact["lastName"] ?></td>
<td><?= $quoteContact["name"] ?></td> <td><?= $quoteContact["name"] ?></td>
<td> <td>
<?php <?php
$date = date_create_from_format('Y-m-d H:i:s',$quote['created_at']); $date = date_create_from_format('Y-m-d H:i:s', $quote['created_at']);
$fDate = date_format($date, "H:i d-m-Y"); $fDate = date_format($date, "H:i d-m-Y");
?> ?>
<?= $fDate; ?></td> <?= $fDate; ?></td>
...@@ -93,10 +96,10 @@ ...@@ -93,10 +96,10 @@
</td> </td>
<td> <td>
<?php <?php
foreach($adDetails as $column){ foreach ($adDetails as $column) {
?> ?>
<?php if(!empty($column["publicationName"])){ ?> <?php if (!empty($column["publicationName"])) { ?>
<p> <p>
Publicatie: <?= $column["publicationName"] ?> <br> Publicatie: <?= $column["publicationName"] ?> <br>
Categorie: Categorie:
...@@ -109,7 +112,7 @@ ...@@ -109,7 +112,7 @@
</td> </td>
<td> <td>
<?php <?php
if(!empty($quote['file'])){ if (!empty($quote['file'])) {
?> ?>
<!-- <a href="<?php echo '/uploads/' . $quote['id']; ?>"><?= $quote['file'] ?></a> --> <!-- <a href="<?php echo '/uploads/' . $quote['id']; ?>"><?= $quote['file'] ?></a> -->
<a href="<?php echo '/uploads/' . $quote['id']; ?>">Descarca</a> <a href="<?php echo '/uploads/' . $quote['id']; ?>">Descarca</a>
...@@ -117,7 +120,7 @@ ...@@ -117,7 +120,7 @@
</td> </td>
<td class="right-align blue-grey darken-1 white-text"> <td class="right-align blue-grey darken-1 white-text">
<?php <?php
if(empty($quote['price'])){ if (empty($quote['price'])) {
?> ?>
<!-- <input min="0" step="0.01" placeholder="Pret" name="price" type="number" id="price-quote-<?php echo $quote['id']; ?>" value=""/> --> <!-- <input min="0" step="0.01" placeholder="Pret" name="price" type="number" id="price-quote-<?php echo $quote['id']; ?>" value=""/> -->
- -
...@@ -137,9 +140,10 @@ ...@@ -137,9 +140,10 @@
</td> </td>
<td> <td>
<?php <?php
if( $quote['status'] == 1 ){ if ($quote['status'] == 1) {
?> ?>
<a class="waves-effect waves-light btn btn-small modal-trigger" href="#modal-send-<?php echo $quote['id']; ?>" data-quote="<?php echo $quote['id'] ?>">Trimite</a> <a class="waves-effect waves-light btn btn-small modal-trigger"
href="#modal-send-<?php echo $quote['id']; ?>" data-quote="<?php echo $quote['id'] ?>">Trimite</a>
<div id="modal-send-<?php echo $quote['id'] ?>" class="modal"> <div id="modal-send-<?php echo $quote['id'] ?>" class="modal">
<div class="modal-content"> <div class="modal-content">
...@@ -155,55 +159,65 @@ ...@@ -155,55 +159,65 @@
</div> </div>
</div> </div>
<div class="modal-footer"> <div class="modal-footer">
<a class=" send-quote-price waves-effect waves-light btn btn-small action-btn" data-quote="<?php echo $quote['id'] ?>">Trimite</a> <a class=" send-quote-price waves-effect waves-light btn btn-small action-btn"
data-quote="<?php echo $quote['id'] ?>">Trimite</a>
</div> </div>
</div> </div>
<?php } ?> <?php } ?>
</td> </td>
</tr> </tr>
<?php } ?> <?php } ?>
</tbody> </tbody>
</table> </table>
<?php <?php
$limit = 10; $limit = 10;
$numberOfPages = ($total/$limit) > 1 ? $total/$limit:1; $numberOfPages = ($total / $limit) > 1 ? $total / $limit : 1;
if(!empty($_GET['offset'])){ if (!empty($_GET['offset'])) {
$currentOffset = $_GET['offset']; $currentOffset = $_GET['offset'];
$currentPage = ($_GET['offset']/$limit) + 1; $currentPage = ($_GET['offset'] / $limit) + 1;
}else{ } else {
$currentPage = 1; $currentPage = 1;
$currentOffset = 0; $currentOffset = 0;
} }
?> ?>
<ul class="pagination"> <ul class="pagination">
<li <?php if($currentOffset/$limit - 1 < 0) { ?> style="pointer-events: none;" <?php } ?> class="<?php echo ($currentPage == 1) ? 'disabled':''; ?> waves-effect"><a href="/admin/cotatii?limit=<?php echo $limit; ?>&offset=<?php echo $currentOffset-$limit; ?>"><i class="material-icons">chevron_left</i></a></li> <li <?php if ($currentOffset / $limit - 1 < 0) { ?> style="pointer-events: none;" <?php } ?>
<?php for($i = 1; $i <= $numberOfPages; $i++){ ?> class="<?php echo ($currentPage == 1) ? 'disabled' : ''; ?> waves-effect"><a
href="/admin/cotatii?limit=<?php echo $limit; ?>&offset=<?php echo $currentOffset - $limit; ?>"><i
class="material-icons">chevron_left</i></a></li>
<?php for ($i = 1; $i <= $numberOfPages; $i++) { ?>
<?php $offset = ($i - 1) * $limit; <?php $offset = ($i - 1) * $limit;
?> ?>
<li class="<?php echo ($currentPage == $i) ? 'active':''; ?>"><a href="/admin/cotatii?limit=<?php echo $limit;?>&offset=<?php echo $offset; ?>"><?php echo $i; ?></a></li> <li class="<?php echo ($currentPage == $i) ? 'active' : ''; ?>"><a
href="/admin/cotatii?limit=<?php echo $limit; ?>&offset=<?php echo $offset; ?>"><?php echo $i; ?></a>
</li>
<?php } ?> <?php } ?>
<li <?php if($currentOffset/$limit + 1 == $numberOfPages){ ?> style="pointer-events: none;" <?php } ?> class="waves-effect <?php echo ($currentPage == $numberOfPages) ? 'disabled' : '' ;?>"><a href="/admin/cotatii?limit=<?php echo $limit; ?>&offset=<?php echo $currentOffset+$limit; ?>"><i class="material-icons">chevron_right</i></a></li> <li <?php if ($currentOffset / $limit + 1 == $numberOfPages) { ?> style="pointer-events: none;" <?php } ?>
class="waves-effect <?php echo ($currentPage == $numberOfPages) ? 'disabled' : ''; ?>"><a
href="/admin/cotatii?limit=<?php echo $limit; ?>&offset=<?php echo $currentOffset + $limit; ?>"><i
class="material-icons">chevron_right</i></a></li>
</ul> </ul>
</div> </div>
<footer class="page-footer default_color scrollspy" > <footer class="page-footer default_color scrollspy">
<div class="container"> <div class="container">
<div class="row"> <div class="row">
<div class="col l6 s12"> <div class="col l6 s12">
<h5 class="white-text">Rofusion Advertising Srl</h5> <h5 class="white-text">Rofusion Advertising Srl</h5>
<p class="white-text text-lighten-4">Anunturi mica publicitate<br>Anuțuri presa scrisă</p> <p class="white-text text-lighten-4">Anunturi mica publicitate<br>Anuțuri presa scrisă</p>
<ul> <ul>
<li><a href="termeni-si-conditii-mica24.html" class="white-text" title="Termeni și Condiții">Termeni și Condiții</a></li> <li><a href="termeni-si-conditii-mica24.html" class="white-text" title="Termeni și Condiții">Termeni
și Condiții</a></li>
</ul> </ul>
</div> </div>
<div class="col l6 s12 right-align"> <div class="col l6 s12 right-align">
<h5 class="white-text" id="contact">Contact</h5> <h5 class="white-text" id="contact">Contact</h5>
<ul class="white-text"> <ul class="white-text">
<li>Bd. Ion Mihalache nr. 140 S<br>Sector 1, București</li> <li>Bd. Ion Mihalache nr. 140 S<br>Sector 1, București</li>
<li>Telefon </li> <li>Telefon</li>
</ul> </ul>
</div> </div>
</div> </div>
...@@ -211,23 +225,25 @@ ...@@ -211,23 +225,25 @@
<div class="footer-copyright z-depth-1"> <div class="footer-copyright z-depth-1">
<div class="container"> <div class="container">
<b>&copy; Rofusion Advertising Srl</b> <b>&copy; Rofusion Advertising Srl</b>
<span class="right">dezvoltat de <a href="http://www.activemall.ro" class="white-text" target="_blank" title="activemall.ro">activemall.ro</a></span> <span class="right">dezvoltat de <a href="http://www.activemall.ro" class="white-text" target="_blank"
title="activemall.ro">activemall.ro</a></span>
</div> </div>
</div> </div>
</footer> </footer>
<div id="reguli" class="modal"> <div id="reguli" class="modal">
<div class="modal-content"> <div class="modal-content">
<h4>Reguli de redactare a unui anunț</h4> <h4>Reguli de redactare a unui anunț</h4>
<p>1. Nu scrieți cuvinte jignitoare sau ofensatoare.<br>2. Nu scrieți cuvintele legate între ele.<br>3. Numărul minim de cuvinte taxate este de 10, indiferent de lungimea anunțului dvs.</p> <p>1. Nu scrieți cuvinte jignitoare sau ofensatoare.<br>2. Nu scrieți cuvintele legate între ele.<br>3. Numărul
minim de cuvinte taxate este de 10, indiferent de lungimea anunțului dvs.</p>
</div> </div>
<div class="modal-footer"> <div class="modal-footer">
<a href="#!" class=" modal-action modal-close waves-effect waves-green btn-flat">OK</a> <a href="#!" class=" modal-action modal-close waves-effect waves-green btn-flat">OK</a>
</div> </div>
</div> </div>
<script src="/js/jquery-3.1.0.min.js"></script> <script src="/js/jquery-3.1.0.min.js"></script>
<script src="/js/materialize.js"></script> <script src="/js/materialize.js"></script>
<script src="/js/quotes.js"></script> <script src="/js/quotes.js"></script>
</body> </body>
......
...@@ -10,25 +10,28 @@ ...@@ -10,25 +10,28 @@
<link href="css/styleadd.css" type="text/css" rel="stylesheet"> <link href="css/styleadd.css" type="text/css" rel="stylesheet">
</head> </head>
<body id="top" class="scrollspy"> <body id="top" class="scrollspy">
<div id="loader-wrapper"> <div id="loader-wrapper">
<div id="loader"></div> <div id="loader"></div>
<div class="loader-section section-left"></div> <div class="loader-section section-left"></div>
<div class="loader-section section-right"></div> <div class="loader-section section-right"></div>
</div> </div>
<div class="navbar-fixed"> <div class="navbar-fixed">
<nav role="navigation"> <nav role="navigation">
<div class="container"> <div class="container">
<div class="nav-wrapper"> <div class="nav-wrapper">
<a href="/" class="brand-logo" title="Anunturi mica publicitate"><img src="img/logo.svg" alt="Anunturi mica publicitate"></a> <a href="/" class="brand-logo" title="Anunturi mica publicitate"><img src="img/logo.svg"
alt="Anunturi mica publicitate"></a>
<ul id="nav-mobile" class="right"> <ul id="nav-mobile" class="right">
<li> <li>
<?php if(!$loggedIn) { ?> <?php if (!$loggedIn) { ?>
<li><a href="/autentificare" class="waves-effect waves-light btn-large btnmo">Autentificare</a></li> <li><a href="/autentificare" class="waves-effect waves-light btn-large btnmo">Autentificare</a></li>
<?php } else { ?> <?php } else { ?>
<?php if(!$admin){ ?> <?php if (!$admin) { ?>
<li><a href="/contul-meu" class="waves-effect waves-light btn-large pink darken-4 btnmo">Contul meu</a></li> <li><a href="/contul-meu" class="waves-effect waves-light btn-large pink darken-4 btnmo">Contul
meu</a></li>
<?php } else { ?> <?php } else { ?>
<li><a href="/admin/cotatii" class="waves-effect waves-light btn-large btnmo">Manager Cotatii</a></li> <li><a href="/admin/cotatii" class="waves-effect waves-light btn-large btnmo">Manager
Cotatii</a></li>
<?php } ?> <?php } ?>
<li><a href="/logout" class="waves-effect waves-light btn-large btnmo">Logout</a></li> <li><a href="/logout" class="waves-effect waves-light btn-large btnmo">Logout</a></li>
<?php } ?> <?php } ?>
...@@ -37,9 +40,9 @@ ...@@ -37,9 +40,9 @@
</div> </div>
</div> </div>
</nav> </nav>
</div> </div>
<div class="container cotatii"> <div class="container cotatii">
<h1>Cotatii mele</h1> <h1>Cotatii mele</h1>
<table class="striped highlight responsive-table"> <table class="striped highlight responsive-table">
<thead> <thead>
...@@ -57,15 +60,15 @@ ...@@ -57,15 +60,15 @@
<tbody> <tbody>
<?php <?php
foreach($quotes as $quote){ foreach ($quotes as $quote) {
$quoteDetails = json_decode($quote['details'], true); $quoteDetails = json_decode($quote['details'], true);
$statusClass = $quote["status"] == 7 ? 'red':'cyan darken-3'; $statusClass = $quote["status"] == 7 ? 'red' : 'cyan darken-3';
?> ?>
<tr> <tr>
<td><?= $quote['id'] ?></td> <td><?= $quote['id'] ?></td>
<td> <td>
<?php <?php
$date = date_create_from_format('Y-m-d H:i:s',$quote['created_at']); $date = date_create_from_format('Y-m-d H:i:s', $quote['created_at']);
$fDate = date_format($date, "H:i d-m-Y"); $fDate = date_format($date, "H:i d-m-Y");
?> ?>
<?= $fDate; ?></td> <?= $fDate; ?></td>
...@@ -74,13 +77,13 @@ ...@@ -74,13 +77,13 @@
</td> </td>
<td> <td>
<?php <?php
if(!empty($quote['file'])){ if (!empty($quote['file'])) {
?> ?>
<a href="<?php echo '/uploads/' . $quote['id']; ?>"><?= $quote['file'] ?></a> <a href="<?php echo '/uploads/' . $quote['id']; ?>"><?= $quote['file'] ?></a>
<?php } ?> <?php } ?>
</td> </td>
<td class="right-align blue-grey darken-1 white-text"> <td class="right-align blue-grey darken-1 white-text">
<?= empty($quote['price']) ? '':$quote['price'] . ' lei' ?> <?= empty($quote['price']) ? '' : $quote['price'] . ' lei' ?>
</td> </td>
<td> <td>
<span class="new badge <?php echo $statusClass ?>" data-badge-caption=""> <span class="new badge <?php echo $statusClass ?>" data-badge-caption="">
...@@ -89,17 +92,20 @@ ...@@ -89,17 +92,20 @@
</td> </td>
<td class="right-align"> <td class="right-align">
<?php <?php
if( $quote['status'] == 2 ){ if ($quote['status'] == 2) {
?> ?>
<a class="waves-effect waves-light btn btn-small modal-trigger" href="#modal-accept-<?php echo $quote['id']; ?>" data-quote="<?php echo $quote['id'] ?>">Accepta</a> <a class="waves-effect waves-light btn btn-small modal-trigger"
href="#modal-accept-<?php echo $quote['id']; ?>" data-quote="<?php echo $quote['id'] ?>">Accepta</a>
<a class="waves-effect waves-light btn btn-small red modal-trigger" href="#modal-decline-<?php echo $quote['id'] ?>">Refuza</a> <a class="waves-effect waves-light btn btn-small red modal-trigger"
href="#modal-decline-<?php echo $quote['id'] ?>">Refuza</a>
<div id="modal-accept-<?php echo $quote['id'] ?>" class="modal"> <div id="modal-accept-<?php echo $quote['id'] ?>" class="modal">
<div class="modal-content"> <div class="modal-content">
<h4>Accepta cotatia cu id: <?php echo $quote['id'] ?></h4> <h4>Accepta cotatia cu id: <?php echo $quote['id'] ?></h4>
</div> </div>
<div class="modal-footer"> <div class="modal-footer">
<a class="accept-quote waves-effect waves-light btn btn-small" data-quote="<?php echo $quote['id'] ?>">Accepta</a> <a class="accept-quote waves-effect waves-light btn btn-small"
data-quote="<?php echo $quote['id'] ?>">Accepta</a>
</div> </div>
</div> </div>
<div id="modal-decline-<?php echo $quote['id'] ?>" class="modal"> <div id="modal-decline-<?php echo $quote['id'] ?>" class="modal">
...@@ -107,74 +113,86 @@ ...@@ -107,74 +113,86 @@
<h4>Refuzati cotatia cu id: <?php echo $quote['id'] ?></h4> <h4>Refuzati cotatia cu id: <?php echo $quote['id'] ?></h4>
</div> </div>
<div class="modal-footer"> <div class="modal-footer">
<a class="deny-quote waves-effect waves-light btn btn-small red" data-quote="<?php echo $quote['id'] ?>">Refuza</a> <a class="deny-quote waves-effect waves-light btn btn-small red"
data-quote="<?php echo $quote['id'] ?>">Refuza</a>
</div> </div>
</div> </div>
<?php } else if($quote['status'] == 3 && $quoteDetails['invoicePerAd'] == 0){ ?> <?php } else if ($quote['status'] == 3 && $quoteDetails['invoicePerAd'] == 0) { ?>
<a class=" waves-effect waves-light btn pay-quote" data-quote="<?php echo $quote['id'] ?>">Plateste</a> <a class=" waves-effect waves-light btn pay-quote" data-quote="<?php echo $quote['id'] ?>">Plateste</a>
<form action="/payment-quote" method="POST"> <form action="/payment-quote" method="POST">
<input name="ad_id" type="hidden" value="<?php echo $quoteDetails['ad_id']; ?>"/> <input name="ad_id" type="hidden" value="<?php echo $quoteDetails['ad_id']; ?>"/>
<input name="quote_id" type="hidden" value="<?php echo $quote['id']; ?>"/> <input name="quote_id" type="hidden" value="<?php echo $quote['id']; ?>"/>
</form> </form>
<?php } else if($quote['status'] == 7) { ?> <?php } else if ($quote['status'] == 7) { ?>
<a class=" waves-effect waves-light btn btn-small modal-trigger red" href="#modal-delete-<?php echo $quote['id']; ?>" >Sterge</a> <a class=" waves-effect waves-light btn btn-small modal-trigger red"
href="#modal-delete-<?php echo $quote['id']; ?>">Sterge</a>
<div id="modal-delete-<?php echo $quote['id'] ?>" class="modal"> <div id="modal-delete-<?php echo $quote['id'] ?>" class="modal">
<div class="modal-content"> <div class="modal-content">
<h4>Sterge cotatia cu id: <?php echo $quote['id'] ?></h4> <h4>Sterge cotatia cu id: <?php echo $quote['id'] ?></h4>
</div> </div>
<div class="modal-footer"> <div class="modal-footer">
<a class=" waves-effect waves-light btn btn-small red delete-quote" data-quote="<?php echo $quote['id'] ?>">Sterge</a> <a class=" waves-effect waves-light btn btn-small red delete-quote"
data-quote="<?php echo $quote['id'] ?>">Sterge</a>
</div> </div>
</div> </div>
<?php } ?> <?php } ?>
</td> </td>
</tr> </tr>
<?php } ?> <?php } ?>
</tbody> </tbody>
</table> </table>
<?php <?php
$limit = !empty($_GET['limit']) ? $_GET['limit']:10; $limit = !empty($_GET['limit']) ? $_GET['limit'] : 10;
$numberOfPages = ($total/$limit) > 1 ? $total/$limit:1; $numberOfPages = ($total / $limit) > 1 ? $total / $limit : 1;
if(!empty($_GET['offset'])){ if (!empty($_GET['offset'])) {
$currentOffset = $_GET['offset']; $currentOffset = $_GET['offset'];
$currentPage = ($_GET['offset']/$limit) + 1; $currentPage = ($_GET['offset'] / $limit) + 1;
}else{ } else {
$currentPage = 1; $currentPage = 1;
$currentOffset = 0; $currentOffset = 0;
} }
?> ?>
<ul class="pagination"> <ul class="pagination">
<li <?php if($currentOffset/$limit - 1 < 0) { ?> style="pointer-events: none;" <?php } ?> class="<?php echo ($currentPage == 1) ? 'disabled':''; ?> waves-effect"><a href="/contul-meu?limit=<?php echo $limit; ?>&offset=<?php echo $currentOffset-$limit; ?>"><i class="material-icons">chevron_left</i></a></li> <li <?php if ($currentOffset / $limit - 1 < 0) { ?> style="pointer-events: none;" <?php } ?>
<?php for($i = 1; $i <= $numberOfPages; $i++){ ?> class="<?php echo ($currentPage == 1) ? 'disabled' : ''; ?> waves-effect"><a
href="/contul-meu?limit=<?php echo $limit; ?>&offset=<?php echo $currentOffset - $limit; ?>"><i
class="material-icons">chevron_left</i></a></li>
<?php for ($i = 1; $i <= $numberOfPages; $i++) { ?>
<?php $offset = ($i - 1) * $limit; <?php $offset = ($i - 1) * $limit;
?> ?>
<li class="<?php echo ($currentPage == $i) ? 'active':''; ?>"><a href="/contul-meu?limit=<?php echo $limit;?>&offset=<?php echo $offset; ?>"><?php echo $i; ?></a></li> <li class="<?php echo ($currentPage == $i) ? 'active' : ''; ?>"><a
href="/contul-meu?limit=<?php echo $limit; ?>&offset=<?php echo $offset; ?>"><?php echo $i; ?></a>
</li>
<?php } ?> <?php } ?>
<li <?php if($currentOffset/$limit + 1 == $numberOfPages){ ?> style="pointer-events: none;" <?php } ?> class="waves-effect <?php echo ($currentPage == $numberOfPages) ? 'disabled' : '' ;?>"><a href="/contul-meu?limit=<?php echo $limit; ?>&offset=<?php echo $currentOffset+$limit; ?>"><i class="material-icons">chevron_right</i></a></li> <li <?php if ($currentOffset / $limit + 1 == $numberOfPages) { ?> style="pointer-events: none;" <?php } ?>
class="waves-effect <?php echo ($currentPage == $numberOfPages) ? 'disabled' : ''; ?>"><a
href="/contul-meu?limit=<?php echo $limit; ?>&offset=<?php echo $currentOffset + $limit; ?>"><i
class="material-icons">chevron_right</i></a></li>
</ul> </ul>
</div> </div>
<footer class="page-footer default_color scrollspy" > <footer class="page-footer default_color scrollspy">
<div class="container"> <div class="container">
<div class="row"> <div class="row">
<div class="col l6 s12"> <div class="col l6 s12">
<h5 class="white-text">Rofusion Advertising Srl</h5> <h5 class="white-text">Rofusion Advertising Srl</h5>
<p class="white-text text-lighten-4">Anunturi mica publicitate<br>Anuțuri presa scrisă</p> <p class="white-text text-lighten-4">Anunturi mica publicitate<br>Anuțuri presa scrisă</p>
<ul> <ul>
<li><a href="termeni-si-conditii-mica24.html" class="white-text" title="Termeni și Condiții">Termeni și Condiții</a></li> <li><a href="termeni-si-conditii-mica24.html" class="white-text" title="Termeni și Condiții">Termeni
și Condiții</a></li>
</ul> </ul>
</div> </div>
<div class="col l6 s12 right-align"> <div class="col l6 s12 right-align">
<h5 class="white-text" id="contact">Contact</h5> <h5 class="white-text" id="contact">Contact</h5>
<ul class="white-text"> <ul class="white-text">
<li>Bd. Ion Mihalache nr. 140 S<br>Sector 1, București</li> <li>Bd. Ion Mihalache nr. 140 S<br>Sector 1, București</li>
<li>Telefon </li> <li>Telefon</li>
</ul> </ul>
</div> </div>
</div> </div>
...@@ -182,23 +200,25 @@ ...@@ -182,23 +200,25 @@
<div class="footer-copyright z-depth-1"> <div class="footer-copyright z-depth-1">
<div class="container"> <div class="container">
<b>&copy; Rofusion Advertising Srl</b> <b>&copy; Rofusion Advertising Srl</b>
<span class="right">dezvoltat de <a href="http://www.activemall.ro" class="white-text" target="_blank" title="activemall.ro">activemall.ro</a></span> <span class="right">dezvoltat de <a href="http://www.activemall.ro" class="white-text" target="_blank"
title="activemall.ro">activemall.ro</a></span>
</div> </div>
</div> </div>
</footer> </footer>
<div id="reguli" class="modal"> <div id="reguli" class="modal">
<div class="modal-content"> <div class="modal-content">
<h4>Reguli de redactare a unui anunț</h4> <h4>Reguli de redactare a unui anunț</h4>
<p>1. Nu scrieți cuvinte jignitoare sau ofensatoare.<br>2. Nu scrieți cuvintele legate între ele.<br>3. Numărul minim de cuvinte taxate este de 10, indiferent de lungimea anunțului dvs.</p> <p>1. Nu scrieți cuvinte jignitoare sau ofensatoare.<br>2. Nu scrieți cuvintele legate între ele.<br>3. Numărul
minim de cuvinte taxate este de 10, indiferent de lungimea anunțului dvs.</p>
</div> </div>
<div class="modal-footer"> <div class="modal-footer">
<a href="#!" class=" modal-action modal-close waves-effect waves-green btn-flat">OK</a> <a href="#!" class=" modal-action modal-close waves-effect waves-green btn-flat">OK</a>
</div> </div>
</div> </div>
<script src="js/jquery-3.1.0.min.js"></script> <script src="js/jquery-3.1.0.min.js"></script>
<script src="js/materialize.js"></script> <script src="js/materialize.js"></script>
<script src="js/quotes.js"></script> <script src="js/quotes.js"></script>
</body> </body>
......
...@@ -10,50 +10,59 @@ ...@@ -10,50 +10,59 @@
</head> </head>
<body> <body>
<div class="navbar-fixed"> <div class="navbar-fixed">
<nav role="navigation"> <nav role="navigation">
<div class="container"> <div class="container">
<div class="row"> <div class="row">
<div class="nav-wrapper"> <div class="nav-wrapper">
<a href="/" class="brand-logo" title="mica24.ro - Anunțuri Presa Scrisă - România Liberă"><img src="img/logo-mica24.png" alt="mica24.ro - Anunțuri Presa Scrisă - România Liberă"></a> <a href="/" class="brand-logo" title="mica24.ro - Anunțuri Presa Scrisă - România Liberă"><img
src="img/logo-mica24.png" alt="mica24.ro - Anunțuri Presa Scrisă - România Liberă"></a>
</div> </div>
</div> </div>
</div> </div>
</nav> </nav>
</div> </div>
<div class="section"> <div class="section">
<div class="container"> <div class="container">
<br><br> <br><br>
<?php if ($ok): ?> <?php if ($ok): ?>
<h1><b>Plata a fost finalizată cu succes!</b></h1> <h1><b>Plata a fost finalizată cu succes!</b></h1>
<b>Veți primi un email cu detaliile comenzii dvs.<br>Vă mulțumim.</b> <b>Veți primi un email cu detaliile comenzii dvs.<br>Vă mulțumim.</b>
<br><br><hr><br> <br><br>
<hr><br>
<a href="/" title="" class="btn">Adaugă un anunț nou</a> <a href="/" title="" class="btn">Adaugă un anunț nou</a>
<br><br> <br><br>
<?php else: ?> <?php else: ?>
<h1><b>Plata nu a fost efectuată!<br>Eroare de procesare.</b></h1> <h1><b>Plata nu a fost efectuată!<br>Eroare de procesare.</b></h1>
<b>Ne cerem scuze și vă rugăm să încercați din nou.<br>Vă mulțumim.</b> <b>Ne cerem scuze și vă rugăm să încercați din nou.<br>Vă mulțumim.</b>
<br><br><hr><br> <br><br>
<hr><br>
<a href="/" title="" class="btn">Adaugă anunț</a> <a href="/" title="" class="btn">Adaugă anunț</a>
<br><br> <br><br>
<?php endif; ?> <?php endif; ?>
</div> </div>
</div> </div>
<footer class="page-footer default_color scrollspy z-depth-2"> <footer class="page-footer default_color scrollspy z-depth-2">
<div class="container"> <div class="container">
<div class="row"> <div class="row">
<div class="col l6 s12"> <div class="col l6 s12">
<h5 class="white-text">mica24.ro - Magazinul de Mică Publicitate România Liberă</h5> <h5 class="white-text">mica24.ro - Magazinul de Mică Publicitate România Liberă</h5>
<p class="white-text text-lighten-4">mica24.ro - Magazinul de Mică Publicitate este un produs al Grupului de Presă Român, parte a Medien Holding, din portofoliul căruia mai fac parte: cotidianul România Liberă, bilunarul Academia Cațavencu, revista Casa Mea, revistele TAROM (Insight, SkyLady), website-urile www.romanialibera.ro, www.casamea.ro, www.academiacatavencu.info și tipografia Sigma Media.</p> <p class="white-text text-lighten-4">mica24.ro - Magazinul de Mică Publicitate este un produs al
Grupului de Presă Român, parte a Medien Holding, din portofoliul căruia mai fac parte: cotidianul
România Liberă, bilunarul Academia Cațavencu, revista Casa Mea, revistele TAROM (Insight, SkyLady),
website-urile www.romanialibera.ro, www.casamea.ro, www.academiacatavencu.info și tipografia Sigma
Media.</p>
</div> </div>
<div class="col l3 s12"> <div class="col l3 s12">
<h5 class="white-text">Info</h5> <h5 class="white-text">Info</h5>
<ul> <ul>
<li><a href="contact-mica24.html" class="white-text">Listă Agenții România Liberă</a></li> <li><a href="contact-mica24.html" class="white-text">Listă Agenții România Liberă</a></li>
<li><a href="http://publicitate.romanialibera.ro/" class="white-text" target="_blank" title="Mica Publicitate">Mica Publicitate</a></li> <li><a href="http://publicitate.romanialibera.ro/" class="white-text" target="_blank"
<li><a href="termeni-si-conditii-mica24.html" class="white-text" title="Termeni și Condiții">Termeni și Condiții</a></li> title="Mica Publicitate">Mica Publicitate</a></li>
<li><a href="termeni-si-conditii-mica24.html" class="white-text" title="Termeni și Condiții">Termeni
și Condiții</a></li>
</ul> </ul>
</div> </div>
<div class="col l3 s12"> <div class="col l3 s12">
...@@ -69,13 +78,14 @@ ...@@ -69,13 +78,14 @@
<div class="footer-copyright z-depth-1"> <div class="footer-copyright z-depth-1">
<div class="container"> <div class="container">
<b>&copy; România Liberă SA / Grupul de Presă Român / Medien Holding</b> <b>&copy; România Liberă SA / Grupul de Presă Român / Medien Holding</b>
<span class="right">dezvoltat de <a href="http://www.activemall.ro" class="white-text" target="_blank" title="activemall.ro">activemall.ro</a></span> <span class="right">dezvoltat de <a href="http://www.activemall.ro" class="white-text" target="_blank"
title="activemall.ro">activemall.ro</a></span>
</div> </div>
</div> </div>
</footer> </footer>
<script src="https://code.jquery.com/jquery-2.1.1.min.js"></script> <script src="https://code.jquery.com/jquery-2.1.1.min.js"></script>
<script src="js/materialize.js"></script> <script src="js/materialize.js"></script>
<script src="js/modernizr.js"></script> <script src="js/modernizr.js"></script>
</body> </body>
</html> </html>
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
<meta name="subject" content="anuțuri presa scrisă, anunturi mica publicitate"/> <meta name="subject" content="anuțuri presa scrisă, anunturi mica publicitate"/>
<meta name="copyright" content="Rofusion Advertising Srl"/> <meta name="copyright" content="Rofusion Advertising Srl"/>
<meta name="language" content="RO"/> <meta name="language" content="RO"/>
<meta name="robots" content="index,follow" /> <meta name="robots" content="index,follow"/>
<meta name="abstract" content="anuțuri presa scrisă, anunturi mica publicitate"> <meta name="abstract" content="anuțuri presa scrisă, anunturi mica publicitate">
<meta name="topic" content="Ads"> <meta name="topic" content="Ads">
<meta name="summary" content="anuțuri presa scrisă, anunturi mica publicitate"> <meta name="summary" content="anuțuri presa scrisă, anunturi mica publicitate">
...@@ -36,25 +36,28 @@ ...@@ -36,25 +36,28 @@
<link href="css/styleadd.css" type="text/css" rel="stylesheet"> <link href="css/styleadd.css" type="text/css" rel="stylesheet">
</head> </head>
<body id="top" class="scrollspy"> <body id="top" class="scrollspy">
<div id="loader-wrapper"> <div id="loader-wrapper">
<div id="loader"></div> <div id="loader"></div>
<div class="loader-section section-left"></div> <div class="loader-section section-left"></div>
<div class="loader-section section-right"></div> <div class="loader-section section-right"></div>
</div> </div>
<div class="navbar-fixed"> <div class="navbar-fixed">
<nav role="navigation"> <nav role="navigation">
<div class="container"> <div class="container">
<div class="nav-wrapper"> <div class="nav-wrapper">
<a href="/" class="brand-logo" title="Anunturi mica publicitate"><img src="img/logo.svg" alt="Anunturi mica publicitate"></a> <a href="/" class="brand-logo" title="Anunturi mica publicitate"><img src="img/logo.svg"
alt="Anunturi mica publicitate"></a>
<ul id="nav-mobile" class="right"> <ul id="nav-mobile" class="right">
<li> <li>
<?php if(!isset($loggedIn)) { ?> <?php if (!isset($loggedIn)) { ?>
<li><a href="/autentificare" class="waves-effect waves-light btn-large btnmo">Autentificare</a></li> <li><a href="/autentificare" class="waves-effect waves-light btn-large btnmo">Autentificare</a></li>
<?php } else { ?> <?php } else { ?>
<?php if(!$admin){ ?> <?php if (!$admin) { ?>
<li><a href="/contul-meu" class="waves-effect waves-light btn-large pink darken-4 btnmo">Contul meu</a></li> <li><a href="/contul-meu" class="waves-effect waves-light btn-large pink darken-4 btnmo">Contul
meu</a></li>
<?php } else { ?> <?php } else { ?>
<li><a href="/admin/cotatii" class="waves-effect waves-light btn-large pink darken-4 btnmo">Manager Cotatii</a></li> <li><a href="/admin/cotatii" class="waves-effect waves-light btn-large pink darken-4 btnmo">Manager
Cotatii</a></li>
<?php } ?> <?php } ?>
<li><a href="/logout" class="waves-effect waves-light btn-large btnmo">Logout</a></li> <li><a href="/logout" class="waves-effect waves-light btn-large btnmo">Logout</a></li>
<?php } ?> <?php } ?>
...@@ -63,9 +66,9 @@ ...@@ -63,9 +66,9 @@
</div> </div>
</div> </div>
</nav> </nav>
</div> </div>
<div class="slider"> <div class="slider">
<ul class="slides"> <ul class="slides">
<li> <li>
<img src="img/slide/slide1.jpg"> <img src="img/slide/slide1.jpg">
...@@ -82,28 +85,33 @@ ...@@ -82,28 +85,33 @@
</div> </div>
</li> </li>
</ul> </ul>
</div> </div>
<?php if(isset($loggedIn) && $loggedIn) { ?> <?php if (isset($loggedIn) && $loggedIn) { ?>
<input id="loggedInUser" type="text" value="true" style="display:none" /> <input id="loggedInUser" type="text" value="true" style="display:none"/>
<?php } ?> <?php } ?>
<div class="section no-pad" data-bind="visible: !finalStep()"> <div class="section no-pad" data-bind="visible: !finalStep()">
<div class="container"> <div class="container">
<div class="row"> <div class="row">
<div class="col s12 m12 l9"> <div class="col s12 m12 l9">
<ul class="collapsible" data-collapsible="accordion"> <ul class="collapsible" data-collapsible="accordion">
<li data-bind="visible: publications().length > 1"> <li data-bind="visible: publications().length > 1">
<div class="collapsible-header" data-bind="css: {active: publications().length > 1" }"> <div class="collapsible-header" data-bind="css: {active: publications().length > 1" }
">
<i class="material-icons">playlist_add</i> <i class="material-icons">playlist_add</i>
<span class="step">Pasul 1</span>Alege Publicațiile în care dorești să apară anunțul tău</div> <span class="step">Pasul 1</span>Alege Publicațiile în care dorești să apară anunțul tău
</div>
<div class="collapsible-body"> <div class="collapsible-body">
<div class="row"> <div class="row">
<div class="pubs" data-bind="template: {foreach:publications}, css: {disabled: selectedKind() == 3 }"> <div class="pubs"
data-bind="template: {foreach:publications}, css: {disabled: selectedKind() == 3 }">
<div class="col s12 m3 l25"> <div class="col s12 m3 l25">
<div class="card"> <div class="card">
<div class="card-image" data-bind="style: { backgroundImage: 'url(\'' + image() + '\')'}"></div> <div class="card-image"
data-bind="style: { backgroundImage: 'url(\'' + image() + '\')'}"></div>
<div class="card-action"> <div class="card-action">
<input data-bind="attr: {id: 'p' + id()}, checked: selected" type="checkbox" data-bind="checked: selected" class="filled-in" > <input data-bind="attr: {id: 'p' + id()}, checked: selected" type="checkbox"
data-bind="checked: selected" class="filled-in">
<label data-bind="attr: {for: 'p' + id()}, text: name"></label> <label data-bind="attr: {for: 'p' + id()}, text: name"></label>
</div> </div>
</div> </div>
...@@ -112,7 +120,9 @@ ...@@ -112,7 +120,9 @@
</div> </div>
<div class="row"> <div class="row">
<div class="col s12"> <div class="col s12">
<button class="btn waves-effect waves-light right btn-next" onclick="gotostep('list_publicatii');">Pasul următor</button> <button class="btn waves-effect waves-light right btn-next"
onclick="gotostep('list_publicatii');">Pasul următor
</button>
</div> </div>
</div> </div>
</div> </div>
...@@ -123,26 +133,25 @@ ...@@ -123,26 +133,25 @@
data-bind="css: {active: publications().length ==1 }" data-bind="css: {active: publications().length ==1 }"
> >
<i class="material-icons">today</i> <i class="material-icons">today</i>
<span class="step" data-bind="text: publications().length > 1 ? 'Pasul 2':'Pasul 1'">Pasul 2</span>Adaugă textul Anunțului și Zilele de publicare</div> <span class="step" data-bind="text: publications().length > 1 ? 'Pasul 2':'Pasul 1'">Pasul 2</span>Adaugă
textul Anunțului și Zilele de publicare
</div>
<div class="collapsible-body" id="detalii_anunt"> <div class="collapsible-body" id="detalii_anunt">
<div class="row"> <div class="row">
<div class="col s12 m12 l12"> <div class="col s12 m12 l12">
<ul class="tabs" data-bind="if: isLoggedIn"> <div id="cotatie">
<li class="tab col"><a class="active" href="#anunt-simplu" id="simple-ad-link" data-bind="click: changeAdType.bind($data, 1)">Anunt Simplu</a></li>
<li class="tab col"><a href="#cotatie" data-bind="click: changeAdType.bind($data, 2)">Cere o Cotatie</a></li>
</ul>
<div id="cotatie" data-bind="if: isLoggedIn">
<div class="row"> <div class="row">
<div class="col s12"> <div class="col s12">
<div class="info-contatie"> <div class="info-contatie">
Alege tipul și încarcă un fisier cu anuțul.<br> Alege tipul și încarcă un fisier cu anuțul.<br>
Vom analiza fișierul și veți găsi cotația de preț în meniul de sus COTAȚII sau pe email.<br> Vom analiza fișierul și veți găsi cotația de preț în meniul de sus COTAȚII
<b> Dacă acceptați cotația anuțul va fi publicat.</b> Dacă refuzați îl puteți șterge. sau pe email.<br>
<b> Dacă acceptați cotația anuțul va fi publicat.</b> Dacă refuzați îl
puteți șterge.
</div> </div>
</div> </div>
</div> </div>
<div class="row"> <div class="row">
<div class="input-field input-field col s12 mb20 select-ad-type"> <div class="input-field input-field col s12 mb20 select-ad-type">
<select data-bind="options: kinds, <select data-bind="options: kinds,
...@@ -167,44 +176,15 @@ ...@@ -167,44 +176,15 @@
</div> </div>
</div> </div>
<div class="col s12 m2 l1 hide-on-small-only"> <div class="col s12 m2 l1 hide-on-small-only">
<button data-target="reguli" class="btn-floating waves-effect waves-light right"><i class="material-icons">info_outline</i></button> <button data-target="reguli"
</div> class="btn-floating waves-effect waves-light right"><i
</div> class="material-icons">info_outline</i></button>
</div>
<div id="anunt-simplu" class="active">
<div class="input-field">
<textarea id="textarea1"
placeholder="Scrie anunțul tău aici."
class="materialize-textarea tooltipped"
data-position="bottom" data-delay="50"
data-bind="value: text"
data-tooltip="Scrie anunțul tău aici. Apasă pe INFO pentru regulament."
length="5000"></textarea>
<label for="textarea1">Text Anunț</label>
</div>
<div class="row">
<div class="file-field input-field col s12 m10 l11">
<div class="btn">
<span class="tooltipped" data-position="top"
data-delay="50" data-tooltip="Alege o Imagine">Imagine</span>
<button class="btn-floating btn-delete-image waves-effect waves-light red lighten-1 tooltipped"
data-position="top" data-delay="50" data-tooltip="Șterge Imaginea">
<i class="large material-icons">delete</i>
</button>
<input name="file" id="image-upload" type="file">
</div> </div>
<div class="file-path-wrapper">
<input id="file-path-name" class="file-path validate" type="text">
</div>
</div>
<div class="col s12 m2 l1 hide-on-small-only">
<button data-target="reguli" class="btn-floating waves-effect waves-light right"><i class="material-icons">info_outline</i></button>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
</div>
<div class="row"> <div class="row">
<div class="col s12" data-bind="foreach: publications"> <div class="col s12" data-bind="foreach: publications">
<div data-bind="visible: selected"> <div data-bind="visible: selected">
...@@ -236,8 +216,10 @@ ...@@ -236,8 +216,10 @@
<div class="col s12 m9"> <div class="col s12 m9">
<div class="row" data-bind="template: {foreach: options}"> <div class="row" data-bind="template: {foreach: options}">
<div class="col s12 m4"> <div class="col s12 m4">
<li class="options-item" data-bind="template: {afterRender: app.addTooltip}"> <li class="options-item"
<input data-bind="checked: $parent.optionIDs, value: id, attr: {id: 'o' + id}" type="checkbox" class="filled-in"> data-bind="template: {afterRender: app.addTooltip}">
<input data-bind="checked: $parent.optionIDs, value: id, attr: {id: 'o' + id}"
type="checkbox" class="filled-in">
<label class="tooltipped" <label class="tooltipped"
data-bind="text: name, attr: {'data-tooltip': description, 'for': 'o' + id}" data-bind="text: name, attr: {'data-tooltip': description, 'for': 'o' + id}"
data-position="bottom" data-delay="50"></label> data-position="bottom" data-delay="50"></label>
...@@ -256,18 +238,10 @@ ...@@ -256,18 +238,10 @@
</div> </div>
</div> </div>
</div> </div>
<div class="row">
<div class="col s12">
<button class="btn waves-effect waves-light right btn-next" onclick="gotostep('date_personale');">Pasul următor</button>
</div>
</div>
</div> </div>
</li> </li>
<li>
<div class="collapsible-header" id="date_personale"> </ul>
<i class="material-icons">person_pin</i>
<span class="step" data-bind="text: publications().length > 1 ? 'Pasul 3':'Pasul 2'">Pasul 3</span>Completează datele personale</div>
<div class="collapsible-body">
<div class="row"> <div class="row">
<form id="date_persoana"> <form id="date_persoana">
<div class="col s6"> <div class="col s6">
...@@ -279,16 +253,19 @@ ...@@ -279,16 +253,19 @@
</blockquote> </blockquote>
</div> </div>
<div class="input-field col s12"> <div class="input-field col s12">
<input placeholder="Nume (de familie)" id="first_name" type="text" data-bind="value: firstName" <input placeholder="Nume (de familie)" id="first_name" type="text"
data-bind="value: firstName"
data-sanitize="trim upper" data-sanitize="trim upper"
data-validation="required length custom" data-validation="required length custom"
data-validation-regexp="^([A-Za-zăîâșțĂÎÂȘȚ \-]+)$" data-validation-regexp="^([A-Za-zăîâșțĂÎÂȘȚ \-]+)$"
data-validation-length="3-20" data-suggestions="White, Green, Blue, Black, Brown" data-validation-length="3-20"
data-suggestions="White, Green, Blue, Black, Brown"
data-validation-error-msg="Numele trebuie să conțină doar litere (min 3, max 20 caractere)"> data-validation-error-msg="Numele trebuie să conțină doar litere (min 3, max 20 caractere)">
<label for="first_name">Nume</label> <label for="first_name">Nume</label>
</div> </div>
<div class="input-field col s12"> <div class="input-field col s12">
<input placeholder="Prenume" id="last_name" type="text" data-bind="value: lastName" <input placeholder="Prenume" id="last_name" type="text"
data-bind="value: lastName"
data-sanitize="trim upper" data-sanitize="trim upper"
data-validation="required length custom" data-validation="required length custom"
data-validation-regexp="^([A-Za-zăîâșțĂÎÂȘȚ \-]+)$" data-validation-regexp="^([A-Za-zăîâșțĂÎÂȘȚ \-]+)$"
...@@ -297,7 +274,8 @@ ...@@ -297,7 +274,8 @@
<label for="last_name">Prenume</label> <label for="last_name">Prenume</label>
</div> </div>
<div class="input-field col s12"> <div class="input-field col s12">
<input placeholder="Adresă completă" id="adresa" type="text" data-bind="value: address" <input placeholder="Adresă completă" id="adresa" type="text"
data-bind="value: address"
data-sanitize="trim" data-sanitize="trim"
data-validation="required length alphanumeric" data-validation="required length alphanumeric"
data-validation-allowing=" -.ăîâșțĂÎÂȘȚ" data-validation-allowing=" -.ăîâșțĂÎÂȘȚ"
...@@ -306,7 +284,8 @@ ...@@ -306,7 +284,8 @@
<label for="adresa">Adresă</label> <label for="adresa">Adresă</label>
</div> </div>
<div class="input-field col s12"> <div class="input-field col s12">
<input placeholder="Telefon (mobil/fix)" id="telefon" type="text" data-bind="value: phone" <input placeholder="Telefon (mobil/fix)" id="telefon" type="text"
data-bind="value: phone"
data-sanitize="trim" data-sanitize="trim"
data-validation="required length number" data-validation="required length number"
data-validation-length="9-15" data-validation-length="9-15"
...@@ -333,7 +312,8 @@ ...@@ -333,7 +312,8 @@
</div> </div>
</div> </div>
</div> </div>
<div class="col s6 tooltipped" data-position="top" data-delay="50" data-tooltip="Completați numai dacă sunteți Persoană Juridică"> <div class="col s6 tooltipped" data-position="top" data-delay="50"
data-tooltip="Completați numai dacă sunteți Persoană Juridică">
<div class="col s12"> <div class="col s12">
<blockquote> <blockquote>
<h5>Companie / Instituție (opțional)</h5> <h5>Companie / Instituție (opțional)</h5>
...@@ -341,7 +321,8 @@ ...@@ -341,7 +321,8 @@
</blockquote> </blockquote>
</div> </div>
<div class="input-field col s12"> <div class="input-field col s12">
<input placeholder="Denumire Societate / Instituție" id="societate_denumire" type="text" data-bind="value: company" <input placeholder="Denumire Societate / Instituție" id="societate_denumire"
type="text" data-bind="value: company"
data-sanitize="trim" data-sanitize="trim"
data-validation="length alphanumeric" data-validation="length alphanumeric"
data-validation-length="3-100" data-validation-length="3-100"
...@@ -351,7 +332,8 @@ ...@@ -351,7 +332,8 @@
<label for="societate_denumire">Denumire Societate / Instituție</label> <label for="societate_denumire">Denumire Societate / Instituție</label>
</div> </div>
<div class="input-field col s12"> <div class="input-field col s12">
<input placeholder="Codul Unic de Înregistrare" id="societate_cui" type="text" data-bind="value: vat" <input placeholder="Codul Unic de Înregistrare" id="societate_cui" type="text"
data-bind="value: vat"
data-sanitize="trim upper" data-sanitize="trim upper"
data-validation="custom" data-validation="custom"
data-validation-regexp="^(RO)?[0-9]{2,10}$" data-validation-regexp="^(RO)?[0-9]{2,10}$"
...@@ -360,7 +342,8 @@ ...@@ -360,7 +342,8 @@
<label for="societate_cui">C.U.I.</label> <label for="societate_cui">C.U.I.</label>
</div> </div>
<div class="input-field col s12"> <div class="input-field col s12">
<input placeholder="Număr Registrul Comerțului" id="societate_nrc" type="text" data-bind="value: crn" <input placeholder="Număr Registrul Comerțului" id="societate_nrc" type="text"
data-bind="value: crn"
data-sanitize="trim upper" data-sanitize="trim upper"
data-validation="length alphanumeric" data-validation="length alphanumeric"
data-validation-allowing="/" data-validation-allowing="/"
...@@ -370,7 +353,8 @@ ...@@ -370,7 +353,8 @@
<label for="societate_nrc">Nr.Reg.Com.</label> <label for="societate_nrc">Nr.Reg.Com.</label>
</div> </div>
<div class="input-field col s12"> <div class="input-field col s12">
<input placeholder="Adresă completă" id="adresa_firma" type="text" data-bind="value: address" <input placeholder="Adresă completă" id="adresa_firma" type="text"
data-bind="value: address"
data-sanitize="trim upper" data-sanitize="trim upper"
data-validation="length alphanumeric" data-validation="length alphanumeric"
data-validation-allowing=" -.ăîâșțĂÎÂȘȚ" data-validation-allowing=" -.ăîâșțĂÎÂȘȚ"
...@@ -380,7 +364,8 @@ ...@@ -380,7 +364,8 @@
<label for="adresa_firma">Adresă Companie</label> <label for="adresa_firma">Adresă Companie</label>
</div> </div>
<div class="input-field col s12"> <div class="input-field col s12">
<input placeholder="Cont Bancar" id="societate_cont" type="text" data-bind="value: iban" <input placeholder="Cont Bancar" id="societate_cont" type="text"
data-bind="value: iban"
data-sanitize="trim upper" data-sanitize="trim upper"
data-validation="length alphanumeric iban" data-validation="length alphanumeric iban"
data-validation-length="24" data-validation-length="24"
...@@ -389,7 +374,8 @@ ...@@ -389,7 +374,8 @@
<label for="societate_cont">Cont Bancar</label> <label for="societate_cont">Cont Bancar</label>
</div> </div>
<div class="input-field col s12"> <div class="input-field col s12">
<input placeholder="Nume Bancă" id="societate_banca" type="text" data-bind="value: bank" <input placeholder="Nume Bancă" id="societate_banca" type="text"
data-bind="value: bank"
data-sanitize="trim upper" data-sanitize="trim upper"
data-validation="length alphanumeric" data-validation="length alphanumeric"
data-validation-allowing=" -.ăîâșțĂÎÂȘȚ" data-validation-allowing=" -.ăîâșțĂÎÂȘȚ"
...@@ -402,36 +388,8 @@ ...@@ -402,36 +388,8 @@
</form> </form>
</div> </div>
</div> </div>
</li>
</ul>
</div>
<div class="col s12 m12 l3" id="right-column"> <div class="col s12 m12 l3" id="right-column">
<div class="block-pin" id="total"> <div class="block-pin" id="total">
<div class="card image-preview-container" data-bind="if: adType() == 1">
<div class="card-content white-text">
<span class="card-title">Imagine Anunț</span>
</div>
<div class="card-image image-preview-summary"></div>
</div>
<ul class="collection with-header z-depth-1">
<li class="collection-header">
<b>Sumar Anunț</b>
</li>
<li class="no-publication-message">
Nu există nici o publicație selectată.
</li>
<div data-bind="foreach: publications">
<li class="collection-item avatar" data-bind="visible: selected">
<img data-bind="attr: {src: image}" class="circle" >
<span class="title" data-bind="text: name"></span>
<div class="subtotal-item">Zile aparitii <span data-bind="text: dates().length"></span></div>
<div data-bind="if: $parent.adType() == 1" class="subtotal-item">Total de plata <span data-bind=" text: price().total"></span></div>
<a href="#!" class="secondary-content tooltipped" data-position="left" data-delay="50" data-tooltip="Șterge" data-bind="click: function(pub) {pub.selected(false);}"><i class="material-icons">delete_forever</i></a>
</li>
</div>
</ul>
<div class="card cyan darken-3"> <div class="card cyan darken-3">
<div class="card-content white-text"> <div class="card-content white-text">
<span class="card-title" data-bind="text: adType() == 1 ? 'Total General':'Info'"></span> <span class="card-title" data-bind="text: adType() == 1 ? 'Total General':'Info'"></span>
...@@ -448,12 +406,7 @@ ...@@ -448,12 +406,7 @@
</div> </div>
</div> </div>
<div class="card-action"> <div class="card-action">
<span data-bind="if: adType() == 1"> <span>
<button type="button" id="do-payment" disabled="disabled"
class="waves-effect waves-light btn btn-full"
data-bind="enable: isPristine(), click: doFinal">Finalizează</button>
</span>
<span data-bind="if: adType() == 2">
<button type="button" id="do-quote" disabled="disabled" <button type="button" id="do-quote" disabled="disabled"
class="waves-effect waves-light btn btn-full quote-btn-create" class="waves-effect waves-light btn btn-full quote-btn-create"
data-bind="enable: isPristineQuote(), click: doFinalQuote">Cotatie</button> data-bind="enable: isPristineQuote(), click: doFinalQuote">Cotatie</button>
...@@ -463,47 +416,51 @@ ...@@ -463,47 +416,51 @@
</div> </div>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<div class="section no-pad-bot" data-bind="visible: finalStep"> <div class="section no-pad-bot" data-bind="visible: finalStep">
<div class="container"> <div class="container">
<div class="row"> <div class="row">
<div class="col s12 m12 l9"> <!-- <div class="col s12 m12 l9">-->
<div class="row"> <!-- <div class="row">-->
<ul class="collection final"> <!-- <ul class="collection final">-->
<li class="collection-item"> <!-- <li class="collection-item">-->
<b>Sumar Anunț</b> <!-- <b>Sumar Anunț</b>-->
<a href="#" data-bind="click: finalStep(false);" <!-- <a href="#" data-bind="click: finalStep(false);"-->
class="waves-effect waves-light btn-link btn-ad-edit">Modifică Anunțul</a> <!-- class="waves-effect waves-light btn-link btn-ad-edit">Modifică Anunțul</a>-->
</li> <!-- </li>-->
<div data-bind="foreach: publications"> <!-- <div data-bind="foreach: publications">-->
<li class="collection-item avatar" data-bind="visible: isPristine() && selected"> <!-- <li class="collection-item avatar" data-bind="visible: isPristine() && selected">-->
<img alt="" class="circle" data-bind="attr: {src: image}"> <!-- <img alt="" class="circle" data-bind="attr: {src: image}">-->
<span class="title" data-bind="text: name"></span> <!-- <span class="title" data-bind="text: name"></span>-->
<p>Categorie: <span data-bind="text: columnStr()"></span></p> <!-- <p>Categorie: <span data-bind="text: columnStr()"></span></p>-->
<p>Date Apariție: <span data-bind="text: datesStr"></span></p> <!-- <p>Date Apariție: <span data-bind="text: datesStr"></span></p>-->
<!---->
<p data-bind="visible: optionStr().length > 0">Optionale: <!-- <p data-bind="visible: optionStr().length > 0">Optionale:-->
<span data-bind="text: optionStr"></span> <!-- <span data-bind="text: optionStr"></span>-->
</p> <!-- </p>-->
<p>Total de Plată: <span class="ron badge" data-bind="text: price().total"></span></p> <!-- <p>Total de Plată: <span class="ron badge" data-bind="text: price().total"></span></p>-->
</li> <!-- </li>-->
</div> <!-- </div>-->
<li class="collection-item avatar finalize-ad-text"> <!-- <li class="collection-item avatar finalize-ad-text">-->
<p><b>Text Anunț: </b><span data-bind="text: text"></span></p> <!-- <p><b>Text Anunț: </b><span data-bind="text: text"></span></p>-->
</li> <!-- </li>-->
</ul> <!-- </ul>-->
</div> <!-- </div>-->
</div> <!-- </div>-->
<div class="col s12 m12 l3"> <div class="col s12 m12 l3">
<div class="card card-final"> <div class="card card-final">
<div class="card-image image-preview-finalize"></div> <div class="card-image image-preview-finalize"></div>
<div class="card-content white finalize-sidebar"> <div class="card-content white finalize-sidebar">
<ul class="collection"> <ul class="collection">
<li class="collection-item">Cuvinte <span class="right" data-bind="text: words"></span></li> <li class="collection-item">Cuvinte <span class="right" data-bind="text: words"></span></li>
<li class="collection-item">Total fară TVA <span class="right" data-bind="text: price().base"></span></li> <li class="collection-item">Total fară TVA <span class="right"
<li class="collection-item">TVA <span class="right" data-bind="text: price().vat"></span></li> data-bind="text: price().base"></span></li>
<li class="collection-item"><b>Total de Plată: </b><b><span class="right" data-bind="text: price().total"></span></b></li> <li class="collection-item">TVA <span class="right" data-bind="text: price().vat"></span>
</li>
<li class="collection-item"><b>Total de Plată: </b><b><span class="right"
data-bind="text: price().total"></span></b>
</li>
</ul> </ul>
</div> </div>
<div class="card-action"> <div class="card-action">
...@@ -517,23 +474,24 @@ ...@@ -517,23 +474,24 @@
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<footer class="page-footer default_color scrollspy" > <footer class="page-footer default_color scrollspy">
<div class="container"> <div class="container">
<div class="row"> <div class="row">
<div class="col l6 s12"> <div class="col l6 s12">
<h5 class="white-text">Rofusion Advertising Srl</h5> <h5 class="white-text">Rofusion Advertising Srl</h5>
<p class="white-text text-lighten-4">Anunturi mica publicitate<br>Anuțuri presa scrisă</p> <p class="white-text text-lighten-4">Anunturi mica publicitate<br>Anuțuri presa scrisă</p>
<ul> <ul>
<li><a href="termeni-si-conditii-mica24.html" class="white-text" title="Termeni și Condiții">Termeni și Condiții</a></li> <li><a href="termeni-si-conditii-mica24.html" class="white-text" title="Termeni și Condiții">Termeni
și Condiții</a></li>
</ul> </ul>
</div> </div>
<div class="col l6 s12 right-align"> <div class="col l6 s12 right-align">
<h5 class="white-text" id="contact">Contact</h5> <h5 class="white-text" id="contact">Contact</h5>
<ul class="white-text"> <ul class="white-text">
<li>Bd. Ion Mihalache nr. 140 S<br>Sector 1, București</li> <li>Bd. Ion Mihalache nr. 140 S<br>Sector 1, București</li>
<li>Telefon </li> <li>Telefon</li>
</ul> </ul>
</div> </div>
</div> </div>
...@@ -541,35 +499,37 @@ ...@@ -541,35 +499,37 @@
<div class="footer-copyright z-depth-1"> <div class="footer-copyright z-depth-1">
<div class="container"> <div class="container">
<b>&copy; Rofusion Advertising Srl</b> <b>&copy; Rofusion Advertising Srl</b>
<span class="right">dezvoltat de <a href="http://www.activemall.ro" class="white-text" target="_blank" title="activemall.ro">activemall.ro</a></span> <span class="right">dezvoltat de <a href="http://www.activemall.ro" class="white-text" target="_blank"
title="activemall.ro">activemall.ro</a></span>
</div> </div>
</div> </div>
</footer> </footer>
<div id="reguli" class="modal"> <div id="reguli" class="modal">
<div class="modal-content"> <div class="modal-content">
<h4>Reguli de redactare a unui anunț</h4> <h4>Reguli de redactare a unui anunț</h4>
<p>1. Nu scrieți cuvinte jignitoare sau ofensatoare.<br>2. Nu scrieți cuvintele legate între ele.<br>3. Numărul minim de cuvinte taxate este de 10, indiferent de lungimea anunțului dvs.</p> <p>1. Nu scrieți cuvinte jignitoare sau ofensatoare.<br>2. Nu scrieți cuvintele legate între ele.<br>3. Numărul
minim de cuvinte taxate este de 10, indiferent de lungimea anunțului dvs.</p>
</div> </div>
<div class="modal-footer"> <div class="modal-footer">
<a href="#!" class=" modal-action modal-close waves-effect waves-green btn-flat">OK</a> <a href="#!" class=" modal-action modal-close waves-effect waves-green btn-flat">OK</a>
</div> </div>
</div> </div>
<script src="js/jquery-3.1.0.min.js"></script> <script src="js/jquery-3.1.0.min.js"></script>
<script src="js/materialize.js"></script> <script src="js/materialize.js"></script>
<script src="js/modernizr.js"></script> <script src="js/modernizr.js"></script>
<script src="js/kalendae.standalone.js"></script> <script src="js/kalendae.standalone.js"></script>
<script src="js/moment.js"></script> <script src="js/moment.js"></script>
<script src="js/knockout-min.js"></script> <script src="js/knockout-min.js"></script>
<script src="js/knockout.mapping-latest.js"></script> <script src="js/knockout.mapping-latest.js"></script>
<script src="js/form-validator/jquery.form-validator.min.js"></script> <script src="js/form-validator/jquery.form-validator.min.js"></script>
<script src="js/jquery.filer.min.js"></script> <script src="js/jquery.filer.min.js"></script>
<script> <script>
var jenuPublication = <?php echo $jenuPublication; ?>; var jenuPublication = <?php echo $jenuPublication; ?>;
</script> </script>
<script src="js/main.js"></script> <script src="js/main.js"></script>
<!--Start of Tawk.to Script--> <!--Start of Tawk.to Script-->
<!-- <script type="text/javascript"> <!-- <script type="text/javascript">
var Tawk_API=Tawk_API||{}, Tawk_LoadStart=new Date(); var Tawk_API=Tawk_API||{}, Tawk_LoadStart=new Date();
(function(){ (function(){
...@@ -581,7 +541,7 @@ ...@@ -581,7 +541,7 @@
s0.parentNode.insertBefore(s1,s0); s0.parentNode.insertBefore(s1,s0);
})(); })();
</script> --> </script> -->
<!--End of Tawk.to Script--> <!--End of Tawk.to Script-->
</body> </body>
</html> </html>
<!DOCTYPE html> <!DOCTYPE html>
<html lang="ro-RO"> <html lang="ro-RO">
<head> <head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1.0, user-scalable=no"> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1.0, user-scalable=no">
<title>mica24.ro - Anunțuri Presa Scrisă - România Liberă</title> <title>mica24.ro - Anunțuri Presa Scrisă - România Liberă</title>
<script src="js/jquery-3.1.0.min.js"></script> <script src="js/jquery-3.1.0.min.js"></script>
<script type="text/javascript"> <script type="text/javascript">
$(document).ready(function() { $(document).ready(function () {
$('#payForm').submit(); $('#payForm').submit();
}); });
</script> </script>
</head> </head>
<body> <body>
<?php <?php
if (!empty($data) && !empty($data['order']) && !empty($data['billing'])) { if (!empty($data) && !empty($data['order']) && !empty($data['billing'])) {
$order = $data['order']; $order = $data['order'];
$paymentSettings = $data["paymentSettings"]; $paymentSettings = $data["paymentSettings"];
...@@ -35,9 +35,8 @@ ...@@ -35,9 +35,8 @@
// var_dump($x509FilePath); // var_dump($x509FilePath);
// die(); // die();
// } // }
try try {
{ srand((double)microtime() * 1000000);
srand((double) microtime() * 1000000);
$objPmReqCard = new Mobilpay_Payment_Request_Card(); $objPmReqCard = new Mobilpay_Payment_Request_Card();
#merchant account signature - generated by mobilpay.ro for every merchant account #merchant account signature - generated by mobilpay.ro for every merchant account
#semnatura contului de comerciant - mergi pe www.mobilpay.ro Admin -> Conturi de comerciant -> Detalii -> Setari securitate #semnatura contului de comerciant - mergi pe www.mobilpay.ro Admin -> Conturi de comerciant -> Detalii -> Setari securitate
...@@ -50,7 +49,7 @@ ...@@ -50,7 +49,7 @@
"ad" => $order["reference"] "ad" => $order["reference"]
]; ];
if(!empty($order['quote_id'])){ if (!empty($order['quote_id'])) {
$objPmReqCard->params["quote"] = $order["quote_id"]; $objPmReqCard->params["quote"] = $order["quote_id"];
} }
#below is where mobilPay will send the payment result. This URL will always be called first; mandatory #below is where mobilPay will send the payment result. This URL will always be called first; mandatory
...@@ -98,9 +97,7 @@ ...@@ -98,9 +97,7 @@
#uncomment the line below in order to see the content of the request #uncomment the line below in order to see the content of the request
// echo "<pre>";print_r($objPmReqCard);echo "</pre>"; // echo "<pre>";print_r($objPmReqCard);echo "</pre>";
$objPmReqCard->encrypt($x509FilePath); $objPmReqCard->encrypt($x509FilePath);
} } catch (Exception $e) {
catch(Exception $e)
{
} }
// die(); // die();
...@@ -108,12 +105,12 @@ ...@@ -108,12 +105,12 @@
?> ?>
<form name="payForm" id="payForm" action="<?php echo $paymentUrl; ?>" method="post"> <form name="payForm" id="payForm" action="<?php echo $paymentUrl; ?>" method="post">
<input type="hidden" name="env_key" value="<?php echo $objPmReqCard->getEnvKey();?>"/> <input type="hidden" name="env_key" value="<?php echo $objPmReqCard->getEnvKey(); ?>"/>
<input type="hidden" name="data" value="<?php echo $objPmReqCard->getEncData();?>"/> <input type="hidden" name="data" value="<?php echo $objPmReqCard->getEncData(); ?>"/>
<input type="submit" style="display: none;"> <input type="submit" style="display: none;">
</form> </form>
<?php <?php
} }
?> ?>
</body> </body>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment