function page_send($page) { $newsletter_m = $page->add('xepan\\marketing\\Model_Newsletter'); $newsletter_m->addCondition('status', 'Approved'); $f = $page->add('Form', null, null, ['form/empty']); $newsletter_field = $f->addField('Dropdown', 'newsletter')->validate('required')->setEmptyText('Please Select Newsletter'); $newsletter_field->setModel($newsletter_m); $source_mail = explode("<br/>", $this['emails_str']); foreach ($source_mail as $index => $email) { $email_for_letter = $f->addField('CheckBox', "email_" . $index, $email); } $f->addSubmit('Send Newsletter')->addClass('btn btn-primary'); if ($this->app->stickyGET('newsletter')) { $newsletter_m->tryLoad($this->app->stickyGET('newsletter')); } $view = $page->add('View')->addClass('xepan-padding-large'); $view->setHtml($newsletter_m['title'] . "<br>" . $newsletter_m['message_blog']); $newsletter_field->js('change', $view->js()->reload(['newsletter' => $newsletter_field->js()->val()])); if ($f->isSubmitted()) { $newsletter_model = $page->add('xepan\\marketing\\Model_Newsletter'); $newsletter_model->tryLoad($f['newsletter']); $email_settings = $this->add('xepan\\communication\\Model_Communication_EmailSetting')->tryLoadAny(); $mail = $this->add('xepan\\marketing\\Model_Communication_Newsletter'); $mail['from_id'] = $this->app->employee->id; $subject = $newsletter_model['title']; $email_subject = $this->add('GiTemplate'); $email_body = $newsletter_model['message_blog']; $email_subject->loadTemplateFromString($subject); $subject_v = $this->add('View', null, null, $email_subject); $subject_v->template->set($this->get()); $pq = new \xepan\cms\phpQuery(); $dom = $pq->newDocument($email_body); foreach ($dom['a'] as $anchor) { $a = $pq->pq($anchor); $url = $this->app->url($a->attr('href'), ['xepan_landing_contact_id' => $this->id, 'xepan_landing_campaign_id' => $this['lead_campaing_id'], 'xepan_landing_content_id' => $newsletter_model->id, 'xepan_landing_emailsetting_id' => $email_settings['id'], 'source' => 'NewsLetter'])->absolute()->getURL(); $a->attr('href', $url); } $email_body = $dom->html(); $temp = $this->add('GiTemplate'); $temp->loadTemplateFromString($email_body); $body_v = $this->add('View', null, null, $temp); $body_v->template->set($this->get()); $mail->setfrom($email_settings['from_email'], $email_settings['from_name']); $source_mail = explode("<br/>", $this['emails_str']); foreach ($source_mail as $index => $email) { $body_v->template->trySetHTML('unsubscribe', '<a href=' . $_SERVER["HTTP_HOST"] . '/?page=xepan_marketing_unsubscribe&email_str=' . $email . '&xepan_landing_contact_id=' . $this->id . '>Unsubscribe</>'); if ($f['email_' . $index]) { $mail->addTo($email); } } $mail['related_document_id'] = $newsletter_model->id; $mail->setSubject($subject_v->getHtml()); $mail->setBody($body_v->getHtml()); $mail->send($email_settings); $this->app->employee->addActivity("Newsletter : '" . $newsletter_model['content_name'] . "' successfully sent to '" . $this['name'] . "'", $newsletter_model->id, $this->id, null, null, "xepan_marketing_newsletterdesign&0&action=view&document_id=" . $newsletter_model->id . "")->notifyWhoCan(' ', ' ', $this); return $f->js(true, $f->js(null, $f->js()->closest('.dialog')->dialog('close'))->univ()->successMessage('Mail Send Successfully'))->reload(); } }
function init() { parent::init(); $all_postable_contents = $this->add('xepan/marketing/Model_SocialPost'); $schedule_j = $all_postable_contents->join('schedule.document_id', 'id'); $schedule_j->addField('posted_on'); $schedule_j->addField('schedule_campaign_id', 'campaign_id'); $schedule_j->addField('schedule_id', 'id'); $schedule_j->addField('scheduled_datetime', 'date'); $campaign_j = $schedule_j->join('campaign.document_id', 'campaign_id'); $campain_document_j = $campaign_j->join('document', 'document_id'); $campain_document_j->addField('campaign_status', 'status'); $campaign_j->addField('ending_date'); $all_postable_contents->addCondition('status', 'Approved'); $all_postable_contents->addCondition('campaign_status', 'Approved'); $all_postable_contents->addCondition('ending_date', '>=', $this->app->today); $all_postable_contents->addCondition('scheduled_datetime', '<=', $this->app->now); $all_postable_contents->addCondition('posted_on', null); // $social_post_array = ['Facebook'=>['user_id','user_obj'=>'user_object','post_id'=>11,'post_obj'=>'post_model']]; $social_post_array = []; foreach ($all_postable_contents as $postable_content) { $asso_users = $this->add('xepan\\marketing\\Model_Campaign_SocialUser_Association')->addCondition('campaign_id', $postable_content['schedule_campaign_id'])->addCondition('is_active', true); // echo $postable_content['schedule_campaign_id']."<br/>"; // echo $asso_users->count()->getOne()."<br/>"; // continue; foreach ($asso_users as $asso_user) { if (!isset($social_post_array[$asso_user['type']])) { $social_post_array[$asso_user['type']] = []; $temp_array = []; } if ($social_post_array[$asso_user['type']]['user_id'] === $asso_user['socialuser_id'] and $social_post_array[$asso_user['type']]['post_id'] === $postable_content['id']) { continue; } $post_model = $this->add('xepan\\marketing\\Model_SocialPost')->load($postable_content['id']); // APPENDING VALUES IN URL $pq = new \xepan\cms\phpQuery(); $dom = $pq->newDocument($post_model['message_blog']); foreach ($dom['a'] as $anchor) { $a = $pq->pq($anchor); $url = $this->app->url($a->attr('href'), ['action' => null, 'document_id' => null, 'xepan_landing_campaign_id' => $postable_content['schedule_campaign_id'], 'xepan_landing_content_id' => $postable_content['id']])->absolute()->getURL(); $a->attr('href', $url); } $post_model['message_blog'] = $dom->html(); if ($post_model['url']) { $url = $this->app->url($post_model['url'], ['xepan_landing_campaign_id' => $postable_content['schedule_campaign_id'], 'xepan_landing_content_id' => $postable_content['id'], 'source' => 'Social'])->absolute()->getURL(); $post_model['url'] = $url; } $post_image_url = (string) $post_model->ref('Attachments')->setLimit(1)->fieldQuery('file'); $post_image_path = ""; if ($post_image_url) { $post_image_path = $_SERVER['DOCUMENT_ROOT'] . $post_image_url; if (!file_exists($post_image_path)) { $post_image_path = ""; } } $temp_array['user_id'] = $asso_user['socialuser_id']; $temp_array['user_obj'] = $social_user = $this->add('xepan\\marketing\\Model_SocialUser')->load($asso_user['socialuser_id']); $temp_array['config_obj'] = $this->add('xepan\\marketing\\Model_SocialPosters_Base_SocialConfig')->load($social_user['config_id']); $temp_array['post_id'] = $postable_content['id']; $temp_array['post_obj'] = $post_model; $temp_array['post_image_path'] = $post_image_path; $temp_array['campaign_id'] = $postable_content['schedule_campaign_id']; $temp_array['schedule_id'] = $postable_content['schedule_id']; $social_post_array[$asso_user['type']][] = $temp_array; } } foreach ($social_post_array as $social_app => $value) { $this->add('xepan/marketing/SocialPosters_' . $social_app)->postAll($value); } echo $all_postable_contents->count()->getOne() . ' Posts done'; }