public function canView() { return LogEventsList::userCan($this->row, Revision::DELETED_RESTRICTED, $this->list->getUser()); }
/** * @param $title, the log page these events apply to * @param array $items list of log ID numbers * @param int $bitfield new log_deleted value * @param string $comment Comment for log records */ function setEventVisibility($title, $items, $bitfield, $comment) { global $wgOut; $userAllowedAll = $success = true; $count = 0; $log_Ids = array(); // Run through and pull all our data in one query foreach ($items as $logid) { $where[] = intval($logid); } list($log, $logtype) = explode('/', $title->getDBKey(), 2); $result = $this->dbw->select('logging', '*', array('log_type' => $logtype, 'log_id' => $where), __METHOD__); while ($row = $this->dbw->fetchObject($result)) { $logRows[$row->log_id] = $row; } // To work! foreach ($items as $logid) { if (!isset($logRows[$logid])) { $success = false; continue; // Must exist } else { if (!LogEventsList::userCan($logRows[$logid], LogPage::DELETED_RESTRICTED) || $logRows[$logid]->log_type == 'suppress') { // Don't hide from oversight log!!! $userAllowedAll = false; continue; } } // Which logs did we change anything about? if ($logRows[$logid]->log_deleted != $bitfield) { $log_Ids[] = $logid; $count++; $this->updateLogs($logRows[$logid], $bitfield); $this->updateRecentChangesLog($logRows[$logid], $bitfield, true); } } // Don't log or touch if nothing changed if ($count > 0) { $this->updateLog($title, $count, $bitfield, $logRows[$logid]->log_deleted, $comment, $title, 'logid', $log_Ids); } // Were all revs allowed to be set? if (!$userAllowedAll) { $wgOut->permissionRequired('suppressrevision'); return false; } return $success; }
public function getApiData(ApiResult $result) { $logEntry = DatabaseLogEntry::newFromRow($this->row); $user = $this->list->getUser(); $ret = array('id' => $logEntry->getId(), 'type' => $logEntry->getType(), 'action' => $logEntry->getSubtype()); $ret += $logEntry->isDeleted(LogPage::DELETED_USER) ? array('userhidden' => '') : array(); $ret += $logEntry->isDeleted(LogPage::DELETED_COMMENT) ? array('commenthidden' => '') : array(); $ret += $logEntry->isDeleted(LogPage::DELETED_ACTION) ? array('actionhidden' => '') : array(); if (LogEventsList::userCan($this->row, LogPage::DELETED_ACTION, $user)) { $ret['params'] = LogFormatter::newFromEntry($logEntry)->formatParametersForApi(); } if (LogEventsList::userCan($this->row, LogPage::DELETED_USER, $user)) { $ret += array('userid' => $this->row->log_user, 'user' => $this->row->log_user_text); } if (LogEventsList::userCan($this->row, LogPage::DELETED_COMMENT, $user)) { $ret += array('comment' => $this->row->log_comment); } return $ret; }
private function extractRowInfo($row) { $logEntry = DatabaseLogEntry::newFromRow($row); $vals = array(ApiResult::META_TYPE => 'assoc'); $anyHidden = false; $user = $this->getUser(); if ($this->fld_ids) { $vals['logid'] = intval($row->log_id); } if ($this->fld_title || $this->fld_parsedcomment) { $title = Title::makeTitle($row->log_namespace, $row->log_title); } if ($this->fld_title || $this->fld_ids || $this->fld_details && $row->log_params !== '') { if (LogEventsList::isDeleted($row, LogPage::DELETED_ACTION)) { $vals['actionhidden'] = true; $anyHidden = true; } if (LogEventsList::userCan($row, LogPage::DELETED_ACTION, $user)) { if ($this->fld_title) { ApiQueryBase::addTitleInfo($vals, $title); } if ($this->fld_ids) { $vals['pageid'] = intval($row->page_id); $vals['logpage'] = intval($row->log_page); } if ($this->fld_details) { $vals['params'] = LogFormatter::newFromEntry($logEntry)->formatParametersForApi(); } } } if ($this->fld_type) { $vals['type'] = $row->log_type; $vals['action'] = $row->log_action; } if ($this->fld_user || $this->fld_userid) { if (LogEventsList::isDeleted($row, LogPage::DELETED_USER)) { $vals['userhidden'] = true; $anyHidden = true; } if (LogEventsList::userCan($row, LogPage::DELETED_USER, $user)) { if ($this->fld_user) { $vals['user'] = $row->user_name === null ? $row->log_user_text : $row->user_name; } if ($this->fld_userid) { $vals['userid'] = intval($row->log_user); } if (!$row->log_user) { $vals['anon'] = true; } } } if ($this->fld_timestamp) { $vals['timestamp'] = wfTimestamp(TS_ISO_8601, $row->log_timestamp); } if (($this->fld_comment || $this->fld_parsedcomment) && isset($row->log_comment)) { if (LogEventsList::isDeleted($row, LogPage::DELETED_COMMENT)) { $vals['commenthidden'] = true; $anyHidden = true; } if (LogEventsList::userCan($row, LogPage::DELETED_COMMENT, $user)) { if ($this->fld_comment) { $vals['comment'] = $row->log_comment; } if ($this->fld_parsedcomment) { $vals['parsedcomment'] = Linker::formatComment($row->log_comment, $title); } } } if ($this->fld_tags) { if ($row->ts_tags) { $tags = explode(',', $row->ts_tags); ApiResult::setIndexedTagName($tags, 'tag'); $vals['tags'] = $tags; } else { $vals['tags'] = array(); } } if ($anyHidden && LogEventsList::isDeleted($row, LogPage::DELETED_RESTRICTED)) { $vals['suppressed'] = true; } return $vals; }
public function getApiData(ApiResult $result) { $logEntry = DatabaseLogEntry::newFromRow($this->row); $user = $this->list->getUser(); $ret = array('id' => $logEntry->getId(), 'type' => $logEntry->getType(), 'action' => $logEntry->getSubtype()); $ret += $logEntry->isDeleted(LogPage::DELETED_USER) ? array('userhidden' => '') : array(); $ret += $logEntry->isDeleted(LogPage::DELETED_COMMENT) ? array('commenthidden' => '') : array(); $ret += $logEntry->isDeleted(LogPage::DELETED_ACTION) ? array('actionhidden' => '') : array(); if (LogEventsList::userCan($this->row, LogPage::DELETED_ACTION, $user)) { ApiQueryLogEvents::addLogParams($result, $ret, $logEntry->getParameters(), $logEntry->getType(), $logEntry->getSubtype(), $logEntry->getTimestamp(), $logEntry->isLegacy()); } if (LogEventsList::userCan($this->row, LogPage::DELETED_USER, $user)) { $ret += array('userid' => $this->row->log_user, 'user' => $this->row->log_user_text); } if (LogEventsList::userCan($this->row, LogPage::DELETED_COMMENT, $user)) { $ret += array('comment' => $this->row->log_comment); } return $ret; }