Top.Mail.Ru
  • CMS «GIRVAS»

    灵活且免费的内容管理系统,可创建任何方向的网站。

    与我们合作更简单!

  • 完全免费

    停止使用旧的和付费的管理系统!新时代的解决方案已经到来 - 选择«GIRVAS»!

  • 卡累利阿解决方案

    «GIRVAS»在卡累利阿共和国开发,并已列入俄罗斯联邦数字发展部的俄罗斯软件登记册(登记号№25012,日期2024年11月27日)。

0.2.0 沃伊茨

CMS「GIRVAS」版本 于 2025年7月8日 发布,开发阶段为「沃伊茨」。

最新变更

  • 将变量、方法和对象属性的命名规范调整为符合 PSR-1 规则;
  • 将代码调整为符合 PSR-12 规则;
  • 为 SQL 查询构建器的 ALTER TABLE 子句添加 IF EXISTS 条件;
  • 为 SQL 查询构建器的 SELECT 子句中的选定列添加大小写敏感性;
  • 添加检查,确认是否存在与正在编辑的用户组具有相同技术名称的用户组;
  • 添加数据库管理系统类型参数,用于初始化查询构建器;
  • 在系统核心类中实现方法,用于正确检查 HTTPS 连接,包括云环境和代理的检查;
  • 在系统核心类中实现方法,用于自动包含文件(此前未将包含操作提取为独立方法);
  • 为系统核心、模块和主题的本地化类实现通用接口;
  • 实现 MySQL 数据库管理系统支持
  • 在确定数据库表中的记录数量时,为聚合 SQL 函数 COUNT(*) 添加别名,以适应不同的数据库管理系统;
  • 为 URL 解析器类实现获取上一页 URL(Referrer)的方法;
  • 修复了由于内容描述中存在 HTML 实体而导致聚合器无法进行聚合的错误;
  • 将网站主主题中的系统徽标替换为新徽标;
  • 更新本地化:ru_RU、en_US;
  • 重构系统代码、网站主主题和管理面板;
  • 对网站主主题进行小幅样式修正;
  • 其他小修复;

上一版本: 0.1.36 Alpha

旧数据库适配

以下 SQL 查询将有助于正确适配在 0.2.0 沃伊茨 更新之前由 CMS「GIRVAS」生成的 PostgreSQL 数据库。

列重命名

