if ($member instanceof Member && !$member->isNew()) { $ot = ObjectTypes::findById($member->getObjectTypeId()); $ot_name = lang($ot->getName()); if ($member->getArchivedById() == 0) { add_page_action(lang('archive'), "javascript:if(confirm('" . lang('confirm archive member', $ot_name) . "')) og.openLink('" . get_url('member', 'archive', array('id' => $member->getId())) . "');", 'ico-archive-obj'); } else { add_page_action(lang('unarchive'), "javascript:if(confirm('" . lang('confirm unarchive member', $ot_name) . "')) og.openLink('" . get_url('member', 'unarchive', array('id' => $member->getId())) . "');", 'ico-unarchive-obj'); } $delete_url = get_url('member', 'delete', array('id' => $member->getId(), 'start' => true)); add_page_action(lang('delete'), "javascript:og.deleteMember('" . $delete_url . "','" . $ot_name . "');", 'ico-delete'); } $form_title = $object_type_name ? ($member->isNew() ? lang('new') : lang('edit')) . strtolower(" {$object_type_name}") : lang('new member'); $new_member_text = $object_type_name ? ($member->isNew() ? lang('add') : lang('edit')) . strtolower(" {$object_type_name}") : lang('new member'); $categories = array(); Hook::fire('member_edit_categories', array('member' => $member, 'genid' => $genid), $categories); $has_custom_properties = count(MemberCustomProperties::getCustomPropertyIdsByObjectType($obj_type_sel)) > 0; $member_ot = ObjectTypes::findById($member->getObjectTypeId()); $dim_obj = null; if ($member_ot->getType() == 'dimension_object') { if (!$member->isNew()) { $dim_obj = Objects::findObject($member->getObjectId()); } else { if (class_exists($member_ot->getHandlerClass())) { eval('$ot_manager = ' . $member_ot->getHandlerClass() . '::instance();'); if (isset($ot_manager) && $ot_manager instanceof ContentDataObjects) { eval('$dim_obj = new ' . $ot_manager->getItemClass() . '();'); if ($dim_obj instanceof ContentDataObject) { $dim_obj->setNew(true); $dim_obj->setObjectTypeId($member->getObjectTypeId()); } }
private function prepareObject($rows, $start, $limit, $dimension, $member_type_id, $total) { $custom_properties = MemberCustomProperties::getAllMemberCustomPropertiesByObjectType($member_type_id); $ot = ObjectTypes::findById($member_type_id); $object = array("totalCount" => $total, "start" => $start, "dimension_id" => $dimension->getId(), "dimension_name" => $dimension->getName(), "object_type_name" => $ot->getName(), "members" => array()); $member_ids = array(); $ids = array(); for ($i = 0; $i < $limit; $i++) { if (isset($rows[$i])) { $row = $rows[$i]; $info = $row; $info['icon_cls'] = $ot->getIconClass(); $path_ids = array(); $m = Members::findById(array_var($row, 'member_id')); $all_parents = $m->getAllParentMembersInHierarchy(); foreach ($all_parents as $parent) { if (!isset($path_ids[$dimension->getId()])) { $path_ids[$dimension->getId()] = array(); } $path_ids[$dimension->getId()][$parent->getId()] = $parent->getId(); break; } $info['mem_path'] = json_encode($path_ids); // calculated info /* $more_info = array( 'total_tasks' => array_var($row, 'total_tasks'), 'completed_tasks' => array_var($row, 'completed_tasks'), 'task_completion_p' => number_format(array_var($row, 'task_completion_p'), 2), 'total_estimated_time' => array_var($row, 'total_estimated_time'), 'total_worked_time' => array_var($row, 'total_worked_time'), 'time_worked_p' => number_format(array_var($row, 'time_worked_p'), 2), ); $info = array_merge($info, $more_info);*/ $object["members"][] = $info; $member_ids[] = array_var($row, 'member_id'); } } // set custom properties foreach ($member_ids as $k => &$mid) { if (!is_numeric($mid) || $mid == 0) { unset($member_ids[$k]); } } if (Plugins::instance()->isActivePlugin('member_custom_properties') && count($member_ids) > 0) { foreach ($custom_properties as $cp) { $cp_rows = DB::executeAll("SELECT * FROM " . TABLE_PREFIX . "member_custom_property_values cpv \r\n\t\t\t\t\tWHERE cpv.member_id IN (" . implode(',', $member_ids) . ") \r\n\t\t\t\t\tAND cpv.custom_property_id = '" . $cp->getId() . "' AND cpv.value != ''\r\n\t\t\t\t\tAND cpv.value != '" . EMPTY_DATETIME . "' AND cpv.value != '" . EMPTY_DATE . "'\r\n\t\t\t\t\tORDER BY cpv.member_id"); $mcpv = new MemberCustomPropertyValue(); foreach ($cp_rows as $cp_row) { $mcpv->setValue($cp_row['value']); $cp_val = get_member_custom_property_value_for_listing($cp, $cp_row['member_id'], array($mcpv)); foreach ($object["members"] as &$x) { if ($x['member_id'] == $cp_row['member_id']) { $x['cp_' . $cp->getId()] = $cp_val; break; } } } } } return $object; }
static function getMemberCustomPropertyMultipleValueByCode($code, $member_id) { if (!Plugins::instance()->isActivePlugin('member_custom_properties')) { return array(); } $values = array(); $cp = MemberCustomProperties::instance()->findOne(array('conditions' => "code='{$code}'")); if ($cp instanceof MemberCustomProperty) { $cpvalues = MemberCustomPropertyValues::getMemberCustomPropertyValues($member_id, $cp->getId()); foreach ($cpvalues as $cpvalue) { $values[] = $cpvalue->getValue(); } } return $values; }
/** * This function will return paginated result. Result is an array where first element is * array of returned object and second populated pagination object that can be used for * obtaining and rendering pagination data using various helpers. * * Items and pagination array vars are indexed with 0 for items and 1 for pagination * because you can't use associative indexing with list() construct * * @access public * @param array $arguments Query argumens (@see find()) Limit and offset are ignored! * @param integer $items_per_page Number of items per page * @param integer $current_page Current page number * @return array */ function paginate($arguments = null, $items_per_page = 10, $current_page = 1) { if (isset($this) && instance_of($this, 'MemberCustomProperties')) { return parent::paginate($arguments, $items_per_page, $current_page); } else { return MemberCustomProperties::instance()->paginate($arguments, $items_per_page, $current_page); } // if }
<div class="custom-properties"><?php require_javascript("og/CustomProperties.js"); $ot = ObjectTypes::findById($member->getObjectTypeId()); if ($ot->getName() == 'project_folder' || $ot->getName() == 'customer_folder') { $ot = ObjectTypes::findByName('folder'); } $cps = MemberCustomProperties::getAllMemberCustomPropertiesByObjectType($ot->getId(), $visibility); if ($visibility == 'others' && count($cps) == 0 && Plugins::instance()->isActivePlugin('member_custom_properties')) { echo lang('there are no custom properties defined message', strtolower(lang($ot->getName())), escape_character($member->getName())); echo '<br />' . lang('there are no custom properties defined link'); } if (!$parent_member) { $parent_member = 0; } $ti = 0; if (!isset($genid)) { $genid = gen_id(); } if (!isset($startTi)) { $startTi = 10000; } if (count($cps) > 0) { $print_table_functions = false; foreach ($cps as $customProp) { if (!isset($required) || $required && ($customProp->getIsRequired() || $customProp->getVisibleByDefault()) || !$required && !($customProp->getIsRequired() || $customProp->getVisibleByDefault())) { $ti++; $cpv = MemberCustomPropertyValues::getMemberCustomPropertyValue($member->getId(), $customProp->getId()); $default_value = $customProp->getDefaultValue(); if ($cpv instanceof MemberCustomPropertyValue) { $default_value = $cpv->getValue(); }
/** * Return manager instance * * @access protected * @param void * @return MemberCustomProperty */ function manager() { if (!$this->manager instanceof MemberCustomProperties) { $this->manager = MemberCustomProperties::instance(); } return $this->manager; }
function format_value() { $formatted = ""; $cp = MemberCustomProperties::getCustomProperty($this->getCustomPropertyId()); if ($cp instanceof MemberCustomProperty) { switch ($cp->getType()) { case 'text': case 'numeric': case 'memo': $formatted = $this->getValue(); break; case 'user': case 'contact': $c = Contacts::findById($this->getValue()); $formatted = $c instanceof Contact ? clean($c->getObjectName()) : ''; break; case 'boolean': $formatted = '<div class="db-ico ico-' . ($this->getValue() ? 'complete' : 'delete') . '"> </div>'; break; case 'date': if ($this->getValue() != '' && $this->getValue() != EMPTY_DATE && $this->getValue() != EMPTY_DATETIME) { $dtv = DateTimeValueLib::dateFromFormatAndString(DATE_MYSQL, $this->getValue()); if ($dtv instanceof DateTimeValue) { $formatted = format_date($dtv, null, 0); } } break; case 'list': $formatted = $this->getValue(); break; case 'table': $formatted = $this->getValue(); break; case 'address': $values = str_replace("\\|", "%%_PIPE_%%", $this->getValue()); $exploded = explode("|", $values); foreach ($exploded as &$v) { $v = str_replace("%%_PIPE_%%", "|", $v); $v = escape_character($v); } if (count($exploded) > 0) { $address_type = array_var($exploded, 0, ''); $street = array_var($exploded, 1, ''); $city = array_var($exploded, 2, ''); $state = array_var($exploded, 3, ''); $country = array_var($exploded, 4, ''); $zip_code = array_var($exploded, 5, ''); $out = $street; if ($city != '') { $out .= ' - ' . $city; } if ($state != '') { $out .= ' - ' . $state; } if ($country != '') { $out .= ' - ' . lang("country {$country}"); } $formatted = '<div class="info-content-item">' . $out . ' <a class="map-link coViewAction ico-map" href="http://maps.google.com/?q=' . $out . '" target="_blank">' . lang('map') . '</a></div>'; } break; default: $formatted = $this->getValue(); } } return $formatted; }