示例#1
0
 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();
 }
示例#2
0
文件: UmScApp.php 项目: joegeck/cerb4
 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;
 }
示例#3
0
文件: DAO.php 项目: jsjohnst/cerb4
 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 */
     }
 }
示例#4
0
 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
 }
示例#5
0
文件: Model.php 项目: Hildy/cerb5
 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);
 }
示例#6
0
文件: classes.php 项目: Hildy/cerb5
 /**
  * @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.");
     }
 }