Example #1
0
 public function render()
 {
     $app = JFactory::getApplication();
     //grab model
     $model = new EventModel();
     if ($this->getLayout() == "event_listings" || $this->getLayout() == "list") {
         $events = $model->getEvents();
         $this->events = $events;
     } else {
         //null event
         $event = array();
         $id = null;
         if ($app->input->get('parent_id') && !$app->input->get('id')) {
             $id = $app->input->get('parent_id');
         } else {
             $id = $app->input->get('id');
         }
         //grab event
         if ($id != null) {
             $event = $model->getEvent($id);
         }
         //pass reference
         $this->event = $event;
     }
     if ($app->input->get('association_id')) {
         $this->association_name = CobaltHelper::getAssociationName();
     }
     //display
     echo parent::render();
 }
Example #2
0
 public function execute()
 {
     $return = array();
     if (CobaltHelper::unshareItem()) {
         $return['success'] = true;
     } else {
         $return['success'] = false;
     }
     echo json_encode($return);
 }
Example #3
0
 public function execute()
 {
     $emailExists = CobaltHelper::checkEmailName($this->getInput()->get('email'));
     if ($emailExists) {
         $success = true;
         $msg = TextHelper::_('COBALT_EMAIL_EXISTS');
     } else {
         $success = true;
         $msg = TextHelper::_('COBALT_EMAIL_IS_AVAILABLE');
     }
     echo json_encode(array('success' => $success, 'message' => $msg, 'email_exists' => $emailExists));
 }
Example #4
0
 /**
  * Method to get graph deal information
  * @param $type type of deal to filter by, values 'stage','status'
  * @param $access_type to search by 'company','team','member'
  * @param $access_id the id of the $member_type to search by
  */
 public function getGraphDeals($type = null, $access_type = null, $access_id = null)
 {
     $query = $this->db->getQuery(true);
     //search by type
     if ($type == 'stage') {
         $query->select("count(*) AS value, stage.name AS title")->from("#__deals AS d")->leftJoin("#__stages AS stage ON stage.id = d.stage_id");
     }
     if ($type == 'status') {
         $query->select("count(*) AS value, status.name AS title")->from("#__deals AS d")->leftJoin("#__deal_status AS status ON status.id = d.status_id");
     }
     //if user is not an executive then there are limitations
     if ($access_type != 'company') {
         //team sorting
         if ($access_type == 'team') {
             //get team members
             $team_members = UsersHelper::getTeamUsers($access_id);
             $members = array();
             $members[] = 0;
             foreach ($team_members as $key => $member) {
                 $members[] = $member['id'];
             }
             $query->where("d.owner_id IN (" . implode(",", $members) . ")");
         }
         //member sorting
         if ($access_type == 'member') {
             $query->where("d.owner_id={$access_id}");
         }
     }
     //grouping
     if ($type == 'stage') {
         $query->where("d.stage_id <> 0 AND d.stage_id = stage.id");
         $query->group("d.stage_id");
     }
     if ($type == 'status') {
         $query->where("d.status_id <> 0 AND d.status_id = status.id");
         $query->group("d.status_id");
     }
     if (!is_null($this->archived)) {
         $query->where("d.archived=" . $this->archived);
     }
     $query->where("d.published=" . $this->published);
     $results = $this->db->setQuery($query)->loadAssocList();
     if (count($results) > 0) {
         $max = 0;
         // get max value
         foreach ($results as $stage) {
             if ($stage['value'] > $max) {
                 $max = (int) $stage['value'];
             }
         }
         //clean results and force datatypes for graph rendering
         foreach ($results as $key => $stage) {
             // $results[$key]['y'] = (int) $stage['y'];
             // $results[$key]['data'] = array((int) $stage['y']);
             $results[$key]['value'] = (int) $stage['value'];
             $results[$key]['color'] = '#' . CobaltHelper::percent2Color($stage['value'], 200, $max);
             $results[$key]['highlight'] = '#' . CobaltHelper::percent2Color($stage['value'], 220, $max);
         }
     }
     return $results;
 }
