public function testSetContentWritesTheContenIntoTheFilesystem() { $fs = $this->getFilesystemMock(); $fs->expects($this->once())->method('write')->with($this->equalTo('myFile'), $this->equalTo('some content')); $file = new File('myFile', $fs); $file->setContent('some content'); }
/** * Encode JSON data and write to the file. * * @param array $data * @param string $filePath * @throws \InvalidArgumentException */ public function encodeFile($data, $filePath) { $file = new File($filePath); $dataEncoder = new JsonDataEncoder(); $fileData = $dataEncoder->encodeData($data); $file->setContent($fileData); }
/** * Create sitemap */ public static function create() { // Get pages list $pages_list = Pages::getPages(); // Create sitemap content $map = '<?xml version="1.0" encoding="UTF-8"?>' . "\n"; $map .= '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">' . "\n"; foreach ($pages_list as $page) { if ($page['parent'] != '') { $parent = $page['parent'] . '/'; $priority = '0.5'; } else { $parent = ''; $priority = '1.0'; } $map .= "\t" . '<url>' . "\n\t\t" . '<loc>' . Option::get('siteurl') . '/' . $parent . $page['slug'] . '</loc>' . "\n\t\t" . '<lastmod>' . date("Y-m-d", (int) $page['date']) . '</lastmod>' . "\n\t\t" . '<changefreq>weekly</changefreq>' . "\n\t\t" . '<priority>' . $priority . '</priority>' . "\n\t" . '</url>' . "\n"; } // Get list of components $components = Sitemap::getComponents(); // Add components to sitemap if (count($components) > 0) { foreach ($components as $component) { $map .= "\t" . '<url>' . "\n\t\t" . '<loc>' . Option::get('siteurl') . '/' . Text::lowercase($component) . '</loc>' . "\n\t\t" . '<lastmod>' . date("Y-m-d", time()) . '</lastmod>' . "\n\t\t" . '<changefreq>weekly</changefreq>' . "\n\t\t" . '<priority>1.0</priority>' . "\n\t" . '</url>' . "\n"; } } // Close sitemap $map .= '</urlset>'; // Save sitemap return File::setContent(ROOT . DS . 'sitemap.xml', $map); }
/** * Read file from KDB. * * @param string $remoteFile * @return \Kdb\File */ public function get($remoteFile) { $result = $this->getClient()->get($this->getUrlForFilename($remoteFile)); $file = new File(); $file->setContent($result->getBody())->setName(basename($remoteFile))->setMimeType($result->getHeader('Content-Type')); return $file; }
function Poll($id, $question, $answer1 = 'Yes', $answer2 = 'No') { // values $id = isset($id) ? $id : ''; $question = isset($question) ? $question : ''; $answer1 = isset($answer1) ? $answer1 : ''; $answer2 = isset($answer2) ? $answer2 : ''; // json dir $dir = PLUGINS_PATH . '/poll/db/db.json'; // clear vars init $db = ''; $data = ''; // check if exists file if not make one if (File::exists($dir)) { $db = File::getContent($dir); $data = json_decode($db, true); if (!$data[$id]) { // array of data $data[$id] = array('question' => '', 'yes' => '', 'no' => ''); File::setContent($dir, json_encode($data)); // redirect Request::redirect(Url::getCurrent()); } } else { File::setContent($dir, '[]'); } // check session if exists show answer only if (Session::get('user_poll' . $id)) { $template = Template::factory(PLUGINS_PATH . '/poll/template/'); return $template->fetch('answer.tpl', ['id' => trim($id), 'question' => trim($question), 'answer1' => trim($answer1), 'answer2' => trim($answer2), 'yes' => $data[$id]['yes'], 'no' => $data[$id]['no']]); } else { // form post if (Request::post('sendData_' . $id)) { // check token if (Request::post('token')) { if (Request::post('answer') == 1) { $good = $data[$id]['yes'] + 1; $bad = $data[$id]['no']; } elseif (Request::post('answer') == 0) { $bad = $data[$id]['no'] + 1; $good = $data[$id]['yes']; } // array of data $data[$id] = array('question' => $question, 'yes' => $good, 'no' => $bad); // set content File::setContent($dir, json_encode($data)); // set session cookie Session::set('user_poll' . $id, uniqid($id)); // redirect Request::redirect(Url::getCurrent()); } else { die('crsf detect !'); } } // show template form $template = Template::factory(PLUGINS_PATH . '/poll/template/'); return $template->fetch('poll.tpl', ['id' => trim($id), 'question' => trim($question), 'answer1' => trim($answer1), 'answer2' => trim($answer2), 'yes' => $data[$id]['yes'], 'no' => $data[$id]['no']]); } }
public function export_data_to_file($table, $filename_or_file) { if ($filename_or_file instanceof File) { $f = $filename_or_file; } else { $f = new File($filename_or_file); } $f->setContent($this->export_data($table)); }
function testBlackHole() { $f = new File("/" . FRAMEWORK_CORE_PATH . "tests/io/black_hole_test.php"); $this->assertTrue($f->exists(), "Il file del test non esiste!!"); $content = $f->getContent(); $f->delete(); $this->assertFalse($f->exists(), "Il file del test black hole non e' stato eliminato!!"); $f->touch(); $f->setContent($content); $this->assertTrue($f->exists(), "Il file del test black hole non e' stato rigenerato!!"); }
/** * @description Update folder */ private function update() { if (!empty($this->configChmod)) { chmod($this->path, $this->configChmod); } if ($this->configAccessDeny) { $indexFile = new File($this->path . "/index.html"); $indexFile->setContent("Access denied")->save(); } if (!empty($this->configRename)) { // TODO: ash-1: implement rename if folder already exist rename($this->path, $this->configRename); } }
/** * Main Emails admin function */ public static function main() { // Init vars $email_templates_path = STORAGE . DS . 'emails' . DS; $email_templates_list = array(); // Check for get actions // ------------------------------------- if (Request::get('action')) { // Switch actions // ------------------------------------- switch (Request::get('action')) { // Plugin action // ------------------------------------- case "edit_email_template": if (Request::post('edit_email_template') || Request::post('edit_email_template_and_exit')) { if (Security::check(Request::post('csrf'))) { // Save Email Template File::setContent(STORAGE . DS . 'emails' . DS . Request::post('email_template_name') . '.email.php', Request::post('content')); Notification::set('success', __('Your changes to the email template <i>:name</i> have been saved.', 'emails', array(':name' => Request::post('email_template_name')))); if (Request::post('edit_email_template_and_exit')) { Request::redirect('index.php?id=emails'); } else { Request::redirect('index.php?id=emails&action=edit_email_template&filename=' . Request::post('email_template_name')); } } } $content = File::getContent($email_templates_path . Request::get('filename') . '.email.php'); // Display view View::factory('box/emails/views/backend/edit')->assign('content', $content)->display(); break; } } else { // Get email templates $email_templates_list = File::scan($email_templates_path, '.email.php'); // Display view View::factory('box/emails/views/backend/index')->assign('email_templates_list', $email_templates_list)->display(); } }
$filename = Request::post('newFile'); $dir = Request::post('directory'); $content = Request::post('newContent'); if ($filename && $content) { // empty dir save on pages dir if ($dir == '') { if (File::exists(STORAGE_PATH . '/pages/' . sanitize($filename) . '.md')) { die('<span class="alert alert-danger">The file ' . sanitize($filename) . ' already exists</span>'); } File::setContent(STORAGE_PATH . '/pages/' . $filename . '.md', $content); Request::redirect(Url::getBase() . '/' . $filename); } else { if (File::exists(STORAGE_PATH . '/pages/' . $dir . '/' . sanitize($filename) . '.md')) { die('<span class="alert alert-danger">The file ' . sanitize($filename) . ' already exists</span>'); } File::setContent(STORAGE_PATH . '/pages/' . $dir . '/' . sanitize($filename) . '.md', $content); Request::redirect(Url::getBase() . '/' . $dir . '/' . sanitize($filename)); } // } else { die('You Cant write empty file'); } } else { // crsf die('crsf detect'); } } // remove file if (Request::get('del')) { if (Request::get('token')) { File::delete(STORAGE_PATH . '/pages' . Request::get('del') . '.md');
/** * Test setContent function * returns proper content. * * @dataProvider fileForWritePathAndContentProvider * @param string $filePath * @param string $fileContent */ public function testSetContent($filePath, $fileContent) { $file = new File($filePath); $file->setContent($fileContent); $this->assertEquals($fileContent, file_get_contents($filePath)); }
/** * Snippets admin function */ public static function main() { // Init vars $snippets_path = STORAGE . DS . 'snippets' . DS; $snippets_list = array(); $errors = array(); // Check for get actions // ------------------------------------- if (Request::get('action')) { // Switch actions // ------------------------------------- switch (Request::get('action')) { // Add snippet // ------------------------------------- case "add_snippet": if (Request::post('add_snippets') || Request::post('add_snippets_and_exit')) { if (Security::check(Request::post('csrf'))) { if (trim(Request::post('name')) == '') { $errors['snippets_empty_name'] = __('Required field', 'snippets'); } if (file_exists($snippets_path . Security::safeName(Request::post('name')) . '.snippet.php')) { $errors['snippets_exists'] = __('This snippet already exists', 'snippets'); } if (count($errors) == 0) { // Save snippet File::setContent($snippets_path . Security::safeName(Request::post('name')) . '.snippet.php', Request::post('content')); Notification::set('success', __('Your changes to the snippet <i>:name</i> have been saved.', 'snippets', array(':name' => Security::safeName(Request::post('name'))))); if (Request::post('add_snippets_and_exit')) { Request::redirect('index.php?id=snippets'); } else { Request::redirect('index.php?id=snippets&action=edit_snippet&filename=' . Security::safeName(Request::post('name'))); } } } else { die('Request was denied because it contained an invalid security token. Please refresh the page and try again.'); } } // Save fields if (Request::post('name')) { $name = Request::post('name'); } else { $name = ''; } if (Request::post('content')) { $content = Request::post('content'); } else { $content = ''; } // Display view View::factory('box/snippets/views/backend/add')->assign('content', $content)->assign('name', $name)->assign('errors', $errors)->display(); break; // Edit snippet // ------------------------------------- // Edit snippet // ------------------------------------- case "edit_snippet": // Save current snippet action if (Request::post('edit_snippets') || Request::post('edit_snippets_and_exit')) { if (Security::check(Request::post('csrf'))) { if (trim(Request::post('name')) == '') { $errors['snippets_empty_name'] = __('Required field', 'snippets'); } if (file_exists($snippets_path . Security::safeName(Request::post('name')) . '.snippet.php') and Security::safeName(Request::post('snippets_old_name')) !== Security::safeName(Request::post('name'))) { $errors['snippets_exists'] = __('This snippet already exists', 'snippets'); } // Save fields if (Request::post('content')) { $content = Request::post('content'); } else { $content = ''; } if (count($errors) == 0) { $snippet_old_filename = $snippets_path . Request::post('snippets_old_name') . '.snippet.php'; $snippet_new_filename = $snippets_path . Security::safeName(Request::post('name')) . '.snippet.php'; if (!empty($snippet_old_filename)) { if ($snippet_old_filename !== $snippet_new_filename) { rename($snippet_old_filename, $snippet_new_filename); $save_filename = $snippet_new_filename; } else { $save_filename = $snippet_new_filename; } } else { $save_filename = $snippet_new_filename; } // Save snippet File::setContent($save_filename, Request::post('content')); Notification::set('success', __('Your changes to the snippet <i>:name</i> have been saved.', 'snippets', array(':name' => basename($save_filename, '.snippet.php')))); if (Request::post('edit_snippets_and_exit')) { Request::redirect('index.php?id=snippets'); } else { Request::redirect('index.php?id=snippets&action=edit_snippet&filename=' . Security::safeName(Request::post('name'))); } } } else { die('Request was denied because it contained an invalid security token. Please refresh the page and try again.'); } } if (Request::post('name')) { $name = Request::post('name'); } else { $name = File::name(Request::get('filename')); } $content = File::getContent($snippets_path . Request::get('filename') . '.snippet.php'); // Display view View::factory('box/snippets/views/backend/edit')->assign('content', $content)->assign('name', $name)->assign('errors', $errors)->display(); break; case "delete_snippet": if (Security::check(Request::get('token'))) { File::delete($snippets_path . Request::get('filename') . '.snippet.php'); Notification::set('success', __('Snippet <i>:name</i> deleted', 'snippets', array(':name' => File::name(Request::get('filename'))))); Request::redirect('index.php?id=snippets'); } else { die('Request was denied because it contained an invalid security token. Please refresh the page and try again.'); } break; } } else { // Get snippets $snippets_list = File::scan($snippets_path, '.snippet.php'); // Display view View::factory('box/snippets/views/backend/index')->assign('snippets_list', $snippets_list)->display(); } }
public function testSetContentThrowsAnExceptionIfNoFilesystemIsConfigured() { $file = new File('myFile'); $this->setExpectedException('LogicException'); $file->setContent('some content'); }
if (Session::exists('user')) { // items per page $per_page = $p::$site['backend_pagination_media_all']; // array json $json = array(); $total = ''; // next prev $prev = ''; $next = ''; // template $templateAll = ''; // json file $jsonFile = ROOTBASE . '/public/media/mdb.json'; // if not exists create if (!File::exists($jsonFile)) { File::setContent($jsonFile, '[]'); // create folders album and album_thumbs Dir::create(ROOTBASE . '/public/media'); Dir::create(ROOTBASE . '/public/media/albums'); Dir::create(ROOTBASE . '/public/media/album_thumbs'); } else { // get json file $json = json_decode(File::getContent($jsonFile), true); $total = count($json); if ($total > 0) { rsort($json); $showPag = array_chunk($json, $per_page); if ($offset > 1) { $prev = '<a class="btn blue" href="' . $p->Url() . '/media/' . ($offset - 1) . '"><i class="ti-arrow-left"></i></a>'; } else { $prev = '<span class="btn black"><i class="ti-arrow-left"></i></span>';
} } // get directory without base url $directory = str_replace(THEMES . '/', '', $path); $directory = str_replace(THEMES . '/' . File::name($path) . '.' . File::ext($path), '', $path); $error = ''; // save file if (Request::post('saveFile')) { if (Request::post('token')) { $filename = $p->SeoLink(Request::post('filename')); $content = Request::post('newfile'); if (File::exists(THEMES . '/' . $path . '/' . $filename . $ext)) { $error = '<span class="well red">' . Panel::$lang['File_Name_Exists'] . '</span>'; } else { // save content File::setContent(THEMES . '/' . $path . '/' . $filename . $ext, $content); // set notification $p->setMsg($p::$lang['Success_save']); // redirect Request::redirect($p->Url() . '/' . $url); } } else { die('crsf Detect!'); } } $p->view('actions', array('url' => $url, 'title' => Panel::$lang['New_File'], 'html' => '<form method="post"> <seciton class="subheader"> <div class="row"> <div class="box-1 col"> ' . $error . ' <input type="hidden" name="token" value="' . Token::generate() . '">
<?php require_once "initialize.php"; /** * Created by EngrNaveed. * Date: 01-Jan-15 * Time: 5:20 PM */ // data $tablesList = $db->getTablesList('ems'); foreach ($tablesList as $tablename) { $className = tbl2cls($tablename); // create file $file = new File("models/{$className}.php"); $contents = $file->getContent(); // refField $pattern = '/static \\$childClasses \\= array\\(\\);/'; $replacement = "static \$childRefField = '';"; $contents = preg_replace($pattern, $replacement, $contents); // child classes $contents .= "\n{$className}::\$childClasses = array(\n \t//new ChildClass('ClassName', 'restrict'),\n );"; echo nl2br($contents . "<hr>"); $file->setContent($contents); }
public function testImportData() { $this->__dropTable(); $this->__createTable(); $import_path = "/framework/core/tests/db/import_export/import_test.xml"; $f = new File($import_path); $all_import_content = <<<END_OF_DATA <?xml version="1.0" encoding="utf-8"?> <table name="impiegati"> <row> <field name="id">1</field> <field name="nome">Nome della prova</field> <field name="livello">15</field> <field name="data_inserimento">2011/04/06</field> </row> <row> <field name="id">2</field> <field name="nome">Import ME!!</field> <field name="livello">3</field> <field name="data_inserimento">2011-04-03</field> </row> </table> END_OF_DATA; $f->setContent($all_import_content); $importer = new __MysqlTableDataImportExport("impiegati"); $importer->import_data_from_file($import_path); $f->delete(); $ss = new __MysqlSelect("impiegati"); $ss->addConditionEquals("nome", "Import ME!!"); $results = $ss->exec_fetch_assoc_all(); $this->assertEqual(count($results), 1, "Il numero di risultati trovati non corrisponde!!"); if (count($results) == 1) { $result = $results[0]; $this->assertEqual($result["id"], 2, "L'id del dato importato non corrisponde!!"); $this->assertEqual($result["livello"], 3, "Il livello del dato importato non corrisponde!!"); $this->assertEqual($result["data_inserimento"], "2011-04-03", "La data non corrisponde!! : " . $result["data_inserimento"]); } $this->__dropTable(); }
public static function init() { // login vars $user = trim(Config::get('plugins.gallery.email')); $password = trim(Config::get('plugins.gallery.password')); $token = trim(Config::get('plugins.gallery.token')); $hash = md5($token . $password); // get plugin info //var_dump(json_encode(Config::get('plugins.gallery'),true)); $template = Template::factory(PLUGINS_PATH . '/gallery/templates/'); $template->setOptions(['strip' => false]); $jsonFile = ''; $format = ''; $thumbnails_path = ''; $photos_path = ''; $json = ''; $info = ''; // check if dir exists if not create if (!Dir::exists(ROOT_DIR . '/public/gallery')) { Dir::create(ROOT_DIR . '/public/gallery'); } if (!Dir::exists(ROOT_DIR . '/public/gallery/thumbnails')) { Dir::create(ROOT_DIR . '/public/gallery/thumbnails'); } if (!Dir::exists(ROOT_DIR . '/public/gallery/galleries')) { Dir::create(ROOT_DIR . '/public/gallery/galleries'); } if (!File::exists(ROOT_DIR . '/public/gallery/gallery.json')) { File::setContent(ROOT_DIR . '/public/gallery/gallery.json', '[]'); } else { $jsonFile = ROOT_DIR . '/public/gallery/gallery.json'; $format = array('jpg', 'jpeg', 'png', 'gif', 'bmp', 'JPG', 'JPEG'); $thumbnails_path = ROOT_DIR . '/public/gallery/thumbnails/'; $photos_path = ROOT_DIR . '/public/gallery/galleries/'; // decode json $json = json_decode(File::getContent($jsonFile), true); } // show loginbtn if (Session::exists(Config::get('plugins.gallery.name') . '_user')) { // logout if (Request::post('access_logout')) { Session::delete(Config::get('plugins.gallery.name') . '_user'); Request::redirect(Url::getBase() . '/' . strtolower(Config::get('plugins.gallery.name'))); } // create gallery if (Request::post('createGallery')) { if (Request::post('token')) { // id $id = time(); // json array remenber encode $json[$id] = array('id' => $id, 'title' => Request::post('title') ? Request::post('title') : 'No title', 'desc' => Request::post('desc') ? Request::post('desc') : 'No desc', 'thumbnail' => '/public/gallery/thumbnails/' . $id . '.png', 'photos' => ROOT_DIR . '/public/gallery/galleries/' . $id . '/'); Dir::create($photos_path . $id); // save content if (File::setContent($jsonFile, json_encode($json))) { self::upload('thumbnail', 'thumbnail', $format, $thumbnails_path, $id); self::upload('photos', 'photos', $format, $photos_path, $id); return self::set_msg('Success The gallery has been created'); } } else { die('Crsf detect!'); } } // update gallery if (Request::post('updateGallery')) { if (Request::post('token')) { // json array remenber encode $id = Request::post('update_id'); $json[$id] = array('id' => $id, 'title' => Request::post('update_title') ? Request::post('update_title') : 'No title', 'desc' => Request::post('update_desc') ? Request::post('update_desc') : 'No desc', 'thumbnail' => '/public/gallery/thumbnails/' . $id . '.png', 'photos' => ROOT_DIR . '/public/gallery/galleries/' . $id . '/'); // save content if (File::setContent($jsonFile, json_encode($json))) { //upload images self::upload('thumbnail', 'update_thumbnail', $format, $thumbnails_path, $id); self::upload('photos', 'update_photos', $format, $photos_path, $id); return self::set_msg('Success The gallery has been updated'); } } else { die('Crsf detect!'); } } // resize gallery if (Request::post('resizeGallery')) { if (Request::post('token')) { $uid = Request::post('gallery_id'); $w = Request::post('gallery_w'); $h = Request::post('gallery_h'); $files = File::scan($photos_path . $uid); foreach ($files as $file) { // Load the original image $image = new SimpleImage($file); $image->resize($w, $h, true); $image->save($file); } return self::set_msg('Success The gallery Photos, has been resized'); } } // resize thumbnail if (Request::post('resizeThumbnail')) { if (Request::post('token')) { $uid = Request::post('gallery_id'); $tw = Request::post('gallery_tw'); $th = Request::post('gallery_th'); $dir = ROOT_DIR . '/public/gallery/thumbnails/' . $uid . '.png'; // Load the original image $image = new SimpleImage($dir); $image->resize($tw, $th, true); $image->save($dir); return self::set_msg('Success The gallery Thumbnail, has been created'); } } // remove file if (Request::get('rem')) { $file = base64_decode(Request::get('rem')); $uid = Request::get('id'); File::delete($file); self::set_msg('Success The Image has been deleted'); } // remove gallery if (Request::get('del')) { $id_of_gallery = Request::get('del'); unset($json[$id_of_gallery]); if (File::setContent($jsonFile, json_encode($json))) { File::delete(ROOT_DIR . '/public/gallery/thumbnails/' . $id_of_gallery . '.png'); Dir::delete($photos_path . $id_of_gallery); self::set_msg('Success The Gallery ' . $id_of_gallery . ' has been deleted'); Request::redirect(Url::getBase() . '/gallery'); } } // show template return $template->display('admin.tpl', ['info' => self::get_msg(), 'title' => Config::get('plugins.gallery.name') . ' Admin Area', 'root_dir' => ROOT_DIR, 'info' => $info, 'content' => $json ? array_reverse($json) : '']); } else { // login access if (Request::post('access_login')) { if (Request::post('token')) { if (Request::post('password') == $password && Request::post('email') == $user) { @Session::start(); Session::set(Config::get('plugins.gallery.name') . '_user', $hash); // show admin template Request::redirect(Url::getBase() . '/gallery'); } else { // password not correct show error $template->display('partials/error.tpl', ['title' => 'Access Error', 'content' => Config::get('plugins.gallery.errorPassword')]); } } else { // crsf die('crsf detect'); } } // template return $template->display('home.tpl', ['root_dir' => ROOT_DIR, 'content' => $json ? array_reverse($json) : '']); } }
} }); /* EDIT SITE.YML -----------------------------*/ /* * @name Edit site * @desc Edit site ( :any use base64_encode remenber decode file) */ $p->route('/config', function () use($p) { if (Session::exists('user')) { // update file if (Request::post('saveFile')) { if (Request::post('token')) { $content = Request::post('updateFile'); // save content File::setContent(SITE, $content); // set notification $p->setMsg($p::$lang['Success_edit']); // redirect Request::redirect($p->Url()); } else { die('crsf Detect!'); } } $p->view('actions', array('url' => 'Config', 'title' => Panel::$lang['Config'], 'html' => '<form method="post"> <section class="subheader"> <div class="row"> <div class="box-1 col"> <input type="hidden" name="token" value="' . Token::generate() . '"> <label class="editor-label"><b>Name: </b> site.yml</label> </div>
public function processIncomingEmailAccount(IncomingEmailAccount $account) { $count = 0; if ($emails = $account->getUnprocessedEmails()) { try { $current_user = framework\Context::getUser(); foreach ($emails as $email) { $user = $this->getOrCreateUserFromEmailString($email->from); if ($user instanceof User) { if (framework\Context::getUser()->getID() != $user->getID()) { framework\Context::switchUserContext($user); } $message = $account->getMessage($email); $data = $message->getBodyPlain() ? $message->getBodyPlain() : strip_tags($message->getBodyHTML()); if ($data) { if (mb_detect_encoding($data, 'UTF-8', true) === false) { $data = utf8_encode($data); } $new_data = ''; foreach (explode("\n", $data) as $line) { $line = trim($line); if ($line) { $line = preg_replace('/^(_{2,}|-{2,})$/', "<hr>", $line); $new_data .= $line . "\n"; } else { $new_data .= "\n"; } } $data = nl2br($new_data, false); } // Parse the subject, and obtain the issues. $parsed_commit = Issue::getIssuesFromTextByRegex(mb_decode_mimeheader($email->subject)); $issues = $parsed_commit["issues"]; // If any issues were found, add new comment to each issue. if ($issues) { foreach ($issues as $issue) { $text = preg_replace('#(^\\w.+:\\n)?(^>.*(\\n|$))+#mi', "", $data); $text = trim($text); if (!$this->processIncomingEmailCommand($text, $issue) && $user->canPostComments()) { $comment = new Comment(); $comment->setContent($text); $comment->setPostedBy($user); $comment->setTargetID($issue->getID()); $comment->setTargetType(Comment::TYPE_ISSUE); $comment->save(); } } } else { if ($user->canReportIssues($account->getProject())) { $issue = new Issue(); $issue->setProject($account->getProject()); $issue->setTitle(mb_decode_mimeheader($email->subject)); $issue->setDescription($data); $issue->setPostedBy($user); $issue->setIssuetype($account->getIssuetype()); $issue->save(); // Append the new issue to the list of affected issues. This // is necessary in order to process the attachments properly. $issues[] = $issue; } } // If there was at least a single affected issue, and mail // contains attachments, add those attachments to related issues. if ($issues && $message->hasAttachments()) { foreach ($message->getAttachments() as $attachment_no => $attachment) { echo 'saving attachment ' . $attachment_no; $name = $attachment['filename']; $new_filename = framework\Context::getUser()->getID() . '_' . NOW . '_' . basename($name); if (framework\Settings::getUploadStorage() == 'files') { $files_dir = framework\Settings::getUploadsLocalpath(); $filename = $files_dir . $new_filename; } else { $filename = $name; } Logging::log('Creating issue attachment ' . $filename . ' from attachment ' . $attachment_no); echo 'Creating issue attachment ' . $filename . ' from attachment ' . $attachment_no; $content_type = $attachment['type'] . '/' . $attachment['subtype']; $file = new File(); $file->setRealFilename($new_filename); $file->setOriginalFilename(basename($name)); $file->setContentType($content_type); $file->setDescription($name); $file->setUploadedBy(framework\Context::getUser()); if (framework\Settings::getUploadStorage() == 'database') { $file->setContent($attachment['data']); } else { Logging::log('Saving file ' . $new_filename . ' with content from attachment ' . $attachment_no); file_put_contents($new_filename, $attachment['data']); } $file->save(); // Attach file to each related issue. foreach ($issues as $issue) { $issue->attachFile($file); } } } $count++; } } } catch (\Exception $e) { } if (framework\Context::getUser()->getID() != $current_user->getID()) { framework\Context::switchUserContext($current_user); } } $account->setTimeLastFetched(time()); $account->setNumberOfEmailsLastFetched($count); $account->save(); return $count; }
// submit function if (Request::post('create_new_folder')) { // check token if (Token::check(Request::post('token'))) { // if empty if (Request::post('new_folder_name') !== '') { $dir = str_replace('\\', '/', $dir); // name of folder $foldername = PUBLICFOLDER . '/' . $dir . '/' . $p->SeoLink(Request::post('new_folder_name')); $foldername = str_replace('//', '/', $foldername); // if exists if (!Dir::exists($foldername)) { // create folder Dir::create($foldername); // init folder with one file File::setContent($foldername . '/folder.html', $foldername); // set notification $p->setMsg($p::$lang['Success_save']); // redirect to edit index Request::redirect($p->url() . '/uploads'); } else { // if exists $error = '<span class="well red">' . Panel::$lang['Folder_Already_Exists'] . '</span>'; } } else { // if empty input value $error = '<span class="well red">' . Panel::$lang['Folder_Name_Required'] . '</span>'; } } else { die('crsf detect'); }
$ext = '.tpl'; $textContent = '<!-- Write here your tpl -->'; } // get directory without base url $directory = str_replace(THEMES . '/', '', $path); $directory = str_replace(THEMES . '/' . File::name($path) . '.' . File::ext($path), '', $path); $error = ''; // save file if (Request::post('saveFile')) { if (Request::post('token')) { $filename = $p->SeoLink(Request::post('filename')); if (File::exists(THEMES . '/' . $path . '/' . $filename . $ext)) { $error = '<span class="label label-danger">' . Panel::$lang['File_Name_Exists'] . '</span>'; } else { // save content File::setContent(THEMES . '/' . $path . '/' . $filename . $ext, Request::post('content')); // set notification $p->setMsg($p::$lang['Success_save']); // redirect Request::redirect($p->Url() . '/' . $url); } } else { die('crsf Detect!'); } } $p->view('actions', array('url' => $url, 'title' => Panel::$lang['New_File'], 'html' => ' <form method="post"> <div class="row"> <div class="col-lg-12"> ' . $error . ' <input type="hidden" name="token" value="' . Token::generate() . '"> <input type="text" value="" class="form-control" name="filename" required placeholder="File name">
-----------------------------*/ /* * @name Media removefile * @desc Remove file on media ( :any use base64_encode remenber decode file) */ $p->route('/action/media/removefile/(:any)/(:any)', function ($token, $file) use($p) { if (Session::exists('user')) { if (Token::check($token)) { // get json file fow with and height $jsonFile = PUBLICFOLDER . '/media/mdb.json'; $json = json_decode(File::getContent($jsonFile), true); // if remove thumb and dir unlik json file File::delete(ROOTBASE . $json[$file]['thumb']); Dir::delete(ROOTBASE . $json[$file]['images']); unset($json[$file]); if (File::setContent($jsonFile, json_encode($json))) { // set notification $p->setMsg($p::$lang['Success_remove']); Request::redirect($p->Url() . '/media'); } } else { die('crsf Detect'); } } }); /* * @name Media removefile * @desc Remove file on media ( :any use base64_encode remenber decode file) */ $p->route('/action/media/uploads/removefile/(:any)/(:any)', function ($id, $file) use($p) { if (Session::exists('user')) {
/** * Pages admin function */ public static function main() { $current_theme = Option::get('theme_site_name'); $site_url = Option::get('siteurl'); $templates_path = THEMES_SITE; $errors = array(); $pages = new Table('pages'); PagesAdmin::$pages = $pages; $users = new Table('users'); $user = $users->select('[id=' . Session::get('user_id') . ']', null); // Page author if (!empty($user['firstname'])) { $author = empty($user['lastname']) ? $user['firstname'] : $user['firstname'] . ' ' . $user['lastname']; } else { $author = Session::get('user_login'); } $author = Html::toText($author); // Status array $status_array = array('published' => __('Published', 'pages'), 'draft' => __('Draft', 'pages')); // Access array $access_array = array('public' => __('Public', 'pages'), 'registered' => __('Registered', 'pages')); // Check for get actions // --------------------------------------------- if (Request::get('action')) { // Switch actions // ----------------------------------------- switch (Request::get('action')) { // Clone page // ------------------------------------- case "clone_page": if (Security::check(Request::get('token'))) { // Generate rand page name $rand_page_name = Request::get('name') . '_clone_' . date("Ymd_His"); // Get original page $orig_page = $pages->select('[slug="' . Request::get('name') . '"]', null); // Generate rand page title $rand_page_title = $orig_page['title'] . ' [copy]'; // Clone page if ($pages->insert(array('slug' => $rand_page_name, 'template' => $orig_page['template'], 'parent' => $orig_page['parent'], 'robots_index' => $orig_page['robots_index'], 'robots_follow' => $orig_page['robots_follow'], 'status' => $orig_page['status'], 'access' => isset($orig_page['access']) ? $orig_page['access'] : 'public', 'expand' => isset($orig_page['expand']) ? $orig_page['expand'] : '0', 'title' => $rand_page_title, 'meta_title' => $orig_page['meta_title'], 'description' => $orig_page['description'], 'keywords' => $orig_page['keywords'], 'tags' => $orig_page['tags'], 'date' => $orig_page['date'], 'author' => $orig_page['author']))) { // Get cloned page ID $last_id = $pages->lastId(); // Save cloned page content File::setContent(STORAGE . DS . 'pages' . DS . $last_id . '.page.txt', File::getContent(STORAGE . DS . 'pages' . DS . $orig_page['id'] . '.page.txt')); // Send notification Notification::set('success', __('The page <i>:page</i> cloned.', 'pages', array(':page' => Security::safeName(Request::get('name'), '-', true)))); } // Run add extra actions Action::run('admin_pages_action_clone'); // Redirect Request::redirect('index.php?id=pages'); } else { die('Request was denied because it contained an invalid security token. Please refresh the page and try again.'); } break; // Add page // ------------------------------------- // Add page // ------------------------------------- case "add_page": // Add page if (Request::post('add_page') || Request::post('add_page_and_exit')) { if (Security::check(Request::post('csrf'))) { // Get parent page if (Request::post('pages') == '0') { $parent_page = ''; } else { $parent_page = Request::post('pages'); } // Validate //-------------- if (trim(Request::post('page_name')) == '') { $errors['pages_empty_name'] = __('Required field', 'pages'); } if (trim(Request::post('page_title')) == '') { $errors['pages_empty_title'] = __('Required field', 'pages'); } if (count($pages->select('[slug="' . Security::safeName(Request::post('page_name'), '-', true) . '"]')) != 0) { $errors['pages_exists'] = __('This page already exists', 'pages'); } // Prepare date if (Valid::date(Request::post('page_date'))) { $date = strtotime(Request::post('page_date')); } else { $date = time(); } if (Request::post('robots_index')) { $robots_index = 'noindex'; } else { $robots_index = 'index'; } if (Request::post('robots_follow')) { $robots_follow = 'nofollow'; } else { $robots_follow = 'follow'; } // If no errors then try to save if (count($errors) == 0) { // Insert new page if ($pages->insert(array('slug' => Security::safeName(Request::post('page_name'), '-', true), 'template' => Request::post('templates'), 'parent' => $parent_page, 'status' => Request::post('status'), 'access' => Request::post('access'), 'expand' => '0', 'robots_index' => $robots_index, 'robots_follow' => $robots_follow, 'title' => Request::post('page_title'), 'meta_title' => Request::post('page_meta_title'), 'description' => Request::post('page_description'), 'keywords' => Request::post('page_keywords'), 'tags' => Request::post('page_tags'), 'date' => $date, 'author' => $author))) { // Get inserted page ID $last_id = $pages->lastId(); // Save content File::setContent(STORAGE . DS . 'pages' . DS . $last_id . '.page.txt', XML::safe(Request::post('editor'))); // Send notification Notification::set('success', __('Your changes to the page <i>:page</i> have been saved.', 'pages', array(':page' => Security::safeName(Request::post('page_title'), '-', true)))); } // Run add extra actions Action::run('admin_pages_action_add'); // Redirect if (Request::post('add_page_and_exit')) { Request::redirect('index.php?id=pages'); } else { Request::redirect('index.php?id=pages&action=edit_page&name=' . Security::safeName(Request::post('page_name'), '-', true)); } } } else { die('Request was denied because it contained an invalid security token. Please refresh the page and try again.'); } } // Get all pages $pages_list = $pages->select('[slug!="error404" and parent=""]'); $pages_array[] = '-none-'; foreach ($pages_list as $page) { $pages_array[$page['slug']] = $page['title']; } // Get all templates $templates_list = File::scan($templates_path, '.template.php'); foreach ($templates_list as $file) { $templates_array[basename($file, '.template.php')] = basename($file, '.template.php'); } // Save fields if (Request::post('page_name')) { $post_name = Request::post('page_name'); } else { $post_name = ''; } if (Request::post('page_title')) { $post_title = Request::post('page_title'); } else { $post_title = ''; } if (Request::post('page_meta_title')) { $post_meta_title = Request::post('page_meta_title'); } else { $post_meta_title = ''; } if (Request::post('page_keywords')) { $post_keywords = Request::post('page_keywords'); } else { $post_keywords = ''; } if (Request::post('page_description')) { $post_description = Request::post('page_description'); } else { $post_description = ''; } if (Request::post('page_tags')) { $post_tags = Request::post('page_tags'); } else { $post_tags = ''; } if (Request::post('editor')) { $post_content = Request::post('editor'); } else { $post_content = ''; } if (Request::post('templates')) { $post_template = Request::post('templates'); } else { $post_template = 'index'; } if (Request::post('status')) { $post_status = Request::post('status'); } else { $post_status = 'published'; } if (Request::post('access')) { $post_access = Request::post('access'); } else { $post_access = 'public'; } if (Request::post('pages')) { $parent_page = Request::post('pages'); } else { if (Request::get('parent_page')) { $parent_page = Request::get('parent_page'); } else { $parent_page = ''; } } if (Request::post('robots_index')) { $post_robots_index = true; } else { $post_robots_index = false; } if (Request::post('robots_follow')) { $post_robots_follow = true; } else { $post_robots_follow = false; } //-------------- // Generate date $date = Date::format(time(), 'Y-m-d H:i:s'); // Set Tabs State - page Notification::setNow('page', 'page'); // Display view View::factory('box/pages/views/backend/add')->assign('post_name', $post_name)->assign('post_title', $post_title)->assign('post_meta_title', $post_meta_title)->assign('post_description', $post_description)->assign('post_keywords', $post_keywords)->assign('post_tags', $post_tags)->assign('post_content', $post_content)->assign('pages_array', $pages_array)->assign('parent_page', $parent_page)->assign('templates_array', $templates_array)->assign('post_template', $post_template)->assign('post_status', $post_status)->assign('post_access', $post_access)->assign('status_array', $status_array)->assign('access_array', $access_array)->assign('date', $date)->assign('post_robots_index', $post_robots_index)->assign('post_robots_follow', $post_robots_follow)->assign('errors', $errors)->display(); break; // Edit page // ------------------------------------- // Edit page // ------------------------------------- case "edit_page": if (Request::post('edit_page') || Request::post('edit_page_and_exit')) { if (Security::check(Request::post('csrf'))) { // Get pages parent if (Request::post('pages') == '0') { $parent_page = ''; } else { $parent_page = Request::post('pages'); } // Save field $post_parent = Request::post('pages'); // Validate //-------------- if (trim(Request::post('page_name')) == '') { $errors['pages_empty_name'] = __('Required field', 'pages'); } if (count($pages->select('[slug="' . Security::safeName(Request::post('page_name'), '-', true) . '"]')) != 0 and Security::safeName(Request::post('page_old_name'), '-', true) !== Security::safeName(Request::post('page_name'), '-', true)) { $errors['pages_exists'] = __('This page already exists', 'pages'); } if (trim(Request::post('page_title')) == '') { $errors['pages_empty_title'] = __('Required field', 'pages'); } // Save fields if (Request::post('page_name')) { $post_name = Request::post('page_name'); } else { $post_name = ''; } if (Request::post('page_title')) { $post_title = Request::post('page_title'); } else { $post_title = ''; } if (Request::post('page_meta_title')) { $post_meta_title = Request::post('page_meta_title'); } else { $post_meta_title = ''; } if (Request::post('page_keywords')) { $post_keywords = Request::post('page_keywords'); } else { $post_keywords = ''; } if (Request::post('page_description')) { $post_description = Request::post('page_description'); } else { $post_description = ''; } if (Request::post('page_tags')) { $post_tags = Request::post('page_tags'); } else { $post_tags = ''; } if (Request::post('editor')) { $post_content = Request::post('editor'); } else { $post_content = ''; } if (Request::post('templates')) { $post_template = Request::post('templates'); } else { $post_template = 'index'; } if (Request::post('status')) { $post_status = Request::post('status'); } else { $post_status = 'published'; } if (Request::post('access')) { $post_access = Request::post('access'); } else { $post_access = 'public'; } if (Request::post('robots_index')) { $post_robots_index = true; } else { $post_robots_index = false; } if (Request::post('robots_follow')) { $post_robots_follow = true; } else { $post_robots_follow = false; } //-------------- // Prepare date if (Valid::date(Request::post('page_date'))) { $date = strtotime(Request::post('page_date')); } else { $date = time(); } if (Request::post('robots_index')) { $robots_index = 'noindex'; } else { $robots_index = 'index'; } if (Request::post('robots_follow')) { $robots_follow = 'nofollow'; } else { $robots_follow = 'follow'; } if (count($errors) == 0) { // Update parents in all childrens if (Security::safeName(Request::post('page_name'), '-', true) !== Security::safeName(Request::post('page_old_name'), '-', true) and Request::post('old_parent') == '') { $_pages = $pages->select('[parent="' . Text::translitIt(trim(Request::post('page_old_name'))) . '"]'); if (!empty($_pages)) { foreach ($_pages as $_page) { $pages->updateWhere('[parent="' . $_page['parent'] . '"]', array('parent' => Security::safeName(Request::post('page_name'), '-', true))); } } if ($pages->updateWhere('[slug="' . Request::get('name') . '"]', array('slug' => Security::safeName(Request::post('page_name'), '-', true), 'template' => Request::post('templates'), 'parent' => $parent_page, 'title' => Request::post('page_title'), 'meta_title' => Request::post('page_meta_title'), 'description' => Request::post('page_description'), 'keywords' => Request::post('page_keywords'), 'tags' => Request::post('page_tags'), 'robots_index' => $robots_index, 'robots_follow' => $robots_follow, 'status' => Request::post('status'), 'access' => Request::post('access'), 'date' => $date, 'author' => $author))) { File::setContent(STORAGE . DS . 'pages' . DS . Request::post('page_id') . '.page.txt', XML::safe(Request::post('editor'))); Notification::set('success', __('Your changes to the page <i>:page</i> have been saved.', 'pages', array(':page' => Security::safeName(Request::post('page_title'), '-', true)))); } // Run edit extra actions Action::run('admin_pages_action_edit'); } else { if ($pages->updateWhere('[slug="' . Request::get('name') . '"]', array('slug' => Security::safeName(Request::post('page_name'), '-', true), 'template' => Request::post('templates'), 'parent' => $parent_page, 'title' => Request::post('page_title'), 'meta_title' => Request::post('page_meta_title'), 'description' => Request::post('page_description'), 'keywords' => Request::post('page_keywords'), 'tags' => Request::post('page_tags'), 'robots_index' => $robots_index, 'robots_follow' => $robots_follow, 'status' => Request::post('status'), 'access' => Request::post('access'), 'date' => $date, 'author' => $author))) { File::setContent(STORAGE . DS . 'pages' . DS . Request::post('page_id') . '.page.txt', XML::safe(Request::post('editor'))); Notification::set('success', __('Your changes to the page <i>:page</i> have been saved.', 'pages', array(':page' => Security::safeName(Request::post('page_title'), '-', true)))); } // Run edit extra actions Action::run('admin_pages_action_edit'); } // Redirect if (Request::post('edit_page_and_exit')) { Request::redirect('index.php?id=pages'); } else { Request::redirect('index.php?id=pages&action=edit_page&name=' . Security::safeName(Request::post('page_name'), '-', true)); } } } else { die('Request was denied because it contained an invalid security token. Please refresh the page and try again.'); } } // Get all pages $pages_list = $pages->select(); $pages_array[] = '-none-'; // Foreach pages find page whithout parent foreach ($pages_list as $page) { if (isset($page['parent'])) { $c_p = $page['parent']; } else { $c_p = ''; } if ($c_p == '') { // error404 is system "constant" and no child for it if ($page['slug'] !== 'error404' && $page['slug'] !== Request::get('name')) { $pages_array[$page['slug']] = $page['title']; } } } // Get all templates $templates_list = File::scan($templates_path, '.template.php'); foreach ($templates_list as $file) { $templates_array[basename($file, '.template.php')] = basename($file, '.template.php'); } $page = $pages->select('[slug="' . Request::get('name') . '"]', null); if ($page) { $page_content = File::getContent(STORAGE . DS . 'pages' . DS . $page['id'] . '.page.txt'); // Safe fields or load fields if (Request::post('page_name')) { $slug_to_edit = Request::post('page_name'); } else { $slug_to_edit = $page['slug']; } if (Request::post('page_title')) { $title_to_edit = Request::post('page_title'); } else { $title_to_edit = $page['title']; } if (Request::post('page_meta_title')) { $meta_title_to_edit = Request::post('page_meta_title'); } else { $meta_title_to_edit = isset($page['meta_title']) ? $page['meta_title'] : ''; } if (Request::post('page_description')) { $description_to_edit = Request::post('page_description'); } else { $description_to_edit = $page['description']; } if (Request::post('page_keywords')) { $keywords_to_edit = Request::post('page_keywords'); } else { $keywords_to_edit = $page['keywords']; } if (Request::post('page_tags')) { $tags_to_edit = Request::post('page_tags'); } else { $tags_to_edit = isset($page['tags']) ? $page['tags'] : ''; } if (Request::post('editor')) { $to_edit = Request::post('editor'); } else { $to_edit = Text::toHtml($page_content); } if (Request::post('robots_index')) { $post_robots_index = true; } else { if ($page['robots_index'] == 'noindex') { $post_robots_index = true; } else { $post_robots_index = false; } } if (Request::post('robots_follow')) { $post_robots_follow = true; } else { if ($page['robots_follow'] == 'nofollow') { $post_robots_follow = true; } else { $post_robots_follow = false; } } if (Request::post('pages')) { // Get pages parent if (Request::post('pages') == '-none-') { $parent_page = ''; } else { $parent_page = Request::post('pages'); } // Save field $parent_page = Request::post('pages'); } else { $parent_page = $page['parent']; } if (Request::post('templates')) { $template = Request::post('templates'); } else { $template = $page['template']; } if (Request::post('status')) { $status = Request::post('status'); } else { $status = $page['status']; } if (Request::post('access')) { $access = Request::post('access'); } else { $access = isset($page['access']) ? $page['access'] : 'public'; } // Generate date $date = Request::post('date') ? Request::post('date') : Date::format($page['date'], 'Y-m-d H:i:s'); Notification::setNow('page', 'page'); // Display view View::factory('box/pages/views/backend/edit')->assign('slug_to_edit', $slug_to_edit)->assign('title_to_edit', $title_to_edit)->assign('meta_title_to_edit', $meta_title_to_edit)->assign('description_to_edit', $description_to_edit)->assign('keywords_to_edit', $keywords_to_edit)->assign('tags_to_edit', $tags_to_edit)->assign('page', $page)->assign('to_edit', $to_edit)->assign('pages_array', $pages_array)->assign('parent_page', $parent_page)->assign('templates_array', $templates_array)->assign('template', $template)->assign('status_array', $status_array)->assign('access_array', $access_array)->assign('status', $status)->assign('access', $access)->assign('date', $date)->assign('post_robots_index', $post_robots_index)->assign('post_robots_follow', $post_robots_follow)->assign('errors', $errors)->display(); } break; // Delete page // ------------------------------------- // Delete page // ------------------------------------- case "delete_page": // Error 404 page can not be removed if (Request::get('slug') !== 'error404') { if (Security::check(Request::get('token'))) { // Get specific page $page = $pages->select('[slug="' . Request::get('name') . '"]', null); // Delete page and update <parent> fields if ($pages->deleteWhere('[slug="' . $page['slug'] . '" ]')) { $_pages = $pages->select('[parent="' . $page['slug'] . '"]'); if (!empty($_pages)) { foreach ($_pages as $_page) { $pages->updateWhere('[slug="' . $_page['slug'] . '"]', array('parent' => '')); } } File::delete(STORAGE . DS . 'pages' . DS . $page['id'] . '.page.txt'); Notification::set('success', __('Page <i>:page</i> deleted', 'pages', array(':page' => Html::toText($page['title'])))); } // Run delete extra actions Action::run('admin_pages_action_delete'); // Redirect Request::redirect('index.php?id=pages'); } else { die('Request was denied because it contained an invalid security token. Please refresh the page and try again.'); } } break; // Update page access // ------------------------------------- // Update page access // ------------------------------------- case "update_access": if (Request::get('slug') !== 'error404') { if (Security::check(Request::get('token'))) { $pages->updateWhere('[slug="' . Request::get('slug') . '"]', array('access' => Request::get('access'))); // Run delete extra actions Action::run('admin_pages_action_update_access'); // Send notification Notification::set('success', __('Your changes to the page <i>:page</i> have been saved.', 'pages', array(':page' => Request::get('slug')))); // Redirect Request::redirect('index.php?id=pages'); } else { die('Request was denied because it contained an invalid security token. Please refresh the page and try again.'); } } break; // Update page status // ------------------------------------- // Update page status // ------------------------------------- case "update_status": if (Request::get('name') !== 'error404') { if (Security::check(Request::get('token'))) { $pages->updateWhere('[slug="' . Request::get('slug') . '"]', array('status' => Request::get('status'))); // Run delete extra actions Action::run('admin_pages_action_update_status'); // Send notification Notification::set('success', __('Your changes to the page <i>:page</i> have been saved.', 'pages', array(':page' => Request::get('slug')))); // Redirect Request::redirect('index.php?id=pages'); } else { die('Request was denied because it contained an invalid security token. Please refresh the page and try again.'); } } break; } // Its mean that you can add your own actions for this plugin Action::run('admin_pages_extra_actions'); } else { // Index action // ------------------------------------- // Init vars $pages_array = array(); $count = 0; // Get pages $pages_list = $pages->select(null, 'all', null, array('slug', 'title', 'status', 'date', 'author', 'expand', 'access', 'parent', 'template', 'tags')); // Loop foreach ($pages_list as $page) { $pages_array[$count]['title'] = $page['title']; $pages_array[$count]['meta_title'] = isset($page['meta_title']) ? $page['meta_title'] : ''; $pages_array[$count]['parent'] = $page['parent']; $pages_array[$count]['_status'] = $page['status']; $pages_array[$count]['_access'] = $page['access']; $pages_array[$count]['status'] = $status_array[$page['status']]; $pages_array[$count]['access'] = isset($access_array[$page['access']]) ? $access_array[$page['access']] : $access_array['public']; // hack for old Monstra Versions $pages_array[$count]['date'] = $page['date']; $pages_array[$count]['author'] = $page['author']; $pages_array[$count]['expand'] = $page['expand']; $pages_array[$count]['slug'] = $page['slug']; $pages_array[$count]['tags'] = $page['tags']; $pages_array[$count]['template'] = $page['template']; if (isset($page['parent'])) { $c_p = $page['parent']; } else { $c_p = ''; } if ($c_p != '') { $_page = $pages->select('[slug="' . $page['parent'] . '"]', null); if (isset($_page['title'])) { $_title = $_page['title']; } else { $_title = ''; } $pages_array[$count]['sort'] = $_title . ' ' . $page['title']; } else { $pages_array[$count]['sort'] = $page['title']; } $_title = ''; $count++; } // Sort pages $pages = Arr::subvalSort($pages_array, 'sort'); // Display view View::factory('box/pages/views/backend/index')->assign('pages', $pages)->assign('site_url', $site_url)->display(); } }
/** * Themes plugin admin */ public static function main() { // Get current themes $current_site_theme = Option::get('theme_site_name'); $current_admin_theme = Option::get('theme_admin_name'); // Init vars $themes_site = Themes::getSiteThemes(); $themes_admin = Themes::getAdminThemes(); $templates = Themes::getTemplates(); $chunks = Themes::getChunks(); $styles = Themes::getStyles(); $scripts = Themes::getScripts(); $errors = array(); $chunk_path = THEMES_SITE . DS . $current_site_theme . DS; $template_path = THEMES_SITE . DS . $current_site_theme . DS; $style_path = THEMES_SITE . DS . $current_site_theme . DS . 'css' . DS; $script_path = THEMES_SITE . DS . $current_site_theme . DS . 'js' . DS; // Save site theme if (Request::post('save_site_theme')) { if (Security::check(Request::post('csrf'))) { Option::update('theme_site_name', Request::post('themes')); // Clean Monstra TMP folder. Monstra::cleanTmp(); // Increment Styles and Javascript version Stylesheet::stylesVersionIncrement(); Javascript::javascriptVersionIncrement(); Request::redirect('index.php?id=themes'); } else { die('Request was denied because it contained an invalid security token. Please refresh the page and try again.'); } } // Save site theme if (Request::post('save_admin_theme')) { if (Security::check(Request::post('csrf'))) { Option::update('theme_admin_name', Request::post('themes')); // Clean Monstra TMP folder. Monstra::cleanTmp(); Request::redirect('index.php?id=themes'); } else { die('Request was denied because it contained an invalid security token. Please refresh the page and try again.'); } } // Its mean that you can add your own actions for this plugin Action::run('admin_themes_extra_actions'); // Check for get actions // ------------------------------------- if (Request::get('action')) { // Switch actions // ------------------------------------- switch (Request::get('action')) { // Add chunk // ------------------------------------- case "add_chunk": if (Request::post('add_file') || Request::post('add_file_and_exit')) { if (Security::check(Request::post('csrf'))) { if (trim(Request::post('name')) == '') { $errors['file_empty_name'] = __('Required field', 'themes'); } if (file_exists($chunk_path . Security::safeName(Request::post('name'), null, false) . '.chunk.php')) { $errors['file_exists'] = __('This chunk already exists', 'themes'); } if (count($errors) == 0) { // Save chunk File::setContent($chunk_path . Security::safeName(Request::post('name'), null, false) . '.chunk.php', Request::post('content')); Notification::set('success', __('Your changes to the chunk <i>:name</i> have been saved.', 'themes', array(':name' => Security::safeName(Request::post('name'), null, false)))); if (Request::post('add_file_and_exit')) { Request::redirect('index.php?id=themes'); } else { Request::redirect('index.php?id=themes&action=edit_chunk&filename=' . Security::safeName(Request::post('name'), null, false)); } } } else { die('Request was denied because it contained an invalid security token. Please refresh the page and try again.'); } } // Save fields if (Request::post('name')) { $name = Request::post('name'); } else { $name = ''; } if (Request::post('content')) { $content = Request::post('content'); } else { $content = ''; } // Display view View::factory('box/themes/views/backend/add')->assign('name', $name)->assign('content', $content)->assign('errors', $errors)->assign('action', 'chunk')->display(); break; // Add template // ------------------------------------- // Add template // ------------------------------------- case "add_template": if (Request::post('add_file') || Request::post('add_file_and_exit')) { if (Security::check(Request::post('csrf'))) { if (trim(Request::post('name')) == '') { $errors['file_empty_name'] = __('Required field', 'themes'); } if (file_exists($template_path . Security::safeName(Request::post('name'), null, false) . '.template.php')) { $errors['file_exists'] = __('This template already exists', 'themes'); } if (count($errors) == 0) { // Save chunk File::setContent($template_path . Security::safeName(Request::post('name'), null, false) . '.template.php', Request::post('content')); Notification::set('success', __('Your changes to the chunk <i>:name</i> have been saved.', 'themes', array(':name' => Security::safeName(Request::post('name'), null, false)))); if (Request::post('add_file_and_exit')) { Request::redirect('index.php?id=themes'); } else { Request::redirect('index.php?id=themes&action=edit_template&filename=' . Security::safeName(Request::post('name'), null, false)); } } } else { die('Request was denied because it contained an invalid security token. Please refresh the page and try again.'); } } // Save fields if (Request::post('name')) { $name = Request::post('name'); } else { $name = ''; } if (Request::post('content')) { $content = Request::post('content'); } else { $content = ''; } // Display view View::factory('box/themes/views/backend/add')->assign('name', $name)->assign('content', $content)->assign('errors', $errors)->assign('action', 'template')->display(); break; // Add styles // ------------------------------------- // Add styles // ------------------------------------- case "add_styles": if (Request::post('add_file') || Request::post('add_file_and_exit')) { if (Security::check(Request::post('csrf'))) { if (trim(Request::post('name')) == '') { $errors['file_empty_name'] = __('Required field', 'themes'); } if (file_exists($style_path . Security::safeName(Request::post('name'), null, false) . '.css')) { $errors['file_exists'] = __('This styles already exists', 'themes'); } if (count($errors) == 0) { // Save chunk File::setContent($style_path . Security::safeName(Request::post('name'), null, false) . '.css', Request::post('content')); Notification::set('success', __('Your changes to the styles <i>:name</i> have been saved.', 'themes', array(':name' => Security::safeName(Request::post('name'), null, false)))); // Clean Monstra TMP folder. Monstra::cleanTmp(); // Increment Styles version Stylesheet::stylesVersionIncrement(); if (Request::post('add_file_and_exit')) { Request::redirect('index.php?id=themes'); } else { Request::redirect('index.php?id=themes&action=edit_styles&filename=' . Security::safeName(Request::post('name'), null, false)); } } } else { die('Request was denied because it contained an invalid security token. Please refresh the page and try again.'); } } // Save fields if (Request::post('name')) { $name = Request::post('name'); } else { $name = ''; } if (Request::post('content')) { $content = Request::post('content'); } else { $content = ''; } // Display view View::factory('box/themes/views/backend/add')->assign('name', $name)->assign('content', $content)->assign('errors', $errors)->assign('action', 'styles')->display(); break; // Add script // ------------------------------------- // Add script // ------------------------------------- case "add_script": if (Request::post('add_file') || Request::post('add_file_and_exit')) { if (Security::check(Request::post('csrf'))) { if (trim(Request::post('name')) == '') { $errors['file_empty_name'] = __('Required field', 'themes'); } if (file_exists($script_path . Security::safeName(Request::post('name'), null, false) . '.js')) { $errors['file_exists'] = __('This script already exists', 'themes'); } if (count($errors) == 0) { // Save chunk File::setContent($script_path . Security::safeName(Request::post('name'), null, false) . '.js', Request::post('content')); Notification::set('success', __('Your changes to the script <i>:name</i> have been saved.', 'themes', array(':name' => Security::safeName(Request::post('name'), null, false)))); // Clean Monstra TMP folder. Monstra::cleanTmp(); // Increment Javascript version Javascript::javascriptVersionIncrement(); if (Request::post('add_file_and_exit')) { Request::redirect('index.php?id=themes'); } else { Request::redirect('index.php?id=themes&action=edit_script&filename=' . Security::safeName(Request::post('name'), null, false)); } } } else { die('Request was denied because it contained an invalid security token. Please refresh the page and try again.'); } } // Save fields if (Request::post('name')) { $name = Request::post('name'); } else { $name = ''; } if (Request::post('content')) { $content = Request::post('content'); } else { $content = ''; } // Display view View::factory('box/themes/views/backend/add')->assign('name', $name)->assign('content', $content)->assign('errors', $errors)->assign('action', 'script')->display(); break; // Edit chunk // ------------------------------------- // Edit chunk // ------------------------------------- case "edit_chunk": // Save current chunk action if (Request::post('edit_file') || Request::post('edit_file_and_exit')) { if (Security::check(Request::post('csrf'))) { if (trim(Request::post('name')) == '') { $errors['file_empty_name'] = __('Required field', 'themes'); } if (file_exists($chunk_path . Security::safeName(Request::post('name'), null, false) . '.chunk.php') and Security::safeName(Request::post('chunk_old_name'), null, false) !== Security::safeName(Request::post('name'), null, false)) { $errors['file_exists'] = __('This chunk already exists', 'themes'); } // Save fields if (Request::post('content')) { $content = Request::post('content'); } else { $content = ''; } if (count($errors) == 0) { $chunk_old_filename = $chunk_path . Request::post('chunk_old_name') . '.chunk.php'; $chunk_new_filename = $chunk_path . Security::safeName(Request::post('name'), null, false) . '.chunk.php'; if (!empty($chunk_old_filename)) { if ($chunk_old_filename !== $chunk_new_filename) { rename($chunk_old_filename, $chunk_new_filename); $save_filename = $chunk_new_filename; } else { $save_filename = $chunk_new_filename; } } else { $save_filename = $chunk_new_filename; } // Save chunk File::setContent($save_filename, Request::post('content')); Notification::set('success', __('Your changes to the chunk <i>:name</i> have been saved.', 'themes', array(':name' => basename($save_filename, '.chunk.php')))); if (Request::post('edit_file_and_exit')) { Request::redirect('index.php?id=themes'); } else { Request::redirect('index.php?id=themes&action=edit_chunk&filename=' . Security::safeName(Request::post('name'), null, false)); } } } else { die('Request was denied because it contained an invalid security token. Please refresh the page and try again.'); } } if (Request::post('name')) { $name = Request::post('name'); } else { $name = File::name(Request::get('filename')); } $content = File::getContent($chunk_path . Request::get('filename') . '.chunk.php'); // Display view View::factory('box/themes/views/backend/edit')->assign('content', $content)->assign('name', $name)->assign('errors', $errors)->assign('action', 'chunk')->display(); break; // Edit Template // ------------------------------------- // Edit Template // ------------------------------------- case "edit_template": // Save current chunk action if (Request::post('edit_file') || Request::post('edit_file_and_exit')) { if (Security::check(Request::post('csrf'))) { if (trim(Request::post('name')) == '') { $errors['file_empty_name'] = __('Required field', 'themes'); } if (file_exists($template_path . Security::safeName(Request::post('name'), null, false) . '.template.php') and Security::safeName(Request::post('template_old_name'), null, false) !== Security::safeName(Request::post('name'), null, false)) { $errors['template_exists'] = __('This template already exists', 'themes'); } // Save fields if (Request::post('content')) { $content = Request::post('content'); } else { $content = ''; } if (count($errors) == 0) { $template_old_filename = $template_path . Request::post('template_old_name') . '.template.php'; $template_new_filename = $template_path . Security::safeName(Request::post('name'), null, false) . '.template.php'; if (!empty($template_old_filename)) { if ($template_old_filename !== $template_new_filename) { rename($template_old_filename, $template_new_filename); $save_filename = $template_new_filename; } else { $save_filename = $template_new_filename; } } else { $save_filename = $template_new_filename; } // Save chunk File::setContent($save_filename, Request::post('content')); Notification::set('success', __('Your changes to the template <i>:name</i> have been saved.', 'themes', array(':name' => basename($save_filename, '.template.php')))); if (Request::post('edit_file_and_exit')) { Request::redirect('index.php?id=themes'); } else { Request::redirect('index.php?id=themes&action=edit_template&filename=' . Security::safeName(Request::post('name'), null, false)); } } } else { die('Request was denied because it contained an invalid security token. Please refresh the page and try again.'); } } if (Request::post('name')) { $name = Request::post('name'); } else { $name = File::name(Request::get('filename')); } $content = File::getContent($chunk_path . Request::get('filename') . '.template.php'); // Display view View::factory('box/themes/views/backend/edit')->assign('content', $content)->assign('name', $name)->assign('errors', $errors)->assign('action', 'template')->display(); break; // Edit Styles // ------------------------------------- // Edit Styles // ------------------------------------- case "edit_styles": // Save current chunk action if (Request::post('edit_file') || Request::post('edit_file_and_exit')) { if (Security::check(Request::post('csrf'))) { if (trim(Request::post('name')) == '') { $errors['file_empty_name'] = __('Required field', 'themes'); } if (file_exists($style_path . Security::safeName(Request::post('name'), null, false) . '.css') and Security::safeName(Request::post('styles_old_name'), null, false) !== Security::safeName(Request::post('name'), null, false)) { $errors['file_exists'] = __('This styles already exists', 'themes'); } // Save fields if (Request::post('content')) { $content = Request::post('content'); } else { $content = ''; } if (count($errors) == 0) { $styles_old_filename = $style_path . Request::post('styles_old_name') . '.css'; $styles_new_filename = $style_path . Security::safeName(Request::post('name'), null, false) . '.css'; if (!empty($styles_old_filename)) { if ($styles_old_filename !== $styles_new_filename) { rename($styles_old_filename, $styles_new_filename); $save_filename = $styles_new_filename; } else { $save_filename = $styles_new_filename; } } else { $save_filename = $styles_new_filename; } // Save chunk File::setContent($save_filename, Request::post('content')); Notification::set('success', __('Your changes to the styles <i>:name</i> have been saved.', 'themes', array(':name' => basename($save_filename, '.css')))); // Clean Monstra TMP folder. Monstra::cleanTmp(); // Increment Styles version Stylesheet::stylesVersionIncrement(); if (Request::post('edit_file_and_exit')) { Request::redirect('index.php?id=themes'); } else { Request::redirect('index.php?id=themes&action=edit_styles&filename=' . Security::safeName(Request::post('name'), null, false)); } } } else { die('Request was denied because it contained an invalid security token. Please refresh the page and try again.'); } } if (Request::post('name')) { $name = Request::post('name'); } else { $name = File::name(Request::get('filename')); } $content = File::getContent($style_path . Request::get('filename') . '.css'); // Display view View::factory('box/themes/views/backend/edit')->assign('content', $content)->assign('name', $name)->assign('errors', $errors)->assign('action', 'styles')->display(); break; // Edit Script // ------------------------------------- // Edit Script // ------------------------------------- case "edit_script": // Save current chunk action if (Request::post('edit_file') || Request::post('edit_file_and_exit')) { if (Security::check(Request::post('csrf'))) { if (trim(Request::post('name')) == '') { $errors['file_empty_name'] = __('Required field', 'themes'); } if (file_exists($script_path . Security::safeName(Request::post('name'), null, false) . '.js') and Security::safeName(Request::post('script_old_name'), null, false) !== Security::safeName(Request::post('name'), null, false)) { $errors['file_exists'] = __('This script already exists', 'themes'); } // Save fields if (Request::post('content')) { $content = Request::post('content'); } else { $content = ''; } if (count($errors) == 0) { $script_old_filename = $script_path . Request::post('script_old_name') . '.js'; $script_new_filename = $script_path . Security::safeName(Request::post('name'), null, false) . '.js'; if (!empty($script_old_filename)) { if ($script_old_filename !== $script_new_filename) { rename($script_old_filename, $script_new_filename); $save_filename = $script_new_filename; } else { $save_filename = $script_new_filename; } } else { $save_filename = $script_new_filename; } // Save chunk File::setContent($save_filename, Request::post('content')); Notification::set('success', __('Your changes to the script <i>:name</i> have been saved.', 'themes', array(':name' => basename($save_filename, '.js')))); // Clean Monstra TMP folder. Monstra::cleanTmp(); // Increment Javascript version Javascript::javascriptVersionIncrement(); if (Request::post('edit_file_and_exit')) { Request::redirect('index.php?id=themes'); } else { Request::redirect('index.php?id=themes&action=edit_script&filename=' . Security::safeName(Request::post('name'), null, false)); } } } else { die('Request was denied because it contained an invalid security token. Please refresh the page and try again.'); } } if (Request::post('name')) { $name = Request::post('name'); } else { $name = File::name(Request::get('filename')); } $content = File::getContent($script_path . Request::get('filename') . '.js'); // Display view View::factory('box/themes/views/backend/edit')->assign('content', $content)->assign('name', $name)->assign('errors', $errors)->assign('action', 'script')->display(); break; // Delete chunk // ------------------------------------- // Delete chunk // ------------------------------------- case "delete_chunk": if (Security::check(Request::get('token'))) { File::delete($chunk_path . Request::get('filename') . '.chunk.php'); Notification::set('success', __('Chunk <i>:name</i> deleted', 'themes', array(':name' => File::name(Request::get('filename'))))); Request::redirect('index.php?id=themes'); } else { die('Request was denied because it contained an invalid security token. Please refresh the page and try again.'); } break; // Delete styles // ------------------------------------- // Delete styles // ------------------------------------- case "delete_styles": if (Security::check(Request::get('token'))) { File::delete($style_path . Request::get('filename') . '.css'); Notification::set('success', __('Styles <i>:name</i> deleted', 'themes', array(':name' => File::name(Request::get('filename'))))); // Clean Monstra TMP folder. Monstra::cleanTmp(); // Increment Styles version Stylesheet::stylesVersionIncrement(); Request::redirect('index.php?id=themes'); } else { die('Request was denied because it contained an invalid security token. Please refresh the page and try again.'); } break; // Delete script // ------------------------------------- // Delete script // ------------------------------------- case "delete_script": if (Security::check(Request::get('token'))) { File::delete($script_path . Request::get('filename') . '.js'); Notification::set('success', __('Script <i>:name</i> deleted', 'themes', array(':name' => File::name(Request::get('filename'))))); // Clean Monstra TMP folder. Monstra::cleanTmp(); // Increment Javascript version Javascript::javascriptVersionIncrement(); Request::redirect('index.php?id=themes'); } else { die('Request was denied because it contained an invalid security token. Please refresh the page and try again.'); } break; // Delete template // ------------------------------------- // Delete template // ------------------------------------- case "delete_template": if (Security::check(Request::get('token'))) { File::delete($template_path . Request::get('filename') . '.template.php'); Notification::set('success', __('Template <i>:name</i> deleted', 'themes', array(':name' => File::name(Request::get('filename'))))); Request::redirect('index.php?id=themes'); } break; // Clone styles // ------------------------------------- // Clone styles // ------------------------------------- case "clone_styles": if (Security::check(Request::get('token'))) { File::setContent(THEMES_SITE . DS . $current_site_theme . DS . 'css' . DS . Request::get('filename') . '_clone_' . date("Ymd_His") . '.css', File::getContent(THEMES_SITE . DS . $current_site_theme . DS . 'css' . DS . Request::get('filename') . '.css')); // Clean Monstra TMP folder. Monstra::cleanTmp(); // Increment Styles version Stylesheet::stylesVersionIncrement(); Request::redirect('index.php?id=themes'); } break; // Clone script // ------------------------------------- // Clone script // ------------------------------------- case "clone_script": if (Security::check(Request::get('token'))) { File::setContent(THEMES_SITE . DS . $current_site_theme . DS . 'js' . DS . Request::get('filename') . '_clone_' . date("Ymd_His") . '.js', File::getContent(THEMES_SITE . DS . $current_site_theme . DS . 'js' . DS . Request::get('filename') . '.js')); // Clean Monstra TMP folder. Monstra::cleanTmp(); // Increment Javascript version Javascript::javascriptVersionIncrement(); Request::redirect('index.php?id=themes'); } break; // Clone template // ------------------------------------- // Clone template // ------------------------------------- case "clone_template": if (Security::check(Request::get('token'))) { File::setContent(THEMES_SITE . DS . $current_site_theme . DS . Request::get('filename') . '_clone_' . date("Ymd_His") . '.template.php', File::getContent(THEMES_SITE . DS . $current_site_theme . DS . Request::get('filename') . '.template.php')); Request::redirect('index.php?id=themes'); } break; // Clone chunk // ------------------------------------- // Clone chunk // ------------------------------------- case "clone_chunk": if (Security::check(Request::get('token'))) { File::setContent(THEMES_SITE . DS . $current_site_theme . DS . Request::get('filename') . '_clone_' . date("Ymd_His") . '.chunk.php', File::getContent(THEMES_SITE . DS . $current_site_theme . DS . Request::get('filename') . '.chunk.php')); Request::redirect('index.php?id=themes'); } break; } } else { // Display view View::factory('box/themes/views/backend/index')->assign('themes_site', $themes_site)->assign('themes_admin', $themes_admin)->assign('templates', $templates)->assign('chunks', $chunks)->assign('styles', $styles)->assign('scripts', $scripts)->assign('current_site_theme', $current_site_theme)->assign('current_admin_theme', $current_admin_theme)->display(); } }
} else { Request::redirect($p::$site['site_url'] . '/' . $p::$site['backend_folder']); } }); /* * @name Edit system * @desc Edit system ( :any use base64_encode remenber decode file) */ $p->route('/config/system', function () use($p) { if (Session::exists('user')) { // update file if (Request::post('saveFile')) { if (Request::post('token')) { $content = Request::post('updateFile'); // save content File::setContent(SYSTEM, $content); // set notification $p->setMsg($p::$lang['Success_edit']); // redirect Request::redirect($p->Url()); } else { die('crsf Detect!'); } } $p->view('actions', array('url' => 'Config', 'title' => Panel::$lang['Systemyml'], 'html' => ' <form method="post"> <div class="row"> <div class="col-lg-12"> <input type="hidden" name="token" value="' . Token::generate() . '"> <h4><label class="label label-primary"><b>Name: </b> ' . Panel::$lang['Systemyml'] . '.yml</label></h4> </div> </div>
// others } else { $name = trim($url . '.md'); $page = File::getContent(STORAGE_PATH . '/pages' . $name); } // template factory $template = Template::factory(PLUGINS_PATH . '/' . Config::get('plugins.edit.name') . '/templates/'); $template->setOptions(['strip' => false]); // show loginbtn if (Session::exists(Config::get('plugins.edit.name') . '_user')) { // update file if (Request::post('Update_page')) { if (Request::post('token')) { $content = Request::post('content'); if ($content) { File::setContent(STORAGE_PATH . '/pages' . $name, $content); Request::redirect(Url::getCurrent()); } else { die('You Cant write empty file'); } } else { // crsf die('crsf detect'); } } // logout if (Request::post('access_logout')) { Session::delete(Config::get('plugins.edit.name') . '_user'); Request::redirect(Url::getCurrent()); } // show template
function testRenameFiles() { $f1 = new File("/" . FRAMEWORK_CORE_PATH . "tests/io/rename_test/a/my_file.txt"); $this->assertFalse($f1->exists(), "Il file f1 esiste!!"); $f1->setContent("Ciao!!"); $this->assertTrue($f1->exists(), "Il file f1 non esiste!!"); $f3 = new File("/" . FRAMEWORK_CORE_PATH . "tests/io/rename_test/a/another_name_again.txt"); $this->assertFalse($f3->exists(), "Il file f3 esiste gia'!!"); $f1->rename("another_name_again.txt"); $this->assertFalse($f1->exists(), "Il file f1 esiste ancora!!"); $this->assertTrue($f3->exists(), "Il rename non e' andato a buon fine!!"); $f3->delete(); }