From 3fd230bb501337153771098083e1379875d98235 Mon Sep 17 00:00:00 2001 From: Simon Rettberg Date: Fri, 11 Sep 2015 17:11:33 +0200 Subject: Image delete feature --- modules/dozmod.inc.php | 70 +++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 67 insertions(+), 3 deletions(-) (limited to 'modules/dozmod.inc.php') diff --git a/modules/dozmod.inc.php b/modules/dozmod.inc.php index cec1c114..35edb22c 100644 --- a/modules/dozmod.inc.php +++ b/modules/dozmod.inc.php @@ -17,10 +17,18 @@ class Page_DozMod extends Page if ($action === 'mail') { $this->mailHandler(); } + if ($action === 'delimages') { + $result = $this->handleDeleteImages(); + if (!empty($result)) { + Message::addInfo('delete-images', $result); + } + Util::redirect('?do=DozMod'); + } } protected function doRender() { + $this->listDeletePendingImages(); // Mail config $conf = Database::queryFirst('SELECT value FROM sat.configuration WHERE parameter = :param', array('param' => 'mailconfig')); if ($conf != null) { @@ -35,6 +43,38 @@ class Page_DozMod extends Page $this->listOrganizations(); } + private function listDeletePendingImages() + { + $res = Database::simpleQuery("SELECT b.displayname," + . " own.firstname, own.lastname, own.email," + . " v.imageversionid, v.createtime, v.filesize, v.deletestate," + . " lat.expiretime AS latexptime, lat.deletestate AS latdelstate" + . " FROM sat.imageversion v" + . " INNER JOIN sat.imagebase b ON (b.imagebaseid = v.imagebaseid)" + . " INNER JOIN sat.user own ON (b.ownerid = own.userid)" + . " LEFT JOIN sat.imageversion lat ON (b.latestversionid = lat.imageversionid)" + . " WHERE v.deletestate <> 'KEEP'" + . " ORDER BY b.displayname ASC, v.createtime ASC"); + $NOW = time(); + $rows = array(); + while ($row = $res->fetch(PDO::FETCH_ASSOC)) { + if ($row['latexptime'] > $NOW && $row['latdelstate'] === 'KEEP') { + $row['hasNewerClass'] = 'glyphicon-ok green'; + } else { + $row['hasNewerClass'] = 'glyphicon-remove red'; + } + if ($row['deletestate'] === 'DO_DELETE') { + $row['name_extra_class'] = 'slx-strike'; + } + $row['version'] = date('d.m.Y H:i:s', $row['createtime']); + $row['filesize'] = Util::readableFileSize($row['filesize']); + $rows[] = $row; + } + if (empty($rows)) + return; + Render::addTemplate('dozmod/images-delete', array('images' => $rows)); + } + private function cleanMailArray() { $keys = array('host', 'port', 'ssl', 'senderAddress', 'replyTo', 'username', 'password', 'serverName'); @@ -61,7 +101,31 @@ class Page_DozMod extends Page $this->setUserOption($action); } elseif ($action === 'setorglogin') { $this->setOrgOption($action); + } elseif ($action === 'delimages') { + die($this->handleDeleteImages()); + } + } + + private function handleDeleteImages() + { + $images = Request::post('images', false); + if (is_array($images)) { + foreach ($images as $image => $val) { + if (strtolower($val) !== 'on') + continue; + Database::exec("UPDATE sat.imageversion SET deletestate = 'DO_DELETE'" + . " WHERE deletestate = 'SHOULD_DELETE' AND imageversionid = :imageversionid", array( + 'imageversionid' => $image + )); + } + if (!empty($images)) { + $ret = Download::asStringPost('http://127.0.0.1:9080/do/delete-images', false, 2, $code); + if ($code == 999) { + $ret .= "\nConnection to DMSD failed."; + } + } } + return false; } private function handleTestMail() @@ -96,8 +160,8 @@ class Page_DozMod extends Page 'value' => $data )); Message::addSuccess('mail-config-saved'); - Util::redirect('?do=DozMod'); } + Util::redirect('?do=DozMod'); } private function listUsers() @@ -150,7 +214,7 @@ class Page_DozMod extends Page } else { die('Unknown'); } - $user = (string)Request::post('userid', '?'); + $user = (string) Request::post('userid', '?'); $ret = Database::exec("UPDATE sat.user SET $field = :onoff WHERE userid = :userid", array( 'userid' => $user, 'onoff' => $val @@ -174,7 +238,7 @@ class Page_DozMod extends Page die('Unknown'); } $ret = Database::exec("UPDATE sat.organization SET $field = :onoff WHERE organizationid = :organizationid", array( - 'organizationid' => (string)Request::post('organizationid', ''), + 'organizationid' => (string) Request::post('organizationid', ''), 'onoff' => $val )); if ($ret === false) -- cgit v1.2.3-55-g7522