Exemple #1
0
/**
 * @brief Send abstract about specific entry.
 * @see Tag, User, DBModel, Model_Context
 */
function sendAbstractToEolin()
{
    // TODO : Rewrite routines to fit Textcube 1.8 or later.
    requireModel('blog.category');
    $entryId = $_GET['entryId'];
    $context = Model_Context::getInstance();
    $blogid = $context->getProperty('blog.id');
    echo "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<response>\r\n";
    list($allComments, $allTrackbacks) = POD::queryRow("SELECT \n\t\t\tSUM(comments), SUM(trackbacks) \n\t\t\tFROM {$context->getProperty('database.prefix')}Entries \n\t\t\tWHERE blogid = " . $blogid . " AND draft = 0 AND visibility = 3", 'num');
    if ($entry = POD::queryRow("SELECT e.*, c.name AS categoryName \n\t\t\t\tFROM {$context->getProperty('database.prefix')}Entries e \n\t\t\t\tLEFT JOIN {$context->getProperty('database.prefix')}Categories c ON e.blogid = c.blogid AND e.category = c.id \n\t\t\t\tWHERE e.blogid = " . $blogid . " AND e.id = " . $entryId . " AND e.draft = 0 AND e.visibility = 3" . getPrivateCategoryExclusionQuery($blogid))) {
        header('Content-Type: text/xml; charset=utf-8');
        echo '<version>1.1</version>', "\r\n";
        echo '<status>1</status>', "\r\n";
        echo '<blog>', "\r\n";
        echo '<generator>' . TEXTCUBE_NAME . '/' . TEXTCUBE_VERSION . '</generator>', "\r\n";
        echo '<language>', htmlspecialchars($context->getProperty('blog.language')), '</language>', "\r\n";
        echo '<url>', htmlspecialchars($context->getProperty('uri.default')), '</url>', "\r\n";
        echo '<title>', htmlspecialchars($context->getProperty('blog.title')), '</title>', "\r\n";
        echo '<description>', htmlspecialchars($context->getProperty('blog.description')), '</description>', "\r\n";
        echo '<comments>', $allComments, '</comments>', "\r\n";
        echo '<trackbacks>', $allTrackbacks, '</trackbacks>', "\r\n";
        echo '</blog>', "\r\n";
        echo '<entry>', "\r\n";
        echo '<permalink>', htmlspecialchars($context->getProperty('uri.default') . "/" . ($context->getProperty('blog.useSloganOnPost') ? "entry/{$entry['slogan']}" : $entry['id'])), '</permalink>', "\r\n";
        echo '<title>', htmlspecialchars($entry['title']), '</title>', "\r\n";
        echo '<content>', htmlspecialchars(getEntryContentView($blogid, $entryId, $entry['content'], $entry['contentformatter'])), '</content>', "\r\n";
        echo '<author>', htmlspecialchars(User::authorName($blogid, $entryId)), '</author>', "\r\n";
        echo '<category>', htmlspecialchars($entry['categoryName']), '</category>', "\r\n";
        $tags = Tag::getTagsWithEntryId($blogid, $entry);
        foreach ($tags as $tag) {
            echo '<tag>', htmlspecialchars($tag), '</tag>', "\r\n";
        }
        echo '<location>', htmlspecialchars($entry['location']), '</location>', "\r\n";
        echo '<comments>', $entry['comments'], '</comments>', "\r\n";
        echo '<trackbacks>', $entry['trackbacks'], '</trackbacks>', "\r\n";
        echo '<written>', Timestamp::getRFC1123($entry['published']), '</written>', "\r\n";
        foreach (getAttachments($blogid, $entry['id']) as $attachment) {
            echo '<attachment>', "\r\n";
            echo '<mimeType>', $attachment['mime'], '</mimeType>', "\r\n";
            echo '<filename>', $attachment['label'], '</filename>', "\r\n";
            echo '<length>', $attachment['size'], '</length>', "\r\n";
            echo '<url>', $context->getProperty('uri.service'), '/attachment/', $attachment['name'], '</url>', "\r\n";
            echo '</attachment>', "\r\n";
        }
        echo '</entry>', "\r\n";
    } else {
        echo '<version>1.1</version>', "\r\n", '<status>0</status>', "\r\n";
    }
    echo "</response>";
    exit;
}
Exemple #2
0
function getCalendar($blogid, $period)
{
    global $database;
    $calendar = array('days' => array());
    if ($period === true || !checkPeriod($period)) {
        $period = Timestamp::getYearMonth();
    }
    $calendar['period'] = $period;
    $calendar['year'] = substr($period, 0, 4);
    $calendar['month'] = substr($period, 4, 2);
    $visibility = doesHaveOwnership() ? '' : 'AND e.visibility > 0' . getPrivateCategoryExclusionQuery($blogid);
    switch (POD::dbms()) {
        case 'Cubrid':
            $result = POD::queryAllWithDBCache("SELECT DISTINCT TO_CHAR(to_timestamp('09:00:00 AM 01/01/1970')+e.published, 'DD')\n\t\t\t\tFROM {$database['prefix']}Entries e\n\t\t\t\tWHERE e.blogid = {$blogid} AND e.draft = 0 {$visibility} AND e.category >= 0 AND\n\t\t\t\t\tTO_CHAR(to_timestamp('09:00:00 AM 01/01/1970')+e.published, 'YYYY') = '{$calendar['year']}' AND\n\t\t\t\t\tTO_CHAR(to_timestamp('09:00:00 AM 01/01/1970')+e.published, 'MM') = '{$calendar['month']}'", 'entry');
            break;
        case 'MySQL':
        case 'MySQLi':
        case 'PostgreSQL':
        default:
            $result = POD::queryAllWithDBCache("SELECT DISTINCT DAYOFMONTH(FROM_UNIXTIME(e.published)) \n\t\t\t\tFROM {$database['prefix']}Entries e\n\t\t\t\tWHERE e.blogid = {$blogid} AND e.draft = 0 {$visibility} AND e.category >= 0 AND YEAR(FROM_UNIXTIME(e.published)) = {$calendar['year']} AND MONTH(FROM_UNIXTIME(e.published)) = {$calendar['month']}", 'entry');
            break;
    }
    if ($result) {
        foreach ($result as $dayArray) {
            list($day) = $dayArray;
            array_push($calendar['days'], $day);
        }
    }
    $calendar['days'] = array_flip($calendar['days']);
    return $calendar;
}
function getRecentRemoteResponses($blogid, $count = false, $guestShip = false, $type = null)
{
    global $database, $skinSetting;
    if (!is_null($type)) {
        $typeFilter = " AND t.responsetype = '" . POD::escapeString($type) . "'";
    } else {
        $typeFilter = '';
    }
    $sql = doesHaveOwnership() && !$guestShip ? "SELECT t.*, e.slogan \n\t\tFROM \n\t\t\t{$database['prefix']}RemoteResponses t\n\t\t\tLEFT JOIN {$database['prefix']}Entries e ON t.blogid = e.blogid AND t.entry = e.id AND e.draft = 0\n\t\tWHERE \n\t\t\tt.blogid = {$blogid} AND t.isfiltered = 0 {$typeFilter} \n\t\tORDER BY \n\t\t\tt.written \n\t\tDESC LIMIT " . ($count != false ? $count : $skinSetting['trackbacksOnRecent']) : "SELECT t.*, e.slogan \n\t\tFROM \n\t\t\t{$database['prefix']}RemoteResponses t \n\t\t\tLEFT JOIN {$database['prefix']}Entries e ON t.blogid = e.blogid AND t.entry = e.id\n\t\tWHERE \n\t\t\tt.blogid = {$blogid} \n\t\t\tAND t.isfiltered = 0 \n\t\t\tAND e.draft = 0 \n\t\t\tAND e.visibility >= 2 " . getPrivateCategoryExclusionQuery($blogid) . "\n\t\t\t{$typeFilter}\n\t\tORDER BY \n\t\t\tt.written \n\t\tDESC LIMIT " . ($count != false ? $count : $skinSetting['trackbacksOnRecent']);
    if ($result = POD::queryAllWithDBCache($sql, 'remoteResponse')) {
        return $result;
    } else {
        return array();
    }
}
Exemple #4
0
function printIphoneArchives($blogid)
{
    global $database;
    $archives = array();
    $visibility = doesHaveOwnership() ? '' : 'AND e.visibility > 0' . getPrivateCategoryExclusionQuery($blogid);
    $skinSetting = Setting::getSkinSettings($blogid);
    $result = POD::queryAllWithDBCache("SELECT EXTRACT(year_month FROM FROM_UNIXTIME(e.published)) period, COUNT(*) count \n\t\tFROM {$database['prefix']}Entries e\n\t\tWHERE e.blogid = {$blogid} AND e.draft = 0 {$visibility} AND e.category >= 0 \n\t\tGROUP BY period \n\t\tORDER BY period \n\t\tDESC ");
    if ($result) {
        foreach ($result as $archive) {
            array_push($archives, $archive);
        }
    }
    return $archives;
}
Exemple #5
0
function getRecentEntries($blogid)
{
    global $database, $skinSetting;
    $entries = array();
    $visibility = doesHaveOwnership() ? '' : 'AND e.visibility > 0' . getPrivateCategoryExclusionQuery($blogid);
    $result = POD::query("SELECT e.id, e.userid, e.title, e.slogan, e.comments, e.published \n\t\tFROM {$database['prefix']}Entries e\n\t\tWHERE e.blogid = {$blogid} AND e.draft = 0 {$visibility} AND e.category >= 0 \n\t\tORDER BY published DESC LIMIT {$skinSetting['entriesOnRecent']}");
    while ($entry = POD::fetch($result)) {
        array_push($entries, $entry);
    }
    return $entries;
}
Exemple #6
0
function getRecentComments($blogid, $count = false, $isGuestbook = false, $guestShip = false)
{
    global $skinSetting, $database;
    $comments = array();
    if (!$isGuestbook && !Acl::check("group.editors")) {
        $userLimit = ' AND e.userid = ' . getUserId();
    } else {
        $userLimit = '';
    }
    $sql = doesHaveOwnership() && !$guestShip ? "SELECT r.*, e.title, e.slogan\n\t\tFROM\n\t\t\t{$database['prefix']}Comments r\n\t\t\tINNER JOIN {$database['prefix']}Entries e ON r.blogid = e.blogid AND r.entry = e.id AND e.draft = 0{$userLimit}\n\t\tWHERE\n\t\t\tr.blogid = {$blogid}" . ($isGuestbook != false ? " AND r.entry=0" : " AND r.entry>0") . " AND r.isfiltered = 0\n\t\tORDER BY\n\t\t\tr.written\n\t\tDESC LIMIT " . ($count != false ? $count : $skinSetting['commentsOnRecent']) : "SELECT r.*, e.title, e.slogan\n\t\tFROM\n\t\t\t{$database['prefix']}Comments r\n\t\t\tINNER JOIN {$database['prefix']}Entries e ON r.blogid = e.blogid AND r.entry = e.id AND e.draft = 0\n\t\t\tLEFT OUTER JOIN {$database['prefix']}Categories c ON e.blogid = c.blogid AND e.category = c.id\n\t\tWHERE\n\t\t\tr.blogid = {$blogid} AND e.draft = 0 AND e.visibility >= 2" . getPrivateCategoryExclusionQuery($blogid) . ($isGuestbook != false ? " AND r.entry = 0" : " AND r.entry > 0") . " AND r.isfiltered = 0\n\t\tORDER BY\n\t\t\tr.written\n\t\tDESC LIMIT " . ($count != false ? $count : $skinSetting['commentsOnRecent']);
    if ($result = POD::queryAllWithDBCache($sql, 'comment')) {
        foreach ($result as $comment) {
            if ($comment['secret'] == 1 && !doesHaveOwnership()) {
                if (!doesHaveOpenIDPriv($comment)) {
                    $comment['name'] = _text('비밀방문자');
                    $comment['homepage'] = '';
                    $comment['comment'] = _text('관리자만 볼 수 있는 댓글입니다.');
                }
            }
            array_push($comments, $comment);
        }
    }
    return $comments;
}
Exemple #7
0
function getRecentEntries($blogid)
{
    $ctx = Model_Context::getInstance();
    $entries = array();
    $visibility = doesHaveOwnership() ? '' : 'AND e.visibility > 0' . getPrivateCategoryExclusionQuery($blogid);
    $result = POD::queryAll("SELECT e.id, e.userid, e.title, e.slogan, e.comments, e.published \n\t\tFROM " . $ctx->getProperty('database.prefix') . "Entries e\n\t\tWHERE e.blogid = {$blogid} AND e.draft = 0 {$visibility} AND e.category >= 0 \n\t\tORDER BY published DESC LIMIT " . $ctx->getProperty('skin.entriesOnRecent'));
    if ($result) {
        return $result;
    } else {
        return array();
    }
}