Example #1
0
<?php

use Meredith\MainController\MainControllerInterface;
use Meredith\Supervisor\MeredithSupervisor;
use Meredith\Tool\MeredithTool;
/**
 * @var MainControllerInterface $mc
 */
$ms = MeredithSupervisor::inst();
?>
<script type="text/javascript">
    (function ($) {
        $(document).ready(function () {


            var rowId = 0;


            // Generate content for a column
            var table = $('.datatable-meredith').DataTable({
                ajax: {
                    url: "<?php 
echo $ms->getUrl("list");
?>
",
                    type: "POST"
                },
                // the columns option is necessary to enable (server side) DT_RowId to be recognized (https://datatables.net/reference/option/columns.data)
                columns: [
                    <?php 
$c = 0;
require_once __DIR__ . "/../../../../init.php";
use Meredith\Exception\MeredithException;
use Meredith\Supervisor\MeredithSupervisor;
use QuickPdo\QuickPdo;
use Tim\TimServer\TimServer;
use Tim\TimServer\TimServerInterface;
TimServer::create()->start(function (TimServerInterface $server) {
    if (isset($_POST['formId']) && isset($_POST['ids']) && is_array($_POST['ids'])) {
        $ids = $_POST['ids'];
        $view = (string) $_POST['formId'];
        if (true === MeredithSupervisor::inst()->isGranted($view, 'delete')) {
            array_walk($ids, function (&$v) {
                $v = (int) $v;
            });
            if ($ids) {
                if (false !== ($nbDelete = QuickPdo::delete($view, "id in (" . implode(", ", $ids) . ")"))) {
                    $server->success("ok");
                } else {
                    $server->error(MeredithSupervisor::inst()->translate("An error occurred with the database, please retry later"));
                }
            } else {
                $server->success("ok");
            }
        } else {
            throw new MeredithException("Permission not granted to access rows with {$view}");
        }
    } else {
        $server->error(MeredithSupervisor::inst()->translate("Invalid data"));
    }
})->output();
Example #3
0
    <link rel="stylesheet" href="/css/my_style.css">

</head>

<body>

<nav>
    <a href="/users-form">Add user</a><br>
    <a href="/users-list">User list</a><br>
</nav>

<section>
    <?php 
//------------------------------------------------------------------------------/
// PSEUDO ROUTING MECHANISM
//------------------------------------------------------------------------------/
$uri = $_SERVER['REQUEST_URI'];
$page = 'default';
$uri2FormId = ['/users-form' => 'users', '/users-list' => 'users'];
if (array_key_exists($uri, $uri2FormId)) {
    $formId = $uri2FormId[$uri];
    $page = substr($uri, 1);
    // remove the leading slash
    MeredithSupervisor::inst()->setFormId($formId);
}
require_once APP_DIR . "/pages/" . $page . ".php";
?>
</section>

</body>
</html>
                        $stmt .= $sWhere;
                        $stmt .= $sOrder;
                        $stmt .= " limit {$start}, {$length}";
                        if (false !== ($res = QuickPdo::fetchAll($stmt, $markers))) {
                            $ret['data'] = [];
                            foreach ($res as $k => $row) {
                                $row = ['DT_RowId' => $row['id']] + $row;
                                $ret['data'][$k] = $row;
                            }
                        }
                        // recordFiltered
                        $stmtCountFiltered = "select count(*) as count from {$fromClause}";
                        $stmtCountFiltered .= $sWhere;
                        if (false !== ($info = QuickPdo::fetch($stmtCountFiltered, $markers))) {
                            $ret['recordsFiltered'] = (int) $info['count'];
                        }
                    }
                }
            } catch (\Exception $e) {
                $ret['error'] = MeredithSupervisor::inst()->translate("Oops! An error occurred, please retry later");
                MeredithSupervisor::inst()->log("Oops! An error occurred, please retry later: {$stmt} -- " . $e->getMessage());
            }
        }
    } else {
        throw new MeredithException("Permission not granted to access rows with {$formId}");
    }
} else {
    throw new \Exception("An error occurred");
    // but we don't care
}
echo json_encode($ret);
Example #5
0
//------------------------------------------------------------------------------/
define('APP_DIR', __DIR__);
//------------------------------------------------------------------------------/
// DB SETTINGS
//------------------------------------------------------------------------------/
define("MYSQL_DBNAME", "adaman");
define("PDOCONF_DSN", "mysql:dbname=" . MYSQL_DBNAME . ";host=127.0.0.1");
define("PDOCONF_USER", "root");
define("PDOCONF_PASS", "root");
define('COOKIE_DOMAIN', "");
// Initialize pdo connection now, since we will need it for almost every request.
//------------------------------------------------------------------------------/
QuickPdo::setConnection(PDOCONF_DSN, PDOCONF_USER, PDOCONF_PASS, array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'UTF8'", PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION));
//------------------------------------------------------------------------------/
// MEREDITH plugin
//------------------------------------------------------------------------------/
MeredithSupervisor::inst()->setGetMainControllerCb(function ($formId) {
    $mc = MainControllerProvider::create()->setDir(APP_DIR . "/pages/meredith/main-controllers")->getMainController($formId);
    // getMainController either works as expected, or throws an Exception in your face ...
    return $mc;
})->setIsGranted(function ($formId, $action) {
    // your application permission system here...
    return true;
})->setTranslateCb(function ($msg) {
    if (false !== ($tr = EnglishDictionary::inst()->search($msg))) {
        return $tr;
    }
    return $msg;
})->setLogCb(function ($msg) {
    // your application logging system here...
});
Example #6
0
<?php

//------------------------------------------------------------------------------/
// CONFIGURATION OF MEREDITH MAIN CONTROLLER
//------------------------------------------------------------------------------/
use Meredith\Supervisor\MeredithSupervisor;
$formId = "users";
$mc = MeredithSupervisor::inst()->getMainController($formId);
require_once __DIR__ . "/inc/baselist.php";
                    if (true === MeredithSupervisor::inst()->isGranted($formId, 'insert')) {
                        if (false !== ($id = QuickPdo::insert($table, $nac2Values))) {
                            $msg = $mc->getFormDataProcessor()->getSuccessMessage($formId, 'insert');
                            if (false === $msg) {
                                $msg = MeredithSupervisor::inst()->translate("The record has been successfully recorded");
                            }
                            $server->success(['msg' => $msg]);
                        } else {
                            $server->error(MeredithSupervisor::inst()->translate("An error occurred with the database, please retry later"));
                        }
                    } else {
                        throw new MeredithException("Permission not granted to insert with {$formId}");
                    }
                }
            } catch (\PDOException $e) {
                if ('23000' === $e->getCode()) {
                    // integrity constraint violation
                    $msg = $mc->getFormDataProcessor()->getDuplicateEntryMessage($formId, $mode);
                    if (false === $msg) {
                        $msg = "A similar item already exists in the database";
                    }
                    $server->error($msg);
                } else {
                    throw $e;
                }
            }
        }
    } else {
        $server->error(MeredithSupervisor::inst()->translate("Invalid data: undefined formId"));
    }
})->output();
Example #8
0
<?php

