Пример #1
0
function createAutoblog($type, $sitename, $siteurl, $rssurl)
{
    if ($type == 'generic' || empty($type)) {
        $var = updateType($siteurl);
        $type = $var['type'];
        if (!empty($var['name'])) {
            if (!stripos($siteurl, $var['name'] === false)) {
                $sitename = ucfirst($var['name']) . ' - ' . $sitename;
            }
        }
    }
    if (folderExists($siteurl, $rssurl)) {
        throw new Exception('Erreur : l\'autoblog ' . $sitename . ' existe déjà.');
    }
    $foldername = urlToFolder($siteurl, $rssurl);
    if (mkdir($foldername, 0755, false)) {
        $fp = fopen($foldername . '/index.php', 'w+');
        if (!fwrite($fp, "<?php require_once '../autoblog.php'; ?>")) {
            throw new Exception('Impossible d\'écrire le fichier index.php');
        }
        fclose($fp);
        $fp = fopen($foldername . '/vvb.ini', 'w+');
        if (!fwrite($fp, '[VroumVroumBlogConfig]
SITE_TYPE="' . $type . '"
SITE_TITLE="' . $sitename . '"
SITE_DESCRIPTION="Site original : <a href=\'' . $siteurl . '\'>' . $sitename . '</a>"
SITE_URL="' . $siteurl . '"
FEED_URL="' . $rssurl . '"
ARTICLES_PER_PAGE="' . getArticlesPerPage($type) . '"
UPDATE_INTERVAL="' . getInterval($type) . '"
UPDATE_TIMEOUT="' . getTimeout($type) . '"')) {
            throw new Exception('Impossible d\'écrire le fichier vvb.ini');
        }
        fclose($fp);
    } else {
        throw new Exception('Impossible de créer le répertoire.');
    }
    updateXML('new_autoblog_added', 'new', $foldername, $sitename, $siteurl, $rssurl);
    unlink(AUTOBLOGS_CACHE_FILENAME);
}
Пример #2
0
function xsafimport($xsafremote, $max_exec_time)
{
    if (DEBUG) {
        echo "\n*Traitement {$xsafremote} en maximum {$max_exec_time} secondes";
    }
    $max_exec_time += time() - 1;
    // -1 car l'import prend environ 1 seconde
    /* détection de ferme autoblog  */
    $json_import = file_get_contents($xsafremote);
    if (!empty($json_import)) {
        $to_update = array();
        $json_import = json_decode($json_import, true);
        if (!isset($json_import['meta']) || !isset($json_import['meta']['xsaf-version']) || $json_import['meta']['xsaf-version'] != XSAF_VERSION) {
            if (DEBUG) {
                echo "\nxsaf-version différentes !";
            }
            return false;
        }
        $get_remote_db = $json_import['meta']['xsaf-db_transfer'] == "true" ? true : false;
        $get_remote_media = $json_import['meta']['xsaf-media_transfer'] == "true" ? true : false;
        if (!empty($json_import['autoblogs'])) {
            foreach ($json_import['autoblogs'] as $remote_folder => $value) {
                if (DEBUG) {
                    debug('remote = ' . $remote_folder);
                }
                if (count($value) == 4 && !empty($value['SITE_TYPE']) && !empty($value['SITE_TITLE']) && !empty($value['SITE_URL']) && !empty($value['FEED_URL'])) {
                    $sitetype = escape($value['SITE_TYPE']);
                    $sitename = escape($value['SITE_TITLE']);
                    $siteurl = escape($value['SITE_URL']);
                    // Do not use DetectRedirect because it's slow and it has been used when the feed was added
                    //$rssurl = DetectRedirect(escape($value['FEED_URL']));
                    $rssurl = escape($value['FEED_URL']);
                }
                /* TOO SLOW
                			$xml = simplexml_load_file($rssurl); // quick feed check
                			// ATOM feed && RSS 1.0 /RDF && RSS 2.0
                			$result = (!isset($xml->entry) && !isset($xml->item) && !isset($xml->channel->item)) ? false : true;	*/
                $result = true;
                /* autoblog */
                if ($result === true) {
                    $foldername = urlToFolder($siteurl, $rssurl);
                    try {
                        createAutoblog($sitetype, $sitename, $siteurl, $rssurl);
                        if (DEBUG) {
                            echo '<p>autoblog ' . $sitename . ' crée avec succès (DL DB : ' . var_dump($get_remote_db) . ' - DL media : ' . var_dump($get_remote_media) . ') : ' . $foldername . '</p>';
                            if (!ALLOW_REMOTE_DB_DL && !ALLOW_REMOTE_MEDIA_DL) {
                                echo '<iframe width="1" height="1" frameborder="0" src="' . urlToFolder($siteurl, $rssurl) . '/index.php"></iframe>';
                            }
                        }
                        /* ============================================================================================================================================================================== */
                        /* récupération de la DB distante */
                        if ($get_remote_db == true && ALLOW_REMOTE_DB_DL) {
                            $remote_db = str_replace("?export", $remote_folder . "/articles.db", $xsafremote);
                            copy($remote_db, './' . $foldername . '/articles.db');
                        }
                        /* préparation à la récupération des médias distants */
                        if ($get_remote_media == true && ALLOW_REMOTE_MEDIA_DL) {
                            $remote_media = str_replace("?export", $remote_folder . "/?media", $xsafremote);
                            if (DEBUG) {
                                debug("Récupération de la liste des médias à {$remote_media} <br>");
                            }
                            $json_media_import = file_get_contents($remote_media);
                            if (DEBUG) {
                                debug($json_media_import);
                            }
                            $media_data = json_decode($json_media_import, true);
                            if (DEBUG) {
                                debug($media_data);
                            }
                            if (!empty($json_media_import) && $media_data !== null && !empty($media_data['files'])) {
                                file_put_contents('./' . $foldername . '/import.json', $json_media_import);
                            }
                        }
                        /* ============================================================================================================================================================================== */
                        //TODO : tester si articles.db est une DB valide
                        //$to_update[] = serverUrl().preg_replace("/(.*)\/(.*)$/i","$1/".$foldername , $_SERVER['SCRIPT_NAME']); // url of the new autoblog
                    } catch (Exception $e) {
                        if (DEBUG) {
                            echo $e->getMessage();
                        }
                    }
                }
                if (DEBUG) {
                    echo '<p>time : ' . ($max_exec_time - time()) . '</p>';
                }
                if (time() >= $max_exec_time) {
                    if (DEBUG) {
                        echo "<p>Time out !</p>";
                    }
                    break;
                }
            }
        } else {
            if (DEBUG) {
                echo "Format JSON incorrect.";
            }
            return false;
        }
    }
    return;
}
Пример #3
0
function create_from_opml($opml)
{
    global $error, $success;
    $cpt = 0;
    foreach ($opml->body->outline as $outline) {
        if (!empty($outline['title']) && !empty($outline['text']) && !empty($outline['xmlUrl']) && !empty($outline['htmlUrl'])) {
            try {
                $sitename = escape($outline['title']);
                $siteurl = escape($outline['htmlUrl']);
                $sitetype = escape($outline['text']);
                if ($sitetype != 'microblog' && $sitetype != 'shaarli' && $sitetype != 'twitter' && $sitetype != 'youtube') {
                    $sitetype = 'generic';
                }
                $rssurl = DetectRedirect(escape($outline['xmlUrl']));
                createAutoblog($sitetype, $sitename, $siteurl, $rssurl);
                $message = 'Autoblog "' . $sitename . '" crée avec succès. &rarr; <a target="_blank" href="' . urlToFolder($siteurl, $rssurl) . '">afficher l\'autoblog</a>.';
                // Do not print iframe on big import (=> heavy and useless)
                if (++$cpt < 10) {
                    $message .= '<iframe width="1" height="1" frameborder="0" src="' . urlToFolder($siteurl, $rssurl) . '/index.php"></iframe>';
                }
                $success[] = $message;
            } catch (Exception $e) {
                $error[] = $e->getMessage();
            }
        }
    }
}