예제 #1
0
 public function autocompleteAction()
 {
     $request = $this->getRequest();
     $this->view->items = array();
     if (JO_Session::get('user[user_id]') && $request->getPost('value')) {
         $methods = glob(dirname(__FILE__) . '/Search/*.php');
         if ($methods) {
             foreach ($methods as $file) {
                 $controller = basename($file, '.php');
                 $class_name = 'Search_' . $controller;
                 if (!class_exists($class_name, false)) {
                     JO_Loader::loadFile($file);
                 }
                 $class = new $class_name();
                 if (method_exists($class, 'autocomplete')) {
                     $this->view->items = array_merge($this->view->items, $class->autocomplete($request->getPost('value')));
                 }
             }
         }
     }
     $this->view->items[] = array('template' => 'global', 'label' => sprintf($this->translate('Search for %s'), $request->getPost('value')), 'href' => WM_Router::create($request->getBaseUrl() . '?controller=search&q=' . $request->getPost('value')));
     if ($request->isXmlHttpRequest()) {
         echo $this->renderScript('json');
     } else {
         $this->forward('error', 'error404');
     }
 }
예제 #2
0
파일: Modules.php 프로젝트: noikiy/amatteur
 /**
  * @param string|object $object
  * @return multitype:
  */
 public static function getControllerResources($controller)
 {
     $front = JO_Front::getInstance();
     $controller_name = $front->formatControllerName($controller);
     if ($front->isDispatchable($controller)) {
         JO_Loader::setIncludePaths(array($front->getDispatchDirectory()));
         JO_Loader::loadFile($front->classToFilename($controller_name), null, true);
         if (version_compare(PHP_VERSION, '5.2.6') === -1) {
             $class = new ReflectionObject(new $controller_name());
             $classMethods = $class->getMethods();
             $methodNames = array();
             foreach ($classMethods as $method) {
                 $methodNames[] = $method->getName();
             }
         } else {
             $methodNames = get_class_methods(new $controller_name());
         }
         $_classResources = array();
         foreach ($methodNames as $method) {
             if (6 < strlen($method) && 'Action' === substr($method, -6)) {
                 $_classResources[substr($method, 0, -6)] = substr($method, 0, -6);
             }
         }
         return $_classResources;
     }
     return array();
 }
예제 #3
0
 public function __construct()
 {
     $request = JO_Request::getInstance();
     parent::__construct();
     if (Model_Allowips::getTotalWords()) {
         if (!Model_Allowips::getTotalWords(array('filete_ip' => $request->getClientIp()))) {
             if (!in_array($request->getController(), array('login', 'error'))) {
                 $this->forward('error', 'noPermission');
             }
         }
     }
     //set default timezone if is not set
     if (!ini_get('date.timezone')) {
         ini_set('date.timezone', 'UTC');
     }
     WM_Users::initSession(JO_Session::get('user[user_id]'));
     if (!JO_Session::get('user[user_id]')) {
         JO_Session::set('user', array('user_id' => 0));
     }
     //admin check login
     $login_page = $request->getController() != 'login';
     if (JO_Session::get('user[is_developer]')) {
         $login_page = false;
     } else {
         if (JO_Session::get('user[is_admin]')) {
             $login_page = false;
         }
     }
     if (in_array($request->getController(), array('login', 'error'))) {
         $login_page = false;
     }
     if ($login_page) {
         $this->forward('login', 'index');
     }
     //admin top menu
     Helper_Config::set('adminmenupermisions', WM_Users::initPermision());
     //no permisions
     $controller_name = JO_Front::getInstance()->formatControllerName($request->getController());
     if (!class_exists($controller_name, false)) {
         JO_Loader::loadFile(APPLICATION_PATH . '/modules/' . $request->getModule() . '/controllers/' . JO_Front::getInstance()->classToFilename($controller_name));
     }
     if (method_exists($controller_name, 'config')) {
         $data = call_user_func(array($controller_name, 'config'));
         if (isset($data['has_permision']) && $data['has_permision'] && !WM_Users::allow('read', $request->getController())) {
             $this->forward('error', 'noPermission');
         }
     }
     WM_Rebuild::getInformation();
     WM_Licensecheck::checkIt();
 }
