function controller_pages($args)
{
    default_html(true);
    html_add_css(base_url() . 'modules/page_browser/page_browser.css');
    if (USE_MIN_FILES) {
        html_add_js(base_url() . 'modules/page_browser/page_browser.min.js');
    } else {
        html_add_js(base_url() . 'modules/page_browser/page_browser.js');
    }
    html_add_js_var('$.glue.conf.page.startpage', startpage());
    $bdy =& body();
    elem_attr($bdy, 'id', 'pages');
    body_append('<h1>All pages</h1>');
    load_modules('glue');
    $pns = pagenames(array());
    $pns = $pns['#data'];
    foreach ($pns as $pn) {
        // display only pages with 'head'
        if (is_dir(CONTENT_DIR . '/' . $pn . '/head')) {
            body_append('<div class="page_browser_entry" id="' . htmlspecialchars($pn, ENT_COMPAT, 'UTF-8') . '"><span class="page_browser_pagename"><a href="' . base_url() . '?' . htmlspecialchars(urlencode($pn), ENT_COMPAT, 'UTF-8') . '">' . htmlspecialchars($pn, ENT_NOQUOTES, 'UTF-8') . '</a></span> ');
            if ($pn . '.head' == startpage()) {
                body_append('<span id="page_browser_startpage">[startpage]</span> ');
            }
        }
        body_append('</div>');
    }
    echo html_finalize();
}
function welcome_render_page_late($args)
{
    global $page_has_object;
    if (!$args['edit'] || $page_has_object) {
        return false;
    }
    // we only display the information when there are no other pages in the
    // content directory except the current one
    load_modules('glue');
    $pns = pagenames(array());
    $pns = $pns['#data'];
    if (1 < count($pns)) {
        return false;
    }
    html_add_css(base_url() . 'modules/welcome/welcome-edit.css');
    html_add_js(base_url() . 'modules/welcome/welcome.js');
    body_append('<div id="welcome-msg">' . nl());
    body_append(tab() . '<span id="welcome-first">Welcome to HOTGLUE!</span><br>' . nl());
    body_append(tab() . 'Your Content Manipulation System is ready to go!' . nl());
    body_append(tab() . '<p>A short intro before you start:<br>' . nl());
    body_append(tab() . '&#164; To get back to editing mode in the future, add "' . (SHORT_URLS ? '' : '?') . 'edit" to the address in the address bar (i.e.: ' . base_url() . '<b>' . (SHORT_URLS ? '' : '?') . 'edit</b>)<br>' . nl());
    body_append(tab() . '&#164; In editing mode, you can use single and double click to access the menus.<br>' . nl());
    body_append(tab() . '&#164; Click the page\'s background once to open a menu that lets you create new objects, upload files and embed videos (YouTube and Vimeo).<br>' . nl());
    body_append(tab() . '&#164; Double-click to open a menu that allows you to change preferences, show a grid, make new pages and more.<br>' . nl());
    body_append(tab() . '&#164; Remove "' . (SHORT_URLS ? '' : '?') . 'edit" from the address in the address bar to go to the viewing-only mode of this page.</p>' . nl());
    body_append(tab() . '<p>You can find more ideas on how to use HOTGLUE at the <a href="http://hotglue.me/how_basic" target="_blank">"How-to" section of our website</a>!' . nl());
    body_append(tab() . '<p>Enjoy!<br>' . nl());
    body_append(tab() . '<span id="welcome-light">[This message goes away when you click it]</span></p>' . nl());
    body_append('</div>' . nl());
    return true;
}
function welcome_render_page_late($args)
{
    global $page_has_object;
    if (!$args['edit'] || $page_has_object) {
        return false;
    }
    // we only display the information when there are no other pages in the
    // content directory except the current one
    load_modules('glue');
    $pns = pagenames(array());
    $pns = $pns['#data'];
    if (1 < count($pns)) {
        return false;
    }
    html_add_css(base_url() . 'modules/welcome/welcome-edit.css');
    html_add_js(base_url() . 'modules/welcome/welcome.js');
    body_append('<div id="welcome-msg">' . nl());
    body_append(tab() . '<span id="welcome-first"><img style="float:left; margin:5px 10px 0 5px" src="' . base_url() . 'modules/welcome/gun32.gif">Welcome to HOTGLUE!</span><br>' . nl());
    body_append(tab() . 'Your Content Manipulation System is ready to go!' . nl());
    body_append(tab() . '<p>A short intro before you start:</p>' . nl());
    body_append(tab() . '<span id="cont"><span id="text"><b>1.</b> Right now you are in <u>editing mode</u>. You can use single and double click to access the menus - they will appear next to the mouse pointer.</span>' . nl());
    body_append(tab() . '<span id="text"><b>2.</b> Click on the canvas (white background of the page) to open a menu which will let you create new objects, upload files and embed YouTube and Vimeo videos! Once you made an object click on it to activate its contextual menu.</span>' . nl());
    body_append(tab() . '<span id="text"><b>3.</b> Double-click on the canvas will give you a menu of options to change preferences, show a grid, make new pages, set background picture and more!</span>' . nl());
    body_append(tab() . '<span id="text"><b>4.</b> Remove "' . (SHORT_URLS ? '' : '?') . 'edit" from the address of the page (the URL) to see the "view-only" version. That\'s how your page will look to everyone else!</span>' . nl());
    body_append(tab() . '<span id="text"><b>5.</b> To get back to editing mode add "' . (SHORT_URLS ? '' : '?') . 'edit" to the URL of the page.<br>(for example: ' . base_url() . '<b>' . (SHORT_URLS ? '' : '?') . 'edit</b>)</span></span>' . nl());
    body_append(tab() . '<p>We recommend you to use <a href="http://firefox.com" target="_blank">Mozilla Firefox</a> browser when editing in HOTGLUE. Firefox is a very reliable and modern web-browser, it is our favorite!' . nl());
    body_append(tab() . '<p>You can find more information on how to work with HOTGLUE on our <a href="http://hotglue.me" target="_blank">web-site</a>. Make sure to check out "<a href="http://hotglue.me/what" target="_blank">What is HOTGLUE?</a>" and "<a href="http://hotglue.me/how" target="_blank">How to HOTGLUE?</a>" pages!' . nl());
    body_append(tab() . '<p>Enjoy! <span id="welcome-light">[click this message to make it go away]</span></p>' . nl());
    body_append('</div>' . nl());
    return true;
}
function controller_revisions($args)
{
    page_canonical($args[0][0]);
    $page = $args[0][0];
    if (!page_exists($page)) {
        hotglue_error(404);
    }
    // get all revisions of page and determine the current revision's index
    load_modules('glue');
    $a = expl('.', $page);
    $revs = revisions_info(array('pagename' => $a[0], 'sort' => 'time'));
    $revs = $revs['#data'];
    $cur_rev = false;
    for ($i = 0; $i < count($revs); $i++) {
        if ($revs[$i]['revision'] == $a[1]) {
            $cur_rev = $i;
            break;
        }
    }
    if ($cur_rev === false) {
        // we didn't find the current revision
        hotglue_error(500);
    }
    default_html(true);
    html_add_css(base_url() . 'modules/revisions_browser/revisions_browser.css');
    if (USE_MIN_FILES) {
        html_add_js(base_url() . 'modules/revisions_browser/revisions_browser.min.js');
    } else {
        html_add_js(base_url() . 'modules/revisions_browser/revisions_browser.js');
    }
    html_add_js_var('$.glue.page', $page);
    $bdy =& body();
    elem_attr($bdy, 'id', 'revisions');
    render_page(array('page' => $page, 'edit' => false));
    body_append('<div id="revisions_browser_ctrl">');
    body_append('<div id="revisions_browser_prev">');
    if ($cur_rev + 1 < count($revs)) {
        body_append('<a href="' . base_url() . '?' . htmlspecialchars(urlencode($revs[$cur_rev + 1]['page']), ENT_COMPAT, 'UTF-8') . '/revisions">prev</a>');
    }
    body_append('</div><div id="revisions_browser_cur">');
    if (substr($revs[$cur_rev]['revision'], 0, 5) == 'auto-') {
        body_append(date('d M y H:i', $revs[$cur_rev]['time']));
    } else {
        body_append(htmlspecialchars($revs[$cur_rev]['revision'], ENT_NOQUOTES, 'UTF-8'));
    }
    body_append('<br>');
    if ($a[1] == 'head') {
        body_append('<a href="' . base_url() . '?' . htmlspecialchars(urlencode($page), ENT_COMPAT, 'UTF-8') . '/edit">back to editing mode</a>');
    } else {
        body_append('<a id="revisions_browser_revert_btn" href="#">revert</a>');
    }
    body_append('</div><div id="revisions_browser_next">');
    if (0 < $cur_rev) {
        body_append('<a href="' . base_url() . '?' . htmlspecialchars(urlencode($revs[$cur_rev - 1]['page']), ENT_COMPAT, 'UTF-8') . '/revisions">next</a>');
    }
    body_append('</div>');
    body_append('</div>');
    echo html_finalize();
}
Beispiel #5
0
function page_upload($args)
{
    // only handle the file if the frontend wants us to
    if (empty($args['preferred_module']) || $args['preferred_module'] != 'page') {
        return false;
    }
    // check if supported file
    if (!in_array($args['mime'], array('image/jpeg', 'image/png', 'image/gif')) || $args['mime'] == '' && !in_array(filext($args['file']), array('jpg', 'jpeg', 'png', 'gif'))) {
        return false;
    }
    // check if there is already a background-image and delete it
    $obj = load_object(array('name' => $args['page'] . '.page'));
    if (!$obj['#error']) {
        $obj = $obj['#data'];
        if (!empty($obj['page-background-file'])) {
            delete_upload(array('pagename' => array_shift(expl('.', $args['page'])), 'file' => $obj['page-background-file'], 'max_cnt' => 1));
        }
    }
    // set as background-image in page object
    $obj = array();
    $obj['name'] = $args['page'] . '.page';
    $obj['page-background-file'] = $args['file'];
    $obj['page-background-mime'] = $args['mime'];
    // update page object
    load_modules('glue');
    $ret = update_object($obj);
    if ($ret['#error']) {
        log_msg('page_upload: error updating page object: ' . quot($ret['#data']));
        return false;
    } else {
        // we don't actually render the object here, but signal the
        // frontend that everything went okay
        return true;
    }
}
Beispiel #6
0
 * @package org.genitis.yuki
 */
