redirect_fields = array('status', 'sortby', 'order', 'page', 'nb');
        $this->field_entries   = 'blogs';
        $this->title_cb        = __('Blogs');
        $this->loadDefaults();
        $core->callBehavior('adminBlogsActionsPage', $core, $this);
    }
    protected function loadDefaults()
    {
        // We could have added a behavior here, but we want default action
        // to be setup first
        dcDefaultBlogActions::adminBlogsActionsPage($this->core, $this);
    }
    public function beginPage($breadcrumb = '', $head = '')
    {
        if ($this->in_plugin) {
            echo '
' . __('Blogs') . '' .
            dcPage::jsLoad('js/_blogs_actions.js') .
                $head .
                '' .
                $breadcrumb;
        } else {
            dcPage::open(
                __('Blogs'),
                dcPage::jsLoad('js/_blogs_actions.js') .
                $head,
                $breadcrumb
            );
        }
        echo '' . __('Back to blogs list') . '
';
    }
    public function endPage()
    {
        dcPage::close();
    }
    public function error(Exception $e)
    {
        $this->core->error->add($e->getMessage());
        $this->beginPage(dcPage::breadcrumb(
            array(
                html::escapeHTML($this->core->blog->name) => '',
                __('Blogs')                               => $this->core->adminurl->get('admin.blogs'),
                __('Blogs actions')                       => ''
            ))
        );
        $this->endPage();
    }
    public function getCheckboxes()
    {
        $ret = '';
        foreach ($this->entries as $id => $res) {
            $ret .=
            '' .
            '| ' . form::checkbox(array($this->field_entries . '[]'), $id,
                array(
                    'checked' => true
                )) .
                '' .
                ' | ' . $res['blog'] . '' .
                ' | ' . $res['name'] . '' .
                ' | 
';
        }
        return
        '' .
        '| ' . __('Blog id') . ' | ' . __('Blog name') . '' .
            ' | 
' . $ret . '
';
    }
    protected function fetchEntries($from)
    {
        $params = array();
        if (!empty($from['blogs'])) {
            $params['blog_id'] = $from['blogs'];
        }
        $bl = $this->core->getBlogs($params);
        while ($bl->fetch()) {
            $this->entries[$bl->blog_id] = array(
                'blog' => $bl->blog_id,
                'name' => $bl->blog_name
            );
        }
        $this->rs = $bl;
    }
}
class dcDefaultBlogActions
{
    public static function adminBlogsActionsPage($core, dcBlogsActionsPage $ap)
    {
        if (!$core->auth->isSuperAdmin()) {
            return;
        }
        $ap->addAction(
            array(__('Status') => array(
                __('Set online')     => 'online',
                __('Set offline')    => 'offline',
                __('Set as removed') => 'remove'
            )),
            array('dcDefaultBlogActions', 'doChangeBlogStatus')
        );
        $ap->addAction(
            array(__('Delete') => array(
                __('Delete') => 'delete')),
            array('dcDefaultBlogActions', 'doDeleteBlog')
        );
    }
    public static function doChangeBlogStatus($core, dcBlogsActionsPage $ap, $post)
    {
        if (!$core->auth->isSuperAdmin()) {
            return;
        }
        $action = $ap->getAction();
        $ids    = $ap->getIDs();
        if (empty($ids)) {
            throw new Exception(__('No blog selected'));
        }
        switch ($action) {
            case 'online':$status = 1;
                break;
            case 'offline':$status = 0;
                break;
            case 'remove':$status = -1;
                break;
            default:$status = 1;
                break;
        }
        $cur              = $core->con->openCursor($core->prefix . 'blog');
        $cur->blog_status = $status;
        //$cur->blog_upddt = date('Y-m-d H:i:s');
        $cur->update('WHERE blog_id ' . $core->con->in($ids));
        dcPage::addSuccessNotice(__('Selected blogs have been successfully updated.'));
        $ap->redirect(true);
    }
    public static function doDeleteBlog($core, dcBlogsActionsPage $ap, $post)
    {
        if (!$core->auth->isSuperAdmin()) {
            return;
        }
        $ap_ids = $ap->getIDs();
        if (empty($ap_ids)) {
            throw new Exception(__('No blog selected'));
        }
        if (!$core->auth->checkPassword($_POST['pwd'])) {
            throw new Exception(__('Password verification failed'));
        }
        $ids = array();
        foreach ($ap_ids as $id) {
            if ($id == $core->blog->id) {
                dcPage::addWarningNotice(__('The current blog cannot be deleted.'));
            } else {
                $ids[] = $id;
            }
        }
        if (!empty($ids)) {
            # --BEHAVIOR-- adminBeforeBlogsDelete
            $core->callBehavior('adminBeforeBlogsDelete', $ids);
            foreach ($ids as $id) {
                $core->delBlog($id);
            }
            dcPage::addSuccessNotice(sprintf(
                __(
                    '%d blog has been successfully deleted',
                    '%d blogs have been successfully deleted',
                    count($ids)
                ),
                count($ids))
            );
        }
        $ap->redirect(false);
    }
}