ALTER TABLE configurations RENAME COLUMN created_unix_timestamp to "createdUnixTimestamp";
ALTER TABLE configurations RENAME COLUMN updated_unix_timestamp to "updatedUnixTimestamp";
ALTER TABLE entries RENAME COLUMN author_id to "authorID";
ALTER TABLE entries RENAME COLUMN category_id to "categoryID";
ALTER TABLE entries RENAME COLUMN created_unix_timestamp to "createdUnixTimestamp";
ALTER TABLE entries RENAME COLUMN updated_unix_timestamp to "updatedUnixTimestamp";
ALTER TABLE entries_categories RENAME COLUMN parent_id to "parentID";
ALTER TABLE entries_categories RENAME COLUMN created_unix_timestamp to "createdUnixTimestamp";
ALTER TABLE entries_categories RENAME COLUMN updated_unix_timestamp to "updatedUnixTimestamp";
ALTER TABLE entries_comments RENAME COLUMN author_id to "authorID";
ALTER TABLE entries_comments RENAME COLUMN entry_id to "entryID";
ALTER TABLE entries_comments RENAME COLUMN created_unix_timestamp to "createdUnixTimestamp";
ALTER TABLE entries_comments RENAME COLUMN updated_unix_timestamp to "updatedUnixTimestamp";
ALTER TABLE entries_samples RENAME COLUMN created_unix_timestamp to "createdUnixTimestamp";
ALTER TABLE entries_samples RENAME COLUMN updated_unix_timestamp to "updatedUnixTimestamp";
ALTER TABLE metrics RENAME COLUMN created_unix_timestamp to "createdUnixTimestamp";
ALTER TABLE metrics RENAME COLUMN updated_unix_timestamp to "updatedUnixTimestamp";
ALTER TABLE pages_static RENAME COLUMN author_id to "authorID";
ALTER TABLE pages_static RENAME COLUMN created_unix_timestamp to "createdUnixTimestamp";
ALTER TABLE pages_static RENAME COLUMN updated_unix_timestamp to "updatedUnixTimestamp";
ALTER TABLE reports RENAME COLUMN created_unix_timestamp to "createdUnixTimestamp";
ALTER TABLE users RENAME COLUMN password_hash to "passwordHash";
ALTER TABLE users RENAME COLUMN security_hash to "securityHash";
ALTER TABLE users RENAME COLUMN email_is_submitted to "emailIsSubmitted";
ALTER TABLE users RENAME COLUMN created_unix_timestamp to "createdUnixTimestamp";
ALTER TABLE users RENAME COLUMN updated_unix_timestamp to updatedUnixTimestamp;
ALTER TABLE users_groups RENAME COLUMN created_unix_timestamp to "createdUnixTimestamp";
ALTER TABLE users_groups RENAME COLUMN updated_unix_timestamp to "updatedUnixTimestamp";
ALTER TABLE users_registration_submits RENAME COLUMN user_id to "userID";
ALTER TABLE users_registration_submits RENAME COLUMN submit_token to "submitToken";
ALTER TABLE users_registration_submits RENAME COLUMN refusal_token to "refusalToken";
ALTER TABLE users_registration_submits RENAME COLUMN created_unix_timestamp to "createdUnixTimestamp";
ALTER TABLE users_sessions RENAME COLUMN user_id to "userID";
ALTER TABLE users_sessions RENAME COLUMN user_ip to "userIP";
ALTER TABLE users_sessions RENAME COLUMN type_id to "typeID";
ALTER TABLE users_sessions RENAME COLUMN created_unix_timestamp to "createdUnixTimestamp";
ALTER TABLE users_sessions RENAME COLUMN updated_unix_timestamp to "updatedUnixTimestamp";
ALTER TABLE web_channels RENAME COLUMN entries_category_id to "entriesCategoryID";
ALTER TABLE web_channels RENAME COLUMN type_id to "typeID";
ALTER TABLE web_channels RENAME COLUMN created_unix_timestamp to "createdUnixTimestamp";
ALTER TABLE web_channels RENAME COLUMN updated_unix_timestamp to "updatedUnixTimestamp";

元数据中 JSON 对象属性的重命名

UPDATE users
SET metadata = jsonb_set(
    metadata,
    "{groupID}",
    metadata->"group_id"
) || 
jsonb_build_object("metadata", metadata - "group_id");

UPDATE entries
SET metadata = jsonb_set(
    metadata,
    "{isPublish}",
    metadata->"is_publish"
) || 
jsonb_build_object("metadata", metadata - "is_publish");

UPDATE entries
SET metadata = jsonb_set(
    metadata,
    "{previewURL}",
    metadata->"preview_url"
) || 
jsonb_build_object("metadata", metadata - "preview_url");

UPDATE pages_static
SET metadata = jsonb_set(
    metadata,
    "{isPublish}",
    metadata->"is_publish"
) || 
jsonb_build_object("metadata", metadata - "is_publish");

UPDATE pages_static
SET metadata = jsonb_set(
    metadata,
    "{previewURL}",
    metadata->"preview_url"
) || 
jsonb_build_object("metadata", metadata - "preview_url");

UPDATE metrics
SET "data" = jsonb_set(
    "data",
    "{metrics}",
    jsonb_set(
        "data"->"metrics",
        "{views}",
        (
            SELECT jsonb_object_agg(
                view.key,
                jsonb_set(
                    view.value,
                    "{URLTransfers}",
                    (
                        SELECT jsonb_agg(
                            jsonb_set(
                                transfer_elem,
                                array[transfer_key],
                                jsonb_set(
                                    transfer_elem->transfer_key,
                                    "{isVisitedNew}",
                                    (transfer_elem->transfer_key)->"is_visited_new"
                                ) - "is_visited_new"
                            )
                        )
                        FROM jsonb_array_elements(view.value->"url_transfers") AS transfer_elem,
                        jsonb_object_keys(transfer_elem) AS transfer_key
                    )
                ) - "url_transfers"
            )
            FROM jsonb_each("data"->"metrics"->"views") AS view
        )
    )
)
WHERE "data" @? "$.metrics.views.*.url_transfers";
翻译

评论

此文章暂无评论。