Exemplo n.º 1
0
 /**
  * Execute the console command.
  *
  * @return void
  */
 public function fire()
 {
     $x = 1;
     foreach (Group::all() as $group) {
         $contents = Content::where('group_id', $group->getKey())->count();
         $entries = Entry::where('group_id', $group->getKey())->count();
         $total = $contents + $entries;
         // Default activity is medium = 2
         $group->activity = 2;
         // Low activity, when nothing was added last week
         if ($total == 0) {
             $group->activity = 1;
         }
         if ($total > 15) {
             $group->activity = 3;
         }
         if ($total > 50) {
             $group->activity = 4;
         }
         $group->save();
         if (!($x % 100)) {
             $this->info($x . ' groups processed');
         }
         $x++;
     }
     $this->info('All groups processed');
 }
Exemplo n.º 2
0
 public function show($groupName)
 {
     $group = Group::name($groupName)->with('creator')->firstOrFail();
     $group->checkAccess();
     $stats = ['contents' => intval(Content::where('group_id', $group->getKey())->count()), 'comments' => intval(Content::where('group_id', $group->getKey())->sum('comments')), 'entries' => intval(Entry::where('group_id', $group->getKey())->count()), 'banned' => intval(GroupBanned::where('group_id', $group->getKey())->count()), 'subscribers' => $group->subscribers, 'moderators' => intval(GroupModerator::where('group_id', $group->getKey())->count())];
     return array_merge($group->toArray(), ['stats' => $stats]);
 }
 public function newsItem($newsItem)
 {
     $newsItemParts = explode('-', $newsItem);
     $newsItem = Content::where('type', 'news')->where('id', $newsItemParts[0])->get();
     $recent = Content::where('type', 'news')->where('subtype', null)->orderBy('date', 'DESC')->limit(3)->get();
     return View::make('new')->withContent($newsItem)->withRecent($recent);
 }
Exemplo n.º 4
0
 public static function factory($id = null)
 {
     $instance = new Content();
     if (!empty($id)) {
         $instance->where('id', $id)->get();
     }
     return $instance;
 }
Exemplo n.º 5
0
 public function edit($id)
 {
     $query = Content::where('id', $id);
     if ($query->count() == 1) {
         return View::make('Dashboard.ContentManagement.Edit', array('row' => $query));
     } else {
         return Redirect::back()->with('event', '<p class="alert alert-danger"><span class="glyphicon glyphicon-remove"></span> Nothing found</p>');
     }
 }
Exemplo n.º 6
0
 public function index()
 {
     $data['can_save'] = $this->perm->can_create;
     save_logs($this->menu_id, 'View', $this->session->userdata("id"), ' View explanation ');
     $rs = new Content();
     $data['rs'] = $rs->where("slug", "explanation")->get(1);
     $data['menu_id'] = $this->menu_id;
     $this->template->build("contents/form", $data);
 }
Exemplo n.º 7
0
 function move_down()
 {
     $cont = new Content();
     //$cont->where('parent_section',$this->parent_section );//same section
     $cont->where('parent_content', $this->parent_content);
     //same parent
     $cont->where('cell', $this->cell);
     // same cell
     $cont->where('sort >', $this->sort);
     //greater sort
     $cont->get();
     //get them to process
     // if that content object exists then that place is taken
     // so we have to get a place for it
     if ($cont->exists()) {
         $this->deattach();
         $this->sort++;
         $this->attach();
         return TRUE;
     }
     return FALSE;
 }
Exemplo n.º 8
0
 public function addVote(Content $content)
 {
     $poll = $content->poll;
     // No double voting, sorry
     $hasVoted = in_array(Auth::id(), array_column($poll['votes'], 'user_id'));
     if ($hasVoted) {
         return Redirect::route('content_comments', $content->getKey())->with('danger_msg', 'Oddałeś już głos w tej ankiecie.');
     }
     // Check if poll isn't closed already
     if (isset($poll['ends_at']) && Carbon::now()->gte($poll['ends_at'])) {
         return Redirect::route('content_comments', $content->getKey())->with('danger_msg', 'Ankieta została już zakończona.');
     }
     // Create validation rules for all questions
     $rules = [];
     foreach ($poll['questions'] as $questionId => $question) {
         $rules[$questionId] = ['array', 'min:' . $question['min_selections'], 'max:' . $question['max_selections']];
         if ($question['min_selections']) {
             $rules[$questionId][] = 'required';
         }
     }
     // Now validate replies
     $validator = Validator::make(Input::all(), $rules, ['required' => 'Odpowiedź na to pytanie jest wymagana', 'min' => 'Zaznaczyłeś zbyt małą liczbę odpowiedzi', 'max' => 'Zaznaczyłeś zbyt dużą liczbę odpowiedzi']);
     if ($validator->fails()) {
         return Redirect::route('content_comments', $content->getKey())->withInput()->withErrors($validator);
     }
     // And add vote object to poll
     $replies = [];
     foreach ($poll['questions'] as $questionId => $question) {
         $optionIds = (array) Input::get($questionId);
         foreach ($optionIds as $optionId) {
             if (!in_array($optionId, array_column($question['options'], '_id'))) {
                 return Redirect::route('content_comments', $content->getKey())->withInput()->with('danger_msg', 'Wygląda na to, że jedna z odpowiedzi została usunięta. Spróbuj jeszcze raz.');
             }
         }
         $replies[$questionId] = $optionIds;
     }
     foreach ($replies as $questionId => $optionIds) {
         if (!$optionIds) {
             continue;
         }
         foreach ($optionIds as $optionId) {
             Content::where('_id', $content->getKey())->where('poll.questions.' . $questionId . '.options', 'elemmatch', ['_id' => $optionId])->increment('poll.questions.' . $questionId . '.options.$.votes', 1);
         }
     }
     $vote = ['created_at' => new MongoDate(), 'user_id' => Auth::id(), 'replies' => $replies];
     $content->push('poll.votes', $vote);
     return Redirect::route('content_comments', $content->getKey())->with('success_msg', 'Twój głos został dodany.');
 }
Exemplo n.º 9
0
 /**
  * Execute the console command.
  *
  * @return void
  */
 public function fire()
 {
     DB::connection()->disableQueryLog();
     foreach (Group::all() as $group) {
         $builder = Content::where('group_id', $group->getKey())->orderBy('uv', 'desc')->take(50);
         $count = $builder->count();
         //$averageUv = $builder->avg('uv');
         if ($count < 10) {
             $threshold = 2;
         } else {
             $threshold = $this->median($builder->lists('uv'));
             $threshold = round($threshold);
             $threshold = max(2, $threshold);
         }
         $group->popular_threshold = $threshold;
         $group->save();
     }
 }
Exemplo n.º 10
0
 public function createDefaultContent()
 {
     $existing = \Content::where('is_home', 1)->first();
     if ($existing == false) {
         $content = new \Content();
         $content->title = "Home";
         $content->url = 'home';
         $content->parent = 0;
         $content->is_home = 1;
         $content->is_active = 1;
         $content->content_type = "page";
         $content->subtype = "static";
         $content->layout_file = "index.php";
         $content->save();
         $menu = new \Menu();
         $menu->title = "header_menu";
         $menu->item_type = "menu";
         $menu->is_active = 1;
         $menu->save();
         $menu = new \Menu();
         $menu->parent_id = 1;
         $menu->content_id = 1;
         $menu->item_type = "menu_item";
         $menu->is_active = 1;
         $menu->save();
         $menu = new \Menu();
         $menu->title = "footer_menu";
         $menu->item_type = "menu";
         $menu->is_active = 1;
         $menu->save();
         $menu = new \Menu();
         $menu->parent_id = 2;
         $menu->content_id = 1;
         $menu->item_type = "menu_item";
         $menu->is_active = 1;
         $menu->save();
     }
 }
Exemplo n.º 11
0
 public function anyTree()
 {
     $id = \Input::all();
     if (@$id['id'] == '#') {
         $id = '';
     } else {
         $id = @$id['id'];
     }
     if (!$id) {
         $id = $this->content->fromApplication()->whereNull('parent_id')->first()->id;
     }
     $config = \Config::get('bootlegcms.cms_tree_descendents');
     $tree = $this->content->where('id', '=', $id)->first();
     $tree = $config != null ? $tree->getDescendants($config) : $tree->getDescendants();
     $tree = $tree->toHierarchy();
     if (count($tree)) {
         foreach ($tree as $t) {
             $treeOut[] = $this->renderTree($t);
         }
         return response()->json($treeOut);
     } else {
         return response()->json();
     }
 }
