public function setup() { global $current_user; $current_user = SugarTestUserUtilities::createAnonymousUser(); //for the purpose of this test, we need to create a campaign and relate it to a campaign tracker object //create campaign $c = new Campaign(); $c->name = 'CT test ' . time(); $c->campaign_type = 'Email'; $c->status = 'Active'; $timeDate = new TimeDate(); $c->end_date = $timeDate->to_display_date(date('Y') + 1 . '-01-01'); $c->assigned_id = $current_user->id; $c->team_id = '1'; $c->team_set_id = '1'; $c->save(); $this->campaign = $c; //create campaign tracker $ct = new CampaignTracker(); $ct->tracker_name = 'CampaignTrackerTest' . time(); $ct->tracker_url = 'sugarcrm.com'; $ct->campaign_id = $this->campaign->id; $ct->save(); $this->campaign_tracker = $ct; }
/** * This function retrieves a record of the appropriate type from the DB. * It fills in all of the fields from the DB into the object it was called on. * * @param $id - If ID is specified, it overrides the current value of $this->id. If not specified the current value of $this->id will be used. * @return this - The object that it was called apon or null if exactly 1 record was not found. * */ function check_date_relationships_load() { global $disable_date_format; if (!empty($disable_date_format)) { return; } global $timedate; if (empty($timedate)) { $timedate = new TimeDate(); } if (empty($this->field_defs)) { return; } foreach ($this->field_defs as $fieldDef) { $field = $fieldDef['name']; if (!isset($this->processed_dates_times[$field])) { $this->processed_dates_times[$field] = '1'; if ($field == 'date_modified' || $field == 'date_entered') { if (!empty($this->{$field})) { $this->{$field} = $timedate->to_display_date_time($this->{$field}); } } elseif (!empty($this->{$field}) && isset($this->field_name_map[$field]['type'])) { $type = $this->field_name_map[$field]['type']; if ($type == 'relate' && isset($this->field_name_map[$field]['custom_module'])) { $type = $this->field_name_map[$field]['type']; } if ($type == 'date') { $this->{$field} = from_db_convert($this->{$field}, 'date'); if ($this->{$field} == '0000-00-00') { $this->{$field} = ''; } elseif (!empty($this->field_name_map[$field]['rel_field'])) { $rel_field = $this->field_name_map[$field]['rel_field']; if (!empty($this->{$rel_field})) { $this->{$rel_field} = from_db_convert($this->{$rel_field}, 'time'); $mergetime = $timedate->merge_date_time($this->{$field}, $this->{$rel_field}); $this->{$field} = $timedate->to_display_date($mergetime); $this->{$rel_field} = $timedate->to_display_time($mergetime); } } else { $this->{$field} = $timedate->to_display_date($this->{$field}, false); } } elseif ($type == 'datetime') { if ($this->{$field} == '0000-00-00 00:00:00') { $this->{$field} = ''; } else { $this->{$field} = $timedate->to_display_date_time($this->{$field}); } } elseif ($type == 'time') { if ($this->{$field} == '00:00:00') { $this->{$field} = ''; } else { //$this->$field = from_db_convert($this->$field, 'time'); if (empty($this->field_name_map[$field]['rel_field'])) { $this->{$field} = $timedate->to_display_time($this->{$field}, true, false); } } } elseif ($type == 'encrypt') { $this->{$field} = $this->decrypt_after_retrieve($this->{$field}); } } } } }
public function setUp() { $this->markTestIncomplete('Marking this skipped until we figure out why it is causing the SQL server connection to go away.'); $this->clear_database = true; $this->remove_beans = true; $this->saved_current_user = $GLOBALS['current_user']; $user = new User(); $user->retrieve('1'); $GLOBALS['current_user'] = $user; $this->campaign = new Campaign(); $this->campaign->name = 'Bug39665Test ' . time(); $this->campaign->campaign_type = 'Email'; $this->campaign->status = 'Active'; $timeDate = new TimeDate(); $this->campaign->end_date = $timeDate->to_display_date(date('Y') + 1 . '-01-01'); $this->campaign->assigned_id = $user->id; $this->campaign->team_id = '1'; $this->campaign->team_set_id = '1'; $this->campaign->save(); $this->emailmarketing = new EmailMarketing(); $this->emailmarketing->name = $this->campaign->name . ' Email1'; $this->emailmarketing->campaign_id = $this->campaign->id; $this->emailmarketing->from_name = 'SugarCRM'; $this->emailmarketing->from_addr = '*****@*****.**'; $this->emailmarketing->reply_to_name = 'SugarCRM'; $this->emailmarketing->reply_to_addr = '*****@*****.**'; $this->emailmarketing->status = 'active'; $this->emailmarketing->all_prospect_lists = 1; $this->emailmarketing->date_start = $timeDate->to_display_date(date('Y') + 1 . '-01-01') . ' 00:00:00'; $this->emailmarketing2 = new EmailMarketing(); $this->emailmarketing2->name = $this->campaign->name . ' Email2'; $this->emailmarketing2->campaign_id = $this->campaign->id; $this->emailmarketing2->from_name = 'SugarCRM'; $this->emailmarketing2->from_addr = '*****@*****.**'; $this->emailmarketing2->reply_to_name = 'SugarCRM'; $this->emailmarketing2->reply_to_addr = '*****@*****.**'; $this->emailmarketing2->status = 'active'; $this->emailmarketing2->all_prospect_lists = 1; $this->emailmarketing2->date_start = $timeDate->to_display_date(date('Y') + 1 . '-01-01') . ' 00:00:00'; $query = 'SELECT id FROM inbound_email WHERE deleted=0'; $result = $GLOBALS['db']->query($query); while ($row = $GLOBALS['db']->fetchByAssoc($result)) { $this->emailmarketing->inbound_email_id = $row['id']; $this->emailmarketing2->inbound_email_id = $row['id']; break; } $query = 'SELECT id FROM email_templates WHERE deleted=0'; while ($row = $GLOBALS['db']->fetchByAssoc($result)) { $this->emailmarketing->template_id = $row['id']; $this->emailmarketing2->template_id = $row['id']; break; } $this->emailmarketing->save(); $this->emailmarketing2->save(); $this->campaign->load_relationship('prospectlists'); $this->prospectlist = new ProspectList(); $this->prospectlist->name = $this->campaign->name . ' Prospect List1'; $this->prospectlist->assigned_user_id = $GLOBALS['current_user']->id; $this->prospectlist->list_type = "default"; $this->prospectlist->save(); $this->campaign->prospectlists->add($this->prospectlist->id); $this->campaign->load_relationship('prospectlists'); $this->prospectlist2 = new ProspectList(); $this->prospectlist2->name = $this->campaign->name . ' Prospect List2'; $this->prospectlist2->assigned_user_id = $GLOBALS['current_user']->id; $this->prospectlist2->list_type = "default"; $this->prospectlist2->save(); $this->campaign->prospectlists->add($this->prospectlist2->id); $campaign_log_states = array(0 => 'viewed', 1 => 'link', 2 => 'invalid email', 3 => 'send error', 4 => 'removed', 5 => 'blocked', 6 => 'lead', 7 => 'contact'); for ($i = 0; $i < 10; $i++) { $contact = SugarTestContactUtilities::createContact(); $contact->campaign_id = $this->campaign->id; $contact->email2 = 'contact' . mt_rand() . '@sugar.com'; //Simulate a secondary email $contact->save(); $contact->load_relationship('prospect_lists'); $contact->prospect_lists->add($this->prospectlist->id); $contact->prospect_lists->add($this->prospectlist2->id); $this->create_campaign_log($this->campaign, $contact, $this->emailmarketing, $this->prospectlist, 'targeted'); $this->create_campaign_log($this->campaign, $contact, $this->emailmarketing, $this->prospectlist, $campaign_log_states[mt_rand(0, 7)]); $this->create_campaign_log($this->campaign, $contact, $this->emailmarketing2, $this->prospectlist, 'targeted'); $this->create_campaign_log($this->campaign, $contact, $this->emailmarketing2, $this->prospectlist, $campaign_log_states[mt_rand(0, 7)]); } for ($i = 0; $i < 10; $i++) { $lead = SugarTestLeadUtilities::createLead(); $lead->campaign_id = $this->campaign->id; $lead->email2 = 'lead2' . mt_rand() . '@sugar.com'; //Simulate a secondary email $lead->save(); $lead->load_relationship('prospect_lists'); $lead->prospect_lists->add($this->prospectlist->id); $lead->prospect_lists->add($this->prospectlist2->id); $this->create_campaign_log($this->campaign, $lead, $this->emailmarketing, $this->prospectlist, 'targeted'); $this->create_campaign_log($this->campaign, $lead, $this->emailmarketing, $this->prospectlist, $campaign_log_states[mt_rand(0, 7)]); $this->create_campaign_log($this->campaign, $lead, $this->emailmarketing2, $this->prospectlist, 'targeted'); $this->create_campaign_log($this->campaign, $lead, $this->emailmarketing2, $this->prospectlist, $campaign_log_states[mt_rand(0, 7)]); } //But wait, there's more... now we email the friggin thing to place it in the queue if ($this->campaign->db->dbType == 'oci8') { } else { $current_date = "'" . gmdate($GLOBALS['timedate']->get_db_date_time_format()) . "'"; } //start scheduling now..... $emailmarketing_beans = array($this->emailmarketing, $this->emailmarketing2); foreach ($emailmarketing_beans as $marketing) { $mergedvalue = $GLOBALS['timedate']->merge_date_time($marketing->date_start, $marketing->time_start); if ($this->campaign->db->dbType == 'oci8') { } else { $send_date_time = "'" . $GLOBALS['timedate']->to_db_date($mergedvalue) . ' ' . $GLOBALS['timedate']->to_db_time($mergedvalue) . "'"; } //find all prospect lists associated with this email marketing message. if ($marketing->all_prospect_lists == 1) { $query = "SELECT prospect_lists.id prospect_list_id from prospect_lists "; $query .= " INNER JOIN prospect_list_campaigns plc ON plc.prospect_list_id = prospect_lists.id"; $query .= " WHERE plc.campaign_id='{$this->campaign->id}'"; $query .= " AND prospect_lists.deleted=0"; $query .= " AND plc.deleted=0"; $query .= " AND prospect_lists.list_type!='test' AND prospect_lists.list_type not like 'exempt%'"; } else { $query = "select email_marketing_prospect_lists.* FROM email_marketing_prospect_lists "; $query .= " inner join prospect_lists on prospect_lists.id = email_marketing_prospect_lists.prospect_list_id"; $query .= " WHERE prospect_lists.deleted=0 and email_marketing_id = '{$marketing->id}' and email_marketing_prospect_lists.deleted=0"; $query .= " AND prospect_lists.list_type!='test' AND prospect_lists.list_type not like 'exempt%'"; } $result = $this->campaign->db->query($query); while (($row = $this->campaign->db->fetchByAssoc($result)) != null) { $prospect_list_id = $row['prospect_list_id']; //delete all messages for the current campaign and current email marketing message. $delete_emailman_query = "delete from emailman where campaign_id='{$this->campaign->id}' and marketing_id='{$marketing->id}' and list_id='{$prospect_list_id}'"; $this->campaign->db->query($delete_emailman_query); $insert_query = "INSERT INTO emailman (date_entered, user_id, campaign_id, marketing_id,list_id, related_id, related_type, send_date_time"; if ($this->campaign->db->dbType == 'oci8') { } $insert_query .= ')'; $insert_query .= " SELECT {$current_date},'{$GLOBALS['current_user']->id}',plc.campaign_id,'{$marketing->id}',plp.prospect_list_id, plp.related_id, plp.related_type,{$send_date_time} "; if ($this->campaign->db->dbType == 'oci8') { } $insert_query .= "FROM prospect_lists_prospects plp "; $insert_query .= "INNER JOIN prospect_list_campaigns plc ON plc.prospect_list_id = plp.prospect_list_id "; $insert_query .= "WHERE plp.prospect_list_id = '{$prospect_list_id}' "; $insert_query .= "AND plp.deleted=0 "; $insert_query .= "AND plc.deleted=0 "; $insert_query .= "AND plc.campaign_id='{$this->campaign->id}'"; if ($this->campaign->db->dbType == 'oci8') { } $this->campaign->db->query($insert_query); } } }
function action_get_end_date() { global $db, $timeDate; $timeDate = new TimeDate(); $id = $_POST['task_id']; $lag = $_POST['lag']; //Get the end date of the projectTask in raw database format $query = "SELECT date_finish FROM project_task WHERE id = '{$id}'"; $end_date = $db->getOne($query); //Add 1 day onto end date for first day of new task $start_date = date('Y-m-d', strtotime($end_date . ' + 1 days')); //Add lag onto start date $start_date = date('Y-m-d', strtotime($start_date . ' + ' . $lag . ' days')); echo $timeDate->to_display_date($start_date, true); die; }
public function draw($tasks) { global $mod_strings, $app_list_strings; // Instantiate the TimeDate Class $timeDate = new TimeDate(); echo '<table id="Task_table" class="project_table_header"> <tr class="disable_sort"> <td style="min-width:32px;" class="project_table_headings">' . $mod_strings['LBL_TASK_ID'] . '</td> <td style="min-width:85px;" class="project_table_headings">' . $mod_strings['LBL_TASK_NAME'] . '</td> <td style="min-width:100px;" class="project_table_headings">' . $mod_strings['LBL_PREDECESSORS'] . '</td> <td style="min-width:100px;" class="project_table_headings">' . $mod_strings['LBL_START'] . '</td> <td style="min-width:100px;" class="project_table_headings">' . $mod_strings['LBL_FINISH'] . '</td> <td style="min-width:100px;" class="project_table_headings">' . $mod_strings['LBL_DURATION'] . '</td> <td style="min-width:120px;" class="project_table_headings">' . $mod_strings['LBL_ASSIGNED_USER_ID'] . '</td> <td style="min-width:48px;" class="project_table_headings">' . $mod_strings['LBL_PERCENT_COMPLETE'] . '</td> <td style="min-width:80px;" class="project_table_headings">' . $mod_strings['LBL_MILESTONE_FLAG'] . '</td> <td style="min-width:80px;" class="project_table_headings">' . $mod_strings['LBL_ACTUAL_DURATION'] . '</td> <td style="min-width:30px;" class="project_table_headings"></td> </tr> '; $task_count = 0; if (!is_null($tasks)) { foreach ($tasks as $task) { //Get resources $project = new Project(); $project->retrieve($task->project_id); //Get project resources (users & contacts) $resources1 = $project->get_linked_beans('project_users_1', 'User'); $resources2 = $project->get_linked_beans('project_contacts_1', 'Contact'); //Combine resources into array of objects $resource_array = array(); foreach ($resources1 as $user) { $resource = new stdClass(); $resource->id = $user->id; $resource->name = $user->name; $resource->type = 'user'; $resource_array[] = $resource; } foreach ($resources2 as $contact) { $resource = new stdClass(); $resource->id = $contact->id; $resource->name = $contact->name; $resource->type = 'contact'; $resource_array[] = $resource; } echo '<tr class="row_sortable"> <td class="project_table_cells"><input class="order_number" name="order_number[]" rel="' . $task->id . '" type="hidden" value="' . $task->order_number . '" />' . $task->project_task_id . '</td>'; if (ACLController::checkAccess('Project', 'edit', true)) { echo '<td class="project_table_cells" ><span class="Task_name" ><a data = "' . $task->id . ',' . $task->predecessors . ',' . $task->relationship_type . ',' . $timeDate->to_display_date($task->date_start, true) . ',' . $task->duration . ',' . $task->duration_unit . ',' . $task->assigned_user_id . ',' . $task->milestone_flag . ',' . $task->percent_complete . ',' . $task->description . ',' . $task->actual_duration . '" onclick = "edit_task($(this));"title = "' . $mod_strings['LBL_TASK_TITLE'] . '" href = "#" > ' . $task->name . '</a ></span ></td>'; } else { echo '<td class="project_table_cells" ><span class="Task_name" >' . $task->name . '</span ></td>'; } echo '<td class="project_table_cells">'; foreach ($tasks as $predecessor) { if ($predecessor->project_task_id == $task->predecessors) { echo $predecessor->name; } } echo ' </td> <td class="project_table_cells">' . $timeDate->to_display_date($task->date_start, true) . '</td> <td class="project_table_cells">' . $timeDate->to_display_date($task->date_finish, true) . '</td> <td class="project_table_cells">' . $task->duration . ' ' . $app_list_strings['duration_unit_dom'][$task->duration_unit] . '</td> <td style="min-width:105px;" class="project_table_cells" >'; $rflag = '0'; foreach ($resource_array as $resource) { if ($resource->id == $task->assigned_user_id) { if ($resource->type == 'user') { echo '<a target="blank" href="index.php?module=Users&action=DetailView&record=' . $resource->id . '">' . $resource->name . '</a>'; $rflag = '1'; } elseif ($resource->type == 'contact') { echo '<a target="blank" href="index.php?module=Contacts&action=DetailView&record=' . $resource->id . '">' . $resource->name . '</a>'; $rflag = '1'; } } } if ($rflag == '0') { echo $mod_strings['LBL_UNASSIGNED']; } if ($task->milestone_flag == '1') { $checked = $app_list_strings['checkbox_dom']['1']; } else { $checked = $app_list_strings['checkbox_dom']['2']; } echo '</td> <td class="project_table_cells">' . $task->percent_complete . '</td> <td class="project_table_cells">' . $checked . '</td> <td class="project_table_cells">' . $task->actual_duration . '</td> <td class="project_table_cells"> <span id="exportToPDFSpan">'; if (ACLController::checkAccess('Project', 'delete', true)) { echo '<button style = "height:20px;width:20px;" class="remove_button" value = "' . $task->id . '" class="gantt_button" > Delete Task </button >'; } else { echo '<button disabled="disabled" style = "height:20px;width:20px;" class="remove_button" value = "' . $task->id . '" class="gantt_button" > Delete Task </button >'; } echo '</span> </td> </tr>'; $task_count++; } } echo '</table>'; }
/** * test conversion from DB date to local date with TZ handling * @dataProvider dateTestSet */ public function testToDisplayDateFormatsWithTz($db, $df, $tf, $tz, $display, $dbdate) { $this->_setPrefs($df, $tf, $tz); $result = $this->time_date->to_display_date($db, true); $this->assertEquals($this->_dateOnly($display), $this->_dateOnly($result), "Broken conversion for '{$df}' with date '{$dbdate}' and TZ {$tz}"); }