/** * Соберем все года, за которые у выбранных пользователей есть * индивидуальные планы */ public function actionSelectYearsByPersonsPlans() { $bean = self::getStatefullBean(); $ids = explode(":", $bean->getItem("id")); $bean->add("id", new CArrayList($ids)); $persons = new CArrayList(); foreach ($ids as $id) { $person = CStaffManager::getPerson($id); if (!is_null($person)) { $persons->add($person->getId(), $person); } } $years = new CArrayList(); /** * @var $person CPerson */ foreach ($persons->getItems() as $person) { foreach ($person->getIndPlansByYears()->getItems() as $year_id => $data) { $year = CTaxonomyManager::getYear($year_id); if (!is_null($year)) { $years->add($year->getId(), $year->getValue()); } } } if ($years->getCount() == 0) { $this->setData("message", "Год не выбран, продолжение невозможно"); $this->renderView("_flow/dialog.ok.tpl", "", ""); return true; } $this->setData("items", $years); $this->renderView("_flow/pickList.tpl", get_class($this), "SelectLoadTypesByPersonsPlans"); }
/** * Учебный год * * @return CTerm */ public function getYear() { if (is_null($this->_year)) { $this->_year = CTaxonomyManager::getYear($this->getRecord()->getItemValue("year_id")); } return $this->_year; }
/** * Текущий год * * @static * @return CTerm */ public static function getCurrentYear() { if (is_null(self::$_currentYear)) { /** foreach (CActiveRecordProvider::getAllFromTable(TABLE_SETTINGS)->getItems() as $setting) { self::$_currentYear = CTaxonomyManager::getYear($setting->getItemValue("year_id")); } */ self::$_currentYear = CTaxonomyManager::getYear(CSettingsManager::getSettingValue("current_year")); } return self::$_currentYear; }
public function getYears() { $person = CStaffManager::getPerson($this->_bean->getItem("id")); $plans = $person->getIndPlansByYears(); $years = array(); foreach ($plans->getItems() as $year => $plan) { $year = CTaxonomyManager::getYear($year); if (!is_null($year)) { $years[$year->getId()] = $year->getValue(); } } return $years; }
public function actionIndex() { $persons = new CArrayList(); if (CRequest::getInt("year") == 0) { $year = CUtils::getCurrentYear(); } else { $year = CTaxonomyManager::getYear(CRequest::getInt("year")); } foreach (CStaffManager::getAllPersons()->getItems() as $person) { if ($person->getPublications($year)->getCount() > 0) { $persons->add($person->id, $person); } } $this->addActionsMenuItem(array(array("title" => "Назад", "link" => "index.php", "icon" => "actions/edit-undo.png"))); $this->setData("year", $year); $this->setData("persons", $persons); $this->renderView("_rating_publications/person/index.tpl"); }
public function actionImport() { $thisYear = new CArrayList(); // импортируем показатели должностей $index = new CRatingIndex(); $index->title = "Должность"; $index->manager_class = "CTaxonomyManager"; $index->manager_method = "getPosts()"; $index->person_method = "getPost()"; $index->year_id = CUtils::getCurrentYear()->getId(); $index->isMultivalue = 0; $index->save(); $thisYear->add($index->getId(), $index); foreach (CActiveRecordProvider::getAllFromTable("spr_dolzhnost")->getItems() as $item) { $post = CTaxonomyManager::getPostById($item->getItemValue("id")); if (!is_null($post)) { $value = new CRatingIndexValue(); $value->index_id = $index->id; $value->fromTaxonomy = 1; $value->title = $post->getId(); $value->value = $item->getItemValue("rate"); $value->save(); } } // показатели размножаем на все года foreach (CTaxonomyManager::getYearsList() as $key => $value) { $year = CTaxonomyManager::getYear($key); if ($year->getId() !== $index->year_id) { $newIndex = new CRatingIndex(); $newIndex->title = $index->title; $newIndex->manager_class = $index->manager_class; $newIndex->manager_method = $index->manager_method; $newIndex->person_method = $index->person_method; $newIndex->year_id = $year->getId(); $newIndex->isMultivalue = $index->isMultivalue; $newIndex->save(); foreach ($index->getIndexValues()->getItems() as $value) { $newValue = new CRatingIndexValue(); $newValue->index_id = $newIndex->getId(); $newValue->fromTaxonomy = $value->fromTaxonomy; $newValue->title = $value->title; $newValue->value = $value->value; $newValue->save(); } } } // звания $index = new CRatingIndex(); $index->title = "Звание"; $index->manager_class = "CTaxonomyManager"; $index->manager_method = "getTitles()"; $index->year_id = CUtils::getCurrentYear()->getId(); $index->isMultivalue = 0; $index->person_method = "getTitle()"; $index->save(); $thisYear->add($index->getId(), $index); foreach (CActiveRecordProvider::getAllFromTable("spr_zvanie")->getItems() as $item) { $post = CTaxonomyManager::getTitle($item->getItemValue("id")); if (!is_null($post)) { $value = new CRatingIndexValue(); $value->index_id = $index->id; $value->fromTaxonomy = 1; $value->title = $post->getId(); $value->value = $item->getItemValue("rate"); $value->save(); } } // показатели размножаем на все года foreach (CTaxonomyManager::getYearsList() as $key => $value) { $year = CTaxonomyManager::getYear($key); if ($year->getId() !== $index->year_id) { $newIndex = new CRatingIndex(); $newIndex->title = $index->title; $newIndex->manager_class = $index->manager_class; $newIndex->manager_method = $index->manager_method; $newIndex->year_id = $year->getId(); $newIndex->isMultivalue = $index->isMultivalue; $newIndex->person_method = $index->person_method; $newIndex->save(); foreach ($index->getIndexValues()->getItems() as $value) { $newValue = new CRatingIndexValue(); $newValue->index_id = $newIndex->getId(); $newValue->fromTaxonomy = $value->fromTaxonomy; $newValue->title = $value->title; $newValue->value = $value->value; $newValue->save(); } } } // научно-методическая работа $taxonomy = new CTaxonomy(); $taxonomy->name = "Виды научно-методической и учебной работы"; $taxonomy->alias = "scientificWork"; $taxonomy->save(); $index = new CRatingIndex(); $index->title = "Научно-методическая и учебная работа"; $index->manager_class = "CTaxonomyManager"; $index->manager_method = 'getTaxonomy("scientificWork")->getTerms()'; $index->year_id = CUtils::getCurrentYear()->getId(); $index->isMultivalue = 1; $index->save(); $thisYear->add($index->getId(), $index); foreach (CActiveRecordProvider::getAllFromTable("spr_nauch_met_uch_rab")->getItems() as $item) { $term = new CTerm(); $term->taxonomy_id = $taxonomy->getId(); $term->name = $item->getItemValue("name"); $term->save(); $value = new CRatingIndexValue(); $value->index_id = $index->id; $value->fromTaxonomy = 1; $value->title = $term->getId(); $value->value = $item->getItemValue("rate"); $value->save(); } // показатели размножаем на все года foreach (CTaxonomyManager::getYearsList() as $key => $value) { $year = CTaxonomyManager::getYear($key); if ($year->getId() !== $index->year_id) { $newIndex = new CRatingIndex(); $newIndex->title = $index->title; $newIndex->manager_class = $index->manager_class; $newIndex->manager_method = $index->manager_method; $newIndex->year_id = $year->getId(); $newIndex->isMultivalue = $index->isMultivalue; $newIndex->save(); foreach ($index->getIndexValues()->getItems() as $value) { $newValue = new CRatingIndexValue(); $newValue->index_id = $newIndex->getId(); $newValue->fromTaxonomy = $value->fromTaxonomy; $newValue->title = $value->title; $newValue->value = $value->value; $newValue->save(); } } } // вычеты $taxonomy = new CTaxonomy(); $taxonomy->name = "Виды вычетов"; $taxonomy->alias = "takeouts"; $taxonomy->save(); $index = new CRatingIndex(); $index->title = "Вычеты"; $index->manager_class = "CTaxonomyManager"; $index->manager_method = 'getTaxonomy("takeouts")->getTerms()'; $index->year_id = CUtils::getCurrentYear()->getId(); $index->isMultivalue = 1; $index->save(); $thisYear->add($index->getId(), $index); foreach (CActiveRecordProvider::getAllFromTable("spr_vichet")->getItems() as $item) { $term = new CTerm(); $term->taxonomy_id = $taxonomy->getId(); $term->name = $item->getItemValue("name"); $term->save(); $value = new CRatingIndexValue(); $value->index_id = $index->id; $value->fromTaxonomy = 1; $value->title = $term->getId(); $value->value = $item->getItemValue("rate"); $value->save(); } // показатели размножаем на все года foreach (CTaxonomyManager::getYearsList() as $key => $value) { $year = CTaxonomyManager::getYear($key); if ($year->getId() !== $index->year_id) { $newIndex = new CRatingIndex(); $newIndex->title = $index->title; $newIndex->manager_class = $index->manager_class; $newIndex->manager_method = $index->manager_method; $newIndex->year_id = $year->getId(); $newIndex->isMultivalue = $index->isMultivalue; $newIndex->save(); foreach ($index->getIndexValues()->getItems() as $value) { $newValue = new CRatingIndexValue(); $newValue->index_id = $newIndex->getId(); $newValue->fromTaxonomy = $value->fromTaxonomy; $newValue->title = $value->title; $newValue->value = $value->value; $newValue->save(); } } } }
public function actionGetDataForChart() { $data = array(); if (array_key_exists("data", $_POST)) { $data = $_POST["data"]; } // определяем, в каких годах искать $years = new CArrayList(); if (array_key_exists("years", $data)) { foreach ($data['years'] as $item) { $year = CTaxonomyManager::getYear($item); if (!is_null($year)) { $years->add($year->getId(), $year); } } } else { $years->add(CUtils::getCurrentYear()->getId(), CUtils::getCurrentYear()); } // по каким показателям показывать $indexes = new CArrayList(); if (array_key_exists("indexes", $data)) { foreach ($data["indexes"] as $item) { foreach (CRatingManager::getRatingIndexesByName($item)->getItems() as $index) { if ($years->hasElement($index->year_id)) { $indexes->add($index->getId(), $index); } } } } else { foreach ($years->getItems() as $year) { foreach (CRatingManager::getRatingIndexesByYear($year)->getItems() as $index) { $indexes->add($index->getId(), $index); } } } // по каким людям показывать $persons = new CArrayList(); if (array_key_exists("persons", $data)) { foreach ($data["persons"] as $item) { $person = CStaffManager::getPerson($item); if (!is_null($person)) { $persons->add($person->getId(), $person); } } } else { // показывать по всем, у кого показатели есть в указанных годах foreach (CStaffManager::getAllPersons()->getItems() as $person) { foreach ($years->getItems() as $year) { foreach ($person->getRatingIndexesByYear($year)->getItems() as $index) { if ($indexes->hasElement($index->getId())) { $persons->add($person->getId(), $person); } } } } } $res = array(); // начинаем собирать инфу по людям // подписи к осям $axis = array(); $i = 0; foreach ($persons->getItems() as $person) { $i++; $axis[] = $person->getName(); //$axis[] = $i; } // все показатели, которые есть у выбранных людей (id всех показателей) // за все годы $resIndexes = array(); foreach ($persons->getItems() as $person) { foreach ($years->getItems() as $year) { foreach ($person->getRatingIndexesByYear($year)->getItems() as $index) { if ($indexes->hasElement($index->getId())) { $resIndexes[$index->title] = $index->title; } } } } $indicators = array(); // данные по годам // данные должны возвращаться в том же порядке, в котором у нас идут люди foreach ($resIndexes as $key => $value) { foreach ($years->getItems() as $year) { $data = array(); // собираем данные по каждому человеку foreach ($persons->getItems() as $person) { $indexValue = 0; foreach ($person->getRatingIndexesByYear($year)->getItems() as $index) { if ($index->title == $key) { $indexValue = $index->getIndexValue(); } } $data[] = $indexValue; } $indicator = array("name" => $value . " (" . $year->name . ")", "data" => $data, "stack" => $year->name); $indicators[] = $indicator; } } $res["axis"] = $axis; $res["series"] = $indicators; echo json_encode($res); }
public function actionStudentGroupsByYearJSON() { // сильно замучиваться не буду, ибо уже надоедать начало $res = array(); foreach (CStaffManager::getStudentGroupsByYear(CTaxonomyManager::getYear(CRequest::getInt("id")))->getItems() as $group) { $res[] = $group->toArrayForJSON(); } echo json_encode($res); }
public function actionFillIndexes() { $form = new CPersonRatingAutofillForm(); $form->setAttributes(CRequest::getArray($form::getClassName())); $year = CTaxonomyManager::getYear($form->year_id); // берем показатели указанного года foreach (CRatingManager::getRatingIndexesByYear($year)->getItems() as $index) { foreach ($form->persons as $personId) { $person = CStaffManager::getPerson($personId); if (!is_null($person)) { // удаляем старые показатели foreach (CActiveRecordProvider::getWithCondition(TABLE_PERSON_RATINGS, "person_id = " . $person->getId() . " and year_id = " . $year->getId())->getItems() as $item) { $item->remove(); } // если поле не многозначное, то способ вычисления лежит в показателе if (!$index->isMultivalue()) { if ($index->person_method != "") { $v = null; eval('$v = $person->' . $index->person_method . ';'); if (!is_null($v)) { if (strtoupper(get_class($v)) == "CTERM") { if ($index->getIndexValues()->hasElement($v->getId())) { $personValue = new CPersonRatingIndex(); $personValue->person_id = $person->getId(); $personValue->year_id = $year->getId(); $personValue->index_id = $index->getIndexValues()->getItem($v->getId())->getId(); $personValue->save(); } } } } } else { /** * Это многозначный показатель, вычисляется отдельно каждое значение */ foreach ($index->getIndexValues()->getItems() as $indexValue) { if ($indexValue->evaluate_code != "") { if ($indexValue->evaluate_method == "1") { // это sql-запрос $query = $indexValue->evaluate_code; $query = str_replace("%person%", $person->getId(), $query); $query = str_replace("%year%", $year->getId(), $query); $res = mysql_query($query); if (mysql_errno() == 0) { while ($row = mysql_fetch_assoc($res)) { if (array_key_exists("res", $row)) { if ($row['res'] == "1") { $personValue = new CPersonRatingIndex(); $personValue->person_id = $person->getId(); $personValue->year_id = $year->getId(); $personValue->index_id = $indexValue->getId(); $personValue->save(); } } break; } } } elseif ($indexValue->evaluate_method == "2") { // это php код $v = null; $code = $indexValue->evaluate_code; $code = str_replace("%person%", $person->getId(), $code); $code = str_replace("%year%", $year->getId(), $code); eval('$v = ' . $code . ';'); if ($v === true) { $personValue = new CPersonRatingIndex(); $personValue->person_id = $person->getId(); $personValue->year_id = $year->getId(); $personValue->index_id = $indexValue->getId(); $personValue->save(); } } } } } } } } $this->redirect("persons.php?action=index"); }