| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188 |
- <?php
- Lib::loadClass('RouteBase');
- class Route_FixZasobBaseAlias extends RouteBase {
- public function handleAuth() {
- if (!User::logged()) {
- throw new HttpException('Unauthorized', 401);
- }
- }
- public function defaultAction() {
- SE_Layout::gora();
- ?>
- <div class="jumbotron">
- <div class="container">
- <form class="form-inline" method="POST">
- <input type="hidden" name="_route" value="FixZasobPath" />
- <input type="hidden" name="_task" value="run" />
- <button type="submit" id="fldExecuteBtn" class="btn btn-primary" autocomplete="off">
- Zaktualizuj <code>ID_ZASOB_BASE</code>
- </button>
- </form>
- </div>
- </div>
- <script type="text/javascript">
- jQuery(document).ready(function () {
- jQuery('#fldExecuteBtn').on('click', function () {
- jQuery(this).text(jQuery(this).text() + '...').attr('disabled', 'disabled');
- jQuery(this).parent().submit();
- })
- });
- </script>
- <?php
- SE_Layout::dol();
- }
- public function checkPathsAction() {
- $sql = "
- ";
- $rows = array();
- $db = DB::getDB();
- if ($db->has_errors()) {
- throw new Exception("DB Errors: " . implode("\n<br>", $db->get_errors()));
- }
- $res = $db->query($sql);
- while ($r = $db->fetch($res)) {
- $rows[] = $r;
- }
- echo $sql;
- echo'<pre>';print_r($rows);echo'</pre>';
- die('OK');
- }
- public function runAction() {
- SE_Layout::gora();
- SE_Layout::menu();
- $this->_callProcedure();
- ?>
- <div class="container">
- <div class="alert alert-success">
- Zaktualizowano <code>`CRM_LISTA_ZASOBOW`.`ID_ZASOB_BASE`</code>
- </div>
- </div>
- <?php
- SE_Layout::dol();
- }
- public function runApiAction() {
- $this->_callProcedure();
- die('Zaktualizowano `CRM_LISTA_ZASOBOW`.`ID_ZASOB_BASE`');
- }
- private function _callProcedure() {
- $sql = <<<SQL
- update `CRM_LISTA_ZASOBOW` SET
- `ID_ZASOB_BASE`=IF(`ALIAS_ID`>0, FIND_ID_ZASOB_BASE(`ALIAS_ID`), `ID`);
- SQL;
- /* update fields:
- * `CRM_LISTA_ZASOBOW`.`path`
- * `CRM_WSKAZNIK`.`path_CRM_LISTA_ZASOBOW`
- */
- $db = DB::getDB();
- if ($db->has_errors()) {
- throw new Exception("DB Errors: " . implode("\n<br>", $db->get_errors()));
- }
- $res = $db->query($sql);
- if ($db->has_errors()) {
- throw new Exception("DB Errors: " . implode("\n<br>", $db->get_errors()));
- }
- }
- public function reinstallAction() {
- $this->reinstall();
- die('OK');
- }
- public function reinstall() {
- $sqlList = array();
- $sqlList['RemoveFunction'] = "DROP FUNCTION IF EXISTS `FIND_ID_ZASOB_BASE`";
- $sqlList['InstallFunction'] = <<<SQL_FUNCTION
- CREATE DEFINER=`root`@`localhost`
- FUNCTION `FIND_ID_ZASOB_BASE`(`ID_ZASOB` INT) RETURNS text CHARSET latin2
- READS SQL DATA
- BEGIN
- SET @ID_ZASOB_BASE = `ID_ZASOB`;
- SET @LOOP_LIMIT = 10;
- REPEAT
- SELECT `ALIAS_ID`
- INTO @ALIAS_ID
- FROM `CRM_LISTA_ZASOBOW`
- WHERE `ID`=@ID_ZASOB_BASE;
- IF @ALIAS_ID IS NOT NULL AND @ALIAS_ID > 0 THEN
- SET @ID_ZASOB_BASE = @ALIAS_ID;
- END IF;
- SET @LOOP_LIMIT = @LOOP_LIMIT - 1;
- UNTIL @LOOP_LIMIT <= 0 END REPEAT;
- RETURN @ID_ZASOB_BASE;
- END
- SQL_FUNCTION;
- $db = DB::getDB();
- if ($db->has_errors()) {
- throw new Exception("DB Errors: " . implode("\n<br>", $db->get_errors()));
- }
- foreach ($sqlList as $sqlName => $sql) {
- $res = $db->query($sql);
- if ($db->has_errors()) {
- throw new Exception("DB Errors at sql '{$sqlName}': " . implode("\n<br>", $db->get_errors()));
- }
- }
- }
- /*
- Table 'DB.P5-MSG:Route_FixZasobPath:WARNING: Update all paths' doesn't exist
- Table 'DB.P5-MSG:Route_FixZasobPath:ERROR: Loop detected ID=P_ID' doesn't exist
- Table 'DB.P5-MSG:Route_FixZasobPath:ERROR: Parent item not exists' doesn't exist
- Table 'DB.P5-MSG:Route_FixZasobPath:ERROR: Loop detected in path' doesn't exist
- */
- public function parseMessageFromStorage($msg) {
- switch ($msg) {
- case 'WARNING: Update all paths': {
- $msg = "Zaktualizuj ścieżki zasobów!";
- break;
- }
- case 'ERROR: Loop detected ID=P_ID': {
- $msg = "Nr rekordu nadrzędnego musi różnić się od nr rekordu";
- break;
- }
- case 'ERROR: Parent item not exists': {
- $msg = "Nie istnieje rekord o numerze podanym jako nr nadrzędny";
- break;
- }
- case 'ERROR: Loop detected in path': {
- $msg = "Nieprawidłowy nr nadrzędny";
- break;
- }
- }
- return $msg;
- }
- public function parseMessageFromMsgsSystem($msg) {
- switch ($msg) {
- case 'Update all paths': {
- $msg = "Zaktualizuj ścieżki zasobów";
- break;
- }
- }
- return $msg;
- }
- public function runByMessageFromMsgsSystem($msg, &$execNotes) {
- switch ($msg) {
- case 'Update all paths': {
- $execNotes .= 'call procedure... ';
- $this->_callProcedure();
- $execNotes .= ' done';
- break;
- }
- }
- }
- }
|