Index: trunk/kernel/units/selectors/selectors_event_handler.php =================================================================== diff -u -r2015 -r2798 --- trunk/kernel/units/selectors/selectors_event_handler.php (.../selectors_event_handler.php) (revision 2015) +++ trunk/kernel/units/selectors/selectors_event_handler.php (.../selectors_event_handler.php) (revision 2798) @@ -5,7 +5,52 @@ class SelectorsEventHandler extends InpDBEventHandler { + /** + * Occures after an item has been cloned + * Id of newly created item is passed as event' 'id' param + * + * @param kEvent $event + */ + function OnAfterClone(&$event) + { + $object =& $event->getObject( Array('skip_autoload' => true) ); + $object->Load( $event->getEventParam('id') ); + + $linked_info = $object->getLinkedInfo(); + $selector_name = $object->GetDBField('SelectorName'); + + // temp table sql + $sql = 'SELECT RIGHT(SelectorName, LENGTH(SelectorName) - %s) AS SelectorIndex + FROM %s + WHERE (%s = %s) AND SelectorName LIKE %s AND (%s != %s) + ORDER BY SelectorIndex DESC'; + $sql = sprintf( $sql, + strlen($selector_name), + $object->TableName, + $linked_info['ForeignKey'], + $linked_info['ParentId'], + $this->Conn->qstr($selector_name.'%' ), + $object->IDField, + $object->GetID() ); + + $selector_index = $this->Conn->GetOne($sql); + if($selector_index !== false) + { + $selector_index = (int)ltrim($selector_index, '-'); + $object->SetDBField('SelectorName', $selector_name.'-'.(++$selector_index) ); + $object->Update(); + } + + // live table sql if previous was in temp table + $live_table = $this->Application->getUnitOption($object->Prefix, 'TableName'); + if($live_table != $object->TableName) + { + + } + } + + /** * Show base styles or block styles * * @param kEvent $event Index: trunk/core/units/selectors/selectors_event_handler.php =================================================================== diff -u -r2015 -r2798 --- trunk/core/units/selectors/selectors_event_handler.php (.../selectors_event_handler.php) (revision 2015) +++ trunk/core/units/selectors/selectors_event_handler.php (.../selectors_event_handler.php) (revision 2798) @@ -5,7 +5,52 @@ class SelectorsEventHandler extends InpDBEventHandler { + /** + * Occures after an item has been cloned + * Id of newly created item is passed as event' 'id' param + * + * @param kEvent $event + */ + function OnAfterClone(&$event) + { + $object =& $event->getObject( Array('skip_autoload' => true) ); + $object->Load( $event->getEventParam('id') ); + + $linked_info = $object->getLinkedInfo(); + $selector_name = $object->GetDBField('SelectorName'); + + // temp table sql + $sql = 'SELECT RIGHT(SelectorName, LENGTH(SelectorName) - %s) AS SelectorIndex + FROM %s + WHERE (%s = %s) AND SelectorName LIKE %s AND (%s != %s) + ORDER BY SelectorIndex DESC'; + $sql = sprintf( $sql, + strlen($selector_name), + $object->TableName, + $linked_info['ForeignKey'], + $linked_info['ParentId'], + $this->Conn->qstr($selector_name.'%' ), + $object->IDField, + $object->GetID() ); + + $selector_index = $this->Conn->GetOne($sql); + if($selector_index !== false) + { + $selector_index = (int)ltrim($selector_index, '-'); + $object->SetDBField('SelectorName', $selector_name.'-'.(++$selector_index) ); + $object->Update(); + } + + // live table sql if previous was in temp table + $live_table = $this->Application->getUnitOption($object->Prefix, 'TableName'); + if($live_table != $object->TableName) + { + + } + } + + /** * Show base styles or block styles * * @param kEvent $event