/**
  * validate the elements data against the rule
  * @param string data to check
  * @param object element
  * @param int plugin sequence ref
  * @return bol true if validation passes, false if fails
  */
 function validate($data, &$element, $c)
 {
     if (empty($data)) {
         return false;
     }
     $params = $this->getParams();
     //as ornot is a radio button it gets json encoded/decoded as an object
     $ornot = (object) $params->get('emailexists_or_not');
     $ornot = isset($ornot->{$c}) ? $ornot->{$c} : 'fail_if_exists';
     jimport('joomla.user.helper');
     $db = FabrikWorker::getDbo(true);
     $query = $db->getQuery(true);
     $query->select('id')->from('#__users')->where('email = ' . $db->quote($data));
     $db->setQuery($query);
     $result = $db->loadResult();
     if (!$result) {
         if ($ornot == 'fail_if_exists') {
             return true;
         }
     } else {
         if ($ornot == 'fail_if_not_exists') {
             return true;
         }
     }
     return false;
 }
Exemple #2
0
 /**
  * Method to get the field options.
  *
  * @return  array  The field option objects.
  */
 protected function getOptions()
 {
     $connectionDd = $this->element['observe'];
     $connectionName = 'connection_id';
     $connId = (int) $this->form->getValue($connectionName);
     $options = array();
     $db = FabrikWorker::getDbo(true);
     // DB join element observes 'params___join_conn_id'
     if (strstr($connectionDd, 'params_') && $connId === 0) {
         $connectionName = str_replace('params_', 'params.', $connectionDd);
         $connId = (int) $this->form->getValue($connectionName);
     }
     if ($connectionDd == '') {
         // We are not monitoring a connection drop down so load in all tables
         $query = "SHOW TABLES";
         $db->setQuery($query);
         $items = $db->loadColumn();
         $options[] = JHTML::_('select.option', null, null);
         foreach ($items as $l) {
             $options[] = JHTML::_('select.option', $l, $l);
         }
     } else {
         // Delay for the connection to trigger an update via js.
     }
     return $options;
 }
Exemple #3
0
 /**
  * Display the view
  */
 function display()
 {
     $document = JFactory::getDocument();
     $viewName = JRequest::getVar('view', 'package', 'default', 'cmd');
     $viewType = $document->getType();
     // Set the default view name from the Request
     $view = $this->getView($viewName, $viewType);
     //if the view is a package create and assign the table and form views
     $tableView = $this->getView('list', $viewType);
     $listModel = $this->getModel('list', 'FabrikFEModel');
     $tableView->setModel($listModel, true);
     $view->_tableView = $tableView;
     $view->_formView =& $this->getView('Form', $viewType);
     $formModel = $this->getModel('Form', 'FabrikFEModel');
     $formModel->setDbo(FabrikWorker::getDbo());
     $view->_formView->setModel($formModel, true);
     // Push a model into the view
     $model = $this->getModel($viewName, 'FabrikFEModel');
     $model->setDbo(FabrikWorker::getDbo());
     if (!JError::isError($model)) {
         $view->setModel($model, true);
     }
     // Display the view
     $view->assign('error', $this->getError());
     $view->display();
 }
Exemple #4
0
	function doCron(&$pluginManager)
	{
		$db = FabrikWorker::getDbo();
		$cid = JRequest::getVar('element_id', array(), 'method', 'array');
		$query = $db->getQuery();
		$query->select('id, plugin')->from('#__{package}_cron');
		if (!empty($cid)) {
			$query->where(" id IN (" . implode(',', $cid).")");
		}
		$db->setQuery($query);
		$rows = $db->loadObjectList();
		$viewModel = JModel::getInstance('view', 'FabrikFEModel');
		$c = 0;
		foreach ($rows as $row) {
			//load in the plugin
			$plugin = $pluginManager->getPlugIn($row->plugin, 'cron');
			$plugin->setId($row->id);
			$params = $plugin->getParams();

			$thisViewModel = clone($viewModel);
			$thisViewModel->setId($params->get('table'));
			$table = $viewModel->getTable();
			$total 						= $thisViewModel->getTotalRecords();
			$nav = $thisViewModel->getPagination($total, 0, $total);
			$data  = $thisViewModel->getData();
			// $$$ hugh - added table model param, in case plugin wants to do further table processing
			$c = $c + $plugin->process($data, $thisViewModel);
		}
		$query = $db->getQuery();
		$query->update('#__{package}_cron')->set('lastrun=NOW()')->where("id IN (".implode(',', $cid).")");
		$db->setQuery($query);
		$db->query();
	}
