[Другое] Публикация статей на сайтах

Тема в разделе "Open Source", создана пользователем poxa, 8 ноя 2009.

Статус темы:
Закрыта.
Модераторы: Amazko, Aste
  1. poxa

    poxa Писатель

    Регистр.:
    8 янв 2009
    Сообщения:
    6
    Симпатии:
    0
    Требуется скрипт(небольшая CMS) публикации статей на сайтах.
    Основная задача скрипта:
    1. Каждый сайт состоит в группе и принадлежит какой-то теме
    2. Публикация статей происходит в автоматическом режиме.
    Есть уже некоторые наметки:
    PHP:
    <?php
    // Адрес страницы
    define('PAGE_NAME''Tovary_i_uslugi');
    // Имя скрипта
    define('SCRIPT_NAME''getNews.php');
    // Title по умолчанию
    define('TITLE'' ');
    @
    ini_set('max_execution_time'600);
    @
    ini_set('display_errors'0);
    // Путь до скриптов
    define('DOC_ROOT'$_SERVER['DOCUMENT_ROOT'].'/');
    // Адрес сервера
    define('SERVER''wsproject.ru');
    // Код портала
    define('CODE''92cb1599c6faecb88ffc9c2de22906b1');
    // Хронилище статей
    define('DB_FILE''getNews.db');
    // Пораметр
    define('PARAM_NAME''path');
    // Расширение
    define('EXT''.html');
    // Статус mod_rewrite
    define('REWRITE'true);
    // Количество новостей на странице
    define('ARTICLE_ON_PAGE'999);
    // Количество ссылок на другие новости
    define('RELINK_NEWS_COUNT'5);
    // Keywords по умолчанию
    define('KEYWORDS'' ');
    // Description по умолчанию
    define('DESCRIPTION'' ');
    if(isset(
    $_GET['update'])) { print portal::Update(); }
    elseif(isset(
    $_GET['get'])) { switch ($_GET['get']) { case 'config': print serialize(array( 'code'=>CODE'level2'=>PAGE_NAME'title'=>TITLE'keywords'=>KEYWORDS'desctiptipn'=>DESCRIPTION )); break; } }
    elseif(isset(
    $_GET['page']) && isset($_GET['level']) && is_numeric($_GET['page'])) { $portal = new portal(); $level $_GET['level']; if($level == 2) { foreach ($portal->getLevel($level) as $link => $cur) { if($cur['id'] == $_GET['page']) { header('Location: '.PAGE_NAME.'/'.$link.'.html'); die(); } } } header("HTTP/1.0 404 Not found"); print '<h1>Статья не найдена</h1>'; }
    else
    {
        
    $portal = new portal();
        
    ?>
    КОД ШАБЛОНА САЙТА
    <?php
    }
    // Класс портала
    class portal { var $path; var $page; var $Content = array(); var $News = array(); var $shortList = array(); var $Title; var $Keywords; var $Description; var $Header; var $curNews 0; var $curShort 0; var $newsCount 0; function __construct() { if(isset($_GET[PARAM_NAME]) && sizeof(explode('/'$_GET[PARAM_NAME])) == 1) { if(ereg('^'.PAGE_NAME.'[0-9]{0,3}$'$_GET[PARAM_NAME])) { preg_match('/[0-9]{0,3}$/'$_GET[PARAM_NAME], $match); $_GET['page'] = $match[0]; $_GET[PARAM_NAME] = substr($_GET[PARAM_NAME], 0strlen(PAGE_NAME)); } } $this->path explode('/', isset($_GET[PARAM_NAME]) ? $_GET[PARAM_NAME] : PAGE_NAME); $this->page = (int) (empty($_GET['page']) ? $_GET['page']); $this->levelWatch(); $this->botLogs(); } function portal() { $this->__construct(); } function getLevel() { $file DOC_ROOT DB_FILE; if( is_file($file) ) { $level file_get_contents($file); $result unserialize($level); $this->newsCount sizeof($result); return $result; } else { return false; } } function getShortList($count) { $result = array(); $id 0; foreach($this->shortList as $key=>$val) { if($this->curShort <= $id && $id $this->curShort $count) { $result[$key] = $val; } $id++; } $this->curShort += $count; return $result; } function getNewsList($count$from false) { if($from !== false) { $this->curNews $from; } $result = array(); $id 0; foreach($this->News as $key=>$val) { if($this->curNews <= $id && $id $this->curNews $count) { $result[$key] = $val; } $id++; } $this->curNews += $count; return $result; } function shortList($newsArr$lev$from ''$count RELINK_NEWS_COUNT$pagenation false) { $short = array(); $onpage $count$check = empty($from) ? true false; foreach($newsArr as $key=>$item) { if( $key != $from && ( ($pagenation!==false && (int)($pagenation $onpage) >= $this->page ) || $pagenation === false) ) { if($count != && $check) { $short[] = array( 'link_only' => 0'link'=>(REWRITE '/' '/'.SCRIPT_NAME.'?'.PARAM_NAME.'=').$lev.'/'.$key.EXT'name'=>$item['title'], 'text'=>$item['desc'], 'date'=>$item['date'], 'p'=>$item['p'] ); $count--; } } else { $check true; } if($pagenation) { $pagenation $pagenation 1; } } return $short; } function levelWatch($pagenation 1) { if( $this->path[0] == PAGE_NAME ) { $this->Content $this->getLevel(); if( isset($this->path[1]) ) { $this->News $this->Content[$this->path[1]]; $this->News['title'] .= isset($this->News['textis'][0]) ? ' - '.$this->News['textis'][0]['text'] : ''$this->shortList $this->shortList($this->ContentPAGE_NAME$this->path[1]); } else { $this->News $this->shortList($this->ContentPAGE_NAME''ARTICLE_ON_PAGE$pagenation); } } $this->Title = isset($this->News['title']) ? $this->News['title'] : TITLE; unset($this->News['title']); $this->Keywords = isset($this->News['keys']) ? $this->News['keys'] : KEYWORDS; unset($this->News['keys']); $this->Description = isset($this->News['desc']) ? $this->News['desc'] : DESCRIPTION; unset($this->News['desc']); $this->Header = isset($this->News['h1']) ? $this->News['h1'] : false; }     
        function 
    Update()
        {
            
    $result '';
            
    $Responce file_get_contents('http://'.SERVER.'/pool/'.CODE);
            if(
    $Responce == '') {
                
    $Responce dn_get_contents();
                if (
    $Responce == '')
                    return 
    "get_contents - error;\n";
            }
            
    $newsArr unserialize($Responce);
            if( 
    portal::fileWriteDOC_ROOT DB_FILEserialize($newsArr[2]) ) )
            {
                
    $result .= "level 2 - ok;\n";
            }
            else
            {
                
    $result .= "level 2 - error;\n";
            }
            return 
    $result;
        }
     function 
    fileWrite($file$con) { if(!function_exists('file_put_contents')) { if (!$handle fopen($file'w+')) { return false; } if (fwrite($handle$con) === FALSE) { return false; } return true; } else { return file_put_contents($file$con); } } function botLogs() { $logFile DOC_ROOT 'botLogs.log'$ref = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : ''$url = isset($_SERVER['REQUEST_URI']) ? $_SERVER['REQUEST_URI'] : ''$agent = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : ''$ip = isset($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : ''; if(substr_count($agent'Googlebot') || substr_count($agent'Yandex') || substr_count($agent'Rambler') ) { $log date("Y-m-d H:j:s") . "\t{$agent} ({$ip})\t{$url}\t{$ref}\n"; if ($handle fopen($logFile'a+')) { fwrite($handle$log); } } } function getNavigationString($countPage false$curPage false$linkBase false$echo false) { $countPage $countPage !== false $countPage : (int) ($this->newsCount ARTICLE_ON_PAGE); $curPage $curPage !== false $curPage $this->page$linkBase $linkBase !== false $linkBase : (REWRITE '/' '/'.SCRIPT_NAME.'?'.PARAM_NAME.'=').PAGE_NAME; if(!function_exists('b')) { function b($p$curPage) { if($curPage == ($p-1)) { return '<b>'.$p.'</b>'; } else { return $p; } } } $nav ''$countPage ceil($countPage); if($countPage <= 1) { return $nav; } $nav .= '<p class="navstring">Страницы : '$nav .= $curPage!='&nbsp;<a href="'.$linkBase.($curPage-1).EXT.'" class="arrowback">&laquo;</a>&nbsp; ' ''; if($countPage 10) { for ($p 0$p $countPage$p++) { $nav .= '&nbsp;<a href="'.$linkBase.$p.EXT.'">'.b($p+1$curPage).'</a>&nbsp; '; } } elseif($curPage 9) { for ($p 0$p 10$p++) { $nav .= '&nbsp;<a href="'.$linkBase.$p.EXT.'">'.b($p+1$curPage).'</a>&nbsp; '; } $nav .= ' ... '$nav .= '&nbsp;<a href="'.$linkBase.($countPage-1).EXT.'">'.b($countPage$curPage).'</a>&nbsp; '; } elseif( ($countPage $curPage) < 9) { $nav .= '&nbsp;<a href="'.$linkBase.'.html">1</a>&nbsp; '$nav .= ' ... '; for ($p = ($countPage 10); $p < ($countPage ); $p++) { $nav .= '&nbsp;<a href="'.$linkBase.$p.EXT.'">'.b($p+1$curPage).'</a>&nbsp; '; } } else { for ($p 0$p 3$p++) { $nav .= '&nbsp;<a href="'.$linkBase.$p.EXT.'">'.b($p+1$curPage).'</a>&nbsp; '; } $nav .= ' ... '; for ($p $curPage -$p $curPage +3$p++) { $nav .= '&nbsp;<a href="'.$linkBase.$p.EXT.'">'.b($p+1$curPage).'</a>&nbsp; '; } $nav .= ' ... '; for ($p = ($countPage 3); $p < ($countPage); $p++) { $nav .= '&nbsp;<a href="'.$linkBase.$p.EXT.'">'.b($p+1$curPage).'</a>&nbsp; '; } } $nav .= $curPage!=($countPage-1) ? '&nbsp;<a href="'.$linkBase.($curPage+1).EXT.'" class="arrownext">&raquo;</a>&nbsp; ' ''$nav .= '</p>'; if($echo) { print $nav; return true; } else { return $nav; } }
         }
                       function 
    dn_get_contents()
        {
            
    $fp = @fsockopen(SERVER,80);
            if(!
    $fp) return '';
            
    $out 'GET /pool/'CODE ." HTTP/1.0\r\nHost: "SERVER ."\r\nConnection: Close\r\n\r\n";
            
    fwrite($fp$out);
            while (!
    feof($fp))
            {
                @
    $val .= @fgets($fp128);
            }
            
    fclose($fp);
            
    $val explode("\r\n\r\n"$val);
            
    $val $val[1];
            return 
    $val;
        } 
    ?>
    это вариант кода который размещается на сайте для публикации на нем статей, работает он совместно с файлами getNews.db(здесь хранится контент) и .htaccess(задается ЧПУ). Но вот разобраться как управляется данный скрипт пока не получилось.
    Может есть бесплатная версия или помогите разобраться с управлением скрипта.
     
  2. monia

    monia

    Регистр.:
    27 июл 2007
    Сообщения:
    421
    Симпатии:
    68
    что значит "Публикация статей происходит в автоматическом режиме"? Статьи генерируются или они уже есть в базе и публикуются в запланированное время, или еще как-то?
    Я бы заюзал под это дело WP с плагином article import - полный автомат получится.
     
Статус темы:
Закрыта.