本文整理汇总了PHP中ProjectConfiguration::getEpisodeAudioFileLocalDirectory方法的典型用法代码示例。如果您正苦于以下问题:PHP ProjectConfiguration::getEpisodeAudioFileLocalDirectory方法的具体用法?PHP ProjectConfiguration::getEpisodeAudioFileLocalDirectory怎么用?PHP ProjectConfiguration::getEpisodeAudioFileLocalDirectory使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ProjectConfiguration
的用法示例。
在下文中一共展示了ProjectConfiguration::getEpisodeAudioFileLocalDirectory方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: executeUpload_audio
public function executeUpload_audio(sfWebRequest $request)
{
$id = $request->getParameter('id');
$filename = $request->getParameter('name');
$this->forward404Unless($id && $filename);
$valid_episode = $this->validateEpisodeForAudioUpload($id, $filename);
$this->forward404Unless($valid_episode);
// Settings
$targetDir = rtrim(ProjectConfiguration::getEpisodeAudioFileLocalDirectory(), '/');
//$targetDir = 'uploads/';
//$cleanupTargetDir = false; // Remove old files
//$maxFileAge = 60 * 60; // Temp file age in seconds
// 5 minutes execution time
@set_time_limit(5 * 60);
$fileName = $this->getUser()->getAttribute('valid_episode_audio_file_hash', '');
return $this->handlePlupload($request, $targetDir, $fileName);
}
示例2: executeAudio
public function executeAudio(sfWebRequest $request)
{
$auth_key = $this->getUser()->getApiAuthKey();
$episode_data = Api::getInstance()->setUser($auth_key)->get('episode/' . $request->getParameter('id'), true);
$episode = ApiDoctrine::createObject('Episode', $episode_data['body']);
$this->forward404Unless($episode && $episode->getId());
/* @var $episode Episode */
// If the episode's file is remote, everyone is allowed to download the file from Amazon
if ($episode->getFileIsRemote()) {
$this->redirect($episode->getRemoteUrl());
}
// If the episode is not released, only the admins and moderators can view it.
$permission = $this->verifyPermissionsForCurrentUser($episode->getSubredditId(), array('admin', 'moderator'));
// Unless the owner of the episode is trying to download it. That's okay.
$assignment_data = Api::getInstance()->setUser($auth_key)->get('episodeassignment/' . $episode->getEpisodeAssignmentId(), true);
$assignment = ApiDoctrine::createQuickObject($assignment_data['body']);
$this->forward404Unless($permission || $assignment->getSfGuardUserId() == $this->getUser()->getApiUserId());
// Check to make sure that the local file is there; if not try to get it from the Application bucket.
$file_location = rtrim(ProjectConfiguration::getEpisodeAudioFileLocalDirectory(), '/') . '/';
if (!file_exists($file_location . $episode->getAudioFile())) {
$episode->pullAudioFileFromApplicationBucket();
$this->forward404If(!file_exists($file_location . $episode->getAudioFile()));
}
// Now that we're serving the local file, let's set up the server to serve it.
header('Content-Disposition: attachment;filename=' . $episode->getNiceFilename());
switch ($request->getParameter('format')) {
case "wma":
header("Content-Type: audio/x-ms-wma");
break;
case "m4a":
header("Content-Type: audio/mp4a-latm");
break;
case "ogg":
header("Content-Type: application/ogg");
break;
default:
case 'mp3':
header("Content-Type: audio/mpeg");
break;
}
// Check if we're using nginx and if nxginx and XSendfile are installed and use that
if (array_key_exists('SERVER_SOFTWARE', $_SERVER) && preg_match('/nginx/i', $_SERVER['SERVER_SOFTWARE'])) {
header("X-Accel-Redirect: /audio/temp/" . $episode->getAudioFile());
die;
}
// If not, check if Apache has mod_xsendfile and use that
if (array_key_exists('SERVER_SOFTWARE', $_SERVER) && preg_match('/apache/i', $_SERVER['SERVER_SOFTWARE']) && in_array('mod_xsendfile', apache_get_modules())) {
header('X-Sendfile: ' . sfConfig::get('sf_data_dir') . '/temp/' . $episode->getAudioFile());
die;
}
// If not that, then we'll try and see if we have lighttpd
if (array_key_exists('SERVER_SOFTWARE', $_SERVER) && preg_match('/lighttpd/i', $_SERVER['SERVER_SOFTWARE'])) {
header('X-LIGHTTPD-send-file: ' . sfConfig::get('sf_data_dir') . '/temp/' . $episode->getAudioFile());
die;
}
// Otherwise, let's waste time by loading the file into memory and serving it through PHP (horror! Not a joke!)
if (sfConfig::get('app_enable_slow_audio_download', false)) {
$filename = sfConfig::get('sf_data_dir') . '/temp/' . $episode->getAudioFile();
header("Content-type: application/octet-stream");
header('Content-Disposition: attachment; filename="' . basename($filename) . '"');
header("Content-Length: " . filesize($filename));
readfile($filename);
die;
}
}
示例3: save
public function save(Doctrine_Connection $conn = null)
{
if (!$this->isNew() && !$this->getSkipBackup() && in_array('graphic_file', $this->_modified) && $this->_get('graphic_file')) {
$file_location = rtrim(ProjectConfiguration::getEpisodeGraphicFileLocalDirectory(), '/') . '/';
$filename = $this->_get('graphic_file');
if (file_exists($file_location . $filename)) {
ProjectConfiguration::registerAws();
$response = $this->saveFileToApplicationBucket($file_location, $filename, 'upload', AmazonS3::ACL_PUBLIC);
if ($response->isOK()) {
unlink($file_location . $filename);
}
}
}
if (!$this->isNew() && !$this->getSkipBackup() && in_array('audio_file', $this->_modified) && $this->_get('audio_file')) {
$file_location = rtrim(ProjectConfiguration::getEpisodeAudioFileLocalDirectory(), '/') . '/';
$filename = $this->_get('audio_file');
if (file_exists($file_location . $filename)) {
ProjectConfiguration::registerAws();
$response = $this->saveFileToApplicationBucket($file_location, $filename, 'audio');
}
}
if (!$this->isNew() && in_array('is_submitted', $this->_modified) && $this->_get('is_submitted')) {
/* The episode has been submitted. We need to send an email about
* it to the subreddit moderators.
*/
$types = array('moderator');
$memberships = sfGuardUserSubredditMembershipTable::getInstance()->getAllBySubredditAndMemberships($this->getSubredditId(), $types);
$initial_is_submitted = $this->_get('is_submitted');
$initial_submitted_at = $this->_get('submitted_at');
foreach ($memberships as $membership) {
$user = $membership->getSfGuardUser();
$parameters = array('user_id' => $membership->getSfGuardUserId(), 'episode_id' => $this->getIncremented());
$prefer_html = $user->getPreferHtml();
$address = $user->getEmailAddress();
$name = $user->getPreferredName() ? $user->getPreferredName() : $user->getFullName();
$email = EmailTable::getInstance()->getFirstByEmailTypeAndLanguage('EpisodeApprovalPending', $user->getPreferredLanguage());
$subject = $email->generateSubject($parameters);
$body = $email->generateBodyText($parameters, $prefer_html);
$from = sfConfig::get('app_email_address', ProjectConfiguration::getApplicationName() . ' <' . ProjectConfiguration::getApplicationEmailAddress() . '>');
AppMail::sendMail($address, $from, $subject, $body, $prefer_html ? $body : null);
$user->addLoginMessage('You have Episodes awaiting your approval.');
}
// @todo: The previous foreach loop sets the 'is_submitted' and 'submitted_at' columns to null. I don't know why.
$this->_set('is_submitted', $initial_is_submitted);
$this->_set('submitted_at', $initial_submitted_at);
}
return parent::save($conn);
}
示例4: executeUpload
/**
* Retrieves a collection of Episode objects
* @param sfWebRequest $request a request object
* @return string
*/
public function executeUpload(sfWebRequest $request)
{
// PUT makes more sense, but I am limited currently by my API to POST.
$this->forward404Unless($request->isMethod(sfRequest::POST));
$content = $request->getContent();
// Restores backward compatibility. Content can be the HTTP request full body, or a form encoded "content" var.
if (strpos($content, 'content=') === 0 || $request->hasParameter('content')) {
$content = $request->getParameter('content');
}
$request->setRequestFormat('html');
try {
$parameters = $request->getParameterHolder()->getAll();
$params = $this->getApiAuthFieldValues($parameters, $content);
$this->validateUpload($content, $request);
} catch (Exception $e) {
$this->getResponse()->setStatusCode($e->getCode() ? $e->getCode() : 406);
$serializer = $this->getSerializer();
$this->getResponse()->setContentType($serializer->getContentType());
$error = $e->getMessage();
// event filter to enable customisation of the error message.
$result = $this->dispatcher->filter(new sfEvent($this, 'sfDoctrineRestGenerator.filter_error_output'), $error)->getReturnValue();
if ($error === $result) {
$error = array(array('message' => $error));
$this->output = $serializer->serialize($error, 'error');
} else {
$this->output = $serializer->serialize($result);
}
$this->setTemplate('index');
return sfView::SUCCESS;
}
// We move the file from its temporary location to the Episode in question.
if ($this->_nice_filename && $this->_temporary_file_location) {
$targetDir = rtrim(ProjectConfiguration::getEpisodeAudioFileLocalDirectory(), '/');
$pattern = '/\\.([^\\.]+)$/';
preg_match($pattern, $filename, $matches);
$extension = array_key_exists(1, $matches) ? $matches[1] : 'mp3';
// We don't need the upload hash because we're not uploading AJAX-like in real time.
$hash = sha1(microtime() . $this->object->getIncremented());
$fileName = $hash . '.' . $extension;
//Move the file.
rename($this->_temporary_file_location, $targetDir . '/' . $fileName);
// update and save it
$this->object->setAudioFile($fileName);
$this->object->setNiceFilename($this->_nice_filename);
}
return $this->doSave($params);
}