public function build_view(HTTPRequestCustom $request)
    {
        $authorized_categories = FaqService::get_authorized_categories(Category::ROOT_CATEGORY);
        $mode = $request->get_getstring('sort', FaqUrlBuilder::DEFAULT_SORT_MODE);
        $field = $request->get_getstring('field', FaqUrlBuilder::DEFAULT_SORT_FIELD);
        $sort_mode = $mode == 'asc' ? 'ASC' : 'DESC';
        switch ($field) {
            case 'question':
                $sort_field = FaqQuestion::SORT_ALPHABETIC;
                break;
            default:
                $sort_field = FaqQuestion::SORT_DATE;
                break;
        }
        $result = PersistenceContext::get_querier()->select('SELECT *
		FROM ' . FaqSetup::$faq_table . ' faq
		LEFT JOIN ' . DB_TABLE_MEMBER . ' member ON member.user_id = faq.author_user_id
		WHERE approved = 0
		AND faq.id_category IN :authorized_categories
		' . (!FaqAuthorizationsService::check_authorizations()->moderation() ? ' AND faq.author_user_id = :user_id' : '') . '
		ORDER BY ' . $sort_field . ' ' . $sort_mode, array('authorized_categories' => $authorized_categories, 'user_id' => AppContext::get_current_user()->get_id()));
        $this->tpl->put_all(array('C_QUESTIONS' => $result->get_rows_count() > 0, 'C_PENDING' => true, 'C_MORE_THAN_ONE_QUESTION' => $result->get_rows_count() > 1, 'C_DISPLAY_TYPE_ANSWERS_HIDDEN' => FaqConfig::load()->is_display_type_answers_hidden(), 'QUESTIONS_NUMBER' => $result->get_rows_count()));
        while ($row = $result->fetch()) {
            $faq_question = new FaqQuestion();
            $faq_question->set_properties($row);
            $this->tpl->assign_block_vars('questions', $faq_question->get_array_tpl_vars());
        }
        $result->dispose();
        $this->build_sorting_form($field, $mode);
    }
 public function execute(HTTPRequestCustom $request)
 {
     $id = $request->get_getint('id', 0);
     if (!empty($id)) {
         try {
             $this->weblink = WebService::get_weblink('WHERE web.id = :id', array('id' => $id));
         } catch (RowNotFoundException $e) {
             $error_controller = PHPBoostErrors::unexisting_page();
             DispatchManager::redirect($error_controller);
         }
     }
     if ($this->weblink !== null && !DownloadAuthorizationsService::check_authorizations($this->weblink->get_id_category())->read()) {
         $error_controller = PHPBoostErrors::user_not_authorized();
         DispatchManager::redirect($error_controller);
     } else {
         if ($this->weblink !== null && $this->weblink->is_visible()) {
             $this->weblink->set_number_views($this->weblink->get_number_views() + 1);
             WebService::update_number_views($this->weblink);
             WebCache::invalidate();
             AppContext::get_response()->redirect($this->weblink->get_url()->absolute());
         } else {
             $error_controller = PHPBoostErrors::unexisting_page();
             DispatchManager::redirect($error_controller);
         }
     }
 }
 public function execute(HTTPRequestCustom $request)
 {
     $module_id = $request->get_getstring('module_id', '');
     if (empty($module_id)) {
         AppContext::get_response()->redirect(Environment::get_home_page());
     }
     $this->init();
     $module_category_id = $request->get_getint('module_category_id', 0);
     $feed_name = $request->get_getstring('feed_name', Feed::DEFAULT_FEED_NAME);
     $feed = new ATOM($module_id, $feed_name, $module_category_id);
     if ($feed !== null && $feed->is_in_cache()) {
         $this->tpl->put('SYNDICATION', $feed->read());
     } else {
         $eps = AppContext::get_extension_provider_service();
         if ($eps->provider_exists($module_id, FeedProvider::EXTENSION_POINT)) {
             $provider = $eps->get_provider($module_id);
             $feeds = $provider->feeds();
             $data = $feeds->get_feed_data_struct($module_category_id, $feed_name);
             if ($data === null) {
                 AppContext::get_response()->set_header('content-type', 'text/html');
                 DispatchManager::redirect(PHPBoostErrors::unexisting_element());
             } else {
                 $feed->load_data($data);
                 $feed->cache();
                 $this->tpl->put('SYNDICATION', $feed->export());
             }
         } else {
             DispatchManager::redirect(PHPBoostErrors::module_not_installed());
         }
     }
     return $this->build_response($this->tpl);
 }
 /**
  * @desc This function required object Notation containing the module_name, id_in_module, user_id, note and notation_scale.
  * @param object $notation Notation
  */
 public static function display_active_image(Notation $notation)
 {
     $note_post = AppContext::get_request()->get_int('note', 0);
     $id_post = AppContext::get_request()->get_int('id', 0);
     if (!empty($note_post) && !empty($id_post)) {
         $notation->set_id_in_module($id_post);
         $notation->set_note($note_post);
         self::register_notation($notation);
     } else {
         $template = new FileTemplate('framework/content/notation/notation.tpl');
         $average_notes = $notation->get_average_notes();
         $int = intval($average_notes);
         $decimal = floatval('0.' . substr($average_notes, strpos($average_notes, '.') + 1));
         for ($i = 1; $i <= $notation->get_notation_scale(); $i++) {
             $star_full = false;
             $star_half = false;
             $star_empty = false;
             if ($int >= $i || $int + 1 == $i && $decimal >= 0.75) {
                 $star_full = true;
             } else {
                 if ($int + 1 == $i && $decimal > 0.25 && $decimal < 0.75) {
                     $star_half = true;
                 } else {
                     $star_empty = true;
                 }
             }
             $template->assign_block_vars('star', array('I' => $i, 'STAR_EMPTY' => $star_empty, 'STAR_HALF' => $star_half, 'STAR_FULL' => $star_full));
         }
         $count_notes = $notation->get_number_notes();
         $template->put_all(array('C_JS_NOT_ALREADY_INCLUDED' => !self::$js_already_included, 'C_NOTES' => $count_notes > 0 ? true : false, 'C_MORE_1_NOTES' => $count_notes > 1 ? true : false, 'CURRENT_URL' => REWRITED_SCRIPT, 'ID_IN_MODULE' => $notation->get_id_in_module(), 'NOTATION_SCALE' => $notation->get_notation_scale(), 'NUMBER_NOTES' => $count_notes, 'AVERAGE_NOTES' => $average_notes, 'ALREADY_NOTE' => $notation->user_already_noted(), 'L_NO_NOTE' => LangLoader::get_message('no_note', 'common'), 'L_AUTH_ERROR' => LangLoader::get_message('error.auth', 'status-messages-common'), 'L_ALREADY_NOTE' => self::$lang['already_vote'], 'L_NOTES' => LangLoader::get_message('notes', 'common'), 'L_NOTE' => LangLoader::get_message('note', 'common'), 'L_VALID_NOTE' => LangLoader::get_message('add_note', 'common')));
         self::$js_already_included = true;
         return $template->render();
     }
 }
 private function clear_caches()
 {
     $cache_service = AppContext::get_cache_service();
     $cache_service->clear_phpboost_cache();
     $cache_service->clear_syndication_cache();
     CLIOutput::writeln('Caches cleared');
 }
    private function build_table()
    {
        $table_model = new SQLHTMLTableModel(DownloadSetup::$download_table, 'table', array(new HTMLTableColumn(LangLoader::get_message('form.name', 'common'), 'name'), new HTMLTableColumn(LangLoader::get_message('category', 'categories-common'), 'id_category'), new HTMLTableColumn(LangLoader::get_message('author', 'common'), 'display_name'), new HTMLTableColumn(LangLoader::get_message('form.date.creation', 'common'), 'creation_date'), new HTMLTableColumn(LangLoader::get_message('status', 'common'), 'approbation_type'), new HTMLTableColumn('')), new HTMLTableSortingRule('creation_date', HTMLTableSortingRule::DESC));
        $table = new HTMLTable($table_model);
        $table_model->set_caption($this->lang['download.management']);
        $results = array();
        $result = $table_model->get_sql_results('download
			LEFT JOIN ' . DB_TABLE_COMMENTS_TOPIC . ' com ON com.id_in_module = download.id AND com.module_id = \'download\'
			LEFT JOIN ' . DB_TABLE_AVERAGE_NOTES . ' notes ON notes.id_in_module = download.id AND notes.module_name = \'download\'
			LEFT JOIN ' . DB_TABLE_NOTE . ' note ON note.id_in_module = download.id AND note.module_name = \'download\' AND note.user_id = ' . AppContext::get_current_user()->get_id() . '
			LEFT JOIN ' . DB_TABLE_MEMBER . ' member ON member.user_id = download.author_user_id', array('*', 'download.id'));
        foreach ($result as $row) {
            $downloadfile = new DownloadFile();
            $downloadfile->set_properties($row);
            $category = $downloadfile->get_category();
            $user = $downloadfile->get_author_user();
            $edit_link = new LinkHTMLElement(DownloadUrlBuilder::edit($downloadfile->get_id()), '', array('title' => LangLoader::get_message('edit', 'common')), 'fa fa-edit');
            $delete_link = new LinkHTMLElement(DownloadUrlBuilder::delete($downloadfile->get_id()), '', array('title' => LangLoader::get_message('delete', 'common'), 'data-confirmation' => 'delete-element'), 'fa fa-delete');
            $user_group_color = User::get_group_color($user->get_groups(), $user->get_level(), true);
            $author = $user->get_id() !== User::VISITOR_LEVEL ? new LinkHTMLElement(UserUrlBuilder::profile($user->get_id()), $user->get_display_name(), !empty($user_group_color) ? array('style' => 'color: ' . $user_group_color) : array(), UserService::get_level_class($user->get_level())) : $user->get_display_name();
            $results[] = new HTMLTableRow(array(new HTMLTableRowCell(new LinkHTMLElement(DownloadUrlBuilder::display($category->get_id(), $category->get_rewrited_name(), $downloadfile->get_id(), $downloadfile->get_rewrited_name()), $downloadfile->get_name()), 'left'), new HTMLTableRowCell(new LinkHTMLElement(DownloadUrlBuilder::display_category($category->get_id(), $category->get_rewrited_name()), $category->get_name())), new HTMLTableRowCell($author), new HTMLTableRowCell($downloadfile->get_creation_date()->format(Date::FORMAT_DAY_MONTH_YEAR_HOUR_MINUTE)), new HTMLTableRowCell($downloadfile->get_status()), new HTMLTableRowCell($edit_link->display() . $delete_link->display())));
        }
        $table->set_rows($table_model->get_number_of_matching_rows(), $results);
        $this->view->put('table', $table->display());
    }
 public function __construct(Exception $exception)
 {
     $this->exception = $exception;
     $this->type = get_class($this->exception);
     $this->message = str_replace("\n", "<br />", $this->exception->getMessage());
     $this->ob_content = AppContext::get_response()->get_previous_ob_content();
 }
 function execute(HTTPRequestCustom $request)
 {
     session_start();
     $data = PersistenceContext::get_querier()->select_single_row(PREFIX . 'member', array('user_id'), 'WHERE login=:user_login', array('user_login' => $_SESSION['wpimport']['default_author']));
     $_SESSION['wpimport']['wppath'] = substr($_SESSION['wpimport']['wppath'], -1) != '/' ? $_SESSION['wpimport']['wppath'] . '/' : $_SESSION['wpimport']['wppath'];
     $_SESSION['wpimport']['phpboostpath'] = substr($_SESSION['wpimport']['phpboostpath'], -1) != '/' ? $_SESSION['wpimport']['phpboostpath'] . '/' : $_SESSION['wpimport']['phpboostpath'];
     define('WP_PATH', $_SESSION['wpimport']['wppath']);
     define('PBOOST_PATH', $_SESSION['wpimport']['phpboostpath']);
     define('IMPORTER_LIST', $_SESSION['wpimport']['importer']);
     define('PHPBOOST_CAT_IMAGE', $_SESSION['wpimport']['default_cat_image']);
     define('FILESYSTEM_IMPORT_LOCATION', $_SESSION['wpimport']['import_location']);
     define('DEFAULT_AUTHOR_ID', $data['user_id']);
     ini_set('max_execution_time', 0);
     if (function_exists('xdebug_disable')) {
         xdebug_disable();
     }
     ob_start();
     echo 'Start import : ' . date('H:i:s') . PHP_EOL;
     echo '-----' . PHP_EOL . PHP_EOL;
     $success = (require_once __DIR__ . '/../WP2PhpBoost/wp2phpboost.php');
     echo 'Clean cache...' . PHP_EOL;
     AppContext::get_cache_service()->clear_cache();
     echo PHP_EOL . PHP_EOL;
     echo '-----' . PHP_EOL;
     echo 'End import : ' . date('H:i:s');
     $logs = ob_get_clean();
     return new JSONResponse(array('success' => $success, 'logs' => utf8_decode($logs)));
 }
 public function get_search_request($args)
 {
     $search = $args['search'];
     $weight = isset($args['weight']) && is_numeric($args['weight']) ? $args['weight'] : 1;
     require_once PATH_TO_ROOT . '/pages/pages_defines.php';
     $categories = PagesCategoriesCache::load()->get_categories();
     $unauth_cats = '';
     if (!AppContext::get_current_user()->check_auth(PagesConfig::load()->get_authorizations(), READ_PAGE)) {
         $unauth_cats .= '0,';
     }
     foreach ($categories as $id => $cat) {
         if (!AppContext::get_current_user()->check_auth($cat['auth'], READ_PAGE)) {
             $unauth_cats .= $id . ',';
         }
     }
     $unauth_cats = !empty($unauth_cats) ? " AND p.id_cat NOT IN (" . trim($unauth_cats, ',') . ")" : '';
     $results = array();
     $result = PersistenceContext::get_querier()->select("SELECT " . $args['id_search'] . " AS `id_search`,\r\n\t\tp.id AS `id_content`,\r\n\t\tp.title AS `title`,\r\n\t\t( 2 * FT_SEARCH_RELEVANCE(p.title, '" . $args['search'] . "') + FT_SEARCH_RELEVANCE(p.contents, '" . $args['search'] . "') ) / 3 * " . $weight . " AS `relevance`,\r\n\t\tCONCAT('" . PATH_TO_ROOT . "/pages/pages.php?title=',p.encoded_title) AS `link`,\r\n\t\tp.auth AS `auth`\r\n\t\tFROM " . PREFIX . "pages p\r\n\t\tWHERE ( FT_SEARCH(title, '" . $args['search'] . "') OR FT_SEARCH(contents, '" . $args['search'] . "') )" . $unauth_cats . "\r\n\t\tLIMIT 100 OFFSET 0");
     while ($row = $result->fetch()) {
         if (!empty($row['auth'])) {
             $auth = unserialize($row['auth']);
             if (!AppContext::get_current_user()->check_auth($auth, READ_PAGE)) {
                 unset($row['auth']);
                 array_push($results, $row);
             }
         } else {
             unset($row['auth']);
             array_push($results, $row);
         }
     }
     $result->dispose();
     return $results;
 }
 public final function get_right_controller_regarding_authorizations()
 {
     if (!AppContext::get_current_user()->is_admin()) {
         return new UserLoginController(UserLoginController::ADMIN_LOGIN, substr(REWRITED_SCRIPT, strlen(GeneralConfig::load()->get_site_path())));
     }
     return $this;
 }
 public function build_form()
 {
     $form = new HTMLForm(__CLASS__);
     // Fieldset to configure path
     $fieldsetPath = new FormFieldsetHTML('wpimport-path', $this->lang['wpimport.fieldset-path']);
     $form->add_fieldset($fieldsetPath);
     $fieldsetPath->add_field(new FormFieldTextEditor('phpboostpath', $this->lang['wpimport.phpboostpath'], realpath(__DIR__ . '/../../')));
     $fieldsetPath->add_field(new FormFieldTextEditor('wppath', $this->lang['wpimport.wppath'], realpath(__DIR__ . '/../../../'), array(), array(new FormFieldConstraintWordPressPath($this->lang['constraint.wp-path']))));
     // Fieldset to configure which data are import
     $fieldsetImporter = new FormFieldsetHTML('wpimport-importer', $this->lang['wpimport.fieldset-importer']);
     $form->add_fieldset($fieldsetImporter);
     $importers = $this->listImporters();
     foreach ($importers as $importer) {
         $fieldsetImporter->add_field(new FormFieldCheckbox('importer_' . $importer['name'], $importer['name'], FormFieldCheckbox::UNCHECKED, array('description' => $this->lang['wpimport.description'] . ': ' . utf8_decode($importer['description']) . '<br />' . $this->lang['wpimport.version'] . ': ' . $importer['version'])));
     }
     // Fieldset to confgure options
     $fieldsetOptions = new FormFieldsetHTML('wpimport-options', $this->lang['wpimport.fieldset-options']);
     $form->add_fieldset($fieldsetOptions);
     // Default Author
     $fieldsetOptions->add_field(new FormFieldAjaxUserAutoComplete('default_author', $this->lang['wpimport.default_author'], AppContext::get_current_user()->get_login(), array('description' => $this->lang['wpimport.default_author.decription']), array(new FormFieldConstraintUserExist($this->lang['wpimport.default_author.error_user_exist']))));
     // Default Image
     $fieldsetOptions->add_field(new FormFieldUploadFile('default_cat_image', $this->lang['wpimport.default_cat_image'], $this->getDefaultConfiguration()['PHPBOOST_CAT_IMAGE'], array('description' => $this->lang['wpimport.default_cat_image.description'])));
     $fieldsetOptions->add_field(new FormFieldTextEditor('import_location', $this->lang['wpimport.import_location'], $this->getDefaultConfiguration()['FILESYSTEM_IMPORT_LOCATION'], array('description' => $this->lang['wpimport.import_location.description'])));
     $this->submit_button = new FormButtonSubmit($this->lang['wpimport.submit_configuration'], 'submit_configuration');
     $form->add_button($this->submit_button);
     $form->add_button(new FormButtonReset($this->lang['wpimport.reset']));
     $this->form = $form;
 }
 private function check_authorizations()
 {
     $article = $this->get_article();
     $not_authorized = !ArticlesAuthorizationsService::check_authorizations($article->get_id_category())->write() && (!ArticlesAuthorizationsService::check_authorizations($article->get_id_category())->moderation() && $article->get_author_user()->get_id() != AppContext::get_current_user()->get_id());
     switch ($article->get_publishing_state()) {
         case Article::PUBLISHED_NOW:
             if (!ArticlesAuthorizationsService::check_authorizations()->read() && $not_authorized) {
                 $error_controller = PHPBoostErrors::user_not_authorized();
                 DispatchManager::redirect($error_controller);
             }
             break;
         case Article::NOT_PUBLISHED:
             if ($not_authorized) {
                 $error_controller = PHPBoostErrors::user_not_authorized();
                 DispatchManager::redirect($error_controller);
             }
             break;
         case Article::PUBLISHED_DATE:
             if (!$article->is_published() && $not_authorized) {
                 $error_controller = PHPBoostErrors::user_not_authorized();
                 DispatchManager::redirect($error_controller);
             }
             break;
         default:
             $error_controller = PHPBoostErrors::unexisting_page();
             DispatchManager::redirect($error_controller);
             break;
     }
 }
 private function save(HTTPRequestCustom $request)
 {
     $installed_modules = ModulesManager::get_installed_modules_map();
     foreach ($installed_modules as $module) {
         if ($request->get_string('delete-' . $module->get_id(), '')) {
             AppContext::get_response()->redirect(AdminModulesUrlBuilder::delete_module($module->get_id()));
         }
     }
     if ($request->get_bool('update', false)) {
         $errors = array();
         foreach ($installed_modules as $module) {
             $module_id = $module->get_id();
             $activated = $request->get_bool('activated-' . $module_id, false);
             $error = ModulesManager::update_module($module_id, $activated);
             if (!empty($error)) {
                 $errors[$module->get_configuration()->get_name()] = $error;
             }
         }
         if (empty($errors)) {
             AppContext::get_response()->redirect(AdminModulesUrlBuilder::list_installed_modules());
         } else {
             foreach ($errors as $module_name => $error) {
                 $this->view->assign_block_vars('errors', array('MSG' => MessageHelper::display($module_name . ' : ' . $error, MessageHelper::WARNING, 10)));
             }
         }
     }
 }
 public function get_content()
 {
     $tpl = new FileTemplate('newsletter/newsletter_mini.tpl');
     $tpl->add_lang(LangLoader::get('common', 'newsletter'));
     $tpl->put('USER_MAIL', AppContext::get_current_user()->get_email());
     return $tpl;
 }
 private function get_module_map($auth_mode)
 {
     $lang = LangLoader::get('common', 'bugtracker');
     $config = BugtrackerConfig::load();
     $current_user = AppContext::get_current_user();
     $link = new SitemapLink($lang['module_title'], BugtrackerUrlBuilder::home(), Sitemap::FREQ_DEFAULT, Sitemap::PRIORITY_MAX);
     $module_map = new ModuleMap($link, 'bugtracker');
     if ($auth_mode == Sitemap::AUTH_PUBLIC) {
         $this_auth = Authorizations::check_auth(RANK_TYPE, User::VISITOR_LEVEL, $config->get_authorizations(), BugtrackerAuthorizationsService::READ_AUTHORIZATIONS);
     } else {
         if ($auth_mode == Sitemap::AUTH_USER) {
             if ($current_user->get_level() == User::ADMIN_LEVEL) {
                 $this_auth = true;
             } else {
                 $this_auth = Authorizations::check_auth(RANK_TYPE, $current_user->get_level(), $config->get_authorizations(), BugtrackerAuthorizationsService::READ_AUTHORIZATIONS);
             }
         }
     }
     if ($this_auth) {
         $module_map->add(new SitemapLink($lang['titles.unsolved'], BugtrackerUrlBuilder::unsolved()));
         $module_map->add(new SitemapLink($lang['titles.solved'], BugtrackerUrlBuilder::solved()));
         if ($config->is_roadmap_enabled() && $config->get_versions()) {
             $module_map->add(new SitemapLink($lang['titles.roadmap'], BugtrackerUrlBuilder::roadmap()));
         }
         $module_map->add(new SitemapLink($lang['titles.stats'], BugtrackerUrlBuilder::stats()));
     }
     return $module_map;
 }
 public function execute(HTTPRequestCustom $request)
 {
     $this->load_lang();
     $this->load_config();
     $theme = $request->get_value('theme', 'all');
     if ($theme !== 'all' && !ThemesManager::get_theme_existed($theme)) {
         AppContext::get_response()->redirect(AdminCustomizeUrlBuilder::customize_interface());
     }
     $this->build_form($theme);
     $tpl = new StringTemplate('# INCLUDE MSG # # INCLUDE FORM #');
     $tpl->add_lang($this->lang);
     if ($this->submit_button->has_been_submited() && $this->form->validate()) {
         $header_logo = $this->form->get_value('header_logo', null);
         if ($header_logo !== null) {
             $file_type = new FileType(new File($header_logo->get_name()));
             if ($file_type->is_picture()) {
                 $this->save($header_logo, $theme);
                 AppContext::get_response()->redirect(AdminCustomizeUrlBuilder::customize_interface());
             } else {
                 $tpl->put('MSG', MessageHelper::display(LangLoader::get_message('process.error', 'status-messages-common'), MessageHelper::ERROR, 4));
             }
         } elseif ($this->form->get_value('use_default_logo')) {
             $this->delete_pictures_saved($theme);
             AppContext::get_response()->redirect(AdminCustomizeUrlBuilder::customize_interface());
         } else {
             $tpl->put('MSG', MessageHelper::display(LangLoader::get_message('process.error', 'status-messages-common'), MessageHelper::ERROR, 4));
         }
     }
     $tpl->put('FORM', $this->form->display());
     return new AdminCustomizationDisplayResponse($tpl, $this->lang['customization.interface']);
 }
 private function try_execute()
 {
     $this->load_env();
     $this->object_id = AppContext::get_request()->get_getint('menu_config_id');
     $menu_config = MenuConfigurationDAO::instance()->find_by_id($this->object_id);
     $this->view->put_all(array('NAME' => $menu_config->get_name(), 'MATCH_REGEX' => $menu_config->get_match_regex(), 'U_CONFIGURE' => MenuUrlBuilder::menu_configuration_configure($menu_config->get_id())->rel(), 'U_LIST' => MenuUrlBuilder::menu_configuration_list()->rel()));
 }
 private function init()
 {
     $this->user = AppContext::get_current_user();
     $this->tpl = new FileTemplate('user/UserHomeProfileController.tpl');
     $this->lang = LangLoader::get('user-common');
     $this->tpl->add_lang($this->lang);
 }
    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 function execute(HTTPRequestCustom $request)
 {
     AppContext::get_session()->no_session_location();
     AppContext::get_response()->set_status_code(404);
     AdminError404Service::register_404();
     return parent::execute($request);
 }
 public function execute(HTTPRequestCustom $request)
 {
     $id = $request->get_getint('id', 0);
     if (!empty($id) && AppContext::get_current_user()->check_level(User::MEMBER_LEVEL)) {
         try {
             $this->downloadfile = DownloadService::get_downloadfile('WHERE download.id = :id', array('id' => $id));
         } catch (RowNotFoundException $e) {
             $error_controller = PHPBoostErrors::unexisting_page();
             DispatchManager::redirect($error_controller);
         }
     }
     if ($this->downloadfile !== null && $this->downloadfile->is_visible()) {
         if (!PersistenceContext::get_querier()->row_exists(PREFIX . 'events', 'WHERE id_in_module=:id_in_module AND module=\'download\' AND current_status = 0', array('id_in_module' => $this->downloadfile->get_id()))) {
             $contribution = new Contribution();
             $contribution->set_id_in_module($this->downloadfile->get_id());
             $contribution->set_entitled(StringVars::replace_vars(LangLoader::get_message('contribution.deadlink', 'common'), array('link_name' => $this->downloadfile->get_name())));
             $contribution->set_fixing_url(DownloadUrlBuilder::edit($this->downloadfile->get_id())->relative());
             $contribution->set_description(LangLoader::get_message('contribution.deadlink_explain', 'common'));
             $contribution->set_poster_id(AppContext::get_current_user()->get_id());
             $contribution->set_module('download');
             $contribution->set_type('alert');
             $contribution->set_auth(Authorizations::capture_and_shift_bit_auth(DownloadService::get_categories_manager()->get_heritated_authorizations($this->downloadfile->get_id_category(), Category::MODERATION_AUTHORIZATIONS, Authorizations::AUTH_CHILD_PRIORITY), Category::MODERATION_AUTHORIZATIONS, Contribution::CONTRIBUTION_AUTH_BIT));
             ContributionService::save_contribution($contribution);
         }
         DispatchManager::redirect(new UserContributionSuccessController());
     } else {
         $error_controller = PHPBoostErrors::unexisting_page();
         DispatchManager::redirect($error_controller);
     }
 }
Example #22
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);
 }
 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;
     }
 }
