private function build_view($group_id)
    {
        if (!empty($group_id)) {
            $group = $this->groups_cache->get_group($group_id);
            $this->view->put_all(array('C_ADMIN' => AppContext::get_current_user()->check_level(User::ADMIN_LEVEL), 'U_ADMIN_GROUPS' => TPL_PATH_TO_ROOT . '/admin/admin_groups.php?id=' . $group_id, 'GROUP_NAME' => $group['name']));
        } else {
            $this->view->put_all(array('GROUP_NAME' => $this->lang['groups']));
        }
        $user_accounts_config = UserAccountsConfig::load();
        $number_member = 0;
        foreach ($this->get_members_group($group_id) as $user_id) {
            if (!empty($user_id)) {
                $user = PersistenceContext::get_querier()->select('SELECT 
					member.display_name, member.level, member.groups, member.warning_percentage, member.delay_banned, ext_field.user_avatar
					FROM ' . DB_TABLE_MEMBER . ' member
					LEFT JOIN ' . DB_TABLE_MEMBER_EXTENDED_FIELDS . ' ext_field ON ext_field.user_id = member.user_id
					WHERE member.user_id = :user_id
				', array('user_id' => $user_id))->fetch();
                if (!empty($user)) {
                    //Avatar
                    $user_avatar = !empty($user['user_avatar']) ? Url::to_rel($user['user_avatar']) : ($user_accounts_config->is_default_avatar_enabled() ? Url::to_rel('/templates/' . AppContext::get_current_user()->get_theme() . '/images/' . $user_accounts_config->get_default_avatar_name()) : '');
                    $group_color = User::get_group_color($user['groups'], $user['level']);
                    $this->view->assign_block_vars('members_list', array('C_AVATAR' => $user['user_avatar'] || $user_accounts_config->is_default_avatar_enabled(), 'C_GROUP_COLOR' => !empty($group_color), 'PSEUDO' => $user['display_name'], 'LEVEL' => $user['warning_percentage'] < '100' || time() - $user['delay_banned'] < 0 ? UserService::get_level_lang($user['level']) : $this->lang['banned'], 'LEVEL_CLASS' => UserService::get_level_class($user['level']), 'GROUP_COLOR' => $group_color, 'U_PROFILE' => UserUrlBuilder::profile($user_id)->rel(), 'U_AVATAR' => $user_avatar));
                    $number_member++;
                }
            }
        }
        $this->view->put_all(array('C_NOT_MEMBERS' => $number_member == 0, 'SELECT_GROUP' => $this->build_form($group_id)->display()));
    }
 public static function send_email_confirmation($user_id, $email, $pseudo, $login, $password, $registration_pass)
 {
     $lang = LangLoader::get('user-common');
     $user_accounts_config = UserAccountsConfig::load();
     $general_config = GeneralConfig::load();
     $site_name = $general_config->get_site_name();
     $subject = StringVars::replace_vars($lang['registration.subject-mail'], array('site_name' => $site_name));
     switch ($user_accounts_config->get_member_accounts_validation_method()) {
         case UserAccountsConfig::AUTOMATIC_USER_ACCOUNTS_VALIDATION:
             $parameters = array('pseudo' => $pseudo, 'site_name' => $site_name, 'host' => $general_config->get_site_url(), 'login' => $login, 'password' => $password, 'accounts_validation_explain' => $lang['registration.email.automatic-validation'], 'signature' => MailServiceConfig::load()->get_mail_signature());
             $content = StringVars::replace_vars($lang['registration.content-mail'], $parameters);
             AppContext::get_mail_service()->send_from_properties($email, $subject, $content);
             break;
         case UserAccountsConfig::MAIL_USER_ACCOUNTS_VALIDATION:
             $parameters = array('pseudo' => $pseudo, 'site_name' => $site_name, 'host' => $general_config->get_site_url(), 'login' => $login, 'password' => $password, 'accounts_validation_explain' => StringVars::replace_vars($lang['registration.email.mail-validation'], array('validation_link' => UserUrlBuilder::confirm_registration($registration_pass)->absolute())), 'signature' => MailServiceConfig::load()->get_mail_signature());
             $content = StringVars::replace_vars($lang['registration.content-mail'], $parameters);
             AppContext::get_mail_service()->send_from_properties($email, $subject, $content);
             break;
         case UserAccountsConfig::ADMINISTRATOR_USER_ACCOUNTS_VALIDATION:
             $alert = new AdministratorAlert();
             $alert->set_entitled($lang['registration.pending-approval']);
             $alert->set_fixing_url(UserUrlBuilder::edit_profile($user_id)->relative());
             $alert->set_priority(AdministratorAlert::ADMIN_ALERT_MEDIUM_PRIORITY);
             $alert->set_id_in_module($user_id);
             $alert->set_type('member_account_to_approbate');
             AdministratorAlertService::save_alert($alert);
             $parameters = array('pseudo' => $pseudo, 'site_name' => $site_name, 'host' => $general_config->get_site_url(), 'login' => $login, 'password' => $password, 'accounts_validation_explain' => $lang['registration.email.administrator-validation'], 'signature' => MailServiceConfig::load()->get_mail_signature());
             $content = StringVars::replace_vars($lang['registration.content-mail'], $parameters);
             AppContext::get_mail_service()->send_from_properties($email, $subject, $content);
             break;
     }
 }
 private function build_form($user_id)
 {
     $form = new HTMLForm('member-view-profile', '', false);
     $fieldset = new FormFieldsetHTML('profile', $this->lang['profile']);
     $form->add_fieldset($fieldset);
     if (AppContext::get_current_user()->check_level(User::ADMIN_LEVEL)) {
         $link_edit = '<a href="' . UserUrlBuilder::edit_profile($user_id)->rel() . '" title="' . $this->lang['profile.edit'] . '" class="fa fa-edit"></a>';
         $fieldset->add_field(new FormFieldFree('profile_edit', $this->lang['profile.edit'], $link_edit));
     }
     $fieldset->add_field(new FormFieldFree('display_name', $this->lang['display_name'], $this->user_infos['display_name']));
     $fieldset->add_field(new FormFieldFree('level', $this->lang['level'], '<a class="' . UserService::get_level_class($this->user_infos['level']) . '">' . $this->get_level_lang() . '</a>'));
     $fieldset->add_field(new FormFieldFree('groups', $this->lang['groups'], $this->build_groups($this->user_infos['groups'])));
     $registration_date = new Date($this->user_infos['registration_date']);
     $fieldset->add_field(new FormFieldFree('registered_on', $this->lang['registration_date'], $registration_date ? $registration_date->format(Date::FORMAT_DAY_MONTH_YEAR) : ''));
     $fieldset->add_field(new FormFieldFree('nbr_msg', $this->lang['number-messages'], $this->user_infos['posted_msg'] . '<br>' . '<a href="' . UserUrlBuilder::messages($user_id)->rel() . '">' . $this->lang['messages'] . '</a>'));
     $last_connection_date = !empty($this->user_infos['last_connection_date']) ? Date::to_format($this->user_infos['last_connection_date'], Date::FORMAT_DAY_MONTH_YEAR) : LangLoader::get_message('never', 'main');
     $fieldset->add_field(new FormFieldFree('last_connect', $this->lang['last_connection'], $last_connection_date));
     if (AppContext::get_current_user()->check_auth(UserAccountsConfig::load()->get_auth_read_members(), UserAccountsConfig::AUTH_READ_MEMBERS_BIT) && $this->user_infos['show_email']) {
         $link_email = '<a href="mailto:' . $this->user_infos['email'] . '" class="basic-button smaller">Mail</a>';
         $fieldset->add_field(new FormFieldFree('email', $this->lang['email'], $link_email));
     }
     if (!$this->same_user_view_profile($user_id) && AppContext::get_current_user()->check_level(User::MEMBER_LEVEL)) {
         $link_mp = '<a href="' . UserUrlBuilder::personnal_message($user_id)->rel() . '" class="basic-button smaller">MP</a>';
         $fieldset->add_field(new FormFieldFree('private_message', $this->lang['private_message'], $link_mp));
     }
     MemberExtendedFieldsService::display_profile_fields($form, $user_id);
     $this->form = $form;
 }
Example #4
0
 public function check_auth()
 {
     if ($this->id == UserAccountsConfig::load()->get_default_lang()) {
         return true;
     }
     return AppContext::get_current_user()->check_auth($this->authorizations, self::ACCES_LANG);
 }
Example #5
0
 public function set_avatar($avatar)
 {
     $user_accounts_config = UserAccountsConfig::load();
     if (empty($avatar)) {
         $this->avatar = $user_accounts_config->is_default_avatar_enabled() ? PATH_TO_ROOT . '/templates/' . AppContext::get_current_user()->get_theme() . '/images/' . $user_accounts_config->get_default_avatar_name() : '';
     } else {
         $this->avatar = $avatar;
     }
 }
 public function __construct()
 {
     $this->user_id = 1;
     $this->session_id = '0123456789';
     $this->token = '42';
     $this->expiry = time() + SessionsConfig::load()->get_session_duration();
     $this->ip = '0000:0000:0000:0000:0000:0000:0000:0001';
     $user_accounts_config = UserAccountsConfig::load();
     $this->cached_data = array('level' => User::ADMIN_LEVEL, 'login' => 'Admin', 'display_name' => 'Admin');
     $this->data = array();
 }
 public function display($tpl = false)
 {
     global $LANG;
     if (!Url::is_current_url('/user/login')) {
         $tpl = new FileTemplate('connect/connect_mini.tpl');
         $user = AppContext::get_current_user();
         MenuService::assign_positions_conditions($tpl, $this->get_block());
         if ($user->check_level(User::MEMBER_LEVEL)) {
             $unread_contributions = UnreadContributionsCache::load();
             //Vaut 0 si l'utilisateur n'a aucune contribution. Est > 0 si on connait le nombre de contributions
             //Vaut -1 si l'utilisateur a au moins une contribution (mais on ne sait pas combien à cause des recoupements entre les groupes)
             $contribution_number = 0;
             if ($user->check_level(User::ADMIN_LEVEL)) {
                 $contribution_number = $unread_contributions->get_admin_unread_contributions_number();
             } elseif ($user->check_level(User::MODERATOR_LEVEL)) {
                 if ($unread_contributions->have_moderators_unread_contributions()) {
                     $contribution_number = -1;
                 }
             } else {
                 if ($unread_contributions->have_members_unread_contributions()) {
                     $contribution_number = -1;
                 } else {
                     if ($unread_contributions->has_user_unread_contributions($user->get_id())) {
                         $contribution_number = -1;
                     } else {
                         foreach ($user->get_groups() as $group_id) {
                             if ($unread_contributions->has_group_unread_contributions($group_id)) {
                                 $contribution_number = -1;
                                 break;
                             }
                         }
                     }
                 }
             }
             $user_accounts_config = UserAccountsConfig::load();
             $user_avatar = AppContext::get_session()->get_cached_data('user_avatar');
             if (empty($user_avatar)) {
                 $user_avatar = '/templates/' . AppContext::get_current_user()->get_theme() . '/images/' . $user_accounts_config->get_default_avatar_name();
             }
             $total_alert = $user->get_unread_pm() + $contribution_number + ($user->check_level(User::ADMIN_LEVEL) ? AdministratorAlertService::get_number_unread_alerts() : 0);
             $user_group_color = User::get_group_color($user->get_groups(), $user->get_level(), true);
             $tpl->put_all(array('C_ADMIN_AUTH' => $user->check_level(User::ADMIN_LEVEL), 'C_MODERATOR_AUTH' => $user->check_level(User::MODERATOR_LEVEL), 'C_UNREAD_CONTRIBUTION' => $contribution_number != 0, 'C_KNOWN_NUMBER_OF_UNREAD_CONTRIBUTION' => $contribution_number > 0, 'C_UNREAD_ALERT' => (bool) AdministratorAlertService::get_number_unread_alerts(), 'C_HAS_PM' => $user->get_unread_pm() > 0, 'C_USER_GROUP_COLOR' => !empty($user_group_color), 'NUMBER_UNREAD_CONTRIBUTIONS' => $contribution_number, 'NUMBER_UNREAD_ALERTS' => AdministratorAlertService::get_number_unread_alerts(), 'NUMBER_PM' => $user->get_unread_pm(), 'NUMBER_TOTAL_ALERT' => $total_alert, 'PSEUDO' => $user->get_display_name(), 'USER_LEVEL_CLASS' => UserService::get_level_class($user->get_level()), 'USER_GROUP_COLOR' => $user_group_color, 'U_USER_PROFILE' => UserUrlBuilder::profile($user->get_id())->rel(), 'U_USER_PM' => UserUrlBuilder::personnal_message($user->get_id())->rel(), 'U_AVATAR_IMG' => Url::to_rel($user_avatar), 'L_NBR_PM' => $user->get_unread_pm() > 0 ? $user->get_unread_pm() . ' ' . ($user->get_unread_pm() > 1 ? $LANG['message_s'] : $LANG['message']) : $LANG['private_messaging'], 'L_PROFIL' => LangLoader::get_message('profile', 'user-common'), 'L_ADMIN_PANEL' => $LANG['admin_panel'], 'L_MODO_PANEL' => $LANG['modo_panel'], 'L_PRIVATE_PROFIL' => $LANG['my_private_profile'], 'L_DISCONNECT' => LangLoader::get_message('disconnect', 'user-common'), 'L_CONTRIBUTION_PANEL' => $LANG['contribution_panel']));
         } else {
             $authentication_config = AuthenticationConfig::load();
             $tpl->put_all(array('C_USER_NOTCONNECTED' => true, 'C_USER_REGISTER' => UserAccountsConfig::load()->is_registration_enabled(), 'C_FB_AUTH_ENABLED' => $authentication_config->is_fb_auth_available(), 'C_GOOGLE_AUTH_ENABLED' => $authentication_config->is_google_auth_available(), 'L_REQUIRE_PSEUDO' => $LANG['require_pseudo'], 'L_REQUIRE_PASSWORD' => $LANG['require_password'], 'L_CONNECT' => LangLoader::get_message('connection', 'user-common'), 'L_PSEUDO' => LangLoader::get_message('login', 'user-common'), 'L_PASSWORD' => LangLoader::get_message('password', 'user-common'), 'L_AUTOCONNECT' => LangLoader::get_message('autoconnect', 'user-common'), 'L_FORGOT_PASS' => LangLoader::get_message('forget-password', 'user-common'), 'L_REGISTER' => LangLoader::get_message('register', 'user-common'), 'U_CONNECT' => UserUrlBuilder::connect()->rel(), 'SITE_REWRITED_SCRIPT' => substr(REWRITED_SCRIPT, strlen(GeneralConfig::load()->get_site_path()))));
         }
         return $tpl->render();
     }
     return '';
 }
Example #8
0
 public function __construct(SessionData $session)
 {
     $this->id = $session->get_user_id();
     $this->level = $session->get_cached_data('level', -1);
     $this->is_admin = $this->level == 2;
     $this->display_name = $session->get_cached_data('display_name', SessionData::DEFAULT_VISITOR_DISPLAY_NAME);
     $this->email = $session->get_cached_data('email', null);
     $this->show_email = $session->get_cached_data('show_email', false);
     $this->unread_pm = $session->get_cached_data('unread_pm', 0);
     $this->timestamp = $session->get_cached_data('timestamp', time());
     $this->warning_percentage = $session->get_cached_data('warning_percentage', 0);
     $this->delay_banned = $session->get_cached_data('delay_banned', 0);
     $this->delay_readonly = $session->get_cached_data('delay_readonly', 0);
     $user_accounts_config = UserAccountsConfig::load();
     $this->locale = $session->get_cached_data('locale', $user_accounts_config->get_default_lang());
     $this->theme = $session->get_cached_data('theme', $user_accounts_config->get_default_theme());
     $this->timezone = $session->get_cached_data('timezone', GeneralConfig::load()->get_site_timezone());
     $this->editor = $session->get_cached_data('editor', ContentFormattingConfig::load()->get_default_editor());
     $this->build_groups($session);
 }
    private function build_view()
    {
        $user_accounts_config = UserAccountsConfig::load();
        $messages_number = GuestbookService::count();
        $page = AppContext::get_request()->get_getint('page', 1);
        $pagination = $this->get_pagination($messages_number, $page);
        $is_guest = !AppContext::get_current_user()->check_level(User::MEMBER_LEVEL);
        $result = PersistenceContext::get_querier()->select('SELECT member.*, guestbook.*, guestbook.login as glogin, ext_field.user_avatar
		FROM ' . GuestbookSetup::$guestbook_table . ' guestbook
		LEFT JOIN ' . DB_TABLE_MEMBER . ' member ON member.user_id = guestbook.user_id
		LEFT JOIN ' . DB_TABLE_MEMBER_EXTENDED_FIELDS . ' ext_field ON ext_field.user_id = member.user_id
		ORDER BY guestbook.timestamp DESC
		LIMIT :number_items_per_page OFFSET :display_from', array('number_items_per_page' => $pagination->get_number_items_per_page(), 'display_from' => $pagination->get_display_from()));
        while ($row = $result->fetch()) {
            $message = new GuestbookMessage();
            $message->set_properties($row);
            //Avatar
            $user_avatar = !empty($row['user_avatar']) ? Url::to_rel($row['user_avatar']) : ($user_accounts_config->is_default_avatar_enabled() ? Url::to_rel('/templates/' . AppContext::get_current_user()->get_theme() . '/images/' . $user_accounts_config->get_default_avatar_name()) : '');
            $this->view->assign_block_vars('messages', array_merge($message->get_array_tpl_vars($page), array('C_AVATAR' => $row['user_avatar'] || $user_accounts_config->is_default_avatar_enabled(), 'C_USER_GROUPS' => !empty($row['groups']), 'U_AVATAR' => $user_avatar)));
            //user's groups
            if ($message->get_author_user()->get_groups()) {
                $groups_cache = GroupsCache::load();
                $user_groups = $message->get_author_user()->get_groups();
                foreach ($user_groups as $user_group_id) {
                    if ($groups_cache->group_exists($user_group_id)) {
                        $group = $groups_cache->get_group($user_group_id);
                        $this->view->assign_block_vars('messages.user_groups', array('C_GROUP_PICTURE' => !empty($group['img']), 'GROUP_PICTURE' => $group['img'], 'GROUP_NAME' => $group['name']));
                    }
                }
            }
        }
        $result->dispose();
        $this->view->put_all(array('C_NO_MESSAGE' => $result->get_rows_count() == 0, 'C_PAGINATION' => $messages_number > GuestbookConfig::load()->get_items_per_page(), 'PAGINATION' => $pagination->display()));
        if (GuestbookAuthorizationsService::check_authorizations()->write() && !AppContext::get_current_user()->is_readonly()) {
            $this->view->put('FORM', GuestbookFormController::get_view());
        } else {
            $this->view->put('MSG', MessageHelper::display($this->lang['error.post.unauthorized'], MessageHelper::WARNING));
        }
        return $this->view;
    }
    private function build_view($request)
    {
        $template = new FileTemplate('framework/content/comments/comments_list.tpl');
        $page = $request->get_getint('page', 1);
        $id_module = $this->module === null ? null : $this->module->get_id();
        $pagination = $this->get_pagination($page);
        $this->tpl->put_all(array('C_PAGINATION' => $pagination->has_several_pages(), 'PAGINATION' => $pagination->display()));
        $result = PersistenceContext::get_querier()->select('
			SELECT comments.*, comments.timestamp AS comment_timestamp, comments.id AS id_comment,
			topic.*,
			member.user_id, member.display_name, member.level, member.groups,
			ext_field.user_avatar
			FROM ' . DB_TABLE_COMMENTS . ' comments
			LEFT JOIN ' . DB_TABLE_COMMENTS_TOPIC . ' topic ON comments.id_topic = topic.id_topic
			LEFT JOIN ' . DB_TABLE_MEMBER . ' member ON member.user_id = comments.user_id
			LEFT JOIN ' . DB_TABLE_MEMBER_EXTENDED_FIELDS . ' ext_field ON ext_field.user_id = comments.user_id
			' . $this->build_where_request() . '
			ORDER BY comments.timestamp DESC
			LIMIT :number_items_per_page OFFSET :display_from', array('number_items_per_page' => $pagination->get_number_items_per_page(), 'display_from' => $pagination->get_display_from()));
        $user_accounts_config = UserAccountsConfig::load();
        $comments_authorizations = new CommentsAuthorizations();
        $number_comment = 0;
        while ($row = $result->fetch()) {
            $id = $row['id_comment'];
            $path = $row['path'];
            //Avatar
            $user_avatar = !empty($row['user_avatar']) ? Url::to_rel($row['user_avatar']) : ($user_accounts_config->is_default_avatar_enabled() ? Url::to_rel('/templates/' . AppContext::get_current_user()->get_theme() . '/images/' . $user_accounts_config->get_default_avatar_name()) : '');
            $timestamp = new Date($row['comment_timestamp'], Timezone::SERVER_TIMEZONE);
            $group_color = User::get_group_color($row['groups'], $row['level']);
            $template->assign_block_vars('comments', array('C_MODERATOR' => $comments_authorizations->is_authorized_moderation(), 'C_VISITOR' => empty($row['login']), 'C_VIEW_TOPIC' => true, 'C_GROUP_COLOR' => !empty($group_color), 'C_AVATAR' => $row['user_avatar'] || $user_accounts_config->is_default_avatar_enabled(), 'U_TOPIC' => Url::to_rel($path), 'U_EDIT' => CommentsUrlBuilder::edit($path, $id)->rel(), 'U_DELETE' => CommentsUrlBuilder::delete($path, $id)->rel(), 'U_PROFILE' => UserUrlBuilder::profile($row['user_id'])->rel(), 'U_AVATAR' => $user_avatar, 'ID_COMMENT' => $id, 'DATE' => $timestamp->format(Date::FORMAT_DAY_MONTH_YEAR_HOUR_MINUTE), 'DATE_ISO8601' => $timestamp->format(Date::FORMAT_ISO8601), 'MESSAGE' => FormatingHelper::second_parse($row['message']), 'USER_ID' => $row['user_id'], 'PSEUDO' => empty($row['login']) ? $row['pseudo'] : $row['login'], 'LEVEL_CLASS' => UserService::get_level_class($row['level']), 'GROUP_COLOR' => $group_color, 'L_LEVEL' => UserService::get_level_lang($row['level'] !== null ? $row['level'] : '-1')));
            $template->put_all(array('MODULE_ID' => $row['module_id'], 'ID_IN_MODULE' => $row['id_in_module'], 'L_VIEW_TOPIC' => $this->lang['view-topic']));
            $number_comment++;
        }
        $result->dispose();
        $this->tpl->put('C_NO_COMMENT', $number_comment == 0);
        $comments_tpl = new FileTemplate('framework/content/comments/comments.tpl');
        $comments_tpl->put_all(array('COMMENTS_LIST' => $template, 'MODULE_ID' => $row['module_id'], 'ID_IN_MODULE' => $row['id_in_module']));
        return $comments_tpl;
    }
 public function get_content()
 {
     $user = AppContext::get_current_user();
     $theme_id = AppContext::get_request()->get_string('switchtheme', '');
     if (!empty($theme_id)) {
         $theme = ThemesManager::get_theme($theme_id);
         if ($theme !== null) {
             if ($theme->is_activated() && $theme->check_auth()) {
                 $user->update_theme($theme->get_id());
             }
         }
         $query_string = preg_replace('`switchtheme=[^&]+`', '', QUERY_STRING);
         AppContext::get_response()->redirect(trim(HOST . SCRIPT . (!empty($query_string) ? '?' . $query_string : '')));
     }
     $tpl = new FileTemplate('ThemesSwitcher/themeswitcher.tpl');
     $tpl->add_lang(LangLoader::get('themeswitcher_common', 'ThemesSwitcher'));
     foreach (ThemesManager::get_activated_and_authorized_themes_map() as $id => $theme) {
         $selected = $user->get_theme() == $id ? ' selected="selected"' : '';
         $tpl->assign_block_vars('themes', array('NAME' => $theme->get_configuration()->get_name(), 'IDNAME' => $id, 'SELECTED' => $selected));
     }
     $tpl->put('DEFAULT_THEME', UserAccountsConfig::load()->get_default_theme());
     return $tpl;
 }
 public function get_content()
 {
     $user = AppContext::get_current_user();
     $lang_id = AppContext::get_request()->get_string('switchlang', '');
     if (!empty($lang_id)) {
         $lang = LangsManager::get_lang($lang_id);
         if ($lang !== null) {
             if ($lang->is_activated() && $lang->check_auth()) {
                 $user->update_lang($lang->get_id());
             }
         }
         $query_string = preg_replace('`switchlang=[^&]+`', '', QUERY_STRING);
         AppContext::get_response()->redirect(trim(HOST . SCRIPT . (!empty($query_string) ? '?' . $query_string : '')));
     }
     $tpl = new FileTemplate('LangsSwitcher/langswitcher.tpl');
     $tpl->add_lang(LangLoader::get('langswitcher_common', 'LangsSwitcher'));
     foreach (LangsManager::get_activated_and_authorized_langs_map() as $id => $lang) {
         $selected = $user->get_locale() == $id ? ' selected="selected"' : '';
         $tpl->assign_block_vars('langs', array('NAME' => $lang->get_configuration()->get_name(), 'IDNAME' => $id, 'SELECTED' => $selected));
     }
     $lang_identifier = str_replace('en', 'uk', LangLoader::get_message('xml_lang', 'main'));
     $tpl->put_all(array('DEFAULT_LANG' => UserAccountsConfig::load()->get_default_lang(), 'IMG_LANG_IDENTIFIER' => TPL_PATH_TO_ROOT . '/images/stats/countries/' . $lang_identifier . '.png'));
     return $tpl;
 }
 private function init()
 {
     $this->lang = LangLoader::get('user-common');
     $this->tpl = new StringTemplate('# INCLUDE MSG # # INCLUDE FORM #');
     $this->tpl->add_lang($this->lang);
     $this->user_accounts_config = UserAccountsConfig::load();
 }
 private function build_form()
 {
     $contribution_number = $this->get_unread_contributions_number();
     $is_authorized_files_panel = $this->user->check_auth(FileUploadConfig::load()->get_authorization_enable_interface_files(), FileUploadConfig::AUTH_FILES_BIT);
     $this->tpl->put_all(array('C_USER_AUTH_FILES' => $is_authorized_files_panel, 'C_USER_INDEX' => true, 'C_IS_MODERATOR' => $this->user->get_level() >= User::MODERATOR_LEVEL, 'C_UNREAD_CONTRIBUTION' => $contribution_number != 0, 'C_KNOWN_NUMBER_OF_UNREAD_CONTRIBUTION' => $contribution_number > 0, 'C_UNREAD_ALERT' => (bool) AdministratorAlertService::get_number_unread_alerts(), 'C_HAS_PM' => $this->user->get_unread_pm() > 0, 'COLSPAN' => $is_authorized_files_panel ? 3 : 2, 'PSEUDO' => $this->user->get_display_name(), 'NUMBER_UNREAD_ALERTS' => AdministratorAlertService::get_number_unread_alerts(), 'NUMBER_UNREAD_CONTRIBUTIONS' => $contribution_number, 'NUMBER_PM' => $this->user->get_unread_pm(), 'MSG_MBR' => FormatingHelper::second_parse(UserAccountsConfig::load()->get_welcome_message()), 'U_USER_ID' => UserUrlBuilder::profile($this->user->get_id())->rel(), 'U_USER_PM' => UserUrlBuilder::personnal_message($this->user->get_id())->rel(), 'U_CONTRIBUTION_PANEL' => UserUrlBuilder::contribution_panel()->rel(), 'U_MODERATION_PANEL' => UserUrlBuilder::moderation_panel()->rel(), 'U_UPLOAD' => UserUrlBuilder::upload_files_panel()->rel(), 'U_VIEW_PROFILE' => UserUrlBuilder::profile($this->user->get_id())->rel()));
 }
Example #15
0
 public static function get_default_lang()
 {
     return UserAccountsConfig::load()->get_default_lang();
 }
 private function configure_accounts_policy()
 {
     $user_account_config = UserAccountsConfig::load();
     $user_account_config->set_registration_enabled($this->distribution_config['allow_members_registration']);
     UserAccountsConfig::save();
 }
Example #17
0
 public static function get_visitor_properties($display_name = null)
 {
     return array('user_id' => Session::VISITOR_SESSION_ID, 'display_name' => $display_name !== null ? $display_name : LangLoader::get_message('guest', 'main'), 'level' => self::VISITOR_LEVEL, 'email' => null, 'show_email' => false, 'locale' => UserAccountsConfig::load()->get_default_lang(), 'theme' => UserAccountsConfig::load()->get_default_theme(), 'timezone' => GeneralConfig::load()->get_site_timezone(), 'editor' => ContentFormattingConfig::load()->get_default_editor(), 'unread_pm' => 0, 'registration_date' => 0, 'last_connection_date' => time(), 'groups' => '', 'warning_percentage' => 0, 'delay_banned' => 0, 'delay_readonly' => 0);
 }
Example #18
0
     $rank_img = TPL_PATH_TO_ROOT . '/forum/templates/images/ranks/' . $user_rank_icon;
 }
 $user_assoc_img = !empty($user_rank_icon) ? '<img src="' . $rank_img . '" alt="' . $LANG['rank'] . '" />' : '';
 //Affichage des groupes du membre.
 if (!empty($row['groups'])) {
     $user_groups = '';
     $array_user_groups = explode('|', $row['groups']);
     foreach (GroupsService::get_groups() as $idgroup => $array_group_info) {
         if (is_numeric(array_search($idgroup, $array_user_groups))) {
             $user_groups .= !empty($array_group_info['img']) ? '<img src="../images/group/' . $array_group_info['img'] . '" alt="' . $array_group_info['name'] . '" title="' . $array_group_info['name'] . '"/><br />' : $LANG['group'] . ': ' . $array_group_info['name'] . '<br />';
         }
     }
 } else {
     $user_groups = $LANG['group'] . ': ' . $user_group;
 }
 $user_accounts_config = UserAccountsConfig::load();
 //Avatar
 if (empty($row['user_avatar'])) {
     $user_avatar = $user_accounts_config->is_default_avatar_enabled() == '1' ? '<img src="../templates/' . AppContext::get_current_user()->get_theme() . '/images/' . $user_accounts_config->get_default_avatar_name() . '" alt="' . LangLoader::get_message('avatar', 'user-common') . '" />' : '';
 } else {
     $user_avatar = '<img src="' . Url::to_rel($row['user_avatar']) . '" alt="' . LangLoader::get_message('avatar', 'user-common') . '" />';
 }
 //Affichage du nombre de message.
 if ($row['posted_msg'] >= 1) {
     $posted_msg = '<a href="' . UserUrlBuilder::messages($row['user_id'])->rel() . '" class="small">' . $LANG['message_s'] . '</a>: ' . $row['posted_msg'];
 } else {
     $posted_msg = !$is_guest ? '<a href="' . PATH_TO_ROOT . '/forum/membermsg' . url('.php?id=' . $row['user_id'], '') . '" class="small">' . $LANG['message'] . '</a>: 0' : $LANG['message'] . ': 0';
 }
 $user_sign_field = $extended_fields_cache->get_extended_field_by_field_name('user_sign');
 $tpl->assign_block_vars('list', array('C_GROUP_COLOR' => !empty($group_color), 'C_GUEST' => empty($row['display_name']), 'CONTENTS' => FormatingHelper::second_parse($row['contents']), 'DATE' => $LANG['on'] . ' ' . Date::to_format($row['timestamp'], Date::FORMAT_DAY_MONTH_YEAR_HOUR_MINUTE), 'ID' => $row['id'], 'USER_RANK' => $row['warning_percentage'] < '100' || time() - $row['delay_banned'] < 0 ? $user_rank : LangLoader::get_message('banned', 'user-common'), 'USER_IMG_ASSOC' => $user_assoc_img, 'USER_AVATAR' => $user_avatar, 'USER_GROUP' => $user_groups, 'USER_DATE' => !$is_guest ? $LANG['registered_on'] . ': ' . Date::to_format($row['registered'], Date::FORMAT_DAY_MONTH_YEAR) : '', 'USER_MSG' => !$is_guest ? $posted_msg : '', 'USER_MAIL' => !empty($row['email']) && $row['show_email'] == '1' ? '<a href="mailto:' . $row['email'] . '" class="basic-button smaller">Mail</a>' : '', 'USER_SIGN' => !empty($row['user_sign']) && !empty($user_sign_field) && $user_sign_field['display'] ? '____________________<br />' . FormatingHelper::second_parse($row['user_sign']) : '', 'USER_WARNING' => $row['warning_percentage'], 'USER_PM' => !$is_guest && AppContext::get_current_user()->check_level(User::MEMBER_LEVEL) ? '<a href="' . UserUrlBuilder::personnal_message($row['user_id'])->rel() . '" class="basic-button smaller">MP</a>' : '', 'USER_ONLINE' => '<i class="fa ' . (!empty($row['connect']) ? 'fa-online' : 'fa-offline') . '"></i>', 'USER_PSEUDO' => !empty($row['display_name']) ? wordwrap(TextHelper::html_entity_decode($row['display_name']), 13, '<br />', 1) : $LANG['guest'], 'LEVEL_CLASS' => UserService::get_level_class($row['level']), 'GROUP_COLOR' => $group_color, 'U_USER_PROFILE' => UserUrlBuilder::profile($row['user_id'])->rel(), 'U_VARS_ANCRE' => url('.php?id=' . $row['idtopic'], '-' . $row['idtopic'] . $rewrited_title . '.php'), 'U_FORUM_CAT' => '<a class="forum-mbrmsg-links" href="' . PATH_TO_ROOT . '/forum/forum' . url('.php?id=' . $row['idcat'], '-' . $row['idcat'] . $rewrited_cat_title . '.php') . '">' . $row['name'] . '</a>', 'U_TITLE_T' => '<a class="forum-mbrmsg-links" href="' . PATH_TO_ROOT . '/forum/topic' . url('.php?id=' . $row['idtopic'], '-' . $row['idtopic'] . $rewrited_title . '.php') . '">' . stripslashes($row['title']) . '</a>'));
 foreach ($displayed_extended_fields as $field_type) {
 private function upload_avatar($form, $member_extended_field)
 {
     $avatar = $form->get_value('upload_avatar');
     $user_accounts_config = UserAccountsConfig::load();
     $authorized_pictures_extensions = FileUploadConfig::load()->get_authorized_picture_extensions();
     if (empty($authorized_pictures_extensions)) {
         return new MemberExtendedFieldErrorsMessageException(LangLoader::get_message('e_upload_invalid_format', 'errors'));
     }
     if ($form->get_value('link_avatar')) {
         if (preg_match('`([A-Za-z0-9()_-])+\\.(' . implode('|', array_map('preg_quote', $authorized_pictures_extensions)) . ')+$`i', $form->get_value('link_avatar'))) {
             $image = new Image($form->get_value('link_avatar'));
             if ($image->get_width() > $user_accounts_config->get_max_avatar_width() || $image->get_height() > $user_accounts_config->get_max_avatar_height()) {
                 if ($user_accounts_config->is_avatar_auto_resizing_enabled()) {
                     $directory = '/images/avatars/' . Url::encode_rewrite($image->get_name() . '_' . $this->key_hash()) . '.' . $image->get_extension();
                     $resizer = new ImageResizer();
                     $resizer->resize_with_max_values($image, $user_accounts_config->get_max_avatar_width(), $user_accounts_config->get_max_avatar_height(), PATH_TO_ROOT . $directory);
                     $this->delete_old_avatar($member_extended_field);
                     return $directory;
                 }
                 throw new MemberExtendedFieldErrorsMessageException(LangLoader::get_message('e_upload_max_dimension', 'errors'));
             }
             $this->delete_old_avatar($member_extended_field);
             return $form->get_value('link_avatar');
         } else {
             throw new MemberExtendedFieldErrorsMessageException(LangLoader::get_message('e_upload_invalid_format', 'errors'));
         }
     } elseif (!empty($avatar)) {
         if (UserAccountsConfig::load()->is_avatar_upload_enabled()) {
             $dir = '/images/avatars/';
             if ($user_accounts_config->is_avatar_auto_resizing_enabled()) {
                 $image = new Image($avatar->get_temporary_filename());
                 $resizer = new ImageResizer();
                 $explode = explode('.', $avatar->get_name());
                 $extension = array_pop($explode);
                 if (!in_array($extension, $authorized_pictures_extensions)) {
                     return new MemberExtendedFieldErrorsMessageException(LangLoader::get_message('e_upload_invalid_format', 'errors'));
                 }
                 $explode = explode('.', $avatar->get_name());
                 $name = $explode[0];
                 $directory = $dir . Url::encode_rewrite($name . '_' . $this->key_hash()) . '.' . $extension;
                 try {
                     $resizer->resize_with_max_values($image, $user_accounts_config->get_max_avatar_width(), $user_accounts_config->get_max_avatar_height(), PATH_TO_ROOT . $directory);
                     $this->delete_old_avatar($member_extended_field);
                     return $directory;
                 } catch (UnsupportedOperationException $e) {
                     throw new MemberExtendedFieldErrorsMessageException(LangLoader::get_message('e_upload_invalid_format', 'errors'));
                 }
             } else {
                 $Upload = new Upload(PATH_TO_ROOT . $dir);
                 $Upload->file($form->get_html_id() . '_upload_avatar', '`([A-Za-z0-9()_-])+\\.(' . implode('|', array_map('preg_quote', $authorized_pictures_extensions)) . ')+$`i', Upload::UNIQ_NAME, $user_accounts_config->get_max_avatar_weight() * 1024);
                 $upload_error = $Upload->get_error();
                 if (!empty($upload_error)) {
                     throw new MemberExtendedFieldErrorsMessageException(LangLoader::get_message($upload_error, 'errors'));
                 }
                 $error = $Upload->check_img($user_accounts_config->get_max_avatar_width(), $user_accounts_config->get_max_avatar_height(), Upload::DELETE_ON_ERROR);
                 if (!empty($error)) {
                     throw new MemberExtendedFieldErrorsMessageException(LangLoader::get_message($error, 'errors'));
                 } else {
                     $this->delete_old_avatar($member_extended_field);
                     return $dir . $Upload->get_filename();
                 }
             }
         }
     } else {
         return MemberExtendedFieldsService::return_field_member($member_extended_field->get_field_name(), $member_extended_field->get_user_id());
     }
 }
Example #20
0
 public static function remove_old_unactivated_member_accounts()
 {
     $user_account_settings = UserAccountsConfig::load();
     $delay_unactiv_max = $user_account_settings->get_unactivated_accounts_timeout() * 3600 * 24;
     if ($delay_unactiv_max > 0 && $user_account_settings->get_member_accounts_validation_method() != 2) {
         $result = self::$querier->select_rows(DB_TABLE_INTERNAL_AUTHENTICATION, array('user_id'), 'WHERE last_connection < :last_connection AND approved = 0', array('last_connection' => time() - $delay_unactiv_max));
         foreach ($result as $row) {
             self::delete_by_id($row['user_id']);
         }
     }
 }
 private function init_vars_template()
 {
     $this->view->put_all(array('C_REGISTRATION_ENABLED' => UserAccountsConfig::load()->is_registration_enabled(), 'C_USER_LOGIN' => $this->login_type == self::USER_LOGIN && !$this->maintain_config->is_under_maintenance(), 'C_ADMIN_LOGIN' => $this->login_type == self::ADMIN_LOGIN, 'C_HAS_ERROR' => $this->has_error, 'U_REGISTER' => UserUrlBuilder::registration()->rel(), 'U_FORGET_PASSWORD' => UserUrlBuilder::forget_password()->rel(), 'L_FORGET_PASSWORD' => $this->lang['forget-password'], 'LOGIN_FORM' => $this->form->display()));
     if ($this->maintain_config->is_under_maintenance()) {
         $this->init_maintain_delay();
         $this->view->put_all(array('C_MAINTAIN' => true, 'L_MAINTAIN' => FormatingHelper::second_parse($this->maintain_config->get_message())));
     }
 }
 private function save()
 {
     $this->general_config->set_site_name($this->form->get_value('site_name'));
     $this->general_config->set_site_slogan($this->form->get_value('site_slogan'));
     $this->general_config->set_site_description($this->form->get_value('site_description'));
     $module_home_page = $this->form->get_value('start_page')->get_raw_value();
     $this->general_config->set_module_home_page($module_home_page);
     if ($module_home_page == 'other') {
         $this->general_config->set_other_home_page($this->form->get_value('other_start_page'));
     } else {
         $this->general_config->set_other_home_page('');
     }
     GeneralConfig::save();
     $this->graphical_environment_config->set_visit_counter_enabled($this->form->get_value('visit_counter'));
     $this->graphical_environment_config->set_page_bench_enabled($this->form->get_value('page_bench'));
     $this->graphical_environment_config->set_display_theme_author($this->form->get_value('display_theme_author'));
     GraphicalEnvironmentConfig::save();
     $this->user_accounts_config->set_default_lang($this->form->get_value('default_language')->get_raw_value());
     $this->user_accounts_config->set_default_theme($this->form->get_value('default_theme')->get_raw_value());
     UserAccountsConfig::save();
 }
Example #23
0
 public static function init_session()
 {
     Session::gc();
     $session_data = Session::start();
     AppContext::set_session($session_data);
     AppContext::init_current_user();
     $current_user = AppContext::get_current_user();
     $user_accounts_config = UserAccountsConfig::load();
     $user_theme = ThemesManager::get_theme($current_user->get_theme());
     $default_theme = $user_accounts_config->get_default_theme();
     if ($user_theme === null || (!$user_theme->check_auth() || !$user_theme->is_activated()) && $user_theme->get_id() !== $default_theme) {
         AppContext::get_current_user()->update_theme($default_theme);
     }
     $user_lang = LangsManager::get_lang($current_user->get_locale());
     $default_lang = $user_accounts_config->get_default_lang();
     if ($user_lang === null || (!$user_lang->check_auth() || !$user_lang->is_activated()) && $user_lang->get_id() !== $default_lang) {
         AppContext::get_current_user()->update_lang($default_lang);
     }
 }
 private function save()
 {
     $this->content_formatting_config->set_default_editor($this->form->get_value('formatting_language')->get_raw_value());
     $this->content_formatting_config->set_html_tag_auth($this->form->get_value('authorizations')->build_auth_array());
     $forbidden_tags = array();
     foreach ($this->form->get_value('forbidden_tags') as $field => $option) {
         $forbidden_tags[] = $option->get_raw_value();
     }
     $this->content_formatting_config->set_forbidden_tags($forbidden_tags);
     ContentFormattingConfig::save();
     if ($this->form->get_value('anti_flood_enabled')) {
         $this->content_management_config->set_anti_flood_enabled(true);
     } else {
         $this->content_management_config->set_anti_flood_enabled(false);
     }
     $this->content_management_config->set_anti_flood_duration($this->form->get_value('delay_flood'));
     $this->content_management_config->set_used_captcha_module($this->form->get_value('captcha_used')->get_raw_value());
     ContentManagementConfig::save();
     $this->user_accounts_config->set_max_private_messages_number($this->form->get_value('max_pm_number'));
     UserAccountsConfig::save();
 }
 public function get_right_controller_regarding_authorizations()
 {
     if (!UserAccountsConfig::load()->is_registration_enabled() || AppContext::get_current_user()->check_level(User::MEMBER_LEVEL)) {
         AppContext::get_response()->redirect(Environment::get_home_page());
     }
     return $this;
 }
 public function update_langs()
 {
     $active_langs_number = 0;
     foreach (LangsManager::get_installed_langs_map() as $id => $lang) {
         if ($lang->get_configuration()->get_compatibility() == self::NEW_KERNEL_VERSION) {
             $active_langs_number++;
         } else {
             LangsManager::uninstall($id);
             $this->add_information_to_file('lang ' . $id, 'has been uninstalled because : incompatible with new version');
         }
     }
     if (empty($active_langs_number)) {
         LangsManager::install('french');
         $user_accounts_config = UserAccountsConfig::load();
         $user_accounts_config->set_default_lang('french');
         UserAccountsConfig::save();
     }
 }
Example #27
0
 /**
  * @desc Adds to the site map all the kernel links.
  * @param int $mode USER_MODE ou SEARCH_ENGINE_MODE, it depends on if you want to show it to a user in particular or to anybody
  * @param int $auth_mode AUTH_GUEST or AUTH_USERS, it depends if you want to display only the public pages or also the private ones.
  */
 private function build_kernel_map($mode = self::USER_MODE, $auth_mode = self::AUTH_PUBLIC)
 {
     global $LANG;
     //We consider the kernel as a module
     $kernel_map = new ModuleMap(new SitemapLink($LANG['home'], new Url(Environment::get_home_page())));
     //The site description
     $kernel_map->set_description(nl2br(GeneralConfig::load()->get_site_description()));
     //All the links which not need to be present in the search engine results.
     if ($mode == self::USER_MODE) {
         if (AppContext::get_current_user()->check_auth(UserAccountsConfig::load()->get_auth_read_members(), UserAccountsConfig::AUTH_READ_MEMBERS_BIT)) {
             $kernel_map->add(new SitemapLink(LangLoader::get_message('members-list', 'user-common'), UserUrlBuilder::home()));
         }
         //Member space
         if ($auth_mode == self::AUTH_USER && AppContext::get_current_user()->check_level(User::MEMBER_LEVEL)) {
             //We create a section for that
             $member_space_section = new SitemapSection(new SitemapLink($LANG['my_private_profile'], UserUrlBuilder::profile(AppContext::get_current_user()->get_id())));
             //Profile edition
             $member_space_section->add(new SitemapLink(LangLoader::get_message('profile.edit', 'user-common'), UserUrlBuilder::edit_profile(AppContext::get_current_user()->get_id())));
             //Private messaging
             $member_space_section->add(new SitemapLink($LANG['private_messaging'], UserUrlBuilder::personnal_message(AppContext::get_current_user()->get_id())));
             //Contribution panel
             $member_space_section->add(new SitemapLink($LANG['contribution_panel'], UserUrlBuilder::contribution_panel()));
             //Administration panel
             if (AppContext::get_current_user()->check_level(User::ADMIN_LEVEL)) {
                 $member_space_section->add(new SitemapLink($LANG['admin_panel'], UserUrlBuilder::administration()));
             }
             //We add it to the kernel map
             $kernel_map->add($member_space_section);
         }
     }
     //The kernel map is added to the site map
     $this->add($kernel_map);
 }
 public function get_right_controller_regarding_authorizations()
 {
     if (!AppContext::get_current_user()->check_auth(UserAccountsConfig::load()->get_auth_read_members(), UserAccountsConfig::AUTH_READ_MEMBERS_BIT)) {
         $error_controller = PHPBoostErrors::user_not_authorized();
         DispatchManager::redirect($error_controller);
     }
     return $this;
 }
 /**
  * @return UserAccountsConfig
  */
 private static function prepare_config()
 {
     global $LANG;
     $LANG = array();
     $LANG['site_config_msg_mbr'] = 'toto';
     $LANG['register_agreement'] = 'tata';
     $config = new UserAccountsConfig();
     $config->set_default_values();
     return $config;
 }
 /**
  *  @desc Return the string to print the result
  *  @param &string[] $result_data the result's data
  *  @return string[] The string to print the result of a search element
  */
 public function parse_search_result($result_data)
 {
     global $LANG;
     load_module_lang('forum');
     //Chargement de la langue du module.
     $tpl = new FileTemplate('forum/forum_generic_results.tpl');
     $tpl->put_all(array('L_ON' => $LANG['on'], 'L_TOPIC' => $LANG['topic']));
     $rewrited_title = ServerEnvironmentConfig::load()->is_url_rewriting_enabled() ? '+' . Url::encode_rewrite($result_data['title']) : '';
     $tpl->put_all(array('USER_ONLINE' => '<i class="fa ' . (!empty($result_data['connect']) && $result_data['user_id'] !== -1 ? 'fa-online' : 'fa-offline') . '"></i>', 'U_USER_PROFILE' => !empty($result_data['user_id']) ? UserUrlBuilder::profile($result_data['user_id'])->rel() : '', 'USER_PSEUDO' => !empty($result_data['display_name']) ? TextHelper::wordwrap_html($result_data['display_name'], 13) : $LANG['guest'], 'U_TOPIC' => PATH_TO_ROOT . '/forum/topic' . url('.php?id=' . $result_data['topic_id'], '-' . $result_data['topic_id'] . $rewrited_title . '.php') . '#m' . $result_data['msg_id'], 'TITLE' => stripslashes($result_data['title']), 'DATE' => Date::to_format($result_data['date'], 'd/m/y'), 'CONTENTS' => FormatingHelper::second_parse(stripslashes($result_data['contents'])), 'USER_AVATAR' => '<img src="' . (UserAccountsConfig::load()->is_default_avatar_enabled() && !empty($result_data['avatar']) ? $result_data['avatar'] : PATH_TO_ROOT . '/templates/' . AppContext::get_current_user()->get_theme() . '/images/' . UserAccountsConfig::load()->get_default_avatar_name()) . '" alt="' . LangLoader::get_message('avatar', 'user-common') . '" class="message-avatar"/>'));
     return $tpl->render();
 }