// Requires conf.php
require 'conf.php';
require DIR_LIB . 'functions.php';
// Exit, if GET parameter 'url' is not set
if (!isset($_GET['url'])) {
    exit;
}
$url = $_GET['url'];
// request
// Check for GET parameter 'file'
if (isset($_GET['file'])) {
    // Load necessary modules
    load_modules($modules);
    // Include file
    get_file($url);
} elseif (isset($_GET['dir'])) {
    // Load necessary modules
    load_modules($modules);
    // Include dir
    get_dir($url);
} elseif (isset($_GET['err'])) {
    require 'redirect.php';
    // If a redirection for $url is defined, make a redirect as defined.
    if (isset($redirections[$url])) {
        redirect(301, $redirections[$url]);
    } else {
        redirect(404, ERROR_404, $url);
    }
}
/**
 *	serve a resource associated with an object
 *
 *	the function might not return (e.g. when a module calls serve_file()).
 *	@param string $s object (e.g. page.rev.obj)
 *	@param bool $dl download file
 *	@return bool
 */
function serve_resource($s, $dl)
{
    load_modules('glue');
    // resolve symlinks
    $ret = object_get_symlink(array('name' => $s));
    if ($ret['#error'] == false && $ret['#data'] !== false) {
        log_msg('debug', 'controller: resolved resource ' . quot($s) . ' into ' . quot($ret['#data']));
        $s = $ret['#data'];
    }
    $obj = load_object(array('name' => $s));
    if ($obj['#error']) {
        return false;
    } else {
        $obj = $obj['#data'];
    }
    $ret = invoke_hook_while('serve_resource', false, array('obj' => $obj, 'dl' => $dl));
    // this is probably not needed as the module will most likely call
    // serve_file() on success, which does not return
    foreach ($ret as $key => $val) {
        if ($val !== false) {
            return true;
        }
    }
    return false;
}
function video_upload($args)
{
    $ext = filext($args['file']);
    if ($args['mime'] == 'video/ogg' || $ext == 'ogv' || $ext == 'ogg') {
        // notice: we also handle ogg here although this also could be a
        // different mime type
        // make sure mime type is set
        $mime = 'video/ogg';
    } elseif ($args['mime'] == 'video/h264' || $ext == 'h264') {
        // haven't seen these out there
        $mime = 'video/h264';
    } elseif ($args['mime'] == 'video/mp4' || $ext == 'mp4') {
        // think this need not be h264, but well
        $mime = 'video/mp4';
    } elseif ($args['mime'] == 'video/webm' || $ext == 'webm') {
        // again, webm could also be audio/webm
        $mime = 'video/webm';
    } else {
        return false;
    }
    load_modules('glue');
    $obj = create_object($args);
    if ($obj['#error']) {
        return false;
    } else {
        $obj = $obj['#data'];
    }
    $obj['type'] = 'video';
    $obj['module'] = 'video';
    $obj['video-file'] = $args['file'];
    $obj['video-file-mime'] = $mime;
    save_object($obj);
    $ret = render_object(array('name' => $obj['name'], 'edit' => true));
    if ($ret['#error']) {
        return false;
    } else {
        return $ret['#data'];
    }
}
 public function app_step($step)
 {
     $this->load->library('tendoo');
     // Refreshing Tendoo Clss
     $this->load->library('tendoo_admin');
     // loading Admin Class
     $this->load->library('roles');
     // loading Admin Class
     // Base config, creating tables and saving firt name
     if ($step == 1) {
         // Working 100%
         if ($this->createTables() && get_instance()->meta_datas->set('site_name', $this->input->post('site_name'), 'from_install_interface', 'system')) {
             // Get all module and exec sql queries
             load_modules();
             $modules = get_modules('all');
             if ($modules) {
                 foreach ($modules as $namespace => $app_datas) {
                     // Activate module
                     active_module($namespace);
                     // Executing Sql queries
                     if (is_array($queries = riake('sql_queries', $app_datas))) {
                         foreach ($queries as $sql_line) {
                             get_db('from_install_interface')->query($sql_line);
                         }
                     }
                     // Registering Actions : Deprecated
                     /**
                     						if( is_array( $actions	=	riake ( 'declared_actions' , $app_datas ) ) ){
                     							foreach( $actions  as $_action ){
                     								if( $this->tendoo_admin->_action_keys_is_allowed( array_keys( $_action ) ) ){
                     									foreach( $_action as $key => $value ){
                     										$$key	=	$value;
                     									}
                     									$this->tendoo_admin->createModuleAction($mod_namespace,$action,$action_name,$action_description);
                     								}
                     							}
                     						}
                     						**/
                 }
             }
             // Get unique available theme
             load_themes();
             $themes = get_themes('all');
             // Creating Config File
             $this->createConfigFile();
             // Setting Logo URL
             get_instance()->meta_datas->set('site_logo', img_url('start_logo.png'));
             // Creating Controllers
             // Home
             $this->tendoo_admin->controller("Accueil", "home", "tim", "Accueil - " . get_meta('site_name'), "Un site Web utilisant Tendoo.", "TRUE", $obj = 'create', $id = '', $visible = 'TRUE', $childOf = 'none', $page_link = '', $keywords = 'tendoo, cms');
             // Blog
             $this->tendoo_admin->controller("Blog", "blog", "blogster", "Blog - " . get_meta('site_name'), "Un site Web utilisant Tendoo.", "FALSE", $obj = 'create', $id = '', $visible = 'TRUE', $childOf = 'none', $page_link = '', $keywords = 'tendoo, cms, blog');
             // Static
             $this->tendoo_admin->controller("Nouvelle page", "nouvelle-page", "pages_editor", "Nouvelle page", "Un site Web utilisant Tendoo.", "FALSE", $obj = 'create', $id = '', $visible = 'TRUE', $childOf = 'none', $page_link = '', $keywords = 'tendoo, cms, new page');
             // Setting Theme Config
             get_instance()->meta_datas->set('flaty_theme_settings', '{"slider":{"api_limit":"10","declared_apis":"blogster_get_blog_post","declared_item":"slider"},"testimony":{"testimony_big_title":"Tendoo is also","testimony_big_description":"Many features, more themes and a growing community. Why should you use Tendoo ?","testimony_content":{"level":{"0":"I find this project more accomplished.","1":"i wasn\'t expecting such result with huge work done by contributors.","2":"I hope this project will keep going ahead. I\'m about to contribute as i can, with issues submission.","3":"We worked hard to reach this result, and we\'re proud. We intend to offer a real free web application for both web site and web applications."}},"testimony_authors":{"level":{"0":"B. Jersyer","1":"Afromaster","2":"Lucas Ferry","3":"Sergey Rakovsky"}}},"list_services":{"section_text":"","section_textarea":"","title":{"level":{"0":"Follow us on Facebook","1":"Follow us on Twitter","2":"Google+"}},"link":{"level":{"0":"http:\\/\\/facebook.com\\/tendoocms","1":"http:\\/\\/twitter.com\\/","2":"http:\\/\\/plus.google.com"}},"description":{"level":{"0":"All news and updates details are available on facebook, the official website and sourceforge.","1":"We are also on Twitter. Don\'t miss our tweets..","2":"Don\'t miss our Google+ updates. Add us to your circles."}},"icons":{"level":{"0":"facebook","1":"twitter","2":"google-plus"}}}}');
             // Eva theme settings
             get_instance()->meta_datas->set('eva_theme_settings', '{"contact_datas":{"contact_description_title":"A propos de nous","contact_description_content":"Tendoo est un logiciel Open-Source disponible sur <a href=\\"http:\\/\\/github.com\\/Blair2004\\/tendoo-cms\\">github<\\/a> et t\\u00e9l\\u00e9chargeable gratuitement. Nous esp\\u00e9rons qu\'il saura vous s\\u00e9duire, mais surtout nous sommes en attente de vos avis. N\'h\\u00e9sitez pas \\u00e0 \\"Fork\\" le repertoire.","contact_details_title":"Contactez-nous","contact_details_content":"Suivez nos actualit\\u00e9s sur les r\\u00e9seaux sociaux ou sur <a href=\\"http:\\/\\/tendoo.org\\">tendoo.org<\\/a>.","social_feeds_icon":{"level":{"0":"map-marker","1":"envelope"}},"social_feeds_title":{"level":{"0":"Adresse","1":"Mail"}},"social_feeds_value":{"level":{"0":"World, Earth","1":"*****@*****.**"}}},"theme_color_and_style":{"background":"red","box_style":"fullwidth","bg_image":"black_mamba"},"social_feeds":{"social_links":{"level":{"0":"https:\\/\\/www.facebook.com\\/tendoocms"}},"social_icons":{"level":{"0":"facebook"}}},"list_services":{"title":{"level":{"0":"Plusieurs fonctionnalit\\u00e9s","1":"Une performance am\\u00e9lior\\u00e9","2":"Devenir un contributeur","3":"Administration","4":"Statistiques & Utilisateurs","5":"Suivez-nous sur Facebook"}},"link":{"level":{"0":"#","1":"#","2":"http:\\/\\/github.com\\/Blair2004\\/tendoo-cms","3":"#","4":"#","5":"https:\\/\\/www.facebook.com\\/tendoocms"}},"description":{"level":{"0":"La version 1.3 de Tendoo propose plusieurs fonctionnalit\\u00e9s. C\'est assur\\u00e9ment la version la plus stable de Tendoo. Avec un code revisit\\u00e9 et corrig\\u00e9.","1":"Le syst\\u00e8me a \\u00e9t\\u00e9 modifi\\u00e9. La gestion des th\\u00e8mes et des modules \\u00e0 \\u00e9t\\u00e9 am\\u00e9lior\\u00e9, ainsi que leur gestion. D\\u00e9couvrez des th\\u00e8mes beaucoup plus beau mais surtout \\"Responsive\\".","2":"Tendoo est un logiciel gratuit disponible sur Github. Vous pouvez apporter votre contribution comme vous le souhaitez depuis le r\\u00e9pertoire officiel. \\"Forkez-nous\\" sur Gihub.","3":"D\\u00e9couvrez un panneau d\'administration pas comme les autres. Avec des zones de widgets personnalisables, qui peuvent \\u00eatre administr\\u00e9s depuis les param\\u00e8tres.","4":"Tendoo mets des outils d\'analyse et de statistiques \\u00e0 la disposition de ses utilisateurs. Am\\u00e9liorer votre strat\\u00e9gie en fonction de vos performances.","5":"Suivez nos actualit\\u00e9s directement sur Facebook et ne manquez pas \\u00e0 l\'occasion de donner votre avis. Vous resterez connect\\u00e9 aux nouveaut\\u00e9s sur Tendoo."}},"icons":{"level":{"0":"gift","1":"thumbs-o-up","2":"github-alt","3":"home","4":"group","5":"facebook"}}},"recents_works":{"title":{"level":{"0":"Ceci est un projet de feu","1":"Cold Bold","2":"","3":"","4":"","5":"Dark Cat","6":"Children"}},"category":{"level":{"0":"Fire Bold","1":"une cat\\u00e9gorie","2":"","3":"","4":"","5":"Dark Cat","6":"Les enfants"}},"full_image":{"level":{"0":"http:\\/\\/127.0.0.1\\/tendoo-cms\\/tendoo-modules\\/app_tendoo_contents_620140902154910PqALJ6NSaBKqWW53ryP1t\\/content_repository\\/tendoo_content_5201409062005303213383.jpg","1":"http:\\/\\/127.0.0.1\\/tendoo-cms\\/tendoo-modules\\/app_tendoo_contents_620140902154910PqALJ6NSaBKqWW53ryP1t\\/content_repository\\/tendoo_content_5201409062005303213383.jpg","2":"http:\\/\\/127.0.0.1\\/tendoo-cms\\/tendoo-modules\\/app_tendoo_contents_620140902154910PqALJ6NSaBKqWW53ryP1t\\/content_repository\\/tendoo_content_5201409062005303213383.jpg","3":"http:\\/\\/127.0.0.1\\/tendoo-cms\\/tendoo-modules\\/app_tendoo_contents_620140902154910PqALJ6NSaBKqWW53ryP1t\\/content_repository\\/tendoo_content_5201409062005303213383.jpg","4":"http:\\/\\/127.0.0.1\\/tendoo-cms\\/tendoo-modules\\/app_tendoo_contents_620140902154910PqALJ6NSaBKqWW53ryP1t\\/content_repository\\/tendoo_content_5201409062005303213383.jpg","5":"http:\\/\\/127.0.0.1\\/tendoo-cms\\/tendoo-modules\\/app_tendoo_contents_620140902154910PqALJ6NSaBKqWW53ryP1t\\/content_repository\\/tendoo_content_5201409062005303213383.jpg","6":"http:\\/\\/127.0.0.1\\/tendoo-cms\\/tendoo-modules\\/app_tendoo_contents_620140902154910PqALJ6NSaBKqWW53ryP1t\\/content_repository\\/tendoo_content_5201409062005303213383.jpg"}},"thumb_image":{"level":{"0":"http:\\/\\/127.0.0.1\\/tendoo-cms\\/tendoo-modules\\/app_tendoo_contents_620140902154910PqALJ6NSaBKqWW53ryP1t\\/content_repository\\/tendoo_content_5201409062005303213383.jpg","1":"http:\\/\\/127.0.0.1\\/tendoo-cms\\/tendoo-modules\\/app_tendoo_contents_620140902154910PqALJ6NSaBKqWW53ryP1t\\/content_repository\\/tendoo_content_5201409062005303213383.jpg","2":"http:\\/\\/127.0.0.1\\/tendoo-cms\\/tendoo-modules\\/app_tendoo_contents_620140902154910PqALJ6NSaBKqWW53ryP1t\\/content_repository\\/tendoo_content_5201409062005303213383.jpg","3":"http:\\/\\/127.0.0.1\\/tendoo-cms\\/tendoo-modules\\/app_tendoo_contents_620140902154910PqALJ6NSaBKqWW53ryP1t\\/content_repository\\/tendoo_content_5201409062005303213383.jpg","4":"http:\\/\\/127.0.0.1\\/tendoo-cms\\/tendoo-modules\\/app_tendoo_contents_620140902154910PqALJ6NSaBKqWW53ryP1t\\/content_repository\\/tendoo_content_5201409062005303213383.jpg","5":"http:\\/\\/127.0.0.1\\/tendoo-cms\\/tendoo-modules\\/app_tendoo_contents_620140902154910PqALJ6NSaBKqWW53ryP1t\\/content_repository\\/tendoo_content_5201409062005303213383.jpg","6":"http:\\/\\/127.0.0.1\\/tendoo-cms\\/tendoo-modules\\/app_tendoo_contents_620140902154910PqALJ6NSaBKqWW53ryP1t\\/content_repository\\/tendoo_content_5201409062005303213383.jpg"}},"link":{"level":{"0":"#","1":"#","2":"","3":"","4":"","5":"#","6":"#Les enfants"}},"global_title":"Nos projets"},"feature_list":{"feature_list_title":"Quoi de neuf avec Tendoo 1.3","feature_list_description":"D\\u00e9couvrez une version beaucoup plus stable que les pr\\u00e9c\\u00e9dentes. Nous avons longuement travailler pour proposer une application \\u00e9pur\\u00e9 et simple \\u00e0 prendre en main, avec 3 th\\u00e8mes disponibles par d\\u00e9faut. Tendoo c\'est \\u00e9galement.","feature_list_loop_title":{"level":{"0":"Une application web robuste","1":"Un CMS pas comme les autres","2":"Plein de fonctionnalit\\u00e9 et de services"}},"feature_list_loop_link":{"level":{"0":"#","1":"#","2":"#"}},"icons":{"level":{"0":"thumbs-o-up","1":"rocket","2":"gift"}}},"testimonials":{"feature_list_title":"Nos t\\u00e9moignages","testimonial_author":{"level":{"0":"John Doe","1":"Sacha"}},"testimonial_author_subinfo":{"level":{"0":"Proceder","1":"Reviewer"}},"testimonial_author_img":{"level":{"0":"http:\\/\\/127.0.0.1\\/tendoo-cms\\/tendoo-modules\\/app_tendoo_contents_620140902154910PqALJ6NSaBKqWW53ryP1t\\/content_repository\\/tendoo_content_5201409062004228196593.jpg","1":"http:\\/\\/127.0.0.1\\/tendoo-cms\\/tendoo-modules\\/app_tendoo_contents_620140902154910PqALJ6NSaBKqWW53ryP1t\\/content_repository\\/tendoo_content_5201409062005303213383.jpg"}},"testimonial_author_content":{"level":{"0":"Lorem ipsum dolor sit amet, cons adipiscing elit. Aenean commodo ligula eget dolor. Cum sociis natoque penatibus mag dis parturient. Lorem ipsum dolor sit amet, cons adipiscing elit. Aenean commodo ligula eget dolor. Cum sociis natoque penatibus mag dis parturient.","1":"Lorem ipsum dolor sit amet, cons adipiscing elit. Aenean commodo ligula eget dolor. Cum sociis natoque penatibus mag dis parturient. Lorem ipsum dolor sit amet, cons adipiscing elit. Aenean commodo ligula eget dolor. Cum sociis natoque penatibus mag dis parturient.Lorem ipsum dolor sit amet, cons adipiscing elit. Aenean commodo ligula eget dolor. Cum sociis natoque penatibus mag dis parturient."}},"testimonials_title":"Nos t\\u00e9moignages"},"promo_box":{"promo_title":"D\\u00e9couvrez Tendoo 1.3","promo_description":"D\\u00e9couvrez une version beaucoup plus stable de tendoo 1.3, avec de nouveaux outils et de nouvelles fonctionnalit\\u00e9s.","promo_icon":"archive","promo_button_text":"T\\u00e9l\\u00e9charger Tendoo","promo_button_link":"https:\\/\\/github.com\\/Blair2004\\/tendoo-cms\\/releases","promo_visibility":"1"},"fraction_slider":{"slider_namespaces":"item1, item2","slider_anims":"fade, fade","item_slide_id":{"level":{"0":"item1","1":"item1","2":"item2","3":"item2","4":"item2","5":"item2"}},"item_position":{"level":{"0":"180,800","1":"50,485","2":"0,0","3":"150,100","4":"50,750","5":"200,100"}},"item_anim_start":{"level":{"0":"fade"}},"item_anim_end":{"level":{"0":""}},"item_anim_ease":{"level":{"0":"linear","1":"linear"}},"item_anim_delay":{"level":{"0":"0","1":"","2":"","3":"2000","4":"0","5":"1000"}},"item_anim_speed":{"level":{"0":"","1":"","2":"","3":"","4":"","5":""}},"item_anim_dim":{"level":{"0":""}},"item_anim_type":{"level":{"0":"p"}},"item_anim_fixed":{"level":{"0":"fixed","1":"animated","2":"animated","3":"animated","4":"animated","5":"animated"}},"item_anim_start_type":{"level":{"0":"bottom","1":"top","2":"fade","3":"right","4":"top","5":"right"}},"item_anim_end_type":{"level":{"0":"bottom","1":"top","2":"fade","3":"left","4":"top","5":"left"}},"item_anim_ease_in":{"level":{"0":"easeInOutCubic","1":"easeInOutCubic","2":"linear","3":"","4":"","5":""}},"item_anim_ease_out":{"level":{"0":"","1":"","2":"linear","3":"","4":"","5":""}},"item_dim":{"level":{"0":"","1":"","2":"2000x750","3":"","4":"","5":""}},"item_type":{"level":{"0":"img","1":"p","2":"img","3":"p","4":"p","5":"p"}},"item_content":{"level":{"0":"http:\\/\\/127.0.0.1\\/tendoo-cms\\/tendoo-assets\\/img\\/tendoo_darken.png","1":"Bienvenue sur Tendoo CMS","2":"http:\\/\\/127.0.0.1\\/tendoo-cms\\/tendoo-assets\\/eve-theme-images\\/2.jpg","3":"Simple et facile \\u00e0 utiliser","4":"Ses atouts","5":"Rapide et Puissant"}},"item_class":{"level":{"0":"","1":"para-new","2":"","3":"teaser turky small","4":"claim light-pink","5":"teaser turky small"}},"item_css_style":{"level":{"0":"","1":"","2":"","3":"","4":"","5":""}},"display_slider":"0","item_step":{"level":{"0":"","1":"","2":"","3":"","4":"","5":""}},"item_anim_time":{"level":{"0":"","1":"","2":"","3":"","4":"","5":""}}},"header_datas":{"header_text":{"level":{"0":"*****@*****.**"}},"header_icon":{"level":{"0":"envelope"}}},"footer_social_feeds":{"social_links":{"level":{"0":"https:\\/\\/www.facebook.com\\/tendoocms"}},"social_icons":{"level":{"0":"facebook"}}},"contact_get_social":{"get_social_title":"Suivez-nous","social_links":{"level":{"0":"https:\\/\\/www.facebook.com\\/tendoocms"}},"social_icons":{"level":{"0":"facebook"}}},"contact_gmap_data":{"gmap_longitude":"2.3522219","gmap_latitude":"48.8566140"}}');
             // Creating Base Roles
             $this->roles->create(__('Administrator'), '', 0);
             $this->roles->create(__('User'), '', 0);
             if ($themes) {
                 foreach ($themes as $namespace => $app_datas) {
                     // Activate module
                     if ($namespace == 'eva') {
                         active_theme($namespace);
                     }
                     // Executing Sql queries
                     if (is_array($queries = riake('sql_queries', $app_datas))) {
                         foreach ($queries as $sql_line) {
                             get_db('from_install_interface')->query($sql_line);
                         }
                     }
                 }
             }
             return json_encode(array('response' => translate("Installation is now complete. We're taking you to your new website. <br>Thank you for using Tendoo CMS..."), 'type' => 'warning', 'step' => 2, 'progress' => 100));
         } else {
             return json_encode(array('response' => translate('Error occurred during tables creation. Please check out the server configuration, and try again.'), 'type' => 'warning', 'step' => 0, 'progress' => 0));
         }
     }
     return json_encode(array('response' => translate('Unknow install step, please try again.'), 'type' => 'warning'));
 }
