Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
e53eac8
composer: bumped compatibility with nette ~2.4 (thanks @akyn84, @lubo)
jkuchar Sep 20, 2016
9c46056
got rid of Environment (introduced dependency on Container) (thanks @…
jkuchar Sep 20, 2016
570f0d6
latter: {? replaced with {php (thanks @akyn84, @lubo)
jkuchar Sep 20, 2016
6b06f4c
model: introduced second implementation of driver for MySQL over Nett…
jkuchar Sep 20, 2016
fb01df6
.gitignore: vendor, .idea
jkuchar Sep 20, 2016
27d2bc9
MySQL driver: removed
landrisek Sep 24, 2016
db98b25
NetteDatabaseModel: removed magic configuration from container (+ ref…
jkuchar Oct 4, 2016
d4da69a
NetteDatabase/Queues.php: added depencency on Container
jkuchar Oct 4, 2016
30a814a
MultipleFileUpload: added dependency on container
jkuchar Oct 4, 2016
bd73dcb
DI extension: introduced simple extension
landrisek Sep 25, 2016
91614d6
MultipleFileUpload: explicit register() function parameters
jkuchar Oct 4, 2016
7c2d610
Queues: ???
jkuchar Oct 4, 2016
683510a
UI\Registrator: requires HttpRequest insted of container
landrisek Sep 25, 2016
4cbaf8b
UI\AbstractInterface: requires HttpRequest instead of Container
jkuchar Oct 4, 2016
d3a6884
Queues: fixed edge case
Oct 3, 2016
6f9352f
notes
jkuchar Oct 4, 2016
c763cf5
MultipleFileUpload: formatting
jkuchar Oct 4, 2016
e53bc11
formatting
jkuchar Oct 4, 2016
27ef5c5
refactoring: removed wrongly used ternary operator
jkuchar Oct 4, 2016
d30cb32
DI model
landrisek Oct 16, 2016
9aa59f3
[Extension]
landrisek Oct 22, 2016
adf2552
[Nette\Environment][DI connection]
landrisek Nov 4, 2016
3f573d9
[Nette\Environment][DI connection][sqlite][swf]
landrisek Nov 5, 2016
3820012
[NetteDatabase php 5.6 cmopatibility]
Nov 14, 2016
1494fbf
todos and comments
jkuchar Jan 28, 2017
9ac871b
DibiDriver: removed static queues variable
landrisek Feb 4, 2017
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
/nbproject/
/composer.lock
/Nette/
/Nette/
.idea/
vendor/
52 changes: 52 additions & 0 deletions MultipleFileUpload/Extension.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
<?php

namespace MultipleFileUpload;

use Nette;

class Extension extends Nette\DI\CompilerExtension
{

public function loadConfiguration() {
$builder = $this->getContainerBuilder();
$this->compiler->parseServices($builder, $this->loadFromFile(__DIR__ . '/config.neon'));
}


public function beforeCompile() {
parent::beforeCompile();
}


public function afterCompile(Nette\PhpGenerator\ClassType $class) {
$initialize = $class->methods['initialize'];

// add ->addMultipleFileUpload shortcut into forms
$initialize->addBody(
'Nette\Forms\Container::extensionMethod(
"\Nette\Forms\Container::addMultipleFileUpload",
function (\Nette\Forms\Container $_this, $name, $label = null, $maxFileSize = 25) {
return $_this[$name] = new MultipleFileUpload\MultipleFileUpload($label, $maxFileSize, $this->getByType(?), $this->getByType(?));
}
);',
['Nette\Http\IRequest', 'MultipleFileUpload\UI\Registrator']
);

$initialize->addBody(
'MultipleFileUpload\MultipleFileUpload::init(
$this->getByType(?), $this->getByType(?), $this->getByType(?)
);',
['MultipleFileUpload\Model\IQueues', 'Nette\Http\IRequest', 'MultipleFileUpload\UI\Registrator']
);

$initialize->addBody(
'$this->getService(?)->onStartup[] = [?, ?];',
['application', 'MultipleFileUpload\MultipleFileUpload', 'handleUploads']
);
$initialize->addBody(
'$this->getService(?)->onShutdown[] = [?, ?];',
['application', 'MultipleFileUpload\MultipleFileUpload', 'cleanCache']
);
}

}
19 changes: 7 additions & 12 deletions MultipleFileUpload/Model/Dibi/Queue.php
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@

use dibi,
MultipleFileUpload\Model\BaseQueue,
Nette\Environment,
Nette\Http\FileUpload,
Nette\InvalidStateException;

Expand Down Expand Up @@ -94,23 +93,19 @@ function updateFile($name, $chunk, FileUpload $file = null)
*/
function getUploadedFilesTemporaryPath()
{
if (!Queues::$uploadsTempDir) {
Queues::$uploadsTempDir = Environment::expand("%tempDir%" . DIRECTORY_SEPARATOR . "uploads-MFU");
if (!$this->getQueuesModel()->uploadsTempDir) {
throw new InvalidStateException("Directory for temp files is not set.");
}

if (!file_exists(Queues::$uploadsTempDir)) {
mkdir(Queues::$uploadsTempDir, 0777, true);
if (!file_exists($this->getQueuesModel()->uploadsTempDir)) {
mkdir($this->getQueuesModel()->uploadsTempDir, 0777, true);
}

if (!is_writable(Queues::$uploadsTempDir)) {
Queues::$uploadsTempDir = Environment::expand("%tempDir%");
}

if (!is_writable(Queues::$uploadsTempDir)) {
if (!is_writable($this->getQueuesModel()->uploadsTempDir)) {
throw new InvalidStateException("Directory for temp files is not writable!");
}

return Queues::$uploadsTempDir;
return $this->getQueuesModel()->uploadsTempDir;
}


Expand Down Expand Up @@ -163,4 +158,4 @@ function getLastAccess()
}


}
}
53 changes: 19 additions & 34 deletions MultipleFileUpload/Model/Dibi/Queues.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,9 @@

namespace MultipleFileUpload\Model\Dibi;

use dibi,
use DibiConnection,
MultipleFileUpload\Model\BaseQueues,
MultipleFileUpload\Model\IQueue,
Nette\InvalidStateException;
MultipleFileUpload\Model\IQueue;

/**
* Multiple File Uploader driver for Dibi
Expand All @@ -28,13 +27,13 @@ class Queues extends BaseQueues
* Path to directory of uploaded files (temp)
* @var string
*/
public static $uploadsTempDir;
public $uploadsTempDir;

/**
* Connection
* @var \DibiConnection
* @var DibiConnection
*/
public static $dibiConnection;
public $connection;


/**
Expand All @@ -45,38 +44,24 @@ function initialize()

}


// <editor-fold defaultstate="collapsed" desc="Database functions">

/**
* Gets dibi connection
* @return \DibiConnection
*/
function getConnection()
public function __construct(string $tempDir, DibiConnection $conection)
Copy link

@toretak toretak Apr 12, 2018

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

only note: the latest version of dibi has Dibi\Connection instead of DibiConnection.. it would be nice to be compatible with latest dibi

{
if (!self::$dibiConnection) {
self::$dibiConnection = dibi::getConnection();
$this->uploadsTempDir = $tempDir;
if(!file_exists($this->uploadsTempDir)) {
mkdir($this->uploadsTempDir, 0775, TRUE);
}
return self::$dibiConnection;
$this->conection = $conection;
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

the class variable is called connection

so it should be

$this->connection = $conection;

}


/**
* Executes query
* @return \DibiResult
* @throws InvalidStateException
* @return DibiConnection
*/
function query()
public function getConnection()
{
$params = func_get_args();
return call_user_func_array(
array($this->getConnection(), 'query'), $params
);
return $this->database;
}


// </editor-fold>



/**
* Gets queue (create if needed)
* @param string $id
Expand All @@ -95,7 +80,7 @@ function getQueue($id)
*/
function createQueueObj($queueID)
{
$queue = new Queue();
$queue = new Queue(); // todo: remove setQueuesModel --> move to __construct
$queue->setQueuesModel($this);
$queue->setQueueID($queueID);
$queue->initialize();
Expand All @@ -108,13 +93,13 @@ function createQueueObj($queueID)
*/
function cleanup()
{
$this->getConnection()->begin();
$this->connection->begin();
foreach ($this->getQueues() AS $queue) {
if ($queue->getLastAccess() < time() - $this->getLifeTime()) {
$queue->delete();
}
}
$this->getConnection()->commit();
$this->connection->commit();
}


Expand All @@ -136,4 +121,4 @@ function getQueues()
}


}
}
2 changes: 1 addition & 1 deletion MultipleFileUpload/Model/IQueue.php
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ function addFileManually($name, $chunk, $chunks);
* @param type $chunk
* @param FileUpload $file
*/
function updateFile($name, $chunk, FileUpload $file = null);
function updateFile($name, $chunk, FileUpload $file);
Copy link
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@akyn84 why?

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I put this question conversely: is there special reason to have optional parameter?

Copy link
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Exactly. :)


