Просмотр файла admin.php

Размер файла: 36.2Kb
<?php
/*
Админсакая зона wapshop
ВНИМАНИЕ! Все настройки в файле config.php. Здесь ни чего править не нужно.
Автор: Denvas
*/
    include_once("config.php");
    include_once("function.php");
    include_once("session.php");
    include_once("shop.php");
    include_once("design.php");
    
    $title="Админка";
    $queryneed[]="login";$queryneed[]="pwd";
    $nrowpage*=2;
    InitDesign($design_name,$wapver);
    $cat=isset($_GET["cat"])?(int)$_GET["cat"]:"";
    
    $addpos=array("Добавить","addpos","1","select",array("1"=>"В конец","-1"=>"В начало"));

    $codemenu="<a href='".QueryParam("",1,"index.php")."'>На сайт</a><br/>";

    $auth=AuthAdmin();
    
    if(!$auth){
        $code.=design("Вход в закрытую зону","header");
        if(isset($_GET["login"]))$code.=design("Неправильные имя или пароль","error");
        $formdata=HiddenParam(array("login","pwd"));
        $formdata[]=array("Login","login","","text");
        $formdata[]=array("Password","pwd","","password");
        $code.=ShowForm($formdata,"Войти","","get");
        $code=strtr($template["mainadmin"],array("\$code\$"=>$code,"\$menu\$"=>$codemenu,"\$title\$"=>$title));
        ShowXML($code);        
        exit;
    };

    $tmplcode=array(
        "a"=>array("Ссылка","<a href=\"1\">2</a>","1 - ссылка (url), 2 - текст"),
        "img"=>array("Картинка","<img src=\"pic/1\" alt=\"2\"/>","1 - файл картинки (url), 2 - подпись к картинке"),
        ".aimg"=>array("Картинка с сылкой","<a href=\"1\"><img src=\"pic/2\" alt=\"3\"/></a>","1 - ссылка (url), 2 - файл картинки (url), 3 - подпись к картинке"),
        "b"=>array("Жирный","<b>1</b>","1 - жирный текст"),
        "i"=>array("Наклонный","<i>1</i>","1 - наклонный текст"),
        "u"=>array("Подчеркнутый","<u>1</u>","1 - подчеркнутый текст"),
        "small"=>array("Маленький","<small>1</small>","1 - маленький текст"),
        "big"=>array("Крупный","<big>1</big>","1 - крупный текст"),
        "br"=>array("Перевод строки","<br/>",""),
    );
    $notstrip="";reset($tmplcode);while(list($key,$val)=each($tmplcode))if($key[0]!='.')$notstrip.="<".$key."><".$key."/>";

    //начало админки
    if(empty($_GET["a"])){
        $code.=design("Админская зона","header");
        $code.="<a href='".QueryParam(array("a"))."a=manager'>Конструктор</a><br/>";
        $code.="<a href='".QueryParam(array("a"))."a=textedit'>Редактор текстов</a><br/>";
        $code.="<a href='".QueryParam(array("a"),0,"gb.php")."'>Гостевая книга</a><br/>";
        if($wm_enable)$code.="<a href='".QueryParam(array("a"))."a=wm'>Оплаты с помощью wm</a><br/>";
        
        $code.="<a href='".QueryParam(array("a"))."a=stat'>Статистика</a><br/>";
        $code.="Транслит: ";
        if(!empty($_GET["tr"])){
            $code.="<a href='".QueryParam("tr")."'>Отк</a><br/>";
        }
        else{
            $code.="<a href='".QueryParam("tr")."tr=1'>Вкл</a><br/>";
        };
    }
    //статистика посещений
    elseif(strcmp($_GET["a"],"stat")==0){
        $code.=design("Статистика входов","header");
        $statist=@file($path_session."/stat_from.log");
        if(empty($statist)){
            $code.="Статистика отсутствует<br/>";
        }
        else{
            $rows=count($statist);
            list($start,$stop)=GetPage();
            if($start==0)$code.="Откуда: сколько<br/>";
            for($j=0;$j<$rows;$j++){
                $statist[$j]=explode("|",trim($statist[$j]));
            };
            $statist=tablesort($statist,-2);
            for($j=$start;$j<$stop;$j++)$code.=$statist[$j][0].": ".$statist[$j][1]."<br/>";
            $code.=ShowPage();
        };
    }
    //редактор текстов
    elseif(strcmp($_GET["a"],"textedit")==0){
        //не выбран файл, нужно показать весь каталог
        if(empty($_GET["file"])){
            $code.=design("Редактор текстов","header");
            $dirs=array();
            $fd=opendir($path_text);
            while($namefile=readdir($fd)){
                if(($namefile[0]!='.')&&(strpos($namefile,".txt"))){
                    if(is_file($path_text."/".$namefile))$dirs[]=$namefile;
                };//if($file[0]!='.')
            };//while ($file = readdir($handle))
            closedir($fd);
            $nrowpage*=2;
            $rows=count($dirs);
            list($start,$stop)=GetPage();
            for($i=$start;$i<$stop;$i++){
                $name=substr($dirs[$i],0,-4);
                $code.=design("<a href='".QueryParam(array("file","p"))."file=".$name."'>".$name."</a><br/>","line".$i%2);
            };
            $code.=ShowPage();
        }
        else{
            $namefile=$_GET["file"];$pathfile=$path_text."/".$namefile.".txt";
            $code.=design("Текст ".$namefile,"header");
            if(!file_exists($pathfile)){
                if(!$demo){$fd=fopen($pathfile,"wb");flock($fd,LOCK_EX);fwrite($fd,"");fclose($fd);};
                $_GET["line"]=0;
            };
            $data=@file($pathfile);
            $rows=count($data);
            if(empty($data[0]))$_GET["line"]=0;
            //нет строки редактирования
            if(!isset($_GET["line"])){
                $nrowpage*=2;
                list($start,$stop)=GetPage();$url=QueryParam(array("line"))."line=";
                $listinsert=array(".".$rows=>"В конец");
                for($j=$start;$j<$stop;$j++){
                    $code.=design("<a href='".$url.$j."'>".($j>0?$j:"Заголовок")."</a> ".htmlspecialchars(substr($data[$j],0,20))."<br/>","line".$j%2);
                    $listinsert[".".$j]="Между ".$j." и ".($j+1);
                };
                $code.=ShowPage();
                $dataform=HiddenParam(array("p"));
                $dataform[]=array("Добавить абзац текста","line",".".$rows,"select",$listinsert);
                $code.=ShowForm($dataform,"Написать","","get");
                $code.="<a href='".QueryParam(array("file","p"))."'>Список текстов</a><br/>";
            }//if(!isset($_GET["line"]))
            //редактирование метаданных
            elseif(empty($_GET["line"])){
                $showform=1;
                if(!empty($_POST["send"])){
                    $showform=0;
                    $d["title"]=$_POST["title"];
                    $d["rows"]=$_POST["rows"];
                    $d["keyword"]=$_POST["keyword"];
                }
                else{
                    $elem=explode("|",isset($data[0])?$data[0]:"");
                    $d["title"]=empty($elem[0])?"":$elem[0];
                    $d["rows"]=empty($elem[1])?"":$elem[1];
                    $d["keyword"]=empty($elem[2])?"":$elem[2];
                };
                if(!$showform){
                    $data[0]=$d["title"]."|".$d["rows"]."|".$d["keyword"]."\n";
                    if(!$demo){$fd=fopen($pathfile,"wb");flock($fd,LOCK_EX);fwrite($fd,join($data));fclose($fd);};
                    Relocation(QueryParam(array("line")),"Изменения внесены",20);
                };
                $dataform=array();
                $dataform[]=array("Заголовок текста","title",$d["title"],"text");
                $dataform[]=array("Ключевые слова","keyword",$d["keyword"],"text");
                $dataform[]=array("Элементов на странице","rows",$d["rows"],"text");
                $code.=ShowForm($dataform,"Сохранить","","post");
                $code.="<a href='".QueryParam(array("line"))."'>К тексту</a><br/>";
            }
            //редактирование текста
            else{
                $tmpl="";
                if(strpos($_GET["line"],".")===0){
                    $j=(int)substr($_GET["line"],1)+1;
                    if($j>$rows){
                        $data[$j]="";
                    }
                    else{
                        for($i=$rows;$i>$j;$i--)$data[$i]=$data[$i-1];
                        $data[$j]="";
                    };
                    $editnext=".".$j;

                }else{
                    $editnext=0;
                    $j=(int)$_GET["line"];
                };
                $showform=1;
                if(!empty($_POST["send"])){
                    $showform=0;
                    $text=$_POST["text"];
                    if(strcmp($text,"#")==0){
                        array_splice($data,$j,1);
                    }
                    else{
                        $data[$j]=strip_tags(strtr($text,array("&quot;"=>"\"","&#039;"=>"'","&lt;"=>"<","&gt;"=>">")),$notstrip)."\n";
                    };
                };
                if(!$showform){
                    if(!$demo){$fd=fopen($pathfile,"wb");flock($fd,LOCK_EX);fwrite($fd,join($data));fclose($fd);};
                    if($editnext)
                        Relocation(QueryParam(array("line"))."line=".$editnext,"Еще строчечку",20);
                    else
                        Relocation(QueryParam(array("line")),"Изменения внесены",20);
                };
                
                $dataform=array(array("Абзац ".($editnext?($j-1):$j),"text",trim(htmlspecialchars($data[$j])),"textarea"));
                $code.=ShowForm($dataform,"Сохранить","","post");
                $code.="<a href='".QueryParam(array("line"))."'>К тексту</a><br/>";
            };
        };//else if(empty($_GET["file"]))
    }
    //менеджер сайта
    elseif(strcmp($_GET["a"],"manager")==0){
        $product=GetProduct($cat,0);
        if($cat)
            $code.=design("Категория ".$cat,"header");
        else
            $code.=design("Менеджер сайта","header");
        $url=QueryParam(array("a","edit"))."id=";
        $rows=count($product);
        list($start,$stop)=GetPage();
        ////////////////////////
        for($j=$start;$j<$stop;$j++){
            $codeprod="";
            $codeprod.="<a href='".$url.$product[$j]["id"]."&amp;a=edit'>".($product[$j]["title"]?$product[$j]["title"]:($product[$j]["description"]?htmlspecialchars(substr($product[$j]["description"],0,15)):$product[$j]["id"]))."</a> ";
            //переход внутрь категории
            if(strcmp($product[$j]["type"],"cat")==0)$codeprod.="<a href='".QueryParam(array("cat","p"))."cat=".$product[$j]["id"]."'>".$product[$j]["type"]."</a>";
            //ссылка на редактирование файла
            elseif(strcmp($product[$j]["type"],"text")==0)$codeprod.="<a href='".QueryParam(array(),1)."a=textedit&amp;file=".$product[$j]["file"][0]."'>".$product[$j]["type"]."</a>";
            //все остальное
            else $codeprod.=$product[$j]["type"];
            //удаление и перемещение
            $codeprod.=" <a href='".$url.$product[$j]["id"]."&amp;a=delete'>x</a> <a href='".$url.$product[$j]["id"]."&amp;a=move&amp;pos=-1'>u</a> <a href='".$url.$product[$j]["id"]."&amp;a=move&amp;pos=1'>d</a><br/>";
            $code.=design($codeprod,"line".$j%2);
        };
        $code.=ShowPage();
        $code.="<a href='".QueryParam(array("a","p","edit"))."a=add'>Добавить элементы</a><br/>";
        $code.="<a href='".QueryParam(array("a","p","edit"))."a=pageinfo'>Параметры категории</a><br/>";
        if(!empty($cat)){
            if(!empty($catinfo["parent"]))$code.="<a href='".QueryParam("cat")."cat=".$catinfo["parent"]."'>На уровень вверх</a> ";
            $code.="<a href='".QueryParam("cat")."'>В главную категорию</a><br/>";
        };
    }
    elseif(strcmp($_GET["a"],"add")==0){
        $code.=design("Добавить элемент на страницу","bottom");
        $code.="<a href='".QueryParam(array("a","p","edit"))."a=edit&amp;type=cat'>Категория (cat)</a><br/>";
        $code.="<a href='".QueryParam(array("a","p","edit"))."a=edit&amp;type=file'>Файлами (file)</a><br/>";
        $code.="<a href='".QueryParam(array("a","p","edit"))."a=edit&amp;type=text'>Отдельный текст (text)</a><br/>";
        $code.="<a href='".QueryParam(array("a","p","edit"))."a=edit&amp;type=code'>Абзац текста (code)</a><br/>";
        reset($tmplcode);
        while(list($key,$val)=each($tmplcode)){
            $code.="&nbsp;&nbsp;<a href='".QueryParam(array("a","p","edit"))."a=edit&amp;type=code.".$key."'>".$val[0]."</a><br/>";
        }
        $code.="<a href='".QueryParam(array("a"))."a=manager'>К списку</a><br/>";
    }
    elseif(strcmp($_GET["a"],"move")==0){
        $product=GetProduct($cat,0);
        MoveProduct($_GET["id"],$_GET["pos"]);
        Relocation(QueryParam(array("a","id","pos"))."a=manager","Перемещен");
    }
    elseif(strcmp($_GET["a"],"delete")==0){
        $product=GetProduct($cat,0);
        $code.=design("Вы уверены, что хотите удалить?","warning");
        $code.="<a href='".QueryParam(array("a"))."a=deleteyes'>Да</a><br/>";
        $code.="<a href='".QueryParam(array("a","id"))."'>Нет</a><br/>";
    }
    elseif(strcmp($_GET["a"],"deleteyes")==0){
        $product=GetProduct($cat,0);
        DeleteProduct($_GET["id"]);
        Relocation(QueryParam(array("a","id"))."a=manager","Удалено");
    }
    elseif(strcmp($_GET["a"],"pageinfo")==0){
        $product=GetProduct($cat,0);
        $code.=design("Параметры страницы","header");
        $showform=1;
        if(!empty($_POST["send"])){
            $showform=0;
            if(empty($_POST["titlepage"])){$code.=design("Заполните заголовок","error");$showform=1;};
            $catinfo["title"]=$_POST["titlepage"];
            $catinfo["keyword"]=$_POST["keyword"];
            $catinfo["rows"]=$_POST["rows"];
        };
        if(!$showform){
            UpdateCat($catinfo);//обновить запись
            Relocation(QueryParam(array("a","id","type"))."a=manager","Категория обновлена",20);
        };
        $dataform=array();
        $dataform[]=array("Заголовок страницы","titlepage",$catinfo["title"],"text");
        $dataform[]=array("Ключевые слова","keyword",$catinfo["keyword"],"text");
        $dataform[]=array("Абзатцев на странице","rows",$catinfo["rows"],"text");
        $code.=ShowForm($dataform,"Сохранить","","post");
        $code.="<a href='".QueryParam(array("a","id","type"))."a=manager"."'>К списку</a><br/>";
    }
    elseif(strcmp($_GET["a"],"edit")==0){
        $product=GetProduct($cat,0);
        $id=isset($_GET["id"])?$_GET["id"]:0;
        $tmpl="";
        if(empty($id)){
            $data=array("id"=>"","title"=>"","description"=>"","price"=>"","picture"=>"","demo"=>"","type"=>$_GET["type"],"align"=>"","file"=>array(""));
        }
        else{
            for($j=0;$j<count($product);$j++){
                if($product[$j]["id"]==$id){
                    $data=$product[$j];
                    while(list($key,$val)=each($data))if(!is_array($val))$data[$key]=strtr($val,array("\""=>"&quot;","'"=>"&#039;","<"=>"&lt;",">"=>"&gt;"));
                    break;
                };
            };
        };
        if((isset($_GET["type"]))&&(strpos($_GET["type"],"."))){
            $data["type"]=$_GET["type"];
            $tmpl=substr($data["type"],strpos($data["type"],".")+1);
            $data["type"]=substr($data["type"],0,strpos($data["type"],"."));
        };
        if(!empty($_POST["addtag"])){
            $tmpl=$_POST["addtag"];
        };
        $namet=array("file"=>"Новый товар","morefile"=>"Еще файлы","cat"=>"Новая категория","text"=>"Новый текст","code"=>"Новый код");
        $code.=design($data["title"]?$data["title"]:$namet[$data["type"]],"header");
        $showform=1;$sub=isset($_GET["sub"])?$_GET["sub"]:"";
        //размещение файлов
        if((strcmp($data["type"],"file")==0)&&(strcmp($sub,"morefile")==0)){
            $dataform=array();
            $more=(int)$_GET["more"];
            if(!empty($_POST["send"])){
                $showform=0;
                for($i=1;$i<=$more;$i++){
                    $filetemp=GetFile("file".$i."_",$path_download,"Файл");
                    if($filetemp){
                        if(strcmp($filetemp,"#")==0)
                            unset($data["file"][$i]);
                        else
                            $data["file"][$i]=$filetemp;
                    };
                };//for
            };//if(!empty($_POST["send"]))
            if(!$showform){
                UpdateProduct($data);//обновить запись
                Relocation(QueryParam(array("a","id","type","sub","more"))."a=manager","Файлы обновлены",20);
            };
            for($i=1;$i<=$more;$i++){
                $dataform[]=array("Файл ".$i,"sepfile",isset($data["file"][$i])?($data["file"][$i]." заменить?"):"","show");
                $dataform[]=array("URL","file".$i."_1","","text");
                $dataform[]=array("или файл","file".$i."_2","","file");
            };
            $code.=ShowForm($dataform,"Сохранить","","post");
        }
        elseif(strcmp($data["type"],"file")==0){                
            if(!empty($_POST["send"])){
                $showform=0;

                $data["title"]=$_POST["title"];
                $data["description"]=strip_tags(strtr($_POST["description"],array("&quot;"=>"\"","&#039;"=>"'","&lt;"=>"<","&gt;"=>">")),$notstrip);
                $data["align"]=$_POST["align"];
            
                $data["price"]=(float)$_POST["price"];
            
                if($filetemp=GetFile("pic","pic","Картинка")){
                    if(strcmp($filetemp,"#")==0)
                        $data["picture"]="";
                    else{
                        $data["picture"]=$filetemp;
                        //создание из картинки тумбинашки
                        if(!empty($resize_type)){
                            $nametumb=substr($filetemp,0,strrpos($filetemp,".")).".".$resize_type;
                            if(ResizeImage("pic/".$filetemp,"pic/".$nametumb,$resize_width, $resize_height)!=0){
                                $code.=design("Ошибка создания уменьшенной картинки","error");$showform=1;
                            };
                            $data["picture"]=$nametumb;
                            unlink("pic/".$filetemp);//удалить оригинальную картинку
                        };//if(!empty($resize_type))
                    };//else
                }//if
                if($filetemp=GetFile("demo","free","Демоверсия")){
                    if(strcmp($filetemp,"#")==0)
                        $data["demo"]="";
                    else
                        $data["demo"]=$filetemp;
                };
                if($filetemp=GetFile("file",$path_download,"Файл")){
                    if(strcmp($filetemp,"#")==0)
                        $data["file"][0]="";
                    else
                        $data["file"][0]=$filetemp;
                };
            };
            if(!$showform){
                UpdateProduct($data);//обновить запись
                if(empty($_POST["morefile"]))
                    Relocation(QueryParam(array("a","id","type"))."a=manager","Товар обновлен",20);
                 else
                    Relocation(QueryParam(array("id","type"))."type=file&amp;sub=morefile&amp;id=".$data["id"]."&amp;more=".(int)$_POST["morefile"],"Товар обновлен. Идем править файлы",20);
            };
            $dataform=array();
            if(empty($data["id"]))$dataform[]=$addpos;
            $dataform[]=array("Выравнивание","align",$data["align"],"select",array(""=>"По умолчанию","left"=>"Слева","center"=>"По центру","right"=>"Справа"));
            $dataform[]=array("Название","title",$data["title"],"text");
            $dataform[]=array("Описание","description",$data["description"],"textarea");
                
            $dataform[]=array("Скриншот","seppic",$data["picture"]?($data["picture"]." заменить?"):"","show");
            $dataform[]=array("URL","pic1","","text");
            $dataform[]=array("Файл","pic2","","file");
            
            $dataform[]=array("Файл","sepfile",$data["file"][0]?($data["file"][0]." заменить?"):"","show");
            $dataform[]=array("URL","file1","","text");
            $dataform[]=array("или файл","file2","","file");
            
            $dataform[]=array("Еще файлы?","morefile","","select",array("0"=>"Нет","1"=>"1 файл","2"=>"2","3"=>"3","5"=>"5","20"=>"20 :-)"));

            $code.=ShowForm($dataform,"Сохранить","","post");
        }
        //размещение текстов
        elseif(strcmp($data["type"],"text")==0){
            if(!empty($_POST["send"])){
                $showform=0;
                if(empty($_POST["title"])){$code.=design("Заполните название","error");$showform=1;};
                $data["title"]=$_POST["title"];
                $data["description"]=strip_tags(strtr($_POST["description"],array("&quot;"=>"\"","&#039;"=>"'","&lt;"=>"<","&gt;"=>">")),$notstrip);
                $data["demo"]=$_POST["demo"];
                $data["align"]=$_POST["align"];
            
                $price=(float)$_POST["price"];
                if($price<0){$code.=design("Цена должна быть больше 0","error");$showform=1;};
                $data["price"]=$price;
                if(empty($_POST["filename"])){$code.=design("Укажите файл","error");$showform=1;};
                $data["file"][0]=$_POST["filename"];
                if(!checkinput($data["file"][0],"FILE")){$code.=design("В названии файла разрешены только английские буквы, цифры, \".-_\"","error");$showform=1;};

                if($data["file"][0]){
                    $filetemp=GetFile("file",$path_text,"Файл",$data["file"][0].".txt");
                };
            };
            if(!$showform){
                UpdateProduct($data);//обновить запись
                if(empty($_POST["edit"]))
                    Relocation(QueryParam(array("a","id","type"))."a=manager","Описание текста обновлено",20);
                else
                    Relocation(QueryParam(array("a","id","type"))."a=textedit&amp;file=".$data["file"][0],"Описание текста обновлено. Переход к редактированию текста.",20);
            };
            $dataform=array();
            if(empty($data["id"]))$dataform[]=$addpos;
            $dataform[]=array("Выравнивание","align",$data["align"],"select",array(""=>"По умолчанию","left"=>"Слева","center"=>"По центру","right"=>"Справа"));
            $dataform[]=array("Название *","title",$data["title"],"text");
            $dataform[]=array("Описание","description",$data["description"],"textarea");
        
            $dataform[]=array("Цена (0-бесплатно)","price",$data["price"],"text");
            $dataform[]=array("Название файла (name.buy)*","filename",$data["file"][0],"text");
            
            $dataform[]=array("Текстовый файл","sepfile",$data["file"][0]?($data["file"][0]." заменить?"):"после загрузки на сервер имя изменится на вышеуказанное","show");
            $dataform[]=array("URL","file1","","text");
            $dataform[]=array("или файл","file2","","file");

            $dataform[]=array("Анонс текста","demo",$data["demo"],"select",array("0"=>"Только описание","1"=>"+ первая строчка","2"=>"+ последняя строчка","3"=>"+ случайная строчка"));

            $dataform[]=array("Перейти к редактированию","edit",$data["id"]?0:1,"select",array("1"=>"Да","0"=>"Нет"));

            $code.=ShowForm($dataform,"Сохранить","","post");
        }
        elseif(strpos($data["type"],"code")===0){
            $desc="Текст *";
            if(!empty($_POST["send"])){
                $showform=0;
                if(empty($_POST["description"])){$code.=design("Заполните описание","error");$showform=1;};
                $data["title"]=$_POST["title"];
                $data["align"]=$_POST["align"];
                $data["description"]=strip_tags(strtr($_POST["description"],array("&quot;"=>"\"","&#039;"=>"'","&lt;"=>"<","&gt;"=>">")),$notstrip);
            }
            else{
                if((!empty($tmpl))&&(isset($tmplcode[$tmpl]))){
                    $data["description"].=($data["description"]?" ":"").htmlspecialchars($tmplcode[$tmpl][1]);
                    $desc=$tmplcode[$tmpl][0].": ".$tmplcode[$tmpl][2];
                };
            };
            if(!$showform){
                UpdateProduct($data);//обновить запись
                if(empty($_POST["addtag"]))
                    Relocation(QueryParam(array("a","id","type"))."a=manager","Код обновлен",20);
                else
                    Relocation(QueryParam(array("type","id"))."id=".$data["id"]."&amp;type=".$data["type"].".".$_POST["addtag"],"Код добавлен. Редактирование...",20);
            };
            $dataform=array();
            if(empty($data["id"]))$dataform[]=$addpos;
            if($desc){
                $dataform[]=array($desc,"sepfile","","show");
            };
            $dataform[]=array("Выравнивание","align",$data["align"],"select",array(""=>"По умолчанию","left"=>"Слева","center"=>"По центру","right"=>"Справа"));
            $dataform[]=array("","description",$data["description"],"textarea");
            $dataform[]=array("Заголовок","title",$data["title"],"text");
            $listtag=array(""=>"");
            reset($tmplcode);while(list($key,$val)=each($tmplcode)){$listtag[$key]=$val[0];};
            $dataform[]=array("Добавить в конец","addtag","","select",$listtag);
            $code.=ShowForm($dataform,"Сохранить","","post");
        }
        elseif(strcmp($data["type"],"cat")==0){
            if(!empty($_POST["send"])){
                $showform=0;
                if(empty($_POST["title"])){$code.=design("Заполните название","error");$showform=1;};
                //if(empty($_POST["description"])){$code.=design("Заполните описание","error");$showform=1;};
                $data["title"]=$_POST["title"];
                $data["description"]=strip_tags(strtr($_POST["description"],array("&quot;"=>"\"","&#039;"=>"'","&lt;"=>"<","&gt;"=>">")),$notstrip);
                $data["align"]=$_POST["align"];
                $data["price"]=(float)$_POST["price"];
                if($filetemp=GetFile("pic","pic","Картинка")){
                    if(strcmp($filetemp,"#")==0)
                        $data["picture"]="";
                    else
                        $data["picture"]=$filetemp;
                };
            };
            if(!$showform){
                UpdateProduct($data);//обновить запись
                $namefile=$path_download."/data".$data["id"].".txt";
                if((!$demo)&&(!file_exists($namefile))){
                    $fd=fopen($namefile,"wb");
                    flock($fd,LOCK_EX);
                    fwrite($fd,(!empty($_POST["titlepage"])?$_POST["titlepage"]:$data["title"])."|".$cat."|".(isset($_POST["keyword"])?$_POST["keyword"]:"")."|".(isset($_POST["rows"])?$_POST["rows"]:"")."\n");
                    fclose($fd);
                };
                if(isset($_GET["type"]))
                    Relocation(QueryParam(array("a","id","type"))."a=manager&amp;cat=".$data["id"],"Категория обновлена. Переход в категорию.",20);
                else
                    Relocation(QueryParam(array("a","id","type"))."a=manager","Категория обновлена",20);
            };
            $dataform=array();
            if(empty($data["id"]))$dataform[]=$addpos;
            $dataform[]=array("Выравнивание","align",$data["align"],"select",array(""=>"По умолчанию","left"=>"Слева","center"=>"По центру","right"=>"Справа"));
            $dataform[]=array("Название *","title",$data["title"],"text");
            $dataform[]=array("Описание","description",$data["description"],"textarea");
            $dataform[]=array("Цена (0-бесплатно)","price",$data["price"],"text");

            $dataform[]=array("Картинка","seppic",$data["picture"]?($data["picture"]." заменить?"):"","show");
            $dataform[]=array("URL","pic1","","text");
            $dataform[]=array("или файл","pic2","","file");

            if(!$data["id"]){
                $dataform[]=array("Параметры новой страницы","sepfile","","show");
                $dataform[]=array("Заголовок","titlepage","","text");
                $dataform[]=array("Ключевые слова","keyword","","text");
                $dataform[]=array("Абзатцев на странице","rows","","text");
            };
            $code.=ShowForm($dataform,"Сохранить","","post");
            if($data["id"]){
                $code.="Другие параметры доступны по ссылке \"<a href='".QueryParam(array("a","id","type","cat"))."cat=".$data["id"]."&amp;a=pageinfo'>Страница</a>\"<br/>";
            };
        };

        $code.=$template["separator"];
        $code.="<a href='".QueryParam(array("a","id","type"))."a=manager"."'>К списку</a><br/>";
    };//elseif(strcmp($_GET["a"],"edit")==0)
    $code.=$template["separator"];
    if(!empty($_GET["a"]))$code.="<a href='".QueryParam(array("login","pwd"),1)."'>В админку</a><br/>";
    SaveLog("admin");
    $code=strtr($template["mainadmin"],array("\$code\$"=>$code,"\$menu\$"=>$codemenu,"\$title\$"=>$title));
    ShowXML($code);        