Example #24
0
 public static function get_user_timezone()
 {
     if (self::$user_timezone == null) {
         self::$user_timezone = new DateTimeZone(AppContext::get_current_user()->get_timezone());
     }
     return self::$user_timezone;
 }
 public function get_right_controller_regarding_authorizations()
 {
     if (AppContext::get_current_user()->check_level(User::MEMBER_LEVEL)) {
         AppContext::get_response()->redirect(Environment::get_home_page());
     }
     return $this;
 }
 public function retrieve_value()
 {
     $request = AppContext::get_request();
     $config = ContactConfig::load();
     $fields = $config->get_fields();
     $recipients_field_id = $config->get_field_id_by_name('f_recipients');
     $recipients_field = new ContactField();
     $recipients_field->set_properties($fields[$recipients_field_id]);
     $recipients = $recipients_field->get_possible_values();
     $nb_recipients = count($recipients);
     $recipients_keys = array_keys($recipients);
     $values = array();
     for ($i = 0; $i <= $this->max_input; $i++) {
         $field_name = 'field_name_' . $this->get_html_id() . '_' . $i;
         if ($request->has_postparameter($field_name)) {
             $field_is_default = 'field_is_default_' . $this->get_html_id() . '_' . $i;
             $field_title = 'field_name_' . $this->get_html_id() . '_' . $i;
             $field_email = 'field_email_' . $this->get_html_id() . '_' . $i;
             $email = $i > 0 ? $request->get_poststring($field_email) : true;
             if ($request->get_poststring($field_title) && $email) {
                 $id = $i < $nb_recipients ? $recipients_keys[$i] : preg_replace('/\\s+/', '', $request->get_poststring($field_name));
                 $values[$id] = array('is_default' => $request->get_postint($field_is_default, 0), 'title' => addslashes($request->get_poststring($field_title)), 'email' => $request->get_poststring($field_email, ''));
             }
         }
     }
     $this->set_value($values);
 }
 public function execute(HTTPRequestCustom $request)
 {
     $lang = LangLoader::get('common');
     $is_admin = AppContext::get_current_user()->check_level(User::ADMIN_LEVEL);
     $number_admins = UserService::count_admin_members();
     $suggestions = array();
     try {
         $result = PersistenceContext::get_querier()->select("SELECT user_id, display_name, level, groups FROM " . DB_TABLE_MEMBER . " WHERE display_name LIKE '" . str_replace('*', '%', $request->get_value('value', '')) . "%'");
         while ($row = $result->fetch()) {
             $user_group_color = User::get_group_color($row['groups'], $row['level']);
             $suggestion = '';
             if ($is_admin) {
                 $edit_link = new LinkHTMLElement(UserUrlBuilder::edit_profile($row['user_id']), '', array('title' => $lang['edit']), 'fa fa-edit');
                 if ($row['level'] != User::ADMIN_LEVEL || $row['level'] == User::ADMIN_LEVEL && $number_admins > 1) {
                     $delete_link = new LinkHTMLElement(AdminMembersUrlBuilder::delete($row['user_id']), '', array('title' => $lang['delete'], 'data-confirmation' => 'delete-element'), 'fa fa-delete');
                 } else {
                     $delete_link = new LinkHTMLElement('', '', array('title' => $lang['delete'], 'onclick' => 'return false;'), 'fa fa-delete icon-disabled');
                 }
                 $suggestion .= $edit_link->display() . '&nbsp;' . $delete_link->display() . '&nbsp;';
             }
             $profile_link = new LinkHTMLElement(UserUrlBuilder::profile($row['user_id'])->rel(), $row['display_name'], array('style' => !empty($user_group_color) ? 'color:' . $user_group_color : ''), UserService::get_level_class($row['level']));
             $suggestion .= $profile_link->display();
             $suggestions[] = $suggestion;
         }
         $result->dispose();
     } catch (Exception $e) {
     }
     return new JSONResponse(array('suggestions' => $suggestions));
 }
 /**
  * @desc Second parses a string with several default parameters. This methods exists to lighten the number of lines written.
  * @param string $content Content to second parse
  * @return string The second parsed string.
  * @see ContentSecondParser
  */
 public static function second_parse($content)
 {
     $parser = AppContext::get_content_formatting_service()->get_default_second_parser();
     $parser->set_content($content);
     $parser->parse();
     return $parser->get_content();
 }
 public function execute(HTTPRequestCustom $request)
 {
     AppContext::get_session()->csrf_get_protect();
     $config = BugtrackerConfig::load();
     $parameter = $request->get_string('parameter', '');
     if (in_array($parameter, array('type', 'category', 'severity', 'priority', 'version'))) {
         switch ($parameter) {
             case 'type':
                 $config->set_default_type(0);
                 break;
             case 'category':
                 $config->set_default_category(0);
                 break;
             case 'severity':
                 $config->set_default_severity(0);
                 break;
             case 'priority':
                 $config->set_default_priority(0);
                 break;
             case 'version':
                 $config->set_default_version(0);
                 break;
         }
         BugtrackerConfig::save();
         AppContext::get_response()->redirect(BugtrackerUrlBuilder::configuration());
     } else {
         $controller = new UserErrorController(LangLoader::get_message('error', 'status-messages-common'), LangLoader::get_message('error.e_unexist_parameter', 'common', 'bugtracker'));
         $controller->set_response_classname(UserErrorController::ADMIN_RESPONSE);
         DispatchManager::redirect($controller);
     }
 }
Example #30
0
 function getMessage($codes, $arguments = null, $defaultMessage = '', $textDomain = '', $htmlEscape = null)
 {
     if (is_a($codes, 'MessageSourceResolvable')) {
         $msr = $codes;
         $codes = $msr->getCodes();
         $arguments = $msr->getArguments();
         $defaultMessage = $msr->getDefaultMessage();
     }
     if ($codes == null) {
         $codes = array();
     }
     if (!is_array($codes)) {
         $codes = array($codes);
     }
     foreach ($codes as $code) {
         $message =& AppContext::property($code);
         if ($message != null) {
             return RequestUtils::_renderMessage($message, $arguments, $textDomain, $htmlEscape);
         }
     }
     if ($defaultMessage != null && strlen(trim($defaultMessage)) != 0) {
         return RequestUtils::_renderMessage($defaultMessage, $arguments, $textDomain, $htmlEscape);
     }
     if (count($codes) > 0) {
         return $codes[0];
     }
     show_error('Message', 'No messages found for codes.');
 }