Exemplo n.º 12
0
 public static function createSlug($input, $parent, $ignoreDuplicates = false)
 {
     if (@$input['name']) {
         $pageSlug = $input['name'];
     } else {
         $pageSlug = uniqid();
     }
     $pageSlug = str_replace(" ", "-", $pageSlug);
     //spaces
     $pageSlug = urlencode($pageSlug);
     //last ditch attempt to sanitise
     $wholeSlug = rtrim(@$parent->slug, "/") . "/{$pageSlug}";
     if ($ignoreDuplicates) {
         return $wholeSlug;
     }
     //does it already exist?
     if (Content::where("slug", "=", $wholeSlug)->first()) {
         //it already exists.. find the highest numbered example and increment 1.
         $highest = Content::where('slug', 'like', "{$wholeSlug}-%")->orderBy('slug', 'desc')->first();
         $num = 1;
         if ($highest) {
             $num = str_replace("{$wholeSlug}-", "", $highest->slug);
             $num++;
         }
         return strtolower("{$wholeSlug}-{$num}");
     } else {
         return strtolower($wholeSlug);
     }
 }
 public function news()
 {
     $content = Content::where('type', 'news')->where('subtype', null)->orderBy('date', 'DESC')->paginate(5);
     $recent = Content::where('type', 'news')->where('subtype', null)->orderBy('date', 'DESC')->limit(3)->get();
     return View::make('client.news')->withContent($content)->withRecent($recent);
 }
Exemplo n.º 14
0
<?php

$c = new Content();
$c->where('slug', NULL)->or_where('slug', '')->limit(100)->get_iterated();
foreach ($c as $content) {
    $content->slug = '__generate__';
    $content->save();
}
$c = new Content();
if ($c->where('slug', NULL)->or_where('slug', '')->count() === 0) {
    $done = true;
}
Exemplo n.º 15
0
$fields = $this->db->query("SHOW COLUMNS FROM {$t->table}");
$run = true;
if ($fields) {
    $result = $fields->result();
    if ($result && strtolower($result[0]->Type) === 'int(9)') {
        $run = false;
    }
}
if ($run) {
    $this->db->query("TRUNCATE TABLE {$t->table}");
    $this->db->query("ALTER TABLE {$t->table} DROP COLUMN count");
    $this->db->query("ALTER TABLE {$c->table} DROP COLUMN count");
    $this->db->query("ALTER TABLE {$t->table} DROP COLUMN id");
    $this->db->query("ALTER TABLE {$t->table} ADD id INT(9) AUTO_INCREMENT PRIMARY KEY FIRST");
    $a = new Album();
    $c = new Content();
    $t = new Text();
    $this->db->query("ALTER TABLE {$a->table} DROP COLUMN tags_migrated");
    $this->db->query("ALTER TABLE {$c->table} DROP COLUMN tags_migrated");
    $this->db->query("ALTER TABLE {$t->table} DROP COLUMN tags_migrated");
    $this->db->query("ALTER TABLE {$a->table} ADD tags_migrated TINYINT(1) DEFAULT 0");
    $this->db->query("ALTER TABLE {$c->table} ADD tags_migrated TINYINT(1) DEFAULT 0");
    $this->db->query("ALTER TABLE {$t->table} ADD tags_migrated TINYINT(1) DEFAULT 0");
    $this->db->query("ALTER TABLE {$a->table} CHANGE tags tags_old TEXT");
    $this->db->query("ALTER TABLE {$c->table} CHANGE tags tags_old TEXT");
    $this->db->query("ALTER TABLE {$t->table} CHANGE tags tags_old TEXT");
    $a->where('tags_old', null)->update(array('tags_migrated' => 1));
    $c->where('tags_old', null)->update(array('tags_migrated' => 1));
    $t->where('tags_old', null)->update(array('tags_migrated' => 1));
}
$done = true;
Exemplo n.º 16
0
 function index()
 {
     // TODO: Make sure user is admin over content they fave
     list($params, $id) = $this->parse_params(func_get_args());
     if ($this->method != 'get') {
         $c = new Content();
         if ($this->method != 'put' && is_null($id)) {
             $this->error('403', 'Required parameter "id" not present.');
             return;
         }
         $tail = '';
         switch ($this->method) {
             case 'put':
                 if (isset($params['order'])) {
                     $ids = explode(',', $params['order']);
                     $new_order_map = array();
                     foreach ($ids as $key => $val) {
                         $pos = $key + 1;
                         $new_order_map[$val] = $pos;
                     }
                     $favs = $c->where('favorite', 1)->order_by('favorite_order ASC')->get_iterated();
                     foreach ($favs as $f) {
                         if (isset($new_order_map[$f->id]) && $new_order_map[$f->id] != $f->favorite_order) {
                             echo $new_order_map[$f->id];
                             $f->where('id', $f->id)->update('favorite_order', $new_order_map[$f->id]);
                         }
                     }
                 }
                 break;
             case 'post':
             case 'delete':
                 if (is_numeric($id)) {
                     $id = array($id);
                 } else {
                     $id = explode(',', $id);
                 }
                 if ($this->method == 'delete') {
                     $c->where_in('id', $id)->update(array('favorite' => 0, 'favorite_order' => null, 'favorited_on' => null));
                 } else {
                     $max = $c->select_func('max', '@favorite_order', 'max_favorite')->where('favorite', 1)->get();
                     if (!is_numeric($max->max_favorite)) {
                         $max_order = 1;
                     } else {
                         $max_order = $max->max_favorite;
                     }
                     foreach ($id as $id) {
                         $c->where('id', $id)->update(array('favorite' => 1, 'favorite_order' => $max_order++, 'favorited_on' => strtotime(gmdate('Y-m-d H:i:s'))));
                     }
                 }
                 break;
         }
         if ($this->method == 'delete') {
             exit;
         } else {
             $this->redirect('/favorites');
         }
     }
     $c2 = new Content();
     $c2->where('favorite', 1)->where('deleted', 0);
     $sort = $c2->_get_site_order('favorite');
     $options = array('order_by' => $sort['by'], 'order_direction' => $sort['direction'], 'favorite' => true);
     $params = array_merge($options, $params);
     if ($params['order_by'] === 'manual') {
         $params['order_by'] = 'favorite_order, favorited_on';
         $params['order_direction'] = 'asc';
     }
     $params['auth'] = $this->auth;
     $final = $c2->listing($params);
     $final['sort'] = $sort;
     $this->set_response_data($final);
 }
Exemplo n.º 17
0
 function _all($params)
 {
     $s = new Setting();
     $s->where('name', 'site_timezone')->get();
     $tz = new DateTimeZone($s->value);
     $offset = $tz->getOffset(new DateTime('now', new DateTimeZone('UTC')));
     if ($offset === 0) {
         $shift = '';
     } else {
         $shift = ($offset < 0 ? '-' : '+') . abs($offset);
     }
     $content_col = $params['content_column'];
     $select = "COUNT(*) as count, YEAR(FROM_UNIXTIME({$content_col}{$shift})) as event_year";
     $group = 'event_year';
     $order = 'event_year DESC';
     if (!$params['scope'] || $params['scope'] !== 'year') {
         $select .= ", MONTH(FROM_UNIXTIME({$content_col}{$shift})) as event_month";
         $group .= ',event_month';
         $order .= ',event_month DESC';
     }
     if (!$params['limit_to'] && !$params['scope']) {
         $select .= ", DAY(FROM_UNIXTIME({$content_col}{$shift})) as event_day";
         $group .= ',event_day';
         $order .= ',event_day DESC';
     }
     $a = new Album();
     $c = new Content();
     $t = new Text();
     $c->select(str_replace($content_col, $c->table . '.' . $content_col, $select))->include_related('album', 'id')->where('visibility', 0)->where('deleted', 0);
     if (!$params['limit_to']) {
         $c->group_start()->where('album_id', null)->or_where($c->table . '.published_on > `' . $a->table . '`.`published_on`')->group_end();
     }
     $a->select(str_replace($content_col, 'published_on', $select))->where('visibility', 0)->where('deleted', 0)->where('total_count >', 0);
     $t->select(str_replace($content_col, 'published_on', $select))->where('page_type', 0)->where('published', 1);
     if ($params['featured']) {
         $c->where('featured', 1);
         $a->where('featured', 1);
         $t->where('featured', 1);
     }
     $c->group_by($group)->order_by($order);
     $t->group_by($group)->order_by($order);
     $a->group_by($group)->order_by($order);
     $dates = array();
     if (!$params['limit_to'] || $params['limit_to'] === 'content') {
         foreach ($c->get_iterated() as $content) {
             if ($params['scope'] === 'year') {
                 $key = "{$content->event_year}";
             } else {
                 if ($params['limit_to'] || $params['scope']) {
                     $key = "{$content->event_year}-{$content->event_month}";
                 } else {
                     $key = "{$content->event_year}-{$content->event_month}-{$content->event_day}";
                 }
             }
             $key = strtotime($key);
             if (is_numeric($content->event_year)) {
                 $dates[$key] = array('year' => (int) $content->event_year, 'month' => (int) $content->event_month, 'day' => (int) $content->event_day, 'counts' => array('content' => (int) $content->count, 'albums' => 0, 'essays' => 0));
             }
         }
     }
     if (!$params['limit_to'] || $params['limit_to'] === 'albums') {
         foreach ($a->get_iterated() as $album) {
             if ($params['scope'] === 'year') {
                 $key = "{$album->event_year}";
             } else {
                 if ($params['limit_to'] || $params['scope']) {
                     $key = "{$album->event_year}-{$album->event_month}";
                 } else {
                     $key = "{$album->event_year}-{$album->event_month}-{$album->event_day}";
                 }
             }
             $key = strtotime($key);
             if (is_numeric($album->event_year)) {
                 if (!isset($dates[$key])) {
                     $dates[$key] = array('year' => (int) $album->event_year, 'month' => (int) $album->event_month, 'day' => (int) $album->event_day, 'counts' => array('content' => 0, 'albums' => (int) $album->count, 'essays' => 0));
                 } else {
                     $dates[$key]['counts']['albums'] = (int) $album->count;
                 }
             }
         }
     }
     if (!$params['limit_to'] || $params['limit_to'] === 'essays') {
         foreach ($t->get_iterated() as $essay) {
             if ($params['scope'] === 'year') {
                 $key = "{$essay->event_year}";
             } else {
                 if ($params['limit_to'] || $params['scope']) {
                     $key = "{$essay->event_year}-{$essay->event_month}";
                 } else {
                     $key = "{$essay->event_year}-{$essay->event_month}-{$essay->event_day}";
                 }
             }
             $key = strtotime($key);
             if (is_numeric($essay->event_year)) {
                 if (!isset($dates[$key])) {
                     $dates[$key] = array('year' => (int) $essay->event_year, 'month' => (int) $essay->event_month, 'day' => (int) $essay->event_day, 'counts' => array('content' => 0, 'albums' => 0, 'essays' => (int) $essay->count));
                 } else {
                     $dates[$key]['counts']['essays'] = (int) $essay->count;
                 }
             }
         }
     }
     krsort($dates);
     return $dates;
 }
