function doAddressBatchUpdateAction() { @($address_id_str = DevblocksPlatform::importGPC($_REQUEST['address_ids'], 'string')); @($filter = DevblocksPlatform::importGPC($_REQUEST['filter'], 'string', '')); @($view_id = DevblocksPlatform::importGPC($_REQUEST['view_id'], 'string')); $view = C4_AbstractViewLoader::getView($view_id); @($org_name = trim(DevblocksPlatform::importGPC($_POST['contact_org'], 'string', ''))); @($sla = DevblocksPlatform::importGPC($_POST['sla'], 'string', '')); @($is_banned = DevblocksPlatform::importGPC($_POST['is_banned'], 'integer', 0)); $address_ids = DevblocksPlatform::parseCsvString($address_id_str); $do = array(); // Do: Organization if (!empty($org_name)) { if (null != ($org_id = DAO_ContactOrg::lookup($org_name, true))) { $do['org_id'] = $org_id; } } // Do: SLA if ('' != $sla) { $do['sla'] = $sla; } // Do: Banned if (0 != strlen($is_banned)) { $do['banned'] = $is_banned; } // Do: Custom fields $do = DAO_CustomFieldValue::handleBulkPost($do); $view->doBulkUpdate($filter, $do, $address_ids); $view->render(); return; }
private function _handleImportContact($xml) { $settings = CerberusSettings::getInstance(); $logger = DevblocksPlatform::getConsoleLog(); $sFirstName = (string) $xml->first_name; $sLastName = (string) $xml->last_name; $sEmail = (string) $xml->email; $sPassword = (string) $xml->password; $sOrganization = (string) $xml->organization; // Dupe check org if (null != ($address = DAO_Address::lookupAddress($sEmail))) { $logger->info('[Importer] Avoiding creating duplicate contact #' . $address->id . ' (' . $sEmail . ')'); // [TODO] Still associate with org if local blank? // [TODO] Still associate password if local blank? return true; } $fields = array(DAO_Address::FIRST_NAME => $sFirstName, DAO_Address::LAST_NAME => $sLastName, DAO_Address::EMAIL => $sEmail); // Associate SC password if (!empty($sPassword) && $sPassword != md5('')) { $fields[DAO_Address::IS_REGISTERED] = 1; $fields[DAO_Address::PASS] = $sPassword; } $address_id = DAO_Address::create($fields); // Associate with organization if (!empty($sOrganization)) { if (null != ($org_id = DAO_ContactOrg::lookup($sOrganization, true))) { DAO_Address::update($address_id, array(DAO_Address::CONTACT_ORG_ID => $org_id)); } } $logger->info('[Importer] Imported contact #' . $address_id . ' (' . $sEmail . ')'); return true; }
function saveEntryAction() { $active_worker = CerberusApplication::getActiveWorker(); // Make sure we're an active worker if (empty($active_worker) || empty($active_worker->id)) { return; } @($id = DevblocksPlatform::importGPC($_REQUEST['id'], 'integer', 0)); @($do_delete = DevblocksPlatform::importGPC($_REQUEST['do_delete'], 'integer', 0)); @($activity_id = DevblocksPlatform::importGPC($_POST['activity_id'], 'integer', 0)); @($time_actual_mins = DevblocksPlatform::importGPC($_POST['time_actual_mins'], 'integer', 0)); @($notes = DevblocksPlatform::importGPC($_POST['notes'], 'string', '')); @($org_str = DevblocksPlatform::importGPC($_POST['org'], 'string', '')); @($source_extension_id = DevblocksPlatform::importGPC($_POST['source_extension_id'], 'string', '')); @($source_id = DevblocksPlatform::importGPC($_POST['source_id'], 'integer', 0)); // Translate org string into org id, if exists $org_id = 0; if (!empty($org_str)) { $org_id = DAO_ContactOrg::lookup($org_str, true); } // Delete entries if (!empty($id) && !empty($do_delete)) { if (null != ($entry = DAO_TimeTrackingEntry::get($id))) { // Check privs if ($active_worker->hasPriv('timetracking.actions.create') && $active_worker->id == $entry->worker_id || $active_worker->hasPriv('timetracking.actions.update_all')) { DAO_TimeTrackingEntry::delete($id); } } return; } // New or modify $fields = array(DAO_TimeTrackingEntry::ACTIVITY_ID => intval($activity_id), DAO_TimeTrackingEntry::TIME_ACTUAL_MINS => intval($time_actual_mins), DAO_TimeTrackingEntry::NOTES => $notes, DAO_TimeTrackingEntry::DEBIT_ORG_ID => intval($org_id)); // Only on new if (empty($id)) { $fields[DAO_TimeTrackingEntry::LOG_DATE] = time(); $fields[DAO_TimeTrackingEntry::SOURCE_EXTENSION_ID] = $source_extension_id; $fields[DAO_TimeTrackingEntry::SOURCE_ID] = intval($source_id); $fields[DAO_TimeTrackingEntry::WORKER_ID] = intval($active_worker->id); } if (empty($id)) { // create $id = DAO_TimeTrackingEntry::create($fields); // Procedurally create a comment $translate = DevblocksPlatform::getTranslationService(); switch ($source_extension_id) { // If ticket, add a comment about the timeslip to the ticket case 'timetracking.source.ticket': $ticket_id = intval($source_id); if (null != ($worker_address = DAO_Address::lookupAddress($active_worker->email, false))) { if (!empty($activity_id)) { $activity = DAO_TimeTrackingActivity::get($activity_id); } if (!empty($org_id)) { $org = DAO_ContactOrg::get($org_id); } $comment = sprintf("== %s ==\n" . "%s %s\n" . "%s %d\n" . "%s %s (%s)\n" . "%s %s\n" . "%s %s\n", $translate->_('timetracking.ui.timetracking'), $translate->_('timetracking.ui.worker'), $active_worker->getName(), $translate->_('timetracking.ui.comment.time_spent'), $time_actual_mins, $translate->_('timetracking.ui.comment.activity'), !empty($activity) ? $activity->name : '', !empty($activity) && $activity->rate > 0.0 ? $translate->_('timetracking.ui.billable') : $translate->_('timetracking.ui.non_billable'), $translate->_('timetracking.ui.comment.organization'), !empty($org) ? $org->name : $translate->_('timetracking.ui.comment.not_set'), $translate->_('timetracking.ui.comment.notes'), $notes); //timetracking.ui.billable timetracking.ui.non_billable $fields = array(DAO_TicketComment::ADDRESS_ID => intval($worker_address->id), DAO_TicketComment::COMMENT => $comment, DAO_TicketComment::CREATED => time(), DAO_TicketComment::TICKET_ID => intval($ticket_id)); DAO_TicketComment::create($fields); } break; } } else { // modify DAO_TimeTrackingEntry::update($id, $fields); } // Custom field saves @($field_ids = DevblocksPlatform::importGPC($_POST['field_ids'], 'array', array())); DAO_CustomFieldValue::handleFormPost(ChCustomFieldSource_TimeEntry::ID, $id, $field_ids); }