<?php

/*

Plugin Name: 网址数据极速导入器

Plugin URI: https://www.example.com/

Description: 专为导入 CSV 格式网址数据设计,支持自动创建分类。

Version: 1.0

Author: AI助手

Author URI: https://www.example.com/

*/


// 注册激活/卸载事件(留空即可)

RegisterPlugin("ImportSites","ActivePlugin_ImportSites");


function ActivePlugin_ImportSites() {

    // 插件激活时执行

}


function InstallPlugin_ImportSites() {

    // 插件安装时执行

}


function UninstallPlugin_ImportSites() {

    // 插件卸载时执行

}


// 添加左侧菜单

Add_Filter_Plugin('Filter_Plugin_Admin_LeftMenu', 'ImportSites_AddMenu');


function ImportSites_AddMenu(&$m) {

    global $zbp;

    // 在“插件管理”旁边添加一个菜单项

    $m['import_sites'] = MakeTopMenu("root", '网址导入器', $zbp->host . "zb_users/plugin/ImportSites/main.php?action=admin", 'mng_Website');

}


// 处理导入逻辑

if (GetVars('action', 'GET') == 'admin') {

    // 简单的后台界面

    if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_FILES['csvfile'])) {

        ImportCSV($_FILES['csvfile']['tmp_name']);

    } else {

        echo '<!DOCTYPE html><html><head><meta charset="utf-8"><title>网址导入器</title></head><body>';

        echo '<h1>CSV 网址数据导入工具</h1>';

        echo '<p>请上传 UTF-8 编码的 CSV 文件。</p>';

        echo '<p>文件列顺序要求:<strong>网站名称 | 网址链接 | 网站描述 | 分类名称</strong></p>';

        echo '<form method="post" enctype="multipart/form-data">';

        echo '<input type="file" name="csvfile" accept=".csv" required />';

        echo '<input type="submit" value="开始导入" class="button" />';

        echo '</form>';

        echo '</body></html>';

        exit();

    }

}


// 核心导入函数

function ImportCSV($filepath) {

    global $zbp;

    $zbp->LoadLang('zb_system/lang/cn/main.xml'); // 加载语言包


    if (($handle = fopen($filepath, "r")) !== FALSE) {

        // 读取***行(表头)并跳过

        fgetcsv($handle, 1000, ",");


        $count = 0;

        $catCache = array(); // 缓存分类,避免重复查询


        while (($data = fgetcsv($handle, 2000, ",")) !== FALSE) {

            // 对应 Excel 的列:0=标题, 1=链接, 2=描述, 3=分类名

            $title = trim($data[0]);

            $url = trim($data[1]);

            $desc = trim($data[2]);

            $catName = trim($data[3]);


            if (empty($title) || empty($url)) continue;


            // 1. 处理分类(如果不存在则创建)

            $catID = 0;

            if (isset($catCache[$catName])) {

                $catID = $catCache[$catName];

            } else {

                $cats = $zbp->GetCategoryList(array('*'), array(array('=', 'Name', $catName)));

                if (count($cats) > 0) {

                    $catID = $cats[0]->ID;

                } else {

                    // 自动创建分类

                    $newCat = new Meta;

                    $newCat->Name = $catName;

                    $newCat->Save();

                    $catID = $newCat->ID;

                }

                $catCache[$catName] = $catID;

            }


            // 2. 创建文章

            $post = new Post;

            $post->Title = $title;

            $post->CategoryID = $catID;

            $post->AuthorID = 1; // 默认给管理员ID 1

            $post->Status = 0; // 0=公开, 1=草稿, 2=审核

            $post->Type = 0; // 0=文章, 1=页面

            $post->Alias = ''; // 自动生成别名


            // 组合内容:链接 + 描述

            $content = '<p><strong>访问地址:</strong><a href="' . $url . '" target="_blank">' . $url . '</a></p>';

            $content .= '<p><strong>简介:</strong>' . $desc . '</p>';


            $post->Content = $content;

            $post->Intro = $desc; // 摘要

            $post->PostTime = time(); // 当前时间


            $post->Save();

            $count++;

        }

        fclose($handle);

        echo "导入成功!共处理了 {$count} 条数据。<br><a href='main.php?action=admin'>返回继续导入</a>";

    } else {

        echo "无法打开文件,请检查格式。";

    }

    exit();

}