/**
  * Display the form allowing to edit a citation
  *
  * @return  string  HTML
  */
 private function editAction($row = null)
 {
     // Check if they're logged in
     if (User::isGuest()) {
         return $this->loginAction();
     }
     if (!$this->params->get('access-manage')) {
         throw new Exception(Lang::txt('PLG_MEMBERS_CITATIONS_NOT_AUTHORIZED'), 403);
     }
     // Create view object
     $view = $this->view('edit');
     $view->member = $this->member;
     $view->option = $this->option;
     $view->database = $this->database;
     $view->allow_tags = $this->member->getParam('citation_allow_tags', 'yes');
     $view->allow_badges = $this->member->getParam('citatoin_allow_badges', 'yes');
     // Get the citation types
     $citationsType = \Components\Citations\Models\Type::all();
     $view->types = $citationsType->rows();
     $fields = array();
     foreach ($view->types as $type) {
         if (isset($type->fields)) {
             $f = $type->fields;
             if (strpos($f, ',') !== false) {
                 $f = str_replace(',', "\n", $f);
             }
             $f = array_map('trim', explode("\n", $f));
             $f = array_values(array_filter($f));
             $fields[strtolower(str_replace(' ', '', $type->type_title))] = $f;
         }
     }
     // Incoming
     $id = Request::getInt('cid', 0);
     // Load the object
     if (is_object($row)) {
         $view->row = $row;
     } else {
         $view->row = \Components\Citations\Models\Citation::oneOrNew($id);
         // check to see if this member created this citation
         if (!$view->row->isNew() && ($view->row->uid != User::get('id') || $view->row->scope != 'member')) {
             // redirect
             App::redirect(Route::url($this->member->getLink() . '&active=' . $this->_name), Lang::txt('PLG_MEMBERS_CITATIONS_OWNER_ONLY'), 'warning');
         }
     }
     //make sure title isnt too long
     $maxTitleLength = 30;
     $shortenedTitle = strlen($view->row->title) > $maxTitleLength ? substr($view->row->title, 0, $maxTitleLength) . '…' : $view->row->title;
     // Set the pathway
     if ($id && $id != 0) {
         Pathway::append($shortenedTitle, 'index.php?option=com_citations&task=view&id=' . $view->row->id);
         Pathway::append(Lang::txt('PLG_MEMBERS_CITATIONS_EDIT'));
     } else {
         Pathway::append(Lang::txt('PLG_MEMBERS_CITATIONS_ADD'));
     }
     // Set the page title
     Document::setTitle(Lang::txt('PLG_MEMBERS_CITATIONS_CITATION') . $shortenedTitle);
     //push jquery to doc
     Document::addScriptDeclaration('var fields = ' . json_encode($fields) . ';');
     // Instantiate a new view
     $view->title = Lang::txt('PLG_MEMBERS_CITATIONS') . ': ' . Lang::txt('PLG_MEMBERS_CITATIONS_' . strtoupper($this->action));
     // No ID, so we're creating a new entry
     // Set the ID of the creator
     if (!$id) {
         $view->row->uid = User::get('id');
         //tags & badges
         $view->tags = array();
         $view->badges = array();
         $view->row->id = -time();
     } else {
         if ($view->row->relatedAuthors->count()) {
             $view->authors = $view->row->relatedAuthors;
         } elseif ($view->row->relatedAuthors->count() == 0 && $view->row->author != '') {
             // formats the author for the multi-author plugin
             $authors = explode(';', $view->row->author);
             $authorString = '';
             $totalAuths = count($authors);
             $x = 0;
             foreach ($authors as &$author) {
                 /***
                  * Because the multi-select keys off of a comma,
                  * imported entries may display incorrectly (Wojkovich, Kevin) breaks the multi-select
                  * Convert this to Kevin Wojkovich and I'll @TODO add some logic in the formatter to
                  * format it properly within the bibilographic format ({LASTNAME},{FIRSTNAME})
                  ***/
                 $authorEntry = explode(',', $author);
                 if (count($authorEntry == 2)) {
                     $author = $authorEntry[1] . ' ' . $authorEntry[0];
                 }
                 $authorString .= $author;
                 if ($totalAuths > 1 && $x < $totalAuths - 1) {
                     $authorString .= ',';
                 }
                 $x = $x + 1;
             }
             $view->authorString = $authorString;
         }
         //tags & badges
         $view->tags = \Components\Citations\Helpers\Format::citationTags($view->row, $this->database, false);
         $view->badges = \Components\Citations\Helpers\Format::citationBadges($view->row, $this->database, false);
     }
     // Output HTML
     foreach ($this->getErrors() as $error) {
         $view->setError($error);
     }
     return $view->loadTemplate();
 }
 /**
  * Return a list of citations for a specific user
  *
  * @param	object	$group		Current group
  * @param	object	$profile	USer profile
  * @return	string
  */
 public function onGroupMemberAfter($group, $profile)
 {
     $view = $this->view('default', 'member');
     $view->group = $group;
     $view->option = 'com_groups';
     $view->task = $this->_name;
     $view->database = App::get('db');
     $view->title = Lang::txt(strtoupper($this->_name));
     $view->citationTemplate = 'apa';
     $view->filters['search'] = "";
     $view->filters['type'] = '';
     $view->filters['tag'] = '';
     $view->filters['author'] = '';
     $view->filters['publishedin'] = '';
     $view->filters['year_start'] = '';
     $view->filters['year_end'] = '';
     $view->filters['startuploaddate'] = '';
     $view->filters['enduploaddate'] = '';
     $view->filters['sort'] = '';
     // get the preferred labeling scheme
     $view->label = null;
     switch ($view->label) {
         case 'none':
             $view->citations_label_class = 'no-label';
             break;
         case 'number':
             $view->citations_label_class = 'number-label';
             break;
         case 'type':
             $view->citations_label_class = 'type-label';
             break;
         case 'both':
         default:
             $view->citations_label_class = 'both-label';
             break;
     }
     // enable coins support
     $view->coins = 1;
     // types
     $view->types = \Components\Citations\Models\Type::all();
     // OpenURL
     $openURL = $this->_handleOpenURL();
     $view->openurl['link'] = $openURL['link'];
     $view->openurl['text'] = $openURL['text'];
     $view->openurl['icon'] = $openURL['icon'];
     $view->citations = array();
     return $view->loadTemplate();
 }