use Meredith\ContentTransformer\ActiveInactiveContentTransformer;
use Meredith\ContentTransformer\UpdateDeleteMenuContentTransformer;
use Meredith\FormCommunicationHelper\FrenchBootstrapFormCommunicationHelper;
use Meredith\FormDataProcessor\FormDataProcessor;
use Meredith\FormHandler\FormHandler;
use Meredith\FormRenderer\AuthorFormRenderer;
use Meredith\FormRenderer\ControlsRenderer\BootstrapControlsRenderer;
use Meredith\FormRenderer\ControlsRenderer\Control\InputControl;
use Meredith\FormRenderer\ControlsRenderer\Control\MonoStatusControl;
use Meredith\ListButtonCode\ColvisListButtonCode;
use Meredith\ListButtonCode\DeleteSelectedRowsListButtonCode;
use Meredith\ListHandler\BaseListHandler;
use Meredith\ListPreConfigScript\AuthorListPreConfigScript;
use Meredith\MainController\AuthorMainController;
use Meredith\OnModalOpenAfter\OnModalOpenAfter;
use Meredith\Supervisor\MeredithSupervisor;
use Meredith\ValidationCodeHandler\JqueryValidationCodeHandler;
use Meredith\ValidatorJsUserCode\ValidatorJsUserCode;
$mainController = AuthorMainController::create()->setFormId(MeredithSupervisor::inst()->getFormId())->setListHandler(BaseListHandler::create()->setPreConfigScript(AuthorListPreConfigScript::create()->addHeaderButton(ColvisListButtonCode::create())->addHeaderButton(DeleteSelectedRowsListButtonCode::create()))->addColumn('id')->addColumn('email')->addColumn('pass')->addColumn('rib')->addColumn('active')->addColumn('actions', false)->setContentTransformer('actions', UpdateDeleteMenuContentTransformer::create())->setContentTransformer('active', ActiveInactiveContentTransformer::create())->setOnModalOpenAfter(OnModalOpenAfter::create()->setDir(APP_DIR . "/pages/meredith/on-modal-open-after")))->setFormHandler(FormHandler::create()->setFormCommunicationHelper(FrenchBootstrapFormCommunicationHelper::create())->setFormRenderer(AuthorFormRenderer::create()->setDir(APP_DIR . "/pages/meredith/form-controls")->setControlsRenderer(BootstrapControlsRenderer::create()->addControl(InputControl::create()->setName("email")->setLabel("Email")->setType("email")->setPlaceHolder("Enter a valid email address"))->addControl(InputControl::create()->setName("pass")->setLabel("Mot de passe")->setType("password")->setPlaceHolder("Enter at least 5 characters"))->addControl(InputControl::create()->setName("repeat_password")->setLabel("Confirm password")->setType("password")->setPlaceHolder("Enter the password again"))->addControl(InputControl::create()->setName("rib")->setLabel("Rib")->setPlaceHolder("Enter your rib")->setHelp("99999 - 99999 - *********** - 99"))->addControl(MonoStatusControl::create()->setName("active")->setLabel("Active"))))->setValidationCodeHandler(JqueryValidationCodeHandler::create()->setValidatorJsUserCode(ValidatorJsUserCode::create()->setDir(APP_DIR . "/pages/meredith/validator-user-code"))))->setFormDataProcessor(FormDataProcessor::create()->addField('id', true, true)->addField('email', false, false)->addField('pass', false, false)->addField('rib', false, false)->addField('active', false, false, 0));