<commit_before><?php

/**
 * StatusNet, the distributed open-source microblogging tool
 *
 * Group main page
 *
 * PHP version 5
 *
 * LICENCE: This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Affero General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU Affero General Public License for more details.
 *
 * You should have received a copy of the GNU Affero General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 *
 * @category  Group
 * @package   StatusNet
 * @author    <NAME> <<EMAIL>>
 * @author    <NAME> <<EMAIL>>
 * @copyright 2008-2011 StatusNet, Inc.
 * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
 * @link      http://status.net/
 */
if (!defined('STATUSNET') && !defined('LACONICA')) {
    exit(1);
}

require_once INSTALLDIR . '/lib/noticelist.php';
require_once INSTALLDIR . '/lib/feedlist.php';

/**
 * Group main page
 *
 * @category Group
 * @package  StatusNet
 * @author   <NAME> <<EMAIL>>
 * @license  http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
 * @link     http://status.net/
 */
class ShowgroupAction extends GroupAction {

    /** page we're viewing. */
    var $page = null;
    var $userProfile = null;
    var $notice = null;

    /**
     * Is this page read-only?
     *
     * @return boolean true
     */
    function isReadOnly($args) {
        return true;
    }

    /**
     * Title of the page
     *
     * @return string page title, with page number
     */
    function title() {
        $base = $this->group->getFancyName();

        if ($this->page == 1) {
            // TRANS: Page title for first group page. %s is a group name.
            return sprintf(_('%s group'), $base);
        } else {
            // TRANS: Page title for any but first group page.
            // TRANS: %1$s is a group name, $2$s is a page number.
            return sprintf(_('%1$s group, page %2$d'), $base, $this->page);
        }
    }

    /**
     * Prepare the action
     *
     * Reads and validates arguments and instantiates the attributes.
     *
     * @param array $args $_REQUEST args
     *
     * @return boolean success flag
     */
    function prepare($args) {
        parent::prepare($args);

        $this->page = ($this->arg('page')) ? ($this->arg('page') + 0) : 1;

        $this->userProfile = Profile::current();

        $user = common_current_user();

        if (!empty($user) && $user->streamModeOnly()) {
            $stream = new GroupNoticeStream($this->group, $this->userProfile);
        } else {
            $stream = new ThreadingGroupNoticeStream($this->group, $this->userProfile);
        }

        $this->notice = $stream->getNotices(($this->page - 1) * NOTICES_PER_PAGE, NOTICES_PER_PAGE + 1);

        common_set_returnto($this->selfUrl());

        return true;
    }

    /**
     * Handle the request
     *
     * Shows a profile for the group, some controls, and a list of
     * group notices.
     *
     * @return void
     */
    function handle($args) {
        $this->showPage();
    }

    /**
     * Show the page content
     *
     * Shows a group profile and a list of group notices
     */
    function showContent() {
        $this->showGroupNotices();
    }

    /**
     * Show the group notices
     *
     * @return void
     */
    function showGroupNotices() {
        $user = common_current_user();

        if ($this->group->force_scope &&
                (empty($this->userProfile) || !$this->userProfile->isMember($this->group))) {

            $this->elementStart('p');
            $this->raw('Este grupo es privado, por lo que no es posible ver su contenido.<br/><br/>'
                    . 'Si lo desea, puede comunicarse con el administrador del grupo, o solicitar unirse al grupo. ');
            $this->elementEnd('p');
        } else {

            if (empty($this->notice->_items)) {

                $this->elementStart('p');
                $this->raw('Este grupo aún no tiene mensajes, ¡sé el primero en comentar! ');
                $this->elementEnd('p');
            } else {
                
                if (!empty($user) && $user->streamModeOnly()) {
                    $nl = new NoticeList($this->notice, $this);
                } else {
                    $nl = new ThreadedNoticeList($this->notice, $this, $this->userProfile);
                }

                $cnt = $nl->show();


                $this->pagination($this->page > 1, $cnt > NOTICES_PER_PAGE, $this->page, 'showgroup', array('nickname' => $this->group->nickname));
            }
        }
    }

