/osj-osj2dpostsdelete.php
PHP | 523 lines | 392 code | 61 blank | 70 comment | 67 complexity | 83738c879b67e13fab6e5f96b3aa6624 MD5 | raw file
Possible License(s): LGPL-2.1, AGPL-1.0
- <?php
- define("EW_PAGE_ID", "delete", TRUE); // Page ID
- define("EW_TABLE_NAME", 'osj-posts', TRUE);
- ?>
- <?php
- session_start(); // Initialize session data
- ob_start(); // Turn on output buffering
- ?>
- <?php include "osj-ewcfg50.php" ?>
- <?php include "osj-ewmysql50.php" ?>
- <?php include "osj-phpfn50.php" ?>
- <?php include "osj-osj2dpostsinfo.php" ?>
- <?php include "osj-userfn50.php" ?>
- <?php include "osj-osj2dusersinfo.php" ?>
- <?php
- header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Date in the past
- header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); // Always modified
- header("Cache-Control: private, no-store, no-cache, must-revalidate"); // HTTP/1.1
- header("Cache-Control: post-check=0, pre-check=0", false);
- header("Pragma: no-cache"); // HTTP/1.0
- ?>
- <?php
-
- // Open connection to the database
- $conn = ew_Connect();
- ?>
- <?php
- $Security = new cAdvancedSecurity();
- ?>
- <?php
- if (!$Security->IsLoggedIn()) $Security->AutoLogin();
- $Security->LoadCurrentUserLevel('osj-posts');
- if (!$Security->IsLoggedIn()) {
- $Security->SaveLastUrl();
- Page_Terminate("osj-login.php");
- }
- if (!$Security->CanDelete()) {
- $Security->SaveLastUrl();
- Page_Terminate("osj-osj2dpostslist.php");
- }
- if ($Security->IsLoggedIn() && $Security->CurrentUserID() == "") {
- $_SESSION[EW_SESSION_MESSAGE] = "You do not have the right permission to view the page";
- Page_Terminate("osj-login.php");
- }
- ?>
- <?php
-
- // Common page loading event (in userfn*.php)
- Page_Loading();
- ?>
- <?php
-
- // Page load event, used in current page
- Page_Load();
- ?>
- <?php
- $osj2Dposts->Export = @$_GET["export"]; // Get export parameter
- $sExport = $osj2Dposts->Export; // Get export parameter, used in header
- $sExportFile = $osj2Dposts->TableVar; // Get export file, used in header
- ?>
- <?php
-
- // Load Key Parameters
- $sKey = "";
- $bSingleDelete = TRUE; // Initialize as single delete
- $arRecKeys = array();
- $nKeySelected = 0; // Initialize selected key count
- $sFilter = "";
- if (@$_GET["post_id"] <> "") {
- $osj2Dposts->post_id->setQueryStringValue($_GET["post_id"]);
- if (!is_numeric($osj2Dposts->post_id->QueryStringValue)) {
- Page_Terminate($osj2Dposts->getReturnUrl()); // Prevent sql injection, exit
- }
- $sKey .= $osj2Dposts->post_id->QueryStringValue;
- } else {
- $bSingleDelete = FALSE;
- }
- if ($bSingleDelete) {
- $nKeySelected = 1; // Set up key selected count
- $arRecKeys[0] = $sKey;
- } else {
- if (isset($_POST["key_m"])) { // Key in form
- $nKeySelected = count($_POST["key_m"]); // Set up key selected count
- $arRecKeys = ew_StripSlashes($_POST["key_m"]);
- }
- }
- if ($nKeySelected <= 0) Page_Terminate($osj2Dposts->getReturnUrl()); // No key specified, exit
-
- // Build filter
- foreach ($arRecKeys as $sKey) {
- $sFilter .= "(";
-
- // Set up key field
- $sKeyFld = $sKey;
- if (!is_numeric($sKeyFld)) {
- Page_Terminate($osj2Dposts->getReturnUrl()); // Prevent sql injection, exit
- }
- $sFilter .= "`post_id`=" . ew_AdjustSql($sKeyFld) . " AND ";
- if (substr($sFilter, -5) == " AND ") $sFilter = substr($sFilter, 0, strlen($sFilter)-5) . ") OR ";
- }
- if (substr($sFilter, -4) == " OR ") $sFilter = substr($sFilter, 0, strlen($sFilter)-4);
-
- // Set up filter (Sql Where Clause) and get Return Sql
- // Sql constructor in osj2Dposts class, osj2Dpostsinfo.php
-
- $osj2Dposts->CurrentFilter = $sFilter;
-
- // Get action
- if (@$_POST["a_delete"] <> "") {
- $osj2Dposts->CurrentAction = $_POST["a_delete"];
- } else {
- $osj2Dposts->CurrentAction = "I"; // Display record
- }
- switch ($osj2Dposts->CurrentAction) {
- case "D": // Delete
- $osj2Dposts->SendEmail = TRUE; // Send email on delete success
- if (DeleteRows()) { // delete rows
- $_SESSION[EW_SESSION_MESSAGE] = "Delete Successful"; // Set up success message
- Page_Terminate($osj2Dposts->getReturnUrl()); // Return to caller
- }
- }
-
- // Load records for display
- $rs = LoadRecordset();
- $nTotalRecs = $rs->RecordCount(); // Get record count
- if ($nTotalRecs <= 0) { // No record found, exit
- $rs->Close();
- Page_Terminate($osj2Dposts->getReturnUrl()); // Return to caller
- }
- ?>
- <?php include "osj-header.php" ?>
- <script type="text/javascript">
- <!--
- var EW_PAGE_ID = "delete"; // Page id
- var EW_SHOW_HIGHLIGHT = "Show highlight";
- var EW_HIDE_HIGHLIGHT = "Hide highlight";
-
- //-->
- </script>
- <script language="JavaScript" type="text/javascript">
- <!--
-
- // Write your client script here, no need to add script tags.
- // To include another .js script, use:
- // ew_ClientScriptInclude("my_javascript.js");
- //-->
-
- </script>
- <p><span class="phpmaker">Delete from TABLE: Posts<br><br><a href="<?php echo $osj2Dposts->getReturnUrl() ?>">Go Back</a></span></p>
- <?php
- if (@$_SESSION[EW_SESSION_MESSAGE] <> "") {
- ?>
- <p><span class="ewmsg"><?php echo $_SESSION[EW_SESSION_MESSAGE] ?></span></p>
- <?php
- $_SESSION[EW_SESSION_MESSAGE] = ""; // Clear message
- }
- ?>
- <form action="osj-osj2dpostsdelete.php" method="post">
- <p>
- <input type="hidden" name="a_delete" id="a_delete" value="D">
- <?php foreach ($arRecKeys as $sKey) { ?>
- <input type="hidden" name="key_m[]" id="key_m[]" value="<?php echo ew_HtmlEncode($sKey) ?>">
- <?php } ?>
- <table class="ewTable">
- <tr class="ewTableHeader">
- <td valign="top">Title</td>
- <td valign="top">Description</td>
- </tr>
- <?php
- $nRecCount = 0;
- $i = 0;
- while (!$rs->EOF) {
- $nRecCount++;
-
- // Set row class and style
- $osj2Dposts->CssClass = "ewTableRow";
- $osj2Dposts->CssStyle = "";
-
- // Display alternate color for rows
- if ($nRecCount % 2 <> 1) {
- $osj2Dposts->CssClass = "ewTableAltRow";
- }
-
- // Get the field contents
- LoadRowValues($rs);
-
- // Render row value
- $osj2Dposts->RowType = EW_ROWTYPE_VIEW; // view
- RenderRow();
- ?>
- <tr<?php echo $osj2Dposts->DisplayAttributes() ?>>
- <td<?php echo $osj2Dposts->post_title->CellAttributes() ?>>
- <?php if ($osj2Dposts->post_title->HrefValue <> "") { ?>
- <a href="osj-osj2dpostsview.php?post_id=<?php echo $osj2Dposts->post_title->HrefValue ?>"><div<?php echo $osj2Dposts->post_title->ViewAttributes() ?>><?php echo $osj2Dposts->post_title->ViewValue ?></div></a>
- <?php } else { ?>
- <div<?php echo $osj2Dposts->post_title->ViewAttributes() ?>><?php echo $osj2Dposts->post_title->ViewValue ?></div>
- <?php } ?>
- </td>
- <td<?php echo $osj2Dposts->post_description->CellAttributes() ?>>
- <div<?php echo $osj2Dposts->post_description->ViewAttributes() ?>><?php echo $osj2Dposts->post_description->ViewValue ?></div>
- </td>
- </tr>
- <?php
- $rs->MoveNext();
- }
- $rs->Close();
- ?>
- </table>
- <p>
- <input type="submit" name="Action" id="Action" value="Confirm Delete">
- </form>
- <script language="JavaScript" type="text/javascript">
- <!--
-
- // Write your table-specific startup script here
- // document.write("page loaded");
- //-->
-
- </script>
- <?php include "osj-footer.php" ?>
- <?php
-
- // If control is passed here, simply terminate the page without redirect
- Page_Terminate();
-
- // -----------------------------------------------------------------
- // Subroutine Page_Terminate
- // - called when exit page
- // - clean up connection and objects
- // - if url specified, redirect to url, otherwise end response
- function Page_Terminate($url = "") {
- global $conn;
-
- // Page unload event, used in current page
- Page_Unload();
-
- // Global page unloaded event (in userfn*.php)
- Page_Unloaded();
-
- // Close Connection
- $conn->Close();
-
- // Go to url if specified
- if ($url <> "") {
- ob_end_clean();
- header("Location: $url");
- }
- exit();
- }
- ?>
- <?php
-
- // ------------------------------------------------
- // Function DeleteRows
- // - Delete Records based on current filter
- function DeleteRows() {
- global $conn, $Security, $osj2Dposts;
- $DeleteRows = TRUE;
- $sWrkFilter = $osj2Dposts->CurrentFilter;
- if ($Security->CurrentUserID() <> "" && !$Security->IsAdmin()) { // Non system admin
- $sWrkFilter = $osj2Dposts->AddUserIDFilter($sWrkFilter, $Security->CurrentUserID()); // Add User ID filter
- }
-
- // Set up filter (Sql Where Clause) and get Return Sql
- // Sql constructor in osj2Dposts class, osj2Dpostsinfo.php
-
- $osj2Dposts->CurrentFilter = $sWrkFilter;
- $sSql = $osj2Dposts->SQL();
- $conn->raiseErrorFn = 'ew_ErrorFn';
- $rs = $conn->Execute($sSql);
- $conn->raiseErrorFn = '';
- if ($rs === FALSE) {
- return FALSE;
- } elseif ($rs->EOF) {
- $_SESSION[EW_SESSION_MESSAGE] = "No records found"; // No record found
- $rs->Close();
- return FALSE;
- }
- $conn->BeginTrans();
- WriteAuditTrailDummy("*** batch delete begin ***"); // Batch delete begin
-
- // Clone old rows
- $rsold = ($rs) ? $rs->GetRows() : array();
- if ($rs) $rs->Close();
-
- // Call row deleting event
- if ($DeleteRows) {
- foreach ($rsold as $row) {
- $DeleteRows = $osj2Dposts->Row_Deleting($row);
- if (!$DeleteRows) break;
- }
- }
- if ($DeleteRows) {
- $sKey = "";
- foreach ($rsold as $row) {
- $sThisKey = "";
- if ($sThisKey <> "") $sThisKey .= EW_COMPOSITE_KEY_SEPARATOR;
- $sThisKey .= $row['post_id'];
- $conn->raiseErrorFn = 'ew_ErrorFn';
- $DeleteRows = $conn->Execute($osj2Dposts->DeleteSQL($row)); // Delete
- $conn->raiseErrorFn = '';
- if ($DeleteRows === FALSE)
- break;
- if ($sKey <> "") $sKey .= ", ";
- $sKey .= $sThisKey;
- }
- } else {
-
- // Set up error message
- if ($osj2Dposts->CancelMessage <> "") {
- $_SESSION[EW_SESSION_MESSAGE] = $osj2Dposts->CancelMessage;
- $osj2Dposts->CancelMessage = "";
- } else {
- $_SESSION[EW_SESSION_MESSAGE] = "Delete cancelled";
- }
- }
- if ($DeleteRows) {
- $conn->CommitTrans(); // Commit the changes
- if ($DeleteRows) {
- foreach ($rsold as $row) {
- WriteAuditTrailOnDelete($row);
- }
- }
- WriteAuditTrailDummy("*** batch delete success ***"); // Batch delete success
- } else {
- $conn->RollbackTrans(); // Rollback changes
- WriteAuditTrailDummy("*** batch delete rollback ***"); // Batch delete rollback
- }
-
- // Call recordset deleted event
- if ($DeleteRows) {
- foreach ($rsold as $row) {
- $osj2Dposts->Row_Deleted($row);
- }
- }
- return $DeleteRows;
- }
- ?>
- <?php
-
- // Load recordset
- function LoadRecordset($offset = -1, $rowcnt = -1) {
- global $conn, $osj2Dposts;
-
- // Call Recordset Selecting event
- $osj2Dposts->Recordset_Selecting($osj2Dposts->CurrentFilter);
-
- // Load list page sql
- $sSql = $osj2Dposts->SelectSQL();
- if ($offset > -1 && $rowcnt > -1) $sSql .= " LIMIT $offset, $rowcnt";
-
- // Load recordset
- $conn->raiseErrorFn = 'ew_ErrorFn';
- $rs = $conn->Execute($sSql);
- $conn->raiseErrorFn = '';
-
- // Call Recordset Selected event
- $osj2Dposts->Recordset_Selected($rs);
- return $rs;
- }
- ?>
- <?php
-
- // Load row based on key values
- function LoadRow() {
- global $conn, $Security, $osj2Dposts;
- $sFilter = $osj2Dposts->SqlKeyFilter();
- if (!is_numeric($osj2Dposts->post_id->CurrentValue)) {
- return FALSE; // Invalid key, exit
- }
- $sFilter = str_replace("@post_id@", ew_AdjustSql($osj2Dposts->post_id->CurrentValue), $sFilter); // Replace key value
- if ($Security->CurrentUserID() <> "" && !$Security->IsAdmin()) { // Non system admin
- $sFilter = $osj2Dposts->AddUserIDFilter($sFilter, $Security->CurrentUserID()); // Add User ID filter
- }
-
- // Call Row Selecting event
- $osj2Dposts->Row_Selecting($sFilter);
-
- // Load sql based on filter
- $osj2Dposts->CurrentFilter = $sFilter;
- $sSql = $osj2Dposts->SQL();
- if ($rs = $conn->Execute($sSql)) {
- if ($rs->EOF) {
- $LoadRow = FALSE;
- } else {
- $LoadRow = TRUE;
- $rs->MoveFirst();
- LoadRowValues($rs); // Load row values
-
- // Call Row Selected event
- $osj2Dposts->Row_Selected($rs);
- }
- $rs->Close();
- } else {
- $LoadRow = FALSE;
- }
- return $LoadRow;
- }
-
- // Load row values from recordset
- function LoadRowValues(&$rs) {
- global $osj2Dposts;
- $osj2Dposts->post_id->setDbValue($rs->fields('post_id'));
- $osj2Dposts->user_id->setDbValue($rs->fields('user_id'));
- $osj2Dposts->post_creation_date->setDbValue($rs->fields('post_creation_date'));
- $osj2Dposts->post_title->setDbValue($rs->fields('post_title'));
- $osj2Dposts->post_description->setDbValue($rs->fields('post_description'));
- $osj2Dposts->post_email->setDbValue($rs->fields('post_email'));
- $osj2Dposts->post_categories->setDbValue($rs->fields('post_categories'));
- $osj2Dposts->post_url->setDbValue($rs->fields('post_url'));
- $osj2Dposts->post_edit_date->setDbValue($rs->fields('post_edit_date'));
- }
- ?>
- <?php
-
- // Render row values based on field settings
- function RenderRow() {
- global $conn, $Security, $osj2Dposts;
-
- // Call Row Rendering event
- $osj2Dposts->Row_Rendering();
-
- // Common render codes for all row types
- // post_title
-
- $osj2Dposts->post_title->CellCssStyle = "";
- $osj2Dposts->post_title->CellCssClass = "";
-
- // post_description
- $osj2Dposts->post_description->CellCssStyle = "";
- $osj2Dposts->post_description->CellCssClass = "";
- if ($osj2Dposts->RowType == EW_ROWTYPE_VIEW) { // View row
-
- // post_title
- $osj2Dposts->post_title->ViewValue = $osj2Dposts->post_title->CurrentValue;
- $osj2Dposts->post_title->CssStyle = "";
- $osj2Dposts->post_title->CssClass = "";
- $osj2Dposts->post_title->ViewCustomAttributes = "";
-
- // post_description
- $osj2Dposts->post_description->ViewValue = $osj2Dposts->post_description->CurrentValue;
- if (!is_null($osj2Dposts->post_description->ViewValue)) $osj2Dposts->post_description->ViewValue = str_replace("\n", "<br>", $osj2Dposts->post_description->ViewValue);
- $osj2Dposts->post_description->CssStyle = "";
- $osj2Dposts->post_description->CssClass = "";
- $osj2Dposts->post_description->ViewCustomAttributes = "";
-
- // post_title
- if (!is_null($osj2Dposts->post_id->CurrentValue)) {
- $osj2Dposts->post_title->HrefValue = ((!empty($osj2Dposts->post_id->ViewValue)) ? $osj2Dposts->post_id->ViewValue : $osj2Dposts->post_id->CurrentValue);
- if ($osj2Dposts->Export <> "") $osj2Dposts->post_title->HrefValue = ew_ConvertFullUrl($osj2Dposts->post_title->HrefValue);
- } else {
- $osj2Dposts->post_title->HrefValue = "";
- }
-
- // post_description
- $osj2Dposts->post_description->HrefValue = "";
- } elseif ($osj2Dposts->RowType == EW_ROWTYPE_ADD) { // Add row
- } elseif ($osj2Dposts->RowType == EW_ROWTYPE_EDIT) { // Edit row
- } elseif ($osj2Dposts->RowType == EW_ROWTYPE_SEARCH) { // Search row
- }
-
- // Call Row Rendered event
- $osj2Dposts->Row_Rendered();
- }
- ?>
- <?php
-
- // Write Audit Trail start/end for grid update
- function WriteAuditTrailDummy($typ) {
- $table = 'osj-posts';
-
- // Write Audit Trail
- $filePfx = "log";
- $curDate = date("Y/m/d");
- $curTime = date("H:i:s");
- $id = ew_ScriptName();
- $user = CurrentUserID();
- $action = $typ;
- ew_WriteAuditTrail($filePfx, $curDate, $curTime, $id, $user, $action, $table, "", "", "", "");
- }
- ?>
- <?php
-
- // Write Audit Trail (delete page)
- function WriteAuditTrailOnDelete(&$rs) {
- global $osj2Dposts;
- $table = 'osj-posts';
-
- // Get key value
- $key = "";
- if ($key <> "") $key .= EW_COMPOSITE_KEY_SEPARATOR;
- $key .= $rs['post_id'];
-
- // Write Audit Trail
- $filePfx = "log";
- $curDate = date("Y/m/d");
- $curTime = date("H:i:s");
- $id = ew_ScriptName();
- $user = CurrentUserID();
- $action = "D";
- $newvalue = "";
- foreach (array_keys($rs) as $fldname) {
- if ($osj2Dposts->fields[$fldname]->FldDataType <> EW_DATATYPE_BLOB) { // Ignore Blob Field
- $oldvalue = ($osj2Dposts->fields[$fldname]->FldDataType == EW_DATATYPE_MEMO) ? "<MEMO>" : $rs[$fldname]; // Memo Field
- ew_WriteAuditTrail($filePfx, $curDate, $curTime, $id, $user, $action, $table, $fldname, $key, $oldvalue, $newvalue);
- }
- }
- }
- ?>
- <?php
-
- // Page Load event
- function Page_Load() {
-
- //echo "Page Load";
- }
-
- // Page Unload event
- function Page_Unload() {
-
- //echo "Page Unload";
- }
- ?>