Files
luos/workflow/engine/src/ProcessMaker/BusinessModel/Migrator/PMXPublisher.php

62 lines
2.0 KiB
PHP
Raw Normal View History

<?php
/**
* Created by PhpStorm.
* User: gustav
* Date: 3/18/16
* Time: 3:13 PM
*/
namespace ProcessMaker\BusinessModel\Migrator;
use ProcessMaker\Util;
class PMXPublisher
{
public function publish($filename, $data)
{
2016-03-21 15:55:35 -04:00
$parentDir = dirname($filename);
if (! is_dir($parentDir)) {
Util\Common::mk_dir($parentDir, 0775);
}
$outputFile = $this->truncateName($filename);
file_put_contents($outputFile, $data);
chmod($outputFile, 0755);
return basename($outputFile);
}
2016-03-21 15:55:35 -04:00
public function truncateName($outputFile, $dirName = true)
{
$limit = 200;
if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') {
$limit = 150;
}
2016-03-21 15:55:35 -04:00
if ($dirName) {
if (strlen(basename($outputFile)) >= $limit) {
2016-03-21 15:55:35 -04:00
$lastPos = strrpos(basename($outputFile), '.');
$fileName = substr(basename($outputFile), 0, $lastPos);
$newFileName = str_replace(".", "_", $fileName);
$newFileName = str_replace(" ", "_", $fileName);
$excess = strlen($newFileName) - $limit;
2016-03-21 15:55:35 -04:00
$newFileName = substr($newFileName, 0, strlen($newFileName) - $excess);
$newOutputFile = str_replace($fileName, $newFileName, $outputFile);
if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') {
2016-03-21 15:55:35 -04:00
$newOutputFile = str_replace("/", DIRECTORY_SEPARATOR . DIRECTORY_SEPARATOR, $newOutputFile);
}
$outputFile = $newOutputFile;
}
} else {
2016-03-21 15:55:35 -04:00
$outputFile = str_replace(".", "_", $outputFile);
$outputFile = str_replace(" ", "_", $outputFile);
if (strlen($outputFile) >= $limit) {
$excess = strlen($outputFile) - $limit;
2016-03-21 15:55:35 -04:00
$newFileName = substr($outputFile, 0, strlen($outputFile) - $excess);
$outputFile = $newFileName;
}
}
return $outputFile;
}
}