General improvements
This commit is contained in:
parent
9359564ea8
commit
c88d289e82
@ -19,21 +19,22 @@ class Controller_Photo extends Controller_TemplateDefault {
|
|||||||
// Update the current posted photos.
|
// Update the current posted photos.
|
||||||
if ($this->request->post())
|
if ($this->request->post())
|
||||||
foreach ($this->request->post('process') as $pid) {
|
foreach ($this->request->post('process') as $pid) {
|
||||||
if (! Arr::get($this->request->post('remove'),$pid,FALSE))
|
|
||||||
continue;
|
|
||||||
|
|
||||||
$po = ORM::factory('Photo',$pid);
|
$po = ORM::factory('Photo',$pid);
|
||||||
|
$po->remove = Arr::get($this->request->post('remove'),$pid);
|
||||||
|
$po->save();
|
||||||
|
|
||||||
// If the photo is not marked as remove, or flagged, dont do it.
|
// If the photo is not marked as remove, or flagged, dont do it.
|
||||||
if (! $po->loaded() OR $po->flag OR ! $po->remove)
|
if (! $po->loaded() OR $po->flag OR ! $po->remove)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
|
||||||
if (! is_writable(dirname($po->file_path())))
|
if (! is_writable(dirname($po->file_path())))
|
||||||
$output .= sprintf('Dont have write permissions on %s',dirname($po->file_path()));
|
$output .= sprintf('Dont have write permissions on %s',dirname($po->file_path()));
|
||||||
|
|
||||||
$output .= sprintf('Removing %s (%s)',$po->id,$po->file_path());
|
$output .= sprintf('Removing %s (%s)',$po->id,$po->file_path());
|
||||||
|
|
||||||
|
// Delete it
|
||||||
|
if (unlink($po->file_path()))
|
||||||
|
$po->delete();
|
||||||
}
|
}
|
||||||
|
|
||||||
$p = ORM::factory('Photo');
|
$p = ORM::factory('Photo');
|
||||||
@ -68,7 +69,7 @@ class Controller_Photo extends Controller_TemplateDefault {
|
|||||||
'File Modified'=>array('key'=>'date_file("m",TRUE)'),
|
'File Modified'=>array('key'=>'date_file("m",TRUE)'),
|
||||||
'File Created'=>array('key'=>'date_file("c",TRUE)'),
|
'File Created'=>array('key'=>'date_file("c",TRUE)'),
|
||||||
'Filename'=>array('key'=>'file_path(TRUE,FALSE)'),
|
'Filename'=>array('key'=>'file_path(TRUE,FALSE)'),
|
||||||
'Proposed Name'=>array('key'=>'path()'),
|
'Filesize'=>array('key'=>'file_size()'),
|
||||||
'Width'=>array('key'=>'width'),
|
'Width'=>array('key'=>'width'),
|
||||||
'Height'=>array('key'=>'height'),
|
'Height'=>array('key'=>'height'),
|
||||||
'Orientation'=>array('key'=>'orientation'),
|
'Orientation'=>array('key'=>'orientation'),
|
||||||
@ -125,7 +126,11 @@ class Controller_Photo extends Controller_TemplateDefault {
|
|||||||
$po->remove = Arr::get($this->request->post('remove'),$pid);
|
$po->remove = Arr::get($this->request->post('remove'),$pid);
|
||||||
$po->flag = Arr::get($this->request->post('flag'),$pid);
|
$po->flag = Arr::get($this->request->post('flag'),$pid);
|
||||||
|
|
||||||
|
if ($po->changed())
|
||||||
|
$output .= HTML::anchor(URL::link('','photo/duplicate/'.$po->id),$po->id).' updated.<br/>';
|
||||||
|
|
||||||
$po->save();
|
$po->save();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$p = ORM::factory('Photo');
|
$p = ORM::factory('Photo');
|
||||||
@ -167,7 +172,7 @@ class Controller_Photo extends Controller_TemplateDefault {
|
|||||||
'File Modified'=>array('key'=>'date_file("m",TRUE)'),
|
'File Modified'=>array('key'=>'date_file("m",TRUE)'),
|
||||||
'File Created'=>array('key'=>'date_file("c",TRUE)'),
|
'File Created'=>array('key'=>'date_file("c",TRUE)'),
|
||||||
'Filename'=>array('key'=>'file_path(TRUE,FALSE)'),
|
'Filename'=>array('key'=>'file_path(TRUE,FALSE)'),
|
||||||
'Proposed Name'=>array('key'=>'file_path(TRUE,TRUE)'),
|
'Filesize'=>array('key'=>'file_size()'),
|
||||||
'Width'=>array('key'=>'width'),
|
'Width'=>array('key'=>'width'),
|
||||||
'Height'=>array('key'=>'height'),
|
'Height'=>array('key'=>'height'),
|
||||||
'Orientation'=>array('key'=>'orientation'),
|
'Orientation'=>array('key'=>'orientation'),
|
||||||
|
@ -51,11 +51,24 @@ class Model_Photo extends ORM {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public function file_path($short=FALSE,$new=FALSE) {
|
public function file_path($short=FALSE,$new=FALSE) {
|
||||||
$file = $new ? sprintf('%s_%03s.%s',date('Y/m/d-His',$this->date_taken),$this->subsectime,$this->type()) : $this->filename;
|
$file = $this->filename;
|
||||||
|
|
||||||
|
if ($new)
|
||||||
|
$file = sprintf('%s.%s',((is_null($this->date_taken) OR ! $this->date_taken)
|
||||||
|
? sprintf('UNKNOWN/%07s',$this->file_path_id())
|
||||||
|
: sprintf('%s_%03s',date('Y/m/d-His',$this->date_taken),$this->subsectime).($this->subsectime ? '' : sprintf('-%05s',$this->id))),$this->type());
|
||||||
|
|
||||||
return (($short OR preg_match('/^\//',$file)) ? '' : $this->_path.DIRECTORY_SEPARATOR).$file;
|
return (($short OR preg_match('/^\//',$file)) ? '' : $this->_path.DIRECTORY_SEPARATOR).$file;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function file_path_id($sep=3,$depth=9) {
|
||||||
|
return trim(chunk_split(sprintf("%0{$depth}s",$this->id),$sep,'/'),'/');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function file_size() {
|
||||||
|
return filesize($this->file_path());
|
||||||
|
}
|
||||||
|
|
||||||
public function gps(array $coordinate,$hemisphere) {
|
public function gps(array $coordinate,$hemisphere) {
|
||||||
if (! $coordinate OR ! $hemisphere)
|
if (! $coordinate OR ! $hemisphere)
|
||||||
return NULL;
|
return NULL;
|
||||||
@ -99,7 +112,7 @@ class Model_Photo extends ORM {
|
|||||||
|
|
||||||
public function io($attr=NULL) {
|
public function io($attr=NULL) {
|
||||||
if (is_nulL($this->_io))
|
if (is_nulL($this->_io))
|
||||||
$this->_io = new Imagick($this->_path.DIRECTORY_SEPARATOR.$this->filename);
|
$this->_io = new Imagick($this->file_path());
|
||||||
|
|
||||||
return is_null($attr) ? $this->_io : $this->_io->getImageProperty($attr);
|
return is_null($attr) ? $this->_io : $this->_io->getImageProperty($attr);
|
||||||
}
|
}
|
||||||
@ -114,13 +127,16 @@ class Model_Photo extends ORM {
|
|||||||
if ($po->loaded() OR file_exists($path) OR ! File::ParentDirExist(dirname($path),TRUE))
|
if ($po->loaded() OR file_exists($path) OR ! File::ParentDirExist(dirname($path),TRUE))
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
if (rename($this->file_path(FALSE,FALSE),$path)) {
|
if (rename($this->file_path(),$path)) {
|
||||||
|
// Convert the path to a relative one.
|
||||||
$this->filename = preg_replace(":^{$this->_path}/:",'',$path);
|
$this->filename = preg_replace(":^{$this->_path}/:",'',$path);
|
||||||
|
|
||||||
// If the DB update failed, move it back.
|
// If the DB update failed, move it back.
|
||||||
if (! $this->save() AND ! rename($path,$this->file_path()))
|
if (! $this->save() AND ! rename($path,$this->file_path()))
|
||||||
throw new Kohana_Exception('Error: Unable to move file, ID: :id, OLD: :oldname, NEW: :newname',
|
throw new Kohana_Exception('Error: Unable to move file, ID: :id, OLD: :oldname, NEW: :newname',
|
||||||
array(':id'=>$this->id,':oldname'=>$this->file_path(),':newname'=>$this->file_path()));
|
array(':id'=>$this->id,':oldname'=>$this->file_path(),':newname'=>$path));
|
||||||
|
|
||||||
|
chmod($this->file_path(),0444);
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
<?php defined('SYSPATH') or die('No direct access allowed.');
|
<?php defined('SYSPATH') or die('No direct access allowed.');
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Mark all accounts that have no outstanding invoices and active services as disabled.
|
* Import photo to the database
|
||||||
*
|
*
|
||||||
* @package Photo
|
* @package Photo
|
||||||
* @category Tasks
|
* @category Tasks
|
||||||
@ -10,6 +10,10 @@
|
|||||||
* @license http://dev.leenooks.net/license.html
|
* @license http://dev.leenooks.net/license.html
|
||||||
*/
|
*/
|
||||||
class Task_Photo_Import extends Minion_Task {
|
class Task_Photo_Import extends Minion_Task {
|
||||||
|
private $_accepted = array(
|
||||||
|
'jpg',
|
||||||
|
);
|
||||||
|
|
||||||
protected $_options = array(
|
protected $_options = array(
|
||||||
'file'=>NULL, // Photo File to Import
|
'file'=>NULL, // Photo File to Import
|
||||||
'verbose'=>FALSE, // Photo File to Import
|
'verbose'=>FALSE, // Photo File to Import
|
||||||
@ -22,10 +26,13 @@ class Task_Photo_Import extends Minion_Task {
|
|||||||
if (preg_match('/@__thumb/',$params['file']) OR preg_match('/\/._/',$params['file']))
|
if (preg_match('/@__thumb/',$params['file']) OR preg_match('/\/._/',$params['file']))
|
||||||
return sprintf("Ignoring file [%s]\n",$params['file']);
|
return sprintf("Ignoring file [%s]\n",$params['file']);
|
||||||
|
|
||||||
|
if (! in_array(strtolower(pathinfo($params['file'],PATHINFO_EXTENSION)),$this->_accepted))
|
||||||
|
return sprintf("Ignoring file [%s]\n",$params['file']);
|
||||||
|
|
||||||
$po = ORM::factory('Photo',array('filename'=>$params['file']));
|
$po = ORM::factory('Photo',array('filename'=>$params['file']));
|
||||||
|
|
||||||
if (! $po->loaded())
|
if (! $po->loaded())
|
||||||
$po->filename = $params['file'];
|
$po->filename = realpath($params['file']);
|
||||||
|
|
||||||
$po->date_taken = $this->dbcol(strtotime($po->io('exif:DateTime')));
|
$po->date_taken = $this->dbcol(strtotime($po->io('exif:DateTime')));
|
||||||
$po->signature = $this->dbcol($po->io()->getImageSignature());
|
$po->signature = $this->dbcol($po->io()->getImageSignature());
|
||||||
|
@ -21,7 +21,6 @@ class Task_Photo_Move extends Minion_Task {
|
|||||||
|
|
||||||
} else {
|
} else {
|
||||||
$p = ORM::factory('Photo')
|
$p = ORM::factory('Photo')
|
||||||
->where('date_taken','is not',NULL)
|
|
||||||
->where_open()
|
->where_open()
|
||||||
->where('remove','!=',TRUE)
|
->where('remove','!=',TRUE)
|
||||||
->or_where('remove','is',NULL)
|
->or_where('remove','is',NULL)
|
||||||
|
Loading…
Reference in New Issue
Block a user