Exemplo n.º 18
0
 public function post_career_management()
 {
     $content = Content::where('type', 'career_resource')->where('subtype', 'career_management')->first();
     $content->intro = Input::get('intro');
     $content->body = Input::get('body');
     $content->save();
     return Redirect::back()->withInfo('Thanks. Your changes have been made.');
 }
Exemplo n.º 19
0
<?php

$c = new Content();
$fields = $this->db->query("SHOW COLUMNS FROM {$c->table}");
$result = $fields->result();
$columns = array();
foreach ($result as $field) {
    $columns[] = $field->Field;
}
if (in_array('tags_migrated', $columns)) {
    foreach ($c->where('tags_migrated', 0)->limit(100)->get_iterated() as $content) {
        $content->_format_tags(trim($content->tags_old, ','));
        $content->tags_migrated = 1;
        $content->save();
    }
    if ($c->where('tags_migrated', 0)->count() === 0) {
        $done = true;
    }
} else {
    $done = true;
}
 public function postSaveabout()
 {
     $content = Content::where('type', 'about')->where('subtype', 'about')->first();
     // if($content->isEmpty())
     // {
     // 	$content = new Content;
     // 	$content->type = 'about';
     // 	$content->subtype = 'about';
     // 	$content->save();
     // }
     $content->intro = Input::get('intro');
     $content->body = Input::get('body');
     $content->save();
     $history = Content::where('type', 'about')->where('subtype', 'history')->first();
     // if(!$history)
     // {
     // 	$content = new Content;
     // 	$content->type = 'about';
     // 	$content->subtype = 'history';
     // 	$content->save();
     // }
     $history->intro = Input::get('history_intro');
     $history->body = Input::get('history_body');
     $history->save();
     return Response::json(array('result' => 1));
 }
Exemplo n.º 21
0
 function deattach($object = '')
 {
     //=========================
     //normalize the  sort numbers
     //=========================
     $cont = new Content();
     // we have to push all the content up to fill that hole
     // these content must me in the same section,parent,cell
     // and have sort nubmer greater than that content
     //$cont->where( 'parent_section',$object->parent_section );//same section
     $cont->where('parent_content', $object->parent_content);
     //same parent
     $cont->where('cell', $object->cell);
     // same cell
     $cont->where('sort >', $object->sort);
     //greater sort
     $cont->get();
     //get them to process
     foreach ($cont->all as $item) {
         $item->sort--;
         $item->save();
     }
 }
Exemplo n.º 22
0
 function build_autos($items, $data, $user)
 {
     foreach ($items as $index => &$item) {
         if (isset($item['auto'])) {
             if (isset($data['urls'][$item['auto']])) {
                 $item['path'] = $data['urls'][$item['auto']];
             } else {
                 if ($item['auto'] === 'set') {
                     $item['path'] = '';
                 }
             }
             if ($item['auto'] === 'profile') {
                 switch ($item['id']) {
                     case 'twitter':
                         $item['path'] = 'https://twitter.com/' . $user->twitter;
                         break;
                     default:
                         $item['path'] = $user->{$item['id']};
                         if (empty($item['path'])) {
                             unset($items[$index]);
                             continue;
                         }
                         break;
                 }
                 if (!isset($item['label']) || empty($item['label'])) {
                     $item['label'] = ucwords($item['id']) . ($item['id'] === 'google' ? '+' : '');
                 }
             } else {
                 if ($item['auto'] === 'rss') {
                     $item['path'] = '/feed/' . $item['id'] . ($item['id'] === 'essay' ? 's' : '') . '/recent.rss';
                     if (!isset($item['label'])) {
                         $item['label'] = $data['url_data'][$item['id']]['plural'] . ' RSS';
                     }
                 } else {
                     if (preg_match('/s$/', $item['auto']) || $item['auto'] === 'timeline') {
                         if ($item['auto'] === 'timeline' && isset($item['year'])) {
                             $item['path'] .= $item['year'] . '/';
                             if (isset($item['month']) && $item['month'] !== false && $item['month'] !== 'any') {
                                 $m = str_pad($item['month'], 2, '0', STR_PAD_LEFT);
                                 $item['path'] .= $m . '/';
                             }
                         }
                         if (strpos($item['auto'], '_') !== false) {
                             foreach (array('id', 'slug', 'month', 'year', 'day') as $id) {
                                 if ($id === 'month') {
                                     if (!isset($item['month']) || $item['month'] === 'any' || $item['month'] === false) {
                                         $item['month'] = '';
                                     } else {
                                         $item['month'] = str_pad($item['month'], 2, '0', STR_PAD_LEFT);
                                     }
                                 }
                                 if ($id === 'day' && !isset($item['day'])) {
                                     $item['day'] = '';
                                 }
                                 if ($id === 'slug' && !isset($item['slug']) && isset($item['id'])) {
                                     if (strpos($item['auto'], 'tag_') === 0) {
                                         $item['slug'] = $item['id'];
                                     } else {
                                         $c = new Category();
                                         if (is_numeric($item['id'])) {
                                             $c->select('slug')->get_by_id($item['id']);
                                             $item['slug'] = $c->slug;
                                         } else {
                                             $item['slug'] = $item['id'];
                                         }
                                     }
                                 }
                                 if (isset($item[$id])) {
                                     $item['path'] = str_replace(":{$id}", $item[$id], $item['path']);
                                 }
                             }
                         } else {
                             if (!isset($item['label'])) {
                                 $item['label'] = $data['url_data'][$item['auto'] === 'categories' ? 'category' : rtrim($item['auto'], 's')]['plural'];
                             }
                         }
                     } else {
                         if ($item['auto'] === 'home') {
                             if (!isset($item['label'])) {
                                 $item['label'] = $data['url_data']['home'];
                             }
                             $item['path'] = '/home/';
                         } else {
                             if ($item['auto'] === 'album' || $item['auto'] === 'set') {
                                 $a = new Album();
                                 $a->select('id,slug,created_on,title');
                                 if (is_numeric($item['id'])) {
                                     $a->where('id', $item['id']);
                                 } else {
                                     $a->where('slug', $item['id'])->or_where('internal_id', $item['id']);
                                 }
                                 $a->get();
                                 if (!$a->exists()) {
                                     unset($items[$index]);
                                     continue;
                                 }
                                 $item['path'] = str_replace(':id', $a->id, $item['path']);
                                 $item['path'] = str_replace(':slug', $a->slug, $item['path']);
                                 $item['path'] = str_replace(':year', date('Y', $a->created_on), $item['path']);
                                 $item['path'] = str_replace(':month', date('m', $a->created_on), $item['path']);
                                 $item['path'] = str_replace(':day', date('d', $a->created_on), $item['path']);
                                 if (!isset($item['label'])) {
                                     $item['label'] = $a->title;
                                 }
                             } else {
                                 if ($item['auto'] === 'page' || $item['auto'] === 'essay') {
                                     $t = new Text();
                                     $t->select('id,slug,published_on,title');
                                     if (is_numeric($item['id'])) {
                                         $t->where('id', $item['id']);
                                     } else {
                                         $t->where('slug', $item['id']);
                                     }
                                     $t->get();
                                     if (!$t->exists()) {
                                         unset($items[$index]);
                                         continue;
                                     }
                                     $item['path'] = str_replace(':id', $t->id, $item['path']);
                                     $item['path'] = str_replace(':slug', $t->slug, $item['path']);
                                     $item['path'] = str_replace(':year', date('Y', $t->published_on), $item['path']);
                                     $item['path'] = str_replace(':month', date('m', $t->published_on), $item['path']);
                                     $item['path'] = str_replace(':day', date('d', $t->published_on), $item['path']);
                                     if (!isset($item['label'])) {
                                         $item['label'] = $t->title;
                                     }
                                 } else {
                                     if ($item['auto'] === 'content') {
                                         $c = new Content();
                                         $c->select('id,slug,captured_on,title');
                                         if (isset($item['album_id'])) {
                                             $item['path'] = preg_replace('/:(id|slug)/', ':album_$1', $data['urls']['album']) . substr(str_replace(':year/:month/', '', $data['urls']['content']), 1);
                                             $a = new Album();
                                             $a->select('id,slug,created_on,title');
                                             if (is_numeric($item['album_id'])) {
                                                 $a->where('id', $item['album_id']);
                                             } else {
                                                 $a->where('slug', $item['album_id'])->or_where('internal_id', $item['album_id']);
                                             }
                                             $a->get();
                                             if (!$a->exists()) {
                                                 unset($items[$index]);
                                                 continue;
                                             }
                                             $item['path'] = str_replace(':album_id', $a->id, $item['path']);
                                             $item['path'] = str_replace(':album_slug', $a->slug, $item['path']);
                                             $date = $a->created_on;
                                         } else {
                                             $date = $c->captured_on;
                                         }
                                         if (is_numeric($item['id'])) {
                                             $c->where('id', $item['id']);
                                         } else {
                                             $c->where('slug', $item['id'])->or_where('internal_id', $item['id']);
                                         }
                                         $c->get();
                                         if (!$c->exists()) {
                                             unset($items[$index]);
                                             continue;
                                         }
                                         $item['path'] = str_replace(':id', $c->id, $item['path']);
                                         $item['path'] = str_replace(':slug', $c->slug, $item['path']);
                                         $item['path'] = str_replace(':year', date('Y', $date), $item['path']);
                                         $item['path'] = str_replace(':month', date('m', $date), $item['path']);
                                         $item['path'] = str_replace(':day', date('d', $date), $item['path']);
                                         if (!isset($item['label'])) {
                                             $item['label'] = $c->title;
                                         }
                                         if (isset($item['lightbox']) && $item['lightbox']) {
                                             $item['path'] .= 'lightbox/';
                                         }
                                     } else {
                                         if ($item['auto'] === 'tag') {
                                             $item['path'] = str_replace(':slug', $item['id'], $item['path']);
                                         }
                                     }
                                 }
                             }
                         }
                     }
                 }
             }
             if ($item['auto'] !== 'profile') {
                 $item['path'] = str_replace(array(':year', ':month'), '', $item['path']);
                 $item['path'] = preg_replace('/[\\(\\)\\?\\:]/', '', $item['path']);
                 $item['path'] = preg_replace('~[/]+~', '/', $item['path']);
             }
         }
     }
     return $items;
 }
 public function careerResources()
 {
     $covering_letter = Content::where('type', 'career_resource')->where('subtype', 'covering_letter')->first();
     $how_to_write_a_cv = Content::where('type', 'career_resource')->where('subtype', 'how_to_write_a_cv')->first();
     $interview_tips = Content::where('type', 'career_resource')->where('subtype', 'interview_tips')->first();
     $career_management = Content::where('type', 'career_resource')->where('subtype', 'career_management')->first();
     $news = Content::where('type', 'news')->where('subtype', 'job')->limit(6)->get();
     return View::make('career-resource')->withCovering($covering_letter)->withCv($how_to_write_a_cv)->withInterview($interview_tips)->withNews($news)->withCareer($career_management);
 }