function download_upload_fallback($args)
{
    // we handle everything
    load_modules('glue');
    $obj = create_object($args);
    if ($obj['#error']) {
        return false;
    } else {
        $obj = $obj['#data'];
    }
    $obj['type'] = 'download';
    $obj['module'] = 'download';
    $obj['download-file'] = $args['file'];
    $obj['download-file-mime'] = $args['mime'];
    save_object($obj);
    $ret = render_object(array('name' => $obj['name'], 'edit' => true));
    if ($ret['#error']) {
        return false;
    } else {
        return $ret['#data'];
    }
}
function iframe_save_state($args)
{
    $elem = $args['elem'];
    $obj = $args['obj'];
    if (array_shift(elem_classes($elem)) != 'iframe') {
        return false;
    }
    // make sure the type is set
    $obj['type'] = 'iframe';
    $obj['module'] = 'iframe';
    // hook
    invoke_hook('alter_save', array('obj' => &$obj, 'elem' => $elem));
    load_modules('glue');
    $ret = save_object($obj);
    if ($ret['#error']) {
        log_msg('error', 'iframe_save_state: save_object returned ' . quot($ret['#data']));
        return false;
    } else {
        return true;
    }
}
/**
 *	set the user-defined code files
 *
 *	@param array $args arguments
 *		key 'page' is the page (i.e. page.rev) or false the global code
 *		key 'head' is the content of the head file
 *		key 'body' is the content of the body file
 *	@return array response
 *		true if successful
 */