Exemple #5
0
 /**
  * Method to get the list of groups and elements
  * grouped by group and element.
  *
  * @return  array  The field option objects as a nested array in groups.
  */
 protected function getGroups()
 {
     $app = JFactory::getApplication();
     $input = $app->input;
     $db = FabrikWorker::getDbo(true);
     $query = $db->getQuery(true);
     $query->select('form_id')->from($db->quoteName('#__{package}_formgroup') . ' AS fg')->join('LEFT', '#__{package}_elements AS e ON e.group_id = fg.group_id')->where('e.id = ' . $input->getInt('elementid'));
     $db->setQuery($query);
     $formId = $db->loadResult();
     $formModel = JModelLegacy::getInstance('Form', 'FabrikFEModel');
     $formModel->setId($formId);
     $rows = array();
     $rows[FText::_('COM_FABRIK_GROUPS')] = array();
     $rows[FText::_('COM_FABRIK_ELEMENTS')] = array();
     // Get available element types
     $groups = $formModel->getGroupsHiarachy();
     foreach ($groups as $groupModel) {
         $group = $groupModel->getGroup();
         $label = $group->name;
         $value = 'fabrik_trigger_group_group' . $group->id;
         $rows[FText::_('COM_FABRIK_GROUPS')][] = JHTML::_('select.option', $value, $label);
         $elementModels = $groupModel->getMyElements();
         foreach ($elementModels as $elementModel) {
             $label = $elementModel->getFullName(false, false);
             $value = 'fabrik_trigger_element_' . $elementModel->getFullName(true, false);
             $rows[FText::_('COM_FABRIK_ELEMENTS')][] = JHTML::_('select.option', $value, $label);
         }
     }
     reset($rows);
     asort($rows[FText::_('COM_FABRIK_ELEMENTS')]);
     return $rows;
 }
Exemple #6
0
 /**
  * validate the elements data against the rule
  * @param string data to check
  * @param object element
  * @param int plugin sequence ref
  * @return bol true if validation passes, false if fails
  */
 function validate($data, &$element, $c)
 {
     if (empty($data)) {
         return false;
     }
     $params =& $this->getParams();
     $ornot = $params->get('emailexists_or_not');
     $ornot = $ornot[$c];
     $condition = $params->get('emailexists-validation_condition');
     $condition = $condition[$c];
     if ($condition !== '') {
         if (@eval($condition)) {
             return true;
         }
     }
     jimport('joomla.user.helper');
     $db = FabrikWorker::getDbo();
     $db->setQuery("SELECT id FROM #__users WHERE email = '{$data}'");
     $result = $db->loadResult();
     if (!$result) {
         if ($ornot == 'fail_if_exists') {
             return true;
         }
     } else {
         if ($ornot == 'fail_if_not_exists') {
             return true;
         }
     }
     return false;
 }
Exemple #7
0
 function getOptions()
 {
     // Initialize variables.
     $options = array();
     $db = FabrikWorker::getDbo();
     $query = $db->getQuery(true);
     $query->select('f.id AS value, f.label AS text, l.id AS listid');
     $query->from('#__fabrik_forms AS f');
     $query->join('LEFT', '#__fabrik_lists As l ON f.id = l.form_id');
     $query->where('f.published = 1 AND l.db_table_name =' . $db->Quote($this->form->getValue('params.join_db_name')));
     $query->order('f.label');
     // Get the options.
     $db->setQuery($query);
     $options = $db->loadObjectList('value');
     // Check for a database error.
     if ($db->getErrorNum()) {
         JError::raiseWarning(500, $db->getErrorMsg());
     }
     if (empty($options)) {
         $options[] = JHTML::_('select.option', '', JText::_('COM_FABRIK_NO_POPUP_FORMS_AVAILABLE'));
     } else {
         array_unshift($options, JHtml::_('select.option', '', JText::_('COM_FABRIK_PLEASE_SELECT')));
     }
     return $options;
 }
