ImagesController::class . ':photo'
)->setName('photo');
-//system information - keep old route with typo for now (0.9.4)
+//system information - keep old route with typo ('s' on 'information') for now (0.9.4)
$app->get(
'/system-informations',
function ($request, $response, $args) {
//system information
$app->get(
'/system-information',
- function ($request, $response, $args = []) {
- $sysinfos = new SysInfos();
- $sysinfos->grab();
-
- // display page
- $this->view->render(
- $response,
- 'sysinfos.tpl',
- array(
- 'page_title' => _T("System information"),
- 'rawinfos' => $sysinfos->getRawData($this->plugins)
- )
- );
- return $response;
- }
+ GaletteController::class . ':systemInformation'
)->setName('sysinfos')->add($authenticate);
* @since 0.8.2dev 2014-11-11
*/
+use Galette\Controllers\GaletteController;
+
use Galette\Core\PrintLogo;
use Galette\Core\GaletteMail;
use Galette\Core\Preferences;
//galette's dashboard
$app->get(
'/dashboard',
- function ($request, $response, $args = []) {
- $news = new News($this->preferences->pref_rss_url);
-
- $params = [
- 'page_title' => _T("Dashboard"),
- 'contentcls' => 'desktop',
- 'news' => $news->getPosts(),
- 'show_dashboard' => $_COOKIE['show_galette_dashboard']
- ];
-
- $hide_telemetry = true;
- if ($this->login->isAdmin()) {
- $telemetry = new \Galette\Util\Telemetry(
- $this->zdb,
- $this->preferences,
- $this->plugins
- );
- $params['reguuid'] = $telemetry->getRegistrationUuid();
- $params['telemetry_sent'] = $telemetry->isSent();
- $params['registered'] = $telemetry->isRegistered();
-
- $hide_telemetry = $telemetry->isSent() && $telemetry->isRegistered()
- || $_COOKIE['hide_galette_telemetry'];
- }
- $params['hide_telemetry'] = $hide_telemetry;
-
- // display page
- $this->view->render(
- $response,
- 'desktop.tpl',
- $params
- );
- return $response;
- }
+ GaletteController::class . ':dashboard'
)->setName('dashboard')->add($authenticate);
//preferences page
$app->get(
'/preferences',
- function ($request, $response) {
-
- // flagging required fields
- $required = array(
- 'pref_nom' => 1,
- 'pref_lang' => 1,
- 'pref_numrows' => 1,
- 'pref_log' => 1,
- 'pref_statut' => 1,
- 'pref_etiq_marges_v' => 1,
- 'pref_etiq_marges_h' => 1,
- 'pref_etiq_hspace' => 1,
- 'pref_etiq_vspace' => 1,
- 'pref_etiq_hsize' => 1,
- 'pref_etiq_vsize' => 1,
- 'pref_etiq_cols' => 1,
- 'pref_etiq_rows' => 1,
- 'pref_etiq_corps' => 1,
- 'pref_card_abrev' => 1,
- 'pref_card_strip' => 1,
- 'pref_card_marges_v' => 1,
- 'pref_card_marges_h' => 1,
- 'pref_card_hspace' => 1,
- 'pref_card_vspace' => 1
- );
-
- if ($this->login->isSuperAdmin() && GALETTE_MODE !== 'DEMO') {
- $required['pref_admin_login'] = 1;
- }
-
- if ($this->session->entered_preferences) {
- $pref = $this->session->entered_preferences;
- $this->session->entered_preferences = null;
- } else {
- $prefs_fields = $this->preferences->getFieldsNames();
- // collect data
- foreach ($prefs_fields as $fieldname) {
- $pref[$fieldname] = $this->preferences->$fieldname;
- }
- }
-
- //List available themes
- $themes = array();
- $d = dir(GALETTE_THEMES_PATH);
- while (($entry = $d->read()) !== false) {
- $full_entry = GALETTE_THEMES_PATH . $entry;
- if ($entry != '.'
- && $entry != '..'
- && is_dir($full_entry)
- && file_exists($full_entry.'/page.tpl')
- ) {
- $themes[] = $entry;
- }
- }
- $d->close();
-
- $m = new Members();
- $s = new Status($this->zdb);
-
- // display page
- $this->view->render(
- $response,
- 'preferences.tpl',
- array(
- 'page_title' => _T("Settings"),
- 'staff_members' => $m->getStaffMembersList(true),
- 'time' => time(),
- 'pref' => $pref,
- 'pref_numrows_options' => array(
- 10 => '10',
- 20 => '20',
- 50 => '50',
- 100 => '100'
- ),
- 'print_logo' => $this->print_logo,
- 'required' => $required,
- 'themes' => $themes,
- 'statuts' => $s->getList(),
- 'accounts_options' => array(
- Members::ALL_ACCOUNTS => _T("All accounts"),
- Members::ACTIVE_ACCOUNT => _T("Active accounts"),
- Members::INACTIVE_ACCOUNT => _T("Inactive accounts")
- )
- )
- );
- return $response;
- }
+ GaletteController::class . ':preferences'
)->setName('preferences')->add($authenticate);
//preferences procedure
$app->post(
'/preferences',
- function ($request, $response) {
- $post = $request->getParsedBody();
- $error_detected = [];
- $warning_detected = [];
-
- // Validation
- if (isset($post['valid']) && $post['valid'] == '1') {
- if ($this->preferences->check($post, $this->login)) {
- if (!$this->preferences->store()) {
- $error_detected[] = _T("An SQL error has occurred while storing preferences. Please try again, and contact the administrator if the problem persists.");
- } else {
- $this->flash->addMessage(
- 'success_detected',
- _T("Preferences has been saved.")
- );
- }
- $warning_detected = array_merge($warning_detected, $this->preferences->checkCardsSizes());
-
- // picture upload
- if (GALETTE_MODE !== 'DEMO' && isset($_FILES['logo'])) {
- if ($_FILES['logo']['error'] === UPLOAD_ERR_OK) {
- if ($_FILES['logo']['tmp_name'] !='') {
- if (is_uploaded_file($_FILES['logo']['tmp_name'])) {
- $res = $this->logo->store($_FILES['logo']);
- if ($res < 0) {
- $error_detected[] = $this->logo->getErrorMessage($res);
- } else {
- $this->logo = new Logo();
- }
- }
- }
- } elseif ($_FILES['logo']['error'] !== UPLOAD_ERR_NO_FILE) {
- Analog::log(
- $this->logo->getPhpErrorMessage($_FILES['logo']['error']),
- Analog::WARNING
- );
- $error_detected[] = $this->logo->getPhpErrorMessage(
- $_FILES['logo']['error']
- );
- }
- }
-
- if (GALETTE_MODE !== 'DEMO' && isset($post['del_logo'])) {
- if (!$this->logo->delete()) {
- $error_detected[] = _T("Delete failed");
- } else {
- $this->logo = new Logo(); //get default Logo
- }
- }
-
- // Card logo upload
- if (GALETTE_MODE !== 'DEMO' && isset($_FILES['card_logo'])) {
- if ($_FILES['card_logo']['error'] === UPLOAD_ERR_OK) {
- if ($_FILES['card_logo']['tmp_name'] !='') {
- if (is_uploaded_file($_FILES['card_logo']['tmp_name'])) {
- $res = $this->print_logo->store($_FILES['card_logo']);
- if ($res < 0) {
- $error_detected[] = $this->print_logo->getErrorMessage($res);
- } else {
- $this->print_logo = new PrintLogo();
- }
- }
- }
- } elseif ($_FILES['card_logo']['error'] !== UPLOAD_ERR_NO_FILE) {
- Analog::log(
- $this->print_logo->getPhpErrorMessage($_FILES['card_logo']['error']),
- Analog::WARNING
- );
- $error_detected[] = $this->print_logo->getPhpErrorMessage(
- $_FILES['card_logo']['error']
- );
- }
- }
-
- if (GALETTE_MODE !== 'DEMO' && isset($post['del_card_logo'])) {
- if (!$this->print_logo->delete()) {
- $error_detected[] = _T("Delete failed");
- } else {
- $this->print_logo = new PrintLogo();
- }
- }
- } else {
- $error_detected = $this->preferences->getErrors();
- }
-
- if (count($error_detected) > 0) {
- $this->session->entered_preferences = $post;
- //report errors
- foreach ($error_detected as $error) {
- $this->flash->addMessage(
- 'error_detected',
- $error
- );
- }
- }
-
- if (count($warning_detected) > 0) {
- //report warnings
- foreach ($warning_detected as $warning) {
- $this->flash->addMessage(
- 'warning_detected',
- $warning
- );
- }
- }
-
- return $response
- ->withStatus(301)
- ->withHeader('Location', $this->router->pathFor('preferences'));
- }
- }
+ GaletteController::class . ':storePreferences'
)->setName('store-preferences')->add($authenticate);
$app->get(
'/test/email',
- function ($request, $response) {
- $sent = false;
- if (!$this->preferences->pref_mail_method > GaletteMail::METHOD_DISABLED) {
- $this->flash->addMessage(
- 'error_detected',
- _T("You asked Galette to send a test email, but email has been disabled in the preferences.")
- );
- } else {
- $get = $request->getQueryParams();
- $dest = (isset($get['adress']) ? $get['adress'] : $this->preferences->pref_email_newadh);
- if (GaletteMail::isValidEmail($dest)) {
- $mail = new GaletteMail($this->preferences);
- $mail->setSubject(_T('Test message'));
- $mail->setRecipients(
- array(
- $dest => _T("Galette admin")
- )
- );
- $mail->setMessage(_T('Test message.'));
- $sent = $mail->send();
-
- if ($sent) {
- $this->flash->addMessage(
- 'success_detected',
- str_replace(
- '%email',
- $dest,
- _T("An email has been sent to %email")
- )
- );
- } else {
- $this->flash->addMessage(
- 'error_detected',
- str_replace(
- '%email',
- $dest,
- _T("No email sent to %email")
- )
- );
- }
- } else {
- $this->flash->addMessage(
- 'error_detected',
- _T("Invalid email adress!")
- );
- }
- }
-
- if (!$request->isXhr()) {
- return $response
- ->withStatus(301)
- ->withHeader('Location', $this->router->pathFor('preferences'));
- } else {
- return $response->withJson(
- [
- 'sent' => $sent
- ]
- );
- }
- }
+ GaletteController::class . ':testEmail'
)->setName('testEmail')->add($authenticate);
//charts
$app->get(
'/charts',
- function ($request, $response) {
- $charts = new Charts(
- array(
- Charts::MEMBERS_STATUS_PIE,
- Charts::MEMBERS_STATEDUE_PIE,
- Charts::CONTRIBS_TYPES_PIE,
- Charts::COMPANIES_OR_NOT,
- Charts::CONTRIBS_ALLTIME
- )
- );
-
- // display page
- $this->view->render(
- $response,
- 'charts.tpl',
- array(
- 'page_title' => _T("Charts"),
- 'charts' => $charts->getCharts(),
- 'require_charts' => true
- )
- );
- return $response;
- }
+ GaletteController::class . ':charts'
)->setName('charts')->add($authenticate);
//plugins
$this->preferences = $container->get('preferences');
$this->view = $container->get('view');
$this->logo = $container->get('logo');
+ $this->print_logo = $container->get('print_logo');
$this->plugins = $container->get('plugins');
$this->router = $container->get('router');
$this->history = $container->get('history');
use Slim\Http\Response;
use Galette\Core\SysInfos;
use Galette\Core\GaletteMail;
-use Galette\IO\Charts;
use Galette\Core\PluginInstall;
+use Galette\Entity\Status;
+use Galette\IO\News;
+use Galette\IO\Charts;
+use Galette\Repository\Members;
use Analog\Analog;
/**
{
return $this->galetteRedirect($request, $response, $args);
}
+
+ /**
+ * System information
+ *
+ * @param Request $request PSR Request
+ * @param Response $response PSR Response
+ *
+ * @return Response
+ */
+ public function systemInformation(Request $request, Response $response) :Response
+ {
+ $sysinfos = new SysInfos();
+ $sysinfos->grab();
+
+ // display page
+ $this->view->render(
+ $response,
+ 'sysinfos.tpl',
+ array(
+ 'page_title' => _T("System information"),
+ 'rawinfos' => $sysinfos->getRawData($this->plugins)
+ )
+ );
+ return $response;
+ }
+
+ /**
+ * Dashboard page
+ *
+ * @param Request $request PSR Request
+ * @param Response $response PSR Response
+ *
+ * @return Response
+ */
+ public function dashboard(Request $request, Response $response) :Response
+ {
+ $news = new News($this->preferences->pref_rss_url);
+
+ $params = [
+ 'page_title' => _T("Dashboard"),
+ 'contentcls' => 'desktop',
+ 'news' => $news->getPosts(),
+ 'show_dashboard' => $_COOKIE['show_galette_dashboard']
+ ];
+
+ $hide_telemetry = true;
+ if ($this->login->isAdmin()) {
+ $telemetry = new \Galette\Util\Telemetry(
+ $this->zdb,
+ $this->preferences,
+ $this->plugins
+ );
+ $params['reguuid'] = $telemetry->getRegistrationUuid();
+ $params['telemetry_sent'] = $telemetry->isSent();
+ $params['registered'] = $telemetry->isRegistered();
+
+ $hide_telemetry = $telemetry->isSent() && $telemetry->isRegistered()
+ || $_COOKIE['hide_galette_telemetry'];
+ }
+ $params['hide_telemetry'] = $hide_telemetry;
+
+ // display page
+ $this->view->render(
+ $response,
+ 'desktop.tpl',
+ $params
+ );
+ return $response;
+ }
+
+ /**
+ * Preferences page
+ *
+ * @param Request $request PSR Request
+ * @param Response $response PSR Response
+ *
+ * @return Response
+ */
+ public function preferences(Request $request, Response $response) :Response
+ {
+ // flagging required fields
+ $required = array(
+ 'pref_nom' => 1,
+ 'pref_lang' => 1,
+ 'pref_numrows' => 1,
+ 'pref_log' => 1,
+ 'pref_statut' => 1,
+ 'pref_etiq_marges_v' => 1,
+ 'pref_etiq_marges_h' => 1,
+ 'pref_etiq_hspace' => 1,
+ 'pref_etiq_vspace' => 1,
+ 'pref_etiq_hsize' => 1,
+ 'pref_etiq_vsize' => 1,
+ 'pref_etiq_cols' => 1,
+ 'pref_etiq_rows' => 1,
+ 'pref_etiq_corps' => 1,
+ 'pref_card_abrev' => 1,
+ 'pref_card_strip' => 1,
+ 'pref_card_marges_v' => 1,
+ 'pref_card_marges_h' => 1,
+ 'pref_card_hspace' => 1,
+ 'pref_card_vspace' => 1
+ );
+
+ if ($this->login->isSuperAdmin() && GALETTE_MODE !== 'DEMO') {
+ $required['pref_admin_login'] = 1;
+ }
+
+ if ($this->session->entered_preferences) {
+ $pref = $this->session->entered_preferences;
+ $this->session->entered_preferences = null;
+ } else {
+ $prefs_fields = $this->preferences->getFieldsNames();
+ // collect data
+ foreach ($prefs_fields as $fieldname) {
+ $pref[$fieldname] = $this->preferences->$fieldname;
+ }
+ }
+
+ //List available themes
+ $themes = array();
+ $d = dir(GALETTE_THEMES_PATH);
+ while (($entry = $d->read()) !== false) {
+ $full_entry = GALETTE_THEMES_PATH . $entry;
+ if ($entry != '.'
+ && $entry != '..'
+ && is_dir($full_entry)
+ && file_exists($full_entry.'/page.tpl')
+ ) {
+ $themes[] = $entry;
+ }
+ }
+ $d->close();
+
+ $m = new Members();
+ $s = new Status($this->zdb);
+
+ // display page
+ $this->view->render(
+ $response,
+ 'preferences.tpl',
+ array(
+ 'page_title' => _T("Settings"),
+ 'staff_members' => $m->getStaffMembersList(true),
+ 'time' => time(),
+ 'pref' => $pref,
+ 'pref_numrows_options' => array(
+ 10 => '10',
+ 20 => '20',
+ 50 => '50',
+ 100 => '100'
+ ),
+ 'print_logo' => $this->print_logo,
+ 'required' => $required,
+ 'themes' => $themes,
+ 'statuts' => $s->getList(),
+ 'accounts_options' => array(
+ Members::ALL_ACCOUNTS => _T("All accounts"),
+ Members::ACTIVE_ACCOUNT => _T("Active accounts"),
+ Members::INACTIVE_ACCOUNT => _T("Inactive accounts")
+ )
+ )
+ );
+ return $response;
+ }
+
+ /**
+ * Store preferences
+ *
+ * @param Request $request PSR Request
+ * @param Response $response PSR Response
+ *
+ * @return Response
+ */
+ public function storePreferences(Request $request, Response $response) :Response
+ {
+ $post = $request->getParsedBody();
+ $error_detected = [];
+ $warning_detected = [];
+
+ // Validation
+ if (isset($post['valid']) && $post['valid'] == '1') {
+ if ($this->preferences->check($post, $this->login)) {
+ if (!$this->preferences->store()) {
+ $error_detected[] = _T("An SQL error has occurred while storing preferences. Please try again, and contact the administrator if the problem persists.");
+ } else {
+ $this->flash->addMessage(
+ 'success_detected',
+ _T("Preferences has been saved.")
+ );
+ }
+ $warning_detected = array_merge($warning_detected, $this->preferences->checkCardsSizes());
+
+ // picture upload
+ if (GALETTE_MODE !== 'DEMO' && isset($_FILES['logo'])) {
+ if ($_FILES['logo']['error'] === UPLOAD_ERR_OK) {
+ if ($_FILES['logo']['tmp_name'] !='') {
+ if (is_uploaded_file($_FILES['logo']['tmp_name'])) {
+ $res = $this->logo->store($_FILES['logo']);
+ if ($res < 0) {
+ $error_detected[] = $this->logo->getErrorMessage($res);
+ } else {
+ $this->logo = new Logo();
+ }
+ }
+ }
+ } elseif ($_FILES['logo']['error'] !== UPLOAD_ERR_NO_FILE) {
+ Analog::log(
+ $this->logo->getPhpErrorMessage($_FILES['logo']['error']),
+ Analog::WARNING
+ );
+ $error_detected[] = $this->logo->getPhpErrorMessage(
+ $_FILES['logo']['error']
+ );
+ }
+ }
+
+ if (GALETTE_MODE !== 'DEMO' && isset($post['del_logo'])) {
+ if (!$this->logo->delete()) {
+ $error_detected[] = _T("Delete failed");
+ } else {
+ $this->logo = new Logo(); //get default Logo
+ }
+ }
+
+ // Card logo upload
+ if (GALETTE_MODE !== 'DEMO' && isset($_FILES['card_logo'])) {
+ if ($_FILES['card_logo']['error'] === UPLOAD_ERR_OK) {
+ if ($_FILES['card_logo']['tmp_name'] !='') {
+ if (is_uploaded_file($_FILES['card_logo']['tmp_name'])) {
+ $res = $this->print_logo->store($_FILES['card_logo']);
+ if ($res < 0) {
+ $error_detected[] = $this->print_logo->getErrorMessage($res);
+ } else {
+ $this->print_logo = new PrintLogo();
+ }
+ }
+ }
+ } elseif ($_FILES['card_logo']['error'] !== UPLOAD_ERR_NO_FILE) {
+ Analog::log(
+ $this->print_logo->getPhpErrorMessage($_FILES['card_logo']['error']),
+ Analog::WARNING
+ );
+ $error_detected[] = $this->print_logo->getPhpErrorMessage(
+ $_FILES['card_logo']['error']
+ );
+ }
+ }
+
+ if (GALETTE_MODE !== 'DEMO' && isset($post['del_card_logo'])) {
+ if (!$this->print_logo->delete()) {
+ $error_detected[] = _T("Delete failed");
+ } else {
+ $this->print_logo = new PrintLogo();
+ }
+ }
+ } else {
+ $error_detected = $this->preferences->getErrors();
+ }
+
+ if (count($error_detected) > 0) {
+ $this->session->entered_preferences = $post;
+ //report errors
+ foreach ($error_detected as $error) {
+ $this->flash->addMessage(
+ 'error_detected',
+ $error
+ );
+ }
+ }
+
+ if (count($warning_detected) > 0) {
+ //report warnings
+ foreach ($warning_detected as $warning) {
+ $this->flash->addMessage(
+ 'warning_detected',
+ $warning
+ );
+ }
+ }
+
+ return $response
+ ->withStatus(301)
+ ->withHeader('Location', $this->router->pathFor('preferences'));
+ }
+ }
+
+ /**
+ * Test mail parameters
+ *
+ * @param Request $request PSR Request
+ * @param Response $response PSR Response
+ *
+ * @return Response
+ */
+ public function testEmail(Request $request, Response $response) :Response
+ {
+ $sent = false;
+ if (!$this->preferences->pref_mail_method > GaletteMail::METHOD_DISABLED) {
+ $this->flash->addMessage(
+ 'error_detected',
+ _T("You asked Galette to send a test email, but email has been disabled in the preferences.")
+ );
+ } else {
+ $get = $request->getQueryParams();
+ $dest = (isset($get['adress']) ? $get['adress'] : $this->preferences->pref_email_newadh);
+ if (GaletteMail::isValidEmail($dest)) {
+ $mail = new GaletteMail($this->preferences);
+ $mail->setSubject(_T('Test message'));
+ $mail->setRecipients(
+ array(
+ $dest => _T("Galette admin")
+ )
+ );
+ $mail->setMessage(_T('Test message.'));
+ $sent = $mail->send();
+
+ if ($sent) {
+ $this->flash->addMessage(
+ 'success_detected',
+ str_replace(
+ '%email',
+ $dest,
+ _T("An email has been sent to %email")
+ )
+ );
+ } else {
+ $this->flash->addMessage(
+ 'error_detected',
+ str_replace(
+ '%email',
+ $dest,
+ _T("No email sent to %email")
+ )
+ );
+ }
+ } else {
+ $this->flash->addMessage(
+ 'error_detected',
+ _T("Invalid email adress!")
+ );
+ }
+ }
+
+ if (!$request->isXhr()) {
+ return $response
+ ->withStatus(301)
+ ->withHeader('Location', $this->router->pathFor('preferences'));
+ } else {
+ return $response->withJson(
+ [
+ 'sent' => $sent
+ ]
+ );
+ }
+ }
+
+ /**
+ * Charts page
+ *
+ * @param Request $request PSR Request
+ * @param Response $response PSR Response
+ *
+ * @return Response
+ */
+ public function charts(Request $request, Response $response) :Response
+ {
+ $charts = new Charts(
+ array(
+ Charts::MEMBERS_STATUS_PIE,
+ Charts::MEMBERS_STATEDUE_PIE,
+ Charts::CONTRIBS_TYPES_PIE,
+ Charts::COMPANIES_OR_NOT,
+ Charts::CONTRIBS_ALLTIME
+ )
+ );
+
+ // display page
+ $this->view->render(
+ $response,
+ 'charts.tpl',
+ array(
+ 'page_title' => _T("Charts"),
+ 'charts' => $charts->getCharts(),
+ 'require_charts' => true
+ )
+ );
+ return $response;
+ }
}
*/
public function printLogo(Request $request, Response $response) :Response
{
- return $this->sendResponse($response, $this->container->print_logo);
+ return $this->sendResponse($response, $this->print_logo);
}
/**