예제 #1
0
파일: DbRowset.php 프로젝트: nhp/shopware-4
    /**
     * Construct Table object from a Zend_Db_Table_Rowset
     *
     * @param Zend_Db_Table_Rowset_Abstract $rowset
     * @param string $tableName
     */
    public function __construct(Zend_Db_Table_Rowset_Abstract $rowset, $tableName = null)
    {
        if($tableName == null) {
            $table = $rowset->getTable();
            if($table !== null) {
                $tableName = $table->info('name');
            } else {
                require_once "Zend/Test/PHPUnit/Db/Exception.php";
                throw new Zend_Test_PHPUnit_Db_Exception(
                    'No table name was given to Rowset Table and table name cannot be infered from the table, '.
                    'because the rowset is disconnected from database.'
                );
            }
        }

        $this->data = $rowset->toArray();

        $columns = array();
        if(isset($this->data[0]) > 0) {
            $columns = array_keys($this->data[0]);
        } else if($rowset->getTable() != null) {
            $columns = $rowset->getTable()->info('cols');
        }

        $this->tableName = $tableName;
        $this->tableMetaData = new PHPUnit_Extensions_Database_DataSet_DefaultTableMetaData($this->tableName, $columns);
    }
    public function achievsFormTrainings(Zend_Db_Table_Rowset_Abstract $trainings, array $groupsMethods, array $respons, array $months, array $groupsMethodsActual)
    {
        $methods = array();
        foreach ($groupsMethods as $item) {
            $methods += $item;
        }
        $xhtml = array();
        $xhtml[] = '
			<div class="grid-head">
				<table class="grid-head-table">
					<thead>
						<tr>
							<th class="trains-field-num">№</th>
							<th class="trains-field-situation">Текущая ситуация<div>Current situation</div></th>
							<th class="trains-field-objective">Цель развития<div>Development objective</div></th>
							<th class="trains-field-method">Метод<div>Method</div></th>
							<th class="trains-field-responsible">Ответственный<div>Person in charge</div></th>
							<th class="trains-field-term">Срок<div>Timing</div></th>
							<th class="trains-field-result">Достижение цели плана развития<div>Individual development objective observable change</div></th>
						</tr>
					</thead>
				</table>
			</div>
			<div class="grid-body">
				<table class="grid-body-table" id="trains">
					<tbody>
		';
        foreach ($trainings as $item) {
            $xhtml[] = $this->_rowTraining($item, $methods, $groupsMethods, $respons, $months, $groupsMethodsActual);
        }
        $xhtml[] = $this->_rowTraining($trainings->getTable()->createRow(), $methods, $groupsMethods, $respons, $months, $groupsMethodsActual);
        $xhtml[] = '
					</tbody>
				</table>
			</div>
			<div class="grid-footer">
				<table class="grid-footer-table">
					<tbody>
						<tr>
							<td><div class="button" id="buttonAddTraining">Добавить цель проф. развития<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Add development objective</div></td>
						</tr>
					</tbody>
				</table>
			</div>
		';
        return implode('', $xhtml);
    }
    public function achievsPrintTasks(Zend_Db_Table_Rowset_Abstract $tasks, array $ratings, $have_func, $rate_weights, $card, $rtg, $status_id)
    {
        $xhtml = array();
        $func_tasks = array();
        $plan = false;
        if ($status_id == 'NEW' || $status_id == 'PLN' || $status_id == 'CPN') {
            $plan = true;
        }
        $xhtml[] = '
			<table class="table">
				<thead>
					<tr>
						<th class="tasks-field-num">№</th>
						<th class="tasks-field-description">Бизнес-цель<div>Business objective</div></th>
						<th class="tasks-field-term">Срок<div>Timing</div></th>
						<th class="tasks-field-weight">Вес<div>Weight</div></th>
						<th class="tasks-field-note"></th>
						<th class="tasks-field-result">Достижение бизнес-цели<div>Business objective achievement</div></th>
						<th class="tasks-field-rating">Рейтинг<div>Rating</div></th>
					</tr>
				</thead>
			</table>';
        if ($have_func > 0) {
            $xhtml[] = '<div class="tasks-type"><span class="translate_ratio"><table id="ratio_tab" width="480px">
    							<tr>
    								<td width="360px">Соотношение веса - бизнес-цели / функциональные цели<br/>
    									Weight ratio - business objectives / functional objectives
    								</td><td width="10px" align="center"> = </td>
    								<td width="50px" align="center"> <label id="ratio_mng">' . $card->ratio_mng . '</label>
    								</td><td width="10px" align="center">/</td>
    								<td width="50px" align="center"><label id="ratio_fnc">' . $card->ratio_fnc . '</label>
    								</td>
    							</tr>
    						  </table></span></div>';
        }
        $xhtml[] = '	
				<div class="tasks-type">Бизнес-цели - <span class="translate_category_tasks">Business Objectives</span></div>
			<table class="table">
				<tbody>';
        $count = 0;
        $count_func = 0;
        foreach ($tasks as $item) {
            if ($item->is_personal == null) {
                if ($item->is_functional == 1) {
                    $func_tasks[] = $this->_rowTask($item, $ratings, ++$count_func);
                } else {
                    $xhtml[] = $this->_rowTask($item, $ratings, ++$count);
                }
            }
        }
        if ($plan) {
            $newRow = $tasks->getTable()->createRow();
            for ($i = 0; $i < 6; $i++) {
                $xhtml[] = $this->_rowTask($newRow, $ratings, ++$count);
            }
        }
        $xhtml[] = '		
				</tbody>
			</table>';
        if ($have_func > 0) {
            $xhtml[] = '
				<div class="tasks-type">Функциональные бизнес-цели - <span class="translate_category_tasks">Functional Business Objectives</span></div>
				<table class="table">
					<tbody>
			';
            $xhtml[] = implode('', $func_tasks);
            if ($plan) {
                $newRow = $tasks->getTable()->createRow();
                for ($i = 0; $i < 6; $i++) {
                    $xhtml[] = $this->_rowTask($newRow, $ratings, ++$count_func);
                }
            }
            $xhtml[] = '		
					</tbody>
				</table>';
        }
        $xhtml[] = '</div>
			<div class="grid-footer">
				<table class="grid-footer-table">
					<tbody>';
        if ($have_func > 0) {
            $xhtml[] = '<tr height="60px">
						<td colspan="3" style="border-bottom:1px #666666 solid" valign="top" >
						<span class="translate_func_comment">Комментарии функционального руководителя - Functional Manager\'s comment</br></span>
						<div class="func_div" id="func_div">' . $card->fnc_comment . '</div>
						</td>
						<th class="tasks-field-rating-total" style="border-bottom:1px #666666 solid">Функциональный рейтинг:<br/>Functional rating:</th>
						<td class="field-rating tasks-field-rating-total" id="fieldRatingFunc" style="border-bottom:1px #666666 solid">
								<div>' . $ratings[$card->rtg_func_id] . '</div>
						</td>
						</tr>
						<tr>';
        }
        $xhtml[] = '	<tr>
							<td width="20%">
								Вычисленный рейтинг:<br/>Calculated rating:
							</td>
							<td width="5%">' . $this->CalculateWeights($tasks, $rate_weights, $card) . '</td>
							<td width="50%">&nbsp;</td>
							<td width="20%">Итоговый рейтинг:<br/>Total rating:</td>
							<td width="5%">' . $rtg . '</td>
						</tr>
					</tbody>
				</table>
			</div>
    	';
        return implode('', $xhtml);
    }
    public function achievsFormPersonal(Zend_Db_Table_Rowset_Abstract $tasks, Zend_Db_Table_Rowset_Abstract $personalTrainings, Zend_Db_Table_Rowset_Abstract $personalCompetences, array $ratings, $rate_weights, $userRole, $card, $status_id, Rp_Db_Table_Rowset $competences)
    {
        $personal = 1;
        $xhtml = array();
        $xhtml[] = '
    		<div class="grid-head">
				<table class="grid-head-table">
					<thead>
						<tr>
							<th class="tasks-field-num">' . $count_func . '№</th>
							<th class="tasks-field-description">Бизнес-цель<div>Business objective</div></th>
							<th class="tasks-field-term">Срок<div>Timing</div></th>
							<th class="tasks-field-weight">Вес (%)<div>Weight (%)</div></th>
							<th class="tasks-field-note"></th>
							<th class="tasks-field-result">Достижение бизнес-цели<div>Business objective achievement</div></th>
							<th class="tasks-field-rating">Рейтинг<div>Rating</div></th>
						</tr>
					</thead>
				</table>
			</div>';
        $xhtml[] = '<div class="grid-body">';
        // вывод целей руководителя для оценки сотрудником
        if ($status_id == 'RTG' || $status_id == 'CRG' || $status_id == 'CLS' || $status_id == 'PLN' || $status_id == 'CPN') {
            $xhtml[] = '<div class="tasks-type">Бизнес-цели (руководитель) - <span class="translate_category_tasks">Business Objectives (manager)</span></div>
						<table class="grid-body-table" id="managertasks">
							<tbody>';
            $count = 0;
            foreach ($tasks as $item) {
                if ($item->is_personal != 1) {
                    $xhtml[] = $this->_rowManagerTask($item, $ratings, ++$count);
                }
            }
            $xhtml[] = '</tbody>
						</table>';
        }
        $xhtml[] = '<div class="tasks-type">Бизнес-цели (сотрудник) - <span class="translate_category_tasks">Business Objectives (employee)</span></div>
					<table class="grid-body-table" id="personaltasks">
						<tbody>';
        $count = 0;
        foreach ($tasks as $item) {
            if ($item->is_personal == 1) {
                $xhtml[] = $this->_rowTask($item, $ratings, $personal, ++$count);
            }
        }
        $xhtml[] = $this->_rowTask($tasks->getTable()->createRow(), $ratings, $personal);
        $xhtml[] = '
						</tbody>
					</table>';
        $xhtml[] = '</div>';
        $xhtml[] = '
			<div class="grid-footer">
				<table class="grid-footer-table">
					<tbody>
						<tr>
							<td>
								<div class="button" id="buttonAddPersonalTask">Добавить бизнес-цель<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Add business objective</div>
							</td>
						</tr>
					</tbody>
				</table>
			</div>';
        // [START] компетенции
        $competences = $competences->toArray();
        $cardRtgCompetensId = $card->rtg_competens_id;
        $stands = array();
        $addits = array();
        $xhtml[] = '
			<div class="grid-head">
				<table class="grid-head-table">
					<thead>
						<tr>
							<th class="compets-field-num">№</th>
							<th class="compets-field-name">Компетенция<div>Competence</div></th>
							<th class="compets-field-note">&nbsp;</th>
							<th class="compets-field-result">Достижение по компетенции<div>Competence achievement</div></th>
							<th class="compets-field-rating">Рейтинг<div>Rating</div></th>
						</tr>
					</thead>
				</table>
			</div>';
        $xhtml[] = '<div class="grid-body">';
        $stands[] = '
					<div class="compets-type">Корпоративные компетенции - <span class="translate_category_tasks">Corporate competences</span></div>
					<table class="grid-body-table" id="personalStandsCompets">
						<tbody>
			';
        $addits[] = '
					<div class="compets-type">Компетенции группы должностей - <span class="translate_category_tasks">Job families competences</span></div>
					<table class="grid-body-table" id="personalAdditsCompets">
						<tbody>
			';
        foreach ($competences as $item) {
            if (!$item['disabled']) {
                if ($item['additional']) {
                    $addits[] = $this->_rowCompetence($item, $ratings, $in_person);
                } else {
                    $stands[] = $this->_rowCompetence($item, $ratings, $in_person);
                }
            }
        }
        $stands[] = '
						</tbody>
					</table>
			';
        $addits[] = '
						</tbody>
					</table>
			';
        $xhtml[] = implode('', $stands) . implode('', $addits);
        $xhtml[] = '</div>';
        $xhtml[] = '
			<div class="grid-footer">
				<table class="grid-footer-table">
					<tbody><tr><td>&nbsp;</td></tr></tbody>
				</table>
			</div>
		';
        // [END] компетенции
        // [START] собственные компетенции
        if (count($personalCompetences) > 0) {
            foreach ($personalCompetences as $itemCompetence) {
                $xhtml[] = $this->getPersonalCompetences($itemCompetence, $ratings);
                break;
            }
        } else {
            $xhtml[] = $this->getPersonalCompetences($personalCompetences->getTable()->createRow(), $ratings);
        }
        if (count($personalTrainings) > 0) {
            foreach ($personalTrainings as $itemTraining) {
                $xhtml[] = $this->getPersonalTraining($itemTraining);
                break;
            }
        } else {
            $xhtml[] = $this->getPersonalTraining($personalTrainings->getTable()->createRow());
        }
        $xhtml[] = $this->getEmployeeComment($card);
        //$xhtml[] ='</div>';
        //	    $xhtml[] = '
        //			<div class="grid-footer">
        //				<table class="grid-footer-table">
        //					<tbody>';
        //
        //		$xhtml[] = '		<td><div class="button" id="buttonAddPersonalTask">Добавить бизнес-цель<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Add business objective</div></td>
        //
        //						</tr>
        //					</tbody>
        //				</table>
        //			</div>
        //    	';
        //		$xhtml  = array();
        //    	$stands = array();
        //    	$addits = array();
        // [END] собственные компетенции
        return implode('', $xhtml);
    }
    public function achievsFormTasks(Zend_Db_Table_Rowset_Abstract $tasks, $have_func, array $ratings, $rate_weights, $cardRtgTasksId, $userRole, $card, $cardRtgFuncId)
    {
        $xhtml = array();
        $func_tasks = array();
        // временный буфер для функциональных целей
        $func = $userRole ? 1 : 0;
        $xhtml[] = '
    		<div class="grid-head">
				<table class="grid-head-table">
					<thead>
						<tr>
							<th class="tasks-field-num">' . $count_func . '№</th>
							<th class="tasks-field-description">Бизнес-цель<div>Business objective</div></th>
							<th class="tasks-field-term">Срок<div>Timing</div></th>
							<th class="tasks-field-weight">Вес (%)<div>Weight (%)</div></th>
							<th class="tasks-field-note"></th>
							<th class="tasks-field-result">Достижение бизнес-цели<div>Business objective achievement</div></th>
							<th class="tasks-field-rating">Рейтинг<div>Rating</div></th>
						</tr>
					</thead>
				</table>
			</div>';
        if ($have_func > 0) {
            $xhtml[] = '<div class="grid-body" style="bottom:100px; height: expression(this.parentNode.offsetHeight - 137 + \'px\')">';
        } else {
            $xhtml[] = '<div class="grid-body">';
        }
        if ($have_func > 0) {
            $xhtml[] = '<div class="tasks-type"><span class="translate_ratio"><table id="ratio_tab" width="480px">
    							<tr>
    								<td width="360px">Соотношение веса - бизнес-цели / функциональные цели<br/>
    									Weight ratio - business objectives / functional objectives
    								</td><td width="10px" align="center"> = </td>
    								<td width="50px" align="center"> <label id="ratio_mng"></label><input align="left" id="ratio[ratio_mng]" name="ratio[ratio_mng]" type="text" value="' . $card->ratio_mng . '" size="2" />
    								</td><td width="10px" align="center">/</td>
    								<td width="50px" align="center"><label id="ratio_fnc"></label><input align="left" id="ratio[ratio_fnc]" name="ratio[ratio_fnc]" type="text" value="' . $card->ratio_fnc . '" size="2" />
    								</td>
    							</tr>
    						  </table></span></div>';
        }
        $xhtml[] = '<div class="tasks-type">Бизнес-цели - <span class="translate_category_tasks">Business Objectives</span></div>
				<table class="grid-body-table" id="tasks">
					<tbody>';
        $count = 0;
        $count_func = 0;
        foreach ($tasks as $item) {
            if ($item->is_personal == null) {
                if ($item->is_functional == 1) {
                    $func_tasks[] = $this->_rowTask($item, $ratings, 1, ++$count_func);
                } else {
                    $xhtml[] = $this->_rowTask($item, $ratings, null, ++$count);
                }
            }
        }
        $xhtml[] = $this->_rowTask($tasks->getTable()->createRow(), $ratings, $func);
        $xhtml[] = '</tbody>
				</table>';
        if ($have_func > 0) {
            $xhtml[] = '
				<div class="tasks-type">Функциональные бизнес-цели - <span class="translate_category_tasks">Functional Business Objectives</span></div>
				<table class="grid-body-table" id="functasks">
				<tbody>
					';
            $xhtml[] = implode('', $func_tasks);
            $xhtml[] = $this->_rowTask($tasks->getTable()->createRow(), $ratings, $func);
            $xhtml[] = '
	    				</tbody>
					</table>
				';
        }
        $xhtml[] = '</div>

			<div class="grid-footer">
				<table class="grid-footer-table">
					<tbody>';
        if ($have_func > 0) {
            $xhtml[] = '<tr height="60px">
							<td colspan="3" style="border-bottom:1px #666666 solid" valign="top" >
							<span class="translate_func_comment">Комментарии функционального руководителя - Functional Manager\'s comment</br></span>

							<textarea name="comments[fnc_comment]" id="comments[fnc_comment]" class="func_comment">' . $card->fnc_comment . '</textarea>
							<div class="func_div" id="func_div">' . $card->fnc_comment . '</div>
							</td>
							<th class="tasks-field-rating-total" style="border-bottom:1px #666666 solid">Функциональный рейтинг:<br/>Functional rating:</th>
							<td class="field-rating tasks-field-rating-total" id="fieldRatingFunc" style="border-bottom:1px #666666 solid">
									' . $this->view->formSelect('ratings[rtg_func_id]', $cardRtgFuncId, null, $ratings) . '
									<div>' . $ratings[$cardRtgFuncId] . '</div>
							</td>
						</tr>';
        }
        $xhtml[] = '	<tr>
							<td><div class="button" id="buttonAddTask">Добавить бизнес-цель<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Add business objective</div></td>
							<th class="tasks-field-rating-total">Вычисленный рейтинг:<br/>Calculated rating:</th>
							<td class="field-rating tasks-field-rating-total"><div>' . $this->CalculateWeights($tasks, $rate_weights, $card) . '</div>
							<input id="sum_tasks" type="hidden" value="' . $this->CalculateWeights($tasks, $rate_weights, $card) . '" /></td>
							<th class="tasks-field-rating-total">Итоговый рейтинг:<br/>Total rating:</th>
							<td class="field-rating tasks-field-rating-total" id="fieldRatingTasks">
								' . $this->view->formSelect('ratings[rtg_tasks_id]', $cardRtgTasksId, null, $ratings) . '
								<div>' . $ratings[$cardRtgTasksId] . '</div>
								<input id="rtg_tasks" type="hidden" value="" />
							</td>
						</tr>
					</tbody>
				</table>
			</div>
    	';
        return implode('', $xhtml);
    }