%PDF- %PDF-
| Direktori : /home1/lightco1/www/administrator/components/com_joomailermailchimpintegration/models/ |
| Current File : //home1/lightco1/www/administrator/components/com_joomailermailchimpintegration/models/sync.php |
<?php
/**
* Copyright (C) 2015 freakedout (www.freakedout.de)
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
**/
// no direct access
defined('_JEXEC') or die('Restricted Access');
class joomailermailchimpintegrationModelSync extends jmModel {
private $data;
private $total = null;
private $pagination = null;
public function __construct() {
parent::__construct();
$mainframe = JFactory::getApplication();
$option = JRequest::getCmd('option');
// Get pagination request variables
$limit = $mainframe->getUserStateFromRequest('global.list.limit', 'limit', $mainframe->getCfg('list_limit'), 'int');
$limitstart = JRequest::getVar('limitstart', 0, '', 'int');
// In case limit has been changed, adjust it
$limitstart = ($limit != 0 ? (floor($limitstart / $limit) * $limit) : 0);
$this->setState('limit', $limit);
$this->setState('limitstart', $limitstart);
}
private function buildQuery() {
$mainframe = JFactory::getApplication();
$db = JFactory::getDBO();
$filter_type = $mainframe->getUserStateFromRequest('filter_type', 'filter_type', 0, 'string');
$search = JString::strtolower($mainframe->getUserStateFromRequest('search', 'search', '', 'string'));
$filter_date = $mainframe->getUserStateFromRequest('filter_date', 'filter_date', '', 'string');
if ($filter_date == JText::_('Last visit after')) {
$filter_date = false;
}
$limit = $mainframe->getUserStateFromRequest('global.list.limit', 'limit', $mainframe->getCfg('list_limit'), 'int');
$limitstart = $mainframe->getUserStateFromRequest('limitstart', 'limitstart', 0, 'int');
if (isset($search) && $search != '') {
$searchEscaped = '"%' . $db->escape($search, true) . '%"';
$where[] = ' username LIKE ' . $searchEscaped . ' OR email LIKE ' . $searchEscaped . ' OR name LIKE ' . $searchEscaped;
}
if ($filter_type > 1) {
$where[] = ' um.group_id = '.$db->Quote($filter_type).' ';
}
$where[] = "block = '0'";
$where = (count($where) ? ' WHERE (' . implode(') AND (', $where) . ')' : '');
if ($filter_date && $filter_date != JText::_('JM_LAST_VISIT_AFTER')) {
$where .= " AND lastvisitDate >= '" . $filter_date . "' ";
}
$query = 'SELECT a.*, ug.title AS groupname'
. ' FROM #__users AS a'
. ' INNER JOIN #__user_usergroup_map AS um ON um.user_id = a.id'
. ' INNER JOIN #__usergroups AS ug ON ug.id = um.group_id'
. $where
. ' ORDER BY a.id';
return $query;
}
public function getData() {
if (empty($this->data)) {
$query = $this->buildQuery();
$this->data = $this->_getList($query, $this->getState('limitstart'), $this->getState('limit'));
}
return $this->data;
}
public function getUser($id) {
$db = JFactory::getDBO();
$query = $db->getQuery(true);
$query->select($db->qn(array('u.id', 'u.name', 'u.username', 'u.email', 'u.block', 'g.title'),
array('id', 'name', 'username', 'email', 'block', 'usergroup')))
->from($db->qn('#__users', 'u'))
->join('LEFT', '#__user_usergroup_map AS m ON (u.id = m.user_id)')
->join('LEFT', '#__usergroups AS g ON (g.id = m.group_id)')
->where($db->qn('u.id') . ' = ' . $db->q($id));
return $this->_getList($query);
}
public function getUserByEmail($email) {
$query = 'SELECT id,name,username,email,block,usertype FROM #__users WHERE email ="' . $email . '"';
$this->data = $this->_getList($query);
if (!isset($this->data[0])) {
$cm = $this->cm_object();
$lists = $this->getLists();
foreach($lists['anyType']['List'] as $listID){
if (isset($result) && isset($result['anyType']['Code']) && $result['anyType']['Code'] != 203) {
break;
}
$result = $cm->subscriberGetSingleSubscriber($listID['ListID'], $email);
if (isset($result['anyType']['Name'])) {
$this->data[0] = new stdClass;
$this->data[0]->name = $result['anyType']['Name'];
$this->data[0]->email = $result['anyType']['EmailAddress'];
}
}
}
return $this->data;
}
public function getTotalUsers() {
$db = JFactory::getDBO();
$query = 'SELECT COUNT(id) FROM #__users WHERE block = 0';
$db->setQuery($query);
return $db->loadResult();
}
public function getTotal() {
if (empty($this->total)) {
$query = $this->buildQuery();
$this->total = $this->_getListCount($query);
}
return $this->total;
}
public function getPagination() {
if (empty($this->pagination)) {
jimport('joomla.html.pagination');
$this->pagination = new JPagination($this->getTotal(), $this->getState('limitstart'), $this->getState('limit'));
}
return $this->pagination;
}
public function getGroups() {
require_once(JPATH_ADMINISTRATOR . '/components/com_users/helpers/users.php');
return UsersHelper::getGroups();
}
public function getConfig($crm) {
$db = JFactory::getDBO();
$query = $db->getQUery(true);
$query->select('params')
->from($db->qn('#__joomailermailchimpintegration_crm'))
->where($db->qn('crm') . ' = ' . $db->q($crm));
$db->setQuery($query);
return json_decode($db->loadResult());
}
public function getJSFields() {
if (!JFile::exists(JPATH_ADMINISTRATOR . '/components/com_community/admin.community.php')) {
return array();
}
$db = JFactory::getDBO();
$query = $db->getQuery(true);
$query->select('*')
->from($db->qn('#__community_fields'))
->where($db->qn('published') . ' = ' . $db->q(1))
->where($db->qn('type') . ' != ' . $db->q('group'));
$db->setQuery($query);
return $db->loadObjectList();
}
public function getCBFields() {
if (!JFile::exists(JPATH_ADMINISTRATOR . '/components/com_comprofiler/admin.comprofiler.php')) {
return array();
}
$db = JFactory::getDBO();
$query = $db->getQuery(true);
$query->select(array('fieldid', 'name', 'title'), array('id', 'name', 'title'))
->from($db->qn('#__comprofiler_fields'))
->where($db->qn('published') . ' = ' . $db->q(1))
->where($db->qn('profile') . ' = ' . $db->q(1))
->where($db->qn('readonly') . ' = ' . $db->q(0))
->where($db->qn('calculated') . ' = ' . $db->q(0));
$db->setQuery($query);
return $db->loadObjectList();
}
public function getSugarFields() {
$params = JComponentHelper::getParams('com_joomailermailchimpintegration');
$sugar_name = $params->get('params.sugar_name');
$sugar_pwd = $params->get('params.sugar_pwd');
$sugar_url = $params->get('params.sugar_url');
require_once(JPATH_ADMINISTRATOR . '/components/com_joomailermailchimpintegration/libraries/sugar.php');
$sugar = new SugarCRMWebServices;
$sugar->SugarCRM($sugar_name, $sugar_pwd, $sugar_url);
$sugar->login();
$fields = $sugar->getModuleFields('Contacts');
$disallowedFields = array(
'id',
'date_entered',
'date_modified',
'modified_user_id',
'modified_by_name',
'created_by',
'created_by_name',
'deleted',
'assigned_user_id',
'assigned_user_name',
'email1'
);
for ($x = 0; $x < count($fields); $x++) {
if (in_array($fields[$x]['name'], $disallowedFields)){
unset($fields[$x]);
}
}
return $fields;
}
public function buildFieldsDropdown($name, $JS, $CB, $config, $email = false) {
$html = '<select name="crmFields[' . $name . ']" id="' . $name . '" style="min-width: 200px;">';
$html .= '<option value="">do not sync</option>';
if ($email) {
$selected = (isset($config->{$name}) && $config->{$name} == 'default') ? ' selected="selected"' : '';
$html .= '<option value="default"' . $selected . '>Joomla User Account Email</option>';
}
if ($JS) {
$html .= '<optgroup label="JomSocial">';
foreach ($JS as $field) {
$selected = (isset($config->{$name}) && $config->{$name} == 'js;' . $field->id) ? ' selected="selected"' : '';
$html .= '<option value="js;' . $field->id . '"' . $selected . '>' . $field->name . '</option>';
}
$html .= '</optgroup>';
}
if ($CB){
$html .= '<optgroup label="Community Builder">';
foreach ($CB as $field) {
$selected = (isset($config->{$name}) && $config->{$name} == 'cb;'.$field->name) ? ' selected="selected"' : '';
$html .= '<option value="cb;' . $field->name . '"' . $selected . '>' . $field->title . '</option>';
}
$html .= '</optgroup>';
}
$html .= '</select>';
return $html;
}
public function getCRMusers() {
$db = JFactory::getDBO();
$query = $db->getQuery(true);
$query->select($db->qn(array('crm', 'user_id')))
->from($db->qn('#__joomailermailchimpintegration_crm_users'));
$db->setQuery($query);
$data = $db->loadObjectList();
if (count($data)) {
foreach ($data as $d) {
$result[$d->crm][] = $d->user_id;
}
return $result;
} else {
return false;
}
}
}