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); }