Comments (5)
To me http://sourceforge.net/p/postfixadmin/code/1435/tree/trunk/edit.php still looks very spagetti. No offence but I think opensolutions have a good point in reinventing the wheel
from vimbadmin.
Thanks for your feedback!
edit.php supports creating and editing all things (mailboxes, aliases, admins etc.) and reconfigures itsself based on the thing to edit, which also means it needs some pragmatic[tm] coding. I wouldn't call it spaghetti ;-) but that might depend on the POV (and I'm of course open to suggestions how to enhance the code). As I said, edit.php is just a frontend / "skin", and is the part ViMbAdmin would probably need to replace anyway.
For ViMbAdmin, the more interesting code are the classes in model/*Handler.php. They do all the work and are quite easy to use.
To give you an example, here's how to edit an alias:
<?php
define('POSTFIXADMIN_CLI', 1); # test this file on the commandline with "php demo.php"
# load config, texts etc.
include('common.php');
#alias to edit
$id = '[email protected]';
# new settings for this alias
# (fields that are not given will keep their old value)
$values = array(
'goto' => array('[email protected]', '[email protected]'),
'active' => 1,
);
$admin = "[email protected]"; # optional, enables permission checks
$handlerclass = "AliasHandler";
$new = 0;
$handler = new $handlerclass($new, $admin);
# check if Alias $id exists and $admin has permissions to edit it
if (!$handler->init($id)) {
print "Error: ";
print_r($handler->errormsg);
exit;
}
# hand over and validate $values
if (!$handler->set($values)) {
print "Error: ";
print_r($handler->errormsg);
exit;
}
# finally, store everything in the database
if (!$handler->store()) {
print "Error: ";
print_r($handler->errormsg);
exit;
}
When using AJAX to validate the input on the fly, stop after $handler->set() and check if there's for example an error in the 'goto' field:
if ( isset($handler->errormsg['goto']) ) {
print "Error in goto field: " . $handler->errormsg['goto'];
}
Does this still look like spaghetti? ;-)
from vimbadmin.
@cboltz this is probably not the right place to review code of a different project ;) Where would be the appropriate place to give feedback/review? SF?
from vimbadmin.
yes, sourceforge ( http://sourceforge.net/projects/postfixadmin/ ) is a good place - either in the forum or subscribe to the postfixadmin-devel mailinglist.
If you like IRC, you can also meet me in the #postfixadmin channel on freenode. I'm usually there in the evening (CET).
from vimbadmin.
Sorry for the late reply - we won;t be using Postfix core code but thanks for the suggestion. V3 is already complete bar some final review and tests and has been for some time. It would be a backward step to change now.
from vimbadmin.
Related Issues (20)
- Feature Request: 2FA HOT 1
- mailbox.cli-get-sizes [Unknown Mail Size] HOT 1
- Issue whilke Database Creation HOT 3
- Batch edit one Goto Adress used in hundred of Aliases Adresses HOT 4
- extends possibilities for plugin HOT 1
- migrating from iRedadmin HOT 1
- Database column `mailbox`.`username` is not unique HOT 1
- typo in: application/controllers/AliasController.php
- Ensure a checkout contains the version number of vimbadmin HOT 3
- Update UPDATING with recent changes needs to be done for 3.x branch HOT 1
- Installation instructions from Wiki doesn't work with recent versions HOT 1
- SmartyCompilerException on PHP 8.1 HOT 1
- Warning fopen() Peer certificate HOT 1
- Number of mailboxes = 1 when there are 150 HOT 3
- vimbtool.php -a mailbox.cli-get-sizes not working HOT 6
- Class "Doctrine\Common\Util\Inflector" not found - when archiving
- vimbtool.php -a mailbox.cli-get-sizes not working with php 8.2 HOT 1
- Deprecated message with PHP 8.2 HOT 3
- error creating mailbox HOT 4
- DB Schema Creation Error using PostgreSQL HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from vimbadmin.