/**
 * Load action.
 *
 * @param string $action The name of the action
 *
 * @return void
 */
function ossn_action($action)
{
    global $Ossn;
    if (isset($Ossn->action) && array_key_exists($action, $Ossn->action)) {
        if (is_file($Ossn->action[$action])) {
            $params['action'] = $action;
            ossn_trigger_callback('action', 'load', $params);
            include_once $Ossn->action[$action];
            if (ossn_is_xhr()) {
                header('Content-Type: application/json');
                $vars = array();
                if (isset($_SESSION['ossn_messages']['success']) && !empty($_SESSION['ossn_messages']['success'])) {
                    $vars['success'] = $_SESSION['ossn_messages']['success'];
                }
                //danger = error bootstrap
                if (isset($_SESSION['ossn_messages']['danger']) && !empty($_SESSION['ossn_messages']['danger'])) {
                    $vars['error'] = $_SESSION['ossn_messages']['danger'];
                }
                if (isset($Ossn->redirect) && !empty($Ossn->redirect)) {
                    $vars['redirect'] = $Ossn->redirect;
                }
                if (isset($Ossn->ajaxData) && !empty($Ossn->ajaxData)) {
                    $vars['data'] = $Ossn->ajaxData;
                }
                unset($_SESSION['ossn_messages']);
                if (!empty($vars)) {
                    echo json_encode($vars);
                }
            }
        }
    } else {
        ossn_error_page();
    }
}
Beispiel #2
0
 * @copyright 2014 iNFORMATIKON TECHNOLOGIES
 * @license   General Public Licence http://www.opensource-socialnetwork.org/licence
 * @link      http://www.opensource-socialnetwork.org/licence
 */
$OssnComment = new OssnComments();
$image = input('comment-attachment');
//comment image check if is attached or not
if (!empty($image)) {
    $OssnComment->comment_image = $image;
}
//post on which comment is going to be posted
$post = input('post');
//comment text
$comment = input('comment');
if ($OssnComment->PostComment($post, ossn_loggedin_user()->guid, $comment)) {
    $data['comment'] = ossn_get_comment($OssnComment->getCommentId());
    $data = ossn_plugin_view('comments/templates/comment', $data);
    if (!ossn_is_xhr()) {
        redirect(REF);
    } else {
        header('Content-Type: application/json');
        echo json_encode(array('comment' => $data, 'process' => 1));
    }
} else {
    if (!ossn_is_xhr()) {
        redirect(REF);
    } else {
        header('Content-Type: application/json');
        echo json_encode(array('process' => 0));
    }
}
Beispiel #3
0
//walltype is user
$OssnWall->name = 'user';
//getting some inputs that are required for wall post
$post = input('post');
$friends = input('friends');
$location = input('location');
$privacy = input('privacy');
//validate wall privacy
$privacy = ossn_access_id_str($privacy);
if (!empty($privacy)) {
    $access = input('privacy');
} else {
    $access = OSSN_FRIENDS;
}
if ($OssnWall->Post($post, $friends, $location, $access)) {
    if (ossn_is_xhr()) {
        $guid = $OssnWall->getObjectId();
        $get = $OssnWall->GetPost($guid);
        if ($get) {
            $get = ossn_wallpost_to_item($get);
            ossn_set_ajax_data(array('post' => ossn_wall_view_template($get)));
        }
    }
    //no need to show message on success.
    //3.x why not? $arsalanshah
    ossn_trigger_message(ossn_print('post:created'));
    redirect(REF);
} else {
    ossn_trigger_message(ossn_print('post:create:error'), 'error');
    redirect(REF);
}
/**
 * OssnWall post page handlers 
 * 
 * @param array $pages List of pages
 *
 * @return false|mixed data
 * @access private
 */
