/** * Load all mailinglist * * @param sfWebRequest $request * @return <type> */ public function executeLoadMailinglist(sfWebRequest $request) { $mailinglist = new Mailinglist(); $data = MailinglistTemplateTable::instance()->getAllMailinglistTemplates(-1,-1); $json_result = $mailinglist->buildAllMailinglists($data); $this->renderText('({"result":'.json_encode($json_result).'})'); return sfView::NONE; }
public function postMailinglist() { $input_start_date = \Input::get('start_date'); if ($input_start_date == "") { $input_start_date = "01/01/1900"; } $start_date = \DateTime::createFromFormat('d/m/Y', $input_start_date); $input_end_date = \Input::get('end_date'); if ($input_end_date == "") { $end_date = new \DateTime("NOW"); } else { $end_date = \DateTime::createFromFormat('d/m/Y', $input_end_date); } $data = Mailinglist::where('updated_at', '>=', $start_date)->where('updated_at', '<=', $end_date)->orderBy('email')->get(); if (count($data) == 0) { $errors = new \Illuminate\Support\MessageBag(); $errors->add('downloadError', "There's no data within the dates specified."); return \Redirect::to('admin/mailinglists')->withErrors($errors); } \Excel::create('Redooor_Mailinglist_Report', function ($excel) use($data) { $excel->sheet('Mailinglist Report', function ($sheet) use($data) { $sheet->loadView('redminportal::reports/mailinglist')->with('data', $data); }); })->download('csv'); }
public function getDelete($id) { // Find the mailinglist using the user id $mailinglist = Mailinglist::find($id); // Delete the mailinglist if ($mailinglist == null) { $errors = new \Illuminate\Support\MessageBag(); $errors->add('deleteError', "We are having problem deleting this entry. It may have already been deleted."); return \Redirect::to('admin/mailinglists')->withErrors($errors); } $mailinglist->delete(); return \Redirect::to('admin/mailinglists'); }
/** * Subscribe to lists * * @access private * @param array emails to be subscribed * @param array lists to be joined */ private function subscribe_to_lists($data = array(), $emails = array()) { if (empty($data) or !is_array($data)) { return FALSE; } // ------------------------------------- // Cache // ------------------------------------- $cache = new Freeform_cacher(array($emails, $data), __FUNCTION__, __CLASS__); if ($cache->is_set()) { return $cache->get(); } // ------------------------------------- // Get lists // ------------------------------------- $this->lists = $this->get_lists(); // ------------------------------------- // Clean // ------------------------------------- $subscribe = array(); $unsubscribe = array(); foreach ($data as $key => $val) { if (!is_numeric($key) or !isset($this->lists[$key])) { continue; } if ($val == 'n') { $unsubscribe[] = $key; } else { $subscribe[] = $key; } $data = $subscribe; } // ------------------------------------- // Instantiate module // ------------------------------------- if (class_exists('Mailinglist') === FALSE) { require PATH_MOD . '/mailinglist/mod.mailinglist' . EXT; } $mailinglist = new Mailinglist(); // ------------------------------------- // Get current subscriptions // ------------------------------------- $current_subscriptions = array(); if (!empty($emails)) { $query = ee()->db->query("SELECT email, list_id\n\t\t\t\t FROM exp_mailing_list\n\t\t\t\t WHERE email\n\t\t\t\t IN ('" . implode("','", $emails) . "')\n\t\t\t\t AND list_id\n\t\t\t\t IN (" . implode(',', array_keys($this->lists)) . ")"); foreach ($query->result_array() as $row) { $current_subscriptions[$row['email']][$row['list_id']] = $row['list_id']; } } // ------------------------------------- // Loop for email // ------------------------------------- foreach ($emails as $email) { // Kill duplicate emails from authorization queue. This prevents an error if a user // signs up but never activates their email, then signs up again. Note- check for list_id // as they may be signing up for two different lists $sql = "DELETE FROM exp_mailing_list_queue\n\t\t\t\t\t\tWHERE email = '" . ee()->db->escape_str($email) . "'"; if (!empty($subscribe)) { $sqla[] = " list_id IN ('" . implode("','", $subscribe) . "')"; } if (!empty($unsubscribe)) { $sqla[] = " list_id IN ('" . implode("','", $unsubscribe) . "')"; } if (!empty($sqla)) { $sql .= " AND (" . implode(" OR ", $sqla) . ")"; } ee()->db->query($sql); // ------------------------------------- // Subscribe // ------------------------------------- $code = ee()->functions->random('alnum', 10); foreach ($subscribe as $list_id) { if (isset($current_subscriptions[$email][$list_id])) { continue; } if (empty($this->settings['send_email_confirmation']) or $this->settings['send_email_confirmation'] != 'y') { ee()->db->query("INSERT INTO exp_mailing_list (list_id, authcode, email, ip_address)\n\t\t\t\t\t\t\t\t\t\t VALUES ('" . ee()->db->escape_str($list_id) . "', '" . $code . "', '" . ee()->db->escape_str($email) . "', '" . ee()->db->escape_str(ee()->input->ip_address()) . "')"); } else { ee()->db->query("INSERT INTO exp_mailing_list_queue (email, list_id, authcode, date) VALUES ('" . ee()->db->escape_str($email) . "', '" . ee()->db->escape_str($list_id) . "', '" . $code . "', '" . time() . "')"); $mailinglist->send_email_confirmation($email, $code, $list_id); } } // ------------------------------------- // Unsubscribe // ------------------------------------- if (!empty($current_subscriptions[$email]) and !empty($unsubscribe)) { $uns = array_intersect($current_subscriptions[$email], $unsubscribe); } if (!empty($uns)) { $sql = "DELETE FROM exp_mailing_list WHERE email = '" . ee()->db->escape_str($email) . "' AND list_id IN (" . implode(',', $uns) . ")"; ee()->db->query($sql); $sql = "DELETE FROM exp_mailing_list_queue WHERE email = '" . ee()->db->escape_str($email) . "' AND list_id IN (" . implode(',', $uns) . ")"; ee()->db->query($sql); } } // ------------------------------------- // return // ------------------------------------- return $cache->set($data); }
/** * Adapt mailinglist to current version * @param sfWebRequest $request * @return <type> */ public function executeAdaptMailinglist(sfWebRequest $request) { $mailinglist = new Mailinglist(); $docuObj = new Documenttemplate(); $mailinglistdata = MailinglistTemplateTable::instance()->getMailinglistByVersionTemplateId($request->getParameter('id'))->toArray(); $currentdocumenttemplateversion = DocumenttemplateVersionTable::instance()->getActiveVersionById($mailinglistdata[0]['documenttemplatetemplate_id'])->toArray(); $slots = $docuObj->buildSlots($currentdocumenttemplateversion[0]['id'], 'SLOTSONLY'); $mailinglistversiondata = MailinglistVersionTable::instance()->getActiveVersionById($request->getParameter('id'))->toArray(); MailinglistVersionTable::instance()->setMailinglistInactiveById($mailinglistversiondata[0]['mailinglisttemplate_id']); $mailinglistversion_id = $mailinglist->storeVersion($mailinglistversiondata[0]['mailinglisttemplate_id'],$mailinglistversiondata[0]['version']+1, $currentdocumenttemplateversion[0]['id']); $userdata = MailinglistAllowedSenderTable::instance()->getAllowedSenderById($mailinglistversiondata[0]['id']); $users = $mailinglist->buildAllowedUser($userdata); $mailinglist->saveUser($mailinglistversion_id, isset($users) ? $users: array()); $authdata = MailinglistAuthorizationSettingTable::instance()->getAuthorizationById($mailinglistversiondata[0]['id'])->toArray(); $mailinglist->adaptAuthorizationEntry($authdata, $mailinglistversion_id); $mailinglist->storeMailinglist($slots, $mailinglistversion_id); return sfView::NONE; }