/** * function to get the complete information for one or more events * * @param date $start get events with start date >= this date * @param integer $type get events on the a specific event type (by event_type_id) * @param integer $eventId return a single event - by event id * @param date $end also get events with end date >= this date * * @return array $all array of all the events that are searched * @static * @access public */ static function &getCompleteInfo($start = null, $type = null, $eventId = null, $end = null) { // if start and end date are NOT passed, return all events with start_date OR end_date >= today CRM-5133 if ($start) { // get events with start_date >= requested start $startDate = CRM_Utils_Type::escape($start, 'Date'); } else { // get events with start date >= today $startDate = date("Ymd"); } if ($end) { // also get events with end_date >= requested end $endDate = CRM_Utils_Type::escape($end, 'Date'); } else { // OR also get events with end date >= today $endDate = date("Ymd"); } $dateCondition = "AND (civicrm_event.start_date >= {$startDate} OR civicrm_event.end_date >= {$endDate})"; if ($type) { $typeCondition = " AND civicrm_event.event_type_id = " . CRM_Utils_Type::escape($type, 'Integer'); } // Get the Id of Option Group for Event Types require_once 'CRM/Core/DAO/OptionGroup.php'; $optionGroupDAO = new CRM_Core_DAO_OptionGroup(); $optionGroupDAO->name = 'event_type'; $optionGroupId = null; if ($optionGroupDAO->find(true)) { $optionGroupId = $optionGroupDAO->id; } $query = "\nSELECT\n civicrm_event.id as event_id, \n civicrm_email.email as email, \n civicrm_event.title as title, \n civicrm_event.summary as summary, \n civicrm_event.start_date as start, \n civicrm_event.end_date as end, \n civicrm_event.description as description, \n civicrm_event.is_show_location as is_show_location, \n civicrm_event.is_online_registration as is_online_registration,\n civicrm_event.registration_link_text as registration_link_text,\n civicrm_event.registration_start_date as registration_start_date,\n civicrm_event.registration_end_date as registration_end_date,\n civicrm_option_value.label as event_type, \n civicrm_address.name as address_name, \n civicrm_address.street_address as street_address, \n civicrm_address.supplemental_address_1 as supplemental_address_1, \n civicrm_address.supplemental_address_2 as supplemental_address_2, \n civicrm_address.city as city, \n civicrm_address.postal_code as postal_code, \n civicrm_address.postal_code_suffix as postal_code_suffix, \n civicrm_state_province.abbreviation as state, \n civicrm_country.name AS country\nFROM civicrm_event\nLEFT JOIN civicrm_loc_block ON civicrm_event.loc_block_id = civicrm_loc_block.id\nLEFT JOIN civicrm_address ON civicrm_loc_block.address_id = civicrm_address.id\nLEFT JOIN civicrm_state_province ON civicrm_address.state_province_id = civicrm_state_province.id\nLEFT JOIN civicrm_country ON civicrm_address.country_id = civicrm_country.id\nLEFT JOIN civicrm_email ON civicrm_loc_block.email_id = civicrm_email.id\nLEFT JOIN civicrm_option_value ON (\n civicrm_event.event_type_id = civicrm_option_value.value AND\n civicrm_option_value.option_group_id = %1 )\nWHERE civicrm_event.is_active = 1 \n AND civicrm_event.is_public = 1\n AND (is_template = 0 OR is_template IS NULL)\n {$dateCondition}"; if (isset($typeCondition)) { $query .= $typeCondition; } if (isset($eventId)) { $query .= " AND civicrm_event.id ={$eventId} "; } $query .= " ORDER BY civicrm_event.start_date ASC"; $params = array(1 => array($optionGroupId, 'Integer')); $dao =& CRM_Core_DAO::executeQuery($query, $params); $all = array(); $config = CRM_Core_Config::singleton(); $baseURL = parse_url($config->userFrameworkBaseURL); $url = "@" . $baseURL['host']; if (CRM_Utils_Array::value('path', $baseURL)) { $url .= substr($baseURL['path'], 0, -1); } // check 'view event info' permission $permissions = CRM_Core_Permission::event(CRM_Core_Permission::VIEW); require_once 'CRM/Utils/String.php'; while ($dao->fetch()) { if (in_array($dao->event_id, $permissions)) { $info = array(); $info['uid'] = "CiviCRM_EventID_{$dao->event_id}_" . md5($config->userFrameworkBaseURL) . $url; $info['title'] = $dao->title; $info['event_id'] = $dao->event_id; $info['summary'] = $dao->summary; $info['description'] = $dao->description; $info['start_date'] = $dao->start; $info['end_date'] = $dao->end; $info['contact_email'] = $dao->email; $info['event_type'] = $dao->event_type; $info['is_show_location'] = $dao->is_show_location; $info['is_online_registration'] = $dao->is_online_registration; $info['registration_link_text'] = $dao->registration_link_text; $info['registration_start_date'] = $dao->registration_start_date; $info['registration_end_date'] = $dao->registration_end_date; $address = ''; $addrFields = array('address_name' => $dao->address_name, 'street_address' => $dao->street_address, 'supplemental_address_1' => $dao->supplemental_address_1, 'supplemental_address_2' => $dao->supplemental_address_2, 'city' => $dao->city, 'state_province' => $dao->state, 'postal_code' => $dao->postal_code, 'postal_code_suffix' => $dao->postal_code_suffix, 'country' => $dao->country, 'county' => null); require_once 'CRM/Utils/Address.php'; CRM_Utils_String::append($address, ', ', CRM_Utils_Address::format($addrFields)); $info['location'] = $address; $info['url'] = CRM_Utils_System::url('civicrm/event/info', 'reset=1&id=' . $dao->event_id, true, null, false); $all[] = $info; } } return $all; }
/** * function to get the complete information for one or more events * * @param date $start get events with start date >= this date * @param integer $type get events on the a specific event type (by event_type_id) * @param integer $eventId return a single event - by event id * @param date $end also get events with end date >= this date * @param boolean $onlyPublic include public events only, default TRUE * * @return array $all array of all the events that are searched * @static * @access public */ static function &getCompleteInfo($start = NULL, $type = NULL, $eventId = NULL, $end = NULL, $onlyPublic = TRUE) { $publicCondition = NULL; if ($onlyPublic) { $publicCondition = " AND civicrm_event.is_public = 1"; } $dateCondition = ''; // if start and end date are NOT passed, return all events with start_date OR end_date >= today CRM-5133 if ($start) { // get events with start_date >= requested start $startDate = CRM_Utils_Type::escape($start, 'Date'); $dateCondition .= " AND ( civicrm_event.start_date >= {$startDate} )"; } if ($end) { // also get events with end_date <= requested end $endDate = CRM_Utils_Type::escape($end, 'Date'); $dateCondition .= " AND ( civicrm_event.end_date <= '{$endDate}' ) "; } // CRM-9421 and CRM-8620 Default mode for ical/rss feeds. No start or end filter passed. // Need to exclude old events with only start date // and not exclude events in progress (start <= today and end >= today). DGG if (empty($start) && empty($end)) { // get events with end date >= today, not sure of this logic // but keeping this for backward compatibility as per issue CRM-5133 $today = date("Y-m-d G:i:s"); $dateCondition .= " AND ( civicrm_event.end_date >= '{$today}' OR civicrm_event.start_date >= '{$today}' ) "; } if ($type) { $typeCondition = " AND civicrm_event.event_type_id = " . CRM_Utils_Type::escape($type, 'Integer'); } // Get the Id of Option Group for Event Types $optionGroupDAO = new CRM_Core_DAO_OptionGroup(); $optionGroupDAO->name = 'event_type'; $optionGroupId = NULL; if ($optionGroupDAO->find(TRUE)) { $optionGroupId = $optionGroupDAO->id; } $query = "\nSELECT\n civicrm_event.id as event_id,\n civicrm_email.email as email,\n civicrm_event.title as title,\n civicrm_event.summary as summary,\n civicrm_event.start_date as start,\n civicrm_event.end_date as end,\n civicrm_event.description as description,\n civicrm_event.is_show_location as is_show_location,\n civicrm_event.is_online_registration as is_online_registration,\n civicrm_event.registration_link_text as registration_link_text,\n civicrm_event.registration_start_date as registration_start_date,\n civicrm_event.registration_end_date as registration_end_date,\n civicrm_option_value.label as event_type,\n civicrm_address.name as address_name,\n civicrm_address.street_address as street_address,\n civicrm_address.supplemental_address_1 as supplemental_address_1,\n civicrm_address.supplemental_address_2 as supplemental_address_2,\n civicrm_address.city as city,\n civicrm_address.postal_code as postal_code,\n civicrm_address.postal_code_suffix as postal_code_suffix,\n civicrm_state_province.abbreviation as state,\n civicrm_country.name AS country\nFROM civicrm_event\nLEFT JOIN civicrm_loc_block ON civicrm_event.loc_block_id = civicrm_loc_block.id\nLEFT JOIN civicrm_address ON civicrm_loc_block.address_id = civicrm_address.id\nLEFT JOIN civicrm_state_province ON civicrm_address.state_province_id = civicrm_state_province.id\nLEFT JOIN civicrm_country ON civicrm_address.country_id = civicrm_country.id\nLEFT JOIN civicrm_email ON civicrm_loc_block.email_id = civicrm_email.id\nLEFT JOIN civicrm_option_value ON (\n civicrm_event.event_type_id = civicrm_option_value.value AND\n civicrm_option_value.option_group_id = %1 )\nWHERE civicrm_event.is_active = 1\n AND (is_template = 0 OR is_template IS NULL)\n {$publicCondition}\n {$dateCondition}"; if (isset($typeCondition)) { $query .= $typeCondition; } if (isset($eventId)) { $query .= " AND civicrm_event.id ={$eventId} "; } $query .= " ORDER BY civicrm_event.start_date ASC"; $params = array(1 => array($optionGroupId, 'Integer')); $dao = CRM_Core_DAO::executeQuery($query, $params); $all = array(); $config = CRM_Core_Config::singleton(); $baseURL = parse_url($config->userFrameworkBaseURL); $url = "@" . $baseURL['host']; if (!empty($baseURL['path'])) { $url .= substr($baseURL['path'], 0, -1); } // check 'view event info' permission //@todo - per CRM-14626 we have resolved that 'view event info' means 'view ALL event info' // and passing in the specific permission here will short-circuit the evaluation of permission to // see specific events (doesn't seem relevant to this call // however, since this function is accessed only by a convoluted call from a joomla block function // it seems safer not to touch here. Suggestion is that CRM_Core_Permission::check(array or relevant permissions) would // be clearer & safer here $permissions = CRM_Core_Permission::event(CRM_Core_Permission::VIEW); // check if we're in shopping cart mode for events $enable_cart = CRM_Core_BAO_Setting::getItem(CRM_Core_BAO_Setting::EVENT_PREFERENCES_NAME, 'enable_cart'); if ($enable_cart) { } while ($dao->fetch()) { if (!empty($permissions) && in_array($dao->event_id, $permissions)) { $info = array(); $info['uid'] = "CiviCRM_EventID_{$dao->event_id}_" . md5($config->userFrameworkBaseURL) . $url; $info['title'] = $dao->title; $info['event_id'] = $dao->event_id; $info['summary'] = $dao->summary; $info['description'] = $dao->description; $info['start_date'] = $dao->start; $info['end_date'] = $dao->end; $info['contact_email'] = $dao->email; $info['event_type'] = $dao->event_type; $info['is_show_location'] = $dao->is_show_location; $info['is_online_registration'] = $dao->is_online_registration; $info['registration_link_text'] = $dao->registration_link_text; $info['registration_start_date'] = $dao->registration_start_date; $info['registration_end_date'] = $dao->registration_end_date; $address = ''; $addrFields = array('address_name' => $dao->address_name, 'street_address' => $dao->street_address, 'supplemental_address_1' => $dao->supplemental_address_1, 'supplemental_address_2' => $dao->supplemental_address_2, 'city' => $dao->city, 'state_province' => $dao->state, 'postal_code' => $dao->postal_code, 'postal_code_suffix' => $dao->postal_code_suffix, 'country' => $dao->country, 'county' => NULL); CRM_Utils_String::append($address, ', ', CRM_Utils_Address::format($addrFields)); $info['location'] = $address; $info['url'] = CRM_Utils_System::url('civicrm/event/info', 'reset=1&id=' . $dao->event_id, TRUE, NULL, FALSE); if ($enable_cart) { $reg = CRM_Event_Cart_BAO_EventInCart::get_registration_link($dao->event_id); $info['registration_link'] = CRM_Utils_System::url($reg['path'], $reg['query'], TRUE); $info['registration_link_text'] = $reg['label']; } $all[] = $info; } } return $all; }
/** * Get the information to map a contact. * * @param array $ids * The list of ids for which we want map info. * $param int $locationTypeID * * @param int $locationTypeID * @param bool $imageUrlOnly * * @return null|string * display name of the contact if found */ public static function &getMapInfo($ids, $locationTypeID = NULL, $imageUrlOnly = FALSE) { $idString = ' ( ' . implode(',', $ids) . ' ) '; $sql = "\n SELECT civicrm_contact.id as contact_id,\n civicrm_contact.contact_type as contact_type,\n civicrm_contact.contact_sub_type as contact_sub_type,\n civicrm_contact.display_name as display_name,\n civicrm_address.street_address as street_address,\n civicrm_address.supplemental_address_1 as supplemental_address_1,\n civicrm_address.supplemental_address_2 as supplemental_address_2,\n civicrm_address.city as city,\n civicrm_address.postal_code as postal_code,\n civicrm_address.postal_code_suffix as postal_code_suffix,\n civicrm_address.geo_code_1 as latitude,\n civicrm_address.geo_code_2 as longitude,\n civicrm_state_province.abbreviation as state,\n civicrm_country.name as country,\n civicrm_location_type.name as location_type\n FROM civicrm_contact\nLEFT JOIN civicrm_address ON civicrm_address.contact_id = civicrm_contact.id\nLEFT JOIN civicrm_state_province ON civicrm_address.state_province_id = civicrm_state_province.id\nLEFT JOIN civicrm_country ON civicrm_address.country_id = civicrm_country.id\nLEFT JOIN civicrm_location_type ON civicrm_location_type.id = civicrm_address.location_type_id\nWHERE civicrm_address.geo_code_1 IS NOT NULL\nAND civicrm_address.geo_code_2 IS NOT NULL\nAND civicrm_contact.id IN {$idString} "; $params = array(); if (!$locationTypeID) { $sql .= " AND civicrm_address.is_primary = 1"; } else { $sql .= " AND civicrm_address.location_type_id = %1"; $params[1] = array($locationTypeID, 'Integer'); } $dao = CRM_Core_DAO::executeQuery($sql, $params); $locations = array(); $config = CRM_Core_Config::singleton(); while ($dao->fetch()) { $location = array(); $location['contactID'] = $dao->contact_id; $location['displayName'] = addslashes($dao->display_name); $location['city'] = $dao->city; $location['state'] = $dao->state; $location['postal_code'] = $dao->postal_code; $location['lat'] = $dao->latitude; $location['lng'] = $dao->longitude; $location['marker_class'] = $dao->contact_type; $address = ''; CRM_Utils_String::append($address, '<br />', array($dao->street_address, $dao->supplemental_address_1, $dao->supplemental_address_2, $dao->city)); CRM_Utils_String::append($address, ', ', array($dao->state, $dao->postal_code)); CRM_Utils_String::append($address, '<br /> ', array($dao->country)); $location['address'] = addslashes($address); $location['displayAddress'] = str_replace('<br />', ', ', addslashes($address)); $location['url'] = CRM_Utils_System::url('civicrm/contact/view', 'reset=1&cid=' . $dao->contact_id); $location['location_type'] = $dao->location_type; $location['image'] = CRM_Contact_BAO_Contact_Utils::getImage(isset($dao->contact_sub_type) ? $dao->contact_sub_type : $dao->contact_type, $imageUrlOnly, $dao->contact_id); $locations[] = $location; } return $locations; }
/** * This function return all voter links with respecting permissions. * * @param int $surveyId * @param bool $enclosedInUL * @param string $extraULName * @return array|string * $url array of permissioned links */ public static function buildPermissionLinks($surveyId, $enclosedInUL = FALSE, $extraULName = 'more') { $menuLinks = array(); if (!$surveyId) { return $menuLinks; } static $voterLinks = array(); if (empty($voterLinks)) { $permissioned = FALSE; if (CRM_Core_Permission::check('manage campaign') || CRM_Core_Permission::check('administer CiviCampaign')) { $permissioned = TRUE; } if ($permissioned || CRM_Core_Permission::check("reserve campaign contacts")) { $voterLinks['reserve'] = array('name' => 'reserve', 'url' => 'civicrm/survey/search', 'qs' => 'sid=%%id%%&reset=1&op=reserve', 'title' => ts('Reserve Respondents')); } if ($permissioned || CRM_Core_Permission::check("interview campaign contacts")) { $voterLinks['release'] = array('name' => 'interview', 'url' => 'civicrm/survey/search', 'qs' => 'sid=%%id%%&reset=1&op=interview&force=1', 'title' => ts('Interview Respondents')); } if ($permissioned || CRM_Core_Permission::check("release campaign contacts")) { $voterLinks['interview'] = array('name' => 'release', 'url' => 'civicrm/survey/search', 'qs' => 'sid=%%id%%&reset=1&op=release&force=1', 'title' => ts('Release Respondents')); } } if (CRM_Core_Permission::check('access CiviReport')) { $reportID = self::getReportID($surveyId); if ($reportID) { $voterLinks['report'] = array('name' => 'report', 'url' => "civicrm/report/instance/{$reportID}", 'qs' => 'reset=1', 'title' => ts('View Survey Report')); } } $ids = array('id' => $surveyId); foreach ($voterLinks as $link) { if (!empty($link['qs']) && !CRM_Utils_System::isNull($link['qs'])) { $urlPath = CRM_Utils_System::url(CRM_Core_Action::replace($link['url'], $ids), CRM_Core_Action::replace($link['qs'], $ids)); $menuLinks[] = sprintf('<a href="%s" class="action-item crm-hover-button" title="%s">%s</a>', $urlPath, CRM_Utils_Array::value('title', $link), $link['title']); } } if ($enclosedInUL) { $extraLinksName = strtolower($extraULName); $allLinks = ''; CRM_Utils_String::append($allLinks, '</li><li>', $menuLinks); $allLinks = "{$extraULName} <ul id='panel_{$extraLinksName}_xx' class='panel'><li>{$allLinks}</li></ul>"; $menuLinks = "<span class='btn-slide crm-hover-button' id={$extraLinksName}_xx>{$allLinks}</span>"; } return $menuLinks; }
/** * given a set of links and a mask, return the html action string for * the links associated with the mask * * @param array $links the set of link items * @param int $mask the mask to be used. a null mask means all items * @param array $values the array of values for parameter substitution in the link items * @param string $extraULName enclosed extra links in this UL. * @param boolean $enclosedAllInSingleUL force to enclosed all links in single UL. * * @param null $op * @param null $objectName * @param null $objectId * * @return string the html string * @access public * @static */ static function formLink($links, $mask, $values, $extraULName = 'more', $enclosedAllInSingleUL = FALSE, $op = NULL, $objectName = NULL, $objectId = NULL) { $config = CRM_Core_Config::singleton(); if (empty($links)) { return NULL; } // make links indexed sequentially instead of by bitmask // otherwise it's next to impossible to reliably add new ones $seqLinks = array(); foreach ($links as $bit => $link) { $link['bit'] = $bit; $seqLinks[] = $link; } if ($op && $objectName && $objectId) { CRM_Utils_Hook::links($op, $objectName, $objectId, $seqLinks, $mask, $values); } $url = array(); foreach ($seqLinks as $i => $link) { if (!$mask || !array_key_exists('bit', $link) || $mask & $link['bit']) { $extra = isset($link['extra']) ? self::replace($link['extra'], $values) : NULL; $frontend = isset($link['fe']) ? TRUE : FALSE; if (isset($link['qs']) && !CRM_Utils_System::isNull($link['qs'])) { $urlPath = CRM_Utils_System::url(self::replace($link['url'], $values), self::replace($link['qs'], $values), TRUE, NULL, TRUE, $frontend); } else { $urlPath = CRM_Utils_Array::value('url', $link, '#'); } $classes = 'action-item crm-hover-button'; if (isset($link['ref'])) { $classes .= ' ' . strtolower($link['ref']); } //get the user specified classes in. if (isset($link['class'])) { $className = is_array($link['class']) ? implode(' ', $link['class']) : $link['class']; $classes .= ' ' . strtolower($className); } if ($urlPath !== '#' && $frontend) { $extra .= ' target="_blank"'; } // Hack to make delete dialogs smaller if (strpos($urlPath, '/delete') || strpos($urlPath, 'action=delete')) { $classes .= " small-popup"; } $url[] = sprintf('<a href="%s" class="%s" %s' . $extra . '>%s</a>', $urlPath, $classes, !empty($link['title']) ? "title='{$link['title']}' " : '', $link['name']); } } $mainLinks = $url; if ($enclosedAllInSingleUL) { $allLinks = ''; CRM_Utils_String::append($allLinks, '</li><li>', $mainLinks); $allLinks = "{$extraULName}<ul class='panel'><li>{$allLinks}</li></ul>"; $result = "<span class='btn-slide crm-hover-button'>{$allLinks}</span>"; } else { $extra = ''; $extraLinks = array_splice($url, 2); if (count($extraLinks) > 1) { $mainLinks = array_slice($url, 0, 2); CRM_Utils_String::append($extra, '</li><li>', $extraLinks); $extra = "{$extraULName}<ul class='panel'><li>{$extra}</li></ul>"; } $resultLinks = ''; CRM_Utils_String::append($resultLinks, '', $mainLinks); if ($extra) { $result = "<span>{$resultLinks}</span><span class='btn-slide crm-hover-button'>{$extra}</span>"; } else { $result = "<span>{$resultLinks}</span>"; } } return $result; }
/** * given a set of links and a mask, return the html action string for * the links associated with the mask * * @param array $links the set of link items * @param int $mask the mask to be used. a null mask means all items * @param array $values the array of values for parameter substitution in the link items * * @return string the html string * @access public * @static */ function formLink(&$links, $mask, $values) { $url = array(); foreach ($links as $m => $link) { if (!$mask || $mask & $m) { $extra = CRM_Utils_Array::value('extra', $link, ''); $url[] = sprintf('<a href="%s" ' . $extra . '>%s</a>', CRM_Utils_System::url($link['url'], CRM_Core_Action::replace($link['qs'], $values)), $link['name']); } } $result = ''; CRM_Utils_String::append($result, ' | ', $url); return $result; }
/** * given a set of links and a mask, return the html action string for * the links associated with the mask * * @param array $links the set of link items * @param int $mask the mask to be used. a null mask means all items * @param array $values the array of values for parameter substitution in the link items * @param string $extraULName enclosed extra links in this UL. * @param boolean $enclosedAllInSingleUL force to enclosed all links in single UL. * * @return string the html string * @access public * @static */ static function formLink($links, $mask, $values, $extraULName = 'more', $enclosedAllInSingleUL = FALSE, $op = NULL, $objectName = NULL, $objectId = NULL) { $config = CRM_Core_Config::singleton(); if (empty($links)) { return NULL; } if ($op && $objectName && $objectId) { CRM_Utils_Hook::links($op, $objectName, $objectId, $links, $mask); } $url = array(); $firstLink = TRUE; foreach ($links as $m => $link) { if (!$mask || $mask & $m) { $extra = isset($link['extra']) ? self::replace($link['extra'], $values) : NULL; $frontend = isset($link['fe']) ? TRUE : FALSE; $urlPath = NULL; if (CRM_Utils_Array::value('qs', $link) && !CRM_Utils_System::isNull($link['qs'])) { $urlPath = CRM_Utils_System::url(self::replace($link['url'], $values), self::replace($link['qs'], $values), TRUE, NULL, TRUE, $frontend); } else { $urlPath = CRM_Utils_Array::value('url', $link); } $classes = 'action-item'; if ($firstLink) { $firstLink = FALSE; $classes .= " action-item-first"; } if (isset($link['ref'])) { $classes .= ' ' . strtolower($link['ref']); } //get the user specified classes in. if (isset($link['class'])) { $className = $link['class']; if (is_array($className)) { $className = implode(' ', $className); } $classes .= ' ' . strtolower($className); } $linkClasses = 'class = "' . $classes . '"'; if ($urlPath) { if ($frontend) { $extra .= "target=_blank"; } $url[] = sprintf('<a href="%s" %s title="%s"' . $extra . '>%s</a>', $urlPath, $linkClasses, CRM_Utils_Array::value('title', $link), $link['name']); } else { $url[] = sprintf('<a title="%s" %s ' . $extra . '>%s</a>', CRM_Utils_Array::value('title', $link), $linkClasses, $link['name']); } } } $result = ''; $mainLinks = $url; if ($enclosedAllInSingleUL) { $allLinks = ''; CRM_Utils_String::append($allLinks, '</li><li>', $mainLinks); $allLinks = "{$extraULName}<ul class='panel'><li>{$allLinks}</li></ul>"; $result = "<span class='btn-slide'>{$allLinks}</span>"; } else { $extra = ''; $extraLinks = array_splice($url, 2); if (count($extraLinks) > 1) { $mainLinks = array_slice($url, 0, 2); CRM_Utils_String::append($extra, '</li><li>', $extraLinks); $extra = "{$extraULName}<ul class='panel'><li>{$extra}</li></ul>"; } $resultLinks = ''; CRM_Utils_String::append($resultLinks, '', $mainLinks); if ($extra) { $result = "<span>{$resultLinks}</span><span class='btn-slide'>{$extra}</span>"; } else { $result = "<span>{$resultLinks}</span>"; } } return $result; }
/** * given a set of links and a mask, return the html action string for * the links associated with the mask * * @param array $links the set of link items * @param int $mask the mask to be used. a null mask means all items * @param array $values the array of values for parameter substitution in the link items * * @return string the html string * @access public * @static */ static function formLink(&$links, $mask, $values) { $config =& CRM_Core_Config::singleton(); if (empty($links)) { return null; } $url = array(); $firstLink = true; foreach ($links as $m => $link) { if (!$mask || $mask & $m) { $extra = null; if (isset($link['extra'])) { $extra = self::replace(CRM_Utils_Array::value('extra', $link, ''), $values); } $urlPath = null; if (CRM_Utils_Array::value('qs', $link) && !CRM_Utils_System::isNull($link['qs'])) { $urlPath = CRM_Utils_System::url(self::replace($link['url'], $values), self::replace($link['qs'], $values), true); } else { $urlPath = CRM_Utils_Array::value('url', $link); } $ref = ''; if (isset($link['ref'])) { $ref = "class = {$link['ref']}"; } $linkClass = "action-item"; if ($firstLink) { $linkClass .= " action-item-first"; $firstLink = false; } if ($urlPath) { $url[] = sprintf('<a href="%s" class="%s" title="%s" %s ' . $extra . '>%s</a>', $urlPath, $linkClass, $link['title'], $ref, $link['name']); } else { $linkClass .= ' ' . strtolower($link['name']) . '-action'; $url[] = sprintf('<a title="%s" class="%s" %s ' . $extra . '>%s</a>', $link['title'], $linkClass, $ref, $link['name']); } } } $result = $resultDiv = ''; $actionLink = $url; $actionDiv = array_splice($url, 2); $showDiv = false; if (count($actionDiv) > 1) { $actionLink = array_slice($url, 0, 2); $showDiv = true; } require_once 'CRM/Utils/String.php'; CRM_Utils_String::append($resultLink, '', $actionLink); if ($showDiv) { CRM_Utils_String::append($resultDiv, '</li><li>', $actionDiv); $resultDiv = ts('more') . "<ul id='panel_xx' class='panel'><li>{$resultDiv}</li></ul>"; } if ($resultDiv) { $result = "<span>{$resultLink}</span><span class='btn-slide' id=xx>{$resultDiv}</span>"; } else { $result = "<span>{$resultLink}</span>"; } return $result; }
/** * given a set of links and a mask, return the html action string for * the links associated with the mask * * @param array $links the set of link items * @param int $mask the mask to be used. a null mask means all items * @param array $values the array of values for parameter substitution in the link items * @param string $extraULName enclosed extra links in this UL. * @param boolean $enclosedAllInSingleUL force to enclosed all links in single UL. * * @return string the html string * @access public * @static */ static function formLink(&$links, $mask, $values, $extraULName = 'more', $enclosedAllInSingleUL = false) { $config = CRM_Core_Config::singleton(); if (empty($links)) { return null; } $url = array(); $firstLink = true; foreach ($links as $m => $link) { if (!$mask || $mask & $m) { $extra = null; if (isset($link['extra'])) { $extra = self::replace(CRM_Utils_Array::value('extra', $link, ''), $values); } $frontend = false; if (isset($link['fe'])) { $frontend = true; } $urlPath = null; if (CRM_Utils_Array::value('qs', $link) && !CRM_Utils_System::isNull($link['qs'])) { $urlPath = CRM_Utils_System::url(self::replace($link['url'], $values), self::replace($link['qs'], $values), true, null, true, $frontend); } else { $urlPath = CRM_Utils_Array::value('url', $link); } $classes = 'action-item'; if ($firstLink) { $firstLink = false; $classes .= " action-item-first"; } if (isset($link['ref'])) { $classes .= ' ' . strtolower($link['ref']); } //get the user specified classes in. if (isset($link['class'])) { $className = $link['class']; if (is_array($className)) { $className = implode(' ', $className); } $classes .= ' ' . strtolower($className); } $linkClasses = 'class = "' . $classes . '"'; if ($urlPath) { if ($frontend) { $extra .= "target=_blank"; } $url[] = sprintf('<a href="%s" %s title="%s"' . $extra . '>%s</a>', $urlPath, $linkClasses, CRM_Utils_Array::value('title', $link), $link['name']); } else { $url[] = sprintf('<a title="%s" %s ' . $extra . '>%s</a>', CRM_Utils_Array::value('title', $link), $linkClasses, $link['name']); } } } require_once 'CRM/Utils/String.php'; $result = ''; $mainLinks = $url; $extraLinksName = strtolower($extraULName); if ($enclosedAllInSingleUL) { $allLinks = ''; CRM_Utils_String::append($allLinks, '</li><li>', $mainLinks); $allLinks = "{$extraULName} <ul id='panel_{$extraLinksName}_xx' class='panel'><li>{$allLinks}</li></ul>"; $result = "<span class='btn-slide' id={$extraLinksName}_xx>{$allLinks}</span>"; } else { $extra = ''; $extraLinks = array_splice($url, 2); if (count($extraLinks) > 1) { $mainLinks = array_slice($url, 0, 2); CRM_Utils_String::append($extra, '</li><li>', $extraLinks); $extra = "{$extraULName} <ul id='panel_{$extraLinksName}_xx' class='panel'><li>{$extra}</li></ul>"; } $resultLinks = ''; CRM_Utils_String::append($resultLinks, '', $mainLinks); if ($extra) { $result = "<span>{$resultLinks}</span><span class='btn-slide' id={$extraLinksName}_xx>{$extra}</span>"; } else { $result = "<span>{$resultLinks}</span>"; } } return $result; }
/** * function to get the information to map a contact * * @param array $ids the list of ids for which we want map info * $param int $locationId location_id * * @return null|string display name of the contact if found * @static * @access public */ function &getMapInfo($ids, $locationId = null) { $idString = ' ( ' . implode(',', $ids) . ' ) '; $sql = "\nSELECT\n civicrm_contact.id as contact_id,\n civicrm_contact.contact_type as contact_type,\n civicrm_contact.display_name as display_name,\n civicrm_address.street_address as street_address,\n civicrm_address.city as city,\n civicrm_address.postal_code as postal_code,\n civicrm_address.postal_code_suffix as postal_code_suffix,\n civicrm_address.geo_code_1 as latitude,\n civicrm_address.geo_code_2 as longitude,\n civicrm_state_province.abbreviation as state,\n civicrm_country.name as country,\n civicrm_location_type.name as location_type\nFROM civicrm_contact\nLEFT JOIN civicrm_location ON (civicrm_location.entity_table = 'civicrm_contact' AND\n civicrm_contact.id = civicrm_location.entity_id"; if (!$locationId) { $sql .= " AND civicrm_location.is_primary = 1"; } else { $sql .= " AND civicrm_location.id = " . CRM_Utils_Type::escape($locationId, 'Integer'); } $sql .= ")\nLEFT JOIN civicrm_address ON civicrm_location.id = civicrm_address.location_id\nLEFT JOIN civicrm_state_province ON civicrm_address.state_province_id = civicrm_state_province.id\nLEFT JOIN civicrm_country ON civicrm_address.country_id = civicrm_country.id\nLEFT JOIN civicrm_location_type ON civicrm_location_type.id = civicrm_location.location_type_id\nWHERE civicrm_contact.id IN {$idString} AND civicrm_address.geo_code_1 is not null AND civicrm_address.geo_code_2 is not null"; $dao =& new CRM_Core_DAO(); $dao->query($sql); $locations = array(); $config =& CRM_Core_Config::singleton(); while ($dao->fetch()) { $location = array(); $location['displayName'] = $dao->display_name; $location['lat'] = $dao->latitude; $location['lng'] = $dao->longitude; $address = ''; /*CRM_Utils_String::append( $address, ', ', array( $dao->street_address, $dao->city, $dao->state, $dao->postal_code, $dao->country ) );*/ CRM_Utils_String::append($address, '<br />', array($dao->street_address, $dao->city)); CRM_Utils_String::append($address, ', ', array($dao->state, $dao->postal_code)); CRM_Utils_String::append($address, '<br /> ', array($dao->country)); $location['address'] = $address; $location['url'] = CRM_Utils_System::url('civicrm/contact/view', 'reset=1&cid=' . $dao->contact_id); $location['location_type'] = $dao->location_type; $contact_type = '<img src="' . $config->resourceBase . 'i/contact_'; switch ($dao->contact_type) { case 'Individual': $contact_type .= 'ind_medium.gif" alt="' . ts('Individual') . '" />'; break; case 'Household': $contact_type .= 'house.png" alt="' . ts('Household') . '" height="25" width="25" />'; break; case 'Organization': $contact_type .= 'org.gif" alt="' . ts('Organization') . '" height="25" width="30" />'; break; } $location['contactImage'] = $contact_type; $locations[] = $location; } return $locations; }