Example #1
0
/**
 * Displays the screen to edit and delete trackbacks.
 *
 * @param string $msg
 * @see submit_trackback()
 */
function edit_trackbacks($msg = "")
{
    global $Cfg, $Pivot_Vars, $Users;
    PageHeader(lang('userbar', 'trackbacks'), 1);
    PageAnkeiler(lang('userbar', 'trackbacks') . ' » ' . lang('userbar', 'trackbacks_title'));
    $id = $Pivot_Vars['id'];
    $db = new db();
    // read entry if it's not in memory yet.
    $db->read_entry($id, true);
    printf("<p><strong>%s</strong>: %s<br />", lang('entries', 'title'), $db->entry['title']);
    printf("<strong>%s</strong>: %s<br />", lang('entries', 'author'), $db->entry['user']);
    printf("<strong>%s</strong>: %s</p><br />", lang('entries', 'date'), $db->entry['date']);
    if ($Pivot_Vars['user'] == $db->entry['user']) {
        // allowed to edit own trackbacks
        MinLevel(2);
    } else {
        // allowed to edit trackbacks on other people's entries
        MinLevel(3);
    }
    if (!$db->entry['trackbacks'] || count($db->entry['trackbacks']) < 1) {
        // print if there are no trackbacks
        echo "<p><B>" . lang('notice', 'trackback_none') . "</b><br /><br /></p>";
    } else {
        // print the trackbacks..
        // perhaps delete a trackback.
        if (isset($Pivot_Vars['del'])) {
            $del_track = $db->entry['trackbacks'][$Pivot_Vars['del']];
            //remove the trackback from last_trackbacks if it's in there..
            if (file_exists("db/ser_lasttrack.php")) {
                $last_tracks = load_serialize("db/ser_lasttrack.php", true, true);
            } else {
                $last_tracks = array();
            }
            if ($last_tracks !== false && count($last_tracks) > 0) {
                foreach ($last_tracks as $key => $last_track) {
                    if ($last_track['code'] == $db->entry['code'] && $last_track['name'] == $del_track['name'] && $last_track['date'] == $del_track['date']) {
                        unset($last_tracks[$key]);
                        save_serialize("db/ser_lasttrack.php", $last_tracks);
                    }
                }
            }
            // *argh* evil hack to directly delete trackbacks.. I should write a
            // proper wrapper
            unset($db->entry['trackbacks'][$Pivot_Vars['del']]);
            unset($db->db_lowlevel->entry['trackbacks'][$Pivot_Vars['del']]);
            $db->save_entry();
            $msg = lang('notice', 'trackback_deleted');
        }
        // perhaps add an ip-block for single ip.
        if (isset($Pivot_Vars['blocksingle'])) {
            $msg = "Added block for IP " . $Pivot_Vars['blocksingle'];
            add_block($Pivot_Vars['blocksingle']);
        }
        // perhaps add an ip-block for single ip.
        if (isset($Pivot_Vars['blockrange'])) {
            $iprange = make_mask($Pivot_Vars['blockrange']);
            $msg = "Added block for IP-range " . $iprange;
            add_block($iprange);
        }
        // perhaps remove an ip-block for single ip.
        if (isset($Pivot_Vars['unblocksingle'])) {
            $msg = "Removed block for IP " . $Pivot_Vars['unblocksingle'];
            rem_block($Pivot_Vars['unblocksingle']);
        }
        // perhaps remove an ip-block for single ip.
        if (isset($Pivot_Vars['unblockrange'])) {
            $iprange = make_mask($Pivot_Vars['unblockrange']);
            $msg = "Removed block for IP-range " . $iprange;
            rem_block($iprange);
        }
        // print a message, if there is one.
        if ($msg != "") {
            echo "<p><B>{$msg}</b><br /><br /></p>";
        }
        // show the edit form, to edit a trackback..
        if (isset($Pivot_Vars['edit'])) {
            StartForm('submittrackback', 0);
            StartTable();
            $mytrack = $db->entry['trackbacks'][$Pivot_Vars['edit']];
            $settings = array();
            $settings[] = array('heading', lang('weblog_config', 'shortentry_template'), '', 8, '', 2, '');
            $settings[] = array('id', '', '', 7, $id, '', '');
            $settings[] = array('count', '', '', 7, $Pivot_Vars['edit'], '', '');
            $settings[] = array('name', lang('weblog_text', 'blog_name'), '', 0, unentify($mytrack['name']), 60, '');
            $settings[] = array('title', lang('weblog_text', 'title'), '', 0, unentify($mytrack['title']), 60, '');
            $settings[] = array('excerpt', lang('weblog_text', 'excerpt'), '', 5, unentify($mytrack['excerpt']), '60', 'rows=5');
            $settings[] = array('url', lang('weblog_text', 'url'), '', 0, $mytrack['url'], 60, '');
            $settings[] = array('ip', lang('weblog_text', 'ip'), '', 0, $mytrack['ip'], 30, '');
            $settings[] = array('date', lang('weblog_text', 'date'), '', 0, $mytrack['date'], 30, '');
            DisplaySettings($settings, 'blog_settings');
            EndForm(lang('weblog_config', 'save_trackback'), 1);
        }
        // print out all the trackbacks..
        foreach ($db->entry['trackbacks'] as $key => $trackback) {
            $myblock = block_type($trackback['ip']);
            if ($myblock == "single" || $myblock == "range") {
                $strike = "style='text-decoration: line-through;'";
            } else {
                $strike = "";
            }
            // strip stuff from lamers' trackbacks..
            $trackback['url'] = strip_tags($trackback['url']);
            printf("<table border=0 cellpadding=2 cellspacing=2 width='95%%' style='border-bottom:" . " 2px solid #999;'><tr><td width='40%%' valign='top'>" . lang('weblog_text', 'title') . ":&nbsp;<b %s>%s</b><br />", $strike, stripslashes($trackback['title']));
            printf(lang('weblog_text', 'blog_name') . ":&nbsp;%s<br />", $trackback['name']);
            printf(lang('weblog_text', 'url') . ":&nbsp;%s<br />", $trackback['url']);
            printf(lang('weblog_text', 'ip') . ":&nbsp;%s<br />", $trackback['ip']);
            printf(lang('weblog_text', 'date') . ":&nbsp;%s<br />", $trackback['date']);
            printf("<td valign='top'><span %s>%s</span></td>", $strike, nl2br(htmlspecialchars($trackback['excerpt'])));
            // only show the option to edit and delete links if the user is an advanced user.
            if ($Users[$Pivot_Vars['user']]['userlevel'] >= 2) {
                $link = sprintf("index.php?session=%s&amp;menu=entries&amp;func=edittrackbacks&amp;", $Pivot_Vars['session']);
                $editlink = sprintf("%sid=%s&amp;edit=%s", $link, $db->entry['code'], $key);
                $dellink = sprintf("%sid=%s&amp;del=%s", $link, $db->entry['code'], $key);
                $reportpopup = sprintf("openReportTrackback('%s', '%s','%s','%s');", $Pivot_Vars['session'], $db->entry['code'], $key, $dellink);
                printf("</tr><tr class='tabular_line_odd'><td><a href='%s'>%s</a> /", $editlink, lang('entries', 'edit_trackback'));
                printf(" <a href='%s'>%s</a> / ", $dellink, lang('entries', 'delete_trackback'));
                // only ping.
                // printf(" <a href='#' onclick=\"%s\">%s</a>&nbsp;&nbsp;", $reportpopup, lang('entries', 'report_trackback') );
                // ping and delete
                printf(" <a href='#' onclick=\"%s\">%s</a>&nbsp;&nbsp;", $reportpopup, lang('entries', 'report_trackback'));
            } else {
                printf("<td>&nbsp;</td>");
            }
            // only show the option to add or remove ip-blocks if the user is an administrator.
            if ($Users[$Pivot_Vars['user']]['userlevel'] >= 3) {
                if ($myblock == "none") {
                    $blocktext1 = str_replace("%s", $trackback['ip'], lang('entries', 'block_single'));
                    $blocklink1 = sprintf("%sid=%s&blocksingle=%s", $link, $db->entry['code'], $trackback['ip']);
                    $blocktext2 = str_replace("%s", make_mask($trackback['ip']), lang('entries', 'block_range'));
                    $blocklink2 = sprintf("%sid=%s&blockrange=%s", $link, $db->entry['code'], $trackback['ip']);
                    printf("<td><a href='%s'>%s</a> / ", $blocklink1, $blocktext1);
                    printf("<a href='%s'>%s</a></td>", $blocklink2, $blocktext2);
                } else {
                    if ($myblock == "single") {
                        $blocktext1 = str_replace("%s", $trackback['ip'], lang('entries', 'unblock_single'));
                        $blocklink1 = sprintf("%sid=%s&unblocksingle=%s", $link, $db->entry['code'], $trackback['ip']);
                        printf("<td><a href='%s'>%s</a></td>", $blocklink1, $blocktext1);
                    } else {
                        $blocktext1 = str_replace("%s", make_mask($trackback['ip']), lang('entries', 'unblock_range'));
                        $blocklink1 = sprintf("%sid=%s&unblockrange=%s", $link, $db->entry['code'], $trackback['ip']);
                        printf("<td><a href='%s'>%s</a></td>", $blocklink1, $blocktext1);
                    }
                }
            } else {
                printf("<td>&nbsp;</td>");
            }
            printf("</td></tr></table><br />");
        }
        // end of printing trackbacks
    }
    // Table for editing the entry / trackbacks (this will be replaced after 1.30,
    // When we put the form-builder in place.
    echo '<table  width="95%"  border="0" cellpadding="5" cellspacing="0">';
    $link = sprintf("index.php?session=%s&amp;menu=entries&amp;func=modify&amp;id=%s", $Pivot_Vars['session'], $db->entry['code']);
    printf('<!-- edit entry --><tr><td width="32" valign="top">');
    print_icon('overview', 'new_entry', "<a href=\"" . $link . "\">");
    printf('</td><td><h3><a href="%s">%s</a></h3><p class="dim">%s</p></td></tr>', $link, lang('entries', 'edit_entry'), lang('entries', 'edit_entry_desc'));
    $link = sprintf("index.php?session=%s&amp;menu=entries&amp;func=editcomments&amp;id=%s", $Pivot_Vars['session'], $db->entry['code']);
    printf('<!-- edit comments --><tr><td width="32" valign="top">');
    print_icon('entry', 'edit_comments', "<a href=\"" . $link . "\">");
    printf('</td><td><h3><a href="%s">%s</a></h3><p class="dim">%s</p></td></tr>', $link, lang('entries', 'edit_comments'), lang('entries', 'edit_comments_desc'));
    $link = sprintf("index.php?session=%s&amp;menu=entries&amp;doaction=1&amp;action=delete&amp;check[%s]=1", $Pivot_Vars['session'], $db->entry['code']);
    printf('<!-- delete entry --><tr><td width="32" valign="top">');
    print_icon('entry', 'del_entry', "<a href=\"" . $link . "\">");
    printf('</td><td><h3><a href="%s">%s</a></h3><p class="dim">%s</p></td></tr>', $link, lang('entries', 'delete_entry'), lang('entries', 'delete_entry_desc'));
    echo "</table>";
    // End of table for editing the entry / trackbacks
    PageFooter();
    echo "<br /><br /><br /><br />";
}
Example #2
0
 function update_index($update = TRUE)
 {
     $this->check_current_index();
     if (strlen($this->entry['title']) > 1) {
         $title = $this->entry['title'];
         $title = strip_tags($title);
     } else {
         $title = substr($this->entry['introduction'], 0, 300);
         $title = strip_tags($title);
         $title = str_replace("\n", "", $title);
         $title = str_replace("\r", "", $title);
         $title = substr($title, 0, 60);
     }
     $size = strlen($this->entry['introduction']) + strlen($this->entry['body']);
     unset($commnames);
     if (isset($this->entry['comments'])) {
         foreach ($this->entry['comments'] as $comment) {
             if (block_type($comment['ip']) == "none") {
                 if ($comment[moderate] != 1) {
                     $commnames[] = stripslashes($comment['name']);
                 } else {
                     // if moderation is on, we add the name as '-'..
                     $commnames[] = '-';
                 }
             }
         }
         if (isset($commnames) && count($commnames) > 0) {
             $this->entry['commnames'] = implode(", ", array_unique($commnames));
             $commcount = count($commnames);
         } else {
             $this->entry['commnames'] = "";
             $commcount = 0;
         }
     } else {
         unset($this->entry['comments']);
         $commcount = 0;
         $this->entry['commnames'] = "";
     }
     $this->entry['commcount'] = $commcount;
     if ($commcount == 0) {
         $commcount_str = lang('comments_text', '0');
         //$this->entry['commcount_str']= $commcount_str;
         $this->entry['commcount_str'] = str_replace("%num%", lang('numbers', 0), $commcount_str);
         $this->entry['commcount_str'] = str_replace("%n%", '0', $commcount_str);
     } else {
         if ($commcount == 1) {
             $commcount_str = lang('comments_text', '1');
             $this->entry['commcount_str'] = str_replace("%num%", lang('numbers', 1), $commcount_str);
             $this->entry['commcount_str'] = str_replace("%n%", '1', $commcount_str);
         } else {
             if (lang('numbers', $commcount)) {
                 $num = lang('numbers', $commcount);
             } else {
                 $num = $commcount;
             }
             $commcount_str = lang('comments_text', '2');
             $this->entry['commcount_str'] = str_replace("%num%", $num, $commcount_str);
             $this->entry['commcount_str'] = str_replace("%n%", $commcount, $commcount_str);
         }
     }
     unset($tracknames);
     if (isset($this->entry['trackbacks'])) {
         foreach ($this->entry['trackbacks'] as $trackback) {
             $tracknames[] = stripslashes($trackback['name']);
         }
         if (isset($tracknames) && count($tracknames) > 0) {
             $this->entry['tracknames'] = implode(", ", array_unique($tracknames));
             $trackcount = count($tracknames);
         } else {
             $this->entry['tracknames'] = "";
             $trackcount = 0;
         }
     } else {
         unset($this->entry['trackbacks']);
         $trackcount = 0;
         $this->entry['tracknames'] = "";
     }
     $this->entry['trackcount'] = $trackcount;
     if ($trackcount == 0) {
         $trackcount_str = lang('trackbacks_text', '0');
         //$this->entry['trackcount_str']= $trackcount_str;
         $this->entry['trackcount_str'] = str_replace("%num%", lang('numbers', 0), $trackcount_str);
         $this->entry['trackcount_str'] = str_replace("%n%", '0', $trackcount_str);
     } else {
         if ($trackcount == 1) {
             $trackcount_str = lang('trackbacks_text', '1');
             $this->entry['trackcount_str'] = str_replace("%num%", lang('numbers', 1), $trackcount_str);
             $this->entry['trackcount_str'] = str_replace("%n%", '1', $trackcount_str);
         } else {
             if (lang('numbers', $trackcount)) {
                 $num = lang('numbers', $trackcount);
             } else {
                 $num = $trackcount;
             }
             $trackcount_str = lang('trackbacks_text', '2');
             $this->entry['trackcount_str'] = str_replace("%num%", $num, $trackcount_str);
             $this->entry['trackcount_str'] = str_replace("%n%", $trackcount, $trackcount_str);
         }
     }
     //if ($this->entry['category']=="") {
     //	$this->entry['category'][]="default";
     //}
     if (!isset($this->entry['status'])) {
         $this->entry['status'] = 'publish';
     }
     $index_line = array('code' => $this->entry['code'], 'date' => addslashes($this->entry['date']), 'user' => $this->entry['user'], 'title' => addslashes($title), 'size' => $size, 'commcount' => $this->entry['commcount'], 'cnames' => $this->entry['commnames'], 'trackcount' => $this->entry['trackcount'], 'tnames' => $this->entry['tracknames'], 'category' => $this->entry['category'], 'status' => $this->entry['status']);
     if ($this->entry['code'] != "") {
         $this->entry_index[$this->entry['code']] = $index_line;
         $this->date_index[$this->entry['code']] = $this->entry['date'];
         $this->cat_index[$this->entry['code']] = implode('|', $this->entry['category']);
     }
     if ($update) {
         $this->updated = TRUE;
     }
 }