public function indexAction(Request $request)
{
$em = $this->container->get('em');
$preferencesService = $this->container->get('system_preferences_service');
$schedulerService = $this->container->get('newscoop.scheduler');
$locations = $em->getRepository('Newscoop\\NewscoopBundle\\Entity\\CityLocations')->createQueryBuilder('a')->select('count(a)')->getQuery()->getOneOrNullResult();
$cities = $em->getRepository('Newscoop\\NewscoopBundle\\Entity\\CityNames')->createQueryBuilder('a')->select('count(a)')->getQuery()->getOneOrNullResult();
$jobs = $em->getRepository('Newscoop\\Entity\\CronJob')->createQueryBuilder('j')->getQuery()->getArrayResult();
foreach ($jobs as $key => $job) {
$jobs[$key]['nextRun'] = $schedulerService->getNextRunDate($job['schedule']);
$jobs[$key]['prevRun'] = $schedulerService->getPreviousRunDate($job['schedule']);
}
$hasManagePermission = false;
// TODO: 4.5 check for permissions from acl
if (true) {
$hasManagePermission = true;
}
$max_upload_filesize = $preferencesService->MaxUploadFileSize;
if (empty($max_upload_filesize) || $this->convertToBytes($max_upload_filesize) == 0) {
$preferencesService->MaxUploadFileSize = ini_get('upload_max_filesize');
}
$currentUser = $this->get('user')->getCurrentUser();
$translator = $this->get('translator');
$sp_session_lifetime = 0 + $preferencesService->SiteSessionLifeTime;
$php_ini_max_seconds = 0;
$php_ini_gc_works = ini_get('session.gc_probability');
if (!empty($php_ini_gc_works)) {
$php_ini_max_seconds = 0 + ini_get('session.gc_maxlifetime');
if (!empty($php_ini_max_seconds)) {
if ($sp_session_lifetime > $php_ini_max_seconds) {
$sp_session_lifetime = $php_ini_max_seconds;
}
}
}
$upload_min_filesize = $this->formatBytes(min($this->convertToBytes(ini_get('post_max_size')), $this->convertToBytes(ini_get('upload_max_filesize'))), 0);
$mysql_client_command_path = $preferencesService->MysqlClientCommandPath;
if (!$locations || !$cities) {
$mysql_client_command_path_def = '/usr/bin/mysql';
if (empty($mysql_client_command_path) && file_exists($mysql_client_command_path_def)) {
$mysql_client_command_path = $mysql_client_command_path_def;
}
}
$geo_preferred_lang = $preferencesService->GeoSearchPreferredLanguage;
if (empty($geo_preferred_lang)) {
$geo_preferred_lang = 'en';
}
$default_marker_source = $preferencesService->MapMarkerSourceDefault;
$marker_icons = \Geo_Preferences::GetIconsFiles();
if (0 < count($marker_icons)) {
$default_marker_source = array();
foreach ($marker_icons as $one_icon) {
$default_marker_source[$one_icon] = $one_icon;
}
}
$form = $this->container->get('form.factory')->create(new PreferencesType(), array('siteonline' => $preferencesService->SiteOnline, 'title' => $preferencesService->SiteTitle, 'meta_keywords' => $preferencesService->SiteMetaKeywords, 'meta_description' => $preferencesService->SiteMetaDescription, 'timezone' => $preferencesService->TimeZone, 'cache_engine' => $preferencesService->DBCacheEngine, 'cache_engine_host' => $preferencesService->DBCacheEngineHost, 'cache_engine_port' => $preferencesService->DBCacheEnginePort, 'cache_template' => $preferencesService->TemplateCacheHandler, 'cache_image' => $preferencesService->ImagecacheLifetime, 'allow_recovery' => $preferencesService->PasswordRecovery, 'secret_key' => $preferencesService->SiteSecretKey, 'session_lifetime' => $sp_session_lifetime, 'separator' => $preferencesService->KeywordSeparator, 'captcha' => $preferencesService->LoginFailedAttemptsNum, 'max_upload_size' => $preferencesService->MaxUploadFileSize, 'automatic_collection' => $preferencesService->CollectStatistics, 'smtp_host' => $preferencesService->SMTPHost, 'smtp_port' => $preferencesService->SMTPPort, 'email_from' => $preferencesService->EmailFromAddress, 'mediaRichTextCaptions' => $preferencesService->MediaRichTextCaptions, 'mediaCaptionLength' => $preferencesService->MediaCaptionLength, 'image_ratio' => $preferencesService->EditorImageRatio, 'image_width' => (int) $preferencesService->EditorImageResizeWidth, 'image_height' => (int) $preferencesService->EditorImageResizeHeight, 'zoom' => $preferencesService->EditorImageZoom, 'use_replication_host' => $preferencesService->DBReplicationHost, 'use_replication_user' => $preferencesService->DBReplicationUser, 'use_replication_password' => $preferencesService->DBReplicationPass, 'use_replication' => $preferencesService->UseDBReplication, 'use_replication_port' => $preferencesService->DBReplicationPort, 'template_filter' => $preferencesService->TemplateFilter, 'mysql_client_command_path' => $mysql_client_command_path, 'center_latitude_default' => (double) $preferencesService->MapCenterLatitudeDefault, 'center_longitude_default' => (double) $preferencesService->MapCenterLongitudeDefault, 'map_display_resolution_default' => (int) $preferencesService->MapDisplayResolutionDefault, 'map_view_width_default' => $preferencesService->MapViewWidthDefault, 'map_view_height_default' => $preferencesService->MapViewHeightDefault, 'map_auto_focus_default' => $preferencesService->MapAutoFocusDefault == '0' ? false : true, 'map_auto_focus_max_zoom' => $preferencesService->MapAutoFocusMaxZoom, 'map_auto_focus_border' => $preferencesService->MapAutoFocusBorder, 'map_auto_cSS_file' => $preferencesService->MapAutoCSSFile, 'map_provider_available_google_v3' => $preferencesService->MapProviderAvailableGoogleV3 == '0' ? false : true, 'map_provider_available_map_quest' => $preferencesService->MapProviderAvailableMapQuest == '0' ? false : true, 'map_provider_available_oSM' => $preferencesService->MapProviderAvailableOSM == '0' ? false : true, 'map_provider_default' => $preferencesService->MapProviderDefault, 'geo_search_local_geonames' => $preferencesService->GeoSearchLocalGeonames == '0' ? false : true, 'geo_search_mapquest_nominatim' => $preferencesService->GeoSearchMapquestNominatim == '0' ? false : true, 'geo_search_preferred_language' => $geo_preferred_lang, 'map_marker_directory' => $preferencesService->MapMarkerDirectory, 'map_popup_width_min' => $preferencesService->MapPopupWidthMin, 'map_popup_height_min' => $preferencesService->MapPopupHeightMin, 'map_video_width_you_tube' => $preferencesService->MapVideoWidthYouTube, 'map_video_height_you_tube' => $preferencesService->MapVideoHeightYouTube, 'map_video_width_vimeo' => $preferencesService->MapVideoWidthVimeo, 'map_video_height_vimeo' => $preferencesService->MapVideoHeightVimeo, 'map_video_width_flash' => $preferencesService->MapVideoWidthFlash, 'map_video_height_flash' => $preferencesService->MapVideoHeightFlash, 'geo_flash_server' => $preferencesService->FlashServer, 'geo_flash_directory' => $preferencesService->FlashDirectory, 'facebook_appid' => $preferencesService->facebook_appid, 'facebook_appsecret' => $preferencesService->facebook_appsecret, 'recaptchaPublicKey' => $preferencesService->RecaptchaPublicKey, 'recaptchaPrivateKey' => $preferencesService->RecaptchaPrivateKey, 'recaptchaSecure' => $preferencesService->RecaptchaSecure, 'userGarbageActive' => $preferencesService->userGarbageActive ?: 'N', 'userGarbageDays' => $preferencesService->userGarbageDays ?: 90, 'smartyUseProtocol' => $preferencesService->SmartyUseProtocol, 'cronJobNotificationEmail' => $preferencesService->CronJobsNotificationEmail, 'cronJobSmtpSender' => $preferencesService->CronJobsSenderEmail, 'cronJobSmtpSenderName' => $preferencesService->CronJobsSenderName), array('cacheService' => $this->container->get('newscoop.cache')));
if ($request->isMethod('POST')) {
$form->bind($request);
if ($form->isValid()) {
if (!$currentUser->hasPermission('ChangeSystemPreferences')) {
camp_html_display_error($translator->trans('newscoop.preferences.error.noaccess', array(), 'system_pref'));
exit;
}
$data = $form->getData();
$geoLocation = array('map_display_resolution_default' => $data['map_display_resolution_default'], 'map_view_width_default' => $hasManagePermission ? $data['map_view_width_default'] : $preferencesService->MapViewWidthDefault, 'map_view_height_default' => $hasManagePermission ? $data['map_view_height_default'] : $preferencesService->MapViewHeightDefault, 'map_auto_cSS_file' => strip_tags($data['map_auto_cSS_file']), 'map_auto_focus_default' => $data['map_auto_focus_default'] ? '1' : '0', 'map_auto_focus_max_zoom' => $data['map_auto_focus_max_zoom'], 'map_auto_focus_border' => $data['map_auto_focus_border'], 'map_provider_available_google_v3' => $data['map_provider_available_google_v3'] ? '1' : '0', 'map_provider_available_map_quest' => $data['map_provider_available_map_quest'] ? '1' : '0', 'map_provider_available_oSM' => $data['map_provider_available_oSM'] ? '1' : '0', 'map_provider_default' => $data['map_provider_default'], 'geo_search_local_geonames' => $data['geo_search_local_geonames'] ? '1' : '0', 'geo_search_mapquest_nominatim' => $data['geo_search_mapquest_nominatim'] ? '1' : '0', 'geo_search_preferred_language' => $data['geo_search_preferred_language'], 'map_marker_directory' => $hasManagePermission ? strip_tags($data['map_marker_directory']) : $preferencesService->MapMarkerDirectory, 'map_marker_source_default' => strip_tags($data['map_marker_source_default']), 'map_popup_width_min' => $hasManagePermission ? $data['map_popup_width_min'] : $preferencesService->MapPopupWidthMin, 'map_popup_height_min' => $hasManagePermission ? $data['map_popup_height_min'] : $preferencesService->MapPopupHeightMin, 'map_video_width_you_tube' => $hasManagePermission ? $data['map_video_width_you_tube'] : $preferencesService->MapVideoWidthYouTube, 'map_video_height_you_tube' => $hasManagePermission ? $data['map_video_height_you_tube'] : $preferencesService->MapVideoHeightYouTube, 'map_video_width_vimeo' => $hasManagePermission ? $data['map_video_width_vimeo'] : $preferencesService->MapVideoWidthVimeo, 'map_video_height_vimeo' => $hasManagePermission ? $data['map_video_height_vimeo'] : $preferencesService->MapVideoHeightVimeo, 'map_video_width_flash' => $hasManagePermission ? $data['map_video_width_flash'] : $preferencesService->MapVideoWidthFlash, 'map_video_height_flash' => $hasManagePermission ? $data['map_video_height_flash'] : $preferencesService->MapVideoHeightFlash, 'flash_server' => $hasManagePermission ? strip_tags($data['geo_flash_server']) : $preferencesService->FlashServer, 'flash_directory' => $hasManagePermission ? strip_tags($data['geo_flash_directory']) : $preferencesService->FlashDirectory);
// Max Upload File Size
$uploadSettings = $this->maxUpload($data['max_upload_size'], $translator);
if ($uploadSettings instanceof RedirectResponse) {
return $uploadSettings;
}
//geolocation
$geolocationSettings = $this->geolocation($data['center_latitude_default'], $data['center_longitude_default'], $geoLocation, $translator);
if ($geolocationSettings instanceof RedirectResponse) {
return $geolocationSettings;
}
if ($hasManagePermission) {
// DB Caching
$databaseCacheSettings = $this->databaseCache($data['cache_engine'], $data['cache_engine_host'], $data['cache_engine_port']);
if ($databaseCacheSettings instanceof RedirectResponse) {
return $databaseCacheSettings;
}
// Template Caching
$templateCacheSettings = $this->templateCache($data['cache_template'], $translator);
if ($templateCacheSettings instanceof RedirectResponse) {
return $templateCacheSettings;
}
$replicationSettings = $this->useReplication($data['use_replication_user'], $data['use_replication_host'], $data['use_replication_password'], $data['use_replication'], $data['use_replication_port'], $translator);
if ($replicationSettings instanceof RedirectResponse) {
return $replicationSettings;
}
// Statistics collecting
$this->collectStats($data['automatic_collection']);
// SMTP Host/Port
$this->smtpConfiguration($data['smtp_host'], $data['smtp_port']);
// Image resizing for WYSIWYG editor
$this->imageResizing($data['image_ratio'], $data['image_width'], $data['image_height'], $data['zoom']);
// Rich text captions, set default
$preferencesService->set('MediaRichTextCaptions', $data['mediaRichTextCaptions']);
if ($data['mediaRichTextCaptions'] == 'Y') {
$preferencesService->set('MediaCaptionLength', $data['mediaCaptionLength']);
} else {
// Override and set to 255 chars max
$preferencesService->set('MediaCaptionLength', 255);
}
// template filter
$this->templateFilter($data['template_filter']);
// users garbage settings
$preferencesService->set('userGarbageActive', $data['userGarbageActive']);
$preferencesService->set('userGarbageDays', $data['userGarbageDays']);
// smarty use protocol settings
$preferencesService->set('SmartyUseProtocol', $data['smartyUseProtocol']);
// cron jobs settings
$preferencesService->set('CronJobsNotificationEmail', $data['cronJobNotificationEmail']);
$preferencesService->set('CronJobsSenderEmail', $data['cronJobSmtpSender']);
$preferencesService->set('CronJobsSenderName', $data['cronJobSmtpSenderName']);
}
// General Settings
$this->generalSettings($data['siteonline'], $data['title'], $data['meta_keywords'], $data['meta_description'], $data['timezone'], $data['cache_image'], $data['allow_recovery'], $data['email_from'], $data['session_lifetime'], $data['separator'], $data['captcha'], $data['mysql_client_command_path']);
//Facebook
$this->facebook($data['facebook_appid'], $data['facebook_appsecret']);
//ReCaptcha
$this->recaptcha($data['recaptchaPublicKey'], $data['recaptchaPrivateKey'], $data['recaptchaSecure']);
$this->get('session')->getFlashBag()->add('success', $translator->trans('newscoop.preferences.success.saved', array(), 'system_pref'));
return $this->redirect($this->generateUrl('newscoop_newscoop_systempref_index'));
}
}
return array('form' => $form->createView(), 'php_ini_max_seconds' => $php_ini_max_seconds, 'upload_min_filesize' => $upload_min_filesize, 'hasManagePermission' => $hasManagePermission, 'mysql_client_command_path' => $mysql_client_command_path, 'map_marker_source_default' => $default_marker_source, 'map_marker_source_selected' => $preferencesService->MapMarkerSourceDefault, 'jobs' => $jobs);
}