Example #1
0
/**
 * 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;
 }