function shareWithAnonymous($idElement, $idOwner, $recipientEmail = '') { $idElement = new MongoId($idElement); $idOwner = new MongoId($idOwner); $elementPdoManager = new ElementPdoManager(); $elementCriteria = array('state' => (int) 1, '_id' => $idElement); $element = $elementPdoManager->findOne($elementCriteria); if ($element->getDownloadLink() == '') { /* * vérification que l'idOwner en param de la fonction est le même que celui de l'element, la gestion des partages * n'étant dans cette version qu'accessible au propriétaire de l'élément */ if ($idOwner == $element->getOwner()) { //vérification que l'email indiquée appartient bien à un utilisateur inscrit $userCriteria = array('state' => (int) 1, 'email' => $recipientEmail); $userPdoManager = new UserPdoManager(); $recipientUser = $userPdoManager->findOne($userCriteria); /* * Tentative de génération de lien de téléchargement anonyme pour un utilsateur existant. * L'interdire ici ne résoudra cependant que partiellement cet éventuel problème, * mais au moins on limite la permissivité. */ if ($recipientUser instanceof User) { return array('error' => 'The email you entered belongs to one of our users, please use the \'share with a user\' functionality.'); } $downloadLink = $elementPdoManager->generateGUID(); $updateDownloadLink = array('$set' => array('downloadLink' => $downloadLink)); $updateStatus = $elementPdoManager->update($elementCriteria, $updateDownloadLink); if (is_bool($updateStatus) && $updateStatus == TRUE) { return array('downloadLink' => $downloadLink); } else { return $updateStatus; } } else { return array('error' => 'You are not the owner of this element, you cannot share it.'); } } else { return array('error', 'There is already a download link for this element.'); } }