Exemplo n.º 1
0
 public function __construct()
 {
     //query the users table
     $this->logged = false;
     $this->admin = false;
     $this->super_user = false;
     $this->db = AdaptorMysql::getInstance();
     //get all tables and such
 }
Exemplo n.º 2
0
 public function __construct($database)
 {
     if (!isset($database)) {
         $this->db = AdaptorMysql::getInstance();
     } else {
         $this->db = $database;
     }
     if (isset($_REQUEST['debug']) && isset($_REQUEST['action'])) {
         $this->action = $_REQUEST['action'];
         header('Content-Type: text');
     } else {
         $this->dom = new DomDocument();
         $this->dom->preserveWhiteSpace = false;
         $inputSocket = fopen('php://input', 'rb');
         $contents = stream_get_contents($inputSocket);
         fclose($inputSocket);
         //GLOBALS['HTTP_RAW_POST_DATA'] - does not work without php.ini tweaking
         $this->dom->loadXML($contents);
         $this->response = array();
         $this->errors = array();
         //action
         $this->action = $this->dom->firstChild->getAttribute('Type');
         //payload
         if ($this->payload = $this->dom->getElementsByTagName('Payload')->item(0)) {
         } else {
             $this->payload = null;
         }
         //params
         if ($params = $this->dom->getElementsByTagName('Param')) {
             $this->params = array();
             foreach ($params as $param) {
                 $t = $param->getAttribute('Name');
                 if ($param->hasChildNodes()) {
                     $this->params[$t] = $param->firstChild->nodeValue;
                 } else {
                     $this->params[$t] = '';
                 }
             }
         }
     }
 }
