/** * create Article instance from data supplied in $articleData * * @param array $articleData * @return Article */ private static function createInstance(array $articleData) { $article = new self(); // set identification $article->alias = $articleData['Alias']; $article->id = $articleData['articlesID']; // set category $article->category = ArticleCategory::getInstance($articleData['articlecategoriesID']); /* * set admin information (cast type explicitly to ensure lookup by adminID) * exceptions with invalid user ids are caught and ignored */ if ($articleData['createdBy']) { try { $article->createdBy = User::getInstance((int) $articleData['createdBy']); } catch (\InvalidArgumentException $e) { } catch (UserException $e) { } } if ($articleData['updatedBy']) { try { $article->updatedBy = User::getInstance((int) $articleData['updatedBy']); } catch (\InvalidArgumentException $e) { } catch (UserException $e) { } } if ($articleData['publishedBy']) { try { $article->publishedBy = User::getInstance((int) $articleData['publishedBy']); } catch (\InvalidArgumentException $e) { } catch (UserException $e) { } } // set date information if (!empty($articleData['Display_from'])) { $article->displayFrom = new \DateTime($articleData['Display_from']); } if (!empty($articleData['Display_until'])) { $article->displayUntil = new \DateTime($articleData['Display_until']); } if (!empty($articleData['Article_Date'])) { $article->articleDate = new \DateTime($articleData['Article_Date']); } if (!empty($articleData['firstCreated'])) { $article->firstCreated = new \DateTime($articleData['firstCreated']); } if (!empty($articleData['lastUpdated'])) { $article->lastUpdated = new \DateTime($articleData['lastUpdated']); } // flags and sort $article->published = $articleData['published']; $article->customFlags = $articleData['customFlags']; $article->customSort = $articleData['customSort']; // set various text fields $article->setHeadline($articleData['Headline']); $article->setData($articleData); // backup values to check whether record was changed $article->previouslySavedValues = new \stdClass(); $article->previouslySavedValues->headline = $article->headline; $article->previouslySavedValues->category = $article->category; $article->previouslySavedValues->data = $article->data; $article->previouslySavedValues->displayFrom = $article->displayFrom; $article->previouslySavedValues->displayUntil = $article->displayUntil; $article->previouslySavedValues->articleDate = $article->articleDate; $article->previouslySavedValues->published = $article->published; $article->previouslySavedValues->customFlags = $article->customFlags; $article->previouslySavedValues->customSort = $article->customSort; return $article; }
/** * get user instance which last updated database entry of metafile * the updater can be changed * * @return NULL|\vxPHP\User\User */ public function getUpdatedBy() { if (is_null($this->updatedBy)) { // no user was stored with instance if (empty($this->data['updatedBy'])) { return NULL; } else { $this->createdBy = User::getInstance($this->data['updatedBy']); } } return $this->updatedBy; }
/** * get list of users belonging to given admingroup * * @param string $admingroup_alias * @param callback $callBackSort * @throws UserException * * @return array [User] */ public static function getUsersBelongingToGroup($admingroup_alias, $callBackSort = NULL) { $users = array(); $rows = Application::getInstance()->getDb()->doPreparedQuery(' SELECT adminID FROM admin a INNER JOIN admingroups ag ON a.admingroupsID = ag.admingroupsID WHERE UPPER(ag.alias) = ? ', array(strtoupper($admingroup_alias))); foreach ($rows as $r) { $users[] = User::getInstance($r['adminID']); } if (is_null($callBackSort)) { return $users; } else { if (is_callable($callBackSort)) { usort($users, $callBackSort); return $users; } else { if (is_callable("UserAbstract::{$callBackSort}")) { usort($users, "UserAbstract::{$callBackSort}"); return $users; } else { throw new UserException("'{$callBackSort}' is not callable.", UserException::SORT_CALLBACK_NOT_CALLABLE); } } } }