kinspire / branches / master / models / group.php
history
<?php
class Group extends AppModel {
var $name = 'Group';
var $actsAs = array('Acl' => array('requester'));
//The Associations below have been created with all possible keys, those that are not needed can be removed
var $hasMany = array(
'User' => array('className' => 'User',
'foreignKey' => 'group_id',
'dependent' => false
)
);
var $validate = array( 'name' => VALID_NOT_EMPTY );
function afterSave($created) {
if ( $created ) {
// its a creation
$id = $this->getLastInsertID();
$aro = new Aro();
$aro->updateAll( array('alias'=>'\'Group:'.$id.'\''),
array( 'Aro.model'=>'Group',
'Aro.foreign_key'=>$id)
);
}
else {
// its an edit, we have to update the tree
$data = $this->read();
$parent_id = $data['Group']['parent_id'];
$aro = new Aro();
$aro_record = $aro->findByForeignKey( $this->id );
$parent_record = $aro->findByForeignKey( $parent_id );
if ( empty( $aro_record ) ) {
// orphaned child
$this->Aro->save( array(
'model' => $this->name,
'foreign_key' => $this->id,
'alias' => $this->name.':'.$this->id,
'parent_id' => $parent_record['Aro']['id']
) );
}
else {
// just moving nodes
$this->Aro->save( array(
'model' => $this->name,
'foreign_key' => $this->id,
'alias' => $this->name.':'.$this->id,
'parent_id' => $parent_record['Aro']['id'],
'id' => $aro_record['Aro']['id']
) );
}
}
return true;
}
function parentNode(){
// This should be the alias of the parent $model::$id
$data = $this->read();
// This needs to be unique
return 'Group:'.$data['Group']['parent_id'];
}
}
?>
