本文整理汇总了PHP中changeBasename函数的典型用法代码示例。如果您正苦于以下问题:PHP changeBasename函数的具体用法?PHP changeBasename怎么用?PHP changeBasename使用的例子?那么, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了changeBasename函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: setCalculatedFields
/**
* Set fields that need additional manipulation after retrieval.
*
* @param $User
* @throws Exception
*/
public function setCalculatedFields(&$User)
{
if ($v = val('Attributes', $User)) {
if (is_string($v)) {
setValue('Attributes', $User, @unserialize($v));
}
}
if ($v = val('Permissions', $User)) {
if (is_string($v)) {
setValue('Permissions', $User, @unserialize($v));
}
}
if ($v = val('Preferences', $User)) {
if (is_string($v)) {
setValue('Preferences', $User, @unserialize($v));
}
}
if ($v = val('Photo', $User)) {
if (!isUrl($v)) {
$PhotoUrl = Gdn_Upload::url(changeBasename($v, 'n%s'));
} else {
$PhotoUrl = $v;
}
setValue('PhotoUrl', $User, $PhotoUrl);
}
if ($v = val('AllIPAddresses', $User)) {
if (is_string($v)) {
$IPAddresses = explode(',', $v);
foreach ($IPAddresses as $i => $IPAddress) {
$IPAddresses[$i] = ForceIPv4($IPAddress);
}
setValue('AllIPAddresses', $User, $IPAddresses);
}
}
setValue('_CssClass', $User, '');
if ($v = val('Banned', $User)) {
setValue('_CssClass', $User, 'Banned');
}
$this->EventArguments['User'] =& $User;
$this->fireEvent('SetCalculatedFields');
}
示例2: init
/**
*
*
* @param $Path
* @param $Controller
*/
public function init($Path, $Controller)
{
$Smarty = $this->smarty();
// Get a friendly name for the controller.
$ControllerName = get_class($Controller);
if (StringEndsWith($ControllerName, 'Controller', true)) {
$ControllerName = substr($ControllerName, 0, -10);
}
// Get an ID for the body.
$BodyIdentifier = strtolower($Controller->ApplicationFolder . '_' . $ControllerName . '_' . Gdn_Format::alphaNumeric(strtolower($Controller->RequestMethod)));
$Smarty->assign('BodyID', htmlspecialchars($BodyIdentifier));
//$Smarty->assign('Config', Gdn::Config());
// Assign some information about the user.
$Session = Gdn::session();
if ($Session->isValid()) {
$User = array('Name' => $Session->User->Name, 'Photo' => '', 'CountNotifications' => (int) val('CountNotifications', $Session->User, 0), 'CountUnreadConversations' => (int) val('CountUnreadConversations', $Session->User, 0), 'SignedIn' => true);
$Photo = $Session->User->Photo;
if ($Photo) {
if (!IsUrl($Photo)) {
$Photo = Gdn_Upload::url(changeBasename($Photo, 'n%s'));
}
} else {
if (function_exists('UserPhotoDefaultUrl')) {
$Photo = UserPhotoDefaultUrl($Session->User, 'ProfilePhoto');
} elseif ($ConfigPhoto = C('Garden.DefaultAvatar')) {
$Photo = Gdn_Upload::url($ConfigPhoto);
} else {
$Photo = asset('/applications/dashboard/design/images/defaulticon.png', true);
}
}
$User['Photo'] = $Photo;
} else {
$User = false;
/*array(
'Name' => '',
'CountNotifications' => 0,
'SignedIn' => FALSE);*/
}
$Smarty->assign('User', $User);
// Make sure that any datasets use arrays instead of objects.
foreach ($Controller->Data as $Key => $Value) {
if ($Value instanceof Gdn_DataSet) {
$Controller->Data[$Key] = $Value->resultArray();
} elseif ($Value instanceof stdClass) {
$Controller->Data[$Key] = (array) $Value;
}
}
$BodyClass = val('CssClass', $Controller->Data, '', true);
$Sections = Gdn_Theme::section(null, 'get');
if (is_array($Sections)) {
foreach ($Sections as $Section) {
$BodyClass .= ' Section-' . $Section;
}
}
$Controller->Data['BodyClass'] = $BodyClass;
// Set the current locale for themes to take advantage of.
$Locale = Gdn::locale()->Locale;
$CurrentLocale = array('Key' => $Locale, 'Lang' => str_replace('_', '-', $Locale));
if (class_exists('Locale')) {
$CurrentLocale['Language'] = Locale::getPrimaryLanguage($Locale);
$CurrentLocale['Region'] = Locale::getRegion($Locale);
$CurrentLocale['DisplayName'] = Locale::getDisplayName($Locale, $Locale);
$CurrentLocale['DisplayLanguage'] = Locale::getDisplayLanguage($Locale, $Locale);
$CurrentLocale['DisplayRegion'] = Locale::getDisplayRegion($Locale, $Locale);
}
$Smarty->assign('CurrentLocale', $CurrentLocale);
$Smarty->assign('Assets', (array) $Controller->Assets);
$Smarty->assign('Path', Gdn::request()->path());
// Assign the controller data last so the controllers override any default data.
$Smarty->assign($Controller->Data);
$Smarty->Controller = $Controller;
// for smarty plugins
$Smarty->security = true;
$Smarty->security_settings['IF_FUNCS'] = array_merge($Smarty->security_settings['IF_FUNCS'], array('Category', 'CheckPermission', 'InSection', 'InCategory', 'MultiCheckPermission', 'GetValue', 'SetValue', 'Url'));
$Smarty->security_settings['MODIFIER_FUNCS'] = array_merge($Smarty->security_settings['MODIFIER_FUNCS'], array('sprintf'));
$Smarty->secure_dir = array($Path);
}
示例3: deleteDefaultAvatars
/**
* Deletes uploaded default avatars.
*
* @param string $avatar The avatar to delete.
*/
private function deleteDefaultAvatars($avatar = '')
{
if ($avatar && $this->isUploadedDefaultAvatar($avatar)) {
$upload = new Gdn_Upload();
$upload->delete(self::DEFAULT_AVATAR_FOLDER . '/' . basename($avatar));
$upload->delete(self::DEFAULT_AVATAR_FOLDER . '/' . basename(changeBasename($avatar, 'p%s')));
$upload->delete(self::DEFAULT_AVATAR_FOLDER . '/' . basename(changeBasename($avatar, 'n%s')));
}
}
示例4: img
// Define the current profile picture
$Picture = '';
if ($this->User->Photo != '') {
if (IsUrl($this->User->Photo)) {
$Picture = img($this->User->Photo, array('class' => 'ProfilePhotoLarge'));
} else {
$Picture = img(Gdn_Upload::url(changeBasename($this->User->Photo, 'p%s')), array('class' => 'ProfilePhotoLarge'));
}
}
// Define the current thumbnail icon
$Thumbnail = $this->User->Photo;
if (!$Thumbnail && function_exists('UserPhotoDefaultUrl')) {
$Thumbnail = UserPhotoDefaultUrl($this->User);
}
if ($Thumbnail && !isUrl($Thumbnail)) {
$Thumbnail = Gdn_Upload::url(changeBasename($Thumbnail, 'n%s'));
}
$Thumbnail = img($Thumbnail, array('alt' => t('Thumbnail')));
?>
<div class="SmallPopup FormTitleWrapper">
<h1 class="H"><?php
echo $this->data('Title');
?>
</h1>
<?php
echo $this->Form->open(array('enctype' => 'multipart/form-data'));
echo $this->Form->errors();
?>
<ul>
<?php
if ($Picture != '') {
示例5: comment
//.........这里部分代码省略.........
$this->View = 'preview';
} elseif (!$Draft) {
// If the comment was not a draft
// If Editing a comment
if ($Editing) {
// Just reload the comment in question
$this->Offset = 1;
$Comments = $this->CommentModel->getIDData($CommentID, array('Slave' => false));
$this->setData('Comments', $Comments);
$this->setData('Discussion', $Discussion);
// Load the discussion
$this->ControllerName = 'discussion';
$this->View = 'comments';
// Also define the discussion url in case this request came from the post screen and needs to be redirected to the discussion
$this->setJson('DiscussionUrl', DiscussionUrl($this->Discussion) . '#Comment_' . $CommentID);
} else {
// If the comment model isn't sorted by DateInserted or CommentID then we can't do any fancy loading of comments.
$OrderBy = valr('0.0', $this->CommentModel->orderBy());
// $Redirect = !in_array($OrderBy, array('c.DateInserted', 'c.CommentID'));
// $DisplayNewCommentOnly = $this->Form->getFormValue('DisplayNewCommentOnly');
// if (!$Redirect) {
// // Otherwise load all new comments that the user hasn't seen yet
// $LastCommentID = $this->Form->getFormValue('LastCommentID');
// if (!is_numeric($LastCommentID))
// $LastCommentID = $CommentID - 1; // Failsafe back to this new comment if the lastcommentid was not defined properly
//
// // Don't reload the first comment if this new comment is the first one.
// $this->Offset = $LastCommentID == 0 ? 1 : $this->CommentModel->GetOffset($LastCommentID);
// // Do not load more than a single page of data...
// $Limit = c('Vanilla.Comments.PerPage', 30);
//
// // Redirect if the new new comment isn't on the same page.
// $Redirect |= !$DisplayNewCommentOnly && PageNumber($this->Offset, $Limit) != PageNumber($Discussion->CountComments - 1, $Limit);
// }
// if ($Redirect) {
// // The user posted a comment on a page other than the last one, so just redirect to the last page.
// $this->RedirectUrl = Gdn::request()->Url("discussion/comment/$CommentID/#Comment_$CommentID", true);
// } else {
// // Make sure to load all new comments since the page was last loaded by this user
// if ($DisplayNewCommentOnly)
$this->Offset = $this->CommentModel->GetOffset($CommentID);
$Comments = $this->CommentModel->GetIDData($CommentID, array('Slave' => false));
$this->setData('Comments', $Comments);
$this->setData('NewComments', true);
$this->ClassName = 'DiscussionController';
$this->ControllerName = 'discussion';
$this->View = 'comments';
// }
// Make sure to set the user's discussion watch records
$CountComments = $this->CommentModel->getCount($DiscussionID);
$Limit = is_object($this->data('Comments')) ? $this->data('Comments')->numRows() : $Discussion->CountComments;
$Offset = $CountComments - $Limit;
$this->CommentModel->SetWatch($this->Discussion, $Limit, $Offset, $CountComments);
}
} else {
// If this was a draft save, notify the user about the save
$this->informMessage(sprintf(t('Draft saved at %s'), Gdn_Format::date()));
}
// And update the draft count
$UserModel = Gdn::userModel();
$CountDrafts = $UserModel->getAttribute($Session->UserID, 'CountDrafts', 0);
$this->setJson('MyDrafts', t('My Drafts'));
$this->setJson('CountDrafts', $CountDrafts);
}
}
} elseif ($this->Request->isPostBack()) {
throw new Gdn_UserException(t('Invalid CSRF token.', 'Invalid CSRF token. Please try again.'), 401);
} else {
// Load form
if (isset($this->Comment)) {
$this->Form->setData((array) $this->Comment);
}
}
// Include data for FireEvent
if (property_exists($this, 'Discussion')) {
$this->EventArguments['Discussion'] = $this->Discussion;
}
if (property_exists($this, 'Comment')) {
$this->EventArguments['Comment'] = $this->Comment;
}
$this->fireEvent('BeforeCommentRender');
if ($this->deliveryType() == DELIVERY_TYPE_DATA) {
if ($this->data('Comments') instanceof Gdn_DataSet) {
$Comment = $this->data('Comments')->firstRow(DATASET_TYPE_ARRAY);
if ($Comment) {
$Photo = $Comment['InsertPhoto'];
if (strpos($Photo, '//') === false) {
$Photo = Gdn_Upload::url(changeBasename($Photo, 'n%s'));
}
$Comment['InsertPhoto'] = $Photo;
}
$this->Data = array('Comment' => $Comment);
}
$this->RenderData($this->Data);
} else {
require_once $this->fetchViewLocation('helper_functions', 'Discussion');
// Render default view.
$this->render();
}
}
示例6: link
/**
*
*
* @param $Path
* @param bool $Text
* @param null $Format
* @param array $Options
* @return mixed|null|string
*/
public static function link($Path, $Text = false, $Format = null, $Options = array())
{
$Session = Gdn::session();
$Class = val('class', $Options, '');
$WithDomain = val('WithDomain', $Options);
$Target = val('Target', $Options, '');
if ($Target == 'current') {
$Target = trim(url('', true), '/ ');
}
if (is_null($Format)) {
$Format = '<a href="%url" class="%class">%text</a>';
}
switch ($Path) {
case 'activity':
touchValue('Permissions', $Options, 'Garden.Activity.View');
break;
case 'category':
$Breadcrumbs = Gdn::controller()->data('Breadcrumbs');
if (is_array($Breadcrumbs) && count($Breadcrumbs) > 0) {
$Last = array_pop($Breadcrumbs);
$Path = val('Url', $Last);
$DefaultText = val('Name', $Last, T('Back'));
} else {
$Path = '/';
$DefaultText = c('Garden.Title', T('Back'));
}
if (!$Text) {
$Text = $DefaultText;
}
break;
case 'dashboard':
$Path = 'dashboard/settings';
touchValue('Permissions', $Options, array('Garden.Settings.Manage', 'Garden.Settings.View'));
if (!$Text) {
$Text = t('Dashboard');
}
break;
case 'home':
$Path = '/';
if (!$Text) {
$Text = t('Home');
}
break;
case 'inbox':
$Path = 'messages/inbox';
touchValue('Permissions', $Options, 'Garden.SignIn.Allow');
if (!$Text) {
$Text = t('Inbox');
}
if ($Session->isValid() && $Session->User->CountUnreadConversations) {
$Class = trim($Class . ' HasCount');
$Text .= ' <span class="Alert">' . $Session->User->CountUnreadConversations . '</span>';
}
if (!$Session->isValid() || !Gdn::applicationManager()->checkApplication('Conversations')) {
$Text = false;
}
break;
case 'forumroot':
$Route = Gdn::router()->getDestination('DefaultForumRoot');
if (is_null($Route)) {
$Path = '/';
} else {
$Path = combinePaths(array('/', $Route));
}
break;
case 'profile':
touchValue('Permissions', $Options, 'Garden.SignIn.Allow');
if (!$Text && $Session->isValid()) {
$Text = $Session->User->Name;
}
if ($Session->isValid() && $Session->User->CountNotifications) {
$Class = trim($Class . ' HasCount');
$Text .= ' <span class="Alert">' . $Session->User->CountNotifications . '</span>';
}
break;
case 'user':
$Path = 'profile';
touchValue('Permissions', $Options, 'Garden.SignIn.Allow');
if (!$Text && $Session->isValid()) {
$Text = $Session->User->Name;
}
break;
case 'photo':
$Path = 'profile';
TouchValue('Permissions', $Options, 'Garden.SignIn.Allow');
if (!$Text && $Session->isValid()) {
$IsFullPath = strtolower(substr($Session->User->Photo, 0, 7)) == 'http://' || strtolower(substr($Session->User->Photo, 0, 8)) == 'https://';
$PhotoUrl = $IsFullPath ? $Session->User->Photo : Gdn_Upload::url(changeBasename($Session->User->Photo, 'n%s'));
$Text = img($PhotoUrl, array('alt' => $Session->User->Name));
}
break;
//.........这里部分代码省略.........
示例7: c
$BannedPhoto = c('Garden.BannedPhoto', 'http://cdn.vanillaforums.com/images/banned_large.png');
if ($BannedPhoto) {
$Photo = Gdn_Upload::url($BannedPhoto);
}
}
if ($Photo) {
?>
<div class="Photo PhotoWrap PhotoWrapLarge <?php
echo val('_CssClass', $User);
?>
">
<?php
if (IsUrl($Photo)) {
$Img = img($Photo, array('class' => 'ProfilePhotoLarge'));
} else {
$Img = img(Gdn_Upload::url(changeBasename($Photo, 'p%s')), array('class' => 'ProfilePhotoLarge'));
}
if (!$User->Banned && c('Garden.Profile.EditPhotos', true) && (Gdn::session()->UserID == $User->UserID || Gdn::session()->checkPermission('Garden.Users.Edit'))) {
echo anchor(Wrap(t('Change Picture')), '/profile/picture?userid=' . $User->UserID, 'ChangePicture');
}
echo $Img;
?>
</div>
<?php
} else {
if ($User->UserID == Gdn::session()->UserID || Gdn::session()->checkPermission('Garden.Users.Edit')) {
?>
<div
class="Photo"><?php
echo anchor(t('Add a Profile Picture'), '/profile/picture?userid=' . $User->UserID, 'AddPicture BigButton');
?>
示例8: val
<?php
if (!defined('APPLICATION')) {
exit;
}
$User = val('User', Gdn::controller());
if (!$User && Gdn::session()->isValid()) {
$User = Gdn::session()->User;
}
if (!$User) {
return;
}
$Photo = $User->Photo;
if ($Photo) {
$Photo = isUrl($Photo) ? $Photo : Gdn_Upload::url(changeBasename($Photo, 'p%s'));
$PhotoAlt = t('Avatar');
} else {
$Photo = UserModel::getDefaultAvatarUrl($User, 'profile');
$PhotoAlt = t('Default Avatar');
}
if ($User->Banned) {
$BannedPhoto = c('Garden.BannedPhoto', 'https://images.v-cdn.net/banned_large.png');
if ($BannedPhoto) {
$Photo = Gdn_Upload::url($BannedPhoto);
}
}
if ($Photo) {
?>
<div class="Photo PhotoWrap PhotoWrapLarge <?php
echo val('_CssClass', $User);
?>
示例9: userPhoto
/**
* Takes a user object, and writes out an anchor of the user's icon to the user's profile.
*
* @param object|array $User A user object or array.
* @param array $Options
*/
function userPhoto($User, $Options = array())
{
if (is_string($Options)) {
$Options = array('LinkClass' => $Options);
}
if ($Px = val('Px', $Options)) {
$User = userBuilder($User, $Px);
} else {
$User = (object) $User;
}
$LinkClass = concatSep(' ', val('LinkClass', $Options, ''), 'PhotoWrap');
$ImgClass = val('ImageClass', $Options, 'ProfilePhoto');
$Size = val('Size', $Options);
if ($Size) {
$LinkClass .= " PhotoWrap{$Size}";
$ImgClass .= " {$ImgClass}{$Size}";
} else {
$ImgClass .= " {$ImgClass}Medium";
// backwards compat
}
$FullUser = Gdn::userModel()->getID(val('UserID', $User), DATASET_TYPE_ARRAY);
$UserCssClass = val('_CssClass', $FullUser);
if ($UserCssClass) {
$LinkClass .= ' ' . $UserCssClass;
}
$LinkClass = $LinkClass == '' ? '' : ' class="' . $LinkClass . '"';
$Photo = val('Photo', $User, val('PhotoUrl', $User));
$Name = val('Name', $User);
$Title = htmlspecialchars(val('Title', $Options, $Name));
if ($FullUser && $FullUser['Banned']) {
$Photo = c('Garden.BannedPhoto', 'http://cdn.vanillaforums.com/images/banned_large.png');
$Title .= ' (' . t('Banned') . ')';
}
if (!$Photo && function_exists('UserPhotoDefaultUrl')) {
$Photo = userPhotoDefaultUrl($User, $ImgClass);
}
if ($Photo) {
if (!isUrl($Photo)) {
$PhotoUrl = Gdn_Upload::url(changeBasename($Photo, 'n%s'));
} else {
$PhotoUrl = $Photo;
}
$Href = url(userUrl($User));
return '<a title="' . $Title . '" href="' . $Href . '"' . $LinkClass . '>' . img($PhotoUrl, array('alt' => $Name, 'class' => $ImgClass)) . '</a>';
} else {
return '';
}
}
示例10: getCssFiles
/**
*
*
* @param $ThemeType
* @param $Basename
* @param $ETag
* @param null $NotFound
* @return array
* @throws Exception
*/
public function getCssFiles($ThemeType, $Basename, $ETag, &$NotFound = null)
{
$NotFound = array();
// Gather all of the css paths.
switch ($Basename) {
case 'Style':
$this->_CssFiles = array(array('style.css', 'dashboard', array('Sort' => -10)));
break;
case 'Admin':
$this->_CssFiles = array(array('admin.css', 'dashboard', array('Sort' => -10)));
break;
default:
$this->_CssFiles = array();
}
// Throw an event so that plugins can add their css too.
$this->EventArguments['ETag'] = $ETag;
$this->EventArguments['ThemeType'] = $ThemeType;
$this->fireEvent($Basename . 'Css');
// Include theme customizations last so that they override everything else.
switch ($Basename) {
case 'Style':
$this->addCssFile('custom.css', false, array('Sort' => 10));
if (Gdn::controller()->Theme && Gdn::controller()->ThemeOptions) {
$Filenames = valr('Styles.Value', Gdn::controller()->ThemeOptions);
if (is_string($Filenames) && $Filenames != '%s') {
$this->addCssFile(changeBasename('custom.css', $Filenames), false, array('Sort' => 11));
}
}
break;
case 'Admin':
$this->addCssFile('customadmin.css', false, array('Sort' => 10));
break;
}
$this->fireEvent('AfterGetCssFiles');
// Hunt the css files down.
$Paths = array();
foreach ($this->_CssFiles as $Info) {
$Filename = $Info[0];
$Folder = val(1, $Info);
$Options = val(2, $Info);
$Css = val('Css', $Options);
if ($Css) {
// Add some literal Css.
$Paths[] = array(false, $Folder, $Options);
} else {
list($Path, $UrlPath) = self::CssPath($Filename, $Folder, $ThemeType);
if ($Path) {
$Paths[] = array($Path, $UrlPath, $Options);
} else {
$NotFound[] = array($Filename, $Folder, $Options);
}
}
}
// Sort the paths.
usort($Paths, array('AssetModel', '_ComparePath'));
return $Paths;
}
示例11: deletePicture
/**
* Delete a screenshot from an addon.
*
* @param string $AddonPictureID Picture id to remove.
* @throws Gdn_UserException No permission to delete this picture.
*/
public function deletePicture($AddonPictureID = '')
{
$AddonPictureModel = new Gdn_Model('AddonPicture');
$Picture = $AddonPictureModel->getWhere(array('AddonPictureID' => $AddonPictureID))->firstRow();
$AddonModel = new AddonModel();
$Addon = $AddonModel->getID($Picture->AddonID);
$Session = Gdn::session();
if ($Session->UserID != $Addon['InsertUserID'] && !$Session->checkPermission('Addons.Addon.Manage')) {
throw permissionException();
}
if ($this->Form->authenticatedPostBack() && $this->Form->getFormValue('Yes')) {
if ($Picture) {
$Upload = new Gdn_Upload();
$Upload->delete(changeBasename($Picture->File, 'ao%s'));
$Upload->delete(changeBasename($Picture->File, 'at%s'));
$AddonPictureModel->delete(array('AddonPictureID' => $AddonPictureID));
}
$this->RedirectUrl = url('/addon/' . $Picture->AddonID);
}
$this->render('deletepicture');
}
示例12: get
/**
* Render basic data about user.
*
* @since 2.0.?
* @access public
* @param int $UserID Unique ID.
*/
public function get($UserID = false)
{
if (!$UserID) {
$UserID = Gdn::session()->UserID;
}
if (($UserID != Gdn::session()->UserID || !Gdn::session()->UserID) && !checkPermission('Garden.Users.Edit')) {
throw new Exception(t('You do not have permission to view other profiles.'), 401);
}
$UserModel = new UserModel();
// Get the user.
$User = $UserModel->getID($UserID, DATASET_TYPE_ARRAY);
if (!$User) {
throw notFoundException('User');
}
$PhotoUrl = $User['Photo'];
if ($PhotoUrl && strpos($PhotoUrl, '//') == false) {
$PhotoUrl = url('/uploads/' . changeBasename($PhotoUrl, 'n%s'), true);
}
$User['Photo'] = $PhotoUrl;
// Remove unwanted fields.
$this->Data = arrayTranslate($User, array('UserID', 'Name', 'Email', 'Photo'));
$this->render();
}
示例13: init
/**
*
*
* @param string $Path
* @param Gdn_Controller $Controller
*/
public function init($Path, $Controller)
{
$Smarty = $this->smarty();
// Get a friendly name for the controller.
$ControllerName = get_class($Controller);
if (StringEndsWith($ControllerName, 'Controller', true)) {
$ControllerName = substr($ControllerName, 0, -10);
}
// Get an ID for the body.
$BodyIdentifier = strtolower($Controller->ApplicationFolder . '_' . $ControllerName . '_' . Gdn_Format::alphaNumeric(strtolower($Controller->RequestMethod)));
$Smarty->assign('BodyID', htmlspecialchars($BodyIdentifier));
//$Smarty->assign('Config', Gdn::Config());
// Assign some information about the user.
$Session = Gdn::session();
if ($Session->isValid()) {
$User = array('Name' => htmlspecialchars($Session->User->Name), 'Photo' => '', 'CountNotifications' => (int) val('CountNotifications', $Session->User, 0), 'CountUnreadConversations' => (int) val('CountUnreadConversations', $Session->User, 0), 'SignedIn' => true);
$Photo = $Session->User->Photo;
if ($Photo) {
if (!isUrl($Photo)) {
$Photo = Gdn_Upload::url(changeBasename($Photo, 'n%s'));
}
} else {
$Photo = UserModel::getDefaultAvatarUrl($Session->User);
}
$User['Photo'] = $Photo;
} else {
$User = false;
/*array(
'Name' => '',
'CountNotifications' => 0,
'SignedIn' => FALSE);*/
}
$Smarty->assign('User', $User);
// Make sure that any datasets use arrays instead of objects.
foreach ($Controller->Data as $Key => $Value) {
if ($Value instanceof Gdn_DataSet) {
$Controller->Data[$Key] = $Value->resultArray();
} elseif ($Value instanceof stdClass) {
$Controller->Data[$Key] = (array) $Value;
}
}
$BodyClass = val('CssClass', $Controller->Data, '', true);
$Sections = Gdn_Theme::section(null, 'get');
if (is_array($Sections)) {
foreach ($Sections as $Section) {
$BodyClass .= ' Section-' . $Section;
}
}
$Controller->Data['BodyClass'] = $BodyClass;
// Set the current locale for themes to take advantage of.
$Locale = Gdn::locale()->Locale;
$CurrentLocale = array('Key' => $Locale, 'Lang' => str_replace('_', '-', Gdn::locale()->language(true)));
if (class_exists('Locale')) {
$CurrentLocale['Language'] = Locale::getPrimaryLanguage($Locale);
$CurrentLocale['Region'] = Locale::getRegion($Locale);
$CurrentLocale['DisplayName'] = Locale::getDisplayName($Locale, $Locale);
$CurrentLocale['DisplayLanguage'] = Locale::getDisplayLanguage($Locale, $Locale);
$CurrentLocale['DisplayRegion'] = Locale::getDisplayRegion($Locale, $Locale);
}
$Smarty->assign('CurrentLocale', $CurrentLocale);
$Smarty->assign('Assets', (array) $Controller->Assets);
// 2016-07-07 Linc: Request used to return blank for homepage.
// Now it returns defaultcontroller. This restores BC behavior.
$isHomepage = val('isHomepage', $Controller->Data);
$Path = $isHomepage ? "" : Gdn::request()->path();
$Smarty->assign('Path', $Path);
$Smarty->assign('Homepage', $isHomepage);
// true/false
// Assign the controller data last so the controllers override any default data.
$Smarty->assign($Controller->Data);
$security = new SmartySecurityVanilla($Smarty);
$security->php_handling = Smarty::PHP_REMOVE;
$security->allow_constants = false;
$security->allow_super_globals = false;
$security->streams = null;
$security->setPhpFunctions(array_merge($security->php_functions, ['array', 'category', 'checkPermission', 'inSection', 'inCategory', 'ismobile', 'multiCheckPermission', 'getValue', 'setValue', 'url', 'useragenttype']));
$security->php_modifiers = array_merge($security->php_functions, array('sprintf'));
$Smarty->enableSecurity($security);
}
示例14: calculateRow
/**
*
*
* @param $Row
*/
public function calculateRow(&$Row)
{
$ActivityType = self::GetActivityType($Row['ActivityTypeID']);
$Row['ActivityType'] = val('Name', $ActivityType);
if (is_string($Row['Data'])) {
$Row['Data'] = @unserialize($Row['Data']);
}
$Row['PhotoUrl'] = url($Row['Route'], true);
if (!$Row['Photo']) {
if (isset($Row['ActivityPhoto'])) {
$Row['Photo'] = $Row['ActivityPhoto'];
$Row['PhotoUrl'] = userUrl($Row, 'Activity');
} else {
$User = Gdn::userModel()->getID($Row['ActivityUserID'], DATASET_TYPE_ARRAY);
if ($User) {
$Photo = $User['Photo'];
$Row['PhotoUrl'] = userUrl($User);
if (!$Photo || stringBeginsWith($Photo, 'http')) {
$Row['Photo'] = $Photo;
} else {
$Row['Photo'] = Gdn_Upload::url(changeBasename($Photo, 'n%s'));
}
}
}
}
$Data = $Row['Data'];
if (isset($Data['ActivityUserIDs'])) {
$Row['ActivityUserID'] = array_merge(array($Row['ActivityUserID']), $Data['ActivityUserIDs']);
$Row['ActivityUserID_Count'] = val('ActivityUserID_Count', $Data);
}
if (isset($Data['RegardingUserIDs'])) {
$Row['RegardingUserID'] = array_merge(array($Row['RegardingUserID']), $Data['RegardingUserIDs']);
$Row['RegardingUserID_Count'] = val('RegardingUserID_Count', $Data);
}
$Row['Url'] = ExternalUrl($Row['Route']);
if ($Row['HeadlineFormat']) {
$Row['Headline'] = formatString($Row['HeadlineFormat'], $Row);
} else {
$Row['Headline'] = Gdn_Format::activityHeadline($Row);
}
}
示例15: t
</td>
<td><?php
echo t('Thumbnail');
?>
</td>
</tr>
</thead>
<tbody>
<tr>
<td>
<?php
echo img(Gdn_Upload::url(changeBasename($this->User->Photo, 'p%s')), array('id' => 'cropbox'));
?>
</td>
<td>
<div
style="<?php
echo 'width:' . $this->ThumbSize . 'px;height:' . $this->ThumbSize . 'px;';
?>
overflow:hidden;">
<?php
echo img(Gdn_Upload::url(changeBasename($this->User->Photo, 'p%s')), array('id' => 'preview'));
?>
</div>
</td>
</tr>
</tbody>
</table>
<?php
echo $this->Form->close('Save', '', array('class' => 'Button Primary'));