public function doExecute() { //Cancel? $arrDefaultReturn = array("base" => "collections", "action" => "edit_form", "subject" => $this->request->getProperty("subject"), "subcategory" => $this->request->getProperty("subcategory"), "username" => $this->request->getProperty("username")); if ($this->request->getProperty("cancel")) { $this->returnWithMessage($this->getLabel("text_collections_cancelled"), $arrDefaultReturn); return 1; } $strSubject = $this->request->getProperty("subject"); $strSubcatID = $this->request->getProperty("subcategory"); $strUsername = $this->request->getProperty("username"); $strNewName = $this->request->getProperty("new_name"); if (empty($strNewName)) { $this->returnWithMessage($this->getLabel("text_collections_blank_name"), $arrDefaultReturn); return 1; } // make sure they are logged in as the user they are trying to save as. $this->ensureSpecifiedUser(); $objData = new Xerxes_DataMap(); $category = $objData->getSubject($strSubject, null, Xerxes_DataMap::userCreatedMode, $strUsername); if (!empty($strSubcatID)) { // rename a subcategory $subcat = $this->getSubcategory($category, $strSubcatID); $subcat->name = $strNewName; $objData->updateUserSubcategoryProperties($subcat); } else { // rename category $category->name = $strNewName; $objData->updateUserCategoryProperties($category); } // new name if it's been changed! $arrDefaultReturn["subject"] = $category->normalized; $this->returnWithMessage($this->getLabel("text_collections_renamed"), $arrDefaultReturn); return 1; }
public function doExecute() { // cancel? $arrDefaultReturn = array("base" => "collections", "action" => "edit_form", "subject" => $this->request->getProperty("subject"), "subcategory" => $this->request->getProperty("subcategory"), "username" => $this->request->getProperty("username")); if ($this->request->getProperty("cancel")) { $this->returnWithMessage($this->getLabel("text_collections_cancelled"), $arrDefaultReturn); return 1; } $strSubject = $this->request->getProperty("subject"); $strSubcatID = $this->request->getProperty("subcategory"); $strPublished = $this->request->getProperty("published"); $strUsername = $this->request->getProperty("username"); $strNewName = $this->request->getProperty("new_name"); // Make sure they are logged in as the user they are trying to save as. $this->ensureSpecifiedUser(); $objData = new Xerxes_DataMap(); $category = $objData->getSubject($strSubject, null, Xerxes_DataMap::userCreatedMode, $strUsername); $message = ""; if (!empty($strSubcatID)) { // edit a subcategory, rename $subcat = $this->getSubcategory($category, $strSubcatID); if (!empty($strNewName)) { $message .= "Section name changed. "; $subcat->name = $strNewName; $objData->updateUserSubcategoryProperties($subcat); } } else { // edit a category: rename/publish if (!empty($strNewName)) { $category->name = $strNewName; $message .= $this->getLabel("text_collections_name_changed"); } if (!empty($strPublished)) { $boolPublished = (int) ($strPublished == "true"); $category->published = $boolPublished; if ($boolPublished) { $message .= $this->getLabel("text_collections_made_published"); } else { $message .= $this->getLabel("text_collections_made_private"); } } $objData->updateUserCategoryProperties($category); } // new name if it's been changed! $arrDefaultReturn["subject"] = $category->normalized; $this->returnWithMessage($message, $arrDefaultReturn); return 1; }
public function doExecute() { $arrDefaultReturn = array("base" => "collections", "action" => "edit_form", "subject" => $this->request->getProperty("subject"), "subcategory" => $this->request->getProperty("subcategory"), "username" => $this->request->getProperty("username")); $strSubject = $this->request->getProperty("subject"); $strUsername = $this->request->getProperty("username"); // make sure they are logged in as the user they are trying to save as. $this->ensureSpecifiedUser(); $objData = new Xerxes_DataMap(); $category = $objData->getSubject($strSubject, null, Xerxes_DataMap::userCreatedMode, $strUsername); // find any new assigned numbers, and reorder. $orderedSubcats = $category->subcategories; // we need to through the assignments in sorted order by sequence choice, // for this to work right. $sortedProperties = $this->request->getAllProperties(); asort($sortedProperties); foreach ($sortedProperties as $name => $new_sequence) { $matches = array(); if (!empty($new_sequence) && preg_match('/^subcat_seq_(\\d+)$/', $name, $matches)) { $subcatID = $matches[1]; $old_index = null; $subcategory = null; for ($i = 0; $i < count($orderedSubcats); $i++) { $candidate = $orderedSubcats[$i]; if ($candidate->id == $subcatID) { $old_index = $i; $subcategory = $candidate; } } // if we found it. if ($subcategory) { // remove it from the array, then add it back in array_splice($orderedSubcats, $old_index, 1); array_splice($orderedSubcats, $new_sequence - 1, 0, array($subcategory)); } } } // okay, we've re-ordered $orderedSubcats, now update the sequence #s for ($i = 0; $i < count($orderedSubcats); $i++) { $subcategory = $orderedSubcats[$i]; $subcategory->sequence = $i + 1; $objData->updateUserSubcategoryProperties($subcategory); } $this->returnWithMessage($this->getLabel("text_collections_section_order_changed"), $arrDefaultReturn); return 1; }