Actions

API16

JTable/publish

From Joomla! Documentation

< API16:JTable
Revision as of 17:41, 22 March 2010 by Doxiki (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Replacement filing cabinet.png
This Namespace has been archived - Please Do Not Edit or Create Pages in this namespace. Pages contain information for a Joomla! version which is no longer supported. It exists only as a historical reference, will not be improved and its content may be incomplete.

Contents

Description

Method to set the publishing state for a row or list of rows in the database table. The method respects checked out rows by other users and will attempt to checkin rows that it can after adjustments are made.

[Edit Descripton]

Description:JTable/publish

Syntax

publish($pks=null, $state=1, $userId=0)
Parameter Name Default Value Description
$pks null An optional array of primary key values to update. If not set the instance property value is used.
$state 1 The publishing state. eg. [0 = unpublished, 1 = published]
$userId 0 The user id of the user performing the operation.

Returns

boolean True on success.

Defined in

libraries/joomla/database/table.php

Importing

jimport( 'joomla.database.table' );

Source Body

public function publish($pks = null, $state = 1, $userId = 0)
{
        // Initialise variables.
        $k = $this->_tbl_key;
 
        // Sanitize input.
        JArrayHelper::toInteger($pks);
        $userId = (int) $userId;
        $state  = (int) $state;
 
        // If there are no primary keys set check to see if the instance key is set.
        if (empty($pks)) {
                if ($this->$k) {
                        $pks = array($this->$k);
                }
                // Nothing to set publishing state on, return false.
                else {
                        $this->setError(JText::_('JERROR_NO_ROWS_SELECTED'));
                        return false;
                }
        }
 
        // Build the WHERE clause for the primary keys.
        $where = $k.'='.implode(' OR '.$k.'=', $pks);
 
        // Determine if there is checkin support for the table.
        if (!property_exists($this, 'checked_out') || !property_exists($this, 'checked_out_time')) {
                $checkin = '';
        } else {
                $checkin = ' AND (checked_out = 0 OR checked_out = '.(int) $userId.')';
        }
 
        // Update the publishing state for rows with the given primary keys.
        $this->_db->setQuery(
                'UPDATE `'.$this->_tbl.'`' .
                ' SET `published` = '.(int) $state .
                ' WHERE ('.$where.')' .
                $checkin
        );
        $this->_db->query();
 
        // Check for a database error.
        if ($this->_db->getErrorNum()) {
                $this->setError($this->_db->getErrorMsg());
                return false;
        }
 
        // If checkin is supported and all rows were adjusted, check them in.
        if ($checkin && (count($pks) == $this->_db->getAffectedRows())) {
                // Checkin the rows.
                foreach($pks as $pk) {
                        $this->checkin($pk);
                }
        }
 
        // If the JTable instance value is in the list of primary keys that were set, set the instance.
        if (in_array($this->$k, $pks)) {
                $this->published = $state;
        }
 
        $this->_errors = array();
        return true;
}

[Edit See Also] SeeAlso:JTable/publish

Examples

<CodeExamplesForm />