Commit 5e8d4410 authored by Indra Raja's avatar Indra Raja

pusher.js

parent 0a7e6077
This diff is collapsed.
......@@ -166,6 +166,7 @@ return [
Controller\UmumController::class => Factory\UmumControllerFactory::class,
// Master\GlobalActionController::class => Factory\GlobalActionControllerFactory::class,
Controller\ApiController::class => Factory\ApiControllerFactory::class,
// Controller\ApiController::class => InvokableFactory::class,
],
],
......
......@@ -11,8 +11,12 @@ use Zend\Mvc\Controller\AbstractActionController;
use Zend\View\Model\ViewModel;
use Khansia\Generic\Result;
class AdminController extends \Application\Master\GlobalActionController
{
public function __construct($headScript)
{
$this->headScript = $headScript;
......@@ -31,6 +35,8 @@ class AdminController extends \Application\Master\GlobalActionController
$uri = $this->getRequest()->getUri();
$baseurl = sprintf('//%s', $uri->getHost());
$this->headScript->appendScript(' var baseURL = "' . $baseurl . '"');
$this->headScript->appendFile('/action-js/antrian-js/action-dasboaard.js');
......@@ -43,7 +49,9 @@ class AdminController extends \Application\Master\GlobalActionController
}
public function antrianadminAction()
{
$this->isLoggedIn();
$this->isLoggedIn();
$view = new ViewModel();
$result = new Result();
......@@ -52,38 +60,12 @@ class AdminController extends \Application\Master\GlobalActionController
$baseurl = sprintf('//%s', $uri->getHost());
$getpath = explode("/",$uri->getPath());
// echo "<pre>";
$id = $getpath[3];
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "http://queue.indra/api/nextantrian",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => array('inoantrian' => '7','idok' => '74','istatus' => '40'),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
$data = $this->getRequest()->getPost('');
print_r($data);
$this->headScript->appendScript(' var baseURL = "' . $baseurl . '"');
$this->headScript->appendScript(' var id = "' . $id . '"');
$this->headScript->appendScript(' var baseURL = "' . $baseurl . '"');
$this->headScript->appendFile('/action-js/antrian-js/action-admin.js');
$this->layout("slayout/layoutAdmin");
$this->layout("layout/layoutAdmin");
return $view;
}
public function registrasidokterAction()
......
......@@ -10,6 +10,10 @@ namespace Application\Controller;
use Zend\Mvc\Controller\AbstractActionController;
use Zend\View\Model\ViewModel;
use Khansia\Generic\Result;
use ZfrPusher\Client\Credentials;
use ZfrPusher\Client\PusherClient;
use ZfrPusher\Service\PusherService;
class UmumController extends \Application\Master\GlobalActionController
{
......@@ -41,6 +45,8 @@ class UmumController extends \Application\Master\GlobalActionController
{
$view = new ViewModel();
$result = new Result();
$today = gmdate("d M Y ", time()+60*60*7);
......@@ -53,23 +59,9 @@ class UmumController extends \Application\Master\GlobalActionController
// echo "<pre>";
$decodeid = base64_decode($getpath[3]);
curl_setopt_array($curl, array(
CURLOPT_URL => "http://queue.indra/api/nextantrian",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => array('inoantrian' => '7','idok' => '74','istatus' => '40'),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
// $data = $this->getRequest()->getRawBody();
......
......@@ -130,6 +130,12 @@ class Param extends Mapper {
$data = $this->_storage->loadantrianmiss($id);
return $data;
}
public function loadantrianregister($id = null){
$data = $this->_storage->loadantrianregister($id);
return $data;
}
public function loadPoli($id_poli = null){
$data = $this->_storage->loadPoli($id_poli);
return $data;
......
......@@ -1230,7 +1230,60 @@ class Mysql extends \Khansia\Db\Storage implements Skeleton {
$result->info = 'ERROR : ' . $ex->getMessage();
}
return $result;
}
}
public function loadantrianregister($id = null){
$result = new Result();
try {
$sql = " SELECT register_dokter.id_register, dokter_to_poli.nama_dokter, poli.nama_poli, ruang.nama_ruang,register_dokter.antrian_all,register_dokter.waktu_antrian, register_dokter.jam_mulai, register_dokter.create_date
FROM register_dokter
INNER JOIN poli
ON register_dokter.id_poli = poli.id_poli
INNER JOIN dokter_to_poli
ON register_dokter.id_dokter = dokter_to_poli.id_dokter
INNER JOIN ruang
ON register_dokter.id_ruang = ruang.id_ruang
Where register_dokter.create_date = CURRENT_DATE
";
if($id){
$sql .= " AND register_dokter.id_register= $id AND register_dokter.id_register IS NOT NULL" ;
}
$sql .= " ORDER BY poli.nama_poli asc , register_dokter.create_date";
// print_r($sql);die;
$stmt = $this->_db->query($sql);
$resdata = $stmt->execute();
$listdata = array();
foreach($resdata as $val){
// print_r($val);die;
array_push($listdata, $val);
}
if ($listdata) {
$result->code = 0;
$result->info = 'OK';
$result->data = $listdata;
}else{
$result->code = 1;
$result->info = 'nok';
}
}catch (\Zend\Db\Adapter\Exception\RuntimeException $ex) {
$result->code = 3;
$result->info = 'ERROR : ' . $ex->getMessage();
}catch (\Exception $ex) {
$result->code = 4;
$result->info = 'ERROR : ' . $ex->getMessage();
}
return $result;
}
public function loadantrianmiss($id){
$result = new Result();
try {
......
<!-- Page header -->
<div class="row">
<div class="page-header" style="border-bottom: 0px solid #ddd0;">
......@@ -20,18 +21,24 @@
</div>
</div>
<div class="justify-content-center">
<div class="col-sm-200" >
<audio id="MyAudioElement" autoplay>
<source src="a1.mp3" type="audio/ogg">
<source src="a1.mp3" type="audio/mpeg">
Your browser does not support the audio element.
</audio>
<div class="card mb-3 alert alert-info alert-styled-left alert-arrow-left alert-component col-sm-100" style="border-color: #e94c72;background: #faebd73b;width: 1300px;margin-left: 100px;">
<div class="text-center content-group">
<div><input type="hidden" value="nomer antrian" id="text-to-speech" placeholder="Enter text to speak..."/></div>
<p class="error-title" style=" font-weight: ;font-size:50px;font-family: Times New Roman, Times, serif;color: #fff"><span > Nomer</span></p>
<h1 class="error-title" style=" font-weight: bold;font-size:100px;font-family: Times New Roman, Times, serif;color: #fff"><span id="no_antrian"></span></h1>
<h1 class="error-title" style=" font-weight: bold;font-size:100px;font-family: Times New Roman, Times, serif;color: #fff"><span id="no_antrian_panggil"></span></h1>
<p class="error-title" style=" font-weight: ;font-size:50px;font-family: Times New Roman, Times, serif;color: #fff"><span > Please Proceed To</span></p>
<p class="error-title" style=" font-weight: ;font-size:50px;font-family: Times New Roman, Times, serif;color: #fff"><span id="ruang"></span></p>
<p class="error-title" style=" font-weight: ;font-size:50px;font-family: Times New Roman, Times, serif;color: #fff"><span > Silahkan Menuju Ke</span></p>
<p class="error-title" style=" font-weight: ;font-size:50px;font-family: Times New Roman, Times, serif;color: #fff"><span id="ruang_panggil"></span></p>
<!-- <div><input type="hidden" value="no_antrian" id="no_antrian" /></div>
<div><input type="hidden" value="nama_ruang" id="nama_ruang" /><span style="visibility:hidden" id="nama_ruang"></span></div> -->
......@@ -43,7 +50,6 @@
</div>
</div>
<!--
......
<div class="container"></div>
<form class="form-inline">
<div class="form-group form-control-lg ">
......@@ -25,7 +26,7 @@
</div>
<div class="text-center content-group">
<div><input type="hidden" value="nomer antrian" id="text-to-speech" placeholder="Enter text to speak..."/></div>
<h1 class="error-title" style=" font-weight: bold;font-size:250px;font-family: Times New Roman, Times, serif;color: #808080"><span id="no_antrian"></span></h1>
<h1 class="error-title" style=" font-weight: bold;font-size:243px;font-family: Times New Roman, Times, serif;color: #808080"><span id="no_antrian"></span></h1>
</div>
<div><input type="hidden" value="no_antrian" id="no_antrian" /></div>
......
......@@ -74,20 +74,6 @@
<label>Antrian Seluruh</label>
<input type="number" id="antrian_all" name="antrian_all" class="form-control" required /></input>
</div>
<div class="row col-lg-12">
<div class="form-group">
<label>Antrian Awal(mobile)</label>
<input style="width: 221px;" type="number" id="antrian_awal" name="antrian_awal" class="form-control" required /></input>
</div>
<div class="col-lg-6 sm-7">
<div class="form-group">
<label>Antrian Akhir(mobile)</label>
<input style="width: 230px;" type="number" id="antrian_akhir" name="antrian_akhir" class="form-control" required /></input>
</div>
</div>
</div>
<div class="row col-lg-12">
<div class="form-group">
<label>Waktu Mulai Antrian</label>
......@@ -161,20 +147,7 @@
<label>Antrian Seluruh</label>
<input type="number" id="antrian_alledt" name="antrian_all" class="form-control" required /></input>
</div>
<div class="row col-lg-12">
<div class="form-group">
<label>Antrian Awal(mobile)</label>
<input style="width: 221px;" type="number" id="antrian_awaledt" name="antrian_awal" class="form-control" required /></input>
</div>
<div class="col-lg-6 sm-7">
<div class="form-group">
<label>Antrian Akhir(mobile)</label>
<input style="width: 230px;" type="number" id="antrian_akhiredt" name="antrian_akhir" class="form-control" required /></input>
</div>
</div>
</div>
<div class="row col-lg-12">
<div class="form-group">
<label>Waktu Mulai Antrian</label>
......
......@@ -208,6 +208,7 @@
<?= $this->headScript()?>
<script src="<?php $this->basePath();?>/tamplateadmin/js/sb-admin-2.min.js"></script>
<script src="<?php $this->basePath();?>/js/jquery-clock-timepicker.min.js"></script>
<script src="<?php $this->basePath();?>/tamplateadmin/vendor/datatables/jquery.dataTables.min.js"></script>
<script src="<?php $this->basePath();?>/tamplateadmin/vendor/datatables/dataTables.bootstrap4.min.js"></script>
......
......@@ -87,7 +87,11 @@
<?= $this->headScript()
->prependFile($this->basePath('js/bootstrap.min.js'))
->prependFile($this->basePath('js/jquery-3.1.0.min.js'))
->prependFile($this->basePath('js/jquery-3.1.0.min.js'))
->prependFile(('https://js.pusher.com/7.0/pusher.min.js'))
?>
......
......@@ -2,23 +2,24 @@
/* JS comes here */
/* JS comes here */
function textToAudio() {
// let msg1 = "nomor antrian";
let no_antrian = document.getElementById("no_antrian").innerHTML;
let voice = "nomor antrian " + no_antrian;
console.log(voice)
let speech = new SpeechSynthesisUtterance();
speech.lang = "id";
speech.text = voice;
speech.volume = 1;
speech.rate = 0.70;
speech.rate = 0.70;
speech.pitch = 1;
window.speechSynthesis.speak(speech);
}
window.speechSynthesis.speak(speech);
}
function textToAudioRuang() {
// let msg1 = "nomor antrian";
......@@ -31,12 +32,12 @@ function textToAudioRuang() {
console.log(voice)
let speech = new SpeechSynthesisUtterance();
speech.lang = "id";
speech.text = voice;
speech.volume = 1;
speech.rate = 0.70;
speech.rate = 0.70;
speech.pitch = 1;
window.speechSynthesis.speak(speech);
}
......@@ -83,18 +84,7 @@ $('#poli').on('change', function () {
});
});
$( '#dokter' ).on( "change", function() {
$id_dokter =$('#dokter').val();
window.location.href = ("/admin/antrianadmin/" +$id_dokter);
});
if(window.location.pathname == "/admin/antrianadmin/" +id){
$( window ).on( "load", function() {
tampilangka(id)
loadantrian(id)
});
}
function loadpoli() {
$.ajax({
type: 'POST',
......@@ -133,15 +123,14 @@ function loadpoli() {
});
}
function loadantrian(id) {
$iddok= $('#dokter').val();
function loadantrian() {
var iddokter = $('#dokter').val();
$.ajax({
type: 'POST',
dataType: 'json',
url: baseURL + '/api/loadAntrianAdmin',
data: {
iid: id,
id: iddokter
},
......@@ -154,7 +143,7 @@ function loadantrian(id) {
if (result.code == 0) {
let data = result.data;
console.log(data);
console.log(data);
let counter = 1;
for (x in data) {
......@@ -188,17 +177,23 @@ function loadantrian(id) {
}
$('#dokter').on('change', function () {
loadantrian();
tampilangka();
});
$('#no_antrian').html('-');
function tampilangka(id) {
function tampilangka() {
var iddokter = $('#dokter').val();
$.ajax({
type: 'POST',
dataType: 'json',
url: baseURL + '/api/loadNoAntrian',
data: {
id_dokter: id,
id_dokter: iddokter,
},
async: false,
......@@ -271,40 +266,39 @@ function tampilangka(id) {
$('#btnNext').on('click', function () {
actionqueue(noantrian + 1, 20,id);
actionqueue(noantrian + 1, 20);
loadantrian()
});
$('#btnCall').on('click', function () {
actionqueue(noantrian, 30,id);
actionqueue(noantrian, 30);
});
$('#btnDone').on('click', function () {
actionqueue(noantrian, 50,id);
actionqueue(noantrian, 50);
});
$('#btnMissed').on('click', function () {
actionqueue(noantrian, 60,id);
actionqueue(noantrian, 60);
});
$('#btnServed').on('click', function () {
actionqueue(noantrian, 40,id);
actionqueue(noantrian, 40);
});
function actionqueue(antrianno, status, iddok) {
function actionqueue(antrianno, status) {
$.ajax({
type: 'POST',
dataType: 'json',
url: baseURL + '/api/nextantrian',
data: {
inoantrian: antrianno,
istatus: status,
idok: iddok,
istatus: status
},
success: function (result) {
......@@ -317,9 +311,9 @@ function actionqueue(antrianno, status, iddok) {
html: true,
type: "warning"
});
$('#no_antrian').html('-');
return false;
}
if (status == 20) {
......@@ -342,20 +336,8 @@ function actionqueue(antrianno, status, iddok) {
} else if (status == 30) {
// SOound call
var flush = new Audio('../../data/tone/a1.mp3');
setTimeout(function() {
flush.play(); }, )
flush.onended = function() {
textToAudio()
setTimeout(function() {
textToAudioRuang() }, 3000)
};
swal({
title: "Call!",
text: "Sedang Melakukan Panggilan",
......@@ -364,6 +346,21 @@ function actionqueue(antrianno, status, iddok) {
timer: 14000
});
var flush = new Audio('../../data/tone/a1.mp3');
flush.muted = true;
setTimeout(function() {
flush.muted = false;
flush.play() }, )
flush.onended = function() {
textToAudio()
setTimeout(function() {
textToAudioRuang() }, 3000)
};
$('#btnNext').prop('disabled', true);
......@@ -400,4 +397,4 @@ function actionqueue(antrianno, status, iddok) {
}
});
}
\ No newline at end of file
}
......@@ -253,16 +253,14 @@ $('#pilihno').on('click', function () {
});
function pilihAntrian() {
var $dokter = $('#dokter option:selected').attr("value");
var dokter = $('#dokter option:selected').attr("value");
$.ajax({
type: 'POST',
dataType: 'json',
url: baseURL + '/api/loadPilihAntrian',
data: {
iddok: $dokter,
iddok: dokter,
},
success: function (response) {
......
......@@ -2,9 +2,13 @@
dir=$(cd "${0%[/\\]*}" > /dev/null; cd "../zendframework/zend-servicemanager/bin" && pwd)
if [ -d /proc/cygdrive ] && [[ $(which php) == $(readlink -n /proc/cygdrive)/* ]]; then
# We are in Cgywin using Windows php, so the path must be translated
dir=$(cygpath -m "$dir");
if [ -d /proc/cygdrive ]; then
case $(which php) in
$(readlink -n /proc/cygdrive)/*)
# We are in Cygwin using Windows php, so the path must be translated
dir=$(cygpath -m "$dir");
;;
esac
fi
"${dir}/generate-deps-for-config-factory" "$@"
......@@ -2,9 +2,13 @@
dir=$(cd "${0%[/\\]*}" > /dev/null; cd "../zendframework/zend-servicemanager/bin" && pwd)
if [ -d /proc/cygdrive ] && [[ $(which php) == $(readlink -n /proc/cygdrive)/* ]]; then
# We are in Cgywin using Windows php, so the path must be translated
dir=$(cygpath -m "$dir");
if [ -d /proc/cygdrive ]; then
case $(which php) in
$(readlink -n /proc/cygdrive)/*)
# We are in Cygwin using Windows php, so the path must be translated
dir=$(cygpath -m "$dir");
;;
esac
fi
"${dir}/generate-factory-for-class" "$@"
......@@ -2,9 +2,13 @@
dir=$(cd "${0%[/\\]*}" > /dev/null; cd "../zendframework/zend-view/bin" && pwd)
if [ -d /proc/cygdrive ] && [[ $(which php) == $(readlink -n /proc/cygdrive)/* ]]; then
# We are in Cgywin using Windows php, so the path must be translated
dir=$(cygpath -m "$dir");
if [ -d /proc/cygdrive ]; then
case $(which php) in
$(readlink -n /proc/cygdrive)/*)
# We are in Cygwin using Windows php, so the path must be translated
dir=$(cygpath -m "$dir");
;;
esac
fi
"${dir}/templatemap_generator.php" "$@"
......@@ -60,7 +60,7 @@ class ClassLoader
public function getPrefixes()
{
if (!empty($this->prefixesPsr0)) {
return call_user_func_array('array_merge', $this->prefixesPsr0);
return call_user_func_array('array_merge', array_values($this->prefixesPsr0));
}
return array();
......@@ -279,7 +279,7 @@ class ClassLoader
*/
public function setApcuPrefix($apcuPrefix)
{
$this->apcuPrefix = function_exists('apcu_fetch') && ini_get('apc.enabled') ? $apcuPrefix : null;
$this->apcuPrefix = function_exists('apcu_fetch') && filter_var(ini_get('apc.enabled'), FILTER_VALIDATE_BOOLEAN) ? $apcuPrefix : null;
}
/**
......@@ -377,11 +377,11 @@ class ClassLoader
$subPath = $class;
while (false !== $lastPos = strrpos($subPath, '\\')) {
$subPath = substr($subPath, 0, $lastPos);
$search = $subPath.'\\';
$search = $subPath . '\\';
if (isset($this->prefixDirsPsr4[$search])) {
$pathEnd = DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $lastPos + 1);
foreach ($this->prefixDirsPsr4[$search] as $dir) {
$length = $this->prefixLengthsPsr4[$first][$search];
if (file_exists($file = $dir . DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $length))) {
if (file_exists($file = $dir . $pathEnd)) {
return $file;
}
}
......
......@@ -6,4 +6,19 @@ $vendorDir = dirname(dirname(__FILE__));
$baseDir = dirname($vendorDir);
return array(
'ZfrPusherTest\\Client\\Listener\\SignatureListenerTest' => $vendorDir . '/zfr/zfr-pusher/tests/ZfrPusherTest/Client/Listener/SignatureListenerTest.php',
'ZfrPusherTest\\Client\\PusherClientTest' => $vendorDir . '/zfr/zfr-pusher/tests/ZfrPusherTest/Client/PusherClientTest.php',
'ZfrPusherTest\\Client\\PusherSignatureTest' => $vendorDir . '/zfr/zfr-pusher/tests/ZfrPusherTest/Client/PusherSignatureTest.php',
'ZfrPusherTest\\Service\\PusherServiceTest' => $vendorDir . '/zfr/zfr-pusher/tests/ZfrPusherTest/Service/PusherServiceTest.php',
'ZfrPusher\\Client\\Credentials' => $vendorDir . '/zfr/zfr-pusher/src/ZfrPusher/Client/Credentials.php',
'ZfrPusher\\Client\\Listener\\SignatureListener' => $vendorDir . '/zfr/zfr-pusher/src/ZfrPusher/Client/Listener/SignatureListener.php',
'ZfrPusher\\Client\\PusherClient' => $vendorDir . '/zfr/zfr-pusher/src/ZfrPusher/Client/PusherClient.php',
'ZfrPusher\\Client\\PusherSignature' => $vendorDir . '/zfr/zfr-pusher/src/ZfrPusher/Client/PusherSignature.php',
'ZfrPusher\\Exception\\ExceptionInterface' => $vendorDir . '/zfr/zfr-pusher/src/ZfrPusher/Exception/ExceptionInterface.php',
'ZfrPusher\\Service\\Exception\\ForbiddenException' => $vendorDir . '/zfr/zfr-pusher/src/ZfrPusher/Service/Exception/ForbiddenException.php',
'ZfrPusher\\Service\\Exception\\RuntimeException' => $vendorDir . '/zfr/zfr-pusher/src/ZfrPusher/Service/Exception/RuntimeException.php',
'ZfrPusher\\Service\\Exception\\UnauthorizedException' => $vendorDir . '/zfr/zfr-pusher/src/ZfrPusher/Service/Exception/UnauthorizedException.php',
'ZfrPusher\\Service\\Exception\\UnknownResourceException' => $vendorDir . '/zfr/zfr-pusher/src/ZfrPusher/Service/Exception/UnknownResourceException.php',
'ZfrPusher\\Service\\PusherService' => $vendorDir . '/zfr/zfr-pusher/src/ZfrPusher/Service/PusherService.php',
'ZfrPusher\\Version' => $vendorDir . '/zfr/zfr-pusher/src/ZfrPusher/Version.php',
);
......@@ -7,4 +7,5 @@ $baseDir = dirname($vendorDir);
return array(
'10a6847eba8a430a134fad89f4a30a26' => $vendorDir . '/zendframework/zend-cache/autoload/patternPluginManagerPolyfill.php',
'3109cb1a231dcd04bee1f9f620d46975' => $vendorDir . '/paragonie/sodium_compat/autoload.php',
);
......@@ -6,4 +6,8 @@ $vendorDir = dirname(dirname(__FILE__));
$baseDir = dirname($vendorDir);
return array(
'ZfrPusher\\' => array($vendorDir . '/zfr/zfr-pusher/src'),
'ZfrPusherTest\\' => array($vendorDir . '/zfr/zfr-pusher/tests'),
'Guzzle\\Tests' => array($vendorDir . '/guzzle/guzzle/tests'),
'Guzzle' => array($vendorDir . '/guzzle/guzzle/src'),
);
......@@ -27,8 +27,11 @@ return array(
'Zend\\ComponentInstaller\\' => array($vendorDir . '/zendframework/zend-component-installer/src'),
'Zend\\Cache\\' => array($vendorDir . '/zendframework/zend-cache/src'),
'ZF\\DevelopmentMode\\' => array($vendorDir . '/zfcampus/zf-development-mode/src'),
'Symfony\\Component\\EventDispatcher\\' => array($vendorDir . '/symfony/event-dispatcher'),
'RestApi\\' => array($vendorDir . '/multidots/zf3-rest-api/src'),
'Pusher\\' => array($vendorDir . '/pusher/pusher-php-server/src'),
'Psr\\SimpleCache\\' => array($vendorDir . '/psr/simple-cache/src'),
'Psr\\Log\\' => array($vendorDir . '/psr/log/Psr/Log'),
'Psr\\Container\\' => array($vendorDir . '/psr/container/src'),
'Psr\\Cache\\' => array($vendorDir . '/psr/cache/src'),
'Khansia\\' => array($vendorDir . '/Khansia'),
......
......@@ -13,6 +13,9 @@ class ComposerAutoloaderInitfe7d3cb9e3e556360705ee29bb11bde9
}
}
/**
* @return \Composer\Autoload\ClassLoader
*/
public static function getLoader()
{
if (null !== self::$loader) {
......
......@@ -8,6 +8,7 @@ class ComposerStaticInitfe7d3cb9e3e556360705ee29bb11bde9
{
public static $files = array (
'10a6847eba8a430a134fad89f4a30a26' => __DIR__ . '/..' . '/zendframework/zend-cache/autoload/patternPluginManagerPolyfill.php',
'3109cb1a231dcd04bee1f9f620d46975' => __DIR__ . '/..' . '/paragonie/sodium_compat/autoload.php',
);
public static $prefixLengthsPsr4 = array (
......@@ -35,13 +36,19 @@ class ComposerStaticInitfe7d3cb9e3e556360705ee29bb11bde9
'Zend\\Cache\\' => 11,
'ZF\\DevelopmentMode\\' => 19,
),
'S' =>
array (
'Symfony\\Component\\EventDispatcher\\' => 34,
),
'R' =>
array (
'RestApi\\' => 8,
),
'P' =>
array (
'Pusher\\' => 7,
'Psr\\SimpleCache\\' => 16,
'Psr\\Log\\' => 8,
'Psr\\Container\\' => 14,
'Psr\\Cache\\' => 10,
),
......@@ -149,14 +156,26 @@ class ComposerStaticInitfe7d3cb9e3e556360705ee29bb11bde9
array (
0 => __DIR__ . '/..' . '/zfcampus/zf-development-mode/src',
),
'Symfony\\Component\\EventDispatcher\\' =>
array (
0 => __DIR__ . '/..' . '/symfony/event-dispatcher',
),
'RestApi\\' =>
array (
0 => __DIR__ . '/..' . '/multidots/zf3-rest-api/src',
),
'Pusher\\' =>
array (
0 => __DIR__ . '/..' . '/pusher/pusher-php-server/src',
),
'Psr\\SimpleCache\\' =>
array (
0 => __DIR__ . '/..' . '/psr/simple-cache/src',
),
'Psr\\Log\\' =>
array (
0 => __DIR__ . '/..' . '/psr/log/Psr/Log',
),
'Psr\\Container\\' =>
array (
0 => __DIR__ . '/..' . '/psr/container/src',
......@@ -187,11 +206,56 @@ class ComposerStaticInitfe7d3cb9e3e556360705ee29bb11bde9
),
);
public static $prefixesPsr0 = array (
'Z' =>
array (
'ZfrPusher\\' =>
array (
0 => __DIR__ . '/..' . '/zfr/zfr-pusher/src',
),
'ZfrPusherTest\\' =>
array (
0 => __DIR__ . '/..' . '/zfr/zfr-pusher/tests',
),
),
'G' =>
array (
'Guzzle\\Tests' =>
array (
0 => __DIR__ . '/..' . '/guzzle/guzzle/tests',
),
'Guzzle' =>
array (
0 => __DIR__ . '/..' . '/guzzle/guzzle/src',
),
),
);
public static $classMap = array (
'ZfrPusherTest\\Client\\Listener\\SignatureListenerTest' => __DIR__ . '/..' . '/zfr/zfr-pusher/tests/ZfrPusherTest/Client/Listener/SignatureListenerTest.php',
'ZfrPusherTest\\Client\\PusherClientTest' => __DIR__ . '/..' . '/zfr/zfr-pusher/tests/ZfrPusherTest/Client/PusherClientTest.php',
'ZfrPusherTest\\Client\\PusherSignatureTest' => __DIR__ . '/..' . '/zfr/zfr-pusher/tests/ZfrPusherTest/Client/PusherSignatureTest.php',
'ZfrPusherTest\\Service\\PusherServiceTest' => __DIR__ . '/..' . '/zfr/zfr-pusher/tests/ZfrPusherTest/Service/PusherServiceTest.php',
'ZfrPusher\\Client\\Credentials' => __DIR__ . '/..' . '/zfr/zfr-pusher/src/ZfrPusher/Client/Credentials.php',
'ZfrPusher\\Client\\Listener\\SignatureListener' => __DIR__ . '/..' . '/zfr/zfr-pusher/src/ZfrPusher/Client/Listener/SignatureListener.php',
'ZfrPusher\\Client\\PusherClient' => __DIR__ . '/..' . '/zfr/zfr-pusher/src/ZfrPusher/Client/PusherClient.php',
'ZfrPusher\\Client\\PusherSignature' => __DIR__ . '/..' . '/zfr/zfr-pusher/src/ZfrPusher/Client/PusherSignature.php',
'ZfrPusher\\Exception\\ExceptionInterface' => __DIR__ . '/..' . '/zfr/zfr-pusher/src/ZfrPusher/Exception/ExceptionInterface.php',
'ZfrPusher\\Service\\Exception\\ForbiddenException' => __DIR__ . '/..' . '/zfr/zfr-pusher/src/ZfrPusher/Service/Exception/ForbiddenException.php',
'ZfrPusher\\Service\\Exception\\RuntimeException' => __DIR__ . '/..' . '/zfr/zfr-pusher/src/ZfrPusher/Service/Exception/RuntimeException.php',
'ZfrPusher\\Service\\Exception\\UnauthorizedException' => __DIR__ . '/..' . '/zfr/zfr-pusher/src/ZfrPusher/Service/Exception/UnauthorizedException.php',
'ZfrPusher\\Service\\Exception\\UnknownResourceException' => __DIR__ . '/..' . '/zfr/zfr-pusher/src/ZfrPusher/Service/Exception/UnknownResourceException.php',
'ZfrPusher\\Service\\PusherService' => __DIR__ . '/..' . '/zfr/zfr-pusher/src/ZfrPusher/Service/PusherService.php',
'ZfrPusher\\Version' => __DIR__ . '/..' . '/zfr/zfr-pusher/src/ZfrPusher/Version.php',
);
public static function getInitializer(ClassLoader $loader)
{
return \Closure::bind(function () use ($loader) {
$loader->prefixLengthsPsr4 = ComposerStaticInitfe7d3cb9e3e556360705ee29bb11bde9::$prefixLengthsPsr4;
$loader->prefixDirsPsr4 = ComposerStaticInitfe7d3cb9e3e556360705ee29bb11bde9::$prefixDirsPsr4;
$loader->prefixesPsr0 = ComposerStaticInitfe7d3cb9e3e556360705ee29bb11bde9::$prefixesPsr0;
$loader->classMap = ComposerStaticInitfe7d3cb9e3e556360705ee29bb11bde9::$classMap;
}, null, ClassLoader::class);
}
......
This diff is collapsed.
......@@ -2,6 +2,60 @@
All notable changes to this project will be documented in this file, in reverse chronological order by release.
## 2.9.0 - 2019-08-29
### Added
- [#178](https://github.com/zendframework/zend-cache/pull/178) adds support for PHP 7.3.
### Changed
- [#186](https://github.com/zendframework/zend-cache/pull/186) replaces
deprecated `delete()` calls with `del()` in Redis adapter. `delete()`
function is deprecated since version 5.0.0 and `del()` is available
since version 2.1.0.
### Deprecated
- Nothing.
### Removed
- [#178](https://github.com/zendframework/zend-cache/pull/178) removes support for zend-stdlib v2 releases.
### Fixed
- Nothing.
## 2.8.3 - 2019-08-28
### Added
- Nothing.
### Changed
- Nothing.
### Deprecated
- Nothing.
### Removed
- Nothing.
### Fixed
- [#184](https://github.com/zendframework/zend-cache/pull/184) fixes
an issue with SimpleCacheDecorator where elements were deleted
after creation. Wrong TTL was set instead of using default value
from options.
- [#182](https://github.com/zendframework/zend-cache/pull/182) fixes
a typo in variable name within the `ExtMongoDbResourceManager::getResource`
method which prevented using custom db name when using that adapter.
## 2.8.2 - 2018-05-01
### Added
......
......@@ -23,7 +23,7 @@
"psr/simple-cache": "^1.0",
"zendframework/zend-eventmanager": "^2.6.3 || ^3.2",
"zendframework/zend-servicemanager": "^2.7.8 || ^3.3",
"zendframework/zend-stdlib": "^2.7.7 || ^3.1"
"zendframework/zend-stdlib": "^3.2.1"
},
"require-dev": {
"cache/integration-tests": "^0.16",
......@@ -76,8 +76,8 @@
},
"extra": {
"branch-alias": {
"dev-master": "2.8.x-dev",
"dev-develop": "2.9.x-dev"
"dev-master": "2.9.x-dev",
"dev-develop": "2.10.x-dev"
},
"zf": {
"component": "Zend\\Cache",
......
......@@ -297,7 +297,7 @@ class CaptureCache extends AbstractPattern
ErrorHandler::start();
if ($perm === false) {
// build-in mkdir function is enough
// built-in mkdir function is enough
$umask = ($umask !== false) ? umask($umask) : false;
$res = mkdir($pathname, ($perm !== false) ? $perm : 0775, true);
......@@ -318,7 +318,7 @@ class CaptureCache extends AbstractPattern
throw new Exception\RuntimeException("chmod('{$pathname}', 0{$oct}) failed", 0, $err);
}
} else {
// build-in mkdir function sets permission together with current umask
// built-in mkdir function sets permission together with current umask
// which doesn't work well on multo threaded webservers
// -> create directories one by one and set permissions
......
......@@ -152,7 +152,7 @@ class PatternOptions extends AbstractOptions
public function __construct($options = null)
{
// disable file/directory permissions by default on windows systems
if (strtoupper(substr(PHP_OS, 0, 3)) == 'WIN') {
if (stripos(PHP_OS, 'WIN') === 0) {
$this->filePermission = false;
$this->dirPermission = false;
}
......@@ -446,7 +446,7 @@ class PatternOptions extends AbstractOptions
);
} elseif ($filePermission & 0111) {
throw new Exception\InvalidArgumentException(
"Invalid file permission: Files shoudn't be executable"
"Invalid file permission: Files shouldn't be executable"
);
}
}
......
......@@ -104,7 +104,7 @@ class CacheItemPoolDecorator implements CacheItemPoolInterface
$keys = array_diff($keys, array_keys($items));
if (count($keys)) {
if ($keys) {
try {
$cacheItems = $this->storage->getItems($keys);
} catch (Exception\InvalidArgumentException $e) {
......
<?php
/**
* @see https://github.com/zendframework/zend-cache for the canonical source repository
* @copyright Copyright (c) 2018 Zend Technologies USA Inc. (https://www.zend.com)
* @copyright Copyright (c) 2018-2019 Zend Technologies USA Inc. (https://www.zend.com)
* @license https://github.com/zendframework/zend-cache/blob/master/LICENSE.md New BSD License
*/
......@@ -113,7 +113,10 @@ class SimpleCacheDecorator implements SimpleCacheInterface
$options = $this->storage->getOptions();
$previousTtl = $options->getTtl();
$options->setTtl($ttl);
if ($ttl !== null) {
$options->setTtl($ttl);
}
try {
$result = $this->storage->setItem($key, $value);
......@@ -213,7 +216,10 @@ class SimpleCacheDecorator implements SimpleCacheInterface
$options = $this->storage->getOptions();
$previousTtl = $options->getTtl();
$options->setTtl($ttl);
if ($ttl !== null) {
$options->setTtl($ttl);
}
try {
$result = $this->storage->setItems($values);
......
......@@ -220,7 +220,6 @@ class Dba extends AbstractAdapter implements
}
$prefix = $namespace . $this->getOptions()->getNamespaceSeparator();
$prefixl = strlen($prefix);
$result = true;
$this->_open();
......@@ -230,7 +229,7 @@ class Dba extends AbstractAdapter implements
$recheck = false;
$internalKey = dba_firstkey($this->handle);
while ($internalKey !== false && $internalKey !== null) {
if (substr($internalKey, 0, $prefixl) === $prefix) {
if (strpos($internalKey, $prefix) === 0) {
$result = dba_delete($internalKey, $this->handle) && $result;
}
......@@ -259,7 +258,6 @@ class Dba extends AbstractAdapter implements
$options = $this->getOptions();
$namespace = $options->getNamespace();
$prefix = ($namespace === '') ? '' : $namespace . $options->getNamespaceSeparator() . $prefix;
$prefixL = strlen($prefix);
$result = true;
$this->_open();
......@@ -269,7 +267,7 @@ class Dba extends AbstractAdapter implements
$recheck = false;
$internalKey = dba_firstkey($this->handle);
while ($internalKey !== false && $internalKey !== null) {
if (substr($internalKey, 0, $prefixL) === $prefix) {
if (strpos($internalKey, $prefix) === 0) {
$result = dba_delete($internalKey, $this->handle) && $result;
$recheck = true;
}
......
<?php
/**
* @see https://github.com/zendframework/zend-cache for the canonical source repository
* @copyright Copyright (c) 2018 Zend Technologies USA Inc. (https://www.zend.com)
* @copyright Copyright (c) 2018-2019 Zend Technologies USA Inc. (https://www.zend.com)
* @license https://github.com/zendframework/zend-cache/blob/master/LICENSE.md New BSD License
*/
......@@ -98,7 +98,7 @@ class ExtMongoDbResourceManager
}
$collection = $resource['client_instance']->selectCollection(
isset($resouce['db']) ? $resource['db'] : 'zend',
isset($resource['db']) ? $resource['db'] : 'zend',
isset($resource['collection']) ? $resource['collection'] : 'cache'
);
$collection->createIndex(['key' => 1]);
......
......@@ -1451,7 +1451,7 @@ class Filesystem extends AbstractAdapter implements
ErrorHandler::start();
if ($perm === false || $level == 1) {
// build-in mkdir function is enough
// built-in mkdir function is enough
$umask = ($umask !== false) ? umask($umask) : false;
$res = mkdir($pathname, ($perm !== false) ? $perm : 0775, true);
......@@ -1480,7 +1480,7 @@ class Filesystem extends AbstractAdapter implements
throw new Exception\RuntimeException("chmod('{$pathname}', 0{$oct}) failed", 0, $err);
}
} else {
// build-in mkdir function sets permission together with current umask
// built-in mkdir function sets permission together with current umask
// which doesn't work well on multo threaded webservers
// -> create directories one by one and set permissions
......
......@@ -119,7 +119,7 @@ class FilesystemOptions extends AdapterOptions
public function __construct($options = null)
{
// disable file/directory permissions by default on windows systems
if (strtoupper(substr(PHP_OS, 0, 3)) == 'WIN') {
if (stripos(PHP_OS, 'WIN') === 0) {
$this->filePermission = false;
$this->dirPermission = false;
}
......@@ -322,7 +322,7 @@ class FilesystemOptions extends AdapterOptions
);
} elseif ($filePermission & 0111) {
throw new Exception\InvalidArgumentException(
"Invalid file permission: Cache files shoudn't be executable"
"Invalid file permission: Cache files shouldn't be executable"
);
}
}
......
......@@ -332,7 +332,7 @@ class MemcachedResourceManager
$reflection = new ReflectionClass('Memcached');
$constants = $reflection->getConstants();
foreach ($constants as $constName => $constValue) {
if (substr($constName, 0, 4) == 'OPT_') {
if (strpos($constName, 'OPT_') === 0) {
$libOptions[$constValue] = $resource->getOption($constValue);
}
}
......
......@@ -203,10 +203,9 @@ class Memory extends AbstractAdapter implements
return true;
}
$prefixL = strlen($prefix);
$data = & $this->data[$ns];
foreach ($data as $key => & $item) {
if (substr($key, 0, $prefixL) === $prefix) {
if (strpos($key, $prefix) === 0) {
unset($data[$key]);
}
}
......
......@@ -356,7 +356,7 @@ class Redis extends AbstractAdapter implements
{
$redis = $this->getRedisResource();
try {
return (bool) $redis->delete($this->namespacePrefix . $normalizedKey);
return (bool) $redis->del($this->namespacePrefix . $normalizedKey);
} catch (RedisResourceException $e) {
throw new Exception\RuntimeException($redis->getLastError(), $e->getCode(), $e);
}
......@@ -434,7 +434,7 @@ class Redis extends AbstractAdapter implements
$options = $this->getOptions();
$prefix = $namespace . $options->getNamespaceSeparator();
$redis->delete($redis->keys($prefix . '*'));
$redis->del($redis->keys($prefix . '*'));
return true;
}
......@@ -460,7 +460,7 @@ class Redis extends AbstractAdapter implements
$namespace = $options->getNamespace();
$prefix = ($namespace === '') ? '' : $namespace . $options->getNamespaceSeparator() . $prefix;
$redis->delete($redis->keys($prefix.'*'));
$redis->del($redis->keys($prefix.'*'));
return true;
}
......
......@@ -299,7 +299,7 @@ class RedisResourceManager
}
if (! $success) {
throw new Exception\RuntimeException('Could not estabilish connection with Redis instance');
throw new Exception\RuntimeException('Could not establish connection with Redis instance');
}
$resource['initialized'] = true;
......@@ -492,7 +492,7 @@ class RedisResourceManager
$reflection = new ReflectionClass('Redis');
$constants = $reflection->getConstants();
foreach ($constants as $constName => $constValue) {
if (substr($constName, 0, 4) == 'OPT_') {
if (strpos($constName, 'OPT_') === 0) {
$libOptions[$constValue] = $resource['resource']->getOption($constValue);
}
}
......
......@@ -123,9 +123,8 @@ class Session extends AbstractAdapter implements
}
$data = $cntr->offsetGet($ns);
$prefixL = strlen($prefix);
foreach ($data as $key => & $item) {
if (substr($key, 0, $prefixL) === $prefix) {
if (strpos($key, $prefix) === 0) {
unset($data[$key]);
}
}
......
......@@ -122,7 +122,7 @@ class Capabilities
protected $supportedDatatypes;
/**
* Supported metdata
* Supported metadata
*
* If it's NULL the capability isn't set and the getter
* returns the base capability or the default value.
......
......@@ -2,6 +2,33 @@
All notable changes to this project will be documented in this file, in reverse chronological order by release.
## 3.3.0 - 2019-06-08
### Added
- [#54](https://github.com/zendframework/zend-config/pull/54) adds support for PHP 7.3.
- [#58](https://github.com/zendframework/zend-config/pull/58) adds
`$processSections` to INI reader, allowing control over whether sections
should be parsed or not
- [#63](https://github.com/zendframework/zend-config/pull/63) adds .yml to
Zend\Config\Factory as an alternative extension for yaml
### Changed
- Nothing.
### Deprecated
- Nothing.
### Removed
- Nothing.
### Fixed
- Nothing.
## 3.2.0 - 2018-04-24
### Added
......
......@@ -52,8 +52,8 @@
},
"extra": {
"branch-alias": {
"dev-master": "3.2.x-dev",
"dev-develop": "3.3.x-dev"
"dev-master": "3.3.x-dev",
"dev-develop": "3.4.x-dev"
}
},
"scripts": {
......
......@@ -192,6 +192,6 @@ class AbstractConfigFactory implements AbstractFactoryInterface
return $matches[1];
}
}
return;
return null;
}
}
......@@ -37,6 +37,7 @@ class Factory
'json' => 'json',
'xml' => 'xml',
'yaml' => 'yaml',
'yml' => 'yaml',
'properties' => 'javaproperties',
];
......@@ -52,6 +53,7 @@ class Factory
'json' => 'json',
'xml' => 'xml',
'yaml' => 'yaml',
'yml' => 'yaml',
];
/**
......
......@@ -116,7 +116,7 @@ class Constant extends Token implements ProcessorInterface
return parent::doProcess($value, $replacements);
}
$class = substr($value, 0, strlen($value) - 7);
$class = substr($value, 0, -7);
if (class_exists($class)) {
return $class;
}
......
<?php
/**
* @see https://github.com/zendframework/zend-config for the canonical source repository
* @copyright Copyright (c) 2005-2017 Zend Technologies USA Inc. (http://www.zend.com)
* @copyright Copyright (c) 2005-2019 Zend Technologies USA Inc. (http://www.zend.com)
* @license https://github.com/zendframework/zend-config/blob/master/LICENSE.md New BSD License
*/
......@@ -28,6 +28,14 @@ class Ini implements ReaderInterface
*/
protected $directory;
/**
* Flag which determines whether sections are processed or not.
*
* @see https://www.php.net/parse_ini_file
* @var bool
*/
protected $processSections = true;
/**
* Set nest separator.
*
......@@ -50,6 +58,34 @@ class Ini implements ReaderInterface
return $this->nestSeparator;
}
/**
* Marks whether sections should be processed.
* When sections are not processed,section names are stripped and section
* values are merged
*
* @see https://www.php.net/parse_ini_file
* @param bool $processSections
* @return $this
*/
public function setProcessSections($processSections)
{
$this->processSections = (bool) $processSections;
return $this;
}
/**
* Get if sections should be processed
* When sections are not processed,section names are stripped and section
* values are merged
*
* @see https://www.php.net/parse_ini_file
* @return bool
*/
public function getProcessSections()
{
return $this->processSections;
}
/**
* fromFile(): defined by Reader interface.
*
......@@ -78,7 +114,7 @@ class Ini implements ReaderInterface
},
E_WARNING
);
$ini = parse_ini_file($filename, true);
$ini = parse_ini_file($filename, $this->getProcessSections());
restore_error_handler();
return $this->process($ini);
......@@ -107,7 +143,7 @@ class Ini implements ReaderInterface
},
E_WARNING
);
$ini = parse_ini_string($string, true);
$ini = parse_ini_string($string, $this->getProcessSections());
restore_error_handler();
return $this->process($ini);
......@@ -148,7 +184,7 @@ class Ini implements ReaderInterface
*/
private function buildNestedSection($sections, $value)
{
if (count($sections) == 0) {
if (! $sections) {
return $this->processSection($value);
}
......@@ -191,9 +227,11 @@ class Ini implements ReaderInterface
if (strpos($key, $this->nestSeparator) !== false) {
$pieces = explode($this->nestSeparator, $key, 2);
if (! strlen($pieces[0]) || ! strlen($pieces[1])) {
if ($pieces[0] === '' || $pieces[1] === '') {
throw new Exception\RuntimeException(sprintf('Invalid key "%s"', $key));
} elseif (! isset($config[$pieces[0]])) {
}
if (! isset($config[$pieces[0]])) {
if ($pieces[0] === '0' && ! empty($config)) {
$config = [$pieces[0] => $config];
} else {
......
......@@ -138,7 +138,7 @@ class JavaProperties implements ReaderInterface
$delimLength = strlen($delimiter);
$result = [];
$lines = explode("\n", $string);
$key = "";
$key = '';
$isWaitingOtherLine = false;
foreach ($lines as $i => $line) {
// Ignore empty lines and commented lines
......@@ -159,7 +159,7 @@ class JavaProperties implements ReaderInterface
// Check if ends with single '\' (indicating another line is expected)
if (strrpos($value, "\\") === strlen($value) - strlen("\\")) {
$value = substr($value, 0, strlen($value) - 1);
$value = substr($value, 0, -1);
$isWaitingOtherLine = true;
} else {
$isWaitingOtherLine = false;
......
......@@ -143,13 +143,17 @@ class Ini extends AbstractWriter
{
if (is_int($value) || is_float($value)) {
return $value;
} elseif (is_bool($value)) {
}
if (is_bool($value)) {
return ($value ? 'true' : 'false');
} elseif (false === strpos($value, '"')) {
}
if (false === strpos($value, '"')) {
return '"' . $value . '"';
} else {
throw new Exception\RuntimeException('Value can not contain double quotes');
}
throw new Exception\RuntimeException('Value can not contain double quotes');
}
/**
......
......@@ -2,7 +2,107 @@
All notable changes to this project will be documented in this file, in reverse chronological order by release.
## 2.9.3 - TBD
## 2.11.0 - 2019-12-31
### Added
- [#336](https://github.com/zendframework/zend-db/pull/336) adds `InsertIgnore` class for "INSERT IGNORE" usage (usable in `MySQL` platform).
- [#356](https://github.com/zendframework/zend-db/pull/356) adds support for `IN (NULL)` for empty value-set.
### Changed
- Nothing.
### Deprecated
- Nothing.
### Removed
- Nothing.
### Fixed
- [#146](https://github.com/zendframework/zend-db/pull/146) fixes setting correct value for `lastInsertValue` pre-insert in `SequenceFeature`.
## 2.10.1 - 2019-12-31
- Nothing.
### Changed
- Nothing.
### Deprecated
- Nothing.
### Removed
- Nothing.
### Fixed
- [#382](https://github.com/zendframework/zend-db/pull/382) fixes `Zend\Db\Sql\Expression` to allow `0` value for parameter.
- [#395](https://github.com/zendframework/zend-db/pull/395) fixes PHP 7.4 compatibility.
- [#392](https://github.com/zendframework/zend-db/pull/392) fixes `MetadataFeature` to work with `TableIdentifier`.
- [#399](https://github.com/zendframework/zend-db/pull/399) fixes accessing constraint metadata within the Oracle adapter.
- [#375](https://github.com/zendframework/zend-db/pull/375) fixes detecting number of replacements in `Zend\Db\Sql\Expression`.
- [#377](https://github.com/zendframework/zend-db/pull/377) allows any `AdapterInterface` instance in `RowGateway`.
- [#342](https://github.com/zendframework/zend-db/pull/342) fixes deleting from aliased tables.
- [#386](https://github.com/zendframework/zend-db/pull/386) fixes too strongly casting integer parameters in PDO adapter.
## 2.10.0 - 2019-02-25
### Added
- [#157](https://github.com/zendframework/zend-db/pull/157) added support of
`Zend\Db\Sql\TableIdentifier` in DDL
- [#345](https://github.com/zendframework/zend-db/pull/345) allow usage with
zend-hydrator v3
- [#346](https://github.com/zendframework/zend-db/pull/346) adds support for PHP
7.3
### Changed
- Nothing.
### Deprecated
- Nothing.
### Removed
- Nothing.
### Fixed
- [#303](https://github.com/zendframework/zend-db/pull/303) fixes #295 issue:
handle empty array as datasource at `AbstractResultSet::initialize()` at PHP
7.2
- [#313](https://github.com/zendframework/zend-db/pull/313) test
`AbstractResultSet::current()` to return null on empty array
- [#329](https://github.com/zendframework/zend-db/pull/329) fixes Exception
thrown when calling `prepareStatementForSqlObject` on a Select with a
sub-Select that has limit and/or offset set
- [#337](https://github.com/zendframework/zend-db/pull/337) fixes #330 current
NULL for mysqli
- [#338](https://github.com/zendframework/zend-db/pull/338) restore missing use
`ResultSet` in `AbstractTableGateway`
- [#341](https://github.com/zendframework/zend-db/pull/341) fixes undefined
variable bug in MetadataFeature
- [#357](https://github.com/zendframework/zend-db/pull/357) fixes named params
in subquery - limit and offset (issue #355)
## 2.9.3 - 2018-04-09
### Added
......@@ -22,7 +122,19 @@ All notable changes to this project will be documented in this file, in reverse
### Fixed
- [#295](https://github.com/zendframework/zend-db/pull/295) fix error when datasource passed to `AbstractResultSet::initialize()` is empty array at php 7.2 environment.
- [#295](https://github.com/zendframework/zend-db/pull/295) fix error when
datasource passed to `AbstractResultSet::initialize()` is empty array at
php 7.2 environment
- [#300](https://github.com/zendframework/zend-db/pull/300) Fix error for nested
queries inside field parameters
- [#301](https://github.com/zendframework/zend-db/pull/301) fix for issue with
set fields that exists in different tables in one query
- [#304](https://github.com/zendframework/zend-db/pull/304) fix PDO bind
parameter name to use field name with extended charset (PDO only supports
alphanumeric and underscore for placeholder/parameter names).
## 2.9.2 - 2017-12-11
......
Copyright (c) 2005-2017, Zend Technologies USA, Inc.
Copyright (c) 2005-2019, Zend Technologies USA, Inc.
All rights reserved.
Redistribution and use in source and binary forms, with or without modification,
......
This diff is collapsed.
<?xml version="1.0"?>
<ruleset name="Zend Framework coding standard">
<rule ref="./vendor/zendframework/zend-coding-standard/ruleset.xml" />
<rule ref="PSR1.Files.SideEffects">
<exclude-pattern>*/test/unit/Adapter/Driver/IbmDb2/StatementTest.php</exclude-pattern>
</rule>
<!-- Paths to check -->
<file>src</file>
<file>test</file>
</ruleset>
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
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