public function execute(HTTPRequestCustom $request)
 {
     $id = $request->get_int('id', 0);
     $id_stream = $request->get_int('id_stream', 0);
     $db_querier = PersistenceContext::get_querier();
     if ($this->subscriber_exist($id) || $id_stream !== 0 && $id !== 0) {
         if (!NewsletterAuthorizationsService::id_stream($id_stream)->moderation_subscribers()) {
             NewsletterAuthorizationsService::get_errors()->moderation_subscribers();
         }
         $condition = "WHERE subscriber_id = :id AND stream_id = :id_stream";
         $parameters = array('id' => $id, 'id_stream' => $id_stream);
         $db_querier->delete(NewsletterSetup::$newsletter_table_subscriptions, $condition, $parameters);
         $condition = "WHERE subscriber_id = :id";
         $parameters = array('id' => $id);
         $is_last = PersistenceContext::get_querier()->count(NewsletterSetup::$newsletter_table_subscriptions, $condition, $parameters) == 0;
         if ($is_last) {
             $condition = "WHERE id = :id";
             $parameters = array('id' => $id);
             $db_querier->delete(NewsletterSetup::$newsletter_table_subscribers, $condition, $parameters);
         }
         NewsletterStreamsCache::invalidate();
         $controller = new UserErrorController(LangLoader::get_message('success', 'status-messages-common'), LangLoader::get_message('process.success', 'status-messages-common'), UserErrorController::SUCCESS);
         DispatchManager::redirect($controller);
     } else {
         $controller = new UserErrorController(LangLoader::get_message('error', 'status-messages-common'), LangLoader::get_message('error-subscriber-not-existed', 'common', 'newsletter'));
         DispatchManager::redirect($controller);
     }
 }
 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);
     }
 }
 public function execute(HTTPRequestCustom $request)
 {
     $this->stream = NewsletterStreamsCache::load()->get_stream($request->get_int('id_stream', 0));
     $this->init();
     $this->build_form($request);
     return $this->build_response($this->view);
 }
 public function execute(HTTPRequestCustom $request)
 {
     $id = $request->get_int('id', 0);
     $code = -1;
     if (!empty($id)) {
         $config = ContactConfig::load();
         $fields = $config->get_fields();
         if (isset($fields[$id])) {
             $field = new ContactField();
             $field->set_properties($fields[$id]);
             if ($field->is_deletable()) {
                 unset($fields[$id]);
                 $new_fields_list = array();
                 $position = 1;
                 foreach ($fields as $key => $f) {
                     $new_fields_list[$position] = $f;
                     $position++;
                 }
                 $config->set_fields($new_fields_list);
                 ContactConfig::save();
                 $code = $id;
             }
         }
     }
     return new JSONResponse(array('code' => $code));
 }
    private function build_view(HTTPRequestCustom $request)
    {
        $db_querier = PersistenceContext::get_querier();
        $date_lang = LangLoader::get('date-common');
        $events_list = $participants = array();
        $config = CalendarConfig::load();
        $year = $this->year ? $this->year : $request->get_int('calendar_ajax_year', date('Y'));
        $month = $this->month ? $this->month : $request->get_int('calendar_ajax_month', date('n'));
        $day = $this->day ? $this->day : $request->get_int('calendar_ajax_day', 1);
        $array_l_month = array($date_lang['january'], $date_lang['february'], $date_lang['march'], $date_lang['april'], $date_lang['may'], $date_lang['june'], $date_lang['july'], $date_lang['august'], $date_lang['september'], $date_lang['october'], $date_lang['november'], $date_lang['december']);
        $result = $db_querier->select("SELECT *\n\t\tFROM " . CalendarSetup::$calendar_events_table . " event\n\t\tLEFT JOIN " . CalendarSetup::$calendar_events_content_table . " event_content ON event_content.id = event.content_id\n\t\tLEFT JOIN " . DB_TABLE_MEMBER . " member ON member.user_id = event_content.author_id\n\t\tLEFT JOIN " . DB_TABLE_COMMENTS_TOPIC . " com ON com.id_in_module = event.id_event AND com.module_id = 'calendar'\n\t\tWHERE approved = 1\n\t\tAND ((start_date BETWEEN :first_day_hour AND :last_day_hour) OR (end_date BETWEEN :first_day_hour AND :last_day_hour) OR (:first_day_hour BETWEEN start_date AND end_date))\n\t\tORDER BY start_date ASC", array('first_day_hour' => mktime(0, 0, 0, $month, $day, $year), 'last_day_hour' => mktime(23, 59, 59, $month, $day, $year)));
        while ($row = $result->fetch()) {
            $event = new CalendarEvent();
            $event->set_properties($row);
            $events_list[$event->get_id()] = $event;
        }
        $result->dispose();
        $events_number = $result->get_rows_count();
        $this->view->put_all(array('C_COMMENTS_ENABLED' => $config->are_comments_enabled(), 'C_EVENTS' => $events_number > 0, 'DATE' => $day . ' ' . $array_l_month[$month - 1] . ' ' . $year, 'L_EVENTS_NUMBER' => $events_number > 1 ? StringVars::replace_vars($this->lang['calendar.labels.events_number'], array('events_number' => $events_number)) : $this->lang['calendar.labels.one_event']));
        if (!empty($events_list)) {
            $result = $db_querier->select('SELECT event_id, member.user_id, display_name, level, groups
			FROM ' . CalendarSetup::$calendar_users_relation_table . ' participants
			LEFT JOIN ' . DB_TABLE_MEMBER . ' member ON member.user_id = participants.user_id
			WHERE event_id IN :events_list', array('events_list' => array_keys($events_list)));
            while ($row = $result->fetch()) {
                if (!empty($row['display_name'])) {
                    $participant = new CalendarEventParticipant();
                    $participant->set_properties($row);
                    $participants[$row['event_id']][$participant->get_user_id()] = $participant;
                }
            }
            $result->dispose();
            foreach ($events_list as $event) {
                if (isset($participants[$event->get_id()])) {
                    $event->set_participants($participants[$event->get_id()]);
                }
                $this->view->assign_block_vars('event', $event->get_array_tpl_vars());
                $participants_number = count($event->get_participants());
                $i = 0;
                foreach ($event->get_participants() as $participant) {
                    $i++;
                    $this->view->assign_block_vars('event.participant', array_merge($participant->get_array_tpl_vars(), array('C_LAST_PARTICIPANT' => $i == $participants_number)));
                }
            }
        }
    }
 public function execute(HTTPRequestCustom $request)
 {
     $this->stream = NewsletterStreamsCache::load()->get_stream($request->get_int('id_stream', 0));
     if ($this->stream->get_id() == 0) {
         AppContext::get_response()->redirect(NewsletterUrlBuilder::home());
     }
     $this->init();
     $this->build_form($request);
     return $this->build_response($this->view);
 }
 private function get_shoutbox_message(HTTPRequestCustom $request)
 {
     $id = $request->get_int('id', 0);
     if (!empty($id)) {
         try {
             $this->shoutbox_message = ShoutboxService::get_message('WHERE id=:id', array('id' => $id));
         } catch (RowNotFoundException $e) {
         }
     }
 }
 public function execute(HTTPRequestCustom $request)
 {
     $id = $request->get_int('id', 0);
     $display = $request->get_bool('display', true);
     if ($id !== 0) {
         PersistenceContext::get_querier()->update(DB_TABLE_MEMBER_EXTENDED_FIELDS_LIST, array('display' => (int) $display), 'WHERE id = :id', array('id' => $id));
         ExtendedFieldsCache::invalidate();
     }
     return new JSONResponse(array('id' => $id, 'display' => (int) $display));
 }
 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'));
 }
 private function get_faq_question(HTTPRequestCustom $request)
 {
     $id = $request->get_int('id', 0);
     if (!empty($id)) {
         try {
             $this->faq_question = FaqService::get_question('WHERE id=:id', array('id' => $id));
         } catch (RowNotFoundException $e) {
         }
     }
 }
 public function execute(HTTPRequestCustom $request)
 {
     $id = $request->get_int('id', 0);
     $code = -1;
     if (!empty($id)) {
         //Delete filter
         BugtrackerService::delete_filter("WHERE id=:id", array('id' => $id));
         $code = $id;
     }
     return new JSONResponse(array('code' => $code));
 }
 private function get_faq_question(HTTPRequestCustom $request)
 {
     $id = $request->get_int('id', 0);
     if (!empty($id)) {
         try {
             return FaqService::get_question('WHERE id=:id', array('id' => $id));
         } catch (RowNotFoundException $e) {
             $error_controller = PHPBoostErrors::unexisting_page();
             DispatchManager::redirect($error_controller);
         }
     }
 }
 private function init(HTTPRequestCustom $request)
 {
     $id = $request->get_int('id', 0);
     $this->lang = LangLoader::get('common', 'bugtracker');
     try {
         $this->bug = BugtrackerService::get_bug('WHERE id=:id', array('id' => $id));
     } catch (RowNotFoundException $e) {
         $error_controller = new UserErrorController(LangLoader::get_message('error', 'status-messages-common'), $this->lang['error.e_unexist_bug']);
         DispatchManager::redirect($error_controller);
     }
     $this->view = new StringTemplate('# INCLUDE FORM #');
     $this->view->add_lang($this->lang);
     $this->config = BugtrackerConfig::load();
 }
 public function execute(HTTPRequestCustom $request)
 {
     $id = $request->get_int('id', null);
     $code = -1;
     if ($id !== null) {
         $extended_field = new ExtendedField();
         $extended_field->set_id($id);
         $exist_field = ExtendedFieldsDatabaseService::check_field_exist_by_id($extended_field);
         if ($exist_field) {
             ExtendedFieldsService::delete_by_id($id);
             $code = $id;
         }
     }
     return new JSONResponse(array('code' => $code));
 }
 public function execute(HTTPRequestCustom $request)
 {
     $id = $request->get_int('id', 0);
     $display = -1;
     if ($id !== 0) {
         $config = ContactConfig::load();
         $fields = $config->get_fields();
         if ($fields[$id]['displayed']) {
             $display = $fields[$id]['displayed'] = 0;
         } else {
             $display = $fields[$id]['displayed'] = 1;
         }
         $config->set_fields($fields);
         ContactConfig::save();
     }
     return new JSONResponse(array('id' => $id, 'display' => $display));
 }
 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);
     }
 }
 private function init(HTTPRequestCustom $request)
 {
     $this->lang = LangLoader::get('common', 'bugtracker');
     $this->config = BugtrackerConfig::load();
     //Get the parameter to delete
     $this->parameter = $request->get_string('parameter', '');
     //Get the id of the parameter to delete
     $this->id = $request->get_int('id', '');
     if (!in_array($this->parameter, array('type', 'category', 'version')) || empty($this->id)) {
         $controller = new UserErrorController(LangLoader::get_message('error', 'status-messages-common'), $this->lang['error.e_unexist_parameter']);
         $controller->set_response_classname(UserErrorController::ADMIN_RESPONSE);
         DispatchManager::redirect($controller);
     }
     $types = $this->config->get_types();
     $categories = $this->config->get_categories();
     $versions = $this->config->get_versions();
     switch ($this->parameter) {
         case 'type':
             if (!isset($types[$this->id])) {
                 //Error : unexist type
                 $controller = new UserErrorController(LangLoader::get_message('error', 'status-messages-common'), $this->lang['error.e_unexist_type']);
                 $controller->set_response_classname(UserErrorController::ADMIN_RESPONSE);
                 DispatchManager::redirect($controller);
             }
             break;
         case 'category':
             if (!isset($categories[$this->id])) {
                 //Error : unexist category
                 $controller = new UserErrorController(LangLoader::get_message('error', 'status-messages-common'), $this->lang['error.e_unexist_category']);
                 $controller->set_response_classname(UserErrorController::ADMIN_RESPONSE);
                 DispatchManager::redirect($controller);
             }
             break;
         case 'version':
             if (!isset($versions[$this->id])) {
                 //Error : unexist version
                 $controller = new UserErrorController(LangLoader::get_message('error', 'status-messages-common'), $this->lang['error.e_unexist_version']);
                 $controller->set_response_classname(UserErrorController::ADMIN_RESPONSE);
                 DispatchManager::redirect($controller);
             }
             break;
     }
 }
    private function build_view(HTTPRequestCustom $request)
    {
        $config = CalendarConfig::load();
        $categories = CalendarService::get_categories_manager()->get_categories_cache()->get_categories();
        $year = $this->year ? $this->year : min($request->get_int('calendar_ajax_year', date('Y')), 2037);
        $month = $this->month ? $this->month : min($request->get_int('calendar_ajax_month', date('n')), 12);
        $bissextile = date("L", mktime(0, 0, 0, 1, 1, $year)) == 1 ? 29 : 28;
        $array_month = array(31, $bissextile, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
        $array_l_month = array($this->lang['january'], $this->lang['february'], $this->lang['march'], $this->lang['april'], $this->lang['may'], $this->lang['june'], $this->lang['july'], $this->lang['august'], $this->lang['september'], $this->lang['october'], $this->lang['november'], $this->lang['december']);
        $month_days = $array_month[$month - 1];
        $previous_month = $month == 1 ? 12 : $month - 1;
        $previous_year = $month == 1 ? $year - 1 : $year;
        $next_month = $month == 12 ? 1 : $month + 1;
        $next_year = $month == 12 ? $year + 1 : $year;
        //Months
        for ($i = 1; $i <= 12; $i++) {
            $this->view->assign_block_vars('months', array('VALUE' => $i, 'NAME' => $array_l_month[$i - 1], 'SELECTED' => $month == $i));
        }
        //Years
        for ($i = 1970; $i <= 2037; $i++) {
            $this->view->assign_block_vars('years', array('VALUE' => $i, 'NAME' => $i, 'SELECTED' => $year == $i));
        }
        //Retrieve all the events of the selected month
        $events = $month == date('n') && $year == date('Y') ? CalendarCurrentMonthEventsCache::load()->get_events() : CalendarService::get_all_current_month_events($month, $year, $month_days);
        $events_legends_list = array();
        foreach ($events as $event) {
            $start_date = new Date($event['start_date'], Timezone::SERVER_TIMEZONE);
            $end_date = new Date($event['end_date'], Timezone::SERVER_TIMEZONE);
            if (($end_date->get_month() > $start_date->get_month() || $end_date->get_year() > $start_date->get_year()) && $month == $start_date->get_month()) {
                $first_event_day = $start_date->get_day();
                $last_event_day = $array_month[$month - 1];
            } else {
                if (($end_date->get_month() > $start_date->get_month() || $end_date->get_year() > $start_date->get_year()) && $month == $end_date->get_month()) {
                    $first_event_day = 1;
                    $last_event_day = $end_date->get_day();
                } else {
                    if (($end_date->get_month() > $start_date->get_month() || $end_date->get_year() > $start_date->get_year()) && $month > $start_date->get_month() && $month < $end_date->get_month()) {
                        $first_event_day = 1;
                        $last_event_day = $array_month[$month - 1];
                    } else {
                        $first_event_day = $start_date->get_day();
                        $last_event_day = $end_date->get_day();
                    }
                }
            }
            for ($j = $first_event_day; $j <= $last_event_day; $j++) {
                if ($event['type'] == 'EVENT' || $event['type'] == 'BIRTHDAY') {
                    $title = isset($array_events[$j]['title']) ? $array_events[$j]['title'] : '';
                    $array_events[$j] = array('title' => $title . (!empty($title) ? '
' : '') . ($event['type'] != 'BIRTHDAY' ? $j == $start_date->get_day() && $month == $start_date->get_month() && $year == $start_date->get_year() ? $start_date->get_hours() . 'h' . $start_date->get_minutes() . ' : ' : '' : LangLoader::get_message('calendar.labels.birthday_title', 'common', 'calendar') . ' ') . $event['title'], 'type' => $event['type'], 'color' => $event['type'] == 'BIRTHDAY' ? $config->get_birthday_color() : ($event['id_category'] != Category::ROOT_CATEGORY && $categories[$event['id_category']]->get_color() ? $categories[$event['id_category']]->get_color() : $config->get_event_color()), 'id_category' => $event['id_category']);
                    if ($event['type'] == 'BIRTHDAY') {
                        $events_legends_list[$j] = array('name' => LangLoader::get_message('calendar.labels.birthday', 'common', 'calendar'), 'color' => $config->get_birthday_color());
                    } else {
                        if ($event['type'] == 'EVENT' && $event['id_category'] == Category::ROOT_CATEGORY) {
                            $events_legends_list[$j] = array('name' => LangLoader::get_message('calendar.titles.event', 'common', 'calendar'), 'color' => $config->get_event_color());
                        } else {
                            if (!isset($events_legends_list[$event['id_category']])) {
                                $events_legends_list[$j] = array('name' => $categories[$event['id_category']]->get_name(), 'color' => $categories[$event['id_category']]->get_color());
                            }
                        }
                    }
                }
            }
        }
        $this->view->put_all(array('C_MINI_MODULE' => $this->is_mini_calendar(), 'C_DISPLAY_LEGEND' => !empty($events_legends_list) && !$this->is_mini_calendar(), 'DATE' => $array_l_month[$month - 1] . ' ' . $year, 'MINI_MODULE' => (int) $this->is_mini_calendar(), 'PREVIOUS_MONTH_TITLE' => $month == 1 ? $array_l_month[11] . ' ' . ($year - 1) : $array_l_month[$month - 2] . ' ' . $year, 'PREVIOUS_YEAR' => $previous_year, 'PREVIOUS_MONTH' => $previous_month, 'NEXT_MONTH_TITLE' => $month == 12 ? $array_l_month[0] . ' ' . ($year + 1) : $array_l_month[$month] . ' ' . $year, 'NEXT_YEAR' => $next_year, 'NEXT_MONTH' => $next_month, 'LEGEND' => self::build_legend($events_legends_list), 'U_AJAX_CALENDAR' => CalendarUrlBuilder::ajax_month_calendar()->rel(), 'U_AJAX_EVENTS' => CalendarUrlBuilder::ajax_month_events()->rel()));
        //First day of the month
        $first_day = date('w', @mktime(1, 0, 0, $month, 1, $year));
        if ($first_day == 0) {
            $first_day = 7;
        }
        //Calendar generation
        $day = 1;
        $last_day = $month_days + $first_day;
        for ($i = 1; $i <= 56; $i++) {
            $birthday_day = $color = false;
            if ($i % 8 == 1 && $i < $last_day) {
                $content = date('W', mktime(0, 0, 0, $month, $day, $year));
                $class = 'calendar-week';
                $last_day++;
            } else {
                if ($i >= $first_day + 1 && $i < $last_day) {
                    if ($day == date("j") && $month == date("m") && $year == date("Y")) {
                        $class = 'calendar-today';
                    } else {
                        if (!empty($array_events[$day])) {
                            $birthday_day = $array_events[$day]['type'] == 'BIRTHDAY';
                            $color = $array_events[$day]['color'];
                            $class = '';
                        } else {
                            if ($i % 8 == 7 || $i % 8 == 0) {
                                $class = 'calendar-weekend';
                            } else {
                                $class = 'calendar-other';
                            }
                        }
                    }
                    $content = $day;
                    $day++;
                } else {
                    if (($i % 8 == 7 || $i % 8 == 0) && $i > $first_day && $day <= $month_days) {
                        $class = 'calendar-weekend';
                    } else {
                        $class = 'calendar-none';
                    }
                }
            }
            if ($day > $month_days && $i % 8 == 0) {
                $i = 56;
            }
            $today = $day - 1;
            $this->view->assign_block_vars('day', array('C_MONTH_DAY' => $i % 8 != 1 && $class != 'calendar-none', 'C_COLOR' => $color || $birthday_day, 'C_WEEK_LABEL' => $i % 8 == 1, 'DAY' => $content, 'TITLE' => !empty($array_events[$today]) ? $array_events[$today]['title'] : '', 'COLOR' => $color, 'CLASS' => $class, 'CHANGE_LINE' => $i % 8 == 0 && $i != 56, 'U_DAY_EVENTS' => CalendarUrlBuilder::home($year, $month, $today, true)->rel()));
        }
    }