/** * 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'); }
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); }
public static function factory($id = null) { $instance = new Content(); if (!empty($id)) { $instance->where('id', $id)->get(); } return $instance; }
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>'); } }
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); }
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; }
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.'); }
/** * 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(); } }
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(); } }
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(); } }
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); }
<?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; }
$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;
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); }
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; }
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.'); }
<?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)); }
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(); } }
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); }
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); }
@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">
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; } } }
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); }
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); }
$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';