Beispiel #1
0
 function init()
 {
     // We need this to make sure the channel theme is always loaded.
     $which = argv(1);
     $profile = 0;
     profile_load($a, $which, $profile);
     if (\App::$profile['profile_uid']) {
         head_set_icon(\App::$profile['thumb']);
     }
     // load the item here in the init function because we need to extract
     // the page layout and initialise the correct theme.
     $observer = \App::get_observer();
     $ob_hash = $observer ? $observer['xchan_hash'] : '';
     // perm_is_allowed is denied unconditionally when 'site blocked to unauthenticated members'.
     // This bypasses that restriction for sys channel (public) content
     if (!perm_is_allowed(\App::$profile['profile_uid'], $ob_hash, 'view_pages') && !is_sys_channel(\App::$profile['profile_uid'])) {
         notice(t('Permission denied.') . EOL);
         return;
     }
     if (argc() < 3) {
         notice(t('Invalid item.') . EOL);
         return;
     }
     $channel_address = argv(1);
     // The page link title was stored in a urlencoded format
     // php or the browser may/will have decoded it, so re-encode it for our search
     $page_id = urlencode(argv(2));
     $u = q("select channel_id from channel where channel_address = '%s' limit 1", dbesc($channel_address));
     if (!$u) {
         notice(t('Channel not found.') . EOL);
         return;
     }
     if ($_REQUEST['rev']) {
         $revision = " and revision = " . intval($_REQUEST['rev']) . " ";
     } else {
         $revision = " order by revision desc ";
     }
     require_once 'include/security.php';
     $sql_options = item_permissions_sql($u[0]['channel_id']);
     $r = q("select item.* from item left join item_id on item.id = item_id.iid\n\t\t\twhere item.uid = %d and sid = '%s' and item.item_delayed = 0 and (( service = 'WEBPAGE' and item_type = %d ) \n\t\t\tOR ( service = 'PDL' AND item_type = %d )) {$sql_options} {$revision} limit 1", intval($u[0]['channel_id']), dbesc($page_id), intval(ITEM_TYPE_WEBPAGE), intval(ITEM_TYPE_PDL));
     if (!$r) {
         // Check again with no permissions clause to see if it is a permissions issue
         $x = q("select item.* from item left join item_id on item.id = item_id.iid\n\t\t\twhere item.uid = %d and sid = '%s' and item.item_delayed = 0 and service = 'WEBPAGE' and \n\t\t\titem_type = %d {$revision} limit 1", intval($u[0]['channel_id']), dbesc($page_id), intval(ITEM_TYPE_WEBPAGE));
         if ($x) {
             // Yes, it's there. You just aren't allowed to see it.
             notice(t('Permission denied.') . EOL);
         } else {
             notice(t('Page not found.') . EOL);
         }
         return;
     }
     if ($r[0]['title']) {
         \App::$page['title'] = escape_tags($r[0]['title']);
     }
     if ($r[0]['item_type'] == ITEM_TYPE_PDL) {
         \App::$comanche = new \Zotlabs\Render\Comanche();
         \App::$comanche->parse($r[0]['body']);
         \App::$pdl = $r[0]['body'];
     } elseif ($r[0]['layout_mid']) {
         $l = q("select body from item where mid = '%s' and uid = %d limit 1", dbesc($r[0]['layout_mid']), intval($u[0]['channel_id']));
         if ($l) {
             \App::$comanche = new \Zotlabs\Render\Comanche();
             \App::$comanche->parse($l[0]['body']);
             \App::$pdl = $l[0]['body'];
         }
     }
     \App::$data['webpage'] = $r;
 }
Beispiel #2
0
/**
 * @brief Loads a page definition file for a module.
 *
 * If there is no parsed Comanche template already load a module's pdl file
 * and parse it with Comanche.
 *
 * @param App &$a global application object
 */
function load_pdl(&$a)
{
    App::$comanche = new Zotlabs\Render\Comanche();
    if (!count(App::$layout)) {
        $arr = array('module' => App::$module, 'layout' => '');
        call_hooks('load_pdl', $arr);
        $layout = $arr['layout'];
        $n = 'mod_' . App::$module . '.pdl';
        $u = App::$comanche->get_channel_id();
        if ($u) {
            $s = get_pconfig($u, 'system', $n);
        }
        if (!$s) {
            $s = $layout;
        }
        if (!$s && ($p = theme_include($n)) != '') {
            $s = @file_get_contents($p);
        }
        if ($s) {
            App::$comanche->parse($s);
            App::$pdl = $s;
        }
    }
}