예제 #4
0
 public function noPermissionAction()
 {
     $request = JO_Request::getInstance();
     $forwarded = $request->getParam('forwarded');
     if (!$forwarded) {
         $forwarded = $request->getController();
     }
     $controller_name = JO_Front::getInstance()->formatControllerName($forwarded);
     if (!class_exists($controller_name, false)) {
         JO_Loader::loadFile(APPLICATION_PATH . '/modules/' . $request->getModule() . '/controllers/' . JO_Front::getInstance()->classToFilename($controller_name));
     }
     if (method_exists($controller_name, 'config')) {
         $data = call_user_func(array($controller_name, 'config'));
         if (isset($data['name']) && $data['name']) {
             $controller_name = $data['name'];
         }
     }
     $this->view->moduleName = $controller_name;
     $this->view->fullUrl = $request->getFullUrl();
 }
예제 #5
0
 public static function initPermision()
 {
     $request = JO_Request::getInstance();
     $temporary_for_permision = array();
     $files = glob(APPLICATION_PATH . '/modules/' . $request->getModule() . '/controllers/*.php');
     if ($files) {
         foreach ($files as $d => $file) {
             if (preg_match('/(.*)\\/(.*)Controller.php/i', $file, $match)) {
                 $name = basename($file, '.php');
                 if (!class_exists($name, false)) {
                     JO_Loader::loadFile($file);
                 }
                 if (method_exists($name, 'config')) {
                     $data = call_user_func(array($name, 'config'));
                     if (isset($data['has_permision']) && $data['has_permision'] === true) {
                         $temporary_for_permision[] = array('name' => $data['name'], 'key' => mb_strtolower($match[2]));
                     }
                 }
             }
         }
     }
     return $temporary_for_permision;
 }
예제 #6
0
 public function paymentAction()
 {
     $request = $this->getRequest();
     if (!JO_Session::get('user_id')) {
         JO_Session::set('msg_error', $this->translate('You must be logged to access that page!'));
         $this->redirect(WM_Router::create($request->getBaseUrl() . '?controller=users&action=login'));
     }
     $this->view->title = $this->translate('Deposit pre-paid cash');
     if ($request->isPost()) {
         if ($request->issetPost('amount')) {
             $amount = $request->getPost('amount');
             $image_model = new Helper_Images();
             $files = glob(dirname(__FILE__) . '/Payments/*.php');
             if ($files) {
                 foreach ($files as $file) {
                     if (preg_match('/^([\\w]{1,})Controller$/i', basename($file, '.php'), $match)) {
                         $key = mb_strtolower($match[1], 'utf-8');
                         if ($request->issetPost($key)) {
                             $depositID = Model_Deposit::addDeposit($amount);
                             if ($depositID) {
                                 JO_Session::set('deposit_id', $depositID);
                                 if (JO_Registry::forceGet($key . '_status')) {
                                     JO_Loader::loadFile($file);
                                     $form = $this->view->callChildren('payments_' . $key . '/depositForm');
                                     if ($form) {
                                         $logo = JO_Registry::forceGet($key . '_logo');
                                         if ($logo) {
                                             list($width) = getimagesize('uploads/' . $logo);
                                             if ($width > 300) {
                                                 $logo = $image_model->resizeWidth($logo, 300);
                                             } else {
                                                 $logo = 'uploads/' . $logo;
                                             }
                                         } else {
                                             $logo = '';
                                         }
                                         $this->view->payment = array('key' => $key, 'edit' => $request->getModule() . '/payments_' . $key, 'name' => $this->translate($match[1]), 'logo' => $logo, 'description' => $this->view->callChildren('payments_' . $key . '/description'), 'form' => $form);
                                         break;
                                     }
                                 }
                             }
                         }
                     }
                 }
             }
         }
     }
     $this->view->crumbs = array(array('name' => $this->translate('Home'), 'href' => $request->getBaseUrl()), array('name' => $this->translate('Profile'), 'href' => WM_Router::create($request->getBaseUrl() . '?controller=users&username='******'username'))), array('name' => $this->translate('Deposit')));
     $this->view->total = WM_Currency::format(JO_Session::get('total'));
     $this->view->children = array();
     $this->view->children['header_part'] = 'layout/header_part';
     $this->view->children['footer_part'] = 'layout/footer_part';
 }