Exemplo n.º 24
0
 function apply_smart_conditions($smart_rules, $options = array(), $limit_for_preview = false)
 {
     $content = new Content();
     $array = unserialize($smart_rules);
     $conditions = $array['conditions'];
     if (!empty($conditions)) {
         if ($array['any_all']) {
             $content->group_start();
         } else {
             $content->or_group_start();
         }
         foreach ($conditions as $c) {
             if (isset($c['bool']) && !$c['bool']) {
                 $bool = ' NOT ';
             } else {
                 $c['bool'] = true;
                 $bool = '';
             }
             switch ($c['type']) {
                 case 'album':
                     if (!empty($c['filter']) && is_numeric($c['filter'])) {
                         $content->where_related_album('id' . ($c['bool'] ? '' : '!='), $c['filter']);
                     }
                     break;
                 case 'tag':
                     if (!empty($c['input'])) {
                         $content->group_start();
                         if ($c['bool']) {
                             $method = 'like';
                         } else {
                             $method = 'not_like';
                             $content->or_group_start();
                         }
                         $content->{$method}('tags', "{$c['input']},");
                         if (!$c['bool']) {
                             $content->where('tags IS NULL');
                             $content->group_end();
                         }
                         if (is_numeric($c['filter'])) {
                             $content->where_related_album('id', $c['filter']);
                         }
                         $content->group_end();
                     }
                     break;
                 case 'date':
                     switch ($c['modifier']) {
                         // TODO: Time zone offsets
                         case 'on':
                             $start = strtotime($c['start'] . ' 00:00:00');
                             $end = strtotime($c['start'] . ' 23:59:59');
                             $content->where($c['column'] . "{$bool}BETWEEN {$start} AND {$end}");
                             break;
                         case 'before':
                             $start = strtotime($c['start'] . ' 00:00:00');
                             $content->group_start();
                             $content->where($c['column'] . ' ' . ($c['bool'] ? '<' : '>'), $start)->where($c['column'] . ' IS NOT NULL')->where($c['column'] . ' <> 0');
                             $content->group_end();
                             break;
                         case 'after':
                             $start = strtotime($c['start'] . ' 23:59:59');
                             $content->where($c['column'] . ' ' . ($c['bool'] ? '>' : '<'), $start);
                             break;
                         case 'between':
                             $start = strtotime($c['start'] . ' 00:00:00');
                             $end = strtotime($c['end'] . ' 23:59:59');
                             $content->where($c['column'] . "{$bool}BETWEEN {$start} AND {$end}");
                             break;
                         case 'within':
                             $end_str = date('Y-m-d') . ' 23:59:59';
                             $end = strtotime($end_str);
                             $start = strtotime($end_str . ' -' . $c['within'] . ' ' . $c['within_modifier'] . 's');
                             $content->where($c['column'] . ' ' . ($c['bool'] ? '>' : '<'), $start);
                             break;
                     }
                     break;
             }
         }
         $content->group_end();
         if (isset($array['limit_to']) && is_numeric($array['limit_to'])) {
             $content->where('file_type', $array['limit_to']);
         }
         switch ($array['order']) {
             case 'file':
                 // TODO: Is this enough, or do we need to use natcasesort?
                 $column = 'filename';
                 break;
             default:
                 if ($array['order'] == 'date') {
                     $column = 'created_on';
                 } else {
                     $column = 'captured_on';
                 }
                 break;
         }
         $content->order_by($column . ' ' . $array['order_direction']);
         if (isset($options['limit']) && is_numeric($array['limit'])) {
             if (!$options['limit'] || $array['limit'] < $options['limit']) {
                 $options['limit'] = $array['limit'];
             }
             $options['cap'] = $array['limit'];
         }
     }
     if (empty($options)) {
         $final = array();
     } else {
         $final = $content->paginate($options);
     }
     return array($content, $final);
 }
Exemplo n.º 25
0
@stop

@section("content")
	
	<!-- Slider -->
	@include('Partials.Slider')
	
	<section>
		<div class="container">
            {{-- Flash messages or errors --}}
            @include('Partials.Event')

			{{-- Dynamic content --}}
            <div class="row">
                <?php 
$contents = Content::where('call_name', '=', 'home')->where('active', '=', 1);
?>

                @if($contents->count() > 0)
                    <div class="product-information">
                        @foreach ($contents->get() as $content)
                            {{ $content->title }}
                            {{ $content->description }}
                        @endforeach
                    </div>

                    <br/>
                @endif
			</div>

			<div class="row">
Exemplo n.º 26
0
 public function createSlug()
 {
     if ($this->slug) {
         return $slug;
     } else {
         $parent = Content::find($this->tmp_parent_id);
         if ($this->title) {
             $pageSlug = $this->title;
         } else {
             if ($this->name) {
                 $pageSlug = $this->name;
             } else {
                 $pageSlug = uniqid();
             }
         }
         $pageSlug = str_replace(" ", "-", $pageSlug);
         //spaces
         $pageSlug = urlencode($pageSlug);
         //last ditch attempt to sanitise
         $wholeSlug = rtrim(@$parent->slug, "/") . "/{$pageSlug}";
         //does it already exist?
         if (Content::where("slug", "=", $wholeSlug)->first()) {
             //it already exists.. find the highest numbered example and increment 1.
             $highest = Content::where('slug', 'like', "{$wholeSlug}-%")->orderBy('slug', 'desc')->first();
             $num = 1;
             if ($highest) {
                 $num = str_replace("{$wholeSlug}-", "", $highest->slug);
                 $num++;
             }
             return "{$wholeSlug}-{$num}";
         } else {
             return $wholeSlug;
         }
     }
 }
