Esempio n. 1
0
 /**
  * อ่านข้อมูลโมดูลจากชื่อโมดูล
  *
  * @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;
 }
Esempio n. 2
0
 /**
  * โหลดโมดูลที่ติดตั้ง
  */
 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');
     }
 }
Esempio n. 3
0
 /**
  * รับค่าจาก 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));
                 }
             }
         }
     }
 }
Esempio n. 4
0
 /**
  * รับค่าจาก 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);
 }
Esempio n. 5
0
 /**
  * รับค่าจาก 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 .= '&nbsp;&nbsp;&nbsp;';
                         }
                         $ret["r{$i}"] = ($text == '' ? '' : $text . '↳&nbsp;') . $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 .= '&nbsp;&nbsp;&nbsp;';
                     }
                     $ret["r{$item['id']}"] = ($text == '' ? '' : $text . '↳&nbsp;') . $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);
 }