| @ -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!'); | ||||
|  |     } | ||||
|  | } | ||||