function ossn_post_page($pages)
{
    $page = $pages[0];
    if (empty($page)) {
        return false;
    }
    switch ($page) {
        case 'view':
            $title = ossn_print('post:view');
            $wall = new OssnWall();
            $post = $pages[1];
            $post = $wall->GetPost($post);
            if (empty($post->guid) || empty($pages[1])) {
                ossn_error_page();
            }
            $params['post'] = $post;
            $contents = array('content' => ossn_plugin_view('wall/pages/view', $params));
            $content = ossn_set_page_layout('newsfeed', $contents);
            echo ossn_view_page($title, $content);
            break;
        case 'photo':
            if (isset($pages[1]) && isset($pages[2])) {
                $image = ossn_get_userdata("object/{$pages[1]}/ossnwall/images/{$pages[2]}");
                header('Content-Type: image/jpeg');
                echo file_get_contents($image);
            }
            break;
        case 'privacy':
            if (ossn_is_xhr()) {
                $params = array('title' => ossn_print('privacy'), 'contents' => ossn_plugin_view('wall/privacy'), 'callback' => '#ossn-wall-privacy');
                echo ossn_plugin_view('output/ossnbox', $params);
            }
            break;
        case 'refresh_home':
            echo ossn_plugin_view('wall/siteactivity');
            break;
        default:
            ossn_error_page();
            break;
    }
}
/**
 * Ossn Photos page handler
 * @pages:
 *       view,
 *    user,
 *       add,
 *       viewer
 *
 * @return mixed contents
 */
function ossn_photos_page_handler($album)
{
    $page = $album[0];
    if (empty($page)) {
        ossn_error_page();
    }
    switch ($page) {
        case 'view':
            if (isset($album[1])) {
                $title = ossn_print('photos');
                $photo['photo'] = $album[1];
                $view = new OssnPhotos();
                $image = $view->GetPhoto($photo['photo']);
                $photo['entity'] = $image;
                //redirect user to home page if image is empty
                if (empty($image)) {
                    redirect();
                }
                //throw 404 page if there is no album access
                $albumget = ossn_albums();
                $owner = $albumget->GetAlbum($image->owner_guid)->album;
                if ($owner->access == 3) {
                    if (!ossn_validate_access_friends($owner->owner_guid)) {
                        ossn_error_page();
                    }
                }
                //shows widget back button
                $addphotos = array('text' => ossn_print('back'), 'href' => 'javascript::;', 'class' => 'button-grey');
                $control = ossn_plugin_view('output/url', $addphotos);
                $contents = array('title' => ossn_print('photos'), 'content' => ossn_plugin_view('photos/pages/photo/view', $photo), 'controls' => $control);
                //set page layout
                $module['content'] = ossn_set_page_layout('media', $contents);
                $content = ossn_set_page_layout('contents', $module);
                echo ossn_view_page($title, $content);
            }
            break;
        case 'user':
            if (isset($album[1]) && isset($album[2]) && $album[1] == 'view') {
                $title = ossn_print('photos');
                $photo['photo'] = $album[2];
                $type = input('type');
                $view = new OssnPhotos();
                $image = $view->GetPhoto($photo['photo']);
                $photo['entity'] = $image;
                //redirect user if photo is empty
                if (empty($image->value)) {
                    redirect();
                }
                $addphotos = array('text' => ossn_print('back'), 'href' => 'javascript::;', 'class' => 'button-grey');
                $control = ossn_plugin_view('output/url', $addphotos);
                $contents = array('title' => 'Photos', 'content' => ossn_plugin_view('photos/pages/profile/photos/view', $photo), 'controls' => $control);
                //set page layout
                $module['content'] = ossn_set_page_layout('media', $contents);
                $content = ossn_set_page_layout('contents', $module);
                echo ossn_view_page($title, $content);
            }
            break;
        case 'cover':
            if (isset($album[1]) && isset($album[2]) && $album[1] == 'view') {
                $title = ossn_print('cover:view');
                $photo['photo'] = $album[2];
                $type = input('type');
                $image = ossn_get_entity($photo['photo']);
                $photo['entity'] = $image;
                //redirect user if photo is empty
                if (empty($image->value)) {
                    redirect();
                }
                $addphotos = array('text' => ossn_print('back'), 'href' => 'javascript::;', 'class' => 'button-grey');
                $control = ossn_plugin_view('output/url', $addphotos);
                $contents = array('title' => 'Photos', 'content' => ossn_plugin_view('photos/pages/profile/covers/view', $photo), 'controls' => $control);
                //set page layout
                $module['content'] = ossn_set_page_layout('media', $contents);
                $content = ossn_set_page_layout('contents', $module);
                echo ossn_view_page($title, $content);
            }
            break;
        case 'add':
            //add photos (ajax)
            if (!ossn_is_xhr()) {
                ossn_error_page();
            }
            echo ossn_plugin_view('output/ossnbox', array('title' => ossn_print('add:photos'), 'contents' => ossn_plugin_view('photos/pages/photos/add'), 'callback' => '#ossn-photos-submit'));
            break;
        case 'viewer':
            //ossn image viewer currently works for profile images
            $image = input('user');
            $url = ossn_site_url("avatar/{$image}");
            $media = "<img src='{$url}' />";
            $photo_guid = get_profile_photo_guid(ossn_user_by_username($image)->guid);
            //set viewer sidebar (comments and likes)
            $sidebar = ossn_plugin_view('photos/viewer/comments', array('entity_guid' => $photo_guid));
            echo ossn_plugin_view('output/viewer', array('media' => $media, 'sidebar' => $sidebar));
            break;
        default:
            ossn_error_page();
            break;
    }
}
Beispiel #6
0
/**
 * OssnWall post page handlers 
 * 
 * @param array $pages List of pages
 *
 * @return false|mixed data
 * @access private
 */
