本文整理汇总了PHP中F::RandomStr方法的典型用法代码示例。如果您正苦于以下问题:PHP F::RandomStr方法的具体用法?PHP F::RandomStr怎么用?PHP F::RandomStr使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类F
的用法示例。
在下文中一共展示了F::RandomStr方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: StepAdmin
/**
* Запрос данных администратора и сохранение их в базе данных
*
*/
protected function StepAdmin()
{
$this->SetSessionVar(self::SESSION_KEY_STEP_NAME, 'Admin');
$this->SetStep('Admin');
// * Передаем данные из запроса во вьювер, сохраняя значение в сессии
$this->Assign('install_admin_login', $this->GetRequest('install_admin_login', 'admin', self::GET_VAR_FROM_SESSION), self::SET_VAR_IN_SESSION);
$this->Assign('install_admin_mail', $this->GetRequest('install_admin_mail', 'admin@admin.adm', self::GET_VAR_FROM_SESSION), self::SET_VAR_IN_SESSION);
// * Если данные формы не были отправлены, передаем значения по умолчанию
if (!$this->GetRequest('install_admin_params', false)) {
return $this->Layout('steps/admin.tpl');
}
// * Проверяем валидность введенных данных
list($bResult, $aErrors) = $this->ValidateAdminFields();
if (!$bResult) {
foreach ($aErrors as $sError) {
$this->aMessages[] = array('type' => 'error', 'text' => $sError);
}
$this->Layout('steps/admin.tpl');
return false;
}
// * Подключаемся к базе данных и сохраняем новые данные администратора
$aParams = $this->GetSessionVar('INSTALL_DATABASE_PARAMS');
$oDb = $this->ValidateDBConnection($aParams);
if (!$oDb) {
$this->aMessages[] = array('type' => 'error', 'text' => $this->Lang('error_db_connection_invalid'));
$this->Layout('steps/admin.tpl');
return false;
}
$this->SelectDatabase($oDb, $aParams['name']);
$sLocalConfigFile = $this->sConfigDir . '/' . self::LOCAL_CONFIG_FILE_NAME;
if (!$this->bSkipAdmin) {
// make and save "salt"
$aSalt = array();
$this->SaveConfig('security.salt_sess', $aSalt['sess'] = F::RandomStr(64, false), $sLocalConfigFile);
$this->SaveConfig('security.salt_pass', $aSalt['pass'] = F::RandomStr(64, false), $sLocalConfigFile);
$this->SaveConfig('security.salt_auth', $aSalt['auth'] = F::RandomStr(64, false), $sLocalConfigFile);
// make salted password
$sPass = F::DoSalt($this->GetRequest('install_admin_pass'), $aSalt['pass']);
$bUpdated = $this->UpdateDBUser($oDb, $this->GetRequest('install_admin_login'), $sPass, $this->GetRequest('install_admin_mail'), $aParams['prefix']);
if (!$bUpdated) {
$this->aMessages[] = array('type' => 'error', 'text' => $this->Lang('error_db_saved') . '<br />' . mysqli_error($oDb));
$this->Layout('steps/admin.tpl');
return false;
}
// * Обновляем данные о пользовательском блоге
$this->UpdateUserBlog($oDb, 'Blog by ' . $this->GetRequest('install_admin_login'), $aParams['prefix']);
}
// * Передаем управление на следующий шаг
return $this->StepEnd();
}
示例2: _eventRecoverySend
protected function _eventRecoverySend($sRecoveryCode)
{
/** @var ModuleUser_EntityReminder $oReminder */
if ($oReminder = E::ModuleUser()->GetReminderByCode($sRecoveryCode)) {
/** @var ModuleUser_EntityUser $oUser */
if ($oReminder->IsValid() && ($oUser = E::ModuleUser()->GetUserById($oReminder->getUserId()))) {
$sNewPassword = F::RandomStr(7);
$oUser->setPassword($sNewPassword, true);
if (E::ModuleUser()->Update($oUser)) {
// Do logout of current user
E::ModuleUser()->Logout();
// Close all sessions of this user
E::ModuleUser()->CloseAllSessions($oUser);
$oReminder->setDateUsed(F::Now());
$oReminder->setIsUsed(1);
E::ModuleUser()->UpdateReminder($oReminder);
E::ModuleNotify()->SendReminderPassword($oUser, $sNewPassword);
$this->SetTemplateAction('reminder_confirm');
if (($sUrl = F::GetPost('return_url')) || ($sUrl = F::GetPost('return-path'))) {
E::ModuleViewer()->Assign('return-path', $sUrl);
}
return true;
}
}
}
return false;
}
示例3: SaveUpload
/**
* @param string $sFile
*
* @return string|bool
*/
public function SaveUpload($sFile)
{
if ($oImage = $this->GetImage()) {
if ($sTmpFile = F::File_GetUploadDir() . F::RandomStr() . '.' . pathinfo($sFile, PATHINFO_EXTENSION)) {
if (F::File_CheckDir(dirname($sTmpFile))) {
$oImage->save($sTmpFile);
if (E::ModuleUploader()->Move($sTmpFile, $sFile)) {
return $sFile;
}
}
}
}
return false;
}
示例4: MakeUserChangemail
/**
* Формирование процесса смены емайла в профиле пользователя
*
* @param ModuleUser_EntityUser $oUser Объект пользователя
* @param string $sMailNew Новый емайл
*
* @return bool|ModuleUser_EntityChangemail
*/
public function MakeUserChangemail($oUser, $sMailNew)
{
/** @var ModuleUser_EntityChangemail $oChangemail */
$oChangemail = E::GetEntity('ModuleUser_EntityChangemail');
$oChangemail->setUserId($oUser->getId());
$oChangemail->setDateAdd(date('Y-m-d H:i:s'));
$oChangemail->setDateExpired(date('Y-m-d H:i:s', time() + 3 * 24 * 60 * 60));
// 3 дня для смены емайла
$oChangemail->setMailFrom($oUser->getMail() ? $oUser->getMail() : '');
$oChangemail->setMailTo($sMailNew);
$oChangemail->setCodeFrom(F::RandomStr(32));
$oChangemail->setCodeTo(F::RandomStr(32));
if ($this->AddUserChangemail($oChangemail)) {
// * Если у пользователя раньше не было емайла, то сразу шлем подтверждение на новый емайл
if (!$oChangemail->getMailFrom()) {
$oChangemail->setConfirmFrom(1);
E::ModuleUser()->UpdateUserChangemail($oChangemail);
// * Отправляем уведомление на новый емайл
E::ModuleNotify()->Send($oChangemail->getMailTo(), 'user_changemail_to.tpl', E::ModuleLang()->Get('notify_subject_user_changemail'), array('oUser' => $oUser, 'oChangemail' => $oChangemail), null, true);
} else {
// * Отправляем уведомление на старый емайл
E::ModuleNotify()->Send($oUser, 'user_changemail_from.tpl', E::ModuleLang()->Get('notify_subject_user_changemail'), array('oUser' => $oUser, 'oChangemail' => $oChangemail), null, true);
}
return $oChangemail;
}
return false;
}
示例5: _eventMenuEdit
protected function _eventMenuEdit()
{
// * Получаем тип
$sMenuId = $this->GetParam(1);
if (!($oMenu = E::ModuleMenu()->GetMenu($sMenuId))) {
return parent::EventNotFound();
}
E::ModuleViewer()->Assign('oMenu', $oMenu);
if (strpos($oMenu->getId(), 'submenu_') === 0) {
E::ModuleViewer()->Assign('isSubMenu', E::ModuleLang()->Get('action.admin.menu_manager_submenu'));
}
// * Устанавливаем шаблон вывода
$this->_setTitle(E::ModuleLang()->Get('action.admin.menu_manager_edit_menu'));
$this->SetTemplateAction('settings/menumanager_edit');
// * Проверяем отправлена ли форма с данными
if (getRequestPost('submit_add_new_item')) {
if (!(($sItemLink = trim(F::GetRequestStr('menu-item-link'))) && ($sItemTitle = trim(F::GetRequestStr('menu-item-title'))))) {
E::ModuleMessage()->AddErrorSingle(E::ModuleLang()->Get('menu_manager_item_add_error'), E::ModuleLang()->Get('error'));
return null;
}
$sRoot = F::GetRequest('menu-item-place');
if ($sRoot == 'root_item') {
$sItemName = F::RandomStr(10);
// Добавим имя в объявление
$aAllowedData = array_values(Config::Get("menu.data.{$oMenu->getId()}.init.fill.list"));
if (count($aAllowedData) > 1 && isset($aAllowedData[0]) && $aAllowedData[0] == '*') {
unset($aAllowedData[0]);
}
if (is_array($aAllowedData) && isset($aAllowedData[0]) && $aAllowedData[0] == '*') {
$aAllowedData = array_keys(Config::Get("menu.data.{$oMenu->getId()}.list"));
}
$aNewItems = array_merge($aAllowedData, array($sItemName));
$sMenuKey = "menu.data.{$oMenu->getId()}";
$aMenu = C::Get($sMenuKey);
$aMenu['init']['fill']['list'] = $aNewItems;
// Добавим имя в список
$aNewItemConfig = array($sItemName => array('text' => $sItemTitle, 'link' => $sItemLink, 'active' => false));
$aNewItemConfig = array_merge(Config::Get("menu.data.{$oMenu->getId()}.list"), $aNewItemConfig);
$aMenu['list'] = $aNewItemConfig;
Config::WriteCustomConfig(array($sMenuKey => $aMenu), false);
R::Location("admin/settings-menumanager/edit/{$sMenuId}");
return null;
} elseif ($sRoot) {
// Разрешенные идентификаторы меню
$aAllowedData = array_values(Config::Get("menu.data.{$oMenu->getId()}.init.fill.list"));
if (count($aAllowedData) > 1 && isset($aAllowedData[0]) && $aAllowedData[0] == '*') {
unset($aAllowedData[0]);
}
if (is_array($aAllowedData) && isset($aAllowedData[0]) && $aAllowedData[0] == '*') {
$aAllowedData = array_keys(Config::Get("menu.data.{$oMenu->getId()}.list"));
}
if (!in_array($sRoot, $aAllowedData)) {
E::ModuleMessage()->AddErrorSingle(E::ModuleLang()->Get('menu_manager_item_add_error'), E::ModuleLang()->Get('error'));
return null;
}
// Проверим есть ли подменю для этого элемента?
$sSubMenuName = Config::Get("menu.data.{$oMenu->getId()}.list.{$sRoot}.submenu");
if (!$sSubMenuName) {
$sSubMenuName = 'submenu_' . F::RandomStr(10);
// Сохраним указатель на подменю
$sMenuListKey = "menu.data.{$oMenu->getId()}";
$aMenu = C::Get($sMenuListKey);
if ($aMenu) {
$aMenu['list'][$sRoot]['submenu'] = $sSubMenuName;
C::WriteCustomConfig(array($sMenuListKey => $aMenu), false);
}
// Сохраним само пордменю
$aSubmenu = array('init' => array('fill' => array('list' => array('*'))), 'list' => array());
Config::WriteCustomConfig(array("menu.data.{$sSubMenuName}" => $aSubmenu), false);
}
// Добавим новый элемент в подменю
$sItemName = F::RandomStr(10);
// Добавим имя в объявление
$sMenuKey = "menu.data.{$sSubMenuName}";
$aMenu = C::Get($sMenuKey);
$aAllowedData = isset($aMenu['init']['fill']['list']) ? array_values($aMenu['init']['fill']['list']) : array();
if (is_array($aAllowedData) && isset($aAllowedData[0]) && $aAllowedData[0] == '*') {
$aAllowedData = isset($aMenu['list']) ? array_keys($aMenu['list']) : array();
}
if (count($aAllowedData) > 1 && isset($aAllowedData[0]) && $aAllowedData[0] == '*') {
unset($aAllowedData[0]);
}
$aNewItems = array_merge($aAllowedData, array($sItemName));
$aMenu['init']['fill']['list'] = $aNewItems;
// Добавим имя в список
$aNewItemConfig = array($sItemName => array('text' => $sItemTitle, 'link' => $sItemLink, 'active' => false));
$aNewItemConfig = array_merge(isset($aMenu['list']) ? $aMenu['list'] : array(), $aNewItemConfig);
$aMenu['list'] = $aNewItemConfig;
Config::WriteCustomConfig(array($sMenuKey => $aMenu), false);
R::Location("admin/settings-menumanager/edit/{$sMenuId}");
return null;
}
E::ModuleMessage()->AddErrorSingle(E::ModuleLang()->Get('menu_manager_item_add_error'), E::ModuleLang()->Get('error'));
return null;
}
return null;
}
示例6: Uniqname
/**
* Возвращает уникальное имя файла для конкретной папки
*
* @param $sDir
* @param $sExtension
* @param int $nLength
*
* @return string
*/
public static function Uniqname($sDir, $sExtension, $nLength = 8)
{
$sFileName = F::RandomStr($nLength) . ($sExtension ? '.' . trim($sExtension, '.') : '');
while (static::Exists($sDir . '/' . $sFileName)) {
$sFileName = static::Uniqname($sDir, $sExtension, $nLength);
}
return static::NormPath($sDir . '/' . $sFileName);
}
示例7: EventAjaxRegistration
/**
* Обработка Ajax регистрации
*/
protected function EventAjaxRegistration()
{
// * Устанавливаем формат Ajax ответа
E::ModuleViewer()->SetResponseAjax('json');
E::ModuleSecurity()->ValidateSendForm();
// * Создаем объект пользователя и устанавливаем сценарий валидации
/** @var ModuleUser_EntityUser $oUser */
$oUser = E::GetEntity('ModuleUser_EntityUser');
$oUser->_setValidateScenario('registration');
// * Заполняем поля (данные)
$oUser->setLogin($this->GetPost('login'));
$oUser->setMail($this->GetPost('mail'));
$oUser->setPassword($this->GetPost('password'));
$oUser->setPasswordConfirm($this->GetPost('password_confirm'));
$oUser->setCaptcha($this->GetPost('captcha'));
$oUser->setDateRegister(F::Now());
$oUser->setIpRegister(F::GetUserIp());
// * Если используется активация, то генерим код активации
if (Config::Get('general.reg.activation')) {
$oUser->setActivate(0);
$oUser->setActivationKey(F::RandomStr());
} else {
$oUser->setActivate(1);
$oUser->setActivationKey(null);
}
E::ModuleHook()->Run('registration_validate_before', array('oUser' => $oUser));
// * Запускаем валидацию
if ($oUser->_Validate()) {
// Сбросим капчу // issue#342.
E::ModuleSession()->Drop(E::ModuleCaptcha()->GetKeyName());
E::ModuleHook()->Run('registration_validate_after', array('oUser' => $oUser));
$oUser->setPassword($oUser->getPassword(), true);
if ($this->_addUser($oUser)) {
E::ModuleHook()->Run('registration_after', array('oUser' => $oUser));
// * Подписываем пользователя на дефолтные события в ленте активности
E::ModuleStream()->SwitchUserEventDefaultTypes($oUser->getId());
// * Если юзер зарегистрировался по приглашению то обновляем инвайт
if (Config::Get('general.reg.invite') && ($oInvite = E::ModuleUser()->GetInviteByCode($this->GetInviteRegister()))) {
$oInvite->setUserToId($oUser->getId());
$oInvite->setDateUsed(F::Now());
$oInvite->setUsed(1);
E::ModuleUser()->UpdateInvite($oInvite);
}
// * Если стоит регистрация с активацией то проводим её
if (Config::Get('general.reg.activation')) {
// * Отправляем на мыло письмо о подтверждении регистрации
E::ModuleNotify()->SendRegistrationActivate($oUser, F::GetRequestStr('password'));
E::ModuleViewer()->AssignAjax('sUrlRedirect', R::GetPath('registration') . 'confirm/');
} else {
E::ModuleNotify()->SendRegistration($oUser, F::GetRequestStr('password'));
$oUser = E::ModuleUser()->GetUserById($oUser->getId());
// * Сразу авторизуем
E::ModuleUser()->Authorization($oUser, false);
$this->DropInviteRegister();
// * Определяем URL для редиректа после авторизации
$sUrl = Config::Get('module.user.redirect_after_registration');
if (F::GetRequestStr('return-path')) {
$sUrl = F::GetRequestStr('return-path');
}
E::ModuleViewer()->AssignAjax('sUrlRedirect', $sUrl ? $sUrl : Config::Get('path.root.url'));
E::ModuleMessage()->AddNoticeSingle(E::ModuleLang()->Get('registration_ok'));
}
} else {
E::ModuleMessage()->AddErrorSingle(E::ModuleLang()->Get('system_error'));
return;
}
} else {
// * Получаем ошибки
E::ModuleViewer()->AssignAjax('aErrors', $oUser->_getValidateErrors());
}
}
示例8: AddTrackSimple
/**
* Создает подписку, если уже есть, то возвращает существующую
*
* @param string $sTargetType Тип
* @param string $sTargetId ID владельца
* @param string $sUserId ID юзера
*
* @return ModuleSubscribe_EntityTrack|bool
*/
public function AddTrackSimple($sTargetType, $sTargetId, $sUserId)
{
if (!$sUserId) {
return false;
}
if (!($oTrack = E::ModuleSubscribe()->GetTrackByTargetAndUser($sTargetType, $sTargetId, $sUserId))) {
$oTrack = E::GetEntity('ModuleSubscribe_EntityTrack');
$oTrack->setTargetType($sTargetType);
$oTrack->setTargetId($sTargetId);
$oTrack->setUserId($sUserId);
$oTrack->setDateAdd(date('Y-m-d H:i:s'));
$oTrack->setKey(F::RandomStr(32));
$oTrack->setIp(F::GetUserIp());
$oTrack->setStatus(1);
E::ModuleSubscribe()->AddTrack($oTrack);
}
return $oTrack;
}
示例9: _generateSecurityKey
/**
* Generates security key for the current session
*
* @return string
*/
protected function _generateSecurityKey()
{
// Сохраняем текущий ключ для ajax-запросов
if (F::AjaxRequest() && ($sKey = E::ModuleSession()->Get($this->sSecurityKeyName))) {
return $sKey;
}
if (Config::Get('module.security.randomkey')) {
return F::RandomStr($this->sSecurityKeyLen);
} else {
//return md5(E::ModuleSession()->GetId().Config::Get('module.security.hash'));
return md5($this->GetUniqKey() . $this->GetClientHash() . Config::Get('module.security.hash'));
}
}
示例10: EventAdd
/**
* Добавление топика
*
* @return mixed
*/
protected function EventAdd()
{
// * Устанавливаем шаблон вывода
$this->SetTemplateAction('add');
E::ModuleViewer()->Assign('sMode', 'add');
// * Вызов хуков
E::ModuleHook()->Run('topic_add_show');
// * Получаем тип контента
if (!($this->oContentType = E::ModuleTopic()->GetContentTypeByUrl($this->sCurrentEvent))) {
if (!($this->oContentType = E::ModuleTopic()->GetContentTypeDefault())) {
return parent::EventNotFound();
}
}
E::ModuleViewer()->Assign('oContentType', $this->oContentType);
$this->sMenuSubItemSelect = $this->oContentType->getContentUrl();
// * Если тип контента не доступен текущему юзеру
if (!$this->oContentType->isAccessible()) {
return parent::EventNotFound();
}
$aBlogFilter = array('user' => $this->oUserCurrent, 'content_type' => $this->oContentType);
$aBlogsAllow = $this->_getAllowBlogs($aBlogFilter);
// Такой тип контента не разрешен для пользователя ни в одном из типов блогов
if (!$aBlogsAllow) {
return parent::EventNotFound();
}
// Проверим можно ли писать в персональный блог такой тип контента
/** @var ModuleBlog_EntityBlog $oAllowedBlog */
$this->bPersonalBlogEnabled = FALSE;
foreach ($aBlogsAllow as $oAllowedBlog) {
// Нашли среди разрешенных персональный блог
if ($oAllowedBlog->getType() == 'personal') {
if (!$oAllowedBlog->getBlogType()->getContentTypes()) {
// типы контента не определены, значит, разрешен любой
$this->bPersonalBlogEnabled = TRUE;
} else {
foreach ($oAllowedBlog->getBlogType()->getContentTypes() as $oContentType) {
if ($oContentType->getId() == $this->oContentType->getId()) {
$this->bPersonalBlogEnabled = TRUE;
break;
}
}
}
break;
}
}
// * Загружаем переменные в шаблон
E::ModuleViewer()->Assign('bPersonalBlog', $this->bPersonalBlogEnabled);
E::ModuleViewer()->Assign('aBlogsAllow', $aBlogsAllow);
E::ModuleViewer()->Assign('bEditDisabled', false);
E::ModuleViewer()->AddHtmlTitle(E::ModuleLang()->Get('topic_topic_create') . ' ' . mb_strtolower($this->oContentType->getContentTitle(), 'UTF-8'));
if (!is_numeric(F::GetRequest('topic_id'))) {
$_REQUEST['topic_id'] = '';
}
$_REQUEST['topic_show_photoset'] = 1;
// * Если нет временного ключа для нового топика, то генерируем; если есть, то загружаем фото по этому ключу
if ($sTargetTmp = E::ModuleSession()->GetCookie('ls_photoset_target_tmp')) {
E::ModuleSession()->SetCookie('ls_photoset_target_tmp', $sTargetTmp, 'P1D', false);
E::ModuleViewer()->Assign('aPhotos', E::ModuleTopic()->GetPhotosByTargetTmp($sTargetTmp));
} else {
E::ModuleSession()->SetCookie('ls_photoset_target_tmp', F::RandomStr(), 'P1D', false);
}
// Если POST-запрос, то обрабатываем отправку формы
if ($this->IsPost()) {
return $this->SubmitAdd();
}
return null;
}
示例11: smarty_function_imgs
/**
* Выводит изображение и прикрепляет его ко временному объекту
*
* @param $aParams
* @param Smarty $oSmarty
* @return string
*/
function smarty_function_imgs($aParams, &$oSmarty = NULL)
{
// Пропущен тип объекта
if (!isset($aParams['target-type'])) {
trigger_error("img: missing 'target-type' parameter", E_USER_WARNING);
return '';
}
// Пропущен идентификатор объекта
if (!isset($aParams['target-id'])) {
trigger_error("img: missing 'target-id' parameter", E_USER_WARNING);
return '';
}
// Получим тип объекта
$sTargetType = $aParams['target-type'];
unset($aParams['target-type']);
// Получим ид объекта
$iTargetId = intval($aParams['target-id']);
unset($aParams['target-id']);
// Получим параметры обрезки объекта
$sCrop = isset($aParams['crop']) ? $aParams['crop'] : FALSE;
unset($aParams['crop']);
// Получим ид объекта
$sTemplate = isset($aParams['template']) ? $aParams['template'] : FALSE;
unset($aParams['template']);
// Получим изображение по временному ключу, или создадим этот ключ
$aParams['src'] = array();
if (($sTargetTmp = E::ModuleSession()->GetCookie(ModuleUploader::COOKIE_TARGET_TMP)) && E::IsUser()) {
// Продлим куку
E::ModuleSession()->SetCookie(ModuleUploader::COOKIE_TARGET_TMP, $sTargetTmp, 'P1D', FALSE);
} else {
// Куки нет, это значит, что пользователь первый раз создает этот тип
// и старой картинки просто нет
if ($iTargetId == '0') {
E::ModuleSession()->SetCookie(ModuleUploader::COOKIE_TARGET_TMP, F::RandomStr(), 'P1D', FALSE);
} else {
E::ModuleSession()->DelCookie(ModuleUploader::COOKIE_TARGET_TMP);
}
}
// Получим предыдущее изображение и если оно было, установим в качестве текущего
// Получим и удалим все ресурсы
$aMresourceRel = E::ModuleMresource()->GetMresourcesRelByTargetAndUser($sTargetType, $iTargetId, E::UserId());
if ($aMresourceRel && is_array($aMresourceRel)) {
/** @var ModuleMresource_EntityMresource $oResource */
foreach ($aMresourceRel as $oMresource) {
if ($sCrop) {
$aParams['src'][$oMresource->getMresourceId()] = array('url' => E::ModuleUploader()->ResizeTargetImage($oMresource->GetUrl(), $sCrop), 'cover' => $oMresource->IsCover());
} else {
$aParams['src'][$oMresource->getMresourceId()] = array('url' => $oMresource->GetUrl(), 'cover' => $oMresource->IsCover());
}
$oSmarty->assign("bHasImage", TRUE);
}
}
// Создадим массив картинок
$sItems = '';
if ($aParams['src']) {
foreach ($aParams['src'] as $sID => $aData) {
$sItems .= str_replace(array('ID', 'uploader_item_SRC', 'MARK_AS_PREVIEW'), array($sID, $aData['url'], $aData['cover'] ? E::ModuleLang()->Get('topic_photoset_is_preview') : E::ModuleLang()->Get('topic_photoset_mark_as_preview')), $sTemplate);
}
}
return $sItems;
}
示例12: func_generator
/**
* генерирует случайную последовательность символов
*
* @param int $iLength
*
* @return string
*/
function func_generator($iLength = 10)
{
if ($iLength > 32) {
$iLength = 32;
}
return F::RandomStr($iLength);
}
示例13: GenerateId
/**
* Гинерирует уникальный идентификатор
*
* @return string
*/
protected function GenerateId()
{
return md5(F::RandomStr() . time());
}
示例14: smarty_function_img
/**
* Выводит изображение и прикрепляет его ко временному объекту
*
* @param $aParams
* @param Smarty $oSmarty
* @return string
*/
function smarty_function_img($aParams, &$oSmarty = NULL)
{
// Пропущен тип объекта
if (!isset($aParams['attr']['target-type'])) {
trigger_error("img: missing 'target-type' parameter", E_USER_WARNING);
return '';
}
// Пропущен идентификатор объекта
if (!isset($aParams['attr']['target-id'])) {
trigger_error("img: missing 'target-id' parameter", E_USER_WARNING);
return '';
}
// Получим тип объекта
$sTargetType = $aParams['attr']['target-type'];
unset($aParams['attr']['target-type']);
// Получим ид объекта
$iTargetId = intval($aParams['attr']['target-id']);
unset($aParams['attr']['target-id']);
// Получим ид объекта
$sCrop = isset($aParams['attr']['crop']) ? $aParams['attr']['crop'] : FALSE;
unset($aParams['attr']['crop']);
// Получим изображение по временному ключу, или создадим этот ключ
if (($sTargetTmp = E::ModuleSession()->GetCookie(ModuleUploader::COOKIE_TARGET_TMP)) && E::IsUser()) {
// Продлим куку
E::ModuleSession()->SetCookie(ModuleUploader::COOKIE_TARGET_TMP, $sTargetTmp, 'P1D', FALSE);
// Получим предыдущее изображение и если оно было, установим в качестве текущего
// Получим и удалим все ресурсы
$aMresourceRel = E::ModuleMresource()->GetMresourcesRelByTargetAndUser($sTargetType, $iTargetId, E::UserId());
if ($aMresourceRel) {
/** @var ModuleMresource_EntityMresource $oResource */
$oMresource = array_shift($aMresourceRel);
if ($oMresource) {
if ($sCrop) {
$aParams['attr']['src'] = E::ModuleUploader()->ResizeTargetImage($oMresource->GetUrl(), $sCrop);
} else {
$aParams['attr']['src'] = $oMresource->GetUrl();
}
$oSmarty->assign("bImageIsTemporary", TRUE);
}
}
} else {
// Куки нет, это значит, что пользователь первый раз создает этот тип
// и старой картинки просто нет
if ($iTargetId == '0') {
E::ModuleSession()->SetCookie(ModuleUploader::COOKIE_TARGET_TMP, F::RandomStr(), 'P1D', FALSE);
} else {
E::ModuleSession()->DelCookie(ModuleUploader::COOKIE_TARGET_TMP);
$sImage = E::ModuleUploader()->GetTargetImageUrl($sTargetType, $iTargetId, $sCrop);
if ($sImage) {
$aParams['attr']['src'] = $sImage;
$oSmarty->assign("bImageIsTemporary", TRUE);
}
}
}
// Формируем строку атрибутов изображения
$sAttr = '';
if (isset($aParams['attr']) && is_array($aParams['attr'])) {
foreach ($aParams['attr'] as $sAttrName => $sAttrValue) {
$sAttr .= ' ' . $sAttrName . '="' . $sAttrValue . '"';
}
}
// Сформируем тег изображения
$sImageTag = '<img ' . $sAttr . '/>';
return $sImageTag;
}
示例15: Resize
/**
* Resize,copy image,
* make rounded corners and add watermark
*
* @param string $sFileSrc Исходный файл изображения
* @param string $sDirDest Директория куда нужно сохранить изображение относительно корня сайта (path.root.server)
* @param string $sFileDest Имя файла для сохранения, без расширения
* @param int $iWidthMax Максимально допустимая ширина изображения
* @param int $iHeightMax Максимало допустимая высота изображения
* @param int|null $iWidthDest Ширина необходимого изображения на выходе
* @param int|null $iHeightDest Высота необходимого изображения на выходе
* @param bool $bForcedMinSize Растягивать изображение по ширине или нет, если исходное меньше. При false - изображение будет растянуто
* @param array|null $aParams Параметры
* @param LiveImage|null $oImage Объект изображения, если null то будет содано автоматически
* @return string|bool Полный серверный путь до сохраненного изображения
*/
public function Resize($sFileSrc, $sDirDest, $sFileDest, $iWidthMax, $iHeightMax, $iWidthDest = null, $iHeightDest = null, $bForcedMinSize = true, $aParams = null, $oImage = null)
{
$this->ClearLastError();
/**
* Если параметры не переданы, устанавливаем действия по умолчанию
*/
if (!is_array($aParams)) {
$aParams = $this->aParamsDefault;
}
/**
* Если объект не передан как параметр,
* создаем новый
*/
if (!$oImage) {
$oImage = $this->CreateImageObject($sFileSrc);
}
if ($oImage->get_last_error()) {
$this->SetLastError($oImage->get_last_error());
return false;
}
$sFileDest .= '.' . $oImage->get_image_params('format');
if ($oImage->get_image_params('width') > $iWidthMax or $oImage->get_image_params('height') > $iHeightMax) {
return false;
}
if ($iWidthDest) {
if ($bForcedMinSize and $iWidthDest > $oImage->get_image_params('width')) {
$iWidthDest = $oImage->get_image_params('width');
}
/**
* Ресайзим и выводим результат в файл.
* Если не задана новая высота, то применяем масштабирование.
* Если нужно добавить Watermark, то запрещаем ручное управление alfa-каналом
*/
$bWatermark = isset($aParams['watermark_use']) ? $aParams['watermark_use'] : false;
$oImage->resize($iWidthDest, $iHeightDest, !$iHeightDest, !$bWatermark);
/**
* Добавляем watermark согласно в конфигурации заданым параметрам
*/
if ($bWatermark) {
if ($oImage->get_image_params('width') > $aParams['watermark_min_width'] and $oImage->get_image_params('height') > $aParams['watermark_min_height']) {
switch ($aParams['watermark_type']) {
default:
case 'text':
$oImage->set_font($aParams['watermark_font_size'], 0, $aParams['path']['fonts'] . $aParams['watermark_font'] . '.ttf');
$oImage->watermark($aParams['watermark_text'], explode(',', $aParams['watermark_position'], 2), explode(',', $aParams['watermark_font_color']), explode(',', $aParams['watermark_back_color']), $aParams['watermark_font_alfa'], $aParams['watermark_back_alfa']);
break;
case 'image':
$oImage->paste_image($aParams['path']['watermarks'] . $aParams['watermark_image'], false, explode(',', $aParams['watermark_position'], 2));
break;
}
}
}
/**
* Скругляем углы
*/
if (!empty($aParams['round_corner'])) {
$oImage->round_corners($aParams['round_corner_radius'], $aParams['round_corner_rate']);
}
/**
* Для JPG формата устанавливаем output quality, если это предусмотрено в конфигурации
*/
if (isset($aParams['jpg_quality']) and $oImage->get_image_params('format') == 'jpg') {
$oImage->set_jpg_quality($aParams['jpg_quality']);
}
$sFileTmp = Config::Get('sys.cache.dir') . F::RandomStr(20);
$oImage->output(null, $sFileTmp);
return $this->SaveFile($sFileTmp, $sDirDest, $sFileDest, 0666, true);
} else {
return $this->SaveFile($sFileSrc, $sDirDest, $sFileDest, 0666, false);
}
return false;
}