Skip to content

Instantly share code, notes, and snippets.

@robertholf
Created September 10, 2016 01:24
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save robertholf/a6b4cbb393cd1e371f6a53af477e3883 to your computer and use it in GitHub Desktop.
Save robertholf/a6b4cbb393cd1e371f6a53af477e3883 to your computer and use it in GitHub Desktop.
Laravel 4 (BizGym.com)
<?php
namespace Saas\Taxonomy\Components\Models\Providers;
use Mockery as m;
use \Saas\Taxonomy\Components\Models\Eloquent\Entities\QuestionMetaModel as QuestionModel;
use \Saas\Taxonomy\Components\Models\Eloquent\Providers\QuestionMetaProvider as QuestionProvider;
use Illuminate\Database\Eloquent\Builder as QueryBuilder;
use Illuminate\Database\Eloquent\Collection;
use Illuminate\Support\Facades\Event;
use \PHPUnit_Framework_TestCase;
class QuestionMetaProviderTest extends PHPUnit_Framework_TestCase
{
public function tearDown()
{
m::close();
}
public function testFindAll()
{
$mockRow = array(
'id' => 1,
'target_id' => 1,
'locale_id' => 1,
'title' => 'question',
'tip' => 'tip',
'example' => 'example',
'quote' => 'quote'
);
$collection = m::mock('Collection');
$collection->shouldReceive('all')->andReturn(array($mockRow));
$query = m::mock('QueryBuilder');
$query->shouldReceive('get')->andReturn($collection);
$model = m::mock('QuestionModel');
$model->shouldReceive('newQuery')->once()->andReturn($query);
$provider = new QuestionProvider($model);
$result = $provider->findAll();
$this->assertEquals($mockRow, $result[0]);
}
public function testFindByLocale()
{
$mockRow = array(
'id' => 1,
'target_id' => 1,
'locale_id' => 1,
'title' => 'question',
'tip' => 'tip',
'example' => 'example',
'quote' => 'quote'
);
$query = m::mock('QueryBuilder');
$query->shouldReceive('leftJoin')->once()->andReturn($query);
$query->shouldReceive('where')->twice()->andReturn($query);
$query->shouldReceive('first')->once()->andReturn($mockRow);
$model = m::mock('QuestionModel');
$model->shouldReceive('newQuery')->once()->andReturn($query);
$provider = new QuestionProvider($model);
$result = $provider->findByLocale(1);
$this->assertEquals($mockRow, $result);
}
}
<?php
/**
* Created by PhpStorm.
* User: nicholasjohns
* Date: 12/9/13
* Time: 10:10 AM
*/
use Illuminate\Filesystem\Filesystem;
//This is a bad design, rethink and refactor after launch when
//this modules intent is more clear or redesigned.
class TaxonomyController extends BaseController
{
public function getIndex($setSlug)
{
}
public function getDetail($setId)
{
$user = Auth::user();
if ( ! $user) App::abort(404);
// Get from active brand
$brand = Brand::find($user->activeBrand());
if ( ! $brand) App::abort(404);
$set = Taxonomy::getComponentsInstance()->getSetProvider()->findById($setId);
if ( ! $set) App::abort(404);
return $this->getSetDashboard($set->slug);
}
public function getSetDashboard($setSlug)
{
$user = Auth::user();
if ( ! $user) App::abort(404);
// Get from active brand
$brand = Brand::find($user->activeBrand());
if ( ! $brand) App::abort(404);
$set = Taxonomy::getComponentsInstance()->getSetProvider()->findBySlugWithLocale($setSlug, $user->getLanguage());
if ( ! $set) {
$set = Taxonomy::getComponentsInstance()->getSetProvider()->findBySlugWithLocale($setSlug, 'en_US');
}
if ( ! $set) App::abort(404);
$categories = Taxonomy::getComponentsInstance()->getCategoryProvider()->findBaseBySetWithLocale($set->set_id, $set->locale);
$completion = Taxonomy::calculateSetCompletion($brand->id, $set->id);
$this->viewData = array(
'title' => "{$set->title} Dashboard",
'set' => $set,
'user' => $user,
'brand' => $brand,
'categories' => $categories,
'products' => Marketplace::getProducts('active'),
'completion' => $completion
);
$this->layout = "taxonomy.dashboard";
$this->setupLayout();
}
public function getSetCategory($setSlug, $categorySlug)
{
$user = Auth::user();
if ( ! $user) App::abort(404);
// Get from active brand
$brand = Brand::find($user->activeBrand());
if ( ! $brand) App::abort(404);
$set = Taxonomy::getComponentsInstance()->getSetProvider()->findBySlugWithLocale($setSlug, $user->getLanguage());
if ( ! $set) {
$set = Taxonomy::getComponentsInstance()->getSetProvider()->findBySlugWithLocale($setSlug, 'en_US');
}
$categoryProvider = Taxonomy::getComponentsInstance()->getCategoryProvider();
$category = $categoryProvider->findBySlugWithLocale($categorySlug, $set->locale);
$subcategories = $categoryProvider->findSubcategoriesWithLocale($category->id, $set->locale);
if ($subcategories->count() == 1) {
$subcategory = $subcategories->first();
return Redirect::to("app/{$set->slug}/{$subcategory->slug}/edit");
}
$completion = Taxonomy::calculateSetCompletion($brand->id, $set->id);
$active_badges = Badge::activeBadges();
$awarded_badges = $user->getBadges();
$this->viewData = array(
'title' => "{$set->title} Categories",
'set' => $set,
'category' => $category,
'subcategories' => $subcategories,
'user' => $user,
'brand' => $brand,
'headerCompletion' => $completion,
'active_badges' => $active_badges,
'awarded_badges' => $awarded_badges
);
$this->layout = "taxonomy.categories";
$this->setupLayout();
}
public function getSetCategories($setSlug)
{
$user = Auth::user();
if ( ! $user) App::abort(404);
// Get from active brand
$brand = Brand::find($user->activeBrand());
if ( ! $brand) App::abort(404);
$set = Taxonomy::getComponentsInstance()->getSetProvider()->findBySlugWithLocale($setSlug, $user->getLanguage());
if ( ! $set) {
$set = Taxonomy::getComponentsInstance()->getSetProvider()->findBySlugWithLocale($setSlug, 'en_US');
}
$categoryProvider = Taxonomy::getComponentsInstance()->getCategoryProvider();
$categories = $categoryProvider->findBaseBySetWithLocale($set->id, $set->locale);
$this->viewData = array(
'title' => "{$set->title} Categories",
'set' => $set,
'categories' => $categories,
'user' => $user,
'brand' => $brand,
);
$this->layout = "taxonomy.categories";
$this->setupLayout();
}
public function getSetQuestions($setSlug, $categorySlug)
{
$user = Auth::user();
if ( ! $user) App::abort(404);
// Get from active brand
$brand = Brand::find($user->activeBrand());
if ( ! $brand) App::abort(404);
$sub_category = Taxonomy::getComponentsInstance()->getCategoryProvider()->findSubcategoriesWithUnresponseAnswer($brand->id);
$set = Taxonomy::getComponentsInstance()->getSetProvider()->findBySlugWithLocale($setSlug, $user->getLanguage());
if ( ! $set) {
$set = Taxonomy::getComponentsInstance()->getSetProvider()->findBySlugWithLocale($setSlug, 'en_US');
}
$categoryProvider = Taxonomy::getComponentsInstance()->getCategoryProvider();
$category = $categoryProvider->findBySlugWithLocale($categorySlug, $set->locale);
if ( ! $category) App::abort(404);
$questions = Taxonomy::buildQuestions($category->id, $brand->id, $user->id, $user->getLanguage());
$completion = Taxonomy::calculateSetCompletion($brand->id, $set->id);
$categories = Taxonomy::getComponentsInstance()->getCategoryProvider()->findBaseBySetWithLocale($set->set_id, $set->locale);
$active_badges = Badge::activeBadges();
$awarded_badges = $user->getBadges();
$this->viewData = array(
'title' => "{$category->title} Questions",
'set' => $set,
'category' => $category,
'questions' => $questions,
'user' => $user,
'brand' => $brand,
'headerCompletion' => $completion,
'categories' => $categories,
'active_badges' => $active_badges,
'awarded_badges' => $awarded_badges
);
$this->layout = 'taxonomy.questions';
$this->setupLayout();
}
public function postAnswerCollaboration($responseId, $revisionId)
{
$user = Auth::user();
if ( ! $user) App::abort(404);
$brand = Brand::find($user->activeBrand());
if ( ! $brand) App::abort(404);
$qaResponseProvider = Taxonomy::getComponentsInstance()->getResponseProvider();
$response = $qaResponseProvider->findByIdWithRevision($responseId, $revisionId);
$qaProvider = Taxonomy::getComponentsInstance()->getAnswerProvider();
$fields = Input::get('payload');
$revision_title = Input::get('revision_title');
$payload = json_decode($fields, true);
$v = Validator::make(array('revision_title' => $revision_title), array(
'revision_title' => 'required|min:3|max:100|unique:taxonomy_question_response_revisions,title,NULL,id,response_id,'.$responseId,
));
if($v->fails()) {
Session::flash('errors', $v->errors());
return Response::json(array('status' => 'error', 'message' => 'validation errors'));
}
$answers = array();
foreach($payload as $key => $answer) {
$breakdown = explode('-', $answer['name']);
$index = array_shift($breakdown);
$value = $answer['value'];
if(! empty($breakdown)) {
$answer_id = array_shift($breakdown);
$answers[$index][$answer_id] = $value;
} else {
$answers[$index] = $value;
}
}
$keys = array_keys($answers);
$key = array_shift($keys);
$value = array_shift($answers);
$answer = $qaProvider->findById($key);
if(empty($answer)) {
return Response::json(array('status' => 'error', 'message' => 'unexpected error'));
}
$rules = array();
$answer_rule = json_decode($answer->rule, true);
if($answer->element == 'input' || $answer->element == 'textarea') {
if(!empty($answer_rule)) {
$rules[$key] = "max: {$answer_rule['max_length']}";
}
}
if(!empty($rules)) {
$v = Validator::make(array($key => $value), $rules);
if($v->fails()) {
Session::flash('errors', $v->errors());
return Response::json(array('status' => 'error', 'message' => 'validation errors'));
}
}
$revision = array(
'revision' => $response->revision->revision + 1,
'user_id' => $user->id,
'response' => is_array($value) ? json_encode($value) : $value,
'active' => 0,
'archive' => 0,
'lock' => 0,
'title' => $revision_title,
'field' => $response->revision->field
);
$revision_id = $qaResponseProvider->createRevision($response, $revision);
Session::flash('message', 'Created revision!');
return Response::json(array('status' => 'success', 'response_id' => $responseId, 'revision_id' => $revision_id->id));
}
public function postAnswerQuestions($setSlug, $categorySlug)
{
$user = Auth::user();
if ( ! $user) App::abort(404);
// Get from active brand
$brand = Brand::find($user->activeBrand());
if ( ! $brand) App::abort(404);
$set = Taxonomy::getComponentsInstance()->getSetProvider()->findBySlugWithLocale($setSlug, $user->getLanguage());
if ( ! $set) {
$set = Taxonomy::getComponentsInstance()->getSetProvider()->findBySlugWithLocale($setSlug, 'en_US');
}
$categoryProvider = Taxonomy::getComponentsInstance()->getCategoryProvider();
$category = $categoryProvider->findBySlugWithLocale($categorySlug, $set->locale);
if ( ! $category) App::abort(404);
$qaProvider = Taxonomy::getComponentsInstance()->getAnswerProvider();
$qaResponseProvider = Taxonomy::getComponentsInstance()->getResponseProvider();
$fields = Input::get('answer', array());
if(empty($fields)) {
return Redirect::back()->with('error', 'You did not submit any answers')->withInput();
}
$allowMultipleResponses = $category->allow_multi_response;
$i = 0;
$isChanged = false;
foreach($fields as $key => $value) {
$i++;
$answer = $qaProvider->findById($key);
if(empty($answer)) {
continue;
}
$_value = is_array($value) ? json_encode($value) : $value;
$rules = array();
$answer_rule = json_decode($answer->rule, true);
if($answer->element == 'input' || $answer->element == 'textarea') {
if(!empty($answer_rule)) {
$rules["answer[{$i}]"] = "max: {$answer_rule['max_length']}";
}
}
if(!empty($rules)) {
$v = Validator::make(array("answer[{$i}]" => $value), $rules);
if($v->fails()) {
return Redirect::back()->withErrors($v)->withInput();
}
}
$answer_attributes = array(
'response' => array(
'brand_id' => $brand->id,
'answer_id' => $answer->id,
'question_id' => $answer->target_id
),
'revision' => array(
'user_id' => $user->id,
'response' => $_value,
'field' => strtolower($answer->title) . '-' . ($key + 1),
'active' => 1,
),
);
$isExists = $qaResponseProvider->findByBrandIdAndAnswerId($answer_attributes['response']['brand_id'], $answer_attributes['response']['answer_id']);
if (!$isExists && !empty($value)) {
$response = $qaResponseProvider->createResponse($answer_attributes['response'], $answer_attributes['revision']);
$isChanged = true;
} else if($isExists) {
if (empty($value)) {
$isExists->revisions()->delete();
$isExists->delete();
} else {
if ($_value == $isExists->response) {
continue;
} else {
$activeRevision = $qaResponseProvider->findActiveRevision($answer_attributes['response']['brand_id'], $answer_attributes['response']['answer_id']);
$qaResponseProvider->updateRevision($isExists, $activeRevision->revision_id, $answer_attributes['revision']);
$isChanged = true;
}
}
}
}
if ($isChanged == true) {
if (! $user->getBadge('contribute-biz-data')) {
Badge::rewardBadge('contribute-biz-data', $user->id);
}
}
$isContinue = Input::get('continue');
if ($isContinue == 'true') {
/* sibling subcategory */
$sub_category = Taxonomy::getComponentsInstance()->getCategoryProvider()->findSubcategoriesWithoutRevision($brand->id, $category->parent_id, $set->id, $category->cate_id)->first();
if (isset($sub_category)) {
return Redirect::to("app/{$set->slug}/{$sub_category->slug}/edit")->with('message', "{$category->title} Answered!");
} else {
/* sub category in other category */
$sub_category = Taxonomy::getComponentsInstance()->getCategoryProvider()->findSubcategoriesWithoutRevision($brand->id, null, $set->id, $category->cate_id)->first();
if (isset($sub_category)) {
return Redirect::to("app/{$set->slug}/{$sub_category->slug}/edit")->with('message', "{$category->title} Answered!");
} else {
$unCompletedResponseCategories = Taxonomy::getComponentsInstance()->getCategoryProvider()->findSubcategoriesWithUnresponseAnswer($brand->id, null, $set->id);
if ($unCompletedResponseCategories->isEmpty()) {
return Redirect::to("app/{$set->slug}")->with('message', "You have reached the end of the {$set->slug} questions!");
} else {
$categories = array();
foreach ($unCompletedResponseCategories as $cate) {
$categories[] = $cate->meta->first()->title;
}
return Redirect::to("app/{$set->slug}")->with('message', "You still have questions to answer in the following areas: ".implode(', ', $categories));
}
}
}
}
return Redirect::back()->with('message', "{$category->title} Answered!");
}
public function getQuestionRevisions($setSlug, $categorySlug, $questionSlug)
{
$user = Auth::user();
if ( ! $user) App::abort(404);
// Get from active brand
$brand = Brand::find($user->activeBrand());
if ( ! $brand) App::abort(404);
$set = Taxonomy::getComponentsInstance()->getSetProvider()->findBySlugWithLocale($setSlug, $user->getLanguage());
if ( ! $set) {
$set = Taxonomy::getComponentsInstance()->getSetProvider()->findBySlugWithLocale($setSlug, 'en_US');
}
$categoryProvider = Taxonomy::getComponentsInstance()->getCategoryProvider();
$category = $categoryProvider->findBySlugWithLocale($categorySlug, $set->locale);
if ( ! $category) App::abort(404);
$questionProvider = Taxonomy::getComponentsInstance()->getQuestionProvider();
$question = $questionProvider->findBySlugWithLocale($questionSlug, $set->locale);
if ( ! $question) App::abort(404);
$completion = Taxonomy::calculateCategoryCompletion($brand->id, $category->id);
$responses = Taxonomy::buildQuestionRevisions($brand->id, $question->id);
$this->viewData = array(
'title' => "{$question->title}",
'set' => $set,
'category' => $category,
'question' => $question,
'responses' => $responses,
'user' => $user,
'brand' => $brand,
'headerCompletion' => $completion,
);
$this->layout = 'taxonomy.revision.all_revisions';
$this->setupLayout();
}
public function postCreateRevision($responseId, $revisionId)
{
$user = Auth::user();
if ( ! $user) App::abort(404);
$brand = Brand::find($user->activeBrand());
if ( ! $brand) App::abort(404);
$qaResponseProvider = Taxonomy::getComponentsInstance()->getResponseProvider();
$response = $qaResponseProvider->findByIdWithRevision($responseId, $revisionId);
$fields = Input::all();
$rules = array(
'revision_title' => 'required|min:3|max:100|unique:taxonomy_question_response_revisions,title,NULL,id,response_id,'.$responseId,
);
$v = Validator::make($fields, $rules);
if($v->fails()) {
return Redirect::back()->withErrors($v);
}
$revision = array(
'revision' => $response->revision->revision + 1,
'user_id' => $user->id,
'active' => 0,
'archive' => 0,
'lock' => 0,
'title' => $fields['revision_title'],
'field' => $response->revision->field
);
$shifted = array_shift($fields['answer']);
if(is_array($shifted)) {
$revision['response'] = json_encode($shifted);
} else {
$revision['response'] = $shifted;
}
$result = $qaResponseProvider->createRevision($response, $revision);
if(empty($result)) {
return Redirect::back()->with('error', 'Unexpected Error :\\');
}
return Redirect::back()->with('message', "Revision {$revision['title']} created");
}
public function postUpdateRevision($responseId, $revisionId)
{
$user = Auth::user();
if ( ! $user) App::abort(404);
$brand = Brand::find($user->activeBrand());
if ( ! $brand) App::abort(404);
$qaResponseProvider = Taxonomy::getComponentsInstance()->getResponseProvider();
$response = $qaResponseProvider->findByIdWithRevision($responseId, $revisionId);
$fields = Input::all();
$rules = array(
'answer' => 'required',
);
$v = Validator::make($fields, $rules);
if($v->fails()) {
return Redirect::back()->withErrors($v);
}
$revisionAttributes['revision'] = $response->revision->revision + 1;
$shifted = array_shift($fields['answer']);
if(is_array($shifted)) {
$revisionAttributes['response'] = json_encode($shifted);
} else {
$revisionAttributes['response'] = $shifted;
}
$result = $qaResponseProvider->updateRevision($response, $revisionId, $revisionAttributes);
if(empty($result)) {
return Redirect::back()->with('error', 'Unexpected Error :\\');
}
return Redirect::back()->with('message', "Revision {$response->revision->title} updated");
}
public function postVoteRevision($responseId, $revisionId)
{
$user = Auth::user();
if ( ! $user) App::abort(404);
$brand = Brand::find($user->activeBrand());
if ( ! $brand) App::abort(404);
$fields = array('vote' => Input::get('vote'));
$v = Validator::make($fields, array('vote' => 'required'));
if($v->fails()) {
Session::flash('error', 'You did not vote!');
return Response::json(array('status' => 'error'), 400);
}
$voteProvider = Taxonomy::getVoteInstance();
$result = $voteProvider->vote($responseId, $revisionId, $user->id, $fields['vote']);
if(!$result) {
Session::flash('error', 'You already voted!');
return Response::json(array('status' => 'You already voted!'), 400);
}
Session::flash('message', 'Your vote has been cast!');
return Response::json($result->toArray(), 201);
}
public function postCommentRevision($responseId, $revisionId)
{
$user = Auth::user();
if ( ! $user) App::abort(404);
$brand = Brand::find($user->activeBrand());
if ( ! $brand) App::abort(404);
$fields = array(
'comment' => Input::get('comment'),
'parent_id' => Input::get('parent_id', null),
);
$rules = array(
'comment' => 'required|max:1000',
);
$v = Validator::make($fields, $rules);
if($v->fails()) {
return Redirect::back()->withError($v);
}
$result = Taxonomy::getCommentInstance()->makeComment($revisionId, $user->id, $fields['comment'], $fields['parent_id']);
if(empty($result)) {
return Redirect::back()->with('error', 'Unexpected Error :\\');
}
return Redirect::back()->with('message', 'Comment Added.');
}
public function postTaxonomySettings()
{
$fields = Input::all();
if($fields['taxonomy_resource_state']) {
Session::put('taxonomy_resource_state', ' ');
} else {
Session::forget('taxonomy_resource_state');
}
return Response::json(array('status' => 'success'));
}
public function getRevisionDetails($setSlug, $categorySlug, $questionSlug, $responseId, $revisionId)
{
$user = Auth::user();
if ( ! $user) App::abort(404);
// Get from active brand
$brand = Brand::find($user->activeBrand());
if ( ! $brand) App::abort(404);
$set = Taxonomy::getComponentsInstance()->getSetProvider()->findBySlugWithLocale($setSlug, $user->getLanguage());
if ( ! $set) {
$set = Taxonomy::getComponentsInstance()->getSetProvider()->findBySlugWithLocale($setSlug, 'en_US');
}
$categoryProvider = Taxonomy::getComponentsInstance()->getCategoryProvider();
$category = $categoryProvider->findBySlugWithLocale($categorySlug, $set->locale);
if ( ! $category) App::abort(404);
$questionProvider = Taxonomy::getComponentsInstance()->getQuestionProvider();
$question = $questionProvider->findBySlugWithLocale($questionSlug, $set->locale);
if ( ! $question) App::abort(404);
$completion = Taxonomy::calculateCategoryCompletion($brand->id, $category->id);
$response = Taxonomy::buildRevisionDetails($brand->id, $question->id, $responseId, $revisionId);
// dd($response);
$this->viewData = array(
'title' => "{$question->title}",
'set' => $set,
'category' => $category,
'question' => $question,
'response' => $response,
'user' => $user,
'brand' => $brand,
'headerCompletion' => $completion,
);
$this->layout = 'taxonomy.revision.details';
$this->setupLayout();
}
public function postExport($setSlug, $categorySlug)
{
$user = Auth::user();
if ( ! $user) App::abort(404);
// Get from active brand
$brand = Brand::find($user->activeBrand());
if ( ! $brand) App::abort(404);
$type = Input::get('type');
$subcategories = array();
if ($type == 'all') {
$set = Taxonomy::getComponentsInstance()->getSetProvider()->findBySlugWithLocale($setSlug, $user->getLanguage());
if ( ! $set) {
$set = Taxonomy::getComponentsInstance()->getSetProvider()->findBySlugWithLocale($setSlug, 'en_US');
}
$subcategories = Taxonomy::getComponentsInstance()->getCategoryProvider()->findSubcategoriesBySetWithLocale($set->id, $user->getLanguage());
} else if ($type == 'current') {
$subcategories[] = Taxonomy::getComponentsInstance()->getCategoryProvider()->findBySlugWithLocale($categorySlug, $user->getLanguage());
if (empty($subcategories)) {
$subcategories[] = Taxonomy::getComponentsInstance()->getCategoryProvider()->findBySlugWithLocale($categorySlug, 'en_US');
}
} else {
return Response::json(array('error' => 'Invalid type'));
}
//var_dump($subcategories->toArray());die();
$reportTable = View::make('taxonomy.reports.pdf.export')
->with('subcategories', $subcategories)
->with('count', count($subcategories))
->with('brand', $brand)
->with('type', $type)
->with('user', $user);
$reportHash = 'taxonomy_report';
$fileName = strtolower($brand->title).'_'.str_replace('-', '_', ($type == 'all' ? 'set_'.$set->slug : 'subcategory_'.$subcategories[0]->slug)).'_'.time();
$this->saveTaxonomyReport($reportHash, $reportTable, $fileName);
return Response::json(array('success' => 'OK', 'redirect' => URL::to('taxonomy/report/'.$fileName)));
}
protected function saveTaxonomyReport($reportHash, $reportTable, $fileName, $type='pdf')
{
$fs = new Filesystem();
$reportStorage = app_path().'/storage/views/';
$reportFolder = $reportStorage.$reportHash;
if (!$fs->isDirectory($reportFolder)) {
$fs->makeDirectory($reportFolder, 0777, true);
@chmod($reportFolder, 0777);
}
if ($type == 'pdf') {
$pdf = PHPPdf\Core\FacadeBuilder::create()->setEngineType('pdf')->build();
$report = View::make('taxonomy.reports.pdf.dashboard', array(
'table' => preg_replace('/&(?!#?[a-z0-9]+;)/', '&amp;', $reportTable),
))->render();
$style = View::make('taxonomy.reports.pdf.style')->render();
$reportTable = $pdf->render($report, $style);
}
$fs->put($reportStorage.$reportHash.DIRECTORY_SEPARATOR.$fileName.'.'.$type, $reportTable);
@chmod($reportStorage.$reportHash.DIRECTORY_SEPARATOR.$type, 0777);
}
public function showTaxonomyReport($filename)
{
$reportHash = 'taxonomy_report';
$filename = $this->getTaxonomyReport($reportHash, $filename);
return Response::download((string) $filename, null, array('Content-Type' => 'application/pdf'));
}
protected function getTaxonomyReport($reportHash, $filename, $type='pdf')
{
$fs = new Filesystem();
$reportStorage = app_path().'/storage/views/';
$filename = $reportStorage.$reportHash.DIRECTORY_SEPARATOR.$filename.'.'.$type;
return ($type == 'pdf') ? $filename : $fs->get($filename);
}
/**
* Hide Introduction
*/
public function getHideIntroduction()
{
$user = Auth::user();
$provider = Taxonomy::getIntroductionVisibilityProvider();
$visibility = $provider->findByUser($user->id);
if ($visibility) {
$visibility->status = 'hidden';
$result = $visibility->save();
} else {
$fields = array(
'user_id' => $user->id,
'status' => 'hidden'
);
$result = $provider->create($fields);
}
if ($result) {
if (Request::ajax()) {
return Response::json(array('success' => 'ok', 'message' => 'BizGenics Data introduction has been hidden.'));
} else {
return Redirect::back()->with('message', 'BizGenics Data introduction has been hidden.');
}
} else {
if (Request::ajax()) {
return Response::json(array('error' => 'true', 'message' => 'Hide failure.'));
} else {
return Redirect::back()->with('error', 'Hide failure.');
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment