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 }
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] = ''; } } } } }
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);
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; }
public function __construct() { $this->db = AdaptorMysql::getInstance(); }