CODE STYLE Format

Change format
This commit is contained in:
norahmollo
2012-10-19 18:07:17 +00:00
parent 2906790fe3
commit b17a5eff62
4 changed files with 5129 additions and 5141 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -1,467 +1,455 @@
<?php <?php
/** /**
* CalendarDefinition.php * CalendarDefinition.php
* @package workflow.engine.classes.model *
*/ * @package workflow.engine.classes.model
*/
require_once 'classes/model/om/BaseCalendarDefinition.php';
require_once 'classes/model/CalendarBusinessHours.php'; require_once 'classes/model/om/BaseCalendarDefinition.php';
require_once 'classes/model/CalendarHolidays.php'; require_once 'classes/model/CalendarBusinessHours.php';
require_once 'classes/model/CalendarAssignments.php'; require_once 'classes/model/CalendarHolidays.php';
require_once 'classes/model/CalendarAssignments.php';
/**
* Skeleton subclass for representing a row from the 'CALENDAR_DEFINITION' table. /**
* * Skeleton subclass for representing a row from the 'CALENDAR_DEFINITION' table.
* *
* *
* You should add additional methods to this class to meet the *
* application requirements. This class will only be generated as * You should add additional methods to this class to meet the
* long as it does not already exist in the output directory. * application requirements. This class will only be generated as
* * long as it does not already exist in the output directory.
* @package workflow.engine.classes.model *
*/ * @package workflow.engine.classes.model
class CalendarDefinition extends BaseCalendarDefinition { */
public $calendarLog = ''; class CalendarDefinition extends BaseCalendarDefinition
function getCalendarList($onlyActive = false, $arrayMode = false) { {
$Criteria = new Criteria ( 'workflow' ); public $calendarLog = '';
$Criteria->clearSelectColumns ();
public function getCalendarList ($onlyActive = false, $arrayMode = false)
$Criteria->addSelectColumn ( CalendarDefinitionPeer::CALENDAR_UID ); {
$Criteria->addSelectColumn ( CalendarDefinitionPeer::CALENDAR_NAME ); $Criteria = new Criteria( 'workflow' );
$Criteria->addSelectColumn ( CalendarDefinitionPeer::CALENDAR_CREATE_DATE ); $Criteria->clearSelectColumns();
$Criteria->addSelectColumn ( CalendarDefinitionPeer::CALENDAR_UPDATE_DATE );
$Criteria->addSelectColumn ( CalendarDefinitionPeer::CALENDAR_DESCRIPTION ); $Criteria->addSelectColumn( CalendarDefinitionPeer::CALENDAR_UID );
$Criteria->addSelectColumn ( CalendarDefinitionPeer::CALENDAR_STATUS ); $Criteria->addSelectColumn( CalendarDefinitionPeer::CALENDAR_NAME );
// $Criteria->addAsColumn('DELETABLE', "IF (CALENDAR_UID <> '00000000000000000000000000000001', '".G::LoadTranslation('ID_DELETE')."','') "); $Criteria->addSelectColumn( CalendarDefinitionPeer::CALENDAR_CREATE_DATE );
$Criteria->addAsColumn('DELETABLE', "CASE WHEN CALENDAR_UID <> '00000000000000000000000000000001' THEN '".G::LoadTranslation('ID_DELETE')."' ELSE '' END "); $Criteria->addSelectColumn( CalendarDefinitionPeer::CALENDAR_UPDATE_DATE );
// Note: This list doesn't show deleted items (STATUS = DELETED) $Criteria->addSelectColumn( CalendarDefinitionPeer::CALENDAR_DESCRIPTION );
if ($onlyActive) { // Show only active. Used on assignment lists $Criteria->addSelectColumn( CalendarDefinitionPeer::CALENDAR_STATUS );
$Criteria->add ( calendarDefinitionPeer::CALENDAR_STATUS, "ACTIVE", CRITERIA::EQUAL ); // $Criteria->addAsColumn('DELETABLE', "IF (CALENDAR_UID <> '00000000000000000000000000000001', '".G::LoadTranslation('ID_DELETE')."','') ");
} else { // Show Active and Inactive calendars. USed in main list $Criteria->addAsColumn( 'DELETABLE', "CASE WHEN CALENDAR_UID <> '00000000000000000000000000000001' THEN '" . G::LoadTranslation( 'ID_DELETE' ) . "' ELSE '' END " );
$Criteria->add ( calendarDefinitionPeer::CALENDAR_STATUS, array ("ACTIVE", "INACTIVE" ), CRITERIA::IN ); // Note: This list doesn't show deleted items (STATUS = DELETED)
} if ($onlyActive) {
// Show only active. Used on assignment lists
$Criteria->add ( calendarDefinitionPeer::CALENDAR_UID, "xx", CRITERIA::NOT_EQUAL ); $Criteria->add( calendarDefinitionPeer::CALENDAR_STATUS, "ACTIVE", CRITERIA::EQUAL );
} else {
if (! $arrayMode) { // Show Active and Inactive calendars. USed in main list
return $Criteria; $Criteria->add( calendarDefinitionPeer::CALENDAR_STATUS, array ("ACTIVE","INACTIVE"), CRITERIA::IN );
} else { }
$oDataset = calendarDefinitionPeer::doSelectRS ( $Criteria );
$oDataset->setFetchmode ( ResultSet::FETCHMODE_ASSOC ); $Criteria->add( calendarDefinitionPeer::CALENDAR_UID, "xx", CRITERIA::NOT_EQUAL );
$oDataset->next ();
$calendarA = array (0 => 'dummy' ); if (! $arrayMode) {
$calendarCount = 0; return $Criteria;
while ( is_array ( $aRow = $oDataset->getRow () ) ) { } else {
$calendarCount ++; $oDataset = calendarDefinitionPeer::doSelectRS( $Criteria );
$calendarA [$calendarCount] = $aRow; $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC );
$oDataset->next (); $oDataset->next();
} $calendarA = array (0 => 'dummy');
$return ['criteria'] = $Criteria; $calendarCount = 0;
$return ['array'] = $calendarA; while (is_array( $aRow = $oDataset->getRow() )) {
return $return; $calendarCount ++;
} $calendarA[$calendarCount] = $aRow;
} $oDataset->next();
//Added by qennix }
//Gets criteria for listing $return['criteria'] = $Criteria;
function getCalendarCriterias($filter, $start, $limit){ $return['array'] = $calendarA;
$Criteria = new Criteria ( 'workflow' ); return $return;
$Criteria->clearSelectColumns (); }
$Criteria->addSelectColumn ( CalendarDefinitionPeer::CALENDAR_UID ); }
if ($filter !=''){ //Added by qennix
$Criteria->add( //Gets criteria for listing
$Criteria->getNewCriterion(CalendarDefinitionPeer::CALENDAR_NAME,'%'.$filter.'%',Criteria::LIKE)->addOr( public function getCalendarCriterias ($filter, $start, $limit)
$Criteria->getNewCriterion(CalendarDefinitionPeer::CALENDAR_DESCRIPTION,'%'.$filter.'%',Criteria::LIKE))); {
} $Criteria = new Criteria( 'workflow' );
$Criteria->add(CalendarDefinitionPeer::CALENDAR_STATUS,'DELETED',Criteria::NOT_EQUAL); $Criteria->clearSelectColumns();
$Criteria->addSelectColumn( CalendarDefinitionPeer::CALENDAR_UID );
$oCriteria = new Criteria ( 'workflow' ); if ($filter != '') {
$oCriteria->addSelectColumn ( CalendarDefinitionPeer::CALENDAR_UID ); $Criteria->add( $Criteria->getNewCriterion( CalendarDefinitionPeer::CALENDAR_NAME, '%' . $filter . '%', Criteria::LIKE )->addOr( $Criteria->getNewCriterion( CalendarDefinitionPeer::CALENDAR_DESCRIPTION, '%' . $filter . '%', Criteria::LIKE ) ) );
$oCriteria->addSelectColumn ( CalendarDefinitionPeer::CALENDAR_NAME ); }
$oCriteria->addSelectColumn ( CalendarDefinitionPeer::CALENDAR_CREATE_DATE ); $Criteria->add( CalendarDefinitionPeer::CALENDAR_STATUS, 'DELETED', Criteria::NOT_EQUAL );
$oCriteria->addSelectColumn ( CalendarDefinitionPeer::CALENDAR_UPDATE_DATE );
$oCriteria->addSelectColumn ( CalendarDefinitionPeer::CALENDAR_DESCRIPTION ); $oCriteria = new Criteria( 'workflow' );
$oCriteria->addSelectColumn ( CalendarDefinitionPeer::CALENDAR_STATUS ); $oCriteria->addSelectColumn( CalendarDefinitionPeer::CALENDAR_UID );
if ($filter !=''){ $oCriteria->addSelectColumn( CalendarDefinitionPeer::CALENDAR_NAME );
$oCriteria->add( $oCriteria->addSelectColumn( CalendarDefinitionPeer::CALENDAR_CREATE_DATE );
$oCriteria->getNewCriterion(CalendarDefinitionPeer::CALENDAR_NAME,'%'.$filter.'%',Criteria::LIKE)->addOr( $oCriteria->addSelectColumn( CalendarDefinitionPeer::CALENDAR_UPDATE_DATE );
$oCriteria->getNewCriterion(CalendarDefinitionPeer::CALENDAR_DESCRIPTION,'%'.$filter.'%',Criteria::LIKE))); $oCriteria->addSelectColumn( CalendarDefinitionPeer::CALENDAR_DESCRIPTION );
} $oCriteria->addSelectColumn( CalendarDefinitionPeer::CALENDAR_STATUS );
$oCriteria->add(CalendarDefinitionPeer::CALENDAR_STATUS,'DELETED',Criteria::NOT_EQUAL); if ($filter != '') {
$oCriteria->setLimit($limit); $oCriteria->add( $oCriteria->getNewCriterion( CalendarDefinitionPeer::CALENDAR_NAME, '%' . $filter . '%', Criteria::LIKE )->addOr( $oCriteria->getNewCriterion( CalendarDefinitionPeer::CALENDAR_DESCRIPTION, '%' . $filter . '%', Criteria::LIKE ) ) );
$oCriteria->setOffset($start); }
$oCriteria->add( CalendarDefinitionPeer::CALENDAR_STATUS, 'DELETED', Criteria::NOT_EQUAL );
$criterias = array(); $oCriteria->setLimit( $limit );
$criterias['COUNTER'] = $Criteria; $oCriteria->setOffset( $start );
$criterias['LIST'] = $oCriteria;
return $criterias; $criterias = array ();
} $criterias['COUNTER'] = $Criteria;
function getCalendarInfo($CalendarUid) { $criterias['LIST'] = $oCriteria;
//if exists the row in the database propel will update it, otherwise will insert. return $criterias;
$tr = CalendarDefinitionPeer::retrieveByPK ( $CalendarUid ); }
$defaultCalendar ['CALENDAR_UID'] = "00000000000000000000000000000001"; public function getCalendarInfo ($CalendarUid)
$defaultCalendar ['CALENDAR_NAME'] = "Default"; {
$defaultCalendar ['CALENDAR_CREATE_DATE'] = date ( "Y-m-d" ); //if exists the row in the database propel will update it, otherwise will insert.
$defaultCalendar ['CALENDAR_UPDATE_DATE'] = date ( "Y-m-d" ); $tr = CalendarDefinitionPeer::retrieveByPK( $CalendarUid );
$defaultCalendar ['CALENDAR_DESCRIPTION'] = "Default";
$defaultCalendar ['CALENDAR_STATUS'] = "ACTIVE"; $defaultCalendar['CALENDAR_UID'] = "00000000000000000000000000000001";
$defaultCalendar ['CALENDAR_WORK_DAYS'] = "1|2|3|4|5"; $defaultCalendar['CALENDAR_NAME'] = "Default";
$defaultCalendar ['CALENDAR_WORK_DAYS'] = explode ( "|", "1|2|3|4|5" ); $defaultCalendar['CALENDAR_CREATE_DATE'] = date( "Y-m-d" );
$defaultCalendar ['BUSINESS_DAY'] [1] ['CALENDAR_BUSINESS_DAY'] = 7; $defaultCalendar['CALENDAR_UPDATE_DATE'] = date( "Y-m-d" );
$defaultCalendar ['BUSINESS_DAY'] [1] ['CALENDAR_BUSINESS_START'] = "09:00"; $defaultCalendar['CALENDAR_DESCRIPTION'] = "Default";
$defaultCalendar ['BUSINESS_DAY'] [1] ['CALENDAR_BUSINESS_END'] = "17:00"; $defaultCalendar['CALENDAR_STATUS'] = "ACTIVE";
$defaultCalendar ['HOLIDAY'] = array (); $defaultCalendar['CALENDAR_WORK_DAYS'] = "1|2|3|4|5";
$defaultCalendar['CALENDAR_WORK_DAYS'] = explode( "|", "1|2|3|4|5" );
if ((is_object ( $tr ) && get_class ( $tr ) == 'CalendarDefinition')) { $defaultCalendar['BUSINESS_DAY'][1]['CALENDAR_BUSINESS_DAY'] = 7;
$fields ['CALENDAR_UID'] = $tr->getCalendarUid (); $defaultCalendar['BUSINESS_DAY'][1]['CALENDAR_BUSINESS_START'] = "09:00";
$fields ['CALENDAR_NAME'] = $tr->getCalendarName (); $defaultCalendar['BUSINESS_DAY'][1]['CALENDAR_BUSINESS_END'] = "17:00";
$fields ['CALENDAR_CREATE_DATE'] = $tr->getCalendarCreateDate (); $defaultCalendar['HOLIDAY'] = array ();
$fields ['CALENDAR_UPDATE_DATE'] = $tr->getCalendarUpdateDate ();
$fields ['CALENDAR_DESCRIPTION'] = $tr->getCalendarDescription (); if ((is_object( $tr ) && get_class( $tr ) == 'CalendarDefinition')) {
$fields ['CALENDAR_STATUS'] = $tr->getCalendarStatus (); $fields['CALENDAR_UID'] = $tr->getCalendarUid();
$fields ['CALENDAR_WORK_DAYS'] = $tr->getCalendarWorkDays (); $fields['CALENDAR_NAME'] = $tr->getCalendarName();
$fields ['CALENDAR_WORK_DAYS_A'] = explode ( "|", $tr->getCalendarWorkDays () ); $fields['CALENDAR_CREATE_DATE'] = $tr->getCalendarCreateDate();
} else { $fields['CALENDAR_UPDATE_DATE'] = $tr->getCalendarUpdateDate();
$fields=$defaultCalendar; $fields['CALENDAR_DESCRIPTION'] = $tr->getCalendarDescription();
$this->saveCalendarInfo ( $fields ); $fields['CALENDAR_STATUS'] = $tr->getCalendarStatus();
$fields ['CALENDAR_WORK_DAYS'] = "1|2|3|4|5"; $fields['CALENDAR_WORK_DAYS'] = $tr->getCalendarWorkDays();
$fields ['CALENDAR_WORK_DAYS_A'] = explode ( "|", "1|2|3|4|5" ); $fields['CALENDAR_WORK_DAYS_A'] = explode( "|", $tr->getCalendarWorkDays() );
$tr = CalendarDefinitionPeer::retrieveByPK ( $CalendarUid ); } else {
} $fields = $defaultCalendar;
$CalendarBusinessHoursObj = new CalendarBusinessHours ( ); $this->saveCalendarInfo( $fields );
$CalendarBusinessHours = $CalendarBusinessHoursObj->getCalendarBusinessHours ( $CalendarUid ); $fields['CALENDAR_WORK_DAYS'] = "1|2|3|4|5";
$fields ['BUSINESS_DAY'] = $CalendarBusinessHours; $fields['CALENDAR_WORK_DAYS_A'] = explode( "|", "1|2|3|4|5" );
$tr = CalendarDefinitionPeer::retrieveByPK( $CalendarUid );
$CalendarHolidaysObj = new CalendarHolidays ( ); }
$CalendarHolidays = $CalendarHolidaysObj->getCalendarHolidays ( $CalendarUid ); $CalendarBusinessHoursObj = new CalendarBusinessHours();
$fields ['HOLIDAY'] = $CalendarHolidays; $CalendarBusinessHours = $CalendarBusinessHoursObj->getCalendarBusinessHours( $CalendarUid );
$fields=$this->validateCalendarInfo($fields, $defaultCalendar); //******************** $fields['BUSINESS_DAY'] = $CalendarBusinessHours;
$CalendarHolidaysObj = new CalendarHolidays();
return $fields; $CalendarHolidays = $CalendarHolidaysObj->getCalendarHolidays( $CalendarUid );
$fields['HOLIDAY'] = $CalendarHolidays;
} $fields = $this->validateCalendarInfo( $fields, $defaultCalendar );
//for edit //********************
function getCalendarInfoE($CalendarUid) { return $fields;
//if exists the row in the database propel will update it, otherwise will insert. }
$tr = CalendarDefinitionPeer::retrieveByPK ( $CalendarUid ); //for edit
public function getCalendarInfoE ($CalendarUid)
$defaultCalendar ['CALENDAR_UID'] = "00000000000000000000000000000001"; {
$defaultCalendar ['CALENDAR_NAME'] = "Default"; //if exists the row in the database propel will update it, otherwise will insert.
$defaultCalendar ['CALENDAR_CREATE_DATE'] = date ( "Y-m-d" ); $tr = CalendarDefinitionPeer::retrieveByPK( $CalendarUid );
$defaultCalendar ['CALENDAR_UPDATE_DATE'] = date ( "Y-m-d" ); $defaultCalendar['CALENDAR_UID'] = "00000000000000000000000000000001";
$defaultCalendar ['CALENDAR_DESCRIPTION'] = "Default"; $defaultCalendar['CALENDAR_NAME'] = "Default";
$defaultCalendar ['CALENDAR_STATUS'] = "ACTIVE"; $defaultCalendar['CALENDAR_CREATE_DATE'] = date( "Y-m-d" );
$defaultCalendar ['CALENDAR_WORK_DAYS'] = "1|2|3|4|5"; $defaultCalendar['CALENDAR_UPDATE_DATE'] = date( "Y-m-d" );
$defaultCalendar ['CALENDAR_WORK_DAYS'] = explode ( "|", "1|2|3|4|5" ); $defaultCalendar['CALENDAR_DESCRIPTION'] = "Default";
$defaultCalendar ['BUSINESS_DAY'] [1] ['CALENDAR_BUSINESS_DAY'] = 7; $defaultCalendar['CALENDAR_STATUS'] = "ACTIVE";
$defaultCalendar ['BUSINESS_DAY'] [1] ['CALENDAR_BUSINESS_START'] = "09:00"; $defaultCalendar['CALENDAR_WORK_DAYS'] = "1|2|3|4|5";
$defaultCalendar ['BUSINESS_DAY'] [1] ['CALENDAR_BUSINESS_END'] = "17:00"; $defaultCalendar['CALENDAR_WORK_DAYS'] = explode( "|", "1|2|3|4|5" );
$defaultCalendar ['HOLIDAY'] = array (); $defaultCalendar['BUSINESS_DAY'][1]['CALENDAR_BUSINESS_DAY'] = 7;
$defaultCalendar['BUSINESS_DAY'][1]['CALENDAR_BUSINESS_START'] = "09:00";
if ((is_object ( $tr ) && get_class ( $tr ) == 'CalendarDefinition')) { $defaultCalendar['BUSINESS_DAY'][1]['CALENDAR_BUSINESS_END'] = "17:00";
$fields ['CALENDAR_UID'] = $tr->getCalendarUid (); $defaultCalendar['HOLIDAY'] = array ();
$fields ['CALENDAR_NAME'] = $tr->getCalendarName ();
$fields ['CALENDAR_CREATE_DATE'] = $tr->getCalendarCreateDate (); if ((is_object( $tr ) && get_class( $tr ) == 'CalendarDefinition')) {
$fields ['CALENDAR_UPDATE_DATE'] = $tr->getCalendarUpdateDate (); $fields['CALENDAR_UID'] = $tr->getCalendarUid();
$fields ['CALENDAR_DESCRIPTION'] = $tr->getCalendarDescription (); $fields['CALENDAR_NAME'] = $tr->getCalendarName();
$fields ['CALENDAR_STATUS'] = $tr->getCalendarStatus (); $fields['CALENDAR_CREATE_DATE'] = $tr->getCalendarCreateDate();
$fields ['CALENDAR_WORK_DAYS'] = $tr->getCalendarWorkDays (); $fields['CALENDAR_UPDATE_DATE'] = $tr->getCalendarUpdateDate();
$fields ['CALENDAR_WORK_DAYS_A'] = explode ( "|", $tr->getCalendarWorkDays () ); $fields['CALENDAR_DESCRIPTION'] = $tr->getCalendarDescription();
} else { $fields['CALENDAR_STATUS'] = $tr->getCalendarStatus();
$fields=$defaultCalendar; $fields['CALENDAR_WORK_DAYS'] = $tr->getCalendarWorkDays();
$this->saveCalendarInfo ( $fields ); $fields['CALENDAR_WORK_DAYS_A'] = explode( "|", $tr->getCalendarWorkDays() );
$fields ['CALENDAR_WORK_DAYS'] = "1|2|3|4|5"; } else {
$fields ['CALENDAR_WORK_DAYS_A'] = explode ( "|", "1|2|3|4|5" ); $fields = $defaultCalendar;
$tr = CalendarDefinitionPeer::retrieveByPK ( $CalendarUid ); $this->saveCalendarInfo( $fields );
} $fields['CALENDAR_WORK_DAYS'] = "1|2|3|4|5";
$CalendarBusinessHoursObj = new CalendarBusinessHours ( ); $fields['CALENDAR_WORK_DAYS_A'] = explode( "|", "1|2|3|4|5" );
$CalendarBusinessHours = $CalendarBusinessHoursObj->getCalendarBusinessHours ( $CalendarUid ); $tr = CalendarDefinitionPeer::retrieveByPK( $CalendarUid );
$fields ['BUSINESS_DAY'] = $CalendarBusinessHours; }
$CalendarBusinessHoursObj = new CalendarBusinessHours();
$CalendarHolidaysObj = new CalendarHolidays ( ); $CalendarBusinessHours = $CalendarBusinessHoursObj->getCalendarBusinessHours( $CalendarUid );
$CalendarHolidays = $CalendarHolidaysObj->getCalendarHolidays ( $CalendarUid ); $fields['BUSINESS_DAY'] = $CalendarBusinessHours;
$fields ['HOLIDAY'] = $CalendarHolidays; $CalendarHolidaysObj = new CalendarHolidays();
// $fields=$this->validateCalendarInfo($fields, $defaultCalendar); //******************** $CalendarHolidays = $CalendarHolidaysObj->getCalendarHolidays( $CalendarUid );
$fields['HOLIDAY'] = $CalendarHolidays;
return $fields; // $fields=$this->validateCalendarInfo($fields, $defaultCalendar); //********************
return $fields;
} }
//end for edit //end for edit
function validateCalendarInfo($fields,$defaultCalendar){ public function validateCalendarInfo ($fields, $defaultCalendar)
try { {
//Validate if Working days are Correct try {
//Minimun 3 ? //Validate if Working days are Correct
$workingDays=explode ( "|", $fields['CALENDAR_WORK_DAYS'] ); //Minimun 3 ?
if(count($workingDays)<3){ $workingDays = explode( "|", $fields['CALENDAR_WORK_DAYS'] );
throw (new Exception ( "You must define at least 3 Working Days!" )); if (count( $workingDays ) < 3) {
} throw (new Exception( "You must define at least 3 Working Days!" ));
//Validate that all Working Days have Bussines Hours }
if(count($fields ['BUSINESS_DAY'])<1){ //Validate that all Working Days have Bussines Hours
throw (new Exception ( "You must define at least one Business Day for all days" )); if (count( $fields['BUSINESS_DAY'] ) < 1) {
} throw (new Exception( "You must define at least one Business Day for all days" ));
$workingDaysOK=array(); }
foreach($workingDays as $key => $day){ $workingDaysOK = array ();
$workingDaysOK[$day]=false; foreach ($workingDays as $key => $day) {
} $workingDaysOK[$day] = false;
$sw_all=false; }
foreach($fields ['BUSINESS_DAY'] as $keyB => $businessHours){ $sw_all = false;
if(($businessHours['CALENDAR_BUSINESS_DAY']==7)){ foreach ($fields['BUSINESS_DAY'] as $keyB => $businessHours) {
$sw_all=true; if (($businessHours['CALENDAR_BUSINESS_DAY'] == 7)) {
}elseif((in_array($businessHours['CALENDAR_BUSINESS_DAY'],$workingDays))){ $sw_all = true;
$workingDaysOK[$businessHours['CALENDAR_BUSINESS_DAY']]=true; } elseif ((in_array( $businessHours['CALENDAR_BUSINESS_DAY'], $workingDays ))) {
} $workingDaysOK[$businessHours['CALENDAR_BUSINESS_DAY']] = true;
} }
$sw_days=true; }
$sw_days = true;
foreach($workingDaysOK as $day =>$sw_day){
$sw_days=$sw_days && $sw_day; foreach ($workingDaysOK as $day => $sw_day) {
} $sw_days = $sw_days && $sw_day;
if(!($sw_all || $sw_days)){ }
throw (new Exception ( "Not all working days have their correspondent business day" )); if (! ($sw_all || $sw_days)) {
} throw (new Exception( "Not all working days have their correspondent business day" ));
//Validate Holidays }
//Validate Holidays
return $fields; return $fields;
} catch (Exception $e) { } catch (Exception $e) {
//print $e->getMessage(); //print $e->getMessage();
$this->addCalendarLog("!!!!!!! BAD CALENDAR DEFINITION. ".$e->getMessage()); $this->addCalendarLog( "!!!!!!! BAD CALENDAR DEFINITION. " . $e->getMessage() );
$defaultCalendar ['CALENDAR_WORK_DAYS'] = "1|2|3|4|5"; $defaultCalendar['CALENDAR_WORK_DAYS'] = "1|2|3|4|5";
$defaultCalendar ['CALENDAR_WORK_DAYS_A'] = explode ( "|", "1|2|3|4|5" ); $defaultCalendar['CALENDAR_WORK_DAYS_A'] = explode( "|", "1|2|3|4|5" );
return $defaultCalendar; return $defaultCalendar;
} }
}
}
function saveCalendarInfo($aData) { public function saveCalendarInfo ($aData)
$CalendarUid = $aData ['CALENDAR_UID']; {
$CalendarName = $aData ['CALENDAR_NAME']; $CalendarUid = $aData['CALENDAR_UID'];
$CalendarDescription = $aData ['CALENDAR_DESCRIPTION']; $CalendarName = $aData['CALENDAR_NAME'];
$CalendarStatus = isset ( $aData ['CALENDAR_STATUS'] ) ? $aData ['CALENDAR_STATUS'] : "INACTIVE"; $CalendarDescription = $aData['CALENDAR_DESCRIPTION'];
$defaultCalendars [] = '00000000000000000000000000000001'; $CalendarStatus = isset( $aData['CALENDAR_STATUS'] ) ? $aData['CALENDAR_STATUS'] : "INACTIVE";
if (in_array ( $aData ['CALENDAR_UID'], $defaultCalendars )) { $defaultCalendars[] = '00000000000000000000000000000001';
$CalendarStatus = 'ACTIVE'; if (in_array( $aData['CALENDAR_UID'], $defaultCalendars )) {
$CalendarName = 'Default'; $CalendarStatus = 'ACTIVE';
} $CalendarName = 'Default';
$CalendarWorkDays = isset ( $aData ['CALENDAR_WORK_DAYS'] ) ? implode ( "|", $aData ['CALENDAR_WORK_DAYS'] ) : ""; }
$CalendarWorkDays = isset( $aData['CALENDAR_WORK_DAYS'] ) ? implode( "|", $aData['CALENDAR_WORK_DAYS'] ) : "";
//if exists the row in the database propel will update it, otherwise will insert.
$tr = CalendarDefinitionPeer::retrieveByPK ( $CalendarUid ); //if exists the row in the database propel will update it, otherwise will insert.
if (! (is_object ( $tr ) && get_class ( $tr ) == 'CalendarDefinition')) { $tr = CalendarDefinitionPeer::retrieveByPK( $CalendarUid );
$tr = new CalendarDefinition ( ); if (! (is_object( $tr ) && get_class( $tr ) == 'CalendarDefinition')) {
$tr->setCalendarCreateDate ( 'now' ); $tr = new CalendarDefinition();
} $tr->setCalendarCreateDate( 'now' );
$tr->setCalendarUid ( $CalendarUid ); }
$tr->setCalendarName ( $CalendarName ); $tr->setCalendarUid( $CalendarUid );
$tr->setCalendarName( $CalendarName );
$tr->setCalendarUpdateDate ( 'now' ); $tr->setCalendarUpdateDate( 'now' );
$tr->setCalendarDescription ( $CalendarDescription ); $tr->setCalendarDescription( $CalendarDescription );
$tr->setCalendarStatus ( $CalendarStatus ); $tr->setCalendarStatus( $CalendarStatus );
$tr->setCalendarWorkDays ( $CalendarWorkDays ); $tr->setCalendarWorkDays( $CalendarWorkDays );
if ($tr->validate ()) { if ($tr->validate()) {
// we save it, since we get no validation errors, or do whatever else you like. // we save it, since we get no validation errors, or do whatever else you like.
$res = $tr->save (); $res = $tr->save();
//Calendar Business Hours Save code. //Calendar Business Hours Save code.
//First Delete all current records //First Delete all current records
$CalendarBusinessHoursObj = new CalendarBusinessHours ( ); $CalendarBusinessHoursObj = new CalendarBusinessHours();
$CalendarBusinessHoursObj->deleteAllCalendarBusinessHours ( $CalendarUid ); $CalendarBusinessHoursObj->deleteAllCalendarBusinessHours( $CalendarUid );
//Save all the sent records //Save all the sent records
foreach ( $aData ['BUSINESS_DAY'] as $key => $objData ) { foreach ($aData['BUSINESS_DAY'] as $key => $objData) {
$objData ['CALENDAR_UID'] = $CalendarUid; $objData['CALENDAR_UID'] = $CalendarUid;
$CalendarBusinessHoursObj->saveCalendarBusinessHours ( $objData ); $CalendarBusinessHoursObj->saveCalendarBusinessHours( $objData );
} }
//Holiday Save code.
//Holiday Save code. //First Delete all current records
//First Delete all current records $CalendarHolidayObj = new CalendarHolidays();
$CalendarHolidayObj = new CalendarHolidays ( ); $CalendarHolidayObj->deleteAllCalendarHolidays( $CalendarUid );
$CalendarHolidayObj->deleteAllCalendarHolidays ( $CalendarUid ); //Save all the sent records
//Save all the sent records foreach ($aData['HOLIDAY'] as $key => $objData) {
foreach ( $aData ['HOLIDAY'] as $key => $objData ) { if (($objData['CALENDAR_HOLIDAY_NAME'] != "") && ($objData['CALENDAR_HOLIDAY_START'] != "") && ($objData['CALENDAR_HOLIDAY_END'] != "")) {
if (($objData ['CALENDAR_HOLIDAY_NAME'] != "") && ($objData ['CALENDAR_HOLIDAY_START'] != "") && ($objData ['CALENDAR_HOLIDAY_END'] != "")) { $objData['CALENDAR_UID'] = $CalendarUid;
$objData ['CALENDAR_UID'] = $CalendarUid; $CalendarHolidayObj->saveCalendarHolidays( $objData );
$CalendarHolidayObj->saveCalendarHolidays ( $objData ); }
} }
} } else {
} else { // Something went wrong. We can now get the validationFailures and handle them.
// Something went wrong. We can now get the validationFailures and handle them. $msg = '';
$msg = ''; $validationFailuresArray = $tr->getValidationFailures();
$validationFailuresArray = $tr->getValidationFailures (); foreach ($validationFailuresArray as $objValidationFailure) {
foreach ( $validationFailuresArray as $objValidationFailure ) { $msg .= $objValidationFailure->getMessage() . "<br/>";
$msg .= $objValidationFailure->getMessage () . "<br/>"; }
} //return array ( 'codError' => -100, 'rowsAffected' => 0, 'message' => $msg );
//return array ( 'codError' => -100, 'rowsAffected' => 0, 'message' => $msg ); }
} //return array ( 'codError' => 0, 'rowsAffected' => $res, 'message' => '');
//return array ( 'codError' => 0, 'rowsAffected' => $res, 'message' => ''); //to do: uniform coderror structures for all classes
//if ( $res['codError'] < 0 ) {
// G::SendMessageText ( $res['message'] , 'error' );
//to do: uniform coderror structures for all classes //}
}
//if ( $res['codError'] < 0 ) { public function deleteCalendar ($CalendarUid)
// G::SendMessageText ( $res['message'] , 'error' ); {
//} //if exists the row in the database propel will update it, otherwise will insert.
$tr = CalendarDefinitionPeer::retrieveByPK( $CalendarUid );
} if (! (is_object( $tr ) && get_class( $tr ) == 'CalendarDefinition')) {
function deleteCalendar($CalendarUid) { //
//if exists the row in the database propel will update it, otherwise will insert. return false;
$tr = CalendarDefinitionPeer::retrieveByPK ( $CalendarUid ); }
if (! (is_object ( $tr ) && get_class ( $tr ) == 'CalendarDefinition')) { $defaultCalendars[] = '00000000000000000000000000000001';
// if (in_array( $tr->getCalendarUid(), $defaultCalendars )) {
return false; return false;
} }
$defaultCalendars [] = '00000000000000000000000000000001'; $tr->setCalendarStatus( 'DELETED' );
if (in_array ( $tr->getCalendarUid(), $defaultCalendars )) { $tr->setCalendarUpdateDate( 'now' );
return false; if ($tr->validate()) {
} // we save it, since we get no validation errors, or do whatever else you like.
$res = $tr->save();
$tr->setCalendarStatus ( 'DELETED' ); } else {
$tr->setCalendarUpdateDate ( 'now' ); // Something went wrong. We can now get the validationFailures and handle them.
if ($tr->validate ()) { $msg = '';
// we save it, since we get no validation errors, or do whatever else you like. $validationFailuresArray = $tr->getValidationFailures();
$res = $tr->save (); foreach ($validationFailuresArray as $objValidationFailure) {
$msg .= $objValidationFailure->getMessage() . "<br/>";
} else { }
// Something went wrong. We can now get the validationFailures and handle them. G::SendMessage( "ERROR", $msg );
$msg = ''; //return array ( 'codError' => -100, 'rowsAffected' => 0, 'message' => $msg );
$validationFailuresArray = $tr->getValidationFailures (); }
foreach ( $validationFailuresArray as $objValidationFailure ) { //return array ( 'codError' => 0, 'rowsAffected' => $res, 'message' => '');
$msg .= $objValidationFailure->getMessage () . "<br/>"; //to do: uniform coderror structures for all classes
} //if ( $res['codError'] < 0 ) {
G::SendMessage ( "ERROR", $msg ); // G::SendMessageText ( $res['message'] , 'error' );
//return array ( 'codError' => -100, 'rowsAffected' => 0, 'message' => $msg ); //}
} }
//return array ( 'codError' => 0, 'rowsAffected' => $res, 'message' => '');
public function getCalendarFor ($userUid, $proUid, $tasUid, $sw_validate = true)
{
//to do: uniform coderror structures for all classes $Criteria = new Criteria( 'workflow' );
//Default Calendar
$calendarUid = "00000000000000000000000000000001";
//if ( $res['codError'] < 0 ) { $calendarOwner = "DEFAULT";
// G::SendMessageText ( $res['message'] , 'error' ); //Load User,Task and Process calendars (if exist)
//} $Criteria->addSelectColumn( CalendarAssignmentsPeer::CALENDAR_UID );
$Criteria->addSelectColumn( CalendarAssignmentsPeer::OBJECT_UID );
$Criteria->addSelectColumn( CalendarAssignmentsPeer::OBJECT_TYPE );
} $Criteria->add( CalendarAssignmentsPeer::OBJECT_UID, array ($userUid,$proUid,$tasUid), CRITERIA::IN );
function getCalendarFor($userUid, $proUid, $tasUid, $sw_validate=true) { $oDataset = CalendarAssignmentsPeer::doSelectRS( $Criteria );
$Criteria = new Criteria ( 'workflow' ); $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC );
$oDataset->next();
//Default Calendar $calendarArray = array ();
$calendarUid = "00000000000000000000000000000001"; while (is_array( $aRow = $oDataset->getRow() )) {
$calendarOwner = "DEFAULT"; if ($aRow['OBJECT_UID'] == $userUid) {
$calendarArray['USER'] = $aRow['CALENDAR_UID'];
//Load User,Task and Process calendars (if exist) }
$Criteria->addSelectColumn ( CalendarAssignmentsPeer::CALENDAR_UID ); if ($aRow['OBJECT_UID'] == $proUid) {
$Criteria->addSelectColumn ( CalendarAssignmentsPeer::OBJECT_UID ); $calendarArray['PROCESS'] = $aRow['CALENDAR_UID'];
$Criteria->addSelectColumn ( CalendarAssignmentsPeer::OBJECT_TYPE ); }
$Criteria->add ( CalendarAssignmentsPeer::OBJECT_UID, array($userUid, $proUid, $tasUid), CRITERIA::IN ); if ($aRow['OBJECT_UID'] == $tasUid) {
$oDataset = CalendarAssignmentsPeer::doSelectRS ( $Criteria ); $calendarArray['TASK'] = $aRow['CALENDAR_UID'];
$oDataset->setFetchmode ( ResultSet::FETCHMODE_ASSOC ); }
$oDataset->next (); $oDataset->next();
$calendarArray=array(); }
while(is_array($aRow = $oDataset->getRow ())){
if($aRow['OBJECT_UID']==$userUid){ if (isset( $calendarArray['USER'] )) {
$calendarArray['USER']=$aRow ['CALENDAR_UID']; $calendarUid = $calendarArray['USER'];
} $calendarOwner = "USER";
if($aRow['OBJECT_UID']==$proUid){ } elseif (isset( $calendarArray['PROCESS'] )) {
$calendarArray['PROCESS']=$aRow ['CALENDAR_UID']; $calendarUid = $calendarArray['PROCESS'];
} $calendarOwner = "PROCESS";
if($aRow['OBJECT_UID']==$tasUid){ } elseif (isset( $calendarArray['TASK'] )) {
$calendarArray['TASK']=$aRow ['CALENDAR_UID']; $calendarUid = $calendarArray['TASK'];
} $calendarOwner = "TASK";
$oDataset->next (); }
}
if(isset($calendarArray['USER'])){ //print "<h1>$calendarUid</h1>";
$calendarUid = $calendarArray['USER']; if ($sw_validate) {
$calendarOwner = "USER"; $calendarDefinition = $this->getCalendarInfo( $calendarUid );
}elseif (isset($calendarArray['PROCESS'])){ } else {
$calendarUid = $calendarArray['PROCESS']; $calendarDefinition = $this->getCalendarInfoE( $calendarUid );
$calendarOwner = "PROCESS"; }
}elseif (isset($calendarArray['TASK'])){ $calendarDefinition['CALENDAR_APPLIED'] = $calendarOwner;
$calendarUid = $calendarArray['TASK']; $this->addCalendarLog( "--=== Calendar Applied: " . $calendarDefinition['CALENDAR_NAME'] . " -> $calendarOwner" );
$calendarOwner = "TASK"; return $calendarDefinition;
} }
//print "<h1>$calendarUid</h1>"; public function assignCalendarTo ($objectUid, $calendarUid, $objectType)
if($sw_validate){ {
$calendarDefinition = $this->getCalendarInfo ( $calendarUid ); //if exists the row in the database propel will update it, otherwise will insert.
}else{ $tr = CalendarAssignmentsPeer::retrieveByPK( $objectUid );
$calendarDefinition = $this->getCalendarInfoE ( $calendarUid ); if ($calendarUid != "") {
} if (! (is_object( $tr ) && get_class( $tr ) == 'CalendarAssignments')) {
$calendarDefinition ['CALENDAR_APPLIED'] = $calendarOwner; $tr = new CalendarAssignments();
$this->addCalendarLog ( "--=== Calendar Applied: " . $calendarDefinition ['CALENDAR_NAME'] . " -> $calendarOwner" ); }
return $calendarDefinition; $tr->setObjectUid( $objectUid );
} $tr->setCalendarUid( $calendarUid );
$tr->setObjectType( $objectType );
function assignCalendarTo($objectUid, $calendarUid, $objectType) {
//if exists the row in the database propel will update it, otherwise will insert. if ($tr->validate()) {
$tr = CalendarAssignmentsPeer::retrieveByPK ( $objectUid ); // we save it, since we get no validation errors, or do whatever else you like.
if ($calendarUid != "") { $res = $tr->save();
if (! (is_object ( $tr ) && get_class ( $tr ) == 'CalendarAssignments')) { } else {
$tr = new CalendarAssignments ( ); // Something went wrong. We can now get the validationFailures and handle them.
$msg = '';
} $validationFailuresArray = $tr->getValidationFailures();
$tr->setObjectUid ( $objectUid ); foreach ($validationFailuresArray as $objValidationFailure) {
$tr->setCalendarUid ( $calendarUid ); $msg .= $objValidationFailure->getMessage() . "<br/>";
$tr->setObjectType ( $objectType ); }
//return array ( 'codError' => -100, 'rowsAffected' => 0, 'message' => $msg );
if ($tr->validate ()) { }
// we save it, since we get no validation errors, or do whatever else you like. } else {
$res = $tr->save (); //Delete record
if ((is_object( $tr ) && get_class( $tr ) == 'CalendarAssignments')) {
} else { $tr->delete();
// Something went wrong. We can now get the validationFailures and handle them. }
$msg = ''; }
$validationFailuresArray = $tr->getValidationFailures (); }
foreach ( $validationFailuresArray as $objValidationFailure ) { //Added by Qennix
$msg .= $objValidationFailure->getMessage () . "<br/>"; //Counts all users,task,process by calendar
} public function getAllCounterByCalendar ($type)
//return array ( 'codError' => -100, 'rowsAffected' => 0, 'message' => $msg ); {
} $oCriteria = new Criteria( 'workflow' );
} else { //Delete record $oCriteria->addSelectColumn( CalendarAssignmentsPeer::CALENDAR_UID );
if ((is_object ( $tr ) && get_class ( $tr ) == 'CalendarAssignments')) { $oCriteria->addSelectColumn( 'COUNT(*) AS CNT' );
$tr->delete (); $oCriteria->addGroupByColumn( CalendarAssignmentsPeer::CALENDAR_UID );
} $oCriteria->add( CalendarAssignmentsPeer::OBJECT_TYPE, $type );
} $oDataset = CalendarAssignmentsPeer::doSelectRS( $oCriteria );
$oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC );
} $aCounter = Array ();
//Added by Qennix while ($oDataset->next()) {
//Counts all users,task,process by calendar $row = $oDataset->getRow();
function getAllCounterByCalendar($type){ $aCounter[$row['CALENDAR_UID']] = $row['CNT'];
$oCriteria = new Criteria('workflow'); }
$oCriteria->addSelectColumn(CalendarAssignmentsPeer::CALENDAR_UID); return $aCounter;
$oCriteria->addSelectColumn('COUNT(*) AS CNT'); }
$oCriteria->addGroupByColumn(CalendarAssignmentsPeer::CALENDAR_UID);
$oCriteria->add(CalendarAssignmentsPeer::OBJECT_TYPE,$type); public function loadByCalendarName ($calendarName)
$oDataset = CalendarAssignmentsPeer::doSelectRS($oCriteria); {
$oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); $Criteria = new Criteria( 'workflow' );
$aCounter = Array(); $Criteria->addSelectColumn( CalendarDefinitionPeer::CALENDAR_UID );
while($oDataset->next()){ $Criteria->addSelectColumn( CalendarDefinitionPeer::CALENDAR_NAME );
$row = $oDataset->getRow(); $Criteria->addSelectColumn( CalendarDefinitionPeer::CALENDAR_CREATE_DATE );
$aCounter[$row['CALENDAR_UID']] = $row['CNT']; $Criteria->addSelectColumn( CalendarDefinitionPeer::CALENDAR_UPDATE_DATE );
} $Criteria->addSelectColumn( CalendarDefinitionPeer::CALENDAR_DESCRIPTION );
return $aCounter; $Criteria->addSelectColumn( CalendarDefinitionPeer::CALENDAR_STATUS );
} $Criteria->add( calendarDefinitionPeer::CALENDAR_NAME, $calendarName, CRITERIA::EQUAL );
$oDataset = calendarDefinitionPeer::doSelectRS( $Criteria );
function loadByCalendarName($calendarName) $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC );
{ $oDataset->next();
$Criteria = new Criteria('workflow'); return $oDataset->getRow();
$Criteria->addSelectColumn(CalendarDefinitionPeer::CALENDAR_UID); }
$Criteria->addSelectColumn(CalendarDefinitionPeer::CALENDAR_NAME); }
$Criteria->addSelectColumn(CalendarDefinitionPeer::CALENDAR_CREATE_DATE); // CalendarDefinition
$Criteria->addSelectColumn(CalendarDefinitionPeer::CALENDAR_UPDATE_DATE);
$Criteria->addSelectColumn(CalendarDefinitionPeer::CALENDAR_DESCRIPTION);
$Criteria->addSelectColumn(CalendarDefinitionPeer::CALENDAR_STATUS);
$Criteria->add(calendarDefinitionPeer::CALENDAR_NAME, $calendarName, CRITERIA::EQUAL);
$oDataset = calendarDefinitionPeer::doSelectRS ($Criteria);
$oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
$oDataset->next();
return $oDataset->getRow();
}
} // CalendarDefinition

