mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-07-19 16:02:15 +00:00
Merge remote-tracking branch 'origin/master'
This commit is contained in:
@@ -0,0 +1,127 @@
|
||||
<?php
|
||||
|
||||
if (! defined('BASEPATH'))
|
||||
exit('No direct script access allowed');
|
||||
|
||||
/**
|
||||
* Database Class
|
||||
*
|
||||
*/
|
||||
|
||||
class Prestudentstatus extends FHC_Controller
|
||||
{
|
||||
/**
|
||||
* Initialize Prestudentstatus Class
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
|
||||
if ($this->input->is_cli_request())
|
||||
{
|
||||
$cli = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->output->set_status_header(403, 'Jobs must be run from the CLI');
|
||||
echo "Jobs must be run from the CLI";
|
||||
exit;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Main function index as help
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function index()
|
||||
{
|
||||
$result = "The following are the available command line interface commands\n\n";
|
||||
$result .= "php index.ci.php jobs/Studienplan CorrectStudienplan";
|
||||
|
||||
echo $result.PHP_EOL;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check all Status entries if the selected studienplan is valid for this degree programm / semester
|
||||
* if the Studienplan is not valid it searches for a valid studienplan an corrects the data if there is
|
||||
* an unambiguouse studienplan corresponding to this status
|
||||
*/
|
||||
public function correctStudienplan()
|
||||
{
|
||||
$this->load->model('organisation/Studienplan_model', 'StudienplanModel');
|
||||
|
||||
$this->load->model('crm/Prestudentstatus_model', 'PrestudentstatusModel');
|
||||
|
||||
$this->PrestudentstatusModel->addSelect('tbl_prestudentstatus.prestudent_id,
|
||||
tbl_prestudentstatus.studiensemester_kurzbz,
|
||||
tbl_prestudentstatus.ausbildungssemester,
|
||||
tbl_prestudentstatus.status_kurzbz,
|
||||
tbl_prestudent.studiengang_kz,
|
||||
tbl_prestudentstatus.studienplan_id,
|
||||
tbl_studienplan.orgform_kurzbz');
|
||||
$this->PrestudentstatusModel->addJoin('public.tbl_prestudent', 'prestudent_id');
|
||||
$this->PrestudentstatusModel->addJoin('lehre.tbl_studienplan', 'studienplan_id','LEFT');
|
||||
$this->PrestudentstatusModel->addJoin('lehre.tbl_studienordnung', 'studienordnung_id','LEFT');
|
||||
|
||||
$status = $this->PrestudentstatusModel->loadWhere("
|
||||
NOT EXISTS (
|
||||
SELECT 1 FROM lehre.tbl_studienplan_semester
|
||||
WHERE studienplan_id=tbl_prestudentstatus.studienplan_id
|
||||
AND studiensemester_kurzbz=tbl_prestudentstatus.studiensemester_kurzbz
|
||||
AND semester=tbl_prestudentstatus.ausbildungssemester)
|
||||
AND tbl_prestudentstatus.status_kurzbz NOT IN ('Abbrecher','Diplomand','Absolvent')");
|
||||
|
||||
$sum_overall = 0;
|
||||
$sum_corrected = 0;
|
||||
$sum_notcorrected = 0;
|
||||
|
||||
if(isSuccess($status))
|
||||
{
|
||||
if(hasData($status))
|
||||
{
|
||||
foreach($status->retval as $row_status)
|
||||
{
|
||||
$studienplan = $this->StudienplanModel->getStudienplaeneBySemester(
|
||||
$row_status->studiengang_kz,
|
||||
$row_status->studiensemester_kurzbz,
|
||||
$row_status->ausbildungssemester,
|
||||
$row_status->orgform_kurzbz);
|
||||
|
||||
if(isSuccess($studienplan) && count($studienplan->retval) == 1)
|
||||
{
|
||||
$this->PrestudentstatusModel->resetQuery();
|
||||
$pk_arr = array('ausbildungssemester' => $row_status->ausbildungssemester,
|
||||
'studiensemester_kurzbz' => $row_status->studiensemester_kurzbz,
|
||||
'status_kurzbz' => $row_status->status_kurzbz,
|
||||
'prestudent_id' => $row_status->prestudent_id);
|
||||
|
||||
$status = $this->PrestudentstatusModel->load($pk_arr);
|
||||
|
||||
if(isSuccess($status))
|
||||
{
|
||||
$this->PrestudentstatusModel->update($pk_arr,
|
||||
array('studienplan_id' => $studienplan->retval[0]->studienplan_id));
|
||||
$sum_corrected++;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$sum_notcorrected++;
|
||||
}
|
||||
|
||||
$sum_overall++;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
show_error($status->retval);
|
||||
}
|
||||
echo "Corrected:".$sum_corrected."\n";
|
||||
echo "Not Corrected:".$sum_notcorrected."\n";
|
||||
echo "Overall incorrect:".$sum_overall."\n";
|
||||
}
|
||||
}
|
||||
+119
-126
@@ -4,25 +4,25 @@ class DB_Model extends FHC_Model
|
||||
{
|
||||
// Default schema used by the models
|
||||
const DEFAULT_SCHEMA = 'public';
|
||||
|
||||
|
||||
// Default model class name postfix
|
||||
const MODEL_POSTFIX = '_model';
|
||||
|
||||
|
||||
// Query used to get the list of columns from a table
|
||||
const QUERY_LIST_FIELDS = 'SELECT * FROM %s WHERE 0 = 1';
|
||||
|
||||
|
||||
// Constants used to convert postgresql arrays and booleans to the php equivalent
|
||||
const PGSQL_ARRAY_TYPE = '_';
|
||||
const PGSQL_BOOLEAN_TRUE = 't';
|
||||
const PGSQL_BOOLEAN_FALSE = 'f';
|
||||
const PGSQL_BOOLEAN_TYPE = 'bool';
|
||||
const PGSQL_BOOLEAN_ARRAY_TYPE = '_bool';
|
||||
|
||||
|
||||
protected $dbTable; // Name of the DB-Table for CI-Insert, -Update, ...
|
||||
protected $pk; // Name of the PrimaryKey for DB-Update, Load, ...
|
||||
protected $hasSequence; // False if this table has a composite primary key that is not using a sequence
|
||||
// True if this table has a primary key that uses a sequence
|
||||
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*/
|
||||
@@ -30,22 +30,22 @@ class DB_Model extends FHC_Model
|
||||
{
|
||||
// Call parent constructor
|
||||
parent::__construct();
|
||||
|
||||
|
||||
// Set properties
|
||||
$this->pk = $pk;
|
||||
$this->dbTable = $dbTable;
|
||||
$this->hasSequence = $hasSequence;
|
||||
|
||||
|
||||
// Loads DB conns and confs
|
||||
$this->load->database();
|
||||
|
||||
|
||||
// Loads the UDF library
|
||||
$this->load->library('UDFLib');
|
||||
}
|
||||
|
||||
|
||||
// ------------------------------------------------------------------------------------------
|
||||
// Public methods
|
||||
|
||||
|
||||
/**
|
||||
* Insert Data into DB-Table
|
||||
*
|
||||
@@ -56,13 +56,13 @@ class DB_Model extends FHC_Model
|
||||
{
|
||||
// Check class properties
|
||||
if (is_null($this->dbTable)) return error(FHC_MODEL_ERROR, FHC_NODBTABLE);
|
||||
|
||||
|
||||
// Checks rights
|
||||
if (isError($ent = $this->_isEntitled(PermissionLib::INSERT_RIGHT))) return $ent;
|
||||
|
||||
|
||||
// If this table has UDF and the validation of them is ok
|
||||
if (isError($validate = $this->_manageUDFs($data, $this->dbTable))) return $validate;
|
||||
|
||||
|
||||
// DB-INSERT
|
||||
if ($this->db->insert($this->dbTable, $data))
|
||||
{
|
||||
@@ -93,7 +93,7 @@ class DB_Model extends FHC_Model
|
||||
return error($this->db->error(), FHC_DB_ERROR);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Update Data in DB-Table
|
||||
*
|
||||
@@ -106,15 +106,15 @@ class DB_Model extends FHC_Model
|
||||
// Check class properties
|
||||
if (is_null($this->pk)) return error(FHC_MODEL_ERROR, FHC_NOPK);
|
||||
if (is_null($this->dbTable)) return error(FHC_MODEL_ERROR, FHC_NODBTABLE);
|
||||
|
||||
|
||||
// Checks rights
|
||||
if (isError($ent = $this->_isEntitled(PermissionLib::UPDATE_RIGHT))) return $ent;
|
||||
|
||||
|
||||
// If this table has UDF and the validation of them is ok
|
||||
if (isError($validate = $this->_manageUDFs($data, $this->dbTable, $id))) return $validate;
|
||||
|
||||
|
||||
$tmpId = $id;
|
||||
|
||||
|
||||
// Check for composite Primary Key, prepare the where clause
|
||||
if (is_array($id))
|
||||
{
|
||||
@@ -127,9 +127,9 @@ class DB_Model extends FHC_Model
|
||||
{
|
||||
$tmpId = array($this->pk => $id);
|
||||
}
|
||||
|
||||
|
||||
$this->db->where($tmpId);
|
||||
|
||||
|
||||
// DB-UPDATE
|
||||
if ($this->db->update($this->dbTable, $data))
|
||||
{
|
||||
@@ -140,7 +140,7 @@ class DB_Model extends FHC_Model
|
||||
return error($this->db->error(), FHC_DB_ERROR);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Delete data from DB-Table
|
||||
*
|
||||
@@ -152,12 +152,12 @@ class DB_Model extends FHC_Model
|
||||
// Check class properties
|
||||
if (is_null($this->dbTable)) return error(FHC_MODEL_ERROR, FHC_NODBTABLE);
|
||||
if (is_null($this->pk)) return error(FHC_MODEL_ERROR, FHC_NOPK);
|
||||
|
||||
|
||||
// Checks rights
|
||||
if (isError($ent = $this->_isEntitled(PermissionLib::DELETE_RIGHT))) return $ent;
|
||||
|
||||
|
||||
$tmpId = $id;
|
||||
|
||||
|
||||
// Check for composite Primary Key
|
||||
if (is_array($id))
|
||||
{
|
||||
@@ -170,7 +170,7 @@ class DB_Model extends FHC_Model
|
||||
{
|
||||
$tmpId = array($this->pk => $id);
|
||||
}
|
||||
|
||||
|
||||
// DB-DELETE
|
||||
if ($this->db->delete($this->dbTable, $tmpId))
|
||||
{
|
||||
@@ -193,12 +193,12 @@ class DB_Model extends FHC_Model
|
||||
// Check class properties
|
||||
if (is_null($this->pk)) return error(FHC_MODEL_ERROR, FHC_NOPK);
|
||||
if (is_null($this->dbTable)) return error(FHC_MODEL_ERROR, FHC_NODBTABLE);
|
||||
|
||||
|
||||
// Checks rights
|
||||
if (isError($ent = $this->_isEntitled(PermissionLib::SELECT_RIGHT))) return $ent;
|
||||
|
||||
|
||||
$tmpId = $id;
|
||||
|
||||
|
||||
// Check for composite Primary Key
|
||||
if (is_array($id))
|
||||
{
|
||||
@@ -211,7 +211,7 @@ class DB_Model extends FHC_Model
|
||||
{
|
||||
$tmpId = array($this->pk => $id);
|
||||
}
|
||||
|
||||
|
||||
// DB-SELECT
|
||||
if ($result = $this->db->get_where($this->dbTable, $tmpId))
|
||||
{
|
||||
@@ -232,10 +232,10 @@ class DB_Model extends FHC_Model
|
||||
{
|
||||
// Check class properties
|
||||
if (is_null($this->dbTable)) return error(FHC_MODEL_ERROR, FHC_NODBTABLE);
|
||||
|
||||
|
||||
// Checks rights
|
||||
if (isError($ent = $this->_isEntitled(PermissionLib::SELECT_RIGHT))) return $ent;
|
||||
|
||||
|
||||
// Execute query
|
||||
if ($result = $this->db->get_where($this->dbTable, $where))
|
||||
{
|
||||
@@ -246,7 +246,7 @@ class DB_Model extends FHC_Model
|
||||
return error($this->db->error(), FHC_DB_ERROR);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Load data and convert a record into a list of data from the main table,
|
||||
* and linked to every element, the data from the side tables
|
||||
@@ -263,15 +263,15 @@ class DB_Model extends FHC_Model
|
||||
{
|
||||
// Check class properties
|
||||
if (is_null($this->dbTable)) return error(FHC_MODEL_ERROR, FHC_NODBTABLE);
|
||||
|
||||
|
||||
// Checks rights
|
||||
if (isError($ent = $this->_isEntitled(PermissionLib::SELECT_RIGHT))) return $ent;
|
||||
|
||||
|
||||
// List of tables on which it will work
|
||||
$tables = array_merge(array($mainTable), $sideTables);
|
||||
// Array that will contain the number of columns of each table
|
||||
$tableColumnsCountArray = array();
|
||||
|
||||
|
||||
// Generates the select clause based on the columns of each table
|
||||
$select = '';
|
||||
for ($t = 0; $t < count($tables); $t++)
|
||||
@@ -280,7 +280,7 @@ class DB_Model extends FHC_Model
|
||||
$schemaAndTable = $this->getSchemaAndTable($tables[$t]);
|
||||
// Discard the schema, not needed in the next steps
|
||||
$tables[$t] = $schemaAndTable->table;
|
||||
|
||||
|
||||
// List of the columns of the current table
|
||||
// NOTE: $this->db->list_fields($tables[$t]) doesn't work if there are two tables with
|
||||
// the same name in two different schemas, use this workaround
|
||||
@@ -289,7 +289,7 @@ class DB_Model extends FHC_Model
|
||||
{
|
||||
$fields = $lstColumns->retval;
|
||||
}
|
||||
|
||||
|
||||
for ($f = 0; $f < count($fields); $f++)
|
||||
{
|
||||
// To avoid overwriting of the properties within the object returned by CI
|
||||
@@ -298,15 +298,15 @@ class DB_Model extends FHC_Model
|
||||
$select .= $tables[$t].'.'.$fields[$f]->column_name.' AS '.$tables[$t].'_'.$fields[$f]->column_name;
|
||||
if ($f < count($fields) - 1) $select .= ', ';
|
||||
}
|
||||
|
||||
|
||||
if ($t < count($tables) - 1) $select .= ', ';
|
||||
|
||||
|
||||
$tableColumnsCountArray[$t] = count($fields);
|
||||
}
|
||||
|
||||
|
||||
// Adds the select clause
|
||||
$this->addSelect($select);
|
||||
|
||||
|
||||
// Execute the query
|
||||
$resultDB = $this->db->get_where($this->dbTable, $where);
|
||||
// If everything went ok...
|
||||
@@ -319,7 +319,7 @@ class DB_Model extends FHC_Model
|
||||
// of a side table
|
||||
$returnArray = array();
|
||||
$returnArrayCounter = 0; // Array counter
|
||||
|
||||
|
||||
// Iterates the array that contains data from DB
|
||||
for ($i = 0; $i < count($resultArray); $i++)
|
||||
{
|
||||
@@ -333,15 +333,15 @@ class DB_Model extends FHC_Model
|
||||
for ($f = 0; $f < count($tableColumnsCountArray); $f++)
|
||||
{
|
||||
$objTmpArray[$f] = new stdClass(); // Object that will represent a data set of a table
|
||||
|
||||
|
||||
foreach (array_slice($objectVars, $tableColumnsCountArrayOffset, $tableColumnsCountArray[$f]) as $key => $value)
|
||||
{
|
||||
$objTmpArray[$f]->{str_replace($tables[$f].'_', '', $key)} = $value;
|
||||
}
|
||||
|
||||
|
||||
$tableColumnsCountArrayOffset += $tableColumnsCountArray[$f]; // Increasing the offset
|
||||
}
|
||||
|
||||
|
||||
// Object that represents data of the main table
|
||||
$mainTableObj = $objTmpArray[0];
|
||||
// Fill $returnArray with all data from mainTable, and for each element will link the data from the side tables
|
||||
@@ -354,7 +354,7 @@ class DB_Model extends FHC_Model
|
||||
{
|
||||
$sideTableProperty = $sideTablesAliases[$t - 1];
|
||||
}
|
||||
|
||||
|
||||
// If the side table has data. If it was used a left join all the properties could be null
|
||||
// NOTE: Keep this way to be compatible with a php version older than 5.5
|
||||
$tmpFilteredArray = array_filter(get_object_vars($sideTableObj));
|
||||
@@ -379,7 +379,7 @@ class DB_Model extends FHC_Model
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Sets result with the standard success object that contains all the studiengang
|
||||
$result = success($returnArray);
|
||||
}
|
||||
@@ -387,10 +387,10 @@ class DB_Model extends FHC_Model
|
||||
{
|
||||
$result = error($resultDB);
|
||||
}
|
||||
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Add a table to join with
|
||||
*
|
||||
@@ -405,12 +405,12 @@ class DB_Model extends FHC_Model
|
||||
{
|
||||
return error(FHC_MODEL_ERROR, FHC_MODEL_ERROR);
|
||||
}
|
||||
|
||||
|
||||
$this->db->join($joinTable, $cond, $type);
|
||||
|
||||
|
||||
return success(true);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Add order clause
|
||||
*
|
||||
@@ -420,12 +420,12 @@ class DB_Model extends FHC_Model
|
||||
{
|
||||
// Check class properties and parameters
|
||||
if (is_null($field) || !in_array($type, array('ASC', 'DESC'))) return error(FHC_MODEL_ERROR, FHC_MODEL_ERROR);
|
||||
|
||||
|
||||
$this->db->order_by($field, $type);
|
||||
|
||||
|
||||
return success(true);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Add select clause
|
||||
*
|
||||
@@ -435,12 +435,12 @@ class DB_Model extends FHC_Model
|
||||
{
|
||||
// Check class properties and parameters
|
||||
if (is_null($select) || $select == '') return error(FHC_MODEL_ERROR, FHC_MODEL_ERROR);
|
||||
|
||||
|
||||
$this->db->select($select, $escape);
|
||||
|
||||
|
||||
return success(true);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Add distinct clause
|
||||
*
|
||||
@@ -450,7 +450,7 @@ class DB_Model extends FHC_Model
|
||||
{
|
||||
$this->db->distinct();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Add limit clause
|
||||
*
|
||||
@@ -460,7 +460,7 @@ class DB_Model extends FHC_Model
|
||||
{
|
||||
// Check class properties and parameters
|
||||
if (!is_numeric($start) || (is_numeric($start) && $start <= 0)) return error(FHC_MODEL_ERROR, FHC_MODEL_ERROR);
|
||||
|
||||
|
||||
if (is_numeric($end) && $end > $start)
|
||||
{
|
||||
$this->db->limit($start, $end);
|
||||
@@ -469,10 +469,10 @@ class DB_Model extends FHC_Model
|
||||
{
|
||||
$this->db->limit($start);
|
||||
}
|
||||
|
||||
|
||||
return success(true);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Add a table in the from clause
|
||||
*
|
||||
@@ -481,20 +481,20 @@ class DB_Model extends FHC_Model
|
||||
public function addFrom($table, $alias = null)
|
||||
{
|
||||
$tmpTable = trim($table);
|
||||
|
||||
|
||||
// Check parameters
|
||||
if (empty($tmpTable)) return error(FHC_MODEL_ERROR, FHC_MODEL_ERROR);
|
||||
|
||||
|
||||
if (!empty($alias))
|
||||
{
|
||||
$tmpTable .= ' AS '.$alias;
|
||||
}
|
||||
|
||||
|
||||
$this->db->from($tmpTable);
|
||||
|
||||
|
||||
return success(true);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Add one or more fields in the group by clause
|
||||
*
|
||||
@@ -509,12 +509,12 @@ class DB_Model extends FHC_Model
|
||||
{
|
||||
return error(FHC_MODEL_ERROR, FHC_MODEL_ERROR);
|
||||
}
|
||||
|
||||
|
||||
$this->db->group_by($fields);
|
||||
|
||||
|
||||
return success(true);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Reset the query builder state
|
||||
*
|
||||
@@ -524,7 +524,7 @@ class DB_Model extends FHC_Model
|
||||
{
|
||||
$this->db->reset_query();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* This method call the method escape from class CI_DB_driver, therefore:
|
||||
* this method determines the data type so that it can escape only string data.
|
||||
@@ -555,11 +555,11 @@ class DB_Model extends FHC_Model
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
// If it is null, let it be null
|
||||
return $val;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Converts from PostgreSQL array to php array
|
||||
* It also takes care about array of booleans
|
||||
@@ -568,7 +568,7 @@ class DB_Model extends FHC_Model
|
||||
{
|
||||
// At least returns an empty array
|
||||
$result = array();
|
||||
|
||||
|
||||
// String that represents the pgsql array, better if not empty
|
||||
if (!empty($string))
|
||||
{
|
||||
@@ -592,44 +592,44 @@ class DB_Model extends FHC_Model
|
||||
$result[] = $tmp;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Returns an array that contains a list of columns names of this table
|
||||
*/
|
||||
public function listFields()
|
||||
{
|
||||
$listFields = array();
|
||||
|
||||
|
||||
// Workaround to get metadata from this table
|
||||
$result = $this->db->query(sprintf(DB_Model::QUERY_LIST_FIELDS, $this->dbTable));
|
||||
|
||||
|
||||
if (is_object($result))
|
||||
{
|
||||
$listFields = $result->list_fields();
|
||||
}
|
||||
|
||||
|
||||
return $listFields;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Checks if this table has a field == $field
|
||||
*/
|
||||
public function fieldExists($field)
|
||||
{
|
||||
$exists = true;
|
||||
|
||||
|
||||
// If $field is not found in the list of fields of this table
|
||||
if (array_search($field, $this->listFields()) === false)
|
||||
{
|
||||
$exists = false;
|
||||
}
|
||||
|
||||
|
||||
return $exists;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Returns all the UDF contained in this table ($dbTable)
|
||||
* If no UDF are present, an empty array will be returned
|
||||
@@ -637,9 +637,9 @@ class DB_Model extends FHC_Model
|
||||
public function getUDFs($id, $udfName = null)
|
||||
{
|
||||
$udfs = array();
|
||||
|
||||
|
||||
$this->addSelect(UDFLib::COLUMN_NAME); // select only the column with UDF
|
||||
|
||||
|
||||
$result = $this->load($id);
|
||||
if (hasData($result))
|
||||
{
|
||||
@@ -658,10 +658,10 @@ class DB_Model extends FHC_Model
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return $udfs;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Checks if this table has the field udf_values
|
||||
*/
|
||||
@@ -669,10 +669,10 @@ class DB_Model extends FHC_Model
|
||||
{
|
||||
return $this->fieldExists(UDFLib::COLUMN_NAME);
|
||||
}
|
||||
|
||||
|
||||
// ------------------------------------------------------------------------------------------
|
||||
// Protected methods
|
||||
|
||||
|
||||
/**
|
||||
* Executes a query and converts array and boolean data types from PgSql to php
|
||||
* @return: boolean false on failure
|
||||
@@ -682,7 +682,7 @@ class DB_Model extends FHC_Model
|
||||
protected function execQuery($query, $parametersArray = null)
|
||||
{
|
||||
$result = null;
|
||||
|
||||
|
||||
// If the query is empty don't lose time
|
||||
if (!empty($query))
|
||||
{
|
||||
@@ -695,7 +695,7 @@ class DB_Model extends FHC_Model
|
||||
{
|
||||
$resultDB = $this->db->query($query);
|
||||
}
|
||||
|
||||
|
||||
// If no errors occurred
|
||||
if ($resultDB)
|
||||
{
|
||||
@@ -706,10 +706,10 @@ class DB_Model extends FHC_Model
|
||||
$result = error($this->db->error(), FHC_DB_ERROR);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Get schema and table name from the parameter
|
||||
* If no schema are specified it will returns the parameter as table name,
|
||||
@@ -725,20 +725,20 @@ class DB_Model extends FHC_Model
|
||||
$result = new stdClass();
|
||||
$result->table = $schemaAndTable;
|
||||
$result->schema = DB_Model::DEFAULT_SCHEMA;
|
||||
|
||||
|
||||
// If a schema is specified
|
||||
if (($pos = strpos($schemaAndTable, '.')) !== false)
|
||||
{
|
||||
$result->schema = substr($schemaAndTable, 0, $pos);
|
||||
$result->table = substr($schemaAndTable, $pos + 1);
|
||||
}
|
||||
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
|
||||
// ------------------------------------------------------------------------------------------
|
||||
// Private methods
|
||||
|
||||
|
||||
/**
|
||||
* Invalid ID
|
||||
*
|
||||
@@ -749,43 +749,36 @@ class DB_Model extends FHC_Model
|
||||
private function _arrayCombine($idexes, $values)
|
||||
{
|
||||
if (count($idexes) != count($values)) return null;
|
||||
|
||||
|
||||
return array_combine($idexes, $values);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Checks if the caller is entitled to perform this operation with this right
|
||||
*/
|
||||
private function _isEntitled($permission)
|
||||
{
|
||||
$ent = success(true);
|
||||
|
||||
// If the caller is _not_ a model _and_ tries to read data, then avoids to check permissions
|
||||
// Otherwise checks always the permissions
|
||||
if (($permission == PermissionLib::SELECT_RIGHT
|
||||
&& substr(get_called_class(), -6) == DB_Model::MODEL_POSTFIX)
|
||||
|| $permission != PermissionLib::SELECT_RIGHT)
|
||||
|
||||
$ent = $this->isEntitled($this->dbTable, $permission, FHC_NORIGHT, FHC_MODEL_ERROR);
|
||||
// If true is not returned, then an error has occurred
|
||||
if (isError($ent))
|
||||
{
|
||||
$ent = $this->isEntitled($this->dbTable, $permission, FHC_NORIGHT, FHC_MODEL_ERROR);
|
||||
// If true is not returned, then an error has occurred
|
||||
if (isError($ent))
|
||||
{
|
||||
// Before returning the object containing the error, reset the build query
|
||||
// This is for preventing that other parts of the query will be built before of the next execution
|
||||
$this->resetQuery();
|
||||
}
|
||||
// Before returning the object containing the error, reset the build query
|
||||
// This is for preventing that other parts of the query will be built before of the next execution
|
||||
$this->resetQuery();
|
||||
}
|
||||
|
||||
|
||||
return $ent;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Wrapper method for UDFLib->manageUDFs
|
||||
*/
|
||||
private function _manageUDFs(&$data, $schemaAndTable, $id = null)
|
||||
{
|
||||
$manageUDFs = success(true);
|
||||
|
||||
|
||||
if ($this->hasUDF())
|
||||
{
|
||||
if ($id != null)
|
||||
@@ -797,10 +790,10 @@ class DB_Model extends FHC_Model
|
||||
$manageUDFs = $this->udflib->manageUDFs($data, $this->dbTable);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return $manageUDFs;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Converts array and boolean data types from PgSql to php
|
||||
* NOTE: PostgreSQL php drivers returns:
|
||||
@@ -811,7 +804,7 @@ class DB_Model extends FHC_Model
|
||||
private function _toPhp($result)
|
||||
{
|
||||
$toPhp = $result; // if there is nothing to convert then return the result from DB
|
||||
|
||||
|
||||
// If it's an object its fields will be parsed to find booleans and arrays types
|
||||
if (is_object($result))
|
||||
{
|
||||
@@ -834,7 +827,7 @@ class DB_Model extends FHC_Model
|
||||
array_push($toBeConverterdArray, $toBeConverted);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// If there is something to convert, otherwhise don't lose time
|
||||
if (count($toBeConverterdArray) > 0)
|
||||
{
|
||||
@@ -850,7 +843,7 @@ class DB_Model extends FHC_Model
|
||||
{
|
||||
// Single element
|
||||
$toBeConverted = $toBeConverterdArray[$j];
|
||||
|
||||
|
||||
// Array type
|
||||
if (strpos($toBeConverted->type, DB_Model::PGSQL_ARRAY_TYPE) !== false)
|
||||
{
|
||||
@@ -889,10 +882,10 @@ class DB_Model extends FHC_Model
|
||||
$toPhp = $result->result();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return $toPhp;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Used in loadTree to find the main tables
|
||||
*/
|
||||
@@ -905,10 +898,10 @@ class DB_Model extends FHC_Model
|
||||
return $i;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Workaround of CI_DB_driver->_list_columns
|
||||
* CI_DB_driver->list_fields($tableName), that calls CI_DB_postgre_driver->_list_columns,
|
||||
@@ -920,7 +913,7 @@ class DB_Model extends FHC_Model
|
||||
FROM information_schema.columns
|
||||
WHERE LOWER(table_schema) = ?
|
||||
AND LOWER(table_name) = ?';
|
||||
|
||||
|
||||
return $this->execQuery($query, array(strtolower($schema), strtolower($table)));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -12,18 +12,18 @@ class FHC_Model extends CI_Model
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
|
||||
|
||||
// Load languages files
|
||||
$this->lang->load('fhc_model');
|
||||
$this->lang->load('fhcomplete');
|
||||
|
||||
|
||||
// Load return message helper
|
||||
$this->load->helper('message');
|
||||
|
||||
|
||||
// Loads the permission library
|
||||
$this->load->library('PermissionLib');
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Check if the user is entitled to get access to a source with the given access type
|
||||
* This is a wrapper for the same method present in the PermissionLib
|
||||
@@ -31,19 +31,28 @@ class FHC_Model extends CI_Model
|
||||
public function isEntitled($sourceName, $accessType, $languageMessageCode, $msgErrorCode)
|
||||
{
|
||||
$isEntitled = success(true);
|
||||
|
||||
if ($this->permissionlib->isEntitled($sourceName, $accessType) === false)
|
||||
|
||||
// If script is not called from Commandline
|
||||
// or the caller is _not_ a model _and_ tries to read data, then avoids to check permissions
|
||||
// Otherwise checks always the permissions
|
||||
if (!is_cli() ||
|
||||
($accessType == PermissionLib::SELECT_RIGHT
|
||||
&& substr(get_called_class(), -6) == DB_Model::MODEL_POSTFIX)
|
||||
|| $accessType != PermissionLib::SELECT_RIGHT)
|
||||
{
|
||||
$retval = sprintf(
|
||||
'%s -> %s:%s',
|
||||
lang('fhc_'.$languageMessageCode),
|
||||
$this->permissionlib->getBerechtigungKurzbz($sourceName),
|
||||
$accessType
|
||||
);
|
||||
|
||||
$isEntitled = error($retval, $msgErrorCode);
|
||||
if ($this->permissionlib->isEntitled($sourceName, $accessType) === false)
|
||||
{
|
||||
$retval = sprintf(
|
||||
'%s -> %s:%s',
|
||||
lang('fhc_'.$languageMessageCode),
|
||||
$this->permissionlib->getBerechtigungKurzbz($sourceName),
|
||||
$accessType
|
||||
);
|
||||
|
||||
$isEntitled = error($retval, $msgErrorCode);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return $isEntitled;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -50,10 +50,13 @@ class PermissionLib
|
||||
|
||||
// Loads the array of resources
|
||||
$this->acl = $this->ci->config->item('fhc_acl');
|
||||
|
||||
// API Caller rights initialization
|
||||
self::$bb = new benutzerberechtigung();
|
||||
self::$bb->getBerechtigungen(getAuthUID());
|
||||
|
||||
if (!is_cli())
|
||||
{
|
||||
// API Caller rights initialization
|
||||
self::$bb = new benutzerberechtigung();
|
||||
self::$bb->getBerechtigungen(getAuthUID());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -65,14 +68,21 @@ class PermissionLib
|
||||
public function isEntitled($sourceName, $permissionType)
|
||||
{
|
||||
$isEntitled = false;
|
||||
|
||||
// If the resource exists
|
||||
if (isset($this->acl[$sourceName]))
|
||||
|
||||
if(!is_cli())
|
||||
{
|
||||
// Checks permission
|
||||
$isEntitled = $this->_isBerechtigt($this->acl[$sourceName], $permissionType);
|
||||
// If the resource exists
|
||||
if (isset($this->acl[$sourceName]))
|
||||
{
|
||||
// Checks permission
|
||||
$isEntitled = $this->_isBerechtigt($this->acl[$sourceName], $permissionType);
|
||||
}
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
$isEntitled = true;
|
||||
}
|
||||
|
||||
return $isEntitled;
|
||||
}
|
||||
|
||||
@@ -82,12 +92,12 @@ class PermissionLib
|
||||
public function getBerechtigungKurzbz($sourceName)
|
||||
{
|
||||
$returnValue = null;
|
||||
|
||||
|
||||
if (isset($this->acl[$sourceName]))
|
||||
{
|
||||
$returnValue = $this->acl[$sourceName];
|
||||
}
|
||||
|
||||
|
||||
return $returnValue;
|
||||
}
|
||||
|
||||
@@ -97,7 +107,7 @@ class PermissionLib
|
||||
private function _isBerechtigt($berechtigung_kurzbz, $art = null, $oe_kurzbz = null, $kostenstelle_id = null)
|
||||
{
|
||||
$isBerechtigt = false;
|
||||
|
||||
|
||||
if (!is_null($berechtigung_kurzbz))
|
||||
{
|
||||
if (self::$bb->isBerechtigt($berechtigung_kurzbz, $oe_kurzbz, $art, $kostenstelle_id))
|
||||
@@ -105,7 +115,7 @@ class PermissionLib
|
||||
$isBerechtigt = true;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return $isBerechtigt;
|
||||
}
|
||||
}
|
||||
|
||||
+79
-61
@@ -26,7 +26,7 @@
|
||||
require_once(dirname(__FILE__).'/basis_db.class.php');
|
||||
require_once(dirname(__FILE__).'/datum.class.php');
|
||||
|
||||
class cronjob extends basis_db
|
||||
class cronjob extends basis_db
|
||||
{
|
||||
public $new;
|
||||
public $result = array();
|
||||
@@ -54,7 +54,7 @@ class cronjob extends basis_db
|
||||
public $insertamum;
|
||||
public $insertvon;
|
||||
public $variablen;
|
||||
|
||||
|
||||
/**
|
||||
* Konstruktor
|
||||
* @param $cronjob_id ID des Cronjobs der geladen werden soll (Default=null)
|
||||
@@ -62,7 +62,7 @@ class cronjob extends basis_db
|
||||
public function __construct($cronjob_id=null)
|
||||
{
|
||||
parent::__construct();
|
||||
|
||||
|
||||
if(!is_null($cronjob_id))
|
||||
$this->load($cronjob_id);
|
||||
}
|
||||
@@ -79,9 +79,9 @@ class cronjob extends basis_db
|
||||
$this->errormsg = 'id ist ungueltig';
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
$qry = "SELECT * FROM system.tbl_cronjob WHERE cronjob_id=".$this->db_add_param($cronjob_id, FHC_INTEGER);
|
||||
|
||||
|
||||
if($this->db_query($qry))
|
||||
{
|
||||
if($row = $this->db_fetch_object())
|
||||
@@ -109,13 +109,13 @@ class cronjob extends basis_db
|
||||
$this->variablen = $row->variablen;
|
||||
return true;
|
||||
}
|
||||
else
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Datensatz wurde nicht gefunden';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Fehler beim Laden der Daten';
|
||||
return false;
|
||||
@@ -163,7 +163,7 @@ class cronjob extends basis_db
|
||||
$this->errormsg = '';
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Speichert den aktuellen Datensatz in die Datenbank
|
||||
* Wenn $neu auf true gesetzt ist wird ein neuer Datensatz angelegt
|
||||
@@ -184,7 +184,7 @@ class cronjob extends basis_db
|
||||
//Neuen Datensatz einfuegen
|
||||
|
||||
$qry = 'BEGIN;INSERT INTO system.tbl_cronjob (server_kurzbz, titel, beschreibung, file, last_execute, aktiv,
|
||||
running, jahr, monat, tag, wochentag, stunde, minute, standalone, reihenfolge, updateamum, updatevon,
|
||||
running, jahr, monat, tag, wochentag, stunde, minute, standalone, reihenfolge, updateamum, updatevon,
|
||||
insertamum, insertvon, variablen) VALUES('.
|
||||
$this->db_add_param($this->server_kurzbz).', '.
|
||||
$this->db_add_param($this->titel).', '.
|
||||
@@ -217,7 +217,7 @@ class cronjob extends basis_db
|
||||
$this->errormsg = 'cronjob_id muss eine gueltige Zahl sein';
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
$qry='UPDATE system.tbl_cronjob SET '.
|
||||
'server_kurzbz='.$this->db_add_param($this->server_kurzbz).', '.
|
||||
'titel='.$this->db_add_param($this->titel).', '.
|
||||
@@ -254,14 +254,14 @@ class cronjob extends basis_db
|
||||
$this->db_query('COMMIT');
|
||||
return true;
|
||||
}
|
||||
else
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Fehler beim Auslesen der Sequence';
|
||||
$this->db_query('ROLLBACK');
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Fehler beim Auslesen der Sequence';
|
||||
$this->db_query('ROLLBACK');
|
||||
@@ -289,18 +289,18 @@ class cronjob extends basis_db
|
||||
$this->errormsg = 'Id ist ungueltig';
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
$qry = "DELETE FROM system.tbl_cronjob WHERE cronjob_id=".$this->db_add_param($cronjob_id, FHC_INTEGER);
|
||||
|
||||
|
||||
if($this->db_query($qry))
|
||||
return true;
|
||||
else
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Fehler beim Loeschen des Datensatzes';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Liefert alle Cronjobs
|
||||
* @param $server
|
||||
@@ -328,7 +328,7 @@ class cronjob extends basis_db
|
||||
while($row = $this->db_fetch_object($result))
|
||||
{
|
||||
$obj = new cronjob();
|
||||
|
||||
|
||||
$obj->cronjob_id = $row->cronjob_id;
|
||||
$obj->server_kurzbz = $row->server_kurzbz;
|
||||
$obj->titel = $row->titel;
|
||||
@@ -350,60 +350,78 @@ class cronjob extends basis_db
|
||||
$obj->insertamum = $row->insertamum;
|
||||
$obj->insertvon = $row->insertvon;
|
||||
$obj->variablen = $row->variablen;
|
||||
|
||||
|
||||
$this->result[] = $obj;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Startet einen geladenen Cronjob
|
||||
*
|
||||
* @return true wenn ok, false im Fehlerfall
|
||||
*/
|
||||
public function execute()
|
||||
{
|
||||
{
|
||||
$return = true;
|
||||
if($this->standalone && $this->isJobRunning())
|
||||
{
|
||||
$this->errormsg = 'Job kann nicht ausgefuehrt werden, da noch ein anderer Job laeuft';
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
if($this->server_kurzbz!=SERVER_NAME)
|
||||
{
|
||||
$this->errormsg = 'Fehler: Dieses Script kann nur am Server '.$this->server_kurzbz.' gestartet werden. (aktueller Server laut config: '.SERVER_NAME.')';
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
$this->running = true;
|
||||
if(!$this->save())
|
||||
return false;
|
||||
|
||||
|
||||
unset($this->output);
|
||||
$path = dirname($this->file);
|
||||
$file = basename($this->file);
|
||||
$file .= ' id='.$this->cronjob_id;
|
||||
|
||||
/**
|
||||
* If CI cronjobs are used, the parameters needs to be handled separately otherwise the
|
||||
* paramters are recognized as part of the original path if they contain slashes
|
||||
*
|
||||
* /var/www/index.ci.php jobs/foo method
|
||||
*/
|
||||
if(mb_strpos($this->file,' ') !== false)
|
||||
{
|
||||
$path = dirname(mb_substr($this->file,0, mb_strpos($this->file,' ')));
|
||||
$file = basename(mb_substr($this->file,0, mb_strpos($this->file,' ')));
|
||||
$parameter = mb_substr($this->file, mb_strpos($this->file,' '));
|
||||
}
|
||||
else
|
||||
{
|
||||
$path = dirname($this->file);
|
||||
$file = basename($this->file);
|
||||
$parameter = ' id='.$this->cronjob_id;
|
||||
}
|
||||
|
||||
$file .= $parameter;
|
||||
if(chdir($path))
|
||||
{
|
||||
exec("php $file", $this->output);
|
||||
//echo "Execute: php $file";
|
||||
$this->last_execute = date('Y-m-d H:i:s');
|
||||
$this->last_execute = date('Y-m-d H:i:s');
|
||||
}
|
||||
else
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Fehler: Falscher Verzeichnisname';
|
||||
$return = false;
|
||||
}
|
||||
|
||||
|
||||
$this->running = false;
|
||||
|
||||
|
||||
if(!$this->save())
|
||||
return false;
|
||||
|
||||
|
||||
return $return;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Startet einen geladenen Cronjob mit Initialisierungsparameter
|
||||
* Der Job setzt dann die Standardwerte fuer die Variablen
|
||||
@@ -411,9 +429,9 @@ class cronjob extends basis_db
|
||||
* @return true wenn ok, false im Fehlerfall
|
||||
*/
|
||||
public function init()
|
||||
{
|
||||
{
|
||||
$return = true;
|
||||
|
||||
|
||||
unset($this->output);
|
||||
$path = dirname($this->file);
|
||||
$file = basename($this->file);
|
||||
@@ -425,13 +443,13 @@ class cronjob extends basis_db
|
||||
//echo "Execute: php $file";
|
||||
return true;
|
||||
}
|
||||
else
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Fehler: Falscher Verzeichnisname';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Prueft ob zur Zeit ein Cronjob laeuft
|
||||
*
|
||||
@@ -440,23 +458,23 @@ class cronjob extends basis_db
|
||||
public function isJobRunning()
|
||||
{
|
||||
$qry = 'SELECT count(*) as anzahl FROM system.tbl_cronjob WHERE running=true';
|
||||
|
||||
|
||||
if($result = $this->db_query($qry))
|
||||
{
|
||||
if($row = $this->db_fetch_object($result))
|
||||
{
|
||||
if($row->anzahl>0)
|
||||
return true;
|
||||
else
|
||||
else
|
||||
return false;
|
||||
}
|
||||
else
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Fehler beim Ermitteln der Daten';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Fehler beim Ermitteln der Daten';
|
||||
return false;
|
||||
@@ -479,7 +497,7 @@ class cronjob extends basis_db
|
||||
else
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Prueft, ob der Wert ein Fixdatum ist
|
||||
*
|
||||
@@ -492,10 +510,10 @@ class cronjob extends basis_db
|
||||
return false;
|
||||
if($this->parseSchrittweite($value))
|
||||
return false;
|
||||
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Liefert die naechste Ausfuehrungszeit des aktuell geladenen Cronjobs
|
||||
*
|
||||
@@ -512,7 +530,7 @@ class cronjob extends basis_db
|
||||
$stunde = date('H', $last_execute);
|
||||
$stunde_last = date('H', $last_execute);
|
||||
$minute = date('i', $last_execute);
|
||||
|
||||
|
||||
// wenn ein wochentag gewaehlt wird, dann wird jahr, monat und tag
|
||||
// nicht beruecksichtigt
|
||||
if($this->wochentag!='')
|
||||
@@ -522,14 +540,14 @@ class cronjob extends basis_db
|
||||
$monat = date('m',$stamp);
|
||||
$tag = date('d',$stamp);
|
||||
}
|
||||
else
|
||||
else
|
||||
{
|
||||
//jahr
|
||||
if(!$jahr_schritt = $this->parseSchrittweite($this->jahr))
|
||||
$jahr = ($this->jahr!=''?$this->jahr:$jahr);
|
||||
else
|
||||
else
|
||||
$jahr+= $jahr_schritt;
|
||||
|
||||
|
||||
//monat
|
||||
if(!$monat_schritt = $this->parseSchrittweite($this->monat))
|
||||
{
|
||||
@@ -540,13 +558,13 @@ class cronjob extends basis_db
|
||||
$jahr++;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
$monat = ($this->monat!=''?$this->monat:$monat);
|
||||
|
||||
|
||||
}
|
||||
else
|
||||
else
|
||||
$monat+= $monat_schritt;
|
||||
|
||||
|
||||
//tag
|
||||
if(!$tag_schritt = $this->parseSchrittweite($this->tag))
|
||||
{
|
||||
@@ -563,10 +581,10 @@ class cronjob extends basis_db
|
||||
}
|
||||
$tag = ($this->tag!=''?$this->tag:$tag);
|
||||
}
|
||||
else
|
||||
else
|
||||
$tag+= $tag_schritt;
|
||||
}
|
||||
|
||||
|
||||
//Stunde
|
||||
if(!$stunde_schritt = $this->parseSchrittweite($this->stunde))
|
||||
{
|
||||
@@ -587,9 +605,9 @@ class cronjob extends basis_db
|
||||
}
|
||||
$stunde = ($this->stunde!=''?$this->stunde:$stunde);
|
||||
}
|
||||
else
|
||||
else
|
||||
$stunde+= $stunde_schritt;
|
||||
|
||||
|
||||
//Minute
|
||||
if(!$minute_schritt = $this->parseSchrittweite($this->minute))
|
||||
{
|
||||
@@ -617,17 +635,17 @@ class cronjob extends basis_db
|
||||
}
|
||||
$minute = ($this->minute!=''?$this->minute:$minute);
|
||||
}
|
||||
else
|
||||
else
|
||||
$minute+= $minute_schritt;
|
||||
|
||||
$next = mktime($stunde, $minute, 0, $monat, $tag, $jahr);
|
||||
|
||||
|
||||
//Cronjobs die nicht mehr ausgefuehrt werden (Datum vor der letzten Ausfuehrung)
|
||||
if($next<$last_execute)
|
||||
$next=false;
|
||||
return $next;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Parst die Cronjob ID aus den Kommandozeilenparametern
|
||||
*
|
||||
@@ -642,10 +660,10 @@ class cronjob extends basis_db
|
||||
return substr($row,strlen('id='));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Prueft ob der Script-Aufruf ein Inistialisierungsaufruf ist
|
||||
*
|
||||
@@ -660,7 +678,7 @@ class cronjob extends basis_db
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -149,7 +149,12 @@ WHERE
|
||||
benutzer.aktiv = true
|
||||
AND prestudentstatus.status_kurzbz='Student'
|
||||
AND studiengang.studiengang_kz < 10000
|
||||
AND prestudentstatus.studiensemester_kurzbz = ".$db->db_add_param($aktSem);
|
||||
AND prestudentstatus.studiensemester_kurzbz = ".$db->db_add_param($aktSem)."
|
||||
AND NOT EXISTS(
|
||||
SELECT 1 FROM lehre.tbl_studienplan JOIN lehre.tbl_studienordnung USING(studienordnung_id)
|
||||
WHERE
|
||||
tbl_studienordnung.studiengang_kz = prestudent.studiengang_kz
|
||||
AND tbl_studienplan.orgform_kurzbz = prestudentstatus.orgform_kurzbz)";
|
||||
|
||||
if ($studiengang_kz != '')
|
||||
$qry .= " AND prestudent.studiengang_kz=".$db->db_add_param($studiengang_kz, FHC_INTEGER);
|
||||
@@ -239,7 +244,7 @@ FROM
|
||||
WHERE
|
||||
status.studiensemester_kurzbz = ".$db->db_add_param($aktSem)."
|
||||
AND lv.studiensemester_kurzbz = ".$db->db_add_param($aktSem)."
|
||||
AND status.status_kurzbz NOT IN ('Interessent','Bewerber')
|
||||
AND status.status_kurzbz NOT IN ('Interessent','Bewerber','Aufgenommener','Wartender','Abgewiesener')
|
||||
AND get_rolle_prestudent (prestudent_id, ".$db->db_add_param($aktSem).")='Student'";
|
||||
|
||||
if ($studiengang_kz != '')
|
||||
|
||||
@@ -76,21 +76,21 @@ $error_msg='';
|
||||
$qry = "UPDATE public.tbl_gruppe SET generiert=true WHERE UPPER(gruppe_kurzbz)=UPPER('".addslashes($gruppe)."')";
|
||||
$db->db_query($qry);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Löscht alle BenutzerInnen aus NICHT-generierten Verteilern im Studiengang 0 (Erhalter), deren Account vor mehr als 3 Wochen deaktiviert wurde
|
||||
*/
|
||||
|
||||
|
||||
$qry_delete = " DELETE FROM public.tbl_benutzergruppe
|
||||
WHERE tbl_benutzergruppe.studiensemester_kurzbz IS NULL
|
||||
AND gruppe_kurzbz IN (SELECT gruppe_kurzbz FROM public.tbl_gruppe WHERE generiert=false AND studiengang_kz=0)
|
||||
AND uid IN (SELECT uid FROM public.tbl_benutzer WHERE aktiv=false AND updateaktivam<now()-'3 weeks'::interval);";
|
||||
|
||||
|
||||
if(!($result = $db->db_query($qry_delete)))
|
||||
$error_msg .= $db->db_last_error().$qry_delete.'<br><br>';
|
||||
|
||||
|
||||
echo $db->db_affected_rows($result).' inaktive BenutzerInnen wurden aus statischen Verteilern gelöscht<BR><BR>';
|
||||
|
||||
|
||||
/**
|
||||
* Einfache Verteiler, deren Erstellung ohne Schleifen-Logik moeglich ist, werden ueber dieses Array erstellt
|
||||
* Benoetigt werden die 3 Attribute:
|
||||
@@ -190,7 +190,8 @@ $error_msg='';
|
||||
JOIN public.tbl_benutzer ON(uid=mitarbeiter_uid)
|
||||
WHERE fixangestellt
|
||||
AND aktiv
|
||||
AND mitarbeiter_uid NOT LIKE '\\\\_%'";
|
||||
AND mitarbeiter_uid NOT LIKE '\\\\_%'
|
||||
AND NOT EXISTS(SELECT 1 FROM public.tbl_benutzerfunktion WHERE funktion_kurzbz='hilfskraft' AND uid=mitarbeiter_uid AND (datum_bis>=now() or datum_bis is null))";
|
||||
//Alle aktiven MitarbeiterInnen mit Attribut fixangestellt=true und lektor=true
|
||||
$verteilerArray['tw_fix_lkt']['bezeichnung'] = 'Alle fixangestellten LektorInnen';
|
||||
$verteilerArray['tw_fix_lkt']['beschreibung'] = 'Alle fixangestellten LektorInnen an der FH Technikum Wien';
|
||||
|
||||
Reference in New Issue
Block a user