/** * Controller */ public function process() { if ($sPlugin = Phpfox_Plugin::get('core.component_controller_index_visitor_start')) { eval($sPlugin); } $image = []; list($total, $featured) = Photo_Service_Photo::instance()->getFeatured(); if (is_array($featured) && isset($featured[0])) { $photo = $featured[0]; $url = Phpfox_Image_Helper::instance()->display(['server_id' => $photo['server_id'], 'path' => 'photo.url_photo', 'file' => $photo['destination'], 'suffix' => '_1024', 'return_url' => true]); $image = ['image' => $url, 'info' => strip_tags($photo['title']) . ' by ' . $photo['full_name']]; } if (!$image) { $images = ['create-a-community-for-musicians.jpg' => 'Creating communities for Musicians', 'create-a-community-for-athletes.jpg' => 'Creating communities for Athletes', 'create-a-community-for-photographers.jpg' => 'Creating communities for Photographers', 'create-a-social-network-for-fine-cooking.jpg' => 'Creating communities for Fine Cooking']; $total = rand(1, count($images)); $image = []; $cnt = 0; foreach ($images as $image => $info) { $cnt++; $image = ['image' => 'http://bg.m9.io/' . $image, 'info' => $info]; if ($cnt === $total) { break; } } } $this->template()->setHeader('cache', array('register.js' => 'module_user', 'country.js' => 'module_core', 'comment.css' => 'style_css'))->setBreadCrumb(Phpfox::getParam('core.site_title'))->setPhrase(array('user.continue'))->assign(array('aSettings' => Phpfox::getService('custom')->getForEdit(array('user_main', 'user_panel', 'profile_panel'), null, null, true), 'image' => $image)); }
protected function _build($row) { $row = (array) $row; if (isset($row['user']) && is_array($row['user'])) { $row = $row['user']; } $age = $row['birthday']; $day = ''; $month = ''; $year = ''; if (!empty($age)) { $month = substr($age, 0, 2); $day = substr($age, 2, 2); $year = substr($age, -4); } $image_50px = ''; if (!empty($row['user_image'])) { $image_50px = \Phpfox_Image_Helper::instance()->display(['user' => $row, 'suffix' => '_50_square', 'return_url' => true]); } return ['id' => (int) $row['user_id'], 'name' => $row['full_name'], 'url' => \Phpfox_Url::instance()->makeUrl($row['user_name']), 'gender' => ['id' => $row['gender'], 'name' => \User_Service_User::instance()->gender($row['gender'])], 'photo' => ['50px' => $image_50px, '120px' => str_replace('_50_square', '_120_square', $image_50px), '200px' => str_replace('_50_square', '_200_square', $image_50px), 'original' => str_replace('_50_square', '', $image_50px)], 'location' => ['iso' => $row['country_iso']], 'dob' => ['day' => $day, 'month' => $month, 'year' => $year]]; }
protected function _build($row) { $row = (array) $row; if (isset($row['user']) && is_array($row['user'])) { $row = $row['user']; } $age = isset($row['birthday']) ? $row['birthday'] : null; $day = ''; $month = ''; $year = ''; if (!empty($age)) { $month = substr($age, 0, 2); $day = substr($age, 2, 2); $year = substr($age, -4); } $image_50px = ''; $imageLink = ''; if (!empty($row['user_image'])) { $image_50px = \Phpfox_Image_Helper::instance()->display(['user' => $row, 'suffix' => '_50_square', 'return_url' => true]); } $imageLink = \Phpfox_Image_Helper::instance()->display(['user' => $row, 'suffix' => '_120_square']); $link = \Phpfox_Url::instance()->makeUrl($row['user_name']); return ['id' => (int) $row['user_id'], 'group' => (object) ['id' => (int) $row['user_group_id']], 'name' => $row['full_name'], 'name_link' => '<span id="js_user_name_link_' . $row['user_name'] . '" class="user_profile_link_span"><a href="' . $link . '">' . $row['full_name'] . '</a></span>', 'url' => $link, 'gender' => ['id' => $row['gender'], 'name' => \User_Service_User::instance()->gender($row['gender'])], 'photo_link' => $imageLink, 'photo' => ['50px' => $image_50px, '120px' => str_replace('_50_square', '_120_square', $image_50px), '200px' => str_replace('_50_square', '_200_square', $image_50px), 'original' => str_replace('_50_square', '', $image_50px)], 'location' => ['iso' => $row['country_iso']], 'dob' => ['day' => $day, 'month' => $month, 'year' => $year]]; }
public function getFooter() { if (Phpfox::isAdmin() && !Phpfox::isAdminPanel()) { $Url = Phpfox_Url::instance(); $this->_sFooter .= '<div id="pf_admin">'; $this->_sFooter .= '<a id="page_editor_popup" href="' . Phpfox_Url::instance()->makeUrl('admincp.element.edit', ['controller' => base64_encode(Phpfox_Module::instance()->getFullControllerName())]) . '" class="popup js_hover_title" data-custom-class="js_box_full"><i class="fa fa-code"></i><span class="js_hover_info">Edit this page</span></a>'; if (Phpfox::getParam('core.site_is_offline')) { $this->_sFooter .= '<a href="' . $Url->makeUrl('admincp.setting.edit', ['group-id' => 'site_offline_online']) . '" class="no_ajax site_is_offline js_hover_title"><i class="fa fa-power-off"></i><span class="js_hover_info">Site is Offline</span></a>'; } $this->_sFooter .= '<a href="' . Phpfox_Url::instance()->makeUrl('admincp') . '" class="js_hover_title no_ajax"><i class="fa fa-diamond"></i><span class="js_hover_info">AdminCP</span></a>'; $this->_sFooter .= '</div>'; } // $this->_sFooter .= '<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>'; foreach ((new Core\App())->all() as $App) { if ($App->js && is_array($App->js)) { foreach ($App->js as $js) { $this->_sFooter .= '<script src="' . $js . '"></script>'; } } } if (Phpfox::isUser()) { $image = Phpfox_Image_Helper::instance()->display(['user' => Phpfox::getUserBy(), 'suffix' => '_50_square', 'return_url' => true]); $this->_sFooter .= '<div id="auth-user" data-id="' . Phpfox::getUserId() . '" data-name="' . Phpfox::getUserBy('full_name') . '" data-image="' . $image . '"></div>'; } return $this->_sFooter; }
/** * Gets any data we plan to place within the HTML tags <head></head>. * This method also groups the data to give the template a nice clean look. * * @return string|array $sData Returns the HTML data to be placed within <head></head> */ public function getHeader($bReturnArray = false) { if (Phpfox::isAdminPanel()) { $this->setHeader(array('custom.css' => 'style_css')); } if ($this->delayedHeaders) { foreach ($this->delayedHeaders as $header) { $this->setHeader('cache', $header); } } // $this->setHeader('<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css">'); if (!defined('PHPFOX_INSTALLER')) { Core\Event::trigger('lib_phpfox_template_getheader', $this); foreach ((new Core\App())->all() as $App) { if ($App->head && is_array($App->head)) { foreach ($App->head as $head) { $this->setHeader($head); } } if ($App->settings) { $Setting = new Core\Setting(); foreach ($App->settings as $key => $setting) { if (isset($setting->js_variable)) { $this->setHeader('<script>var ' . $key . ' = "' . $Setting->get($key) . '";</script>'); } } } } } $aArrayData = array(); $sData = ''; $sJs = ''; $iVersion = $this->getStaticVersion(); $oUrl = Phpfox_Url::instance(); $aUrl = $oUrl->getParams(); if (!defined('PHPFOX_DESIGN_DND')) { define('PHPFOX_DESIGN_DND', false); } if (!PHPFOX_IS_AJAX_PAGE) { ($sPlugin = Phpfox_Plugin::get('template_getheader')) ? eval($sPlugin) : false; $sJs .= "\t\t\tvar oCore = {'core.is_admincp': " . (Phpfox::isAdminPanel() ? 'true' : 'false') . ", 'core.section_module': '" . Phpfox_Module::instance()->getModuleName() . "', 'profile.is_user_profile': " . (defined('PHPFOX_IS_USER_PROFILE') && PHPFOX_IS_USER_PROFILE ? 'true' : 'false') . ", 'log.security_token': '" . Phpfox::getService('log.session')->getToken() . "', 'core.url_rewrite': '" . Phpfox::getParam('core.url_rewrite') . "', 'core.country_iso': '" . (Phpfox::isUser() ? Phpfox::getUserBy('country_iso') : '') . "', 'core.can_move_on_a_y_and_x_axis' : " . (!defined('PHPFOX_INSTALLER') && Phpfox::getParam('core.can_move_on_a_y_and_x_axis') ? 'true' : 'false') . ", 'core.default_currency': '" . (defined('PHPFOX_INSTALLER') ? 'USD' : Phpfox::getService('core.currency')->getDefault()) . "', 'core.enabled_edit_area': " . (Phpfox::getParam('core.enabled_edit_area') ? 'true' : 'false') . ", 'core.disable_hash_bang_support': " . (Phpfox::getParam('core.disable_hash_bang_support') ? 'true' : 'false') . ", 'core.site_wide_ajax_browsing': " . (!defined('PHPFOX_IN_DESIGN_MODE') && Phpfox::getParam('core.site_wide_ajax_browsing') && !Phpfox::isAdminPanel() && Phpfox::isUser() ? 'true' : 'false') . ", 'profile.user_id': " . (defined('PHPFOX_IS_USER_PROFILE') && PHPFOX_IS_USER_PROFILE ? Profile_Service_Profile::instance()->getProfileUserId() : 0) . "};\n"; // You are filtering out the controllers which should not load 'content' ajaxly, finding a way for pages.view/1/info and like that $sProgressCssFile = $this->getStyle('css', 'progress.css'); $sStylePath = str_replace(Phpfox::getParam('core.path'), '', str_replace('progress.css', '', $sProgressCssFile)); $aJsVars = array('sJsHome' => Phpfox::getParam('core.path'), 'sJsHostname' => $_SERVER['HTTP_HOST'], 'sSiteName' => Phpfox::getParam('core.site_title'), 'sJsStatic' => $oUrl->getDomain() . PHPFOX_STATIC, 'sJsStaticImage' => Phpfox::getParam('core.url_static_image'), 'sImagePath' => $this->getStyle('image'), 'sStylePath' => $this->getStyle('css'), 'sVersion' => Phpfox::getId(), 'sJsAjax' => $oUrl->getDomain() . PHPFOX_STATIC . 'ajax.php', 'sStaticVersion' => $iVersion, 'sGetMethod' => PHPFOX_GET_METHOD, 'sDateFormat' => defined('PHPFOX_INSTALLER') ? '' : Phpfox::getParam('core.date_field_order'), 'sEgiftStyle' => $this->getStyle('css', 'display.css', 'egift'), 'sGlobalTokenName' => Phpfox::getTokenName(), 'sController' => Phpfox_Module::instance()->getFullControllerName(), 'bJsIsMobile' => Phpfox::isMobile() ? true : false, 'sProgressCssFile' => $sProgressCssFile, 'sHostedVersionId' => defined('PHPFOX_IS_HOSTED_VERSION') ? PHPFOX_IS_HOSTED_VERSION : ''); if (!defined('PHPFOX_INSTALLER')) { $aJsVars['bWysiwyg'] = Phpfox::getParam('core.wysiwyg') != 'default' && Phpfox::getParam('core.allow_html') ? true : false; $aJsVars['sEditor'] = Phpfox::getParam('core.wysiwyg'); $aJsVars['sJsCookiePath'] = Phpfox::getParam('core.cookie_path'); $aJsVars['sJsCookieDomain'] = Phpfox::getParam('core.cookie_domain'); $aJsVars['sJsCookiePrefix'] = Phpfox::getParam('core.session_prefix'); $aJsVars['bPhotoTheaterMode'] = Phpfox::isModule('photo') ? Phpfox::getParam('photo.view_photos_in_theater_mode') : false; $aJsVars['bUseHTML5Video'] = false; // ((Phpfox::isModule('video') && Phpfox::getParam('video.upload_for_html5')) ? true : false); if (Phpfox::isAdmin()) { $aJsVars['sAdminCPLocation'] = Phpfox::getParam('admincp.admin_cp'); } else { $aJsVars['sAdminCPLocation'] = ''; } if (Phpfox::isModule('notification')) { $aJsVars['notification.notify_ajax_refresh'] = Phpfox::getParam('notification.notify_ajax_refresh'); } $sLocalDatepicker = PHPFOX_STATIC . 'jscript/jquery/locale/jquery.ui.datepicker-' . strtolower(Phpfox_Locale::instance()->getLangId()) . '.js'; if (file_exists($sLocalDatepicker)) { $sFile = str_replace(PHPFOX_STATIC . 'jscript/', '', $sLocalDatepicker); $this->setHeader(array($sFile => 'static_script')); } /* Only in a few cases will we want to add the visitor's IP */ if (Phpfox::getParam('core.google_api_key') != '' && Phpfox::getParam('core.ip_infodb_api_key')) { // $aJsVars['sIP'] = Phpfox_Request::instance()->getIp(); } $aJsVars['bEnableMicroblogSite'] = Phpfox::isModule('microblog') ? Phpfox::getParam('microblog.enable_microblog_site') : false; } ($sPlugin = Phpfox_Plugin::get('template_getheader_setting')) ? eval($sPlugin) : false; if (Phpfox::isModule('input') && false) { $this->setHeader('cache', array('browse.css' => 'style_css')); } $sJs .= "\t\t\tvar oParams = {"; $iCnt = 0; foreach ($aJsVars as $sVar => $sValue) { $iCnt++; if ($iCnt != 1) { $sJs .= ","; } if (is_bool($sValue)) { $sJs .= "'{$sVar}': " . ($sValue ? 'true' : 'false'); } elseif (is_numeric($sValue)) { $sJs .= "'{$sVar}': " . $sValue; } else { $sJs .= "'{$sVar}': '" . str_replace("'", "\\'", $sValue) . "'"; } } $sJs .= "};\n"; if (!defined('PHPFOX_INSTALLER')) { $aLocaleVars = array('core.are_you_sure', 'core.yes', 'core.no', 'core.save', 'core.cancel', 'core.go_advanced', 'core.processing', 'emoticon.emoticons', 'attachment.attach_files', 'core.close', 'core.language_packages', 'core.move_this_block', 'core.uploading', 'language.loading', 'core.saving', 'core.loading_text_editor', 'core.quote', 'core.loading'); if (Phpfox::isModule('im') && Phpfox::getParam('im.enable_im_in_footer_bar')) { $aLocaleVars[] = 'im.find_your_friends'; } ($sPlugin = Phpfox_Plugin::get('template_getheader_language')) ? eval($sPlugin) : false; $sJs .= "\t\t\tvar oTranslations = {"; $iCnt = 0; foreach ($aLocaleVars as $sValue) { $aParts = explode('.', $sValue); if ($aParts[0] != 'core' && !Phpfox::isModule($aParts[0])) { continue; } $iCnt++; if ($iCnt != 1) { $sJs .= ","; } $sJs .= "'{$sValue}': '" . html_entity_decode(str_replace("'", "\\'", Phpfox::getPhrase($sValue)), null, 'UTF-8') . "'"; } $sJs .= "};\n"; $aModules = Phpfox_Module::instance()->getModules(); $sJs .= "\t\t\tvar oModules = {"; $iCnt = 0; foreach ($aModules as $sModule => $iModuleId) { $iCnt++; if ($iCnt != 1) { $sJs .= ","; } $sJs .= "'{$sModule}': true"; } $sJs .= "};\n"; } if (count($this->_aImages)) { $sJs .= "\t\t\tvar oJsImages = {"; foreach ($this->_aImages as $sKey => $sImage) { $sJs .= $sKey . ': \'' . $sImage . '\','; } $sJs = rtrim($sJs, ','); $sJs .= "};\n"; } /* if (count($this->_aEditor) && isset($this->_aEditor['active']) && $this->_aEditor['active']) { */ $aEditorButtons = Phpfox::getLib('editor')->getButtons(); $iCnt = 0; $sJs .= "\t\t\tvar oEditor = {"; if (count($this->_aEditor) && isset($this->_aEditor['active']) && $this->_aEditor['active']) { foreach ($this->_aEditor as $sVar => $mValue) { $iCnt++; if ($iCnt != 1) { $sJs .= ","; } $sJs .= "'{$sVar}': " . (is_bool($mValue) ? $mValue === true ? 'true' : 'false' : "'{$mValue}'") . ""; } $sJs .= ", "; } $sJs .= "images:["; foreach ($aEditorButtons as $mEditorButtonKey => $aEditorButton) { $sJs .= "{"; foreach ($aEditorButton as $sEditorButtonKey => $sEditorButtonValue) { $sJs .= "" . $sEditorButtonKey . ": '" . $sEditorButtonValue . "',"; } $sJs = rtrim($sJs, ',') . "},"; } $sJs = rtrim($sJs, ',') . "]"; $sJs .= "};\n"; // } if (!defined('PHPFOX_INSTALLER') && Phpfox::getParam('core.load_jquery_from_google_cdn')) { $sData .= "\t\t" . '<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/' . Phpfox::getParam('core.jquery_google_cdn_version') . '/jquery.min.js"></script>' . "\n"; } } if (PHPFOX_IS_AJAX_PAGE) { $this->_aCacheHeaders = array(); } $bIsHttpsPage = false; if (!defined('PHPFOX_INSTALLER') && Phpfox::getParam('core.force_https_secure_pages')) { if (in_array(str_replace('mobile.', '', Phpfox_Module::instance()->getFullControllerName()), Phpfox::getService('core')->getSecurePages()) && (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on')) { $bIsHttpsPage = true; } } $aSubCache = array(); $sStyleCacheData = ''; $sJsCacheData = ''; $aCacheJs = array(); $aCacheCSS = array(); $this->_sFooter = ''; if (Phpfox::isUser()) { $image = Phpfox_Image_Helper::instance()->display(['user' => Phpfox::getUserBy(), 'suffix' => '_50_square']); $imageUrl = Phpfox_Image_Helper::instance()->display(['user' => Phpfox::getUserBy(), 'suffix' => '_50_square', 'return_url' => true]); // if (strpos($image, 'no_image_user')) { $image = htmlspecialchars($image); $image = str_replace(['<', '>'], ['<', '>'], $image); // } $this->_sFooter .= '<div id="auth-user" data-image-url="' . str_replace("\"", '\'', $imageUrl) . '" data-user-name="' . Phpfox::getUserBy('user_name') . '" data-id="' . Phpfox::getUserId() . '" data-name="' . Phpfox::getUserBy('full_name') . '" data-image="' . $image . '"></div>'; } $sJs .= "\t\t\t" . 'var $Behavior = {}, $Ready = $Ready = function(callback) {$Behavior[callback.toString().length] = callback;}, $Events = {}, $Event = function(callback) {$Events[callback.toString().length] = callback;};' . "\n"; $sJs .= "\t\t\t" . 'var $Core = {};' . "\n"; $aCustomCssFile = array(); foreach ($this->_aHeaders as $aHeaders) { if (!is_array($aHeaders)) { $aHeaders = array($aHeaders); } foreach ($aHeaders as $mKey => $mValue) { $sQmark = strpos($mKey, '?') ? '&' : '?'; if (is_numeric($mKey)) { if ($mValue === null) { continue; } if ($bReturnArray) { $aArrayData[] = $mValue; } else { if (is_string($mValue) && (strpos($mValue, '.js') !== false || strpos($mValue, 'javascript') !== false)) { if (strpos($mValue, 'RecaptchaOptions')) { $sData .= "\t\t" . $mValue . "\n"; } else { $this->_sFooter .= "\t\t" . $mValue; } } else { if (is_string($mValue)) { $sData .= "\t\t" . $mValue . "\n"; } else { $sData .= "\t\t" . implode($mValue) . "\n"; } } } } else { if ($mKey == 'master') { $aMaster = array('css' => array(), 'jscript' => array()); foreach ($mValue as $sValKey => $sValVal) { if (strpos($sValKey, '.css') !== false) { if ($sValVal == 'style_css') { $aMaster['css'][] = 'theme' . PHPFOX_DS . 'frontend' . PHPFOX_DS . $this->getThemeFolder() . PHPFOX_DS . 'style' . PHPFOX_DS . $this->getStyleFolder() . PHPFOX_DS . 'css' . PHPFOX_DS . $sValKey; } else { if (strpos($sValVal, 'module_') !== false) { $aMaster['css'][] = 'module' . PHPFOX_DS . str_replace('module_', '', $sValVal) . PHPFOX_DS . 'static' . PHPFOX_DS . 'css' . PHFPFOX_DS . $this->getThemeFolder() . PHPFOX_DS . $this->getStyleFolder() . PHPFOX_DS . $sValKey; } } } else { if (strpos($sValKey, '.js') !== false) { if ($sValVal == 'static_script') { $aMaster['jscript'][] = 'static' . PHPFOX_DS . 'jscript' . PHPFOX_DS . $sValKey; } else { if (strpos($sValVal, 'module_') !== false) { $aMaster['jscript'][] = 'module' . PHPFOX_DS . str_replace('module_', '', $sValVal) . PHPFOX_DS . 'static' . PHPFOX_DS . 'jscript' . PHPFOX_DS . $sValKey; } } } } } unset($this->_aHeaders[$mKey]); // just to avoid confusions $this->_aHeaders['master'] = $aMaster; } else { $bToHead = false; // This happens when the developer needs something to go to <head> if (is_array($mValue)) { $aKeyHead = array_keys($mValue); $aKeyValue = array_values($mValue); $bToHead = $mKey == 'head'; $mKey = array_pop($aKeyHead); $mValue = array_pop($aKeyValue); } switch ($mValue) { case 'style_script': if (isset($aSubCache[$mKey][$mValue])) { continue; } if ($bReturnArray) { $aArrayData[] = $this->getStyle('jscript', $mKey); } else { //$sJsCacheData .= str_replace(Phpfox::getParam('core.path'), '', $this->getStyle('jscript', $mKey)) . ','; if ($bToHead == 'head') { $aCacheCSS[] = str_replace(Phpfox::getParam('core.path'), '', $this->getStyle('jscript', $mKey)); } else { $aCacheJs[] = str_replace(Phpfox::getParam('core.path'), '', $this->getStyle('jscript', $mKey)); } } break; case 'style_css': $bCustomStyle = false; if ($bCustomStyle === false) { if ($bReturnArray) { $aArrayData[] = $this->getStyle('css', $mKey); } else { $aCacheCSS[] = str_replace(Phpfox::getParam('core.path'), '', $this->getStyle('css', $mKey)); } } else { if (defined('PHPFOX_IS_HOSTED_SCRIPT')) { $bLoadCustomThemeOverwrite = true; } else { if ($bReturnArray) { $aArrayData[] = Phpfox::getParam('core.url_file') . 'static/' . $this->_aTheme['style_id'] . '_' . $mKey; } else { if (isset($this->_aCacheHeaders[$mKey])) { // $sStyleCacheData .= str_replace(Phpfox::getParam('core.path'), '', Phpfox::getParam('core.url_file')) . 'static/' . $this->_aTheme['style_id'] . '_' . $mKey . ','; $aCustomCssFile[] = Phpfox::getParam('core.url_file') . 'static/' . $this->_aTheme['style_id'] . '_' . $mKey . ''; } else { if ($bIsHttpsPage) { //$sData .= "\t\t" . '<link rel="stylesheet" type="text/css" href="' . Phpfox::getParam('core.url_file') . 'static/' . $this->_aTheme['style_id'] . '_secure_' . $mKey . '?v=' . $iVersion . '" />' . "\n"; $aCustomCssFile[] = Phpfox::getParam('core.url_file') . 'static/' . $this->_aTheme['style_id'] . '_secure_' . $mKey; } else { //$sData .= "\t\t" . '<link rel="stylesheet" type="text/css" href="' . Phpfox::getParam('core.url_file') . 'static/' . $this->_aTheme['style_id'] . '_' . $mKey . '?v=' . $iVersion . '" />' . "\n"; $aCustomCssFile[] = Phpfox::getParam('core.url_file') . 'static/' . $this->_aTheme['style_id'] . '_' . $mKey; } } } } } break; case 'static_script': if (isset($aSubCache[$mKey][$mValue])) { continue; } if (!defined('PHPFOX_INSTALLER') && Phpfox::getParam('core.load_jquery_from_google_cdn')) { if ($mKey == 'jquery/ui.js' || $mKey == 'jquery/jquery.js') { if ($mKey == 'jquery/ui.js') { $this->_sFooter .= "\t\t" . '<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/' . Phpfox::getParam('core.jquery_ui_google_cdn_version') . '/jquery-ui.min.js"></script>' . "\n"; } continue; } } if ($bReturnArray) { $aArrayData[] = Phpfox::getParam('core.url_static_script') . $mKey; } else { if (isset($this->_aCacheHeaders[$mKey])) { // $sJsCacheData .= $mKey . ','; if ($bToHead == 'head') { $aCacheCSS[] = 'static' . PHPFOX_DS . 'jscript' . PHPFOX_DS . $mKey; } else { $aCacheJs[] = 'static' . PHPFOX_DS . 'jscript' . PHPFOX_DS . $mKey; } } else { //$sData .= "\t\t" . '<script type="text/javascript" src="' . Phpfox::getParam('core.url_static_script') . $mKey . $sQmark . 'v=' . $iVersion . '"></script>' . "\n"; if ($bToHead == 'head') { $aCacheCSS[] = 'static/jscript/' . $mKey; } else { $aCacheJs[] = 'static/jscript/' . $mKey; } } } break; default: if (preg_match('/module/i', $mValue)) { $aParts = explode('_', $mValue); if (isset($aParts[1]) && Phpfox::isModule($aParts[1])) { if (substr($mKey, -3) == '.js') { if ($bReturnArray) { $aArrayData[] = Phpfox::getParam('core.path') . 'module/' . $aParts[1] . '/static/jscript/' . $mKey; } else { if (isset($this->_aCacheHeaders[$mKey])) { //$sJsCacheData .= 'module/' . $aParts[1] . '/static/jscript/' . $mKey . ','; $aCacheJs[] = 'module/' . $aParts[1] . '/static/jscript/' . $mKey; } else { /* if (defined('PHPFOX_IS_HOSTED_SCRIPT')) { $sData .= "\t\t" . '<script type="text/javascript" src="' . Phpfox::getCdnPath() . 'module/' . $aParts[1] . '/static/jscript/' . $mKey . $sQmark . 'v=' . $iVersion . '"></script>' . "\n"; } else { */ //$sData .= "\t\t" . '<script type="text/javascript" src="' . Phpfox::getParam('core.path') . 'module/' . $aParts[1] . '/static/jscript/' . $mKey . $sQmark . 'v=' . $iVersion . '"></script>' . "\n"; $aCacheJs[] = 'module/' . $aParts[1] . '/static/jscript/' . $mKey; // } } } } elseif (substr($mKey, -4) == '.css') { $aCacheCSS[] = str_replace(Phpfox::getParam('core.path'), '', $this->getStyle('css', $mKey, $aParts[1])); $bCustomStyle = false; if ($bCustomStyle === false) { if ($bReturnArray) { //$aArrayData[] = $this->getStyle('css', $mKey, $aParts[1]); $aCachesCSS[] = str_replace(Phpfox::getParam('core.path'), '', $this->getStyle('css', $mKey, $aParts[1])); } else { /* if (defined('PHPFOX_IS_HOSTED_SCRIPT')) { $sData .= "\t\t" . '<link rel="stylesheet" type="text/css" href="' . str_replace(Phpfox::getParam('core.path'), Phpfox::getCdnPath(), $this->getStyle('css', $mKey, $aParts[1])) . $sQmark . 'v=' . $iVersion . '" />' . "\n"; } else { */ $aCachesCSS[] = str_replace(Phpfox::getParam('core.path'), '', $this->getStyle('css', $mKey, $aParts[1])); // } } } else { //$sStyleCacheData .= str_replace(Phpfox::getParam('core.path'), '', Phpfox::getParam('core.url_file')) . 'static/' . $this->_aTheme['style_id'] . '_' . $aParts[1] . '_' . $mKey . ','; $aCachesCSS[] = str_replace(Phpfox::getParam('core.path'), '', Phpfox::getParam('core.url_file')) . 'static/' . $this->_aTheme['style_id'] . '_' . $aParts[1] . '_' . $mKey; } } } } break; } $aSubCache[$mKey][$mValue] = true; } } } } $sCacheData = ''; $sCacheData .= "\n\t\t<script type=\"text/javascript\">\n"; $sCacheData .= $sJs; $sCacheData .= "\t\t</script>"; if (!empty($sStyleCacheData)) { $sCacheData .= "\n\t\t" . '<link rel="stylesheet" type="text/css" href="' . Phpfox::getParam('core.url_static') . 'gzip.php?t=css&s=' . $sStylePath . '&f=' . rtrim($sStyleCacheData, ',') . '&v=' . $iVersion . '" />'; } if (!empty($sJsCacheData)) { $sCacheData .= "\n\t\t" . '<script type="text/javascript" src="' . Phpfox::getParam('core.url_static') . 'gzip.php?t=js&f=' . rtrim($sJsCacheData, ',') . '&v=' . $iVersion . '"></script>'; } if (!empty($sCacheData)) { $sData = preg_replace('/<link rel="shortcut icon" type="image\\/x-icon" href="(.*?)" \\/>/i', '<link rel="shortcut icon" type="image/x-icon" href="\\1" />' . $sCacheData, $sData); } if ($bReturnArray) { $sData = ''; } $aCacheJs = array_unique($aCacheJs); $aSubCacheCheck = array(); foreach ($aCacheCSS as $sFile) { if (defined('PHPFOX_INSTALLER')) { $sData .= "\t\t" . '<link rel="stylesheet" type="text/css" href="' . $sFile . $sQmark . 'v=' . $iVersion . '" />' . "\n"; } else { if (isset($aSubCacheCheck[$sFile])) { continue; } $aSubCacheCheck[$sFile] = true; $sData .= "\t\t" . '<link rel="stylesheet" type="text/css" href="' . Phpfox::getParam('core.path') . $sFile . $sQmark . 'v=' . $iVersion . '" />' . "\n"; } } foreach ($aCacheJs as $sFile) { if (defined('PHPFOX_INSTALLER')) { $this->_sFooter .= "\t\t" . '<script type="text/javascript" src="../' . $sFile . $sQmark . 'v=' . $iVersion . '"></script>' . "\n"; } else { $this->_sFooter .= "\t\t" . '<script type="text/javascript" src="' . Phpfox::getParam('core.path') . $sFile . $sQmark . 'v=' . $iVersion . '"></script>' . "\n"; } } if (!defined('PHPFOX_INSTALLER')) { $this->_sFooter .= "\t\t" . '<script type="text/javascript"> $Core.init(); </script>' . "\n"; } if (count($this->_aPhrases)) { $sData .= "\n\t\t<script type=\"text/javascript\">\n\t\t"; foreach ($this->_aPhrases as $sVar => $sPhrase) { $sPhrase = html_entity_decode($sPhrase, null, 'UTF-8'); $sData .= "\t\t\toTranslations['{$sVar}'] = '" . str_replace("'", "\\'", $sPhrase) . "';\n"; } $sData .= "\t\t</script>\n"; } if (!defined('PHPFOX_INSTALLER') && !Phpfox::isAdminPanel()) { $Request = \Phpfox_Request::instance(); if ($Request->segment(1) == 'theme' && $Request->segment(2) == 'demo') { $sData .= '<link href="' . Phpfox::getParam('core.path') . 'theme/default/flavor/default.css?v=' . Phpfox::internalVersion() . '" rel="stylesheet">'; } else { $Theme = $this->_theme->get(); $sData .= '<link href="' . Phpfox::getParam('core.path') . 'themes/' . $Theme->folder . '/flavor/' . $Theme->flavor_folder . '.css?v=' . Phpfox::internalVersion() . '" rel="stylesheet">'; } } if (!defined('PHPFOX_INSTALLER')) { $Apps = new Core\App(); foreach ($Apps->all() as $App) { $assets = $App->path . 'assets/'; if (file_exists($assets . 'autoload.js')) { $url = str_replace(PHPFOX_DIR_SITE, Phpfox::getParam('core.path'), $assets) . 'autoload.js'; $this->_sFooter .= '<script src="' . $url . '?v=' . Phpfox::internalVersion() . '"></script>'; } if (file_exists($assets . 'autoload.css')) { $url = str_replace(PHPFOX_DIR_SITE, Phpfox::getParam('core.path'), $assets) . 'autoload.css'; $sData .= '<link href="' . $url . '?v=' . Phpfox::internalVersion() . '" rel="stylesheet">'; } } if (!Phpfox::isAdminPanel() && is_object($this->_theme)) { $asset = $this->_theme->get()->getPath() . 'assets/autoload.js'; if (file_exists($asset)) { $url = str_replace([PHPFOX_DIR_SITE, PHPFOX_DIR], Phpfox::getParam('core.path'), $asset); $this->_sFooter .= '<script src="' . $url . '?v=' . Phpfox::internalVersion() . '"></script>'; } } } if (isset($this->_meta['head'])) { $sData .= $this->_meta['head']; if (Phpfox::isAdmin()) { $this->_sFooter .= '<script>var page_editor_meta = ' . json_encode(['head' => $this->_meta['head']]) . ';</script>'; } } if ($bReturnArray) { $aArrayData[] = $sData; return $aArrayData; } // Convert meta data $bHasNoDescription = false; if (count($this->_aMeta) && !PHPFOX_IS_AJAX_PAGE && !defined('PHPFOX_INSTALLER')) { $oPhpfoxParseOutput = Phpfox::getLib('parse.output'); $aFind = array('<', '>', '$'); $aReplace = array('<', '>', '&36;'); foreach ($this->_aMeta as $sMeta => $sMetaValue) { $sMetaValue = str_replace($aFind, $aReplace, $sMetaValue); $sMetaValue = strip_tags($sMetaValue); $sMetaValue = str_replace(array("\n", "\r"), "", $sMetaValue); $bIsCustomMeta = false; switch ($sMeta) { case 'keywords': if (isset($this->_meta['keywords'])) { $sMetaValue = $this->_meta['keywords']; continue; } $sKeywordSearch = Phpfox::getParam('core.words_remove_in_keywords'); if (!empty($sKeywordSearch)) { $aKeywordsSearch = array_map('trim', explode(',', $sKeywordSearch)); } $sMetaValue = $oPhpfoxParseOutput->shorten($oPhpfoxParseOutput->clean($sMetaValue), Phpfox::getParam('core.meta_keyword_limit')); $sMetaValue = trim(rtrim(trim($sMetaValue), ',')); $aParts = explode(',', $sMetaValue); $sMetaValue = ''; $aKeywordCache = array(); foreach ($aParts as $sPart) { $sPart = trim($sPart); if (isset($aKeywordCache[$sPart])) { continue; } if (isset($aKeywordsSearch) && in_array(strtolower($sPart), array_map('strtolower', $aKeywordsSearch))) { continue; } $sMetaValue .= $sPart . ', '; $aKeywordCache[$sPart] = true; } $sMetaValue = rtrim(trim($sMetaValue), ','); break; case 'description': if (isset($this->_meta['description'])) { $sMetaValue = $this->_meta['description']; continue; } $bHasNoDescription = true; $sMetaValue = $oPhpfoxParseOutput->shorten($oPhpfoxParseOutput->clean($sMetaValue), Phpfox::getParam('core.meta_description_limit')); break; case 'robots': $bIsCustomMeta = false; break; default: $bIsCustomMeta = true; break; } $sMetaValue = str_replace('"', '\\"', $sMetaValue); $sMetaValue = Phpfox_Locale::instance()->convert($sMetaValue); $sMetaValue = html_entity_decode($sMetaValue, null, 'UTF-8'); $sMetaValue = str_replace(array('<', '>'), '', $sMetaValue); if ($bIsCustomMeta) { if ($sMeta == 'og:description') { $sMetaValue = $oPhpfoxParseOutput->shorten($oPhpfoxParseOutput->clean($sMetaValue), Phpfox::getParam('core.meta_description_limit')); } switch ($sMeta) { case 'canonical': $sCanonical = $sMetaValue; $sCanonical = preg_replace('/\\/when\\_([a-zA-Z0-9\\-]+)\\//i', '/', $sCanonical); $sCanonical = preg_replace('/\\/show\\_([a-zA-Z0-9\\-]+)\\//i', '/', $sCanonical); $sCanonical = preg_replace('/\\/view\\_\\//i', '/', $sCanonical); if (Phpfox::isMobile()) { if (Phpfox::getParam('core.url_rewrite') == '1') { $sCanonical = str_replace(Phpfox::getParam('core.path') . 'mobile/', Phpfox::getParam('core.path'), $sMetaValue); } elseif (Phpfox::getParam('core.url_rewrite') == '2') { $sCanonical = str_replace('?' . PHPFOX_GET_METHOD . '=/mobile/', '?' . PHPFOX_GET_METHOD . '=/', $sMetaValue); } } $sData .= "\t\t<link rel=\"canonical\" href=\"{$sCanonical}\" />\n"; if (!Phpfox::isMobile()) { $sMobileReplace = ''; if (Phpfox::getParam('core.url_rewrite') == '1') { $sMobileReplace = str_replace(Phpfox::getParam('core.path'), Phpfox::getParam('core.path') . 'mobile/', $sCanonical); } elseif (Phpfox::getParam('core.url_rewrite') == '2') { $sMobileReplace = str_replace('?' . PHPFOX_GET_METHOD . '=/', '?' . PHPFOX_GET_METHOD . '=/mobile/', $sCanonical); } $sData .= "\t\t<link rel=\"alternate\" media=\"only screen and (max-width: 640px)\" href=\"{$sMobileReplace}\" />\n"; } break; default: $sData .= "\t\t<meta property=\"{$sMeta}\" content=\"{$sMetaValue}\" />\n"; break; } } else { if (strpos($sData, 'meta name="' . $sMeta . '"') !== false) { $sData = preg_replace("/<meta name=\"{$sMeta}\" content=\"(.*?)\" \\/>\n\t/i", "<meta" . ($sMeta == 'description' ? ' property="og:description" ' : '') . " name=\"{$sMeta}\" content=\"" . $sMetaValue . "\" />\n\t", $sData); } else { $sData = preg_replace('/<meta/', '<meta name="' . $sMeta . '" content="' . $sMetaValue . '" />' . "\n\t\t" . '<meta', $sData, 1); } } } if (!$bHasNoDescription) { $sData .= "\t\t" . '<meta name="description" content="' . Phpfox::getLib('parse.output')->clean(Phpfox_Locale::instance()->convert(Phpfox::getParam('core.description'))) . '" />' . "\n"; } } // Clear from memory $this->_aHeaders = array(); $this->_aMeta = array(); return $sData; }
/** * Controller */ public function process() { Phpfox::isUser(true); header("Cache-Control: no-cache, must-revalidate"); header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); list($bIsRegistration, $sNextUrl) = $this->url()->isRegistration(3); ($sPlugin = Phpfox_Plugin::get('user.component_controller_photo_1')) ? eval($sPlugin) : false; $bIsProcess = false; if ($this->request()->get('req3') == 'process') { $bIsProcess = true; /* if (($sStep = $this->request()->get('step'))) { $bIsProcess = true; $aCacheImage = unserialize(base64_decode(urldecode($sStep))); } */ } if (isset($_SERVER['HTTP_X_FILE_NAME'])) { define('PHPFOX_HTML5_PHOTO_UPLOAD', true); } ($sPlugin = Phpfox_Plugin::get('user.component_controller_photo_2')) ? eval($sPlugin) : false; if (($aVals = $this->request()->getArray('val')) || isset($_SERVER['HTTP_X_FILE_NAME'])) { $aImage = Phpfox_File::instance()->load('image', array('jpg', 'gif', 'png'), Phpfox::getUserParam('user.max_upload_size_profile_photo') === 0 ? null : Phpfox::getUserParam('user.max_upload_size_profile_photo') / 1024); if (!empty($aImage['name'])) { $iUserId = Phpfox::getUserId(); if (isset($aVals['is_iframe']) && Phpfox::isAdmin()) { $iUserId = (int) $aVals['user_id']; } if (($aImage = Phpfox::getService('user.process')->uploadImage($iUserId, isset($aVals['is_iframe']) ? true : (Phpfox::getUserParam('user.force_cropping_tool_for_photos') ? false : true))) !== false) { if (isset($aVals['is_iframe'])) { $sImage = Phpfox::getLib('image.helper')->display(array('server_id' => $aImage['server_id'], 'path' => 'core.url_user', 'file' => $aImage['user_image'], 'suffix' => '_75', 'max_width' => 75, 'max_height' => 75, 'thickbox' => true, 'time_stamp' => true)); echo "<script type=\"text/javascript\">window.parent.document.getElementById('js_user_photo_" . $iUserId . "').innerHTML = '{$sImage}'; window.parent.tb_remove();</script>"; exit; } else { if (Phpfox::getUserParam('user.force_cropping_tool_for_photos')) { $this->url()->send('user.photo.process', array('step' => urlencode(base64_encode(serialize($aImage))))); } else { /* if ($bIsRegistration === true) { $this->url()->send($sNextUrl, null, Phpfox::getPhrase('user.profile_photo_successfully_uploaded')); } else { $this->url()->send('user.photo', null, Phpfox::getPhrase('user.profile_photo_successfully_uploaded')); } */ if (isset($_SERVER['HTTP_X_FILE_NAME'])) { return ['redirect' => $this->url()->makeUrl('user.photo.process')]; } $this->url()->send('user.photo.process'); } } } } } if (isset($aVals['is_iframe'])) { exit; } $sImage = Phpfox_Image_Helper::instance()->display(array('server_id' => Phpfox::getUserBy('server_id'), 'title' => Phpfox::getUserBy('full_name'), 'path' => 'core.url_user', 'file' => Phpfox::getUserBy('user_image'), 'suffix' => '', 'max_width' => 400, 'max_height' => 400, 'no_default' => true, 'time_stamp' => true, 'id' => 'user_profile_photo', 'class' => 'border')); // $sImage = str_replace('<img', '<img ', $sImage); /* $sImageThumb = Phpfox::getLib('image.helper')->display(array( 'server_id' => Phpfox::getUserBy('server_id'), 'title' => Phpfox::getUserBy('full_name'), 'path' => 'core.url_user', 'file' => Phpfox::getUserBy('user_image'), 'suffix' => '_120' . (Phpfox::getParam('core.keep_non_square_images') ? '_square' : ''), 'max_width' => 120, 'max_height' => 120, 'no_default' => true, 'time_stamp' => true, 'class' => 'border' ) ); */ $sImageAvatar = Phpfox::getLib('image.helper')->display(array('server_id' => Phpfox::getUserBy('server_id'), 'title' => Phpfox::getUserBy('full_name'), 'path' => 'core.url_user', 'file' => Phpfox::getUserBy('user_image'), 'suffix' => '_50_square', 'max_width' => 75, 'max_height' => 75, 'no_default' => true, 'time_stamp' => true, 'class' => 'border')); if (Phpfox::getUserBy('user_image') && !empty($sImage)) { preg_match("/src=\"(.*?)\"/", $sImage, $aMatches); list($width, $height) = @getimagesize($aMatches[1]); list($newHeight, $newWidth) = Phpfox_Image_Helper::instance()->getNewSize([$aMatches[1]], 400, 400, $width, $height); $sImage = str_replace('<img', '<img width="' . $newWidth . '" height="' . $newHeight . '" ', $sImage); $this->template()->setHeader('cache', array('jquery/plugin/jquery.crop.js' => 'static_script', 'jquery/plugin/imgnotes/jquery.imgareaselect.js' => 'static_script', 'imgareaselect-default.css' => 'style_css', '<script type="text/javascript">$Behavior.initPhotoCrop = function(){$Core.photo_crop.init({width: 75, height: 75, image_width: ' . $newWidth . ', image_height: ' . $newHeight . '}); };</script>'))->assign(array('iImageHeight' => $newHeight, 'iImageWidth' => $newWidth)); } $sPageTitle = $bIsRegistration ? Phpfox::getPhrase('user.upload_profile_picture') : Phpfox::getPhrase('user.edit_profile_picture'); ($sPlugin = Phpfox_Plugin::get('user.component_controller_photo_3')) ? eval($sPlugin) : false; $this->template()->setTitle($sPageTitle)->setBreadcrumb($sPageTitle)->setFullSite()->setPhrase(array('core.select_a_file_to_upload'))->setHeader(array('progress.js' => 'static_script', '<script type="text/javascript">$Behavior.changeUserPhoto = function(){ if ($Core.exists(\'#js_photo_form_holder\')) { oProgressBar = {holder: \'#js_photo_form_holder\', progress_id: \'#js_progress_bar\', uploader: \'#js_progress_uploader\', add_more: false, max_upload: 1, total: 1, frame_id: \'js_upload_frame\', file_id: \'image\'}; $Core.progressBarInit(); } }</script>'))->assign(array('sProfileImage' => $sImage, 'sImageAvatar' => $sImageAvatar, 'sProfileImage2' => str_replace('id="user_profile_photo"', 'id="js_profile_photo_preview"', $sImage), 'bIsRegistration' => $bIsRegistration, 'sNextUrl' => $this->url()->makeUrl($sNextUrl), 'bIsProcess' => $bIsProcess, 'iMaxFileSize' => Phpfox::getUserParam('user.max_upload_size_profile_photo') === 0 ? null : Phpfox::getUserParam('user.max_upload_size_profile_photo') / 1024 * 1048576)); }