/** * อ่านข้อมูลโมดูลจากชื่อโมดูล * * @param string $module * @param type $owner * @return object|false คืนค่าข้อมูล object ไม่พบ คืนค่า false */ public static function getModule($module, $owner) { if (is_string($module) && is_string($owner)) { $model = new \Kotchasan\Model(); $select = array('I.id', 'I.module_id', 'M.module', 'M.owner', 'D.topic', 'D.description', 'D.keywords', 'D.detail', 'I.visited'); $where = array(array('I.index', 1), array('M.module', $module), array('M.owner', $owner), array('I.published', 1), array('I.published_date', '<=', Date::mktimeToSqlDate(time())), array('D.language', array(Language::name(), ''))); return $model->db()->createQuery()->from('index I')->join('modules M', 'INNER', array('M.id', 'I.module_id'))->join('index_detail D', 'INNER', array(array('D.id', 'I.id'), array('D.module_id', 'M.id'), array('D.language', 'I.language')))->where($where)->cacheOn()->first($select); } return false; }
/** * โหลดโมดูลที่ติดตั้ง */ public static function installedmodules() { if (defined('MAIN_INIT')) { // ตรวจสอบโมดูลที่ติดตั้ง ตามโฟลเดอร์ $dir = ROOT_PATH . 'modules/'; $f = @opendir($dir); if ($f) { while (false !== ($text = readdir($f))) { if ($text !== '.' && $text !== '..' && $text !== 'css' && $text !== 'js') { Gcms::$install_owners[$text] = array(); } } closedir($f); } // ตรวจสอบ Widgets ที่ติดตั้ง ตามโฟลเดอร์ $dir = ROOT_PATH . 'Widgets/'; $f = @opendir($dir); if ($f) { while (false !== ($text = readdir($f))) { Gcms::$install_widgets[] = $text; } closedir($f); } // model $model = new \Kotchasan\Model(); // โหลดโมดูลที่ติดตั้ง เรียงตามลำดับโฟลเดอร์ $query = $model->db()->createQuery()->select('id', 'module', 'owner')->from('modules')->where(array('owner', '!=', 'index'))->order('owner'); foreach ($query->execute() as $item) { Gcms::$install_modules[$item->module] = $item; Gcms::$install_owners[$item->owner][] = $item; } // โหลดเมนู self::$menus = self::loadMenus(); // called Initial foreach (Gcms::$install_owners as $owner => $items) { if (is_file(ROOT_PATH . 'modules/' . $owner . '/controllers/admin/init.php')) { include ROOT_PATH . 'modules/' . $owner . '/controllers/admin/init.php'; $class = ucfirst($owner) . '\\Admin\\Init\\Controller'; if (method_exists($class, 'init')) { // module Initial $class::init($items); } } } } else { // เรียก method โดยตรง new \Kotchasan\Http\NotFound('Do not call method directly'); } }
/** * รับค่าจาก action */ public function action(Request $request) { if ($request->initSession() && $request->isReferer() && ($login = Login::isAdmin())) { if ($login['email'] == 'demo' || !empty($login['fb'])) { echo Language::get('Unable to complete the transaction'); } else { // รับค่าจากการ POST $action = $request->post('action')->toString(); // id ที่ส่งมา if (preg_match_all('/,?([0-9]+),?/', $request->post('id')->toString(), $match)) { // Model $model = new \Kotchasan\Model(); // ตาราง user $user_table = $model->getFullTableName('user'); if ($action === 'delete') { // ลบไอคอนสมาชิก $query = $model->db()->createQuery()->select('icon')->from('user')->where(array(array('id', $match[1]), array('id', '!=', 1), array('icon', '!=', ''))); foreach ($query->toArray()->execute() as $item) { @unlink(ROOT_PATH . self::$cfg->usericon_folder . $item['icon']); } // ลบสมาชิก $model->db()->delete($user_table, array(array('id', $match[1]), array('id', '!=', 1)), 0); } elseif ($action === 'accept') { // ยอมรับสมาชิกที่เลือก $model->db()->update($user_table, array(array('id', $match[1]), array('fb', '0')), array('activatecode' => '')); } elseif ($action === 'ban' || $action === 'unban') { // ระงับ/ยกเลิก การใช้งานสมาชิก $model->db()->update($user_table, array(array('id', $match[1]), array('id', '!=', 1)), array('ban' => $action == 'ban' ? 1 : 0)); } elseif ($action === 'activate' || $action === 'sendpassword') { // ส่งอีเมล์ยืนยันสมาชิก $query = $model->db()->createQuery()->select('id', 'email', 'activatecode')->from('user')->where(array(array('id', $match[1]), array('id', '!=', 1), array('fb', '0'))); $msgs = array(); foreach ($query->toArray()->execute() as $item) { // รหัสผ่านใหม่ $password = Text::rndname(6); // ข้อมูลอีเมล์ $replace = array('/%PASSWORD%/' => $password, '/%EMAIL%/' => $item['email']); $save = array('password' => md5($password . $item['email'])); if ($action === 'activate' || !empty($item['activatecode'])) { // activate หรือ ยังไม่ได้ activate $save['activatecode'] = empty($item['activatecode']) ? Text::rndname(32) : $item['activatecode']; $replace['/%ID%/'] = $save['activatecode']; // send mail $err = Email::send(1, 'member', $replace, $item['email']); } else { // send mail $err = Email::send(3, 'member', $replace, $item['email']); } $msgs = array(); if (empty($err)) { // อัปเดทรหัสผ่านใหม่ $model->db()->update($user_table, $item['id'], $save); } else { $msgs[] = $err; } if (empty($msgs)) { // ส่งอีเมล์ สำเร็จ echo Language::get('Your message was sent successfully'); } else { // มีข้อผิดพลาด echo implode("\n", $msgs); } } } elseif ($request->post('module')->toString() === 'status') { // เปลี่ยนสถานะสมาชิก $model->db()->update($user_table, array(array('id', $match[1]), array('id', '!=', 1), array('fb', '0')), array('status' => (int) $action)); } } } } }
/** * รับค่าจาก action ของ table */ public function action() { $ret = array(); // referer, session, admin if (self::$request->initSession() && self::$request->isReferer() && ($login = Login::isAdmin())) { if ($login['email'] == 'demo') { $ret['alert'] = Language::get('Unable to complete the transaction'); } else { // ค่าที่ส่งมา $action = self::$request->post('action')->toString(); $id = self::$request->post('id')->toInt(); // Model $model = new \Kotchasan\Model(); if ($action === 'published') { // เผยแพร่ $index = $model->db()->first($model->getFullTableName('index'), $id); if ($index) { $published = $index->published == 1 ? 0 : 1; $model->db()->update($model->getFullTableName('index'), $index->id, array('published' => $published)); // คืนค่า $ret['elem'] = 'published_' . $index->id; $lng = Language::get('PUBLISHEDS'); $ret['title'] = $lng[$published]; $ret['class'] = 'icon-published' . $published; } } elseif ($action === 'delete') { // ลบโมดูลและหน้าเพจ ไม่ลบข้อมูลของโมดูล $query = $model->db()->createQuery()->select('id', 'module_id')->from('index')->where(array(array('index', 1), array('module_id', $model->db()->createQuery()->select('module_id')->from('index')->where(array('id', $id))))); $count = 0; foreach ($query->execute() as $field) { $count++; if ($field->id == $id) { $model->db()->delete($model->getFullTableName('index'), $id); $model->db()->delete($model->getFullTableName('index_detail'), $id); } } // ลบโมดูล ถ้าไม่มีรายการในภาษาอื่น if ($count < 2) { $model->db()->delete($model->getFullTableName('modules'), $field->module_id); } // คืนค่า $ret['delete_id'] = self::$request->post('src')->toString() . '_' . $id; $ret['alert'] = Language::get('Deleted successfully'); } } } else { $ret['alert'] = Language::get('Unable to complete the transaction'); } // คืนค่าเป็น JSON echo json_encode($ret); }
/** * รับค่าจาก action ของ table */ public function action() { $ret = array(); // referer, session, admin if (self::$request->initSession() && self::$request->isReferer() && ($login = Login::isAdmin())) { if ($login['email'] == 'demo') { $ret['alert'] = Language::get('Unable to complete the transaction'); } else { // รับค่าจากการ POST $action = self::$request->post('action')->toString(); // Model $model = new \Kotchasan\Model(); $table_menus = $model->getFullTableName('menus'); if ($action === 'move') { // move menu $data = self::$request->post('data')->toString(); if (preg_match('/[0-9,]+/', $data)) { $ids = explode(',', $data); $query = $model->db()->createQuery()->select('id', 'level', 'menu_text')->from('menus')->where(array('id', $ids)); foreach ($query->toArray()->execute() as $item) { $levels[$item['id']] = $item; } // reorder $save['menu_order'] = 0; $top_id = 0; foreach ($ids as $i) { $save['menu_order']++; if ($top_id == 0) { $save['level'] = 0; } else { $save['level'] = max(0, min($levels[$top_id]['level'] + 1, $levels[$i]['level'])); } $top_id = $i; // save $model->db()->update($table_menus, $i, $save); // คืนค่า $text = ''; for ($b = 0; $b < $save['level']; $b++) { $text .= ' '; } $ret["r{$i}"] = ($text == '' ? '' : $text . '↳ ') . $levels[$i]['menu_text'] . "|{$save['level']}|{$i}"; } } } elseif ($action == 'move_left' || $action == 'move_right') { $top_level = 0; $id = self::$request->post('id')->toInt(); // query menu ทั้งหมด $query = $model->db()->createQuery()->select('id', 'level', 'menu_text')->from('menus')->where(array('parent', $model->db()->createQuery()->select('parent')->from('menus')->where($id)))->order('menu_order'); foreach ($query->toArray()->execute() as $a => $item) { $save = array(); if ($a == 0) { $save['level'] = 0; } elseif ($item['id'] == $id) { if ($action == 'move_right') { $save['level'] = min($top_level + 1, $item['level'] + 1, 2); } else { $save['level'] = max(0, $item['level'] - 1); } } else { $save['level'] = max(0, min($top_level + 1, $item['level'])); } $top_level = $save['level']; if ($save['level'] != $item['level']) { // save $model->db()->update($table_menus, $item['id'], $save); } // คืนค่า $text = ''; for ($i = 0; $i < $save['level']; $i++) { $text .= ' '; } $ret["r{$item['id']}"] = ($text == '' ? '' : $text . '↳ ') . $item['menu_text'] . "|{$save['level']}|{$item['id']}"; } } elseif ($action === 'delete') { // ลบเมนู $id = self::$request->post('id')->toInt(); $model->db()->delete($table_menus, $id); // คืนค่า $ret['delete_id'] = self::$request->post('src')->topic() . '_' . $id; $ret['alert'] = Language::get('Deleted successfully'); } } } else { $ret['alert'] = Language::get('Unable to complete the transaction'); } // คืนค่าเป็น JSON echo json_encode($ret); }