Exemple #8
0
 /**
  * list of items
  *
  * @return  null
  */
 public function dolist()
 {
     $app = JFactory::getApplication();
     $input = $app->input;
     $db = FabrikWorker::getDbo(true);
     $query = $db->getQuery(true);
     $list = $input->get('list', 'form');
     $selected = $input->get('selected');
     $query->select('id, label')->from('#__fabrik_' . $list . 's');
     if ($selected != '') {
         // $query->where('id NOT IN ('.$selected.')');
     }
     $db->setQuery($query);
     $rows = $db->loadObjectList();
     echo "<ul id=\"{$list}-additems\">";
     if (empty($rows)) {
         echo "<li>" . JText::sprintf('COM_FABRIK_NO_FREE_ITEMS_FOUND') . "</li>";
     } else {
         foreach ($rows as $row) {
             echo "<li><a href=\"#\" id=\"{$row->id}\">{$row->label}</a>";
         }
     }
     echo "</ul>";
     $script = "\$('{$list}-additems').getElements('a').addEvent('click', function(e){\n\t\t\tFabrik.fireEvent('fabrik.package.item.selected', [e]);\n\t\t});";
     FabrikHelperHTML::addScriptDeclaration($script);
 }
Exemple #9
0
 /**
  * Display the package view
  *
  * @param   boolean  $cachable   If true, the view output will be cached - NOTE not actually used to control caching!!!
  * @param   array    $urlparams  An array of safe url parameters and their variable types, for valid values see {@link JFilterInput::clean()}.
  *
  * @return  JController  A JController object to support chaining.
  */
 public function display($cachable = false, $urlparams = false)
 {
     $document = JFactory::getDocument();
     $app = JFactory::getApplication();
     $input = $app->input;
     $viewName = $input->get('view', 'package');
     $viewType = $document->getType();
     // Set the default view name from the Request
     $view = $this->getView($viewName, $viewType);
     // If the view is a package create and assign the table and form views
     $tableView = $this->getView('list', $viewType);
     $listModel = $this->getModel('list', 'FabrikFEModel');
     $tableView->setModel($listModel, true);
     $view->tableView = $tableView;
     $view->formView = $this->getView('Form', $viewType);
     $formModel = $this->getModel('Form', 'FabrikFEModel');
     $formModel->setDbo(FabrikWorker::getDbo());
     $view->formView->setModel($formModel, true);
     // Push a model into the view
     if ($model = $this->getModel($viewName, 'FabrikFEModel')) {
         $model->setDbo(FabrikWorker::getDbo());
         $view->setModel($model, true);
     }
     // Display the view
     $view->error = $this->getError();
     $view->display();
     return $this;
 }
Exemple #10
0
 function getOptions()
 {
     $connectionDd = $this->element['observe'];
     $options = array();
     $db = FabrikWorker::getDbo(true);
     if ($connectionDd == '') {
         //we are not monitoring a connection drop down so load in all tables
         $query = "SHOW TABLES";
         $db->setQuery($query);
         $items = $db->loadResultArray();
         // Check for a database error.
         if ($db->getErrorNum()) {
             JError::raiseWarning(500, $db->getErrorMsg());
         }
         foreach ($items as $l) {
             $options[] = JHTML::_('select.option', $l, $l);
         }
     } else {
         $connId = $this->form->getValue('connection_id');
         $query = $db->getQuery(true);
         $query->select('id AS value, db_table_name AS ' . $db->Quote('text'))->from('#__{package}_lists')->where('connection_id = ' . (int) $connId);
         $db->setQuery($query);
         $items = $db->loadObjectList();
         foreach ($items as $item) {
             $options[] = JHTML::_('select.option', $item->value, $item->text);
         }
     }
     return $options;
 }