View File

@@ -1,479 +1,485 @@
<?php <?php
/** /**
* Content.php * Content.php
* @package workflow.engine.classes.model *
* * @package workflow.engine.classes.model
* ProcessMaker Open Source Edition *
* Copyright (C) 2004 - 2011 Colosa Inc. * ProcessMaker Open Source Edition
* * Copyright (C) 2004 - 2011 Colosa Inc.
* This program is free software: you can redistribute it and/or modify *
* it under the terms of the GNU Affero General Public License as * This program is free software: you can redistribute it and/or modify
* published by the Free Software Foundation, either version 3 of the * it under the terms of the GNU Affero General Public License as
* License, or (at your option) any later version. * published by the Free Software Foundation, either version 3 of the
* * License, or (at your option) any later version.
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of * This program is distributed in the hope that it will be useful,
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * but WITHOUT ANY WARRANTY; without even the implied warranty of
* GNU Affero General Public License for more details. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* * GNU Affero General Public License for more details.
* You should have received a copy of the GNU Affero General Public License *
* along with this program. If not, see <http://www.gnu.org/licenses/>. * You should have received a copy of the GNU Affero General Public License
* * along with this program. If not, see <http://www.gnu.org/licenses/>.
* For more information, contact Colosa Inc, 2566 Le Jeune Rd., *
* Coral Gables, FL, 33134, USA, or email info@colosa.com. * For more information, contact Colosa Inc, 2566 Le Jeune Rd.,
* * Coral Gables, FL, 33134, USA, or email info@colosa.com.
*/ *
*/
require_once 'classes/model/om/BaseContent.php';
require_once 'classes/model/om/BaseContent.php';
/**
* Skeleton subclass for representing a row from the 'CONTENT' table. /**
* * Skeleton subclass for representing a row from the 'CONTENT' table.
* *
* *
* You should add additional methods to this class to meet the *
* application requirements. This class will only be generated as * You should add additional methods to this class to meet the
* long as it does not already exist in the output directory. * application requirements. This class will only be generated as
* * long as it does not already exist in the output directory.
* @package workflow.engine.classes.model *
*/ * @package workflow.engine.classes.model
class Content extends BaseContent { */
class Content extends BaseContent
public $langs; {
public $rowsProcessed; public $langs;
public $rowsInserted; public $rowsProcessed;
public $rowsUnchanged; public $rowsInserted;
public $rowsClustered; public $rowsUnchanged;
public $langsAsoc; public $rowsClustered;
/* public $langsAsoc;
* Load the content row specified by the parameters: /*
* Load the content row specified by the parameters:
* @param string $sUID * @param string $sUID
* @return variant * @return variant
*/ */
function load($ConCategory, $ConParent, $ConId, $ConLang) { public function load ($ConCategory, $ConParent, $ConId, $ConLang)
$content = ContentPeer::retrieveByPK ( $ConCategory, $ConParent, $ConId, $ConLang ); {
if (is_null ( $content )) { $content = ContentPeer::retrieveByPK( $ConCategory, $ConParent, $ConId, $ConLang );
//we dont find any value for this field and language in CONTENT table if (is_null( $content )) {
$ConValue = Content::autoLoadSave ( $ConCategory, $ConParent, $ConId, $ConLang ); //we dont find any value for this field and language in CONTENT table;
} else { $ConValue = Content::autoLoadSave( $ConCategory, $ConParent, $ConId, $ConLang );
//krumo($content); } else {
$ConValue = $content->getConValue (); //krumo($content);
if ($ConValue == "") { //try to find a valid translation $ConValue = $content->getConValue();
$ConValue = Content::autoLoadSave ( $ConCategory, $ConParent, $ConId, $ConLang ); if ($ConValue == "") {
} //try to find a valid translation
} $ConValue = Content::autoLoadSave( $ConCategory, $ConParent, $ConId, $ConLang );
return $ConValue; }
} }
/* return $ConValue;
* Find a valid Lang for current Content. The most recent }
/*
* Find a valid Lang for current Content. The most recent
* @param string $ConCategory * @param string $ConCategory
* @param string $ConParent * @param string $ConParent
* @param string $ConId * @param string $ConId
* @return string * @return string
* *
*/ */
function getDefaultContentLang($ConCategory, $ConParent, $ConId, $destConLang) { public function getDefaultContentLang ($ConCategory, $ConParent, $ConId, $destConLang)
$Criteria = new Criteria ( 'workflow' ); {
$Criteria->clearSelectColumns ()->clearOrderByColumns (); $Criteria = new Criteria( 'workflow' );
$Criteria->clearSelectColumns()->clearOrderByColumns();
$Criteria->addSelectColumn ( ContentPeer::CON_CATEGORY );
$Criteria->addSelectColumn ( ContentPeer::CON_PARENT ); $Criteria->addSelectColumn( ContentPeer::CON_CATEGORY );
$Criteria->addSelectColumn ( ContentPeer::CON_ID ); $Criteria->addSelectColumn( ContentPeer::CON_PARENT );
$Criteria->addSelectColumn ( ContentPeer::CON_LANG ); $Criteria->addSelectColumn( ContentPeer::CON_ID );
$Criteria->addSelectColumn ( ContentPeer::CON_VALUE ); $Criteria->addSelectColumn( ContentPeer::CON_LANG );
$Criteria->addSelectColumn( ContentPeer::CON_VALUE );
$Criteria->add ( ContentPeer::CON_CATEGORY, $ConCategory, CRITERIA::EQUAL );
$Criteria->add ( ContentPeer::CON_PARENT, $ConParent, CRITERIA::EQUAL ); $Criteria->add( ContentPeer::CON_CATEGORY, $ConCategory, CRITERIA::EQUAL );
$Criteria->add ( ContentPeer::CON_ID, $ConId, CRITERIA::EQUAL ); $Criteria->add( ContentPeer::CON_PARENT, $ConParent, CRITERIA::EQUAL );
$Criteria->add( ContentPeer::CON_ID, $ConId, CRITERIA::EQUAL );
$Criteria->add ( ContentPeer::CON_LANG, $destConLang, CRITERIA::NOT_EQUAL ); $Criteria->add( ContentPeer::CON_LANG, $destConLang, CRITERIA::NOT_EQUAL );
$rs = ContentPeer::doSelectRS ( $Criteria ); $rs = ContentPeer::doSelectRS( $Criteria );
$rs->setFetchmode ( ResultSet::FETCHMODE_ASSOC ); $rs->setFetchmode( ResultSet::FETCHMODE_ASSOC );
$rs->next (); $rs->next();
if (is_array ( $row = $rs->getRow () )) { if (is_array( $row = $rs->getRow() )) {
$defaultLang = $row ['CON_LANG']; $defaultLang = $row['CON_LANG'];
} else {
} else { $defaultLang = "";
$defaultLang = ""; }
} return ($defaultLang);
return ($defaultLang); }
} /*
/* * Load the content row and the Save automatically the row for the destination language
* Load the content row and the Save automatically the row for the destination language * @param string $ConCategory
* @param string $ConCategory * @param string $ConParent
* @param string $ConParent * @param string $ConId
* @param string $ConId * @param string $destConLang
* @param string $destConLang * @return string
* @return string * if the row doesn't exist, it will be created automatically, even the default 'en' language
* if the row doesn't exist, it will be created automatically, even the default 'en' language */
*/ public function autoLoadSave ($ConCategory, $ConParent, $ConId, $destConLang)
function autoLoadSave($ConCategory, $ConParent, $ConId, $destConLang) { {
//search in 'en' language, the default language //search in 'en' language, the default language
$content = ContentPeer::retrieveByPK ( $ConCategory, $ConParent, $ConId, 'en' ); $content = ContentPeer::retrieveByPK( $ConCategory, $ConParent, $ConId, 'en' );
if ((is_null ( $content )) || ($content->getConValue () == "")) { if ((is_null( $content )) || ($content->getConValue() == "")) {
$differentLang = Content::getDefaultContentLang ( $ConCategory, $ConParent, $ConId, $destConLang ); $differentLang = Content::getDefaultContentLang( $ConCategory, $ConParent, $ConId, $destConLang );
$content = ContentPeer::retrieveByPK ( $ConCategory, $ConParent, $ConId, $differentLang ); $content = ContentPeer::retrieveByPK( $ConCategory, $ConParent, $ConId, $differentLang );
} }
//to do: review if the $destConLang is a valid language/ //to do: review if the $destConLang is a valid language/
if (is_null ( $content )) if (is_null( $content )) {
$ConValue = ''; //we dont find any value for this field and language in CONTENT table $ConValue = '';
else //we dont find any value for this field and language in CONTENT table
$ConValue = $content->getConValue (); } else {
$ConValue = $content->getConValue();
try { }
$con = ContentPeer::retrieveByPK ( $ConCategory, $ConParent, $ConId, $destConLang );
if (is_null ( $con )) { try {
$con = new Content ( ); $con = ContentPeer::retrieveByPK( $ConCategory, $ConParent, $ConId, $destConLang );
} if (is_null( $con )) {
$con->setConCategory ( $ConCategory ); $con = new Content();
$con->setConParent ( $ConParent ); }
$con->setConId ( $ConId ); $con->setConCategory( $ConCategory );
$con->setConLang ( $destConLang ); $con->setConParent( $ConParent );
$con->setConValue ( $ConValue ); $con->setConId( $ConId );
if ($con->validate ()) { $con->setConLang( $destConLang );
$res = $con->save (); $con->setConValue( $ConValue );
} if ($con->validate()) {
} catch ( Exception $e ) { $res = $con->save();
throw ($e); }
} } catch (Exception $e) {
throw ($e);
return $ConValue; }
}
return $ConValue;
/* }
* Insert a content row
/*
* Insert a content row
* @param string $ConCategory * @param string $ConCategory
* @param string $ConParent * @param string $ConParent
* @param string $ConId * @param string $ConId
* @param string $ConLang * @param string $ConLang
* @param string $ConValue * @param string $ConValue
* @return variant * @return variant
*/ */
function addContent($ConCategory, $ConParent, $ConId, $ConLang, $ConValue) { public function addContent ($ConCategory, $ConParent, $ConId, $ConLang, $ConValue)
try { {
if ($ConLang != 'en') { try {
$baseLangContent = ContentPeer::retrieveByPk($ConCategory, $ConParent, $ConId, 'en'); if ($ConLang != 'en') {
if ($baseLangContent === null) { $baseLangContent = ContentPeer::retrieveByPk( $ConCategory, $ConParent, $ConId, 'en' );
Content::addContent($ConCategory, $ConParent, $ConId, 'en', $ConValue); if ($baseLangContent === null) {
} Content::addContent( $ConCategory, $ConParent, $ConId, 'en', $ConValue );
} }
}
$con = ContentPeer::retrieveByPK ( $ConCategory, $ConParent, $ConId, $ConLang );
$con = ContentPeer::retrieveByPK( $ConCategory, $ConParent, $ConId, $ConLang );
if (is_null ( $con )) {
$con = new Content ( ); if (is_null( $con )) {
} else { $con = new Content();
if ($con->getConParent () == $ConParent && $con->getConCategory () == $ConCategory && $con->getConValue () == $ConValue && $con->getConLang () == $ConLang && $con->getConId () == $ConId) } else {
return true; if ($con->getConParent() == $ConParent && $con->getConCategory() == $ConCategory && $con->getConValue() == $ConValue && $con->getConLang() == $ConLang && $con->getConId() == $ConId) {
} return true;
$con->setConCategory ( $ConCategory ); }
if ($con->getConParent () != $ConParent) }
$con->setConParent ( $ConParent ); $con->setConCategory( $ConCategory );
$con->setConId ( $ConId ); if ($con->getConParent() != $ConParent) {
$con->setConLang ( $ConLang ); $con->setConParent( $ConParent );
$con->setConValue ( $ConValue ); }
if ($con->validate ()) { $con->setConId( $ConId );
$res = $con->save (); $con->setConLang( $ConLang );
return $res; $con->setConValue( $ConValue );
} else { if ($con->validate()) {
$e = new Exception ( "Error in addcontent, the row $ConCategory, $ConParent, $ConId, $ConLang is not Valid" ); $res = $con->save();
throw ($e); return $res;
} } else {
} catch ( Exception $e ) { $e = new Exception( "Error in addcontent, the row $ConCategory, $ConParent, $ConId, $ConLang is not Valid" );
throw ($e); throw ($e);
} }
} } catch (Exception $e) {
throw ($e);
/* }
* Insert a content row }
/*
* Insert a content row
* @param string $ConCategory * @param string $ConCategory
* @param string $ConParent * @param string $ConParent
* @param string $ConId * @param string $ConId
* @param string $ConLang * @param string $ConLang
* @param string $ConValue * @param string $ConValue
* @return variant * @return variant
*/ */
function insertContent($ConCategory, $ConParent, $ConId, $ConLang, $ConValue) { public function insertContent ($ConCategory, $ConParent, $ConId, $ConLang, $ConValue)
try { {
$con = new Content ( ); try {
$con->setConCategory ( $ConCategory ); $con = new Content();
$con->setConParent ( $ConParent ); $con->setConCategory( $ConCategory );
$con->setConId ( $ConId ); $con->setConParent( $ConParent );
$con->setConLang ( $ConLang ); $con->setConId( $ConId );
$con->setConValue ( $ConValue ); $con->setConLang( $ConLang );
if ($con->validate ()) { $con->setConValue( $ConValue );
$res = $con->save (); if ($con->validate()) {
return $res; $res = $con->save();
} else { return $res;
$e = new Exception ( "Error in addcontent, the row $ConCategory, $ConParent, $ConId, $ConLang is not Valid" ); } else {
throw ($e); $e = new Exception( "Error in addcontent, the row $ConCategory, $ConParent, $ConId, $ConLang is not Valid" );
} throw ($e);
} catch ( Exception $e ) { }
throw ($e); } catch (Exception $e) {
} throw ($e);
} }
}
/*
* remove a content row /*
* remove a content row
* @param string $ConCategory * @param string $ConCategory
* @param string $ConParent * @param string $ConParent
* @param string $ConId * @param string $ConId
* @param string $ConLang * @param string $ConLang
* @param string $ConValue * @param string $ConValue
* @return variant * @return variant
*/ */
function removeContent($ConCategory, $ConParent, $ConId) { public function removeContent ($ConCategory, $ConParent, $ConId)
try { {
$c = new Criteria ( ); try {
$c->add ( ContentPeer::CON_CATEGORY, $ConCategory ); $c = new Criteria();
$c->add ( ContentPeer::CON_PARENT, $ConParent ); $c->add( ContentPeer::CON_CATEGORY, $ConCategory );
$c->add ( ContentPeer::CON_ID, $ConId ); $c->add( ContentPeer::CON_PARENT, $ConParent );
$result = ContentPeer::doSelectRS ( $c ); $c->add( ContentPeer::CON_ID, $ConId );
$result->next (); $result = ContentPeer::doSelectRS( $c );
$row = $result->getRow (); $result->next();
while ( is_array ( $row ) ) { $row = $result->getRow();
ContentPeer::doDelete ( array ($ConCategory, $ConParent, $ConId, $row [3] ) ); while (is_array( $row )) {
$result->next (); ContentPeer::doDelete( array ($ConCategory,$ConParent,$ConId,$row[3]) );
$row = $result->getRow (); $result->next();
} $row = $result->getRow();
} catch ( Exception $e ) { }
throw ($e); } catch (Exception $e) {
} throw ($e);
}
}
}
/*
/*
* Reasons if the record already exists * Reasons if the record already exists
* *
* @param string $ConCategory * @param string $ConCategory
* @param string $ConParent * @param string $ConParent
* @param string $ConId * @param string $ConId
* @param string $ConLang * @param string $ConLang
* @param string $ConValue * @param string $ConValue
* @return boolean true or false * @return boolean true or false
*/ */
function Exists ($ConCategory, $ConParent, $ConId, $ConLang) public function Exists ($ConCategory, $ConParent, $ConId, $ConLang)
{ {
try { try {
$oPro = ContentPeer::retrieveByPk($ConCategory, $ConParent, $ConId, $ConLang); $oPro = ContentPeer::retrieveByPk( $ConCategory, $ConParent, $ConId, $ConLang );
if (is_object($oPro) && get_class ($oPro) == 'Content' ) { if (is_object( $oPro ) && get_class( $oPro ) == 'Content') {
return true; return true;
} else { } else {
return false; return false;
} }
} } catch (Exception $oError) {
catch (Exception $oError) { throw ($oError);
throw($oError); }
} }
}
/* /*
* Regenerate Table Content * Regenerate Table Content
* *
* @param array $langs * @param array $langs
*/ */
function regenerateContent($langs, $workSpace=SYS_SYS) public function regenerateContent ($langs, $workSpace = SYS_SYS)
{ {
//Search the language //Search the language
$key = array_search('en',$langs); $key = array_search( 'en', $langs );
if ($key === false) { if ($key === false) {
$key = array_search(SYS_LANG,$langs); $key = array_search( SYS_LANG, $langs );
if ($key === false) { if ($key === false) {
$key = '0'; $key = '0';
} }
} }
$this->langsAsoc = array(); $this->langsAsoc = array ();
foreach ($langs as $key=>$value) { foreach ($langs as $key => $value) {
$this->langsAsoc[$value] = $value; $this->langsAsoc[$value] = $value;
} }
$this->langs = $langs; $this->langs = $langs;
$this->rowsProcessed = 0; $this->rowsProcessed = 0;
$this->rowsInserted = 0; $this->rowsInserted = 0;
$this->rowsUnchanged = 0; $this->rowsUnchanged = 0;
$this->rowsClustered = 0; $this->rowsClustered = 0;
//Creating table CONTENT_BACKUP //Creating table CONTENT_BACKUP
$oConnection = Propel::getConnection('workflow'); $oConnection = Propel::getConnection( 'workflow' );
$oStatement = $oConnection->prepareStatement("CREATE TABLE IF NOT EXISTS `CONTENT_BACKUP` ( $oStatement = $oConnection->prepareStatement( "CREATE TABLE IF NOT EXISTS `CONTENT_BACKUP` (
`CON_CATEGORY` VARCHAR(30) default '' NOT NULL, `CON_CATEGORY` VARCHAR(30) default '' NOT NULL,
`CON_PARENT` VARCHAR(32) default '' NOT NULL, `CON_PARENT` VARCHAR(32) default '' NOT NULL,
`CON_ID` VARCHAR(100) default '' NOT NULL, `CON_ID` VARCHAR(100) default '' NOT NULL,
`CON_LANG` VARCHAR(10) default '' NOT NULL, `CON_LANG` VARCHAR(10) default '' NOT NULL,
`CON_VALUE` MEDIUMTEXT NOT NULL, `CON_VALUE` MEDIUMTEXT NOT NULL,
CONSTRAINT CONTENT_BACKUP_PK PRIMARY KEY (CON_CATEGORY,CON_PARENT,CON_ID,CON_LANG) CONSTRAINT CONTENT_BACKUP_PK PRIMARY KEY (CON_CATEGORY,CON_PARENT,CON_ID,CON_LANG)
)Engine=MyISAM DEFAULT CHARSET='utf8' COMMENT='Table for add content';"); )Engine=MyISAM DEFAULT CHARSET='utf8' COMMENT='Table for add content';" );
$oStatement->executeQuery(); $oStatement->executeQuery();
$con = Propel::getConnection('workflow'); $con = Propel::getConnection( 'workflow' );
$sql = " SELECT DISTINCT CON_LANG $sql = " SELECT DISTINCT CON_LANG
FROM CONTENT "; FROM CONTENT ";
$stmt = $con->createStatement(); $stmt = $con->createStatement();
$rs = $stmt->executeQuery($sql, ResultSet::FETCHMODE_ASSOC); $rs = $stmt->executeQuery( $sql, ResultSet::FETCHMODE_ASSOC );
while ($rs->next()) { while ($rs->next()) {
$row = $rs->getRow(); $row = $rs->getRow();
$language = $row['CON_LANG']; $language = $row['CON_LANG'];
if (array_search($row['CON_LANG'],$langs) === false) { if (array_search( $row['CON_LANG'], $langs ) === false) {
Content::removeLanguageContent($row['CON_LANG']); Content::removeLanguageContent( $row['CON_LANG'] );
} }
} }
$sql = " SELECT CON_ID, CON_CATEGORY, CON_LANG, CON_PARENT, CON_VALUE $sql = " SELECT CON_ID, CON_CATEGORY, CON_LANG, CON_PARENT, CON_VALUE
FROM CONTENT FROM CONTENT
ORDER BY CON_ID, CON_CATEGORY, CON_PARENT, CON_LANG"; ORDER BY CON_ID, CON_CATEGORY, CON_PARENT, CON_LANG";
G::LoadClass("wsTools"); G::LoadClass( "wsTools" );
$workSpace = new workspaceTools($workSpace); $workSpace = new workspaceTools( $workSpace );
$workSpace->getDBInfo(); $workSpace->getDBInfo();
$link = mysql_pconnect($workSpace->dbHost, $workSpace->dbUser, $workSpace->dbPass) $link = mysql_pconnect( $workSpace->dbHost, $workSpace->dbUser, $workSpace->dbPass ) or die( "Could not connect" );
or die ("Could not connect");
mysql_select_db( $workSpace->dbName, $link );
mysql_select_db($workSpace->dbName, $link); mysql_query( "SET NAMES 'utf8';" );
mysql_query("SET NAMES 'utf8';"); mysql_query( 'SET OPTION SQL_BIG_SELECTS=1' );
mysql_query('SET OPTION SQL_BIG_SELECTS=1'); $result = mysql_unbuffered_query( $sql, $link );
$result = mysql_unbuffered_query($sql, $link); $list = array ();
$list = array(); $default = array ();
$default = array(); $sw = array ('CON_ID' => '','CON_CATEGORY' => '','CON_PARENT' => ''
$sw = array('CON_ID'=>'','CON_CATEGORY'=>'','CON_PARENT'=>''); );
while ($row = mysql_fetch_assoc($result)) { while ($row = mysql_fetch_assoc( $result )) {
if ($sw['CON_ID'] == $row['CON_ID'] && if ($sw['CON_ID'] == $row['CON_ID'] && $sw['CON_CATEGORY'] == $row['CON_CATEGORY'] && $sw['CON_PARENT'] == $row['CON_PARENT']) {
$sw['CON_CATEGORY'] == $row['CON_CATEGORY'] && $list[] = $row;
$sw['CON_PARENT'] == $row['CON_PARENT']) { } else {
$list[] = $row; $this->rowsClustered ++;
} else { if (count( $langs ) != count( $list )) {
$this->rowsClustered++; $this->checkLanguage( $list, $default );
if (count($langs) != count($list)) { } else {
$this->checkLanguage($list, $default); $this->rowsUnchanged = $this->rowsUnchanged + count( $langs );
} else { }
$this->rowsUnchanged = $this->rowsUnchanged + count($langs); $sw = array ();
} $sw['CON_ID'] = $row['CON_ID'];
$sw = array(); $sw['CON_CATEGORY'] = $row['CON_CATEGORY'];
$sw['CON_ID'] = $row['CON_ID']; $sw['CON_LANG'] = $row['CON_LANG'];
$sw['CON_CATEGORY'] = $row['CON_CATEGORY']; $sw['CON_PARENT'] = $row['CON_PARENT'];
$sw['CON_LANG'] = $row['CON_LANG']; unset( $list );
$sw['CON_PARENT'] = $row['CON_PARENT']; unset( $default );
unset($list); $list = array ();
unset($default); $default = array ();
$list = array(); $list[] = $row;
$default = array(); }
$list[] = $row; if ($sw['CON_LANG'] == $langs[$key]) {
} $default = $row;
if ($sw['CON_LANG'] == $langs[$key]) { }
$default = $row; $this->rowsProcessed ++;
} }
$this->rowsProcessed++; if (count( $langs ) != count( $list )) {
} $this->checkLanguage( $list, $default );
if (count($langs) != count($list)) { } else {
$this->checkLanguage($list, $default); $this->rowsUnchanged = $this->rowsUnchanged + count( $langs );
} else { }
$this->rowsUnchanged = $this->rowsUnchanged + count($langs); mysql_free_result( $result );
} $total = $this->rowsProcessed + $this->rowsInserted;
mysql_free_result($result); $connection = Propel::getConnection( 'workflow' );
$total = $this->rowsProcessed + $this->rowsInserted; $statement = $connection->prepareStatement( "INSERT INTO CONTENT
$connection = Propel::getConnection('workflow');
$statement = $connection->prepareStatement("INSERT INTO CONTENT
SELECT CON_CATEGORY, CON_PARENT, CON_ID , CON_LANG, CON_VALUE SELECT CON_CATEGORY, CON_PARENT, CON_ID , CON_LANG, CON_VALUE
FROM CONTENT_BACKUP"); FROM CONTENT_BACKUP" );
$statement->executeQuery(); $statement->executeQuery();
$statement = $connection->prepareStatement("DROP TABLE CONTENT_BACKUP"); $statement = $connection->prepareStatement( "DROP TABLE CONTENT_BACKUP" );
$statement->executeQuery(); $statement->executeQuery();
if (!isset($_SERVER['SERVER_NAME'])) { if (! isset( $_SERVER['SERVER_NAME'] )) {
CLI::logging("Rows Processed ---> $this->rowsProcessed ..... \n"); CLI::logging( "Rows Processed ---> $this->rowsProcessed ..... \n" );
CLI::logging("Rows Clustered ---> $this->rowsClustered ..... \n"); CLI::logging( "Rows Clustered ---> $this->rowsClustered ..... \n" );
CLI::logging("Rows Unchanged ---> $this->rowsUnchanged ..... \n"); CLI::logging( "Rows Unchanged ---> $this->rowsUnchanged ..... \n" );
CLI::logging("Rows Inserted ---> $this->rowsInserted ..... \n"); CLI::logging( "Rows Inserted ---> $this->rowsInserted ..... \n" );
CLI::logging("Rows Total ---> $total ..... \n"); CLI::logging( "Rows Total ---> $total ..... \n" );
} }
} }
function checkLanguage($content, $default) public function checkLanguage ($content, $default)
{ {
if (count($content)>0) { if (count( $content ) > 0) {
$langs = $this->langs; $langs = $this->langs;
$langsAsoc = $this->langsAsoc; $langsAsoc = $this->langsAsoc;
//Element default //Element default
$default = (count($default)>0) ? $default : $content[0]; $default = (count( $default ) > 0) ? $default : $content[0];
foreach ($content as $key => $value) { foreach ($content as $key => $value) {
unset($langsAsoc[$value['CON_LANG']]); unset( $langsAsoc[$value['CON_LANG']] );
} }
foreach ($langsAsoc as $key => $value) { foreach ($langsAsoc as $key => $value) {
$this->rowsInserted++; $this->rowsInserted ++;
$this->fastInsertContent( $this->fastInsertContent( $default['CON_CATEGORY'], $default['CON_PARENT'], $default['CON_ID'], $value, $default['CON_VALUE'] );
$default['CON_CATEGORY'], }
$default['CON_PARENT'], }
$default['CON_ID'], }
$value,
$default['CON_VALUE'] public function fastInsertContent ($ConCategory, $ConParent, $ConId, $ConLang, $ConValue)
); {
} $ConValue = mysql_real_escape_string( $ConValue );
} $connection = Propel::getConnection( 'workflow' );
} $statement = $connection->prepareStatement( "INSERT INTO CONTENT_BACKUP (
function fastInsertContent ($ConCategory, $ConParent, $ConId, $ConLang, $ConValue) {
$ConValue = mysql_real_escape_string($ConValue);
$connection = Propel::getConnection('workflow');
$statement = $connection->prepareStatement("INSERT INTO CONTENT_BACKUP (
CON_CATEGORY, CON_PARENT, CON_ID , CON_LANG, CON_VALUE) CON_CATEGORY, CON_PARENT, CON_ID , CON_LANG, CON_VALUE)
VALUES ('$ConCategory', '$ConParent', '$ConId', '$ConLang', '$ConValue');"); VALUES ('$ConCategory', '$ConParent', '$ConId', '$ConLang', '$ConValue');" );
$statement->executeQuery(); $statement->executeQuery();
} }
function removeLanguageContent($lanId) { public function removeLanguageContent ($lanId)
try { {
$c = new Criteria ( ); try {
$c->addSelectColumn(ContentPeer::CON_CATEGORY); $c = new Criteria();
$c->addSelectColumn(ContentPeer::CON_PARENT); $c->addSelectColumn( ContentPeer::CON_CATEGORY );
$c->addSelectColumn(ContentPeer::CON_ID); $c->addSelectColumn( ContentPeer::CON_PARENT );
$c->addSelectColumn(ContentPeer::CON_LANG); $c->addSelectColumn( ContentPeer::CON_ID );
$c->addSelectColumn( ContentPeer::CON_LANG );
$c->add ( ContentPeer::CON_LANG, $lanId );
$c->add( ContentPeer::CON_LANG, $lanId );
$result = ContentPeer::doSelectRS ( $c );
$result->setFetchmode(ResultSet::FETCHMODE_ASSOC); $result = ContentPeer::doSelectRS( $c );
$result->next (); $result->setFetchmode( ResultSet::FETCHMODE_ASSOC );
$row = $result->getRow (); $result->next();
$row = $result->getRow();
while ( is_array ( $row ) ) {
$content = ContentPeer::retrieveByPK( $row['CON_CATEGORY'], $row['CON_PARENT'], $row['CON_ID'], $lanId); while (is_array( $row )) {
$content = ContentPeer::retrieveByPK( $row['CON_CATEGORY'], $row['CON_PARENT'], $row['CON_ID'], $lanId );
if( $content !== null )
$content->delete(); if ($content !== null) {
$content->delete();
$result->next (); }
$row = $result->getRow (); $result->next();
} $row = $result->getRow();
}
} catch ( Exception $e ) {
throw ($e); } catch (Exception $e) {
} throw ($e);
} }
//Added by Enrique at Feb 9th,2011 }
//Gets all Role Names by Role //Added by Enrique at Feb 9th,2011
function getAllContentsByRole($sys_lang=SYS_LANG){ //Gets all Role Names by Role
if (!isset($sys_lang)) $sys_lang = 'en'; public function getAllContentsByRole ($sys_lang = SYS_LANG)
$oCriteria = new Criteria('workflow'); {
$oCriteria->clearSelectColumns(); if (! isset( $sys_lang )) {
$oCriteria->addSelectColumn(ContentPeer::CON_ID); $sys_lang = 'en';
$oCriteria->addAsColumn('ROL_NAME', ContentPeer::CON_VALUE); }
//$oCriteria->addAsColumn('ROL_UID', ContentPeer::CON_ID); $oCriteria = new Criteria( 'workflow' );
$oCriteria->add(ContentPeer::CON_CATEGORY,'ROL_NAME'); $oCriteria->clearSelectColumns();
$oCriteria->add(ContentPeer::CON_LANG, $sys_lang); $oCriteria->addSelectColumn( ContentPeer::CON_ID );
$oDataset = ContentPeer::doSelectRS($oCriteria); $oCriteria->addAsColumn( 'ROL_NAME', ContentPeer::CON_VALUE );
$oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); //$oCriteria->addAsColumn('ROL_UID', ContentPeer::CON_ID);
$aRoles = Array(); $oCriteria->add( ContentPeer::CON_CATEGORY, 'ROL_NAME' );
while ($oDataset->next()){ $oCriteria->add( ContentPeer::CON_LANG, $sys_lang );
$xRow = $oDataset->getRow(); $oDataset = ContentPeer::doSelectRS( $oCriteria );
$aRoles[$xRow['CON_ID']] = $xRow['ROL_NAME']; $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC );
} $aRoles = Array ();
return $aRoles; while ($oDataset->next()) {
} $xRow = $oDataset->getRow();
$aRoles[$xRow['CON_ID']] = $xRow['ROL_NAME'];
} // Content }
return $aRoles;
}
}
// Content

View File

@@ -1,461 +1,455 @@
<?php <?php
/** /**
* Translation.php * Translation.php
* @package workflow.engine.classes.model *
* * @package workflow.engine.classes.model
* ProcessMaker Open Source Edition *
* Copyright (C) 2004 - 2011 Colosa Inc. * ProcessMaker Open Source Edition
* * Copyright (C) 2004 - 2011 Colosa Inc.
* This program is free software: you can redistribute it and/or modify *
* it under the terms of the GNU Affero General Public License as * This program is free software: you can redistribute it and/or modify
* published by the Free Software Foundation, either version 3 of the * it under the terms of the GNU Affero General Public License as
* License, or (at your option) any later version. * published by the Free Software Foundation, either version 3 of the
* * License, or (at your option) any later version.
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of * This program is distributed in the hope that it will be useful,
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * but WITHOUT ANY WARRANTY; without even the implied warranty of
* GNU Affero General Public License for more details. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* * GNU Affero General Public License for more details.
* You should have received a copy of the GNU Affero General Public License *
* along with this program. If not, see <http://www.gnu.org/licenses/>. * You should have received a copy of the GNU Affero General Public License
* * along with this program. If not, see <http://www.gnu.org/licenses/>.
* For more information, contact Colosa Inc, 2566 Le Jeune Rd., *
* Coral Gables, FL, 33134, USA, or email info@colosa.com. * For more information, contact Colosa Inc, 2566 Le Jeune Rd.,
* * Coral Gables, FL, 33134, USA, or email info@colosa.com.
*/ *
*/
require_once 'classes/model/om/BaseTranslation.php';
require_once 'classes/model/om/BaseTranslation.php';
/** /**
* Skeleton subclass for representing a row from the 'TRANSLATION' table. * Skeleton subclass for representing a row from the 'TRANSLATION' table.
* *
* *
* *
* You should add additional methods to this class to meet the * You should add additional methods to this class to meet the
* application requirements. This class will only be generated as * application requirements. This class will only be generated as
* long as it does not already exist in the output directory. * long as it does not already exist in the output directory.
* *
* @package workflow.engine.classes.model * @package workflow.engine.classes.model
*/ */
class Translation extends BaseTranslation { class Translation extends BaseTranslation
{
public static $meta;
public static $localeSeparator = '-'; public static $meta;
public static $localeSeparator = '-';
private $envFilePath;
private $envFilePath;
function __construct(){
$this->envFilePath = PATH_DATA . "META-INF" . PATH_SEP . "translations.env"; public function __construct ()
} {
$this->envFilePath = PATH_DATA . "META-INF" . PATH_SEP . "translations.env";
function getAllCriteria(){ }
//SELECT * from TRANSLATION WHERE TRN_LANG = 'en' order by TRN_CATEGORY, TRN_ID public function getAllCriteria ()
$oCriteria = new Criteria('workflow'); {
$oCriteria->addSelectColumn(TranslationPeer::TRN_ID);
$oCriteria->addSelectColumn(TranslationPeer::TRN_CATEGORY); //SELECT * from TRANSLATION WHERE TRN_LANG = 'en' order by TRN_CATEGORY, TRN_ID
$oCriteria->addSelectColumn(TranslationPeer::TRN_LANG); $oCriteria = new Criteria( 'workflow' );
$oCriteria->addSelectColumn(TranslationPeer::TRN_VALUE); $oCriteria->addSelectColumn( TranslationPeer::TRN_ID );
//$c->add(TranslationPeer::TRN_LANG, 'en'); $oCriteria->addSelectColumn( TranslationPeer::TRN_CATEGORY );
$oCriteria->addSelectColumn( TranslationPeer::TRN_LANG );
return $oCriteria; $oCriteria->addSelectColumn( TranslationPeer::TRN_VALUE );
} //$c->add(TranslationPeer::TRN_LANG, 'en');
function getAll($lang='en', $start=null, $limit=null, $search=null, $dateFrom=null, $dateTo=null){
$totalCount = 0; return $oCriteria;
}
$oCriteria = new Criteria('workflow');
$oCriteria->addSelectColumn(TranslationPeer::TRN_ID); public function getAll ($lang = 'en', $start = null, $limit = null, $search = null, $dateFrom = null, $dateTo = null)
$oCriteria->addSelectColumn(TranslationPeer::TRN_CATEGORY); {
$oCriteria->addSelectColumn(TranslationPeer::TRN_LANG); $totalCount = 0;
$oCriteria->addSelectColumn(TranslationPeer::TRN_VALUE);
$oCriteria->addSelectColumn(TranslationPeer::TRN_UPDATE_DATE); $oCriteria = new Criteria( 'workflow' );
$oCriteria->add(TranslationPeer::TRN_LANG, $lang); $oCriteria->addSelectColumn( TranslationPeer::TRN_ID );
$oCriteria->add(TranslationPeer::TRN_CATEGORY, 'LABEL'); $oCriteria->addSelectColumn( TranslationPeer::TRN_CATEGORY );
//$oCriteria->addAscendingOrderByColumn ( 'TRN_CATEGORY' ); $oCriteria->addSelectColumn( TranslationPeer::TRN_LANG );
$oCriteria->addAscendingOrderByColumn ( 'TRN_ID' ); $oCriteria->addSelectColumn( TranslationPeer::TRN_VALUE );
$oCriteria->addSelectColumn( TranslationPeer::TRN_UPDATE_DATE );
$oCriteria->add( TranslationPeer::TRN_LANG, $lang );
if( $search ) { $oCriteria->add( TranslationPeer::TRN_CATEGORY, 'LABEL' );
$oCriteria->add( //$oCriteria->addAscendingOrderByColumn ( 'TRN_CATEGORY' );
$oCriteria->getNewCriterion( $oCriteria->addAscendingOrderByColumn( 'TRN_ID' );
TranslationPeer::TRN_ID,
"%$search%", Criteria::LIKE if ($search) {
)->addOr($oCriteria->getNewCriterion( $oCriteria->add( $oCriteria->getNewCriterion( TranslationPeer::TRN_ID, "%$search%", Criteria::LIKE )->addOr( $oCriteria->getNewCriterion( TranslationPeer::TRN_VALUE, "%$search%", Criteria::LIKE ) ) );
TranslationPeer::TRN_VALUE, }
"%$search%", Criteria::LIKE // for date filter
)) if (($dateFrom) && ($dateTo)) {
); $oCriteria->add( $oCriteria->getNewCriterion( TranslationPeer::TRN_UPDATE_DATE, "$dateFrom", Criteria::GREATER_EQUAL ) //LESS_EQUAL
} ->addAnd( $oCriteria->getNewCriterion( TranslationPeer::TRN_UPDATE_DATE, "$dateTo", Criteria::LESS_EQUAL ) //GREATER_EQUAL
// for date filter ) );
if( ($dateFrom)&&($dateTo) ) { }
$oCriteria->add( // end filter
$oCriteria->getNewCriterion( $c = clone $oCriteria;
TranslationPeer::TRN_UPDATE_DATE, $c->clearSelectColumns();
"$dateFrom", Criteria::GREATER_EQUAL//LESS_EQUAL $c->addSelectColumn( 'COUNT(*)' );
)->addAnd($oCriteria->getNewCriterion( $oDataset = TranslationPeer::doSelectRS( $c );
TranslationPeer::TRN_UPDATE_DATE, $oDataset->next();
"$dateTo", Criteria::LESS_EQUAL//GREATER_EQUAL $aRow = $oDataset->getRow();
))
); if (is_array( $aRow )) {
} $totalCount = $aRow[0];
// end filter }
$c = clone $oCriteria; if ($start) {
$c->clearSelectColumns(); $oCriteria->setOffset( $start );
$c->addSelectColumn('COUNT(*)'); }
$oDataset = TranslationPeer::doSelectRS($c); if ($limit) {
$oDataset->next(); //&& !isset($seach) && !isset($search))
$aRow = $oDataset->getRow(); $oCriteria->setLimit( $limit );
}
if( is_array($aRow) ) $rs = TranslationPeer::doSelectRS( $oCriteria );
$totalCount = $aRow[0]; $rs->setFetchmode( ResultSet::FETCHMODE_ASSOC );
$rows = Array ();
if($start) while ($rs->next()) {
$oCriteria->setOffset($start); $rows[] = $rs->getRow();
if($limit) //&& !isset($seach) && !isset($search)) }
$oCriteria->setLimit($limit);
$result->data = $rows;
$rs = TranslationPeer::doSelectRS($oCriteria); $result->totalCount = $totalCount;
$rs->setFetchmode(ResultSet::FETCHMODE_ASSOC);
$rows = Array(); return $result;
while( $rs->next() ) { }
$rows[] = $rs->getRow();
} /* Load strings from a Database .
$result->data = $rows;
$result->totalCount = $totalCount;
return $result;
}
/* Load strings from a Database .
* @author Fernando Ontiveros <fernando@colosa.com> * @author Fernando Ontiveros <fernando@colosa.com>
* @parameter $languageId (es|en|...). * @parameter $languageId (es|en|...).
*/ */
function generateFileTranslation ($languageId = '') { public function generateFileTranslation ($languageId = '')
$translation = Array(); {
$translationJS = Array(); $translation = Array ();
$translationJS = Array ();
if ($languageId === '')
$languageId = defined('SYS_LANG') ? SYS_LANG : 'en'; if ($languageId === '') {
$languageId = defined( 'SYS_LANG' ) ? SYS_LANG : 'en';
$c = new Criteria(); }
$c->add(TranslationPeer::TRN_LANG, $languageId ); $c = new Criteria();
$c->addAscendingOrderByColumn ( 'TRN_CATEGORY' ); $c->add( TranslationPeer::TRN_LANG, $languageId );
$c->addAscendingOrderByColumn ( 'TRN_ID' ); $c->addAscendingOrderByColumn( 'TRN_CATEGORY' );
$tranlations = TranslationPeer::doSelect($c); $c->addAscendingOrderByColumn( 'TRN_ID' );
$tranlations = TranslationPeer::doSelect( $c );
$cacheFile = PATH_LANGUAGECONT . "translation." . $languageId;
$cacheFileJS = PATH_CORE . 'js' . PATH_SEP . 'labels' . PATH_SEP . $languageId.".js"; $cacheFile = PATH_LANGUAGECONT . "translation." . $languageId;
$cacheFileJS = PATH_CORE . 'js' . PATH_SEP . 'labels' . PATH_SEP . $languageId . ".js";
foreach ( $tranlations as $key => $row ) {
if ( $row->getTrnCategory() === 'LABEL' ) { foreach ($tranlations as $key => $row) {
$translation[ $row->getTrnId() ] = $row->getTrnValue(); if ($row->getTrnCategory() === 'LABEL') {
} $translation[$row->getTrnId()] = $row->getTrnValue();
if ( $row->getTrnCategory() === 'JAVASCRIPT') { }
$translationJS[ $row->getTrnId() ] = $row->getTrnValue(); if ($row->getTrnCategory() === 'JAVASCRIPT') {
} $translationJS[$row->getTrnId()] = $row->getTrnValue();
} }
}
try {
try {
if( ! is_dir(dirname($cacheFile)) )
G::mk_dir(dirname($cacheFile)); if (! is_dir( dirname( $cacheFile ) )) {
G::mk_dir( dirname( $cacheFile ) );
if( ! is_dir(dirname($cacheFileJS)) ) }
G::mk_dir(dirname($cacheFileJS)); if (! is_dir( dirname( $cacheFileJS ) )) {
G::mk_dir( dirname( $cacheFileJS ) );
$f = fopen( $cacheFile , 'w+'); }
fwrite( $f , "<?php\n" ); $f = fopen( $cacheFile, 'w+' );
fwrite( $f , '$translation =' . 'unserialize(\'' . addcslashes( serialize ( $translation ), '\\\'' ) . "');\n"); fwrite( $f, "<?php\n" );
fwrite( $f , "?>" ); fwrite( $f, '$translation =' . 'unserialize(\'' . addcslashes( serialize( $translation ), '\\\'' ) . "');\n" );
fclose( $f ); fwrite( $f, "?>" );
fclose( $f );
$json=new Services_JSON();
$json = new Services_JSON();
$f = fopen( $cacheFileJS , 'w');
fwrite( $f , "var G_STRINGS =". $json->encode( $translationJS ) . ";\n"); $f = fopen( $cacheFileJS, 'w' );
fclose( $f ); fwrite( $f, "var G_STRINGS =" . $json->encode( $translationJS ) . ";\n" );
fclose( $f );
$res['cacheFile'] = $cacheFile;
$res['cacheFileJS'] = $cacheFileJS; $res['cacheFile'] = $cacheFile;
$res['rows'] = count ( $translation ); $res['cacheFileJS'] = $cacheFileJS;
$res['rowsJS'] = count ( $translationJS ); $res['rows'] = count( $translation );
return $res; $res['rowsJS'] = count( $translationJS );
} catch( Exception $e ) { return $res;
echo $e->getMessage(); } catch (Exception $e) {
} echo $e->getMessage();
} }
}
/**
* returns an array with /**
* codError 0 - no error, < 0 error * returns an array with
* rowsAffected 0,1 the number of rows affected * codError 0 - no error, < 0 error
* message message error. * rowsAffected 0,1 the number of rows affected
*/ * message message error.
function addTranslation ( $category, $id, $languageId, $value ) { */
//if exists the row in the database propel will update it, otherwise will insert. public function addTranslation ($category, $id, $languageId, $value)
$tr = TranslationPeer::retrieveByPK( $category, $id, $languageId ); {
if ( ! ( is_object ( $tr ) && get_class ($tr) == 'Translation' ) ) { //if exists the row in the database propel will update it, otherwise will insert.
$tr = new Translation(); $tr = TranslationPeer::retrieveByPK( $category, $id, $languageId );
} if (! (is_object( $tr ) && get_class( $tr ) == 'Translation')) {
$tr->setTrnCategory( $category ); $tr = new Translation();
$tr->setTrnId( $id ); }
$tr->setTrnLang( $languageId); $tr->setTrnCategory( $category );
$tr->setTrnValue( $value ); $tr->setTrnId( $id );
$tr->setTrnUpdateDate( date('Y-m-d') ); $tr->setTrnLang( $languageId );
$tr->setTrnValue( $value );
if ($tr->validate() ) { $tr->setTrnUpdateDate( date( 'Y-m-d' ) );
// we save it, since we get no validation errors, or do whatever else you like.
$res = $tr->save(); if ($tr->validate()) {
} // we save it, since we get no validation errors, or do whatever else you like.
else { $res = $tr->save();
// Something went wrong. We can now get the validationFailures and handle them. } else {
$msg = ''; // Something went wrong. We can now get the validationFailures and handle them.
$validationFailuresArray = $tr->getValidationFailures(); $msg = '';
foreach($validationFailuresArray as $objValidationFailure) { $validationFailuresArray = $tr->getValidationFailures();
$msg .= $objValidationFailure->getMessage() . "\n"; foreach ($validationFailuresArray as $objValidationFailure) {
} $msg .= $objValidationFailure->getMessage() . "\n";
return array ( 'codError' => -100, 'rowsAffected' => 0, 'message' => $msg ); }
} return array ('codError' => - 100,'rowsAffected' => 0,'message' => $msg);
return array ( 'codError' => 0, 'rowsAffected' => $res, 'message' => ''); }
//to do: uniform coderror structures for all classes return array ('codError' => 0,'rowsAffected' => $res,'message' => '');
} //to do: uniform coderror structures for all classes
}
function remove($sCategory, $sId, $sLang) {
$oTranslation = TranslationPeer::retrieveByPK($sCategory, $sId, $sLang); public function remove ($sCategory, $sId, $sLang)
if ( ( is_object ( $oTranslation ) && get_class ($oTranslation) == 'Translation' ) ) { {
$oTranslation->delete(); $oTranslation = TranslationPeer::retrieveByPK( $sCategory, $sId, $sLang );
} if ((is_object( $oTranslation ) && get_class( $oTranslation ) == 'Translation')) {
} $oTranslation->delete();
}
function addTranslationEnvironment($locale, $headers, $numRecords) }
{
$filePath = $this->envFilePath; public function addTranslationEnvironment ($locale, $headers, $numRecords)
$environments = Array(); {
$filePath = $this->envFilePath;
if( file_exists($filePath) ) { $environments = Array ();
$environments = unserialize(file_get_contents($filePath));
} if (file_exists( $filePath )) {
$environments = unserialize( file_get_contents( $filePath ) );
$environment['LOCALE'] = $locale; }
$environment['HEADERS'] = $headers;
$environment['DATE'] = date('Y-m-d H:i:s'); $environment['LOCALE'] = $locale;
$environment['NUM_RECORDS'] = $numRecords; $environment['HEADERS'] = $headers;
$environment['LANGUAGE'] = $headers['X-Poedit-Language']; $environment['DATE'] = date( 'Y-m-d H:i:s' );
$environment['COUNTRY'] = $headers['X-Poedit-Country']; $environment['NUM_RECORDS'] = $numRecords;
$environment['LANGUAGE'] = $headers['X-Poedit-Language'];
if( strpos($locale, self::$localeSeparator) !== false ) { $environment['COUNTRY'] = $headers['X-Poedit-Country'];
list($environment['LAN_ID'], $environment['IC_UID']) = explode(self::$localeSeparator, strtoupper($locale));
$environments[$environment['LAN_ID']][$environment['IC_UID']] = $environment; if (strpos( $locale, self::$localeSeparator ) !== false) {
} else { list ($environment['LAN_ID'], $environment['IC_UID']) = explode( self::$localeSeparator, strtoupper( $locale ) );
$environment['LAN_ID'] = strtoupper($locale); $environments[$environment['LAN_ID']][$environment['IC_UID']] = $environment;
$environment['IC_UID'] = ''; } else {
$environments[$locale]['__INTERNATIONAL__'] = $environment; $environment['LAN_ID'] = strtoupper( $locale );
} $environment['IC_UID'] = '';
$environments[$locale]['__INTERNATIONAL__'] = $environment;
}
file_put_contents($filePath, serialize($environments));
} file_put_contents( $filePath, serialize( $environments ) );
}
function removeTranslationEnvironment($locale)
{ public function removeTranslationEnvironment ($locale)
$filePath = $this->envFilePath; {
if (strpos($locale, self::$localeSeparator) !== false) { $filePath = $this->envFilePath;
list($LAN_ID, $IC_UID) = explode('-', strtoupper($locale)); if (strpos( $locale, self::$localeSeparator ) !== false) {
} else { list ($LAN_ID, $IC_UID) = explode( '-', strtoupper( $locale ) );
$LAN_ID = $locale; } else {
$IC_UID = '__INTERNATIONAL__'; $LAN_ID = $locale;
$IC_UID = '__INTERNATIONAL__';
}
if (file_exists( $filePath )) {
$environments = unserialize( file_get_contents( $filePath ) );
if (! isset( $environments[$LAN_ID][$IC_UID] )) {
return null;
}
unset( $environments[$LAN_ID][$IC_UID] );
file_put_contents( $filePath, serialize( $environments ) );
if (file_exists( PATH_CORE . "META-INF" . PATH_SEP . "translation." . $locale )) {
G::rm_dir( PATH_DATA . "META-INF" . PATH_SEP . "translation." . $locale );
}
if (file_exists( PATH_CORE . PATH_SEP . 'content' . PATH_SEP . 'translations' . PATH_SEP . 'processmaker' . $locale . '.po' )) {
G::rm_dir( PATH_CORE . PATH_SEP . 'content' . PATH_SEP . 'translations' . PATH_SEP . 'processmaker' . $locale . '.po' );
}
}
}
public function getTranslationEnvironments ()
{
$filePath = $this->envFilePath;
$envs = Array ();
if (! file_exists( $filePath )) {
//the transaltions table file doesn't exist, then build it
if (! is_dir( dirname( $this->envFilePath ) )) {
G::mk_dir( dirname( $this->envFilePath ) );
}
$translationsPath = PATH_CORE . "content" . PATH_SEP . 'translations' . PATH_SEP;
$basePOFile = $translationsPath . 'english' . PATH_SEP . 'processmaker.en.po';
$params = self::getInfoFromPOFile( $basePOFile );
$this->addTranslationEnvironment( $params['LOCALE'], $params['HEADERS'], $params['COUNT'] );
//getting more lanuguage translations
$files = glob( $translationsPath . "*.po" );
foreach ($files as $file) {
$params = self::getInfoFromPOFile( $file );
$this->addTranslationEnvironment( $params['LOCALE'], $params['HEADERS'], $params['COUNT'] );
}
}
$envs = unserialize( file_get_contents( $filePath ) );
$environments = Array ();
foreach ($envs as $LAN_ID => $rec1) {
foreach ($rec1 as $IC_UID => $rec2) {
$environments[] = $rec2;
}
}
return $environments;
/*
G::LoadSystem('dbMaintenance');
$o = new DataBaseMaintenance('localhost', 'root', 'atopml2005');
$o->connect('wf_os');
$r = $o->query('select * from ISO_COUNTRY');
foreach ($r as $i=>$v) {
$r[$i]['IC_NAME'] = utf8_encode($r[$i]['IC_NAME']);
unset($r[$i]['IC_SORT_ORDER']);
}
$r1 = $o->query('select * from LANGUAGE');
$r2 = Array();
foreach ($r1 as $i=>$v) {
$r2[$i]['LAN_NAME'] = utf8_encode($r1[$i]['LAN_NAME']);
$r2[$i]['LAN_ID'] = utf8_encode($r1[$i]['LAN_ID']);
} }
$s = Array('ISO_COUNTRY'=>$r, 'LANGUAGE'=>$r2);
if (file_exists($filePath)) { file_put_contents($translationsPath . 'pmos-translations.meta', serialize($s));
$environments = unserialize(file_get_contents($filePath)); */
if (!isset($environments[$LAN_ID][$IC_UID])) { }
return NULL;
} public function getInfoFromPOFile ($file)
{
unset($environments[$LAN_ID][$IC_UID]); G::loadClass( 'i18n_po' );
file_put_contents($filePath, serialize($environments)); $POFile = new i18n_PO( $file );
$POFile->readInit();
if (file_exists(PATH_CORE . "META-INF" . PATH_SEP . "translation.".$locale)) { $POHeaders = $POFile->getHeaders();
G::rm_dir(PATH_DATA . "META-INF" . PATH_SEP . "translation.".$locale);
} if ($POHeaders['X-Poedit-Country'] != '.') {
if (file_exists(PATH_CORE . PATH_SEP . 'content' . PATH_SEP . 'translations' . PATH_SEP . 'processmaker' . $locale . '.po')) { $country = self::getTranslationMetaByCountryName( $POHeaders['X-Poedit-Country'] );
G::rm_dir(PATH_CORE . PATH_SEP . 'content' . PATH_SEP . 'translations' . PATH_SEP . 'processmaker' . $locale . '.po'); } else {
} $country = '.';
} }
} $language = self::getTranslationMetaByLanguageName( $POHeaders['X-Poedit-Language'] );
function getTranslationEnvironments(){ if ($language !== false) {
$filePath = $this->envFilePath; if ($country !== false) {
$envs = Array(); if ($country != '.') {
$LOCALE = $language['LAN_ID'] . '-' . $country['IC_UID'];
if( ! file_exists($filePath) ) { } else if ($country == '.') {
//the transaltions table file doesn't exist, then build it //this a trsnlation file with a language international, no country name was set
$LOCALE = $language['LAN_ID'];
if( ! is_dir(dirname($this->envFilePath)) ) } else
G::mk_dir(dirname($this->envFilePath)); throw new Exception( 'PO File Error: "' . $file . '" has a invalid country definition!' );
} else
$translationsPath = PATH_CORE . "content" . PATH_SEP . 'translations' . PATH_SEP; throw new Exception( 'PO File Error: "' . $file . '" has a invalid country definition!' );
$basePOFile = $translationsPath . 'english' . PATH_SEP . 'processmaker.en.po'; } else
throw new Exception( 'PO File Error: "' . $file . '" has a invalid language definition!' );
$params = self::getInfoFromPOFile($basePOFile);
$this->addTranslationEnvironment($params['LOCALE'], $params['HEADERS'], $params['COUNT']); $countItems = 0;
try {
//getting more lanuguage translations while ($rowTranslation = $POFile->getTranslation()) {
$files = glob($translationsPath . "*.po"); $countItems ++;
foreach( $files as $file ){ }
$params = self::getInfoFromPOFile($file); } catch (Exception $e) {
$this->addTranslationEnvironment($params['LOCALE'], $params['HEADERS'], $params['COUNT']); $countItems = '-';
} }
} return Array ('LOCALE' => $LOCALE,'HEADERS' => $POHeaders,'COUNT' => $countItems);
$envs = unserialize(file_get_contents($filePath)); }
$environments = Array(); public function getTranslationEnvironment ($locale)
foreach($envs as $LAN_ID => $rec1 ){ {
foreach($rec1 as $IC_UID => $rec2 ){ $filePath = $this->envFilePath;
$environments[] = $rec2; $environments = Array ();
}
} if (! file_exists( $filePath )) {
throw new Exception( "The file $filePath doesn't exist" );
return $environments; }
/*G::LoadSystem('dbMaintenance'); $environments = unserialize( file_get_contents( $filePath ) );
$o = new DataBaseMaintenance('localhost', 'root', 'atopml2005'); if (strpos( $locale, self::$localeSeparator ) !== false) {
$o->connect('wf_os'); list ($LAN_ID, $IC_UID) = explode( self::localeSeparator, strtoupper( $locale ) );
$r = $o->query('select * from ISO_COUNTRY'); } else {
foreach($r as $i=>$v){ $LAN_ID = $locale;
$r[$i]['IC_NAME'] = utf8_encode($r[$i]['IC_NAME']); $IC_UID = '__INTERNATIONAL__';
unset($r[$i]['IC_SORT_ORDER']); }
}
$r1 = $o->query('select * from LANGUAGE'); if (isset( $environments[$LAN_ID][$IC_UID] )) {
$r2 = Array(); return $environments[$LAN_ID][$IC_UID];
foreach($r1 as $i=>$v){ } else {
$r2[$i]['LAN_NAME'] = utf8_encode($r1[$i]['LAN_NAME']); return false;
$r2[$i]['LAN_ID'] = utf8_encode($r1[$i]['LAN_ID']); }
} }
$s = Array('ISO_COUNTRY'=>$r, 'LANGUAGE'=>$r2);
file_put_contents($translationsPath . 'pmos-translations.meta', serialize($s)); public function saveTranslationEnvironment ($locale, $data)
*/ {
} $filePath = $this->envFilePath;
$environments = Array ();
function getInfoFromPOFile($file){
G::loadClass('i18n_po'); if (! file_exists( $filePath )) {
$POFile = new i18n_PO($file); throw new Exception( "The file $filePath doesn't exist" );
$POFile->readInit(); }
$POHeaders = $POFile->getHeaders();
$environments = unserialize( file_get_contents( $filePath ) );
if( $POHeaders['X-Poedit-Country'] != '.' ) { if (strpos( $locale, self::$localeSeparator ) !== false) {
$country = self::getTranslationMetaByCountryName($POHeaders['X-Poedit-Country']); list ($LAN_ID, $IC_UID) = explode( self::localeSeparator, strtoupper( $locale ) );
} else { } else {
$country = '.'; $LAN_ID = $locale;
} $IC_UID = '__INTERNATIONAL__';
$language = self::getTranslationMetaByLanguageName($POHeaders['X-Poedit-Language']); }
if( $language !== false ) { $environments[$LAN_ID][$IC_UID] = $data;
if( $country !== false ) { file_put_contents( $filePath, serialize( $environments ) );
if( $country != '.') { }
$LOCALE = $language['LAN_ID'] . '-' . $country['IC_UID'];
} else if( $country == '.' ) { public function getTranslationMeta ()
//this a trsnlation file with a language international, no country name was set {
$LOCALE = $language['LAN_ID']; $translationsPath = PATH_CORE . "content" . PATH_SEP . 'translations' . PATH_SEP;
} else $translationsTable = unserialize( file_get_contents( $translationsPath . 'pmos-translations.meta' ) );
throw new Exception('PO File Error: "'.$file.'" has a invalid country definition!'); return $translationsTable;
} else }
throw new Exception('PO File Error: "'.$file.'" has a invalid country definition!');
} else public function getTranslationMetaByCountryName ($IC_NAME)
throw new Exception('PO File Error: "'.$file.'" has a invalid language definition!'); {
$translationsTable = self::getTranslationMeta();
$countItems = 0;
try { foreach ($translationsTable['ISO_COUNTRY'] as $row) {
while( $rowTranslation = $POFile->getTranslation() ) { if ($row['IC_NAME'] == $IC_NAME) {
$countItems++; return $row;
} }
} catch(Exception $e) { }
$countItems = '-'; return false;
} }
return Array('LOCALE'=>$LOCALE, 'HEADERS'=>$POHeaders , 'COUNT'=>$countItems); public function getTranslationMetaByLanguageName ($LAN_NAME)
} {
$translationsTable = self::getTranslationMeta();
function getTranslationEnvironment($locale){
$filePath = $this->envFilePath; foreach ($translationsTable['LANGUAGE'] as $row) {
$environments = Array(); if ($row['LAN_NAME'] == $LAN_NAME) {
return $row;
if( ! file_exists($filePath) ) { }
throw new Exception("The file $filePath doesn't exist"); }
} return false;
}
$environments = unserialize(file_get_contents($filePath)); }
if( strpos($locale, self::$localeSeparator) !== false ) { // Translation
list($LAN_ID, $IC_UID) = explode(self::localeSeparator, strtoupper($locale));
} else {
$LAN_ID = $locale;
$IC_UID = '__INTERNATIONAL__';
}
if( isset($environments[$LAN_ID][$IC_UID]) )
return $environments[$LAN_ID][$IC_UID];
else
return false;
}
function saveTranslationEnvironment($locale, $data){
$filePath = $this->envFilePath;
$environments = Array();
if( ! file_exists($filePath) ) {
throw new Exception("The file $filePath doesn't exist");
}
$environments = unserialize(file_get_contents($filePath));
if( strpos($locale, self::$localeSeparator) !== false ) {
list($LAN_ID, $IC_UID) = explode(self::localeSeparator, strtoupper($locale));
} else {
$LAN_ID = $locale;
$IC_UID = '__INTERNATIONAL__';
}
$environments[$LAN_ID][$IC_UID] = $data;
file_put_contents($filePath, serialize($environments));
}
function getTranslationMeta(){
$translationsPath = PATH_CORE . "content" . PATH_SEP . 'translations' . PATH_SEP;
$translationsTable = unserialize(file_get_contents($translationsPath . 'pmos-translations.meta'));
return $translationsTable;
}
function getTranslationMetaByCountryName($IC_NAME){
$translationsTable = self::getTranslationMeta();
foreach ($translationsTable['ISO_COUNTRY'] as $row) {
if( $row['IC_NAME'] == $IC_NAME )
return $row;
}
return false;
}
function getTranslationMetaByLanguageName($LAN_NAME){
$translationsTable = self::getTranslationMeta();
foreach ($translationsTable['LANGUAGE'] as $row) {
if( $row['LAN_NAME'] == $LAN_NAME )
return $row;
}
return false;
}
} // Translation