/**
* Gets all files in queue
Expand Down
16 changes: 6 additions & 10 deletions MultipleFileUpload/Model/NetteDatabase/Queue.php
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@
namespace MultipleFileUpload\Model\NetteDatabase;

use MultipleFileUpload\Model\BaseQueue,
Nette\Environment,
Nette\Http\FileUpload,
Nette\InvalidStateException;

Expand Down Expand Up @@ -68,8 +67,9 @@ function addFileManually($name, $chunk, $chunks)

function updateFile($name, $chunk, FileUpload $file = null)
{
$this->getConnection()->beginTransaction();
$selection = $this->getConnection()->table($this->getFilesTable())->where('queueID', $this->getQueueID())->where('name', $name);
$connection = $this->getConnection();
$connection->beginTransaction();
$selection = $connection->table($this->getFilesTable())->where('queueID', $this->getQueueID())->where('name', $name);

$data = array("chunk" => $chunk);
if ($file){
Expand All @@ -79,7 +79,7 @@ function updateFile($name, $chunk, FileUpload $file = null)
foreach ($selection as $row){
$row->update($data);
}
$this->getConnection()->commit();
$connection->commit();
}


Expand All @@ -90,17 +90,13 @@ function updateFile($name, $chunk, FileUpload $file = null)
function getUploadedFilesTemporaryPath()
{
if (!Queues::$uploadsTempDir) {
Queues::$uploadsTempDir = Environment::expand("%tempDir%" . DIRECTORY_SEPARATOR . "uploads-MFU");
throw new InvalidStateException("Directory for temp files is not set.");
}

if (!file_exists(Queues::$uploadsTempDir)) {
mkdir(Queues::$uploadsTempDir, 0777, true);
}

if (!is_writable(Queues::$uploadsTempDir)) {
Queues::$uploadsTempDir = Environment::expand("%tempDir%");
}

if (!is_writable(Queues::$uploadsTempDir)) {
throw new InvalidStateException("Directory for temp files is not writable!");
}
Expand Down Expand Up @@ -152,4 +148,4 @@ function getLastAccess()
}


}
}
10 changes: 7 additions & 3 deletions MultipleFileUpload/Model/NetteDatabase/Queues.php
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@

use MultipleFileUpload\Model\BaseQueues,
MultipleFileUpload\Model\IQueue,
Nette\InvalidStateException;
Nette;

/**
* Multiple File Uploader driver for Nette\Database
Expand Down Expand Up @@ -48,8 +48,12 @@ public function getFilesTable(){
return self::$filesTable;
}

public function __construct(\Nette\Database\Context $database)
public function __construct($tempDir, Nette\Database\Context $database)
{
self::$uploadsTempDir = $tempDir;
if(!file_exists(self::$uploadsTempDir)) {
mkdir(self::$uploadsTempDir, 0775, TRUE);
}
$this->database = $database;
}

Expand Down Expand Up @@ -122,4 +126,4 @@ function getQueues()
}


}
}
1 change: 0 additions & 1 deletion MultipleFileUpload/Model/SQLite/.gitignore

This file was deleted.

Loading