Хранилища Subversion ant

Редакция

Авторство | Последнее изменение | Открыть журнал | RSS

<?php

/**
 * Project:     Ant: sources.list generator
 * File:        m-process.php
 *
 * This application is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * This application is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 *
 */



include "lib/init.php";
$status = abs(intval($_POST["step"]));
$dist   = abs(intval($_POST["d"]));
$vers   = abs(intval($_POST["v"]));

if (!isset($status)) { $status = 0; }

if (isset($dist)) {
        $query =& $db->query("SELECT * FROM version v JOIN distribution d ON d.dist_id=v.dist_id WHERE v.dist_id='$dist'");
        $distvers  = "<h2>Выбор версии дистрибутива</h2>\n";
        $distvers .= "<form action='./m-process.php' method='post' id='distro' >\n";
        $distvers .= "<p><input type='hidden' name='step' value='2' /><input type='hidden' name='d' value='".$dist."' /></p>\n";
        while ($query->fetchInto($version, DB_FETCHMODE_ASSOC)) {
                if ($version["vname"]!="") {
                        $distname = "&#8220;".stripslashes($version["vname"])."&#8221;";
                } else {
                        $distname = "";
                }
                $distvers .= "<p><input type='radio' name='v' value='".$version["version_id"]."' />".stripslashes($version["distname"])." ".stripslashes($version["version"])." ".$distname."</p>\n";
        }
        $distvers .= "<p><input type='submit' value='Выбрать версию' /></p>";
        $distvers .= "</form>";
}

if (isset($vers)) {
        $query =& $db->query("SELECT * FROM settings");
        $settings = array();
        while ($query->fetchInto($setting, DB_FETCHMODE_ASSOC)) {
                $settings[stripslashes($setting["opt"])] = stripslashes($setting["optvalue"]);
        }
        $query =& $db->query("SELECT * FROM version v JOIN distribution d ON d.dist_id=v.dist_id JOIN dtype p ON d.disttype=p.type_id WHERE v.dist_id='$dist' AND v.version_id='$vers'");
        $query->fetchInto($infodist, DB_FETCHMODE_ASSOC);
        $distname = "";
        if ($infodist["vname"]!="") {
                $distname = "&#8220;".stripslashes($infodist["vname"])."&#8221;";
        }
        $info = "<h2>Доступные репозитории для <em>".stripslashes($infodist["distname"])." ".stripslashes($infodist["version"])." ".$distname."</em></h2>";
        $query =& $db->query("SELECT * FROM repository r JOIN ver2rep v ON r.rep_id=v.ver_id JOIN version v2 ON v.ver_id=v2.version_id JOIN scheme s ON s.scheme_id=r.scheme_id WHERE v.ver_id='$vers' ORDER BY r.rtype_id, r.scheme_id ASC");
        $result = "<p>Скопируйте эти строки в файл <span id='sourceslist'>/etc/apt/sources.list</span>:</p><pre>";
        while ($query->fetchInto($resinfo, DB_FETCHMODE_ASSOC)) {
                $repscheme = stripslashes($resinfo["scheme"]);

                $querysect =& $db->query("SELECT * FROM section s JOIN sect2rep r ON s.sect_id=r.sect_id WHERE r.rep_id='$resinfo[rep_id]'");
                $sections = "";
                while ($querysect->fetchInto($section, DB_FETCHMODE_ASSOC)) {
                        $sections .= stripslashes($section["sectname"])." ";
                }

                $repscheme = str_replace("{TYPE}",stripslashes($infodist["type"]),$repscheme);
                $repscheme = str_replace("{PROTO}",$setting["proto"],$repscheme);
                $repscheme = str_replace("{URL}",$setting["url"],$repscheme);
                $repscheme = str_replace("{REP}",stripslashes($resinfo["repname"]),$repscheme);
                $repscheme = str_replace("{DIST}",stripslashes($infodist["vcodename"]),$repscheme);
                $repscheme = str_replace("{SECT}",$sections,$repscheme);

                $result .= $repscheme."\n";
        }
        $result .= "</pre>";
        $result = $info.$result;
}


switch ($status) {
        case '1':
                print $distvers;
                break;
        case '2':
                print $result;
                break;
}

?>