diff --git a/bin/cake b/bin/cake old mode 100644 new mode 100755 diff --git a/plugins/AsdCurl/config/bootstrap.php b/plugins/AsdCurl/config/bootstrap.php index 7e724e2..ae6a2e8 100644 --- a/plugins/AsdCurl/config/bootstrap.php +++ b/plugins/AsdCurl/config/bootstrap.php @@ -10,24 +10,25 @@ try { exit($e->getMessage() . "\n"); } -//define('SCHULPORTAL_BASE0_URL', "https://portal.schulen.bayern.de"); -//define('SCHULPORTAL_BASE_URL', SCHULPORTAL_BASE0_URL . '/uniquesig2d1dfad4a11c25e42c462e53b4721e48/uniquesig0'); -//define('SCHULPORTAL_ASD_BASE_URL', SCHULPORTAL_BASE0_URL . '/uniquesigc3ba1685059aaf325d44099df697a0a635e79a4ec36ec614a98f3bf4b79d7c043ac3880605b7751df91d11233380ad86/uniquesig0/asd'); -define('SCHULPORTAL_ASD_BASE_URL', 'http://192.168.56.3:8280/asd'); +define('SCHULPORTAL_BASE0_URL', "https://portal.schulen.bayern.de"); +define('SCHULPORTAL_BASE_URL', SCHULPORTAL_BASE0_URL . '/uniquesig2d1dfad4a11c25e42c462e53b4721e48/uniquesig0'); +define('SCHULPORTAL_ASD_BASE_URL', SCHULPORTAL_BASE0_URL . '/uniquesigc3ba1685059aaf325d44099df697a0a635e79a4ec36ec614a98f3bf4b79d7c043ac3880605b7751df91d11233380ad86/uniquesig0/asd'); +//define('SCHULPORTAL_ASD_BASE_URL', 'http://192.168.56.3:8280/asd'); -//Configure::write('AsdCurl.proxy','10.1.248.1:82'); -//Configure::write('AsdCurl.cookiejar', '/tmp/cookies.txt'); -//Configure::write('AsdCurl.cookiefile', '/tmp/cookies.txt'); -Configure::write('AsdCurl.cookiejar', 'C:/xampp/tmp/cookies.txt'); -Configure::write('AsdCurl.cookiefile', 'C:/xampp/tmp/cookies.txt'); +Configure::write('AsdCurl.proxy','10.1.248.1:82'); +Configure::write('AsdCurl.cookiejar', '/tmp/cookies.txt'); +Configure::write('AsdCurl.cookiefile', '/tmp/cookies.txt'); +//Configure::write('AsdCurl.cookiejar', 'C:/xampp/tmp/cookies.txt'); +//Configure::write('AsdCurl.cookiefile', 'C:/xampp/tmp/cookies.txt'); Configure::write('AsdCurl.cookie', 'cookiename=cookievalue'); Configure::write('AsdCurl.useragent', 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:28.0) Gecko/20100101 Firefox/28.0'); -Configure::write('AsdCurl.cert','C:/xampp/htdocs/ssl_KM_Z2016_asd.trinkl.pem'); -//Configure::write('AsdCurl.schulbase0url',SCHULPORTAL_BASE0_URL); -//Configure::write('AsdCurl.schulbaseurl',SCHULPORTAL_BASE_URL); +//Configure::write('AsdCurl.cert','C:/xampp/htdocs/ssl_KM_Z2016_asd.trinkl.pem'); +Configure::write('AsdCurl.cert','/var/www/html/ssl_KM_Z2016_asd.trinkl.pem'); +Configure::write('AsdCurl.schulbase0url',SCHULPORTAL_BASE0_URL); +Configure::write('AsdCurl.schulbaseurl',SCHULPORTAL_BASE_URL); Configure::write('AsdCurl.asdbaseurl',SCHULPORTAL_ASD_BASE_URL); diff --git a/plugins/AsdCurl/src/AsdCurl.php b/plugins/AsdCurl/src/AsdCurl.php index ee2c8ba..d0a81af 100644 --- a/plugins/AsdCurl/src/AsdCurl.php +++ b/plugins/AsdCurl/src/AsdCurl.php @@ -23,8 +23,8 @@ class AsdCurl public function init_curl_params() { $ch = curl_init(); - //curl_setopt($ch, CURLOPT_PROXY, Configure::read('AsdCurl.proxy')); - curl_setopt($ch, CURLOPT_PROXY, false); + curl_setopt($ch, CURLOPT_PROXY, Configure::read('AsdCurl.proxy')); + //curl_setopt($ch, CURLOPT_PROXY, true); curl_setopt($ch, CURLOPT_USERAGENT, Configure::read('AsdCurl.useragent')); curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); @@ -33,8 +33,8 @@ class AsdCurl curl_setopt($ch, CURLOPT_COOKIEJAR, Configure::read('AsdCurl.cookiejar')); curl_setopt($ch, CURLOPT_COOKIEFILE, Configure::read('AsdCurl.cookiefile')); curl_setopt($ch, CURLOPT_COOKIE, Configure::read('AsdCurl.cookie')); - //curl_setopt($ch, CURLOPT_SSLCERT, Configure::read('AsdCurl.cert')); - //curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); + curl_setopt($ch, CURLOPT_SSLCERT, Configure::read('AsdCurl.cert')); + curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); return ($ch); } @@ -69,6 +69,7 @@ class AsdCurl } curl_setopt($ch, CURLOPT_URL, $url); $this->html = curl_exec($ch); + //debug($this->html); //debug(curl_errno($ch)); //debug(curl_getinfo($ch, CURLINFO_HTTP_CODE)); if (curl_errno($ch)) { @@ -93,10 +94,10 @@ class AsdCurl $viewstate = $this->get_string_between($this->html, 'id="javax.faces.ViewState" value="', '" autocomplete'); $login_data = [ - //'asd_username' => 'A005_TrinklW', - //'asd_password' => 'HiegTzs!12', - 'asd_username' => 'A005_Superuser', - 'asd_password' => 'asdtest01', + 'asd_username' => 'A005_TrinklW', + 'asd_password' => 'HiegTzs!12', + //'asd_username' => 'A005_Superuser', + //'asd_password' => 'asdtest01', ]; $post = [ 'login:username' => $login_data['asd_username'], @@ -162,11 +163,13 @@ class AsdCurl $SCHULPORTAL_BASE0_URL = Configure::read('AsdCurl.schulbase0url'); $SCHULPORTAL_BASE_URL = Configure::read('AsdCurl.schulbaseurl'); //$login_data = $this->request->session()->read('data'); - - $this->exec_curl($ch, $SCHULPORTAL_BASE_URL, false); + //debug($SCHULPORTAL_BASE_URL); + $html = $this->exec_curl($ch, $SCHULPORTAL_BASE_URL, false); + //debug($html); if(!($this->status)) { die($this->error); } + //debug($html); $login_data = [ 'portal_username' => 'asd.trinkl', 'portal_password' => 'HiegTzs!181', diff --git a/plugins/AsdCurl/src/AsdUp.php b/plugins/AsdCurl/src/AsdUp.php index 808097f..b599d4d 100644 --- a/plugins/AsdCurl/src/AsdUp.php +++ b/plugins/AsdCurl/src/AsdUp.php @@ -45,10 +45,10 @@ class AsdUp extends AsdCurl if(!($this->status)) { die($this->error); } - echo $this->html;die; + //echo $this->html;die; } - public function goto_budget($ch,$budget) { + public function goto_budget($ch,$schooltype) { $SCHULPORTAL_ASD_BASE_URL = Configure::read('AsdCurl.asdbaseurl'); // Reiter Unterrichtsplanung aufrufen $viewstate = $this->get_string_between($this->html, 'id="javax.faces.ViewState" value="', '" autocomplete'); @@ -97,7 +97,8 @@ class AsdUp extends AsdCurl 'mainForm:nameOffiziell' => 'Bayer.Staatsministerium für Unterricht und Kultus München', 'mainForm:schulstellePlzStrasse' => '80333', 'mainForm:schulstelleOrt' => 'München', - 'mainForm:schulnummer' => $budget['snr'], + //'mainForm:schulnummer' => $budget['snr'], + 'mainForm:schulnummer' => '0001', 'mainForm:action_anzeigen' => 'Direkt zur gewählten Schule', 'javax.faces.ViewState' => $viewstate ]; @@ -125,7 +126,8 @@ class AsdUp extends AsdCurl 'mainForm:istAnzeigeMaske' => 'false', 'mainForm:schulnr' => '', 'mainForm:schuljahr' => '23', - 'mainForm:schulnummer' => $budget['snr'], + //'mainForm:schulnummer' => $budget['snr'], + 'mainForm:schulnummer' => '0001', 'mainForm:tabs.1' => 'Budgetzuschläge', 'javax.faces.ViewState' => $viewstate ]; @@ -264,7 +266,7 @@ class AsdUp extends AsdCurl public function write_budget($ch,$budget) { $SCHULPORTAL_ASD_BASE_URL = Configure::read('AsdCurl.asdbaseurl'); - + //debug($budget);die; // Budget eintragen $viewstate = $this->get_string_between($this->html, 'id="javax.faces.ViewState" value="', '" autocomplete'); $conversationId = $this->get_string_between($this->html, 'name="conversationId" value="', '" />'); @@ -285,7 +287,7 @@ class AsdUp extends AsdCurl 'mainForm:schulnr' => '', 'mainForm:schuljahr' => '23', 'mainForm:schulnummer' => $budget['snr'], - 'mainForm:tab2:artZuschlag' => 'com.hp.asd.wl.domain.standard.Budgetform:' . $budget['budget_id'], + 'mainForm:tab2:artZuschlag' => 'com.hp.asd.wl.domain.standard.Budgetform:' . $budget['wl_werteliste_nr'], 'mainForm:tab2:datumBis' => '31.07.2019', 'mainForm:tab2:_edit_budget' => $budget['count'], 'mainForm:tab2:_edit_bemerkung' => $budget['comment'], @@ -296,7 +298,6 @@ class AsdUp extends AsdCurl if(!($this->status)) { die($this->error); } - // Budget speichern $viewstate = $this->get_string_between($this->html, 'id="javax.faces.ViewState" value="', '" autocomplete'); $conversationId = $this->get_string_between($this->html, 'name="conversationId" value="', '" />'); @@ -317,7 +318,7 @@ class AsdUp extends AsdCurl 'mainForm:schulnr' => '', 'mainForm:schuljahr' => '23', 'mainForm:schulnummer' => $budget['snr'], - 'mainForm:tab2:artZuschlag' => 'com.hp.asd.wl.domain.standard.Budgetform:' . $budget['budget_id'], + 'mainForm:tab2:artZuschlag' => 'com.hp.asd.wl.domain.standard.Budgetform:' . $budget['wl_werteliste_nr'], 'mainForm:tab2:datumBis' => '31.07.2019', 'mainForm:tab2:_edit_budget' => '', 'mainForm:tab2:_edit_bemerkung' => '', @@ -328,7 +329,6 @@ class AsdUp extends AsdCurl if(!($this->status)) { die($this->error); } - //echo $this->html;die; } diff --git a/src/Controller/BudgetController.php b/src/Controller/BudgetController.php index 631001b..03f832f 100644 --- a/src/Controller/BudgetController.php +++ b/src/Controller/BudgetController.php @@ -60,10 +60,71 @@ class BudgetController extends AppController } public function editBudget($id = null) { + $session = $this->request->session(); //debug($session->read('SchoolType'));die; $schooltype = $session->read('SchoolType'); + //debug($schooltype); + if($schooltype == '02') { + $schooltype_nr = 2; + } + else { + $schooltype_nr = 4; + } + //debug($this->referer()); + $budget_id = $this->request->params['pass'][0]; + //debug($budget_id); + $uploadData = ''; + if ($this->request->is('post')) { + if(!empty($this->request->data['file']['name'])){ + $result = $this->Budget->deleteAll(['wl_budget_id' => $budget_id]); + //debug($result);die; + $handle = fopen($this->request->data['file']['tmp_name'], "r"); + $head = true; + $snr_arr = array(); + if ($handle) { + while (($line = fgets($handle)) !== false) { + if(strlen($line) > 2) { + if($head) { + $headers = explode(';',$line); + $head = false; + } + else { + $line_arr = explode(';',$line); + if(!isset($snr_arr[$line_arr[0]])) { + $new_budget['wl_schooltype_id'] = $schooltype_nr; + $new_budget['snr'] = $line_arr[0]; + $new_budget['wl_budget_id'] = $budget_id; + $new_budget['count'] = $line_arr[1]; + $new_budget['comment'] = trim($line_arr[2]); + $new_budget['year'] = '2018'; + $new_budget['asd'] = false; + $snr_arr[$line_arr[0]] = $new_budget; + } + else { + $snr_arr[$line_arr[0]]['count'] = $snr_arr[$line_arr[0]]['count'] + $line_arr[1]; + //debug($snr_arr[$line_arr[0]]); + } + } + } + } + fclose($handle); + } + //debug($snr_arr);die; + foreach ($snr_arr as $item) { + //debug($item); + $new = $this->Budget->newEntity(); + $new = $this->Budget->patchEntity($new, $item); + $result = $this->Budget->save($new); + //debug($result);die; + } + //die; + } else { + $this->Flash->error(__('Please choose a file to upload.')); + } + } + $this->set('uploadData', $uploadData); $this->loadModel('Schools'); $schools = $this->Schools->find('all', [ 'conditions' => array('dst_schulart' => $schooltype) @@ -81,10 +142,14 @@ class BudgetController extends AppController 'conditions' => array('wl_budget_id' => $id) ]); - foreach($budgets as $budget) { + foreach($budgets as $budget) { + //debug($budget); $data[$budget['snr']][2] = $budget['count']; $data[$budget['snr']][3] = $budget['comment']; + $data[$budget['snr']][4] = $budget['asd']; } + //debug($data); + //die; $data_arr = array(); foreach($data as $entry) { array_push($data_arr,$entry); @@ -129,6 +194,7 @@ class BudgetController extends AppController if($budget['count'] != $line[2] ) { if($line[2] > 0) { $budget['count'] = $line[2]; + $budget['asd'] = 0; $this->Budget->save($budget); } else { @@ -138,6 +204,7 @@ class BudgetController extends AppController } if($budget['comment'] != $line[3] ) { $budget['comment'] = $line[3]; + $budget['asd'] = 0; $this->Budget->save($budget); fwrite($myfile,'full-comment' . PHP_EOL); } @@ -151,6 +218,7 @@ class BudgetController extends AppController $new_budget['count'] = $line[2]; $new_budget['comment'] = $line[3]; $new_budget['year'] = '2018'; + $new_budget['asd'] = 0; $new = $this->Budget->patchEntity($new, $new_budget); $this->Budget->save($new); } @@ -418,15 +486,50 @@ class BudgetController extends AppController } + public function writeBudgetById($budget_id) { + //debug($budget_id);die; + $curl = new AsdUp(); + $ch = $curl->init_curl_params(); + $curl->login_school($ch); //Login Schulportal + $curl->login_asd($ch); //Login ASD Applikation + $budget_typ = $this->Budget->wlBudgets->get($budget_id); + //debug($budget_typ); + $curl->goto_budget($ch,$budget_typ['schulart']); + //debug($curl->html); + $output = array(); + + $budgets = $this->Budget->find('all',[ + 'conditions' => ['wl_budget_id' => $budget_id,'asd' => 0], + 'limit' => 100 + ]); + foreach ($budgets as $budget) { + $curl->change_school($ch,$budget['snr']); + $budget['wl_werteliste_nr'] = $budget_typ['wl_werteliste_nr']; + //echo $curl->html; + $pos = strpos($curl->html,'class="hideOverflow200px" title="'. $budget_typ['wl_kurz_bezeichnung']. '"'); //ist das Budget schon eingetragen? + //debug($pos); + if(!$pos) { + $curl->write_budget($ch,$budget); + $budget->asd = true; + $this->Budget->save($budget); + array_push($output,$budget); + } + } + $this->set('output',$output); + + } + public function writeAsd() { $curl = new AsdUp(); //debug($curl->status); $ch = $curl->init_curl_params(); - //$curl->login_school($ch); //Login Schulportal - $curl->login_asd($ch); + //debug($ch); + $curl->login_school($ch); //Login Schulportal //debug($curl->html); - + $curl->login_asd($ch); + debug($curl->html); + die; $budget['snr'] = '9310'; $budget['budget_id'] = '1519'; $budget['count'] = '5'; diff --git a/src/Model/Entity/Budget.php b/src/Model/Entity/Budget.php index 740c07c..f3d7012 100644 --- a/src/Model/Entity/Budget.php +++ b/src/Model/Entity/Budget.php @@ -13,6 +13,7 @@ use Cake\ORM\Entity; * @property int $count * @property string $comment * @property string $year + * @property bool $asd * @property \Cake\I18n\FrozenTime $created * @property \Cake\I18n\FrozenTime $modified * @@ -38,6 +39,7 @@ class Budget extends Entity 'count' => true, 'comment' => true, 'year' => true, + 'asd' => true, 'created' => true, 'modified' => true, 'wl_schooltype' => true, diff --git a/src/Model/Table/BudgetTable.php b/src/Model/Table/BudgetTable.php index e1b949c..587b5f2 100644 --- a/src/Model/Table/BudgetTable.php +++ b/src/Model/Table/BudgetTable.php @@ -77,14 +77,18 @@ class BudgetTable extends Table $validator ->scalar('comment') ->maxLength('comment', 255) - ->requirePresence('comment', 'create') - ->notEmpty('comment'); + ->allowEmpty('comment'); $validator ->scalar('year') ->requirePresence('year', 'create') ->notEmpty('year'); + $validator + ->boolean('asd') + ->requirePresence('asd', 'create') + ->notEmpty('asd'); + return $validator; } diff --git a/src/Template/Budget/add.ctp b/src/Template/Budget/add.ctp index fbd065e..e911d11 100644 --- a/src/Template/Budget/add.ctp +++ b/src/Template/Budget/add.ctp @@ -25,6 +25,7 @@ echo $this->Form->control('count'); echo $this->Form->control('comment'); echo $this->Form->control('year'); + echo $this->Form->control('asd'); ?> Form->button(__('Submit')) ?> diff --git a/src/Template/Budget/edit.ctp b/src/Template/Budget/edit.ctp index d91181f..ab8d2cc 100644 --- a/src/Template/Budget/edit.ctp +++ b/src/Template/Budget/edit.ctp @@ -31,6 +31,7 @@ echo $this->Form->control('count'); echo $this->Form->control('comment'); echo $this->Form->control('year'); + echo $this->Form->control('asd'); ?> Form->button(__('Submit')) ?> diff --git a/src/Template/Budget/edit_budget.ctp b/src/Template/Budget/edit_budget.ctp index 7a860f8..3f3d2b7 100644 --- a/src/Template/Budget/edit_budget.ctp +++ b/src/Template/Budget/edit_budget.ctp @@ -2,15 +2,24 @@ //debug($data); for($i=0;$iHtml->link($data[$i][1],array('controller' => 'schools', 'action' => 'showbudgets',$data[$i][0])); + //debug($data[$i]); } echo '

' . $budget['wl_kurz_bezeichnung'] .'

'; + $budget_id = $this->request->params['pass'][0]; + echo $this->Html->link('Upload to ASD',array('controller' => 'budget', 'action' => 'writeBudgetById' . '/' . $budget_id)); //debug($data); ?>
-
+ +
+ Form->create($uploadData, ['type' => 'file']); ?> + Form->input('file', ['type' => 'file', 'class' => 'form-control']); ?> + Form->button(__('Upload File'), ['type'=>'submit', 'class' => 'form-controlbtn btn-default']); ?> + Form->end(); ?> +