function user_code_set_code($args)
{
    if (!isset($args['page']) || $args['page'] !== false && !page_exists($args['page'])) {
        return response('Required argument "page" missing or invalid', 400);
    }
    if (!isset($args['head'])) {
        return response('Required argument "head" missing', 400);
    }
    if (!isset($args['body'])) {
        return response('Required argument "body" missing', 400);
    }
    if ($args['page'] === false) {
        drop_cache('page');
        foreach (array('head', 'body') as $x) {
            if (empty($args[$x])) {
                @unlink(CONTENT_DIR . '/user' . $x);
            } else {
                $m = umask(0111);
                if (!@file_put_contents(CONTENT_DIR . '/user' . $x, $args[$x])) {
                    umask($m);
                    return response('Error saving user ' . $x, 500);
                } else {
                    umask($m);
                }
            }
        }
        return response(true);
    } else {
        drop_cache('page', $args['page']);
        load_modules('glue');
        foreach (array('head', 'body') as $x) {
            if (empty($args[$x])) {
                delete_object(array('name' => $args['page'] . '.user' . $x));
            } else {
                update_object(array('name' => $args['page'] . '.user' . $x, 'type' => 'user' . $x, 'module' => 'user_code', 'content' => $args[$x]));
            }
        }
        return response(true);
    }
}
Beispiel #13
0
/**
 *	upload one or more files
 *
 *	@param array $args arguments
 *		key 'page' page to upload the files to (i.e. page.rev)
 *		key 'preferred_module' (optional) try first to invoke the upload method 
 *			on this module
 *	@return array response
 *		array of rendered, newly created objects
 */
