/** * Created by PhpStorm. * User: Crocell * Date: 12/06/14 * Time: 22:23 */ function findSharesForElement($idElement, $idUser) { $idElement = new MongoId($idElement); $idUser = new MongoId($idUser); //vérification de l'existence de l'élément $elementManager = new ElementManager(); $element = $elementManager->findById($idElement); if (array_key_exists('error', $element)) { return $element; } if ($element['idOwner'] != $idUser) { return array('error' => 'You need to be the owner of the file to get sharing information on it.'); } $rightManager = new RightManager(); $rightCriteria = array('state' => (int) 1, 'idElement' => $idElement); $rights = $rightManager->find($rightCriteria); $userManager = new UserManager(); $refRightManager = new RefRightManager(); $userFieldsToReturn = array('email' => TRUE); $refRightFieldsToReturn = array('code' => TRUE); $user = $refRight = NULL; foreach ($rights as $key => $right) { $user = $userManager->findById($right['idUser'], $userFieldsToReturn); $refRight = $refRightManager->findById($right['idRefRight'], $refRightFieldsToReturn); if (array_key_exists('error', $user) || array_key_exists('error', $refRight)) { unset($rights[$key]); } unset($rights[$key]['idUser']); unset($rights[$key]['idRefRight']); $rights[$key]['user'] = $user; $rights[$key]['refRight'] = $refRight; } if (empty($rights)) { return array('error' => 'No righ found for the element'); } else { return $rights; } }
/** * Retourne le droit, le refRight, l'élément, le refElement et le propriétaire * @author Alban Truc * @param string|MongoId $idUser * @param string $path emplacement sur le serveur des éléments * @param NULL|string $elementName nom de l'élément * @since 01/05/2014 * @return array */ public function returnSharedElementsDetails($idUser, $path = 'all', $elementName = NULL) { $idUser = new MongoId($idUser); $criteria = array('state' => (int) 1, 'idUser' => $idUser); //récupération des droits sur les éléments $rightManager = new RightManager(); $rights = $rightManager->find($criteria); $userManager = new UserManager(); $refRightManager = new RefRightManager(); $refElementManager = new RefElementManager(); if (is_array($rights) && !array_key_exists('error', $rights)) { foreach ($rights as $key => $right) { $owner = NULL; $refRight = NULL; //Récupération de l'élément. On enlève le droit de la liste si l'élément n'est pas disponible $elementCriteria = array('_id' => new MongoId($right['idElement']), 'state' => (int) 1); if ($path != 'all') { $elementCriteria['serverPath'] = $path; } if ($elementName != NULL) { $elementCriteria['name'] = $elementName; } unset($right['idElement']); $element = self::findOne($elementCriteria); if (is_array($element) && !array_key_exists('error', $element)) { $idOwner = $element['idOwner']; unset($element['idOwner']); //récupération du refElement. On enlève le droit de la liste si le refElement n'est pas trouvé $refElement = $refElementManager->findById($element['idRefElement']); unset($element['idRefElement']); if (is_array($refElement) && !array_key_exists('error', $refElement)) { $element['refElement'] = $refElement; $right['element'] = $element; } else { unset($rights[$key]); continue; } } else { unset($rights[$key]); continue; } /* * Récupération de l'utilisateur propriétaire. * Si son état n'est pas à 1, le droit n'aurait pas du être à 1; donc on enlève ce droit de la liste. */ $userCriteria = array('_id' => new MongoId($idOwner), 'state' => (int) 1); $fieldsToReturn = array('firstName' => 1, 'lastName' => 1); unset($right['idUser']); $owner = $userManager->findOne($userCriteria, $fieldsToReturn); if (is_array($owner) && !array_key_exists('error', $owner)) { $right['owner'] = $owner; } else { unset($rights[$key]); continue; } //Récupération du refRight. S'il n'existe pas on enlève ce droit de la liste. $refRight = $refRightManager->findById($right['idRefRight']); unset($right['idRefRight']); if (is_array($refRight) && !array_key_exists('error', $refRight)) { $right['refRight'] = $refRight; } else { unset($rights[$key]); continue; } $rights[$key] = $right; } if (empty($rights)) { return array('error' => 'No match found.'); } } return $rights; }