Вход Регистрация
Файл: concrete5.7.5.6/concrete/src/Permission/Duration.php
Строк: 98
<?php
namespace ConcreteCorePermission;

use 
ConcreteCoreFoundationRepetitionAbstractRepetition;
use 
Database;
use 
Loader;

class 
Duration extends AbstractRepetition
{

    protected 
$pdID;

    
/**
     * @param ConcreteCorePermissionAccessListItemListItem[] $list
     * @return ConcreteCorePermissionAccessListItemListItem[]
     */
    
public static function filterByActive($list)
    {
        
$filteredList = array();
        foreach (
$list as $l) {
            
$pd $l->getPermissionDurationObject();
            if (
is_object($pd)) {
                if (
$pd->isActive()) {
                    
$filteredList[] = $l;
                }
            } else {
                
$filteredList[] = $l;
            }
        }

        return 
$filteredList;
    }

    
/**
     * @return Duration|null
     */
    
public static function createFromRequest()
    {
        
$dt Loader::helper('form/date_time');
        
$dateStart $dt->translate('pdStartDate');
        
$dateEnd $dt->translate('pdEndDate');

        if (
$dateStart || $dateEnd) {
            
// create a Duration object
            
$pd = new Duration();

            if (
$_REQUEST['pdStartDateAllDayActivate']) {
                
$pd->setStartDateAllDay(1);
                
$dateStart date('Y-m-d 00:00:00'strtotime($dateStart));
            } else {
                
$pd->setStartDateAllDay(0);
            }
            if (
$_REQUEST['pdEndDateAllDayActivate']) {
                
$pd->setEndDateAllDay(1);
                
$dateEnd date('Y-m-d 23:59:59'strtotime($dateEnd));
            } else {
                
$pd->setEndDateAllDay(0);
            }

            
$pd->setStartDate($dateStart);
            
$pd->setEndDate($dateEnd);
            if (
$_POST['pdRepeatPeriod'] && $_POST['pdRepeat']) {

                if (
$_POST['pdRepeatPeriod'] == 'daily') {
                    
$pd->setRepeatPeriod(Duration::REPEAT_DAILY);
                    
$pd->setRepeatEveryNum($_POST['pdRepeatPeriodDaysEvery']);
                } elseif (
$_POST['pdRepeatPeriod'] == 'weekly') {
                    
$pd->setRepeatPeriod(Duration::REPEAT_WEEKLY);
                    
$pd->setRepeatEveryNum($_POST['pdRepeatPeriodWeeksEvery']);
                    
$pd->setRepeatPeriodWeekDays($_POST['pdRepeatPeriodWeeksDays']);
                } elseif (
$_POST['pdRepeatPeriod'] == 'monthly') {
                    
$pd->setRepeatPeriod(Duration::REPEAT_MONTHLY);

                    
$repeat_by $_POST['pdRepeatPeriodMonthsRepeatBy'];
                    
$repeat self::MONTHLY_REPEAT_WEEKLY;
                    switch (
$repeat_by) {
                        case 
'week':
                            
$repeat self::MONTHLY_REPEAT_WEEKLY;
                            break;
                        case 
'month':
                            
$repeat self::MONTHLY_REPEAT_MONTHLY;
                            break;
                        case 
'lastweekday':
                            
$repeat self::MONTHLY_REPEAT_LAST_WEEKDAY;
                            
$dotw $_POST['pdRepeatPeriodMonthsRepeatLastDay'] ?: 0;
                            
$pd->setRepeatMonthLastWeekday($dotw);
                            break;
                    }

                    
$pd->setRepeatMonthBy($repeat);
                    
$pd->setRepeatEveryNum($_POST['pdRepeatPeriodMonthsEvery']);
                }
                
$pd->setRepeatPeriodEnd($dt->translate('pdEndRepeatDateSpecific'));
            } else {
                
$pd->setRepeatPeriod(Duration::REPEAT_NONE);
            }
            
$pd->save();

            return 
$pd;
        } else {
            unset(
$pd);
        }
        return 
null;
    }

    
/**
     * @param $pdID
     * @return ConcreteCorePermissionDuration
     */
    
public static function getByID($pdID)
    {
        
$db Database::connection();
        
$pdObject $db->fetchColumn('SELECT pdObject FROM PermissionDurationObjects WHERE pdID = ?', array($pdID));
        if (
$pdObject) {
            
$pd unserialize($pdObject);
            return 
$pd;
        }
        return 
null;
    }

    public function 
save()
    {
        
$db Database::connection();
        if (!
$this->pdID) {
            
$pd = new Duration();
            
$pdObject serialize($pd);
            
$db->executeQuery('INSERT INTO PermissionDurationObjects (pdObject) VALUES (?)', array($pdObject));
            
$this->pdID $db->lastInsertId();
        }
        
$pdObject serialize($this);
        
$db->executeQuery(
            
'UPDATE PermissionDurationObjects SET pdObject = ? WHERE pdID = ?',
            array(
$pdObject$this->pdID)
        );
    }

    public function 
getID()
    {
        return 
$this->getPermissionDurationID();
    }

    public function 
getPermissionDurationID()
    {
        return 
$this->pdID;
    }

}
Онлайн: 0
Реклама