170 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			170 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| 
 | |
| /**
 | |
|  * Class ProgramHelper
 | |
|  */
 | |
| class ProgramHelper {
 | |
| 
 | |
| 	/**
 | |
| 	 * @param bool $doDelimiter
 | |
| 	 * @return Program[]
 | |
| 	 */
 | |
| 	public static function GetHighlightedProgList($doDelimiter)
 | |
| 	{
 | |
| 		$dropDownModels = array();
 | |
| 
 | |
| 		$criteria = new CDbCriteria;
 | |
| 		$criteria->order = "add_date DESC";
 | |
| 		$criteria->condition = "visible=1 AND enabled=1";
 | |
| 		$criteria->limit = 3;
 | |
| 		foreach (Program::model()->findAll($criteria) as $row) {
 | |
| 			$dropDownModels[] = $row;
 | |
| 		}
 | |
| 
 | |
| 		if ($doDelimiter)
 | |
| 		{
 | |
| 			$dropDownModels[] = null;
 | |
| 		}
 | |
| 
 | |
| 		$criteria = new CDbCriteria;
 | |
| 		$criteria->order = "add_date DESC";
 | |
| 		$criteria->limit = 8;
 | |
| 		$criteria->condition = "Sterne >= 4 AND visible=1 AND enabled=1";
 | |
| 		foreach (Program::model()->findAll($criteria) as $row) {
 | |
| 			$contains = false;
 | |
| 			foreach($dropDownModels as $modelElem)
 | |
| 				if ($modelElem != null && $modelElem->ID == $row->ID)
 | |
| 					$contains = true;
 | |
| 			if (! $contains)
 | |
| 				$dropDownModels[] = $row;
 | |
| 		}
 | |
| 
 | |
| 		return $dropDownModels;
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * @param DateTime $date
 | |
| 	 * @return Program
 | |
| 	 */
 | |
| 	public static function GetRecentProg($date)
 | |
| 	{
 | |
| 		$criteria = new CDbCriteria;
 | |
| 		$criteria->order = "add_date DESC";
 | |
| 		$criteria->condition = "DATEDIFF('" . $date->format('Y-m-d') . "', add_date) <= 14 AND visible=1 AND enabled=1";
 | |
| 		$criteria->limit = 1;
 | |
| 
 | |
| 		return Program::model()->find($criteria);
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * @param string $date
 | |
| 	 * @return Program
 | |
| 	 */
 | |
| 	public static function GetDailyProg($date = 'now')
 | |
| 	{
 | |
| 		if ($date == 'now') {
 | |
| 			$date = new DateTime();
 | |
| 		}
 | |
| 
 | |
| 		$recent = self::GetRecentProg($date);
 | |
| 
 | |
| 		if ($recent != null)
 | |
| 			return $recent;
 | |
| 
 | |
| 		$toparray = self::GetHighlightedProgList(false);
 | |
| 
 | |
| 		$msrand = new SeededRandom();
 | |
| 		$msrand->seedWithDailySeed($date);
 | |
| 
 | |
| 		$result = $msrand->getRandomElement($toparray);
 | |
| 
 | |
| 		return $result;
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * @return array
 | |
| 	 */
 | |
| 	public static function GetProgDropDownList()
 | |
| 	{
 | |
| 		$progDropDown = array();
 | |
| 
 | |
| 		$dropDownModels = self::GetHighlightedProgList(true);
 | |
| 
 | |
| 		foreach ($dropDownModels as $row) {
 | |
| 			if (is_null($row))
 | |
| 				$progDropDown[] = MsHtml::menuDivider();
 | |
| 			else
 | |
| 				$progDropDown[] = array('label' => $row->Name, 'url' => $row->getLink());
 | |
| 		}
 | |
| 		return $progDropDown;
 | |
| 	}
 | |
| 
 | |
| 	public static function convertDescriptionListToTabs($descriptions, $name) {
 | |
| 		$tabs = array();
 | |
| 
 | |
| 		foreach($descriptions as $desc)
 | |
| 		{
 | |
| 			if ($desc['type'] === 0)
 | |
| 			{
 | |
| 				$tabs[] =
 | |
| 					[
 | |
| 						'label' => $desc['name'],
 | |
| 						'items' => self::convertDescriptionListToTabs($desc['items'], $name),
 | |
| 					];
 | |
| 			}
 | |
| 			else if (strcasecmp($desc['name'], 'index') == 0) // == 0 : true
 | |
| 			{
 | |
| 				$tabs[] =
 | |
| 					[
 | |
| 						'label' => $name,
 | |
| 						'content' => self::getDescriptionMarkdownTab($desc['path']),
 | |
| 						'active' => true,
 | |
| 					];
 | |
| 			}
 | |
| 			else
 | |
| 			{
 | |
| 				$tabs[] =
 | |
| 					[
 | |
| 						'label' => $desc['name'],
 | |
| 						'content' => self::getDescriptionMarkdownTab($desc['path']),
 | |
| 					];
 | |
| 			}
 | |
| 		}
 | |
| 
 | |
| 		return $tabs;
 | |
| 	}
 | |
| 
 | |
| 	public static function getDescriptionMarkdownTab($path)
 | |
| 	{
 | |
| 		$content = file_get_contents($path);
 | |
| 
 | |
| 		$result = '<div class="markdownOwner"><div><p>';
 | |
| 		$result .=  ParsedownHelper::parse($content);
 | |
| 		$result .= '</p></div></div>';
 | |
| 
 | |
| 		return $result;
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * @param $filename
 | |
| 	 * @param $number
 | |
| 	 * @return string
 | |
| 	 */
 | |
| 	public static function getIndexedFilename($filename, &$number)
 | |
| 	{
 | |
| 		$bn = basename($filename, '.markdown');
 | |
| 
 | |
| 		if ($bn[0] >= '0' && $bn[0] <= '9' && $bn[1] >= '0' && $bn[1] <= '9' && $bn[2] == '_')
 | |
| 		{
 | |
| 			$name = substr($bn, 3);
 | |
| 			$number = substr($bn, 0, 2) + 0;
 | |
| 		}
 | |
| 		else
 | |
| 		{
 | |
| 			$name = $bn;
 | |
| 			$number = -1;
 | |
| 		}
 | |
| 
 | |
| 		return $name;
 | |
| 	}
 | |
| } 
 |