Giter VIP home page Giter VIP logo

Comments (5)

lenada avatar lenada commented on June 14, 2024

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.

cboltz avatar cboltz commented on June 14, 2024

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.

lenada avatar lenada commented on June 14, 2024

@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.

cboltz avatar cboltz commented on June 14, 2024

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.

barryo avatar barryo commented on June 14, 2024

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)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.