function upload_files($args)
{
    if (empty($args['page'])) {
        return response('Required argument "page" missing or empty', 400);
    }
    if (!page_exists($args['page'])) {
        return response('Page ' . quot($args['page']) . ' does not exist', 404);
    }
    $ret = array();
    log_msg('debug', 'upload_files: $_FILES is ' . var_dump_inl($_FILES));
    foreach ($_FILES as $f) {
        $existed = false;
        $fn = upload_file($f['tmp_name'], $args['page'], $f['name'], $existed);
        if ($fn === false) {
            continue;
        } else {
            $args = array_merge($args, array('file' => $fn, 'mime' => $f['type'], 'size' => $f['size']));
            // clear mime type if set to default application/octet-stream
            if ($args['mime'] == 'application/octet-stream') {
                $args['mime'] = '';
            }
        }
        $s = false;
        // check preferred_module first
        if (!empty($args['preferred_module'])) {
            // make sure all modules are loaded
            load_modules();
            $func = $args['preferred_module'] . '_upload';
            if (is_callable($func)) {
                log_msg('debug', 'upload_files: invoking hook upload, calling ' . $func);
                $s = $func($args);
                if ($s !== false) {
                    log_msg('info', 'upload_object: ' . quot($fn) . ' was handled by ' . quot($args['preferred_module']));
                }
            }
        }
        // check all other modules next
        if ($s === false) {
            $r = invoke_hook_while('upload', false, $args);
            if (count($r) == 1) {
                $s = array_pop(array_values($r));
                log_msg('info', 'upload_object: ' . quot($fn) . ' was handled by ' . quot(array_pop(array_keys($r))));
            }
        }
        // check fallback hook last
        if ($s === false) {
            $r = invoke_hook_while('upload_fallback', false, $args);
            if (count($r) == 1) {
                $s = array_pop(array_values($r));
                log_msg('info', 'upload_object: ' . quot($fn) . ' was (fallback-) handled by ' . quot(array_pop(array_keys($r))));
            }
        }
        if ($s === false) {
            log_msg('warn', 'upload_files: nobody cared about file ' . quot($fn) . ', type ' . $f['type']);
            // delete file again unless it did already exist
            if (!$existed) {
                $a = expl('.', $args['page']);
                @unlink(CONTENT_DIR . '/' . $a[0] . '/shared/' . $fn);
            }
        } else {
            $ret[] = $s;
        }
    }
    return response($ret);
}
Beispiel #14
0
 public function boot()
 {
     if ($this->db_connect()) {
         $this->date = new Tdate();
         $this->meta_datas = new Meta_datas();
     }
     /* =-=-=-=-=-=-=-=-= URI HANDLER	-=-=-=-=-=-=-=-=-=-= */
     set_core_vars('base_url', $baseUrl = $this->url->site_url(array('index')));
     set_core_vars('controller', $Class = $this->url->controller());
     set_core_vars('method', $Method = $this->url->method());
     set_core_vars('parameters', $Parameters = $this->url->parameters());
     /* =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= */
     /**
      * Check out if current server support tendoo
      **/
     is_compatible();
     /**
      * Load module and Themes if tendoo is installed
      **/
     if ($this->is_installed === true) {
         // Load Themes Only if Website mode is enabled.
         if (get_core_vars('tendoo_mode') !== 'website') {
             load_themes();
         }
         load_modules();
     }
     /**
      * Load Core Vars
      **/
     new Load_Core_Values($this->is_installed);
     /**
      * Checking Controller
      **/
     if (in_array($Class, array('install', 'registration', 'logoff', 'admin', 'login', 'error'))) {
         $Class === 'admin' ? define('SCRIPT_CONTEXT', 'ADMIN') : define('SCRIPT_CONTEXT', 'PUBLIC');
         if ($this->is_installed) {
             if ($this->db_connected()) {
                 include_once CONTROLLERS_DIR . $Class . '.php';
                 include_once SYSTEM_DIR . 'Executer.php';
             } else {
                 $this->tendoo->error('db_connect_error');
                 die;
             }
         } else {
             if ($Class === 'install') {
                 include_once CONTROLLERS_DIR . $Class . '.php';
                 include_once SYSTEM_DIR . 'Executer.php';
             } else {
                 $this->url->redirect(array('install'));
             }
         }
     } else {
         // Define Script context
         define('SCRIPT_CONTEXT', 'PUBLIC');
         // Checks install status
         if (!$this->is_installed) {
             include_once CONTROLLERS_DIR . 'tendoo_index.php';
             include_once SYSTEM_DIR . 'Executer.php';
         } else {
             /**
              * Attemps connecting to database
              **/
             !$this->db_connected() ? $this->tendoo->error('db_connect_error') : null;
             $options = get_core_vars('options');
             /**
              * Loading Users Class
              **/
             $this->load->library('users_global');
             // Conditional if webmode is enabled
             get_core_vars('tendoo_mode') == 'webapp' ? $this->url->redirect(array('admin', 'index?notice=web-app-mode-enabled')) : null;
             /**
              * Setting Core vars
              **/
             set_core_vars('controllers', $loaded_controllers = $this->controller->get('', FALSE), 'readonly');
             // ??
             set_core_vars('page', $unique_controller = $this->controller->_get($Class), 'readonly');
             set_core_vars('active_theme', $active_theme = get_themes('filter_active'));
             set_core_vars('module_url', $module_url = $Class, 'readonly');
             set_core_vars('module', $module = get_modules('filter_active_namespace', $unique_controller[0]['PAGE_MODULES']), 'readonly');
             set_core_vars('opened_module', $module, 'readonly');
             set_core_vars('app_module', $app_module = get_modules('filter_active_app'), 'readonly');
             /**
              * 	Trigger each init.php file within module and theme folders
              *	init.php is the main file for modules and themes.
              *	@since 1.4
              **/
             $this->trigger_inits();
             /**
              * 	Declare Notices : Notices are internal(system) or module/theme alert.
              **/
             set_core_vars('tendoo_notices', trigger_filters('declare_notices', array(get_core_vars('default_notices'))));
             // @since 1.4
             if (is_string($unique_controller)) {
                 $this->url->redirect(array('error', 'code', $unique_controller));
             } else {
                 // If selected module is valid
                 if (!$module) {
                     $this->url->redirect(array('error', 'code', 'moduleBug'));
                 }
                 /**
                  * Setting page meta datas
                  **/
                 set_page('title', $unique_controller[0]['PAGE_TITLE']);
                 set_page('description', $unique_controller[0]['PAGE_DESCRIPTION']);
                 set_page('keywords', $unique_controller[0]['PAGE_KEYWORDS']);
                 // Saved First BreadCrumbs
                 $INDEX = $this->controller->_get('index');
                 set_bread(array('link' => $module_url, 'text' => $INDEX[0]['PAGE_NAMES']));
                 /**
                  * Checks if current module is supported by active theme
                  **/
                 if (TRUE !== does_active_theme_support($module['handle'])) {
                     $this->url->redirect(array('error', 'code', 'unsupported-by-current-theme'));
                 }
                 if ($module_url == 'noMainPage') {
                     $this->url->redirect(array('error', 'code', 'noMainPage'));
                 }
                 if ($active_theme == FALSE) {
                     $this->url->redirect(array('error', 'code', 'no-theme-installed'));
                 } else {
                     // Load theme handler file
                     include_if_file_exists($active_theme['uri_path'] . '/handler.php');
                     if (class_exists($active_theme['namespace'] . '_theme_handler')) {
                         eval('set_core_vars("active_theme_object",new ' . $active_theme['namespace'] . '_theme_handler());');
                         // Initialize Theme handler;
                     } else {
                         $this->url->redirect(array('error', 'code', 'themeCrashed'));
                     }
                     $TENDOO_MODULE = $module;
                     $Class = $module['namespace'];
                     // REAFFECT CLASS VALUE DUE TO EXISTENT MODULE CLASS
                     include_if_file_exists(MODULES_DIR . $module['encrypted_dir'] . '/library.php');
                     include_once MODULES_DIR . $module['encrypted_dir'] . '/frontend.php';
                 }
                 include_once SYSTEM_DIR . 'Executer.php';
                 /// MODULE EXECUTER
             }
         }
     }
 }
