public function __construct() { $this->module = $this->getModuleFromControllerName(); $this->view = new Libraries_View($this->module); $this->db = Libraries_Db_Factory::factory(Config_Db_Factory::DRIVER); $this->i18n = new Libraries_i18n(); }
public function query($table_name) { //$table_name = $_POST['table_name']; $query = $_GET['term']; $sys_object = new Crud_Models_Object(); $sys_object->load($table_name, 'table_name'); $sys_object->loadFieldsForObject(); $searchable_fields = array(); foreach ($sys_object->sys_field_list as $sys_field) { if ($sys_field->is_hidden == 0 && $sys_field->is_identification == 1) { $searchable_fields[] = $sys_field->field_name; } } $data = array(); $sql = "SELECT id, " . implode(', ', $searchable_fields) . "\r\n\t\t FROM {$table_name} \r\n\t\t WHERE is_deleted = 0 AND ("; foreach ($searchable_fields as $searchable_field) { $sql .= " {$searchable_field} LIKE ?"; $data[] = "%" . $query . "%"; if (end($searchable_fields) != $searchable_field) { $sql .= " OR"; } else { $sql .= ')'; } } $results = Libraries_Db_Factory::getDb()->fetchAll($sql, $data, Libraries_Db_Adapter::FETCH_TYPE_ASSOC); $response = array(); foreach ($results as $result) { $id = array_shift($result); $response[] = array('id' => $id, 'value' => implode(', ', $result)); } echo json_encode($response); }
/** * Create DB instance * @param string $driver * @throws Exception * @return Libraries_Db_Adapter */ public static function factory($driver) { $class_name = 'Libraries_Db_' . ucfirst(strtolower($driver)) . '_Driver'; // create DB class name // check if driver exists if (!class_exists($class_name)) { throw new Exception("Can't find class " . $class_name); } return self::$db = call_user_func(array($class_name, 'getInstance')); }
public static function orderIndexBeforeSaveEvent($sys_object, $object) { if ($object->isEmpty()) { foreach ($sys_object->sys_field_list as $field) { if ($field->field_name == 'order_index') { $sql = "SELECT MAX(id) + 1\r\n\t\t\t\t\t\t\tFROM {$sys_object->table_name}"; $object->{$field->field_name} = Libraries_Db_Factory::getDb()->fetchColumn($sql); } } } }
public function canExecuteAction($action) { $sql = "SELECT * \r\n\t\t\t\tFROM adm_user_role_permission\r\n\t\t\t\tWHERE\tis_deleted = 0 AND\r\n\t\t\t\t\t\taction = ? AND\r\n\t\t\t\t\t\tid_adm_user_role = ?"; $data = array(); $data[] = $action; $data[] = $this->id; $response = Libraries_Db_Factory::getDb()->fetchRow($sql, $data, Libraries_Db_Adapter::FETCH_TYPE_CLASS); if (empty($response) || intval($response->is_active) !== 0) { return true; } return false; }
/** * * @return bool */ private function fifo() { $sql = "SELECT COUNT(id)\r\n\t\t\t\tFROM sys_log"; $count = Libraries_Db_Factory::getDb()->fetchColumn($sql); if ($count > Config_Environment::MAX_LOG_ENTRIES) { $sql = "DELETE FROM\r\n\t\t\t\t\tsys_log\r\n\t\t\t\t\tORDER BY id\r\n\t\t\t\t\tLIMIT " . ($count - Config_Environment::MAX_LOG_ENTRIES); if (Libraries_Db_Factory::getDb()->execute($sql)) { return true; } return false; } return true; }
public function content($sys_object_id) { $sys_object = new Crud_Models_Object(); $sys_object->load(intval($sys_object_id)); $sys_object->loadFieldsForObject(); if ($sys_object->is_system == 1 && $this->user->role->safe_title != 'administrator') { echo '<script>window.location="' . SITE_ROOT_URI . '/admin/error/' . '"</script>'; exit; } if (!$this->user->role->canExecuteAction('can_view_' . $sys_object->table_name)) { echo '<script>window.location="' . SITE_ROOT_URI . '/admin/error/' . '"</script>'; exit; } $order = array(); $order[] = array('title', 'ASC'); $role = new Libraries_Db_Mysql_Model('adm_user_role'); $roles = $role->search(array(), $order); if (isset($_POST) && !empty($_POST)) { foreach ($roles as $role) { $sql = "DELETE \r\n\t\t\t\t\t\tFROM adm_user_role_permission\r\n\t\t\t\t\t\tWHERE id_adm_user_role = ?"; $data = array($role->id); Libraries_Db_Factory::getDb()->execute($sql, $data); foreach ($_POST as $action => $data) { $permission = new Libraries_Db_Mysql_Model('adm_user_role_permission'); $permission->id_adm_user_role = $role->id; $permission->action = $action; $permission->is_active = array_key_exists($role->id, $data) && $data[$role->id] == 1 ? 1 : 0; $permission->save(); } } Libraries_Flashdata::set('saved', __('Permissions is saved')); } $order = array(); $order[] = array('table_name', 'ASC'); $where = array(); $where[] = array('AND', 'is_system', '!=', 1); $objects = $sys_object->search($where, $order); Libraries_View::getInstance()->roles = $roles; Libraries_View::getInstance()->objects = $objects; Libraries_View::getInstance()->saved_status = Libraries_Flashdata::get('saved'); $content = Libraries_View::getInstance()->setModule('admin')->load('permissions'); Libraries_Layout::getInstance()->setTheme('admin'); Libraries_Layout::getInstance()->setLayout('admin'); Libraries_Layout::getInstance()->setRegionContent('content', $content); Libraries_Layout::getInstance()->render(); }
public function reordermanual() { $object = new Crud_Models_Object(); $object->load($_POST['object_id']); $field = new Crud_Models_Field(); $field->load($_POST['field_id']); $row = new Libraries_Db_Mysql_Model($object->table_name); $row->load($_POST['row_id']); $where = array(); $order = array(); $replacement_row = new Libraries_Db_Mysql_Model($object->table_name); $replacement_row->load(intval($_POST['value']), $field->field_name); if ($replacement_row->isEmpty()) { $sql = "SELECT MIN({$field->field_name}) as min, MAX({$field->field_name}) as max\r\n\t\t\t\t\tFROM {$object->table_name}\r\n\t\t\t\t\tWHERE is_deleted = 0"; $min_max = Libraries_Db_Factory::getDb()->fetchRow($sql, array(), Libraries_Db_Adapter::FETCH_TYPE_CLASS); if ($_POST['value'] < $min_max->min) { $replacement_row = $replacement_row->load($min_max->min, $field->field_name); $_POST['value'] = $min_max->min; } if ($_POST['value'] > $min_max->max) { $replacement_row = $replacement_row->load($min_max->max, $field->field_name); $_POST['value'] = $min_max->max; } /* $response = array(); $response['error'] = 'Can\'t find this object'; echo json_encode($response); return; */ } $replacement_row->{$field->field_name} = $row->{$field->field_name}; $replacement_row->save(); $row->{$field->field_name} = $_POST['value']; $row->save(); $response = array(); $response['success'] = 1; echo json_encode($response); return; }
public function __construct($table_name, array $data = array()) { $this->db = Libraries_Db_Factory::getDb(); $this->table_name = $table_name; $this->data = $data; }
public function map($object_name) { $sql = "SHOW COLUMNS FROM `{$object_name}`"; $fields = Libraries_Db_Factory::getDb()->fetchAll($sql, array(), Libraries_Db_Adapter::FETCH_TYPE_CLASS); $raw_field_names = array(); $has_id_field = false; $has_is_deleted_field = false; $has_last_modify_field = false; foreach ($fields as $field) { if ($field->Field == 'id') { $has_id_field = true; } if ($field->Field == 'is_deleted') { $has_is_deleted_field = true; } if ($field->Field == 'last_modify') { $has_last_modify_field = true; } $raw_field_names[] = $field->Field; } if (!$has_id_field) { $sql = "ALTER TABLE `{$object_name}` ADD COLUMN `id` int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST"; Libraries_Db_Factory::getDb()->execute($sql); $raw_field_names[] = 'id'; // reinit fields $sql = "SHOW COLUMNS FROM `{$object_name}`"; $fields = Libraries_Db_Factory::getDb()->fetchAll($sql, array(), Libraries_Db_Adapter::FETCH_TYPE_CLASS); } if (!$has_is_deleted_field) { $sql = "ALTER TABLE `{$object_name}` ADD COLUMN `is_deleted` tinyint(1) NOT NULL default 0"; Libraries_Db_Factory::getDb()->execute($sql); $raw_field_names[] = 'is_deleted'; // reinit fields $sql = "SHOW COLUMNS FROM `{$object_name}`"; $fields = Libraries_Db_Factory::getDb()->fetchAll($sql, array(), Libraries_Db_Adapter::FETCH_TYPE_CLASS); } if (!$has_last_modify_field) { $sql = "ALTER TABLE `{$object_name}` ADD COLUMN `last_modify` timestamp NULL ON UPDATE CURRENT_TIMESTAMP"; Libraries_Db_Factory::getDb()->execute($sql); $raw_field_names[] = 'last_modify'; // reinit fields $sql = "SHOW COLUMNS FROM `{$object_name}`"; $fields = Libraries_Db_Factory::getDb()->fetchAll($sql, array(), Libraries_Db_Adapter::FETCH_TYPE_CLASS); } $mapped_object = new Crud_Models_Object(); $mapped_object->load($object_name, 'table_name'); $mapped_object->loadFieldsForObject(); $is_remap = false; if ($mapped_object->isEmpty()) { $mapped_object->table_name = $object_name; $mapped_object->table_title = $object_name; $mapped_object->group_name = __('Just added'); $mapped_object->save(); } else { foreach ($mapped_object->sys_field_list as $mapped_field) { if (!in_array($mapped_field->field_name, $raw_field_names)) { $mapped_field->delete(); } } $is_remap = true; } foreach ($fields as $i => $field) { $where = array(); $where[] = array('AND', 'id_sys_object', '=', $mapped_object->id); $where[] = array('AND', 'field_name', '=', $field->Field); $field_object = new Crud_Models_Field(); $field_objects = $field_object->search($where); if (!empty($field_objects)) { continue; } $default_control = new Controls_Models_Control(); $default_control->load(1, 'is_default'); $field_object->id_sys_object = $mapped_object->id; $field_object->id_sys_control = $default_control->id; $field_object->field_name = $field->Field; $field_object->field_title = $field->Field; $field_object->is_hidden = $field->Field == 'is_deleted' || $field->Field == 'id' ? 1 : 0; $field_object->is_identification = $field->Field == 'is_deleted' || $i >= 4 || $is_remap == true ? 0 : 1; $field_object->is_primary_key = strstr($field->Key, 'PRI') !== false ? 1 : 0; $field_object->save(); } }
echo SITE_ROOT_URI . '/admin/auth/logout/'; ?> "><i class="fa fa-fw fa-power-off"></i> Log Out</a> </li> </ul> </li> </ul> <!-- Sidebar Menu Items - These collapse to the responsive navigation menu on small screens --> <div class="collapse navbar-collapse navbar-ex1-collapse"> <ul class="nav navbar-nav side-nav"> <li class="treeview"> <a href="#"><i class="fa fa-folder"></i> <span>Objects</span><i class="fa fa-angle-left pull-right"></i></a> <?php $sql = "SELECT id, group_name\n \t\t\tFROM sys_object\n \t\t\tWHERE \tis_deleted = 0 AND\n \t\t\t\t\tis_system = 0\n \t\t\tGROUP BY group_name\n \t\t\tORDER BY group_name"; $groups = Libraries_Db_Factory::getDb()->fetchAll($sql, array(), Libraries_Db_Adapter::FETCH_TYPE_CLASS); ?> <?php foreach ($groups as $group) { ?> <ul class="treeview-menu"> <li> <a data-target="#collapse-<?php echo $group->id; ?> " data-toggle="collapse" href="javascript:;"><i class="fa fa-folder"></i> <?php echo $group->group_name; ?> <i class="fa fa-fw fa-caret-down"></i></a>
public function restore($sys_object_id, $row_id) { $sys_object = new Crud_Models_Object(); $sys_object->load(intval($sys_object_id)); $sql = "UPDATE {$sys_object->table_name}\r\n\t\t\t\tSET is_deleted = 0\r\n\t\t\t\tWHERE id = ?"; $data = array($row_id); Libraries_Db_Factory::getDb()->execute($sql, $data); }
public function getSectorsForProject() { $sql = "SELECT sectors.*\r\n\t\t\t\tFROM projects_sectors\r\n\t\t\t\tINNER JOIN sectors ON sectors.id = projects_sectors.sector_id\r\n\t\t\t\tWHERE \tprojects_sectors.is_deleted = 0 AND\r\n\t\t\t\t\t\tsectors.is_deleted = 0 AND\r\n\t\t\t\t\t\tprojects_sectors.project_id = ?"; $data = array($this->id); return Libraries_Db_Factory::getDb()->fetchAll($sql, $data, Libraries_Db_Adapter::FETCH_TYPE_CLASS); }
public function index() { $where = array(); $all_projects_ids = array(); $project_ids = array(); // Load All projects // $sql = "SELECT id\r\n\t\t\t\tFROM projects"; $data = array(); $obj_all_projects_ids = Libraries_Db_Factory::getDb()->fetchAll($sql, $data, Libraries_Db_Adapter::FETCH_TYPE_CLASS); // id-s from all projects foreach ($obj_all_projects_ids as $obj) { $all_projects_ids[] = $obj->id; // getting array of id-s of projects } // Loading sectors select // $sector = new Home_Models_Sector(); $sectors = $sector->search(); Libraries_View::getInstance()->sectors = $sectors; // Loading regions-cities // $city = new Home_Models_City(); $order = array(); $order[] = array('name', 'ASC'); $cities = $city->search(array(), $order); Libraries_View::getInstance()->cities = $cities; // Search by project title // if (isset($_POST['name']) && !empty($_POST['name'])) { $where[] = array('AND', 'title', 'LIKE', '%' . $_POST['name'] . '%'); } // Sector search // if (isset($_POST['sectors'])) { $sectors = join(',', array_filter($_POST['sectors'], 'intval')); $sql = "SELECT project_id, COUNT(id) AS 'sectors_count'\r\n\t\t\t\t\tFROM projects_sectors\r\n\t\t\t\t\tWHERE sector_id IN ({$sectors})\r\n\t\t\t\t\tGROUP BY project_id\r\n\t\t\t\t\tHAVING sectors_count = " . count($_POST['sectors']); $data = array(); $obj_ids_projects_by_sectors = Libraries_Db_Factory::getDb()->fetchAll($sql, $data, Libraries_Db_Adapter::FETCH_TYPE_CLASS); // project_id-s from table project_sectors $ids_projects_by_sectors = array(); foreach ($obj_ids_projects_by_sectors as $obj) { $ids_projects_by_sectors[] = $obj->project_id; // getting array of id-s of projects } $project_ids = array_intersect($all_projects_ids, $ids_projects_by_sectors); } // Regions=Cities search // if (isset($_POST['regions-select'])) { $cities = join(',', array_filter($_POST['regions-select'], 'intval')); $sql = "SELECT project_id, COUNT(id) AS 'cities_count'\r\n\t\t\t\t\tFROM cities_projects\r\n\t\t\t\t\tWHERE city_id IN ({$cities},23)\r\n\t\t\t\t\tGROUP BY project_id\r\n\t\t\t\t\tHAVING cities_count = " . count($_POST['regions-select']); $data = array(); $obj_ids_projects_by_cities = Libraries_Db_Factory::getDb()->fetchAll($sql, $data, Libraries_Db_Adapter::FETCH_TYPE_CLASS); // project_id-s from table cities_projects $ids_projects_by_cities = array(); foreach ($obj_ids_projects_by_cities as $obj) { $ids_projects_by_cities[] = $obj->project_id; // getting array of id-s of projects } $project_ids = array_intersect($all_projects_ids, $ids_projects_by_cities); } if (!empty($_POST)) { if (empty($project_ids)) { $where[] = array('AND', '1', '=', 1); } else { $where[] = array('AND', 'id', 'IN', $project_ids); } } //echo '<pre>'; print_r($where); echo '</pre>'; $project = new Home_Models_Project(); $projects = $project->search($where); //echo '<pre>'; print_r($projects); echo '</pre>'; Libraries_View::getInstance()->projects = $projects; echo Libraries_View::getInstance()->setModule('home')->load('home'); }