public function executeUpdate(\core\HTTPRequest $request)
 {
     $this->page()->addVar('title', 'Modifier les identifiants de connexion');
     $this->_addBreadcrumb();
     $configData = $this->config->read();
     $this->page()->addVar('username', $configData['username']);
     if ($request->postExists('login-password')) {
         $password = $request->postData('login-password');
         if ($this->_hashPassword($password) == $configData['password']) {
             $configData['username'] = $request->postData('login-update-username');
             $newPassword = $request->postData('login-update-password');
             if (!empty($newPassword)) {
                 $configData['password'] = $this->_hashPassword($newPassword);
             }
             try {
                 $this->config->write($configData);
             } catch (\Exception $e) {
                 $this->page()->addVar('error', $e->getMessage());
                 return;
             }
             $this->page()->addVar('updated?', true);
         } else {
             $this->page()->addVar('error', 'Incorrect password');
         }
     }
 }
 public function executeShowPage(\core\HTTPRequest $request)
 {
     $manager = $this->managers->getManagerOf('gutenberg');
     try {
         $page = $manager->getPage($request->getData('pageName'));
     } catch (\Exception $e) {
         $this->page()->addVar('error', $e->getMessage());
         return;
     }
     $this->page()->addVar('title', $page['title']);
     $this->page()->addVar('page', $page);
 }
 public function executeDeletePage(\core\HTTPRequest $request)
 {
     $this->page()->addVar('title', 'Supprimer un billet');
     $this->_addBreadcrumb();
     $manager = $this->managers->getManagerOf('gutenberg');
     $pageName = $request->getData('pageName');
     if ($request->postExists('check')) {
         if (!$manager->pageExists($pageName)) {
             $this->page()->addVar('error', 'Cannot find the page named "' . $pageName . '"');
             return;
         }
         try {
             $manager->deletePage($pageName);
         } catch (\Exception $e) {
             $this->page()->addVar('error', $e->getMessage());
             return;
         }
         $this->page()->addVar('deleted?', true);
     } else {
         $page = $manager->getPage($pageName);
         $this->page()->addVar('page', $page);
     }
 }
 public function executeIndex(\core\HTTPRequest $request)
 {
     $captcha = \lib\Captcha::build();
     $this->page()->addVar('captcha', $captcha);
     if ($request->postExists('message-sender-name')) {
         $messageData = array('senderName' => trim($request->postData('message-sender-name')), 'senderEmail' => $request->postData('message-sender-email'), 'subject' => trim($request->postData('message-subject')), 'content' => trim($request->postData('message-content')));
         $this->page()->addVar('message', $messageData);
         try {
             $message = new \lib\entities\ContactMessage($messageData);
         } catch (\InvalidArgumentException $e) {
             $this->page()->addVar('error', $e->getMessage());
             return;
         }
         $captchaId = (int) $request->postData('captcha-id');
         $captchaValue = (int) $request->postData('captcha-value');
         $captcha = \lib\Captcha::get($captchaId);
         if (empty($captcha)) {
             $this->page()->addVar('error', 'Your session has expired. Please try again');
             return;
         }
         if (!$captcha->check($captchaValue)) {
             $this->page()->addVar('error', 'Invalid captcha');
             return;
         }
         $contactConfig = $this->config->read();
         $messageDest = $contactConfig['email'];
         $messageSubject = $contactConfig['subjectPrepend'] . ' ' . $message['subject'];
         $messageContent = 'Nom : ' . $message['senderName'] . ' <' . $message['senderEmail'] . '>' . "\n";
         $messageContent .= 'Sujet : ' . $message['subject'] . "\n";
         $messageContent .= 'Message :' . "\n" . $message['content'];
         $messageHeaders = 'From: ' . $message['senderEmail'] . "\r\n" . 'Reply-To: ' . $message['senderEmail'] . "\r\n" . 'X-Mailer: PHP/' . phpversion();
         if (mail($messageDest, $messageSubject, $messageContent, $messageHeaders) !== false) {
             $this->page()->addVar('messageSent?', true);
         } else {
             $this->page()->addVar('error', 'Cannot send message : server error');
         }
     }
     $this->page()->addVar('title', 'Contact');
 }
 public function executeRemoveRepository(\core\HTTPRequest $request)
 {
     $this->page()->addVar('title', 'Supprimer un d&eacute;p&ocirc;t');
     $this->_addBreadcrumb();
     $packageManager = $this->managers->getManagerOf('Packagecontrol');
     $repoName = $request->getData('name');
     $repo = $packageManager->getRemoteRepository($repoName);
     $this->page()->addVar('repository', $repo);
     if ($request->postExists('check')) {
         try {
             $packageManager->removeRemoteRepository($repoName);
         } catch (\Exception $e) {
             $this->page()->addVar('error', $e->getMessage());
             return;
         }
         $this->page()->addVar('removed?', true);
     }
 }
 public function executeShowAction(\core\HTTPRequest $request)
 {
     $this->page()->addVar('title', 'Afficher une action');
     $this->page()->addVar('breadcrumb', array(array()));
     $moduleName = $request->getData('module');
     $actionName = $request->getData('action');
     $searchQuery = $request->getExists('q') ? trim($request->getData('q')) : null;
     $backend = $this->_getBackendMetadata($moduleName);
     $action = $this->_getAction($moduleName, $actionName);
     $this->page()->addVar('searchQuery', $searchQuery);
     if (!empty($backend) && !empty($action)) {
         $this->page()->addVar('backend', $backend);
         $this->page()->addVar('action', $action);
         $this->page()->addVar('title', $action['title']);
         $this->page()->addVar('breadcrumb', array(array('title' => $backend['title'], 'url' => $this->app->router()->getUrl($this->module(), 'showModule', array('module' => $moduleName))), array('title' => $action['title'])));
         if (isset($action['list'])) {
             if (!isset($action['list']['items'])) {
                 return;
             }
             $itemsToList = $action['list']['items'];
             $ctrl = $this->app->buildController($moduleName, $actionName);
             $methodName = 'list' . ucfirst($itemsToList);
             if (method_exists($ctrl, $methodName)) {
                 $items = $ctrl->{$methodName}($request);
                 $router = $this->app->router();
                 $route = $router->getRoute($moduleName, $actionName);
                 foreach ($items as $key => $item) {
                     if (isset($item['vars']) && $route->hasVars()) {
                         if (isset($action['list']['vars'])) {
                             $routeVarsNames = $route->varsNames();
                             $joinVarsNames = $action['list']['vars'];
                             $itemsVars = $item['vars'];
                             $vars = array();
                             foreach ($routeVarsNames as $routeVarName) {
                                 if (isset($joinVarsNames[$routeVarName])) {
                                     $itemVarName = $joinVarsNames[$routeVarName];
                                     $vars[$routeVarName] = $itemsVars[$itemVarName];
                                 }
                             }
                         } else {
                             $vars = $item['vars'];
                         }
                         $route->setVars($vars);
                     }
                     $items[$key]['url'] = $route->buildUrl();
                 }
                 //Search query
                 if (!empty($searchQuery)) {
                     $searcher = new \lib\ArraySearcher($items);
                     $items = $searcher->search($searchQuery, array('title', 'shortDescription'));
                 }
                 $this->page()->addVar('items', $items);
             }
         }
     }
 }
 public function executeDeleteRoute(\core\HTTPRequest $request)
 {
     $this->page()->addVar('title', 'Supprimer une route');
     $this->_addBreadcrumb();
     $routeApp = $request->getData('app');
     $routeId = (int) $request->getData('id');
     $configPath = __DIR__ . '/../../../etc/app/' . $routeApp . '/routes.json';
     try {
         $conf = new \core\Config($configPath);
         $routes = $conf->read();
         foreach ($routes as $id => $route) {
             if ($id == $routeId) {
                 unset($routes[$id]);
                 break;
             }
         }
         $conf->write($routes);
     } catch (\Exception $e) {
         $this->page()->addVar('error', $e->getMessage());
         return;
     }
     $this->page()->addVar('deleted?', true);
 }