//==================================================//
    function MoveProduct($id,$pos){
        global $path_download, $cat, $demo;
        if($demo)return;
        $content=file($path_download."/data".$cat.".txt");
        $flag=-1;
        for($j=1;$j<count($content);$j++)
            if(strpos($content[$j],$id."|")===0){
                $flag=$j;
                break;
            };
        if($flag+$pos<1)return;
        if($flag+$pos>count($content))return;
        if($flag>=0){                
            $tmp=$content[$flag];
            $content[$flag]=$content[$flag+$pos];
            $content[$flag+$pos]=$tmp;
            $fd=fopen($path_download."/data".$cat.".txt","wb");
            flock($fd,LOCK_EX);
            fwrite($fd,join($content));
            fclose($fd);
        };
    };
//==================================================//
    function DeleteProduct($id){
        global $path_download, $cat, $demo;
        if($demo)return;
        $content=file($path_download."/data".$cat.".txt");
        $flag=-1;
        for($j=1;$j<count($content);$j++)
            if(strpos($content[$j],$id."|")===0){
                $flag=$j;
                break;
            };
        if($flag>=0){                
            array_splice($content,$flag,1);
            $fd=fopen($path_download."/data".$cat.".txt","wb");
            flock($fd,LOCK_EX);
            fwrite($fd,join($content));
            fclose($fd);
        };
    };
