本文整理汇总了PHP中JDatabaseDriver::getAffectedRows方法的典型用法代码示例。如果您正苦于以下问题:PHP JDatabaseDriver::getAffectedRows方法的具体用法?PHP JDatabaseDriver::getAffectedRows怎么用?PHP JDatabaseDriver::getAffectedRows使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类JDatabaseDriver
的用法示例。
在下文中一共展示了JDatabaseDriver::getAffectedRows方法的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: publish
/**
* Publish or unpublish records
*
* @param integer|array $cid The primary key value(s) of the item(s) to publish/unpublish
* @param integer $publish 1 to publish an item, 0 to unpublish
* @param integer $user_id The user ID of the user (un)publishing the item.
*
* @return boolean True on success, false on failure (e.g. record is locked)
*/
public function publish($cid = null, $publish = 1, $user_id = 0)
{
$enabledName = $this->getColumnAlias('enabled');
$locked_byName = $this->getColumnAlias('locked_by');
// Mhm... you called the publish method on a table without publish support...
if (!in_array($enabledName, $this->getKnownFields())) {
return false;
}
//We have to cast the id as array, or the helper function will return an empty set
if ($cid) {
$cid = (array) $cid;
}
FOFUtilsArray::toInteger($cid);
$user_id = (int) $user_id;
$publish = (int) $publish;
$k = $this->_tbl_key;
if (count($cid) < 1) {
if ($this->{$k}) {
$cid = array($this->{$k});
} else {
$this->setError("No items selected.");
return false;
}
}
if (!$this->onBeforePublish($cid, $publish)) {
return false;
}
$query = $this->_db->getQuery(true)->update($this->_db->qn($this->_tbl))->set($this->_db->qn($enabledName) . ' = ' . (int) $publish);
$checkin = in_array($locked_byName, $this->getKnownFields());
if ($checkin) {
$query->where(' (' . $this->_db->qn($locked_byName) . ' = 0 OR ' . $this->_db->qn($locked_byName) . ' = ' . (int) $user_id . ')', 'AND');
}
// TODO Rewrite this statment using IN. Check if it work in SQLServer and PostgreSQL
$cids = $this->_db->qn($k) . ' = ' . implode(' OR ' . $this->_db->qn($k) . ' = ', $cid);
$query->where('(' . $cids . ')');
$this->_db->setQuery((string) $query);
if (version_compare(JVERSION, '3.0', 'ge')) {
try {
$this->_db->execute();
} catch (JDatabaseException $e) {
$this->setError($e->getMessage());
}
} else {
if (!$this->_db->execute()) {
$this->setError($this->_db->getErrorMsg());
return false;
}
}
if (count($cid) == 1 && $checkin) {
if ($this->_db->getAffectedRows() == 1) {
$this->checkin($cid[0]);
if ($this->{$k} == $cid[0]) {
$this->{$enabledName} = $publish;
}
}
}
$this->setError('');
return true;
}
示例2: publish
/**
* 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.
*
* @param mixed $pks An optional array of primary key values to update.
* If not set the instance property value is used.
* @param integer $state The publishing state. eg. [0 = unpublished, 1 = published]
* @param integer $userId The user id of the user performing the operation.
*
* @return boolean True on success; false if $pks is empty.
*
* @link http://docs.joomla.org/JTable/publish
* @since 11.1
*/
public function publish($pks = null, $state = 1, $userId = 0)
{
$k = $this->_tbl_keys;
if (!is_null($pks)) {
foreach ($pks as $key => $pk) {
if (!is_array($pk)) {
$pks[$key] = array($this->_tbl_key => $pk);
}
}
}
$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)) {
$pk = array();
foreach ($this->_tbl_keys as $key) {
if ($this->{$key}) {
$pk[$this->{$key}] = $this->{$key};
} else {
return false;
}
}
$pks = array($pk);
}
foreach ($pks as $pk) {
// Update the publishing state for rows with the given primary keys.
$query = $this->_db->getQuery(true);
$query->update($this->_tbl);
$query->set('published = ' . (int) $state);
// Determine if there is checkin support for the table.
if (property_exists($this, 'checked_out') || property_exists($this, 'checked_out_time')) {
$query->where('(checked_out = 0 OR checked_out = ' . (int) $userId . ')');
$checkin = true;
} else {
$checkin = false;
}
// Build the WHERE clause for the primary keys.
$this->appendPrimaryKeys($query, $pk);
$this->_db->setQuery($query);
$this->_db->execute();
// If checkin is supported and all rows were adjusted, check them in.
if ($checkin && count($pks) == $this->_db->getAffectedRows()) {
$this->checkin($pk);
}
$ours = true;
foreach ($this->_tbl_keys as $key) {
if ($this->{$key} != $pk[$key]) {
$ours = false;
}
}
if ($ours) {
$this->published = $state;
}
}
$this->setError('');
return true;
}
示例3: publish
function publish($cid = null, $publish = 1, $user_id = 0)
{
JArrayHelper::toInteger($cid);
$user_id = (int) $user_id;
$publish = (int) $publish;
$k = $this->_tbl_key;
if (count($cid) < 1) {
if ($this->{$k}) {
$cid = array($this->{$k});
} else {
$this->setError("No items selected.");
return false;
}
}
if (!$this->onBeforePublish($cid, $publish)) {
return false;
}
$enabledName = $this->getColumnAlias('enabled');
$locked_byName = $this->getColumnAlias('locked_by');
$query = $this->_db->getQuery(true)->update($this->_db->qn($this->_tbl))->set($this->_db->qn($enabledName) . ' = ' . (int) $publish);
$checkin = in_array($locked_byName, array_keys($this->getProperties()));
if ($checkin) {
$query->where(' (' . $this->_db->qn($locked_byName) . ' = 0 OR ' . $this->_db->qn($locked_byName) . ' = ' . (int) $user_id . ')', 'AND');
}
$cids = $this->_db->qn($k) . ' = ' . implode(' OR ' . $this->_db->qn($k) . ' = ', $cid);
$query->where('(' . $cids . ')');
$this->_db->setQuery((string) $query);
if (version_compare(JVERSION, '3.0', 'ge')) {
try {
$this->_db->execute();
} catch (JDatabaseException $e) {
$this->setError($e->getMessage());
}
} else {
if (!$this->_db->execute()) {
$this->setError($this->_db->getErrorMsg());
return false;
}
}
if (count($cid) == 1 && $checkin) {
if ($this->_db->getAffectedRows() == 1) {
$this->checkin($cid[0]);
if ($this->{$k} == $cid[0]) {
$this->published = $publish;
}
}
}
$this->setError('');
return true;
}
示例4: publish
/**
* 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.
*
* @param mixed $pks An optional array of primary key values to update.
* If not set the instance property value is used.
* @param integer $state The publishing state. eg. [0 = unpublished, 1 = published]
* @param integer $userId The user id of the user performing the operation.
*
* @return boolean True on success; false if $pks is empty.
*
* @link http://docs.joomla.org/JTable/publish
* @since 11.1
*/
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});
} else {
return false;
}
}
// Update the publishing state for rows with the given primary keys.
$query = $this->_db->getQuery(true);
$query->update($this->_tbl);
$query->set('published = ' . (int) $state);
// Determine if there is checkin support for the table.
if (property_exists($this, 'checked_out') || property_exists($this, 'checked_out_time')) {
$query->where('(checked_out = 0 OR checked_out = ' . (int) $userId . ')');
$checkin = true;
} else {
$checkin = false;
}
// Build the WHERE clause for the primary keys.
$query->where($k . ' = ' . implode(' OR ' . $k . ' = ', $pks));
$this->_db->setQuery($query);
$this->_db->execute();
// 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->setError('');
return true;
}
示例5: publish
/**
* 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.
*
* @param mixed $pks An optional array of primary key values to update.
* If not set the instance property value is used.
* @param integer $state The publishing state. eg. [0 = unpublished, 1 = published]
* @param integer $userId The user id of the user performing the operation.
*
* @return boolean True on success; false if $pks is empty.
*
* @link https://docs.joomla.org/JTable/publish
* @since 11.1
*/
public function publish($pks = null, $state = 1, $userId = 0)
{
// Sanitize input
$userId = (int) $userId;
$state = (int) $state;
if (!is_null($pks)) {
if (!is_array($pks)) {
$pks = array($pks);
}
foreach ($pks as $key => $pk) {
if (!is_array($pk)) {
$pks[$key] = array($this->_tbl_key => $pk);
}
}
}
// If there are no primary keys set check to see if the instance key is set.
if (empty($pks)) {
$pk = array();
foreach ($this->_tbl_keys as $key) {
if ($this->{$key}) {
$pk[$key] = $this->{$key};
} else {
$this->setError(JText::_('JLIB_DATABASE_ERROR_NO_ROWS_SELECTED'));
return false;
}
}
$pks = array($pk);
}
$publishedField = $this->getColumnAlias('published');
$checkedOutField = $this->getColumnAlias('checked_out');
foreach ($pks as $pk) {
// Update the publishing state for rows with the given primary keys.
$query = $this->_db->getQuery(true)->update($this->_tbl)->set($this->_db->quoteName($publishedField) . ' = ' . (int) $state);
// Determine if there is checkin support for the table.
if (property_exists($this, 'checked_out') || property_exists($this, 'checked_out_time')) {
$query->where('(' . $this->_db->quoteName($checkedOutField) . ' = 0 OR ' . $this->_db->quoteName($checkedOutField) . ' = ' . (int) $userId . ')');
$checkin = true;
} else {
$checkin = false;
}
// Build the WHERE clause for the primary keys.
$this->appendPrimaryKeys($query, $pk);
$this->_db->setQuery($query);
try {
$this->_db->execute();
} catch (RuntimeException $e) {
$this->setError($e->getMessage());
return false;
}
// If checkin is supported and all rows were adjusted, check them in.
if ($checkin && count($pks) == $this->_db->getAffectedRows()) {
$this->checkin($pk);
}
// If the JTable instance value is in the list of primary keys that were set, set the instance.
$ours = true;
foreach ($this->_tbl_keys as $key) {
if ($this->{$key} != $pk[$key]) {
$ours = false;
}
}
if ($ours) {
$this->{$publishedField} = $state;
}
}
$this->setError('');
return true;
}
示例6: getAffectedRows
/**
* @return int The number of affected rows in the previous operation
*/
public function getAffectedRows()
{
return $this->_db->getAffectedRows();
}
示例7: publish
/**
* 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.
*
* @param mixed $pks An optional array of primary key values to update. If not set the instance property value is used.
* @param integer $state The publishing state. eg. [0 = unpublished, 1 = published]
* @param integer $userId The user ID of the user performing the operation.
*
* @return boolean True on success; false if $pks is empty.
*
* @since 11.1
*/
public function publish($pks = null, $state = 1, $userId = 0)
{
// Sanitize input
$userId = (int) $userId;
$state = (int) $state;
// Pre-processing by observers
$event = AbstractEvent::create('onTableBeforePublish', ['subject' => $this, 'pks' => $pks, 'state' => $state, 'userId' => $userId]);
$this->getDispatcher()->dispatch('onTableBeforePublish', $event);
if (!is_null($pks)) {
if (!is_array($pks)) {
$pks = array($pks);
}
foreach ($pks as $key => $pk) {
if (!is_array($pk)) {
$pks[$key] = array($this->_tbl_key => $pk);
}
}
}
// If there are no primary keys set check to see if the instance key is set.
if (empty($pks)) {
$pk = array();
foreach ($this->_tbl_keys as $key) {
if ($this->{$key}) {
$pk[$key] = $this->{$key};
} else {
$this->setError(JText::_('JLIB_DATABASE_ERROR_NO_ROWS_SELECTED'));
return false;
}
}
$pks = array($pk);
}
$publishedField = $this->getColumnAlias('published');
$checkedOutField = $this->getColumnAlias('checked_out');
foreach ($pks as $pk) {
// Update the publishing state for rows with the given primary keys.
$query = $this->_db->getQuery(true)->update($this->_tbl)->set($this->_db->quoteName($publishedField) . ' = ' . (int) $state);
// If publishing, set published date/time if not previously set
if ($state && property_exists($this, 'publish_up') && (int) $this->publish_up == 0) {
$nowDate = $this->_db->quote(JFactory::getDate()->toSql());
$query->set($this->_db->quoteName($this->getColumnAlias('publish_up')) . ' = ' . $nowDate);
}
// Determine if there is checkin support for the table.
if (property_exists($this, 'checked_out') || property_exists($this, 'checked_out_time')) {
$query->where('(' . $this->_db->quoteName($checkedOutField) . ' = 0 OR ' . $this->_db->quoteName($checkedOutField) . ' = ' . (int) $userId . ')');
$checkin = true;
} else {
$checkin = false;
}
// Build the WHERE clause for the primary keys.
$this->appendPrimaryKeys($query, $pk);
$this->_db->setQuery($query);
try {
$this->_db->execute();
} catch (RuntimeException $e) {
$this->setError($e->getMessage());
return false;
}
// If checkin is supported and all rows were adjusted, check them in.
if ($checkin && count($pks) == $this->_db->getAffectedRows()) {
$this->checkin($pk);
}
// If the JTable instance value is in the list of primary keys that were set, set the instance.
$ours = true;
foreach ($this->_tbl_keys as $key) {
if ($this->{$key} != $pk[$key]) {
$ours = false;
}
}
if ($ours) {
$this->{$publishedField} = $state;
}
}
$this->setError('');
// Pre-processing by observers
$event = AbstractEvent::create('onTableAfterPublish', ['subject' => $this, 'pks' => $pks, 'state' => $state, 'userId' => $userId]);
$this->getDispatcher()->dispatch('onTableAfterPublish', $event);
return true;
}
示例8: getAffectedRows
/**
* @return int The number of affected rows in the previous operation
*/
function getAffectedRows()
{
if (is_callable(array($this->_db, 'getAffectedRows'))) {
$affected = $this->_db->getAffectedRows();
} elseif (get_resource_type($this->_db->_resource) == 'mysql link') {
$affected = mysql_affected_rows($this->_db->_resource);
} else {
$affected = mysqli_affected_rows($this->_db->_resource);
}
return $affected;
}