Exemple #11
0
 function getOptions()
 {
     $db = FabrikWorker::getDbo();
     $check = $this->element['checkexists'] ? (bool) $this->element['checkexists'] : false;
     if ($check) {
         $q = explode(" ", $this->element['query']);
         $i = array_search('FROM', $q);
         if (!$i) {
             $i = array_search('from', $q);
         }
         $i++;
         $tbl = $db->replacePrefix($q[$i]);
         $db->setQuery("SHOW TABLES");
         $rows = $db->loadResultArray();
         $found = in_array($tbl, $rows) ? true : false;
         if (!$found) {
             return array(JHTML::_('select.option', $tbl . ' not found', ''));
         }
     }
     $db->setQuery($this->element['query']);
     $key = $this->element['key_field'] ? $this->element['key_field'] : 'value';
     $val = $this->element['value_field'] ? $this->element['value_field'] : $this->name;
     if ($this->element['add_select']) {
         $rows = array(JHTML::_('select.option', ''));
         $rows = array_merge($rows, (array) $db->loadObjectList());
     } else {
         $rows = $db->loadObjectList();
     }
     return $rows;
 }
Exemple #12
0
 /**
  * Method to get the field input markup.
  *
  * @return	string	The field input markup.
  */
 protected function getInput()
 {
     $app = JFactory::getApplication();
     $input = $app->input;
     $option = $input->get('option');
     if (!in_array($option, array('com_modules', 'com_menus', 'com_advancedmodules'))) {
         $db = FabrikWorker::getDbo(true);
         $query = $db->getQuery(true);
         $query->select('form_id')->from('#__{package}_formgroup')->where('group_id = ' . (int) $this->form->getValue('id'));
         $db->setQuery($query);
         $this->value = $db->loadResult();
         $this->form->setValue('form', null, $this->value);
     }
     if ((int) $this->form->getValue('id') == 0 || !$this->element['readonlyonedit']) {
         return parent::getInput();
     } else {
         $options = (array) $this->getOptions();
         $v = '';
         foreach ($options as $opt) {
             if ($opt->value == $this->value) {
                 $v = $opt->text;
             }
         }
     }
     return '<input type="hidden" value="' . $this->value . '" name="' . $this->name . '" />' . '<input type="text" value="' . $v . '" name="form_justalabel" class="readonly" readonly="true" />';
 }
Exemple #13
0
	/**
	 * process the plugin, called when form is submitted
	 *
	 * @param object $params
	 * @param object form
	 */

	function onBeforeStore( &$params, &$formModel )
	{
		global $vbulletin;
		define(VB_AREA, 'fabrik');
		define(THIS_SCRIPT, 'fabrik');

		// Initialize some variables
		$db	= FabrikWorker::getDbo();

		$data = $formModel->_formData;

		// Check for request forgeries
		JRequest::checkToken() or jexit('Invalid Token');

		$elementModel = $formModel->getPluginManager()->getElementPlugin($params->get('vb_forum_field'));

		$element = $elementModel->getElement(true);
		$this->map_forum_field = $elementModel->getFullName();

		$this->vb_parent_forum = $params->get('vb_parent', '');

		$method = "POST";
		$url = JURI::base(). "forum/mkforum.php";
		$vars = array();
		$vars['forum_name'] = $data[$this->map_forum_field];
		$vars['forum_parent'] = $this->vb_parent_forum;
		$res = $this->doRequest($method, $url, $vars);
	}
