示例#1
0
 public function doExecute()
 {
     // ensure this is the same user
     $strRedirect = $this->enforceUsername();
     if ($strRedirect != null) {
         $this->request->setRedirect($strRedirect);
         return 1;
     }
     // get request parameters and configuration settings
     $strUsername = $this->request->getSession("username");
     $strSource = $this->request->getProperty("source");
     $strID = $this->request->getProperty("id");
     // params for deciding where to send the user back
     $strType = $this->request->getProperty("type");
     $strLabel = $this->request->getProperty("label");
     $iStart = $this->request->getProperty("startRecord");
     $iTotal = $this->request->getProperty("total");
     $iCount = $this->request->getProperty("recordsPerPage");
     $strSort = $this->request->getProperty("sortKeys");
     // ensure we send user back to a page with actual results!
     if ($iTotal == 1 && ($strLabel != "" || $strType != "")) {
         // if this is the last result in a tag or format grouping, then
         // simply redirect back to the folder home page
         $arrParams = array("base" => "folder", "action" => "home", "sortKeys" => $strSort, "username" => $this->request->getSession("username"));
     } else {
         // if the last record in the results is also the last one on
         // the page (of 10 or whatever), send the user back to an
         // earlier page with results on it
         if ($iStart > $iCount && $iStart == $iTotal) {
             $iStart = $iStart - $iCount;
         }
         $arrParams = array("base" => "folder", "action" => "home", "username" => $this->request->getSession("username"), "type" => $strType, "label" => $strLabel, "sortKeys" => $strSort, "startRecord" => $iStart);
     }
     $strReturn = $this->request->url_for($arrParams);
     // delete the record from the database
     $objData = new Xerxes_DataMap();
     $objData->deleteRecordBySource($strUsername, $strSource, $strID);
     // update the session
     // Sorry this gets a bit confusing, the api hasn't stayed entirely consistent.
     $resultSet = "";
     $recordNumber = $strID;
     $id = explode(':', $strID);
     // metalib
     if (count($id) > 1) {
         $resultSet = $id[1];
         $recordNumber = $id[2];
     }
     Xerxes_Helper::unmarkSaved($resultSet, $recordNumber);
     // send the user back out, so they don't step on this again
     $this->request->setRedirect($strReturn);
     return 1;
 }
示例#2
0
 protected function unmarkSaved($strResultSet, $strRecordNumber)
 {
     return Xerxes_Helper::unmarkSaved($strResultSet, $strRecordNumber);
 }