public function execute(HTTPRequestCustom $request)
 {
     $id = $request->get_int('id', 0);
     $page = $request->get_value('page', '');
     $filter = $request->get_value('filter', '');
     $filter_id = $request->get_value('filter_id', '');
     //Add filter
     BugtrackerService::add_filter(array('user_id' => AppContext::get_current_user()->get_id(), 'page' => $page, 'filters' => $filter, 'filters_ids' => $filter_id));
     AppContext::get_response()->redirect($request->get_url_referrer() ? $request->get_url_referrer() : BugtrackerUrlBuilder::unsolved(), LangLoader::get_message('success.add.filter', 'common', 'bugtracker'));
 }
 public function execute(HTTPRequestCustom $request)
 {
     $id = $request->get_int('id', 0);
     $id_stream = $request->get_int('id_stream', 0);
     if ($this->archive_exist($id) || $id_stream !== 0 && $id !== 0) {
         if (!NewsletterAuthorizationsService::id_stream($id_stream)->moderation_subscribers()) {
             NewsletterAuthorizationsService::get_errors()->moderation_archives();
         }
         NewsletterService::delete_archive($id);
         AppContext::get_response()->redirect($request->get_url_referrer() ? $request->get_url_referrer() : NewsletterUrlBuilder::archives($id_stream), LangLoader::get_message('newsletter.message.success.delete', 'common', 'newsletter'));
     } else {
         $controller = new UserErrorController(LangLoader::get_message('error', 'status-messages-common'), $this->lang['error-archive-not-existed']);
         DispatchManager::redirect($controller);
     }
 }
    private function build_form(HTTPRequestCustom $request)
    {
        $security_config = SecurityConfig::load();
        $form = new HTMLForm(__CLASS__);
        $fieldset = new FormFieldsetHTML('add_member', LangLoader::get_message('members.add-member', 'admin-user-common'));
        $form->add_fieldset($fieldset);
        $fieldset->add_field(new FormFieldTextEditor('display_name', $this->lang['display_name'], '', array('maxlength' => 100, 'required' => true, 'events' => array('blur' => '
				if (!HTMLForms.getField("login").getValue() && HTMLForms.getField("display_name").validate() == "") {
					HTMLForms.getField("login").setValue(HTMLForms.getField("display_name").getValue().replace(/\\s/g, \'\'));
					HTMLForms.getField("login").enableValidationMessage();
					HTMLForms.getField("login").liveValidate();
				}')), array(new FormFieldConstraintLengthRange(3, 100), new FormFieldConstraintDisplayNameExists())));
        $fieldset->add_field($email = new FormFieldMailEditor('email', $this->lang['email'], '', array('required' => true), array(new FormFieldConstraintMailExist())));
        $fieldset->add_field(new FormFieldCheckbox('custom_login', $this->lang['login.custom'], false, array('events' => array('click' => '
				if (HTMLForms.getField("custom_login").getValue()) {
					HTMLForms.getField("login").enable();
				} else {
					HTMLForms.getField("login").disable();
				}'))));
        $fieldset->add_field($login = new FormFieldTextEditor('login', $this->lang['login'], '', array('required' => true, 'hidden' => true, 'maxlength' => 25), array(new FormFieldConstraintLengthRange(3, 25), new FormFieldConstraintPHPBoostAuthLoginExists())));
        $fieldset->add_field($password = new FormFieldPasswordEditor('password', $this->lang['password'], '', array('required' => true), array(new FormFieldConstraintLengthMin($security_config->get_internal_password_min_length()), new FormFieldConstraintPasswordStrength())));
        $fieldset->add_field($password_bis = new FormFieldPasswordEditor('password_bis', $this->lang['password.confirm'], '', array('required' => true), array(new FormFieldConstraintLengthMin($security_config->get_internal_password_min_length()), new FormFieldConstraintPasswordStrength())));
        $form->add_constraint(new FormConstraintFieldsEquality($password, $password_bis));
        if ($security_config->are_login_and_email_forbidden_in_password()) {
            $form->add_constraint(new FormConstraintFieldsInequality($email, $password));
            $form->add_constraint(new FormConstraintFieldsInequality($login, $password));
        }
        $fieldset->add_field(new FormFieldRanksSelect('rank', $this->lang['rank'], FormFieldRanksSelect::MEMBER));
        $fieldset->add_field(new FormFieldHidden('referrer', $request->get_url_referrer()));
        $this->submit_button = new FormButtonDefaultSubmit();
        $form->add_constraint(new FormConstraintFieldsEquality($password, $password_bis));
        $form->add_button($this->submit_button);
        $form->add_button(new FormButtonReset());
        $this->form = $form;
    }
 public function execute(HTTPRequestCustom $request)
 {
     $user_id = $request->get_int('id', null);
     $user = UserService::get_user($user_id);
     if (!$user->is_admin() || $user->is_admin() && UserService::count_admin_members() > 1) {
         try {
             UserService::delete_by_id($user_id);
         } catch (RowNotFoundException $ex) {
             $error_controller = PHPBoostErrors::unexisting_element();
             DispatchManager::redirect($error_controller);
         }
         AppContext::get_response()->redirect($request->get_url_referrer() ? $request->get_url_referrer() : AdminMembersUrlBuilder::management(), StringVars::replace_vars(LangLoader::get_message('user.message.success.delete', 'user-common'), array('name' => $user->get_display_name())));
     } else {
         $error_controller = PHPBoostErrors::unauthorized_action();
         DispatchManager::redirect($error_controller);
     }
 }
 public function execute(HTTPRequestCustom $request)
 {
     $event_id = $request->get_getint('event_id', 0);
     $current_user_id = AppContext::get_current_user()->get_id();
     if (!empty($event_id)) {
         $this->get_event($event_id);
         $this->check_authorizations();
         if (in_array($current_user_id, array_keys($this->event->get_participants()))) {
             CalendarService::delete_participant($event_id, $current_user_id);
             CalendarCurrentMonthEventsCache::invalidate();
         }
         $category = $this->event->get_content()->get_category();
         AppContext::get_response()->redirect($request->get_url_referrer() ? $request->get_url_referrer() : CalendarUrlBuilder::display_event($category->get_id(), $category->get_rewrited_name(), $event_id, $this->event->get_content()->get_rewrited_title()));
     } else {
         $error_controller = PHPBoostErrors::unexisting_page();
         DispatchManager::redirect($error_controller);
     }
 }
 private function build_form(HTTPRequestCustom $request)
 {
     $form = new HTMLForm(__CLASS__);
     $fieldset = new FormFieldsetHTML('delete_bug');
     $form->add_fieldset($fieldset);
     $fieldset->add_field(new FormFieldRichTextEditor('comments_message', LangLoader::get_message('comment', 'comments-common'), '', array('description' => $this->lang['explain.delete_comment'], 'hidden' => !$this->config->are_pm_enabled() || !$this->config->are_pm_delete_enabled())));
     $fieldset->add_field(new FormFieldHidden('referrer', $request->get_url_referrer()));
     $this->submit_button = new FormButtonDefaultSubmit();
     $form->add_button($this->submit_button);
     $form->add_button(new FormButtonLink(LangLoader::get_message('back', 'main'), 'javascript:history.back(1);'));
     $this->form = $form;
 }
 private function build_form(HTTPRequestCustom $request)
 {
     $form = new HTMLForm(__CLASS__);
     $fieldset = new FormFieldsetHTML('faq', $this->get_faq_question()->get_id() === null ? $this->lang['faq.add'] : $this->lang['faq.edit']);
     $form->add_fieldset($fieldset);
     $fieldset->add_field(new FormFieldTextEditor('question', $this->lang['faq.form.question'], $this->get_faq_question()->get_question(), array('required' => true)));
     $search_category_children_options = new SearchCategoryChildrensOptions();
     $search_category_children_options->add_authorizations_bits(Category::READ_AUTHORIZATIONS);
     $search_category_children_options->add_authorizations_bits(Category::CONTRIBUTION_AUTHORIZATIONS);
     $fieldset->add_field(FaqService::get_categories_manager()->get_select_categories_form_field('id_category', $this->common_lang['form.category'], $this->get_faq_question()->get_id_category(), $search_category_children_options));
     $fieldset->add_field(new FormFieldRichTextEditor('answer', $this->lang['faq.form.answer'], $this->get_faq_question()->get_answer(), array('rows' => 15, 'required' => true)));
     if (!$this->is_contributor_member()) {
         $fieldset->add_field(new FormFieldCheckbox('approved', $this->common_lang['form.approve'], $this->get_faq_question()->is_approved()));
     }
     $this->build_contribution_fieldset($form);
     $fieldset->add_field(new FormFieldHidden('referrer', $request->get_url_referrer()));
     $this->submit_button = new FormButtonDefaultSubmit();
     $form->add_button($this->submit_button);
     $form->add_button(new FormButtonReset());
     $this->form = $form;
 }
    protected function build_form(HTTPRequestCustom $request)
    {
        $form = new HTMLForm(__CLASS__);
        $fieldset = new FormFieldsetHTML('category', $this->get_title());
        $form->add_fieldset($fieldset);
        $fieldset->add_field(new FormFieldTextEditor('name', $this->common_lang['form.name'], $this->get_category()->get_name(), array('required' => true)));
        $fieldset->add_field(new FormFieldCheckbox('personalize_rewrited_name', $this->common_lang['form.rewrited_name.personalize'], $this->get_category()->rewrited_name_is_personalized(), array('events' => array('click' => '
		if (HTMLForms.getField("personalize_rewrited_name").getValue()) {
			HTMLForms.getField("rewrited_name").enable();
		} else { 
			HTMLForms.getField("rewrited_name").disable();
		}'))));
        $fieldset->add_field(new FormFieldTextEditor('rewrited_name', $this->common_lang['form.rewrited_name'], $this->get_category()->get_rewrited_name(), array('description' => $this->common_lang['form.rewrited_name.description'], 'hidden' => !$this->get_category()->rewrited_name_is_personalized()), array(new FormFieldConstraintRegex('`^[a-z0-9\\-]+$`i'))));
        $search_category_children_options = new SearchCategoryChildrensOptions();
        if ($this->get_category()->get_id()) {
            $search_category_children_options->add_category_in_excluded_categories($this->get_category()->get_id());
        }
        $fieldset->add_field($this->get_categories_manager()->get_select_categories_form_field('id_parent', $this->common_lang['form.category'], $this->get_category()->get_id_parent(), $search_category_children_options));
        $this->build_fieldset_options($form);
        $fieldset_authorizations = new FormFieldsetHTML('authorizations_fieldset', $this->common_lang['authorizations']);
        $form->add_fieldset($fieldset_authorizations);
        $root_auth = $this->get_categories_manager()->get_categories_cache()->get_category(Category::ROOT_CATEGORY)->get_authorizations();
        $fieldset_authorizations->add_field(new FormFieldCheckbox('special_authorizations', $this->common_lang['authorizations'], !$this->get_category()->auth_is_equals($root_auth), array('description' => $this->lang['category.form.authorizations.description'], 'events' => array('click' => '
		if (HTMLForms.getField("special_authorizations").getValue()) {
			jQuery("#' . __CLASS__ . '_authorizations").show();
		} else { 
			jQuery("#' . __CLASS__ . '_authorizations").hide();
		}'))));
        $auth_settings = $this->get_authorizations_settings();
        $auth_setter = new FormFieldAuthorizationsSetter('authorizations', $auth_settings, array('hidden' => $this->get_category()->auth_is_equals($root_auth)));
        $auth_settings->build_from_auth_array($this->get_category()->get_authorizations());
        $fieldset_authorizations->add_field($auth_setter);
        $fieldset->add_field(new FormFieldHidden('referrer', $request->get_url_referrer()));
        $this->submit_button = new FormButtonDefaultSubmit();
        $form->add_button($this->submit_button);
        $form->add_button(new FormButtonReset());
        $this->form = $form;
    }
    private function build_form(HTTPRequestCustom $request)
    {
        $form = new HTMLForm(__CLASS__);
        $regex_type = is_numeric($this->extended_field['regex']) ? $this->extended_field['regex'] : 0;
        $regex = is_string($this->extended_field['regex']) ? $this->extended_field['regex'] : '';
        $fieldset = new FormFieldsetHTML('edit_fields', $this->lang['extended-field-edit']);
        $form->add_fieldset($fieldset);
        $fieldset->add_field(new FormFieldTextEditor('name', $this->lang['field.name'], $this->extended_field['name'], array('required' => true)));
        $fieldset->add_field(new FormFieldShortMultiLineTextEditor('description', $this->lang['field.description'], $this->extended_field['description']));
        $fieldset->add_field(new FormFieldSimpleSelectChoice('field_type', $this->lang['field.type'], $this->extended_field['field_type'], $this->get_array_select_type(), array('disabled' => $this->is_type_select_disabled(), 'events' => array('change' => $this->get_events_select_type()))));
        $fieldset->add_field(new FormFieldSimpleSelectChoice('regex_type', $this->lang['field.regex'], $regex_type, array(new FormFieldSelectChoiceOption('--', '0'), new FormFieldSelectChoiceOption($this->lang['regex.figures'], '1'), new FormFieldSelectChoiceOption($this->lang['regex.letters'], '2'), new FormFieldSelectChoiceOption($this->lang['regex.figures-letters'], '3'), new FormFieldSelectChoiceOption($this->lang['regex.word'], '7'), new FormFieldSelectChoiceOption($this->lang['regex.mail'], '4'), new FormFieldSelectChoiceOption($this->lang['regex.website'], '5'), new FormFieldSelectChoiceOption($this->lang['regex.phone-number'], '8'), new FormFieldSelectChoiceOption($this->lang['regex.personnal-regex'], '6')), array('description' => $this->lang['field.regex-explain'], 'events' => array('change' => '
				if (HTMLForms.getField("regex_type").getValue() == 6) { 
					HTMLForms.getField("regex").enable(); 
				} else { 
					HTMLForms.getField("regex").disable(); 
				}'))));
        $fieldset->add_field(new FormFieldTextEditor('regex', $this->lang['regex.personnal-regex'], $regex, array('maxlength' => 25)));
        $fieldset->add_field(new FormFieldCheckbox('field_required', $this->lang['field.required'], (int) $this->extended_field['required'], array('description' => $this->lang['field.required_explain'])));
        $fieldset->add_field(new FormFieldPossibleValues('possible_values', $this->lang['field.possible-values'], $this->extended_field['possible_values']));
        $fieldset->add_field(new FormFieldShortMultiLineTextEditor('default_value', $this->lang['field.default-value'], $this->extended_field['default_value'], array('rows' => 4)));
        $fieldset->add_field(new FormFieldCheckbox('display', $this->lang['field.display'], (int) $this->extended_field['display']));
        $auth = $this->extended_field['auth'];
        $auth_settings = new AuthorizationsSettings(array(new ActionAuthorization($this->lang['field.read_authorizations'], ExtendedField::READ_PROFILE_AUTHORIZATION), new ActionAuthorization($this->lang['field.actions_authorizations'], ExtendedField::READ_EDIT_AND_ADD_AUTHORIZATION)));
        $auth_settings->build_from_auth_array($auth);
        $auth_setter = new FormFieldAuthorizationsSetter('authorizations', $auth_settings);
        $fieldset->add_field($auth_setter);
        $fieldset->add_field(new FormFieldHidden('referrer', $request->get_url_referrer()));
        $this->submit_button = new FormButtonDefaultSubmit();
        $form->add_button($this->submit_button);
        $form->add_button(new FormButtonReset());
        $this->form = $form;
    }
    private function build_form(HTTPRequestCustom $request)
    {
        $form = new HTMLForm(__CLASS__);
        $fieldset = new FormFieldsetHTML('news', $this->lang['news']);
        $form->add_fieldset($fieldset);
        $fieldset->add_field(new FormFieldTextEditor('name', $this->common_lang['form.name'], $this->get_news()->get_name(), array('required' => true)));
        if (!$this->is_contributor_member()) {
            $fieldset->add_field(new FormFieldCheckbox('personalize_rewrited_name', $this->common_lang['form.rewrited_name.personalize'], $this->get_news()->rewrited_name_is_personalized(), array('events' => array('click' => '
			if (HTMLForms.getField("personalize_rewrited_name").getValue()) {
				HTMLForms.getField("rewrited_name").enable();
			} else { 
				HTMLForms.getField("rewrited_name").disable();
			}'))));
            $fieldset->add_field(new FormFieldTextEditor('rewrited_name', $this->common_lang['form.rewrited_name'], $this->get_news()->get_rewrited_name(), array('description' => $this->common_lang['form.rewrited_name.description'], 'hidden' => !$this->get_news()->rewrited_name_is_personalized()), array(new FormFieldConstraintRegex('`^[a-z0-9\\-]+$`i'))));
        }
        $search_category_children_options = new SearchCategoryChildrensOptions();
        $search_category_children_options->add_authorizations_bits(Category::READ_AUTHORIZATIONS);
        $search_category_children_options->add_authorizations_bits(Category::CONTRIBUTION_AUTHORIZATIONS);
        $fieldset->add_field(NewsService::get_categories_manager()->get_select_categories_form_field('id_cat', $this->common_lang['form.category'], $this->get_news()->get_id_cat(), $search_category_children_options));
        $fieldset->add_field(new FormFieldRichTextEditor('contents', $this->common_lang['form.contents'], $this->get_news()->get_contents(), array('rows' => 15, 'required' => true)));
        $fieldset->add_field(new FormFieldCheckbox('enable_short_contents', $this->lang['news.form.short_contents.enabled'], $this->get_news()->get_short_contents_enabled(), array('description' => StringVars::replace_vars($this->lang['news.form.short_contents.enabled.description'], array('number' => NewsConfig::load()->get_number_character_to_cut())), 'events' => array('click' => '
			if (HTMLForms.getField("enable_short_contents").getValue()) {
				HTMLForms.getField("short_contents").enable();
			} else { 
				HTMLForms.getField("short_contents").disable();
			}'))));
        $fieldset->add_field(new FormFieldRichTextEditor('short_contents', $this->lang['news.form.short_contents'], $this->get_news()->get_short_contents(), array('hidden' => !$this->get_news()->get_short_contents_enabled(), 'description' => !NewsConfig::load()->get_display_condensed_enabled() ? '<span class="color-alert">' . $this->lang['news.form.short_contents.description'] . '</span>' : '')));
        $other_fieldset = new FormFieldsetHTML('other', $this->common_lang['form.other']);
        $form->add_fieldset($other_fieldset);
        $other_fieldset->add_field(new FormFieldUploadFile('picture', $this->common_lang['form.picture'], $this->get_news()->get_picture()->relative()));
        $other_fieldset->add_field(NewsService::get_keywords_manager()->get_form_field($this->get_news()->get_id(), 'keywords', $this->common_lang['form.keywords'], array('description' => $this->common_lang['form.keywords.description'])));
        $other_fieldset->add_field(new NewsFormFieldSelectSources('sources', $this->common_lang['form.sources'], $this->get_news()->get_sources()));
        if (!$this->is_contributor_member()) {
            $publication_fieldset = new FormFieldsetHTML('publication', $this->common_lang['form.approbation']);
            $form->add_fieldset($publication_fieldset);
            $publication_fieldset->add_field(new FormFieldDateTime('creation_date', $this->common_lang['form.date.creation'], $this->get_news()->get_creation_date(), array('required' => true)));
            $publication_fieldset->add_field(new FormFieldSimpleSelectChoice('approbation_type', $this->common_lang['form.approbation'], $this->get_news()->get_approbation_type(), array(new FormFieldSelectChoiceOption($this->common_lang['form.approbation.not'], News::NOT_APPROVAL), new FormFieldSelectChoiceOption($this->common_lang['form.approbation.now'], News::APPROVAL_NOW), new FormFieldSelectChoiceOption($this->common_lang['status.approved.date'], News::APPROVAL_DATE)), array('events' => array('change' => '
				if (HTMLForms.getField("approbation_type").getValue() == 2) {
					jQuery("#' . __CLASS__ . '_start_date_field").show();
					HTMLForms.getField("end_date_enable").enable();
				} else { 
					jQuery("#' . __CLASS__ . '_start_date_field").hide();
					HTMLForms.getField("end_date_enable").disable();
				}'))));
            $publication_fieldset->add_field(new FormFieldDateTime('start_date', $this->common_lang['form.date.start'], $this->get_news()->get_start_date() === null ? new Date() : $this->get_news()->get_start_date(), array('hidden' => $this->get_news()->get_approbation_type() != News::APPROVAL_DATE)));
            $publication_fieldset->add_field(new FormFieldCheckbox('end_date_enable', $this->common_lang['form.date.end.enable'], $this->get_news()->end_date_enabled(), array('hidden' => $this->get_news()->get_approbation_type() != News::APPROVAL_DATE, 'events' => array('click' => '
			if (HTMLForms.getField("end_date_enable").getValue()) {
				HTMLForms.getField("end_date").enable();
			} else { 
				HTMLForms.getField("end_date").disable();
			}'))));
            $publication_fieldset->add_field(new FormFieldDateTime('end_date', $this->common_lang['form.date.end'], $this->get_news()->get_end_date() === null ? new Date() : $this->get_news()->get_end_date(), array('hidden' => !$this->get_news()->end_date_enabled())));
            $publication_fieldset->add_field(new FormFieldCheckbox('top_list', $this->lang['news.form.top_list'], $this->get_news()->top_list_enabled()));
        }
        $this->build_contribution_fieldset($form);
        $fieldset->add_field(new FormFieldHidden('referrer', $request->get_url_referrer()));
        $this->submit_button = new FormButtonDefaultSubmit();
        $form->add_button($this->submit_button);
        $form->add_button(new FormButtonReset());
        $this->form = $form;
    }
 private function redirect(HTTPRequestCustom $request)
 {
     if ($this->event->belongs_to_a_serie()) {
         AppContext::get_response()->redirect($this->form->get_value('referrer') ? $this->form->get_value('referrer') : CalendarUrlBuilder::home($this->event->get_start_date()->get_year(), $this->event->get_start_date()->get_month()), StringVars::replace_vars($this->lang['calendar.message.success.delete'], array('title' => $this->event->get_content()->get_title())));
     } else {
         AppContext::get_response()->redirect($request->get_url_referrer() ? $request->get_url_referrer() : CalendarUrlBuilder::home($this->event->get_start_date()->get_year(), $this->event->get_start_date()->get_month()), StringVars::replace_vars($this->lang['calendar.message.success.delete'], array('title' => $this->event->get_content()->get_title())));
     }
 }
    private function build_form(HTTPRequestCustom $request)
    {
        $common_lang = LangLoader::get('common');
        $bug = $this->get_bug();
        $types = $this->config->get_types();
        $categories = $this->config->get_categories();
        $severities = $this->config->get_severities();
        $priorities = $this->config->get_priorities();
        $versions_detected_in = array_reverse($this->config->get_versions_detected(), true);
        $display_types = count($types) > 1;
        $display_categories = count($categories) > 1;
        $display_severities = count($severities) > 1;
        $display_priorities = count($priorities) > 1;
        $display_versions_detected_in = count($versions_detected_in) > 1;
        $default_type = $this->config->get_default_type();
        $default_category = $this->config->get_default_category();
        $default_severity = $this->config->get_default_severity();
        $default_priority = $this->config->get_default_priority();
        $default_version = $this->config->get_default_version();
        $form = new HTMLForm(__CLASS__);
        $fieldset = new FormFieldsetHTML('bug_infos', $this->lang['titles.bugs_infos']);
        $form->add_fieldset($fieldset);
        $fieldset->add_field(new FormFieldTextEditor('title', $common_lang['form.title'], $bug->get_title(), array('required' => true)));
        $fieldset->add_field(new FormFieldRichTextEditor('contents', $common_lang['form.description'], $bug->get_contents(), array('description' => $this->lang['explain.contents'], 'rows' => 15, 'required' => true)));
        //Types
        if ($display_types) {
            $array_types = array();
            if (empty($default_type)) {
                $array_types[] = new FormFieldSelectChoiceOption(' ', '');
            }
            foreach ($types as $key => $type) {
                $array_types[] = new FormFieldSelectChoiceOption(stripslashes($type), $key);
            }
            $fieldset->add_field(new FormFieldSimpleSelectChoice('type', $this->lang['labels.fields.type'], $bug->get_type(), $array_types, array('required' => $this->config->is_type_mandatory())));
        }
        //Categories
        if ($display_categories) {
            $array_categories = array();
            if (empty($default_category)) {
                $array_categories[] = new FormFieldSelectChoiceOption(' ', '');
            }
            foreach ($categories as $key => $category) {
                $array_categories[] = new FormFieldSelectChoiceOption(stripslashes($category), $key);
            }
            $fieldset->add_field(new FormFieldSimpleSelectChoice('category', $this->lang['labels.fields.category'], $bug->get_category(), $array_categories, array('required' => $this->config->is_category_mandatory())));
        }
        if (BugtrackerAuthorizationsService::check_authorizations()->advanced_write()) {
            //Severities
            if ($display_severities) {
                $array_severities = array();
                if (empty($default_severity)) {
                    $array_severities[] = new FormFieldSelectChoiceOption(' ', '');
                }
                foreach ($severities as $key => $severity) {
                    $array_severities[] = new FormFieldSelectChoiceOption(stripslashes($severity['name']), $key);
                }
                $fieldset->add_field(new FormFieldSimpleSelectChoice('severity', $this->lang['labels.fields.severity'], $bug->get_severity(), $array_severities, array('required' => $this->config->is_severity_mandatory())));
            }
            //Priorities
            if ($display_priorities) {
                $array_priorities = array();
                if (empty($default_priority)) {
                    $array_priorities[] = new FormFieldSelectChoiceOption(' ', '');
                }
                foreach ($priorities as $key => $priority) {
                    $array_priorities[] = new FormFieldSelectChoiceOption(stripslashes($priority), $key);
                }
                $fieldset->add_field(new FormFieldSimpleSelectChoice('priority', $this->lang['labels.fields.priority'], $bug->get_priority(), $array_priorities, array('required' => $this->config->is_priority_mandatory())));
            }
        }
        //Detected versions
        if ($display_versions_detected_in) {
            $array_versions = array();
            if (empty($default_version)) {
                $array_versions[] = new FormFieldSelectChoiceOption(' ', '');
            }
            foreach ($versions_detected_in as $key => $version) {
                $array_versions[] = new FormFieldSelectChoiceOption(stripslashes($version['name']), $key);
            }
            $fieldset->add_field(new FormFieldSimpleSelectChoice('detected_in', $this->lang['labels.fields.detected_in'], $bug->get_detected_in(), $array_versions, array('required' => $this->config->is_detected_in_version_mandatory())));
        }
        $fieldset->add_field(new FormFieldCheckbox('reproductible', $this->lang['labels.fields.reproductible'], $bug->is_reproductible() ? FormFieldCheckbox::CHECKED : FormFieldCheckbox::UNCHECKED, array('events' => array('click' => '
			if (HTMLForms.getField("reproductible").getValue()) {
				HTMLForms.getField("reproduction_method").enable();
			} else {
				HTMLForms.getField("reproduction_method").disable();
			}'))));
        $fieldset->add_field(new FormFieldRichTextEditor('reproduction_method', $this->lang['labels.fields.reproduction_method'], FormatingHelper::unparse($bug->get_reproduction_method()), array('rows' => 15, 'hidden' => !$bug->is_reproductible())));
        $fieldset->add_field(new FormFieldHidden('referrer', $request->get_url_referrer()));
        $this->submit_button = new FormButtonDefaultSubmit();
        $form->add_button($this->submit_button);
        $form->add_button(new FormButtonReset());
        $this->form = $form;
    }
    private function build_form(HTTPRequestCustom $request)
    {
        $field = $this->get_field();
        $regex_type = is_numeric($field->get_regex()) ? $field->get_regex() : 0;
        $regex = is_string($field->get_regex()) ? $field->get_regex() : '';
        $form = new HTMLForm(__CLASS__);
        $fieldset = new FormFieldsetHTML('field', !empty($this->id) ? $this->lang['admin.fields.title.edit_field'] : $this->lang['admin.fields.title.add_field']);
        $form->add_fieldset($fieldset);
        $fieldset->add_field(new FormFieldTextEditor('name', $this->admin_user_common_lang['field.name'], $field->get_name(), array('required' => true), array(new ContactConstraintFieldExist($this->id))));
        $fieldset->add_field(new FormFieldShortMultiLineTextEditor('description', $this->admin_user_common_lang['field.description'], $field->get_description(), array('rows' => 4, 'cols' => 47)));
        $fieldset->add_field(new FormFieldSimpleSelectChoice('field_type', $this->admin_user_common_lang['field.type'], $field->get_field_type(), $this->get_array_select_type($field->get_field_name()), array('disabled' => $field->is_readonly(), 'events' => array('change' => $this->get_events_select_type()))));
        $fieldset->add_field(new FormFieldSimpleSelectChoice('regex_type', $this->admin_user_common_lang['field.regex'], $regex_type, $this->get_array_select_regex(), array('disabled' => $field->is_readonly(), 'description' => $this->admin_user_common_lang['field.regex-explain'], 'events' => array('change' => '
				if (HTMLForms.getField("regex_type").getValue() == 6) { 
					HTMLForms.getField("regex").enable(); 
				} else { 
					HTMLForms.getField("regex").disable(); 
				}'))));
        $fieldset->add_field(new FormFieldTextEditor('regex', $this->admin_user_common_lang['regex.personnal-regex'], $regex, array('hidden' => $field->is_readonly())));
        $fieldset->add_field(new FormFieldCheckbox('field_required', $this->admin_user_common_lang['field.required'], (int) $field->is_required(), array('disabled' => $field->is_readonly())));
        if ($field->get_field_name() == 'f_recipients') {
            $fieldset->add_field(new ContactFormFieldRecipientsPossibleValues('possible_values', $this->admin_user_common_lang['field.possible-values'], $field->get_possible_values(), array('description' => $this->lang['field.possible_values.email.explain'])));
        } else {
            if ($field->get_field_name() == 'f_subject') {
                $fieldset->add_field(new ContactFormFieldObjectPossibleValues('possible_values', $this->admin_user_common_lang['field.possible-values'], $field->get_possible_values(), array('description' => $this->lang['field.possible_values.recipient.explain'])));
            } else {
                $fieldset->add_field(new FormFieldPossibleValues('possible_values', $this->admin_user_common_lang['field.possible-values'], $field->get_possible_values(), array('hidden' => $field->is_readonly())));
            }
        }
        $fieldset->add_field(new FormFieldTextEditor('default_value_small', $this->admin_user_common_lang['field.default-value'], $field->get_default_value(), array('disabled' => $field->is_readonly())));
        $fieldset->add_field(new FormFieldShortMultiLineTextEditor('default_value_medium', $this->admin_user_common_lang['field.default-value'], $field->get_default_value(), array('rows' => 4, 'cols' => 47, 'hidden' => $field->is_readonly())));
        $fieldset->add_field(new FormFieldCheckbox('display', $this->admin_user_common_lang['field.display'], (int) $field->is_displayed(), array('disabled' => $field->is_readonly())));
        $auth_settings = new AuthorizationsSettings(array(new ActionAuthorization($this->lang['admin.authorizations.display_field'], ContactField::DISPLAY_FIELD_AUTHORIZATION)));
        $auth_settings->build_from_auth_array($field->get_authorization());
        $auth_setter = new FormFieldAuthorizationsSetter('authorizations', $auth_settings, array('hidden' => $field->is_readonly()));
        $fieldset->add_field($auth_setter);
        $fieldset->add_field(new FormFieldHidden('referrer', $request->get_url_referrer()));
        $this->submit_button = new FormButtonDefaultSubmit();
        $form->add_button($this->submit_button);
        $form->add_button(new FormButtonReset());
        $this->form = $form;
    }
 private function save(HTTPRequestCustom $request)
 {
     $has_error = false;
     $user_id = $this->user->get_id();
     if ($this->form->get_value('delete_account')) {
         UserService::delete_by_id($user_id);
     } else {
         $approbation = $this->internal_auth_infos['approved'];
         if (AppContext::get_current_user()->is_admin()) {
             $old_approbation = $approbation;
             $approbation = $this->form->get_value('approbation');
             $groups = array();
             foreach ($this->form->get_value('groups') as $field => $option) {
                 $groups[] = $option->get_raw_value();
             }
             GroupsService::edit_member($user_id, $groups);
             $this->user->set_groups($groups);
             $this->user->set_level($this->form->get_value('rank')->get_raw_value());
         }
         if ($this->form->has_field('theme')) {
             $this->user->set_theme($this->form->get_value('theme')->get_raw_value());
         }
         $this->user->set_locale($this->form->get_value('lang')->get_raw_value());
         $this->user->set_display_name($this->form->get_value('display_name'));
         $this->user->set_email($this->form->get_value('email'));
         $this->user->set_locale($this->form->get_value('lang')->get_raw_value());
         $this->user->set_editor($this->form->get_value('text-editor')->get_raw_value());
         $this->user->set_show_email(!$this->form->get_value('user_hide_mail'));
         $this->user->set_timezone($this->form->get_value('timezone')->get_raw_value());
         try {
             UserService::update($this->user, $this->member_extended_fields_service);
         } catch (MemberExtendedFieldErrorsMessageException $e) {
             $has_error = true;
             $this->tpl->put('MSG', MessageHelper::display($e->getMessage(), MessageHelper::NOTICE));
         }
         $login = $this->form->get_value('email');
         if ($this->form->get_value('custom_login', false)) {
             $login = $this->form->get_value('login');
         }
         $password = $this->form->get_value('password');
         if ($this->internal_auth_infos === null && !empty($password)) {
             $authentication_method = new PHPBoostAuthenticationMethod($login, $password);
             AuthenticationService::associate($authentication_method, $user_id);
         } elseif (!empty($password)) {
             $old_password = $this->form->get_value('old_password');
             if (!empty($old_password)) {
                 $old_password_hashed = KeyGenerator::string_hash($old_password);
                 if ($old_password_hashed == $this->internal_auth_infos['password']) {
                     PHPBoostAuthenticationMethod::update_auth_infos($user_id, $login, $approbation, KeyGenerator::string_hash($password));
                     $has_error = false;
                 } else {
                     $has_error = true;
                     $this->tpl->put('MSG', MessageHelper::display($this->lang['profile.edit.password.error'], MessageHelper::NOTICE));
                 }
             }
         } else {
             PHPBoostAuthenticationMethod::update_auth_infos($user_id, $login, $approbation);
         }
         if (AppContext::get_current_user()->is_admin()) {
             if ($old_approbation != $approbation && $old_approbation == 0) {
                 //Recherche de l'alerte correspondante
                 $matching_alerts = AdministratorAlertService::find_by_criteria($user_id, 'member_account_to_approbate');
                 //L'alerte a été trouvée
                 if (count($matching_alerts) == 1) {
                     $alert = $matching_alerts[0];
                     $alert->set_status(AdministratorAlert::ADMIN_ALERT_STATUS_PROCESSED);
                     AdministratorAlertService::save_alert($alert);
                     $site_name = GeneralConfig::load()->get_site_name();
                     $subject = StringVars::replace_vars($this->user_lang['registration.subject-mail'], array('site_name' => $site_name));
                     $content = StringVars::replace_vars($this->user_lang['registration.email.mail-administrator-validation'], array('pseudo' => $this->user->get_display_name(), 'site_name' => $site_name, 'signature' => MailServiceConfig::load()->get_mail_signature()));
                     AppContext::get_mail_service()->send_from_properties($this->user->get_email(), $subject, $content);
                 }
             }
             $user_warning = $this->form->get_value('user_warning')->get_raw_value();
             if (!empty($user_warning) && $user_warning != $this->user->get_warning_percentage()) {
                 MemberSanctionManager::caution($user_id, $user_warning, MemberSanctionManager::SEND_MP, str_replace('%level%', $user_warning, LangLoader::get_message('user_warning_level_changed', 'main')));
             } elseif (empty($user_warning)) {
                 MemberSanctionManager::cancel_caution($user_id);
             }
             $user_readonly = $this->form->get_value('user_readonly')->get_raw_value();
             if (!empty($user_readonly) && $user_readonly != $this->user->get_delay_readonly()) {
                 MemberSanctionManager::remove_write_permissions($user_id, time() + $user_readonly, MemberSanctionManager::SEND_MP, str_replace('%date%', $this->form->get_value('user_readonly')->get_label(), LangLoader::get_message('user_readonly_changed', 'main')));
             } elseif (empty($user_readonly)) {
                 MemberSanctionManager::restore_write_permissions($user_id);
             }
             $user_ban = $this->form->get_value('user_ban')->get_raw_value();
             if (!empty($user_ban) && $user_ban != $this->user->get_delay_banned()) {
                 MemberSanctionManager::banish($user_id, time() + $user_ban, MemberSanctionManager::SEND_MAIL);
             } elseif ($user_ban != $this->user->get_delay_banned()) {
                 MemberSanctionManager::cancel_banishment($user_id);
             }
         }
         SessionData::recheck_cached_data_from_user_id($user_id);
     }
     if (!$has_error) {
         AppContext::get_response()->redirect($request->get_url_referrer() ? $request->get_url_referrer() : UserUrlBuilder::edit_profile($user_id), $this->lang['user.message.success.edit']);
     }
 }
    private function build_form(HTTPRequestCustom $request)
    {
        $common_lang = LangLoader::get('common');
        $date_lang = LangLoader::get('date-common');
        $event_content = $this->get_event()->get_content();
        $form = new HTMLForm(__CLASS__);
        $fieldset = new FormFieldsetHTML('event', $this->lang['calendar.titles.event']);
        $form->add_fieldset($fieldset);
        $fieldset->add_field(new FormFieldTextEditor('title', $common_lang['form.title'], $event_content->get_title(), array('required' => true)));
        $search_category_children_options = new SearchCategoryChildrensOptions();
        $search_category_children_options->add_authorizations_bits(Category::READ_AUTHORIZATIONS);
        $search_category_children_options->add_authorizations_bits(Category::CONTRIBUTION_AUTHORIZATIONS);
        $fieldset->add_field(CalendarService::get_categories_manager()->get_select_categories_form_field('category_id', LangLoader::get_message('category', 'categories-common'), $event_content->get_category_id(), $search_category_children_options));
        $fieldset->add_field(new FormFieldRichTextEditor('contents', $common_lang['form.contents'], $event_content->get_contents(), array('rows' => 15, 'required' => true)));
        $fieldset->add_field($start_date = new FormFieldDateTime('start_date', $this->lang['calendar.labels.start_date'], $this->get_event()->get_start_date(), array('required' => true)));
        $fieldset->add_field($end_date = new FormFieldDateTime('end_date', $this->lang['calendar.labels.end_date'], $this->get_event()->get_end_date(), array('required' => true)));
        $form->add_constraint(new FormConstraintFieldsDifferenceSuperior($start_date, $end_date));
        $fieldset->add_field(new FormFieldSimpleSelectChoice('repeat_type', $this->lang['calendar.labels.repeat_type'], $event_content->get_repeat_type(), array(new FormFieldSelectChoiceOption($this->lang['calendar.labels.repeat.never'], CalendarEventContent::NEVER), new FormFieldSelectChoiceOption($date_lang['every_day'], CalendarEventContent::DAILY), new FormFieldSelectChoiceOption($date_lang['every_week'], CalendarEventContent::WEEKLY), new FormFieldSelectChoiceOption($date_lang['every_month'], CalendarEventContent::MONTHLY), new FormFieldSelectChoiceOption($date_lang['every_year'], CalendarEventContent::YEARLY)), array('events' => array('change' => '
			if (HTMLForms.getField("repeat_type").getValue() != "' . CalendarEventContent::NEVER . '") {
				HTMLForms.getField("repeat_number").enable();
			} else {
				HTMLForms.getField("repeat_number").disable();
			}'))));
        $fieldset->add_field(new FormFieldNumberEditor('repeat_number', $this->lang['calendar.labels.repeat_number'], $event_content->get_repeat_number(), array('min' => 1, 'max' => 150, 'hidden' => $event_content->get_repeat_type() == CalendarEventContent::NEVER), array(new FormFieldConstraintIntegerRange(1, 150))));
        $fieldset->add_field(new FormFieldShortMultiLineTextEditor('location', $this->lang['calendar.labels.location'], $event_content->get_location()));
        $fieldset->add_field(new FormFieldCheckbox('registration_authorized', $this->lang['calendar.labels.registration_authorized'], $event_content->is_registration_authorized(), array('events' => array('click' => '
			if (HTMLForms.getField("registration_authorized").getValue()) {
				HTMLForms.getField("max_registered_members").enable();
				HTMLForms.getField("last_registration_date_enabled").enable();
				jQuery("#' . __CLASS__ . '_register_authorizations").show();
			} else {
				HTMLForms.getField("max_registered_members").disable();
				HTMLForms.getField("last_registration_date_enabled").disable();
				jQuery("#' . __CLASS__ . '_register_authorizations").hide();
			}'))));
        $fieldset->add_field(new FormFieldNumberEditor('max_registered_members', $this->lang['calendar.labels.max_registered_members'], $event_content->get_max_registered_members(), array('description' => $this->lang['calendar.labels.max_registered_members.explain'], 'hidden' => !$event_content->is_registration_authorized()), array(new FormFieldConstraintRegex('`^[0-9]+$`i'))));
        $fieldset->add_field(new FormFieldCheckbox('last_registration_date_enabled', $this->lang['calendar.labels.last_registration_date_enabled'], $event_content->is_last_registration_date_enabled(), array('hidden' => !$event_content->is_registration_authorized(), 'events' => array('click' => '
			if (HTMLForms.getField("last_registration_date_enabled").getValue()) {
				HTMLForms.getField("last_registration_date").enable();
			} else {
				HTMLForms.getField("last_registration_date").disable();
			}'))));
        $fieldset->add_field(new FormFieldDateTime('last_registration_date', $this->lang['calendar.labels.last_registration_date'], $event_content->get_last_registration_date(), array('hidden' => !$event_content->is_last_registration_date_enabled())));
        $auth_settings = new AuthorizationsSettings(array(new ActionAuthorization($this->lang['calendar.authorizations.display_registered_users'], CalendarEventContent::DISPLAY_REGISTERED_USERS_AUTHORIZATION), new ActionAuthorization($this->lang['calendar.authorizations.register'], CalendarEventContent::REGISTER_AUTHORIZATION)));
        $auth_settings->build_from_auth_array($event_content->get_register_authorizations());
        $auth_setter = new FormFieldAuthorizationsSetter('register_authorizations', $auth_settings, array('hidden' => !$event_content->is_registration_authorized()));
        $fieldset->add_field($auth_setter);
        if (!$this->is_contributor_member()) {
            $fieldset->add_field(new FormFieldCheckbox('approved', $common_lang['form.approve'], $event_content->is_approved()));
        }
        $this->build_contribution_fieldset($form);
        $fieldset->add_field(new FormFieldHidden('referrer', $request->get_url_referrer()));
        $this->submit_button = new FormButtonDefaultSubmit();
        $form->add_button($this->submit_button);
        $form->add_button(new FormButtonReset());
        $this->form = $form;
    }
    private function build_form(HTTPRequestCustom $request)
    {
        $form = new HTMLForm(__CLASS__);
        $fieldset = new FormFieldsetHTML('articles', $this->lang['articles']);
        $form->add_fieldset($fieldset);
        $fieldset->add_field(new FormFieldTextEditor('title', $this->common_lang['form.title'], $this->get_article()->get_title(), array('required' => true)));
        if (!$this->is_contributor_member()) {
            $fieldset->add_field(new FormFieldCheckbox('personalize_rewrited_title', $this->common_lang['form.rewrited_name.personalize'], $this->get_article()->rewrited_title_is_personalized(), array('events' => array('click' => '
					if (HTMLForms.getField("personalize_rewrited_title").getValue()) {
						HTMLForms.getField("rewrited_title").enable();
					} else { 
						HTMLForms.getField("rewrited_title").disable();
					}'))));
            $fieldset->add_field(new FormFieldTextEditor('rewrited_title', $this->common_lang['form.rewrited_name'], $this->get_article()->get_rewrited_title(), array('description' => $this->common_lang['form.rewrited_name.description'], 'hidden' => !$this->get_article()->rewrited_title_is_personalized()), array(new FormFieldConstraintRegex('`^[a-z0-9\\-]+$`i'))));
        }
        $search_category_children_options = new SearchCategoryChildrensOptions();
        $search_category_children_options->add_authorizations_bits(Category::READ_AUTHORIZATIONS);
        $search_category_children_options->add_authorizations_bits(Category::CONTRIBUTION_AUTHORIZATIONS);
        $fieldset->add_field(ArticlesService::get_categories_manager()->get_select_categories_form_field('id_category', $this->common_lang['form.category'], $this->get_article()->get_id_category(), $search_category_children_options));
        $fieldset->add_field(new FormFieldCheckbox('enable_description', $this->lang['articles.form.description_enabled'], $this->get_article()->get_description_enabled(), array('description' => StringVars::replace_vars($this->lang['articles.form.description_enabled.description'], array('number' => ArticlesConfig::load()->get_number_character_to_cut())), 'events' => array('click' => '
					if (HTMLForms.getField("enable_description").getValue()) {
						HTMLForms.getField("description").enable();
					} else { 
						HTMLForms.getField("description").disable();
					}'))));
        $fieldset->add_field(new FormFieldRichTextEditor('description', StringVars::replace_vars($this->lang['articles.form.description'], array('number' => ArticlesConfig::load()->get_number_character_to_cut())), $this->get_article()->get_description(), array('rows' => 3, 'hidden' => !$this->get_article()->get_description_enabled())));
        $fieldset->add_field(new FormFieldRichTextEditor('contents', $this->common_lang['form.contents'], $this->get_article()->get_contents(), array('rows' => 15, 'required' => true)));
        $onclick_action = 'javascript:bbcode_page();';
        $fieldset->add_field(new FormFieldActionLink('add_page', $this->lang['articles.form.add_page'], $onclick_action, PATH_TO_ROOT . '/articles/templates/images/pagebreak.png'));
        $other_fieldset = new FormFieldsetHTML('other', $this->common_lang['form.other']);
        $form->add_fieldset($other_fieldset);
        $other_fieldset->add_field(new FormFieldCheckbox('author_name_displayed', LangLoader::get_message('config.author_displayed', 'admin-common'), $this->get_article()->get_author_name_displayed()));
        $other_fieldset->add_field(new FormFieldCheckbox('notation_enabled', LangLoader::get_message('config.notation_enabled', 'admin-common'), $this->get_article()->get_notation_enabled()));
        $other_fieldset->add_field(new FormFieldUploadPictureFile('picture', $this->common_lang['form.picture'], $this->get_article()->get_picture()->relative()));
        $other_fieldset->add_field(ArticlesService::get_keywords_manager()->get_form_field($this->get_article()->get_id(), 'keywords', $this->common_lang['form.keywords'], array('description' => $this->common_lang['form.keywords.description'])));
        $other_fieldset->add_field(new ArticlesFormFieldSelectSources('sources', $this->common_lang['form.sources'], $this->get_article()->get_sources()));
        if (!$this->is_contributor_member()) {
            $publication_fieldset = new FormFieldsetHTML('publication', $this->common_lang['form.approbation']);
            $form->add_fieldset($publication_fieldset);
            $publication_fieldset->add_field(new FormFieldDateTime('date_created', $this->common_lang['form.date.creation'], $this->get_article()->get_date_created(), array('required' => true)));
            $publication_fieldset->add_field(new FormFieldSimpleSelectChoice('publishing_state', $this->common_lang['form.approbation'], $this->get_article()->get_publishing_state(), array(new FormFieldSelectChoiceOption($this->common_lang['form.approbation.not'], Article::NOT_PUBLISHED), new FormFieldSelectChoiceOption($this->common_lang['form.approbation.now'], Article::PUBLISHED_NOW), new FormFieldSelectChoiceOption($this->common_lang['status.approved.date'], Article::PUBLISHED_DATE)), array('events' => array('change' => '
				if (HTMLForms.getField("publishing_state").getValue() == 2) {
					jQuery("#' . __CLASS__ . '_publishing_start_date_field").show();
					HTMLForms.getField("end_date_enable").enable();
				} else { 
					jQuery("#' . __CLASS__ . '_publishing_start_date_field").hide();
					HTMLForms.getField("end_date_enable").disable();
				}'))));
            $publication_fieldset->add_field(new FormFieldDateTime('publishing_start_date', $this->common_lang['form.date.start'], $this->get_article()->get_publishing_start_date() === null ? new Date() : $this->get_article()->get_publishing_start_date(), array('hidden' => $this->get_article()->get_publishing_state() != Article::PUBLISHED_DATE)));
            $publication_fieldset->add_field(new FormFieldCheckbox('end_date_enable', $this->common_lang['form.date.end.enable'], $this->get_article()->end_date_enabled(), array('hidden' => $this->get_article()->get_publishing_state() != Article::PUBLISHED_DATE, 'events' => array('click' => '
						if (HTMLForms.getField("end_date_enable").getValue()) {
							HTMLForms.getField("publishing_end_date").enable();
						} else { 
							HTMLForms.getField("publishing_end_date").disable();
						}'))));
            $publication_fieldset->add_field(new FormFieldDateTime('publishing_end_date', $this->common_lang['form.date.end'], $this->get_article()->get_publishing_end_date() === null ? new date() : $this->get_article()->get_publishing_end_date(), array('hidden' => !$this->get_article()->end_date_enabled())));
        }
        $this->build_contribution_fieldset($form);
        $fieldset->add_field(new FormFieldHidden('referrer', $request->get_url_referrer()));
        $this->submit_button = new FormButtonDefaultSubmit();
        $form->add_button($this->submit_button);
        $form->add_button(new FormButtonReset());
        $this->form = $form;
        // Positionnement à la bonne page quand on édite un article avec plusieurs pages
        if ($this->get_article()->get_id() !== null) {
            $current_page = $request->get_getstring('page', '');
            $this->tpl->put('C_PAGE', !empty($current_page));
            if (!empty($current_page)) {
                $article_contents = $this->article->get_contents();
                //If article doesn't begin with a page, we insert one
                if (substr(trim($article_contents), 0, 6) != '[page]') {
                    $article_contents = '[page]&nbsp;[/page]' . $article_contents;
                }
                //Removing [page] bbcode
                $article_contents_clean = preg_split('`\\[page\\].+\\[/page\\](.*)`Us', $article_contents, -1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);
                //Retrieving pages
                preg_match_all('`\\[page\\]([^[]+)\\[/page\\]`U', $article_contents, $array_page);
                $page_name = isset($array_page[1][$current_page - 1]) && $array_page[1][$current_page - 1] != '&nbsp;' ? $array_page[1][$current_page - 1] : '';
                $this->tpl->put('PAGE', TextHelper::to_js_string($page_name));
            }
        }
    }
    private function build_form(HTTPRequestCustom $request)
    {
        $form = new HTMLForm(__CLASS__);
        $fieldset = new FormFieldsetHTML('download', $this->get_downloadfile()->get_id() === null ? $this->lang['download.add'] : $this->lang['download.edit']);
        $form->add_fieldset($fieldset);
        $fieldset->add_field(new FormFieldTextEditor('name', $this->common_lang['form.name'], $this->get_downloadfile()->get_name(), array('required' => true)));
        $search_category_children_options = new SearchCategoryChildrensOptions();
        $search_category_children_options->add_authorizations_bits(Category::READ_AUTHORIZATIONS);
        $search_category_children_options->add_authorizations_bits(Category::CONTRIBUTION_AUTHORIZATIONS);
        $fieldset->add_field(DownloadService::get_categories_manager()->get_select_categories_form_field('id_category', $this->common_lang['form.category'], $this->get_downloadfile()->get_id_category(), $search_category_children_options));
        $fieldset->add_field(new FormFieldUploadFile('url', $this->common_lang['form.url'], $this->get_downloadfile()->get_url()->relative(), array('required' => true)));
        if ($this->get_downloadfile()->get_id() !== null && $this->get_downloadfile()->get_number_downloads() > 0) {
            $fieldset->add_field(new FormFieldCheckbox('reset_number_downloads', $this->lang['download.form.reset_number_downloads']));
        }
        $fieldset->add_field(new FormFieldRichTextEditor('contents', $this->common_lang['form.description'], $this->get_downloadfile()->get_contents(), array('rows' => 15, 'required' => true)));
        $fieldset->add_field(new FormFieldCheckbox('short_contents_enabled', $this->common_lang['form.short_contents.enabled'], $this->get_downloadfile()->is_short_contents_enabled(), array('description' => StringVars::replace_vars($this->common_lang['form.short_contents.enabled.description'], array('number' => DownloadConfig::NUMBER_CARACTERS_BEFORE_CUT)), 'events' => array('click' => '
			if (HTMLForms.getField("short_contents_enabled").getValue()) {
				HTMLForms.getField("short_contents").enable();
			} else { 
				HTMLForms.getField("short_contents").disable();
			}'))));
        $fieldset->add_field(new FormFieldRichTextEditor('short_contents', $this->common_lang['form.description'], $this->get_downloadfile()->get_short_contents(), array('hidden' => !$this->get_downloadfile()->is_short_contents_enabled())));
        if ($this->config->is_author_displayed()) {
            $fieldset->add_field(new FormFieldCheckbox('author_display_name_enabled', $this->lang['download.form.author_display_name_enabled'], $this->get_downloadfile()->is_author_display_name_enabled(), array('events' => array('click' => '
				if (HTMLForms.getField("author_display_name_enabled").getValue()) {
					HTMLForms.getField("author_display_name").enable();
				} else { 
					HTMLForms.getField("author_display_name").disable();
				}'))));
            $fieldset->add_field(new FormFieldTextEditor('author_display_name', $this->lang['download.form.author_display_name'], $this->get_downloadfile()->get_author_display_name(), array('hidden' => !$this->get_downloadfile()->is_author_display_name_enabled())));
        }
        $other_fieldset = new FormFieldsetHTML('other', $this->common_lang['form.other']);
        $form->add_fieldset($other_fieldset);
        $other_fieldset->add_field(new FormFieldUploadPictureFile('picture', $this->common_lang['form.picture'], $this->get_downloadfile()->get_picture()->relative()));
        $other_fieldset->add_field(DownloadService::get_keywords_manager()->get_form_field($this->get_downloadfile()->get_id(), 'keywords', $this->common_lang['form.keywords'], array('description' => $this->common_lang['form.keywords.description'])));
        if (!$this->is_contributor_member()) {
            $publication_fieldset = new FormFieldsetHTML('publication', $this->common_lang['form.approbation']);
            $form->add_fieldset($publication_fieldset);
            $publication_fieldset->add_field(new FormFieldDateTime('creation_date', $this->common_lang['form.date.creation'], $this->get_downloadfile()->get_creation_date(), array('required' => true)));
            $publication_fieldset->add_field(new FormFieldSimpleSelectChoice('approbation_type', $this->common_lang['form.approbation'], $this->get_downloadfile()->get_approbation_type(), array(new FormFieldSelectChoiceOption($this->common_lang['form.approbation.not'], DownloadFile::NOT_APPROVAL), new FormFieldSelectChoiceOption($this->common_lang['form.approbation.now'], DownloadFile::APPROVAL_NOW), new FormFieldSelectChoiceOption($this->common_lang['status.approved.date'], DownloadFile::APPROVAL_DATE)), array('events' => array('change' => '
				if (HTMLForms.getField("approbation_type").getValue() == 2) {
					jQuery("#' . __CLASS__ . '_start_date_field").show();
					HTMLForms.getField("end_date_enabled").enable();
				} else { 
					jQuery("#' . __CLASS__ . '_start_date_field").hide();
					HTMLForms.getField("end_date_enabled").disable();
				}'))));
            $publication_fieldset->add_field(new FormFieldDateTime('start_date', $this->common_lang['form.date.start'], $this->get_downloadfile()->get_start_date() === null ? new Date() : $this->get_downloadfile()->get_start_date(), array('hidden' => $this->get_downloadfile()->get_approbation_type() != DownloadFile::APPROVAL_DATE)));
            $publication_fieldset->add_field(new FormFieldCheckbox('end_date_enabled', $this->common_lang['form.date.end.enable'], $this->get_downloadfile()->is_end_date_enabled(), array('hidden' => $this->get_downloadfile()->get_approbation_type() != DownloadFile::APPROVAL_DATE, 'events' => array('click' => '
			if (HTMLForms.getField("end_date_enabled").getValue()) {
				HTMLForms.getField("end_date").enable();
			} else { 
				HTMLForms.getField("end_date").disable();
			}'))));
            $publication_fieldset->add_field(new FormFieldDateTime('end_date', $this->common_lang['form.date.end'], $this->get_downloadfile()->get_end_date() === null ? new Date() : $this->get_downloadfile()->get_end_date(), array('hidden' => !$this->get_downloadfile()->is_end_date_enabled())));
        }
        $this->build_contribution_fieldset($form);
        $fieldset->add_field(new FormFieldHidden('referrer', $request->get_url_referrer()));
        $this->submit_button = new FormButtonDefaultSubmit();
        $form->add_button($this->submit_button);
        $form->add_button(new FormButtonReset());
        $this->form = $form;
    }
    protected function build_form(HTTPRequestCustom $request)
    {
        $form = new HTMLForm(__CLASS__);
        $fieldset = new FormFieldsetHTML('category', $this->get_title());
        $form->add_fieldset($fieldset);
        $fieldset->add_field(new FormFieldSimpleSelectChoice('type', LangLoader::get_message('type', 'main'), $this->get_category()->get_type(), array(new FormFieldSelectChoiceOption(LangLoader::get_message('category', 'categories-common'), ForumCategory::TYPE_CATEGORY), new FormFieldSelectChoiceOption(LangLoader::get_message('module_title', 'common', 'forum'), ForumCategory::TYPE_FORUM), new FormFieldSelectChoiceOption(LangLoader::get_message('link', 'admin'), ForumCategory::TYPE_URL)), array('events' => array('change' => '
				if (HTMLForms.getField("type").getValue() == ' . ForumCategory::TYPE_CATEGORY . ') {
					HTMLForms.getField("id_parent").disable();
					HTMLForms.getField("description").disable();
					HTMLForms.getField("url").disable();
					if (HTMLForms.getField("special_authorizations").getValue()) {
						jQuery("#' . __CLASS__ . '_authorizations > div").eq(1).hide();
						jQuery("#' . __CLASS__ . '_authorizations > div").eq(2).hide();
					}
				} else if (HTMLForms.getField("type").getValue() == ' . ForumCategory::TYPE_FORUM . ') {
					HTMLForms.getField("id_parent").enable();
					HTMLForms.getField("description").enable();
					HTMLForms.getField("url").disable();
					if (HTMLForms.getField("special_authorizations").getValue()) {
						jQuery("#' . __CLASS__ . '_authorizations > div").eq(1).show();
						jQuery("#' . __CLASS__ . '_authorizations > div").eq(2).show();
					}
				} else {
					HTMLForms.getField("id_parent").enable();
					HTMLForms.getField("description").enable();
					HTMLForms.getField("url").enable();
					if (HTMLForms.getField("special_authorizations").getValue()) {
						jQuery("#' . __CLASS__ . '_authorizations > div").eq(1).hide();
						jQuery("#' . __CLASS__ . '_authorizations > div").eq(2).hide();
					}
				}'))));
        $fieldset->add_field(new FormFieldTextEditor('name', $this->common_lang['form.name'], $this->get_category()->get_name(), array('required' => true)));
        $fieldset->add_field(new FormFieldCheckbox('personalize_rewrited_name', $this->common_lang['form.rewrited_name.personalize'], $this->get_category()->rewrited_name_is_personalized(), array('events' => array('click' => '
		if (HTMLForms.getField("personalize_rewrited_name").getValue()) {
			HTMLForms.getField("rewrited_name").enable();
		} else { 
			HTMLForms.getField("rewrited_name").disable();
		}'))));
        $fieldset->add_field(new FormFieldTextEditor('rewrited_name', $this->common_lang['form.rewrited_name'], $this->get_category()->get_rewrited_name(), array('description' => $this->common_lang['form.rewrited_name.description'], 'hidden' => !$this->get_category()->rewrited_name_is_personalized()), array(new FormFieldConstraintRegex('`^[a-z0-9\\-]+$`i'))));
        $fieldset->add_field(new FormFieldRichTextEditor('description', $this->common_lang['form.description'], $this->get_category()->get_description(), array('hidden' => $this->get_category()->get_type() == ForumCategory::TYPE_CATEGORY)));
        $search_category_children_options = new SearchCategoryChildrensOptions();
        $search_category_children_options->add_category_in_excluded_categories(Category::ROOT_CATEGORY);
        if ($this->get_category()->get_id()) {
            $search_category_children_options->add_category_in_excluded_categories($this->get_category()->get_id());
        }
        $fieldset->add_field($this->get_categories_manager()->get_select_categories_form_field('id_parent', $this->common_lang['form.category'], $this->get_category()->get_id_parent(), $search_category_children_options, array('required' => true, 'hidden' => $this->get_category()->get_type() == ForumCategory::TYPE_CATEGORY)));
        $fieldset->add_field(new FormFieldUrlEditor('url', LangLoader::get_message('form.url', 'common'), $this->get_category()->get_url(), array('required' => true, 'hidden' => $this->get_category()->get_type() != ForumCategory::TYPE_URL)));
        $fieldset_authorizations = new FormFieldsetHTML('authorizations_fieldset', $this->common_lang['authorizations']);
        $form->add_fieldset($fieldset_authorizations);
        $root_auth = $this->get_categories_manager()->get_categories_cache()->get_category(Category::ROOT_CATEGORY)->get_authorizations();
        $fieldset_authorizations->add_field(new FormFieldCheckbox('special_authorizations', $this->common_lang['authorizations'], !$this->get_category()->auth_is_equals($root_auth), array('description' => $this->lang['category.form.authorizations.description'], 'events' => array('click' => '
		if (HTMLForms.getField("special_authorizations").getValue()) {
			jQuery("#' . __CLASS__ . '_authorizations").show();
			if (HTMLForms.getField("type").getValue() == ' . ForumCategory::TYPE_CATEGORY . ' || HTMLForms.getField("type").getValue() == ' . ForumCategory::TYPE_URL . ') {
				jQuery("#' . __CLASS__ . '_authorizations > div").eq(1).hide();
				jQuery("#' . __CLASS__ . '_authorizations > div").eq(2).hide();
			}
		} else { 
			jQuery("#' . __CLASS__ . '_authorizations").hide();
		}'))));
        // Autorisations cachées à l'édition Si le type est catégorie ou url
        $fieldset_authorizations->add_field(new FormFieldFree('hide_authorizations', '', '
		<script>
		<!--
		jQuery(document).ready(function() {
			if (HTMLForms.getField("special_authorizations").getValue() && (HTMLForms.getField("type").getValue() == ' . ForumCategory::TYPE_CATEGORY . ' || HTMLForms.getField("type").getValue() == ' . ForumCategory::TYPE_URL . ')) {
				jQuery("#' . __CLASS__ . '_authorizations > div").eq(1).hide();
				jQuery("#' . __CLASS__ . '_authorizations > div").eq(2).hide();
			}
			});
		-->
		</script>'));
        $auth_settings = $this->get_authorizations_settings();
        $auth_setter = new FormFieldAuthorizationsSetter('authorizations', $auth_settings, array('hidden' => $this->get_category()->auth_is_equals($root_auth)));
        $auth_settings->build_from_auth_array($this->get_category()->get_authorizations());
        $fieldset_authorizations->add_field($auth_setter);
        $fieldset->add_field(new FormFieldHidden('referrer', $request->get_url_referrer()));
        $this->submit_button = new FormButtonDefaultSubmit();
        $form->add_button($this->submit_button);
        $form->add_button(new FormButtonReset());
        $this->form = $form;
    }