Esempio n. 1
0
 /**
  * Renders the field
  *
  * @return string
  */
 function render()
 {
     $random_keys = array('name' => $this->field_id, 'latitude' => Helper::getRandomString(), 'longitude' => Helper::getRandomString());
     $values = array('name' => isset($this->field_data['name']) ? $this->field_data['name'] : '', 'latitude' => isset($this->field_data['latitude']) ? $this->field_data['latitude'] : '', 'longitude' => isset($this->field_data['longitude']) ? $this->field_data['longitude'] : '');
     $html = '<div class="map"';
     // add in per-field settings
     $settings = array();
     foreach ($this->field_config as $setting => $value) {
         if (!in_array($setting, $this->allowed_settings) || is_null($value)) {
             continue;
         }
         $settings[$setting] = $value;
     }
     // if we found something, add the configuration to the element
     if (count($settings)) {
         $html .= " data-location-configuration='" . json_encode($settings) . "'";
     }
     $html .= '></div>';
     $html .= '<div class="entry">';
     $html .= '	<div class="name">';
     $html .= '		<p>';
     $html .= Fieldtype::render_fieldtype('text', 'yaml][' . $this->field . '][name', array('display' => Localization::fetch('location_name')), $values['name'], NULL, NULL, $random_keys['name']);
     $html .= '		</p>';
     $html .= '	</div>';
     $html .= '	<div class="coordinates">';
     $html .= '		<p class="latitude">';
     $html .= Fieldtype::render_fieldtype('text', 'yaml][' . $this->field . '][latitude', array('display' => Localization::fetch('latitude')), $values['latitude'], NULL, NULL, $random_keys['latitude']);
     $html .= '		</p>';
     $html .= '		<p class="longitude">';
     $html .= Fieldtype::render_fieldtype('text', 'yaml][' . $this->field . '][longitude', array('display' => Localization::fetch('longitude')), $values['longitude'], NULL, NULL, $random_keys['longitude']);
     $html .= '		</p>';
     $html .= '	</div>';
     $html .= '</div>';
     return $html;
 }
Esempio n. 2
0
File: user.php Progetto: nob/joi
 public function set_password($password, $encrypted = FALSE)
 {
     if ($encrypted) {
         if (!isset($this->data['salt']) || $this->data['salt'] == '') {
             $this->data['salt'] = Helper::getRandomString(32);
         }
         $encrypted_password = sha1($password . $this->data['salt']);
         $this->data['encrypted_password'] = $encrypted_password;
         $this->data['password'] = '';
     } else {
         $this->data['password'] = $password;
         $this->data['encrypted_password'] = '';
         $this->data['salt'] = '';
     }
 }
Esempio n. 3
0
 /**
  * Ensures that there's a random secret key for cookies to use
  * 
  * @return bool
  */
 public static function ensureSecretKey()
 {
     $secret_key_file = BASE_PATH . "/_cache/_app/cookie/key.php";
     // check that an existing key has been set
     if (File::exists($secret_key_file) && strlen(File::get($secret_key_file)) >= 24) {
         return true;
     }
     // no key set, generate one
     $key = Helper::getRandomString(128, true);
     // check the result, log errors if needed
     $result = File::put($secret_key_file, $key);
     if (!$result) {
         Log::error("Could not create a secret cookie key.", "core", "cookie");
     }
     return (bool) $result;
 }
