10 foreach($aOptions
as $sKey => $sValue)
11 $sTemplate = str_replace(
"#" . $sKey .
"#", $sValue, $sTemplate);
30 $sFileName = $sUserId . TEMP_FILE_NAME;
32 copy($sImageUrl, $sFilePath . IMAGE_EXTENSION);
33 @chmod($sFilePath, 0666);
36 if(!
grabImages($sFilePath . IMAGE_EXTENSION, $sFilePath, 0,
false, $aFilesConfig))
39 return $sFilesUrl . $sFileName . THUMB_FILE_NAME . IMAGE_EXTENSION;
47 $sFileName = $sUserId . TEMP_FILE_NAME . THUMB_FILE_NAME . IMAGE_EXTENSION;
54 function embedVideo($sUserId, $sVideoId, $iDuration, $aFilesConfig = array())
64 $sStatus =
'on' ==
getParam(
'videoAutoApprove') ? STATUS_APPROVED : STATUS_DISAPPROVED;
65 getResult(
"INSERT INTO `" .
$sDBModule .
"Files` SET `Date`='" .
time() .
"', `Owner`='" . $sUserId .
"', `Status`='" .
$sStatus .
"', `Source`='youtube', `Video`='" . $sVideoId .
"', `Time`='" . ($iDuration * 1000) .
"'");
70 foreach ($aFilesConfig
as $a)
71 if (isset($a[
'image']) && $a[
'image'])
86 getResult(
"INSERT INTO `" .
$sDBModule .
"Files` SET `Date`='" .
time() .
"', `Owner`='" . $sUserId .
"', `Status`='" . STATUS_PENDING .
"'");
92 foreach ($aFilesConfig
as $a)
93 if (isset($a[
'image']) && $a[
'image'])
99 function uploadVideo($sFilePath, $sUserId, $isMoveUploadedFile =
false, $sImageFilePath =
'', $sFileName =
'', $aFilesConfig = array())
107 $sTempFileName =
$sFilesPath . $sUserId . TEMP_FILE_NAME;
108 @unlink($sTempFileName);
109 if(file_exists($sFilePath) && filesize($sFilePath) > 0) {
110 if(is_uploaded_file($sFilePath)) {
111 move_uploaded_file($sFilePath, $sTempFileName);
113 @rename($sFilePath, $sTempFileName);
115 @chmod($sTempFileName, 0666);
116 if(file_exists($sTempFileName) && filesize($sTempFileName)>0) {
118 if(!
grabImages($sTempFileName, $sTempFileName, 0,
false, $aFilesConfig))
123 $sUriPart =
empty($sUri) ?
"" :
"`Uri`='" . $sUri .
"', ";
125 getResult(
"INSERT INTO `" .
$sDBModule .
"Files` SET `Title`='" . $sFileName .
"', " . $sUriPart .
"`Description`='" . $sFileName .
"', `Date`='" .
time() .
"', `Owner`='" . $sUserId .
"', `Status`='" . STATUS_ONHOLD .
"'");
129 foreach ($aFilesConfig
as $a)
130 if (isset($a[
'image']) && $a[
'image'])
144 $sPlayFile =
$sFilesPath . $sUserId . TEMP_FILE_NAME . FLV_EXTENSION;
145 if(file_exists($sPlayFile) && filesize($sPlayFile)>0) {
152 $sUriPart =
empty($sUri) ?
"" :
"`Uri`='" . $sUri .
"', ";
153 getResult(
"INSERT INTO `" .
$sDBModule .
"Files` SET `Categories`='" . $sCategory .
"', `Title`='" .
$sTitle .
"', " . $sUriPart .
"`Tags`='" .
$sTags .
"', `Description`='" .
$sDesc .
"', `Date`='" .
time() .
"', `Owner`='" . $sUserId .
"', `Status`='" . STATUS_PENDING .
"'");
158 foreach ($aFilesConfig
as $a)
159 if (isset($a[
'image']) && $a[
'image'])
175 $sUriPart =
empty($sUri) ?
"" :
"`Uri`='" . $sUri .
"', ";
179 getResult(
"UPDATE `" .
$sDBModule .
"Files` SET `Categories`= ?, `Title`= ?, " . $sUriPart .
"`Tags`= ?, `Description`= ? WHERE `ID`= ?", [
187 return $oDb->getAffectedRows() > 0 ?
true :
false;
194 if(!file_exists($sInputFile) || filesize($sInputFile)==0) {
195 if(strpos($sInputFile,
$sFilesPath) === FALSE)
return $sInputFile;
196 else return VIDEO_SIZE_16_9;
200 $sTmpl =
prepareCommand(
$GLOBALS[
'aConvertTmpls'][
'image'], array(
"input" => $sInputFile,
"size" =>
"",
"second" => 0,
"output" =>
$sFile));
202 $aSize = getimagesize(
$sFile);
204 $iRelation = $aSize[0]/$aSize[1];
205 $i169Dif = abs($iRelation - 16/9);
206 $i916Dif = abs($iRelation - 9/16);
207 $i43Dif = abs($iRelation - 4/3);
209 if($i43Dif > $i916Dif)
return VIDEO_SIZE_9_16;
210 else if($i169Dif > $i43Dif)
return VIDEO_SIZE_4_3;
211 else return VIDEO_SIZE_16_9;
213 return VIDEO_SIZE_16_9;
221 $sSound = $bUsex264 ?
" -acodec aac -strict experimental -b:a 128k -ar 44100 " :
" -acodec libmp3lame -b:a 128k -ar 44100 ";
233 $iBitrate = (int)
getParam(
'videoBitrate');
242 popen($sCommand,
"r");
254 $sResultFile = $sTempFile . (
usex264() ? M4V_EXTENSION : FLV_EXTENSION);
257 if(!file_exists($sResultFile) || filesize($sResultFile)==0) {
280 $sSourceFile = $sTempFile;
283 $sTmpl =
prepareCommand(
$GLOBALS[
'aConvertTmpls'][$bUseX264 ?
"playX264" :
"play"], array(
"bitrate" =>
getVideoBitrate(),
"audio_options" => $bUseX264 ?
" -acodec aac -strict experimental -b:a 128k -ar 44100 " :
"-acodec libmp3lame -b:a 128k -ar 44100 "));
285 if(file_exists($sTempFile) && filesize($sTempFile)>0)
288 $sSourceFile .= FLV_EXTENSION;
289 if(file_exists($sSourceFile) && filesize($sSourceFile)>0)
292 if(
empty($sTmpl))
return false;
295 getResult(
"UPDATE `" .
$sDBModule .
"Files` SET `Date`='" .
time() .
"', `Status`='" . STATUS_PROCESSING .
"' WHERE `ID`='" .
$sId .
"'");
302 'ffmpeg' =>
$GLOBALS[
'sFfmpegPath'],
303 'tmp_file' => $sTempFile,
311 $sAutoApprove =
'on' ==
getParam(
'videoAutoApprove') ? STATUS_APPROVED : STATUS_DISAPPROVED;
312 getResult(
"UPDATE `" .
$sDBModule .
"Files` SET `Date`='" .
time() .
"', `Status`='" . $sAutoApprove .
"' WHERE `ID`='" .
$sId .
"'");
320 function grabImages($sInputFile, $sOutputFile, $iSecond = 0, $bForse =
false, $aFilesConfig = array())
326 foreach ($aFilesConfig
as $a) {
327 if (!isset($a[
'image']) || !$a[
'image'])
331 if ($fRatio && isset($a[
'square']) && $a[
'square'] && isset($a[
'w']) && $a[
'w'] && $fRatio < 1)
332 $sResize =
"-vf crop=out_h=in_w -s {$a['w']}x{$a['w']}";
333 elseif ($fRatio && isset($a[
'square']) && $a[
'square'] && isset($a[
'w']) && $a[
'w'])
334 $sResize =
"-vf crop=out_w=in_h -s {$a['w']}x{$a['w']}";
335 elseif (isset($a[
'w']) && isset($a[
'h']) && $a[
'w'] && $a[
'h'])
336 $sResize =
"-s {$a['w']}x{$a['h']}";
338 if ($sInputFile != $sOutputFile . $a[
'postfix'])
339 @unlink($sOutputFile . $a[
'postfix']);
341 if (!
grabImage($sInputFile, $sOutputFile . $a[
'postfix'], $sResize, $iSecond, $bForse))
345 $aSize = getimagesize($sOutputFile . $a[
'postfix']);
346 $fRatio = $aSize[0]/$aSize[1];
353 function grabImage($sInputFile, $sOutputFile, $sSize =
"", $iSecond = 0, $bForse =
false)
355 if(!$bForse && file_exists($sOutputFile) && filesize($sOutputFile) > 0)
362 $aSeconds = $iSecond != 0 ? array($iSecond) : array(0, 3, 5, 0);
363 foreach($aSeconds
as $iSecond) {
368 $aRgb = $oImage->getAverageColor($sOutputFile);
369 $fRgb = ($aRgb[
'r'] + $aRgb[
'g'] + $aRgb[
'b']) / 3;
370 if($fRgb > 32 && $fRgb < 224)
381 return prepareCommand($aConvertTmpls[
"image"], array(
"input" => $sInputFile,
"second" => $iSecond,
"size" => (
empty($sSize) ?
"" : $sSize),
"output" => $sOutputFile));
391 $sTempFile = $sUserId . TEMP_FILE_NAME;
394 if($bSourceOnly)
return;
396 foreach ($aFilesConfig
as $a)
417 if(
$oDb->getAffectedRows())
423 foreach ($aFilesConfig
as $a)
424 $bResult |= @unlink($sFileName . $a[
'postfix']);
436 $iCurrentTime =
time();