    /**
     * Get a list of the feeds for this page
     *
     * @return void
     */
    function getFeeds() {
        $url = common_local_url('grouprss', array('nickname' => $this->group->nickname));

        return array(new Feed(Feed::JSON, common_local_url('ApiTimelineGroup', array('format' => 'as',
                        'id' => $this->group->id)),
                    // TRANS: Tooltip for feed link. %s is a group nickname.
                    sprintf(_('Notice feed for %s group (Activity Streams JSON)'), $this->group->nickname)),
            new Feed(Feed::RSS1, common_local_url('grouprss', array('nickname' => $this->group->nickname)),
                    // TRANS: Tooltip for feed link. %s is a group nickname.<commit_msg>Fixed mensaje de grupo sin mensajes.<commit_after><?php

/**
 * StatusNet, the distributed open-source microblogging tool
 *
 * Group main page
 *
 * PHP version 5
 *
 * LICENCE: This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Affero General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU Affero General Public License for more details.
 *
 * You should have received a copy of the GNU Affero General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 *
 * @category  Group
 * @package   StatusNet
 * @author    <NAME> <<EMAIL>>
 * @author    <NAME> <<EMAIL>>
 * @copyright 2008-2011 StatusNet, Inc.
 * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
 * @link      http://status.net/
 */
if (!defined('STATUSNET') && !defined('LACONICA')) {
    exit(1);
}

require_once INSTALLDIR . '/lib/noticelist.php';
require_once INSTALLDIR . '/lib/feedlist.php';

/**
 * Group main page
 *
 * @category Group
 * @package  StatusNet
 * @author   <NAME> <<EMAIL>>
 * @license  http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
 * @link     http://status.net/
 */
class ShowgroupAction extends GroupAction {

    /** page we're viewing. */
    var $page = null;
    var $userProfile = null;
    var $notice = null;

    /**
     * Is this page read-only?
     *
     * @return boolean true
     */
    function isReadOnly($args) {
        return true;
    }

    /**
     * Title of the page
     *
     * @return string page title, with page number
     */
    function title() {
        $base = $this->group->getFancyName();

        if ($this->page == 1) {
            // TRANS: Page title for first group page. %s is a group name.
            return sprintf(_('%s group'), $base);
        } else {
            // TRANS: Page title for any but first group page.
            // TRANS: %1$s is a group name, $2$s is a page number.
            return sprintf(_('%1$s group, page %2$d'), $base, $this->page);
        }
    }

    /**
     * Prepare the action
     *
     * Reads and validates arguments and instantiates the attributes.
     *
     * @param array $args $_REQUEST args
     *
     * @return boolean success flag
     */
    function prepare($args) {
        parent::prepare($args);

        $this->page = ($this->arg('page')) ? ($this->arg('page') + 0) : 1;

        $this->userProfile = Profile::current();

        $user = common_current_user();

        if (!empty($user) && $user->streamModeOnly()) {
            $stream = new GroupNoticeStream($this->group, $this->userProfile);
        } else {
            $stream = new ThreadingGroupNoticeStream($this->group, $this->userProfile);
        }

        $this->notice = $stream->getNotices(($this->page - 1) * NOTICES_PER_PAGE, NOTICES_PER_PAGE + 1);

        common_set_returnto($this->selfUrl());

        return true;
    }

    /**
     * Handle the request
     *
     * Shows a profile for the group, some controls, and a list of
     * group notices.
     *
     * @return void
     */
    function handle($args) {
        $this->showPage();
    }

    /**
     * Show the page content
     *
     * Shows a group profile and a list of group notices
     */
    function showContent() {
        $this->showGroupNotices();
    }

    /**
     * Show the group notices
     *
     * @return void
     */
    function showGroupNotices() {
        $user = common_current_user();

        if ($this->group->force_scope &&
                (empty($this->userProfile) || !$this->userProfile->isMember($this->group))) {

            $this->elementStart('p');
            $this->raw('Este grupo es privado, por lo que no es posible ver su contenido.<br/><br/>'
                    . 'Si lo desea, puede comunicarse con el administrador del grupo, o solicitar unirse al grupo. ');
            $this->elementEnd('p');
        } else {

            if (empty($this->notice->_items) ) {

                $this->elementStart('p');
                $this->raw('¡Una lástima! Este grupo aún no tiene mensajes. ');
                $this->elementEnd('p');
            } else {
                
                if (!empty($user) && $user->streamModeOnly()) {
                    $nl = new NoticeList($this->notice, $this);
                } else {
                    $nl = new ThreadedNoticeList($this->notice, $this, $this->userProfile);
                }

                $cnt = $nl->show();


                $this->pagination($this->page > 1, $cnt > NOTICES_PER_PAGE, $this->page, 'showgroup', array('nickname' => $this->group->nickname));
            }
        }
    }

    /**
     * Get a list of the feeds for this page
     *
     * @return void
     */
    function getFeeds() {
        $url = common_local_url('grouprss', array('nickname' => $this->group->nickname));

        return array(new Feed(Feed::JSON, common_local_url('ApiTimelineGroup', array('format' => 'as',
                        'id' => $this->group->id)),
                    // TRANS: Tooltip for feed link. %s is a group nickname.
                    sprintf(_('Notice feed for %s group (Activity Streams JSON)'), $this->group->nickname)),
            new Feed(Feed::RSS1, common_local_url('grouprss', array('nickname' => $this->group->nickname)),
                    // TRANS: Tooltip for feed link. %s is a group nickname.
{'fraction_non_alphanumeric': 0.13779596100278552, 'fraction_numerical': 0.005222841225626741, 'mean_word_length': 2.1373566357181866, 'pattern_counts': {'":': 0, '<': 29, '<?xml version=': 0, '>': 143, 'https://': 0, 'lorem ipsum': 0, 'www.': 6, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2445990', 'n_tokens_mistral': 3467, 'n_tokens_neox': 3318, 'n_words': 993}