Esempio n. 4
0
    /**
     * Displays entries on a map
     *
     * @return string
     */
    public function map()
    {
        // check for valid center point
        if (!preg_match(Pattern::COORDINATES, $this->fetchParam('center_point'), $matches)) {
            print_r($this->fetchParam('center_point'));
            $this->log->error("Could not create map, invalid center point coordinates given");
            return NULL;
        } else {
            $latitude  = $matches[1];
            $longitude = $matches[2];
        }

        // pop-up template
        $pop_up_template = NULL;

        // check for a valid pop_up template
        if (preg_match_all("/(?:\{\{\s*pop_up\s*\}\})\s*(.*)\s*(?:\{\{\s*\/pop_up\s*\}\})/ism", $this->content, $matches) && is_array($matches[1]) && isset($matches[1][0])) {
            $pop_up_template = trim($matches[1][0]);
        }

        $folders = $this->fetchParam('folder', ltrim($this->fetchParam('from', URL::getCurrent()), "/"));

        if ($this->fetchParam('taxonomy', false, null, true, null)) {
            $taxonomy_parts  = Taxonomy::getCriteria(URL::getCurrent());
            $taxonomy_type   = $taxonomy_parts[0];
            $taxonomy_slug   = Config::get('_taxonomy_slugify') ? Slug::humanize($taxonomy_parts[1]) : urldecode($taxonomy_parts[1]);

            $content_set = ContentService::getContentByTaxonomyValue($taxonomy_type, $taxonomy_slug, $folders);
        } else {
            $content_set = ContentService::getContentByFolders($folders);
        }

        // filter
        $content_set->filter(array(
            'show_hidden' => $this->fetchParam('show_hidden', false, null, true, false),
            'show_drafts' => $this->fetchParam('show_drafts', false, null, true, false),
            'since'       => $this->fetchParam('since'),
            'until'       => $this->fetchParam('until'),
            'show_past'   => $this->fetchParam('show_past', true, null, true),
            'show_future' => $this->fetchParam('show_future', false, null, true),
            'type'        => 'entries',
            'conditions'  => trim($this->fetchParam('conditions', null))
        ));
        
        // prepare if needed
        $parse_content = (bool) preg_match(Pattern::USING_CONTENT, $this->content);
        if ($parse_content) {
            $content_set->prepare();
        }

        // supplement
        $content_set->supplement(array(
            'locate_with'     => $this->fetchParam('locate_with'),
            'center_point'    => $this->fetchParam('center_point')
        ));

        // re-filter, we only want entries that have been found
        $content_set->filter(array(
            'located'     => true
        ));

        // sort
        $content_set->sort($this->fetchParam('sort_by', 'order_key'), $this->fetchParam('sort_dir'));

        // limit
        $limit     = $this->fetchParam('limit', null, 'is_numeric');
        $offset    = $this->fetchParam('offset', 0, 'is_numeric');
        $paginate  = $this->fetchParam('paginate', true, null, true, false);

        if ($limit || $offset) {
            if ($limit && $paginate && !$offset) {
                // pagination requested, isolate the appropriate page
                $content_set->isolatePage($limit, URL::getCurrentPaginationPage());
            } else {
                // just limit
                $content_set->limit($limit, $offset);
            }
        }

        // get content
        $content_set->prepare(false, true);
        $content = $content_set->get($parse_content);

        // set variables
        $map_id   = $this->fetchParam('map_id', Helper::getRandomString());
        $zoom     = $this->fetchParam('zoom', 12);

        // cluster options
        $clusters = $this->fetchParam('clusters', TRUE, NULL, TRUE);
        $clusters = ($clusters) ? "true" : "false";

        $spiderfy_on_max_zoom = $this->fetchParam('spiderfy_on_max_zoom', TRUE, NULL, TRUE);
        $spiderfy_on_max_zoom = ($spiderfy_on_max_zoom) ? "true" : "false";

        $show_coverage_on_hover = $this->fetchParam('show_coverage_on_hover', TRUE, NULL, TRUE);
        $show_coverage_on_hover = ($show_coverage_on_hover) ? "true" : "false";

        $zoom_to_bounds_on_click = $this->fetchParam('zoom_to_bounds_on_click', TRUE, NULL, TRUE);
        $zoom_to_bounds_on_click = ($zoom_to_bounds_on_click) ? "true" : "false";

        $single_marker_mode = $this->fetchParam('single_marker_mode', FALSE, NULL, TRUE);
        $single_marker_mode = ($single_marker_mode) ? "true" : "false";

        $animate_adding_markers = $this->fetchParam('animate_adding_markers', TRUE, NULL, TRUE);
        $animate_adding_markers = ($animate_adding_markers) ? "true" : "false";

        $disable_clustering_at_zoom = $this->fetchParam('disable_clustering_at_zoom', 15, 'is_numeric');
        $max_cluster_radius = $this->fetchParam('max_cluster_radius', 80, 'is_numeric');

        // create output
        $html  = '<div class="map" id="' . $map_id . '"></div>';
        $html .= "\n";

        // only render inline javascript if a valid pop_up template was found
        $html .= '<script type="text/javascript">';
        $html .= "try{_location_maps.length;}catch(e){var _location_maps={};}\n";
        $html .= '_location_maps["' . $map_id . '"] = { markers: [ ';

        $markers = array();
        foreach ($content as $item) {
            
            $marker = array(
                'latitude'       => $item['latitude'],
                'longitude'      => $item['longitude'],
                'marker_content' => Content::parse($pop_up_template, $item, 'html')
            );

            array_push($markers, json_encode($marker));
        }
        $html .= join(",\n", $markers);

        $html .= '    ], ';
        $html .= ' clusters: ' . $clusters . ',';

        // cluster options
        $html .= ' spiderfy_on_max_zoom: ' . $spiderfy_on_max_zoom . ',';
        $html .= ' show_coverage_on_hover: ' . $show_coverage_on_hover . ',';
        $html .= ' zoom_to_bounds_on_click: ' . $zoom_to_bounds_on_click . ',';
        $html .= ' single_marker_mode: ' . $single_marker_mode . ',';
        $html .= ' animate_adding_markers: ' . $animate_adding_markers . ',';
        $html .= ' disable_clustering_at_zoom: ' . $disable_clustering_at_zoom . ',';
        $html .= ' max_cluster_radius: ' . $max_cluster_radius . ',';

        $html .= ' starting_latitude: ' . $latitude . ',';
        $html .= ' starting_longitude: ' . $longitude . ',';
        $html .= ' starting_zoom: ' . $zoom . ' };';
        $html .= '</script>';

        return $html;
    }
 /**
  * Ensures this user has a UID
  * 
  * @param bool  $save  Save this record?
  * @return void
  */
 public function ensureUID($save)
 {
     if ($this->get('_uid')) {
         return;
     }
     $this->data['_uid'] = uniqid(Helper::getRandomString(6)) . Helper::getRandomString(8);
     if ($save) {
         $this->save();
     }
 }
