/** * Reports a page action with dependencies to the log * @param Page $page The page being manipulated * @param Enums\Action $action The operation executed on the page */ function ReportPageAction(Page $page, Enums\Action $action) { $logItem = $this->CreateLogItem(Enums\ObjectType::Page(), $action); if (!$action->Equals(Enums\Action::Delete())) { $logPage = new LogPage(); $logPage->SetLogItem($logItem); $logPage->SetPage($page); $logPage->Save(); } else { $this->ReportSiteAction($page->GetSite(), Enums\Action::ChildDelete()); } }
/** * The last log item that is directly related to the page * @param Page $page The page * @return LogItem Returns the log item */ static function LastPageLog(Page $page) { $tblLogPage = LogPage::Schema()->Table(); $tblLogItem = LogItem::Schema()->Table(); $sql = Access::SqlBuilder(); $orderBy = $sql->OrderList($sql->OrderDesc($tblLogItem->Field('Changed'))); $joinCond = $sql->Equals($tblLogPage->Field('LogItem'), $tblLogItem->Field('ID')); $where = $sql->Equals($tblLogPage->Field('Page'), $sql->Value($page->GetID())); return LogItem::Schema()->First($where, $orderBy, null, $sql->Join($tblLogPage), JoinType::Inner(), $joinCond); }