Exemplo n.º 3
0
require_once LIB . 'Bobolink' . DS . 'database' . DS . 'AdaptorMysql.class.php';
// Bobolink classes (load any you want to use)
//require_once LIB . 'Bobolink' . DS . 'email'    . DS . 'EmailProtector.class.php';
//require_once LIB . 'Bobolink' . DS . 'forms'    . DS . 'Forms.class.php';
//require_once LIB . 'Bobolink' . DS . 'session'  . DS . 'Session.class.php';
//require_once LIB . 'Bobolink' . DS . 'utils'    . DS . 'Utils.class.php';
//require_once LIB . 'Bobolink' . DS . 'xml'      . DS . 'FlashMW.class.php';
//require_once LIB . 'Bobolink' . DS . 'xml'      . DS . 'XmlToArray.class.php';
/* LOAD PLUGINS ---------------------------------------------------------- */
require_once APP . 'plugins' . DS . 'pre_render.php';
require_once APP . 'plugins' . DS . 'post_render.php';
//require_once LIB . 'Brickhouse' . DS . 'plugins' . DS . 'sitemap.php';
/* CONTROLLER/ROUTER ----------------------------------------------------- */
//error handling
//$error = ErrorHandler::getInstance();
set_error_handler(array("ErrorHandler", "capture"));
// Only connect to the database if it is configured
if (isset($GLOBALS['DATABASE'])) {
    $db = AdaptorMysql::getInstance();
}
// Controller
$controller = _ControllerFront::getInstance();
// Router
//needs to follow the Front Controller so we can utilize the pre-parsed URI
$uA = $controller->getUri();
$uri = $uA['array'];
$routes = array();
//pull in predefined routes
require_once CONFIG . 'routes.php';
/* DISPATCH -------------------------------------------------------------- */
$controller->dispatch($routes);
Exemplo n.º 4
0
    private function _buildForm()
    {
        //the master loopage
        //do a few things different if we're editing vs inserting a new record.. however not much
        //use output buffering to feed this to the view... this is a unique controller driven situation
        //since it's almost entirely logic based and presentation uses markup snippets from the Forms library
        ob_start();
        $_name_space = $this->name_space . '_';
        //processing instructions
        Forms::hidden('name_space', $this->name_space, array('omit_id' => true));
        Forms::hidden('mode', $this->mode, array('omit_id' => true));
        Forms::hidden('channel', $this->channel, array('omit_id' => true));
        Forms::hidden('table', $this->table, array('omit_id' => true));
        Forms::hidden('query_action', $this->query_action, array('omit_id' => true));
        $recordData = $this->model->data;
        $row_data = $recordData;
        //Relation fields
        if ($this->channel == "related") {
            $sql = "SELECT * FROM " . BLACKBIRD_TABLE_PREFIX . "relations WHERE table_parent = '" . $_POST['table_parent'] . "' AND table_child = '{$this->table}'";
            if ($q_relation = AdaptorMysql::queryRow($sql)) {
                $i = 0;
                foreach ($recordData as $column) {
                    if ($column['name'] == $q_relation['column_child']) {
                        array_splice($recordData, $i, 1);
                        break;
                    }
                    $i++;
                }
                $q_parent = AdaptorMysql::queryRow("SELECT * FROM " . $_POST['table_parent'] . " WHERE id = " . $_POST['id_parent']);
                Forms::hidden($_name_space . $q_relation['column_child'], $q_parent[$q_relation['column_parent']]);
                Forms::hidden('table_parent', $_POST['table_parent'], array('omit_id' => true));
                Forms::hidden('id_parent', $q_parent[$q_relation['column_parent']], array('omit_id' => true));
            }
        }
        //loop items
        foreach ($recordData as $column) {
            $options = array();
            $col_type = strtolower($column['type']);
            $value = $column['value'];
            $col_ready = false;
            $display_name = Utils::titleCase(str_replace('_', ' ', $column['name']));
            $options['label'] = $display_name;
            $options['name_space'] = $_name_space;
            $options['db'] = AdaptorMysql::getInstance();
            $options['nullable'] = AdaptorMysql::isNullable($this->table, $column['name']);
            //For primary key that's autoincrementing
            if ($column['name'] == 'id') {
                if ($this->query_action == "update") {
                    Forms::hidden($_name_space . $column['name'], $value, $options);
                }
                $col_ready = true;
            }
            //plugins
            //col_config needs to be created for each column in the model = FAIL
            if ($column['config'] && !$col_ready) {
                $q_col = $column['config'];
                if ($q_col['default_value'] != '' && $this->mode == "insert") {
                    $value = $q_col['default_value'];
                }
                if (strlen($q_col['help']) > 1) {
                    $options['tip'] = $q_col['help'];
                }
                if ($q_col['display_name'] != '') {
                    $display_name = $q_col['display_name'];
                }
                $options['label'] = $display_name;
                $module = $q_col['edit_module'];
                if (strlen($q_col['edit_config']) > 1) {
                    $config = _ControllerFront::parseConfig($q_col['edit_config']);
                    $options = array_merge($options, $config);
                }
                if ($q_col['validate'] != '') {
                    $options = array_merge($options, _ControllerFront::parseConfig($q_col['validate']));
                }
                if ($module != "") {
                    switch ($module) {
                        case "module":
                            break;
                        case "plugin":
                            $options['table'] = $this->table;
                            $options['mode'] = $this->mode;
                            $options['row_data'] = $row_data;
                            $options['id'] = $this->id;
                            $options['col_name'] = $column['name'];
                            _ControllerFront::pluginColumnEdit($_name_space . $column['name'], $value, $options);
                            $col_ready = true;
                            break;
                        case "position":
                            //build a selectDefault but with special options ehh
                            $options['col_display'] = $column['name'];
                            $options['col_value'] = $column['name'];
                            //do it manual style, to accomodate constraint change or late entries
                            //do a relative selection of position, based upon existing list.. oh!
                            //factor in the contraint if set
                            //factor in null
                            if (isset($config['col_constraint'])) {
                                //check if we're nullable
                                if (AdaptorMysql::isNullable($this->table, $config['col_constraint']) && Utils::isNull($row_data[$config['col_constraint']]['value'])) {
                                    $_v = "IS NULL";
                                } else {
                                    $_v = ' = \'' . $row_data[$config['col_constraint']]['value'] . '\'';
                                }
                                $options['select_sql'] = "SELECT * FROM `{$this->table}` WHERE `{$config['col_constraint']}` " . $_v . " ORDER BY `{$column['name']}`";
                            } else {
                                $options['select_sql'] = "SELECT * FROM `{$this->table}` ORDER BY `{$column['name']}`";
                            }
                            $options['table'] = $this->table;
                            $options['col_name'] = $column['name'];
                            $options['id'] = $this->id;
                            $options['name_space'] = $_name_space;
                            $options['label'] = $display_name;
                            $options['allow_null'] = false;
                            Forms::selectDefault($_name_space . $column['name'], $value, $options);
                            $col_ready = true;
                            break;
                        case "slug":
                            $source = isset($config['col_source']) ? $_name_space . $config['col_source'] : null;
                            Forms::text($_name_space . $column['name'], $value, $options);
                            print '
								<script type="text/javascript">
									Event.observe(window,\'load\', function(){createSlug(\'' . $_name_space . $column['name'] . '\',\'' . $source . '\')}, true);
								</script>
							';
                            $col_ready = true;
                            break;
                        case "disabled":
                            $col_ready = true;
                            break;
                        default:
                            $options['table'] = $this->table;
                            $options['col_name'] = $column['name'];
                            $options['id'] = $this->id;
                            $options['name_space'] = $_name_space;
                            $options['label'] = $display_name;
                            //add database datasource for countries and states
                            if ($module == 'selectState') {
                                $options['datasource'] = BLACKBIRD_TABLE_PREFIX . 'states';
                            }
                            if ($module == 'selectCountry') {
                                $options['datasource'] = BLACKBIRD_TABLE_PREFIX . 'countries';
                            }
                            Forms::$module($_name_space . $column['name'], $value, $options);
                            $col_ready = true;
                            break;
                    }
                }
            }
            //defaults
            if (!$col_ready) {
                switch (true) {
                    case $col_type == 'datetime' || $col_type == 'timestamp':
                        Forms::selectDateTime($_name_space . $column['name'], $value, $options);
                        break;
                    case $col_type == 'date':
                        Forms::selectDate($_name_space . $column['name'], $value, $options);
                        break;
                    case $col_type == 'time':
                        Forms::selectTime($_name_space . $column['name'], $value, $options);
                        break;
                    case $col_type == 'text' || $col_type == 'longtext' || $col_type == 'tinytext' || $col_type == 'mediumtext':
                        Forms::textarea($_name_space . $column['name'], $value, $options);
                        break;
                    default:
                        Forms::text($_name_space . $column['name'], $value, $options);
                        break;
                }
            }
        }
        $r = ob_get_contents();
        ob_end_clean();
        return $r;
    }
Exemplo n.º 5
0
 public function __construct()
 {
     $this->db = AdaptorMysql::getInstance();
 }