Esempio n. 6
0
 /**
  * init
  * Allows field setup, called before rendering happens
  */
 protected function init()
 {
     $this->field_id = Helper::getRandomString();
 }
Esempio n. 7
0
    /**
     * Creates a new token, stores it in the session cache and returns it for use
     * 
     * @return string
     */
    public function create()
    {
        // grab list of known tokens
        $tokens = $this->getTokens();

        // create a new token
        do {
            $new_token = Helper::getRandomString(64);
        } while (in_array($new_token, $tokens));

        // we have a new token, add it to the list
        $tokens[] = $new_token;

        // save that list to the session
        $this->setTokens($tokens);

        // return the token
        return $new_token;
    }
 function render()
 {
     // Get the field settings
     self::$field_settings = $this->field_config;
     // Get the field settings
     $field_settings = Fieldtype_fileclerk::get_field_settings();
     // Set the destination
     $destination = isset($field_settings['destination']) ? $field_settings['destination'] : false;
     // Get merged configs from tasks
     $field_config = $this->tasks->merge_configs($destination, 'html');
     /**
      * If we have errors in the config, no (sur)render.
      */
     if (isset($field_config['errors'])) {
         // Get the errors view file
         $template = File::get(__DIR__ . '/views/error-no-render.html');
         // Parse the errors template with error data
         return Parse::template($template, array('errors' => $field_config['errors']));
     }
     // Field data
     $data = array('action' => Config::getSiteRoot() . 'TRIGGER/fileclerk/ajaxupload', 'basename_value' => null, 'destination' => $destination, 'extension' => null, 'field_data' => $this->field_data, 'filename' => null, 'id' => Helper::getRandomString(), 'is_image' => null, 'mime_type' => null, 'name' => $this->fieldname, 'site_root' => Config::getSiteRoot(), 'size' => null, 'size_bytes' => null, 'size_kilobytes' => null, 'size_megabytes' => null, 'size_gigabytes' => null, 'tabindex' => $this->tabindex, 'value' => $this->field_data, 'url' => null);
     // If field data is an array, it means we have an existing file.
     // @todo Or does it?
     if (is_array($this->field_data)) {
         // Check if $this->field_data is a zero-index array
         if (isset($this->field_data[0])) {
             // Reset the zero indexed array to normalize data for return.
             $field_data = reset($this->field_data);
         } else {
             // Not a zero-indexed array, no normalization needed.
             $field_data = $this->field_data;
         }
         // Set return data values from $this->field_data
         $data['basename_value'] = $field_data['filename'];
         $data['extension'] = $field_data['extension'];
         $data['filename'] = $field_data['filename'];
         $data['is_image'] = $field_data['is_image'] ? 'true' : 'false';
         //$data['mime_type']      = $field_data['mime_type'];
         $data['size'] = $field_data['size'];
         $data['size_bytes'] = $field_data['size_bytes'];
         $data['size_kilobytes'] = $field_data['size_kilobytes'];
         $data['size_megabytes'] = $field_data['size_megabytes'];
         $data['size_gigabytes'] = $field_data['size_gigabytes'];
         $data['url'] = $field_data['url'];
     }
     /**
      * If there is a destination parameter set in the field,
      * let's append it to the action and choose_file
      */
     $query_data = $destination ? array('destination' => $destination) : array('destination' => false);
     // Set the action attribute
     $data['action'] .= '?' . http_build_query($query_data);
     // Get the fieldtype view file
     $ft_template = File::get(__DIR__ . '/views/ft.fileclerk.html');
     /**
      * For developer debugging only
      * @return Dumps all $data values for each File Clerk field to screen.
      */
     if (defined('FILECLERK_DEV_DEBUG') && FILECLERK_DEV_DEBUG === TRUE) {
         echo '<pre>';
         var_dump($data);
         echo '</pre>';
     }
     // Parse the template with data
     return Parse::template($ft_template, $data);
 }
