/**
  * Render form control
  *
  * @param string $control_name
  * @return string
  */
 function render($control_name)
 {
     $value = $this->getValue();
     $dimensions = Dimensions::instance()->findAll();
     $permission_group_ids = ContactPermissionGroups::getPermissionGroupIdsByContactCSV(logged_user()->getId(), false);
     $out = '';
     foreach ($dimensions as $dim) {
         /* @var $dim Dimension */
         if ($dim->getOptions(1) && isset($dim->getOptions(1)->hidden) && $dim->getOptions(1)->hidden) {
             continue;
         }
         if (!$dim->getDefinesPermissions() || !$dim->deniesAllForContact($permission_group_ids)) {
             if (array_search($dim->getId(), $value) !== false) {
                 $checked = 1;
             } else {
                 $checked = 0;
             }
             $out .= '<div class="dimension" >';
             $out .= label_tag($dim->getName(), null, false, array('style' => 'display:inline;margin:10px;vertical-align:super;'));
             $out .= checkbox_field($control_name . '[' . $dim->getId() . ']', $checked);
             $out .= '</div >';
         }
     }
     $out .= '<input type="hidden" name="' . $control_name . '[0]" value=" ">';
     return $out;
 }
 /**
  * Render form control
  *
  * @param string $control_name
  * @return string
  */
 function render($control_name)
 {
     $dimensions = Dimensions::instance()->findAll(array('conditions' => '`is_manageable` = 1'));
     $options = array();
     $option_attributes = $this->getValue() == 0 ? array('selected' => 'selected') : null;
     $options[] = option_tag(lang('none'), 0, $option_attributes);
     foreach ($dimensions as $dim) {
         /* @var $dim Dimension */
         if (in_array($dim->getId(), config_option('enabled_dimensions'))) {
             $dim_name = $dim->getName();
             $option_attributes = $this->getValue() == $dim->getId() ? array('selected' => 'selected') : null;
             $options[] = option_tag($dim_name, $dim->getId(), $option_attributes);
         }
     }
     return select_box($control_name, $options);
 }
   /**
    * Render form control
    *
    * @param string $control_name
    * @return string
    */
    function render($control_name) {
       $value =  $this->getValue();
       $dimensions  = Dimensions::instance()->findAll();
       $permission_group_ids = ContactPermissionGroups::getPermissionGroupIdsByContactCSV(logged_user()->getId(),false);
       $out = '' ;
       foreach ($dimensions as $dim) { /* @var $dim Dimension */
			if ( $dim->getOptions(1) && isset($dim->getOptions(1)->hidden) && $dim->getOptions(1)->hidden ) {
				continue ;
			}
       		if (!$dim->getDefinesPermissions() || !$dim->deniesAllForContact($permission_group_ids)) {
	       		if  (array_search($dim->getId(), $value) !== false ){
	       			$checked = 1 ; 	
	       		}else{
	       			$checked = 0 ;
	       		}
	       		$out.='<div class="dimension" >';
	       		$out.=label_tag($dim->getName());
	       		$out.=checkbox_field($control_name.'['.$dim->getId().']',$checked );
	       		$out.='</div >';
       		}
       }
	   return $out ;	 
    }
 function quick_add_form()
 {
     $this->setLayout('empty');
     if ($dimension_id = array_var($_GET, 'dimension_id')) {
         $dimension = Dimensions::instance()->findById($dimension_id);
         $dimensionOptions = $dimension->getOptions(true);
         $object_Types = array();
         $parent_member_id = array_var($_GET, 'parent_member_id');
         if ($parent_member_id) {
             $parent_member = Members::instance()->findById($parent_member_id);
             $object_types = DimensionObjectTypes::getChildObjectTypes($parent_member_id);
         } else {
             $object_types = DimensionObjectTypes::instance()->findAll(array("conditions" => "dimension_id = {$dimension_id} AND is_root = 1 "));
         }
         if (count($object_types)) {
             if (count($object_types) == 1) {
                 // Input Hidden
                 tpl_assign('object_type', $object_types[0]);
                 tpl_assign('object_type_name', ObjectTypes::instance()->findById($object_types[0]->getObjectTypeId())->getName());
             } else {
                 // Input combo
                 tpl_assign('object_types', $object_types);
             }
         } else {
             tpl_assign("error_msg", $parent_member->getName() . " does not accept child nodes ");
         }
         $editUrls = array();
         foreach ($object_types as $object_type) {
             /* @var $object_type DimensionObjectType */
             if (ObjectTypes::instance()->findById($object_type->getObjectTypeId())->getType() != 'dimension_object') {
                 continue;
             }
             $options = $object_type->getOptions(1);
             if (isset($options->defaultAjax) && $options->defaultAjax->controller != "dashboard") {
                 $editUrls[$object_type->getObjectTypeId()] = get_url($options->defaultAjax->controller, 'add');
             } else {
                 $t = ObjectTypes::instance()->findById($object_type->getObjectTypeId());
                 /* @var $t ObjectType */
                 $class_name = ucfirst($t->getName()) . "Controller";
                 if ($t && controller_exists($t->getName(), $t->getPluginId())) {
                     $editUrls[$object_type->getObjectTypeId()] = get_url($t->getName(), 'add');
                 } else {
                     $editUrls[$object_type->getObjectTypeId()] = get_url('member', 'add', array("dim_id" => $dimension_id));
                 }
             }
         }
         tpl_assign('editUrls', $editUrls);
         tpl_assign('parent_member_id', $parent_member_id);
         tpl_assign('dimension_id', $dimension_id);
         if (is_object($dimensionOptions) && is_object($dimensionOptions->quickAdd) && $dimensionOptions->quickAdd->formAction) {
             tpl_assign('form_action', ROOT_URL . "/" . $dimensionOptions->quickAdd->formAction);
         } else {
             tpl_assign('form_action', get_url('member', 'add', array('quick' => '1')));
         }
     } else {
         die("SORRY. Invalid dimension");
     }
 }
 function quick_add_form()
 {
     ajx_current("empty");
     $this->setLayout('empty');
     $dimension_id = array_var($_GET, 'dimension_id');
     $dimension = is_numeric($dimension_id) ? Dimensions::instance()->findById($dimension_id) : null;
     if ($dimension instanceof Dimension) {
         $object_Types = array();
         $parent_member_id = array_var($_GET, 'parent_member_id');
         $parent_member = Members::instance()->findById($parent_member_id);
         if ($parent_member instanceof Member) {
             $object_types = DimensionObjectTypes::getChildObjectTypes($parent_member);
             if (count($object_types) == 0) {
                 $parent_member = null;
                 $object_types = DimensionObjectTypes::instance()->findAll(array("conditions" => "enabled=1 AND dimension_id = {$dimension_id} AND is_root = 1 AND object_type_id<>(SELECT id from " . TABLE_PREFIX . "object_types WHERE name='company')"));
             }
         } else {
             $object_types = DimensionObjectTypes::instance()->findAll(array("conditions" => "enabled=1 AND dimension_id = {$dimension_id} AND is_root = 1 AND object_type_id<>(SELECT id from " . TABLE_PREFIX . "object_types WHERE name='company')"));
         }
         $obj_types = array();
         $editUrls = array();
         foreach ($object_types as $object_type) {
             $options = $object_type->getOptions(1);
             if (isset($options->defaultAjax) && $options->defaultAjax->controller != "dashboard") {
                 $editUrls[$object_type->getObjectTypeId()] = get_url($options->defaultAjax->controller, 'add');
             } else {
                 $t = ObjectTypes::instance()->findById($object_type->getObjectTypeId());
                 $obj_types[$t->getId()] = $t;
                 $class_name = ucfirst($t->getName()) . "Controller";
                 $controller_exists = controller_exists($t->getName(), $t->getPluginId());
                 if ($controller_exists) {
                     Env::useController(ucfirst($t->getName()));
                     eval('$controller = new ' . $class_name . '();');
                 }
                 if ($t && controller_exists($t->getName(), $t->getPluginId()) && $t->getHandlerClass() != '' && $controller_exists && method_exists($controller, 'add')) {
                     $params = array("type" => $t->getId());
                     if ($parent_member instanceof Member) {
                         $params['parent'] = $parent_member->getId();
                     }
                     $editUrls[$t->getId()] = get_url($t->getName(), 'add', $params);
                 } else {
                     $params = array("dim_id" => $dimension_id, "type" => $t->getId());
                     if ($parent_member instanceof Member) {
                         $params['parent'] = $parent_member->getId();
                     }
                     $editUrls[$t->getId()] = get_url('member', 'add', $params);
                 }
             }
         }
         $urls = array();
         foreach ($editUrls as $ot_id => $url) {
             $ot = array_var($obj_types, $ot_id);
             if ($ot instanceof ObjectType) {
                 $link_text = ucfirst(strtolower(lang('new ' . $ot->getName())));
                 $iconcls = $ot->getIconClass();
             } else {
                 $link_text = lang('new');
                 $iconcls = "";
             }
             $urls[] = array('link_text' => $link_text, 'url' => $url, 'iconcls' => $iconcls);
         }
         Hook::fire('member_quick_add_urls', array('dimension' => $dimension, 'object_types' => $object_types, 'parent_member' => $parent_member), $urls);
         if (count($urls) > 1) {
             ajx_extra_data(array('draw_menu' => 1, 'urls' => $urls));
         } else {
             ajx_extra_data(array('urls' => $urls));
         }
     } else {
         Logger::log("Invalid dimension: {$dimension_id}");
     }
 }
 /**
  * Return manager instance
  *
  * @access protected
  * @param void
  * @return Dimensions 
  */
 function manager()
 {
     if (!$this->manager instanceof Dimensions) {
         $this->manager = Dimensions::instance();
     }
     return $this->manager;
 }
 /**
 * Return manager instance
 *
 * @access protected
 * @param void
 * @return Dimensions 
 */
 function manager() {
   if(!($this->manager instanceof Dimensions)) $this->manager = Dimensions::instance();
   return $this->manager;
 } // manager
 /**
  * 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, 'Dimensions')) {
         return parent::paginate($arguments, $items_per_page, $current_page);
     } else {
         return Dimensions::instance()->paginate($arguments, $items_per_page, $current_page);
     }
     // if
 }
function workspaces_page_rendered()
{
    if (!Plugins::instance()->isActivePlugin('crpm')) {
        $did = Dimensions::instance()->findByCode('workspaces')->getId();
        $one_member = Members::findOne(array('conditions' => 'dimension_id = ' . $did));
        if (!$one_member instanceof Member) {
            echo "<script>";
            echo "og.menuPanelCollapsed = true;";
            echo "</script>";
        }
    }
}
og.config.quick_add_task_combos = <?php 
$object = "";
$dimensions_user = get_user_dimensions_ids();
$dimensions_to_show = explode(",", user_config_option("quick_add_task_view_dimensions_combos"));
$dimensions_to_skip = array_diff($dimensions_user, $dimensions_to_show);
//sort combos
function cmp($a, $b)
{
    return $a < $b ? -1 : 1;
}
usort($dimensions_to_show, "cmp");
foreach ($dimensions_to_show as $key => $dimension_id) {
    if (in_array($dimension_id, $dimensions_to_skip)) {
        continue;
    }
    $dim = Dimensions::instance()->getDimensionById($dimension_id);
    if ($dim instanceof Dimension) {
        if ($key != 0) {
            $object .= ",";
        }
        $object .= "{name : '" . escape_character($dim->getName()) . "', desc : '" . escape_character(lang('add new relation ' . $dim->getCode())) . "'}";
    }
}
echo "[" . $object . "]";
?>
;
ogTasks.custom_properties = <?php 
echo json_encode($cp_values);
?>
;