function ossn_post_page($pages)
{
    $page = $pages[0];
    if (empty($page)) {
        return false;
    }
    switch ($page) {
        case 'view':
            $title = ossn_print('post:view');
            $wall = new OssnWall();
            $post = $pages[1];
            $post = $wall->GetPost($post);
            if (empty($post->guid) || empty($pages[1])) {
                ossn_error_page();
            }
            $params['post'] = $post;
            $contents = array('content' => ossn_plugin_view('wall/pages/view', $params));
            $content = ossn_set_page_layout('newsfeed', $contents);
            echo ossn_view_page($title, $content);
            break;
        case 'photo':
            if (isset($pages[1]) && isset($pages[2])) {
                $name = str_replace(array('.jpg', '.jpeg', 'gif'), '', $pages[2]);
                $etag = $pages[1] . $name;
                if (isset($_SERVER['HTTP_IF_NONE_MATCH']) && trim($_SERVER['HTTP_IF_NONE_MATCH']) == "\"{$etag}\"") {
                    header("HTTP/1.1 304 Not Modified");
                    exit;
                }
                $image = ossn_get_userdata("object/{$pages[1]}/ossnwall/images/{$pages[2]}");
                //get image file else show error page
                if (is_file($image)) {
                    //Image cache on wall post #529
                    $filesize = filesize($image);
                    header("Content-type: image/jpeg");
                    header('Expires: ' . gmdate('D, d M Y H:i:s \\G\\M\\T', strtotime("+6 months")), true);
                    header("Pragma: public");
                    header("Cache-Control: public");
                    header("Content-Length: {$filesize}");
                    header("ETag: \"{$etag}\"");
                    readfile($image);
                    return;
                } else {
                    ossn_error_page();
                }
            }
            break;
        case 'privacy':
            if (ossn_is_xhr()) {
                $params = array('title' => ossn_print('privacy'), 'contents' => ossn_plugin_view('wall/privacy'), 'callback' => '#ossn-wall-privacy');
                echo ossn_plugin_view('output/ossnbox', $params);
            }
            break;
        case 'refresh_home':
            echo ossn_plugin_view('wall/siteactivity');
            break;
        default:
            ossn_error_page();
            break;
    }
}
/**
 * Validate an action token on requested action.
 *
 * Calls to actions will automatically validate tokens. If token is invalid
 * the action stops and user will be redirected with warning of invalid token.
 *
 * @param string $callback	Name of callback
 * @param string $type	Type of callback
 * @param array $params
 *
 * @access private
 * @return void
 */