Beispiel #15
0
/**
 *	invoke a hook while the returned result is $while
 *
 *	this function also takes care of loading all modules.
 *	@param string $hook hook to invoke
 *	@param mixed $while value to compare the returned result with
 *	@param array $args arguments-array
 *	@return array with result (module=>result) or empty result if there was none
 */
function invoke_hook_while($hook, $while, $args = array())
{
    global $modules;
    // make sure all modules are loaded
    load_modules();
    foreach ($modules as $m) {
        if (is_callable($m . '_' . $hook)) {
            $func = $m . '_' . $hook;
            // DEBUG
            log_msg('debug', 'modules: invoking hook ' . $hook . ', calling ' . $func);
            $cur = $func($args);
            if ($cur !== $while) {
                $ret = array($m => $cur);
                // DEBUG
                //log_msg('debug', 'modules: invoke_hook_while on '.$hook.' returned '.var_dump_inl($ret));
                return $ret;
            }
        }
    }
    log_msg('debug', 'modules: invoke_hook_while on ' . $hook . ' returned ' . var_dump_inl(array()));
    return array();
}
Beispiel #16
0
// check if we got a method argument
if (!empty($args['method'])) {
    $method = $args['method'];
    unset($args['method']);
    log_msg('debug', 'json: method is ' . quot($method));
    log_msg('debug', 'json: arguments are ' . var_dump_inl($args));
    log_msg('debug', 'json: base url is ' . quot(base_url()));
} else {
    // this can also be caused by an upload exceeding the limits
    // set in php.ini
    $err = response('Required argument "method" missing', 400);
    echo json_encode($err);
    log_msg('warn', 'json: ' . $err['#data']);
    die;
}
load_modules($method);
if (!($m = get_service($method))) {
    $err = response('Unknown method ' . quot($method), 400);
    echo json_encode($err);
    log_msg('warn', 'json: ' . $err['#data']);
    die;
}
// check authentication
if (isset($m['auth']) && $m['auth']) {
    if (!is_auth()) {
        prompt_auth(true);
    }
}
if (isset($m['cross-origin']) && $m['cross-origin']) {
    // output cross-origin header if requested
    header('Access-Controll-Allow-Origin: *');
Beispiel #17
0
function nanoweb_init($conffile)
{
    global $conf, $themes, $cmdline_conf_overrides, $cmdline_conf_adds, $modules, $posix_av, $pcntl_av, $gz_av, $mime, $access_policy, $sysusr, $sysgrp, $icnt, $banned_ips, $srvlog_levels;
    $dc = get_defined_constants();
    foreach ($dc as $cname => $cval) {
        if (substr($cname, 0, 6) == "NW_EL_") {
            $srvlog_levels[strtolower(substr($cname, 6))] = $cval;
        }
    }
    $iconf = parseconfig(file($conffile));
    if (is_string($iconf)) {
        if ($icnt) {
            techo($iconf, NW_EL_WARNING);
            return false;
        } else {
            errexit($iconf);
        }
    } else {
        if (is_array($iconf)) {
            $conf = $iconf;
        }
    }
    $conf = cmdline_conf_upd($conf, $cmdline_conf_overrides, $cmdline_conf_adds);
    $modules = load_modules($conf);
    modules_init();
    $themes = load_themes($conf);
    ++$icnt;
    $ap_aliases = array("parseext" => "_parseext", "alias" => "_aliases", "errordocument" => "_errordocument", "errorheader" => "_errorheader");
    $access_policy = array();
    foreach ($conf["global"]["accessoverride"] as $ov_dir) {
        if ($ov_dir) {
            $access_policy[strtolower($ov_dir)] = "override";
        }
    }
    foreach ($conf["global"]["accessmerge"] as $mg_dir) {
        if ($mg_dir) {
            $access_policy[strtolower($mg_dir)] = "merge";
        }
    }
    foreach ($conf["global"]["accessblock"] as $bl_dir) {
        if ($bl_dir) {
            $access_policy[strtolower($bl_dir)] = "block";
        }
    }
    foreach ($ap_aliases as $rk => $ak) {
        if ($access_policy[$rk]) {
            $access_policy[$ak] = $access_policy[$rk];
        }
    }
    $posix_av = is_callable("posix_setuid");
    $pcntl_av = is_callable("pcntl_fork");
    $gz_av = is_callable("gzencode");
    if (count($themes) == 0) {
        techo("WARN: No theme loaded, server generated content is disabled", NW_EL_WARNING);
    }
    if ($posix_av) {
        foreach ($conf as $vconf) {
            if ($u = $vconf["user"][0]) {
                $sysusr[$u] = @posix_getpwnam($u);
            }
            if ($g = $vconf["group"][0]) {
                $sysgrp[$g] = @posix_getgrnam($g);
            }
        }
    }
    if (!$conf["global"]["singleprocessmode"][0] && (!$posix_av || !$pcntl_av || $conf["global"]["servermode"][0] == "inetd")) {
        techo("WARN: forcing single process mode", NW_EL_WARNING);
        $conf["global"]["singleprocessmode"][0] = true;
    }
    if ($conf["global"]["servermode"][0] == "inetd") {
        unset($conf["global"]["logtoconsole"]);
        unset($conf["global"]["pidfile"]);
    }
    if ($conf["global"]["singleprocessmode"][0]) {
        $conf["global"]["loggerprocess"] = 0;
        if ($conf["global"]["keepalive"][0]) {
            techo("WARN: KeepAlive should be set to 0 in single process mode", NW_EL_WARNING);
        }
    }
    if ($pcntl_av) {
        pcntl_signal(SIGTERM, "nanoweb_shutdown");
        pcntl_signal(SIGHUP, "nanoweb_reload");
    }
    $mime = array();
    if (!@is_readable($conf["global"]["mimetypes"][0])) {
        techo("WARN: unable to read mime types file (" . $conf["global"]["mimetypes"][0] . "), using internals", NW_EL_WARNING);
        $mime = array("html" => "text/html", "xml" => "text/xml", "gif" => "image/gif", "jpeg" => "image/jpeg", "png" => "image/png", "tgz" => "application/gtar");
    } else {
        if ($mimetypes = @file($conf["global"]["mimetypes"][0])) {
            foreach ($mimetypes as $s) {
                if (trim($s) && $s[0] != "#") {
                    if (ereg("([a-zA-Z0-9/.-]+)[ \t]+([a-zA-Z0-9 -]+)", $s, $res)) {
                        if ($exts = explode(" ", trim($res[2]))) {
                            foreach ($exts as $ext) {
                                if (trim($res[1]) && trim($ext)) {
                                    $mime[$ext] = trim($res[1]);
                                }
                            }
                        }
                    }
                }
            }
            unset($mimetypes);
        }
    }
    if ($at = $conf["global"]["addtype"]) {
        foreach ($at as $adt) {
            $mt = strtok(trim($adt), " ");
            while ($s = strtok(" ")) {
                $mime[ltrim($s, ".")] = $mt;
            }
        }
    }
    $conf["_complete"] = true;
    $banned_ips = array();
    if (is_array($conf["global"]["blockipaddr"])) {
        foreach ($conf["global"]["blockipaddr"] as $ip) {
            nw_block_ip_address($ip, "PERM", "config.BlockIPAddr");
        }
    }
    return true;
}
/**
 *	set the user-defined css file
 *
 *	@param array $args arguments
 *		key 'page' is the page (i.e. page.rev) or false the global css
 *		key 'css' is the content of the css file
 *	@return array response
 *		true if successful
 */
function user_css_set_css($args)
{
    if (!isset($args['page']) || $args['page'] !== false && !page_exists($args['page'])) {
        return response('Required argument "page" missing or invalid', 400);
    }
    if (!isset($args['css'])) {
        return response('Required argument "css" missing', 400);
    }
    if ($args['page'] === false) {
        // TODO (later): drop_cache()
        if (empty($args['css'])) {
            // empty stylesheet
            @unlink(CONTENT_DIR . '/usercss');
            return response(true);
        } else {
            $m = umask(0111);
            if (!@file_put_contents(CONTENT_DIR . '/usercss', $args['css'])) {
                umask($m);
                return response('Error saving stylesheet', 500);
            } else {
                umask($m);
                return response(true);
            }
        }
    } else {
        drop_cache('page', $args['page']);
        load_modules('glue');
        if (empty($args['css'])) {
            delete_object(array('name' => $args['page'] . '.usercss'));
            return response(true);
        } else {
            return update_object(array('name' => $args['page'] . '.usercss', 'type' => 'usercss', 'module' => 'user_css', 'content' => $args['css']));
        }
    }
}
Beispiel #19
0
<?php

/*
 * Created on Jan 24, 2007
 *
 * To change the template for this generated file go to
 * Window - Preferences - PHPeclipse - PHP - Code Templates
 */
include "includes.php";
include "WEB-INF/core/libs/modules.php";
print_r(load_modules());
Beispiel #20
0
<?php

/* 
 ***************************************************************
 | Copyright (c) 2007-2010 Clip-Bucket.com. All rights reserved.
 | @ Author	   : ArslanHassan									
 | @ Software  : ClipBucket , © PHPBucket.com					
 ****************************************************************
*/
define("IN_MODULE", true);
define("PARENT_PAGE", $_GET['s']);
define("THIS_PAGE", $_GET['p']);
require 'includes/config.inc.php';
$pages->page_redir();
//Loading Module Files
load_modules();
if (!defined("THIS_PAGE")) {
    e("Invalid module");
}
display_it();
Beispiel #21
0
/**
 *	implements upload
 */
function image_upload($args)
{
    // check if supported file
    if (!in_array($args['mime'], array('image/jpeg', 'image/png', 'image/gif')) || $args['mime'] == '' && !in_array(filext($args['file']), array('jpg', 'jpeg', 'png', 'gif'))) {
        return false;
    }
    load_modules('glue');
    // create new object
    $obj = create_object($args);
    if ($obj['#error']) {
        return false;
    } else {
        $obj = $obj['#data'];
    }
    $obj['type'] = 'image';
    // this is for a potential future speedup
    $obj['module'] = 'image';
    $obj['image-file'] = $args['file'];
    $obj['image-file-mime'] = $args['mime'];
    // save original-{width,height} if we can calculate it
    if (_gd_available()) {
        $a = expl('.', $args['page']);
        $size = _gd_get_imagesize(CONTENT_DIR . '/' . $a[0] . '/shared/' . $obj['image-file']);
        $obj['image-file-width'] = $size[0];
        $obj['object-width'] = $size[0] . 'px';
        $obj['image-file-height'] = $size[1];
        $obj['object-height'] = $size[1] . 'px';
    }
    save_object($obj);
    // render object and return html
    $ret = render_object(array('name' => $obj['name'], 'edit' => true));
    log_msg('debug', 'image_upload: ' . print_r($ret, 1));
    if ($ret['#error']) {
        return false;
    } else {
        return $ret['#data'];
    }
}