public static function CreateContentBlock(&$content_obj, $params)
 {
     $params['smarty'] = isset($params['smarty']) && (ac_utils::IsTrue($params['smarty']) || $params['smarty'] == 'both' || $params['smarty'] == ac_utils::cms_access());
     # block active ?
     $params['active'] = isset($params['active']) ? $params['active'] : true;
     if ($params['smarty']) {
         $params['active'] = ac_utils::DoSmarty($content_obj, $params['active']);
     }
     if (ac_utils::IsFalse($params['active'])) {
         return false;
     }
     # do not process inactive blocks
     #---
     # additional editors
     $params['editor_groups'] = isset($params['editor_groups']) ? $params['editor_groups'] : NULL;
     $params['editor_users'] = isset($params['editor_users']) ? $params['editor_users'] : NULL;
     if (!ac_utils::is_frontend_request() && ($params['editor_groups'] || $params['editor_users']) && !ac_admin_ops::CheckBlockPermission($params['editor_users'], $params['editor_groups'])) {
         return false;
         # do not process blocks without permission to edit
     }
     #---
     # valid block type?
     $params['block_type'] = isset($params['block_type']) ? strtolower($params['block_type']) : 'text';
     $classname = 'acBlockType_' . $params['block_type'];
     if (!class_exists($classname)) {
         if (!ac_utils::is_frontend_request()) {
             $classname = 'acBlockTypePlaceholder';
         } else {
             return false;
         }
     }
     #---
     # valid block id?
     $params['block_id'] = isset($params['block']) ? preg_replace('/-+/', '_', munge_string_to_url($params['block'])) : 'content_en';
     if (!$params['block_id'] || $content_obj->IsKnownProperty($params['block_id'])) {
         if (!ac_utils::is_frontend_request()) {
             $params['block_id'] = md5($params['block_id'] . '_' . @count(self::$_content_blocks[$content_obj->Id()]));
             # count shouldn't be needed since CMSms 1.11 (multiple blocks with same id are just not possible anymore)
             $classname = 'acBlockTypePlaceholder';
         } else {
             return false;
         }
     }
     #---
     return new $classname($content_obj, $params);
 }