new \Where(\Where::_and([ \Where::_operator(self::$PROJECT,'=',$project_id), \Where::_operator(self::$PROPERTY,'=',$property_id), \Where::_operator(self::$ITEM,'=',$item_id), ])), \Query::COUNT => 1, ]); if(\DB::numRows($r)){ $res = \DB::fetch($r); } else { $r = self::insert([ self::$ITEM =>$item_id, self::$PROPERTY =>$property_id, self::$PROJECT =>$project_id, ]); $res = self::getByID($r->id); } return $res; } static function setText($project_id,$property_id,$item_id,$text){ $v = self::getValue($project_id,$property_id,$item_id); return self::updateById($v[self::$ID],[ self::$NAME => trim((string)$text) ]); } static function setValue($project_id,$property_id,$item_id,$value){ $v = self::getValue($project_id,$property_id,$item_id); $res = self::updateById($v[self::$ID],[ self::$VALUE => floatval($value) ]); Item::remath($v[self::$ITEM]); return $res; } static function getForItem($id,$isAssoc=true){ $id = intval($id); return self::select($q = [ //* \Query::LEFT_JOINS => [ [PropertyValue::$table_name,self::$VALUE_ID,PropertyValue::$ID,], ], /**/ \Query::WHERE => new \Where(\Where::_and([ \Where::_operator(self::$ITEM,'=',$id), ])) ],true); } static function getForProject($id,$isAssoc=true){ $id = intval($id); return self::select($q = [ //* \Query::LEFT_JOINS => [ [PropertyValue::$table_name,self::$VALUE_ID,PropertyValue::$ID,], ], /**/ \Query::WHERE => new \Where(\Where::_and([ \Where::_operator(self::$PROJECT,'=',$id), ])) ],true); } static function getForProjectFormatted($id){ $res = []; $a = self::getForProject($id); foreach ($a as $v){ $res[ $v[self::$ITEM] ][ $v[self::$PROPERTY] ] = self::format($v); } return $res; } static function format($v){ $title = trim((string)$v[self::$NAME]); $value = floatval($v[self::$VALUE]); //* if($v[self::$VALUE_ID]){ $title = $v[PropertyValue::$NAME]; $value = floatval($v[PropertyValue::$VALUE]); } /**/ return [ 'id' => intval($v[self::$ID]), 'title' => $title, 'value' => $value, 'value_id' => $value, 'property_id' => intval($v[self::$PROPERTY]), 'item_id' => intval($v[self::$ITEM]), ]; } static function columnInfo() : array { return [ new C([ C::VAR_NAME =>&self::$ID, C::TYPE =>eColumnType::INT, C::AUTO_INCREMENT =>true, C::PRIMARY =>true, C::DEFAULT =>0, C::HIDDEN =>true, C::TH =>V::get(Vars::$ID), ]), new C([ C::VAR_NAME => &self::$NAME, C::TYPE => eColumnType::VARCHAR, C::LENGTH => 1023, C::TH => V::get(Vars::$NAME), ]), new C([ C::VAR_NAME => &self::$NAME, C::TYPE => eColumnType::TEXT, ]), new C([ C::VAR_NAME => &self::$ITEM, C::TYPE => eColumnType::INT, ]), new C([ C::VAR_NAME => &self::$VALUE, C::TYPE => eColumnType::INT, C::DEFAULT => 0, ]), new C([ C::VAR_NAME => &self::$PROPERTY, C::TYPE => eColumnType::INT, ]), new C([ C::VAR_NAME => &self::$PROJECT, C::TYPE => eColumnType::INT, ]), new C([ C::VAR_NAME => &self::$PROFILE, C::TYPE => eColumnType::INT, C::DEFAULT => intval(PID) ]), new C([ C::VAR_NAME => &self::$PORTAL, C::TYPE => eColumnType::INT, C::DEFAULT => intval(\Site::$portal_id) ]), new C([ C::VAR_NAME => &self::$VALUE_ID, C::TYPE => eColumnType::INT, C::DEFAULT => 0 ]), new C([ C::VAR_NAME => &self::$ACCOUNT, C::TYPE => eColumnType::INT, C::LENGTH => 11, C::TH => V::get(Vars::$ACCOUNT), C::DEFAULT => intval(\Site::$owner_id), c::HIDDEN=>true, c::FUNC_VALUE => function($v){ if($id = $v[self::$ACCOUNT]) { return \Account::getName( \Account::getByID($id) ); } else return '-'; }, ]), new C([ C::VAR_NAME => &self::$CREATED, C::TYPE => eColumnType::INT, C::LENGTH => 11, C::TH => V::get(Vars::$CREATED), C::DEFAULT => time(), c::FUNC_VALUE => function($v){return self::formatDate($v[self::$CREATED]);}, c::HIDDEN=>true, ]), new C([ C::VAR_NAME => &self::$UPDATED, C::TYPE => eColumnType::INT, C::DEFAULT => time(), C::TH => V::get(Vars::$UPDATED), c::FUNC_VALUE => function($v){return self::formatDate($v[self::$UPDATED]);}, c::HIDDEN=>true, ]), ]; } } new Value(); ///