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); } }
private function save($id) { $condition = "WHERE id = :id"; $columns = array('mail' => $this->form->get_value('mail')); $parameters = array('id' => $id); PersistenceContext::get_querier()->update(NewsletterSetup::$newsletter_table_subscribers, $columns, $condition, $parameters); NewsletterStreamsCache::invalidate(); }
private function save() { $delete_all_streams = $this->form->get_value('delete_all_streams'); if ($delete_all_streams) { if (AppContext::get_current_user()->check_level(User::MEMBER_LEVEL)) { NewsletterService::unsubscriber_all_streams_member(AppContext::get_current_user()->get_id()); } else { NewsletterService::unsubscriber_all_streams_visitor($this->form->get_value('mail')); } } else { $streams = array(); foreach ($this->form->get_value('choice') as $field => $option) { $streams[] = $option->get_id(); } if (AppContext::get_current_user()->check_level(User::MEMBER_LEVEL) && $streams !== '') { NewsletterService::update_subscriptions_member_registered($streams, AppContext::get_current_user()->get_id()); } else { NewsletterService::update_subscriptions_visitor($streams, $this->form->get_value('mail')); } } NewsletterStreamsCache::invalidate(); }
public static function update_subscriptions_visitor($mail, array $streams) { $subscriber_id = self::$db_querier->get_column_value(NewsletterSetup::$newsletter_table_subscribers, 'id', "WHERE mail = '" . $mail . "'"); //Delete all entries in subscriber id $condition = "WHERE subscriber_id = :subscriber_id"; $parameters = array('subscriber_id' => $subscriber_id); self::$db_querier->delete(NewsletterSetup::$newsletter_table_subscriptions, $condition, $parameters); foreach ($streams as $value) { //Insert user and stream_id in the subscriptions table $columns = array('stream_id' => $value, 'subscriber_id' => $subscriber_id); self::$db_querier->insert(NewsletterSetup::$newsletter_table_subscriptions, $columns); } NewsletterStreamsCache::invalidate(); }