first commit
This commit is contained in:
@@ -0,0 +1,194 @@
|
||||
<?php
|
||||
|
||||
|
||||
class Brizy_Editor_Accounts_ServiceAccountManager {
|
||||
|
||||
/**
|
||||
* @var Brizy_Editor_Project
|
||||
*/
|
||||
private $project;
|
||||
|
||||
/**
|
||||
* @var Brizy_Editor_Accounts_Account[]
|
||||
*/
|
||||
private $accounts;
|
||||
|
||||
/**
|
||||
* Brizy_Editor_Forms_Manager constructor.
|
||||
*
|
||||
* @param Brizy_Editor_Project $project
|
||||
*/
|
||||
public function __construct( Brizy_Editor_Project $project ) {
|
||||
$this->accounts = array();
|
||||
$this->project = $project;
|
||||
try {
|
||||
$this->loadAccounts( $project );
|
||||
} catch ( Exception $exception ) {
|
||||
$this->accounts = array();
|
||||
}
|
||||
}
|
||||
|
||||
public function getAllAccounts() {
|
||||
return $this->accounts;
|
||||
}
|
||||
|
||||
public function getFilteredAccounts( $filter ) {
|
||||
$accounts = array();
|
||||
foreach ( $this->getAllAccounts() as $account ) {
|
||||
|
||||
if ( isset( $filter['service'] ) && $filter['service'] != $account->getService() ) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if ( isset( $filter['group'] ) && $filter['group'] != $account->getGroup() ) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$accounts[] = $account;
|
||||
}
|
||||
|
||||
return $accounts;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $group
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function getAccountsByGroup( $group ) {
|
||||
return $this->getFilteredAccounts( array( 'group' => $group ) );
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $service
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function getAccountsByService( $service ) {
|
||||
return $this->getFilteredAccounts( array( 'service' => $service ) );
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $accountId
|
||||
*
|
||||
* @return Brizy_Editor_Accounts_Account|mixed
|
||||
*/
|
||||
public function getAccount( $accountId ) {
|
||||
foreach ( $this->accounts as $key => $account ) {
|
||||
if ( $account->getId() == $accountId ) {
|
||||
return $account;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Brizy_Editor_Accounts_AbstractAccount $anAccount
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function hasAccount( Brizy_Editor_Accounts_AbstractAccount $anAccount ) {
|
||||
foreach ( $this->getAllAccounts() as $account ) {
|
||||
if ( $anAccount->isEqual( $account ) ) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Brizy_Editor_Accounts_AbstractAccount $account
|
||||
*/
|
||||
public function addAccount( Brizy_Editor_Accounts_AbstractAccount $account ) {
|
||||
|
||||
if ( $this->hasAccount( $account ) ) {
|
||||
return;
|
||||
}
|
||||
|
||||
$this->accounts[] = $account;
|
||||
$this->updateStorage();
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Brizy_Editor_Accounts_AbstractAccount $anAccount
|
||||
*/
|
||||
public function updateAccount( Brizy_Editor_Accounts_AbstractAccount $anAccount ) {
|
||||
|
||||
foreach ( $this->getAllAccounts() as $index => $account ) {
|
||||
if ( $account->getId() == $anAccount->getId() ) {
|
||||
$this->accounts[ $index ] = $anAccount;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
$this->updateStorage();
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Brizy_Editor_Accounts_AbstractAccount $account
|
||||
*/
|
||||
public function deleteAccount( Brizy_Editor_Accounts_AbstractAccount $account ) {
|
||||
|
||||
$this->deleteAccountById( $account->getId() );
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $accountId
|
||||
*/
|
||||
public function deleteAccountById( $accountId ) {
|
||||
|
||||
foreach ( $this->getAllAccounts() as $key => $account ) {
|
||||
if ( $account->getId() == $accountId ) {
|
||||
unset( $this->accounts[ $key ] );
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
$this->accounts = array_values( $this->accounts );
|
||||
|
||||
$this->updateStorage();
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private function updateStorage() {
|
||||
|
||||
$data = array();
|
||||
|
||||
foreach ( $this->getAllAccounts() as $account ) {
|
||||
$data[] = $account->convertToOptionValue();
|
||||
}
|
||||
|
||||
$this->project->setAccounts( $data );
|
||||
$this->project->saveStorage();
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Brizy_Editor_Project $project
|
||||
*
|
||||
* @throws Brizy_Editor_Exceptions_NotFound
|
||||
*/
|
||||
private function loadAccounts( Brizy_Editor_Project $project ) {
|
||||
|
||||
$meta_value = $project->getMetaValue( 'accounts' );
|
||||
|
||||
if ( is_array( $meta_value ) ) {
|
||||
foreach ( $meta_value as $account ) {
|
||||
|
||||
try {
|
||||
$anAccount = Brizy_Editor_Accounts_AbstractAccount::createFromSerializedData( $account );
|
||||
|
||||
if ( $this->hasAccount( $anAccount ) ) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$this->accounts[] = $anAccount;
|
||||
|
||||
} catch ( Exception $e ) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user