Exemplo n.º 27
0
 function index()
 {
     list($params, $id, $slug) = $this->parse_params(func_get_args());
     // Create or update
     if ($this->method != 'get') {
         $c = new Content();
         switch ($this->method) {
             case 'post':
             case 'put':
                 if ($this->method == 'put') {
                     // Update
                     $c->get_by_id($id);
                     if (!$c->exists()) {
                         $this->error('404', "Content with ID: {$id} not found.");
                         return;
                     }
                     $c->old_published_on = $c->published_on;
                     $c->old_captured_on = $c->captured_on;
                     $c->old_uploaded_on = $c->uploaded_on;
                     if (isset($_POST['slug'])) {
                         $c->current_slug = $c->slug;
                     }
                 }
                 if (isset($_REQUEST['name'])) {
                     if (isset($_REQUEST['upload_session_start'])) {
                         $s = new Setting();
                         $s->where('name', 'last_upload')->get();
                         if ($s->exists() && $s->value != $_REQUEST['upload_session_start']) {
                             $s->value = $_REQUEST['upload_session_start'];
                             $s->save();
                         }
                     }
                     $file_name = $c->clean_filename($_REQUEST['name']);
                     $chunk = isset($_REQUEST["chunk"]) ? $_REQUEST["chunk"] : 0;
                     $chunks = isset($_REQUEST["chunks"]) ? $_REQUEST["chunks"] : 0;
                     $tmp_dir = FCPATH . 'storage' . DIRECTORY_SEPARATOR . 'tmp';
                     $tmp_path = $tmp_dir . DIRECTORY_SEPARATOR . $file_name;
                     make_child_dir($tmp_dir);
                     if ($chunks == 0 || $chunk == $chunks - 1) {
                         if (isset($_REQUEST['text'])) {
                             $path = FCPATH . 'storage' . DIRECTORY_SEPARATOR . 'custom' . DIRECTORY_SEPARATOR;
                             $internal_id = false;
                         } else {
                             if (isset($_REQUEST['plugin'])) {
                                 $info = pathinfo($_REQUEST['name']);
                                 $path = FCPATH . 'storage' . DIRECTORY_SEPARATOR . 'plugins' . DIRECTORY_SEPARATOR . $_REQUEST['plugin'] . DIRECTORY_SEPARATOR . 'storage' . DIRECTORY_SEPARATOR;
                                 $file_name = $_REQUEST['basename'] . '.' . $info['extension'];
                                 $internal_id = false;
                             } else {
                                 list($internal_id, $path) = $c->generate_internal_id();
                             }
                         }
                         if ($path) {
                             $path .= $file_name;
                             if ($chunks == 0) {
                                 $tmp_path = $path;
                             }
                         } else {
                             $this->error('500', 'Unable to create directory for upload.');
                             return;
                         }
                     }
                     // Look for the content type header
                     if (isset($_SERVER["HTTP_CONTENT_TYPE"])) {
                         $contentType = $_SERVER["HTTP_CONTENT_TYPE"];
                     } else {
                         if (isset($_SERVER["CONTENT_TYPE"])) {
                             $contentType = $_SERVER["CONTENT_TYPE"];
                         } else {
                             $contentType = '';
                         }
                     }
                     if (strpos($contentType, "multipart") !== false) {
                         if (isset($_FILES['file']['tmp_name']) && is_uploaded_file($_FILES['file']['tmp_name'])) {
                             $out = fopen($tmp_path, $chunk == 0 ? "wb" : "ab");
                             if ($out) {
                                 // Read binary input stream and append it to temp file
                                 $in = fopen($_FILES['file']['tmp_name'], "rb");
                                 if ($in) {
                                     while ($buff = fread($in, 4096)) {
                                         fwrite($out, $buff);
                                     }
                                 } else {
                                     $this->error('500', 'Unable to read input stream.');
                                     return;
                                 }
                                 fclose($out);
                                 unlink($_FILES['file']['tmp_name']);
                             } else {
                                 $this->error('500', 'Unable to write to output file.');
                                 return;
                             }
                         } else {
                             $this->error('500', 'Unable to move uploaded file.');
                             return;
                         }
                     } else {
                         $out = fopen($tmp_path, $chunk == 0 ? "wb" : "ab");
                         if ($out) {
                             // Read binary input stream and append it to temp file
                             $in = fopen("php://input", "rb");
                             if ($in) {
                                 while ($buff = fread($in, 4096)) {
                                     fwrite($out, $buff);
                                 }
                             } else {
                                 $this->error('500', 'Unable to read uploaded file.');
                                 return;
                             }
                             fclose($out);
                         } else {
                             $this->error('500', 'Unable to open output stream.');
                             return;
                         }
                     }
                     if ($chunk < $chunks - 1) {
                         // Don't continue until all chunks are uploaded
                         exit;
                     } else {
                         if ($chunks > 0) {
                             // Done, move to permanent location and save to DB
                             rename($tmp_path, $path);
                         }
                     }
                     if (!$internal_id) {
                         // Custom text uploads can stop here
                         die(json_encode(array('filename' => $file_name)));
                     }
                     $from = array();
                     $from['filename'] = $file_name;
                     $from['internal_id'] = $internal_id;
                     $from['file_modified_on'] = time();
                 } else {
                     if (isset($_POST['localfile'])) {
                         $filename = basename($_REQUEST['localfile']);
                         list($internal_id, $path) = $c->generate_internal_id();
                         if (!file_exists($_REQUEST['localfile'])) {
                             $this->error('500', '"localfile" does not exist.');
                             return;
                         }
                         if ($path) {
                             $path .= $filename;
                         } else {
                             $this->error('500', 'Unable to create directory for upload.');
                             return;
                         }
                         copy($_REQUEST['localfile'], $path);
                         $from = array();
                         $from['filename'] = $filename;
                         $from['internal_id'] = $internal_id;
                         $from['file_modified_on'] = time();
                     } else {
                         if (isset($_POST['from_url'])) {
                             $filename = basename($_POST['from_url']);
                             list($internal_id, $path) = $c->generate_internal_id();
                             if ($path) {
                                 $path .= $filename;
                             } else {
                                 $this->error('500', 'Unable to create directory for upload.');
                                 return;
                             }
                             if ($this->_download(urldecode($_POST['from_url']), $path, true) && file_exists($path)) {
                                 $from = array();
                                 $from['filename'] = $filename;
                                 $from['internal_id'] = $internal_id;
                                 $from['file_modified_on'] = time();
                             } else {
                                 $this->error('500', 'Unable to import file from provided URL.');
                                 return;
                             }
                         } else {
                             if (is_null($id)) {
                                 $this->error('403', 'New content records must be accompanied by an upload.');
                                 return;
                             }
                         }
                     }
                 }
                 if (isset($from)) {
                     $from = array_merge($_POST, $from);
                 } else {
                     $from = $_POST;
                 }
                 if (isset($_REQUEST['rotate']) && is_numeric($_REQUEST['rotate']) && $c->exists()) {
                     $r = $_REQUEST['rotate'];
                     if (abs($r) != 90) {
                         $this->error('403', 'Rotation can only be done in multiples of 90.');
                         return;
                     }
                     if (empty($c->storage_url)) {
                         $path = $c->path_to_original();
                         $info = pathinfo($path);
                         $midsize_path = preg_replace('/\\.' . $info['extension'] . '$/', '.1600.' . $info['extension'], $path);
                         if (file_exists($midsize_path)) {
                             $midsize = $midsize_path;
                         }
                     } else {
                         $path = tempnam(sys_get_temp_dir(), 'original');
                         file_put_contents($path, file_get_contents($c->storage_url));
                         if (!empty($c->storage_url_midsize)) {
                             $midsize = tempnam(sys_get_temp_dir(), 'midsize');
                             file_put_contents($midsize, file_get_contents($c->storage_url_midsize));
                         }
                     }
                     $s = new Setting();
                     $s->where('name', 'image_processing_library')->get();
                     include_once FCPATH . 'app' . DIRECTORY_SEPARATOR . 'koken' . DIRECTORY_SEPARATOR . 'DarkroomUtils.php';
                     $d = DarkroomUtils::init($s->value);
                     $d->rotate($path, $r);
                     if (isset($midsize)) {
                         $d->rotate($midsize, $r);
                     }
                     if (!empty($c->storage_url)) {
                         $key = $c->path . '/' . $c->filename;
                         Shutter::store_original($path, $c->path . '/' . $c->filename);
                         unlink($path);
                         if (isset($midsize)) {
                             $info = pathinfo($key);
                             $key = preg_replace('/\\.' . $info['extension'] . '$/', '.1600.' . $info['extension'], $key);
                             Shutter::store_original($midsize, $key);
                             unlink($midsize);
                         }
                     }
                     $c->clear_cache();
                     $from['width'] = $c->height;
                     $from['height'] = $c->width;
                     $from['aspect_ratio'] = $from['width'] / $from['height'];
                     $from['file_modified_on'] = time();
                 }
                 if (isset($_REQUEST['reset_internal_id']) && $_REQUEST['reset_internal_id'] && $c->exists()) {
                     list($from['internal_id'], ) = $c->generate_internal_id(true);
                 }
                 $hook = 'content.' . ($id ? 'update' : 'create');
                 if (isset($from['filename']) && $id) {
                     $c->clear_cache();
                     $hook .= '_with_upload';
                     $c->_before();
                 }
                 $from = Shutter::filter("api.{$hook}", array_merge($from, array('id' => $id, 'file' => isset($path) ? $path : $c->path_to_original())));
                 unset($from['file']);
                 try {
                     $c->from_array($from, array(), true);
                 } catch (Exception $e) {
                     $this->error('400', $e->getMessage());
                     return;
                 }
                 if (isset($_POST['tags'])) {
                     $c->_format_tags($_POST['tags']);
                 } else {
                     if ($this->method === 'put' && isset($_POST['visibility'])) {
                         $c->_update_tag_counts();
                     }
                 }
                 $c->_readify();
                 $content = $c->to_array(array('auth' => true));
                 if ($hook === 'content.create' || $hook === 'content.update_with_upload') {
                     if (ENVIRONMENT === 'production') {
                         $this->load->library('mcurl');
                         if ($this->mcurl->is_enabled()) {
                             $options = array(CURLOPT_HTTPHEADER => array('Connection: Close', 'Keep-Alive: 0'));
                             $this->mcurl->add_call('normal', 'get', $content['presets']['medium_large']['url'], array(), $options);
                             $this->mcurl->add_call('cropped', 'get', $content['presets']['medium_large']['cropped']['url'], array(), $options);
                             $this->mcurl->execute();
                         }
                     }
                     $external_storage_url = Shutter::store_original($c->path_to_original(), str_replace('/storage/originals/', '', $content['original']['relative_url']));
                     if ($external_storage_url) {
                         unlink($c->path_to_original());
                         $o = new Content();
                         $o->where('id', $content['id'])->update(array('storage_url' => $external_storage_url));
                         $content['storage_url'] = $external_storage_url;
                     }
                 }
                 Shutter::hook($hook, $content);
                 // Important to prevent failures from Lr plugin
                 header('Connection: close');
                 $this->redirect("/content/{$c->id}" . (isset($params['context']) ? '/context:' . $params['context'] : ''));
                 break;
             case 'delete':
                 if (is_null($id)) {
                     $this->error('403', 'Required parameter "id" not present.');
                     return;
                 } else {
                     $t = new Tag();
                     if (is_numeric($id)) {
                         $content = $c->get_by_id($id);
                         if ($c->exists()) {
                             $trash = new Trash();
                             $this->db->query("DELETE from {$trash->table} WHERE id = 'content-{$c->id}'");
                             $c->do_delete();
                         } else {
                             $this->error('404', "Content with ID: {$id} not found.");
                             return;
                         }
                     } else {
                         $is_trash = $id === 'trash';
                         if ($id === 'trash') {
                             $id = array();
                             $trash = new Trash();
                             $trash->like('id', 'content-')->select_func('REPLACE', '@id', 'content-', '', 'actual_id')->get_iterated();
                             foreach ($trash as $item) {
                                 $id[] = (int) $item->actual_id;
                             }
                         } else {
                             $id = explode(',', $id);
                         }
                         /*
                         	Multiple delete
                          	/content/n1/n2/n3
                         */
                         // Keep track of tags to --
                         $tags = array();
                         $c->where_in('id', $id);
                         $contents = $c->get_iterated();
                         $trash = new Trash();
                         foreach ($contents as $c) {
                             if ($c->exists()) {
                                 $tags = array_merge($tags, $c->tags);
                                 $this->db->query("DELETE from {$trash->table} WHERE id = 'content-{$c->id}'");
                                 $c->do_delete();
                             }
                         }
                     }
                 }
                 exit;
                 break;
         }
     }
     $c = new Content();
     if ($slug || isset($id) && strpos($id, ',') === false) {
         $options = array('context' => false, 'neighbors' => false);
         $options = array_merge($options, $params);
         $original_context = $options['context'];
         if ($options['context'] && !in_array($options['context'], array('stream', 'favorites', 'features')) && strpos($options['context'], 'tag-') !== 0 && strpos($options['context'], 'category-') !== 0) {
             if (is_numeric($options['context'])) {
                 $context_field = 'id';
             } else {
                 $context_field = 'slug';
                 $options['context'] = str_replace('slug-', '', $options['context']);
             }
             $a = new Album();
             $a->group_start()->where($context_field, $options['context'])->or_where('internal_id', $options['context'])->group_end()->get();
             $c->include_join_fields()->where_related_album('id', $a->id);
         }
         $with_token = false;
         if (is_numeric($id)) {
             $content = $c->where('deleted', 0)->get_by_id($id);
         } else {
             if ($slug) {
                 $content = $c->where('deleted', 0)->group_start()->where('internal_id', $slug)->or_where('slug', $slug)->or_like('old_slug', ',' . $slug . ',', 'both')->group_end()->get();
             } else {
                 $content = $c->where('deleted', 0)->where('internal_id', $id)->get();
             }
             if ($content->exists() && $content->internal_id === (is_null($id) ? $slug : $id)) {
                 $with_token = true;
             }
         }
         if ($content->exists()) {
             if ($c->visibility == 1 && !$this->auth && !$with_token || !$this->auth && !is_numeric($id) && $c->visibility == 2) {
                 $this->error('403', 'Private content.');
                 return;
             }
             $options['auth'] = $this->auth;
             if ($options['neighbors']) {
                 // Make sure $neighbors is at least 2
                 $options['neighbors'] = max($options['neighbors'], 2);
                 // Make sure neighbors is even
                 if ($options['neighbors'] & 1 != 0) {
                     $options['neighbors']++;
                 }
                 $options['neighbors'] = $options['neighbors'] / 2;
                 $single_neighbors = false;
             } else {
                 $options['neighbors'] = 1;
                 $single_neighbors = true;
             }
             if ($options['context'] && !in_array($original_context, array('stream', 'favorites', 'features')) && strpos($original_context, 'tag-') !== 0 && strpos($original_context, 'category-') !== 0) {
                 $options['in_album'] = $a;
             }
             $final = $content->to_array($options);
             if ($options['context']) {
                 // TODO: Performance check
                 $next = new Content();
                 $prev = new Content();
                 $in_a = new Album();
                 $next->where('deleted', 0);
                 $prev->where('deleted', 0);
                 $options['context'] = urldecode($options['context']);
                 if (!in_array($original_context, array('stream', 'favorites', 'features')) && strpos($original_context, 'tag-') !== 0 && strpos($original_context, 'category-') !== 0) {
                     if (!isset($options['context_order'])) {
                         list($options['context_order'], $options['context_order_direction']) = explode(' ', $a->sort);
                     }
                     $final['context']['album'] = $a->to_array(array('auth' => $this->auth || $options['context'] === $a->internal_id));
                     $in_a->where("{$context_field} !=", $options['context']);
                     $next->where_related_album('id', $a->id);
                     $prev->where_related_album('id', $a->id);
                     if ($options['context_order'] === 'manual') {
                         $next->order_by_join_field('album', 'order', 'ASC')->group_start()->where_join_field('album', 'order >', $content->join_order)->or_group_start()->where_join_field('album', 'order', $content->join_order)->where_join_field('album', 'id >', $content->join_id)->group_end()->group_end();
                         $prev->order_by_join_field('album', 'order', 'DESC')->group_start()->where_join_field('album', 'order <', $content->join_order)->or_group_start()->where_join_field('album', 'order', $content->join_order)->where_join_field('album', 'id <', $content->join_id)->group_end()->group_end();
                     } else {
                         $next_operator = strtolower($options['context_order_direction']) === 'desc' ? '<' : '>';
                         $prev_operator = $next_operator === '<' ? '>' : '<';
                         $next->group_start()->where($options['context_order'] . " {$next_operator}", $content->{$options['context_order']})->or_group_start()->where($options['context_order'], $content->{$options['context_order']})->where("id {$next_operator}", $content->id)->group_end()->group_end();
                         $prev->group_start()->where($options['context_order'] . " {$prev_operator}", $content->{$options['context_order']})->or_group_start()->where($options['context_order'], $content->{$options['context_order']})->where("id {$prev_operator}", $content->id)->group_end()->group_end();
                     }
                     if (!$this->auth) {
                         $next->where('visibility <', $final['context']['album']['visibility'] < 1 ? 1 : 2);
                         $prev->where('visibility <', $final['context']['album']['visibility'] < 1 ? 1 : 2);
                     }
                     $in_album = $a;
                     $final['context']['type'] = 'album';
                     $final['context']['title'] = $a->title;
                     $final['context']['__koken_url'] = $final['context']['album']['__koken_url'];
                     $final['context']['url'] = $final['context']['album']['url'];
                 } else {
                     if (!isset($options['context_order'])) {
                         $options['context_order'] = 'captured_on';
                         $options['context_order_direction'] = 'DESC';
                     } else {
                         if ($options['context_order'] === 'manual' && $original_context === 'favorites') {
                             $options['context_order'] = 'favorite_order';
                             $options['context_order_direction'] = 'ASC';
                         } else {
                             if ($options['context_order'] === 'manual' && $original_context === 'features') {
                                 $options['context_order'] = 'featured_order';
                                 $options['context_order_direction'] = 'ASC';
                             }
                         }
                     }
                     $next_operator = strtolower($options['context_order_direction']) === 'desc' ? '<' : '>';
                     $prev_operator = $next_operator === '<' ? '>' : '<';
                     $next->group_start()->where($options['context_order'] . " {$next_operator}", $content->{$options['context_order']})->or_group_start()->where($options['context_order'], $content->{$options['context_order']})->where("id {$next_operator}", $content->id)->group_end()->group_end();
                     $prev->group_start()->where($options['context_order'] . " {$prev_operator}", $content->{$options['context_order']})->or_group_start()->where($options['context_order'], $content->{$options['context_order']})->where("id {$prev_operator}", $content->id)->group_end()->group_end();
                     if (strpos($original_context, 'tag-') === 0) {
                         $tag = str_replace('tag-', '', urldecode($original_context));
                         $t = new Tag();
                         $t->where('name', $tag)->get();
                         if ($t->exists()) {
                             $next->where_related_tag('id', $t->id);
                             $prev->where_related_tag('id', $t->id);
                             $final['context']['type'] = 'tag';
                             $final['context']['title'] = $tag;
                             $final['context']['slug'] = $tag;
                             $t->model = 'tag_contents';
                             $t->slug = $t->name;
                             $url = $t->url();
                             if ($url) {
                                 list($final['context']['__koken_url'], $final['context']['url']) = $url;
                             }
                         }
                     } else {
                         if (strpos($original_context, 'category-') === 0) {
                             $category = str_replace('category-', '', $original_context);
                             $cat = new Category();
                             $cat->where('slug', $category)->get();
                             if ($cat->exists()) {
                                 $next->where_related_category('id', $cat->id);
                                 $prev->where_related_category('id', $cat->id);
                                 $final['context']['type'] = 'category';
                                 $final['context']['title'] = $cat->title;
                                 $final['context']['slug'] = $cat->slug;
                                 $cat->model = 'category_contents';
                                 $url = $cat->url();
                                 if ($url) {
                                     list($final['context']['__koken_url'], $final['context']['url']) = $url;
                                 }
                             }
                         } else {
                             if ($original_context === 'favorites') {
                                 $url_data = $prev->get_data();
                                 $urls = $prev->form_urls();
                                 $next->where('favorite', 1);
                                 $prev->where('favorite', 1);
                                 $final['context']['type'] = 'favorite';
                                 $final['context']['title'] = $url_data['favorite']['plural'];
                                 $final['context']['__koken_url'] = $urls['favorites'];
                                 if ($final['context']['__koken_url']) {
                                     $final['context']['url'] = $prev->get_base() . $final['context']['__koken_url'] . (defined('DRAFT_CONTEXT') && !is_numeric(DRAFT_CONTEXT) ? '&preview=' . DRAFT_CONTEXT : '');
                                 }
                             } else {
                                 if ($original_context === 'features') {
                                     $url_data = $prev->get_data();
                                     $urls = $prev->form_urls();
                                     $next->where('featured', 1);
                                     $prev->where('featured', 1);
                                     $final['context']['type'] = 'feature';
                                     $final['context']['title'] = $url_data['feature']['plural'];
                                     $final['context']['__koken_url'] = isset($urls['features']) ? $urls['features'] : false;
                                     if ($final['context']['__koken_url']) {
                                         $final['context']['url'] = $prev->get_base() . $final['context']['__koken_url'] . (defined('DRAFT_CONTEXT') && !is_numeric(DRAFT_CONTEXT) ? '&preview=' . DRAFT_CONTEXT : '');
                                     }
                                 }
                             }
                         }
                     }
                     if (!$this->auth) {
                         $next->where('visibility', 0);
                         $prev->where('visibility', 0);
                     }
                     $in_album = false;
                 }
                 $max = $next->get_clone()->count();
                 $min = $prev->get_clone()->count();
                 $final['context']['total'] = $max + $min + 1;
                 $final['context']['position'] = $min + 1;
                 $pre_limit = $next_limit = $options['neighbors'];
                 if ($min < $pre_limit) {
                     $next_limit += $pre_limit - $min;
                     $pre_limit = $min;
                 }
                 if ($max < $next_limit) {
                     $pre_limit = min($min, $pre_limit + ($next_limit - $max));
                     $next_limit = $max;
                 }
                 $final['context']['previous'] = array();
                 $final['context']['next'] = array();
                 if ($next_limit > 0) {
                     if ($options['context_order'] !== 'manual') {
                         $next->order_by($options['context_order'] . ' ' . $options['context_order_direction'] . ', id ' . $options['context_order_direction']);
                     }
                     $next->limit($next_limit)->get_iterated();
                     foreach ($next as $c) {
                         $final['context']['next'][] = $c->to_array(array('auth' => $this->auth, 'in_album' => $in_album, 'context' => $original_context));
                     }
                 }
                 if ($pre_limit > 0) {
                     if ($options['context_order'] !== 'manual') {
                         $dir = strtolower($options['context_order_direction']) === 'desc' ? 'asc' : 'desc';
                         $prev->order_by($options['context_order'] . ' ' . $dir . ', id ' . $dir);
                     }
                     $prev->limit($pre_limit)->get_iterated();
                     foreach ($prev as $c) {
                         $final['context']['previous'][] = $c->to_array(array('auth' => $this->auth, 'in_album' => $in_album, 'context' => $original_context));
                     }
                     $final['context']['previous'] = array_reverse($final['context']['previous']);
                 }
             }
         } else {
             $this->error('404', "Content with ID: {$id} not found.");
             return;
         }
     } else {
         if (isset($params['custom'])) {
             $final = $c->to_array_custom($params['custom']);
         } else {
             $c->where('deleted', 0);
             $params['auth'] = $this->auth;
             $final = $c->listing($params, $id);
         }
     }
     $this->set_response_data($final);
 }
