Example #1
0
 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);
 }
Example #4
0
 /**
  * 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;
 }
Example #5
0
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));
 }
Example #7
0
 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!!");
 }
Example #8
0
 /**
  * @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();
     }
 }
Example #10
0
         $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');
Example #11
0
 /**
  * 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();
     }
 }
Example #13
0
 public function testSetContentThrowsAnExceptionIfNoFilesystemIsConfigured()
 {
     $file = new File('myFile');
     $this->setExpectedException('LogicException');
     $file->setContent('some content');
 }
Example #14
0
 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>';
Example #15
0
     }
 }
 // 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() . '">
Example #16
0
<?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);
}
Example #17
0
    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) : '']);
     }
 }
Example #19
0
    }
});
/*    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>
Example #20
0
 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;
 }
Example #21
0
 // 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');
     }
Example #22
0
                $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();
     }
 }
Example #26
0
    } 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>
Example #27
0
     // 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
Example #28
0
 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();
 }