@ -0,0 +1,12 @@ |
|||||
|
<?php |
||||
|
|
||||
|
function format_bytes($bytes, $is_drive_size = true, $beforeunit = '', $afterunit = '') |
||||
|
{ |
||||
|
$btype = ($is_drive_size === true) ? 1000 : 1024; |
||||
|
$labels = array('B','KB','MB','GB','TB'); |
||||
|
for($x = 0; $bytes >= $btype && $x < (count($labels) - 1); $bytes /= $btype, $x++); // use 1000 rather than 1024 to simulate HD size not real size |
||||
|
if($labels[$x] == "TB") return(round($bytes, 3).$beforeunit.$labels[$x].$afterunit); |
||||
|
elseif($labels[$x] == "GB") return(round($bytes, 2).$beforeunit.$labels[$x].$afterunit); |
||||
|
elseif($labels[$x] == "MB") return(round($bytes, 2).$beforeunit.$labels[$x].$afterunit); |
||||
|
else return(round($bytes, 0).$beforeunit.$labels[$x].$afterunit); |
||||
|
} |
@ -0,0 +1,11 @@ |
|||||
|
<?php namespace App\SupportedApps\Contracts; |
||||
|
|
||||
|
interface Livestats { |
||||
|
|
||||
|
public function configDetails(); |
||||
|
|
||||
|
public function testConfig(); |
||||
|
|
||||
|
public function executeConfig(); |
||||
|
|
||||
|
} |
@ -1,16 +1,70 @@ |
|||||
<?php namespace App\SupportedApps; |
<?php namespace App\SupportedApps; |
||||
|
|
||||
class Pihole implements Contracts\Applications { |
use GuzzleHttp\Exception\GuzzleException; |
||||
|
use GuzzleHttp\Client; |
||||
|
|
||||
|
class Pihole implements Contracts\Applications, Contracts\Livestats { |
||||
public function defaultColour() |
public function defaultColour() |
||||
{ |
{ |
||||
return '#222'; |
return '#352222'; |
||||
} |
} |
||||
public function icon() |
public function icon() |
||||
{ |
{ |
||||
return 'supportedapps/pihole.png'; |
return 'supportedapps/pihole.png'; |
||||
} |
} |
||||
|
|
||||
public function configDetails() |
public function configDetails() |
||||
{ |
{ |
||||
return null; |
return 'pihole'; |
||||
|
} |
||||
|
|
||||
|
public function testConfig() |
||||
|
{ |
||||
|
$res = $this->buildRequest(); |
||||
|
switch($res->getStatusCode()) { |
||||
|
case 200: |
||||
|
echo 'Successfully connected to the API'; |
||||
|
break; |
||||
|
case 401: |
||||
|
echo 'Failed: Invalid credentials'; |
||||
|
break; |
||||
|
case 404: |
||||
|
echo 'Failed: Please make sure your URL is correct and that there is a trailing slash'; |
||||
|
break; |
||||
|
default: |
||||
|
echo 'Something went wrong... Code: '.$res->getStatusCode(); |
||||
|
break; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
public function executeConfig() |
||||
|
{ |
||||
|
$output = ''; |
||||
|
$res = $this->buildRequest(); |
||||
|
$data = json_decode($res->getBody()); |
||||
|
|
||||
|
$output = ' |
||||
|
<ul class="livestats"> |
||||
|
<li><span class="title">Domains<br />Blocked</span><strong>'.$data->domains_being_blocked.'</strong></li> |
||||
|
<li><span class="title">Blocked<br />Today</span><strong>'.$data->ads_blocked_today.'</span></strong></li> |
||||
|
</ul> |
||||
|
'; |
||||
|
return $output; |
||||
} |
} |
||||
|
|
||||
|
public function buildRequest() |
||||
|
{ |
||||
|
$config = $this->config; |
||||
|
$url = $config->url; |
||||
|
|
||||
|
$api_url = $url.'admin/api.php'; |
||||
|
//die( $api_url.' --- '); |
||||
|
|
||||
|
$client = new Client(['http_errors' => false]); |
||||
|
$res = $client->request('GET', $api_url); |
||||
|
return $res; |
||||
|
|
||||
|
} |
||||
|
|
||||
|
|
||||
} |
} |
@ -0,0 +1,82 @@ |
|||||
|
<?php namespace App\SupportedApps; |
||||
|
|
||||
|
use GuzzleHttp\Exception\GuzzleException; |
||||
|
use GuzzleHttp\Client; |
||||
|
|
||||
|
class Sabnzbd implements Contracts\Applications, Contracts\Livestats { |
||||
|
|
||||
|
public $config; |
||||
|
|
||||
|
public function defaultColour() |
||||
|
{ |
||||
|
return '#3e3924'; |
||||
|
} |
||||
|
public function icon() |
||||
|
{ |
||||
|
return 'supportedapps/sabnzbd.png'; |
||||
|
} |
||||
|
public function configDetails() |
||||
|
{ |
||||
|
return 'sabnzbd'; |
||||
|
} |
||||
|
public function testConfig() |
||||
|
{ |
||||
|
$res = $this->buildRequest('queue'); |
||||
|
switch($res->getStatusCode()) { |
||||
|
case 200: |
||||
|
$data = json_decode($res->getBody()); |
||||
|
if(isset($data->error) && !empty($data->error)) { |
||||
|
echo 'Failed: '.$data->error; |
||||
|
} else { |
||||
|
echo 'Successfully connected to the API'; |
||||
|
} |
||||
|
break; |
||||
|
case 401: |
||||
|
echo 'Failed: Invalid credentials'; |
||||
|
break; |
||||
|
case 404: |
||||
|
echo 'Failed: Please make sure your URL is correct and that there is a trailing slash'; |
||||
|
break; |
||||
|
default: |
||||
|
echo 'Something went wrong... Code: '.$res->getStatusCode(); |
||||
|
break; |
||||
|
} |
||||
|
} |
||||
|
public function executeConfig() |
||||
|
{ |
||||
|
$output = ''; |
||||
|
$res = $this->buildRequest('queue'); |
||||
|
$data = json_decode($res->getBody()); |
||||
|
//$data->result->RemainingSizeMB = '10000000'; |
||||
|
//$data->result->DownloadRate = '100000000'; |
||||
|
$size = $data->queue->mbleft; |
||||
|
$rate = $data->queue->kbpersec; |
||||
|
$queue_size = format_bytes($size*1000*1000, false, ' <span>', '</span>'); |
||||
|
$current_speed = format_bytes($rate*1000, false, ' <span>'); |
||||
|
|
||||
|
if($size > 0 || $rate > 0) { |
||||
|
$output = ' |
||||
|
<ul class="livestats"> |
||||
|
<li><span class="title">Queue</span><strong>'.$queue_size.'</strong></li> |
||||
|
<li><span class="title">Speed</span><strong>'.$current_speed.'/s</span></strong></li> |
||||
|
</ul> |
||||
|
'; |
||||
|
} |
||||
|
return $output; |
||||
|
} |
||||
|
public function buildRequest($endpoint) |
||||
|
{ |
||||
|
$config = $this->config; |
||||
|
$url = $config->url; |
||||
|
$apikey = $config->apikey; |
||||
|
|
||||
|
$api_url = $url.'api?output=json&apikey='.$apikey.'&mode='.$endpoint; |
||||
|
//die( $api_url.' --- '); |
||||
|
|
||||
|
$client = new Client(['http_errors' => false]); |
||||
|
$res = $client->request('GET', $api_url); |
||||
|
return $res; |
||||
|
|
||||
|
} |
||||
|
|
||||
|
} |
After Width: | Height: | Size: 11 KiB |
After Width: | Height: | Size: 14 KiB |
After Width: | Height: | Size: 2.1 KiB |
After Width: | Height: | Size: 2.5 KiB |
After Width: | Height: | Size: 5.1 KiB |
After Width: | Height: | Size: 7.1 KiB |
After Width: | Height: | Size: 8.6 KiB |
After Width: | Height: | Size: 9.1 KiB |
After Width: | Height: | Size: 11 KiB |
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 15 KiB |
After Width: | Height: | Size: 3.0 KiB |
After Width: | Height: | Size: 3.1 KiB |
After Width: | Height: | Size: 5.1 KiB |
After Width: | Height: | Size: 5.4 KiB |
After Width: | Height: | Size: 15 KiB |
After Width: | Height: | Size: 15 KiB |
@ -0,0 +1,2 @@ |
|||||
|
<?xml version="1.0" encoding="utf-8"?> |
||||
|
<browserconfig><msapplication><tile><square70x70logo src="/ms-icon-70x70.png"/><square150x150logo src="/ms-icon-150x150.png"/><square310x310logo src="/ms-icon-310x310.png"/><TileColor>#ffffff</TileColor></tile></msapplication></browserconfig> |
After Width: | Height: | Size: 1.3 KiB |
After Width: | Height: | Size: 1.9 KiB |
After Width: | Height: | Size: 7.1 KiB |
Before Width: | Height: | Size: 0 B After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 5.2 KiB |
@ -0,0 +1,41 @@ |
|||||
|
{ |
||||
|
"name": "App", |
||||
|
"icons": [ |
||||
|
{ |
||||
|
"src": "\/android-icon-36x36.png", |
||||
|
"sizes": "36x36", |
||||
|
"type": "image\/png", |
||||
|
"density": "0.75" |
||||
|
}, |
||||
|
{ |
||||
|
"src": "\/android-icon-48x48.png", |
||||
|
"sizes": "48x48", |
||||
|
"type": "image\/png", |
||||
|
"density": "1.0" |
||||
|
}, |
||||
|
{ |
||||
|
"src": "\/android-icon-72x72.png", |
||||
|
"sizes": "72x72", |
||||
|
"type": "image\/png", |
||||
|
"density": "1.5" |
||||
|
}, |
||||
|
{ |
||||
|
"src": "\/android-icon-96x96.png", |
||||
|
"sizes": "96x96", |
||||
|
"type": "image\/png", |
||||
|
"density": "2.0" |
||||
|
}, |
||||
|
{ |
||||
|
"src": "\/android-icon-144x144.png", |
||||
|
"sizes": "144x144", |
||||
|
"type": "image\/png", |
||||
|
"density": "3.0" |
||||
|
}, |
||||
|
{ |
||||
|
"src": "\/android-icon-192x192.png", |
||||
|
"sizes": "192x192", |
||||
|
"type": "image\/png", |
||||
|
"density": "4.0" |
||||
|
} |
||||
|
] |
||||
|
} |
@ -1,4 +1,4 @@ |
|||||
{ |
{ |
||||
"/css/app.css": "/css/app.css?id=4f5b9f5ba0f1f57405c8", |
"/css/app.css": "/css/app.css?id=414b5bf109854d80b269", |
||||
"/js/app.js": "/js/app.js?id=559585a774e3f088503a" |
"/js/app.js": "/js/app.js?id=b38be2e595ece6fcef81" |
||||
} |
} |
After Width: | Height: | Size: 11 KiB |
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 31 KiB |
After Width: | Height: | Size: 5.0 KiB |
@ -0,0 +1,78 @@ |
|||||
|
<?php |
||||
|
|
||||
|
return [ |
||||
|
|
||||
|
/* |
||||
|
|-------------------------------------------------------------------------- |
||||
|
| App Language Lines |
||||
|
|-------------------------------------------------------------------------- |
||||
|
| |
||||
|
*/ |
||||
|
|
||||
|
'settings.system' => 'Sistem', |
||||
|
'settings.appearance' => 'Görünüm', |
||||
|
'settings.miscellaneous' => 'Çeşitli', |
||||
|
|
||||
|
'settings.version' => 'Versiyon', |
||||
|
'settings.background_image' => 'Arkaplan Resmi', |
||||
|
'settings.homepage_search' => 'Anasayfa Arama', |
||||
|
'settings.search_provider' => 'Arama Motoru', |
||||
|
'settings.language' => 'Dil', |
||||
|
'settings.reset' => 'Varsayılana Geri Dön', |
||||
|
'settings.remove' => 'Sil', |
||||
|
'settings.search' => 'ara', |
||||
|
'settings.no_items' => 'Öğe bulunamadı', |
||||
|
|
||||
|
|
||||
|
'settings.label' => 'Etiket', |
||||
|
'settings.value' => 'Değer', |
||||
|
'settings.edit' => 'Düzenle', |
||||
|
'settings.view' => 'Görüntüle', |
||||
|
|
||||
|
'options.none' => '- ayarlanmadı -', |
||||
|
'options.google' => 'Google', |
||||
|
'options.ddg' => 'DuckDuckGo', |
||||
|
'options.bing' => 'Bing', |
||||
|
'options.yes' => 'Evet', |
||||
|
'options.no' => 'Hayır', |
||||
|
|
||||
|
'buttons.save' => 'Kaydet', |
||||
|
'buttons.cancel' => 'İptal', |
||||
|
'buttons.add' => 'Ekle', |
||||
|
'buttons.upload' => 'Dosya yükle', |
||||
|
|
||||
|
'dash.pin_item' => 'Ana panele iğnele', |
||||
|
'dash.no_apps' => 'Ana panele iğneli öğeler, :link1 or :link2', |
||||
|
'dash.link1' => 'Yeni uygulama ekle', |
||||
|
'dash.link2' => 'Ana panele iğnele', |
||||
|
'dash.pinned_items' => 'İğnelenen öğeler', |
||||
|
|
||||
|
'apps.app_list' => 'Uygulama listesi', |
||||
|
'apps.view_trash' => 'Çöpü görüntüle', |
||||
|
'apps.add_application' => 'Uygulama ekle', |
||||
|
'apps.application_name' => 'Uygulama adı', |
||||
|
'apps.colour' => 'Renk', |
||||
|
'apps.icon' => 'İkon', |
||||
|
'apps.pinned' => 'İğneli', |
||||
|
'apps.title' => 'Başlık', |
||||
|
'apps.hex' => 'Hex değeri', |
||||
|
'apps.username' => 'Kullanıcı adı', |
||||
|
'apps.password' => 'Şifre', |
||||
|
'apps.config' => 'Yapılandırma', |
||||
|
|
||||
|
'url' => 'Adres', |
||||
|
'title' => 'Başlık', |
||||
|
'delete' => 'Sil', |
||||
|
'optional' => 'İsteğe bağlı', |
||||
|
'restore' => 'Eski haline getir', |
||||
|
|
||||
|
'alert.success.item_created' => 'Öğe yaratıldı', |
||||
|
'alert.success.item_updated' => 'Öğe güncellendi', |
||||
|
'alert.success.item_deleted' => 'Öğe silindi', |
||||
|
'alert.success.item_restored' => 'Öğe eski haline getirildi', |
||||
|
|
||||
|
'alert.success.setting_updated' => 'Ayarlama kaydedildi', |
||||
|
'alert.error.not_exist' => 'Böyle bir seçenek yok.', |
||||
|
|
||||
|
|
||||
|
]; |
@ -0,0 +1,19 @@ |
|||||
|
<?php |
||||
|
|
||||
|
return [ |
||||
|
|
||||
|
/* |
||||
|
|-------------------------------------------------------------------------- |
||||
|
| Authentication Language Lines |
||||
|
|-------------------------------------------------------------------------- |
||||
|
| |
||||
|
| The following language lines are used during authentication for various |
||||
|
| messages that we need to display to the user. You are free to modify |
||||
|
| these language lines according to your application's requirements. |
||||
|
| |
||||
|
*/ |
||||
|
|
||||
|
'failed' => 'Kimlik bilgileri doğru değil.', |
||||
|
'throttle' => 'Çok fazla girişim. :seconds saniye sonra tekrar deneyin.', |
||||
|
|
||||
|
]; |
@ -0,0 +1,19 @@ |
|||||
|
<?php |
||||
|
|
||||
|
return [ |
||||
|
|
||||
|
/* |
||||
|
|-------------------------------------------------------------------------- |
||||
|
| Pagination Language Lines |
||||
|
|-------------------------------------------------------------------------- |
||||
|
| |
||||
|
| The following language lines are used by the paginator library to build |
||||
|
| the simple pagination links. You are free to change them to anything |
||||
|
| you want to customize your views to better match your application. |
||||
|
| |
||||
|
*/ |
||||
|
|
||||
|
'previous' => '« Önceki', |
||||
|
'next' => 'Sonraki »', |
||||
|
|
||||
|
]; |
@ -0,0 +1,22 @@ |
|||||
|
<?php |
||||
|
|
||||
|
return [ |
||||
|
|
||||
|
/* |
||||
|
|-------------------------------------------------------------------------- |
||||
|
| Password Reset Language Lines |
||||
|
|-------------------------------------------------------------------------- |
||||
|
| |
||||
|
| The following language lines are the default lines which match reasons |
||||
|
| that are given by the password broker for a password update attempt |
||||
|
| has failed, such as for an invalid token or invalid new password. |
||||
|
| |
||||
|
*/ |
||||
|
|
||||
|
'password' => 'Şifre en az altı karakter olmalı ve onaylamasına uymalıdır.', |
||||
|
'reset' => 'Şifreniz sıfırlandı!', |
||||
|
'sent' => 'Şifre sıfırlama bağlantısı eposta adresinize yollandı!', |
||||
|
'token' => 'Şifre sıfırlama simgesi geçerli değil.', |
||||
|
'user' => "Adresle ilişkili kullanıcı adı bulunamadı.", |
||||
|
|
||||
|
]; |
@ -0,0 +1,121 @@ |
|||||
|
<?php |
||||
|
|
||||
|
return [ |
||||
|
|
||||
|
/* |
||||
|
|-------------------------------------------------------------------------- |
||||
|
| Validation Language Lines |
||||
|
|-------------------------------------------------------------------------- |
||||
|
| |
||||
|
| The following language lines contain the default error messages used by |
||||
|
| the validator class. Some of these rules have multiple versions such |
||||
|
| as the size rules. Feel free to tweak each of these messages here. |
||||
|
| |
||||
|
*/ |
||||
|
|
||||
|
'accepted' => ':attribute kabul edilmelidir.', |
||||
|
'active_url' => ':attribute geçerli bir adres değil.', |
||||
|
'after' => ':attribute :date tarihinden sonra olmalıdır.', |
||||
|
'after_or_equal' => ':attribute :date ile aynı veya daha sonra tarihte olmalıdır.', |
||||
|
'alpha' => ':attribute sadece harf içerebilir.', |
||||
|
'alpha_dash' => ':attribute sadece harf, rakam, veya tire içerebilir.', |
||||
|
'alpha_num' => ':attribute sadece harf ve rakam içerebilir.', |
||||
|
'array' => ':attribute dizi olmalıdır.', |
||||
|
'before' => ':attribute :date tarihinden önce olmalıdır.', |
||||
|
'before_or_equal' => ':attribute :date ile aynı ya da daha önce tarihte olmalıdır.', |
||||
|
'between' => [ |
||||
|
'numeric' => ':attribute :min ile :max arasında olmalıdır.', |
||||
|
'file' => ':attribute :min ile :max kilobayt arasında olmalıdır.', |
||||
|
'string' => ':attribute :min ile :max arasında karakter içermelidir.', |
||||
|
'array' => ':attribute :min ile :max arasi öğe içermelidir.', |
||||
|
], |
||||
|
'boolean' => ':attribute alanı doğru ya da yanlış olmalıdır.', |
||||
|
'confirmed' => ':attribute onaylamasına uymuyor.', |
||||
|
'date' => ':attribute geçerli bir tarih değil.', |
||||
|
'date_format' => ':attribute :format düzenine uymuyor.', |
||||
|
'different' => ':attribute ve :other farklı olmalı.', |
||||
|
'digits' => ':attribute :digits haneli olmalıdır.', |
||||
|
'digits_between' => ':attribute :min ile :max arası haneli olmalıdır.', |
||||
|
'dimensions' => ':attribute resim boyutları geçersiz.', |
||||
|
'distinct' => ':attribute alan değeri zaten mevcut.', |
||||
|
'email' => ':attribute geçerli bir eposta adresi olmalıdır.', |
||||
|
'exists' => 'Seçili :attribute geçersiz.', |
||||
|
'file' => ':attribute dosya olmalıdır.', |
||||
|
'filled' => ':attribute alanı değer içermelidir.', |
||||
|
'image' => ':attribute resim olmalıdır.', |
||||
|
'in' => 'Seçili :attribute geçersiz.', |
||||
|
'in_array' => ':attribute :other içinde bulunmalıdır.', |
||||
|
'integer' => ':attribute tamsayı olmalıdır.', |
||||
|
'ip' => ':attribute geçerli IP adresi olmalıdır.', |
||||
|
'ipv4' => ':attribute geçerli IPv4 adresi olmalıdır.', |
||||
|
'ipv6' => ':attribute geçerli IPv6 adresi olmalıdır.', |
||||
|
'json' => ':attribute geçerli JSON dizesi olmalıdır.', |
||||
|
'max' => [ |
||||
|
'numeric' => ':attribute :max sayısından küçük olmalıdır.', |
||||
|
'file' => ':attribute :max kilobayttan küçük olmalıdır.', |
||||
|
'string' => ':attribute :max haneden az olmalıdır.', |
||||
|
'array' => ':attribute :max öğeden az içermelidir.', |
||||
|
], |
||||
|
'mimes' => 'Geçerli :attribute dosya tipi: :values.', |
||||
|
'mimetypes' => 'Geçerli :attribute dosya tipi: :values.', |
||||
|
'min' => [ |
||||
|
'numeric' => ':attribute en az :min olmalıdır.', |
||||
|
'file' => ':attribute en az :min kilobayt olmalıdır.', |
||||
|
'string' => ':attribute en az :min haneli olmalıdır.', |
||||
|
'array' => ':attribute en az :min öğe içermelidir.', |
||||
|
], |
||||
|
'not_in' => 'Seçili :attribute geçersiz.', |
||||
|
'numeric' => ':attribute sayı olmalıdır.', |
||||
|
'present' => ':attribute alanı dolu olmalı.', |
||||
|
'regex' => ':attribute düzeni geçersiz.', |
||||
|
'required' => ':attribute alanı gereklidir.', |
||||
|
'required_if' => ':other :value ise :attribute alanı gereklidir.', |
||||
|
'required_unless' => ':other :values içinde değilse :attribute alanı gereklidir.', |
||||
|
'required_with' => ':values dolu ise :attribute alanı gereklidir.', |
||||
|
'required_with_all' => ':values dolu ise :attribute alanı gereklidir.', |
||||
|
'required_without' => ':values boş ise :attribute alanı gereklidir.', |
||||
|
'required_without_all' => ':values değerlerinin tamamı boş ise :attribute alanı gereklidir.', |
||||
|
'same' => ':attribute ve :other aynı olmalı.', |
||||
|
'size' => [ |
||||
|
'numeric' => ':attribute :size olmalıdır.', |
||||
|
'file' => ':attribute :size kilobayt olmalıdır.', |
||||
|
'string' => ':attribute :size haneli olmalıdır.', |
||||
|
'array' => ':attribute :size öğe içermelidir.', |
||||
|
], |
||||
|
'string' => ':attribute dize olmalıdır.', |
||||
|
'timezone' => ':attribute geçerli bir zaman dilimi olmalıdır.', |
||||
|
'unique' => ':attribute zaten kullanımda.', |
||||
|
'uploaded' => ':attribute yüklenemedi.', |
||||
|
'url' => ':attribute düzeni geçersiz.', |
||||
|
|
||||
|
/* |
||||
|
|-------------------------------------------------------------------------- |
||||
|
| Custom Validation Language Lines |
||||
|
|-------------------------------------------------------------------------- |
||||
|
| |
||||
|
| Here you may specify custom validation messages for attributes using the |
||||
|
| convention "attribute.rule" to name the lines. This makes it quick to |
||||
|
| specify a specific custom language line for a given attribute rule. |
||||
|
| |
||||
|
*/ |
||||
|
|
||||
|
'custom' => [ |
||||
|
'attribute-name' => [ |
||||
|
'rule-name' => 'custom-message', |
||||
|
], |
||||
|
], |
||||
|
|
||||
|
/* |
||||
|
|-------------------------------------------------------------------------- |
||||
|
| Custom Validation Attributes |
||||
|
|-------------------------------------------------------------------------- |
||||
|
| |
||||
|
| The following language lines are used to swap attribute place-holders |
||||
|
| with something more reader friendly such as E-Mail Address instead |
||||
|
| of "email". This simply helps us make messages a little cleaner. |
||||
|
| |
||||
|
*/ |
||||
|
|
||||
|
'attributes' => [], |
||||
|
|
||||
|
]; |
@ -1,12 +1,15 @@ |
|||||
<h2>{{ __('app.apps.config') }} ({{ __('app.optional') }})</h2> |
<h2>{{ __('app.apps.config') }} ({{ __('app.optional') }})</h2> |
||||
<div class="items"> |
<div class="items"> |
||||
<input type="hidden" name="config[type]" value="\App\SupportedApps\Nzbget" /> |
<input type="hidden" data-config="type" class="config-item" name="config[type]" value="\App\SupportedApps\Nzbget" /> |
||||
<div class="input"> |
<div class="input"> |
||||
<label>{{ __('app.apps.username') }}</label> |
<label>{{ __('app.apps.username') }}</label> |
||||
{!! Form::text('config[username]', null, array('placeholder' => __('app.apps.username'), 'class' => 'form-control')) !!} |
{!! Form::text('config[username]', null, array('placeholder' => __('app.apps.username'), 'data-config' => 'username', 'class' => 'form-control config-item')) !!} |
||||
</div> |
</div> |
||||
<div class="input"> |
<div class="input"> |
||||
<label>{{ __('app.apps.password') }}</label> |
<label>{{ __('app.apps.password') }}</label> |
||||
{!! Form::text('config[password]', null, array('placeholder' => __('app.apps.password'), 'class' => 'form-control')) !!} |
{!! Form::text('config[password]', null, array('placeholder' => __('app.apps.password'), 'data-config' => 'password', 'class' => 'form-control config-item')) !!} |
||||
|
</div> |
||||
|
<div class="input"> |
||||
|
<button style="margin-top: 32px;" class="btn test" id="test_config">Test</button> |
||||
</div> |
</div> |
||||
</div> |
</div> |
@ -0,0 +1,21 @@ |
|||||
|
<h2>{{ __('app.apps.config') }} ({{ __('app.optional') }})</h2> |
||||
|
<div class="items"> |
||||
|
<input type="hidden" data-config="type" class="config-item" name="config[type]" value="\App\SupportedApps\Pihole" /> |
||||
|
<input type="hidden" data-config="dataonly" class="config-item" name="config[dataonly]" value="1" /> |
||||
|
<div class="input"> |
||||
|
<label>{{ __('app.apps.enable') }}</label> |
||||
|
{!! Form::hidden('config[enabled]', '0') !!} |
||||
|
<label class="switch"> |
||||
|
<?php |
||||
|
$checked = false; |
||||
|
if(isset($item->config->enabled) && (bool)$item->config->enabled === true) $checked = true; |
||||
|
$set_checked = ($checked) ? ' checked="checked"' : ''; |
||||
|
?> |
||||
|
<input type="checkbox" name="config[enabled]" value="1"<?php echo $set_checked;?> /> |
||||
|
<span class="slider round"></span> |
||||
|
</label> |
||||
|
</div> |
||||
|
<div class="input"> |
||||
|
<button style="margin-top: 32px;" class="btn test" id="test_config">Test</button> |
||||
|
</div> |
||||
|
</div> |
@ -0,0 +1,11 @@ |
|||||
|
<h2>{{ __('app.apps.config') }} ({{ __('app.optional') }})</h2> |
||||
|
<div class="items"> |
||||
|
<input type="hidden" data-config="type" class="config-item" name="config[type]" value="\App\SupportedApps\Sabnzbd" /> |
||||
|
<div class="input"> |
||||
|
<label>{{ __('app.apps.apikey') }}</label> |
||||
|
{!! Form::text('config[apikey]', null, array('placeholder' => __('app.apps.apikey'), 'data-config' => 'apikey', 'class' => 'form-control config-item')) !!} |
||||
|
</div> |
||||
|
<div class="input"> |
||||
|
<button style="margin-top: 32px;" class="btn test" id="test_config">Test</button> |
||||
|
</div> |
||||
|
</div> |
After Width: | Height: | Size: 3.8 KiB |
@ -0,0 +1,5 @@ |
|||||
|
phpunit.xml |
||||
|
composer.lock |
||||
|
build |
||||
|
vendor |
||||
|
coverage.clover |
@ -0,0 +1,46 @@ |
|||||
|
before_commands: |
||||
|
- "composer install --prefer-source" |
||||
|
|
||||
|
tools: |
||||
|
external_code_coverage: |
||||
|
timeout: 600 |
||||
|
php_code_coverage: |
||||
|
enabled: true |
||||
|
test_command: ./vendor/bin/phpunit |
||||
|
php_code_sniffer: |
||||
|
enabled: true |
||||
|
config: |
||||
|
standard: PSR2 |
||||
|
filter: |
||||
|
paths: ["src/*", "tests/*"] |
||||
|
php_cpd: |
||||
|
enabled: true |
||||
|
excluded_dirs: ["build/*", "tests", "vendor"] |
||||
|
php_cs_fixer: |
||||
|
enabled: true |
||||
|
config: |
||||
|
level: all |
||||
|
filter: |
||||
|
paths: ["src/*", "tests/*"] |
||||
|
php_loc: |
||||
|
enabled: true |
||||
|
excluded_dirs: ["build", "tests", "vendor"] |
||||
|
php_mess_detector: |
||||
|
enabled: true |
||||
|
config: |
||||
|
ruleset: phpmd.xml.dist |
||||
|
design_rules: { eval_expression: false } |
||||
|
filter: |
||||
|
paths: ["src/*"] |
||||
|
php_pdepend: |
||||
|
enabled: true |
||||
|
excluded_dirs: ["build", "tests", "vendor"] |
||||
|
php_analyzer: |
||||
|
enabled: true |
||||
|
filter: |
||||
|
paths: ["src/*", "tests/*"] |
||||
|
php_hhvm: |
||||
|
enabled: true |
||||
|
filter: |
||||
|
paths: ["src/*", "tests/*"] |
||||
|
sensiolabs_security_checker: true |
@ -0,0 +1,14 @@ |
|||||
|
#!/bin/sh |
||||
|
set -x |
||||
|
if [ "$TRAVIS_PHP_VERSION" = 'hhvm' ] || [ "$TRAVIS_PHP_VERSION" = 'hhvm-nightly' ] ; then |
||||
|
curl -sS https://getcomposer.org/installer > composer-installer.php |
||||
|
hhvm composer-installer.php |
||||
|
hhvm -v ResourceLimit.SocketDefaultTimeout=30 -v Http.SlowQueryThreshold=30000 composer.phar update --prefer-source |
||||
|
elif [ "$TRAVIS_PHP_VERSION" = '5.3.3' ] ; then |
||||
|
composer self-update |
||||
|
composer update --prefer-source --no-dev |
||||
|
composer dump-autoload |
||||
|
else |
||||
|
composer self-update |
||||
|
composer update --prefer-source |
||||
|
fi |
@ -0,0 +1,22 @@ |
|||||
|
language: php |
||||
|
|
||||
|
php: |
||||
|
- 5.3.3 |
||||
|
- 5.3 |
||||
|
- 5.4 |
||||
|
- 5.5 |
||||
|
- 5.6 |
||||
|
- hhvm |
||||
|
|
||||
|
before_script: |
||||
|
- ./.travis.install.sh |
||||
|
- if [ $TRAVIS_PHP_VERSION = '5.6' ]; then PHPUNIT_FLAGS="--coverage-clover coverage.clover"; else PHPUNIT_FLAGS=""; fi |
||||
|
|
||||
|
script: |
||||
|
- if [ $TRAVIS_PHP_VERSION = '5.3.3' ]; then phpunit; fi |
||||
|
- if [ $TRAVIS_PHP_VERSION != '5.3.3' ]; then ./vendor/bin/phpunit $PHPUNIT_FLAGS; fi |
||||
|
- if [ $TRAVIS_PHP_VERSION != '5.3.3' ]; then ./vendor/bin/phpcs --standard=PSR2 ./src/ ./tests/; fi |
||||
|
- if [[ $TRAVIS_PHP_VERSION != '5.3.3' && $TRAVIS_PHP_VERSION != '5.4.29' && $TRAVIS_PHP_VERSION != '5.5.13' ]]; then php -n ./vendor/bin/athletic -p ./tests/DoctrineTest/InstantiatorPerformance/ -f GroupedFormatter; fi |
||||
|
|
||||
|
after_script: |
||||
|
- if [ $TRAVIS_PHP_VERSION = '5.6' ]; then wget https://scrutinizer-ci.com/ocular.phar; php ocular.phar code-coverage:upload --format=php-clover coverage.clover; fi |
@ -0,0 +1,27 @@ |
|||||
|
<?xml version="1.0" encoding="UTF-8" ?> |
||||
|
<ruleset |
||||
|
name="Instantiator rules" |
||||
|
xmlns="http://pmd.sf.net/ruleset/1.0.0" |
||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
||||
|
xsi:schemaLocation="http://pmd.sf.net/ruleset/1.0.0 http://pmd.sf.net/ruleset_xml_schema.xsd" |
||||
|
xsi:noNamespaceSchemaLocation="http://pmd.sf.net/ruleset_xml_schema.xsd" |
||||
|
> |
||||
|
<rule ref="rulesets/cleancode.xml"> |
||||
|
<!-- static access is used for caching purposes --> |
||||
|
<exclude name="StaticAccess"/> |
||||
|
</rule> |
||||
|
<rule ref="rulesets/codesize.xml"/> |
||||
|
<rule ref="rulesets/controversial.xml"/> |
||||
|
<rule ref="rulesets/design.xml"/> |
||||
|
<rule ref="rulesets/naming.xml"/> |
||||
|
<rule ref="rulesets/unusedcode.xml"/> |
||||
|
<rule |
||||
|
name="NPathComplexity" |
||||
|
message="The {0} {1}() has an NPath complexity of {2}. The configured NPath complexity threshold is {3}." |
||||
|
class="PHP_PMD_Rule_Design_NpathComplexity" |
||||
|
> |
||||
|
<properties> |
||||
|
<property name="minimum" description="The npath reporting threshold" value="10"/> |
||||
|
</properties> |
||||
|
</rule> |
||||
|
</ruleset> |
@ -0,0 +1,22 @@ |
|||||
|
<?xml version="1.0"?> |
||||
|
<phpunit |
||||
|
bootstrap="./vendor/autoload.php" |
||||
|
colors="true" |
||||
|
convertErrorsToExceptions="true" |
||||
|
convertNoticesToExceptions="true" |
||||
|
convertWarningsToExceptions="true" |
||||
|
verbose="true" |
||||
|
stopOnFailure="false" |
||||
|
processIsolation="false" |
||||
|
backupGlobals="false" |
||||
|
syntaxCheck="true" |
||||
|
> |
||||
|
<testsuite name="Doctrine\Instantiator tests"> |
||||
|
<directory>./tests/DoctrineTest/InstantiatorTest</directory> |
||||
|
</testsuite> |
||||
|
<filter> |
||||
|
<whitelist addUncoveredFilesFromWhitelist="true"> |
||||
|
<directory suffix=".php">./src</directory> |
||||
|
</whitelist> |
||||
|
</filter> |
||||
|
</phpunit> |
@ -0,0 +1,96 @@ |
|||||
|
<?php |
||||
|
/* |
||||
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
||||
|
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
||||
|
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
||||
|
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
||||
|
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
||||
|
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
||||
|
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
||||
|
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
||||
|
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
||||
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
||||
|
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
||||
|
* |
||||
|
* This software consists of voluntary contributions made by many individuals |
||||
|
* and is licensed under the MIT license. For more information, see |
||||
|
* <http://www.doctrine-project.org>. |
||||
|
*/ |
||||
|
|
||||
|
namespace DoctrineTest\InstantiatorPerformance; |
||||
|
|
||||
|
use Athletic\AthleticEvent; |
||||
|
use Doctrine\Instantiator\Instantiator; |
||||
|
|
||||
|
/** |
||||
|
* Performance tests for {@see \Doctrine\Instantiator\Instantiator} |
||||
|
* |
||||
|
* @author Marco Pivetta <ocramius@gmail.com> |
||||
|
*/ |
||||
|
class InstantiatorPerformanceEvent extends AthleticEvent |
||||
|
{ |
||||
|
/** |
||||
|
* @var \Doctrine\Instantiator\Instantiator |
||||
|
*/ |
||||
|
private $instantiator; |
||||
|
|
||||
|
/** |
||||
|
* {@inheritDoc} |
||||
|
*/ |
||||
|
protected function setUp() |
||||
|
{ |
||||
|
$this->instantiator = new Instantiator(); |
||||
|
|
||||
|
$this->instantiator->instantiate(__CLASS__); |
||||
|
$this->instantiator->instantiate('ArrayObject'); |
||||
|
$this->instantiator->instantiate('DoctrineTest\\InstantiatorTestAsset\\SimpleSerializableAsset'); |
||||
|
$this->instantiator->instantiate('DoctrineTest\\InstantiatorTestAsset\\SerializableArrayObjectAsset'); |
||||
|
$this->instantiator->instantiate('DoctrineTest\\InstantiatorTestAsset\\UnCloneableAsset'); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* @iterations 20000 |
||||
|
* @baseline |
||||
|
* @group instantiation |
||||
|
*/ |
||||
|
public function testInstantiateSelf() |
||||
|
{ |
||||
|
$this->instantiator->instantiate(__CLASS__); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* @iterations 20000 |
||||
|
* @group instantiation |
||||
|
*/ |
||||
|
public function testInstantiateInternalClass() |
||||
|
{ |
||||
|
$this->instantiator->instantiate('ArrayObject'); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* @iterations 20000 |
||||
|
* @group instantiation |
||||
|
*/ |
||||
|
public function testInstantiateSimpleSerializableAssetClass() |
||||
|
{ |
||||
|
$this->instantiator->instantiate('DoctrineTest\\InstantiatorTestAsset\\SimpleSerializableAsset'); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* @iterations 20000 |
||||
|
* @group instantiation |
||||
|
*/ |
||||
|
public function testInstantiateSerializableArrayObjectAsset() |
||||
|
{ |
||||
|
$this->instantiator->instantiate('DoctrineTest\\InstantiatorTestAsset\\SerializableArrayObjectAsset'); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* @iterations 20000 |
||||
|
* @group instantiation |
||||
|
*/ |
||||
|
public function testInstantiateUnCloneableAsset() |
||||
|
{ |
||||
|
$this->instantiator->instantiate('DoctrineTest\\InstantiatorTestAsset\\UnCloneableAsset'); |
||||
|
} |
||||
|
} |
@ -0,0 +1,83 @@ |
|||||
|
<?php |
||||
|
/* |
||||
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
||||
|
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
||||
|
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
||||
|
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
||||
|
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
||||
|
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
||||
|
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
||||
|
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
||||
|
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
||||
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
||||
|
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
||||
|
* |
||||
|
* This software consists of voluntary contributions made by many individuals |
||||
|
* and is licensed under the MIT license. For more information, see |
||||
|
* <http://www.doctrine-project.org>. |
||||
|
*/ |
||||
|
|
||||
|
namespace DoctrineTest\InstantiatorTest\Exception; |
||||
|
|
||||
|
use Doctrine\Instantiator\Exception\InvalidArgumentException; |
||||
|
use PHPUnit_Framework_TestCase; |
||||
|
use ReflectionClass; |
||||
|
|
||||
|
/** |
||||
|
* Tests for {@see \Doctrine\Instantiator\Exception\InvalidArgumentException} |
||||
|
* |
||||
|
* @author Marco Pivetta <ocramius@gmail.com> |
||||
|
* |
||||
|
* @covers \Doctrine\Instantiator\Exception\InvalidArgumentException |
||||
|
*/ |
||||
|
class InvalidArgumentExceptionTest extends PHPUnit_Framework_TestCase |
||||
|
{ |
||||
|
public function testFromNonExistingTypeWithNonExistingClass() |
||||
|
{ |
||||
|
$className = __CLASS__ . uniqid(); |
||||
|
$exception = InvalidArgumentException::fromNonExistingClass($className); |
||||
|
|
||||
|
$this->assertInstanceOf('Doctrine\\Instantiator\\Exception\\InvalidArgumentException', $exception); |
||||
|
$this->assertSame('The provided class "' . $className . '" does not exist', $exception->getMessage()); |
||||
|
} |
||||
|
|
||||
|
public function testFromNonExistingTypeWithTrait() |
||||
|
{ |
||||
|
if (PHP_VERSION_ID < 50400) { |
||||
|
$this->markTestSkipped('Need at least PHP 5.4.0, as this test requires traits support to run'); |
||||
|
} |
||||
|
|
||||
|
$exception = InvalidArgumentException::fromNonExistingClass( |
||||
|
'DoctrineTest\\InstantiatorTestAsset\\SimpleTraitAsset' |
||||
|
); |
||||
|
|
||||
|
$this->assertSame( |
||||
|
'The provided type "DoctrineTest\\InstantiatorTestAsset\\SimpleTraitAsset" is a trait, ' |
||||
|
. 'and can not be instantiated', |
||||
|
$exception->getMessage() |
||||
|
); |
||||
|
} |
||||
|
|
||||
|
public function testFromNonExistingTypeWithInterface() |
||||
|
{ |
||||
|
$exception = InvalidArgumentException::fromNonExistingClass('Doctrine\\Instantiator\\InstantiatorInterface'); |
||||
|
|
||||
|
$this->assertSame( |
||||
|
'The provided type "Doctrine\\Instantiator\\InstantiatorInterface" is an interface, ' |
||||
|
. 'and can not be instantiated', |
||||
|
$exception->getMessage() |
||||
|
); |
||||
|
} |
||||
|
|
||||
|
public function testFromAbstractClass() |
||||
|
{ |
||||
|
$reflection = new ReflectionClass('DoctrineTest\\InstantiatorTestAsset\\AbstractClassAsset'); |
||||
|
$exception = InvalidArgumentException::fromAbstractClass($reflection); |
||||
|
|
||||
|
$this->assertSame( |
||||
|
'The provided class "DoctrineTest\\InstantiatorTestAsset\\AbstractClassAsset" is abstract, ' |
||||
|
. 'and can not be instantiated', |
||||
|
$exception->getMessage() |
||||
|
); |
||||
|
} |
||||
|
} |
@ -0,0 +1,69 @@ |
|||||
|
<?php |
||||
|
/* |
||||
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
||||
|
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
||||
|
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
||||
|
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
||||
|
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
||||
|
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
||||
|
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
||||
|
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
||||
|
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
||||
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
||||
|
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
||||
|
* |
||||
|
* This software consists of voluntary contributions made by many individuals |
||||
|
* and is licensed under the MIT license. For more information, see |
||||
|
* <http://www.doctrine-project.org>. |
||||
|
*/ |
||||
|
|
||||
|
namespace DoctrineTest\InstantiatorTest\Exception; |
||||
|
|
||||
|
use Doctrine\Instantiator\Exception\UnexpectedValueException; |
||||
|
use Exception; |
||||
|
use PHPUnit_Framework_TestCase; |
||||
|
use ReflectionClass; |
||||
|
|
||||
|
/** |
||||
|
* Tests for {@see \Doctrine\Instantiator\Exception\UnexpectedValueException} |
||||
|
* |
||||
|
* @author Marco Pivetta <ocramius@gmail.com> |
||||
|
* |
||||
|
* @covers \Doctrine\Instantiator\Exception\UnexpectedValueException |
||||
|
*/ |
||||
|
class UnexpectedValueExceptionTest extends PHPUnit_Framework_TestCase |
||||
|
{ |
||||
|
public function testFromSerializationTriggeredException() |
||||
|
{ |
||||
|
$reflectionClass = new ReflectionClass($this); |
||||
|
$previous = new Exception(); |
||||
|
$exception = UnexpectedValueException::fromSerializationTriggeredException($reflectionClass, $previous); |
||||
|
|
||||
|
$this->assertInstanceOf('Doctrine\\Instantiator\\Exception\\UnexpectedValueException', $exception); |
||||
|
$this->assertSame($previous, $exception->getPrevious()); |
||||
|
$this->assertSame( |
||||
|
'An exception was raised while trying to instantiate an instance of "' |
||||
|
. __CLASS__ . '" via un-serialization', |
||||
|
$exception->getMessage() |
||||
|
); |
||||
|
} |
||||
|
|
||||
|
public function testFromUncleanUnSerialization() |
||||
|
{ |
||||
|
$reflection = new ReflectionClass('DoctrineTest\\InstantiatorTestAsset\\AbstractClassAsset'); |
||||
|
$exception = UnexpectedValueException::fromUncleanUnSerialization($reflection, 'foo', 123, 'bar', 456); |
||||
|
|
||||
|
$this->assertInstanceOf('Doctrine\\Instantiator\\Exception\\UnexpectedValueException', $exception); |
||||
|
$this->assertSame( |
||||
|
'Could not produce an instance of "DoctrineTest\\InstantiatorTestAsset\\AbstractClassAsset" ' |
||||
|
. 'via un-serialization, since an error was triggered in file "bar" at line "456"', |
||||
|
$exception->getMessage() |
||||
|
); |
||||
|
|
||||
|
$previous = $exception->getPrevious(); |
||||
|
|
||||
|
$this->assertInstanceOf('Exception', $previous); |
||||
|
$this->assertSame('foo', $previous->getMessage()); |
||||
|
$this->assertSame(123, $previous->getCode()); |
||||
|
} |
||||
|
} |
@ -0,0 +1,219 @@ |
|||||
|
<?php |
||||
|
/* |
||||
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
||||
|
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
||||
|
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
||||
|
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
||||
|
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
||||
|
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
||||
|
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
||||
|
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
||||
|
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
||||
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
||||
|
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
||||
|
* |
||||
|
* This software consists of voluntary contributions made by many individuals |
||||
|
* and is licensed under the MIT license. For more information, see |
||||
|
* <http://www.doctrine-project.org>. |
||||
|
*/ |
||||
|
|
||||
|
namespace DoctrineTest\InstantiatorTest; |
||||
|
|
||||
|
use Doctrine\Instantiator\Exception\UnexpectedValueException; |
||||
|
use Doctrine\Instantiator\Instantiator; |
||||
|
use PHPUnit_Framework_TestCase; |
||||
|
use ReflectionClass; |
||||
|
|
||||
|
/** |
||||
|
* Tests for {@see \Doctrine\Instantiator\Instantiator} |
||||
|
* |
||||
|
* @author Marco Pivetta <ocramius@gmail.com> |
||||
|
* |
||||
|
* @covers \Doctrine\Instantiator\Instantiator |
||||
|
*/ |
||||
|
class InstantiatorTest extends PHPUnit_Framework_TestCase |
||||
|
{ |
||||
|
/** |
||||
|
* @var Instantiator |
||||
|
*/ |
||||
|
private $instantiator; |
||||
|
|
||||
|
/** |
||||
|
* {@inheritDoc} |
||||
|
*/ |
||||
|
protected function setUp() |
||||
|
{ |
||||
|
$this->instantiator = new Instantiator(); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* @param string $className |
||||
|
* |
||||
|
* @dataProvider getInstantiableClasses |
||||
|
*/ |
||||
|
public function testCanInstantiate($className) |
||||
|
{ |
||||
|
$this->assertInstanceOf($className, $this->instantiator->instantiate($className)); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* @param string $className |
||||
|
* |
||||
|
* @dataProvider getInstantiableClasses |
||||
|
*/ |
||||
|
public function testInstantiatesSeparateInstances($className) |
||||
|
{ |
||||
|
$instance1 = $this->instantiator->instantiate($className); |
||||
|
$instance2 = $this->instantiator->instantiate($className); |
||||
|
|
||||
|
$this->assertEquals($instance1, $instance2); |
||||
|
$this->assertNotSame($instance1, $instance2); |
||||
|
} |
||||
|
|
||||
|
public function testExceptionOnUnSerializationException() |
||||
|
{ |
||||
|
if (defined('HHVM_VERSION')) { |
||||
|
$this->markTestSkipped( |
||||
|
'As of facebook/hhvm#3432, HHVM has no PDORow, and therefore ' |
||||
|
. ' no internal final classes that cannot be instantiated' |
||||
|
); |
||||
|
} |
||||
|
|
||||
|
$className = 'DoctrineTest\\InstantiatorTestAsset\\UnserializeExceptionArrayObjectAsset'; |
||||
|
|
||||
|
if (\PHP_VERSION_ID >= 50600) { |
||||
|
$className = 'PDORow'; |
||||
|
} |
||||
|
|
||||
|
if (\PHP_VERSION_ID === 50429 || \PHP_VERSION_ID === 50513) { |
||||
|
$className = 'DoctrineTest\\InstantiatorTestAsset\\SerializableArrayObjectAsset'; |
||||
|
} |
||||
|
|
||||
|
$this->setExpectedException('Doctrine\\Instantiator\\Exception\\UnexpectedValueException'); |
||||
|
|
||||
|
$this->instantiator->instantiate($className); |
||||
|
} |
||||
|
|
||||
|
public function testNoticeOnUnSerializationException() |
||||
|
{ |
||||
|
if (\PHP_VERSION_ID >= 50600) { |
||||
|
$this->markTestSkipped( |
||||
|
'PHP 5.6 supports `ReflectionClass#newInstanceWithoutConstructor()` for some internal classes' |
||||
|
); |
||||
|
} |
||||
|
|
||||
|
try { |
||||
|
$this->instantiator->instantiate('DoctrineTest\\InstantiatorTestAsset\\WakeUpNoticesAsset'); |
||||
|
|
||||
|
$this->fail('No exception was raised'); |
||||
|
} catch (UnexpectedValueException $exception) { |
||||
|
$wakeUpNoticesReflection = new ReflectionClass('DoctrineTest\\InstantiatorTestAsset\\WakeUpNoticesAsset'); |
||||
|
$previous = $exception->getPrevious(); |
||||
|
|
||||
|
$this->assertInstanceOf('Exception', $previous); |
||||
|
|
||||
|
// in PHP 5.4.29 and PHP 5.5.13, this case is not a notice, but an exception being thrown |
||||
|
if (! (\PHP_VERSION_ID === 50429 || \PHP_VERSION_ID === 50513)) { |
||||
|
$this->assertSame( |
||||
|
'Could not produce an instance of "DoctrineTest\\InstantiatorTestAsset\WakeUpNoticesAsset" ' |
||||
|
. 'via un-serialization, since an error was triggered in file "' |
||||
|
. $wakeUpNoticesReflection->getFileName() . '" at line "36"', |
||||
|
$exception->getMessage() |
||||
|
); |
||||
|
|
||||
|
$this->assertSame('Something went bananas while un-serializing this instance', $previous->getMessage()); |
||||
|
$this->assertSame(\E_USER_NOTICE, $previous->getCode()); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* @param string $invalidClassName |
||||
|
* |
||||
|
* @dataProvider getInvalidClassNames |
||||
|
*/ |
||||
|
public function testInstantiationFromNonExistingClass($invalidClassName) |
||||
|
{ |
||||
|
$this->setExpectedException('Doctrine\\Instantiator\\Exception\\InvalidArgumentException'); |
||||
|
|
||||
|
$this->instantiator->instantiate($invalidClassName); |
||||
|
} |
||||
|
|
||||
|
public function testInstancesAreNotCloned() |
||||
|
{ |
||||
|
$className = 'TemporaryClass' . uniqid(); |
||||
|
|
||||
|
eval('namespace ' . __NAMESPACE__ . '; class ' . $className . '{}'); |
||||
|
|
||||
|
$instance = $this->instantiator->instantiate(__NAMESPACE__ . '\\' . $className); |
||||
|
|
||||
|
$instance->foo = 'bar'; |
||||
|
|
||||
|
$instance2 = $this->instantiator->instantiate(__NAMESPACE__ . '\\' . $className); |
||||
|
|
||||
|
$this->assertObjectNotHasAttribute('foo', $instance2); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Provides a list of instantiable classes (existing) |
||||
|
* |
||||
|
* @return string[][] |
||||
|
*/ |
||||
|
public function getInstantiableClasses() |
||||
|
{ |
||||
|
$classes = array( |
||||
|
array('stdClass'), |
||||
|
array(__CLASS__), |
||||
|
array('Doctrine\\Instantiator\\Instantiator'), |
||||
|
array('Exception'), |
||||
|
array('PharException'), |
||||
|
array('DoctrineTest\\InstantiatorTestAsset\\SimpleSerializableAsset'), |
||||
|
array('DoctrineTest\\InstantiatorTestAsset\\ExceptionAsset'), |
||||
|
array('DoctrineTest\\InstantiatorTestAsset\\FinalExceptionAsset'), |
||||
|
array('DoctrineTest\\InstantiatorTestAsset\\PharExceptionAsset'), |
||||
|
array('DoctrineTest\\InstantiatorTestAsset\\UnCloneableAsset'), |
||||
|
array('DoctrineTest\\InstantiatorTestAsset\\XMLReaderAsset'), |
||||
|
); |
||||
|
|
||||
|
if (\PHP_VERSION_ID === 50429 || \PHP_VERSION_ID === 50513) { |
||||
|
return $classes; |
||||
|
} |
||||
|
|
||||
|
$classes = array_merge( |
||||
|
$classes, |
||||
|
array( |
||||
|
array('PharException'), |
||||
|
array('ArrayObject'), |
||||
|
array('DoctrineTest\\InstantiatorTestAsset\\ArrayObjectAsset'), |
||||
|
array('DoctrineTest\\InstantiatorTestAsset\\SerializableArrayObjectAsset'), |
||||
|
) |
||||
|
); |
||||
|
|
||||
|
if (\PHP_VERSION_ID >= 50600) { |
||||
|
$classes[] = array('DoctrineTest\\InstantiatorTestAsset\\WakeUpNoticesAsset'); |
||||
|
$classes[] = array('DoctrineTest\\InstantiatorTestAsset\\UnserializeExceptionArrayObjectAsset'); |
||||
|
} |
||||
|
|
||||
|
return $classes; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Provides a list of instantiable classes (existing) |
||||
|
* |
||||
|
* @return string[][] |
||||
|
*/ |
||||
|
public function getInvalidClassNames() |
||||
|
{ |
||||
|
$classNames = array( |
||||
|
array(__CLASS__ . uniqid()), |
||||
|
array('Doctrine\\Instantiator\\InstantiatorInterface'), |
||||
|
array('DoctrineTest\\InstantiatorTestAsset\\AbstractClassAsset'), |
||||
|
); |
||||
|
|
||||
|
if (\PHP_VERSION_ID >= 50400) { |
||||
|
$classNames[] = array('DoctrineTest\\InstantiatorTestAsset\\SimpleTraitAsset'); |
||||
|
} |
||||
|
|
||||
|
return $classNames; |
||||
|
} |
||||
|
} |
@ -0,0 +1,29 @@ |
|||||
|
<?php |
||||
|
/* |
||||
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
||||
|
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
||||
|
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
||||
|
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
||||
|
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
||||
|
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
||||
|
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
||||
|
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
||||
|
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
||||
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
||||
|
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
||||
|
* |
||||
|
* This software consists of voluntary contributions made by many individuals |
||||
|
* and is licensed under the MIT license. For more information, see |
||||
|
* <http://www.doctrine-project.org>. |
||||
|
*/ |
||||
|
|
||||
|
namespace DoctrineTest\InstantiatorTestAsset; |
||||
|
|
||||
|
/** |
||||
|
* A simple asset for an abstract class |
||||
|
* |
||||
|
* @author Marco Pivetta <ocramius@gmail.com> |
||||
|
*/ |
||||
|
abstract class AbstractClassAsset |
||||
|
{ |
||||
|
} |
@ -0,0 +1,41 @@ |
|||||
|
<?php |
||||
|
/* |
||||
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
||||
|
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
||||
|
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
||||
|
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
||||
|
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
||||
|
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
||||
|
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
||||
|
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
||||
|
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
||||
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
||||
|
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
||||
|
* |
||||
|
* This software consists of voluntary contributions made by many individuals |
||||
|
* and is licensed under the MIT license. For more information, see |
||||
|
* <http://www.doctrine-project.org>. |
||||
|
*/ |
||||
|
|
||||
|
namespace DoctrineTest\InstantiatorTestAsset; |
||||
|
|
||||
|
use ArrayObject; |
||||
|
use BadMethodCallException; |
||||
|
|
||||
|
/** |
||||
|
* Test asset that extends an internal PHP class |
||||
|
* |
||||
|
* @author Marco Pivetta <ocramius@gmail.com> |
||||
|
*/ |
||||
|
class ArrayObjectAsset extends ArrayObject |
||||
|
{ |
||||
|
/** |
||||
|
* Constructor - should not be called |
||||
|
* |
||||
|
* @throws BadMethodCallException |
||||
|
*/ |
||||
|
public function __construct() |
||||
|
{ |
||||
|
throw new BadMethodCallException('Not supposed to be called!'); |
||||
|
} |
||||
|
} |
@ -0,0 +1,41 @@ |
|||||
|
<?php |
||||
|
/* |
||||
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
||||
|
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
||||
|
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
||||
|
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
||||
|
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
||||
|
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
||||
|
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
||||
|
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
||||
|
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
||||
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
||||
|
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
||||
|
* |
||||
|
* This software consists of voluntary contributions made by many individuals |
||||
|
* and is licensed under the MIT license. For more information, see |
||||
|
* <http://www.doctrine-project.org>. |
||||
|
*/ |
||||
|
|
||||
|
namespace DoctrineTest\InstantiatorTestAsset; |
||||
|
|
||||
|
use BadMethodCallException; |
||||
|
use Exception; |
||||
|
|
||||
|
/** |
||||
|
* Test asset that extends an internal PHP base exception |
||||
|
* |
||||
|
* @author Marco Pivetta <ocramius@gmail.com> |
||||
|
*/ |
||||
|
class ExceptionAsset extends Exception |
||||
|
{ |
||||
|
/** |
||||
|
* Constructor - should not be called |
||||
|
* |
||||
|
* @throws BadMethodCallException |
||||
|
*/ |
||||
|
public function __construct() |
||||
|
{ |
||||
|
throw new BadMethodCallException('Not supposed to be called!'); |
||||
|
} |
||||
|
} |
@ -0,0 +1,41 @@ |
|||||
|
<?php |
||||
|
/* |
||||
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
||||
|
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
||||
|
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
||||
|
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
||||
|
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
||||
|
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
||||
|
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
||||
|
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
||||
|
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
||||
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
||||
|
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
||||
|
* |
||||
|
* This software consists of voluntary contributions made by many individuals |
||||
|
* and is licensed under the MIT license. For more information, see |
||||
|
* <http://www.doctrine-project.org>. |
||||
|
*/ |
||||
|
|
||||
|
namespace DoctrineTest\InstantiatorTestAsset; |
||||
|
|
||||
|
use BadMethodCallException; |
||||
|
use Exception; |
||||
|
|
||||
|
/** |
||||
|
* Test asset that extends an internal PHP base exception |
||||
|
* |
||||
|
* @author Marco Pivetta <ocramius@gmail.com> |
||||
|
*/ |
||||
|
final class FinalExceptionAsset extends Exception |
||||
|
{ |
||||
|
/** |
||||
|
* Constructor - should not be called |
||||
|
* |
||||
|
* @throws BadMethodCallException |
||||
|
*/ |
||||
|
public function __construct() |
||||
|
{ |
||||
|
throw new BadMethodCallException('Not supposed to be called!'); |
||||
|
} |
||||
|
} |
@ -0,0 +1,41 @@ |
|||||
|
<?php |
||||
|
/* |
||||
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
||||
|
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
||||
|
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
||||
|
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
||||
|
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
||||
|
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
||||
|
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
||||
|
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
||||
|
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
||||
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
||||
|
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
||||
|
* |
||||
|
* This software consists of voluntary contributions made by many individuals |
||||
|
* and is licensed under the MIT license. For more information, see |
||||
|
* <http://www.doctrine-project.org>. |
||||
|
*/ |
||||
|
|
||||
|
namespace DoctrineTest\InstantiatorTestAsset; |
||||
|
|
||||
|
use BadMethodCallException; |
||||
|
use Phar; |
||||
|
|
||||
|
/** |
||||
|
* Test asset that extends an internal PHP class |
||||
|
* |
||||
|
* @author Marco Pivetta <ocramius@gmail.com> |
||||
|
*/ |
||||
|
class PharAsset extends Phar |
||||
|
{ |
||||
|
/** |
||||
|
* Constructor - should not be called |
||||
|
* |
||||
|
* @throws BadMethodCallException |
||||
|
*/ |
||||
|
public function __construct() |
||||
|
{ |
||||
|
throw new BadMethodCallException('Not supposed to be called!'); |
||||
|
} |
||||
|
} |
@ -0,0 +1,44 @@ |
|||||
|
<?php |
||||
|
/* |
||||
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
||||
|
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
||||
|
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
||||
|
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
||||
|
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
||||
|
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
||||
|
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
||||
|
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
||||
|
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
||||
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
||||
|
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
||||
|
* |
||||
|
* This software consists of voluntary contributions made by many individuals |
||||
|
* and is licensed under the MIT license. For more information, see |
||||
|
* <http://www.doctrine-project.org>. |
||||
|
*/ |
||||
|
|
||||
|
namespace DoctrineTest\InstantiatorTestAsset; |
||||
|
|
||||
|
use BadMethodCallException; |
||||
|
use PharException; |
||||
|
|
||||
|
/** |
||||
|
* Test asset that extends an internal PHP class |
||||
|
* This class should be serializable without problems |
||||
|
* and without getting the "Erroneous data format for unserializing" |
||||
|
* error |
||||
|
* |
||||
|
* @author Marco Pivetta <ocramius@gmail.com> |
||||
|
*/ |
||||
|
class PharExceptionAsset extends PharException |
||||
|
{ |
||||
|
/** |
||||
|
* Constructor - should not be called |
||||
|
* |
||||
|
* @throws BadMethodCallException |
||||
|
*/ |
||||
|
public function __construct() |
||||
|
{ |
||||
|
throw new BadMethodCallException('Not supposed to be called!'); |
||||
|
} |
||||
|
} |
@ -0,0 +1,62 @@ |
|||||
|
<?php |
||||
|
/* |
||||
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
||||
|
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
||||
|
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
||||
|
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
||||
|
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
||||
|
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
||||
|
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
||||
|
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
||||
|
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
||||
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
||||
|
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
||||
|
* |
||||
|
* This software consists of voluntary contributions made by many individuals |
||||
|
* and is licensed under the MIT license. For more information, see |
||||
|
* <http://www.doctrine-project.org>. |
||||
|
*/ |
||||
|
|
||||
|
namespace DoctrineTest\InstantiatorTestAsset; |
||||
|
|
||||
|
use ArrayObject; |
||||
|
use BadMethodCallException; |
||||
|
use Serializable; |
||||
|
|
||||
|
/** |
||||
|
* Serializable test asset that also extends an internal class |
||||
|
* |
||||
|
* @author Marco Pivetta <ocramius@gmail.com> |
||||
|
*/ |
||||
|
class SerializableArrayObjectAsset extends ArrayObject implements Serializable |
||||
|
{ |
||||
|
/** |
||||
|
* Constructor - should not be called |
||||
|
* |
||||
|
* @throws BadMethodCallException |
||||
|
*/ |
||||
|
public function __construct() |
||||
|
{ |
||||
|
throw new BadMethodCallException('Not supposed to be called!'); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* {@inheritDoc} |
||||
|
*/ |
||||
|
public function serialize() |
||||
|
{ |
||||
|
return ''; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* {@inheritDoc} |
||||
|
* |
||||
|
* Should not be called |
||||
|
* |
||||
|
* @throws BadMethodCallException |
||||
|
*/ |
||||
|
public function unserialize($serialized) |
||||
|
{ |
||||
|
throw new BadMethodCallException('Not supposed to be called!'); |
||||
|
} |
||||
|
} |