Geo_Preferences::GetIconsFiles PHP Method

GetIconsFiles() public static method

Gets files available as marker icons
public static GetIconsFiles ( string $p_htmlDir = '', string $p_websiteUrl = '' ) : array
$p_htmlDir string
$p_websiteUrl string
return array
    public static function GetIconsFiles($p_htmlDir = '', $p_websiteUrl = '')
    {
        global $Campsite;
        $cnf_html_dir = $Campsite['HTML_DIR'];
        $cnf_website_url = $Campsite['WEBSITE_URL'];
        $preferencesService = \Zend_Registry::get('container')->getService('system_preferences_service');
        if ('' != $p_htmlDir) {
            $cnf_html_dir = $p_htmlDir;
        }
        if ('' != $p_websiteUrl) {
            $cnf_website_url = $p_websiteUrl;
        }
        $no_arr = array();
        $use_icons = array();
        $icons_subpath = $preferencesService->MapMarkerDirectory;
        if (!$icons_subpath) {
            $icons_subpath = '/js/geocoding/markers';
        }
        $icons_subdir = $cnf_html_dir . $icons_subpath;
        $icons_webdir = $cnf_website_url . $icons_subpath;
        if (!is_dir($icons_subdir)) {
            return $no_arr;
        }
        $img_suffixes = array('png', 'gif', 'jpg', 'jpe', 'jpeg', 'svg', 'pbm', 'bmp', 'xpm', 'xbm', 'tif', 'tiff');
        $icons_arr = scandir($icons_subdir);
        foreach ($icons_arr as $one_name) {
            $img_label_arr = explode('.', $one_name);
            if (2 != count($img_label_arr)) {
                continue;
            }
            // we expect that regular image files shall be icon_name.suffix
            $img_label = $img_label_arr[0] . ' (' . $img_label_arr[1] . ')';
            $web_path = $icons_webdir . '/' . $one_name;
            $one_path = $icons_subdir . '/' . $one_name;
            if (is_file($one_path)) {
                $one_name_parts = explode('.', $one_path);
                $one_name_size = count($one_name_parts);
                if (2 > $one_name_size) {
                    continue;
                }
                if (!in_array($one_name_parts[$one_name_size - 1], $img_suffixes)) {
                    continue;
                }
                $img_info = getimagesize($one_path);
                if (!$img_info) {
                    continue;
                }
                $use_icons[] = $one_name;
            }
        }
        return $use_icons;
    }

Usage Example

 /**
  * @Route("/admin/preferences")
  * @Template("NewscoopNewscoopBundle:SystemPref:index.html.twig")
  */
 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);
 }
All Usage Examples Of Geo_Preferences::GetIconsFiles