diff --git a/src/application/language/bulgarian/translations_lang.php b/src/application/language/bulgarian/translations_lang.php index 64b019eb..4d375089 100644 --- a/src/application/language/bulgarian/translations_lang.php +++ b/src/application/language/bulgarian/translations_lang.php @@ -216,7 +216,7 @@ $lang['page_not_found'] = 'Страницата не е намерена.'; $lang['page_not_found_message'] = 'За съжаление търсената от Вас страница не съществува. Моля проверете интернет адреса или посетете друг сегмент като използвате бутоните по-долу.'; $lang['error'] = 'Грешка'; $lang['no_privileges'] = 'Без привилегии'; -$lang['no_provileges_message'] = 'Не притежавате нужните привилегии за да достъпите тази страница. Моля посетете друг сегмент.'; +$lang['no_privileges_message'] = 'Не притежавате нужните привилегии за да достъпите тази страница. Моля посетете друг сегмент.'; $lang['backend_calendar'] = 'Административен календар'; $lang['start_date_time'] = 'Начало Дата / Час'; $lang['end_date_time'] = 'Край Дата / Час'; diff --git a/src/application/language/chinese/translations_lang.php b/src/application/language/chinese/translations_lang.php index 5572df20..7fceb26a 100644 --- a/src/application/language/chinese/translations_lang.php +++ b/src/application/language/chinese/translations_lang.php @@ -216,7 +216,7 @@ $lang['page_not_found'] = '页面没有找到'; $lang['page_not_found_message'] = '您所请求的页面不存在,请检查您的浏览器地址或返回.'; $lang['error'] = '错误'; $lang['no_privileges'] = '没有权限'; -$lang['no_provileges_message'] = '您没有所需的权限去查看这个页面,请尝试其他页面.'; +$lang['no_privileges_message'] = '您没有所需的权限去查看这个页面,请尝试其他页面.'; $lang['backend_calendar'] = '后台日历'; $lang['start_date_time'] = '开始日期/时间'; $lang['end_date_time'] = '结束日期/时间'; diff --git a/src/application/language/danish/translations_lang.php b/src/application/language/danish/translations_lang.php index 86c3b391..100e80f8 100644 --- a/src/application/language/danish/translations_lang.php +++ b/src/application/language/danish/translations_lang.php @@ -216,7 +216,7 @@ $lang['page_not_found'] = 'Siden ikke fundet'; $lang['page_not_found_message'] = 'Desværre, den side du søger eksistere ikke. Tjek din browser URL eller gå til en andet sted ved at bruge knappen nedenunder. '; $lang['error'] = 'Error'; $lang['no_privileges'] = 'Ingen privilegium'; -$lang['no_provileges_message'] = 'Du har ikke kravende til at bruge denne side. Vælg en anden gruppe.'; +$lang['no_privileges_message'] = 'Du har ikke kravende til at bruge denne side. Vælg en anden gruppe.'; $lang['backend_calendar'] = 'Backend Kalender'; $lang['start_date_time'] = 'Start dato / Tid'; $lang['end_date_time'] = 'Slet dato / Tid'; diff --git a/src/application/language/dutch/translations_lang.php b/src/application/language/dutch/translations_lang.php index f776adb9..0ccc533f 100644 --- a/src/application/language/dutch/translations_lang.php +++ b/src/application/language/dutch/translations_lang.php @@ -216,7 +216,7 @@ $lang['page_not_found'] ='Pagina niet gevonden'; $lang['page_not_found_message'] ='Helaas bestaat de door u opgevraagde pagina niet. Controleer aub de locatie in uw browser of ga naar een andere locatie met behulp van de onderstaande knoppen.'; $lang['error'] ='Fout'; $lang['no_privileges'] ='Geen rechten'; -$lang['no_provileges_message'] ='Je hebt niet de benodigde rechten om deze pagina te bekijken. Navigeer naar een andere sectie.'; +$lang['no_privileges_message'] ='Je hebt niet de benodigde rechten om deze pagina te bekijken. Navigeer naar een andere sectie.'; $lang['backend_calendar'] ='Backend Kalender'; $lang['start_date_time'] ='Start datum/tijd'; $lang['end_date_time'] ='Eind datum/tijd'; diff --git a/src/application/language/english/translations_lang.php b/src/application/language/english/translations_lang.php index 6b79ccf6..4e32ac6b 100644 --- a/src/application/language/english/translations_lang.php +++ b/src/application/language/english/translations_lang.php @@ -216,7 +216,7 @@ $lang['page_not_found'] = 'Page Not Found'; $lang['page_not_found_message'] = 'Unfortunately the page you requested does not exist. Please check your browser URL or head to another location using the buttons below.'; $lang['error'] = 'Error'; $lang['no_privileges'] = 'No Privileges'; -$lang['no_provileges_message'] = 'You do not have the required privileges to view this page. Please navigate to a different section.'; +$lang['no_privileges_message'] = 'You do not have the required privileges to view this page. Please navigate to a different section.'; $lang['backend_calendar'] = 'Backend Calendar'; $lang['start_date_time'] = 'Start Date / Time'; $lang['end_date_time'] = 'End Date / Time'; diff --git a/src/application/language/finnish/translations_lang.php b/src/application/language/finnish/translations_lang.php index 490ded80..1704cae6 100644 --- a/src/application/language/finnish/translations_lang.php +++ b/src/application/language/finnish/translations_lang.php @@ -216,7 +216,7 @@ $lang['page_not_found'] = 'Sivua ei löytynyt'; $lang['page_not_found_message'] = 'Valitettavasti sivua ei löytynyt. Tarkista selaimen osoiterivi tai siirry toiseen sijaintiin alla olevilla painikkeilla.'; $lang['error'] = 'Virhe'; $lang['no_privileges'] = 'Ei oikeuksia'; -$lang['no_provileges_message'] = 'Sinulla ei ole oikeuksia katsella tätä sivua. Siirry toiseen osioon.'; +$lang['no_privileges_message'] = 'Sinulla ei ole oikeuksia katsella tätä sivua. Siirry toiseen osioon.'; $lang['backend_calendar'] = 'Taustakalenteri'; $lang['start_date_time'] = 'Aloituspäivämäärä ja kellonaika'; $lang['end_date_time'] = 'Lopetus päivä ja kellonaika'; diff --git a/src/application/language/german/translations_lang.php b/src/application/language/german/translations_lang.php index 1eb2f281..3874894b 100644 --- a/src/application/language/german/translations_lang.php +++ b/src/application/language/german/translations_lang.php @@ -216,7 +216,7 @@ $lang['page_not_found'] = 'Seite Nicht Gefunden'; $lang['page_not_found_message'] = 'Leider ist die von Ihnen angeforderte Seite existiert nicht. Bitte überprüfen Sie Ihre Browser-URL oder navigieren Sie zu einem anderen Ort mit den Tasten unten.'; $lang['error'] = 'Fehler'; $lang['no_privileges'] = 'Unzureichende Berechtigungen'; -$lang['no_provileges_message'] = 'Sie haben nicht die Berechtigung, diese Seite zu sehen. Bitte wechseln Sie zu einem anderen Abschnitt.'; +$lang['no_privileges_message'] = 'Sie haben nicht die Berechtigung, diese Seite zu sehen. Bitte wechseln Sie zu einem anderen Abschnitt.'; $lang['backend_calendar'] = 'Backend Kalender'; $lang['start_date_time'] = 'Start Datum / Zeit'; $lang['end_date_time'] = 'Ende Datum / Zeit'; diff --git a/src/application/language/greek/translations_lang.php b/src/application/language/greek/translations_lang.php index adb02b7e..3c9bee64 100644 --- a/src/application/language/greek/translations_lang.php +++ b/src/application/language/greek/translations_lang.php @@ -216,7 +216,7 @@ $lang['page_not_found'] = 'Η Σελίδα Δεν Βρέθηκε'; $lang['page_not_found_message'] = 'Δυστυχώς η σελίδα που ζητήσατε δεν υπάρχει. Παρακαλώ ελέγξτε την διεύθυνση του περιηγητή σας ή πηγαίνετε σε κάποια από τις παρακάτω τοποθεσίες.'; $lang['error'] = 'Σφάλμα'; $lang['no_privileges'] = 'Ανεπαρκή Δικαιώματα'; -$lang['no_provileges_message'] = 'Δεν έχετε τα απαραίτητα δικαιώματα για να δείτε αυτήν την σελίδα. Παρακαλώ πλοηγηθείτε σε κάποιο άλλο τμήμα.'; +$lang['no_privileges_message'] = 'Δεν έχετε τα απαραίτητα δικαιώματα για να δείτε αυτήν την σελίδα. Παρακαλώ πλοηγηθείτε σε κάποιο άλλο τμήμα.'; $lang['backend_calendar'] = 'Ημερολόγιο Backend'; $lang['start_date_time'] = 'Ημ. / Ώρα Έναρξης'; $lang['end_date_time'] = 'Ημ. / Ώρα Λήξης'; diff --git a/src/application/language/hindi/translations_lang.php b/src/application/language/hindi/translations_lang.php index 4f288966..03c903bd 100644 --- a/src/application/language/hindi/translations_lang.php +++ b/src/application/language/hindi/translations_lang.php @@ -216,7 +216,7 @@ $lang['page_not_found'] = 'पृष्ठ नहीं मिला'; $lang['page_not_found_message'] = 'दुर्भाग्य से आप का अनुरोध पृष्ठ मौजूद नहीं है। आपके ब्राउज़र URL की जाँच करें या नीचे बटन का उपयोग कर किसी अन्य स्थान पर चलें'; $lang['error'] = 'एरर'; $lang['no_privileges'] = 'विशेषाधिकार नहीं है'; -$lang['no_provileges_message'] = 'आप इस पेज को देखने की आवश्यकता विशेषाधिकार नहीं है। एक अलग खंड पर नेविगेट करें'; +$lang['no_privileges_message'] = 'आप इस पेज को देखने की आवश्यकता विशेषाधिकार नहीं है। एक अलग खंड पर नेविगेट करें'; $lang['backend_calendar'] = 'बैकएंड कैलेंडर'; $lang['start_date_time'] = 'दिनांक और समय शुरू'; $lang['end_date_time'] = 'अंत की तारीख और समय'; diff --git a/src/application/language/hungarian/translations_lang.php b/src/application/language/hungarian/translations_lang.php index edde9228..d3ede3d5 100644 --- a/src/application/language/hungarian/translations_lang.php +++ b/src/application/language/hungarian/translations_lang.php @@ -216,7 +216,7 @@ $lang['page_not_found'] = 'Nincs ilyen oldal. '; $lang['page_not_found_message'] = 'Sajnos a keresett oldal nem létezik. Ellenőrizd a beírt URL-t vagy navigálj egy másik oldalra az alábbi gombok segítségével.'; $lang['error'] = 'Hiba'; $lang['no_privileges'] = 'Nincs jogosultságod. '; -$lang['no_provileges_message'] = 'Az oldal megtekintéséhez nincs megfelelő jogosultságod. Navigálj egy másik oldalra.'; +$lang['no_privileges_message'] = 'Az oldal megtekintéséhez nincs megfelelő jogosultságod. Navigálj egy másik oldalra.'; $lang['backend_calendar'] = 'Backend Naptár'; $lang['start_date_time'] = 'Kezdés dátuma / ideje'; $lang['end_date_time'] = 'Befejezés dátuma / ideje'; diff --git a/src/application/language/italian/translations_lang.php b/src/application/language/italian/translations_lang.php index 2b243e8d..f814db6e 100644 --- a/src/application/language/italian/translations_lang.php +++ b/src/application/language/italian/translations_lang.php @@ -222,7 +222,7 @@ $lang['page_not_found'] = 'Pagina non trovata'; $lang['page_not_found_message'] = 'Sfortunatamente la pagina richiesta non esiste. Controlla lo URL o naviga un indirizzo diverso usando i bottoni posti sotto.'; $lang['error'] = 'Errore'; $lang['no_privileges'] = 'Nessun privilegio'; -$lang['no_provileges_message'] = 'Non hai i privilegi richiesti per visualizzare questa pagina. Naviga una sezione differente.'; +$lang['no_privileges_message'] = 'Non hai i privilegi richiesti per visualizzare questa pagina. Naviga una sezione differente.'; $lang['backend_calendar'] = 'Calendario backend'; $lang['start_date_time'] = 'Inizio Data / Ora'; $lang['end_date_time'] = 'Fine Data / Ora'; diff --git a/src/application/language/japanese/translations_lang.php b/src/application/language/japanese/translations_lang.php index 5d2d3098..0873a1a9 100644 --- a/src/application/language/japanese/translations_lang.php +++ b/src/application/language/japanese/translations_lang.php @@ -216,7 +216,7 @@ $lang['page_not_found'] = 'ページが見つかりません'; $lang['page_not_found_message'] = '要求されたページが見つかりませんでした。ブラウザーのURLを確認するか下のボタンで 別のページへ移動してください。'; $lang['error'] = 'エラー'; $lang['no_privileges'] = '権限がありません'; -$lang['no_provileges_message'] = '該当のページを見るための権限がありません。別のページへ移動してください。'; +$lang['no_privileges_message'] = '該当のページを見るための権限がありません。別のページへ移動してください。'; $lang['backend_calendar'] = '管理カレンダー'; $lang['start_date_time'] = '開始日/時間'; $lang['end_date_time'] = '終了日/時間'; diff --git a/src/application/language/luxembourgish/translations_lang.php b/src/application/language/luxembourgish/translations_lang.php index b24c9dfd..ec29c868 100644 --- a/src/application/language/luxembourgish/translations_lang.php +++ b/src/application/language/luxembourgish/translations_lang.php @@ -216,7 +216,7 @@ $lang['page_not_found'] = 'Säit konnt net fonnt ginn'; $lang['page_not_found_message'] = 'Leider gëtt et déi vun Iech ugefuedert Säit net. Kontrolléiert w.e.g. Är Browser-URL oder navigéiert op eng aner Plaz.'; $lang['error'] = 'Fehler'; $lang['no_privileges'] = 'Net déi néideg Rechter'; -$lang['no_provileges_message'] = 'Dir hutt net déi néideg Rechter fir dës Säit ze gesinn. Wisselt w.e.g. op eng aner Usicht.'; +$lang['no_privileges_message'] = 'Dir hutt net déi néideg Rechter fir dës Säit ze gesinn. Wisselt w.e.g. op eng aner Usicht.'; $lang['backend_calendar'] = 'Backend Kalenner'; $lang['start_date_time'] = 'Ufanksdatum / Zäit'; $lang['end_date_time'] = 'Schlussdatum / Zäit'; diff --git a/src/application/language/polish/translations_lang.php b/src/application/language/polish/translations_lang.php index 25fed0c8..808ecc50 100644 --- a/src/application/language/polish/translations_lang.php +++ b/src/application/language/polish/translations_lang.php @@ -216,7 +216,7 @@ $lang['page_not_found'] = 'Strona Nie Znaleziona'; $lang['page_not_found_message'] = 'Niestey nie znaleziono strony, sprawdź adres url...'; $lang['error'] = 'Błąd'; $lang['no_privileges'] = 'Brak uprawnień'; -$lang['no_provileges_message'] = 'Nie masz odpowiednich uprawnień aby zobaczyć tą stronę. Nawiguj do innej sekcji.'; +$lang['no_privileges_message'] = 'Nie masz odpowiednich uprawnień aby zobaczyć tą stronę. Nawiguj do innej sekcji.'; $lang['backend_calendar'] = 'Kalendarz funkcjonalny'; $lang['start_date_time'] = 'Data startu / Czas'; $lang['end_date_time'] = 'Data końca / Czas'; diff --git a/src/application/language/portuguese-br/translations_lang.php b/src/application/language/portuguese-br/translations_lang.php index cf980d0e..19269afa 100644 --- a/src/application/language/portuguese-br/translations_lang.php +++ b/src/application/language/portuguese-br/translations_lang.php @@ -216,7 +216,7 @@ $lang['page_not_found'] = 'Página não encontrada ou página não existente'; $lang['page_not_found_message'] = 'Infelizmente a pagina solicitada não existe. Por favor verifique a URL ou siga outro local usando os botões abaixo.'; $lang['error'] = 'Erro'; $lang['no_privileges'] = 'Não tem permissão'; -$lang['no_provileges_message'] = 'Não tem permissões para visualizar esta página. Por favor, selecione outra página.'; +$lang['no_privileges_message'] = 'Não tem permissões para visualizar esta página. Por favor, selecione outra página.'; $lang['backend_calendar'] = 'Backend calendário'; $lang['start_date_time'] = 'Data / hora inicial'; $lang['end_date_time'] = 'Data / hora final'; diff --git a/src/application/language/portuguese/translations_lang.php b/src/application/language/portuguese/translations_lang.php index 19dd3a6b..fec5235d 100644 --- a/src/application/language/portuguese/translations_lang.php +++ b/src/application/language/portuguese/translations_lang.php @@ -216,7 +216,7 @@ $lang['page_not_found'] = 'Página não encontrada or página não existente'; $lang['page_not_found_message'] = 'Unfortunately the page you requested does not exist. Please check your browser URL or head to another location using the buttons below.'; $lang['error'] = 'Fechado'; $lang['no_privileges'] = 'Não tem permissão'; -$lang['no_provileges_message'] = 'Não tem permissões para visualizar esta pagina. Por favor, selecione outra pagina.'; +$lang['no_privileges_message'] = 'Não tem permissões para visualizar esta pagina. Por favor, selecione outra pagina.'; $lang['backend_calendar'] = 'Backend calendário'; $lang['start_date_time'] = 'Data / hora inicial'; $lang['end_date_time'] = 'Data / hora final'; diff --git a/src/application/language/romanian/translations_lang.php b/src/application/language/romanian/translations_lang.php index a3fcf2f7..5a0909e1 100644 --- a/src/application/language/romanian/translations_lang.php +++ b/src/application/language/romanian/translations_lang.php @@ -222,7 +222,7 @@ $lang['page_not_found'] = 'Pagina negasita'; $lang['page_not_found_message'] = 'Din pacate pagina pe care ati cerut-o nu exista. Va rugam verificati adresa sau introduceti alta locatie folosind butoanele de mai jos.'; $lang['error'] = 'Eroare'; $lang['no_privileges'] = 'Fara drepturi'; -$lang['no_provileges_message'] = 'Nu aveti drepturile necesare pentru a vizualiza aceasta pagina. Va rugam navigati spre alta sectiune.'; +$lang['no_privileges_message'] = 'Nu aveti drepturile necesare pentru a vizualiza aceasta pagina. Va rugam navigati spre alta sectiune.'; $lang['backend_calendar'] = 'Calendar backend'; $lang['start_date_time'] = 'Start Data / Ora'; $lang['end_date_time'] = 'Sfarsit Data / Ora'; diff --git a/src/application/language/russian/translations_lang.php b/src/application/language/russian/translations_lang.php index d3aa433b..17290095 100644 --- a/src/application/language/russian/translations_lang.php +++ b/src/application/language/russian/translations_lang.php @@ -216,7 +216,7 @@ $lang['page_not_found'] = 'Страница не найдена'; $lang['page_not_found_message'] = 'К сожалению страница, которую вы запросили, не существует. Пожалуйста проверьте запрос в строке браузера или перейдите по ссылке используя меню и кнопки сайта.'; $lang['error'] = 'Ошибка'; $lang['no_privileges'] = 'Отсутствуют необходимые привилегии'; -$lang['no_provileges_message'] = 'Вы не имеете необходимых разрешений на просмотр этой страницы. Пожалуйста используйте другие разделы.'; +$lang['no_privileges_message'] = 'Вы не имеете необходимых разрешений на просмотр этой страницы. Пожалуйста используйте другие разделы.'; $lang['backend_calendar'] = 'бэкэнд Календарь'; $lang['start_date_time'] = 'Начало дата/время'; $lang['end_date_time'] = 'Окончание дата/время'; diff --git a/src/application/language/slovak/translations_lang.php b/src/application/language/slovak/translations_lang.php index cc862bbf..5e5e0fee 100644 --- a/src/application/language/slovak/translations_lang.php +++ b/src/application/language/slovak/translations_lang.php @@ -216,7 +216,7 @@ $lang['page_not_found'] = 'Stránka nenájdená'; $lang['page_not_found_message'] = 'Žiaľ Vami požadovaná stránka neexistuje. Prosím skontrolujte adresu URL prehliadača, alebo zmeňte umiestnenie pomocou tlačidiel nižšie.'; $lang['error'] = 'Chyba'; $lang['no_privileges'] = 'Nemáte oprávnenie'; -$lang['no_provileges_message'] = 'Nemáte požadované oprávnenie na zobrazenie tejto stránky. Prejdite do inej sekcie.'; +$lang['no_privileges_message'] = 'Nemáte požadované oprávnenie na zobrazenie tejto stránky. Prejdite do inej sekcie.'; $lang['backend_calendar'] = 'Administrácia - kalendár'; $lang['start_date_time'] = 'Dátum začatia / čas'; $lang['end_date_time'] = 'Dátum konca / čas'; diff --git a/src/application/language/spanish/translations_lang.php b/src/application/language/spanish/translations_lang.php index a2565115..ad006516 100644 --- a/src/application/language/spanish/translations_lang.php +++ b/src/application/language/spanish/translations_lang.php @@ -216,7 +216,7 @@ $lang['page_not_found'] = 'No se encontró la página'; $lang['page_not_found_message'] ='Lamentablemente, la página que Usted solicitó no existe. Por favor, verifique la dirección web de su navegador o utilice los botones de abajo para navegar hacia otra ubicación.'; $lang['error'] = 'Error'; $lang['no_privileges'] = 'Sin permisos'; -$lang['no_provileges_message'] ='Usted no posee los permisos necesarios para ver esta página. Por favor, navegue hacia otra sección.'; +$lang['no_privileges_message'] ='Usted no posee los permisos necesarios para ver esta página. Por favor, navegue hacia otra sección.'; $lang['backend_calendar'] = 'Calendario de gestión interna'; $lang['start_date_time'] = 'Fecha y hora de inicio'; $lang['end_date_time'] = 'Fecha y hora final'; diff --git a/src/application/language/turkish/translations_lang.php b/src/application/language/turkish/translations_lang.php index d0035dbb..ac9e8daa 100644 --- a/src/application/language/turkish/translations_lang.php +++ b/src/application/language/turkish/translations_lang.php @@ -216,7 +216,7 @@ $lang['page_not_found'] = 'Sayfa Bulunamadı'; $lang['page_not_found_message'] = 'Unfortunately the page you requested does not exist. Please check your browser URL or head to another location using the buttons below.'; $lang['error'] = 'Hata'; $lang['no_privileges'] = 'Yetki Yok'; -$lang['no_provileges_message'] = 'Bu sayfayı görmek için gereken yetkiye sahip değilsiniz. Lütfen başka bir bölüme geçin.'; +$lang['no_privileges_message'] = 'Bu sayfayı görmek için gereken yetkiye sahip değilsiniz. Lütfen başka bir bölüme geçin.'; $lang['backend_calendar'] = 'Arka uç Takvim'; $lang['start_date_time'] = 'Başlangıç Tarih / Zaman'; $lang['end_date_time'] = 'Bitiş Tarih / Zaman '; diff --git a/src/vendor/autoload.php b/src/vendor/autoload.php index 2a22bff5..aa87f0be 100644 --- a/src/vendor/autoload.php +++ b/src/vendor/autoload.php @@ -4,4 +4,4 @@ require_once __DIR__ . '/composer/autoload_real.php'; -return ComposerAutoloaderInit27b185dd281c9a16e18aefb1c9e2d420::getLoader(); +return ComposerAutoloaderInit745c9af234090db98769aa0b5014bcf4::getLoader(); diff --git a/src/vendor/composer/autoload_real.php b/src/vendor/composer/autoload_real.php index a1de9cfd..cf79bb78 100644 --- a/src/vendor/composer/autoload_real.php +++ b/src/vendor/composer/autoload_real.php @@ -2,7 +2,7 @@ // autoload_real.php @generated by Composer -class ComposerAutoloaderInit27b185dd281c9a16e18aefb1c9e2d420 +class ComposerAutoloaderInit745c9af234090db98769aa0b5014bcf4 { private static $loader; @@ -19,15 +19,15 @@ class ComposerAutoloaderInit27b185dd281c9a16e18aefb1c9e2d420 return self::$loader; } - spl_autoload_register(array('ComposerAutoloaderInit27b185dd281c9a16e18aefb1c9e2d420', 'loadClassLoader'), true, true); + spl_autoload_register(array('ComposerAutoloaderInit745c9af234090db98769aa0b5014bcf4', 'loadClassLoader'), true, true); self::$loader = $loader = new \Composer\Autoload\ClassLoader(); - spl_autoload_unregister(array('ComposerAutoloaderInit27b185dd281c9a16e18aefb1c9e2d420', 'loadClassLoader')); + spl_autoload_unregister(array('ComposerAutoloaderInit745c9af234090db98769aa0b5014bcf4', 'loadClassLoader')); $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded()); if ($useStaticLoader) { require_once __DIR__ . '/autoload_static.php'; - call_user_func(\Composer\Autoload\ComposerStaticInit27b185dd281c9a16e18aefb1c9e2d420::getInitializer($loader)); + call_user_func(\Composer\Autoload\ComposerStaticInit745c9af234090db98769aa0b5014bcf4::getInitializer($loader)); } else { $map = require __DIR__ . '/autoload_namespaces.php'; foreach ($map as $namespace => $path) { diff --git a/src/vendor/composer/autoload_static.php b/src/vendor/composer/autoload_static.php index 2eaa12f2..b7dc26f0 100644 --- a/src/vendor/composer/autoload_static.php +++ b/src/vendor/composer/autoload_static.php @@ -4,7 +4,7 @@ namespace Composer\Autoload; -class ComposerStaticInit9c38908245762ba05608594a95bb6a4f +class ComposerStaticInit745c9af234090db98769aa0b5014bcf4 { public static $prefixLengthsPsr4 = array ( 'p' => @@ -539,10 +539,10 @@ class ComposerStaticInit9c38908245762ba05608594a95bb6a4f public static function getInitializer(ClassLoader $loader) { return \Closure::bind(function () use ($loader) { - $loader->prefixLengthsPsr4 = ComposerStaticInit9c38908245762ba05608594a95bb6a4f::$prefixLengthsPsr4; - $loader->prefixDirsPsr4 = ComposerStaticInit9c38908245762ba05608594a95bb6a4f::$prefixDirsPsr4; - $loader->prefixesPsr0 = ComposerStaticInit9c38908245762ba05608594a95bb6a4f::$prefixesPsr0; - $loader->classMap = ComposerStaticInit9c38908245762ba05608594a95bb6a4f::$classMap; + $loader->prefixLengthsPsr4 = ComposerStaticInit745c9af234090db98769aa0b5014bcf4::$prefixLengthsPsr4; + $loader->prefixDirsPsr4 = ComposerStaticInit745c9af234090db98769aa0b5014bcf4::$prefixDirsPsr4; + $loader->prefixesPsr0 = ComposerStaticInit745c9af234090db98769aa0b5014bcf4::$prefixesPsr0; + $loader->classMap = ComposerStaticInit745c9af234090db98769aa0b5014bcf4::$classMap; }, null, ClassLoader::class); } diff --git a/src/vendor/composer/installed.json b/src/vendor/composer/installed.json index a1d14286..6405f618 100644 --- a/src/vendor/composer/installed.json +++ b/src/vendor/composer/installed.json @@ -1,4 +1,39 @@ [ + { + "name": "codeigniter/framework", + "version": "3.1.5", + "version_normalized": "3.1.5.0", + "source": { + "type": "git", + "url": "https://github.com/bcit-ci/CodeIgniter.git", + "reference": "6c7a4266410070d30f8f6bcdf9c9e67f3d6478e3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/bcit-ci/CodeIgniter/zipball/6c7a4266410070d30f8f6bcdf9c9e67f3d6478e3", + "reference": "6c7a4266410070d30f8f6bcdf9c9e67f3d6478e3", + "shasum": "" + }, + "require": { + "php": ">=5.3.7" + }, + "require-dev": { + "mikey179/vfsstream": "1.1.*", + "phpunit/phpunit": "4.* || 5.*" + }, + "suggest": { + "paragonie/random_compat": "Provides better randomness in PHP 5.x" + }, + "time": "2017-06-19T08:33:58+00:00", + "type": "project", + "installation-source": "dist", + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "The CodeIgniter framework", + "homepage": "https://codeigniter.com" + }, { "name": "gregwar/captcha", "version": "v1.1.1", @@ -51,30 +86,46 @@ }, { "name": "phpmailer/phpmailer", - "version": "v5.2.16", - "version_normalized": "5.2.16.0", + "version": "v5.2.23", + "version_normalized": "5.2.23.0", "source": { "type": "git", "url": "https://github.com/PHPMailer/PHPMailer.git", - "reference": "1d85f9ef3ecfc42bbc4f3c70d5e37ca9a65f629a" + "reference": "7115df4a6f76281109ebe352900c42403b728bb4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHPMailer/PHPMailer/zipball/1d85f9ef3ecfc42bbc4f3c70d5e37ca9a65f629a", - "reference": "1d85f9ef3ecfc42bbc4f3c70d5e37ca9a65f629a", + "url": "https://api.github.com/repos/PHPMailer/PHPMailer/zipball/7115df4a6f76281109ebe352900c42403b728bb4", + "reference": "7115df4a6f76281109ebe352900c42403b728bb4", "shasum": "" }, "require": { "php": ">=5.0.0" }, "require-dev": { - "phpdocumentor/phpdocumentor": "*", - "phpunit/phpunit": "4.7.*" + "doctrine/annotations": "1.2.*", + "jms/serializer": "0.16.*", + "phpdocumentor/phpdocumentor": "2.*", + "phpunit/phpunit": "4.8.*", + "symfony/debug": "2.8.*", + "symfony/filesystem": "2.8.*", + "symfony/translation": "2.8.*", + "symfony/yaml": "2.8.*", + "zendframework/zend-cache": "2.5.1", + "zendframework/zend-config": "2.5.1", + "zendframework/zend-eventmanager": "2.5.1", + "zendframework/zend-filter": "2.5.1", + "zendframework/zend-i18n": "2.5.1", + "zendframework/zend-json": "2.5.1", + "zendframework/zend-math": "2.5.1", + "zendframework/zend-serializer": "2.5.*", + "zendframework/zend-servicemanager": "2.5.*", + "zendframework/zend-stdlib": "2.5.1" }, "suggest": { "league/oauth2-google": "Needed for Google XOAUTH2 authentication" }, - "time": "2016-06-06T09:09:37+00:00", + "time": "2017-03-15T19:32:56+00:00", "type": "library", "installation-source": "dist", "autoload": { @@ -112,38 +163,141 @@ "description": "PHPMailer is a full-featured email creation and transfer class for PHP" }, { - "name": "codeigniter/framework", - "version": "3.1.2", - "version_normalized": "3.1.2.0", + "name": "roave/security-advisories", + "version": "dev-master", + "version_normalized": "9999999-dev", "source": { "type": "git", - "url": "https://github.com/bcit-ci/CodeIgniter.git", - "reference": "2afa6b6b58a73fa26a7a93045ccb1fc8a087a141" + "url": "https://github.com/Roave/SecurityAdvisories.git", + "reference": "0b18b6bbeed070fb900ad78e81ffa1182a57a752" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/bcit-ci/CodeIgniter/zipball/2afa6b6b58a73fa26a7a93045ccb1fc8a087a141", - "reference": "2afa6b6b58a73fa26a7a93045ccb1fc8a087a141", + "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/0b18b6bbeed070fb900ad78e81ffa1182a57a752", + "reference": "0b18b6bbeed070fb900ad78e81ffa1182a57a752", "shasum": "" }, - "require": { - "php": ">=5.2.4" + "conflict": { + "adodb/adodb-php": "<5.20.6", + "amphp/artax": ">=2,<2.0.6|<1.0.6", + "aws/aws-sdk-php": ">=3,<3.2.1", + "bugsnag/bugsnag-laravel": ">=2,<2.0.2", + "cakephp/cakephp": ">=3,<3.0.15|>=2,<2.4.99|>=2.5,<2.5.99|>=2.6,<2.6.12|>=1.3,<1.3.18|>=2.7,<2.7.6|>=3.1,<3.1.4", + "cart2quote/module-quotation": ">=4.1.6,<=4.4.5|>=5,<5.4.4", + "cartalyst/sentry": "<2.1", + "codeigniter/framework": "<=3.0.6", + "composer/composer": "<=1.0.0-alpha11", + "contao-components/mediaelement": ">=2.14.2,<2.21.1", + "contao/core": ">=2.11,<3.5.15", + "doctrine/annotations": ">=1,<1.2.7", + "doctrine/cache": ">=1,<1.3.2|>=1.4,<1.4.2", + "doctrine/common": ">=2,<2.4.3|>=2.5,<2.5.1", + "doctrine/dbal": ">=2,<2.0.8|>=2.1,<2.1.2", + "doctrine/doctrine-bundle": "<1.5.2", + "doctrine/doctrine-module": "<=0.7.1", + "doctrine/mongodb-odm": ">=1,<1.0.2", + "doctrine/mongodb-odm-bundle": ">=2,<3.0.1", + "doctrine/orm": ">=2,<2.4.8|>=2.5,<2.5.1", + "dompdf/dompdf": ">=0.6,<0.6.2", + "drupal/core": ">=8,<8.3.4", + "drupal/drupal": ">=8,<8.3.4", + "firebase/php-jwt": "<2", + "friendsofsymfony/rest-bundle": ">=1.2,<1.2.2", + "friendsofsymfony/user-bundle": ">=1.2,<1.3.5", + "gregwar/rst": "<1.0.3", + "guzzlehttp/guzzle": ">=6,<6.2.1|>=4.0.0-rc2,<4.2.4|>=5,<5.3.1", + "illuminate/auth": ">=4,<4.0.99|>=4.1,<4.1.26", + "illuminate/database": ">=4,<4.0.99|>=4.1,<4.1.29", + "joomla/session": "<1.3.1", + "laravel/framework": ">=4,<4.0.99|>=4.1,<4.1.29", + "laravel/socialite": ">=1,<1.0.99|>=2,<2.0.10", + "magento/magento1ce": ">=1.5.0.1,<1.9.3.2", + "magento/magento1ee": ">=1.9,<1.14.3.2", + "magento/magento2ce": ">=2,<2.2", + "monolog/monolog": ">=1.8,<1.12", + "namshi/jose": "<2.2", + "onelogin/php-saml": "<2.10.4", + "oro/crm": ">=1.7,<1.7.4", + "oro/platform": ">=1.7,<1.7.4", + "phpmailer/phpmailer": ">=5,<5.2.22", + "pusher/pusher-php-server": "<2.2.1", + "sabre/dav": ">=1.6,<1.6.99|>=1.7,<1.7.11|>=1.8,<1.8.9", + "shopware/shopware": "<4.4|>=5,<5.2.16", + "silverstripe/cms": ">=3.1,<3.1.11|>=3,<=3.0.11", + "silverstripe/forum": "<=0.6.1|>=0.7,<=0.7.3", + "silverstripe/framework": ">=3,<3.3", + "silverstripe/userforms": "<3", + "simplesamlphp/saml2": "<1.8.1|>=1.9,<1.9.1|>=1.10,<1.10.3|>=2,<2.3.3", + "simplesamlphp/simplesamlphp": "<1.14.12", + "simplesamlphp/simplesamlphp-module-infocard": "<1.0.1", + "socalnick/scn-social-auth": "<1.15.2", + "squizlabs/php_codesniffer": ">=1,<2.8.1", + "swiftmailer/swiftmailer": ">=4,<5.4.5", + "symfony/dependency-injection": ">=2,<2.0.17", + "symfony/form": ">=2.3,<2.3.35|>=2.4,<2.6.12|>=2.7,<2.7.7", + "symfony/framework-bundle": ">=2,<2.3.18|>=2.4,<2.4.8|>=2.5,<2.5.2", + "symfony/http-foundation": ">=2,<2.3.27|>=2.4,<2.5.11|>=2.6,<2.6.6", + "symfony/http-kernel": ">=2,<2.3.29|>=2.4,<2.5.12|>=2.6,<2.6.8", + "symfony/routing": ">=2,<2.0.19", + "symfony/security": ">=2.3,<2.3.37|>=2.4,<2.6.13|>=2.7,<2.7.9|>=2,<2.0.25|>=2.1,<2.1.13|>=2.2,<2.2.9", + "symfony/security-core": ">=2.8,<2.8.6|>=3,<3.0.6|>=2.4,<2.6.13|>=2.7,<2.7.9", + "symfony/security-http": ">=2.4,<2.7.13|>=2.3,<2.3.41|>=2.8,<2.8.6|>=3,<3.0.6", + "symfony/serializer": ">=2,<2.0.11", + "symfony/symfony": ">=2,<2.3.41|>=2.4,<2.7.13|>=2.8,<2.8.6|>=3,<3.0.6", + "symfony/translation": ">=2,<2.0.17", + "symfony/validator": ">=2,<2.0.24|>=2.1,<2.1.12|>=2.2,<2.2.5|>=2.3,<2.3.3", + "symfony/web-profiler-bundle": ">=2,<2.3.19|>=2.4,<2.4.9|>=2.5,<2.5.4", + "symfony/yaml": ">=2,<2.0.22|>=2.1,<2.1.7", + "thelia/backoffice-default-template": ">=2.1,<2.1.2", + "thelia/thelia": ">=2.1.0-beta1,<2.1.3|>=2.1,<2.1.2", + "twig/twig": "<1.20", + "typo3/cms": ">=6.2,<6.2.30|>=8,<8.6.1|>=7,<7.6.16", + "typo3/flow": ">=2.3,<2.3.16|>=3,<3.0.10|>=3.1,<3.1.7|>=3.2,<3.2.7|>=3.3,<3.3.5|>=1,<1.0.4|>=1.1,<1.1.1|>=2,<2.0.1", + "typo3/neos": ">=1.1,<1.1.3|>=1.2,<1.2.13|>=2,<2.0.4", + "willdurand/js-translation-bundle": "<2.1.1", + "yiisoft/yii": ">=1.1.14,<1.1.15", + "yiisoft/yii2": "<2.0.5", + "yiisoft/yii2-bootstrap": "<2.0.4", + "yiisoft/yii2-dev": "<2.0.4", + "yiisoft/yii2-gii": "<2.0.4", + "yiisoft/yii2-jui": "<2.0.4", + "zendframework/zend-cache": ">=2.4,<2.4.8|>=2.5,<2.5.3", + "zendframework/zend-captcha": ">=2,<2.4.9|>=2.5,<2.5.2", + "zendframework/zend-crypt": ">=2,<2.4.9|>=2.5,<2.5.2", + "zendframework/zend-db": ">=2,<2.0.99|>=2.1,<2.1.99|>=2.2,<2.2.10|>=2.3,<2.3.5", + "zendframework/zend-diactoros": ">=1,<1.0.4", + "zendframework/zend-form": ">=2,<2.2.7|>=2.3,<2.3.1", + "zendframework/zend-http": ">=2,<2.0.99|>=2.1,<2.1.99|>=2.3,<2.3.8|>=2.4,<2.4.1", + "zendframework/zend-json": ">=2.1,<2.1.6|>=2.2,<2.2.6", + "zendframework/zend-ldap": ">=2,<2.0.99|>=2.1,<2.1.99|>=2.2,<2.2.8|>=2.3,<2.3.3", + "zendframework/zend-mail": ">=2,<2.4.11|>=2.5,<2.7.2", + "zendframework/zend-navigation": ">=2,<2.2.7|>=2.3,<2.3.1", + "zendframework/zend-session": ">=2,<2.0.99|>=2.1,<2.1.99|>=2.2,<2.2.9|>=2.3,<2.3.4", + "zendframework/zend-validator": ">=2.3,<2.3.6", + "zendframework/zend-view": ">=2,<2.2.7|>=2.3,<2.3.1", + "zendframework/zend-xmlrpc": ">=2.1,<2.1.6|>=2.2,<2.2.6", + "zendframework/zendframework": ">=2,<2.4.11|>=2.5,<2.5.1", + "zendframework/zendframework1": "<1.12.20", + "zendframework/zendopenid": ">=2,<2.0.2", + "zendframework/zendxml": ">=1,<1.0.1", + "zf-commons/zfc-user": "<1.2.2", + "zfcampus/zf-apigility-doctrine": ">=1,<1.0.3", + "zfr/zfr-oauth2-server-module": "<0.1.2" }, - "require-dev": { - "mikey179/vfsstream": "1.1.*" - }, - "suggest": { - "paragonie/random_compat": "Provides better randomness in PHP 5.x" - }, - "time": "2016-10-28T15:13:14+00:00", - "type": "project", - "installation-source": "dist", + "time": "2017-06-22T16:43:17+00:00", + "type": "metapackage", "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "description": "The CodeIgniter framework", - "homepage": "https://codeigniter.com" + "authors": [ + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com", + "role": "maintainer" + } + ], + "description": "Prevents installation of composer packages with known security vulnerabilities: no API, simply require it" }, { "name": "webmozart/assert", diff --git a/src/vendor/phpmailer/phpmailer/VERSION b/src/vendor/phpmailer/phpmailer/VERSION index 56f1219b..3ace8b4b 100644 --- a/src/vendor/phpmailer/phpmailer/VERSION +++ b/src/vendor/phpmailer/phpmailer/VERSION @@ -1 +1 @@ -5.2.16 \ No newline at end of file +5.2.23 diff --git a/src/vendor/phpmailer/phpmailer/class.phpmailer.php b/src/vendor/phpmailer/phpmailer/class.phpmailer.php index f9013ebb..1b31ec14 100644 --- a/src/vendor/phpmailer/phpmailer/class.phpmailer.php +++ b/src/vendor/phpmailer/phpmailer/class.phpmailer.php @@ -31,7 +31,7 @@ class PHPMailer * The PHPMailer Version number. * @var string */ - public $Version = '5.2.16'; + public $Version = '5.2.23'; /** * Email priority. @@ -201,6 +201,9 @@ class PHPMailer /** * An ID to be used in the Message-ID header. * If empty, a unique id will be generated. + * You can set your own, but it must be in the format "", + * as defined in RFC5322 section 3.6.4 or it will be ignored. + * @see https://tools.ietf.org/html/rfc5322#section-3.6.4 * @var string */ public $MessageID = ''; @@ -420,6 +423,13 @@ class PHPMailer */ public $DKIM_private = ''; + /** + * DKIM private key string. + * If set, takes precedence over `$DKIM_private`. + * @var string + */ + public $DKIM_private_string = ''; + /** * Callback Action function name. * @@ -681,16 +691,16 @@ class PHPMailer } else { $subject = $this->encodeHeader($this->secureHeader($subject)); } - //Can't use additional_parameters in safe_mode + + //Can't use additional_parameters in safe_mode, calling mail() with null params breaks //@link http://php.net/manual/en/function.mail.php - if (ini_get('safe_mode') or !$this->UseSendmailOptions) { + if (ini_get('safe_mode') or !$this->UseSendmailOptions or is_null($params)) { $result = @mail($to, $subject, $body, $header); } else { $result = @mail($to, $subject, $body, $header, $params); } return $result; } - /** * Output debugging info via user-defined method. * Only generates output if SMTP debug output is enabled (@see SMTP::$do_debug). @@ -1284,9 +1294,11 @@ class PHPMailer // Sign with DKIM if enabled if (!empty($this->DKIM_domain) - && !empty($this->DKIM_private) && !empty($this->DKIM_selector) - && file_exists($this->DKIM_private)) { + && (!empty($this->DKIM_private_string) + || (!empty($this->DKIM_private) && file_exists($this->DKIM_private)) + ) + ) { $header_dkim = $this->DKIM_Add( $this->MIMEHeader . $this->mailHeader, $this->encodeHeader($this->secureHeader($this->Subject)), @@ -1352,19 +1364,24 @@ class PHPMailer */ protected function sendmailSend($header, $body) { - if ($this->Sender != '') { + // CVE-2016-10033, CVE-2016-10045: Don't pass -f if characters will be escaped. + if (!empty($this->Sender) and self::isShellSafe($this->Sender)) { if ($this->Mailer == 'qmail') { - $sendmail = sprintf('%s -f%s', escapeshellcmd($this->Sendmail), escapeshellarg($this->Sender)); + $sendmailFmt = '%s -f%s'; } else { - $sendmail = sprintf('%s -oi -f%s -t', escapeshellcmd($this->Sendmail), escapeshellarg($this->Sender)); + $sendmailFmt = '%s -oi -f%s -t'; } } else { if ($this->Mailer == 'qmail') { - $sendmail = sprintf('%s', escapeshellcmd($this->Sendmail)); + $sendmailFmt = '%s'; } else { - $sendmail = sprintf('%s -oi -t', escapeshellcmd($this->Sendmail)); + $sendmailFmt = '%s -oi -t'; } } + + // TODO: If possible, this should be changed to escapeshellarg. Needs thorough testing. + $sendmail = sprintf($sendmailFmt, escapeshellcmd($this->Sendmail), $this->Sender); + if ($this->SingleTo) { foreach ($this->SingleToArray as $toAddr) { if (!@$mail = popen($sendmail, 'w')) { @@ -1410,6 +1427,40 @@ class PHPMailer return true; } + /** + * Fix CVE-2016-10033 and CVE-2016-10045 by disallowing potentially unsafe shell characters. + * + * Note that escapeshellarg and escapeshellcmd are inadequate for our purposes, especially on Windows. + * @param string $string The string to be validated + * @see https://github.com/PHPMailer/PHPMailer/issues/924 CVE-2016-10045 bug report + * @access protected + * @return boolean + */ + protected static function isShellSafe($string) + { + // Future-proof + if (escapeshellcmd($string) !== $string + or !in_array(escapeshellarg($string), array("'$string'", "\"$string\"")) + ) { + return false; + } + + $length = strlen($string); + + for ($i = 0; $i < $length; $i++) { + $c = $string[$i]; + + // All other characters have a special meaning in at least one common shell, including = and +. + // Full stop (.) has a special meaning in cmd.exe, but its impact should be negligible here. + // Note that this does permit non-Latin alphanumeric characters based on the current locale. + if (!ctype_alnum($c) && strpos('@_-.', $c) === false) { + return false; + } + } + + return true; + } + /** * Send mail using the PHP mail() function. * @param string $header The message headers @@ -1429,10 +1480,13 @@ class PHPMailer $params = null; //This sets the SMTP envelope sender which gets turned into a return-path header by the receiver - if (!empty($this->Sender)) { - $params = sprintf('-f%s', $this->Sender); + if (!empty($this->Sender) and $this->validateAddress($this->Sender)) { + // CVE-2016-10033, CVE-2016-10045: Don't pass -f if characters will be escaped. + if (self::isShellSafe($this->Sender)) { + $params = sprintf('-f%s', $this->Sender); + } } - if ($this->Sender != '' and !ini_get('safe_mode')) { + if (!empty($this->Sender) and !ini_get('safe_mode') and $this->validateAddress($this->Sender)) { $old_from = ini_get('sendmail_from'); ini_set('sendmail_from', $this->Sender); } @@ -1486,10 +1540,10 @@ class PHPMailer if (!$this->smtpConnect($this->SMTPOptions)) { throw new phpmailerException($this->lang('smtp_connect_failed'), self::STOP_CRITICAL); } - if ('' == $this->Sender) { - $smtp_from = $this->From; - } else { + if (!empty($this->Sender) and $this->validateAddress($this->Sender)) { $smtp_from = $this->Sender; + } else { + $smtp_from = $this->From; } if (!$this->smtp->mail($smtp_from)) { $this->setError($this->lang('from_failed') . $smtp_from . ' : ' . implode(',', $this->smtp->getError())); @@ -1681,6 +1735,19 @@ class PHPMailer */ public function setLanguage($langcode = 'en', $lang_path = '') { + // Backwards compatibility for renamed language codes + $renamed_langcodes = array( + 'br' => 'pt_br', + 'cz' => 'cs', + 'dk' => 'da', + 'no' => 'nb', + 'se' => 'sv', + ); + + if (isset($renamed_langcodes[$langcode])) { + $langcode = $renamed_langcodes[$langcode]; + } + // Define full set of translatable strings in English $PHPMAILER_LANG = array( 'authenticate' => 'SMTP Error: Could not authenticate.', @@ -1707,6 +1774,10 @@ class PHPMailer // Calculate an absolute path so it can work if CWD is not here $lang_path = dirname(__FILE__). DIRECTORY_SEPARATOR . 'language'. DIRECTORY_SEPARATOR; } + //Validate $langcode + if (!preg_match('/^[a-z]{2}(?:_[a-zA-Z]{2})?$/', $langcode)) { + $langcode = 'en'; + } $foundlang = true; $lang_file = $lang_path . 'phpmailer.lang-' . $langcode . '.php'; // There is no English translation file @@ -2000,6 +2071,8 @@ class PHPMailer $result .= $this->headerLine('Subject', $this->encodeHeader($this->secureHeader($this->Subject))); } + // Only allow a custom message ID if it conforms to RFC 5322 section 3.6.4 + // https://tools.ietf.org/html/rfc5322#section-3.6.4 if ('' != $this->MessageID and preg_match('/^<.*@.*>$/', $this->MessageID)) { $this->lastMessageID = $this->MessageID; } else { @@ -2105,6 +2178,14 @@ class PHPMailer return rtrim($this->MIMEHeader . $this->mailHeader, "\n\r") . self::CRLF . self::CRLF . $this->MIMEBody; } + /** + * Create unique ID + * @return string + */ + protected function generateId() { + return md5(uniqid(time())); + } + /** * Assemble the message body. * Returns an empty string on failure. @@ -2116,7 +2197,7 @@ class PHPMailer { $body = ''; //Create unique IDs and preset boundaries - $this->uniqueid = md5(uniqid(time())); + $this->uniqueid = $this->generateId(); $this->boundary[1] = 'b1_' . $this->uniqueid; $this->boundary[2] = 'b2_' . $this->uniqueid; $this->boundary[3] = 'b3_' . $this->uniqueid; @@ -2411,6 +2492,7 @@ class PHPMailer /** * Add an attachment from a path on the filesystem. + * Never use a user-supplied path to a file! * Returns false if the file could not be found or read. * @param string $path Path to the attachment. * @param string $name Overrides the attachment name. @@ -2936,6 +3018,7 @@ class PHPMailer * displayed inline with the message, not just attached for download. * This is used in HTML messages that embed the images * the HTML refers to using the $cid value. + * Never use a user-supplied path to a file! * @param string $path Path to the attachment. * @param string $cid Content ID of the attachment; Use this to reference * the content when using an embedded image in HTML. @@ -3296,21 +3379,29 @@ class PHPMailer } /** - * Create a message from an HTML string. - * Automatically makes modifications for inline images and backgrounds - * and creates a plain-text version by converting the HTML. - * Overwrites any existing values in $this->Body and $this->AltBody + * Create a message body from an HTML string. + * Automatically inlines images and creates a plain-text version by converting the HTML, + * overwriting any existing values in Body and AltBody. + * Do not source $message content from user input! + * $basedir is prepended when handling relative URLs, e.g. and must not be empty + * will look for an image file in $basedir/images/a.png and convert it to inline. + * If you don't provide a $basedir, relative paths will be left untouched (and thus probably break in email) + * If you don't want to apply these transformations to your HTML, just set Body and AltBody directly. * @access public * @param string $message HTML message string - * @param string $basedir baseline directory for path + * @param string $basedir Absolute path to a base directory to prepend to relative paths to images * @param boolean|callable $advanced Whether to use the internal HTML to text converter * or your own custom converter @see PHPMailer::html2text() - * @return string $message + * @return string $message The transformed message Body */ public function msgHTML($message, $basedir = '', $advanced = false) { preg_match_all('/(src|background)=["\'](.*)["\']/Ui', $message, $images); if (array_key_exists(2, $images)) { + if (strlen($basedir) > 1 && substr($basedir, -1) != '/') { + // Ensure $basedir has a trailing / + $basedir .= '/'; + } foreach ($images[2] as $imgindex => $url) { // Convert data URIs into embedded images if (preg_match('#^data:(image[^;,]*)(;base64)?,#', $url, $match)) { @@ -3328,18 +3419,24 @@ class PHPMailer $message ); } - } elseif (substr($url, 0, 4) !== 'cid:' && !preg_match('#^[a-z][a-z0-9+.-]*://#i', $url)) { - // Do not change urls for absolute images (thanks to corvuscorax) + continue; + } + if ( + // Only process relative URLs if a basedir is provided (i.e. no absolute local paths) + !empty($basedir) + // Ignore URLs containing parent dir traversal (..) + && (strpos($url, '..') === false) // Do not change urls that are already inline images + && substr($url, 0, 4) !== 'cid:' + // Do not change absolute URLs, including anonymous protocol + && !preg_match('#^[a-z][a-z0-9+.-]*:?//#i', $url) + ) { $filename = basename($url); $directory = dirname($url); if ($directory == '.') { $directory = ''; } $cid = md5($url) . '@phpmailer.0'; // RFC2392 S 2 - if (strlen($basedir) > 1 && substr($basedir, -1) != '/') { - $basedir .= '/'; - } if (strlen($directory) > 1 && substr($directory, -1) != '/') { $directory .= '/'; } @@ -3375,7 +3472,7 @@ class PHPMailer * Convert an HTML string into plain text. * This is used by msgHTML(). * Note - older versions of this function used a bundled advanced converter - * which was been removed for license reasons in #232 + * which was been removed for license reasons in #232. * Example usage: * * // Use default conversion @@ -3675,7 +3772,7 @@ class PHPMailer * @access public * @param string $signHeader * @throws phpmailerException - * @return string + * @return string The DKIM signature value */ public function DKIM_Sign($signHeader) { @@ -3685,15 +3782,33 @@ class PHPMailer } return ''; } - $privKeyStr = file_get_contents($this->DKIM_private); - if ($this->DKIM_passphrase != '') { + $privKeyStr = !empty($this->DKIM_private_string) ? $this->DKIM_private_string : file_get_contents($this->DKIM_private); + if ('' != $this->DKIM_passphrase) { $privKey = openssl_pkey_get_private($privKeyStr, $this->DKIM_passphrase); } else { $privKey = openssl_pkey_get_private($privKeyStr); } - if (openssl_sign($signHeader, $signature, $privKey, 'sha256WithRSAEncryption')) { //sha1WithRSAEncryption - openssl_pkey_free($privKey); - return base64_encode($signature); + //Workaround for missing digest algorithms in old PHP & OpenSSL versions + //@link http://stackoverflow.com/a/11117338/333340 + if (version_compare(PHP_VERSION, '5.3.0') >= 0 and + in_array('sha256WithRSAEncryption', openssl_get_md_methods(true))) { + if (openssl_sign($signHeader, $signature, $privKey, 'sha256WithRSAEncryption')) { + openssl_pkey_free($privKey); + return base64_encode($signature); + } + } else { + $pinfo = openssl_pkey_get_details($privKey); + $hash = hash('sha256', $signHeader); + //'Magic' constant for SHA256 from RFC3447 + //@link https://tools.ietf.org/html/rfc3447#page-43 + $t = '3031300d060960864801650304020105000420' . $hash; + $pslen = $pinfo['bits'] / 8 - (strlen($t) / 2 + 3); + $eb = pack('H*', '0001' . str_repeat('FF', $pslen) . '00' . $t); + + if (openssl_private_encrypt($eb, $signature, $privKey, OPENSSL_NO_PADDING)) { + openssl_pkey_free($privKey); + return base64_encode($signature); + } } openssl_pkey_free($privKey); return ''; diff --git a/src/vendor/phpmailer/phpmailer/class.phpmaileroauth.php b/src/vendor/phpmailer/phpmailer/class.phpmaileroauth.php index f9cd7b42..b1bb09f0 100644 --- a/src/vendor/phpmailer/phpmailer/class.phpmaileroauth.php +++ b/src/vendor/phpmailer/phpmailer/class.phpmaileroauth.php @@ -80,6 +80,7 @@ class PHPMailerOAuth extends PHPMailer * @uses SMTP * @access public * @return bool + * @throws phpmailerException */ public function smtpConnect($options = array()) { diff --git a/src/vendor/phpmailer/phpmailer/class.pop3.php b/src/vendor/phpmailer/phpmailer/class.pop3.php index 56ad1bfc..c464f90c 100644 --- a/src/vendor/phpmailer/phpmailer/class.pop3.php +++ b/src/vendor/phpmailer/phpmailer/class.pop3.php @@ -34,7 +34,7 @@ class POP3 * @var string * @access public */ - public $Version = '5.2.16'; + public $Version = '5.2.23'; /** * Default POP3 port number. diff --git a/src/vendor/phpmailer/phpmailer/class.smtp.php b/src/vendor/phpmailer/phpmailer/class.smtp.php index 0c016f12..01cee820 100644 --- a/src/vendor/phpmailer/phpmailer/class.smtp.php +++ b/src/vendor/phpmailer/phpmailer/class.smtp.php @@ -30,7 +30,7 @@ class SMTP * The PHPMailer SMTP version number. * @var string */ - const VERSION = '5.2.16'; + const VERSION = '5.2.23'; /** * SMTP line break constant. @@ -81,7 +81,7 @@ class SMTP * @deprecated Use the `VERSION` constant instead * @see SMTP::VERSION */ - public $Version = '5.2.16'; + public $Version = '5.2.23'; /** * SMTP server port number. @@ -150,6 +150,17 @@ class SMTP */ public $Timelimit = 300; + /** + * @var array patterns to extract smtp transaction id from smtp reply + * Only first capture group will be use, use non-capturing group to deal with it + * Extend this class to override this property to fulfil your needs. + */ + protected $smtp_transaction_id_patterns = array( + 'exim' => '/[0-9]{3} OK id=(.*)/', + 'sendmail' => '/[0-9]{3} 2.0.0 (.*) Message/', + 'postfix' => '/[0-9]{3} 2.0.0 Ok: queued as (.*)/' + ); + /** * The socket for the server connection. * @var resource @@ -206,7 +217,7 @@ class SMTP } //Avoid clash with built-in function names if (!in_array($this->Debugoutput, array('error_log', 'html', 'echo')) and is_callable($this->Debugoutput)) { - call_user_func($this->Debugoutput, $str, $this->do_debug); + call_user_func($this->Debugoutput, $str, $level); return; } switch ($this->Debugoutput) { @@ -220,8 +231,7 @@ class SMTP preg_replace('/[\r\n]+/', '', $str), ENT_QUOTES, 'UTF-8' - ) - . "
\n"; + ) . "
\n"; break; case 'echo': default: @@ -231,7 +241,7 @@ class SMTP "\n", "\n \t ", trim($str) - )."\n"; + ) . "\n"; } } @@ -265,15 +275,16 @@ class SMTP } // Connect to the SMTP server $this->edebug( - "Connection: opening to $host:$port, timeout=$timeout, options=".var_export($options, true), + "Connection: opening to $host:$port, timeout=$timeout, options=" . + var_export($options, true), self::DEBUG_CONNECTION ); $errno = 0; $errstr = ''; if ($streamok) { $socket_context = stream_context_create($options); - //Suppress errors; connection failures are handled at a higher level - $this->smtp_conn = @stream_socket_client( + set_error_handler(array($this, 'errorHandler')); + $this->smtp_conn = stream_socket_client( $host . ":" . $port, $errno, $errstr, @@ -281,12 +292,14 @@ class SMTP STREAM_CLIENT_CONNECT, $socket_context ); + restore_error_handler(); } else { //Fall back to fsockopen which should work in more places, but is missing some features $this->edebug( "Connection: stream_socket_client not available, falling back to fsockopen", self::DEBUG_CONNECTION ); + set_error_handler(array($this, 'errorHandler')); $this->smtp_conn = fsockopen( $host, $port, @@ -294,6 +307,7 @@ class SMTP $errstr, $timeout ); + restore_error_handler(); } // Verify we connected properly if (!is_resource($this->smtp_conn)) { @@ -348,14 +362,14 @@ class SMTP } // Begin encrypted connection - if (!stream_socket_enable_crypto( + set_error_handler(array($this, 'errorHandler')); + $crypto_ok = stream_socket_enable_crypto( $this->smtp_conn, true, $crypto_method - )) { - return false; - } - return true; + ); + restore_error_handler(); + return $crypto_ok; } /** @@ -384,8 +398,7 @@ class SMTP } if (array_key_exists('EHLO', $this->server_caps)) { - // SMTP extensions are available. Let's try to find a proper authentication method - + // SMTP extensions are available; try to find a proper authentication method if (!array_key_exists('AUTH', $this->server_caps)) { $this->setError('Authentication is not allowed at this stage'); // 'at this stage' means that auth may be allowed after the stage changes @@ -410,7 +423,7 @@ class SMTP $this->setError('No supported authentication methods found'); return false; } - self::edebug('Auth method selected: '.$authtype, self::DEBUG_LOWLEVEL); + self::edebug('Auth method selected: ' . $authtype, self::DEBUG_LOWLEVEL); } if (!in_array($authtype, $this->server_caps['AUTH'])) { @@ -474,7 +487,7 @@ class SMTP $temp = new stdClass; $ntlm_client = new ntlm_sasl_client_class; //Check that functions are available - if (!$ntlm_client->Initialize($temp)) { + if (!$ntlm_client->initialize($temp)) { $this->setError($temp->error); $this->edebug( 'You need to enable some modules in your php.ini file: ' @@ -484,7 +497,7 @@ class SMTP return false; } //msg1 - $msg1 = $ntlm_client->TypeMsg1($realm, $workstation); //msg1 + $msg1 = $ntlm_client->typeMsg1($realm, $workstation); //msg1 if (!$this->sendCommand( 'AUTH NTLM', @@ -503,7 +516,7 @@ class SMTP $password ); //msg3 - $msg3 = $ntlm_client->TypeMsg3( + $msg3 = $ntlm_client->typeMsg3( $ntlm_res, $username, $realm, @@ -536,7 +549,7 @@ class SMTP * Works like hash_hmac('md5', $data, $key) * in case that function is not available * @param string $data The data to hash - * @param string $key The key to hash with + * @param string $key The key to hash with * @access protected * @return string */ @@ -879,7 +892,8 @@ class SMTP $code_ex = (count($matches) > 2 ? $matches[2] : null); // Cut off error code from each response line $detail = preg_replace( - "/{$code}[ -]".($code_ex ? str_replace('.', '\\.', $code_ex).' ' : '')."/m", + "/{$code}[ -]" . + ($code_ex ? str_replace('.', '\\.', $code_ex) . ' ' : '') . "/m", '', $this->last_reply ); @@ -1091,7 +1105,7 @@ class SMTP // Now check if reads took too long if ($endtime and time() > $endtime) { $this->edebug( - 'SMTP -> get_lines(): timelimit reached ('. + 'SMTP -> get_lines(): timelimit reached (' . $this->Timelimit . ' sec)', self::DEBUG_LOWLEVEL ); @@ -1189,4 +1203,49 @@ class SMTP { return $this->Timeout; } + + /** + * Reports an error number and string. + * @param integer $errno The error number returned by PHP. + * @param string $errmsg The error message returned by PHP. + * @param string $errfile The file the error occurred in + * @param integer $errline The line number the error occurred on + */ + protected function errorHandler($errno, $errmsg, $errfile = '', $errline = 0) + { + $notice = 'Connection failed.'; + $this->setError( + $notice, + $errno, + $errmsg + ); + $this->edebug( + $notice . ' Error #' . $errno . ': ' . $errmsg . " [$errfile line $errline]", + self::DEBUG_CONNECTION + ); + } + + /** + * Will return the ID of the last smtp transaction based on a list of patterns provided + * in SMTP::$smtp_transaction_id_patterns. + * If no reply has been received yet, it will return null. + * If no pattern has been matched, it will return false. + * @return bool|null|string + */ + public function getLastTransactionID() + { + $reply = $this->getLastReply(); + + if (empty($reply)) { + return null; + } + + foreach ($this->smtp_transaction_id_patterns as $smtp_transaction_id_pattern) { + if (preg_match($smtp_transaction_id_pattern, $reply, $matches)) { + return $matches[1]; + } + } + + return false; + } }