Пример #1
0
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') . '">&nbsp;</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 . '&nbsp;<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;
 }