Example #5
0
 public function getConversation($id)
 {
     //initialize query
     $query = $this->db->getQuery(true)->select("c.*, u.first_name as owner_first_name, u.last_name as owner_last_name,author.email")->from("#__conversations as c")->where("c.id=" . (int) $id)->where("c.published=" . $this->published)->leftJoin("#__users AS u ON u.id = c.author")->leftJoin("#__users AS author on author.id=u.id");
     $results = $db->setQuery($query)->loadAssocList();
     //clean results
     if (count($results) > 0) {
         foreach ($results as $key => $convo) {
             $results[$key]['created_formatted'] = DateHelper::formatDate($convo['created']);
             $results[$key]['owner_avatar'] = CobaltHelper::getGravatar($convo['email']);
         }
     }
     return $results;
 }
Example #6
0
 public function getNotes($object_id = NULL, $type = NULL, $display = true)
 {
     $app = \Cobalt\Container::fetch('app');
     //grab db
     $db = JFactory::getDBO();
     //initialize query
     $query = $db->getQuery(true);
     //gen query string
     $query->select("n.*,cat.name as category_name,comp.name as company_name,\n                        comp.id as company_id,deal.name as deal_name,deal.id as deal_id,\n                        person.id as person_id,person.first_name as person_first_name,\n                        person.last_name as person_last_name, owner.first_name as owner_first_name,\n                        event.name as event_name, event.id as event_id,\n                        owner.last_name as owner_last_name, author.email");
     $query->from("#__notes as n");
     $query->leftJoin("#__notes_categories AS cat ON cat.id = n.category_id");
     $query->leftJoin("#__companies AS comp ON comp.id = n.company_id AND comp.published>0");
     $query->leftJoin("#__events AS event ON event.id = n.event_id AND event.published>0");
     $query->leftJoin("#__deals AS deal ON deal.id = n.deal_id AND deal.published>0");
     $query->leftJoin("#__people AS person on n.person_id = person.id AND person.published>0");
     $query->leftJoin("#__users AS owner ON n.owner_id = owner.id");
     $query->leftJoin("#__users AS author ON author.id = owner.id");
     $company_filter = $this->getState('Note.company_name');
     if ($company_filter != null) {
         $query->where("comp.name LIKE '%" . $company_filter . "%'");
     }
     //deal
     $deal_filter = $this->getState('Note.deal_name');
     if ($deal_filter != null) {
         $query->where("deal.name LIKE '%" . $deal_filter . "%'");
     }
     //person
     $person_filter = $this->getState('Note.person_name');
     if ($person_filter != null) {
     }
     if ($object_id) {
         switch ($type) {
             case 'person':
             case 'people':
                 $query->where('n.person_id =' . $object_id);
                 break;
             case 'company':
                 $query->where('(n.company_id =' . $object_id . ' OR deal.company_id = ' . $object_id . ' OR person.company_id = ' . $object_id . ")");
                 break;
             case 'deal':
                 $query->where('n.deal_id=' . $object_id);
                 break;
             case "event":
                 $query->where("n.event_id={$object_id}");
                 break;
         }
     }
     //owner
     $owner_filter = $this->getState('Note.owner_id');
     if ($owner_filter != null && $owner_filter != "all") {
         $owner_type = $this->getState('Note.owner_type');
         switch ($owner_type) {
             case "team":
                 $team_member_ids = UsersHelper::getTeamUsers($owner_filter, TRUE);
                 $query->where("n.owner_id IN (" . implode(',', $team_member_ids) . ")");
                 break;
             case "member":
                 $query->where("n.owner_id=" . $owner_filter);
                 break;
         }
     }
     //created
     $created_filter = $this->getState('Note.created');
     if ($company_filter != null) {
     }
     //category
     $category_filter = $this->getState('Note.category_id');
     if ($category_filter != null) {
         $query->where("n.category_id=" . $category_filter);
     }
     if ($this->_id) {
         if (is_array($this->_id)) {
             $query->where("n.id IN (" . implode(',', $this->_id) . ")");
         } else {
             $query->where("n.id={$this->_id}");
         }
     }
     /** ---------------------------------------------------------------
      * Filter data using member role permissions
      */
     $member_id = UsersHelper::getUserId();
     $member_role = UsersHelper::getRole();
     $team_id = UsersHelper::getTeamId();
     if ($this->public_notes != true) {
         if ($member_role != 'exec') {
             //manager filter
             if ($member_role == 'manager') {
                 $query->where('owner.team_id = ' . $team_id);
             } else {
                 //basic user filter
                 $query->where(array('n.owner_id = ' . $member_id));
             }
         }
     }
     $query->where("n.published=" . $this->published);
     $query->order("n.modified DESC");
     //load results
     $db->setQuery($query);
     $results = $db->loadAssocList();
     //clean results
     if (count($results) > 0) {
         foreach ($results as $key => $note) {
             $results[$key]['created_formatted'] = DateHelper::formatDate($note['created']);
             $results[$key]['owner_avatar'] = CobaltHelper::getGravatar($note['email']);
         }
     }
     //$app->triggerEvent('onNoteLoad', array(&$results));
     if (!$display) {
         //return results
         return $results;
     } else {
         $notesView = ViewHelper::getView('note', 'default', 'phtml', array('notes' => $results));
         return $notesView;
     }
 }
