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'); } }
/** * @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(); }
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(); }
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(); }
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; }
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'; }
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; } }
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'); } } } }
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' // ); } }
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'; }
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/'); }