/** * * before filter * * @return void */ public function beforeFilter() { parent::beforeFilter(); $this->Auth->allow(); if (!fileExistsInPath(APP . DS . 'tmp' . DS . 'newsletter_init.lock')) { $this->init(); } }
private function uploadFile($fileCtrl, $imgName, $cat, $oldFile = null) { $dir_path = $this->getUploadFileDir($cat); $name = $imgName . "." . $this->getFileExtension($fileCtrl); if ($imgName && $fileCtrl['tmp_name'] && $fileCtrl['size'] < $this->maxfilesize) { if ($oldFile) { if (fileExistsInPath($dir_path . $oldFile)) { unlink($dir_path . $oldFile); } } return move_uploaded_file($fileCtrl['tmp_name'], $dir_path . $name); //return $name; } else { return "File size has exceeded the limit. Maximum: " . $this->maxfilesize . " bytes can be allowed."; } }
/** * Loads a component * * @param string $name Name of component * @return boolean Success */ function loadComponent($name) { $paths = Configure::getInstance(); if ($name === null) { return true; } if (!class_exists($name . 'Component')) { $name = Inflector::underscore($name); foreach ($paths->componentPaths as $path) { if (file_exists($path . $name . '.php')) { require $path . $name . '.php'; return true; } } if ($component_fn = fileExistsInPath(LIBS . 'controller' . DS . 'components' . DS . $name . '.php')) { if (file_exists($component_fn)) { require $component_fn; return true; } else { return false; } } } else { return true; } }
/** * Creates the json object used for map rendering * * @param array $results listings * @param mixed $fields custom fields, required when using the GeoMaps module * @param mixed $options mapUI options to override globals when using GeoMaps module */ function makeJsonObject(&$results, &$fields = array(), $options = array()) { $www_base = array_shift(pathinfo(WWW_ROOT)); // Required for thumbnail path $paths = array(S2Paths::get('jreviews', 'S2_VIEWS_OVERRIDES') . 'themes' . DS . $this->c->Config->template . DS . 'theme_images' . DS, S2Paths::get('jreviews', 'S2_VIEWS') . 'themes' . DS . $this->c->Config->template . DS . 'theme_images' . DS, S2Paths::get('jreviews', 'S2_VIEWS_OVERRIDES') . 'themes' . DS . 'default' . DS . 'theme_images' . DS, S2Paths::get('jreviews', 'S2_VIEWS') . 'themes' . DS . 'default' . DS . 'theme_images' . DS); $path = fileExistsInPath(array('name' => '', 'suffix' => '', 'ext' => ''), $paths); App::import('Helper', array('html', 'routes', 'custom_fields', 'thumbnail')); $Html = new HtmlHelper(); $Routes = new RoutesHelper(); $CustomFields = new CustomFieldsHelper(); $Thumbnail = new ThumbnailHelper(); $Thumbnail->app = 'jreviews'; $Thumbnail->name = $this->c->name; $Thumbnail->action = $this->c->action; $Routes->Config = $CustomFields->Config = $Thumbnail->Config = $this->c->Config; $Routes->Access = $CustomFields->Access = $Thumbnail->Access = $this->c->Access; $Routes->Html = $CustomFields->Html = $Thumbnail->Html = $Html; $CustomFields->viewTheme = $Thumbnail->viewTheme =& $this->c->viewTheme; $CustomFields->viewSuffix =& $this->c->viewSuffix; // Check format of results because we may need to re-format and add fields for Geomaps module $first = current($results); if (!isset($first['Listing'])) { $results = $this->buildListingArray($results, $fields); } // PaidListings - remove unpaid info Configure::read('PaidListings') and PaidListingsComponent::processPaidData($results); $marker_icons = array(); $infowindow_data = array(); $i = 1; $map_counter = 0; $default_icon = $this->c->name == 'categories' ? 'numbered' : 'default'; if (!empty($results)) { $infowindow_fields = str_replace(" ", "", Sanitize::getString($this->c->Config, 'geomaps.infowindow_fields')); $infowindow_fields = $infowindow_fields != '' ? explode(",", $infowindow_fields) : array(); foreach ($results as $key => $result) { $results[$key] = $this->injectDistanceGroup($result); // Override global setting for map display in lists if at least one listing has map enabled // For it's listing type and has valid coordinates if ($this->c->name == 'categories' && isset($result['ListingType']) && Sanitize::getBool($result['ListingType']['config'], 'geomaps.enable_map_list', true)) { if (isset($result['Geomaps']) && abs($result['Geomaps']['lat']) > 0 && abs($result['Geomaps']['lon']) > 0) { $map_counter++; } } // Add menu id if not already there if (!isset($result['Listing']['menu_id'])) { $results[$key]['Listing']['menu_id'] = $this->c->Menu->getCategory(array('cat_id' => $result['Listing']['cat_id'], 'dir_id' => $result['Directory']['dir_id'], 'section_id' => isset($result['Listing']['section_id']) ? $result['Listing']['section_id'] : null, 'listing' => $result['Listing']['listing_id'])); } $listing_index = ($this->c->page - 1) * $this->c->limit + $i++; // Process and add icon info $icon = isset($result['Geomaps']) ? json_decode($result['Geomaps']['icon'], true) : array(); $results[$key]['Geomaps']['icon'] = ''; $icon_name = $default_icon; if (!empty($icon)) { $foundIcon = false; // Check if custom field assigned if ($icon['field'] != '' && substr($icon['field'], 0, 3) == 'jr_') { if (isset($result['Field']['pairs'][$icon['field']]) && isset($result['Field']['pairs'][$icon['field']]['image'][0])) { $icon_name = substr($result['Field']['pairs'][$icon['field']]['image'][0], 0, strpos($result['Field']['pairs'][$icon['field']]['image'][0], '.')); $marker_icons[$icon_name] = $results[$key]['Geomaps']['icon'] = $result['Field']['pairs'][$icon['field']]['image'][0]; $foundIcon = true; } } elseif ($icon['cat'] != '' && !$foundIcon) { $icon_name = substr($icon['cat'], 0, strpos($icon['cat'], '.')); if ($icon_name != 'default') { $marker_icons[$icon_name] = $results[$key]['Geomaps']['icon'] = $icon['cat']; } } } if (isset($result['Geomaps']) && $result['Geomaps']['lat'] != '' && $result['Geomaps']['lon'] != '' && $result['Geomaps']['lat'] != 0 && $result['Geomaps']['lon']) { # Create infowindow JSON object // start with standard fields $infowindow = array('id' => $result['Listing']['listing_id'], 'url' => str_replace(array($www_base, '&'), array('', '&'), $Routes->content('', $results[$key], array('return_url' => true))), 'index' => $listing_index, 'title' => $result['Listing']['title'], 'image' => str_replace($www_base, '', $Thumbnail->thumb($result, 0, array('tn_mode' => $this->c->Config->list_thumb_mode, 'location' => 'list', 'dimensions' => array($this->c->Config->list_image_resize), 'return_src' => 1))), 'featured' => $result['Listing']['featured'], 'rating_scale' => $this->c->Config->rating_scale, 'user_rating' => $result['Review']['user_rating'], 'user_rating_count' => $result['Review']['user_rating_count'], 'editor_rating' => $result['Review']['editor_rating'], 'editor_rating_count' => $result['Review']['editor_rating_count'], 'lat' => (double) $result['Geomaps']['lat'], 'lon' => (double) $result['Geomaps']['lon'], 'icon' => $icon_name); if (!empty($result['Field']['pairs'])) { # Limit fields will included in the payload json object $result['Field']['pairs'] = array_intersect_key($result['Field']['pairs'], array_flip($infowindow_fields)); foreach ($result['Field']['pairs'] as $name => $fieldArray) { $infowindow['field'][$name] = $CustomFields->field($name, $result); } } $infowindow_data['id' . $result['Listing']['listing_id']] = $infowindow; } } } $this->c->Config->{'geomaps.enable_map_list'} = $map_counter; $mapUI = array(); $zoom = ''; switch ($this->c->name) { case 'categories': $maptypes = Sanitize::getString($this->c->Config, 'geomaps.ui.maptype_list', 'buttons'); //buttons|menu|none $maptype_def = Sanitize::getString($this->c->Config, 'geomaps.ui.maptype_def_list', 'G_NORMAL_MAP'); $map = Sanitize::getBool($this->c->Config, 'geomaps.ui.map_list', 1); $hybrid = Sanitize::getBool($this->c->Config, 'geomaps.ui.hybrid_list', 1); $satellite = Sanitize::getBool($this->c->Config, 'geomaps.ui.satellite_list', 1); $terrain = Sanitize::getBool($this->c->Config, 'geomaps.ui.terrain_list', 1); $panzoom = Sanitize::getBool($this->c->Config, 'geomaps.ui.panzoom_list', 1); $scale = Sanitize::getBool($this->c->Config, 'geomaps.ui.scale_list', 0); $scrollwheel = Sanitize::getBool($this->c->Config, 'geomaps.ui.scrollwheel_list', 0); $doubleclick = Sanitize::getBool($this->c->Config, 'geomaps.ui.doubleclick_list', 1); $mapUI['title']['trim'] = Sanitize::getVar($this->c->Config, 'geomaps.ui.trimtitle_list', 0); $mapUI['title']['trimchars'] = Sanitize::getVar($this->c->Config, 'geomaps.ui.trimtitle_chars', 30); break; case 'com_content': $maptypes = Sanitize::getString($this->c->Config, 'geomaps.ui.maptype_detail', 'buttons'); //buttons|menu|none $maptype_def = Sanitize::getString($this->c->Config, 'geomaps.ui.maptype_def_detail', 'G_NORMAL_MAP'); $map = Sanitize::getBool($this->c->Config, 'geomaps.ui.map_detail', 1); $hybrid = Sanitize::getBool($this->c->Config, 'geomaps.ui.hybrid_detail', 1); $satellite = Sanitize::getBool($this->c->Config, 'geomaps.ui.satellite_detail', 1); $terrain = Sanitize::getBool($this->c->Config, 'geomaps.ui.terrain_detail', 1); $panzoom = Sanitize::getBool($this->c->Config, 'geomaps.ui.panzoom_detail', 1); $scale = Sanitize::getBool($this->c->Config, 'geomaps.ui.scale_detail', 0); $scrollwheel = Sanitize::getBool($this->c->Config, 'geomaps.ui.scrollwheel_detail', 0); $doubleclick = Sanitize::getBool($this->c->Config, 'geomaps.ui.doubleclick_detail', 1); $zoom = Sanitize::getInt($this->c->Config, 'geomaps.ui.zoom_detail', ''); $mapUI['title']['trim'] = Sanitize::getVar($this->c->Config, 'geomaps.ui.trimtitle_detail', 0); $mapUI['title']['trimchars'] = Sanitize::getVar($this->c->Config, 'geomaps.ui.trimtitle_chars', 30); break; case 'module_geomaps': $maptypes = Sanitize::getString($options, 'ui_maptype', 2) == '2' ? Sanitize::getString($this->c->Config, 'geomaps.ui.maptype_module', 'buttons') : Sanitize::getString($options, 'ui_maptype'); //buttons|menu|none $maptype_def = Sanitize::getString($options, 'ui_maptype_def', 2) == '2' ? Sanitize::getString($this->c->Config, 'geomaps.ui.maptype_def_module', 'G_NORMAL_MAP') : Sanitize::getString($options, 'ui_maptype_def', 'G_NORMAL_MAP'); $map = Sanitize::getInt($options, 'ui_map', 2) == '2' ? Sanitize::getBool($this->c->Config, 'geomaps.ui.map_module', 1) : Sanitize::getBool($options, 'ui_map'); $hybrid = Sanitize::getInt($options, 'ui_hybrid', 2) == '2' ? Sanitize::getBool($this->c->Config, 'geomaps.ui.hybrid_module', 1) : Sanitize::getBool($options, 'ui_hybrid'); $satellite = Sanitize::getInt($options, 'ui_satellite', 2) == '2' ? Sanitize::getBool($this->c->Config, 'geomaps.ui.satellite_module', 1) : Sanitize::getBool($options, 'ui_satellite'); $terrain = Sanitize::getInt($options, 'ui_terrain', 2) == '2' ? Sanitize::getBool($this->c->Config, 'geomaps.ui.terrain_module', 1) : Sanitize::getBool($options, 'ui_terrain'); $panzoom = Sanitize::getInt($options, 'ui_panzoom', 2) == '2' ? Sanitize::getBool($this->c->Config, 'geomaps.ui.panzoom_module', 1) : Sanitize::getBool($options, 'ui_panzoom'); $scale = Sanitize::getInt($options, 'ui_scale', 2) == '2' ? Sanitize::getBool($this->c->Config, 'geomaps.ui.scale_module', 0) : Sanitize::getBool($options, 'ui_scale'); $scrollwheel = Sanitize::getInt($options, 'ui_scrollwheel', 2) == '2' ? Sanitize::getBool($this->c->Config, 'geomaps.ui.scrollwheel_module', 0) : Sanitize::getBool($options, 'ui_scrollwheel'); $doubleclick = Sanitize::getInt($options, 'ui_doubleclick', 2) == '2' ? Sanitize::getBool($this->c->Config, 'geomaps.ui.doubleclick_module', 1) : Sanitize::getBool($options, 'ui_doubleclick'); $mapUI['title']['trim'] = Sanitize::getInt($options, 'ui_trimtitle_module', 2) == '2' ? Sanitize::getBool($this->c->Config, 'geomaps.ui.trimtitle_module', 30) : Sanitize::getBool($options, 'ui_trimtitle_module'); $mapUI['title']['trimchars'] = Sanitize::getInt($options, 'ui_trimtitle_chars', 2) == '2' ? Sanitize::getInt($this->c->Config, 'geomaps.ui.trimtitle_chars', 30) : Sanitize::getInt($options, 'ui_trimtitle_chars'); if (Sanitize::getString($options, 'detail_view', 1)) { $zoom = Sanitize::getInt($this->c->Config, 'geomaps.ui.zoom_detail', ''); } break; } switch ($maptypes) { case 'buttons': $mapUI['controls']['maptypecontrol'] = true; $mapUI['controls']['menumaptypecontrol'] = false; break; case 'menu': $mapUI['controls']['maptypecontrol'] = false; $mapUI['controls']['menumaptypecontrol'] = true; break; default: $mapUI['controls']['maptypecontrol'] = false; $mapUI['controls']['menumaptypecontrol'] = false; } $mapUI['maptypes']['def'] = $maptype_def; $mapUI['maptypes']['map'] = $map; $mapUI['maptypes']['hybrid'] = $hybrid; $mapUI['maptypes']['satellite'] = $satellite; $mapUI['maptypes']['terrain'] = $terrain; if ($panzoom) { $mapUI['controls']['smallzoomcontrol3d'] = true; $mapUI['controls']['largemapcontrol3d'] = true; } else { $mapUI['controls']['smallzoomcontrol3d'] = false; $mapUI['controls']['largemapcontrol3d'] = false; } $mapUI['controls']['scalecontrol'] = $scale; $mapUI['zoom']['scrollwheel'] = $scrollwheel; $mapUI['zoom']['doubleclick'] = $doubleclick; $mapUI['zoom']['start'] = $zoom; $mapUI['anchor']['x'] = Sanitize::getVar($this->c->Config, 'geomaps.infowindow_x', 0); $mapUI['anchor']['y'] = Sanitize::getVar($this->c->Config, 'geomaps.infowindow_y', 0); unset($Html, $Routes, $CustomFields, $Thumbnail); return json_encode(array('count' => count($infowindow_data), 'mapUI' => $mapUI, 'infowindow' => Sanitize::getString($this->c->Config, 'geomaps.infowindow', '_google'), 'icons' => $this->processIcons($marker_icons), 'payload' => $infowindow_data)); }
/** * Loads the DataSource class for the given connection name * * @param mixed $connName A string name of the connection, as defined in app/config/database.php, * or an array containing the filename (without extension) and class name of the object, * to be found in app/models/datasources/ or cake/libs/model/datasources/. * @return boolean True on success, null on failure or false if the class is already loaded * @access public * @static */ function loadDataSource($connName) { $_this =& ConnectionManager::getInstance(); if (is_array($connName)) { $conn = $connName; } else { $connections = $_this->enumConnectionObjects(); $conn = $connections[$connName]; } if (!empty($conn['parent'])) { $_this->loadDataSource($conn['parent']); } if (class_exists($conn['classname'])) { return false; } if (file_exists(MODELS . 'datasources' . DS . $conn['filename'] . '.php')) { require MODELS . 'datasources' . DS . $conn['filename'] . '.php'; } elseif (fileExistsInPath(LIBS . 'model' . DS . 'datasources' . DS . $conn['filename'] . '.php')) { require LIBS . 'model' . DS . 'datasources' . DS . $conn['filename'] . '.php'; } else { $error = __('Unable to load DataSource file %s.php', true); trigger_error(sprintf($error, $conn['filename']), E_USER_ERROR); return null; } }
/** * Parse file searching for no cache tags * * @param string $file * @param boolean $cache * @access private */ function __parseFile($file, $cache) { if (is_file($file)) { $file = file_get_contents($file); } elseif ($file = fileExistsInPath($file)) { $file = file_get_contents($file); } preg_match_all('/(<cake:nocache>(?<=<cake:nocache>)[\\s\\S]*?(?=<\\/cake:nocache>)<\\/cake:nocache>)/i', $cache, $oresult, PREG_PATTERN_ORDER); preg_match_all('/(?<=<cake:nocache>)([\\s\\S]*?)(?=<\\/cake:nocache>)/i', $file, $result, PREG_PATTERN_ORDER); if (!empty($result['0'])) { $count = 0; foreach ($result['0'] as $result) { if (isset($oresult['0'][$count])) { $this->__replace[] = $result; $this->__match[] = $oresult['0'][$count]; } $count++; } } }
/** * Returns layout filename for this template as a string. * * @return string Filename for layout file (.thtml). * @access protected */ function _getLayoutFileName() { if (isset($this->webservices) && !is_null($this->webservices)) { $type = strtolower($this->webservices) . DS; } else { $type = null; } $paths = Configure::getInstance(); $viewPaths = am($this->pluginPaths, $paths->viewPaths); $name = $this->subDir . $type . $this->layout; foreach ($viewPaths as $path) { if (file_exists($path . 'layouts' . DS . $name . $this->ext)) { return $path . 'layouts' . DS . $name . $this->ext; } elseif (file_exists($path . 'layouts' . DS . $name . '.ctp')) { return $path . 'layouts' . DS . $name . '.ctp'; } } if (!is_null($this->pluginPath)) { $layoutFileName = APP . $this->pluginPath . 'views' . DS . 'layouts' . DS . $name . $this->ext; } else { $layoutFileName = VIEWS . 'layouts' . DS . $name . $this->ext; } $layoutFileName = fileExistsInPath(LIBS . 'view' . DS . 'templates' . DS . 'layouts' . DS . $type . $this->layout . '.thtml'); if (empty($layoutFileName) && !empty($type)) { $layoutFileName = fileExistsInPath(LIBS . 'view' . DS . 'templates' . DS . 'layouts' . DS . $type . 'default.thtml'); } return $layoutFileName; }
/** * Parse file searching for no cache tags * * @param string $file * @param boolean $cache * @access private */ function __parseFile($file, $cache) { if (is_file($file)) { $file = file_get_contents($file); } elseif ($file = fileExistsInPath($file)) { $file = file_get_contents($file); } preg_match_all('/(<cake:nocache>(?<=<cake:nocache>)[\\s\\S]*?(?=<\\/cake:nocache>)<\\/cake:nocache>)/i', $cache, $oresult, PREG_PATTERN_ORDER); preg_match_all('/(?<=<cake:nocache>)([\\s\\S]*?)(?=<\\/cake:nocache>)/i', $file, $result, PREG_PATTERN_ORDER); if (!empty($this->__replace)) { foreach ($oresult['0'] as $k => $element) { $index = array_search($element, $this->__match); if ($index !== false) { array_splice($oresult[0], $k, 1); } } } if (!empty($result['0'])) { $count = 0; foreach ($result['0'] as $block) { if (isset($oresult['0'][$count])) { $this->__replace[] = $block; $this->__match[] = $oresult['0'][$count]; } $count++; } } }
/** * Shows a message to the user $time seconds, then redirects to $url * Uses flash.thtml as a layout for the messages * * @param string $message Message to display to the user * @param string $url Relative URL to redirect to after the time expires * @param integer $time Time to show the message * @access public */ function flash($message, $url, $pause = 1) { $this->autoRender = false; $this->autoLayout = false; $this->set('url', Router::url($url)); $this->set('message', $message); $this->set('pause', $pause); $this->set('page_title', $message); if (file_exists(VIEWS . 'layouts' . DS . 'flash.ctp')) { $flash = VIEWS . 'layouts' . DS . 'flash.ctp'; } elseif (file_exists(VIEWS . 'layouts' . DS . 'flash.thtml')) { $flash = VIEWS . 'layouts' . DS . 'flash.thtml'; } elseif ($flash = fileExistsInPath(LIBS . 'view' . DS . 'templates' . DS . "layouts" . DS . 'flash.ctp')) { } $this->render(null, false, $flash); }
/** * Return a misssing view error message * * @param string $viewFileName the filename that should exist * @return cakeError */ function _missingView($viewFileName = null, $action = null) { if (!is_file($viewFileName) && !fileExistsInPath($viewFileName) || $viewFileName === '/' || $viewFileName === '\\') { if (strpos($action, 'missingAction') !== false) { $errorAction = 'missingAction'; } else { $errorAction = 'missingView'; } foreach (array($this->name, 'errors') as $viewDir) { $errorAction = Inflector::underscore($errorAction); if (file_exists(VIEWS . $viewDir . DS . $errorAction . $this->ext)) { $missingViewFileName = VIEWS . $viewDir . DS . $errorAction . $this->ext; } elseif (file_exists(VIEWS . $viewDir . DS . $errorAction . '.thtml')) { $missingViewFileName = VIEWS . $viewDir . DS . $errorAction . '.thtml'; } elseif ($missingViewFileName = fileExistsInPath(LIBS . 'view' . DS . 'templates' . DS . $viewDir . DS . $errorAction . '.ctp')) { } else { $missingViewFileName = false; } $missingViewExists = is_file($missingViewFileName); if ($missingViewExists) { break; } } if (strpos($action, 'missingView') === false) { return $this->cakeError('missingView', array(array('className' => $this->name, 'action' => $this->action, 'file' => $viewFileName, 'base' => $this->base))); exit; } } }
/** * Replaced with Controller::flash(); * @deprecated will not be avialable after 1.1.x.x */ function flashOut($message, $url, $pause = 1) { trigger_error('(Controller::flashOut()) Deprecated: Use Controller::flash() instead', E_USER_WARNING); $this->autoRender = false; $this->autoLayout = false; $this->set('url', $url); $this->set('message', $message); $this->set('pause', $pause); $this->set('page_title', $message); if (file_exists(VIEWS . 'layouts' . DS . 'flash.thtml')) { $flash = VIEWS . 'layouts' . DS . 'flash.thtml'; } elseif ($flash = fileExistsInPath(LIBS . 'view' . DS . 'templates' . DS . "layouts" . DS . 'flash.thtml')) { } $this->render(null, false, $flash); }
/** * Creates the json object used for map rendering * * @param array $results listings * @param mixed $fields custom fields, required when using the GeoMaps module * @param mixed $options mapUI options to override globals when using GeoMaps module */ function makeJsonObject(&$results, &$fields = array(), $options = array()) { $www_base = array_shift(pathinfo(WWW_ROOT)); // Required for thumbnail path $paths = array(S2Paths::get('jreviews', 'S2_VIEWS_OVERRIDES') . 'themes' . DS . $this->c->Config->template . DS . 'theme_images' . DS, S2Paths::get('jreviews', 'S2_VIEWS') . 'themes' . DS . $this->c->Config->template . DS . 'theme_images' . DS, S2Paths::get('jreviews', 'S2_VIEWS_OVERRIDES') . 'themes' . DS . 'default' . DS . 'theme_images' . DS, S2Paths::get('jreviews', 'S2_VIEWS') . 'themes' . DS . 'default' . DS . 'theme_images' . DS); $path = fileExistsInPath(array('name' => '', 'suffix' => '', 'ext' => ''), $paths); App::import('Helper', array('html', 'routes', 'custom_fields', 'thumbnail')); $Html = new HtmlHelper(); $Routes = new RoutesHelper(); $CustomFields = new CustomFieldsHelper(); $Thumbnail = new ThumbnailHelper(); $Thumbnail->app = 'jreviews'; $Thumbnail->name = $this->c->name; $Thumbnail->action = $this->c->action; $Routes->Config = $CustomFields->Config = $Thumbnail->Config = $this->c->Config; $Routes->Access = $CustomFields->Access = $Thumbnail->Access = $this->c->Access; $Routes->Html = $CustomFields->Html = $Thumbnail->Html = $Html; $CustomFields->viewTheme = $Thumbnail->viewTheme =& $this->c->viewTheme; $CustomFields->viewSuffix =& $this->c->viewSuffix; // Check format of results because we may need to re-format and add fields for Geomaps module $first = current($results); if (!isset($first['Listing'])) { $results = $this->buildListingArray($results, $fields); } // PaidListings - remove unpaid info Configure::read('PaidListings') and PaidListingsComponent::processPaidData($results); $marker_icons = array(); $infowindow_data = array(); $i = 1; $default_icon = $this->c->name == 'categories' ? 'numbered' : 'default'; // make sure we only have the numeric part of the id from request when checking against listing ids $request_id = explode(':', JRequest::getVar('id')); $request_id = $request_id[0]; if (!empty($results)) { foreach ($results as $key => $result) { $results[$key] = $this->injectDistanceGroup($result); // Add menu id if not already there if (!isset($result['Listing']['menu_id'])) { $results[$key]['Listing']['menu_id'] = $this->c->Menu->getCategory($result['Listing']['cat_id'], $result['Listing']['section_id'], $result['Directory']['dir_id'], $result['Listing']['listing_id']); } // Added to support extra coordinates //$coords = $result["Field"]["groups"]["Location Info"]["Fields"]["jr_extracoords"]["value"][0]; //$xtracoords = $CustomFields->field('jr_extracoords', $listing, false, false); if (isset($result["Field"]["groups"]["Location Info"]) && isset($result["Field"]["groups"]["Location Info"]["Fields"]["jr_extracoords"])) { $coords = $result["Field"]["groups"]["Location Info"]["Fields"]["jr_extracoords"]["value"][0]; if ($coords) { $coords = json_decode($coords); $results[$key]["ExtraCoords"] = $coords; if (JRequest::getString("option") != "com_content") { $results[$key]["ExtraCoords"] = 0; } // HTGMOD } } elseif (isset($result["Field"]["pairs"]["jr_extracoords"])) { //detail page $coords = $result["Field"]["pairs"]["jr_extracoords"]["value"][0]; if ($coords) { $coords = json_decode($coords); $results[$key]["ExtraCoords"] = $coords; if ($results[$key]["Listing"]["listing_id"] != $request_id) { // "if the current listing_id in the loop == the listing_id being viewed on the detail page...." $results[$key]["ExtraCoords"] = 0; } } } $listing_index = ($this->c->page - 1) * $this->c->limit + $i++; // Process and add icon info $icon = isset($result['Geomaps']) ? json_decode($result['Geomaps']['icon'], true) : array(); $results[$key]['Geomaps']['icon'] = ''; $icon_name = $default_icon; if (!empty($icon)) { $foundIcon = false; // Check if custom field assigned if ($icon['field'] != '' && substr($icon['field'], 0, 3) == 'jr_') { if (isset($result['Field']['pairs'][$icon['field']]) && isset($result['Field']['pairs'][$icon['field']]['image'][0])) { $icon_name = substr($result['Field']['pairs'][$icon['field']]['image'][0], 0, strpos($result['Field']['pairs'][$icon['field']]['image'][0], '.')); $marker_icons[$icon_name] = $results[$key]['Geomaps']['icon'] = $result['Field']['pairs'][$icon['field']]['image'][0]; $foundIcon = true; } } elseif ($icon['cat'] != '' && !$foundIcon) { $icon_name = substr($icon['cat'], 0, strpos($icon['cat'], '.')); if ($icon_name != 'default') { $marker_icons[$icon_name] = $results[$key]['Geomaps']['icon'] = $icon['cat']; } } } if (isset($result['Geomaps']) && $result['Geomaps']['lat'] != '' && $result['Geomaps']['lon'] != '' && $result['Geomaps']['lat'] != 0 && $result['Geomaps']['lon']) { # Create infowindow JSON object // start with standard fields $infowindow = array('id' => $result['Listing']['listing_id'], 'url' => str_replace(array($www_base, '&'), array('', '&'), $Routes->content('', $results[$key], array('return_url' => true))), 'index' => $listing_index, 'title' => $result['Listing']['title'], 'image' => str_replace($www_base, '', $Thumbnail->thumb($result, 0, 'scale', 'list', array($this->c->Config->list_image_resize), array('return_src' => 1))), 'featured' => $result['Listing']['featured'], 'rating_scale' => $this->c->Config->rating_scale, 'user_rating' => $result['Review']['user_rating'], 'user_rating_count' => $result['Review']['user_rating_count'], 'editor_rating' => $result['Review']['editor_rating'], 'editor_rating_count' => $result['Review']['editor_rating_count'], 'lat' => (double) $result['Geomaps']['lat'], 'lon' => (double) $result['Geomaps']['lon'], 'icon' => $icon_name); // Added for Hooked $infowindow['criteria_id'] = $result['Criteria']['criteria_id']; if (isset($results[$key]["ExtraCoords"])) { $infowindow['extracoords'] = $results[$key]["ExtraCoords"]; } if (isset($results[$key]['Listing']['relations'])) { $infowindow['relations'] = $results[$key]['Listing']['relations']; } if ($results[$key]['Listing']['section_id'] != 1) { $infowindow['hascontent'] = 1; } else { if (isset($results[$key]['Listing']['summary']) && $results[$key]['Listing']['summary'] != '') { $infowindow['hascontent'] = 1; } else { $infowindow['hascontent'] = 0; } } if (!empty($result['Field']['pairs'])) { foreach ($result['Field']['pairs'] as $name => $fieldArray) { $infowindow['field'][$name] = $CustomFields->field($name, $result); } } $infowindow_data['id' . $result['Listing']['listing_id']] = $infowindow; } } } $mapUI = array(); $zoom = ''; switch ($this->c->name) { case 'categories': $maptypes = Sanitize::getString($this->c->Config, 'geomaps.ui.maptype_list', 'buttons'); //buttons|menu|none $maptype_def = Sanitize::getString($this->c->Config, 'geomaps.ui.maptype_def_list', 'G_NORMAL_MAP'); $map = Sanitize::getBool($this->c->Config, 'geomaps.ui.map_list', 1); $hybrid = Sanitize::getBool($this->c->Config, 'geomaps.ui.hybrid_list', 1); $satellite = Sanitize::getBool($this->c->Config, 'geomaps.ui.satellite_list', 1); $terrain = Sanitize::getBool($this->c->Config, 'geomaps.ui.terrain_list', 1); $panzoom = Sanitize::getBool($this->c->Config, 'geomaps.ui.panzoom_list', 1); $scale = Sanitize::getBool($this->c->Config, 'geomaps.ui.scale_list', 0); $scrollwheel = Sanitize::getBool($this->c->Config, 'geomaps.ui.scrollwheel_list', 0); $doubleclick = Sanitize::getBool($this->c->Config, 'geomaps.ui.doubleclick_list', 1); $mapUI['title']['trim'] = Sanitize::getVar($this->c->Config, 'geomaps.ui.trimtitle_list', 0); $mapUI['title']['trimchars'] = Sanitize::getVar($this->c->Config, 'geomaps.ui.trimtitle_chars', 30); break; case 'com_content': $maptypes = Sanitize::getString($this->c->Config, 'geomaps.ui.maptype_detail', 'buttons'); //buttons|menu|none $maptype_def = Sanitize::getString($this->c->Config, 'geomaps.ui.maptype_def_detail', 'G_NORMAL_MAP'); $map = Sanitize::getBool($this->c->Config, 'geomaps.ui.map_detail', 1); $hybrid = Sanitize::getBool($this->c->Config, 'geomaps.ui.hybrid_detail', 1); $satellite = Sanitize::getBool($this->c->Config, 'geomaps.ui.satellite_detail', 1); $terrain = Sanitize::getBool($this->c->Config, 'geomaps.ui.terrain_detail', 1); $panzoom = Sanitize::getBool($this->c->Config, 'geomaps.ui.panzoom_detail', 1); $scale = Sanitize::getBool($this->c->Config, 'geomaps.ui.scale_detail', 0); $scrollwheel = Sanitize::getBool($this->c->Config, 'geomaps.ui.scrollwheel_detail', 0); $doubleclick = Sanitize::getBool($this->c->Config, 'geomaps.ui.doubleclick_detail', 1); $zoom = Sanitize::getInt($this->c->Config, 'geomaps.ui.zoom_detail', ''); $mapUI['title']['trim'] = Sanitize::getVar($this->c->Config, 'geomaps.ui.trimtitle_detail', 0); $mapUI['title']['trimchars'] = Sanitize::getVar($this->c->Config, 'geomaps.ui.trimtitle_chars', 30); break; case 'module_geomaps': $maptypes = Sanitize::getString($options, 'ui_maptype', 2) == '2' ? Sanitize::getString($this->c->Config, 'geomaps.ui.maptype_module', 'buttons') : Sanitize::getString($options, 'ui_maptype'); //buttons|menu|none $maptype_def = Sanitize::getString($options, 'ui_maptype_def', 2) == '2' ? Sanitize::getString($this->c->Config, 'geomaps.ui.maptype_def_module', 'G_NORMAL_MAP') : Sanitize::getString($options, 'ui_maptype_def', 'G_NORMAL_MAP'); $map = Sanitize::getInt($options, 'ui_map', 2) == '2' ? Sanitize::getBool($this->c->Config, 'geomaps.ui.map_module', 1) : Sanitize::getBool($options, 'ui_map'); $hybrid = Sanitize::getInt($options, 'ui_hybrid', 2) == '2' ? Sanitize::getBool($this->c->Config, 'geomaps.ui.hybrid_module', 1) : Sanitize::getBool($options, 'ui_hybrid'); $satellite = Sanitize::getInt($options, 'ui_satellite', 2) == '2' ? Sanitize::getBool($this->c->Config, 'geomaps.ui.satellite_module', 1) : Sanitize::getBool($options, 'ui_satellite'); $terrain = Sanitize::getInt($options, 'ui_terrain', 2) == '2' ? Sanitize::getBool($this->c->Config, 'geomaps.ui.terrain_module', 1) : Sanitize::getBool($options, 'ui_terrain'); $panzoom = Sanitize::getInt($options, 'ui_panzoom', 2) == '2' ? Sanitize::getBool($this->c->Config, 'geomaps.ui.panzoom_module', 1) : Sanitize::getBool($options, 'ui_panzoom'); $scale = Sanitize::getInt($options, 'ui_scale', 2) == '2' ? Sanitize::getBool($this->c->Config, 'geomaps.ui.scale_module', 0) : Sanitize::getBool($options, 'ui_scale'); $scrollwheel = Sanitize::getInt($options, 'ui_scrollwheel', 2) == '2' ? Sanitize::getBool($this->c->Config, 'geomaps.ui.scrollwheel_module', 0) : Sanitize::getBool($options, 'ui_scrollwheel'); $doubleclick = Sanitize::getInt($options, 'ui_doubleclick', 2) == '2' ? Sanitize::getBool($this->c->Config, 'geomaps.ui.doubleclick_module', 1) : Sanitize::getBool($options, 'ui_doubleclick'); $mapUI['title']['trim'] = Sanitize::getInt($options, 'ui_trimtitle_module', 2) == '2' ? Sanitize::getBool($this->c->Config, 'geomaps.ui.trimtitle_module', 30) : Sanitize::getBool($options, 'ui_trimtitle_module'); $mapUI['title']['trimchars'] = Sanitize::getInt($options, 'ui_trimtitle_chars', 2) == '2' ? Sanitize::getInt($this->c->Config, 'geomaps.ui.trimtitle_chars', 30) : Sanitize::getInt($options, 'ui_trimtitle_chars'); if (Sanitize::getString($options, 'detail_view', 1)) { $zoom = Sanitize::getInt($this->c->Config, 'geomaps.ui.zoom_detail', ''); } break; } switch ($maptypes) { case 'buttons': $mapUI['controls']['maptypecontrol'] = true; $mapUI['controls']['menumaptypecontrol'] = false; break; case 'menu': $mapUI['controls']['maptypecontrol'] = false; $mapUI['controls']['menumaptypecontrol'] = true; break; default: $mapUI['controls']['maptypecontrol'] = false; $mapUI['controls']['menumaptypecontrol'] = false; } $mapUI['maptypes']['def'] = $maptype_def; $mapUI['maptypes']['map'] = $map; $mapUI['maptypes']['hybrid'] = $hybrid; $mapUI['maptypes']['satellite'] = $satellite; $mapUI['maptypes']['terrain'] = $terrain; if ($panzoom) { $mapUI['controls']['smallzoomcontrol3d'] = true; $mapUI['controls']['largemapcontrol3d'] = true; } else { $mapUI['controls']['smallzoomcontrol3d'] = false; $mapUI['controls']['largemapcontrol3d'] = false; } $mapUI['controls']['scalecontrol'] = $scale; $mapUI['zoom']['scrollwheel'] = $scrollwheel; $mapUI['zoom']['doubleclick'] = $doubleclick; $mapUI['zoom']['start'] = $zoom; $mapUI['anchor']['x'] = Sanitize::getVar($this->c->Config, 'geomaps.infowindow_x', 0); $mapUI['anchor']['y'] = Sanitize::getVar($this->c->Config, 'geomaps.infowindow_y', 0); unset($Html, $Routes, $CustomFields, $Thumbnail); return json_encode(array('count' => count($infowindow_data), 'mapUI' => $mapUI, 'infowindow' => Sanitize::getString($this->c->Config, 'geomaps.infowindow', '_google'), 'icons' => $this->processIcons($marker_icons), 'payload' => $infowindow_data)); }
/** * Loads a behavior * * @param string $name Name of behavior * @return boolean Success */ function loadBehavior($name) { if ($name === null) { return true; } if (strpos($name, '.') !== false) { list($plugin, $name) = explode('.', $name); } $paths = Configure::getInstance(); if (!class_exists($name . 'Behavior')) { $name = Inflector::underscore($name); foreach ($paths->behaviorPaths as $path) { if (file_exists($path . $name . '.php')) { require $path . $name . '.php'; return true; } } if ($behavior_fn = fileExistsInPath(LIBS . 'model' . DS . 'behaviors' . DS . $name . '.php')) { if (file_exists($behavior_fn)) { require $behavior_fn; return true; } else { return false; } } } return true; }
/** * Se ejecuta por cada reorganizar los datos de un registro * resultado de una búsqueda. * * @param array &$record Una referencia a un arreglo con los datos del registro. * @param bool $primary Indica si se realizó la búsqueda directamente en * este modelo o de lo contrario por medio de una relación. El valor * por omisión es false. * @return array Registro reorganizado. * @access public */ function afterRecord(&$record, $primary = false) { if (empty($record['mime'])) { return; } $path = sprintf('/%s/%s_%s/%s', Configure::read("Media.dir"), $record['model'], $record['foreign_key'], $record['alias']); $filename = sprintf('%s-%s.%s', Inflector::slug($record['name'], '-'), $record['id'], $record['extension']); $record['url'] = sprintf('%s/%s', $path, $filename); $record['temp'] = Inflector::slug($record['name'], '-') . '-' . $record['id']; if ($image = $this->isImage($record['mime'])) { $record['thumb'] = sprintf('%s/~%s', $path, $filename); $settings = Configure::read("{$this->name}.{$record['model']}.{$record['alias']}"); if (!empty($settings['copies'])) { foreach ($settings['copies'] as $folder => $copy) { $record[$folder] = sprintf('%s/%s/%s', $path, $folder, $filename); if ($fullpath = fileExistsInPath($record[$folder])) { $file =& new File($fullpath); $record[$folder . '$'] = $file->path; } else { $record[$folder] = sprintf('/img/no-pic-%s-%s.jpg', $copy['width'], $copy['height']); } } } if ($fullpath = fileExistsInPath($record['thumb'])) { $file =& new File($fullpath); $record['thumb$'] = $file->path; } else { $record['thumb'] = '/img/no-pic-100-100.jpg'; } } else { $record['thumb'] = $this->icon($record['extension']); $record['temp'] = Inflector::slug($record['name'], '-') . '-' . $record['id']; } if ($fullpath = fileExistsInPath($record['url'])) { $file =& new File($fullpath); $record['$'] = $file->path; } elseif ($image) { $record['url'] = $settings['resize'] ? sprintf('/img/no-pic-%s-%s.jpg', $settings['width'], $settings['height']) : '/img/no-pic.jpg'; } }
/** * Parse file searching for no cache tags * * @param string $file The filename that needs to be parsed. * @param string $cache The cached content * @return void */ protected function _parseFile($file, $cache) { if (is_file($file)) { $file = file_get_contents($file); } elseif ($file = fileExistsInPath($file)) { $file = file_get_contents($file); } preg_match_all('/(<!--nocache:\\d{3}-->(?<=<!--nocache:\\d{3}-->)[\\s\\S]*?(?=<!--\\/nocache-->)<!--\\/nocache-->)/i', $cache, $outputResult, PREG_PATTERN_ORDER); preg_match_all('/(?<=<!--nocache-->)([\\s\\S]*?)(?=<!--\\/nocache-->)/i', $file, $fileResult, PREG_PATTERN_ORDER); $fileResult = $fileResult[0]; $outputResult = $outputResult[0]; if (!empty($this->_replace)) { foreach ($outputResult as $i => $element) { $index = array_search($element, $this->_match); if ($index !== false) { unset($outputResult[$i]); } } $outputResult = array_values($outputResult); } if (!empty($fileResult)) { $i = 0; foreach ($fileResult as $cacheBlock) { if (isset($outputResult[$i])) { $this->_replace[] = $cacheBlock; $this->_match[] = $outputResult[$i]; } $i++; } } }
function _getViewFileName($action) { $action = Inflector::underscore($action); $paths = Configure::getInstance(); $type = null; if (empty($action)) { $action = $this->action; } $position = strpos($action, '..'); if ($position === false) { } else { $action = explode('/', $action); $i = array_search('..', $action); unset($action[$i - 1]); unset($action[$i]); $action = '..' . DS . implode(DS, $action); } foreach ($paths->viewPaths as $path) { if (file_exists($path . $this->viewPath . DS . $this->subDir . $type . $action . $this->ext)) { $viewFileName = $path . $this->viewPath . DS . $this->subDir . $type . $action . $this->ext; return $viewFileName; } } // added for .ctp viewPath fallback foreach ($paths->viewPaths as $path) { if (file_exists($path . $this->viewPath . DS . $type . $action . '.ctp')) { $viewFileName = $path . $this->viewPath . DS . $type . $action . '.ctp'; return $viewFileName; } } if ($viewFileName = fileExistsInPath(LIBS . 'view' . DS . 'templates' . DS . 'errors' . DS . $type . $action . '.ctp')) { } elseif ($viewFileName = fileExistsInPath(LIBS . 'view' . DS . 'templates' . DS . $this->viewPath . DS . $type . $action . '.ctp')) { } else { $viewFileName = VIEWS . $this->viewPath . DS . $this->subDir . $type . $action . $this->ext; } return $viewFileName; }
/** * test fileExistsInPath() * * @access public * @return void */ function testFileExistsInPath() { $this->skipUnless(function_exists('ini_set'), '%s ini_set function not available'); $_includePath = ini_get('include_path'); $path = TMP . 'basics_test'; $folder1 = $path . DS . 'folder1'; $folder2 = $path . DS . 'folder2'; $file1 = $path . DS . 'file1.php'; $file2 = $folder1 . DS . 'file2.php'; $file3 = $folder1 . DS . 'file3.php'; $file4 = $folder2 . DS . 'file4.php'; new Folder($path, true); new Folder($folder1, true); new Folder($folder2, true); touch($file1); touch($file2); touch($file3); touch($file4); ini_set('include_path', $path . PATH_SEPARATOR . $folder1); $this->assertEqual(fileExistsInPath('file1.php'), $file1); $this->assertEqual(fileExistsInPath('file2.php'), $file2); $this->assertEqual(fileExistsInPath('folder1' . DS . 'file2.php'), $file2); $this->assertEqual(fileExistsInPath($file2), $file2); $this->assertEqual(fileExistsInPath('file3.php'), $file3); $this->assertEqual(fileExistsInPath($file4), $file4); $this->assertFalse(fileExistsInPath('file1')); $this->assertFalse(fileExistsInPath('file4.php')); $Folder = new Folder($path); $Folder->delete(); ini_set('include_path', $_includePath); }
/** * Sets the layout and template paths for the content type defined by $type. * * @param object $controller A reference to a controller object * @param string $type Type of response to send (e.g: 'ajax') * @access public * @see RequestHandlerComponent::setContent() * @see RequestHandlerComponent::respondAs() */ function renderAs(&$controller, $type) { if ($type == 'ajax') { $controller->layout = $this->ajaxLayout; return $this->respondAs('html', array('charset' => 'UTF-8')); } $controller->ext = '.ctp'; if (empty($this->__renderType)) { $controller->viewPath .= '/' . $type; } else { $controller->viewPath = preg_replace("/\\/{$type}\$/", '/' . $type, $controller->viewPath); } $this->__renderType = $type; $controller->layoutPath = $type; if (in_array($type, array_keys($this->__requestContent))) { $this->respondAs($type); } if (!in_array(ucfirst($type), $controller->helpers)) { if (file_exists(HELPERS . $type . '.php') || fileExistsInPath(LIBS . 'view' . DS . 'helpers' . DS . $type . '.php')) { $controller->helpers[] = ucfirst($type); } } }