Skip to content
Code-Schnipsel Gruppen Projekte
Commit 1a66d383 erstellt von Henning Leutz's avatar Henning Leutz :martial_arts_uniform:
Dateien durchsuchen

Merge branch 'dev' of dev.quiqqer.com:quiqqer/package-cron into dev

Übergeordnete c3ce252a 6eeb6773
No related branches found
No related tags found
Keine zugehörigen Merge Requests gefunden
<?php
/**
* Gets the current Status for this instance
*
* @return string - Returns the status
*/
QUI::$Ajax->registerFunction(
'package_quiqqer_cron_ajax_cronservice_getStatus',
function () {
$CronService = new \QUI\Cron\CronService();
return $CronService->getStatus();
},
array(),
''
);
<?php
/**
* Revokes a registration on the cronservice server.
*
*/
QUI::$Ajax->registerFunction(
'package_quiqqer_cron_ajax_cronservice_revokeRegistration',
function () {
$CronService = new \QUI\Cron\CronService();
$CronService->revokeRegistration();
},
array(),
''
);
<?php
/**
* Sends a registration to the cronservice server.
*
*
*/
QUI::$Ajax->registerFunction(
'package_quiqqer_cron_ajax_cronservice_sendRegistration',
function ($email) {
$CronService = new \QUI\Cron\CronService();
$CronService->register($email);
},
array('email'),
''
);
.quiqqer-cron-cronservicewindow-btn-openRegistration {
margin : 30px auto 0 auto;
float : right;
}
.quiqqer-cron-cronserviceWindow h2 {
font-weight : normal;
margin-bottom : 10px;
}
.quiqqer-cron-cronservicewindow-title {
padding-bottom : 10px;
text-align : center;
}
.quiqqer-cron-cronservicewindow-title span {
clear : both;
display : block;
}
.quiqqer-cron-cronservicewindow-title .fa {
font-size : 60px;
}
.quiqqer-cron-cronservicewindow-section {
margin : 15px auto;
}
.quiqqer-cron-cronservicewindow-buttons {
text-align : center;
margin-top : 40px;
width : 100%;
}
.quiqqer-cron-cronservicewindow-stat-title {
font-weight : bold;
}
.quiqqer-cron-cronservice-table-stats {
width : 100%;
}
.quiqqer-cron-cronservice-table-stats td {
width : 50%;
}
.quiqqer-cron-cronservicewindow-stat-negative {
color : red;
}
.quiqqer-cron-cronservicewindow-stat-positive {
color : green;
}
/* Registration Sheet */
.quiqqer-cron-cronservicewindow-registration {
padding : 20px;
}
.quiqqer-cron-cronservicewindow-registration-title {
border-bottom : 1px solid #eee;
padding-bottom : 10px;
}
.quiqqer-cron-cronservicewindow-registration-lbl-email {
font-weight : bold;
padding : 2px;
width : 100%;
}
.quiqqer-cron-cronservicewindow-registration-txt-email {
width : 100%;
margin-top : 6px;
}
.quiqqer-cron-cronservicewindow-btn-register {
margin-top : 20px;
float : right;
}
<h1 class="quiqqer-cron-cronservicewindow-title">
<span class="fa fa-cloud"></span>
<span>{{cron_window_cronservice_content_title}}</span>
</h1>
<div class="quiqqer-cron-cronservicewindow-section">
<h2>{{cron_window_cronservice_content_about_title}}</h2>
<p>
{{cron_window_cronservice_content_about_text}}
</p>
</div>
<div class="quiqqer-cron-cronservicewindow-section">
<h2>{{cron_window_cronservice_content_status_title}}</h2>
{{cron_window_cronservice_content_status_text}}
<table class="quiqqer-cron-cronservice-table-stats">
<tr>
<td>
<span class="quiqqer-cron-cronservicewindow-stat-title">
{{cron_window_cronservice_content_register_lbl_stats_status}}
</span>
</td>
<td>
<span class="{{#active}}quiqqer-cron-cronservicewindow-stat-positive{{/active}}{{^active}}quiqqer-cron-cronservicewindow-stat-negative{{/active}}">
{{statusText}}
</span>
</td>
</tr>
{{#registered}}
<tr>
<td>
<span class="quiqqer-cron-cronservicewindow-stat-title">
{{cron_window_cronservice_content_register_lbl_stats_errors}}
</span>
</td>
<td>
{{statusErrors}}
</td>
</tr>
<tr>
<td>
<span class="quiqqer-cron-cronservicewindow-stat-title">
{{cron_window_cronservice_content_register_lbl_stats_lastExecution}}
</span>
</td>
<td>
{{statusLastExecution}}
</td>
</tr>
{{/registered}}
</table>
</div>
<div class="quiqqer-cron-cronservicewindow-buttons"></div>
\ No newline at end of file
/**
*
*/
define('package/quiqqer/cron/bin/CronServiceWindow', [
'qui/QUI',
'qui/controls/windows/Popup',
'qui/controls/buttons/Button',
'Mustache',
'Locale',
'Ajax',
'qui/controls/desktop/panels/Sheet',
'text!package/quiqqer/cron/bin/CronServiceWindow.html',
'text!package/quiqqer/cron/bin/CronServiceWindowRegistration.html',
'css!package/quiqqer/cron/bin/CronServiceWindow.css'
], function (QUI, QUIPopup, QUIButton, Mustache, QUILocale, QUIAjax, QUISheets, template, registrationTemplate) {
"use strict";
var lg = 'quiqqer/cron';
return new Class({
Extends: QUIPopup,
Type : 'package/quiqqer/cron/bin/CronServiceWindow',
Binds: [
'$onSubmit',
'$onOpen',
'showRegistration'
],
options: {
title : QUILocale.get(lg, 'cron.window.cronservice.title'),
icon : 'fa fa-cloud',
maxWidth : 400,
maxHeight: 600,
autoclose: false,
buttons : false
},
initialize: function (options) {
this.parent(options);
this.registered = false;
this.addEvents({
onOpen: this.$onOpen
});
},
$onOpen: function () {
var Content = this.getContent();
Content.set('html', '');
Content.addClass('quiqqer-cron-cronserviceWindow');
this.refresh();
},
/**
* refresh
*/
refresh: function () {
var self = this,
Content = this.getContent();
this.Loader.show();
QUIAjax.get('package_quiqqer_cron_ajax_cronservice_getStatus', function (result) {
var status = result;
var statusText = QUILocale.get(lg, 'cron.window.cronservice.status.text.unregistered');
if (status['status'] == 1) {
statusText = QUILocale.get(lg, 'cron.window.cronservice.status.text.registered');
}
if (status['status'] == 2) {
statusText = QUILocale.get(lg, 'cron.window.cronservice.status.text.inactive');
}
Content.set('html', Mustache.render(template, {
cron_window_cronservice_content_title : QUILocale.get(lg, 'cron.window.cronservice.content.title'),
cron_window_cronservice_content_about_title : QUILocale.get(lg, 'cron.window.cronservice.content.about.title'),
cron_window_cronservice_content_about_text : QUILocale.get(lg, 'cron.window.cronservice.content.about.text'),
cron_window_cronservice_content_status_title : QUILocale.get(lg, 'cron.window.cronservice.content.status.title'),
cron_window_cronservice_content_status_text : QUILocale.get(lg, 'cron.window.cronservice.content.status.text'),
cron_window_cronservice_content_btn_unregister : QUILocale.get(lg, 'cron.window.cronservice.content.register.btn.unregister'),
cron_window_cronservice_content_btn_register : QUILocale.get(lg, 'cron.window.cronservice.content.btn.register'),
cron_window_cronservice_content_register_lbl_stats_status : QUILocale.get(lg, 'cron.window.cronservice.content.register.lbl.stats.status'),
cron_window_cronservice_content_register_lbl_stats_errors : QUILocale.get(lg, 'cron.window.cronservice.content.register.lbl.stats.errors'),
cron_window_cronservice_content_register_lbl_stats_lastExecution: QUILocale.get(lg, 'cron.window.cronservice.content.register.lbl.stats.lastExecution'),
statusText : statusText,
status : status['status'],
statusErrors : status['current_failures'], //== 0 ? "0": status['errors'].toString(),
statusLastExecution : status['last_execution'],
registered : (status['status'] != 0),
active : (status['status'] == 1),
inactive : (status['status'] == 2)
}));
self.registered = (status['status'] != 0);
var Buttons = Content.getElement('.quiqqer-cron-cronservicewindow-buttons');
// get the button text : register or unregister
var btnText = QUILocale.get(lg, 'cron.window.cronservice.content.btn.register');
if (self.registered) {
btnText = QUILocale.get(lg, 'cron.window.cronservice.content.btn.unregister');
}
new QUIButton({
text : btnText,
textimage: 'fa fa-arrow-right',
events : {
onClick: function (Button) {
if (!self.registered) {
self.showRegistration();
return;
}
Button.setAttribute('text', QUILocale.get('quiqqer/cron', 'cron.window.cronservice.content.btn.unregister.confirm'));
if (Button.getAttribute('clickcnt') == 1) {
self.unregister().then(function () {
self.refresh();
});
}
Button.setAttribute('clickcnt', 1);
}
},
styles : {
'float': 'none',
margin : '0 auto',
width : 200
}
}).inject(Buttons);
self.Loader.hide();
}, {
'package': lg,
'onError': function () {
self.Loader.hide();
}
});
},
/**
* Opens the registration sheet
*/
showRegistration: function () {
var self = this;
new QUISheets({
header : true,
icon : 'fa fa-cloud',
title : QUILocale.get(lg, 'cron.window.cronservice.title'),
buttons: false,
events : {
onOpen: function (Sheet) {
var Content = Sheet.getContent();
Content.set('html', Mustache.render(registrationTemplate, {
cron_window_cronservice_registration_title : QUILocale.get(lg, 'cron.window.cronservice.registration.title'),
cron_window_cronservice_content_register_txt_email_title : QUILocale.get(lg, 'cron.window.cronservice.content.register.txt.email.title'),
cron_window_cronservice_content_register_placeholder_email: QUILocale.get(lg, 'cron.window.cronservice.content.register.placeholder.email'),
cron_window_cronservice_content_btn_register : QUILocale.get(lg, 'cron.window.cronservice.registration.title')
}));
var Email = Content.getElement('.quiqqer-cron-cronservicewindow-registration-txt-email');
Content.getElement('.quiqqer-cron-cronservicewindow-btn-register').addEvent('click', function () {
self.Loader.show();
self.register(Email.value).then(function () {
self.refresh();
Sheet.destroy();
}).catch(function () {
self.Loader.hide();
});
});
},
onClose: function (Sheet) {
Sheet.destroy();
}
}
}).inject(this.$Elm).show();
},
/**
* Register a email to the cron service
*
* @param {String} email
* @returns {Promise}
*/
register: function (email) {
return new Promise(function (resolve, reject) {
QUIAjax.post('package_quiqqer_cron_ajax_cronservice_sendRegistration', resolve, {
'package': lg,
'email' : email,
onError : reject
});
});
},
/**
* Unregister a email to the cron service
*
* @returns {Promise}
*/
unregister: function () {
return new Promise(function (resolve, reject) {
QUIAjax.get('package_quiqqer_cron_ajax_cronservice_revokeRegistration', resolve, {
'package': lg,
onError : reject
});
});
}
});
});
<div class="quiqqer-cron-cronservicewindow-registration">
<h1 class="quiqqer-cron-cronservicewindow-registration-title">
{{cron_window_cronservice_registration_title}}
</h1>
<form action="" method="POST">
<label
class="quiqqer-cron-cronservicewindow-registration-lbl-email"
for="quiqqer-cron-cronservicewindow-registration-txt-email"
>
{{cron_window_cronservice_content_register_txt_email_title}}
</label>
<input
id="quiqqer-cron-cronservicewindow-registration-txt-email"
type="text"
name="email"
required="required"
placeholder="{{cron_window_cronservice_content_register_placeholder_email}}"
class="quiqqer-cron-cronservicewindow-registration-txt-email"
/>
<div class="quiqqer-cron-cronservicewindow-btn-register qui-button">
<span class="fa fa-check"></span>
<span>{{cron_window_cronservice_content_btn_register}}</span>
</div>
</form>
</div>
\ No newline at end of file
......@@ -176,6 +176,21 @@ define('package/quiqqer/cron/bin/Manager', [
this.getButtons('delete').disable();
this.addButton(new QUIButtonSeperator());
this.addButton(
new QUIButton({
name : 'cronservice',
text : QUILocale.get(lg, 'cron.panel.manager.btn.cronservice.register'),
textimage: 'fa fa-cloud',
events : {
onClick: function () {
self.registerCronservice();
}
}
})
);
var Content = this.getContent(),
Container = new Element('div', {
......@@ -465,6 +480,16 @@ define('package/quiqqer/cron/bin/Manager', [
require(['package/quiqqer/cron/bin/History'], function (Panel) {
new Panel().inject(self.getParent());
});
},
/**
* Opens the Cronservice registration
*/
registerCronservice: function () {
require(['package/quiqqer/cron/bin/CronServiceWindow'], function (CronServiceWindow) {
var csWindow = new CronServiceWindow();
csWindow.open();
});
}
});
});
\ No newline at end of file
......@@ -21,6 +21,12 @@
<field type="INT( 11 ) NOT NULL">uid</field>
<field type="DATETIME NULL">lastexec</field>
</table>
<table name="cron_cronservice">
<field type="INT( 3 ) NOT NULL">cronid</field>
<field type="INT( 11 ) NOT NULL">uid</field>
<field type="DATETIME NULL">lastexec</field>
</table>
</global>
</database>
......@@ -58,6 +58,22 @@
<de><![CDATA[Der Administrator bekommt eine Nachricht wenn die Crons die letzten 24h nicht liefen.]]></de>
<en><![CDATA[The administrator receives a message when the Cron did not run the last 24 hours]]></en>
</locale>
<locale name="exception.registration.empty.domain">
<de><![CDATA[Es muss eine Domain angegeben sein]]></de>
<en><![CDATA[Domain can not be empty]]></en>
</locale>
<locale name="exception.registration.empty.email">
<de><![CDATA[Es muss eine Email angegeben sein.]]></de>
<en><![CDATA[An email must be given.]]></en>
</locale>
<locale name="exception.registration.empty.packageDir">
<de><![CDATA[Konnte den "package" Pfad nicht auslesen!]]></de>
<en><![CDATA[Could not parse the "package" folder path.]]></en>
</locale>
<locale name="cron.window.cronservice.status.text.last_execution.never">
<de><![CDATA[Nie]]></de>
<en><![CDATA[Never]]></en>
</locale>
</groups>
<groups name="quiqqer/cron" datatype="js">
<locale name="cron.id">
......@@ -146,6 +162,107 @@
<de><![CDATA[Aufgabenverlauf]]></de>
<en><![CDATA[Cron history]]></en>
</locale>
<locale name="cron.panel.manager.btn.cronservice.register">
<de><![CDATA[Cronservice]]></de>
<en><![CDATA[Cronservice]]></en>
</locale>
<locale name="cron.window.cronservice.title">
<de><![CDATA[Cronservice]]></de>
<en><![CDATA[Cronservice]]></en>
</locale>
<locale name="cron.window.cronservice.btn.cancel">
<de><![CDATA[Abbrechen]]></de>
<en><![CDATA[Cancel]]></en>
</locale>
<locale name="cron.window.cronservice.btn.register">
<de><![CDATA[Registrieren]]></de>
<en><![CDATA[Register]]></en>
</locale>
<locale name="cron.window.cronservice.content.title">
<de><![CDATA[Cronservice]]></de>
<en><![CDATA[Cronservice]]></en>
</locale>
<locale name="cron.window.cronservice.content.about.title">
<de><![CDATA[Was ist das?]]></de>
<en><![CDATA[About]]></en>
</locale>
<locale name="cron.window.cronservice.content.about.text">
<de><![CDATA[Der QUIQQER Cronservice ermöglicht es Crons auf Systemen auszuführen, die nativ keine Crons ausführen können.
Realisiert wird dies durch einen Server, an dem sich QUIQQER-SYteme anmelden können, welcher wiederrum regelmäßig die Crons der angemeldeten Systeme anstoßt.
Dies kann vorallem auf Shared-Hostings von großem Nutzen sein.]]></de>
<en><![CDATA[The QUIQQER cronservice enables systems withou native cronfunctionality to execute the QUIQQER crons anyway.
This is works with an external server on which QUIQQER systems can register themselves. This server will start the scheduled crons of all registered QUIQQER systems regularely.
]]></en>
</locale>
<locale name="cron.window.cronservice.content.status.title">
<de><![CDATA[Status]]></de>
<en><![CDATA[State]]></en>
</locale>
<locale name="cron.window.cronservice.content.status.text">
<de><![CDATA[Hier können Sie den Status Ihrer Registrierung verfolgen :]]></de>
<en><![CDATA[You can check the state of your registration here :]]></en>
</locale>
<locale name="cron.window.cronservice.content.btn.register">
<de><![CDATA[Registrieren]]></de>
<en><![CDATA[Register]]></en>
</locale>
<locale name="cron.window.cronservice.content.register.title">
<de><![CDATA[Registrieren]]></de>
<en><![CDATA[Register]]></en>
</locale>
<locale name="cron.window.cronservice.content.register.placeholder.email">
<de><![CDATA[Email]]></de>
<en><![CDATA[Email]]></en>
</locale>
<locale name="cron.window.cronservice.registration.title">
<de><![CDATA[Registration]]></de>
<en><![CDATA[Registration]]></en>
</locale>
<locale name="cron.window.cronservice.content.register.txt.email.title">
<de><![CDATA[Email]]></de>
<en><![CDATA[Email]]></en>
</locale>
<locale name="cron.window.cronservice.content.register.btn.register">
<de><![CDATA[Registrieren]]></de>
<en><![CDATA[Register]]></en>
</locale>
<locale name="cron.window.cronservice.content.register.btn.unregister">
<de><![CDATA[Abmelden]]></de>
<en><![CDATA[Unregister]]></en>
</locale>
<locale name="cron.window.cronservice.status.text.inactive">
<de><![CDATA[Inaktiv]]></de>
<en><![CDATA[Inactive]]></en>
</locale>
<locale name="cron.window.cronservice.status.text.registered">
<de><![CDATA[Aktiv]]></de>
<en><![CDATA[Active]]></en>
</locale>
<locale name="cron.window.cronservice.status.text.unregistered">
<de><![CDATA[Nicht registriert]]></de>
<en><![CDATA[Not registered]]></en>
</locale>
<locale name="cron.window.cronservice.content.register.lbl.stats.status">
<de><![CDATA[Status: ]]></de>
<en><![CDATA[Status: ]]></en>
</locale>
<locale name="cron.window.cronservice.content.register.lbl.stats.errors">
<de><![CDATA[Fehlerzahl: ]]></de>
<en><![CDATA[Errorcount: ]]></en>
</locale>
<locale name="cron.window.cronservice.content.register.lbl.stats.lastExecution">
<de><![CDATA[Letzte Ausführung: ]]></de>
<en><![CDATA[Last execution: ]]></en>
</locale>
<locale name="cron.window.cronservice.content.btn.unregister.confirm">
<de><![CDATA[Sind Sie sicher?]]></de>
<en><![CDATA[Are you sure?]]></en>
</locale>
<locale name="cron.window.cronservice.content.btn.unregister">
<de><![CDATA[Registrierung entfernen]]></de>
<en><![CDATA[Unregister]]></en>
</locale>
<locale name="permission.quiqqer.cron._header">
<de><![CDATA[Aufgaben / Tasks]]></de>
......@@ -175,6 +292,5 @@
<de><![CDATA[Darf Aufgaben / Tasks deaktivieren.]]></de>
<en><![CDATA[Can deactivate tasks.]]></en>
</locale>
</groups>
</locales>
\ No newline at end of file
<?php
namespace QUI\Cron;
use QUI;
use QUI\System\Log;
class CronService
{
const CRONSERVICE_URL = "https://cron.quiqqer.com";
private $domain;
private $https;
private $packageDir;
public function __construct()
{
$host = QUI::$Conf->get("globals", "host");
$cms_dir = QUI::$Conf->get("globals", "cms_dir");
$opt_dir = QUI::$Conf->get("globals", "opt_dir");
$url_dir = QUI::$Conf->get("globals", "url_dir");
// Parse Domain and protocol
if (strpos($host, "https://") !== false) {
$this->https = true;
$this->domain = str_replace("https://", "", $host);
} elseif (strpos($host, "http://") !== false) {
$this->https = false;
$this->domain = str_replace("http://", "", $host);
} else {
$this->https = false;
$this->domain = $host;
}
// Parse Package dir
$this->packageDir = $url_dir . str_replace($cms_dir, "", $opt_dir);
}
/**
* Will register this quiqqer instance.
*
* @param $email - Email used for communication. Must be valid.
*/
public function register($email)
{
$this->sendRegistrationRequest($this->domain, $email, $this->packageDir, $this->https);
}
/**
* Gets the status of the given domain.
*
* Returnformat :
* array(
* 'status' => 0, (0=unregistered; 1=active; 2=inactive)
* 'current_failures' => int,
* 'total_failures' => int,
* 'last_execution' => string (mysql dateformat | Localized 'never')
* )
*
* @return mixed
*/
public function getStatus()
{
$status = $this->makeServerAjaxCall('package_pcsg_cronservice_ajax_getStatus', array(
'domain' => $this->domain
));
if (empty($status['last_execution'])) {
$status['last_execution'] = QUI::getLocale()->get(
'quiqqer/cron',
'cron.window.cronservice.status.text.last_execution.never'
);
}
return $status;
}
/**
* Revoked the registration for this quiqqer instance
*/
public function revokeRegistration()
{
$token = $this->readRevokeToken();
$this->makeServerAjaxCall('package_pcsg_cronservice_ajax_revokeRegistration', array(
'domain' => $this->domain,
'token' => $token
));
}
/**
* Sends an ajax request to the cronservice server.
*
* @param $domain - The domain to be registered. Example : example.org
* @param $email - The Email that should be used for communication.
* @param $packageDir - The package url dir
* @param $https - wether or not http secure should be used to call the cron.php
* @throws Exception
*/
private function sendRegistrationRequest($domain, $email, $packageDir, $https)
{
if (empty($domain)) {
throw new Exception(array("quiqqer/cron", "exception.registration.empty.domain"));
}
if (empty($email)) {
throw new Exception(array("quiqqer/cron", "exception.registration.empty.email"));
}
if (empty($packageDir)) {
throw new Exception(array("quiqqer/cron", "exception.registration.empty.packageDir"));
}
$url = self::CRONSERVICE_URL . "/admin/ajax.php?" .
"_rf=" . urlencode("[\"package_pcsg_cronservice_ajax_register\"]") .
"&package=" . urlencode("pcsg/cronservice") .
"&lang=" . QUI::getUserBySession()->getLang() .
"&domain=" . urlencode($domain) .
"&email=" . urlencode($email) .
"&packageDir=" . urlencode($packageDir) .
"&https=" . ($https ? "1" : "0") .
"&user=" . QUI::getUserBySession()->getName();
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_URL => $url,
CURLOPT_USERAGENT => 'QUIQQER'
));
$response = curl_exec($curl);
$response = substr($response, 9, -10);
$data = json_decode($response, true);
if (json_last_error() != JSON_ERROR_NONE) {
Log::addDebug($response);
throw new Exception(json_last_error_msg());
}
if (!isset($data['package_pcsg_cronservice_ajax_register']['result'])) {
throw new Exception("Something went wrong!");
}
$data = $data['package_pcsg_cronservice_ajax_register']['result'];
if (!isset($data['status']) || $data['status'] != 1) {
Log::addDebug($response);
Log::writeRecursive($data);
if (isset($data['message'])) {
throw new Exception($data['message']);
}
throw new Exception("Something went wrong!");
}
$revokeCode = $data['revokeCode'];
$this->saveRevokeToken($revokeCode);
curl_close($curl);
}
/**
* Calls the given ajax function on the Cronservice server and returns its output
* @param $function - Ajax function name
* @param $params - Params to pass
* @return mixed
* @throws QUI\Exception
*/
private function makeServerAjaxCall($function, $params)
{
$url = self::CRONSERVICE_URL . "/admin/ajax.php?" .
"_rf=" . urlencode('["' . $function . '"]') .
"&package=" . urlencode("pcsg/cronservice") .
"&lang=" . QUI::getUserBySession()->getLang();
foreach ($params as $param => $value) {
$url .= '&' . $param . '=' . urlencode($value);
}
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_URL => $url,
CURLOPT_USERAGENT => 'QUIQQER'
));
$response = curl_exec($curl);
curl_close($curl);
// Process raw ajax response
$response = substr($response, 9, -10);
$response = json_decode($response, true);
if (isset($response[$function]['Exception'])) {
throw new QUI\Exception($response[$function]['Exception']['message']);
}
return $response[$function]['result'];
}
/**
* Saves the revoke token into a file
* @param $token
*/
private function saveRevokeToken($token)
{
$varDir = QUI::getPackage('quiqqer/cron')->getVarDir() . '/cronservice';
$fileName = $varDir . '/.revoketoken';
if (!is_dir($varDir)) {
mkdir($varDir, 0700, true);
}
file_put_contents($fileName, $token);
}
/**
* Reads the revoke token from the filesystem
* @return string
* @throws Exception
*/
private function readRevokeToken()
{
$varDir = QUI::getPackage('quiqqer/cron')->getVarDir() . '/cronservice';
$fileName = $varDir . '/.revoketoken';
if (!file_exists($fileName)) {
throw new Exception("Tokenfile not present");
}
$token = file_get_contents($fileName);
if ($token === false) {
throw new Exception("Could not read tokenfile.");
}
return $token;
}
}
<?php
namespace QUI\Cron;
use QUI;
class Exception extends QUI\Exception
{
}
0% oder .
You are about to add 0 people to the discussion. Proceed with caution.
Bearbeitung dieser Nachricht zuerst beenden!
Bitte registrieren oder zum Kommentieren