public function campaignAction() { $success = null; $message = null; $error = null; $recipients = array(); $sentto = array(); $description = null; $sendtime = null; $timezone = null; $status = null; $shortcode = 0; // set the default message body values $this->defaultValues(); $userid = $this->user->getId(); $formObj = new Application_Model_Form(); $user = new Application_Model_User($userid); $rpt = new Application_Model_Report(); $yearmonth = date('Y-m'); // Logged in users folder ID's $user_folders = $this->user->getFolders(); $this->view->folders = $user_folders; // When the form is submit if ($this->request->isPost()) { } // $msg = new Application_Model_Message(); // $arr = $msg->selectStatusSend(); // $ids = $msg->verifyifcampaignSend($arr); // $msg->updateSendNowcampaign($ids); // echo '<pre>'; print_r($arr); // echo '<pre>'; print_r(); // exit; $campid = date('YmdHis') . $this->user->getId(); $userusage = $rpt->dashboard_totalMessagesSentOut($userid, $yearmonth); // Send the message values back to the view $this->view->description = $description; $this->view->sendtime = $sendtime; $this->view->timezone = $timezone; $this->view->msg_head = $this->msg_head; $this->view->msg_body = $this->msg_body; $this->view->msg_foot = $this->msg_foot; // Status back to the view $this->view->error = $error; $this->view->success = $success; $this->view->message = $message; $this->view->formobject = $formObj; $this->view->formobjects = $formObj->webformList($userid); $this->view->userid = $userid; $this->view->userObj = $user; $this->view->msglimit = $user->messagelimit; $this->view->userusage = $userusage; $this->view->campid = $campid; }
public function messagemonthyearAction($showLayout = false) { if (!$showLayout) { $this->_helper->layout->disableLayout(); } list($key_used, $key_deleted) = $this->user->getKeywordsCountNew(); $this->view->key_used = $key_used - $key_deleted; $this->view->key_limit = $this->user->keywordlimit; $this->view->key_percent = sprintf("%d", $this->view->key_used / $this->view->key_limit * 100); $this->view->msg_limit = $this->user->messagelimit; $messageObj = new Application_Model_Report(); $userid = $this->user->getId(); //*********** Calculate startdate and end date................ $rmonth = date('m'); $ryear = date('Y'); $yearmonth = date('Y-m'); $daysInMonth = cal_days_in_month(CAL_GREGORIAN, $rmonth, $ryear); // echo 'rmstart-'.$monthstartdate = $ryear."-".$rmonth."-1 00:00:00"; echo '<br>'; //echo 'rmend-'.$monthenddate = $ryear."-".$rmonth."-30 00:00:00"; $monthstartdate = $ryear . "-" . $rmonth . "-1 00:00:00"; $monthenddate = $ryear . "-" . $rmonth . "-" . $daysInMonth . " 00:00:00"; $this->view->msg_used = $messageObj->reportCountTotalMessagesByUserIdNew($userid, $monthstartdate, $monthenddate); $this->view->totalNewSubscribers = $messageObj->reportCountTotalSubscribersByUserIdNew($userid, $monthstartdate, $monthenddate, true); $this->view->totalKeywordSubscribers = $messageObj->reportCountRegGrpBySubscribersByUserIdNewKeys($userid, life); $this->view->totalImportedSubscribers = $this->user->totalupload; $myla = $messageObj->getMylaFoldersId(); $this->view->totalMyla = $messageObj->getMyla($userid, $myla[$userid], 'life'); $this->view->topThreeKeywordArray = $topThreeKeywordArray; /* /*one more mess wont change face of this horror*/ $this->view->dashboardKeywordsAct = $messageObj->dashboardKeyword_activity($userid); // $this->view->dashboardTotalOptins = $messageObj->dashboard_totalOptedIn($userid); $this->view->dashboardTotalOptins = $this->user->totalsubscribers; // $this->view->dashboardTotalOptinsByWebform = $messageObj->dashboard_totalOptedInsByWebform($userid); $this->view->dashboardTotalOptinsByWebform = $this->user->weboptin; $this->view->dashboardTotalMessagesSend = $messageObj->dashboard_totalMessagesSentOut($userid, $yearmonth); // $this->view->dashboardTotalCampaignSend = $messageObj->dashboard_totalCampaignSentOut($userid,$yearmonth); $msgpercent = $this->view->dashboardTotalMessagesSend / $this->view->msg_limit * 100; if ($msgpercent >= 100) { $msgpercent = 100; } $this->view->msg_percent = sprintf("%d", $msgpercent); $this->view->userid = $userid; $this->view->mylamt = $this->user->mylamt; $this->view->kwdmt = $this->user->keywordmt; $this->view->webmt = $this->user->webmt; $this->view->dobmt = $this->user->dobmt; // $this->view->totalcampsent = $this->user->totalcampsent; $this->view->totalcampsent = $messageObj->totalCampaignFromUserAccount($userid, $yearmonth); // echo $userid." : ".$yearmonth." : ".$this->view->totalcampsent; exit; $this->view->totalmt = $this->user->totalmt; $this->view->totalmrkmt = $this->user->totalmrkmt; }
/** * Set up a new campaign and send a message. * * @access public // */ public function campaignAction() { // Defaults $success = null; $message = null; $error = null; $recipients = array(); $sentto = array(); $description = null; $date = null; $time = null; $sendtime = null; $timezone = null; $status = null; $user_folders = 0; $shortcode = 0; // set the default message body values $this->defaultValues(); $userid = $this->user->getId(); $formObj = new Application_Model_Form(); $user = new Application_Model_User($userid); $rpt = new Application_Model_Report(); $yearmonth = date('Y-m'); // Logged in users folder ID's $user_folders = $this->user->getFolders(); $foldersid = array_keys($user_folders); $totalfolders = count($foldersid); $orgeachfolders = array(); $setarray = array(); // for($i = 0; $i < $totalfolders; $i++){ // $orgnumbers = array(); // $folder = new Application_Model_Folder($this->user, $foldersid[$i]); // $subscribers = $folder->getSubscribers(); // foreach ($subscribers as $subscriber) { // if(!in_array($subscriber['phonenumber'], $setarray)){ // $orgnumbers[] =$subscriber['phonenumber']; // } // $setarray[$subscriber['phonenumber']] = $subscriber['phonenumber']; // } // $orgeachfolders[$foldersid[$i]] = $orgnumbers; // } $this->view->cleandata = $orgeachfolders; $this->view->folders = $user_folders; // When the form is submit if ($this->request->isPost()) { // see if a folder was selected $sendto = $this->request->getParam('folders'); $description = trim($this->request->getParam('description')); $this->msg_head = $this->request->getParam('msg_head'); $this->msg_body = $this->request->getParam('msg_body'); $shortcode = $this->request->getParam('scselect'); // echo '<pre>'; print_r($sendto); exit; // Get the sendtime $scheduled = false; if ($this->request->getParam('sendtime') == 'later') { $scheduled = true; $sendtime = $this->request->getParam('date') . ' ' . $this->request->getParam('time'); } // User's timezone $this->user->setTimeZone($this->request->getParam('t_zone')); $timezone = $this->user->getTimeZone(); // Only admins can edit the footer if ($this->user->isAdmin()) { $this->msg_foot = $this->request->getParam('msg_foot'); } $msg = $this->msg_head ? "{$this->msg_head}:" : ''; $msg .= "{$this->msg_body}\n{$this->msg_foot}"; $msg = trim($msg); $sendmessage = new Application_Model_Message($this->user); // Verify the user provided a description for this message if ($description) { // Verify there was a message set if ($msg) { // make sure we got the sendto array from POST if (is_array($sendto) && !empty($sendto)) { // Create a campaign id that each message that goes out for this campaign can be grouped by $campaignid = md5($this->user->username . time()); // Get the subscribers from each selected folder $recipients = array(); foreach ($sendto as $folder) { //0001 // Clear out the recipients array for each folder $recipients = array(); // easy check to make sure this folder is owned by this user if (array_key_exists($folder, $user_folders)) { // Get the folder model $folder = new Application_Model_Folder($this->user, $folder); // Verify it if ($folder->isValid()) { // Get subscribers to this folder $subscribers = $folder->getSubscribers(); // echo '<pre>'; print_r($subscribers); // echo'<br>'."DELEMMA "; if (!empty($subscribers)) { foreach ($subscribers as $subscriber) { // Don't add this user if they have already received this message from being in another selected folder if (!in_array($subscriber['phonenumber'], $sentto)) { // key off the phone number to avoid duplicates from this folder, which should // never happen, but better safe than sorry $recipients[$subscriber['phonenumber']] = $subscriber['phonenumber']; } } /** * The message needs to be sent to each folder individually so that the folderid * can be logged in the outbound table. That allows us to see what folder to opt * a user out of when they reply with an optout. */ if (!empty($recipients)) { // Construct the message $i_default = 0; // Set the folderid this message is being sent to $sendmessage->folderid = $folder->getId(); // Set the user description $sendmessage->description = $description; // Set a unique identifier for all messages that go out on this campaign $sendmessage->campaignid = $campaignid; // Queue it up for delivery // ($body, $recipients, $sendtime = null, $timezone = null, $confirmid = 0, $depth = 0, $createuser = 0, $shortcode=87365) //queue($msg, $recipients, $sendtime, $timezone,$i_default,$source,$userid,$shortcode); dev $source = 404; $status = $sendmessage->queue($msg, $recipients, $sendtime, $timezone, $i_default, $source, $userid, $shortcode); // $status = $sendmessage->queue($msg, $recipients, $sendtime, $timezone,$i_default,$userid); if ($status) { // Put these recipients into our sentto array to avoid sending duplicates $sentto = array_merge($sentto, $recipients); } else { $error = $sendmessage->getError(); } } } else { $error = 'There are no subscribers in the chosen folder(s).'; } } else { $error = $folder->getError(); } } else { $error = 'Invalid folder selected [' . $folder . '].'; } } // end of foreach 0001 // If the sentto list never got any recipients, there was no one in the selected folders /* if (empty($sentto)) { //echo 2222; $error = 'There are no subscribers in the chosen folder(s).'; } */ if ($status == 1) { $insert = $scheduled ? 'scheduled to send' : 'sent'; $message = 'Message successfully ' . $insert . ' to ' . count($sentto) . ' subscribers!'; $success = true; // now set the message fields back to default $this->defaultValues(); } else { $error = $sendmessage->getError(); } } else { $error = 'You must select at least one folder to send the message to.'; } } else { $error = 'Message content is required'; } } else { $error = 'Message description is required'; } } $userusage = $rpt->dashboard_totalMessagesSentOut($userid, $yearmonth); // echo 'USAGE: '.$yearmonth; // Send the message values back to the view $this->view->description = $description; $this->view->sendtime = $sendtime; $this->view->timezone = $timezone; $this->view->msg_head = $this->msg_head; $this->view->msg_body = $this->msg_body; $this->view->msg_foot = $this->msg_foot; // Status back to the view $this->view->error = $error; $this->view->success = $success; $this->view->message = $message; $this->view->formobject = $formObj; $this->view->formobjects = $formObj->webformList($userid); $this->view->userid = $userid; $this->view->userObj = $user; $this->view->msglimit = $user->messagelimit; $this->view->userusage = $userusage; }