Exemple #14
0
 /**
  * Set which fieldsets should be used
  *
  * @since   3.0.7
  *
  * @return  array  fieldset names
  */
 private function setFieldSets()
 {
     $input = $this->app->input;
     // From list data view in admin
     $id = $input->getInt('listid', 0);
     // From list of lists checkbox selection
     $cid = $input->get('cid', array(0), 'array');
     $cid = ArrayHelper::toInteger($cid);
     if ($id === 0) {
         $id = $cid[0];
     }
     if ($id !== 0) {
         $db = FabrikWorker::getDbo();
         $query = $db->getQuery(true);
         $query->select('label')->from('#__{package}_lists')->where('id = ' . $id);
         $db->setQuery($query);
         $this->listName = $db->loadResult();
     }
     $fieldsets = array('details');
     if ($this->model->canEmpty()) {
         $fieldsets[] = 'drop';
     }
     $fieldsets[] = $id === 0 ? 'creation' : 'append';
     $fieldsets[] = 'format';
     return $fieldsets;
 }
Exemple #15
0
 protected function createList($listModel, $adminListModel)
 {
     $params = $this->getParams();
     $table = $params->get('create_list');
     if ($table == '') {
         return;
     }
     $db = FabrikWorker::getDbo();
     //see if we have a list that already points to the table
     $query = $db->getQuery(true);
     $query->select('id')->from('jos_{package}_lists')->where('db_table_name = ' . $db->nameQuote($table));
     $db->setQuery($query);
     $res = (int) $db->loadResult();
     $now = JFactory::getDate()->toMySQL();
     $user = JFactory::getUser();
     $data = array();
     //fill in some default data
     $data['filter_action'] = 'onchange';
     $data['access'] = 1;
     $data['id'] = $res;
     $data['label'] = $table;
     $data['connection_id'] = 1;
     $data['db_table_name'] = $table;
     $data['published'] = 1;
     $data['created'] = $now;
     $data['created_by'] = $user->get('id');
     JRequest::setVar('jform', $data);
     $adminListModel->save($data);
 }
Exemple #16
0
 protected function getInput()
 {
     $db = FabrikWorker::getDbo();
     $query = $db->getQuery(true);
     $query->select('form_id')->from('#__{package}_formgroup')->where('group_id = ' . (int) $this->form->getValue('id'));
     $db->setQuery($query);
     $this->value = $db->loadResult();
     return parent::getInput();
 }
Exemple #17
0
 /**
  * Returns a reference to the a Table object, always creating it.
  *
  * @param   string $type   The table type to instantiate
  * @param   string $prefix A prefix for the table class name. Optional.
  * @param   array  $config Configuration array for model. Optional.
  *
  * @return  JTable    A database object
  */
 public function getTable($type = 'List', $prefix = 'FabrikTable', $config = array())
 {
     $sig = $type . $prefix . implode('.', $config);
     if (!array_key_exists($sig, $this->tables)) {
         $config['dbo'] = FabrikWorker::getDbo(true);
         $this->tables[$sig] = FabTable::getInstance($type, $prefix, $config);
     }
     return $this->tables[$sig];
 }
Exemple #18
0
 function getOptions()
 {
     //ONLY WORKS INSIDE ELEMENT :(
     $group_id = $this->form->getValue('group_id');
     $query = "SELECT ordering AS value, name AS text" . "\n FROM #__{package}_elements " . "\n WHERE group_id = " . (int) $group_id . "\n AND published >= 0" . "\n ORDER BY ordering";
     // $$$ rob - rather than trying to override the JHTML class lets
     // just swap {package} for the current package.
     $query = FabrikWorker::getDbo()->replacePrefix($query);
     return JHTML::_('list.genericordering', $query);
 }
Exemple #19
0
 function userAjax()
 {
     $db = FabrikWorker::getDbo();
     require_once COM_FABRIK_FRONTEND . DS . "user_ajax.php";
     $method = JRequest::getVar('method', '');
     $userAjax = new userAjax($db);
     if (method_exists($userAjax, $method)) {
         $userAjax->{$method}();
     }
 }
Exemple #20
0
 /**
  * Display the view
  */
 public function display($tpl = null)
 {
     $db = FabrikWorker::getDbo(true);
     $query = $db->getQuery(true);
     $query->select('*')->from('#__{package}_log')->where('message_type != ""')->order('timedate_created DESC');
     $db->setQuery($query, 0, 10);
     $this->logs = $db->loadObjectList();
     $this->feed = $this->get('RSSFeed');
     parent::display($tpl);
 }