function ossn_action_validate_callback($callback, $type, $params)
{
    $action = $params['action'];
    $bypass = array();
    $bypass = ossn_call_hook('action', 'validate:bypass', null, $bypass);
    //validate post request also
    ossn_post_size_exceed_error();
    if (!in_array($action, $bypass)) {
        if (!ossn_validate_actions()) {
            if (ossn_is_xhr()) {
                header("HTTP/1.0 404 Not Found");
                exit;
            } else {
                ossn_trigger_message(ossn_print('ossn:securitytoken:failed'), 'error');
                redirect(REF);
            }
        }
    }
}
/**
 * Set Ajax Data
 * Use only in action files
 *
 * @param array $data A data array
 *
 * @return void
 */
function ossn_set_ajax_data(array $data = array())
{
    global $Ossn;
    if (ossn_is_xhr()) {
        $Ossn->ajaxData = $data;
    }
}
Beispiel #9
0
/**
 * Viatges "handler" 
 * @pages:
 *       view,
 *       add
 *       
 *
 * @return diferent contents
 */
function trip_page_handler($trip)
{
    $page = $trip[0];
    if (empty($page)) {
        ossn_error_page();
        //Mostra 404
    }
    // var_dump($trip);
    switch ($page) {
        //Vista viatge (Accés públic no existeix restricció de visualització)
        case 'view':
            $view = new OptionTrips();
            $viewAlbum = new OssnAlbums();
            $album = $viewAlbum->GetAlbum(19);
            //Agafa id del viatge
            $infoTrip = $view->GetTrip($trip[1]);
            //Agafa id del viatge
            $infoDays = $view->GetTripDays($trip[1]);
            // var_dump($image);
            //$photo['entity'] = $image;
            $trip['info'] = $infoTrip;
            $trip['day'] = $infoDays;
            $trip['album'] = $album;
            //redirect user to home page if trip is empty
            if (empty($infoTrip)) {
                redirect();
            }
            //Missing "back" button to trips
            $owner = ossn_user_by_guid($infoTrip->guid);
            $back = array('text' => ossn_print('back'), 'href' => ossn_site_url("u/{$owner->username}/trips"), 'class' => 'button-grey');
            $control = ossn_plugin_view('output/url', $back);
            $contents = array('title' => ossn_print('trip:details'), 'content' => ossn_plugin_view('trips/pages/trip/view', $trip), 'controls' => $control, 'module_width' => '850px');
            //inclou page layout
            $module['content'] = ossn_set_page_layout('module', $contents);
            //Inclou modul amb els botons d'accions
            $content = ossn_set_page_layout('contents', $module);
            echo ossn_view_page($title, $content);
            break;
            //Afegir viatge
        //Afegir viatge
        case 'add':
            //Missing "back" button to trips
            $owner = ossn_loggedin_user()->username;
            // var_dump($owner);
            $back = array('text' => ossn_print('back'), 'href' => ossn_site_url("u/{$owner}/trips"), 'class' => 'button-grey');
            $control = ossn_plugin_view('output/url', $back);
            $contents = array('title' => ossn_print('add:trip'), 'content' => ossn_plugin_view('trips/pages/trip/add'), 'controls' => $control, 'module_width' => '850px');
            //inclou page layout
            $module['content'] = ossn_set_page_layout('module', $contents);
            //Inclou modul amb els botons d'accions
            $content = ossn_set_page_layout('contents', $module);
            echo ossn_view_page($title, $content);
            // echo ossn_plugin_view('output/url', array(
            // 		'title' => ossn_print('add:trip'),
            // 		'contents' => ossn_plugin_view('trips/pages/trip/add'),
            // 		'callback' => '#ossn-trip-submit'
            // ));
            break;
        case 'addPhoto':
            //add photos (ajax)
            if (!ossn_is_xhr()) {
                ossn_error_page();
            }
            echo ossn_plugin_view('output/ossnbox', array('title' => ossn_print('add:photos'), 'contents' => ossn_plugin_view('trips/pages/trip/addPhoto'), 'callback' => '#photos-submit'));
            break;
        default:
            ossn_error_page();
            //Mostra 404
            break;
    }
}