function saveCommunityToolAction() { @($code = DevblocksPlatform::importGPC($_POST['portal'], 'string')); @($name = DevblocksPlatform::importGPC($_POST['portal_name'], 'string', '')); @($iDelete = DevblocksPlatform::importGPC($_POST['do_delete'], 'integer', 0)); UmPortalHelper::setCode($code); if (DEMO_MODE) { if ($iDelete) { DevblocksPlatform::redirect(new DevblocksHttpResponse(array('config', 'communities'))); } else { self::getCommunityToolAction(); } return; } if (null != ($instance = DAO_CommunityTool::getByCode($code))) { // Deleting? if (!empty($iDelete)) { $tool = DAO_CommunityTool::getByCode($code); /* @var $tool Model_CommunityTool */ DAO_CommunityTool::delete($tool->id); DevblocksPlatform::redirect(new DevblocksHttpResponse(array('config', 'communities'))); return; } else { $manifest = DevblocksPlatform::getExtension($instance->extension_id, false, true); $tool = $manifest->createInstance(); /* @var $tool Extension_UsermeetTool */ // Update the tool name if it has changed if (0 != strcmp($instance->name, $name)) { DAO_CommunityTool::update($instance->id, array(DAO_CommunityTool::NAME => $name)); } // Defer the rest to tool instances and extensions $tool->saveConfiguration(); } } self::getCommunityToolAction(); }
public function getSituation() { @($sCode = DevblocksPlatform::importGPC($_REQUEST['portal'], 'string', '')); @($sReason = DevblocksPlatform::importGPC($_REQUEST['reason'], 'string', '')); $tool = DAO_CommunityTool::getByCode($sCode); $tpl = DevblocksPlatform::getTemplateService(); $tpl_path = dirname(dirname(__FILE__)) . '/templates/'; $settings = CerberusSettings::getInstance(); $default_from = $settings->get(CerberusSettings::DEFAULT_REPLY_FROM); $tpl->assign('default_from', $default_from); $sDispatch = DAO_CommunityToolProperty::get($this->getPortal(), self::PARAM_DISPATCH, ''); $dispatch = !empty($sDispatch) ? unserialize($sDispatch) : array(); if (is_array($dispatch)) { foreach ($dispatch as $reason => $params) { if (md5($reason) == $sReason) { $tpl->assign('situation_reason', $reason); $tpl->assign('situation_params', $params); break; } } } $groups = DAO_Group::getAll(); $tpl->assign('groups', $groups); // Contact: Fields $ticket_fields = DAO_CustomField::getBySource('cerberusweb.fields.source.ticket'); $tpl->assign('ticket_fields', $ticket_fields); $tpl->display("file:{$tpl_path}portal/sc/config/add_situation.tpl"); exit; }
public static function delete($ids) { if (!is_array($ids)) { $ids = array($ids); } $db = DevblocksPlatform::getDatabaseService(); foreach ($ids as $id) { @($tool = DAO_CommunityTool::get($id)); if (empty($tool)) { continue; } /** * [TODO] [JAS] Deleting a community tool needs to run a hook first so the * tool has a chance to clean up its own DB tables abstractly. * * e.g. Knowledgebase instances which store data outside the tool property table * * After this is done, a future DB patch for those plugins should clean up any * orphaned data. */ $sql = sprintf("DELETE QUICK FROM community_tool WHERE id = %d", $id); $db->Execute($sql) or die(__CLASS__ . '(' . __LINE__ . ')' . ':' . $db->ErrorMsg()); /* @var $rs ADORecordSet */ $sql = sprintf("DELETE QUICK FROM community_tool_property WHERE tool_code = '%s'", $tool->code); $db->Execute($sql) or die(__CLASS__ . '(' . __LINE__ . ')' . ':' . $db->ErrorMsg()); /* @var $rs ADORecordSet */ } }
public static function delete($ids) { if (!is_array($ids)) { $ids = array($ids); } $db = DevblocksPlatform::getDatabaseService(); $id_list = implode(',', $ids); $sql = sprintf("DELETE QUICK FROM community WHERE id IN (%s)", $id_list); $db->Execute($sql) or die(__CLASS__ . '(' . __LINE__ . ')' . ':' . $db->ErrorMsg()); /* @var $rs ADORecordSet */ // Community Tools $tools = DAO_CommunityTool::getWhere(sprintf("%s IN (%s)", DAO_CommunityTool::COMMUNITY_ID, $id_list)); DAO_CommunityTool::delete(array_keys($tools)); // [TODO] cascade foreign key constraints }
function doBulkUpdate($filter, $do, $ids = array()) { @set_time_limit(600); // [TODO] Temp! $change_fields = array(); $custom_fields = array(); // Make sure we have actions if (empty($do)) { return; } // Make sure we have checked items if we want a checked list if (0 == strcasecmp($filter, "checks") && empty($ids)) { return; } if (is_array($do)) { foreach ($do as $k => $v) { switch ($k) { // case 'status': // if(1==intval($v)) { // completed // $change_fields[DAO_Task::IS_COMPLETED] = 1; // $change_fields[DAO_Task::COMPLETED_DATE] = time(); // } else { // active // $change_fields[DAO_Task::IS_COMPLETED] = 0; // $change_fields[DAO_Task::COMPLETED_DATE] = 0; // } // break; default: // Custom fields if (substr($k, 0, 3) == "cf_") { $custom_fields[substr($k, 3)] = $v; } } } } $pg = 0; if (empty($ids)) { do { list($objects, $null) = DAO_CommunityTool::search(array(), $this->params, 100, $pg++, SearchFields_CommunityTool::ID, true, false); $ids = array_merge($ids, array_keys($objects)); } while (!empty($objects)); } $batch_total = count($ids); for ($x = 0; $x <= $batch_total; $x += 100) { $batch_ids = array_slice($ids, $x, 100); DAO_CommunityTool::update($batch_ids, $change_fields); // Custom Fields self::_doBulkSetCustomFields(CustomFieldSource_CommunityPortal::ID, $custom_fields, $batch_ids); unset($batch_ids); } unset($ids); }
/** * @param DevblocksHttpResponse $response */ function writeResponse(DevblocksHttpResponse $response) { $stack = $response->path; $tpl = DevblocksPlatform::getTemplateService(); // Globals for Community Tool template scope $translate = DevblocksPlatform::getTranslationService(); $tpl->assign('translate', $translate); array_shift($stack); // portal $code = array_shift($stack); // xxxxxxxx if (null != ($tool = DAO_CommunityTool::getByCode($code))) { // [TODO] Don't double instance any apps (add instance registry to ::getExtension?) $manifest = DevblocksPlatform::getExtension($tool->extension_id, false, true); if (null != ($tool = $manifest->createInstance())) { /* @var $app Extension_UsermeetTool */ $tool->writeResponse(new DevblocksHttpResponse($stack)); } } else { die("Tool not found."); } }