Exemple #21
0
 function getOptions()
 {
     $db = FabrikWorker::getDbo(true);
     $query = $db->getQuery(true);
     $query->select("id AS value, label AS " . FabrikString::safeColName('text'));
     $query->from("#__{package}_forms");
     $query->order("value DESC");
     $db->setQuery($query);
     $rows = $db->loadObjectList();
     return $rows;
 }
Exemple #22
0
    /**
     * Do the plugin action
     *
     * @param   array  &$data  Record data
     * @param   object  &$listModel  List model
     * @return number of records updated
     */
    public function process(&$data, &$listModel)
    {
        $db = FabrikWorker::getDbo();
        $query = $db->getQuery(true);
        $query->select('n.*, e.event AS event, e.id AS event_id,
		n.user_id AS observer_id, observer_user.name AS observer_name, observer_user.email AS observer_email,
		e.user_id AS creator_id, creator_user.name AS creator_name, creator_user.email AS creator_email')->from('#__{package}_notification AS n')->join('LEFT', '#__{package}_notification_event AS e ON e.reference = n.reference')->join('LEFT', '#__{package}_notification_event_sent AS s ON s.notification_event_id = e.id')->join('INNER', '#__users AS observer_user ON observer_user.id = n.user_id')->join('INNER', '#__users AS creator_user ON creator_user.id = e.user_id')->where('(s.sent <> 1 OR s.sent IS NULL)  AND  n.user_id <> e.user_id')->order('n.reference');
        $db->setQuery($query);
        $rows = $db->loadObjectList();
        $email_from = $this->config->get('mailfrom');
        $siteName = $this->config->get('sitename');
        $sent = array();
        $usermsgs = array();
        $successMails = array();
        $failedMails = array();
        foreach ($rows as $row) {
            /*
             * {observer_name, creator_name, event, record url
             * dear %s, %s has %s on %s
             */
            $event = FText::_($row->event);
            list($listId, $formId, $rowId) = explode('.', $row->reference);
            $url = JRoute::_('index.php?option=com_fabrik&view=details&listid=' . $listId . '&formid=' . $formId . '&rowid=' . $rowId);
            $msg = JText::sprintf('FABRIK_NOTIFICATION_EMAIL_PART', $row->creator_name, $url, $event);
            if (!array_key_exists($row->observer_id, $usermsgs)) {
                $usermsgs[$row->observer_email] = array();
            }
            $usermsgs[$row->observer_email][] = $msg;
            $query->clear();
            $query->insert('#__{package}_notification_event_sent')->set(array('notification_event_id = ' . $row->event_id, 'user_id = ' . $row->observer_id, 'sent = 1'));
            $sent[] = (string) $query;
        }
        $subject = $siteName . ": " . FText::_('FABRIK_NOTIFICATION_EMAIL_SUBJECT');
        foreach ($usermsgs as $email => $messages) {
            $msg = implode(' ', $messages);
            $mailer = JFactory::getMailer();
            if ($mailer->sendMail($email_from, $email_from, $email, $subject, $msg, true)) {
                $successMails[] = $email;
            } else {
                $failedMails[] = $email;
            }
        }
        if (!empty($sent)) {
            $sent = implode(';', $sent);
            $db->setQuery($sent);
            $db->execute();
        }
        $this->log = count($sent) . ' notifications sent.<br />';
        $this->log .= 'Emailed users: <ul><li>' . implode('</li><li>', $successMails) . '</li></ul>';
        if (!empty($failedMails)) {
            $this->log .= 'Failed emails: <ul><li>' . implode('</li><li>', $failedMails) . '</li></ul>';
        }
        return count($successMails);
    }
 function getOptions()
 {
     $a = array(JHTML::_('select.option', '', JText::_('COM_FABRIK_PLEASE_SELECT')));
     $db = FabrikWorker::getDbo(true);
     $query = $db->getQuery(true);
     $query->select("id AS value, label AS text")->from("#__{package}_visualizations")->where("published =1")->order("text");
     $db->setQuery($query);
     $elementstypes = $db->loadObjectList();
     $elementstypes = array_merge($a, $elementstypes);
     return $elementstypes;
 }
Exemple #24
0
 private function getRange()
 {
     $listModel = $this->getlistModel();
     $fabrikdb = $listModel->getDb();
     $db = FabrikWorker::getDbo();
     $element = $this->getDataElement();
     $elementShortName = $element->getElement()->name;
     $fabrikdb->setQuery("SELECT MIN(`{$elementShortName}`) AS min, MAX(`{$elementShortName}`) AS max FROM " . $listModel->getTable()->db_table_name);
     $range = $fabrikdb->loadObject();
     $fullName = $element->getFullName();
     return $range;
 }
Exemple #25
0
 /**
  * Custom user ajax call
  *
  * @return  void
  */
 public function userAjax()
 {
     $db = FabrikWorker::getDbo();
     require_once COM_FABRIK_FRONTEND . '/user_ajax.php';
     $app = JFactory::getApplication();
     $input = $app->input;
     $method = $input->get('method', '');
     $userAjax = new userAjax($db);
     if (method_exists($userAjax, $method)) {
         $userAjax->{$method}();
     }
 }
Exemple #26
0
	/**
	 * do the plugin action
	 * @return number of records updated
	 */

	function process(&$data)
	{

		$db = FabrikWorker::getDbo();

		$sql = "SELECT n.*, e.event AS event, e.id AS event_id,
		n.user_id AS observer_id, observer_user.name AS observer_name, observer_user.email AS observer_email,
		e.user_id AS creator_id, creator_user.name AS creator_name, creator_user.email AS creator_email
		 FROM #__{package}_notification AS n".
		"\n LEFT JOIN #__{package}_notification_event AS e ON e.reference = n.reference".
		"\n LEFT JOIN #__{package}_notification_event_sent AS s ON s.notification_event_id = e.id".
		"\n INNER JOIN #__users AS observer_user ON observer_user.id = n.user_id".
		"\n INNER JOIN #__users AS creator_user ON creator_user.id = e.user_id".
		"\n WHERE (s.sent <> 1 OR s.sent IS NULL)".
		"\n AND  n.user_id <> e.user_id".
		"\n ORDER BY n.reference"; //don't bother informing users about events that they've created themselves
		$db->setQuery($sql);
		$rows = $db->loadObjectList();

		$config = JFactory::getConfig();
		$email_from = $config->getValue('mailfrom');
		$sitename = $config->getValue('sitename');
		$sent = array();
		$usermsgs = array();
		foreach ($rows as $row) {
			/*
			 * {observer_name, creator_name, event, record url
			 * dear %s, %s has %s on %s
			 */
			$event = JText::_($row->event);
			list($listid, $formid, $rowid) = explode('.', $row->reference);

			$url = JRoute::_('index.php?option=com_fabrik&view=details&listid='.$listid.'&formid='.$formid.'&rowid='.$rowid);
			$msg = JText::sprintf('FABRIK_NOTIFICATION_EMAIL_PART', $row->creator_name, $url, $event);
			if (!array_key_exists($row->observer_id, $usermsgs )) {
				$usermsgs[$row->observer_email] = array();
			}
			$usermsgs[$row->observer_email][] = $msg;

			$sent[] = 'INSERT INTO #__{package}_notification_event_sent (`notification_event_id`, `user_id`, `sent`) VALUES ('.$row->event_id.', '.$row->observer_id.', 1)';
		}
		$subject = $sitename.": " .JText::_('FABRIK_NOTIFICATION_EMAIL_SUBJECT');
		foreach ($usermsgs as $email => $messages) {
			$msg = implode( ' ', $messages);
			$res = JUtility::sendMail( $email_from, $email_from, $email, $subject, $msg, true);
		}
		if (!empty( $sent )) {
			$sent = implode(';', $sent);
			$db->setQuery($sent);
			$db->query();
		}
	}
Exemple #27
0
 public function run()
 {
     $db = FabrikWorker::getDbo(true);
     $cid = JRequest::getVar('cid', array(0), 'method', 'array');
     JArrayHelper::toInteger($cid);
     $cid = implode(',', $cid);
     $query = $db->getQuery(true);
     $query->select('*')->from('#__{package}_cron')->where('id IN (' . $cid . ')');
     $db->setQuery($query);
     $rows = $db->loadObjectList();
     $adminListModel = JModel::getInstance('List', 'FabrikModel');
     //JModel::addIncludePath(JPATH_SITE.DS.'components'.DS.'com_fabrik'.DS.'models');
     $pluginManager = JModel::getInstance('Pluginmanager', 'FabrikFEModel');
     $listModel = JModel::getInstance('list', 'FabrikFEModel');
     $c = 0;
     $log = FabTable::getInstance('Log', 'FabrikTable');
     foreach ($rows as $row) {
         //load in the plugin
         $rowParams = json_decode($row->params);
         $log->message = '';
         $log->id = null;
         $log->referring_url = '';
         $log->message_type = 'plg.cron.' . $row->plugin;
         $plugin =& $pluginManager->getPlugIn($row->plugin, 'cron');
         $table = FabTable::getInstance('cron', 'FabrikTable');
         $table->load($row->id);
         $plugin->setRow($table);
         $params =& $plugin->getParams();
         $thisListModel = clone $listModel;
         $thisAdminListModel = clone $adminListModel;
         $tid = (int) $rowParams->table;
         if ($tid !== 0) {
             $thisListModel->setId($tid);
             $log->message .= "\n\n{$row->plugin}\n listid = " . $thisListModel->getId();
             //. var_export($table);
             if ($plugin->requiresTableData()) {
                 $table =& $listModel->getTable();
                 $data = $thisListModel->getData();
                 $log->message .= "\n" . $thisListModel->_buildQuery();
             }
         } else {
             $data = array();
         }
         // $$$ hugh - added table model param, in case plugin wants to do further table processing
         $c = $c + $plugin->process($data, $thisListModel, $thisAdminListModel);
         if ($plugin->getParams()->get('log', 0) == 1) {
             $log->message = $plugin->getLog() . "\n\n" . $log->message;
             $log->store();
         }
     }
     $this->setRedirect('index.php?option=com_fabrik&view=crons', $c . " records updated");
 }
Exemple #28
-1
 /**
  * Method to load and return a model object.
  *
  * @param	string  The name of the model.
  * @param	string	Optional model prefix.
  * @param	array	Configuration array for the model. Optional.
  * @return	mixed	Model object on success; otherwise null failure.
  * @since	1.6		Replaces _createModel.
  */
 protected function createModel($name, $prefix = '', $config = array())
 {
     // use true so that we always use the Joomla db when in admin.
     // otherwise if alt cnn set to default that is loaded and the fabrik tables are not found
     $db = FabrikWorker::getDbo(true);
     $config['dbo'] = $db;
     $r = parent::createModel($name, $prefix, $config);
     return $r;
 }
Exemple #29
-1
	function delete()
	{
		// Check for request forgeries
		JRequest::checkToken() or die('Invalid Token');
		$ids = JRequest::getVar('cid', array());
		JArrayHelper::toInteger($ids);
		$db = FabrikWorker::getDbo();
		$db->setQuery("DELETE FROM #__{package}_notification WHERE id IN (".implode(',', $ids).")");
		$db->query();
	}
Exemple #30
-1
 /**
  * Get the list id from the filename
  *
  * @param   string  $tableName  The name of the file to be loaded.  Should only be file name--not a path.
  *
  * @author Kyle
  *
  * @return  int  listid  The id frabrik gives the list that hold information about files named $tablename
  * returns an empty() type if no table exists with the same name as $tablename.
  */
 protected function getListIdFromFileName($tableName)
 {
     // Get site's database
     $db = FabrikWorker::getDbo(true);
     $query = $db->getQuery(true);
     $query->select('id')->from('#__{package}_lists')->where('db_table_name = ' . $db->quote($tableName));
     $db->setQuery($query);
     $id = $db->loadResult();
     return $id;
 }