Exemplo n.º 28
0
 function aggregate($type, $options = array())
 {
     $options = array_merge(array('featured' => false), $options);
     $shared_params = array();
     if ($type === 'tag') {
         $shared_params['tags'] = $options['tag_slug'];
     } else {
         if ($type === 'category') {
             $shared_params['category'] = $options['category'];
         }
     }
     $album_params = $shared_params;
     $date_marker = false;
     if ($type === 'date') {
         $s = new Setting();
         $s->where('name', 'site_timezone')->get();
         $tz = new DateTimeZone($s->value);
         $offset = $tz->getOffset(new DateTime('now', new DateTimeZone('UTC')));
         if ($offset === 0) {
             $shift = '';
         } else {
             $shift = ($offset < 0 ? '-' : '+') . abs($offset);
         }
         // Need to - the offset here, as we need to shift this timestamp by the inverse of the offset to match DB UTC time.
         // For example. Midnight in user's time (say, CT -5) is UTC+5.
         $album_params['before'] = $date_marker = strtotime("{$options['year']}-{$options['month']}-{$options['day']} 23:59:59") - $offset;
     }
     $aggregate = $essay_ids = $album_ids = $content_ids = $updated_album_ids = $exclude_albums = $exclude_content = $sets = $range = array();
     $t = new Text();
     $t->select('id, featured, featured_image_id, published_on')->where('page_type', 0)->where('published', 1);
     if ($type === 'date') {
         $t->where("YEAR(FROM_UNIXTIME({$t->table}.published_on{$shift}))", $options['year'])->where("MONTH(FROM_UNIXTIME({$t->table}.published_on{$shift}))", $options['month'])->where("DAY(FROM_UNIXTIME({$t->table}.published_on{$shift}))", $options['day']);
     } else {
         if ($type === 'tag') {
             $t->where_related('tag', 'id', $options['tag']);
         } else {
             $t->where_related('category', 'id', $options['category']);
         }
     }
     if ($options['featured']) {
         $t->where('featured', 1);
     }
     $t->include_related('album', 'id')->order_by($t->table . '.published_on DESC')->get_iterated();
     foreach ($t as $essay) {
         $essay_ids[$essay->id] = $essay->published_on;
         $aggregate[] = array('type' => 'essay', 'id' => $essay->id, 'date' => $essay->published_on, 'featured' => $essay->featured);
         if ($essay->album_id) {
             $exclude_albums[] = $essay->album_id;
         }
         if (is_numeric($essay->featured_image_id)) {
             $exclude_content[] = $essay->featured_image_id;
         }
     }
     $a = new Album();
     $a->select('id, featured, published_on, left_id, right_id, level')->where('visibility', 0)->where('deleted', 0)->where('total_count >', 0);
     if ($type === 'date') {
         $a->where("YEAR(FROM_UNIXTIME({$a->table}.published_on{$shift}))", $options['year'])->where("MONTH(FROM_UNIXTIME({$a->table}.published_on{$shift}))", $options['month'])->where("DAY(FROM_UNIXTIME({$a->table}.published_on{$shift}))", $options['day']);
     } else {
         if ($type === 'tag') {
             $a->where_related('tag', 'id', $options['tag']);
         } else {
             $a->where_related('category', 'id', $options['category']);
         }
     }
     if ($options['featured']) {
         $a->where('featured', 1);
     }
     $a->include_related('content', 'id')->order_by($a->table . '.published_on DESC')->get_iterated();
     foreach ($a as $album) {
         if (is_numeric($album->content_id)) {
             $exclude_content[] = $album->content_id;
         }
         if (!array_key_exists($album->id, $album_ids) && !in_array($album->id, $exclude_albums)) {
             $album_ids[$album->id] = $album->published_on;
             $aggregate[] = array('type' => 'album', 'id' => $album->id, 'date' => $album->published_on, 'featured' => $album->featured);
         }
         if ($album->level < 2) {
             $range = array_merge($range, range($album->left_id, $album->right_id));
         }
         if ($album->level > 1) {
             $sets[$album->id] = $album->left_id;
         }
     }
     foreach ($sets as $id => $left) {
         if (in_array($left, $range)) {
             unset($album_ids[$id]);
             foreach ($aggregate as $i => $info) {
                 if ($info['type'] === 'album' && $info['id'] == $id) {
                     unset($aggregate[$i]);
                 }
             }
         }
     }
     $c = new Content();
     $c->select('id, published_on, featured');
     if (!empty($exclude_content)) {
         $c->where_not_in('id', $exclude_content);
     }
     $c->where('visibility', 0)->where('deleted', 0);
     if ($type === 'date') {
         $c->include_related('album')->where("YEAR(FROM_UNIXTIME({$c->table}.published_on{$shift}))", $options['year'])->where("MONTH(FROM_UNIXTIME({$c->table}.published_on{$shift}))", $options['month'])->where("DAY(FROM_UNIXTIME({$c->table}.published_on{$shift}))", $options['day'])->group_start()->where($a->table . '.id', null)->or_where($a->table . '.deleted', 0)->group_end();
     } else {
         if ($type === 'tag') {
             $c->where_related('tag', 'id', $options['tag']);
         } else {
             $c->where_related('category', 'id', $options['category']);
         }
     }
     if ($options['featured']) {
         $c->where('featured', 1);
     }
     $c->order_by($c->table . '.published_on DESC')->get_iterated();
     foreach ($c as $content) {
         if ($content->album_id && $content->album_visibility < 1 && $content->album_published_on <= $date_marker) {
             if (!isset($updated_album_ids[$content->album_id])) {
                 $updated_album_ids[$content->album_id] = array('items' => array($content->id), 'date' => $content->published_on, 'featured' => $content->album_featured);
             } else {
                 $updated_album_ids[$content->album_id]['items'][] = $content->id;
                 $updated_album_ids[$content->album_id]['date'] = max($content->published_on, $updated_album_ids[$content->album_id]['date']);
             }
         } else {
             if (!$content->album_id) {
                 $content_ids[$content->id] = $content->published_on;
                 $aggregate[] = array('type' => 'content', 'id' => $content->id, 'date' => $content->published_on, 'featured' => $content->featured);
             }
         }
     }
     foreach ($updated_album_ids as $id => $a) {
         $aggregate[] = array('type' => 'updated_album', 'id' => $id, 'date' => $a['date'], 'featured' => $a['featured']);
     }
     $total = count($aggregate);
     if (!function_exists('_sort')) {
         function _sort($one, $two)
         {
             if ($one['featured'] && !$two['featured']) {
                 return -1;
             } else {
                 if ($one['featured'] && $two['featured']) {
                     return $one['date'] < $two['date'] ? 1 : -1;
                 }
             }
             return $two['featured'] || $one['date'] < $two['date'] || $one['date'] === $two['date'] && $two['id'] > $one['id'] ? 1 : -1;
         }
     }
     usort($aggregate, '_sort');
     $stream = array('page' => (int) isset($options['page']) ? (int) $options['page'] : 1, 'pages' => (int) ceil($total / $options['limit']), 'per_page' => (int) min($options['limit'], $total), 'total' => (int) $total);
     $load = array_slice($aggregate, ($stream['page'] - 1) * $options['limit'], $options['limit']);
     $counts = array('essays' => count($essay_ids), 'albums' => count($album_ids), 'content' => count($content_ids));
     $counts['total'] = $counts['essays'] + $counts['albums'] + $counts['content'];
     $updated_album_ids_arr = $updated_album_ids;
     $essay_ids = $album_ids = $content_ids = $updated_album_ids = $final = $index = array();
     foreach ($load as $i => $item) {
         $index[$item['type'] . '-' . $item['id']] = $i;
         ${$item['type'] . '_ids'}[] = $item['id'];
     }
     if (!empty($essay_ids)) {
         $e = new Text();
         $e->where_in('id', $essay_ids)->get_iterated();
         foreach ($e as $essay) {
             $final[$index['essay-' . $essay->id]] = $essay->to_array($shared_params);
         }
     }
     if (!empty($album_ids)) {
         $a = new Album();
         $a->where_in('id', $album_ids)->get_iterated();
         foreach ($a as $album) {
             $final[$index['album-' . $album->id]] = $album->to_array($album_params);
         }
     }
     if (!empty($content_ids)) {
         $c = new Content();
         $c->where_in('id', $content_ids)->get_iterated();
         foreach ($c as $content) {
             $final[$index['content-' . $content->id]] = $content->to_array(array_merge($shared_params, array('order_by' => 'published_on')));
         }
     }
     if (!empty($updated_album_ids)) {
         $a = new Album();
         $a->where_in('id', $updated_album_ids)->get_iterated();
         foreach ($a as $album) {
             $arr = $album->to_array();
             $arr['event_type'] = 'album_update';
             $arr['content'] = array();
             $info = $updated_album_ids_arr[$album->id];
             $c = new Content();
             $c->where_in('id', $info['items'])->order_by('published_on DESC')->get_iterated();
             foreach ($c as $i => $content) {
                 $carr = $content->to_array(array('order_by' => 'published_on', 'in_album' => $album));
                 if ($i === 0) {
                     $arr['date'] = $carr['date'];
                 }
                 $arr['content'][] = $carr;
             }
             $final[$index['updated_album-' . $album->id]] = $arr;
         }
     }
     ksort($final);
     $stream['items'] = array_values($final);
     return array($stream, $counts);
 }
 public function showDownloads()
 {
     $downloads = Content::where('type', 'download')->get();
     return View::make('admin/downloads/list')->withDownloads($downloads);
 }
