/** * 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; }
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'] = ''; } }
/** * 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; }
/** * 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(); } }
/** * init * Allows field setup, called before rendering happens */ protected function init() { $this->field_id = Helper::getRandomString(); }
/** * 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); }
/** * 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); }
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; }