Esempio n. 9
0
File: helper.php Progetto: nob/joi
 /**
  * random_string
  * Returns a random string $length characters long
  *
  * @deprecated  Use Helper::getRandomString() instead
  *
  * @param string  $length  Length of random string to return
  * @return string
  */
 public static function random_string($length = NULL)
 {
     Log::warn("Use of Statamic_Helper::random_string() is deprecated. Use Helper::getRandomString() instead.", "core", "Statamic_Helper");
     return Helper::getRandomString($length);
 }
Esempio n. 10
0
    private function parseParameters()
    {
        // determine folder
        $folders = array('folders' => $this->fetchParam('folder', $this->fetchParam('folders', ltrim($this->fetchParam('from', URL::getCurrent()), "/"))));
        
        // url
        $url = array(
            'url' => $this->fetchParam('url', URL::getCurrent())  
        );
        
        // filters
        $filters = array(
            'show_hidden' => $this->fetchParam('show_hidden', false, null, true, false),
            'show_drafts' => $this->fetchParam('show_drafts', false, null, true, false),
            'since'       => $this->fetchParam('since'),
            'until'       => $this->fetchParam('until'),
            'show_past'   => $this->fetchParam('show_past', true, null, true),
            'show_future' => $this->fetchParam('show_future', false, null, true),
            'type'        => $this->fetchParam('type', 'all', false, false, true),
            'conditions'  => trim($this->fetchParam('conditions', null, false, false, false))
        );

        // other
        $other = array(
            'taxonomy'  => $this->fetchParam('taxonomy', false, null, true, null),
            'sort_by'   => $this->fetchParam('sort_by', 'order_key'),
            'sort_dir'  => $this->fetchParam('sort_dir')
        );
        
        // map settings
        $map = array(
            'map_id'       => $this->fetchParam('map_id', Helper::getRandomString(), false, false, false),
            'map_class'    => $this->fetchParam('map_class', null, false, false, false),
            'locate_with'  => $this->fetch('locate_with', null, false, false, true),
            'center_point' => $this->fetch('center_point', null, false, false, false),
            
            // starting position
            'starting_zoom'      => $this->fetch('starting_zoom', 12, 'is_numeric', false, false),
            'starting_latitude'  => $this->fetch('starting_latitude', null, 'is_numeric', false, false),
            'starting_longitude' => $this->fetch('starting_longitude', null, 'is_numeric', false, false),
            
            // display
            'mapping_service'             => $this->fetch('mapping_service', 'openstreetmap', null, false, true),
            'mapping_service_api_key'     => $this->fetch('mapping_service_api_key', null, null, false, true),
            'mapping_service_style'       => $this->fetch('mapping_service_style', null, null, false, true),
            'mapping_service_attribution' => $this->fetch('mapping_service_attribution', null, null, false, true),
  
            // limitations
            'min_zoom' => $this->fetch('min_zoom', 4, 'is_numeric', false, false),
            'max_zoom' => $this->fetch('max_zoom', 18, 'is_numeric', false, false),
            
            // interactions
            'interaction_scroll_wheel_zoom' => ($this->fetch('interaction_scroll_wheel_zoom', false, null, true)) ? 'true' : 'false',
            'interaction_double_click_zoom' => ($this->fetch('interaction_double_click_zoom', true, null, true)) ? 'true' : 'false',
            'interaction_box_zoom'          => ($this->fetch('interaction_box_zoom', true, null, true)) ? 'true' : 'false',
            'interaction_touch_zoom'        => ($this->fetch('interaction_touch_zoom', true, null, true)) ? 'true' : 'false',
            'interaction_draggable'         => ($this->fetch('interaction_draggable', true, null, true)) ? 'true' : 'false',
            'interaction_tap'               => ($this->fetch('interaction_tap', true, null, true)) ? 'true' : 'false',
            'open_popup'                    => ($this->fetchParam('open_popup', false, null, true)) ? 'true' : 'false',
            'auto_center'                   => ($this->fetch('auto_center', true, null, true)) ? 'true' : 'false',
            
            // clustering
            'clusters'                   => ($this->fetch('clusters', true, null, true)) ? 'true' : 'false',
            'spiderfy_on_max_zoom'       => ($this->fetch('spiderfy_on_max_zoom', true, null, true)) ? 'true' : 'false',
            'show_coverage_on_hover'     => ($this->fetch('show_coverage_on_hover', true, null, true)) ? 'true' : 'false',
            'zoom_to_bounds_on_click'    => ($this->fetch('zoom_to_bounds_on_click', true, null, true)) ? 'true' : 'false',
            'single_marker_mode'         => ($this->fetch('single_marker_mode', false, null, true)) ? 'true' : 'false',
            'animate_adding_markers'     => ($this->fetch('animate_adding_markers', true, null, true)) ? 'true' : 'false',
            'disable_clustering_at_zoom' => $this->fetch('disable_clustering_at_zoom', 15, 'is_numeric', false, false),
            'max_cluster_radius'         => $this->fetch('max_cluster_radius', 80, 'is_numeric', false, false)
        );

        // mapping service
        $service = $this->getMappingServiceVariables($map);
        $mapping = array(
            'tiles' => $service['tiles'],
            'attribution' => ($map['mapping_service_attribution']) ? $map['mapping_service_attribution'] : $service['service_attr'],
            'subdomains' => (isset($service['subdomains'])) ? $service['subdomains'] : null
        );

        return $other + $filters + $folders + $url + $map + $mapping;
    }