mirror of
https://github.com/alchemy-fr/Phraseanet.git
synced 2025-10-12 04:23:19 +00:00
141 lines
4.0 KiB
PHP
141 lines
4.0 KiB
PHP
<?php
|
|
|
|
/*
|
|
* This file is part of Phraseanet
|
|
*
|
|
* (c) 2005-2012 Alchemy
|
|
*
|
|
* For the full copyright and license information, please view the LICENSE
|
|
* file that was distributed with this source code.
|
|
*/
|
|
|
|
use Symfony\Component\Filesystem\Filesystem;
|
|
|
|
/**
|
|
*
|
|
* @license http://opensource.org/licenses/gpl-3.0 GPLv3
|
|
* @link www.phraseanet.com
|
|
*/
|
|
/* @var $Core \Alchemy\Phrasea\Core */
|
|
|
|
|
|
set_time_limit(0);
|
|
session_write_close();
|
|
ignore_user_abort(true);
|
|
|
|
$Core = require_once __DIR__ . '/../../lib/bootstrap.php';
|
|
$Request = \Symfony\Component\HttpFoundation\Request::createFromGlobals();
|
|
|
|
$registry = $Core->getRegistry();
|
|
|
|
$gatekeeper = gatekeeper::getInstance($Core);
|
|
$gatekeeper->require_session();
|
|
|
|
$events_mngr = $Core['events-manager'];
|
|
|
|
$user = $Core->getAuthenticatedUser();
|
|
|
|
$from = array('name' => $user->get_display_name(), 'email' => $user->get_email());
|
|
|
|
$titre = $Request->get("type") == "title" ? : false;
|
|
|
|
$exportname = "Export_" . date("Y-n-d") . '_' . mt_rand(100, 999);
|
|
|
|
if ($Request->get("ssttid", "") != "") {
|
|
$em = $Core->getEntityManager();
|
|
$repository = $em->getRepository('\Entities\Basket');
|
|
|
|
/* @var $repository \Repositories\BasketRepository */
|
|
$Basket = $repository->findUserBasket($Request->get('ssttid'), $Core->getAuthenticatedUser(), false);
|
|
|
|
$exportname = str_replace(' ', '_', $Basket->getName()) . "_" . date("Y-n-d");
|
|
}
|
|
|
|
$download = new set_export($Request->get('lst', ''), $Request->get('ssttid', ''));
|
|
|
|
$list = $download->prepare_export($Core->getAuthenticatedUser(), new Filesystem(), $Request->get('obj'), $titre, $Request->get('businessfields'));
|
|
$list['export_name'] = $exportname . '.zip';
|
|
$list['email'] = $Request->get("destmail", "");
|
|
|
|
$endate_obj = new DateTime('+1 day');
|
|
$endDate = $endate_obj;
|
|
|
|
$token = random::getUrlToken(\random::TYPE_EMAIL, false, $endDate, serialize($list));
|
|
|
|
//GET EMAILS
|
|
|
|
$dest = array();
|
|
|
|
$mails = explode(';', $Request->get("destmail", ''));
|
|
|
|
foreach ($mails as $email) {
|
|
if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
|
|
$dest[] = $email;
|
|
} else {
|
|
$params = array(
|
|
'usr_id' => $Core->getAuthenticatedUser()->get_id()
|
|
, 'lst' => $Request->get('lst', '')
|
|
, 'ssttid' => $Request->get('ssttid')
|
|
, 'dest' => $email
|
|
, 'reason' => \eventsmanager_notify_downloadmailfail::MAIL_NO_VALID
|
|
);
|
|
|
|
$events_mngr->trigger('__EXPORT_MAIL_FAIL__', $params);
|
|
}
|
|
}
|
|
|
|
//got some emails
|
|
if (count($dest) > 0 && $token) {
|
|
$reading_confirm_to = false;
|
|
|
|
if ($Request->get('reading_confirm') == '1') {
|
|
$reading_confirm_to = $user->get_email();
|
|
}
|
|
|
|
//BUILDING ZIP
|
|
|
|
$zipFile = $registry->get('GV_RootPath') . 'tmp/download/' . $token . '.zip';
|
|
set_export::build_zip(new Filesystem(), $token, $list, $zipFile);
|
|
|
|
$res = $dest;
|
|
|
|
$url = $registry->get('GV_ServerName') . 'mail-export/' . $token . '/';
|
|
|
|
foreach ($dest as $key => $email) {
|
|
if (($result = mail::send_documents(trim($email), $url, $from, $endate_obj, $Request->get("textmail"), $reading_confirm_to)) === true) {
|
|
unset($res[$key]);
|
|
}
|
|
}
|
|
|
|
//some email fails
|
|
if (count($res) > 0) {
|
|
foreach ($res as $email) {
|
|
$params = array(
|
|
'usr_id' => $Core->getAuthenticatedUser()->get_id()
|
|
, 'lst' => $Request->get('lst')
|
|
, 'ssttid' => $Request->get('ssttid')
|
|
, 'dest' => $email
|
|
, 'reason' => \eventsmanager_notify_downloadmailfail::MAIL_FAIL
|
|
);
|
|
|
|
$events_mngr->trigger('__EXPORT_MAIL_FAIL__', $params);
|
|
}
|
|
}
|
|
} elseif ( ! $token && count($dest) > 0) {
|
|
foreach ($res as $email) {
|
|
$params = array(
|
|
'usr_id' => $Core->getAuthenticatedUser()->get_id()
|
|
, 'lst' => $Request->get('lst')
|
|
, 'ssttid' => $Request->get('ssttid')
|
|
, 'dest' => $email
|
|
, 'reason' => 0
|
|
);
|
|
|
|
$events_mngr->trigger('__EXPORT_MAIL_FAIL__', $params);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|