예제 #7
0
파일: Users.php 프로젝트: noikiy/amatteur
 public static function initPermision()
 {
     $request = JO_Request::getInstance();
     if ($request->getModule() == 'admin' && JO_Session::get('user[is_admin]')) {
         $files = glob(APPLICATION_PATH . '/modules/' . $request->getModule() . '/controllers/*.php');
         $temporary_for_menu = array();
         $temporary_for_permision = array();
         $sort_order = $sort_order2 = array();
         if ($files) {
             foreach ($files as $d => $file) {
                 $name = basename($file, '.php');
                 JO_Loader::loadFile($file);
                 if (method_exists($name, 'config')) {
                     $data = call_user_func(array($name, 'config'));
                     if (!isset($data['has_permision']) || !$data['has_permision']) {
                         continue;
                     }
                     if (!$data['in_menu'] || !WM_Users::allow('read', $data['permision_key'])) {
                         continue;
                     }
                     if (isset($sort_order2[$data['menu']])) {
                         $sort_order2[$data['menu']] = min($sort_order[$data['menu']], (int) (isset($data['sort_order']) ? $data['sort_order'] : 0));
                     } else {
                         $sort_order2[$data['menu']] = (int) (isset($data['sort_order']) ? $data['sort_order'] : 0);
                     }
                     $sort_order[$data['menu']][$d] = (int) (isset($data['sort_order']) ? $data['sort_order'] : 0);
                     $temporary_for_menu[$data['menu']][$d] = array('name' => $data['name'], 'key' => $data['permision_key'], 'has_permision' => $data['has_permision'], 'menu' => $data['menu'], 'href' => $request->getBaseUrl() . $request->getModule() . '/' . (strtolower($name) != 'indexcontroller' ? str_replace('controller', '', strtolower($name)) . '/' : ''));
                 }
             }
         }
         array_multisort($sort_order2, SORT_ASC, $temporary_for_menu);
         foreach ($temporary_for_menu as $k => $t) {
             array_multisort($sort_order[$k], SORT_ASC, $temporary_for_menu[$k]);
         }
         return $temporary_for_menu;
     }
 }
예제 #8
0
 public function _initNoPermision()
 {
     $request = JO_Request::getInstance();
     if ($request->getModule() == 'install') {
         return '';
     }
     if ($request->getModule() == 'admin') {
         $controller_name = JO_Front::getInstance()->formatControllerName($request->getController());
         if (!class_exists($controller_name, false)) {
             JO_Loader::loadFile(APPLICATION_PATH . '/modules/' . $request->getModule() . '/controllers/' . JO_Front::getInstance()->classToFilename($controller_name));
         }
         if (method_exists($controller_name, 'config')) {
             $data = call_user_func(array($controller_name, 'config'));
             if ($data['has_permision'] && !WM_Users::allow('read', $request->getController())) {
                 JO_Action::getInstance()->forward('error', 'noPermission');
             }
         }
     }
 }
예제 #9
0
파일: Front.php 프로젝트: noikiy/amatteur
 public function dispatch($controller = null, $action = null, $params = array())
 {
     $this->setHelpersPath();
     $controller = $controller ? $controller : $this->getRequest()->getController();
     $response = JO_Response::getInstance();
     if (!$this->isDispatchable($controller) && $this->isDispatchable('error')) {
         $controller = 'error';
         $action = 'error404';
     }
     if ($this->isDispatchable($controller)) {
         JO_Loader::setIncludePaths(array($this->getDispatchDirectory()));
         $className = $this->formatControllerName($controller);
         JO_Loader::loadFile($this->classToFilename($className), null, true);
         $controller_instance = new $className($this->getRequest());
         if (!$controller_instance instanceof JO_Action) {
             require_once 'JO/Exception.php';
             throw new JO_Exception('Controller "' . $className . '" is not an instance of JO_Action');
         }
         $action = $action ? $action : $this->getRequest()->getAction();
         // by default, buffer output
         $disableOb = $this->getParam('disableOutputBuffering');
         $obLevel = ob_get_level();
         if (empty($disableOb)) {
             ob_start();
         }
         try {
             $controller_instance->dispatch($controller, $action, $params);
         } catch (Exception $e) {
             // Clean output buffer on error
             $curObLevel = ob_get_level();
             if ($curObLevel > $obLevel) {
                 do {
                     ob_get_clean();
                     $curObLevel = ob_get_level();
                 } while ($curObLevel > $obLevel);
             }
             throw $e;
         }
         if (empty($disableOb)) {
             $content = ob_get_clean();
             $response->appendBody($content);
         }
         // Destroy the page controller instance and reflection objects
         $controller_instance = null;
     } else {
         $controller_instance = new JO_Action();
         $controller_instance->dispatch($controller, 'error404');
         // Destroy the page controller instance and reflection objects
         $controller_instance = null;
         //			require_once 'JO/Exception.php';
         //			throw new JO_Exception(
         //				'Controller "' . $controller . '" is not found'
         //			);
     }
 }
