public function onContentPrepare($context, &$article, &$params, $page = 0) { if (strpos($context, 'com_content.') !== 0 || empty($this->zygocontent)) { return true; } foreach ($this->zygocontent as $field) { $field = array_values((array) $field); if (is_object($field[1])) { $field[1] = array_values((array) $field[1]); } if ($context == "com_content.article" && $field[3] != 1 || $context != "com_content.article" && $field[3] != 2) { $fid = $field[0]; $field_html = ZygoHelper::getField($fid, $article->created_by); if (!trim($field_html)) { continue; } $css = str_replace(',', ' ', $field[4]); $fd = str_replace("uniqueID", "", $fid); $fHTML = "<div class='zygo_content_field zygo_content_field_id_" . $fd . " " . $css . "'>"; // add label if ($field[2]) { $fHTML .= '<span class="zygo_content_label zygo_content_label_field_id_' . $fd . '">'; $fHTML .= ZygoHelper::getLabel($fid) . ": </span>"; } $fHTML .= $field_html; $fHTML .= "</div>"; if ($field[1][0] == "beforeContent") { $article->text = $fHTML . $article->text; } else { if ($field[1][0] == "afterContent") { $article->text .= $fHTML; } else { if ($field[1][0] == "byTag" && isset($field[1][1]) && trim($field[1][1])) { $article->text = str_replace(trim($field[1][1]), $fHTML, $article->text); } } } } } }
function getUsersData(&$params) { $limit = $params->get('count', '5'); $app = JFactory::getApplication(); // if you need use Joomla lifetime to check user, uncomment it // and remove the next line: //$from_time = time() - abs((int)$app->getCfg('lifetime', 15)) * 60 - 1; $from_time = time() - abs((int) $params->get('timeout', 15)) * 60 - 1; $robots_list = array(); if ($params->get('show_robots', 1)) { $robots_types = $params->get('robots_types', ''); $robots_arr = explode("\n", $robots_types); foreach ($robots_arr as $rs) { $rs = trim($rs); if (!$rs) { continue; } $rsArr = explode('|', $rs); if (isset($rsArr[1])) { $robots_list[$rsArr[1]] = $rsArr[0]; } } } $db = JFactory::getDbo(); $query = $db->getQuery(true); $query->clear()->select('u.id as uid, u.name, s.guest, s.data'); $query->from($db->quoteName('#__session') . ' AS s'); $query->join('LEFT', '#__users u ON u.id = s.userid'); //$query->having('COUNT( DISTINCT s.userid ) > 0'); $query->where('s.time > ' . $db->quote($from_time)); $query->where($db->quoteName('client_id') . ' = ' . $db->Quote('0')); $db->setQuery($query); $allOnline = $db->loadObjectList(); $uidsnames = array(); $total = new stdClass(); $total->users = 0; $total->guests = 0; $robots = array(); foreach ($allOnline as $somebody) { if ($somebody->uid) { //$total->users++; $uidsnames[$somebody->uid] = $somebody->name; } else { if ($somebody->guest == 1) { if (!empty($robots_list)) { @(list($tmp, $_default) = explode('|', $somebody->data, 2)); $_default = str_replace('\\0\\0\\0', chr(0) . '*' . chr(0), $_default); if (!($_default = unserialize($_default))) { $total->guests++; continue; } $browser = JArrayHelper::getValue($_default, 'session.client.browser', '', 'string'); $isRobot = false; foreach ($robots_list as $rlFragment => $rlAlias) { if (strpos($browser, $rlFragment) !== FALSE) { $isRobot = true; $robots[$rlAlias] = $browser; break; } } if (!$isRobot) { $total->guests++; } } else { $total->guests++; } } } } $uids = array_keys($uidsnames); $total->users = sizeof($uids); $uids = array_slice($uids, 0, $limit); $_members = array(); if (!empty($uids)) { $rows = ZygoHelper::getUsersInfo($uids); $av_field = $params->get('avatar'); foreach ($uids as $uid) { $_obj = new stdClass(); $_obj->id = $uid; $_obj->name = $uidsnames[$uid]; $_obj->avatar = ZygoHelper::getAvatar($uid, $av_field); $_members[] = $_obj; } } return array($_members, $total, $robots); }
/** * Retrieve zygo profile params from plg_user_zygo_profile and save them as * array of arrays ($profile) * $profile[field id][field key] = field_value * * @return void */ public static function getProfileParams() { if (self::$profile) { return; } self::$zygo_plugin = JPluginHelper::getPlugin('user', 'zygo_profile'); self::$zygo_params = new JRegistry(); self::$zygo_params->loadString(self::$zygo_plugin->params); if (empty(self::$zygo_params)) { return; } $userinfo = self::$zygo_params->get('userinfo'); if (empty($userinfo) || !is_object($userinfo) && !is_array($userinfo)) { return; } self::$profile = array(); $ids = is_object($userinfo) ? $userinfo->fieldName : $userinfo['fieldName']; $idsNums = array(); foreach ($ids as $num => $id) { $idsNums[$num] = $id; } foreach ($userinfo as $nkey => $obj) { if ($nkey == 'fieldName' || empty($obj) || is_string($obj)) { continue; } foreach ($obj as $fkey => $val) { $id = $idsNums[$fkey]; if ($id == "uniqueID0") { continue; } if (!isset(self::$profile[$id])) { self::$profile[$id] = array(); } self::$profile[$id][$nkey] = $val; } } }
" /> <?php } } ?> </div> <div class="mod_zygo_total"> <?php if ($total->users) { $termUser = ZygoHelper::getPluralTerm($total->users, "1", "2", "3"); echo '<span class="mod_zygo_total_users">'; echo JText::sprintf('MOD_ZYGO_ONLINE_USER' . $termUser, $total->users); echo '</span>'; } if ($params->get('show_guest', 1) && $total->guests) { $termGuest = ZygoHelper::getPluralTerm($total->guests, "1", "2", "3"); if ($total->users) { echo ' ' . JText::_('MOD_ZYGO_ONLINE_AND') . ' '; } echo '<span class="mod_zygo_total_guests">'; echo JText::sprintf('MOD_ZYGO_ONLINE_GUEST' . $termGuest, $total->guests); echo '</span>'; } echo " " . JText::_("MOD_ZYGO_ONLINE_ONLINE"); ?> </div> <?php if (!empty($robots) && $params->get('show_robots', 0)) {