示例#1
0
/**
 * Copie les droits appliqués aux éléments d'une liste source pour les éléments d'une autre liste.
 * Attention: les deux listes doivent être de même taille et l'ordre des éléments car une association des id des éléments
 * sources et ceux de la seconde liste sont associés dans leur ordre de rangement.
 * @author Alban Truc
 * @param array $sourceElementList
 * @param array $pastedElementList
 * @since 07/06/05
 */
function copyRights($sourceElementList, $pastedElementList)
{
    $rightManager = new RightManager();
    $rightCriteria = array('state' => (int) 1);
    $sourceRightList = array();
    $associateIds = array();
    $count = 0;
    foreach ($sourceElementList as $sourceElement) {
        $associateIds[(string) $sourceElement['_id']] = (string) $pastedElementList[$count]['_id'];
        $count++;
        $rightCriteria['idElement'] = $sourceElement['_id'];
        $rights = $rightManager->find($rightCriteria);
        if (!array_key_exists('error', $rights)) {
            $sourceRightList = array_merge_recursive($sourceRightList, $rights);
        }
    }
    //si on voulait log
    //$rightsToPaste = array();
    //$pastedRights = array();
    //$failedToPaste = array();
    //$count = 0
    foreach ($sourceRightList as $right) {
        $rightCopy = $right;
        $rightCopy['_id'] = new MongoId();
        $rightCopy['idElement'] = new MongoId($associateIds[(string) $right['idElement']]);
        //$rightsToPaste[] = $rightCopy;
        $insertResult = $rightManager->create($rightCopy);
        //si on voulait log
        /*
        if(!(is_bool($insertResult))) //erreur
        {
            $failedToPaste[$count]['rightToCopy'] = $right;
            $failedToPaste[$count]['rightCopy'] = $rightCopy;
            $failedToPaste[$count]['error'] = $insertResult['error'];
            $count++;
        }
        */
    }
}