public function load($keyOrTicketId, $throwExceptions = true) { if (preg_match('/^\\d+$/', trim($keyOrTicketId), $matches)) { return parent::load($matches[0], $throwExceptions); } else { $keyOrTicketId = filterId($keyOrTicketId); $found = $this->findFirstByTicketMask($keyOrTicketId); if (!$found && $throwExceptions) { throw new Am_Exception_InternalError("Ticket with mask [{$keyOrTicketId}] not found"); } return $found; } }
protected function _simpleSort(Am_Table $table, $item, $after, $before) { $after = $after ? $after['id'] : null; $before = $before ? $before['id'] : null; $id = $item['id']; $table_name = $table->getName(); $pk = $table->getKeyField(); $db = Am_Di::getInstance()->db; $item = $table->load($id); if ($before) { $beforeItem = $table->load($before); $sign = $beforeItem->sort_order > $item->sort_order ? '-' : '+'; $newSortOrder = $beforeItem->sort_order > $item->sort_order ? $beforeItem->sort_order - 1 : $beforeItem->sort_order; $db->query("UPDATE {$table_name}\n SET sort_order=sort_order{$sign}1 WHERE\n sort_order BETWEEN ? AND ? AND {$pk}<>?", min($newSortOrder, $item->sort_order), max($newSortOrder, $item->sort_order), $id); $db->query("UPDATE {$table_name} SET sort_order=? WHERE {$pk}=?", $newSortOrder, $id); } elseif ($after) { $afterItem = $table->load($after); $sign = $afterItem->sort_order > $item->sort_order ? '-' : '+'; $newSortOrder = $afterItem->sort_order > $item->sort_order ? $afterItem->sort_order : $afterItem->sort_order + 1; $db->query("UPDATE {$table_name}\n SET sort_order=sort_order{$sign}1 WHERE\n sort_order BETWEEN ? AND ? AND {$pk}<>?", min($newSortOrder, $item->sort_order), max($newSortOrder, $item->sort_order), $id); $db->query("UPDATE {$table_name} SET sort_order=? WHERE {$pk}=?", $newSortOrder, $id); } }