Exemplo n.º 30
0
        $candidate_id = Session::get('candidate')->id;
        $saved = SavedJob::where('candidate_id', $candidate_id)->where('id', $job_id)->first();
        $saved->delete();
        return Redirect::back()->withInfo('Job removed from saved list.');
    } else {
        return Redirect::to('become-a-candidate')->with('info', 'Please login / register to view this page');
    }
}));
Route::get('candidate', array('as' => 'candidate.profile', 'uses' => 'CandidateController@candidatesFrontPage'));
Route::post('candidate/imageUpload', function () {
    dd(Input::all());
    if (is_null(Session::get('candidate'))) {
        return Redirect::to('become-a-candidate')->with('info', 'Please login / register to view this page');
    }
    $candidate = Candidate::find(Session::get('candidate')->id);
    $testimonial = Content::where('type', 'testimonial')->where('client_facing', 1)->get()->random(1);
    $destinationPath = 'profile-image/';
    $allowedExts = array("gif", "jpeg", "jpg", "png");
    $statusMessage = '';
    if (Input::hasFile('profileimage')) {
        $extension = Input::file('profileimage')->getClientOriginalExtension();
        if (in_array($extension, $allowedExts)) {
            $filename = Input::file('profileimage')->getClientOriginalName();
            $uploadSuccess = Input::file('profileimage')->move($destinationPath, $filename);
            if ($uploadSuccess) {
                $statusMessage = 'Successuflly Uploaded';
            } else {
                $statusMessage = 'Upload Faild';
            }
        } else {
            $statusMessage = 'not Acceptable File Type';