0){ return false;} } $contact_data = \SQL\CONTACT_SELECT::Q1(array($email)); $email_data = \SQL\EMAIL_SELECT::Q1(array($email_id)); $template_text = \SQL\EMAIL_TEMPLATE_SELECT::Q1(array($email_data['template_text'])); $template_html = \SQL\EMAIL_TEMPLATE_SELECT::Q1(array($email_data['template_html'])); //TODO //$smtp = \SYSTEM\CONFIG\config::get(\config_ids::DEMOCRACY_EMAIL_PROTOTYPING); $smtp = \SYSTEM\CONFIG\config::get(\config_ids::DEMOCRACY_EMAIL_CONTACT); $to = $email; //TODO $replacements = []; $replacements['emoji_mobile'] = '📱'; foreach($data as $k => $v){ $replacements['data_'.$k] = $v;} if($list){ $replacements['unsubscribe_link'] = \SYSTEM\CONFIG\config::get(\SYSTEM\CONFIG\config_ids::SYS_CONFIG_PATH_BASEURL). '#!unsubscribe;token.'. \SYSTEM\TOKEN\token::request( 'token_democracy_unsubscribe', array( 'email' => $email,'list' => $list), true); } $from = \SYSTEM\PAGE\replace::replace($email_data['sender'],$replacements); $subject = \SYSTEM\PAGE\replace::replace($email_data['subject'],$replacements); $text = \SYSTEM\PAGE\replace::replace($template_text['value'], $replacements); $html = \SYSTEM\PAGE\replace::replace($template_html['value'], $replacements); //TODO $images = ["democracy_logo" => (new \PAPI('img/logo.png'))->SERVERPATH()]; //TODO $attachments = []; \mailcannon::send( $smtp, $from, $to, $subject, $text, $html, $images, $attachments); if($list != self::EMAIL_LIST_TEST){ \SQL\EMAIL_SENT_INSERT::QI(array($email_id,$email));} return true; } public static function send_list($email_id,$list){ $list_handle = \SQL\CONTACT_EMAIL_LIST_SELECT_LIST::QQ(array($list)); while($row = $list_handle->next()){ \set_time_limit(30); self::send_mail($row['email'], $email_id, $list); } return \SYSTEM\LOG\JsonResult::ok(); } public static function sai_mod__SAI_saimod_mail(){ $vars = array(); return \SYSTEM\PAGE\replace::replaceFile((new \PSAI('saimod_mail/tpl/saimod_mail.tpl'))->SERVERPATH(),$vars); } public static function sai_mod__SAI_saimod_mail_action_overview(){ $vars = array(); return \SYSTEM\PAGE\replace::replaceFile((new \PSAI('saimod_mail/tpl/saimod_mail_overview.tpl'))->SERVERPATH(),$vars); } public static function sai_mod__SAI_saimod_mail_action_contacts($list=null){ $vars = array(); //menu $vars['menu'] = ''; $vars['active_all'] = $list ? '' : 'active'; $res = \SQL\EMAIL_LISTS_SELECT::QQ(); while($row = $res->next()){ $row['active'] = $row['id'] == $list ? 'active' : ''; $vars['menu'] .= \SYSTEM\PAGE\replace::replaceFile((new \PSAI('saimod_mail/tpl/saimod_mail_contacts_menu.tpl'))->SERVERPATH(),$row); } //data $vars['data'] = ''; if($list){ $res = \SQL\CONTACTS_SELECT_LIST::QQ(array($list)); } else { $res = \SQL\CONTACTS_SELECT::QQ(); } while($row = $res->next()){ $vars['data'] .= \SYSTEM\PAGE\replace::replaceFile((new \PSAI('saimod_mail/tpl/saimod_mail_contacts_tr.tpl'))->SERVERPATH(),$row); } return \SYSTEM\PAGE\replace::replaceFile((new \PSAI('saimod_mail/tpl/saimod_mail_contacts.tpl'))->SERVERPATH(),$vars); } public static function sai_mod__SAI_saimod_mail_action_contact($email){ $vars = \SQL\CONTACT_SELECT::Q1(array($email)); //data $vars['data'] = ''; $res = \SQL\EMAIL_LISTS_SELECT_CONTACT::QQ(array($email)); while($row = $res->next()){ $row['checked'] = $row['list'] ? 'checked' : ''; $vars['data'] .= \SYSTEM\PAGE\replace::replaceFile((new \PSAI('saimod_mail/tpl/saimod_mail_contact_tr.tpl'))->SERVERPATH(),$row); } return \SYSTEM\PAGE\replace::replaceFile((new \PSAI('saimod_mail/tpl/saimod_mail_contact.tpl'))->SERVERPATH(),$vars); } public static function sai_mod__SAI_saimod_mail_action_contact_new(){ $vars = array(); //data $vars['data'] = ''; $res = \SQL\EMAIL_LISTS_SELECT::QQ(); while($row = $res->next()){ $vars['data'] .= \SYSTEM\PAGE\replace::replaceFile((new \PSAI('saimod_mail/tpl/saimod_mail_contact_new_tr.tpl'))->SERVERPATH(),$row); } return \SYSTEM\PAGE\replace::replaceFile((new \PSAI('saimod_mail/tpl/saimod_mail_contact_new.tpl'))->SERVERPATH(),$vars); } public static function sai_mod__SAI_saimod_mail_action_update_contact($data){ \SQL\CONTACT_UPDATE::QI(array($data['sex'],$data['name_first'],$data['name_last'],$data['email'])); foreach($data['email_lists'] as $list){ if($list['subscribed']){ self::subscribe($data['email'],$list['id']); } else { \SQL\UNSUBSCRIBE::QI(array($data['email'],$list['id'])); } } return \JsonResult::ok(); } public static function sai_mod__SAI_saimod_mail_action_insert_contact($data){ if($data['email'] == ''){ throw new \SYSTEM\LOG\ERROR('Please provide an EMail'); } \SQL\CONTACT_INSERT::QI(array($data['email'],$data['sex'],$data['name_first'],$data['name_last'])); foreach($data['email_lists'] as $list){ if($list['subscribed']){ \SQL\SUBSCRIBE::QI(array($data['email'],$list['id'])); } else { \SQL\UNSUBSCRIBE::QI(array($data['email'],$list['id'])); } } return \JsonResult::ok(); } public static function sai_mod__SAI_saimod_mail_action_delete_contact($data){ foreach($data as $email){ \SQL\CONTACT_DELETE::QI(array($email)); \SQL\CONTACT_EMAIL_LIST_DELETE::QI(array($email)); \SQL\EMAIL_SENT_DELETE::QI(array($email)); } return \JsonResult::ok(); } public static function sai_mod__SAI_saimod_mail_action_lists(){ $vars = array(); //data $vars['data'] = ''; $res = \SQL\EMAIL_LISTS_SELECT_COUNT::QQ(); while($row = $res->next()){ $vars['data'] .= \SYSTEM\PAGE\replace::replaceFile((new \PSAI('saimod_mail/tpl/saimod_mail_lists_tr.tpl'))->SERVERPATH(),$row); } return \SYSTEM\PAGE\replace::replaceFile((new \PSAI('saimod_mail/tpl/saimod_mail_lists.tpl'))->SERVERPATH(),$vars); } public static function sai_mod__SAI_saimod_mail_action_list($id){ $vars = \SQL\EMAIL_LIST_SELECT::Q1(array($id)); //data $vars['data'] = ''; $res = \SQL\CONTACT_EMAIL_LIST_CONTACT_SELECT::QQ(array($id)); while($row = $res->next()){ $vars['data'] .= \SYSTEM\PAGE\replace::replaceFile((new \PSAI('saimod_mail/tpl/saimod_mail_list_tr.tpl'))->SERVERPATH(),$row); } return \SYSTEM\PAGE\replace::replaceFile((new \PSAI('saimod_mail/tpl/saimod_mail_list.tpl'))->SERVERPATH(),$vars); } public static function sai_mod__SAI_saimod_mail_action_list_new(){ return \SYSTEM\PAGE\replace::replaceFile((new \PSAI('saimod_mail/tpl/saimod_mail_list_new.tpl'))->SERVERPATH()); } public static function sai_mod__SAI_saimod_mail_action_update_list($data){ \SQL\LIST_UPDATE::QI(array($data['name'],$data['id'])); return \JsonResult::ok(); } public static function sai_mod__SAI_saimod_mail_action_insert_list($data){ \SQL\EMAIL_LIST_INSERT::QI(array($data['name'])); return \JsonResult::ok(); } public static function sai_mod__SAI_saimod_mail_action_delete_list($data){ foreach($data as $id){ \SQL\EMAIL_LIST_DELETE::QI(array($id)); \SQL\CONTACT_EMAIL_LIST_DELETE_LIST::QI(array($id)); } return \JsonResult::ok(); } public static function sai_mod__SAI_saimod_mail_action_emails(){ $vars = array(); //data $vars['data'] = ''; $res = \SQL\EMAILS_SELECT::QQ(); while($row = $res->next()){ $vars['data'] .= \SYSTEM\PAGE\replace::replaceFile((new \PSAI('saimod_mail/tpl/saimod_mail_emails_tr.tpl'))->SERVERPATH(),$row); } return \SYSTEM\PAGE\replace::replaceFile((new \PSAI('saimod_mail/tpl/saimod_mail_emails.tpl'))->SERVERPATH(),$vars); } public static function sai_mod__SAI_saimod_mail_action_email($id){ $vars = \SQL\EMAIL_SELECT::Q1(array($id)); $vars['template_lock'] = $vars['system_lock'] ? 'disabled' : ''; //text template $vars['text_options'] = ''; $res = \SQL\EMAIL_TEMPLATES_SELECT::QQ(array(0)); while($row = $res->next()){ $row['selected'] = $row['id'] == $vars['template_text'] ? 'selected' : ''; $vars['text_options'] .= \SYSTEM\PAGE\replace::replaceFile((new \PSAI('saimod_mail/tpl/saimod_mail_email_template_option.tpl'))->SERVERPATH(),$row); } //html template $vars['html_options'] = ''; $res = \SQL\EMAIL_TEMPLATES_SELECT::QQ(array(1)); while($row = $res->next()){ $row['selected'] = $row['id'] == $vars['template_html'] ? 'selected' : ''; $vars['html_options'] .= \SYSTEM\PAGE\replace::replaceFile((new \PSAI('saimod_mail/tpl/saimod_mail_email_template_option.tpl'))->SERVERPATH(),$row); } //send $vars['send'] = ''; $res = \SQL\EMAIL_LISTS_SELECT::QQ(); while($row = $res->next()){ $row['disabled'] = $row['id'] == self::EMAIL_LIST_TEST ? '' : 'disabled'; $row['btn-color'] = $row['id'] == self::EMAIL_LIST_TEST ? 'success' : 'danger'; $row['email'] = $id; $vars['send'] .= \SYSTEM\PAGE\replace::replaceFile((new \PSAI('saimod_mail/tpl/saimod_mail_email_send.tpl'))->SERVERPATH(),$row); } return \SYSTEM\PAGE\replace::replaceFile((new \PSAI('saimod_mail/tpl/saimod_mail_email.tpl'))->SERVERPATH(),$vars); } public static function sai_mod__SAI_saimod_mail_action_email_new(){ //text template $vars['text_options'] = ''; $res = \SQL\EMAIL_TEMPLATES_SELECT::QQ(array(0)); while($row = $res->next()){ $row['selected'] = ''; $vars['text_options'] .= \SYSTEM\PAGE\replace::replaceFile((new \PSAI('saimod_mail/tpl/saimod_mail_email_template_option.tpl'))->SERVERPATH(),$row); } //html template $vars['html_options'] = ''; $res = \SQL\EMAIL_TEMPLATES_SELECT::QQ(array(1)); while($row = $res->next()){ $row['selected'] = ''; $vars['html_options'] .= \SYSTEM\PAGE\replace::replaceFile((new \PSAI('saimod_mail/tpl/saimod_mail_email_template_option.tpl'))->SERVERPATH(),$row); } return \SYSTEM\PAGE\replace::replaceFile((new \PSAI('saimod_mail/tpl/saimod_mail_email_new.tpl'))->SERVERPATH(),$vars); } public static function sai_mod__SAI_saimod_mail_action_send_email($data){ self::send_list($data['email'],$data['list']); return \JsonResult::ok(); } public static function sai_mod__SAI_saimod_mail_action_update_email($data){ \SQL\EMAIL_UPDATE::QI(array($data['name'],$data['sender'],$data['subject'],$data['text_template'],$data['html_template'],$data['id'])); return \JsonResult::ok(); } public static function sai_mod__SAI_saimod_mail_action_insert_email($data){ \SQL\EMAIL_INSERT::QI(array($data['name'],$data['sender'],$data['subject'],$data['text_template'],$data['html_template'])); return \JsonResult::ok(); } public static function sai_mod__SAI_saimod_mail_action_delete_email($data){ foreach($data as $id){ \SQL\EMAIL_DELETE::QI(array($id)); \SQL\EMAIL_SENT_DELETE_EMAIL::QI(array($id)); } return \JsonResult::ok(); } public static function sai_mod__SAI_saimod_mail_action_templates($type=0){ $vars = array(); $vars['active_text'] = $type == 0 ? 'active' : ''; $vars['active_html'] = $type == 1 ? 'active' : ''; //data $vars['data'] = ''; $res = \SQL\EMAIL_TEMPLATES_SELECT::QQ(array($type)); while($row = $res->next()){ $vars['data'] .= \SYSTEM\PAGE\replace::replaceFile((new \PSAI('saimod_mail/tpl/saimod_mail_templates_tr.tpl'))->SERVERPATH(),$row); } return \SYSTEM\PAGE\replace::replaceFile((new \PSAI('saimod_mail/tpl/saimod_mail_templates.tpl'))->SERVERPATH(),$vars); } public static function sai_mod__SAI_saimod_mail_action_template($id){ $vars = \SQL\EMAIL_TEMPLATE_SELECT::Q1(array($id)); $vars['selected_text'] = $vars['type'] == 0 ? 'selected' : ''; $vars['selected_html'] = $vars['type'] == 1 ? 'selected' : ''; return \SYSTEM\PAGE\replace::replaceFile((new \PSAI('saimod_mail/tpl/saimod_mail_template.tpl'))->SERVERPATH(),$vars); } public static function sai_mod__SAI_saimod_mail_action_template_new(){ return \SYSTEM\PAGE\replace::replaceFile((new \PSAI('saimod_mail/tpl/saimod_mail_template_new.tpl'))->SERVERPATH()); } public static function sai_mod__SAI_saimod_mail_action_update_template($data){ \SQL\EMAIL_TEMPLATE_UPDATE::QI(array($data['type'],$data['name'],$data['value'],$data['id'])); return \JsonResult::ok(); } public static function sai_mod__SAI_saimod_mail_action_insert_template($data){ \SQL\EMAIL_TEMPLATE_INSERT::QI(array($data['type'],$data['name'],$data['value'])); return \JsonResult::ok(); } public static function sai_mod__SAI_saimod_mail_action_delete_template($data){ foreach($data as $id){ \SQL\EMAIL_TEMPLATE_DELETE::QI(array($id)); } return \JsonResult::ok(); } public static function menu(){ return new \SYSTEM\SAI\sai_module_menu( 101, \SYSTEM\SAI\sai_module_menu::POISITION_LEFT, \SYSTEM\SAI\sai_module_menu::DIVIDER_NONE, \SYSTEM\PAGE\replace::replaceFile((new \PSAI('saimod_mail/tpl/menu.tpl'))->SERVERPATH()));} public static function right_public(){return false;} public static function right_right(){return \SYSTEM\SECURITY\security::check(\SYSTEM\SECURITY\RIGHTS::SYS_SAI);} public static function js(){ return array(new \PSAI('saimod_mail/js/saimod_mail.js'));} }