//==================================================//
    function UpdateCat($catinfo){
        global $path_download,$cat,$demo;
        if($demo)return;
        $content=file($path_download."/data".$cat.".txt");
        $content[0]=$catinfo["title"]."|".$catinfo["parent"]."|".$catinfo["keyword"]."|".$catinfo["rows"]."\n";
        $fd=fopen($path_download."/data".$cat.".txt","wb");
        flock($fd,LOCK_EX);
        fwrite($fd,join($content));
        fclose($fd);
    };
//==================================================//
    function UpdateProduct(&$data){
        global $path_download,$cat,$demo;
        if($demo)return;
        $str="";$add=0;
        if(empty($data["id"])){
            $data["id"]=time();
            $add=1;
        };
        $content=file($path_download."/data".$cat.".txt");

        $str=$data["title"]."|".$data["description"]."|".$data["price"]."|".$data["picture"]."|".$data["demo"]."|".$data["type"].($data["align"]?(",".$data["align"]):"")."|".join("|",$data["file"]);
        if(($content>0)&&(strpos($content[count($content)-1],$str)!==false))return;
        $str=$data["id"]."|".$str;

        if($add){
            $addpos=isset($_POST["addpos"])?(int)$_POST["addpos"]:1;
            if($addpos>0)$content[]=$str."\n"; else{
                array_unshift($content,"");
                $content[0]=$content[1];$content[1]=$str."\n";
            };
        }
        else{
            for($j=1;$j<count($content);$j++)
                if(strpos($content[$j],$data["id"]."|")===0){
                    $content[$j]=$str."\n";break;
                };
        };
        $fd=fopen($path_download."/data".$cat.".txt","wb");
        flock($fd,LOCK_EX);
        fwrite($fd,join($content));
        fclose($fd);
    };
    //==================================================//
    /*
    Обработка имени файла
    */
    function CheckFile(&$path,&$name,$id){
        global $download_type;
        //проверка на разрешенность файла
        $name=strtolower($name);
        $dot=strrpos($name,".");
        if($dot===false)return "Ошибка типа";
        $ext=substr($name,$dot+1);
        if(empty($download_type[$ext]))return "Тип ".$ext." не разрешен к закачке";
        //если заливка файла, то проверять.
        if(!$id){
            //подготовка уникального имени
            $j=1;$newname=$name;
            while(file_exists($path."/".$newname)){
                $newname=substr($name,0,$dot).$j.".".$ext;
                $j++;
                if($j>100)return "Ошибка #13";
            };
            $name=$newname;
        };
        return "";
    };
    //==================================================//
    /*
    Загрузить файл
    */
    function GetFile($name,$path,$tt,$namefile="",$id=0){
        global $showform,$code,$down_maxsize,$demo;
        if($demo)return "demo";
        $res="";
        //закачка файлов
        if(!empty($_POST[$name."1"])){
            $pic=$_POST[$name."1"];
            if(strcmp($pic,"#")==0)return "#";//удалить
            if(strpos($pic,"?"))$pic=substr($pic,0,strpos($pic,"?"));
            $elem=explode("/",$pic);
            if(empty($namefile))$namefile=$elem[count($elem)-1];
            //указали локальый файл на сервере
            if((strpos($pic,"http://")===false)&&(count($elem)==1)){
                if(file_exists($path."/".$namefile)){
                    $res=$namefile;
                }
                else{
                    $code.=$tt.": файл ".$namefile." не найден на сервере<br/>";
                    $showform=1;
                };
            }
            //файл еще не закачан, проверка на формат
            elseif(strpos($pic,"http://")!==0){
                $code.=$tt.": URL должен быть формата http://site.ru/file.ext<br/>";
                $showform=1;
            }
            //стаскивание с других сайтов
            else{
                if(($content=@file_get_contents($pic))&&(strlen($content)<$down_maxsize)){
                    if($check=CheckFile($path,$namefile,$id)){$code.=$tt.": ".$check."<br/>";return "";};
                    $fd=fopen($path."/".$namefile,"wb");
                    flock($fd,LOCK_EX);
                    fwrite($fd,$content);
                    fclose($fd);
                    chmod($path."/".$namefile, 0666);
                    $res=$namefile;
                }
                else{
                    $code.=$tt.": Не удалось стянуть файл ".$pic." (".$namefile.")<br/>";$showform=1;
                };
            };
        }
        elseif((!empty($_FILES[$name."2"]))&&(!empty($_FILES[$name."2"]['name']))){
            $fl=&$_FILES[$name."2"];
            //проверка на загруженость файла
            if((is_uploaded_file($fl['tmp_name']))&&($fl['size']>0)&&($fl['size']<$down_maxsize)){
                if(empty($namefile))$namefile=$fl['name'];
                if($check=CheckFile($path,$namefile,$id)){$code.=$tt.": ".$check."<br/>";return "";};
                if(@copy($fl['tmp_name'], $path."/".$namefile)){
                    chmod($path."/".$namefile, 0666);
                    $res=$namefile;
                }
                else{
                    $code.=$tt.": Ошибка записи файла<br/>";$showform=1;
                };
            }
            else{
                $code.=$tt.": Не удалось загрузить файл ".$fl['name'].($fl['size']>=$down_maxsize?". Первышен допустимый размер":"").($fl['size']==0?". Файл пустой":"")."<br/>";$showform=1;
            };
        };
        return $res;
    };
    //==================================================//
    /*
    Действие: функция для сортировки массива в обратном порядке. для чисел, но в php работает и для строк :)
    */
    function cmpintdesc($a, $b){
        global $globalsort;
        $sort=$globalsort-1;
        if ($a[$sort] == $b[$sort]) return 0;
        return ($a[$sort] > $b[$sort]) ? -1 : 1;
    }
    //==================================================//
    /*
    Сортировка.
    $orderby=номер колонки начиная с 1
    */
    function tablesort($data,$orderby){
        global $globalsort;
        $globalsort=abs($orderby);
        if($orderby>0)
            usort($data, "cmpintasc");
        elseif($orderby<0)
            usort($data, "cmpintdesc");
        return $data;
    };
?>