Example #7
0
 /**
  * Use post data and update a users email address(es) in the users_email_cf db table
  * @param  int   $user_id the user id of the user being updated
  * @param  mixed $emails  an array of new email addresses to be associated with the user
  * @return void
  */
 public function updateEmail($user_id, $emails)
 {
     $query = $this->db->getQuery(true);
     $retults = array();
     //delete any existing entries
     $query->delete('#__users_email_cf')->where('member_id = ' . $user_id);
     $retults[] = $this->db->setQuery($query)->execute();
     //insert new entries
     if (is_array($emails)) {
         foreach ($emails as $email) {
             if ($email) {
                 $emailO = new \stdClass();
                 $emailO->member_id = $user_id;
                 if (!CobaltHelper::checkEmailName($email)) {
                     $emailO->email = $email;
                     $retults[] = $this->db->insertObject('#__users_email_cf', $emailO);
                 }
             }
         }
     }
     if (in_array(false, $retults)) {
         return false;
     }
     return true;
 }
Example #8
0
 public function getContacts()
 {
     $db = JFactory::getDBO();
     $this->query = $db->getQuery(true);
     $this->buildSelect();
     if (!$this->buildWhere()) {
         return false;
     }
     $this->buildOrder();
     $db->setQuery($this->query);
     $people = $db->loadAssocList();
     $default_image = JURI::base() . 'src/Cobalt/media/images/person.png';
     $n = count($people);
     for ($i = 0; $i < $n; $i++) {
         if ($people[$i]['avatar'] == "" && $people[$i]['email'] != "") {
             $people[$i]['avatar'] = CobaltHelper::getGravatar($people[$i]['email'], null, false, $default_image);
         } elseif ($people[$i]['avatar'] == "") {
             $people[$i]['avatar'] = $default_image;
         }
     }
     return $people;
 }
Example #9
0
 /**
  * Method to store a record
  *
  * @return boolean True on success
  */
 public function store($data = null)
 {
     $app = \Cobalt\Container::fetch('app');
     //Load Tables
     $row = new CompanyTable();
     $oldRow = new CompanyTable();
     if ($data == null) {
         $data = $this->app->input->post->getArray();
     }
     //date generation
     $date = DateHelper::formatDBDate(date('Y-m-d H:i:s'));
     if (!array_key_exists('id', $data) || array_key_exists('id', $data) && $data['id'] <= 0) {
         $data['created'] = $date;
         $status = 'created';
     } else {
         $row->load($data['id']);
         $oldRow->load($data['id']);
         $status = 'updated';
     }
     $data['modified'] = $date;
     $data['owner_id'] = UsersHelper::getUserId();
     //generate custom field string
     $customArray = array();
     foreach ($data as $name => $value) {
         if (strstr($name, 'custom_') && !strstr($name, '_input') && !strstr($name, "_hidden")) {
             $id = str_replace('custom_', '', $name);
             $customArray[] = array('custom_field_id' => $id, 'custom_field_value' => $value);
             unset($data[$name]);
         }
     }
     // Bind the form fields to the table
     if (!$row->bind($data)) {
         $this->setError($this->db->getErrorMsg());
         return false;
     }
     //$app->triggerEvent('onBeforeCompanySave', array(&$row));
     // Make sure the record is valid
     if (!$row->check()) {
         $this->setError($this->db->getErrorMsg());
         return false;
     }
     // Store the web link table to the database
     if (!$row->store()) {
         $this->setError($this->db->getErrorMsg());
         return false;
     }
     $id = !empty($data['id']) ? $data['id'] : $this->db->insertId();
     ActivityHelper::saveActivity($oldRow, $row, 'company', $status);
     //if we receive no custom post data do not modify the custom fields
     if (count($customArray) > 0) {
         CobaltHelper::storeCustomCf($id, $customArray, 'company');
     }
     //$app->triggerEvent('onAfterCompanySave', array(&$row));
     return $row->id;
 }