Bibliotecas Avulsa

Boa Tarde.

Colocar um modulo para podermos criar nossas bibliotecas, e quando compilado o código a mesma ir para pasta da aplicação que foi atribuída. Fazendo isso podemos criar nossos próprios eventos Ajax, chamando os arquivos na pasta da aplicação, ficando mais facil de entender o código e mais organizado na hora da publicação. Pois hoje se quisermos fazer isso temos que criar um arquivo fora do ScriptCase e coloca-lo em uma pasta separada, além da dificuldade de edição do mesmo…

Talvez seja uma sugestão desnecessária, mais não deixa de ser uma. rsrs

faço isso tranquilamente hoje, e vai tudo junto na publicação.

Veja essa biblioteca Incorporada ao SC usando uma arquivo php externo).
Nesse caso, eu uso uma única pasta padrão( _lib/mylibs) para todos os meus scripts externos.
No caso, o script externo é: downloadfile.php
Nas selecionar a biblioteca na aplicação e fazer a chamada da função GetDownloadFile no evento onscriptinit.
Resumindo, eu escrevo o script (minha biblioteca) dinamicamente no ambiente de produção caso ela não exista.
Hoje estou migrando para usar as bibliotecas em banco de dados.

[code]<?php
Function GetDownloadFile() {

if(!is_dir("…/_lib/mylibs")) {
mkdir("…/_lib/mylibs",0700);
}
if(!file_exists("…/_lib/mylibs/downloadfile.php")) {
$fp = fopen("…/_lib/mylibs/downloadfile.php", “w”);

fwrite($fp, '<?php
function output_file($file, $name, $mime_type="")
{
$file_extension = strtolower(substr(strrchr($file,"."),1));
if($file_extension==“php”) die(“Arquivo Inválido para Download :(”);

if(!is_readable($file)) die(“Arquivo não encontrado!”);

$size = filesize($file);
$name = rawurldecode($name);

$known_mime_types=array(
“pdf” => “application/pdf”,
“txt” => “text/plain”,
“html” => “text/html”,
“htm” => “text/html”,
“exe” => “application/octet-stream”,
“zip” => “application/zip”,
“doc” => “application/msword”,
“xls” => “application/vnd.ms-excel”,
“ppt” => “application/vnd.ms-powerpoint”,
“gif” => “image/gif”,
“png” => “image/png”,
“jpeg”=> “image/jpg”,
“jpg” => “image/jpg”,
“php” => “********”
);

if($mime_type==""){
if(array_key_exists($file_extension, $known_mime_types)){
$mime_type=$known_mime_types[$file_extension];
} else {
$mime_type=“application/force-download”;
};
};

@ob_end_clean();

if(ini_get(“zlib.output_compression”))
ini_set(“zlib.output_compression”, “Off”);

header(“Content-Type: “.$mime_type.”;name=’”.$file."’");
header(“Content-Disposition: attachment; filename=”.$name);
header(“Content-Transfer-Encoding: binary”);
header(“Accept-Ranges: bytes”);
header(“Cache-control: private”);
header(“Pragma: private”);
header(“Expires: Mon, 26 Jul 1997 05:00:00 GMT”);

if(isset($_SERVER[“HTTP_RANGE”]))
{
list($a, $range) = explode("=",$_SERVER[“HTTP_RANGE”],2);
list($range) = explode(",",$range,2);
list($range, $range_end) = explode("-", $range);
$range=intval($range);
if(!$range_end) {
$range_end=$size-1;
} else {
$range_end=intval($range_end);
}

$new_length = $range_end-$range+1;
header(“HTTP/1.1 206 Partial Content”);
header(“Content-Length: $new_length”);
header(“Content-Range: bytes $range-$range_end/$size”);
} else {
$new_length=$size;
header("Content-Length: ".$size);
}

$chunksize = 1*(1024*1024); //you may want to change this
$bytes_send = 0;
if ($file = fopen($file, “r”))
{
if(isset($_SERVER[“HTTP_RANGE”]))
fseek($file, $range);

while(!feof($file) &&
(!connection_aborted()) &&
($bytes_send<$new_length)
)
{
$buffer = fread($file, $chunksize);
print($buffer);
flush();
$bytes_send += strlen($buffer);
}
fclose($file);
} else die(“Erro - Não foi possível abrir arquivo.”);

}

set_time_limit(0);
if (!ISSET($_GET[“mimetype”])) $_GET[“mimetype”]=“Application/force-download”;
output_file($_GET[“filein”],$_GET[“fileout”],$_GET[“mimetype”]);
die();

?>’);

fclose($fp);

}

}
?>[/code]

Hum…

Deixa eu ver se entendi!!

Ai vc está criando seu arquivo em uma função. correto!
Se o arquivo não existir é criado.
Para ser usado futuramente no seus módulos do sistema…

Se for isso, eu até pensei em fazer assim, criar meu arquivo com uma função fopen na pasta da
aplicação. Só que é ruim a edição de texto.

Se tivesse como criarmos o arquivo pelo scriptcase seria uma beleza!! rsrs
Tinhamos uma boa edição e um controle legal dos aquivos…

Se não for oque achei… me fale mais do seu arquivo.

Obrigado Haroldo!

Isso mesmo, mas não vejo dificuldade em editar o arquivo.

Olá Haroldo,

Desculpe reabrir esse tópico e perdoe minha ignorancia…

Qual o problema de colocar esse código gerado dinamicamente em uma blank?

Tulio.

Nenhum, mas para quê criar uma aplicação blank se você pode ter numa biblioteca.

Na verdade uma script php eh criado, mas com o código mais puro e simples possível o que comparado a uma blank ( app mais simples do sc) é um código muito bem menor.

Utilizo da seguinte forma:

Tenho minhas bibliotecas externas em uma pasta externa ao projeto e criei uma app para, ao publicar o projeto, copiar essa pasta para o mesmo.

Obrigado Haroldo.

Olá Wennys, interessante essa forma.

Valeu!

Boa noite,

Discutirei sua sugestão com nossa equipe.

att,
Bernhard Bernsmann