protected function addReorder(&$script) { $peerClassname = $this->peerClassname; $columnGetter = 'get' . $this->behavior->getColumnForParameter('rank_column')->getPhpName(); $columnSetter = 'set' . $this->behavior->getColumnForParameter('rank_column')->getPhpName(); $script .= "\n/**\n * Reorder a set of sortable objects based on a list of id/position\n * Beware that there is no check made on the positions passed\n * So incoherent positions will result in an incoherent list\n *\n * @param array \$order id => rank pairs\n * @param PropelPDO \$con optional connection\n *\n * @return boolean true if the reordering took place, false if a database problem prevented it\n */\npublic static function reorder(array \$order, PropelPDO \$con = null)\n{\n if (\$con === null) {\n \$con = Propel::getConnection({$peerClassname}::DATABASE_NAME);\n }\n\n \$con->beginTransaction();\n try {\n \$ids = array_keys(\$order);\n \$objects = {$peerClassname}::retrieveByPKs(\$ids);\n foreach (\$objects as \$object) {\n \$pk = \$object->getPrimaryKey();\n if (\$object->{$columnGetter}() != \$order[\$pk]) {\n \$object->{$columnSetter}(\$order[\$pk]);\n \$object->save(\$con);\n }\n }\n \$con->commit();\n\n return true;\n } catch (Exception \$e) {\n \$con->rollback();\n throw \$e;\n }\n}\n"; }
/** * Get the setter of the column of the behavior * * @param string $columnName * * @return string The related setter, e.g. 'setRank' */ protected function getColumnSetter($columnName = 'rank_column') { return 'set' . $this->behavior->getColumnForParameter($columnName)->getPhpName(); }
protected function getColumnConstant($name) { return strtoupper($this->behavior->getColumnForParameter($name)->getName()); }