function saveTabMailAction() { @($team_id = DevblocksPlatform::importGPC($_REQUEST['team_id'], 'integer')); @($active_worker = CerberusApplication::getActiveWorker()); if (!$active_worker->isTeamManager($team_id) && !$active_worker->is_superuser) { return; } // Validators // [TODO] This could move into a Devblocks validation class later. $validator_email = new Zend_Validate_EmailAddress(Zend_Validate_Hostname::ALLOW_DNS | Zend_Validate_Hostname::ALLOW_LOCAL); //========== GENERAL @($signature = DevblocksPlatform::importGPC($_REQUEST['signature'], 'string', '')); @($auto_reply_enabled = DevblocksPlatform::importGPC($_REQUEST['auto_reply_enabled'], 'integer', 0)); @($auto_reply = DevblocksPlatform::importGPC($_REQUEST['auto_reply'], 'string', '')); @($close_reply_enabled = DevblocksPlatform::importGPC($_REQUEST['close_reply_enabled'], 'integer', 0)); @($close_reply = DevblocksPlatform::importGPC($_REQUEST['close_reply'], 'string', '')); @($sender_address = DevblocksPlatform::importGPC($_REQUEST['sender_address'], 'string', '')); @($sender_personal = DevblocksPlatform::importGPC($_REQUEST['sender_personal'], 'string', '')); @($sender_personal_with_worker = DevblocksPlatform::importGPC($_REQUEST['sender_personal_with_worker'], 'integer', 0)); @($subject_has_mask = DevblocksPlatform::importGPC($_REQUEST['subject_has_mask'], 'integer', 0)); @($subject_prefix = DevblocksPlatform::importGPC($_REQUEST['subject_prefix'], 'string', '')); @($spam_threshold = DevblocksPlatform::importGPC($_REQUEST['spam_threshold'], 'integer', 80)); @($spam_action = DevblocksPlatform::importGPC($_REQUEST['spam_action'], 'integer', 0)); @($spam_moveto = DevblocksPlatform::importGPC($_REQUEST['spam_action_moveto'], 'integer', 0)); // Validate sender address if (!$validator_email->isValid($sender_address)) { $sender_address = ''; } // [TODO] Move this into DAO_GroupSettings DAO_Group::updateTeam($team_id, array(DAO_Group::TEAM_SIGNATURE => $signature)); // [TODO] Verify the sender address has been used in a 'To' header in the past // select count(header_value) from message_header where header_name = 'to' AND (header_value = '*****@*****.**' OR header_value = '<*****@*****.**>'); // DAO_MessageHeader:: DAO_GroupSettings::set($team_id, DAO_GroupSettings::SETTING_REPLY_FROM, $sender_address); DAO_GroupSettings::set($team_id, DAO_GroupSettings::SETTING_REPLY_PERSONAL, $sender_personal); DAO_GroupSettings::set($team_id, DAO_GroupSettings::SETTING_REPLY_PERSONAL_WITH_WORKER, $sender_personal_with_worker); DAO_GroupSettings::set($team_id, DAO_GroupSettings::SETTING_SUBJECT_HAS_MASK, $subject_has_mask); DAO_GroupSettings::set($team_id, DAO_GroupSettings::SETTING_SUBJECT_PREFIX, $subject_prefix); DAO_GroupSettings::set($team_id, DAO_GroupSettings::SETTING_SPAM_THRESHOLD, $spam_threshold); DAO_GroupSettings::set($team_id, DAO_GroupSettings::SETTING_SPAM_ACTION, $spam_action); DAO_GroupSettings::set($team_id, DAO_GroupSettings::SETTING_SPAM_ACTION_PARAM, $spam_moveto); DAO_GroupSettings::set($team_id, DAO_GroupSettings::SETTING_AUTO_REPLY_ENABLED, $auto_reply_enabled); DAO_GroupSettings::set($team_id, DAO_GroupSettings::SETTING_AUTO_REPLY, $auto_reply); DAO_GroupSettings::set($team_id, DAO_GroupSettings::SETTING_CLOSE_REPLY_ENABLED, $close_reply_enabled); DAO_GroupSettings::set($team_id, DAO_GroupSettings::SETTING_CLOSE_REPLY, $close_reply); DevblocksPlatform::redirect(new DevblocksHttpResponse(array('groups', $team_id))); }
function saveTeamAction() { $translate = DevblocksPlatform::getTranslationService(); $worker = CerberusApplication::getActiveWorker(); if (!$worker || !$worker->is_superuser) { echo $translate->_('common.access_denied'); return; } if (DEMO_MODE) { DevblocksPlatform::setHttpResponse(new DevblocksHttpResponse(array('config', 'workflow'))); return; } @($id = DevblocksPlatform::importGPC($_POST['id'])); @($name = DevblocksPlatform::importGPC($_POST['name'])); @($delete = DevblocksPlatform::importGPC($_POST['delete_box'])); @($delete_move_id = DevblocksPlatform::importGPC($_POST['delete_move_id'], 'integer', 0)); if (empty($name)) { $name = "No Name"; } if (!empty($id) && !empty($delete)) { if (!empty($delete_move_id)) { $fields = array(DAO_Ticket::TEAM_ID => $delete_move_id); $where = sprintf("%s=%d", DAO_Ticket::TEAM_ID, $id); DAO_Ticket::updateWhere($fields, $where); DAO_Group::deleteTeam($id); } } elseif (!empty($id)) { $fields = array(DAO_Group::TEAM_NAME => $name); DAO_Group::updateTeam($id, $fields); } else { $fields = array(DAO_Group::TEAM_NAME => $name); $id = DAO_Group::createTeam($fields); } @($worker_ids = DevblocksPlatform::importGPC($_POST['worker_ids'], 'array', array())); @($worker_levels = DevblocksPlatform::importGPC($_POST['worker_levels'], 'array', array())); @($members = DAO_Group::getTeamMembers($id)); if (is_array($worker_ids) && !empty($worker_ids)) { foreach ($worker_ids as $idx => $worker_id) { @($level = $worker_levels[$idx]); if (isset($members[$worker_id]) && empty($level)) { DAO_Group::unsetTeamMember($id, $worker_id); } elseif (!empty($level)) { // member|manager DAO_Group::setTeamMember($id, $worker_id, 1 == $level ? false : true); } } } DevblocksPlatform::setHttpResponse(new DevblocksHttpResponse(array('config', 'groups'))); }
// Support Group $support_gid = DAO_Group::createTeam(array(DAO_Group::TEAM_NAME => 'Support')); // Support Spam Bucket $support_spam_bid = DAO_Bucket::create('Spam', $support_gid); DAO_GroupSettings::set($support_gid, DAO_GroupSettings::SETTING_SPAM_ACTION, '2'); DAO_GroupSettings::set($support_gid, DAO_GroupSettings::SETTING_SPAM_ACTION_PARAM, $support_spam_bid); DAO_GroupSettings::set($support_gid, DAO_GroupSettings::SETTING_SPAM_THRESHOLD, '85'); // Sales Group $sales_gid = DAO_Group::createTeam(array(DAO_Group::TEAM_NAME => 'Sales')); // Sales Spam Bucket $sales_spam_bid = DAO_Bucket::create('Spam', $sales_gid); DAO_GroupSettings::set($sales_gid, DAO_GroupSettings::SETTING_SPAM_ACTION, '2'); DAO_GroupSettings::set($sales_gid, DAO_GroupSettings::SETTING_SPAM_ACTION_PARAM, $sales_spam_bid); DAO_GroupSettings::set($sales_gid, DAO_GroupSettings::SETTING_SPAM_THRESHOLD, '85'); // Default catchall DAO_Group::updateTeam($dispatch_gid, array(DAO_Group::IS_DEFAULT => 1)); } // If this worker doesn't exist, create them if (null === ($lookup = DAO_Worker::lookupAgentEmail($worker_email))) { $worker_id = DAO_Worker::create($worker_email, $worker_pass, 'Super', 'User', 'Administrator'); // Superuser bit $fields = array(DAO_Worker::IS_SUPERUSER => 1); DAO_Worker::updateAgent($worker_id, $fields); // Add the worker e-mail to the addresses table if (!empty($worker_email)) { DAO_Address::lookupAddress($worker_email, true); } // Authorize this e-mail address (watchers, etc.) DAO_AddressToWorker::assign($worker_email, $worker_id); DAO_AddressToWorker::update($worker_email, array(DAO_AddressToWorker::IS_CONFIRMED => 1)); // Default group memberships