예제 #10
0
 public function paymentAction()
 {
     $request = $this->getRequest();
     if (!JO_Session::get('user_id')) {
         JO_Session::set('msg_error', $this->translate('You must be logged to change your profile'));
         $this->redirect(WM_Router::create($request->getBaseUrl() . '?controller=users&action=login'));
     }
     if ($request->isPost() && $request->issetPost('item_id')) {
         $item = Model_Items::get($request->getPost('item_id'));
         if ($request->getPost('licence') == 'personal') {
             $orderID = Model_Orders::add($item);
         } elseif ($request->getPost('licence') == 'extended') {
             $orderID = Model_Orders::add($item, 'true');
         }
         JO_Session::set('order_id', $orderID);
         $this->view->crumbs = array(array('name' => $this->translate('Home'), 'href' => $request->getBaseUrl()), array('name' => $this->translate('Profile'), 'href' => WM_Router::create($request->getBaseUrl() . '?controller=users&username='******'username')))), array('name' => $this->translate('Payment')));
         $model_images = new Model_Images();
         $files = glob(dirname(__FILE__) . '/Payments/*.php');
         if ($files) {
             $payments_data = $sort_order = $order_obj = array();
             foreach ($files as $row => $file) {
                 if (preg_match('/^([\\w]{1,})Controller$/i', basename($file, '.php'), $match)) {
                     $key = mb_strtolower($match[1], 'utf-8');
                     if (JO_Registry::forceGet($key . '_status')) {
                         JO_Loader::loadFile($file);
                         $form = $this->view->callChildren('payments_' . $key . '/itemForm');
                         if ($form) {
                             $sort_order[$row] = (int) JO_Registry::forceGet($key . '_sort_order');
                             $logo = JO_Registry::forceGet($key . '_logo');
                             if ($logo) {
                                 list($width) = getimagesize('uploads/' . $logo);
                                 if ($width > 300) {
                                     $logo = $image_model->resizeWidth($logo, 300);
                                 } else {
                                     $logo = 'uploads/' . $logo;
                                 }
                             } else {
                                 $logo = '';
                             }
                             $payments_data[$row] = array('key' => $key, 'edit' => $request->getModule() . '/payments_' . $key, 'name' => $this->translate($match[1]), 'sort' => (int) JO_Registry::forceGet($key . '_sort_order'), 'logo' => JO_Registry::forceGet($key . '_logo') ? 'uploads/' . JO_Registry::forceGet($key . '_logo') : '', 'form' => $form);
                         }
                     }
                 }
             }
             array_multisort($sort_order, SORT_ASC, $payments_data);
             $this->view->payments = $payments_data;
         }
     } else {
         $this->redirect($request->getServer('HTTP_REFERER'));
     }
     $this->view->usertotal = WM_Currency::format(JO_Session::get('total'));
     $this->view->children = array();
     $this->view->children['header_part'] = 'layout/header_part';
     $this->view->children['footer_part'] = 'layout/footer_part';
 }
예제 #11
0
 public function uninstallAction()
 {
     $request = $this->getRequest();
     $extensions = array();
     $files = glob(dirname(__FILE__) . '/Extensions/*.php');
     if ($files) {
         foreach ($files as $file) {
             if (preg_match('/^([\\w]{1,})Controller$/i', basename($file, '.php'), $match)) {
                 $extensions[] = mb_strtolower($match[1], 'utf-8');
             }
         }
     }
     $extension = $request->getQuery('extension');
     if (in_array($extension, $extensions)) {
         $res = Model_Extensions::uninstall($extension);
         if ($res) {
             $module_name = JO_Front::getInstance()->formatModuleName('model_extensions_' . $extension);
             $file_model = APPLICATION_PATH . '/modules/' . $request->getModule() . '/' . JO_Front::getInstance()->classToFilename($module_name);
             if (file_exists($file_model)) {
                 if (!class_exists($module_name, false)) {
                     JO_Loader::loadFile($file_model);
                 }
                 if (method_exists($module_name, 'uninstall')) {
                     call_user_func(array($module_name, 'uninstall'));
                 }
             } else {
                 $module_name = JO_Front::getInstance()->formatControllerName('extensions_' . $extension);
                 $file_model = APPLICATION_PATH . '/modules/' . $request->getModule() . '/controllers/' . JO_Front::getInstance()->classToFilename($module_name);
                 if (file_exists($file_model)) {
                     if (!class_exists($module_name, false)) {
                         JO_Loader::loadFile($file_model);
                     }
                     if (method_exists($module_name, 'uninstall')) {
                         call_user_func(array($module_name, 'uninstall'));
                     }
                 }
             }
             $this->session->set('successfu_edite', true);
         }
     }
     $this->redirect($this->getRequest()->getBaseUrl() . $this->getRequest()->getModule() . '/extensions/');
 }